@sapui5/sap.fe.macros 1.138.0 → 1.139.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/sap/fe/macros/.library +1 -1
- package/src/sap/fe/macros/Breadcrumbs.js +269 -0
- package/src/sap/fe/macros/Breadcrumbs.tsx +243 -0
- package/src/sap/fe/macros/Chart.js +1 -1
- package/src/sap/fe/macros/Chart.tsx +1 -1
- package/src/sap/fe/macros/CommonHelper.js +2 -2
- package/src/sap/fe/macros/CommonHelper.ts +1 -1
- package/src/sap/fe/macros/Field.js +21 -4
- package/src/sap/fe/macros/Field.ts +21 -3
- package/src/sap/fe/macros/FooterContent.js +40 -10
- package/src/sap/fe/macros/FooterContent.tsx +44 -8
- package/src/sap/fe/macros/FormElement.js +2 -2
- package/src/sap/fe/macros/FormElement.ts +1 -2
- package/src/sap/fe/macros/MultiValueField.js +17 -4
- package/src/sap/fe/macros/MultiValueField.tsx +7 -2
- package/src/sap/fe/macros/RichTextEditor.js +30 -6
- package/src/sap/fe/macros/RichTextEditor.tsx +34 -7
- package/src/sap/fe/macros/Share.js +73 -40
- package/src/sap/fe/macros/Share.tsx +29 -1
- package/src/sap/fe/macros/ValueHelp.js +4 -29
- package/src/sap/fe/macros/ValueHelp.tsx +2 -43
- package/src/sap/fe/macros/ai/EasyFillButton.js +10 -4
- package/src/sap/fe/macros/ai/EasyFillButton.tsx +8 -1
- package/src/sap/fe/macros/ai/EasyFillDialog.js +25 -10
- package/src/sap/fe/macros/ai/EasyFillDialog.tsx +32 -23
- package/src/sap/fe/macros/ai/EasyFilterBar.js +30 -30
- package/src/sap/fe/macros/ai/EasyFilterBar.tsx +40 -43
- package/src/sap/fe/macros/ai/EasyFilterDataFetcher.js +11 -5
- package/src/sap/fe/macros/ai/EasyFilterDataFetcher.ts +14 -5
- package/src/sap/fe/macros/chart/ChartDelegate.js +4 -4
- package/src/sap/fe/macros/chart/ChartDelegate.ts +3 -3
- package/src/sap/fe/macros/chart/MdcChartTemplate.js +20 -6
- package/src/sap/fe/macros/chart/MdcChartTemplate.tsx +16 -8
- package/src/sap/fe/macros/controls/BuildingBlockObjectProperty.js +5 -1
- package/src/sap/fe/macros/controls/BuildingBlockObjectProperty.ts +4 -0
- package/src/sap/fe/macros/controls/FieldWrapper.js +9 -3
- package/src/sap/fe/macros/controls/FieldWrapper.ts +11 -2
- package/src/sap/fe/macros/controls/FilterBar.js +86 -3
- package/src/sap/fe/macros/controls/FilterBar.ts +97 -2
- package/src/sap/fe/macros/controls/RequiredFlexBox.js +62 -0
- package/src/sap/fe/macros/controls/RequiredFlexBox.tsx +20 -0
- package/src/sap/fe/macros/controls/Section.js +3 -2
- package/src/sap/fe/macros/controls/Section.ts +2 -1
- package/src/sap/fe/macros/controls/filterbar/VisualFilter.js +21 -11
- package/src/sap/fe/macros/controls/filterbar/VisualFilter.ts +25 -11
- package/src/sap/fe/macros/controls/filterbar/VisualFilterContainer.js +11 -2
- package/src/sap/fe/macros/controls/filterbar/VisualFilterContainer.ts +12 -1
- package/src/sap/fe/macros/controls/filterbar/utils/VisualFilterUtils.js +18 -1
- package/src/sap/fe/macros/controls/filterbar/utils/VisualFilterUtils.ts +20 -0
- package/src/sap/fe/macros/coreUI/CreateDialog.js +2 -2
- package/src/sap/fe/macros/coreUI/CreateDialog.tsx +1 -1
- package/src/sap/fe/macros/designtime/Designtime.helper.js +12 -2
- package/src/sap/fe/macros/designtime/Designtime.helper.ts +12 -0
- package/src/sap/fe/macros/draftIndicator/DraftIndicator.js +16 -5
- package/src/sap/fe/macros/draftIndicator/DraftIndicator.tsx +6 -1
- package/src/sap/fe/macros/field/FieldBaseDelegate.js +20 -8
- package/src/sap/fe/macros/field/FieldBaseDelegate.ts +34 -9
- package/src/sap/fe/macros/field/FieldFormatOptions.js +73 -44
- package/src/sap/fe/macros/field/FieldFormatOptions.ts +20 -2
- 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/filter/FilterUtils.js +7 -1
- package/src/sap/fe/macros/filter/FilterUtils.ts +7 -0
- package/src/sap/fe/macros/filterBar/FilterBar.block.js +8 -2
- package/src/sap/fe/macros/filterBar/FilterBar.block.tsx +2 -5
- package/src/sap/fe/macros/filterBar/FilterBarAPI.js +8 -8
- package/src/sap/fe/macros/filterBar/FilterBarAPI.ts +8 -8
- package/src/sap/fe/macros/filterBar/designtime/FilterBar.designtime.js +3 -1
- package/src/sap/fe/macros/filterBar/designtime/FilterBar.designtime.ts +2 -0
- package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.js +1 -1
- package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.ts +1 -1
- package/src/sap/fe/macros/form/Form.block.js +6 -2
- package/src/sap/fe/macros/form/Form.block.ts +4 -1
- package/src/sap/fe/macros/form/FormActionButtons.fragment.xml +13 -2
- package/src/sap/fe/macros/form/FormContainer.fragment.xml +40 -0
- package/src/sap/fe/macros/form/FormContainerAPI.js +14 -16
- package/src/sap/fe/macros/form/FormContainerAPI.ts +13 -15
- package/src/sap/fe/macros/form/FormDelegate.js +20 -1
- package/src/sap/fe/macros/form/FormDelegate.ts +25 -0
- package/src/sap/fe/macros/formatters/TableFormatter.js +10 -1
- package/src/sap/fe/macros/formatters/TableFormatter.ts +14 -5
- package/src/sap/fe/macros/inlineEdit/InlineEdit.js +15 -3
- package/src/sap/fe/macros/inlineEdit/InlineEdit.ts +14 -2
- package/src/sap/fe/macros/internal/DataPoint.js +2 -1
- package/src/sap/fe/macros/internal/DataPoint.tsx +1 -0
- package/src/sap/fe/macros/internal/DataPointFormatOptions.js +11 -2
- package/src/sap/fe/macros/internal/DataPointFormatOptions.ts +3 -0
- package/src/sap/fe/macros/internal/FilterField.block.js +4 -2
- package/src/sap/fe/macros/internal/FilterField.block.ts +3 -1
- package/src/sap/fe/macros/internal/field/CheckBoxGroup.fragment.xml +25 -0
- package/src/sap/fe/macros/internal/field/DisplayStyle.js +52 -12
- package/src/sap/fe/macros/internal/field/DisplayStyle.tsx +54 -5
- package/src/sap/fe/macros/internal/field/EditStyle.js +5 -1
- package/src/sap/fe/macros/internal/field/EditStyle.tsx +4 -0
- package/src/sap/fe/macros/internal/field/FieldStructureHelper.js +9 -2
- package/src/sap/fe/macros/internal/field/FieldStructureHelper.ts +10 -0
- package/src/sap/fe/macros/internal/field/FieldStyles.js +1 -1
- package/src/sap/fe/macros/internal/field/FieldStyles.tsx +2 -1
- package/src/sap/fe/macros/internal/valuehelp/TableDelegate.js +4 -4
- package/src/sap/fe/macros/internal/valuehelp/TableDelegate.ts +3 -3
- package/src/sap/fe/macros/internal/valuehelp/ValueListDialogTable.fragment.xml +1 -0
- package/src/sap/fe/macros/internal/valuehelp/ValueListHelper.js +11 -3
- package/src/sap/fe/macros/internal/valuehelp/ValueListHelper.ts +12 -7
- package/src/sap/fe/macros/internal/valuehelp/ValueListTable.fragment.xml +1 -0
- package/src/sap/fe/macros/library.js +1 -1
- package/src/sap/fe/macros/mdc/adapter/StateHelper.js +11 -6
- package/src/sap/fe/macros/mdc/adapter/StateHelper.ts +12 -7
- package/src/sap/fe/macros/messagebundle.properties +37 -29
- package/src/sap/fe/macros/messagebundle_ar.properties +5 -3
- package/src/sap/fe/macros/messagebundle_bg.properties +6 -4
- package/src/sap/fe/macros/messagebundle_ca.properties +8 -6
- package/src/sap/fe/macros/messagebundle_cnr.properties +5 -3
- package/src/sap/fe/macros/messagebundle_cs.properties +4 -2
- package/src/sap/fe/macros/messagebundle_cy.properties +7 -5
- package/src/sap/fe/macros/messagebundle_da.properties +6 -4
- package/src/sap/fe/macros/messagebundle_de.properties +11 -9
- package/src/sap/fe/macros/messagebundle_el.properties +7 -5
- package/src/sap/fe/macros/messagebundle_en.properties +8 -6
- package/src/sap/fe/macros/messagebundle_en_GB.properties +8 -6
- package/src/sap/fe/macros/messagebundle_en_US_saprigi.properties +8 -6
- package/src/sap/fe/macros/messagebundle_es.properties +6 -4
- package/src/sap/fe/macros/messagebundle_es_MX.properties +6 -4
- package/src/sap/fe/macros/messagebundle_et.properties +5 -3
- package/src/sap/fe/macros/messagebundle_fi.properties +8 -6
- package/src/sap/fe/macros/messagebundle_fr.properties +6 -4
- package/src/sap/fe/macros/messagebundle_fr_CA.properties +8 -6
- package/src/sap/fe/macros/messagebundle_hi.properties +6 -4
- package/src/sap/fe/macros/messagebundle_hr.properties +6 -4
- package/src/sap/fe/macros/messagebundle_hu.properties +4 -2
- package/src/sap/fe/macros/messagebundle_id.properties +8 -6
- package/src/sap/fe/macros/messagebundle_it.properties +4 -2
- package/src/sap/fe/macros/messagebundle_iw.properties +5 -3
- package/src/sap/fe/macros/messagebundle_ja.properties +5 -3
- package/src/sap/fe/macros/messagebundle_kk.properties +5 -3
- package/src/sap/fe/macros/messagebundle_ko.properties +4 -2
- package/src/sap/fe/macros/messagebundle_lt.properties +6 -4
- package/src/sap/fe/macros/messagebundle_lv.properties +5 -3
- package/src/sap/fe/macros/messagebundle_mk.properties +5 -3
- package/src/sap/fe/macros/messagebundle_ms.properties +8 -6
- package/src/sap/fe/macros/messagebundle_nl.properties +7 -5
- package/src/sap/fe/macros/messagebundle_no.properties +6 -4
- package/src/sap/fe/macros/messagebundle_pl.properties +6 -4
- package/src/sap/fe/macros/messagebundle_pt.properties +7 -5
- package/src/sap/fe/macros/messagebundle_pt_PT.properties +6 -4
- package/src/sap/fe/macros/messagebundle_ro.properties +7 -5
- package/src/sap/fe/macros/messagebundle_ru.properties +4 -2
- package/src/sap/fe/macros/messagebundle_sh.properties +5 -3
- package/src/sap/fe/macros/messagebundle_sk.properties +5 -3
- package/src/sap/fe/macros/messagebundle_sl.properties +6 -4
- package/src/sap/fe/macros/messagebundle_sr.properties +5 -3
- package/src/sap/fe/macros/messagebundle_sv.properties +5 -3
- package/src/sap/fe/macros/messagebundle_th.properties +4 -2
- package/src/sap/fe/macros/messagebundle_tr.properties +4 -2
- package/src/sap/fe/macros/messagebundle_uk.properties +10 -8
- package/src/sap/fe/macros/messagebundle_vi.properties +6 -4
- package/src/sap/fe/macros/messagebundle_zh_CN.properties +5 -3
- package/src/sap/fe/macros/messagebundle_zh_TW.properties +5 -3
- package/src/sap/fe/macros/messages/MessageButton.js +17 -19
- package/src/sap/fe/macros/messages/MessageButton.ts +24 -22
- package/src/sap/fe/macros/table/Action.js +24 -2
- package/src/sap/fe/macros/table/Action.ts +13 -0
- package/src/sap/fe/macros/table/ActionGroup.js +24 -2
- package/src/sap/fe/macros/table/ActionGroup.ts +13 -0
- package/src/sap/fe/macros/table/ActionGroupOverride.js +24 -2
- package/src/sap/fe/macros/table/ActionGroupOverride.ts +13 -0
- package/src/sap/fe/macros/table/ActionOverride.js +24 -2
- package/src/sap/fe/macros/table/ActionOverride.ts +13 -0
- package/src/sap/fe/macros/table/ActionsTemplating.js +73 -12
- package/src/sap/fe/macros/table/ActionsTemplating.tsx +69 -13
- package/src/sap/fe/macros/table/Column.js +3 -3
- package/src/sap/fe/macros/table/Column.ts +2 -2
- package/src/sap/fe/macros/table/MdcTableTemplate.js +20 -8
- package/src/sap/fe/macros/table/MdcTableTemplate.tsx +32 -6
- package/src/sap/fe/macros/table/QuickFilterSelector.js +35 -14
- package/src/sap/fe/macros/table/QuickFilterSelector.tsx +22 -3
- package/src/sap/fe/macros/table/Table.block.js +137 -108
- package/src/sap/fe/macros/table/Table.block.tsx +29 -2
- package/src/sap/fe/macros/table/Table.js +7 -1
- package/src/sap/fe/macros/table/Table.tsx +7 -1
- package/src/sap/fe/macros/table/TableAPI.js +150 -133
- package/src/sap/fe/macros/table/TableAPI.ts +20 -3
- package/src/sap/fe/macros/table/TableDefinition.js +4 -2
- package/src/sap/fe/macros/table/TableDefinition.ts +3 -1
- package/src/sap/fe/macros/table/TableRuntime.js +3 -3
- package/src/sap/fe/macros/table/TableRuntime.ts +2 -2
- package/src/sap/fe/macros/table/TableSizeHelper.js +3 -3
- package/src/sap/fe/macros/table/TableSizeHelper.ts +5 -2
- package/src/sap/fe/macros/table/TreeTable.js +7 -1
- package/src/sap/fe/macros/table/TreeTable.tsx +7 -1
- package/src/sap/fe/macros/table/delegates/TableDelegate.js +27 -20
- package/src/sap/fe/macros/table/delegates/TableDelegate.ts +35 -26
- package/src/sap/fe/macros/table/designtime/Table.designtime.js +3 -1
- package/src/sap/fe/macros/table/designtime/Table.designtime.ts +2 -0
- package/src/sap/fe/macros/table/massEdit/MassEditDialog.js +10 -10
- package/src/sap/fe/macros/table/massEdit/MassEditDialog.tsx +11 -9
- package/src/sap/fe/macros/table/massEdit/MassEditDialogHelper.js +8 -8
- package/src/sap/fe/macros/table/massEdit/MassEditDialogHelper.tsx +7 -6
- package/src/sap/fe/macros/table/massEdit/designtime/MassEdit.designtime.js +3 -1
- package/src/sap/fe/macros/table/massEdit/designtime/MassEdit.designtime.ts +2 -1
- package/src/sap/fe/macros/table/mixin/ContextMenuHandler.js +2 -1
- package/src/sap/fe/macros/table/mixin/ContextMenuHandler.ts +1 -0
- package/src/sap/fe/macros/table/mixin/TableHierarchy.js +4 -1
- package/src/sap/fe/macros/table/mixin/TableHierarchy.ts +3 -0
- package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.js +37 -8
- package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.ts +47 -16
- package/src/sap/fe/macros/visualfilters/VisualFilter.js +95 -6
- package/src/sap/fe/macros/visualfilters/VisualFilter.tsx +93 -2
- package/src/sap/fe/macros/visualfilters/VisualFilterRuntime.js +15 -3
- package/src/sap/fe/macros/visualfilters/VisualFilterRuntime.ts +17 -2
|
@@ -322,8 +322,25 @@ sap.ui.define(["sap/base/Log", "sap/fe/macros/filterBar/FilterHelper", "sap/ui/c
|
|
|
322
322
|
};
|
|
323
323
|
}
|
|
324
324
|
return ret;
|
|
325
|
+
},
|
|
326
|
+
/**
|
|
327
|
+
* Enables or disables the chart binding for visual filters.
|
|
328
|
+
* @param visualFilters Visual filters to be enabled or disabled
|
|
329
|
+
* @param enable Whether to enable or disable the chart binding
|
|
330
|
+
* @param diffState Optional parameter to specify the changed filter field paths, incase of enablement.
|
|
331
|
+
*/
|
|
332
|
+
enableChartBinding(visualFilters, enable, diffState) {
|
|
333
|
+
const changedFilterFieldPaths = diffState?.filter ? Object.keys(diffState.filter) : [];
|
|
334
|
+
for (const vfId in visualFilters) {
|
|
335
|
+
const visualFilterBB = visualFilters[vfId];
|
|
336
|
+
if (visualFilterBB && visualFilterBB.isA("sap.fe.macros.visualfilters.VisualFilter")) {
|
|
337
|
+
visualFilterBB.setEnableChartBinding(enable, changedFilterFieldPaths);
|
|
338
|
+
} else {
|
|
339
|
+
Log.error(`Control with id ${vfId} is not a VisualFilter`);
|
|
340
|
+
}
|
|
341
|
+
}
|
|
325
342
|
}
|
|
326
343
|
};
|
|
327
344
|
return VisualFilterUtils;
|
|
328
345
|
}, false);
|
|
329
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJWaXN1YWxGaWx0ZXJVdGlscyIsImFwcGx5TWVkaWFuU2NhbGVUb0NoYXJ0RGF0YSIsIm9JbnRlcmFjdGl2ZUNoYXJ0Iiwib1ZpZXciLCJzVkZJZCIsInNJbmZvUGF0aCIsIm9EYXRhIiwic01lYXN1cmUiLCJkYXRhIiwib0ludGVybmFsTW9kZWxDb250ZXh0IiwiZ2V0QmluZGluZ0NvbnRleHQiLCJhQWdncmVnYXRpb24iLCJnZXRQb2ludHMiLCJnZXRCYXJzIiwiZ2V0U2VnbWVudHMiLCJpdGVtIiwicHVzaCIsImdldE9iamVjdCIsInNjYWxlRmFjdG9yIiwiX2dldE1lZGlhblNjYWxlRmFjdG9yIiwiaVNob3J0UmVmTnVtYmVyIiwic2NhbGUiLCJzZXRQcm9wZXJ0eSIsIm9TY2FsZVRpdGxlIiwiYnlJZCIsIm9NZWFzdXJlRGltZW5zaW9uVGl0bGUiLCJzVGV4dCIsImdldFRleHQiLCJzZXRUZXh0Iiwic2V0VG9vbHRpcCIsInNNZWFzdXJlRmllbGQiLCJpIiwic29ydCIsImEiLCJiIiwiTnVtYmVyIiwibGVuZ3RoIiwiaU1pZCIsImlNZWRpYW4iLCJwYXJzZUZsb2F0IiwiTWF0aCIsImZsb29yIiwidmFsIiwicG93Iiwicm91bmQiLCJhYnMiLCJmaXhlZEludGVnZXIiLCJOdW1iZXJGb3JtYXQiLCJnZXRJbnRlZ2VySW5zdGFuY2UiLCJzdHlsZSIsInNob3dTY2FsZSIsInNob3J0UmVmTnVtYmVyIiwiYURhdGEiLCJzU2NhbGVkVmFsdWUiLCJmb3JtYXQiLCJhU2NhbGVkVmFsdWVQYXJ0cyIsInNwbGl0IiwicGFyc2VJbnQiLCJpbmRleE9mIiwidW5kZWZpbmVkIiwiZ2V0U2NhbGUiLCJnZXRGb3JtYXR0ZWROdW1iZXIiLCJpblZhbHVlIiwibnVtYmVyT2ZGcmFjdGlvbmFsRGlnaXRzIiwiY3VycmVuY3kiLCJ2YWx1ZSIsInJlcGxhY2UiLCJjdXJyZW5jeUZvcm1hdCIsImdldEN1cnJlbmN5SW5zdGFuY2UiLCJzaG93TWVhc3VyZSIsImdldEZsb2F0SW5zdGFuY2UiLCJzaG9ydERlY2ltYWxzIiwiZGVjaW1hbHMiLCJhcHBseVVPTVRvVGl0bGUiLCJvQ29udGV4dERhdGEiLCJ2VU9NIiwic1VPTSIsInNDdXJyZW5jeSIsIiRQYXRoIiwic1VPTVZhbHVlIiwidXBkYXRlQ2hhcnRTY2FsZUZhY3RvclRpdGxlIiwiYXBwbHlFcnJvck1lc3NhZ2VBbmRUaXRsZSIsInMxOG5NZXNzYWdlVGl0bGUiLCJzMThuTWVzc2FnZSIsImVycm9yTWVzc2FnZVRpdGxlIiwiZXJyb3JNZXNzYWdlIiwic2hvd0Vycm9yIiwiY2hlY2tNdWxpdFVuaXQiLCJvQ29udGV4dHMiLCJzVW5pdGZpZWxkIiwiYUNvbnRleHREYXRhIiwicmVkdWNlIiwia2V5IiwiTmFOIiwic2V0TXVsdGlVT01NZXNzYWdlIiwib1Jlc291cmNlQnVuZGxlIiwic0lzQ3VycmVuY3kiLCJzSXNVbml0IiwiTG9nIiwid2FybmluZyIsInNldE5vRGF0YU1lc3NhZ2UiLCJjb252ZXJ0RmlsdGVyQ29uZGlvbnMiLCJvRmlsdGVyQ29uZGl0aW9ucyIsIm9Db252ZXJ0ZWRDb25kaXRpb25zIiwiT2JqZWN0Iiwia2V5cyIsImZvckVhY2giLCJzS2V5IiwiYUNvbnZlcnRlZENvbmRpdGlvbnMiLCJhQ29uZGl0aW9ucyIsInZhbHVlcyIsInZhbHVlMiIsInZhbHVlMSIsIkNvbmRpdGlvbiIsImNyZWF0ZUNvbmRpdGlvbiIsIm9wZXJhdG9yIiwiZ2V0Q3VzdG9tQ29uZGl0aW9ucyIsIlJhbmdlIiwib1ZhbGlkUHJvcGVydHkiLCJzUHJvcGVydHlOYW1lIiwiJFR5cGUiLCJfcGFyc2VEYXRlVGltZSIsImdldFR5cGVDb21wbGlhbnRWYWx1ZSIsIl9mb3JtYXREYXRlVGltZSIsIkxvdyIsIk9wdGlvbiIsIkhpZ2giLCJnZXRSYW5nZVByb3BlcnR5IiwiJEVudW1NZW1iZXIiLCJwYXRoIiwic1ZhbHVlIiwiX2dldERhdGVUaW1lVHlwZUluc3RhbmNlIiwicGFyc2VWYWx1ZSIsImZvcm1hdFZhbHVlIiwiRGF0ZVRpbWVPZmZzZXQiLCJwYXR0ZXJuIiwiY2FsZW5kYXJUeXBlIiwiVjQiLCJnZXRFcnJvckluZm9Gb3JOb0luaXRpYWxPdmVybGF5Iiwibm90TWF0Y2hlZENvbmRpdGlvbnMiLCJyZXNvdXJjZUJ1bmRsZSIsImVudGl0eVNldFBhdGgiLCJtZXRhTW9kZWwiLCJyZXQiLCJsYWJlbCJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiVmlzdWFsRmlsdGVyVXRpbHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBTZWxlY3Rpb25SYW5nZU9wdGlvblR5cGUsIFNlbGVjdGlvblJhbmdlVHlwZSB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvVUlcIjtcbmltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IHR5cGUgUmVzb3VyY2VCdW5kbGUgZnJvbSBcInNhcC9iYXNlL2kxOG4vUmVzb3VyY2VCdW5kbGVcIjtcbmltcG9ydCB0eXBlIHsgSW50ZXJuYWxNb2RlbENvbnRleHQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9Nb2RlbEhlbHBlclwiO1xuaW1wb3J0IHR5cGUgeyBGaWx0ZXJDb25kaXRpb25zIH0gZnJvbSBcInNhcC9mZS9tYWNyb3MvZmlsdGVyQmFyL0ZpbHRlckhlbHBlclwiO1xuaW1wb3J0IHsgZ2V0UmFuZ2VQcm9wZXJ0eSwgZ2V0VHlwZUNvbXBsaWFudFZhbHVlIH0gZnJvbSBcInNhcC9mZS9tYWNyb3MvZmlsdGVyQmFyL0ZpbHRlckhlbHBlclwiO1xuaW1wb3J0IHR5cGUgVGl0bGUgZnJvbSBcInNhcC9tL1RpdGxlXCI7XG5pbXBvcnQgdHlwZSBJbnRlcmFjdGl2ZUJhckNoYXJ0IGZyb20gXCJzYXAvc3VpdGUvdWkvbWljcm9jaGFydC9JbnRlcmFjdGl2ZUJhckNoYXJ0XCI7XG5pbXBvcnQgdHlwZSBJbnRlcmFjdGl2ZURvbnV0Q2hhcnQgZnJvbSBcInNhcC9zdWl0ZS91aS9taWNyb2NoYXJ0L0ludGVyYWN0aXZlRG9udXRDaGFydFwiO1xuaW1wb3J0IHR5cGUgSW50ZXJhY3RpdmVMaW5lQ2hhcnQgZnJvbSBcInNhcC9zdWl0ZS91aS9taWNyb2NoYXJ0L0ludGVyYWN0aXZlTGluZUNoYXJ0XCI7XG5pbXBvcnQgdHlwZSBDb250cm9sIGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG5pbXBvcnQgdHlwZSBVSTVEYXRlIGZyb20gXCJzYXAvdWkvY29yZS9kYXRlL1VJNURhdGVcIjtcbmltcG9ydCBOdW1iZXJGb3JtYXQgZnJvbSBcInNhcC91aS9jb3JlL2Zvcm1hdC9OdW1iZXJGb3JtYXRcIjtcbmltcG9ydCB0eXBlIFZpZXcgZnJvbSBcInNhcC91aS9jb3JlL212Yy9WaWV3XCI7XG5pbXBvcnQgdHlwZSB7IENvbmRpdGlvbk9iamVjdCB9IGZyb20gXCJzYXAvdWkvbWRjL2NvbmRpdGlvbi9Db25kaXRpb25cIjtcbmltcG9ydCBDb25kaXRpb24gZnJvbSBcInNhcC91aS9tZGMvY29uZGl0aW9uL0NvbmRpdGlvblwiO1xuaW1wb3J0IHR5cGUgQ29uZGl0aW9uVmFsaWRhdGVkIGZyb20gXCJzYXAvdWkvbWRjL2VudW1zL0NvbmRpdGlvblZhbGlkYXRlZFwiO1xuaW1wb3J0IHR5cGUgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL0NvbnRleHRcIjtcbmltcG9ydCB0eXBlIE1ldGFNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL01ldGFNb2RlbFwiO1xuaW1wb3J0IERhdGVUaW1lT2Zmc2V0IGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdHlwZS9EYXRlVGltZU9mZnNldFwiO1xuaW1wb3J0IHR5cGUgeyBNZXRhTW9kZWxFbnVtLCBNZXRhTW9kZWxQcm9wZXJ0eSwgTWV0YU1vZGVsVHlwZSB9IGZyb20gXCJ0eXBlcy9tZXRhbW9kZWxfdHlwZXNcIjtcblxuY29uc3QgVmlzdWFsRmlsdGVyVXRpbHMgPSB7XG5cdC8qKlxuXHQgKiBBcHBsaWVzIHRoZSBtZWRpYW4gc2NhbGUgdG8gdGhlIGNoYXJ0IGRhdGEuXG5cdCAqIEBwYXJhbSBvSW50ZXJhY3RpdmVDaGFydCBJbnRlcmFjdGl2ZUNoYXJ0IGluIHRoZSBWaXN1YWxGaWx0ZXIgY29udHJvbFxuXHQgKiBAcGFyYW0gb1ZpZXcgSW5zdGFuY2Ugb2YgdGhlIHZpZXdcblx0ICogQHBhcmFtIHNWRklkIFZpc3VhbEZpbHRlciBjb250cm9sIElEXG5cdCAqIEBwYXJhbSBzSW5mb1BhdGggSW50ZXJuYWwgbW9kZWwgY29udGV4dCBwYXRoIHRvIHN0b3JlIGluZm8uXG5cdCAqL1xuXHRhcHBseU1lZGlhblNjYWxlVG9DaGFydERhdGE6IGZ1bmN0aW9uIChcblx0XHRvSW50ZXJhY3RpdmVDaGFydDogSW50ZXJhY3RpdmVEb251dENoYXJ0IHwgSW50ZXJhY3RpdmVMaW5lQ2hhcnQgfCBJbnRlcmFjdGl2ZUJhckNoYXJ0LFxuXHRcdG9WaWV3OiBWaWV3LFxuXHRcdHNWRklkOiBzdHJpbmcsXG5cdFx0c0luZm9QYXRoOiBzdHJpbmdcblx0KTogdm9pZCB7XG5cdFx0Y29uc3Qgb0RhdGEgPSBbXTtcblx0XHRjb25zdCBzTWVhc3VyZSA9IG9JbnRlcmFjdGl2ZUNoYXJ0LmRhdGEoXCJtZWFzdXJlXCIpO1xuXHRcdGNvbnN0IG9JbnRlcm5hbE1vZGVsQ29udGV4dCA9IG9WaWV3LmdldEJpbmRpbmdDb250ZXh0KFwiaW50ZXJuYWxcIikgYXMgSW50ZXJuYWxNb2RlbENvbnRleHQ7XG5cdFx0Y29uc3QgYUFnZ3JlZ2F0aW9uID1cblx0XHRcdCgob0ludGVyYWN0aXZlQ2hhcnQgYXMgSW50ZXJhY3RpdmVMaW5lQ2hhcnQpLmdldFBvaW50cyAmJiAob0ludGVyYWN0aXZlQ2hhcnQgYXMgSW50ZXJhY3RpdmVMaW5lQ2hhcnQpLmdldFBvaW50cygpKSB8fFxuXHRcdFx0KChvSW50ZXJhY3RpdmVDaGFydCBhcyBJbnRlcmFjdGl2ZUJhckNoYXJ0KS5nZXRCYXJzICYmIChvSW50ZXJhY3RpdmVDaGFydCBhcyBJbnRlcmFjdGl2ZUJhckNoYXJ0KS5nZXRCYXJzKCkpIHx8XG5cdFx0XHQoKG9JbnRlcmFjdGl2ZUNoYXJ0IGFzIEludGVyYWN0aXZlRG9udXRDaGFydCkuZ2V0U2VnbWVudHMgJiYgKG9JbnRlcmFjdGl2ZUNoYXJ0IGFzIEludGVyYWN0aXZlRG9udXRDaGFydCkuZ2V0U2VnbWVudHMoKSk7XG5cdFx0Zm9yIChjb25zdCBpdGVtIG9mIGFBZ2dyZWdhdGlvbikge1xuXHRcdFx0b0RhdGEucHVzaChpdGVtLmdldEJpbmRpbmdDb250ZXh0KCkhLmdldE9iamVjdCgpKTtcblx0XHR9XG5cdFx0Y29uc3Qgc2NhbGVGYWN0b3IgPSB0aGlzLl9nZXRNZWRpYW5TY2FsZUZhY3RvcihvRGF0YSwgc01lYXN1cmUpO1xuXHRcdGlmIChzY2FsZUZhY3RvciAmJiBzY2FsZUZhY3Rvci5pU2hvcnRSZWZOdW1iZXIgJiYgc2NhbGVGYWN0b3Iuc2NhbGUpIHtcblx0XHRcdG9JbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShgc2NhbGVmYWN0b3IvJHtzSW5mb1BhdGh9YCwgc2NhbGVGYWN0b3Iuc2NhbGUpO1xuXHRcdFx0b0ludGVybmFsTW9kZWxDb250ZXh0LnNldFByb3BlcnR5KGBzY2FsZWZhY3Rvck51bWJlci8ke3NJbmZvUGF0aH1gLCBzY2FsZUZhY3Rvci5pU2hvcnRSZWZOdW1iZXIpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRvSW50ZXJuYWxNb2RlbENvbnRleHQuc2V0UHJvcGVydHkoYHNjYWxlZmFjdG9yLyR7c0luZm9QYXRofWAsIFwiXCIpO1xuXHRcdFx0b0ludGVybmFsTW9kZWxDb250ZXh0LnNldFByb3BlcnR5KGBzY2FsZWZhY3Rvck51bWJlci8ke3NJbmZvUGF0aH1gLCBcIlwiKTtcblx0XHRcdGNvbnN0IG9TY2FsZVRpdGxlID0gb1ZpZXcuYnlJZChgJHtzVkZJZH06OlNjYWxlVW9NVGl0bGVgKSBhcyBUaXRsZTtcblx0XHRcdGNvbnN0IG9NZWFzdXJlRGltZW5zaW9uVGl0bGUgPSBvVmlldy5ieUlkKGAke3NWRklkfTo6TWVhc3VyZURpbWVuc2lvblRpdGxlYCkgYXMgVGl0bGU7XG5cdFx0XHRjb25zdCBzVGV4dCA9IG9TY2FsZVRpdGxlLmdldFRleHQoKTtcblx0XHRcdGlmIChzVGV4dCA9PT0gXCIgfCBcIikge1xuXHRcdFx0XHRvU2NhbGVUaXRsZS5zZXRUZXh0KFwiXCIpO1xuXHRcdFx0XHRvTWVhc3VyZURpbWVuc2lvblRpdGxlLnNldFRvb2x0aXAob01lYXN1cmVEaW1lbnNpb25UaXRsZS5nZXRUZXh0KCkpO1xuXHRcdFx0fVxuXHRcdH1cblx0fSxcblxuXHQvKipcblx0ICogUmV0dXJucyB0aGUgbWVkaWFuIHNjYWxlIGZhY3Rvci5cblx0ICogQHBhcmFtIG9EYXRhIFZpc3VhbEZpbHRlciBkYXRhXG5cdCAqIEBwYXJhbSBzTWVhc3VyZUZpZWxkIFBhdGggb2YgdGhlIG1lYXN1cmVcblx0ICogQHJldHVybnMgT2JqZWN0IGNvbnRhaW5pbmcgc2NhbGUgYW5kIGlTaG9ydFJlZk51bWJlclxuXHQgKi9cblx0X2dldE1lZGlhblNjYWxlRmFjdG9yOiBmdW5jdGlvbiAob0RhdGE6IFJlY29yZDxzdHJpbmcsIHN0cmluZz5bXSwgc01lYXN1cmVGaWVsZDogc3RyaW5nKTogeyBpU2hvcnRSZWZOdW1iZXI/OiBudW1iZXI7IHNjYWxlPzogc3RyaW5nIH0ge1xuXHRcdGxldCBpO1xuXHRcdGxldCBzY2FsZUZhY3Rvcjtcblx0XHRvRGF0YS5zb3J0KGZ1bmN0aW9uIChhOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LCBiOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KSB7XG5cdFx0XHRpZiAoTnVtYmVyKGFbc01lYXN1cmVGaWVsZF0pIDwgTnVtYmVyKGJbc01lYXN1cmVGaWVsZF0pKSB7XG5cdFx0XHRcdHJldHVybiAtMTtcblx0XHRcdH1cblx0XHRcdGlmIChOdW1iZXIoYVtzTWVhc3VyZUZpZWxkXSkgPiBOdW1iZXIoYltzTWVhc3VyZUZpZWxkXSkpIHtcblx0XHRcdFx0cmV0dXJuIDE7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gMDtcblx0XHR9KTtcblx0XHRpZiAob0RhdGEubGVuZ3RoID4gMCkge1xuXHRcdFx0Ly8gZ2V0IG1lZGlhbiBpbmRleFxuXHRcdFx0Y29uc3QgaU1pZCA9IG9EYXRhLmxlbmd0aCAvIDIsIC8vIGdldCBtaWQgb2YgYXJyYXlcblx0XHRcdFx0Ly8gaWYgaU1pZCBpcyB3aG9sZSBudW1iZXIsIGFycmF5IGxlbmd0aCBpcyBldmVuLCBjYWxjdWxhdGUgbWVkaWFuXG5cdFx0XHRcdC8vIGlmIGlNaWQgaXMgbm90IHdob2xlIG51bWJlciwgYXJyYXkgbGVuZ3RoIGlzIG9kZCwgdGFrZSBtZWRpYW4gYXMgaU1pZCAtIDFcblx0XHRcdFx0aU1lZGlhbiA9XG5cdFx0XHRcdFx0aU1pZCAlIDEgPT09IDBcblx0XHRcdFx0XHRcdD8gKHBhcnNlRmxvYXQob0RhdGFbaU1pZCAtIDFdW3NNZWFzdXJlRmllbGRdKSArIHBhcnNlRmxvYXQob0RhdGFbaU1pZF1bc01lYXN1cmVGaWVsZF0pKSAvIDJcblx0XHRcdFx0XHRcdDogcGFyc2VGbG9hdChvRGF0YVtNYXRoLmZsb29yKGlNaWQpXVtzTWVhc3VyZUZpZWxkXSksXG5cdFx0XHRcdC8vIGdldCBzY2FsZSBmYWN0b3Igb24gbWVkaWFuXG5cdFx0XHRcdHZhbCA9IGlNZWRpYW47XG5cdFx0XHRmb3IgKGkgPSAwOyBpIDwgMTQ7IGkrKykge1xuXHRcdFx0XHRzY2FsZUZhY3RvciA9IE1hdGgucG93KDEwLCBpKTtcblx0XHRcdFx0aWYgKE1hdGgucm91bmQoTWF0aC5hYnModmFsKSAvIHNjYWxlRmFjdG9yKSA8IDEwKSB7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRjb25zdCBmaXhlZEludGVnZXIgPSBOdW1iZXJGb3JtYXQuZ2V0SW50ZWdlckluc3RhbmNlKHtcblx0XHRcdHN0eWxlOiBcInNob3J0XCIsXG5cdFx0XHRzaG93U2NhbGU6IGZhbHNlLFxuXHRcdFx0c2hvcnRSZWZOdW1iZXI6IHNjYWxlRmFjdG9yXG5cdFx0fSk7XG5cblx0XHQvLyBhcHBseSBzY2FsZSBmYWN0b3IgdG8gb3RoZXIgdmFsdWVzIGFuZCBjaGVja1xuXHRcdGZvciAoaSA9IDA7IGkgPCBvRGF0YS5sZW5ndGg7IGkrKykge1xuXHRcdFx0Y29uc3QgYURhdGEgPSBvRGF0YVtpXSxcblx0XHRcdFx0c1NjYWxlZFZhbHVlID0gZml4ZWRJbnRlZ2VyLmZvcm1hdChhRGF0YVtzTWVhc3VyZUZpZWxkXSBhcyB1bmtub3duIGFzIG51bWJlciksXG5cdFx0XHRcdGFTY2FsZWRWYWx1ZVBhcnRzID0gc1NjYWxlZFZhbHVlLnNwbGl0KFwiLlwiKTtcblx0XHRcdC8vIGlmIHNjYWxlZCB2YWx1ZSBoYXMgb25seSAwIGJlZm9yZSBkZWNpbWFsIG9yIDAgYWZ0ZXIgZGVjaW1hbCAoZXhhbXBsZTogMC4wMilcblx0XHRcdC8vIHRoZW4gaWdub3JlIHRoaXMgc2NhbGUgZmFjdG9yIGVsc2UgcHJvY2VlZCB3aXRoIHRoaXMgc2NhbGUgZmFjdG9yXG5cdFx0XHQvLyBpZiBzY2FsZWQgdmFsdWUgZGl2aWRlZCBieSAxMDAwIGlzID49IDEwMDAgdGhlbiBhbHNvIGlnbm9yZSBzY2FsZSBmYWN0b3Jcblx0XHRcdGlmIChcblx0XHRcdFx0KCFhU2NhbGVkVmFsdWVQYXJ0c1sxXSAmJiBwYXJzZUludChhU2NhbGVkVmFsdWVQYXJ0c1swXSwgMTApID09PSAwKSB8fFxuXHRcdFx0XHQoYVNjYWxlZFZhbHVlUGFydHNbMV0gJiYgcGFyc2VJbnQoYVNjYWxlZFZhbHVlUGFydHNbMF0sIDEwKSA9PT0gMCAmJiBhU2NhbGVkVmFsdWVQYXJ0c1sxXS5pbmRleE9mKFwiMFwiKSA9PT0gMCkgfHxcblx0XHRcdFx0TnVtYmVyKHNTY2FsZWRWYWx1ZSkgLyAxMDAwID49IDEwMDBcblx0XHRcdCkge1xuXHRcdFx0XHRzY2FsZUZhY3RvciA9IHVuZGVmaW5lZDtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiB7XG5cdFx0XHRpU2hvcnRSZWZOdW1iZXI6IHNjYWxlRmFjdG9yLFxuXHRcdFx0c2NhbGU6IHNjYWxlRmFjdG9yID8gZml4ZWRJbnRlZ2VyLmdldFNjYWxlKCkgOiBcIlwiXG5cdFx0fTtcblx0fSxcblxuXHQvKipcblx0ICogUmV0dXJucyB0aGUgZm9ybWF0dGVkIG51bWJlciBhY2NvcmRpbmcgdG8gdGhlIHJ1bGVzIG9mIFZpc3VhbENoYXJ0RmlsdGVycy5cblx0ICogQHBhcmFtIGluVmFsdWUgVmFsdWUgd2hpY2ggbmVlZHMgdG8gYmUgZm9ybWF0dGVkXG5cdCAqIEBwYXJhbSBzY2FsZUZhY3RvciBTY2FsZUZhY3RvciB0byB3aGljaCB0aGUgdmFsdWUgbmVlZHMgdG8gYmUgc2NhbGVkXG5cdCAqIEBwYXJhbSBudW1iZXJPZkZyYWN0aW9uYWxEaWdpdHMgTnVtYmVyT2ZGcmFjdGlvbmFsRGlnaXRzIGRpZ2l0cyBpbiB0aGUgZGVjaW1hbHMgYWNjb3JkaW5nIHRvIHNjYWxlXG5cdCAqIEBwYXJhbSBjdXJyZW5jeSBDdXJyZW5jeSBjb2RlXG5cdCAqIEByZXR1cm5zIFRoZSBmb3JtYXR0ZWQgbnVtYmVyXG5cdCAqL1xuXHRnZXRGb3JtYXR0ZWROdW1iZXI6IGZ1bmN0aW9uIChcblx0XHRpblZhbHVlOiBzdHJpbmcgfCBudW1iZXIsXG5cdFx0c2NhbGVGYWN0b3I/OiBudW1iZXIsXG5cdFx0bnVtYmVyT2ZGcmFjdGlvbmFsRGlnaXRzPzogbnVtYmVyLFxuXHRcdGN1cnJlbmN5Pzogc3RyaW5nXG5cdCk6IHN0cmluZyB7XG5cdFx0bGV0IGZpeGVkSW50ZWdlcjtcblx0XHRjb25zdCB2YWx1ZTogbnVtYmVyID0gdHlwZW9mIGluVmFsdWUgPT09IFwic3RyaW5nXCIgPyBOdW1iZXIoaW5WYWx1ZS5yZXBsYWNlKC8sL2csIFwiXCIpKSA6IGluVmFsdWU7XG5cblx0XHRpZiAoY3VycmVuY3kpIHtcblx0XHRcdGNvbnN0IGN1cnJlbmN5Rm9ybWF0ID0gTnVtYmVyRm9ybWF0LmdldEN1cnJlbmN5SW5zdGFuY2Uoe1xuXHRcdFx0XHRzaG93TWVhc3VyZTogZmFsc2Vcblx0XHRcdH0pO1xuXHRcdFx0cmV0dXJuIGN1cnJlbmN5Rm9ybWF0LmZvcm1hdCh2YWx1ZSwgY3VycmVuY3kpO1xuXHRcdFx0Ly8gcGFyc2VGbG9hdCh2YWx1ZSkgaXMgcmVxdWlyZWQgb3RoZXJ3aXNlIC12ZSB2YWx1ZSBhcmUgd3JvbmdseSByb3VuZGVkIG9mZlxuXHRcdFx0Ly8gRXhhbXBsZTogXCItMS45XCIgcm91bmRzIG9mZiB0byAtMSBpbnN0ZWFkIG9mIC0yLiBob3dldmVyIC0xLjkgcm91bmRzIG9mZiB0byAtMlxuXHRcdH0gZWxzZSBpZiAoc2NhbGVGYWN0b3IpIHtcblx0XHRcdGZpeGVkSW50ZWdlciA9IE51bWJlckZvcm1hdC5nZXRGbG9hdEluc3RhbmNlKHtcblx0XHRcdFx0c3R5bGU6IFwic2hvcnRcIixcblx0XHRcdFx0c2hvd1NjYWxlOiBmYWxzZSxcblx0XHRcdFx0c2hvcnRSZWZOdW1iZXI6IHNjYWxlRmFjdG9yLFxuXHRcdFx0XHRzaG9ydERlY2ltYWxzOiBudW1iZXJPZkZyYWN0aW9uYWxEaWdpdHNcblx0XHRcdH0pO1xuXHRcdFx0cmV0dXJuIGZpeGVkSW50ZWdlci5mb3JtYXQodmFsdWUpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRmaXhlZEludGVnZXIgPSBOdW1iZXJGb3JtYXQuZ2V0RmxvYXRJbnN0YW5jZSh7XG5cdFx0XHRcdGRlY2ltYWxzOiBudW1iZXJPZkZyYWN0aW9uYWxEaWdpdHNcblx0XHRcdH0pO1xuXHRcdFx0cmV0dXJuIGZpeGVkSW50ZWdlci5mb3JtYXQodmFsdWUpO1xuXHRcdH1cblx0fSxcblxuXHQvKipcblx0ICogQXBwbGllcyB0aGUgVU9NIHRvIHRoZSB0aXRsZSBvZiB0aGUgdmlzdWFsIGZpbHRlciBjb250cm9sLlxuXHQgKiBAcGFyYW0gb0ludGVyYWN0aXZlQ2hhcnQgSW50ZXJhY3RpdmVDaGFydCBpbiB0aGUgVmlzdWFsRmlsdGVyIGNvbnRyb2xcblx0ICogQHBhcmFtIG9Db250ZXh0RGF0YSBEYXRhIG9mIHRoZSBWaXN1YWxGaWx0ZXJcblx0ICogQHBhcmFtIG9WaWV3IEluc3RhbmNlIG9mIHRoZSB2aWV3XG5cdCAqIEBwYXJhbSBzSW5mb1BhdGggSW50ZXJuYWwgbW9kZWwgY29udGV4dCBwYXRoIHRvIHN0b3JlIGluZm8uXG5cdCAqL1xuXHRhcHBseVVPTVRvVGl0bGU6IGZ1bmN0aW9uIChvSW50ZXJhY3RpdmVDaGFydDogQ29udHJvbCwgb0NvbnRleHREYXRhOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgb1ZpZXc6IFZpZXcsIHNJbmZvUGF0aDogc3RyaW5nKTogdm9pZCB7XG5cdFx0Y29uc3QgdlVPTSA9IG9JbnRlcmFjdGl2ZUNoYXJ0LmRhdGEoXCJ1b21cIik7XG5cdFx0bGV0IHNVT007XG5cdFx0bGV0IHNDdXJyZW5jeTtcblx0XHRpZiAodlVPTSAmJiB2VU9NW1wiSVNPQ3VycmVuY3lcIl0pIHtcblx0XHRcdHNVT00gPSB2VU9NW1wiSVNPQ3VycmVuY3lcIl07XG5cdFx0XHRzQ3VycmVuY3kgPSBzVU9NLiRQYXRoID8gb0NvbnRleHREYXRhW3NVT00uJFBhdGhdIDogc1VPTTtcblx0XHR9IGVsc2UgaWYgKHZVT00gJiYgdlVPTVtcIlVuaXRcIl0pIHtcblx0XHRcdHNVT00gPSB2VU9NW1wiVW5pdFwiXTtcblx0XHR9XG5cdFx0aWYgKHNVT00pIHtcblx0XHRcdGNvbnN0IHNVT01WYWx1ZSA9IHNVT00uJFBhdGggPyBvQ29udGV4dERhdGFbc1VPTS4kUGF0aF0gOiBzVU9NO1xuXHRcdFx0Y29uc3Qgb0ludGVybmFsTW9kZWxDb250ZXh0ID0gb1ZpZXcuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKSBhcyBJbnRlcm5hbE1vZGVsQ29udGV4dDtcblx0XHRcdG9JbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShgdW9tLyR7c0luZm9QYXRofWAsIHNVT01WYWx1ZSk7XG5cdFx0XHRpZiAoc0N1cnJlbmN5KSB7XG5cdFx0XHRcdG9JbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShgY3VycmVuY3kvJHtzSW5mb1BhdGh9YCwgc1VPTVZhbHVlKTtcblx0XHRcdH1cblx0XHR9XG5cdH0sXG5cdC8qKlxuXHQgKiBVcGRhdGVzIHRoZSBzY2FsZSBmYWN0b3IgaW4gdGhlIHRpdGxlIG9mIHRoZSB2aXN1YWwgZmlsdGVyLlxuXHQgKiBAcGFyYW0gb0ludGVyYWN0aXZlQ2hhcnQgSW50ZXJhY3RpdmVDaGFydCBpbiB0aGUgVmlzdWFsRmlsdGVyIGNvbnRyb2xcblx0ICogQHBhcmFtIG9WaWV3IEluc3RhbmNlIG9mIHRoZSB2aWV3XG5cdCAqIEBwYXJhbSBzVkZJZCBWaXN1YWxGaWx0ZXIgY29udHJvbCBJRFxuXHQgKiBAcGFyYW0gc0luZm9QYXRoIEludGVybmFsIG1vZGVsIGNvbnRleHQgcGF0aCB0byBzdG9yZSBpbmZvLlxuXHQgKi9cblx0dXBkYXRlQ2hhcnRTY2FsZUZhY3RvclRpdGxlOiBmdW5jdGlvbiAoXG5cdFx0b0ludGVyYWN0aXZlQ2hhcnQ6IEludGVyYWN0aXZlRG9udXRDaGFydCB8IEludGVyYWN0aXZlTGluZUNoYXJ0IHwgSW50ZXJhY3RpdmVCYXJDaGFydCxcblx0XHRvVmlldzogVmlldyxcblx0XHRzVkZJZDogc3RyaW5nLFxuXHRcdHNJbmZvUGF0aDogc3RyaW5nXG5cdCk6IHZvaWQge1xuXHRcdGlmICghb0ludGVyYWN0aXZlQ2hhcnQuZGF0YShcInNjYWxlZmFjdG9yXCIpKSB7XG5cdFx0XHR0aGlzLmFwcGx5TWVkaWFuU2NhbGVUb0NoYXJ0RGF0YShvSW50ZXJhY3RpdmVDaGFydCwgb1ZpZXcsIHNWRklkLCBzSW5mb1BhdGgpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRjb25zdCBmaXhlZEludGVnZXIgPSBOdW1iZXJGb3JtYXQuZ2V0SW50ZWdlckluc3RhbmNlKHtcblx0XHRcdFx0c3R5bGU6IFwic2hvcnRcIixcblx0XHRcdFx0c2hvd1NjYWxlOiBmYWxzZSxcblx0XHRcdFx0c2hvcnRSZWZOdW1iZXI6IG9JbnRlcmFjdGl2ZUNoYXJ0LmRhdGEoXCJzY2FsZWZhY3RvclwiKVxuXHRcdFx0fSk7XG5cdFx0XHRjb25zdCBvSW50ZXJuYWxNb2RlbENvbnRleHQgPSBvVmlldy5nZXRCaW5kaW5nQ29udGV4dChcImludGVybmFsXCIpIGFzIEludGVybmFsTW9kZWxDb250ZXh0O1xuXHRcdFx0Y29uc3Qgc2NhbGUgPSBmaXhlZEludGVnZXIuZ2V0U2NhbGUoKSA/IGZpeGVkSW50ZWdlci5nZXRTY2FsZSgpIDogXCJcIjtcblx0XHRcdG9JbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShgc2NhbGVmYWN0b3IvJHtzSW5mb1BhdGh9YCwgc2NhbGUpO1xuXHRcdH1cblx0fSxcblxuXHQvKipcblx0ICpcblx0ICogQHBhcmFtIHMxOG5NZXNzYWdlVGl0bGUgVGV4dCBvZiB0aGUgZXJyb3IgbWVzc2FnZSB0aXRsZS5cblx0ICogQHBhcmFtIHMxOG5NZXNzYWdlIFRleHQgb2YgdGhlIGVycm9yIG1lc3NhZ2UgZGVzY3JpcHRpb24uXG5cdCAqIEBwYXJhbSBzSW5mb1BhdGggSW50ZXJuYWwgbW9kZWwgY29udGV4dCBwYXRoIHRvIHN0b3JlIGluZm8uXG5cdCAqIEBwYXJhbSBvVmlldyBJbnN0YW5jZSBvZiB0aGUgdmlldy5cblx0ICovXG5cdGFwcGx5RXJyb3JNZXNzYWdlQW5kVGl0bGU6IGZ1bmN0aW9uIChzMThuTWVzc2FnZVRpdGxlOiBzdHJpbmcsIHMxOG5NZXNzYWdlOiBzdHJpbmcsIHNJbmZvUGF0aDogc3RyaW5nLCBvVmlldzogVmlldyk6IHZvaWQge1xuXHRcdGNvbnN0IG9JbnRlcm5hbE1vZGVsQ29udGV4dCA9IG9WaWV3LmdldEJpbmRpbmdDb250ZXh0KFwiaW50ZXJuYWxcIikgYXMgSW50ZXJuYWxNb2RlbENvbnRleHQ7XG5cdFx0b0ludGVybmFsTW9kZWxDb250ZXh0LnNldFByb3BlcnR5KHNJbmZvUGF0aCwge30pO1xuXHRcdG9JbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShzSW5mb1BhdGgsIHtcblx0XHRcdGVycm9yTWVzc2FnZVRpdGxlOiBzMThuTWVzc2FnZVRpdGxlLFxuXHRcdFx0ZXJyb3JNZXNzYWdlOiBzMThuTWVzc2FnZSxcblx0XHRcdHNob3dFcnJvcjogdHJ1ZVxuXHRcdH0pO1xuXHR9LFxuXHQvKipcblx0ICogQ2hlY2tzIGlmIG11bHRpcGxlIHVuaXRzIGFyZSBwcmVzZW50LlxuXHQgKiBAcGFyYW0gb0NvbnRleHRzIENvbnRleHRzIG9mIHRoZSBWaXN1YWxGaWx0ZXJcblx0ICogQHBhcmFtIHNVbml0ZmllbGQgVGhlIHBhdGggb2YgdGhlIHVuaXQgZmllbGRcblx0ICogQHJldHVybnMgUmV0dXJucyBpZiBtdWx0aXBsZSB1bml0cyBhcmUgY29uZmlndXJlZCBvciBub3Rcblx0ICovXG5cdGNoZWNrTXVsaXRVbml0OiBmdW5jdGlvbiAob0NvbnRleHRzOiBDb250ZXh0W10sIHNVbml0ZmllbGQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRcdGNvbnN0IGFEYXRhOiBudW1iZXJbXSA9IFtdO1xuXHRcdGlmIChvQ29udGV4dHMgJiYgc1VuaXRmaWVsZCkge1xuXHRcdFx0Zm9yIChjb25zdCBpdGVtIG9mIG9Db250ZXh0cykge1xuXHRcdFx0XHRjb25zdCBhQ29udGV4dERhdGEgPSBpdGVtICYmIGl0ZW0uZ2V0T2JqZWN0KCk7XG5cdFx0XHRcdGFEYXRhLnB1c2goYUNvbnRleHREYXRhW3NVbml0ZmllbGRdKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuICEhYURhdGEucmVkdWNlKGZ1bmN0aW9uIChkYXRhOiBudW1iZXIsIGtleTogbnVtYmVyKSB7XG5cdFx0XHRyZXR1cm4gZGF0YSA9PT0ga2V5ID8gZGF0YSA6IE5hTjtcblx0XHR9KTtcblx0fSxcblxuXHQvKipcblx0ICogU2V0cyBhbiBlcnJvciBtZXNzYWdlIGlmIG11bHRpcGxlIFVPTSBhcmUgcHJlc2VudC5cblx0ICogQHBhcmFtIG9EYXRhIERhdGEgb2YgdGhlIFZpc3VhbEZpbHRlciBjb250cm9sXG5cdCAqIEBwYXJhbSBvSW50ZXJhY3RpdmVDaGFydCBJbnRlcmFjdGl2ZUNoYXJ0IGluIHRoZSBWaXN1YWxGaWx0ZXIgY29udHJvbFxuXHQgKiBAcGFyYW0gc0luZm9QYXRoIEludGVybmFsIG1vZGVsIGNvbnRleHQgcGF0aCB0byBzdG9yZSBpbmZvLlxuXHQgKiBAcGFyYW0gb1Jlc291cmNlQnVuZGxlIFRoZSByZXNvdXJjZSBidW5kbGVcblx0ICogQHBhcmFtIG9WaWV3IEluc3RhbmNlIG9mIHRoZSB2aWV3XG5cdCAqL1xuXHRzZXRNdWx0aVVPTU1lc3NhZ2U6IGZ1bmN0aW9uIChcblx0XHRvRGF0YTogQ29udGV4dFtdLFxuXHRcdG9JbnRlcmFjdGl2ZUNoYXJ0OiBJbnRlcmFjdGl2ZURvbnV0Q2hhcnQgfCBJbnRlcmFjdGl2ZUxpbmVDaGFydCB8IEludGVyYWN0aXZlQmFyQ2hhcnQsXG5cdFx0c0luZm9QYXRoOiBzdHJpbmcsXG5cdFx0b1Jlc291cmNlQnVuZGxlOiBSZXNvdXJjZUJ1bmRsZSxcblx0XHRvVmlldzogVmlld1xuXHQpOiB2b2lkIHtcblx0XHRjb25zdCB2VU9NID0gb0ludGVyYWN0aXZlQ2hhcnQuZGF0YShcInVvbVwiKTtcblx0XHRjb25zdCBzSXNDdXJyZW5jeSA9IHZVT00gJiYgdlVPTVtcIklTT0N1cnJlbmN5XCJdICYmIHZVT01bXCJJU09DdXJyZW5jeVwiXS4kUGF0aDtcblx0XHRjb25zdCBzSXNVbml0ID0gdlVPTSAmJiB2VU9NW1wiVW5pdFwiXSAmJiB2VU9NW1wiVW5pdFwiXS4kUGF0aDtcblx0XHRjb25zdCBzVW5pdGZpZWxkID0gc0lzQ3VycmVuY3kgfHwgc0lzVW5pdDtcblx0XHRsZXQgczE4bk1lc3NhZ2VUaXRsZSwgczE4bk1lc3NhZ2U7XG5cdFx0aWYgKHNVbml0ZmllbGQpIHtcblx0XHRcdGlmICghdGhpcy5jaGVja011bGl0VW5pdChvRGF0YSwgc1VuaXRmaWVsZCkpIHtcblx0XHRcdFx0aWYgKHNJc0N1cnJlbmN5KSB7XG5cdFx0XHRcdFx0czE4bk1lc3NhZ2VUaXRsZSA9IG9SZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9WSVNVQUxfRklMVEVSU19FUlJPUl9NRVNTQUdFX1RJVExFXCIpO1xuXHRcdFx0XHRcdHMxOG5NZXNzYWdlID0gb1Jlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX1ZJU1VBTF9GSUxURVJTX01VTFRJUExFX0NVUlJFTkNZXCIsIHNVbml0ZmllbGQpO1xuXHRcdFx0XHRcdHRoaXMuYXBwbHlFcnJvck1lc3NhZ2VBbmRUaXRsZShzMThuTWVzc2FnZVRpdGxlLCBzMThuTWVzc2FnZSwgc0luZm9QYXRoLCBvVmlldyk7XG5cdFx0XHRcdFx0TG9nLndhcm5pbmcoYEZpbHRlciBpcyBzZXQgZm9yIG11bHRpcGxlIEN1cnJlbmN5IGZvciR7c1VuaXRmaWVsZH1gKTtcblx0XHRcdFx0fSBlbHNlIGlmIChzSXNVbml0KSB7XG5cdFx0XHRcdFx0czE4bk1lc3NhZ2VUaXRsZSA9IG9SZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9WSVNVQUxfRklMVEVSU19FUlJPUl9NRVNTQUdFX1RJVExFXCIpO1xuXHRcdFx0XHRcdHMxOG5NZXNzYWdlID0gb1Jlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX1ZJU1VBTF9GSUxURVJTX01VTFRJUExFX1VOSVRcIiwgc1VuaXRmaWVsZCk7XG5cdFx0XHRcdFx0dGhpcy5hcHBseUVycm9yTWVzc2FnZUFuZFRpdGxlKHMxOG5NZXNzYWdlVGl0bGUsIHMxOG5NZXNzYWdlLCBzSW5mb1BhdGgsIG9WaWV3KTtcblx0XHRcdFx0XHRMb2cud2FybmluZyhgRmlsdGVyIGlzIHNldCBmb3IgbXVsdGlwbGUgVU9NcyBmb3Ike3NVbml0ZmllbGR9YCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH0sXG5cblx0LyoqXG5cdCAqIFNldHMgYW4gZXJyb3IgbWVzc2FnZSBpZiByZXNwb25zZSBkYXRhIGlzIGVtcHR5LlxuXHQgKiBAcGFyYW0gc0luZm9QYXRoIEludGVybmFsIG1vZGVsIGNvbnRleHQgcGF0aCB0byBzdG9yZSBpbmZvLlxuXHQgKiBAcGFyYW0gb1Jlc291cmNlQnVuZGxlIFRoZSByZXNvdXJjZSBidW5kbGVcblx0ICogQHBhcmFtIG9WaWV3IEluc3RhbmNlIG9mIHRoZSB2aWV3XG5cdCAqL1xuXHRzZXROb0RhdGFNZXNzYWdlOiBmdW5jdGlvbiAoc0luZm9QYXRoOiBzdHJpbmcsIG9SZXNvdXJjZUJ1bmRsZTogUmVzb3VyY2VCdW5kbGUsIG9WaWV3OiBWaWV3KTogdm9pZCB7XG5cdFx0Y29uc3QgczE4bk1lc3NhZ2VUaXRsZSA9IG9SZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9WSVNVQUxfRklMVEVSU19FUlJPUl9NRVNTQUdFX1RJVExFXCIpO1xuXHRcdGNvbnN0IHMxOG5NZXNzYWdlID0gb1Jlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX1ZJU1VBTF9GSUxURVJfTk9fREFUQV9URVhUXCIpO1xuXHRcdHRoaXMuYXBwbHlFcnJvck1lc3NhZ2VBbmRUaXRsZShzMThuTWVzc2FnZVRpdGxlLCBzMThuTWVzc2FnZSwgc0luZm9QYXRoLCBvVmlldyk7XG5cdH0sXG5cdGNvbnZlcnRGaWx0ZXJDb25kaW9uczogZnVuY3Rpb24gKG9GaWx0ZXJDb25kaXRpb25zOiBSZWNvcmQ8c3RyaW5nLCBGaWx0ZXJDb25kaXRpb25zW10+KTogUmVjb3JkPHN0cmluZywgQ29uZGl0aW9uT2JqZWN0W10+IHtcblx0XHRjb25zdCBvQ29udmVydGVkQ29uZGl0aW9uczogUmVjb3JkPHN0cmluZywgQ29uZGl0aW9uT2JqZWN0W10+ID0ge307XG5cdFx0T2JqZWN0LmtleXMob0ZpbHRlckNvbmRpdGlvbnMpLmZvckVhY2goZnVuY3Rpb24gKHNLZXk6IHN0cmluZykge1xuXHRcdFx0Y29uc3QgYUNvbnZlcnRlZENvbmRpdGlvbnM6IENvbmRpdGlvbk9iamVjdFtdID0gW107XG5cdFx0XHRjb25zdCBhQ29uZGl0aW9ucyA9IG9GaWx0ZXJDb25kaXRpb25zW3NLZXldO1xuXHRcdFx0Zm9yIChjb25zdCBpdGVtIG9mIGFDb25kaXRpb25zKSB7XG5cdFx0XHRcdGNvbnN0IHZhbHVlcyA9IGl0ZW0udmFsdWUyID8gW2l0ZW0udmFsdWUxLCBpdGVtLnZhbHVlMl0gOiBbaXRlbS52YWx1ZTFdO1xuXHRcdFx0XHRhQ29udmVydGVkQ29uZGl0aW9ucy5wdXNoKENvbmRpdGlvbi5jcmVhdGVDb25kaXRpb24oaXRlbS5vcGVyYXRvciwgdmFsdWVzLCBudWxsLCBudWxsLCBcIlZhbGlkYXRlZFwiIGFzIENvbmRpdGlvblZhbGlkYXRlZCkpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKGFDb252ZXJ0ZWRDb25kaXRpb25zLmxlbmd0aCkge1xuXHRcdFx0XHRvQ29udmVydGVkQ29uZGl0aW9uc1tzS2V5XSA9IGFDb252ZXJ0ZWRDb25kaXRpb25zO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHRcdHJldHVybiBvQ29udmVydGVkQ29uZGl0aW9ucztcblx0fSxcblx0Z2V0Q3VzdG9tQ29uZGl0aW9uczogZnVuY3Rpb24gKFxuXHRcdFJhbmdlOiBNZXRhTW9kZWxUeXBlPFNlbGVjdGlvblJhbmdlVHlwZT4sXG5cdFx0b1ZhbGlkUHJvcGVydHk6IE1ldGFNb2RlbFByb3BlcnR5LFxuXHRcdHNQcm9wZXJ0eU5hbWU6IHN0cmluZ1xuXHQpOiB7IHZhbHVlMj86IHVua25vd247IHZhbHVlMTogdW5rbm93bjsgb3BlcmF0b3I/OiBzdHJpbmcgfCBudWxsOyBwYXRoOiBzdHJpbmcgfSB7XG5cdFx0bGV0IHZhbHVlMSwgdmFsdWUyO1xuXHRcdGlmIChvVmFsaWRQcm9wZXJ0eS4kVHlwZSA9PT0gXCJFZG0uRGF0ZVRpbWVPZmZzZXRcIikge1xuXHRcdFx0dmFsdWUxID0gdGhpcy5fcGFyc2VEYXRlVGltZShcblx0XHRcdFx0Z2V0VHlwZUNvbXBsaWFudFZhbHVlKHRoaXMuX2Zvcm1hdERhdGVUaW1lKFJhbmdlLkxvdyksIG9WYWxpZFByb3BlcnR5LiRUeXBlLCBSYW5nZS5PcHRpb24pIGFzIHVua25vd24gYXMgc3RyaW5nIHwgRGF0ZVxuXHRcdFx0KTtcblx0XHRcdHZhbHVlMiA9IFJhbmdlLkhpZ2hcblx0XHRcdFx0PyB0aGlzLl9wYXJzZURhdGVUaW1lKFxuXHRcdFx0XHRcdFx0Z2V0VHlwZUNvbXBsaWFudFZhbHVlKHRoaXMuX2Zvcm1hdERhdGVUaW1lKFJhbmdlLkhpZ2gpLCBvVmFsaWRQcm9wZXJ0eS4kVHlwZSwgUmFuZ2UuT3B0aW9uKSBhcyB1bmtub3duIGFzXG5cdFx0XHRcdFx0XHRcdHwgc3RyaW5nXG5cdFx0XHRcdFx0XHRcdHwgRGF0ZVxuXHRcdFx0XHQgIClcblx0XHRcdFx0OiBudWxsO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR2YWx1ZTEgPSBSYW5nZS5Mb3c7XG5cdFx0XHR2YWx1ZTIgPSBSYW5nZS5IaWdoID8gUmFuZ2UuSGlnaCA6IG51bGw7XG5cdFx0fVxuXHRcdHJldHVybiB7XG5cdFx0XHRvcGVyYXRvcjogUmFuZ2UuT3B0aW9uXG5cdFx0XHRcdD8gZ2V0UmFuZ2VQcm9wZXJ0eSgoUmFuZ2UuT3B0aW9uIGFzIHVua25vd24gYXMgTWV0YU1vZGVsRW51bTxTZWxlY3Rpb25SYW5nZU9wdGlvblR5cGU+KS4kRW51bU1lbWJlciB8fCBSYW5nZS5PcHRpb24pXG5cdFx0XHRcdDogbnVsbCxcblx0XHRcdHZhbHVlMTogdmFsdWUxLFxuXHRcdFx0dmFsdWUyOiB2YWx1ZTIsXG5cdFx0XHRwYXRoOiBzUHJvcGVydHlOYW1lXG5cdFx0fTtcblx0fSxcblx0X3BhcnNlRGF0ZVRpbWU6IGZ1bmN0aW9uIChzVmFsdWU6IHN0cmluZyB8IERhdGUpOiBzdHJpbmcgfCBEYXRlIHwgVUk1RGF0ZSB7XG5cdFx0cmV0dXJuIHRoaXMuX2dldERhdGVUaW1lVHlwZUluc3RhbmNlKCkucGFyc2VWYWx1ZShzVmFsdWUsIFwic3RyaW5nXCIpO1xuXHR9LFxuXHRfZm9ybWF0RGF0ZVRpbWU6IGZ1bmN0aW9uIChzVmFsdWU6IHN0cmluZyB8IERhdGUpOiBzdHJpbmcgfCBEYXRlIHwgVUk1RGF0ZSB7XG5cdFx0cmV0dXJuIHRoaXMuX2dldERhdGVUaW1lVHlwZUluc3RhbmNlKCkuZm9ybWF0VmFsdWUoc1ZhbHVlLCBcInN0cmluZ1wiKTtcblx0fSxcblx0X2dldERhdGVUaW1lVHlwZUluc3RhbmNlOiBmdW5jdGlvbiAoKTogRGF0ZVRpbWVPZmZzZXQge1xuXHRcdHJldHVybiBuZXcgRGF0ZVRpbWVPZmZzZXQoeyBwYXR0ZXJuOiBcInl5eXktTU0tZGRUSEg6bW06c3NaXCIsIGNhbGVuZGFyVHlwZTogXCJHcmVnb3JpYW5cIiB9LCB7IFY0OiB0cnVlIH0pO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBHZXQgZXJyb3IgaW5mbyB3aGVuIHJlcXVpcmVkIGluUGFyYW1ldGVycyBvciByZXF1aXJlZCBmaWx0ZXJzIGFyZSBub3QgYXZhaWxhYmxlLlxuXHQgKiBAcGFyYW0gbm90TWF0Y2hlZENvbmRpdGlvbnMgUHJvcGVydHkgbmFtZXMoaW5QYXJhbWV0ZXJzIG9yIHJlcXVpcmVkIGZpbHRlcnMpIGZvciB3aGljaCB2YWx1ZXMgYXJlIG5vdCBhdmFpbGFibGUgLlxuXHQgKiBAcGFyYW0gcmVzb3VyY2VCdW5kbGUgUmVzb3VyY2VCdW5kbGUgZm9yIHRyYW5zbGF0ZWQgdGV4dHMuXG5cdCAqIEBwYXJhbSBlbnRpdHlTZXRQYXRoIEVudGl0eVNldCBQYXRoIGZvciBwcm9wZXJ0eSBsYWJlbCBhbm5vdGF0aW9uLlxuXHQgKiBAcGFyYW0gbWV0YU1vZGVsIERlZmF1bHQgbWV0YW1vZGVsLlxuXHQgKiBAcmV0dXJucyBFcnJvciBpbmZvIGNvbnRhaW5pbmcgdGV4dHMgZm9yIHRpdGxlIGFuZCBtZXNzYWdlLlxuXHQgKi9cblx0Z2V0RXJyb3JJbmZvRm9yTm9Jbml0aWFsT3ZlcmxheTogZnVuY3Rpb24gKFxuXHRcdG5vdE1hdGNoZWRDb25kaXRpb25zOiBzdHJpbmdbXSxcblx0XHRyZXNvdXJjZUJ1bmRsZTogUmVzb3VyY2VCdW5kbGUsXG5cdFx0ZW50aXR5U2V0UGF0aDogc3RyaW5nLFxuXHRcdG1ldGFNb2RlbDogTWV0YU1vZGVsXG5cdCk6IHsgc2hvd0Vycm9yOiBib29sZWFuOyBlcnJvck1lc3NhZ2VUaXRsZTogc3RyaW5nOyBlcnJvck1lc3NhZ2U6IHN0cmluZyB9IHwgdW5kZWZpbmVkIHtcblx0XHRsZXQgcmV0O1xuXHRcdGlmIChub3RNYXRjaGVkQ29uZGl0aW9ucy5sZW5ndGggPiAxKSB7XG5cdFx0XHRyZXQgPSB7XG5cdFx0XHRcdHNob3dFcnJvcjogdHJ1ZSxcblx0XHRcdFx0ZXJyb3JNZXNzYWdlVGl0bGU6IHJlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX1ZJU1VBTF9GSUxURVJTX0VSUk9SX01FU1NBR0VfVElUTEVcIiksXG5cdFx0XHRcdGVycm9yTWVzc2FnZTogcmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fVklTVUFMX0ZJTFRFUlNfUFJPVklERV9GSUxURVJfVkFMX01VTFRJUExFVkZcIilcblx0XHRcdH07XG5cdFx0fSBlbHNlIGlmIChub3RNYXRjaGVkQ29uZGl0aW9ucy5sZW5ndGggPT09IDEpIHtcblx0XHRcdGNvbnN0IGxhYmVsID1cblx0XHRcdFx0KG1ldGFNb2RlbC5nZXRPYmplY3QoYCR7ZW50aXR5U2V0UGF0aH0vJHtub3RNYXRjaGVkQ29uZGl0aW9uc1swXX1AY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLkxhYmVsYCkgYXMgc3RyaW5nKSB8fFxuXHRcdFx0XHRub3RNYXRjaGVkQ29uZGl0aW9uc1swXTtcblx0XHRcdHJldCA9IHtcblx0XHRcdFx0c2hvd0Vycm9yOiB0cnVlLFxuXHRcdFx0XHRlcnJvck1lc3NhZ2VUaXRsZTogcmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fVklTVUFMX0ZJTFRFUlNfRVJST1JfTUVTU0FHRV9USVRMRVwiKSxcblx0XHRcdFx0ZXJyb3JNZXNzYWdlOiByZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9WSVNVQUxfRklMVEVSU19QUk9WSURFX0ZJTFRFUl9WQUxfU0lOR0xFVkZcIiwgW2xhYmVsXSlcblx0XHRcdH07XG5cdFx0fVxuXHRcdHJldHVybiByZXQ7XG5cdH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IFZpc3VhbEZpbHRlclV0aWxzO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7RUFzQkEsTUFBTUEsaUJBQWlCLEdBQUc7SUFDekI7QUFDRDtBQUNBO0FBQ0E7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
|
|
346
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJWaXN1YWxGaWx0ZXJVdGlscyIsImFwcGx5TWVkaWFuU2NhbGVUb0NoYXJ0RGF0YSIsIm9JbnRlcmFjdGl2ZUNoYXJ0Iiwib1ZpZXciLCJzVkZJZCIsInNJbmZvUGF0aCIsIm9EYXRhIiwic01lYXN1cmUiLCJkYXRhIiwib0ludGVybmFsTW9kZWxDb250ZXh0IiwiZ2V0QmluZGluZ0NvbnRleHQiLCJhQWdncmVnYXRpb24iLCJnZXRQb2ludHMiLCJnZXRCYXJzIiwiZ2V0U2VnbWVudHMiLCJpdGVtIiwicHVzaCIsImdldE9iamVjdCIsInNjYWxlRmFjdG9yIiwiX2dldE1lZGlhblNjYWxlRmFjdG9yIiwiaVNob3J0UmVmTnVtYmVyIiwic2NhbGUiLCJzZXRQcm9wZXJ0eSIsIm9TY2FsZVRpdGxlIiwiYnlJZCIsIm9NZWFzdXJlRGltZW5zaW9uVGl0bGUiLCJzVGV4dCIsImdldFRleHQiLCJzZXRUZXh0Iiwic2V0VG9vbHRpcCIsInNNZWFzdXJlRmllbGQiLCJpIiwic29ydCIsImEiLCJiIiwiTnVtYmVyIiwibGVuZ3RoIiwiaU1pZCIsImlNZWRpYW4iLCJwYXJzZUZsb2F0IiwiTWF0aCIsImZsb29yIiwidmFsIiwicG93Iiwicm91bmQiLCJhYnMiLCJmaXhlZEludGVnZXIiLCJOdW1iZXJGb3JtYXQiLCJnZXRJbnRlZ2VySW5zdGFuY2UiLCJzdHlsZSIsInNob3dTY2FsZSIsInNob3J0UmVmTnVtYmVyIiwiYURhdGEiLCJzU2NhbGVkVmFsdWUiLCJmb3JtYXQiLCJhU2NhbGVkVmFsdWVQYXJ0cyIsInNwbGl0IiwicGFyc2VJbnQiLCJpbmRleE9mIiwidW5kZWZpbmVkIiwiZ2V0U2NhbGUiLCJnZXRGb3JtYXR0ZWROdW1iZXIiLCJpblZhbHVlIiwibnVtYmVyT2ZGcmFjdGlvbmFsRGlnaXRzIiwiY3VycmVuY3kiLCJ2YWx1ZSIsInJlcGxhY2UiLCJjdXJyZW5jeUZvcm1hdCIsImdldEN1cnJlbmN5SW5zdGFuY2UiLCJzaG93TWVhc3VyZSIsImdldEZsb2F0SW5zdGFuY2UiLCJzaG9ydERlY2ltYWxzIiwiZGVjaW1hbHMiLCJhcHBseVVPTVRvVGl0bGUiLCJvQ29udGV4dERhdGEiLCJ2VU9NIiwic1VPTSIsInNDdXJyZW5jeSIsIiRQYXRoIiwic1VPTVZhbHVlIiwidXBkYXRlQ2hhcnRTY2FsZUZhY3RvclRpdGxlIiwiYXBwbHlFcnJvck1lc3NhZ2VBbmRUaXRsZSIsInMxOG5NZXNzYWdlVGl0bGUiLCJzMThuTWVzc2FnZSIsImVycm9yTWVzc2FnZVRpdGxlIiwiZXJyb3JNZXNzYWdlIiwic2hvd0Vycm9yIiwiY2hlY2tNdWxpdFVuaXQiLCJvQ29udGV4dHMiLCJzVW5pdGZpZWxkIiwiYUNvbnRleHREYXRhIiwicmVkdWNlIiwia2V5IiwiTmFOIiwic2V0TXVsdGlVT01NZXNzYWdlIiwib1Jlc291cmNlQnVuZGxlIiwic0lzQ3VycmVuY3kiLCJzSXNVbml0IiwiTG9nIiwid2FybmluZyIsInNldE5vRGF0YU1lc3NhZ2UiLCJjb252ZXJ0RmlsdGVyQ29uZGlvbnMiLCJvRmlsdGVyQ29uZGl0aW9ucyIsIm9Db252ZXJ0ZWRDb25kaXRpb25zIiwiT2JqZWN0Iiwia2V5cyIsImZvckVhY2giLCJzS2V5IiwiYUNvbnZlcnRlZENvbmRpdGlvbnMiLCJhQ29uZGl0aW9ucyIsInZhbHVlcyIsInZhbHVlMiIsInZhbHVlMSIsIkNvbmRpdGlvbiIsImNyZWF0ZUNvbmRpdGlvbiIsIm9wZXJhdG9yIiwiZ2V0Q3VzdG9tQ29uZGl0aW9ucyIsIlJhbmdlIiwib1ZhbGlkUHJvcGVydHkiLCJzUHJvcGVydHlOYW1lIiwiJFR5cGUiLCJfcGFyc2VEYXRlVGltZSIsImdldFR5cGVDb21wbGlhbnRWYWx1ZSIsIl9mb3JtYXREYXRlVGltZSIsIkxvdyIsIk9wdGlvbiIsIkhpZ2giLCJnZXRSYW5nZVByb3BlcnR5IiwiJEVudW1NZW1iZXIiLCJwYXRoIiwic1ZhbHVlIiwiX2dldERhdGVUaW1lVHlwZUluc3RhbmNlIiwicGFyc2VWYWx1ZSIsImZvcm1hdFZhbHVlIiwiRGF0ZVRpbWVPZmZzZXQiLCJwYXR0ZXJuIiwiY2FsZW5kYXJUeXBlIiwiVjQiLCJnZXRFcnJvckluZm9Gb3JOb0luaXRpYWxPdmVybGF5Iiwibm90TWF0Y2hlZENvbmRpdGlvbnMiLCJyZXNvdXJjZUJ1bmRsZSIsImVudGl0eVNldFBhdGgiLCJtZXRhTW9kZWwiLCJyZXQiLCJsYWJlbCIsImVuYWJsZUNoYXJ0QmluZGluZyIsInZpc3VhbEZpbHRlcnMiLCJlbmFibGUiLCJkaWZmU3RhdGUiLCJjaGFuZ2VkRmlsdGVyRmllbGRQYXRocyIsImZpbHRlciIsInZmSWQiLCJ2aXN1YWxGaWx0ZXJCQiIsImlzQSIsInNldEVuYWJsZUNoYXJ0QmluZGluZyIsImVycm9yIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJWaXN1YWxGaWx0ZXJVdGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFNlbGVjdGlvblJhbmdlT3B0aW9uVHlwZSwgU2VsZWN0aW9uUmFuZ2VUeXBlIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9VSVwiO1xuaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgdHlwZSBSZXNvdXJjZUJ1bmRsZSBmcm9tIFwic2FwL2Jhc2UvaTE4bi9SZXNvdXJjZUJ1bmRsZVwiO1xuaW1wb3J0IHR5cGUgeyBJbnRlcm5hbE1vZGVsQ29udGV4dCB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL01vZGVsSGVscGVyXCI7XG5pbXBvcnQgdHlwZSB7IEZpbHRlckNvbmRpdGlvbnMgfSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9maWx0ZXJCYXIvRmlsdGVySGVscGVyXCI7XG5pbXBvcnQgeyBnZXRSYW5nZVByb3BlcnR5LCBnZXRUeXBlQ29tcGxpYW50VmFsdWUgfSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9maWx0ZXJCYXIvRmlsdGVySGVscGVyXCI7XG5pbXBvcnQgdHlwZSB7IEV4dGVybmFsU3RhdGVUeXBlIH0gZnJvbSBcInNhcC9mZS9tYWNyb3MvdmFsdWVoZWxwL1ZhbHVlSGVscERlbGVnYXRlXCI7XG5pbXBvcnQgdHlwZSBWaXN1YWxGaWx0ZXIgZnJvbSBcInNhcC9mZS9tYWNyb3MvdmlzdWFsZmlsdGVycy9WaXN1YWxGaWx0ZXJcIjtcbmltcG9ydCB0eXBlIFRpdGxlIGZyb20gXCJzYXAvbS9UaXRsZVwiO1xuaW1wb3J0IHR5cGUgSW50ZXJhY3RpdmVCYXJDaGFydCBmcm9tIFwic2FwL3N1aXRlL3VpL21pY3JvY2hhcnQvSW50ZXJhY3RpdmVCYXJDaGFydFwiO1xuaW1wb3J0IHR5cGUgSW50ZXJhY3RpdmVEb251dENoYXJ0IGZyb20gXCJzYXAvc3VpdGUvdWkvbWljcm9jaGFydC9JbnRlcmFjdGl2ZURvbnV0Q2hhcnRcIjtcbmltcG9ydCB0eXBlIEludGVyYWN0aXZlTGluZUNoYXJ0IGZyb20gXCJzYXAvc3VpdGUvdWkvbWljcm9jaGFydC9JbnRlcmFjdGl2ZUxpbmVDaGFydFwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IHR5cGUgVUk1RGF0ZSBmcm9tIFwic2FwL3VpL2NvcmUvZGF0ZS9VSTVEYXRlXCI7XG5pbXBvcnQgTnVtYmVyRm9ybWF0IGZyb20gXCJzYXAvdWkvY29yZS9mb3JtYXQvTnVtYmVyRm9ybWF0XCI7XG5pbXBvcnQgdHlwZSBWaWV3IGZyb20gXCJzYXAvdWkvY29yZS9tdmMvVmlld1wiO1xuaW1wb3J0IHR5cGUgeyBDb25kaXRpb25PYmplY3QgfSBmcm9tIFwic2FwL3VpL21kYy9jb25kaXRpb24vQ29uZGl0aW9uXCI7XG5pbXBvcnQgQ29uZGl0aW9uIGZyb20gXCJzYXAvdWkvbWRjL2NvbmRpdGlvbi9Db25kaXRpb25cIjtcbmltcG9ydCB0eXBlIENvbmRpdGlvblZhbGlkYXRlZCBmcm9tIFwic2FwL3VpL21kYy9lbnVtcy9Db25kaXRpb25WYWxpZGF0ZWRcIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9Db250ZXh0XCI7XG5pbXBvcnQgdHlwZSBNZXRhTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9NZXRhTW9kZWxcIjtcbmltcG9ydCBEYXRlVGltZU9mZnNldCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3R5cGUvRGF0ZVRpbWVPZmZzZXRcIjtcbmltcG9ydCB0eXBlIHsgTWV0YU1vZGVsRW51bSwgTWV0YU1vZGVsUHJvcGVydHksIE1ldGFNb2RlbFR5cGUgfSBmcm9tIFwidHlwZXMvbWV0YW1vZGVsX3R5cGVzXCI7XG5cbmNvbnN0IFZpc3VhbEZpbHRlclV0aWxzID0ge1xuXHQvKipcblx0ICogQXBwbGllcyB0aGUgbWVkaWFuIHNjYWxlIHRvIHRoZSBjaGFydCBkYXRhLlxuXHQgKiBAcGFyYW0gb0ludGVyYWN0aXZlQ2hhcnQgSW50ZXJhY3RpdmVDaGFydCBpbiB0aGUgVmlzdWFsRmlsdGVyIGNvbnRyb2xcblx0ICogQHBhcmFtIG9WaWV3IEluc3RhbmNlIG9mIHRoZSB2aWV3XG5cdCAqIEBwYXJhbSBzVkZJZCBWaXN1YWxGaWx0ZXIgY29udHJvbCBJRFxuXHQgKiBAcGFyYW0gc0luZm9QYXRoIEludGVybmFsIG1vZGVsIGNvbnRleHQgcGF0aCB0byBzdG9yZSBpbmZvLlxuXHQgKi9cblx0YXBwbHlNZWRpYW5TY2FsZVRvQ2hhcnREYXRhOiBmdW5jdGlvbiAoXG5cdFx0b0ludGVyYWN0aXZlQ2hhcnQ6IEludGVyYWN0aXZlRG9udXRDaGFydCB8IEludGVyYWN0aXZlTGluZUNoYXJ0IHwgSW50ZXJhY3RpdmVCYXJDaGFydCxcblx0XHRvVmlldzogVmlldyxcblx0XHRzVkZJZDogc3RyaW5nLFxuXHRcdHNJbmZvUGF0aDogc3RyaW5nXG5cdCk6IHZvaWQge1xuXHRcdGNvbnN0IG9EYXRhID0gW107XG5cdFx0Y29uc3Qgc01lYXN1cmUgPSBvSW50ZXJhY3RpdmVDaGFydC5kYXRhKFwibWVhc3VyZVwiKTtcblx0XHRjb25zdCBvSW50ZXJuYWxNb2RlbENvbnRleHQgPSBvVmlldy5nZXRCaW5kaW5nQ29udGV4dChcImludGVybmFsXCIpIGFzIEludGVybmFsTW9kZWxDb250ZXh0O1xuXHRcdGNvbnN0IGFBZ2dyZWdhdGlvbiA9XG5cdFx0XHQoKG9JbnRlcmFjdGl2ZUNoYXJ0IGFzIEludGVyYWN0aXZlTGluZUNoYXJ0KS5nZXRQb2ludHMgJiYgKG9JbnRlcmFjdGl2ZUNoYXJ0IGFzIEludGVyYWN0aXZlTGluZUNoYXJ0KS5nZXRQb2ludHMoKSkgfHxcblx0XHRcdCgob0ludGVyYWN0aXZlQ2hhcnQgYXMgSW50ZXJhY3RpdmVCYXJDaGFydCkuZ2V0QmFycyAmJiAob0ludGVyYWN0aXZlQ2hhcnQgYXMgSW50ZXJhY3RpdmVCYXJDaGFydCkuZ2V0QmFycygpKSB8fFxuXHRcdFx0KChvSW50ZXJhY3RpdmVDaGFydCBhcyBJbnRlcmFjdGl2ZURvbnV0Q2hhcnQpLmdldFNlZ21lbnRzICYmIChvSW50ZXJhY3RpdmVDaGFydCBhcyBJbnRlcmFjdGl2ZURvbnV0Q2hhcnQpLmdldFNlZ21lbnRzKCkpO1xuXHRcdGZvciAoY29uc3QgaXRlbSBvZiBhQWdncmVnYXRpb24pIHtcblx0XHRcdG9EYXRhLnB1c2goaXRlbS5nZXRCaW5kaW5nQ29udGV4dCgpIS5nZXRPYmplY3QoKSk7XG5cdFx0fVxuXHRcdGNvbnN0IHNjYWxlRmFjdG9yID0gdGhpcy5fZ2V0TWVkaWFuU2NhbGVGYWN0b3Iob0RhdGEsIHNNZWFzdXJlKTtcblx0XHRpZiAoc2NhbGVGYWN0b3IgJiYgc2NhbGVGYWN0b3IuaVNob3J0UmVmTnVtYmVyICYmIHNjYWxlRmFjdG9yLnNjYWxlKSB7XG5cdFx0XHRvSW50ZXJuYWxNb2RlbENvbnRleHQuc2V0UHJvcGVydHkoYHNjYWxlZmFjdG9yLyR7c0luZm9QYXRofWAsIHNjYWxlRmFjdG9yLnNjYWxlKTtcblx0XHRcdG9JbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShgc2NhbGVmYWN0b3JOdW1iZXIvJHtzSW5mb1BhdGh9YCwgc2NhbGVGYWN0b3IuaVNob3J0UmVmTnVtYmVyKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0b0ludGVybmFsTW9kZWxDb250ZXh0LnNldFByb3BlcnR5KGBzY2FsZWZhY3Rvci8ke3NJbmZvUGF0aH1gLCBcIlwiKTtcblx0XHRcdG9JbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShgc2NhbGVmYWN0b3JOdW1iZXIvJHtzSW5mb1BhdGh9YCwgXCJcIik7XG5cdFx0XHRjb25zdCBvU2NhbGVUaXRsZSA9IG9WaWV3LmJ5SWQoYCR7c1ZGSWR9OjpTY2FsZVVvTVRpdGxlYCkgYXMgVGl0bGU7XG5cdFx0XHRjb25zdCBvTWVhc3VyZURpbWVuc2lvblRpdGxlID0gb1ZpZXcuYnlJZChgJHtzVkZJZH06Ok1lYXN1cmVEaW1lbnNpb25UaXRsZWApIGFzIFRpdGxlO1xuXHRcdFx0Y29uc3Qgc1RleHQgPSBvU2NhbGVUaXRsZS5nZXRUZXh0KCk7XG5cdFx0XHRpZiAoc1RleHQgPT09IFwiIHwgXCIpIHtcblx0XHRcdFx0b1NjYWxlVGl0bGUuc2V0VGV4dChcIlwiKTtcblx0XHRcdFx0b01lYXN1cmVEaW1lbnNpb25UaXRsZS5zZXRUb29sdGlwKG9NZWFzdXJlRGltZW5zaW9uVGl0bGUuZ2V0VGV4dCgpKTtcblx0XHRcdH1cblx0XHR9XG5cdH0sXG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIG1lZGlhbiBzY2FsZSBmYWN0b3IuXG5cdCAqIEBwYXJhbSBvRGF0YSBWaXN1YWxGaWx0ZXIgZGF0YVxuXHQgKiBAcGFyYW0gc01lYXN1cmVGaWVsZCBQYXRoIG9mIHRoZSBtZWFzdXJlXG5cdCAqIEByZXR1cm5zIE9iamVjdCBjb250YWluaW5nIHNjYWxlIGFuZCBpU2hvcnRSZWZOdW1iZXJcblx0ICovXG5cdF9nZXRNZWRpYW5TY2FsZUZhY3RvcjogZnVuY3Rpb24gKG9EYXRhOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+W10sIHNNZWFzdXJlRmllbGQ6IHN0cmluZyk6IHsgaVNob3J0UmVmTnVtYmVyPzogbnVtYmVyOyBzY2FsZT86IHN0cmluZyB9IHtcblx0XHRsZXQgaTtcblx0XHRsZXQgc2NhbGVGYWN0b3I7XG5cdFx0b0RhdGEuc29ydChmdW5jdGlvbiAoYTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiwgYjogUmVjb3JkPHN0cmluZywgc3RyaW5nPikge1xuXHRcdFx0aWYgKE51bWJlcihhW3NNZWFzdXJlRmllbGRdKSA8IE51bWJlcihiW3NNZWFzdXJlRmllbGRdKSkge1xuXHRcdFx0XHRyZXR1cm4gLTE7XG5cdFx0XHR9XG5cdFx0XHRpZiAoTnVtYmVyKGFbc01lYXN1cmVGaWVsZF0pID4gTnVtYmVyKGJbc01lYXN1cmVGaWVsZF0pKSB7XG5cdFx0XHRcdHJldHVybiAxO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIDA7XG5cdFx0fSk7XG5cdFx0aWYgKG9EYXRhLmxlbmd0aCA+IDApIHtcblx0XHRcdC8vIGdldCBtZWRpYW4gaW5kZXhcblx0XHRcdGNvbnN0IGlNaWQgPSBvRGF0YS5sZW5ndGggLyAyLCAvLyBnZXQgbWlkIG9mIGFycmF5XG5cdFx0XHRcdC8vIGlmIGlNaWQgaXMgd2hvbGUgbnVtYmVyLCBhcnJheSBsZW5ndGggaXMgZXZlbiwgY2FsY3VsYXRlIG1lZGlhblxuXHRcdFx0XHQvLyBpZiBpTWlkIGlzIG5vdCB3aG9sZSBudW1iZXIsIGFycmF5IGxlbmd0aCBpcyBvZGQsIHRha2UgbWVkaWFuIGFzIGlNaWQgLSAxXG5cdFx0XHRcdGlNZWRpYW4gPVxuXHRcdFx0XHRcdGlNaWQgJSAxID09PSAwXG5cdFx0XHRcdFx0XHQ/IChwYXJzZUZsb2F0KG9EYXRhW2lNaWQgLSAxXVtzTWVhc3VyZUZpZWxkXSkgKyBwYXJzZUZsb2F0KG9EYXRhW2lNaWRdW3NNZWFzdXJlRmllbGRdKSkgLyAyXG5cdFx0XHRcdFx0XHQ6IHBhcnNlRmxvYXQob0RhdGFbTWF0aC5mbG9vcihpTWlkKV1bc01lYXN1cmVGaWVsZF0pLFxuXHRcdFx0XHQvLyBnZXQgc2NhbGUgZmFjdG9yIG9uIG1lZGlhblxuXHRcdFx0XHR2YWwgPSBpTWVkaWFuO1xuXHRcdFx0Zm9yIChpID0gMDsgaSA8IDE0OyBpKyspIHtcblx0XHRcdFx0c2NhbGVGYWN0b3IgPSBNYXRoLnBvdygxMCwgaSk7XG5cdFx0XHRcdGlmIChNYXRoLnJvdW5kKE1hdGguYWJzKHZhbCkgLyBzY2FsZUZhY3RvcikgPCAxMCkge1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Y29uc3QgZml4ZWRJbnRlZ2VyID0gTnVtYmVyRm9ybWF0LmdldEludGVnZXJJbnN0YW5jZSh7XG5cdFx0XHRzdHlsZTogXCJzaG9ydFwiLFxuXHRcdFx0c2hvd1NjYWxlOiBmYWxzZSxcblx0XHRcdHNob3J0UmVmTnVtYmVyOiBzY2FsZUZhY3RvclxuXHRcdH0pO1xuXG5cdFx0Ly8gYXBwbHkgc2NhbGUgZmFjdG9yIHRvIG90aGVyIHZhbHVlcyBhbmQgY2hlY2tcblx0XHRmb3IgKGkgPSAwOyBpIDwgb0RhdGEubGVuZ3RoOyBpKyspIHtcblx0XHRcdGNvbnN0IGFEYXRhID0gb0RhdGFbaV0sXG5cdFx0XHRcdHNTY2FsZWRWYWx1ZSA9IGZpeGVkSW50ZWdlci5mb3JtYXQoYURhdGFbc01lYXN1cmVGaWVsZF0gYXMgdW5rbm93biBhcyBudW1iZXIpLFxuXHRcdFx0XHRhU2NhbGVkVmFsdWVQYXJ0cyA9IHNTY2FsZWRWYWx1ZS5zcGxpdChcIi5cIik7XG5cdFx0XHQvLyBpZiBzY2FsZWQgdmFsdWUgaGFzIG9ubHkgMCBiZWZvcmUgZGVjaW1hbCBvciAwIGFmdGVyIGRlY2ltYWwgKGV4YW1wbGU6IDAuMDIpXG5cdFx0XHQvLyB0aGVuIGlnbm9yZSB0aGlzIHNjYWxlIGZhY3RvciBlbHNlIHByb2NlZWQgd2l0aCB0aGlzIHNjYWxlIGZhY3RvclxuXHRcdFx0Ly8gaWYgc2NhbGVkIHZhbHVlIGRpdmlkZWQgYnkgMTAwMCBpcyA+PSAxMDAwIHRoZW4gYWxzbyBpZ25vcmUgc2NhbGUgZmFjdG9yXG5cdFx0XHRpZiAoXG5cdFx0XHRcdCghYVNjYWxlZFZhbHVlUGFydHNbMV0gJiYgcGFyc2VJbnQoYVNjYWxlZFZhbHVlUGFydHNbMF0sIDEwKSA9PT0gMCkgfHxcblx0XHRcdFx0KGFTY2FsZWRWYWx1ZVBhcnRzWzFdICYmIHBhcnNlSW50KGFTY2FsZWRWYWx1ZVBhcnRzWzBdLCAxMCkgPT09IDAgJiYgYVNjYWxlZFZhbHVlUGFydHNbMV0uaW5kZXhPZihcIjBcIikgPT09IDApIHx8XG5cdFx0XHRcdE51bWJlcihzU2NhbGVkVmFsdWUpIC8gMTAwMCA+PSAxMDAwXG5cdFx0XHQpIHtcblx0XHRcdFx0c2NhbGVGYWN0b3IgPSB1bmRlZmluZWQ7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4ge1xuXHRcdFx0aVNob3J0UmVmTnVtYmVyOiBzY2FsZUZhY3Rvcixcblx0XHRcdHNjYWxlOiBzY2FsZUZhY3RvciA/IGZpeGVkSW50ZWdlci5nZXRTY2FsZSgpIDogXCJcIlxuXHRcdH07XG5cdH0sXG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIGZvcm1hdHRlZCBudW1iZXIgYWNjb3JkaW5nIHRvIHRoZSBydWxlcyBvZiBWaXN1YWxDaGFydEZpbHRlcnMuXG5cdCAqIEBwYXJhbSBpblZhbHVlIFZhbHVlIHdoaWNoIG5lZWRzIHRvIGJlIGZvcm1hdHRlZFxuXHQgKiBAcGFyYW0gc2NhbGVGYWN0b3IgU2NhbGVGYWN0b3IgdG8gd2hpY2ggdGhlIHZhbHVlIG5lZWRzIHRvIGJlIHNjYWxlZFxuXHQgKiBAcGFyYW0gbnVtYmVyT2ZGcmFjdGlvbmFsRGlnaXRzIE51bWJlck9mRnJhY3Rpb25hbERpZ2l0cyBkaWdpdHMgaW4gdGhlIGRlY2ltYWxzIGFjY29yZGluZyB0byBzY2FsZVxuXHQgKiBAcGFyYW0gY3VycmVuY3kgQ3VycmVuY3kgY29kZVxuXHQgKiBAcmV0dXJucyBUaGUgZm9ybWF0dGVkIG51bWJlclxuXHQgKi9cblx0Z2V0Rm9ybWF0dGVkTnVtYmVyOiBmdW5jdGlvbiAoXG5cdFx0aW5WYWx1ZTogc3RyaW5nIHwgbnVtYmVyLFxuXHRcdHNjYWxlRmFjdG9yPzogbnVtYmVyLFxuXHRcdG51bWJlck9mRnJhY3Rpb25hbERpZ2l0cz86IG51bWJlcixcblx0XHRjdXJyZW5jeT86IHN0cmluZ1xuXHQpOiBzdHJpbmcge1xuXHRcdGxldCBmaXhlZEludGVnZXI7XG5cdFx0Y29uc3QgdmFsdWU6IG51bWJlciA9IHR5cGVvZiBpblZhbHVlID09PSBcInN0cmluZ1wiID8gTnVtYmVyKGluVmFsdWUucmVwbGFjZSgvLC9nLCBcIlwiKSkgOiBpblZhbHVlO1xuXG5cdFx0aWYgKGN1cnJlbmN5KSB7XG5cdFx0XHRjb25zdCBjdXJyZW5jeUZvcm1hdCA9IE51bWJlckZvcm1hdC5nZXRDdXJyZW5jeUluc3RhbmNlKHtcblx0XHRcdFx0c2hvd01lYXN1cmU6IGZhbHNlXG5cdFx0XHR9KTtcblx0XHRcdHJldHVybiBjdXJyZW5jeUZvcm1hdC5mb3JtYXQodmFsdWUsIGN1cnJlbmN5KTtcblx0XHRcdC8vIHBhcnNlRmxvYXQodmFsdWUpIGlzIHJlcXVpcmVkIG90aGVyd2lzZSAtdmUgdmFsdWUgYXJlIHdyb25nbHkgcm91bmRlZCBvZmZcblx0XHRcdC8vIEV4YW1wbGU6IFwiLTEuOVwiIHJvdW5kcyBvZmYgdG8gLTEgaW5zdGVhZCBvZiAtMi4gaG93ZXZlciAtMS45IHJvdW5kcyBvZmYgdG8gLTJcblx0XHR9IGVsc2UgaWYgKHNjYWxlRmFjdG9yKSB7XG5cdFx0XHRmaXhlZEludGVnZXIgPSBOdW1iZXJGb3JtYXQuZ2V0RmxvYXRJbnN0YW5jZSh7XG5cdFx0XHRcdHN0eWxlOiBcInNob3J0XCIsXG5cdFx0XHRcdHNob3dTY2FsZTogZmFsc2UsXG5cdFx0XHRcdHNob3J0UmVmTnVtYmVyOiBzY2FsZUZhY3Rvcixcblx0XHRcdFx0c2hvcnREZWNpbWFsczogbnVtYmVyT2ZGcmFjdGlvbmFsRGlnaXRzXG5cdFx0XHR9KTtcblx0XHRcdHJldHVybiBmaXhlZEludGVnZXIuZm9ybWF0KHZhbHVlKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Zml4ZWRJbnRlZ2VyID0gTnVtYmVyRm9ybWF0LmdldEZsb2F0SW5zdGFuY2Uoe1xuXHRcdFx0XHRkZWNpbWFsczogbnVtYmVyT2ZGcmFjdGlvbmFsRGlnaXRzXG5cdFx0XHR9KTtcblx0XHRcdHJldHVybiBmaXhlZEludGVnZXIuZm9ybWF0KHZhbHVlKTtcblx0XHR9XG5cdH0sXG5cblx0LyoqXG5cdCAqIEFwcGxpZXMgdGhlIFVPTSB0byB0aGUgdGl0bGUgb2YgdGhlIHZpc3VhbCBmaWx0ZXIgY29udHJvbC5cblx0ICogQHBhcmFtIG9JbnRlcmFjdGl2ZUNoYXJ0IEludGVyYWN0aXZlQ2hhcnQgaW4gdGhlIFZpc3VhbEZpbHRlciBjb250cm9sXG5cdCAqIEBwYXJhbSBvQ29udGV4dERhdGEgRGF0YSBvZiB0aGUgVmlzdWFsRmlsdGVyXG5cdCAqIEBwYXJhbSBvVmlldyBJbnN0YW5jZSBvZiB0aGUgdmlld1xuXHQgKiBAcGFyYW0gc0luZm9QYXRoIEludGVybmFsIG1vZGVsIGNvbnRleHQgcGF0aCB0byBzdG9yZSBpbmZvLlxuXHQgKi9cblx0YXBwbHlVT01Ub1RpdGxlOiBmdW5jdGlvbiAob0ludGVyYWN0aXZlQ2hhcnQ6IENvbnRyb2wsIG9Db250ZXh0RGF0YTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIG9WaWV3OiBWaWV3LCBzSW5mb1BhdGg6IHN0cmluZyk6IHZvaWQge1xuXHRcdGNvbnN0IHZVT00gPSBvSW50ZXJhY3RpdmVDaGFydC5kYXRhKFwidW9tXCIpO1xuXHRcdGxldCBzVU9NO1xuXHRcdGxldCBzQ3VycmVuY3k7XG5cdFx0aWYgKHZVT00gJiYgdlVPTVtcIklTT0N1cnJlbmN5XCJdKSB7XG5cdFx0XHRzVU9NID0gdlVPTVtcIklTT0N1cnJlbmN5XCJdO1xuXHRcdFx0c0N1cnJlbmN5ID0gc1VPTS4kUGF0aCA/IG9Db250ZXh0RGF0YVtzVU9NLiRQYXRoXSA6IHNVT007XG5cdFx0fSBlbHNlIGlmICh2VU9NICYmIHZVT01bXCJVbml0XCJdKSB7XG5cdFx0XHRzVU9NID0gdlVPTVtcIlVuaXRcIl07XG5cdFx0fVxuXHRcdGlmIChzVU9NKSB7XG5cdFx0XHRjb25zdCBzVU9NVmFsdWUgPSBzVU9NLiRQYXRoID8gb0NvbnRleHREYXRhW3NVT00uJFBhdGhdIDogc1VPTTtcblx0XHRcdGNvbnN0IG9JbnRlcm5hbE1vZGVsQ29udGV4dCA9IG9WaWV3LmdldEJpbmRpbmdDb250ZXh0KFwiaW50ZXJuYWxcIikgYXMgSW50ZXJuYWxNb2RlbENvbnRleHQ7XG5cdFx0XHRvSW50ZXJuYWxNb2RlbENvbnRleHQuc2V0UHJvcGVydHkoYHVvbS8ke3NJbmZvUGF0aH1gLCBzVU9NVmFsdWUpO1xuXHRcdFx0aWYgKHNDdXJyZW5jeSkge1xuXHRcdFx0XHRvSW50ZXJuYWxNb2RlbENvbnRleHQuc2V0UHJvcGVydHkoYGN1cnJlbmN5LyR7c0luZm9QYXRofWAsIHNVT01WYWx1ZSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9LFxuXHQvKipcblx0ICogVXBkYXRlcyB0aGUgc2NhbGUgZmFjdG9yIGluIHRoZSB0aXRsZSBvZiB0aGUgdmlzdWFsIGZpbHRlci5cblx0ICogQHBhcmFtIG9JbnRlcmFjdGl2ZUNoYXJ0IEludGVyYWN0aXZlQ2hhcnQgaW4gdGhlIFZpc3VhbEZpbHRlciBjb250cm9sXG5cdCAqIEBwYXJhbSBvVmlldyBJbnN0YW5jZSBvZiB0aGUgdmlld1xuXHQgKiBAcGFyYW0gc1ZGSWQgVmlzdWFsRmlsdGVyIGNvbnRyb2wgSURcblx0ICogQHBhcmFtIHNJbmZvUGF0aCBJbnRlcm5hbCBtb2RlbCBjb250ZXh0IHBhdGggdG8gc3RvcmUgaW5mby5cblx0ICovXG5cdHVwZGF0ZUNoYXJ0U2NhbGVGYWN0b3JUaXRsZTogZnVuY3Rpb24gKFxuXHRcdG9JbnRlcmFjdGl2ZUNoYXJ0OiBJbnRlcmFjdGl2ZURvbnV0Q2hhcnQgfCBJbnRlcmFjdGl2ZUxpbmVDaGFydCB8IEludGVyYWN0aXZlQmFyQ2hhcnQsXG5cdFx0b1ZpZXc6IFZpZXcsXG5cdFx0c1ZGSWQ6IHN0cmluZyxcblx0XHRzSW5mb1BhdGg6IHN0cmluZ1xuXHQpOiB2b2lkIHtcblx0XHRpZiAoIW9JbnRlcmFjdGl2ZUNoYXJ0LmRhdGEoXCJzY2FsZWZhY3RvclwiKSkge1xuXHRcdFx0dGhpcy5hcHBseU1lZGlhblNjYWxlVG9DaGFydERhdGEob0ludGVyYWN0aXZlQ2hhcnQsIG9WaWV3LCBzVkZJZCwgc0luZm9QYXRoKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29uc3QgZml4ZWRJbnRlZ2VyID0gTnVtYmVyRm9ybWF0LmdldEludGVnZXJJbnN0YW5jZSh7XG5cdFx0XHRcdHN0eWxlOiBcInNob3J0XCIsXG5cdFx0XHRcdHNob3dTY2FsZTogZmFsc2UsXG5cdFx0XHRcdHNob3J0UmVmTnVtYmVyOiBvSW50ZXJhY3RpdmVDaGFydC5kYXRhKFwic2NhbGVmYWN0b3JcIilcblx0XHRcdH0pO1xuXHRcdFx0Y29uc3Qgb0ludGVybmFsTW9kZWxDb250ZXh0ID0gb1ZpZXcuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKSBhcyBJbnRlcm5hbE1vZGVsQ29udGV4dDtcblx0XHRcdGNvbnN0IHNjYWxlID0gZml4ZWRJbnRlZ2VyLmdldFNjYWxlKCkgPyBmaXhlZEludGVnZXIuZ2V0U2NhbGUoKSA6IFwiXCI7XG5cdFx0XHRvSW50ZXJuYWxNb2RlbENvbnRleHQuc2V0UHJvcGVydHkoYHNjYWxlZmFjdG9yLyR7c0luZm9QYXRofWAsIHNjYWxlKTtcblx0XHR9XG5cdH0sXG5cblx0LyoqXG5cdCAqXG5cdCAqIEBwYXJhbSBzMThuTWVzc2FnZVRpdGxlIFRleHQgb2YgdGhlIGVycm9yIG1lc3NhZ2UgdGl0bGUuXG5cdCAqIEBwYXJhbSBzMThuTWVzc2FnZSBUZXh0IG9mIHRoZSBlcnJvciBtZXNzYWdlIGRlc2NyaXB0aW9uLlxuXHQgKiBAcGFyYW0gc0luZm9QYXRoIEludGVybmFsIG1vZGVsIGNvbnRleHQgcGF0aCB0byBzdG9yZSBpbmZvLlxuXHQgKiBAcGFyYW0gb1ZpZXcgSW5zdGFuY2Ugb2YgdGhlIHZpZXcuXG5cdCAqL1xuXHRhcHBseUVycm9yTWVzc2FnZUFuZFRpdGxlOiBmdW5jdGlvbiAoczE4bk1lc3NhZ2VUaXRsZTogc3RyaW5nLCBzMThuTWVzc2FnZTogc3RyaW5nLCBzSW5mb1BhdGg6IHN0cmluZywgb1ZpZXc6IFZpZXcpOiB2b2lkIHtcblx0XHRjb25zdCBvSW50ZXJuYWxNb2RlbENvbnRleHQgPSBvVmlldy5nZXRCaW5kaW5nQ29udGV4dChcImludGVybmFsXCIpIGFzIEludGVybmFsTW9kZWxDb250ZXh0O1xuXHRcdG9JbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShzSW5mb1BhdGgsIHt9KTtcblx0XHRvSW50ZXJuYWxNb2RlbENvbnRleHQuc2V0UHJvcGVydHkoc0luZm9QYXRoLCB7XG5cdFx0XHRlcnJvck1lc3NhZ2VUaXRsZTogczE4bk1lc3NhZ2VUaXRsZSxcblx0XHRcdGVycm9yTWVzc2FnZTogczE4bk1lc3NhZ2UsXG5cdFx0XHRzaG93RXJyb3I6IHRydWVcblx0XHR9KTtcblx0fSxcblx0LyoqXG5cdCAqIENoZWNrcyBpZiBtdWx0aXBsZSB1bml0cyBhcmUgcHJlc2VudC5cblx0ICogQHBhcmFtIG9Db250ZXh0cyBDb250ZXh0cyBvZiB0aGUgVmlzdWFsRmlsdGVyXG5cdCAqIEBwYXJhbSBzVW5pdGZpZWxkIFRoZSBwYXRoIG9mIHRoZSB1bml0IGZpZWxkXG5cdCAqIEByZXR1cm5zIFJldHVybnMgaWYgbXVsdGlwbGUgdW5pdHMgYXJlIGNvbmZpZ3VyZWQgb3Igbm90XG5cdCAqL1xuXHRjaGVja011bGl0VW5pdDogZnVuY3Rpb24gKG9Db250ZXh0czogQ29udGV4dFtdLCBzVW5pdGZpZWxkOiBzdHJpbmcpOiBib29sZWFuIHtcblx0XHRjb25zdCBhRGF0YTogbnVtYmVyW10gPSBbXTtcblx0XHRpZiAob0NvbnRleHRzICYmIHNVbml0ZmllbGQpIHtcblx0XHRcdGZvciAoY29uc3QgaXRlbSBvZiBvQ29udGV4dHMpIHtcblx0XHRcdFx0Y29uc3QgYUNvbnRleHREYXRhID0gaXRlbSAmJiBpdGVtLmdldE9iamVjdCgpO1xuXHRcdFx0XHRhRGF0YS5wdXNoKGFDb250ZXh0RGF0YVtzVW5pdGZpZWxkXSk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiAhIWFEYXRhLnJlZHVjZShmdW5jdGlvbiAoZGF0YTogbnVtYmVyLCBrZXk6IG51bWJlcikge1xuXHRcdFx0cmV0dXJuIGRhdGEgPT09IGtleSA/IGRhdGEgOiBOYU47XG5cdFx0fSk7XG5cdH0sXG5cblx0LyoqXG5cdCAqIFNldHMgYW4gZXJyb3IgbWVzc2FnZSBpZiBtdWx0aXBsZSBVT00gYXJlIHByZXNlbnQuXG5cdCAqIEBwYXJhbSBvRGF0YSBEYXRhIG9mIHRoZSBWaXN1YWxGaWx0ZXIgY29udHJvbFxuXHQgKiBAcGFyYW0gb0ludGVyYWN0aXZlQ2hhcnQgSW50ZXJhY3RpdmVDaGFydCBpbiB0aGUgVmlzdWFsRmlsdGVyIGNvbnRyb2xcblx0ICogQHBhcmFtIHNJbmZvUGF0aCBJbnRlcm5hbCBtb2RlbCBjb250ZXh0IHBhdGggdG8gc3RvcmUgaW5mby5cblx0ICogQHBhcmFtIG9SZXNvdXJjZUJ1bmRsZSBUaGUgcmVzb3VyY2UgYnVuZGxlXG5cdCAqIEBwYXJhbSBvVmlldyBJbnN0YW5jZSBvZiB0aGUgdmlld1xuXHQgKi9cblx0c2V0TXVsdGlVT01NZXNzYWdlOiBmdW5jdGlvbiAoXG5cdFx0b0RhdGE6IENvbnRleHRbXSxcblx0XHRvSW50ZXJhY3RpdmVDaGFydDogSW50ZXJhY3RpdmVEb251dENoYXJ0IHwgSW50ZXJhY3RpdmVMaW5lQ2hhcnQgfCBJbnRlcmFjdGl2ZUJhckNoYXJ0LFxuXHRcdHNJbmZvUGF0aDogc3RyaW5nLFxuXHRcdG9SZXNvdXJjZUJ1bmRsZTogUmVzb3VyY2VCdW5kbGUsXG5cdFx0b1ZpZXc6IFZpZXdcblx0KTogdm9pZCB7XG5cdFx0Y29uc3QgdlVPTSA9IG9JbnRlcmFjdGl2ZUNoYXJ0LmRhdGEoXCJ1b21cIik7XG5cdFx0Y29uc3Qgc0lzQ3VycmVuY3kgPSB2VU9NICYmIHZVT01bXCJJU09DdXJyZW5jeVwiXSAmJiB2VU9NW1wiSVNPQ3VycmVuY3lcIl0uJFBhdGg7XG5cdFx0Y29uc3Qgc0lzVW5pdCA9IHZVT00gJiYgdlVPTVtcIlVuaXRcIl0gJiYgdlVPTVtcIlVuaXRcIl0uJFBhdGg7XG5cdFx0Y29uc3Qgc1VuaXRmaWVsZCA9IHNJc0N1cnJlbmN5IHx8IHNJc1VuaXQ7XG5cdFx0bGV0IHMxOG5NZXNzYWdlVGl0bGUsIHMxOG5NZXNzYWdlO1xuXHRcdGlmIChzVW5pdGZpZWxkKSB7XG5cdFx0XHRpZiAoIXRoaXMuY2hlY2tNdWxpdFVuaXQob0RhdGEsIHNVbml0ZmllbGQpKSB7XG5cdFx0XHRcdGlmIChzSXNDdXJyZW5jeSkge1xuXHRcdFx0XHRcdHMxOG5NZXNzYWdlVGl0bGUgPSBvUmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fVklTVUFMX0ZJTFRFUlNfRVJST1JfTUVTU0FHRV9USVRMRVwiKTtcblx0XHRcdFx0XHRzMThuTWVzc2FnZSA9IG9SZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9WSVNVQUxfRklMVEVSU19NVUxUSVBMRV9DVVJSRU5DWVwiLCBzVW5pdGZpZWxkKTtcblx0XHRcdFx0XHR0aGlzLmFwcGx5RXJyb3JNZXNzYWdlQW5kVGl0bGUoczE4bk1lc3NhZ2VUaXRsZSwgczE4bk1lc3NhZ2UsIHNJbmZvUGF0aCwgb1ZpZXcpO1xuXHRcdFx0XHRcdExvZy53YXJuaW5nKGBGaWx0ZXIgaXMgc2V0IGZvciBtdWx0aXBsZSBDdXJyZW5jeSBmb3Ike3NVbml0ZmllbGR9YCk7XG5cdFx0XHRcdH0gZWxzZSBpZiAoc0lzVW5pdCkge1xuXHRcdFx0XHRcdHMxOG5NZXNzYWdlVGl0bGUgPSBvUmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fVklTVUFMX0ZJTFRFUlNfRVJST1JfTUVTU0FHRV9USVRMRVwiKTtcblx0XHRcdFx0XHRzMThuTWVzc2FnZSA9IG9SZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9WSVNVQUxfRklMVEVSU19NVUxUSVBMRV9VTklUXCIsIHNVbml0ZmllbGQpO1xuXHRcdFx0XHRcdHRoaXMuYXBwbHlFcnJvck1lc3NhZ2VBbmRUaXRsZShzMThuTWVzc2FnZVRpdGxlLCBzMThuTWVzc2FnZSwgc0luZm9QYXRoLCBvVmlldyk7XG5cdFx0XHRcdFx0TG9nLndhcm5pbmcoYEZpbHRlciBpcyBzZXQgZm9yIG11bHRpcGxlIFVPTXMgZm9yJHtzVW5pdGZpZWxkfWApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9LFxuXG5cdC8qKlxuXHQgKiBTZXRzIGFuIGVycm9yIG1lc3NhZ2UgaWYgcmVzcG9uc2UgZGF0YSBpcyBlbXB0eS5cblx0ICogQHBhcmFtIHNJbmZvUGF0aCBJbnRlcm5hbCBtb2RlbCBjb250ZXh0IHBhdGggdG8gc3RvcmUgaW5mby5cblx0ICogQHBhcmFtIG9SZXNvdXJjZUJ1bmRsZSBUaGUgcmVzb3VyY2UgYnVuZGxlXG5cdCAqIEBwYXJhbSBvVmlldyBJbnN0YW5jZSBvZiB0aGUgdmlld1xuXHQgKi9cblx0c2V0Tm9EYXRhTWVzc2FnZTogZnVuY3Rpb24gKHNJbmZvUGF0aDogc3RyaW5nLCBvUmVzb3VyY2VCdW5kbGU6IFJlc291cmNlQnVuZGxlLCBvVmlldzogVmlldyk6IHZvaWQge1xuXHRcdGNvbnN0IHMxOG5NZXNzYWdlVGl0bGUgPSBvUmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fVklTVUFMX0ZJTFRFUlNfRVJST1JfTUVTU0FHRV9USVRMRVwiKTtcblx0XHRjb25zdCBzMThuTWVzc2FnZSA9IG9SZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9WSVNVQUxfRklMVEVSX05PX0RBVEFfVEVYVFwiKTtcblx0XHR0aGlzLmFwcGx5RXJyb3JNZXNzYWdlQW5kVGl0bGUoczE4bk1lc3NhZ2VUaXRsZSwgczE4bk1lc3NhZ2UsIHNJbmZvUGF0aCwgb1ZpZXcpO1xuXHR9LFxuXHRjb252ZXJ0RmlsdGVyQ29uZGlvbnM6IGZ1bmN0aW9uIChvRmlsdGVyQ29uZGl0aW9uczogUmVjb3JkPHN0cmluZywgRmlsdGVyQ29uZGl0aW9uc1tdPik6IFJlY29yZDxzdHJpbmcsIENvbmRpdGlvbk9iamVjdFtdPiB7XG5cdFx0Y29uc3Qgb0NvbnZlcnRlZENvbmRpdGlvbnM6IFJlY29yZDxzdHJpbmcsIENvbmRpdGlvbk9iamVjdFtdPiA9IHt9O1xuXHRcdE9iamVjdC5rZXlzKG9GaWx0ZXJDb25kaXRpb25zKS5mb3JFYWNoKGZ1bmN0aW9uIChzS2V5OiBzdHJpbmcpIHtcblx0XHRcdGNvbnN0IGFDb252ZXJ0ZWRDb25kaXRpb25zOiBDb25kaXRpb25PYmplY3RbXSA9IFtdO1xuXHRcdFx0Y29uc3QgYUNvbmRpdGlvbnMgPSBvRmlsdGVyQ29uZGl0aW9uc1tzS2V5XTtcblx0XHRcdGZvciAoY29uc3QgaXRlbSBvZiBhQ29uZGl0aW9ucykge1xuXHRcdFx0XHRjb25zdCB2YWx1ZXMgPSBpdGVtLnZhbHVlMiA/IFtpdGVtLnZhbHVlMSwgaXRlbS52YWx1ZTJdIDogW2l0ZW0udmFsdWUxXTtcblx0XHRcdFx0YUNvbnZlcnRlZENvbmRpdGlvbnMucHVzaChDb25kaXRpb24uY3JlYXRlQ29uZGl0aW9uKGl0ZW0ub3BlcmF0b3IsIHZhbHVlcywgbnVsbCwgbnVsbCwgXCJWYWxpZGF0ZWRcIiBhcyBDb25kaXRpb25WYWxpZGF0ZWQpKTtcblx0XHRcdH1cblx0XHRcdGlmIChhQ29udmVydGVkQ29uZGl0aW9ucy5sZW5ndGgpIHtcblx0XHRcdFx0b0NvbnZlcnRlZENvbmRpdGlvbnNbc0tleV0gPSBhQ29udmVydGVkQ29uZGl0aW9ucztcblx0XHRcdH1cblx0XHR9KTtcblx0XHRyZXR1cm4gb0NvbnZlcnRlZENvbmRpdGlvbnM7XG5cdH0sXG5cdGdldEN1c3RvbUNvbmRpdGlvbnM6IGZ1bmN0aW9uIChcblx0XHRSYW5nZTogTWV0YU1vZGVsVHlwZTxTZWxlY3Rpb25SYW5nZVR5cGU+LFxuXHRcdG9WYWxpZFByb3BlcnR5OiBNZXRhTW9kZWxQcm9wZXJ0eSxcblx0XHRzUHJvcGVydHlOYW1lOiBzdHJpbmdcblx0KTogeyB2YWx1ZTI/OiB1bmtub3duOyB2YWx1ZTE6IHVua25vd247IG9wZXJhdG9yPzogc3RyaW5nIHwgbnVsbDsgcGF0aDogc3RyaW5nIH0ge1xuXHRcdGxldCB2YWx1ZTEsIHZhbHVlMjtcblx0XHRpZiAob1ZhbGlkUHJvcGVydHkuJFR5cGUgPT09IFwiRWRtLkRhdGVUaW1lT2Zmc2V0XCIpIHtcblx0XHRcdHZhbHVlMSA9IHRoaXMuX3BhcnNlRGF0ZVRpbWUoXG5cdFx0XHRcdGdldFR5cGVDb21wbGlhbnRWYWx1ZSh0aGlzLl9mb3JtYXREYXRlVGltZShSYW5nZS5Mb3cpLCBvVmFsaWRQcm9wZXJ0eS4kVHlwZSwgUmFuZ2UuT3B0aW9uKSBhcyB1bmtub3duIGFzIHN0cmluZyB8IERhdGVcblx0XHRcdCk7XG5cdFx0XHR2YWx1ZTIgPSBSYW5nZS5IaWdoXG5cdFx0XHRcdD8gdGhpcy5fcGFyc2VEYXRlVGltZShcblx0XHRcdFx0XHRcdGdldFR5cGVDb21wbGlhbnRWYWx1ZSh0aGlzLl9mb3JtYXREYXRlVGltZShSYW5nZS5IaWdoKSwgb1ZhbGlkUHJvcGVydHkuJFR5cGUsIFJhbmdlLk9wdGlvbikgYXMgdW5rbm93biBhc1xuXHRcdFx0XHRcdFx0XHR8IHN0cmluZ1xuXHRcdFx0XHRcdFx0XHR8IERhdGVcblx0XHRcdFx0ICApXG5cdFx0XHRcdDogbnVsbDtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dmFsdWUxID0gUmFuZ2UuTG93O1xuXHRcdFx0dmFsdWUyID0gUmFuZ2UuSGlnaCA/IFJhbmdlLkhpZ2ggOiBudWxsO1xuXHRcdH1cblx0XHRyZXR1cm4ge1xuXHRcdFx0b3BlcmF0b3I6IFJhbmdlLk9wdGlvblxuXHRcdFx0XHQ/IGdldFJhbmdlUHJvcGVydHkoKFJhbmdlLk9wdGlvbiBhcyB1bmtub3duIGFzIE1ldGFNb2RlbEVudW08U2VsZWN0aW9uUmFuZ2VPcHRpb25UeXBlPikuJEVudW1NZW1iZXIgfHwgUmFuZ2UuT3B0aW9uKVxuXHRcdFx0XHQ6IG51bGwsXG5cdFx0XHR2YWx1ZTE6IHZhbHVlMSxcblx0XHRcdHZhbHVlMjogdmFsdWUyLFxuXHRcdFx0cGF0aDogc1Byb3BlcnR5TmFtZVxuXHRcdH07XG5cdH0sXG5cdF9wYXJzZURhdGVUaW1lOiBmdW5jdGlvbiAoc1ZhbHVlOiBzdHJpbmcgfCBEYXRlKTogc3RyaW5nIHwgRGF0ZSB8IFVJNURhdGUge1xuXHRcdHJldHVybiB0aGlzLl9nZXREYXRlVGltZVR5cGVJbnN0YW5jZSgpLnBhcnNlVmFsdWUoc1ZhbHVlLCBcInN0cmluZ1wiKTtcblx0fSxcblx0X2Zvcm1hdERhdGVUaW1lOiBmdW5jdGlvbiAoc1ZhbHVlOiBzdHJpbmcgfCBEYXRlKTogc3RyaW5nIHwgRGF0ZSB8IFVJNURhdGUge1xuXHRcdHJldHVybiB0aGlzLl9nZXREYXRlVGltZVR5cGVJbnN0YW5jZSgpLmZvcm1hdFZhbHVlKHNWYWx1ZSwgXCJzdHJpbmdcIik7XG5cdH0sXG5cdF9nZXREYXRlVGltZVR5cGVJbnN0YW5jZTogZnVuY3Rpb24gKCk6IERhdGVUaW1lT2Zmc2V0IHtcblx0XHRyZXR1cm4gbmV3IERhdGVUaW1lT2Zmc2V0KHsgcGF0dGVybjogXCJ5eXl5LU1NLWRkVEhIOm1tOnNzWlwiLCBjYWxlbmRhclR5cGU6IFwiR3JlZ29yaWFuXCIgfSwgeyBWNDogdHJ1ZSB9KTtcblx0fSxcblxuXHQvKipcblx0ICogR2V0IGVycm9yIGluZm8gd2hlbiByZXF1aXJlZCBpblBhcmFtZXRlcnMgb3IgcmVxdWlyZWQgZmlsdGVycyBhcmUgbm90IGF2YWlsYWJsZS5cblx0ICogQHBhcmFtIG5vdE1hdGNoZWRDb25kaXRpb25zIFByb3BlcnR5IG5hbWVzKGluUGFyYW1ldGVycyBvciByZXF1aXJlZCBmaWx0ZXJzKSBmb3Igd2hpY2ggdmFsdWVzIGFyZSBub3QgYXZhaWxhYmxlIC5cblx0ICogQHBhcmFtIHJlc291cmNlQnVuZGxlIFJlc291cmNlQnVuZGxlIGZvciB0cmFuc2xhdGVkIHRleHRzLlxuXHQgKiBAcGFyYW0gZW50aXR5U2V0UGF0aCBFbnRpdHlTZXQgUGF0aCBmb3IgcHJvcGVydHkgbGFiZWwgYW5ub3RhdGlvbi5cblx0ICogQHBhcmFtIG1ldGFNb2RlbCBEZWZhdWx0IG1ldGFtb2RlbC5cblx0ICogQHJldHVybnMgRXJyb3IgaW5mbyBjb250YWluaW5nIHRleHRzIGZvciB0aXRsZSBhbmQgbWVzc2FnZS5cblx0ICovXG5cdGdldEVycm9ySW5mb0Zvck5vSW5pdGlhbE92ZXJsYXk6IGZ1bmN0aW9uIChcblx0XHRub3RNYXRjaGVkQ29uZGl0aW9uczogc3RyaW5nW10sXG5cdFx0cmVzb3VyY2VCdW5kbGU6IFJlc291cmNlQnVuZGxlLFxuXHRcdGVudGl0eVNldFBhdGg6IHN0cmluZyxcblx0XHRtZXRhTW9kZWw6IE1ldGFNb2RlbFxuXHQpOiB7IHNob3dFcnJvcjogYm9vbGVhbjsgZXJyb3JNZXNzYWdlVGl0bGU6IHN0cmluZzsgZXJyb3JNZXNzYWdlOiBzdHJpbmcgfSB8IHVuZGVmaW5lZCB7XG5cdFx0bGV0IHJldDtcblx0XHRpZiAobm90TWF0Y2hlZENvbmRpdGlvbnMubGVuZ3RoID4gMSkge1xuXHRcdFx0cmV0ID0ge1xuXHRcdFx0XHRzaG93RXJyb3I6IHRydWUsXG5cdFx0XHRcdGVycm9yTWVzc2FnZVRpdGxlOiByZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9WSVNVQUxfRklMVEVSU19FUlJPUl9NRVNTQUdFX1RJVExFXCIpLFxuXHRcdFx0XHRlcnJvck1lc3NhZ2U6IHJlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX1ZJU1VBTF9GSUxURVJTX1BST1ZJREVfRklMVEVSX1ZBTF9NVUxUSVBMRVZGXCIpXG5cdFx0XHR9O1xuXHRcdH0gZWxzZSBpZiAobm90TWF0Y2hlZENvbmRpdGlvbnMubGVuZ3RoID09PSAxKSB7XG5cdFx0XHRjb25zdCBsYWJlbCA9XG5cdFx0XHRcdChtZXRhTW9kZWwuZ2V0T2JqZWN0KGAke2VudGl0eVNldFBhdGh9LyR7bm90TWF0Y2hlZENvbmRpdGlvbnNbMF19QGNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5MYWJlbGApIGFzIHN0cmluZykgfHxcblx0XHRcdFx0bm90TWF0Y2hlZENvbmRpdGlvbnNbMF07XG5cdFx0XHRyZXQgPSB7XG5cdFx0XHRcdHNob3dFcnJvcjogdHJ1ZSxcblx0XHRcdFx0ZXJyb3JNZXNzYWdlVGl0bGU6IHJlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX1ZJU1VBTF9GSUxURVJTX0VSUk9SX01FU1NBR0VfVElUTEVcIiksXG5cdFx0XHRcdGVycm9yTWVzc2FnZTogcmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fVklTVUFMX0ZJTFRFUlNfUFJPVklERV9GSUxURVJfVkFMX1NJTkdMRVZGXCIsIFtsYWJlbF0pXG5cdFx0XHR9O1xuXHRcdH1cblx0XHRyZXR1cm4gcmV0O1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBFbmFibGVzIG9yIGRpc2FibGVzIHRoZSBjaGFydCBiaW5kaW5nIGZvciB2aXN1YWwgZmlsdGVycy5cblx0ICogQHBhcmFtIHZpc3VhbEZpbHRlcnMgVmlzdWFsIGZpbHRlcnMgdG8gYmUgZW5hYmxlZCBvciBkaXNhYmxlZFxuXHQgKiBAcGFyYW0gZW5hYmxlIFdoZXRoZXIgdG8gZW5hYmxlIG9yIGRpc2FibGUgdGhlIGNoYXJ0IGJpbmRpbmdcblx0ICogQHBhcmFtIGRpZmZTdGF0ZSBPcHRpb25hbCBwYXJhbWV0ZXIgdG8gc3BlY2lmeSB0aGUgY2hhbmdlZCBmaWx0ZXIgZmllbGQgcGF0aHMsIGluY2FzZSBvZiBlbmFibGVtZW50LlxuXHQgKi9cblx0ZW5hYmxlQ2hhcnRCaW5kaW5nKHZpc3VhbEZpbHRlcnM6IFJlY29yZDxzdHJpbmcsIENvbnRyb2w+LCBlbmFibGU6IGJvb2xlYW4sIGRpZmZTdGF0ZT86IEV4dGVybmFsU3RhdGVUeXBlKTogdm9pZCB7XG5cdFx0Y29uc3QgY2hhbmdlZEZpbHRlckZpZWxkUGF0aHMgPSBkaWZmU3RhdGU/LmZpbHRlciA/IE9iamVjdC5rZXlzKGRpZmZTdGF0ZS5maWx0ZXIpIDogW107XG5cdFx0Zm9yIChjb25zdCB2ZklkIGluIHZpc3VhbEZpbHRlcnMpIHtcblx0XHRcdGNvbnN0IHZpc3VhbEZpbHRlckJCID0gdmlzdWFsRmlsdGVyc1t2ZklkXTtcblx0XHRcdGlmICh2aXN1YWxGaWx0ZXJCQiAmJiB2aXN1YWxGaWx0ZXJCQi5pc0E8VmlzdWFsRmlsdGVyPihcInNhcC5mZS5tYWNyb3MudmlzdWFsZmlsdGVycy5WaXN1YWxGaWx0ZXJcIikpIHtcblx0XHRcdFx0dmlzdWFsRmlsdGVyQkIuc2V0RW5hYmxlQ2hhcnRCaW5kaW5nKGVuYWJsZSwgY2hhbmdlZEZpbHRlckZpZWxkUGF0aHMpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0TG9nLmVycm9yKGBDb250cm9sIHdpdGggaWQgJHt2ZklkfSBpcyBub3QgYSBWaXN1YWxGaWx0ZXJgKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IFZpc3VhbEZpbHRlclV0aWxzO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7RUF3QkEsTUFBTUEsaUJBQWlCLEdBQUc7SUFDekI7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7SUFDQ0MsMkJBQTJCLEVBQUUsU0FBQUEsQ0FDNUJDLGlCQUFxRixFQUNyRkMsS0FBVyxFQUNYQyxLQUFhLEVBQ2JDLFNBQWlCLEVBQ1Y7TUFDUCxNQUFNQyxLQUFLLEdBQUcsRUFBRTtNQUNoQixNQUFNQyxRQUFRLEdBQUdMLGlCQUFpQixDQUFDTSxJQUFJLENBQUMsU0FBUyxDQUFDO01BQ2xELE1BQU1DLHFCQUFxQixHQUFHTixLQUFLLENBQUNPLGlCQUFpQixDQUFDLFVBQVUsQ0FBeUI7TUFDekYsTUFBTUMsWUFBWSxHQUNmVCxpQkFBaUIsQ0FBMEJVLFNBQVMsSUFBS1YsaUJBQWlCLENBQTBCVSxTQUFTLENBQUMsQ0FBQyxJQUMvR1YsaUJBQWlCLENBQXlCVyxPQUFPLElBQUtYLGlCQUFpQixDQUF5QlcsT0FBTyxDQUFDLENBQUUsSUFDMUdYLGlCQUFpQixDQUEyQlksV0FBVyxJQUFLWixpQkFBaUIsQ0FBMkJZLFdBQVcsQ0FBQyxDQUFFO01BQ3pILEtBQUssTUFBTUMsSUFBSSxJQUFJSixZQUFZLEVBQUU7UUFDaENMLEtBQUssQ0FBQ1UsSUFBSSxDQUFDRCxJQUFJLENBQUNMLGlCQUFpQixDQUFDLENBQUMsQ0FBRU8sU0FBUyxDQUFDLENBQUMsQ0FBQztNQUNs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
|
|
@@ -4,6 +4,8 @@ import type ResourceBundle from "sap/base/i18n/ResourceBundle";
|
|
|
4
4
|
import type { InternalModelContext } from "sap/fe/core/helpers/ModelHelper";
|
|
5
5
|
import type { FilterConditions } from "sap/fe/macros/filterBar/FilterHelper";
|
|
6
6
|
import { getRangeProperty, getTypeCompliantValue } from "sap/fe/macros/filterBar/FilterHelper";
|
|
7
|
+
import type { ExternalStateType } from "sap/fe/macros/valuehelp/ValueHelpDelegate";
|
|
8
|
+
import type VisualFilter from "sap/fe/macros/visualfilters/VisualFilter";
|
|
7
9
|
import type Title from "sap/m/Title";
|
|
8
10
|
import type InteractiveBarChart from "sap/suite/ui/microchart/InteractiveBarChart";
|
|
9
11
|
import type InteractiveDonutChart from "sap/suite/ui/microchart/InteractiveDonutChart";
|
|
@@ -390,6 +392,24 @@ const VisualFilterUtils = {
|
|
|
390
392
|
};
|
|
391
393
|
}
|
|
392
394
|
return ret;
|
|
395
|
+
},
|
|
396
|
+
|
|
397
|
+
/**
|
|
398
|
+
* Enables or disables the chart binding for visual filters.
|
|
399
|
+
* @param visualFilters Visual filters to be enabled or disabled
|
|
400
|
+
* @param enable Whether to enable or disable the chart binding
|
|
401
|
+
* @param diffState Optional parameter to specify the changed filter field paths, incase of enablement.
|
|
402
|
+
*/
|
|
403
|
+
enableChartBinding(visualFilters: Record<string, Control>, enable: boolean, diffState?: ExternalStateType): void {
|
|
404
|
+
const changedFilterFieldPaths = diffState?.filter ? Object.keys(diffState.filter) : [];
|
|
405
|
+
for (const vfId in visualFilters) {
|
|
406
|
+
const visualFilterBB = visualFilters[vfId];
|
|
407
|
+
if (visualFilterBB && visualFilterBB.isA<VisualFilter>("sap.fe.macros.visualfilters.VisualFilter")) {
|
|
408
|
+
visualFilterBB.setEnableChartBinding(enable, changedFilterFieldPaths);
|
|
409
|
+
} else {
|
|
410
|
+
Log.error(`Control with id ${vfId} is not a VisualFilter`);
|
|
411
|
+
}
|
|
412
|
+
}
|
|
393
413
|
}
|
|
394
414
|
};
|
|
395
415
|
|
|
@@ -234,7 +234,7 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/base/ClassSupport", "sap/fe
|
|
|
234
234
|
});
|
|
235
235
|
return _jsx(Dialog, {
|
|
236
236
|
id: generate(["CreateDialog", metaPath]),
|
|
237
|
-
title: resourceModel.getText("C_TRANSACTION_HELPER_SAPFE_ACTION_CREATE"),
|
|
237
|
+
title: resourceModel.getText("C_TRANSACTION_HELPER_SAPFE_ACTION_CREATE", undefined, objectPath.targetEntitySet?.name),
|
|
238
238
|
afterOpen: () => {
|
|
239
239
|
this.afterOpen();
|
|
240
240
|
},
|
|
@@ -414,4 +414,4 @@ sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/base/ClassSupport", "sap/fe
|
|
|
414
414
|
_exports = CreateDialog;
|
|
415
415
|
return _exports;
|
|
416
416
|
}, false);
|
|
417
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDb250ZXh0VXBkYXRlRGlhbG9nRXZlbnRQcm92aWRlciIsIl9kZWMiLCJkZWZpbmVVSTVDbGFzcyIsIl9kZWMyIiwiZXZlbnQiLCJfY2xhc3MiLCJfY2xhc3MyIiwiX0V2ZW50UHJvdmlkZXIiLCJfdGhpcyIsIl9sZW4iLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJhcmdzIiwiQXJyYXkiLCJfa2V5IiwiY2FsbCIsIl9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IiwiX2Rlc2NyaXB0b3IiLCJfaW5oZXJpdHNMb29zZSIsIkV2ZW50UHJvdmlkZXIiLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIiwicHJvdG90eXBlIiwiY29uZmlndXJhYmxlIiwiZW51bWVyYWJsZSIsIndyaXRhYmxlIiwiaW5pdGlhbGl6ZXIiLCJDcmVhdGVEaWFsb2ciLCJjb250ZXh0VG9VcGRhdGUiLCJmaWVsZE5hbWVzIiwiYXBwQ29tcG9uZW50IiwibW9kZSIsInBhcmVudENvbnRyb2wiLCJhY3Rpb25QYXJhbWV0ZXJJbmZvcyIsImV2ZW50UHJvdmlkZXIiLCJtb2RlbCIsImdldE1vZGVsIiwibWV0YU1vZGVsIiwiZ2V0TWV0YU1vZGVsIiwibWV0YVBhdGgiLCJnZXRNZXRhUGF0aCIsImdldFBhdGgiLCJyZXF1aXJlZEZpZWxkTmFtZXMiLCJnZXRSZXF1aXJlZFByb3BlcnRpZXNGcm9tSW5zZXJ0UmVzdHJpY3Rpb25zIiwiX2V4cG9ydHMiLCJfcHJvdG8iLCJhdHRhY2hFeGl0RGlhbG9nIiwib0RhdGEiLCJmbkZ1bmN0aW9uIiwib0xpc3RlbmVyIiwiYXR0YWNoRXZlbnQiLCJmaXJlRXhpdERpYWxvZyIsImFjY2VwdCIsImZpcmVFdmVudCIsImdldEVkaXRNb2RlIiwicHJvcGVydHkiLCJhbm5vdGF0aW9ucyIsIkNvbW1vbiIsIkZpZWxkQ29udHJvbCIsImZpZWxkQ29udHJvbCIsIiRFbnVtTWVtYmVyIiwiZ2V0RmllbGRWSFR5cGVBaGVhZCIsImZpZWxkTmFtZSIsInByb3BlcnR5T2JqZWN0UGF0aCIsIl9qc3giLCJQb3BvdmVyIiwiY2hpbGRyZW4iLCJNVGFibGUiLCJpZCIsImdlbmVyYXRlIiwiY2FzZVNlbnNpdGl2ZSIsInVzZUNhc2VTZW5zaXRpdmVGaWx0ZXJSZXF1ZXN0cyIsImNvbnZlcnRlZFR5cGVzIiwiZW50aXR5Q29udGFpbmVyIiwiQ2FwYWJpbGl0aWVzIiwiRmlsdGVyRnVuY3Rpb25zIiwidXNlQXNWYWx1ZUhlbHAiLCJWYWx1ZUxpc3RXaXRoRml4ZWRWYWx1ZXMiLCJnZXRGaWVsZFZIRGlhbG9nIiwidmFsdWVPZiIsIlZIRGlhbG9nIiwidW5kZWZpbmVkIiwiZ2V0RmllbGRWYWx1ZUhlbHAiLCJoYXNWYWx1ZUhlbHAiLCJ2aERlbGVnYXRlIiwibmFtZSIsInBheWxvYWQiLCJwcm9wZXJ0eVBhdGgiLCJnZXRUYXJnZXRPYmplY3RQYXRoIiwicXVhbGlmaWVycyIsInZhbHVlSGVscFF1YWxpZmllciIsIlZhbHVlSGVscCIsImRlbGVnYXRlIiwidmFsaWRhdGVJbnB1dCIsInJlcXVpcmVzVmFsaWRhdGlvbiIsInR5cGVhaGVhZCIsImRpYWxvZyIsImNyZWF0ZUZvcm1FbGVtZW50IiwibGlzdE9iamVjdFBhdGgiLCJsaXN0TWV0YVBhdGgiLCJlbmhhbmNlRGF0YU1vZGVsUGF0aCIsInRhcmdldE9iamVjdCIsInByb3BlcnR5TWV0YUNvbnRleHQiLCJjcmVhdGVCaW5kaW5nQ29udGV4dCIsInByb3BlcnR5UGxhY2VIb2xkZXJNZXRhQ29udGV4dCIsImZpZWxkIiwiTURDRmllbGQiLCJyZXRyaWV2ZVRleHRGcm9tVmFsdWVMaXN0IiwidGFyZ2V0RW50aXR5VHlwZSIsInZhbHVlIiwiQW5ub3RhdGlvbkhlbHBlciIsImZvcm1hdCIsImdldE9iamVjdCIsImNvbnRleHQiLCJwbGFjZWhvbGRlciIsIndpZHRoIiwicmVxdWlyZWQiLCJjb21waWxlRXhwcmVzc2lvbiIsIm9yIiwiaXNSZXF1aXJlZEV4cHJlc3Npb24iLCJpbmNsdWRlcyIsImRpc3BsYXkiLCJGaWVsZEhlbHBlciIsImdldEFQRGlhbG9nRGlzcGxheUZvcm1hdCIsInZhbHVlSGVscCIsImVkaXRNb2RlIiwiZGVwZW5kZW50cyIsImN1c3RvbURhdGEiLCJDdXN0b21EYXRhIiwibGl2ZUNoYW5nZSIsImhhbmRsZUxpdmVDaGFuZ2UiLCJiaW5kIiwiY2hhbmdlIiwiaGFuZGxlQ2hhbmdlIiwicHVzaCIsImlzTXVsdGlWYWx1ZSIsImdldFZhbHVlIiwidmFsaWRhdGlvblByb21pc2UiLCJoYXNFcnJvciIsIl9qc3hzIiwiX0ZyYWdtZW50IiwiTGFiZWwiLCJ0ZXh0IiwiYWZ0ZXJPcGVuIiwiZmlyc3RGaWVsZCIsImZvY3VzSW5mbyIsImdldEZvY3VzSW5mbyIsInRhcmdldEluZm8iLCJzaWxlbnQiLCJmb2N1cyIsImNyZWF0ZURpYWxvZyIsInJlc291cmNlTW9kZWwiLCJnZXRSZXNvdXJjZU1vZGVsIiwibWV0YUNvbnRleHQiLCJvYmplY3RQYXRoIiwiZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzIiwiYmVnaW5CdXR0b25MYWJlbCIsImdldFRleHQiLCJlbmRCdXR0b24iLCJCdXR0b24iLCJwcmVzcyIsIm9uQ2FuY2VsIiwiRGlhbG9nIiwidGl0bGUiLCJyZXNpemFibGUiLCJkcmFnZ2FibGUiLCJpbml0aWFsRm9jdXMiLCJiZWdpbkJ1dHRvbiIsIm9uT0siLCJ0eXBlIiwiY29udGVudCIsIlNpbXBsZUZvcm0iLCJtYXAiLCJkaXNwbGF5RXJyb3JNZXNzYWdlcyIsIm1lc3NhZ2VzIiwiY29udGV4dE1ldGFQYXRoIiwibWVzc2FnZSIsInRhcmdldCIsImdldFRhcmdldHMiLCJ0YXJnZXRNZXRhUGF0aCIsInBhcmFtZXRlckluZm8iLCJmaW5kIiwiYWN0aW9uUGFyYW1ldGVySW5mbyIsInNldFZhbHVlU3RhdGUiLCJnZXRUeXBlIiwiTWVzc2FnZVR5cGUiLCJFcnJvciIsInNldFZhbHVlU3RhdGVUZXh0IiwiZ2V0TWVzc2FnZSIsIm1lc3NhZ2VDb250cm9sSURzIiwiZ2V0Q29udHJvbElkcyIsImdldElkIiwicmVtb3ZlTWVzc2FnZXNGb3JBY3Rpb25QYXJhbWV0ZXIiLCJtZXNzYWdlQ29udHJvbElkIiwiYWxsTWVzc2FnZXMiLCJNZXNzYWdpbmciLCJnZXRNZXNzYWdlTW9kZWwiLCJnZXREYXRhIiwicmVsZXZhbnRNZXNzYWdlcyIsImZpbHRlciIsIm1zZyIsInNvbWUiLCJjb250cm9sSWQiLCJyZW1vdmVNZXNzYWdlcyIsImxpdmVDaGFuZ2VFdmVudCIsImZpZWxkSWQiLCJnZXRTb3VyY2UiLCJjaGFuZ2VFdmVudCIsImdldFBhcmFtZXRlciIsIk5vbmUiLCJlcnJvciIsIkFjdGlvblJ1bnRpbWUiLCJ2YWxpZGF0ZVByb3BlcnRpZXMiLCJvbkVzY2FwZSIsInAiLCJyZWplY3QiLCJvcGVuRGlhbG9nIiwic2V0RXNjYXBlSGFuZGxlciIsImFkZERlcGVuZGVudCIsInNldEJpbmRpbmdDb250ZXh0Iiwib3BlbiIsImNsb3NlRGlhbG9nIiwiQnVzeUxvY2tlciIsImlzTG9ja2VkIiwidW5sb2NrIiwiY2xvc2UiLCJkZXN0cm95Iiwic2V0QnVzeSIsImJ1c3kiLCJsb2NrIiwiaXNPcGVuIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJDcmVhdGVEaWFsb2cudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRW50aXR5U2V0IH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzXCI7XG5pbXBvcnQgeyB0eXBlIFByb3BlcnR5IH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzXCI7XG5pbXBvcnQgeyBjb21waWxlRXhwcmVzc2lvbiwgb3IgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB7IGRlZmluZVVJNUNsYXNzLCBldmVudCB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB0eXBlIHsgQWN0aW9uUGFyYW1ldGVySW5mbyB9IGZyb20gXCJzYXAvZmUvY29yZS9BY3Rpb25SdW50aW1lXCI7XG5pbXBvcnQgQWN0aW9uUnVudGltZSBmcm9tIFwic2FwL2ZlL2NvcmUvQWN0aW9uUnVudGltZVwiO1xuaW1wb3J0IHR5cGUgQXBwQ29tcG9uZW50IGZyb20gXCJzYXAvZmUvY29yZS9BcHBDb21wb25lbnRcIjtcbmltcG9ydCB0eXBlIHsgU3RhbmRhcmREaWFsb2cgfSBmcm9tIFwic2FwL2ZlL2NvcmUvVUlQcm92aWRlclwiO1xuaW1wb3J0IEJ1c3lMb2NrZXIgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL0J1c3lMb2NrZXJcIjtcbmltcG9ydCB7IGdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL01ldGFNb2RlbENvbnZlcnRlclwiO1xuaW1wb3J0IHsgZ2V0UmVxdWlyZWRQcm9wZXJ0aWVzRnJvbUluc2VydFJlc3RyaWN0aW9ucyB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL01ldGFNb2RlbEZ1bmN0aW9uXCI7XG5pbXBvcnQgeyBnZXRSZXNvdXJjZU1vZGVsIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvUmVzb3VyY2VNb2RlbEhlbHBlclwiO1xuaW1wb3J0IHsgZ2VuZXJhdGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9TdGFibGVJZEhlbHBlclwiO1xuaW1wb3J0IHsgZW5oYW5jZURhdGFNb2RlbFBhdGgsIGdldFRhcmdldE9iamVjdFBhdGgsIHR5cGUgRGF0YU1vZGVsT2JqZWN0UGF0aCB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0RhdGFNb2RlbFBhdGhIZWxwZXJcIjtcbmltcG9ydCB7IGlzUmVxdWlyZWRFeHByZXNzaW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvRmllbGRDb250cm9sSGVscGVyXCI7XG5pbXBvcnQgeyBoYXNWYWx1ZUhlbHAgfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9Qcm9wZXJ0eUhlbHBlclwiO1xuaW1wb3J0IEZpZWxkSGVscGVyIGZyb20gXCJzYXAvZmUvbWFjcm9zL2ZpZWxkL0ZpZWxkSGVscGVyXCI7XG5pbXBvcnQgeyByZXF1aXJlc1ZhbGlkYXRpb24sIHVzZUNhc2VTZW5zaXRpdmVGaWx0ZXJSZXF1ZXN0cyB9IGZyb20gXCJzYXAvZmUvbWFjcm9zL2ludGVybmFsL3ZhbHVlaGVscC9WYWx1ZUhlbHBUZW1wbGF0aW5nXCI7XG5pbXBvcnQgQnV0dG9uIGZyb20gXCJzYXAvbS9CdXR0b25cIjtcbmltcG9ydCBEaWFsb2cgZnJvbSBcInNhcC9tL0RpYWxvZ1wiO1xuaW1wb3J0IExhYmVsIGZyb20gXCJzYXAvbS9MYWJlbFwiO1xuaW1wb3J0IEV2ZW50UHJvdmlkZXIgZnJvbSBcInNhcC91aS9iYXNlL0V2ZW50UHJvdmlkZXJcIjtcbmltcG9ydCB0eXBlIENvbnRyb2wgZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCBDdXN0b21EYXRhIGZyb20gXCJzYXAvdWkvY29yZS9DdXN0b21EYXRhXCI7XG5pbXBvcnQgTWVzc2FnaW5nIGZyb20gXCJzYXAvdWkvY29yZS9NZXNzYWdpbmdcIjtcbmltcG9ydCB0eXBlIE1lc3NhZ2UgZnJvbSBcInNhcC91aS9jb3JlL21lc3NhZ2UvTWVzc2FnZVwiO1xuaW1wb3J0IE1lc3NhZ2VUeXBlIGZyb20gXCJzYXAvdWkvY29yZS9tZXNzYWdlL01lc3NhZ2VUeXBlXCI7XG5pbXBvcnQgU2ltcGxlRm9ybSBmcm9tIFwic2FwL3VpL2xheW91dC9mb3JtL1NpbXBsZUZvcm1cIjtcbmltcG9ydCBNRENGaWVsZCwgeyB0eXBlIEZpZWxkJENoYW5nZUV2ZW50IH0gZnJvbSBcInNhcC91aS9tZGMvRmllbGRcIjtcbmltcG9ydCBWYWx1ZUhlbHAgZnJvbSBcInNhcC91aS9tZGMvVmFsdWVIZWxwXCI7XG5pbXBvcnQgeyB0eXBlIEZpZWxkQmFzZSRMaXZlQ2hhbmdlRXZlbnQgfSBmcm9tIFwic2FwL3VpL21kYy9maWVsZC9GaWVsZEJhc2VcIjtcbmltcG9ydCBWSERpYWxvZyBmcm9tIFwic2FwL3VpL21kYy92YWx1ZWhlbHAvRGlhbG9nXCI7XG5pbXBvcnQgUG9wb3ZlciBmcm9tIFwic2FwL3VpL21kYy92YWx1ZWhlbHAvUG9wb3ZlclwiO1xuaW1wb3J0IE1UYWJsZSBmcm9tIFwic2FwL3VpL21kYy92YWx1ZWhlbHAvY29udGVudC9NVGFibGVcIjtcbmltcG9ydCBBbm5vdGF0aW9uSGVscGVyIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvQW5ub3RhdGlvbkhlbHBlclwiO1xuaW1wb3J0IHR5cGUgT0RhdGFWNENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9Db250ZXh0XCI7XG5pbXBvcnQgdHlwZSBPRGF0YU1ldGFNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTWV0YU1vZGVsXCI7XG5pbXBvcnQgdHlwZSBPRGF0YU1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFNb2RlbFwiO1xuXG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUuY29yZS5zZXJ2aWNlcy5Sb3V0aW5nU2VydmljZUV2ZW50aW5nXCIpXG5jbGFzcyBDb250ZXh0VXBkYXRlRGlhbG9nRXZlbnRQcm92aWRlciBleHRlbmRzIEV2ZW50UHJvdmlkZXIge1xuXHRAZXZlbnQoKVxuXHRleGl0RGlhbG9nITogRnVuY3Rpb247XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENyZWF0ZURpYWxvZyBpbXBsZW1lbnRzIFN0YW5kYXJkRGlhbG9nIHtcblx0cHJpdmF0ZSBkaWFsb2c/OiBEaWFsb2c7XG5cblx0cHJpdmF0ZSBtZXRhTW9kZWw6IE9EYXRhTWV0YU1vZGVsO1xuXG5cdHByaXZhdGUgcmVxdWlyZWRGaWVsZE5hbWVzOiBzdHJpbmdbXTtcblxuXHRwcml2YXRlIGFjdGlvblBhcmFtZXRlckluZm9zOiBBY3Rpb25QYXJhbWV0ZXJJbmZvW10gPSBbXTtcblxuXHRwcml2YXRlIGV2ZW50UHJvdmlkZXIgPSBuZXcgQ29udGV4dFVwZGF0ZURpYWxvZ0V2ZW50UHJvdmlkZXIoKTtcblxuXHRjb25zdHJ1Y3Rvcihcblx0XHRwcml2YXRlIGNvbnRleHRUb1VwZGF0ZTogT0RhdGFWNENvbnRleHQsXG5cdFx0cHJpdmF0ZSBmaWVsZE5hbWVzOiBzdHJpbmdbXSxcblx0XHRwcml2YXRlIGFwcENvbXBvbmVudDogQXBwQ29tcG9uZW50LFxuXHRcdHByaXZhdGUgbW9kZTogXCJTdGFuZGFsb25lXCIgfCBcIldpdGhOYXZpZ2F0aW9uXCIsXG5cdFx0cHJpdmF0ZSBwYXJlbnRDb250cm9sPzogQ29udHJvbFxuXHQpIHtcblx0XHRjb25zdCBtb2RlbDogT0RhdGFNb2RlbCA9IGNvbnRleHRUb1VwZGF0ZS5nZXRNb2RlbCgpO1xuXHRcdHRoaXMubWV0YU1vZGVsID0gbW9kZWwuZ2V0TWV0YU1vZGVsKCk7XG5cblx0XHRjb25zdCBtZXRhUGF0aCA9IHRoaXMubWV0YU1vZGVsLmdldE1ldGFQYXRoKGNvbnRleHRUb1VwZGF0ZS5nZXRQYXRoKCkpO1xuXHRcdHRoaXMucmVxdWlyZWRGaWVsZE5hbWVzID0gZ2V0UmVxdWlyZWRQcm9wZXJ0aWVzRnJvbUluc2VydFJlc3RyaWN0aW9ucyhtZXRhUGF0aCwgdGhpcy5tZXRhTW9kZWwpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEF0dGFjaGVzIGFuIGV2ZW50IGhhbmRsZXIgY2FsbGVkIHdoZW4gdGhlIHVzZXIgY2xvc2VzIHRoZSBkaWFsb2cgKGVpdGhlciB3aXRoIE9LIG9yIENhbmNlbCkuXG5cdCAqXG5cdCAqIFRoZSBldmVudCBoYXMgYW4gJ2FjY2VwdCcgcGFyYW1ldGVyIHRoYXQgaXMgdHJ1ZSAocmVzcC4gZmFsc2UpIGlmIHRoZSB1c2VyIGNsaWNrZWQgb24gT0sgKHJlc3AuIENhbmNlbCkuXG5cdCAqIEBwYXJhbSBvRGF0YSBQYXlsb2FkIG9iamVjdCB0aGF0IHdpbGwgYmUgcGFzc2VkIHRvIHRoZSBldmVudCBoYW5kbGVyIGFsb25nIHdpdGggdGhlIGV2ZW50IG9iamVjdCB3aGVuIGZpcmluZyB0aGUgZXZlbnRcblx0ICogQHBhcmFtIGZuRnVuY3Rpb24gVGhlIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBldmVudCBvY2N1cnNcblx0ICogQHBhcmFtIG9MaXN0ZW5lciBDb250ZXh0IG9iamVjdCB0byBjYWxsIHRoZSBldmVudCBoYW5kbGVyIHdpdGhcblx0ICovXG5cdGF0dGFjaEV4aXREaWFsb2cob0RhdGE6IG9iamVjdCwgZm5GdW5jdGlvbjogRnVuY3Rpb24sIG9MaXN0ZW5lcj86IG9iamVjdCk6IHZvaWQge1xuXHRcdHRoaXMuZXZlbnRQcm92aWRlci5hdHRhY2hFdmVudChcImV4aXREaWFsb2dcIiwgb0RhdGEsIGZuRnVuY3Rpb24sIG9MaXN0ZW5lcik7XG5cdH1cblxuXHRwcml2YXRlIGZpcmVFeGl0RGlhbG9nKGFjY2VwdDogYm9vbGVhbik6IHZvaWQge1xuXHRcdHRoaXMuZXZlbnRQcm92aWRlci5maXJlRXZlbnQoXCJleGl0RGlhbG9nXCIsIHsgYWNjZXB0IH0pO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIGVkaXRNb2RlIGZvciBhIHByb3BlcnR5LlxuXHQgKiBAcGFyYW0gcHJvcGVydHlcblx0ICogQHJldHVybnMgRGlzcGxheSBvciBFZGl0YWJsZVxuXHQgKi9cblx0cHJpdmF0ZSBnZXRFZGl0TW9kZShwcm9wZXJ0eTogUHJvcGVydHkpOiBzdHJpbmcge1xuXHRcdGlmIChwcm9wZXJ0eS5hbm5vdGF0aW9ucy5Db21tb24/LkZpZWxkQ29udHJvbCkge1xuXHRcdFx0Y29uc3QgZmllbGRDb250cm9sID0gcHJvcGVydHkuYW5ub3RhdGlvbnMuQ29tbW9uLkZpZWxkQ29udHJvbCBhcyB1bmtub3duIGFzIHsgJEVudW1NZW1iZXI/OiBzdHJpbmcgfTtcblx0XHRcdHJldHVybiBmaWVsZENvbnRyb2wuJEVudW1NZW1iZXIgPT09IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLkZpZWxkQ29udHJvbFR5cGUvUmVhZE9ubHlcIiA/IFwiRGlzcGxheVwiIDogXCJFZGl0YWJsZVwiO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4gXCJFZGl0YWJsZVwiO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIHRoZSBwb3BvdmVyIGZvciB0aGUgVkggdHlwZWFoZWFkLlxuXHQgKiBAcGFyYW0gZmllbGROYW1lXG5cdCAqIEBwYXJhbSBwcm9wZXJ0eVxuXHQgKiBAcGFyYW0gcHJvcGVydHlPYmplY3RQYXRoXG5cdCAqIEByZXR1cm5zIFRoZSBwb3BvdmVyXG5cdCAqL1xuXHRwcml2YXRlIGdldEZpZWxkVkhUeXBlQWhlYWQoZmllbGROYW1lOiBzdHJpbmcsIHByb3BlcnR5OiBQcm9wZXJ0eSwgcHJvcGVydHlPYmplY3RQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoPFByb3BlcnR5Pik6IFBvcG92ZXIge1xuXHRcdHJldHVybiAoXG5cdFx0XHQ8UG9wb3Zlcj5cblx0XHRcdFx0PE1UYWJsZVxuXHRcdFx0XHRcdGlkPXtnZW5lcmF0ZShbZmllbGROYW1lLCBcIlZIXCIsIFwiUG9wb3ZlclwiLCBcInF1YWxpZmllclwiXSl9XG5cdFx0XHRcdFx0Y2FzZVNlbnNpdGl2ZT17dXNlQ2FzZVNlbnNpdGl2ZUZpbHRlclJlcXVlc3RzKFxuXHRcdFx0XHRcdFx0cHJvcGVydHlPYmplY3RQYXRoLFxuXHRcdFx0XHRcdFx0KHByb3BlcnR5T2JqZWN0UGF0aC5jb252ZXJ0ZWRUeXBlcy5lbnRpdHlDb250YWluZXIuYW5ub3RhdGlvbnMuQ2FwYWJpbGl0aWVzXG5cdFx0XHRcdFx0XHRcdD8uRmlsdGVyRnVuY3Rpb25zIGFzIHVua25vd24gYXMgc3RyaW5nW10pID8/IFtdXG5cdFx0XHRcdFx0KX1cblx0XHRcdFx0XHR1c2VBc1ZhbHVlSGVscD17ISFwcm9wZXJ0eS5hbm5vdGF0aW9ucy5Db21tb24/LlZhbHVlTGlzdFdpdGhGaXhlZFZhbHVlc31cblx0XHRcdFx0Lz5cblx0XHRcdDwvUG9wb3Zlcj5cblx0XHQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIFZIIGRpYWxvZyBmb3IgYSBnaXZlbiBwcm9wZXJ0eS5cblx0ICogQHBhcmFtIHByb3BlcnR5XG5cdCAqIEByZXR1cm5zIEEgZGlhbG9nIGlmIHRoZSBwcm9wZXJ0eSBoYXMgYSBWSCwgdW5kZWZpbmVkIG90aGVyd2lzZVxuXHQgKi9cblx0cHJpdmF0ZSBnZXRGaWVsZFZIRGlhbG9nKHByb3BlcnR5OiBQcm9wZXJ0eSk6IFZIRGlhbG9nIHwgdW5kZWZpbmVkIHtcblx0XHRpZiAocHJvcGVydHkuYW5ub3RhdGlvbnMuQ29tbW9uPy5WYWx1ZUxpc3RXaXRoRml4ZWRWYWx1ZXM/LnZhbHVlT2YoKSAhPT0gdHJ1ZSkge1xuXHRcdFx0cmV0dXJuIDxWSERpYWxvZyAvPjtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyB0aGUgVkggZm9yIGEgZ2l2ZW4gZmllbGQuXG5cdCAqIEBwYXJhbSBmaWVsZE5hbWVcblx0ICogQHBhcmFtIHByb3BlcnR5XG5cdCAqIEBwYXJhbSBwcm9wZXJ0eU9iamVjdFBhdGhcblx0ICogQHJldHVybnMgVGhlIFZhbHVlSGVscCBjb250cm9sIGlmIHRoZSBwcm9wZXJ0eSBoYXMgYSBWSCwgdW5kZWZpbmVkIG90aGVyd2lzZVxuXHQgKi9cblx0cHJpdmF0ZSBnZXRGaWVsZFZhbHVlSGVscChcblx0XHRmaWVsZE5hbWU6IHN0cmluZyxcblx0XHRwcm9wZXJ0eTogUHJvcGVydHksXG5cdFx0cHJvcGVydHlPYmplY3RQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoPFByb3BlcnR5PlxuXHQpOiBWYWx1ZUhlbHAgfCB1bmRlZmluZWQge1xuXHRcdGlmICghaGFzVmFsdWVIZWxwKHByb3BlcnR5KSkge1xuXHRcdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0XHR9XG5cblx0XHRjb25zdCB2aERlbGVnYXRlID0ge1xuXHRcdFx0bmFtZTogXCJzYXAvZmUvbWFjcm9zL3ZhbHVlaGVscC9WYWx1ZUhlbHBEZWxlZ2F0ZVwiLFxuXHRcdFx0cGF5bG9hZDoge1xuXHRcdFx0XHRwcm9wZXJ0eVBhdGg6IGdldFRhcmdldE9iamVjdFBhdGgocHJvcGVydHlPYmplY3RQYXRoKSxcblx0XHRcdFx0cXVhbGlmaWVyczoge30sXG5cdFx0XHRcdHZhbHVlSGVscFF1YWxpZmllcjogXCJcIlxuXHRcdFx0fVxuXHRcdH07XG5cblx0XHRyZXR1cm4gKFxuXHRcdFx0PFZhbHVlSGVscFxuXHRcdFx0XHRpZD17Z2VuZXJhdGUoW2ZpZWxkTmFtZSwgXCJWSFwiXSl9XG5cdFx0XHRcdGRlbGVnYXRlPXt2aERlbGVnYXRlfVxuXHRcdFx0XHR2YWxpZGF0ZUlucHV0PXtyZXF1aXJlc1ZhbGlkYXRpb24ocHJvcGVydHkpfVxuXHRcdFx0XHR0eXBlYWhlYWQ9e3RoaXMuZ2V0RmllbGRWSFR5cGVBaGVhZChmaWVsZE5hbWUsIHByb3BlcnR5LCBwcm9wZXJ0eU9iamVjdFBhdGgpfVxuXHRcdFx0XHRkaWFsb2c9e3RoaXMuZ2V0RmllbGRWSERpYWxvZyhwcm9wZXJ0eSl9XG5cdFx0XHQ+PC9WYWx1ZUhlbHA+XG5cdFx0KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIHRoZSBGb3JtIGVsZW1lbnQgKGxhYmVsICsgZmllbGQpIGZvciBhIGdpdmVuIHByb3BlcnR5IG5hbWUuXG5cdCAqIEBwYXJhbSBmaWVsZE5hbWVcblx0ICogQHBhcmFtIGxpc3RPYmplY3RQYXRoXG5cdCAqIEBwYXJhbSBsaXN0TWV0YVBhdGhcblx0ICogQHJldHVybnMgVGhlIGVsZW1lbnRcblx0ICovXG5cdHByaXZhdGUgY3JlYXRlRm9ybUVsZW1lbnQoZmllbGROYW1lOiBzdHJpbmcsIGxpc3RPYmplY3RQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoPEVudGl0eVNldD4sIGxpc3RNZXRhUGF0aDogc3RyaW5nKTogdW5rbm93biB7XG5cdFx0Y29uc3QgcHJvcGVydHlPYmplY3RQYXRoID0gZW5oYW5jZURhdGFNb2RlbFBhdGg8UHJvcGVydHk+KGxpc3RPYmplY3RQYXRoLCBmaWVsZE5hbWUpO1xuXHRcdGNvbnN0IHByb3BlcnR5ID0gcHJvcGVydHlPYmplY3RQYXRoLnRhcmdldE9iamVjdCBhcyBQcm9wZXJ0eTtcblx0XHRjb25zdCBwcm9wZXJ0eU1ldGFDb250ZXh0ID0gdGhpcy5tZXRhTW9kZWwuY3JlYXRlQmluZGluZ0NvbnRleHQoYCR7bGlzdE1ldGFQYXRofS8ke2ZpZWxkTmFtZX1gKSE7XG5cdFx0Y29uc3QgcHJvcGVydHlQbGFjZUhvbGRlck1ldGFDb250ZXh0ID0gdGhpcy5tZXRhTW9kZWwuY3JlYXRlQmluZGluZ0NvbnRleHQoXG5cdFx0XHRgJHtsaXN0TWV0YVBhdGh9LyR7ZmllbGROYW1lfUBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5QbGFjZWhvbGRlcmBcblx0XHQpITtcblxuXHRcdGNvbnN0IGZpZWxkID0gKFxuXHRcdFx0PE1EQ0ZpZWxkXG5cdFx0XHRcdGRlbGVnYXRlPXt7IG5hbWU6IFwic2FwL2ZlL21hY3Jvcy9maWVsZC9GaWVsZEJhc2VEZWxlZ2F0ZVwiLCBwYXlsb2FkOiB7IHJldHJpZXZlVGV4dEZyb21WYWx1ZUxpc3Q6IHRydWUgfSB9fVxuXHRcdFx0XHRpZD17Z2VuZXJhdGUoW1wiQ3JlYXRlRGlhbG9nXCIsIGxpc3RPYmplY3RQYXRoLnRhcmdldEVudGl0eVR5cGUubmFtZSwgZmllbGROYW1lXSl9XG5cdFx0XHRcdHZhbHVlPXtBbm5vdGF0aW9uSGVscGVyLmZvcm1hdChwcm9wZXJ0eU1ldGFDb250ZXh0LmdldE9iamVjdCgpLCB7IGNvbnRleHQ6IHByb3BlcnR5TWV0YUNvbnRleHQgfSl9XG5cdFx0XHRcdHBsYWNlaG9sZGVyPXtBbm5vdGF0aW9uSGVscGVyLnZhbHVlKHByb3BlcnR5UGxhY2VIb2xkZXJNZXRhQ29udGV4dC5nZXRPYmplY3QoKSwge1xuXHRcdFx0XHRcdGNvbnRleHQ6IHByb3BlcnR5UGxhY2VIb2xkZXJNZXRhQ29udGV4dFxuXHRcdFx0XHR9KX1cblx0XHRcdFx0d2lkdGg9XCIxMDAlXCJcblx0XHRcdFx0cmVxdWlyZWQ9e2NvbXBpbGVFeHByZXNzaW9uKG9yKGlzUmVxdWlyZWRFeHByZXNzaW9uKHByb3BlcnR5KSwgdGhpcy5yZXF1aXJlZEZpZWxkTmFtZXMuaW5jbHVkZXMoZmllbGROYW1lKSkpfVxuXHRcdFx0XHRkaXNwbGF5PXtGaWVsZEhlbHBlci5nZXRBUERpYWxvZ0Rpc3BsYXlGb3JtYXQocHJvcGVydHlNZXRhQ29udGV4dC5nZXRPYmplY3QoKSwgeyBjb250ZXh0OiBwcm9wZXJ0eU1ldGFDb250ZXh0IH0pfVxuXHRcdFx0XHR2YWx1ZUhlbHA9e2hhc1ZhbHVlSGVscChwcm9wZXJ0eSkgPyBnZW5lcmF0ZShbZmllbGROYW1lLCBcIlZIXCJdKSA6IHVuZGVmaW5lZH1cblx0XHRcdFx0ZWRpdE1vZGU9e3RoaXMuZ2V0RWRpdE1vZGUocHJvcGVydHkpfVxuXHRcdFx0XHRkZXBlbmRlbnRzPXt0aGlzLmdldEZpZWxkVmFsdWVIZWxwKGZpZWxkTmFtZSwgcHJvcGVydHksIHByb3BlcnR5T2JqZWN0UGF0aCl9XG5cdFx0XHRcdGN1c3RvbURhdGE9ezxDdXN0b21EYXRhIGtleT1cImZpZWxkTmFtZVwiIHZhbHVlPXtmaWVsZE5hbWV9IC8+fVxuXHRcdFx0XHRsaXZlQ2hhbmdlPXt0aGlzLmhhbmRsZUxpdmVDaGFuZ2UuYmluZCh0aGlzKX1cblx0XHRcdFx0Y2hhbmdlPXt0aGlzLmhhbmRsZUNoYW5nZS5iaW5kKHRoaXMpfVxuXHRcdFx0Lz5cblx0XHQpO1xuXG5cdFx0dGhpcy5hY3Rpb25QYXJhbWV0ZXJJbmZvcy5wdXNoKHtcblx0XHRcdGlzTXVsdGlWYWx1ZTogZmFsc2UsXG5cdFx0XHRmaWVsZDogZmllbGQsXG5cdFx0XHR2YWx1ZTogZmllbGQuZ2V0VmFsdWUoKSxcblx0XHRcdHZhbGlkYXRpb25Qcm9taXNlOiB1bmRlZmluZWQsXG5cdFx0XHRoYXNFcnJvcjogZmFsc2UsXG5cdFx0XHRwcm9wZXJ0eVBhdGg6IGZpZWxkTmFtZVxuXHRcdH0pO1xuXG5cdFx0cmV0dXJuIChcblx0XHRcdDw+XG5cdFx0XHRcdDxMYWJlbCB0ZXh0PXtwcm9wZXJ0eS5hbm5vdGF0aW9ucy5Db21tb24/LkxhYmVsfSAvPlxuXHRcdFx0XHR7ZmllbGR9XG5cdFx0XHQ8Lz5cblx0XHQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENhbGxiYWNrIHdoZW4gdGhlIGRpYWxvZyBpcyBvcGVuZWQuIFNldHMgdGhlIGZvY3VzIG9uIHRoZSBmaXJzdCBmaWVsZCB3aXRob3V0IG9wZW5pbmcgdGhlIFZIIGRpYWxvZy5cblx0ICovXG5cdHByaXZhdGUgYWZ0ZXJPcGVuKCk6IHZvaWQge1xuXHRcdGNvbnN0IGZpcnN0RmllbGQgPSB0aGlzLmFjdGlvblBhcmFtZXRlckluZm9zWzBdLmZpZWxkO1xuXHRcdGNvbnN0IGZvY3VzSW5mbyA9IGZpcnN0RmllbGQuZ2V0Rm9jdXNJbmZvKCkgYXMgeyB0YXJnZXRJbmZvOiBvYmplY3QgfTtcblx0XHRmb2N1c0luZm8udGFyZ2V0SW5mbyA9IHsgc2lsZW50OiB0cnVlIH07XG5cdFx0Zmlyc3RGaWVsZC5mb2N1cyhmb2N1c0luZm8pO1xuXHR9XG5cblx0LyoqXG5cdCAqIEludGVybmFsIG1ldGhvZCB0byBjcmVhdGUgdGhlIERpYWxvZyBjb250cm9sIGFuZCBpdHMgY29udGVudC5cblx0ICogQHJldHVybnMgVGhlIGRpYWxvZyBjb250cm9sXG5cdCAqL1xuXHRwcml2YXRlIGNyZWF0ZURpYWxvZygpOiBEaWFsb2cge1xuXHRcdGNvbnN0IHJlc291cmNlTW9kZWwgPSBnZXRSZXNvdXJjZU1vZGVsKHRoaXMucGFyZW50Q29udHJvbCA/PyB0aGlzLmFwcENvbXBvbmVudCk7XG5cdFx0Y29uc3QgbWV0YVBhdGggPSB0aGlzLm1ldGFNb2RlbC5nZXRNZXRhUGF0aCh0aGlzLmNvbnRleHRUb1VwZGF0ZS5nZXRQYXRoKCkpO1xuXHRcdGNvbnN0IG1ldGFDb250ZXh0ID0gdGhpcy5tZXRhTW9kZWwuY3JlYXRlQmluZGluZ0NvbnRleHQobWV0YVBhdGgpITtcblx0XHRjb25zdCBvYmplY3RQYXRoID0gZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzPEVudGl0eVNldD4obWV0YUNvbnRleHQpO1xuXG5cdFx0dGhpcy5hY3Rpb25QYXJhbWV0ZXJJbmZvcyA9IFtdO1xuXG5cdFx0Y29uc3QgYmVnaW5CdXR0b25MYWJlbCA9IHJlc291cmNlTW9kZWwuZ2V0VGV4dChcblx0XHRcdHRoaXMubW9kZSA9PT0gXCJTdGFuZGFsb25lXCJcblx0XHRcdFx0PyBcIkNfVFJBTlNBQ1RJT05fSEVMUEVSX1NBUEZFX0FDVElPTl9DUkVBVEVfQlVUVE9OX0NSRUFURVwiXG5cdFx0XHRcdDogXCJDX1RSQU5TQUNUSU9OX0hFTFBFUl9TQVBGRV9BQ1RJT05fQ1JFQVRFX0JVVFRPTl9DT05USU5VRVwiXG5cdFx0KTtcblx0XHRjb25zdCBlbmRCdXR0b24gPSAoXG5cdFx0XHQ8QnV0dG9uIHRleHQ9e3Jlc291cmNlTW9kZWwuZ2V0VGV4dChcIkNfQ09NTU9OX0FDVElPTl9QQVJBTUVURVJfRElBTE9HX0NBTkNFTFwiKX0gcHJlc3M9e3RoaXMub25DYW5jZWwuYmluZCh0aGlzKX0gLz5cblx0XHQpO1xuXHRcdHJldHVybiAoXG5cdFx0XHQ8RGlhbG9nXG5cdFx0XHRcdGlkPXtnZW5lcmF0ZShbXCJDcmVhdGVEaWFsb2dcIiwgbWV0YVBhdGhdKX1cblx0XHRcdFx0dGl0bGU9e3Jlc291cmNlTW9kZWwuZ2V0VGV4dChcIkNfVFJBTlNBQ1RJT05fSEVMUEVSX1NBUEZFX0FDVElPTl9DUkVBVEVcIil9XG5cdFx0XHRcdGFmdGVyT3Blbj17KCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdHRoaXMuYWZ0ZXJPcGVuKCk7XG5cdFx0XHRcdH19XG5cdFx0XHRcdHJlc2l6YWJsZT17dHJ1ZX1cblx0XHRcdFx0ZHJhZ2dhYmxlPXt0cnVlfVxuXHRcdFx0XHRpbml0aWFsRm9jdXM9e2VuZEJ1dHRvbn0gLy8gVGhlIGluaXRpYWwgZm9jdXMgaXMgc2V0IHByb2dyYW1tYXRpY2FsbHkgaW4gYWZ0ZXJPcGVuLCB0byBhdm9pZCBvcGVuaW5nIHRoZSBWSCBkaWFsb2dcblx0XHRcdD5cblx0XHRcdFx0e3tcblx0XHRcdFx0XHRiZWdpbkJ1dHRvbjogPEJ1dHRvbiB0ZXh0PXtiZWdpbkJ1dHRvbkxhYmVsfSBwcmVzcz17dGhpcy5vbk9LLmJpbmQodGhpcyl9IHR5cGU9XCJFbXBoYXNpemVkXCIgLz4sXG5cdFx0XHRcdFx0ZW5kQnV0dG9uOiBlbmRCdXR0b24sXG5cdFx0XHRcdFx0Y29udGVudDogKFxuXHRcdFx0XHRcdFx0PFNpbXBsZUZvcm0+XG5cdFx0XHRcdFx0XHRcdHt0aGlzLmZpZWxkTmFtZXMubWFwKChuYW1lKSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHRoaXMuY3JlYXRlRm9ybUVsZW1lbnQobmFtZSwgb2JqZWN0UGF0aCwgbWV0YVBhdGgpO1xuXHRcdFx0XHRcdFx0XHR9KX1cblx0XHRcdFx0XHRcdDwvU2ltcGxlRm9ybT5cblx0XHRcdFx0XHQpXG5cdFx0XHRcdH19XG5cdFx0XHQ8L0RpYWxvZz5cblx0XHQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNldHMgdGhlIGVycm9yIHN0YXRlIGluIHRoZSBkaWFsb2cgZmllbGRzIHRoYXQgY29ycmVzcG9uZCB0byBhbiBlcnJvciBpbiB0aGUgZ2l2ZW4gbWVzc2FnZXMuXG5cdCAqIEBwYXJhbSBtZXNzYWdlc1xuXHQgKi9cblx0cHVibGljIGRpc3BsYXlFcnJvck1lc3NhZ2VzKG1lc3NhZ2VzOiBNZXNzYWdlW10pOiB2b2lkIHtcblx0XHQvLyBJdGVyYXRlIG92ZXIgYWxsIG1lc3NhZ2VzIGFuZCBzZXQgdGhlIGVycm9yIHN0YXRlIGZvciB0aGUgY29ycmVzcG9uZGluZyBmaWVsZFxuXHRcdC8vIFdlIGNhbm5vdCBjb21wYXJlIHRoZSBwYXRocyBkaXJlY3RseSwgYXMgdGhlIGNvbnRleHQgaW4gdGhlIGRpYWxvZyBpcyBhIHRlbXBvcmFyeSBvbmUsIGFuZCBkaWZmZXJlbnQgZnJvbSB0aGUgb25lIHRoYXQgaXMgc2F2ZWRcblx0XHQvLyBUaGVyZWZvcmUgd2UgY29tcGFyZSB0aGUgbWV0YXBhdGhzXG5cdFx0Y29uc3QgY29udGV4dE1ldGFQYXRoID0gdGhpcy5tZXRhTW9kZWwuZ2V0TWV0YVBhdGgodGhpcy5jb250ZXh0VG9VcGRhdGUuZ2V0UGF0aCgpKTtcblxuXHRcdGZvciAoY29uc3QgbWVzc2FnZSBvZiBtZXNzYWdlcykge1xuXHRcdFx0Zm9yIChjb25zdCB0YXJnZXQgb2YgbWVzc2FnZS5nZXRUYXJnZXRzKCkpIHtcblx0XHRcdFx0Y29uc3QgdGFyZ2V0TWV0YVBhdGggPSB0aGlzLm1ldGFNb2RlbC5nZXRNZXRhUGF0aCh0YXJnZXQpO1xuXHRcdFx0XHRjb25zdCBwYXJhbWV0ZXJJbmZvID0gdGhpcy5hY3Rpb25QYXJhbWV0ZXJJbmZvcy5maW5kKFxuXHRcdFx0XHRcdChhY3Rpb25QYXJhbWV0ZXJJbmZvKSA9PiBgJHtjb250ZXh0TWV0YVBhdGh9LyR7YWN0aW9uUGFyYW1ldGVySW5mby5wcm9wZXJ0eVBhdGh9YCA9PT0gdGFyZ2V0TWV0YVBhdGhcblx0XHRcdFx0KTtcblx0XHRcdFx0aWYgKHBhcmFtZXRlckluZm8pIHtcblx0XHRcdFx0XHRwYXJhbWV0ZXJJbmZvLmhhc0Vycm9yID0gdHJ1ZTtcblx0XHRcdFx0XHRwYXJhbWV0ZXJJbmZvLmZpZWxkLnNldFZhbHVlU3RhdGUobWVzc2FnZS5nZXRUeXBlKCkgfHwgTWVzc2FnZVR5cGUuRXJyb3IpO1xuXHRcdFx0XHRcdHBhcmFtZXRlckluZm8uZmllbGQuc2V0VmFsdWVTdGF0ZVRleHQobWVzc2FnZS5nZXRNZXNzYWdlKCkpO1xuXG5cdFx0XHRcdFx0Y29uc3QgbWVzc2FnZUNvbnRyb2xJRHMgPSBtZXNzYWdlLmdldENvbnRyb2xJZHMoKTtcblx0XHRcdFx0XHRpZiAoIW1lc3NhZ2VDb250cm9sSURzLmluY2x1ZGVzKHBhcmFtZXRlckluZm8uZmllbGQuZ2V0SWQoKSkpIHtcblx0XHRcdFx0XHRcdG1lc3NhZ2VDb250cm9sSURzLnB1c2gocGFyYW1ldGVySW5mby5maWVsZC5nZXRJZCgpKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogUmVtb3ZlcyB0aGUgZXJyb3IgbWVzc2FnZXMgZm9yIGEgZ2l2ZW4gZmllbGQuXG5cdCAqIEBwYXJhbSBtZXNzYWdlQ29udHJvbElkIFRoZSBJRCBvZiB0aGUgZmllbGRcblx0ICovXG5cdHByaXZhdGUgcmVtb3ZlTWVzc2FnZXNGb3JBY3Rpb25QYXJhbWV0ZXIobWVzc2FnZUNvbnRyb2xJZDogc3RyaW5nKTogdm9pZCB7XG5cdFx0Y29uc3QgYWxsTWVzc2FnZXMgPSBNZXNzYWdpbmcuZ2V0TWVzc2FnZU1vZGVsKCkuZ2V0RGF0YSgpO1xuXHRcdC8vIGFsc28gcmVtb3ZlIG1lc3NhZ2VzIGFzc2lnbmVkIHRvIGlubmVyIGNvbnRyb2xzLCBidXQgYXZvaWQgcmVtb3ZpbmcgbWVzc2FnZXMgZm9yIGRpZmZlcmVudCBwYXJhbWV0ZXJzICh3aXRoIG5hbWUgYmVpbmcgc3Vic3RyaW5nIG9mIGFub3RoZXIgcGFyYW1ldGVyIG5hbWUpXG5cdFx0Y29uc3QgcmVsZXZhbnRNZXNzYWdlcyA9IGFsbE1lc3NhZ2VzLmZpbHRlcigobXNnOiBNZXNzYWdlKSA9PlxuXHRcdFx0bXNnLmdldENvbnRyb2xJZHMoKS5zb21lKChjb250cm9sSWQ6IHN0cmluZykgPT4gY29udHJvbElkLmluY2x1ZGVzKG1lc3NhZ2VDb250cm9sSWQpKVxuXHRcdCk7XG5cdFx0TWVzc2FnaW5nLnJlbW92ZU1lc3NhZ2VzKHJlbGV2YW50TWVzc2FnZXMpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENhbGxiYWNrIHdoZW4gdGhlIHVzZXIgaXMgZG9pbmcgc29tZSBsaXZlIGNoYW5nZXMgaW4gYSBmaWVsZC5cblx0ICogQHBhcmFtIGxpdmVDaGFuZ2VFdmVudFxuXHQgKi9cblx0cHJpdmF0ZSBoYW5kbGVMaXZlQ2hhbmdlKGxpdmVDaGFuZ2VFdmVudDogRmllbGRCYXNlJExpdmVDaGFuZ2VFdmVudCk6IHZvaWQge1xuXHRcdGNvbnN0IGZpZWxkSWQgPSBsaXZlQ2hhbmdlRXZlbnQuZ2V0U291cmNlPE1EQ0ZpZWxkPigpLmdldElkKCk7XG5cdFx0dGhpcy5yZW1vdmVNZXNzYWdlc0ZvckFjdGlvblBhcmFtZXRlcihmaWVsZElkKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDYWxsYmFjayB3aGVuIHRoZSB1c2VyIGhhcyBjaGFuZ2VkIGEgZmllbGQgdmFsdWUuXG5cdCAqIEBwYXJhbSBjaGFuZ2VFdmVudFxuXHQgKi9cblx0cHJpdmF0ZSBhc3luYyBoYW5kbGVDaGFuZ2UoY2hhbmdlRXZlbnQ6IEZpZWxkJENoYW5nZUV2ZW50KTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0Y29uc3QgZmllbGQgPSBjaGFuZ2VFdmVudC5nZXRTb3VyY2U8TURDRmllbGQ+KCk7XG5cblx0XHRjb25zdCBhY3Rpb25QYXJhbWV0ZXJJbmZvID0gdGhpcy5hY3Rpb25QYXJhbWV0ZXJJbmZvcy5maW5kKChhY3Rpb25QYXJhbWV0ZXJJbmZvKSA9PiBhY3Rpb25QYXJhbWV0ZXJJbmZvLmZpZWxkID09PSBmaWVsZCk7XG5cdFx0aWYgKGFjdGlvblBhcmFtZXRlckluZm8gIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0dGhpcy5yZW1vdmVNZXNzYWdlc0ZvckFjdGlvblBhcmFtZXRlcihmaWVsZC5nZXRJZCgpKTtcblx0XHRcdGFjdGlvblBhcmFtZXRlckluZm8udmFsaWRhdGlvblByb21pc2UgPSBjaGFuZ2VFdmVudC5nZXRQYXJhbWV0ZXIoXCJwcm9taXNlXCIpO1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0YWN0aW9uUGFyYW1ldGVySW5mby52YWx1ZSA9IGF3YWl0IGFjdGlvblBhcmFtZXRlckluZm8udmFsaWRhdGlvblByb21pc2U7XG5cdFx0XHRcdGFjdGlvblBhcmFtZXRlckluZm8uaGFzRXJyb3IgPSBmYWxzZTtcblx0XHRcdFx0YWN0aW9uUGFyYW1ldGVySW5mby5maWVsZC5zZXRWYWx1ZVN0YXRlKE1lc3NhZ2VUeXBlLk5vbmUpO1xuXHRcdFx0fSBjYXRjaCAoZXJyb3IpIHtcblx0XHRcdFx0ZGVsZXRlIGFjdGlvblBhcmFtZXRlckluZm8udmFsdWU7XG5cdFx0XHRcdGFjdGlvblBhcmFtZXRlckluZm8uaGFzRXJyb3IgPSB0cnVlO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBDYWxsYmFjayB3aGVuIHRoZSB1c2VyIGNsaWNrZWQgJ09LJy5cblx0ICovXG5cdHByaXZhdGUgYXN5bmMgb25PSygpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHQvLyBWYWxpZGF0aW9uIG9mIG1hbmRhdG9yeSBhbmQgdmFsdWUgc3RhdGUgZm9yIGFjdGlvbiBwYXJhbWV0ZXJzXG5cdFx0Y29uc3QgcmVzb3VyY2VNb2RlbCA9IGdldFJlc291cmNlTW9kZWwodGhpcy5hcHBDb21wb25lbnQpO1xuXHRcdGlmIChhd2FpdCBBY3Rpb25SdW50aW1lLnZhbGlkYXRlUHJvcGVydGllcyh0aGlzLmFjdGlvblBhcmFtZXRlckluZm9zLCByZXNvdXJjZU1vZGVsKSkge1xuXHRcdFx0dGhpcy5maXJlRXhpdERpYWxvZyh0cnVlKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogQ2FsbGJhY2sgd2hlbiB0aGUgdXNlIGNsaWNrZWQgJ0NhbmNlbCcuXG5cdCAqL1xuXHRwcml2YXRlIG9uQ2FuY2VsKCk6IHZvaWQge1xuXHRcdHRoaXMuZmlyZUV4aXREaWFsb2coZmFsc2UpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEVzY2FwZSBoYW5kbGVyIChjYWxsZWQgd2hlbiB0aGUgdXNlciB0eXBlZCAnRXNjYXBlJyB0byBsZWF2ZSB0aGUgZGlhbG9nKS5cblx0ICogQHBhcmFtIHBcblx0ICogQHBhcmFtIHAucmVzb2x2ZVxuXHQgKiBAcGFyYW0gcC5yZWplY3Rcblx0ICovXG5cdHByaXZhdGUgb25Fc2NhcGUocDogeyByZXNvbHZlOiBGdW5jdGlvbjsgcmVqZWN0OiBGdW5jdGlvbiB9KTogdm9pZCB7XG5cdFx0cC5yZWplY3QoKTsgLy8gRG8gbm90IGNsb3NlIHRoZSBkaWFsb2dcblx0XHR0aGlzLm9uQ2FuY2VsKCk7XG5cdH1cblxuXHQvKipcblx0ICogT3BlbnMgdGhlIGRpYWxvZy5cblx0ICogQHJldHVybnMgVGhlIGludGVybmFsIERpYWxvZyBjb250cm9sXG5cdCAqL1xuXHRvcGVuRGlhbG9nKCk6IERpYWxvZyB7XG5cdFx0aWYgKHRoaXMuZGlhbG9nKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3Qgb3BlbiB0aGUgQ3JlYXRlIGRpYWxvZyB0d2ljZVwiKTtcblx0XHR9XG5cblx0XHR0aGlzLmRpYWxvZyA9IHRoaXMuY3JlYXRlRGlhbG9nKCk7XG5cdFx0dGhpcy5kaWFsb2cuc2V0RXNjYXBlSGFuZGxlcih0aGlzLm9uRXNjYXBlLmJpbmQodGhpcykpO1xuXHRcdHRoaXMucGFyZW50Q29udHJvbD8uYWRkRGVwZW5kZW50KHRoaXMuZGlhbG9nKTtcblx0XHR0aGlzLmRpYWxvZy5zZXRCaW5kaW5nQ29udGV4dCh0aGlzLmNvbnRleHRUb1VwZGF0ZSk7XG5cblx0XHR0aGlzLmRpYWxvZy5vcGVuKCk7XG5cblx0XHRyZXR1cm4gdGhpcy5kaWFsb2c7XG5cdH1cblxuXHQvKipcblx0ICogQ2xvc2VzIGFuZCBkZXN0cm95cyB0aGUgZGlhbG9nLlxuXHQgKi9cblx0Y2xvc2VEaWFsb2coKTogdm9pZCB7XG5cdFx0LyogV2hlbiB0aGUgZGlhbG9nIGlzIGNhbmNlbGxlZCwgbWVzc2FnZXMgbmVlZCB0byBiZSByZW1vdmVkIGluIGNhc2UgdGhlIHNhbWUgYWN0aW9uIHNob3VsZCBiZSBleGVjdXRlZCBhZ2FpbiAqL1xuXHRcdGZvciAoY29uc3QgYWN0aW9uUGFyYW1ldGVySW5mbyBvZiB0aGlzLmFjdGlvblBhcmFtZXRlckluZm9zKSB7XG5cdFx0XHRjb25zdCBmaWVsZElkID0gYWN0aW9uUGFyYW1ldGVySW5mby5maWVsZC5nZXRJZCgpO1xuXHRcdFx0dGhpcy5yZW1vdmVNZXNzYWdlc0ZvckFjdGlvblBhcmFtZXRlcihmaWVsZElkKTtcblx0XHR9XG5cblx0XHRpZiAodGhpcy5kaWFsb2cgJiYgQnVzeUxvY2tlci5pc0xvY2tlZCh0aGlzLmRpYWxvZykpIHtcblx0XHRcdEJ1c3lMb2NrZXIudW5sb2NrKHRoaXMuZGlhbG9nKTsgLy8gVG8gYXZvaWQgYW4gZXJyb3IgaW4gdGhlIGNvbnNvbGVcblx0XHR9XG5cdFx0dGhpcy5kaWFsb2c/LmNsb3NlKCk7XG5cdFx0dGhpcy5kaWFsb2c/LmRlc3Ryb3koKTtcblx0XHR0aGlzLmRpYWxvZyA9IHVuZGVmaW5lZDtcblx0fVxuXG5cdC8qKlxuXHQgKiBEaXNwbGF5cyBvciByZW1vdmVzIGEgYnVzeSBpbmRpY2F0b3Igb24gdGhlIGRpYWxvZy5cblx0ICogQHBhcmFtIGJ1c3lcblx0ICovXG5cdHNldEJ1c3koYnVzeTogYm9vbGVhbik6IHZvaWQge1xuXHRcdGlmICghdGhpcy5kaWFsb2cpIHtcblx0XHRcdHJldHVybjsgLy8gTm90aGluZyB0byBzZXQgYnVzeVxuXHRcdH1cblxuXHRcdGlmIChidXN5KSB7XG5cdFx0XHRCdXN5TG9ja2VyLmxvY2sodGhpcy5kaWFsb2cpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRCdXN5TG9ja2VyLnVubG9jayh0aGlzLmRpYWxvZyk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIElzIERpYWxvZyBvcGVuLlxuXHQgKiBAcmV0dXJucyBCb29sZWFuXG5cdCAqL1xuXHRpc09wZW4oKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHRoaXMuZGlhbG9nPy5pc09wZW4oKSA/PyBmYWxzZTtcblx0fVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O01Bd0NNQSxnQ0FBZ0MsSUFBQUMsSUFBQSxHQURyQ0MsY0FBYyxDQUFDLDZDQUE2QyxDQUFDLEVBQUFDLEtBQUEsR0FFNURDLEtBQUssQ0FBQyxDQUFDLEVBQUFILElBQUEsQ0FBQUksTUFBQSxJQUFBQyxPQUFBLDBCQUFBQyxjQUFBO0lBQUEsU0FBQVAsaUNBQUE7TUFBQSxJQUFBUSxLQUFBO01BQUEsU0FBQUMsSUFBQSxHQUFBQyxTQUFBLENBQUFDLE1BQUEsRUFBQUMsSUFBQSxPQUFBQyxLQUFBLENBQUFKLElBQUEsR0FBQUssSUFBQSxNQUFBQSxJQUFBLEdBQUFMLElBQUEsRUFBQUssSUFBQTtRQUFBRixJQUFBLENBQUFFLElBQUEsSUFBQUosU0FBQSxDQUFBSSxJQUFBO01BQUE7TUFBQU4sS0FBQSxHQUFBRCxjQUFBLENBQUFRLElBQUEsVUFBQUgsSUFBQTtNQUFBSSwwQkFBQSxDQUFBUixLQUFBLGdCQUFBUyxXQUFBLEVBQUFULEtBQUE7TUFBQSxPQUFBQSxLQUFBO0lBQUE7SUFBQVUsY0FBQSxDQUFBbEIsZ0NBQUEsRUFBQU8sY0FBQTtJQUFBLE9BQUFQLGdDQUFBO0VBQUEsRUFEc0NtQixhQUFhLEdBQUFGLFdBQUEsR0FBQUcseUJBQUEsQ0FBQWQsT0FBQSxDQUFBZSxTQUFBLGlCQUFBbEIsS0FBQTtJQUFBbUIsWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQTtFQUFBLElBQUFuQixPQUFBLE1BQUFELE1BQUE7RUFBQSxJQUt2Q3FCLFlBQVk7SUFXaEMsU0FBQUEsYUFDU0MsZUFBK0IsRUFDL0JDLFVBQW9CLEVBQ3BCQyxZQUEwQixFQUMxQkMsSUFBcUMsRUFDckNDLGFBQXVCLEVBQzlCO01BQUEsS0FWTUMsb0JBQW9CLEdBQTBCLEVBQUU7TUFBQSxLQUVoREMsYUFBYSxHQUFHLElBQUlqQyxnQ0FBZ0MsQ0FBQyxDQUFDO01BQUEsS0FHckQyQixlQUErQixHQUEvQkEsZUFBK0I7TUFBQSxLQUMvQkMsVUFBb0IsR0FBcEJBLFVBQW9CO01BQUEsS0FDcEJDLFlBQTBCLEdBQTFCQSxZQUEwQjtNQUFBLEtBQzFCQyxJQUFxQyxHQUFyQ0EsSUFBcUM7TUFBQSxLQUNyQ0MsYUFBdUIsR0FBdkJBLGFBQXVCO01BRS9CLE1BQU1HLEtBQWlCLEdBQUdQLGVBQWUsQ0FBQ1EsUUFBUSxDQUFDLENBQUM7TUFDcEQsSUFBSSxDQUFDQyxTQUFTLEdBQUdGLEtBQUssQ0FBQ0csWUFBWSxDQUFDLENBQUM7TUFFckMsTUFBTUMsUUFBUSxHQUFHLElBQUksQ0FBQ0YsU0FBUyxDQUFDRyxXQUFXLENBQUNaLGVBQWUsQ0FBQ2EsT0FBTyxDQUFDLENBQUMsQ0FBQztNQUN0RSxJQUFJLENBQUNDLGtCQUFrQixHQUFHQywyQ0FBMkMsQ0FBQ0osUUFBUSxFQUFFLElBQUksQ0FBQ0YsU0FBUyxDQUFDO0lBQ2hHOztJQUVBO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7SUFQQ08sUUFBQSxHQUFBakIsWUFBQTtJQUFBLElBQUFrQixNQUFBLEdBQUFsQixZQUFBLENBQUFMLFNBQUE7SUFBQXVCLE1BQUEsQ0FRQUMsZ0JBQWdCLEdBQWhCLFNBQUFBLGdCQUFnQkEsQ0FBQ0MsS0FBYSxFQUFFQyxVQUFvQixFQUFFQyxTQUFrQixFQUFRO01BQy9FLElBQUksQ0FBQ2YsYUFBYSxDQUFDZ0IsV0FBVyxDQUFDLFlBQVksRUFBRUgsS0FBSyxFQUFFQyxVQUFVLEVBQUVDLFNBQVMsQ0FBQztJQUMzRSxDQUFDO0lBQUFKLE1BQUEsQ0FFT00sY0FBYyxHQUF0QixTQUFRQSxjQUFjQSxDQUFDQyxNQUFlLEVBQVE7TUFDN0MsSUFBSSxDQUFDbEIsYUFBYSxDQUFDbUIsU0FBUyxDQUFDLFlBQVksRUFBRTtRQUFFRDtNQUFPLENBQUMsQ0FBQztJQUN2RDs7SUFFQTtBQUNEO0FBQ0E7QUFDQTtBQUNBLE9BSkM7SUFBQVAsTUFBQSxDQUtRUyxXQUFXLEdBQW5CLFNBQVFBLFdBQVdBLENBQUNDLFFBQWtCLEVBQVU7TUFDL0MsSUFBSUEsUUFBUSxDQUFDQyxXQUFXLENBQUNDLE1BQU0sRUFBRUMsWUFBWSxFQUFFO1FBQzlDLE1BQU1DLFlBQVksR0FBR0osUUFBUSxDQUFDQyxXQUFXLENBQUNDLE1BQU0sQ0FBQ0MsWUFBbUQ7UUFDcEcsT0FBT0MsWUFBWSxDQUFDQyxXQUFXLEtBQUssMERBQTBELEdBQUcsU0FBUyxHQUFHLFVBQVU7TUFDeEgsQ0FBQyxNQUFNO1FBQ04sT0FBTyxVQUFVO01BQ2xCO0lBQ0Q7O0lBRUE7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FOQztJQUFBZixNQUFBLENBT1FnQixtQkFBbUIsR0FBM0IsU0FBUUEsbUJBQW1CQSxDQUFDQyxTQUFpQixFQUFFUCxRQUFrQixFQUFFUSxrQkFBaUQsRUFBVztNQUM5SCxPQUNDQyxJQUFBLENBQUNDLE9BQU87UUFBQUMsUUFBQSxFQUNQRixJQUFBLENBQUNHLE1BQU07VUFDTkMsRUFBRSxFQUFFQyxRQUFRLENBQUMsQ0FBQ1AsU0FBUyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsV0FBVyxDQUFDLENBQUU7VUFDeERRLGFBQWEsRUFBRUMsOEJBQThCLENBQzVDUixrQkFBa0IsRUFDakJBLGtCQUFrQixDQUFDUyxjQUFjLENBQUNDLGVBQWUsQ0FBQ2pCLFdBQVcsQ0FBQ2tCLFlBQVksRUFDeEVDLGVBQWUsSUFBNEIsRUFDL0MsQ0FBRTtVQUNGQyxjQUFjLEVBQUUsQ0FBQyxDQUFDckIsUUFBUSxDQUFDQyxXQUFXLENBQUNDLE1BQU0sRUFBRW9CO1FBQXlCLENBQ3hFO01BQUMsQ0FDTSxDQUFDO0lBRVo7O0lBRUE7QUFDRDtBQUNBO0FBQ0E7QUFDQSxPQUpDO0lBQUFoQyxNQUFBLENBS1FpQyxnQkFBZ0IsR0FBeEIsU0FBUUEsZ0JBQWdCQSxDQUFDdkIsUUFBa0IsRUFBd0I7TUFDbEUsSUFBSUEsUUFBUSxDQUFDQyxXQUFXLENBQUNDLE1BQU0sRUFBRW9CLHdCQUF3QixFQUFFRSxPQUFPLENBQUMsQ0FBQyxLQUFLLElBQUksRUFBRTtRQUM5RSxPQUFPZixJQUFBLENBQUNnQixRQUFRLElBQUUsQ0FBQztNQUNwQixDQUFDLE1BQU07UUFDTixPQUFPQyxTQUFTO01BQ2pCO0lBQ0Q7O0lBRUE7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FOQztJQUFBcEMsTUFBQSxDQU9RcUMsaUJBQWlCLEdBQXpCLFNBQVFBLGlCQUFpQkEsQ0FDeEJwQixTQUFpQixFQUNqQlAsUUFBa0IsRUFDbEJRLGtCQUFpRCxFQUN6QjtNQUN4QixJQUFJLENBQUNvQixZQUFZLENBQUM1QixRQUFRLENBQUMsRUFBRTtRQUM1QixPQUFPMEIsU0FBUztNQUNqQjtNQUVBLE1BQU1HLFVBQVUsR0FBRztRQUNsQkMsSUFBSSxFQUFFLDJDQUEyQztRQUNqREMsT0FBTyxFQUFFO1VBQ1JDLFlBQVksRUFBRUMsbUJBQW1CLENBQUN6QixrQkFBa0IsQ0FBQztVQUNyRDBCLFVBQVUsRUFBRSxDQUFDLENBQUM7VUFDZEMsa0JBQWtCLEVBQUU7UUFDckI7TUFDRCxDQUFDO01BRUQsT0FDQzFCLElBQUEsQ0FBQzJCLFNBQVM7UUFDVHZCLEVBQUUsRUFBRUMsUUFBUSxDQUFDLENBQUNQLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBRTtRQUNoQzhCLFFBQVEsRUFBRVIsVUFBVztRQUNyQlMsYUFBYSxFQUFFQyxrQkFBa0IsQ0FBQ3ZDLFFBQVEsQ0FBRTtRQUM1Q3dDLFNBQVMsRUFBRSxJQUFJLENBQUNsQyxtQkFBbUIsQ0FBQ0MsU0FBUyxFQUFFUCxRQUFRLEVBQUVRLGtCQUFrQixDQUFFO1FBQzdFaUMsTUFBTSxFQUFFLElBQUksQ0FBQ2xCLGdCQUFnQixDQUFDdkIsUUFBUTtNQUFFLENBQzdCLENBQUM7SUFFZjs7SUFFQTtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQU5DO0lBQUFWLE1BQUEsQ0FPUW9ELGlCQUFpQixHQUF6QixTQUFRQSxpQkFBaUJBLENBQUNuQyxTQUFpQixFQUFFb0MsY0FBOEMsRUFBRUMsWUFBb0IsRUFBVztNQUMzSCxNQUFNcEMsa0JBQWtCLEdBQUdxQyxvQkFBb0IsQ0FBV0YsY0FBYyxFQUFFcEMsU0FBUyxDQUFDO01BQ3BGLE1BQU1QLFFBQVEsR0FBR1Esa0JBQWtCLENBQUNzQyxZQUF3QjtNQUM1RCxNQUFNQyxtQkFBbUIsR0FBRyxJQUFJLENBQUNqRSxTQUFTLENBQUNrRSxvQkFBb0IsQ0FBQyxHQUFHSixZQUFZLElBQUlyQyxTQUFTLEVBQUUsQ0FBRTtNQUNoRyxNQUFNMEMsOEJBQThCLEdBQUcsSUFBSSxDQUFDbkUsU0FBUyxDQUFDa0Usb0JBQW9CLENBQ3pFLEdBQUdKLFlBQVksSUFBSXJDLFNBQVMseUNBQzdCLENBQUU7TUFFRixNQUFNMkMsS0FBSyxHQUNWekMsSUFBQSxDQUFDMEMsUUFBUTtRQUNSZCxRQUFRLEVBQUU7VUFBRVAsSUFBSSxFQUFFLHVDQUF1QztVQUFFQyxPQUFPLEVBQUU7WUFBRXFCLHlCQUF5QixFQUFFO1VBQUs7UUFBRSxDQUFFO1FBQzFHdkMsRUFBRSxFQUFFQyxRQUFRLENBQUMsQ0FBQyxjQUFjLEVBQUU2QixjQUFjLENBQUNVLGdCQUFnQixDQUFDdkIsSUFBSSxFQUFFdkIsU0FBUyxDQUFDLENBQUU7UUFDaEYrQyxLQUFLLEVBQUVDLGdCQUFnQixDQUFDQyxNQUFNLENBQUNULG1CQUFtQixDQUFDVSxTQUFTLENBQUMsQ0FBQyxFQUFFO1VBQUVDLE9BQU8sRUFBRVg7UUFBb0IsQ0FBQyxDQUFFO1FBQ2xHWSxXQUFXLEVBQUVKLGdCQUFnQixDQUFDRCxLQUFLLENBQUNMLDhCQUE4QixDQUFDUSxTQUFTLENBQUMsQ0FBQyxFQUFFO1VBQy9FQyxPQUFPLEVBQUVUO1FBQ1YsQ0FBQyxDQUFFO1FBQ0hXLEtBQUssRUFBQyxNQUFNO1FBQ1pDLFFBQVEsRUFBRUMsaUJBQWlCLENBQUNDLEVBQUUsQ0FBQ0Msb0JBQW9CLENBQUNoRSxRQUFRLENBQUMsRUFBRSxJQUFJLENBQUNiLGtCQUFrQixDQUFDOEUsUUFBUSxDQUFDMUQsU0FBUyxDQUFDLENBQUMsQ0FBRTtRQUM3RzJELE9BQU8sRUFBRUMsV0FBVyxDQUFDQyx3QkFBd0IsQ0FBQ3JCLG1CQUFtQixDQUFDVSxTQUFTLENBQUMsQ0FBQyxFQUFFO1VBQUVDLE9BQU8sRUFBRVg7UUFBb0IsQ0FBQyxDQUFFO1FBQ2pIc0IsU0FBUyxFQUFFekMsWUFBWSxDQUFDNUIsUUFBUSxDQUFDLEdBQUdjLFFBQVEsQ0FBQyxDQUFDUCxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUMsR0FBR21CLFNBQVU7UUFDNUU0QyxRQUFRLEVBQUUsSUFBSSxDQUFDdkUsV0FBVyxDQUFDQyxRQUFRLENBQUU7UUFDckN1RSxVQUFVLEVBQUUsSUFBSSxDQUFDNUMsaUJBQWlCLENBQUNwQixTQUFTLEVBQUVQLFFBQVEsRUFBRVEsa0JBQWtCLENBQUU7UUFDNUVnRSxVQUFVLEVBQUUvRCxJQUFBLENBQUNnRSxVQUFVO1VBQWlCbkIsS0FBSyxFQUFFL0M7UUFBVSxHQUE3QixXQUErQixDQUFFO1FBQzdEbUUsVUFBVSxFQUFFLElBQUksQ0FBQ0MsZ0JBQWdCLENBQUNDLElBQUksQ0FBQyxJQUFJLENBQUU7UUFDN0NDLE1BQU0sRUFBRSxJQUFJLENBQUNDLFlBQVksQ0FBQ0YsSUFBSSxDQUFDLElBQUk7TUFBRSxDQUNyQyxDQUNEO01BRUQsSUFBSSxDQUFDbEcsb0JBQW9CLENBQUNxRyxJQUFJLENBQUM7UUFDOUJDLFlBQVksRUFBRSxLQUFLO1FBQ25COUIsS0FBSyxFQUFFQSxLQUFLO1FBQ1pJLEtBQUssRUFBRUosS0FBSyxDQUFDK0IsUUFBUSxDQUFDLENBQUM7UUFDdkJDLGlCQUFpQixFQUFFeEQsU0FBUztRQUM1QnlELFFBQVEsRUFBRSxLQUFLO1FBQ2ZuRCxZQUFZLEVBQUV6QjtNQUNmLENBQUMsQ0FBQztNQUVGLE9BQ0M2RSxLQUFBLENBQUFDLFNBQUE7UUFBQTFFLFFBQUEsR0FDQ0YsSUFBQSxDQUFDNkUsS0FBSztVQUFDQyxJQUFJLEVBQUV2RixRQUFRLENBQUNDLFdBQVcsQ0FBQ0MsTUFBTSxFQUFFb0Y7UUFBTSxDQUFFLENBQUMsRUFDbERwQyxLQUFLO01BQUEsQ0FDTCxDQUFDO0lBRUw7O0lBRUE7QUFDRDtBQUNBLE9BRkM7SUFBQTVELE1BQUEsQ0FHUWtHLFNBQVMsR0FBakIsU0FBUUEsU0FBU0EsQ0FBQSxFQUFTO01BQ3pCLE1BQU1DLFVBQVUsR0FBRyxJQUFJLENBQUMvRyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsQ0FBQ3dFLEtBQUs7TUFDckQsTUFBTXdDLFNBQVMsR0FBR0QsVUFBVSxDQUFDRSxZQUFZLENBQUMsQ0FBMkI7TUFDckVELFNBQVMsQ0FBQ0UsVUFBVSxHQUFHO1FBQUVDLE1BQU0sRUFBRTtNQUFLLENBQUM7TUFDdkNKLFVBQVUsQ0FBQ0ssS0FBSyxDQUFDSixTQUFTLENBQUM7SUFDNUI7O0lBRUE7QUFDRDtBQUNBO0FBQ0EsT0FIQztJQUFBcEcsTUFBQSxDQUlReUcsWUFBWSxHQUFwQixTQUFRQSxZQUFZQSxDQUFBLEVBQVc7TUFDOUIsTUFBTUMsYUFBYSxHQUFHQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUN4SCxhQUFhLElBQUksSUFBSSxDQUFDRixZQUFZLENBQUM7TUFDL0UsTUFBTVMsUUFBUSxHQUFHLElBQUksQ0FBQ0YsU0FBUyxDQUFDRyxXQUFXLENBQUMsSUFBSSxDQUFDWixlQUFlLENBQUNhLE9BQU8sQ0FBQyxDQUFDLENBQUM7TUFDM0UsTUFBTWdILFdBQVcsR0FBRyxJQUFJLENBQUNwSCxTQUFTLENBQUNrRSxvQkFBb0IsQ0FBQ2hFLFFBQVEsQ0FBRTtNQUNsRSxNQUFNbUgsVUFBVSxHQUFHQywyQkFBMkIsQ0FBWUYsV0FBVyxDQUFDO01BRXRFLElBQUksQ0FBQ3hILG9CQUFvQixHQUFHLEVBQUU7TUFFOUIsTUFBTTJILGdCQUFnQixHQUFHTCxhQUFhLENBQUNNLE9BQU8sQ0FDN0MsSUFBSSxDQUFDOUgsSUFBSSxLQUFLLFlBQVksR0FDdkIsd0RBQXdELEdBQ3hELDBEQUNKLENBQUM7TUFDRCxNQUFNK0gsU0FBUyxHQUNkOUYsSUFBQSxDQUFDK0YsTUFBTTtRQUFDakIsSUFBSSxFQUFFUyxhQUFhLENBQUNNLE9BQU8sQ0FBQyx5Q0FBeUMsQ0FBRTtRQUFDRyxLQUFLLEVBQUUsSUFBSSxDQUFDQyxRQUFRLENBQUM5QixJQUFJLENBQUMsSUFBSTtNQUFFLENBQUUsQ0FDbEg7TUFDRCxPQUNDbkUsSUFBQSxDQUFDa0csTUFBTTtRQUNOOUYsRUFBRSxFQUFFQyxRQUFRLENBQUMsQ0FBQyxjQUFjLEVBQUU5QixRQUFRLENBQUMsQ0FBRTtRQUN6QzRILEtBQUssRUFBRVosYUFBYSxDQUFDTSxPQUFPLENBQUMsMENBQTBDLENBQUU7UUFDekVkLFNBQVMsRUFBRUEsQ0FBQSxLQUFZO1VBQ3RCLElBQUksQ0FBQ0EsU0FBUyxDQUFDLENBQUM7UUFDakIsQ0FBRTtRQUNGcUIsU0FBUyxFQUFFLElBQUs7UUFDaEJDLFNBQVMsRUFBRSxJQUFLO1FBQ2hCQyxZQUFZLEVBQUVSLFNBQVUsQ0FBQztRQUFBO1FBQUE1RixRQUFBLEVBRXhCO1VBQ0FxRyxXQUFXLEVBQUV2RyxJQUFBLENBQUMrRixNQUFNO1lBQUNqQixJQUFJLEVBQUVjLGdCQUFpQjtZQUFDSSxLQUFLLEVBQUUsSUFBSSxDQUFDUSxJQUFJLENBQUNyQyxJQUFJLENBQUMsSUFBSSxDQUFFO1lBQUNzQyxJQUFJLEVBQUM7VUFBWSxDQUFFLENBQUM7VUFDOUZYLFNBQVMsRUFBRUEsU0FBUztVQUNwQlksT0FBTyxFQUNOMUcsSUFBQSxDQUFDMkcsVUFBVTtZQUFBekcsUUFBQSxFQUNULElBQUksQ0FBQ3JDLFVBQVUsQ0FBQytJLEdBQUcsQ0FBRXZGLElBQUksSUFBSztjQUM5QixPQUFPLElBQUksQ0FBQ1ksaUJBQWlCLENBQUNaLElBQUksRUFBRXFFLFVBQVUsRUFBRW5ILFFBQVEsQ0FBQztZQUMxRCxDQUFDO1VBQUMsQ0FDUztRQUVkO01BQUMsQ0FDTSxDQUFDO0lBRVg7O0lBRUE7QUFDRDtBQUNBO0FBQ0EsT0FIQztJQUFBTSxNQUFBLENBSU9nSSxvQkFBb0IsR0FBM0IsU0FBT0Esb0JBQW9CQSxDQUFDQyxRQUFtQixFQUFRO01BQ3REO01BQ0E7TUFDQTtNQUNBLE1BQU1DLGVBQWUsR0FBRyxJQUFJLENBQUMxSSxTQUFTLENBQUNHLFdBQVcsQ0FBQyxJQUFJLENBQUNaLGVBQWUsQ0FBQ2EsT0FBTyxDQUFDLENBQUMsQ0FBQztNQUVsRixLQUFLLE1BQU11SSxPQUFPLElBQUlGLFFBQVEsRUFBRTtRQUMvQixLQUFLLE1BQU1HLE1BQU0sSUFBSUQsT0FBTyxDQUFDRSxVQUFVLENBQUMsQ0FBQyxFQUFFO1VBQzFDLE1BQU1DLGNBQWMsR0FBRyxJQUFJLENBQUM5SSxTQUFTLENBQUNHLFdBQVcsQ0FBQ3lJLE1BQU0sQ0FBQztVQUN6RCxNQUFNRyxhQUFhLEdBQUcsSUFBSSxDQUFDbkosb0JBQW9CLENBQUNvSixJQUFJLENBQ2xEQyxtQkFBbUIsSUFBSyxHQUFHUCxlQUFlLElBQUlPLG1CQUFtQixDQUFDL0YsWUFBWSxFQUFFLEtBQUs0RixjQUN2RixDQUFDO1VBQ0QsSUFBSUMsYUFBYSxFQUFFO1lBQ2xCQSxhQUFhLENBQUMxQyxRQUFRLEdBQUcsSUFBSTtZQUM3QjBDLGFBQWEsQ0FBQzNFLEtBQUssQ0FBQzhFLGFBQWEsQ0FBQ1AsT0FBTyxDQUFDUSxPQUFPLENBQUMsQ0FBQyxJQUFJQyxXQUFXLENBQUNDLEtBQUssQ0FBQztZQUN6RU4sYUFBYSxDQUFDM0UsS0FBSyxDQUFDa0YsaUJBQWlCLENBQUNYLE9BQU8sQ0FBQ1ksVUFBVSxDQUFDLENBQUMsQ0FBQztZQUUzRCxNQUFNQyxpQkFBaUIsR0FBR2IsT0FBTyxDQUFDYyxhQUFhLENBQUMsQ0FBQztZQUNqRCxJQUFJLENBQUNELGlCQUFpQixDQUFDckUsUUFBUSxDQUFDNEQsYUFBYSxDQUFDM0UsS0FBSyxDQUFDc0YsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFO2NBQzdERixpQkFBaUIsQ0FBQ3ZELElBQUksQ0FBQzhDLGFBQWEsQ0FBQzNFLEtBQUssQ0FBQ3NGLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDcEQ7VUFDRDtRQUNEO01BQ0Q7SUFDRDs7SUFFQTtBQUNEO0FBQ0E7QUFDQSxPQUhDO0lBQUFsSixNQUFBLENBSVFtSixnQ0FBZ0MsR0FBeEMsU0FBUUEsZ0NBQWdDQSxDQUFDQyxnQkFBd0IsRUFBUTtNQUN4RSxNQUFNQyxXQUFXLEdBQUdDLFNBQVMsQ0FBQ0MsZUFBZSxDQUFDLENBQUMsQ0FBQ0MsT0FBTyxDQUFDLENBQUM7TUFDekQ7TUFDQSxNQUFNQyxnQkFBZ0IsR0FBR0osV0FBVyxDQUFDSyxNQUFNLENBQUVDLEdBQVksSUFDeERBLEdBQUcsQ0FBQ1YsYUFBYSxDQUFDLENBQUMsQ0FBQ1csSUFBSSxDQUFFQyxTQUFpQixJQUFLQSxTQUFTLENBQUNsRixRQUFRLENBQUN5RSxnQkFBZ0IsQ0FBQyxDQUNyRixDQUFDO01BQ0RFLFNBQVMsQ0FBQ1EsY0FBYyxDQUFDTCxnQkFBZ0IsQ0FBQztJQUMzQzs7SUFFQTtBQUNEO0FBQ0E7QUFDQSxPQUhDO0lBQUF6SixNQUFBLENBSVFxRixnQkFBZ0IsR0FBeEIsU0FBUUEsZ0JBQWdCQSxDQUFDMEUsZUFBMEMsRUFBUTtNQUMxRSxNQUFNQyxPQUFPLEdBQUdELGVBQWUsQ0FBQ0UsU0FBUyxDQUFXLENBQUMsQ0FBQ2YsS0FBSyxDQUFDLENBQUM7TUFDN0QsSUFBSSxDQUFDQyxnQ0FBZ0MsQ0FBQ2EsT0FBTyxDQUFDO0lBQy9DOztJQUVBO0FBQ0Q7QUFDQTtBQUNBLE9BSEM7SUFBQWhLLE1BQUEsQ0FJY3dGLFlBQVksR0FBMUIsZUFBY0EsWUFBWUEsQ0FBQzBFLFdBQThCLEVBQWlCO01BQ3pFLE1BQU10RyxLQUFLLEdBQUdzRyxXQUFXLENBQUNELFNBQVMsQ0FBVyxDQUFDO01BRS9DLE1BQU14QixtQkFBbUIsR0FBRyxJQUFJLENBQUNySixvQkFBb0IsQ0FBQ29KLElBQUksQ0FBRUMsbUJBQW1CLElBQUtBLG1CQUFtQixDQUFDN0UsS0FBSyxLQUFLQSxLQUFLLENBQUM7TUFDeEgsSUFBSTZFLG1CQUFtQixLQUFLckcsU0FBUyxFQUFFO1FBQ3RDLElBQUksQ0FBQytHLGdDQUFnQyxDQUFDdkYsS0FBSyxDQUFDc0YsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNwRFQsbUJBQW1CLENBQUM3QyxpQkFBaUIsR0FBR3NFLFdBQVcsQ0FBQ0MsWUFBWSxDQUFDLFNBQVMsQ0FBQztRQUMzRSxJQUFJO1VBQ0gxQixtQkFBbUIsQ0FBQ3pFLEtBQUssR0FBRyxNQUFNeUUsbUJBQW1CLENBQUM3QyxpQkFBaUI7VUFDdkU2QyxtQkFBbUIsQ0FBQzVDLFFBQVEsR0FBRyxLQUFLO1VBQ3BDNEMsbUJBQW1CLENBQUM3RSxLQUFLLENBQUM4RSxhQUFhLENBQUNFLFdBQVcsQ0FBQ3dCLElBQUksQ0FBQztRQUMxRCxDQUFDLENBQUMsT0FBT0MsS0FBSyxFQUFFO1VBQ2YsT0FBTzVCLG1CQUFtQixDQUFDekUsS0FBSztVQUNoQ3lFLG1CQUFtQixDQUFDNUMsUUFBUSxHQUFHLElBQUk7UUFDcEM7TUFDRDtJQUNEOztJQUVBO0FBQ0Q7QUFDQSxPQUZDO0lBQUE3RixNQUFBLENBR2MySCxJQUFJLEdBQWxCLGVBQWNBLElBQUlBLENBQUEsRUFBa0I7TUFDbkM7TUFDQSxNQUFNakIsYUFBYSxHQUFHQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMxSCxZQUFZLENBQUM7TUFDekQsSUFBSSxNQUFNcUwsYUFBYSxDQUFDQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUNuTCxvQkFBb0IsRUFBRXNILGFBQWEsQ0FBQyxFQUFFO1FBQ3JGLElBQUksQ0FBQ3BHLGNBQWMsQ0FBQyxJQUFJLENBQUM7TUFDMUI7SUFDRDs7SUFFQTtBQUNEO0FBQ0EsT0FGQztJQUFBTixNQUFBLENBR1FvSCxRQUFRLEdBQWhCLFNBQVFBLFFBQVFBLENBQUEsRUFBUztNQUN4QixJQUFJLENBQUM5RyxjQUFjLENBQUMsS0FBSyxDQUFDO0lBQzNCOztJQUVBO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUxDO0lBQUFOLE1BQUEsQ0FNUXdLLFFBQVEsR0FBaEIsU0FBUUEsUUFBUUEsQ0FBQ0MsQ0FBMEMsRUFBUTtNQUNsRUEsQ0FBQyxDQUFDQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7TUFDWixJQUFJLENBQUN0RCxRQUFRLENBQUMsQ0FBQztJQUNoQjs7SUFFQTtBQUNEO0FBQ0E7QUFDQSxPQUhDO0lBQUFwSCxNQUFBLENBSUEySyxVQUFVLEdBQVYsU0FBQUEsVUFBVUEsQ0FBQSxFQUFXO01BQ3BCLElBQUksSUFBSSxDQUFDeEgsTUFBTSxFQUFFO1FBQ2hCLE1BQU0sSUFBSTBGLEtBQUssQ0FBQyxxQ0FBcUMsQ0FBQztNQUN2RDtNQUVBLElBQUksQ0FBQzFGLE1BQU0sR0FBRyxJQUFJLENBQUNzRCxZQUFZLENBQUMsQ0FBQztNQUNqQyxJQUFJLENBQUN0RCxNQUFNLENBQUN5SCxnQkFBZ0IsQ0FBQyxJQUFJLENBQUNKLFFBQVEsQ0FBQ2xGLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztNQUN0RCxJQUFJLENBQUNuRyxhQUFhLEVBQUUwTCxZQUFZLENBQUMsSUFBSSxDQUFDMUgsTUFBTSxDQUFDO01BQzdDLElBQUksQ0FBQ0EsTUFBTSxDQUFDMkgsaUJBQWlCLENBQUMsSUFBSSxDQUFDL0wsZUFBZSxDQUFDO01BRW5ELElBQUksQ0FBQ29FLE1BQU0sQ0FBQzRILElBQUksQ0FBQyxDQUFDO01BRWxCLE9BQU8sSUFBSSxDQUFDNUgsTUFBTTtJQUNuQjs7SUFFQTtBQUNEO0FBQ0EsT0FGQztJQUFBbkQsTUFBQSxDQUdBZ0wsV0FBVyxHQUFYLFNBQUFBLFdBQVdBLENBQUEsRUFBUztNQUNuQjtNQUNBLEtBQUssTUFBTXZDLG1CQUFtQixJQUFJLElBQUksQ0FBQ3JKLG9CQUFvQixFQUFFO1FBQzVELE1BQU00SyxPQUFPLEdBQUd2QixtQkFBbUIsQ0FBQzdFLEtBQUssQ0FBQ3NGLEtBQUssQ0FBQyxDQUFDO1FBQ2pELElBQUksQ0FBQ0MsZ0NBQWdDLENBQUNhLE9BQU8sQ0FBQztNQUMvQztNQUVBLElBQUksSUFBSSxDQUFDN0csTUFBTSxJQUFJOEgsVUFBVSxDQUFDQyxRQUFRLENBQUMsSUFBSSxDQUFDL0gsTUFBTSxDQUFDLEVBQUU7UUFDcEQ4SCxVQUFVLENBQUNFLE1BQU0sQ0FBQyxJQUFJLENBQUNoSSxNQUFNLENBQUMsQ0FBQyxDQUFDO01BQ2pDO01BQ0EsSUFBSSxDQUFDQSxNQUFNLEVBQUVpSSxLQUFLLENBQUMsQ0FBQztNQUNwQixJQUFJLENBQUNqSSxNQUFNLEVBQUVrSSxPQUFPLENBQUMsQ0FBQztNQUN0QixJQUFJLENBQUNsSSxNQUFNLEdBQUdmLFNBQVM7SUFDeEI7O0lBRUE7QUFDRDtBQUNBO0FBQ0EsT0FIQztJQUFBcEMsTUFBQSxDQUlBc0wsT0FBTyxHQUFQLFNBQUFBLE9BQU9BLENBQUNDLElBQWEsRUFBUTtNQUM1QixJQUFJLENBQUMsSUFBSSxDQUFDcEksTUFBTSxFQUFFO1FBQ2pCLE9BQU8sQ0FBQztNQUNUO01BRUEsSUFBSW9JLElBQUksRUFBRTtRQUNUTixVQUFVLENBQUNPLElBQUksQ0FBQyxJQUFJLENBQUNySSxNQUFNLENBQUM7TUFDN0IsQ0FBQyxNQUFNO1FBQ044SCxVQUFVLENBQUNFLE1BQU0sQ0FBQyxJQUFJLENBQUNoSSxNQUFNLENBQUM7TUFDL0I7SUFDRDs7SUFFQTtBQUNEO0FBQ0E7QUFDQSxPQUhDO0lBQUFuRCxNQUFBLENBSUF5TCxNQUFNLEdBQU4sU0FBQUEsTUFBTUEsQ0FBQSxFQUFZO01BQ2pCLE9BQU8sSUFBSSxDQUFDdEksTUFBTSxFQUFFc0ksTUFBTSxDQUFDLENBQUMsSUFBSSxLQUFLO0lBQ3RDLENBQUM7SUFBQSxPQUFBM00sWUFBQTtFQUFBO0VBQUFpQixRQUFBLEdBQUFqQixZQUFBO0VBQUEsT0FBQWlCLFFBQUE7QUFBQSIsImlnbm9yZUxpc3QiOltdfQ==
|
|
417
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDb250ZXh0VXBkYXRlRGlhbG9nRXZlbnRQcm92aWRlciIsIl9kZWMiLCJkZWZpbmVVSTVDbGFzcyIsIl9kZWMyIiwiZXZlbnQiLCJfY2xhc3MiLCJfY2xhc3MyIiwiX0V2ZW50UHJvdmlkZXIiLCJfdGhpcyIsIl9sZW4iLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJhcmdzIiwiQXJyYXkiLCJfa2V5IiwiY2FsbCIsIl9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IiwiX2Rlc2NyaXB0b3IiLCJfaW5oZXJpdHNMb29zZSIsIkV2ZW50UHJvdmlkZXIiLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIiwicHJvdG90eXBlIiwiY29uZmlndXJhYmxlIiwiZW51bWVyYWJsZSIsIndyaXRhYmxlIiwiaW5pdGlhbGl6ZXIiLCJDcmVhdGVEaWFsb2ciLCJjb250ZXh0VG9VcGRhdGUiLCJmaWVsZE5hbWVzIiwiYXBwQ29tcG9uZW50IiwibW9kZSIsInBhcmVudENvbnRyb2wiLCJhY3Rpb25QYXJhbWV0ZXJJbmZvcyIsImV2ZW50UHJvdmlkZXIiLCJtb2RlbCIsImdldE1vZGVsIiwibWV0YU1vZGVsIiwiZ2V0TWV0YU1vZGVsIiwibWV0YVBhdGgiLCJnZXRNZXRhUGF0aCIsImdldFBhdGgiLCJyZXF1aXJlZEZpZWxkTmFtZXMiLCJnZXRSZXF1aXJlZFByb3BlcnRpZXNGcm9tSW5zZXJ0UmVzdHJpY3Rpb25zIiwiX2V4cG9ydHMiLCJfcHJvdG8iLCJhdHRhY2hFeGl0RGlhbG9nIiwib0RhdGEiLCJmbkZ1bmN0aW9uIiwib0xpc3RlbmVyIiwiYXR0YWNoRXZlbnQiLCJmaXJlRXhpdERpYWxvZyIsImFjY2VwdCIsImZpcmVFdmVudCIsImdldEVkaXRNb2RlIiwicHJvcGVydHkiLCJhbm5vdGF0aW9ucyIsIkNvbW1vbiIsIkZpZWxkQ29udHJvbCIsImZpZWxkQ29udHJvbCIsIiRFbnVtTWVtYmVyIiwiZ2V0RmllbGRWSFR5cGVBaGVhZCIsImZpZWxkTmFtZSIsInByb3BlcnR5T2JqZWN0UGF0aCIsIl9qc3giLCJQb3BvdmVyIiwiY2hpbGRyZW4iLCJNVGFibGUiLCJpZCIsImdlbmVyYXRlIiwiY2FzZVNlbnNpdGl2ZSIsInVzZUNhc2VTZW5zaXRpdmVGaWx0ZXJSZXF1ZXN0cyIsImNvbnZlcnRlZFR5cGVzIiwiZW50aXR5Q29udGFpbmVyIiwiQ2FwYWJpbGl0aWVzIiwiRmlsdGVyRnVuY3Rpb25zIiwidXNlQXNWYWx1ZUhlbHAiLCJWYWx1ZUxpc3RXaXRoRml4ZWRWYWx1ZXMiLCJnZXRGaWVsZFZIRGlhbG9nIiwidmFsdWVPZiIsIlZIRGlhbG9nIiwidW5kZWZpbmVkIiwiZ2V0RmllbGRWYWx1ZUhlbHAiLCJoYXNWYWx1ZUhlbHAiLCJ2aERlbGVnYXRlIiwibmFtZSIsInBheWxvYWQiLCJwcm9wZXJ0eVBhdGgiLCJnZXRUYXJnZXRPYmplY3RQYXRoIiwicXVhbGlmaWVycyIsInZhbHVlSGVscFF1YWxpZmllciIsIlZhbHVlSGVscCIsImRlbGVnYXRlIiwidmFsaWRhdGVJbnB1dCIsInJlcXVpcmVzVmFsaWRhdGlvbiIsInR5cGVhaGVhZCIsImRpYWxvZyIsImNyZWF0ZUZvcm1FbGVtZW50IiwibGlzdE9iamVjdFBhdGgiLCJsaXN0TWV0YVBhdGgiLCJlbmhhbmNlRGF0YU1vZGVsUGF0aCIsInRhcmdldE9iamVjdCIsInByb3BlcnR5TWV0YUNvbnRleHQiLCJjcmVhdGVCaW5kaW5nQ29udGV4dCIsInByb3BlcnR5UGxhY2VIb2xkZXJNZXRhQ29udGV4dCIsImZpZWxkIiwiTURDRmllbGQiLCJyZXRyaWV2ZVRleHRGcm9tVmFsdWVMaXN0IiwidGFyZ2V0RW50aXR5VHlwZSIsInZhbHVlIiwiQW5ub3RhdGlvbkhlbHBlciIsImZvcm1hdCIsImdldE9iamVjdCIsImNvbnRleHQiLCJwbGFjZWhvbGRlciIsIndpZHRoIiwicmVxdWlyZWQiLCJjb21waWxlRXhwcmVzc2lvbiIsIm9yIiwiaXNSZXF1aXJlZEV4cHJlc3Npb24iLCJpbmNsdWRlcyIsImRpc3BsYXkiLCJGaWVsZEhlbHBlciIsImdldEFQRGlhbG9nRGlzcGxheUZvcm1hdCIsInZhbHVlSGVscCIsImVkaXRNb2RlIiwiZGVwZW5kZW50cyIsImN1c3RvbURhdGEiLCJDdXN0b21EYXRhIiwibGl2ZUNoYW5nZSIsImhhbmRsZUxpdmVDaGFuZ2UiLCJiaW5kIiwiY2hhbmdlIiwiaGFuZGxlQ2hhbmdlIiwicHVzaCIsImlzTXVsdGlWYWx1ZSIsImdldFZhbHVlIiwidmFsaWRhdGlvblByb21pc2UiLCJoYXNFcnJvciIsIl9qc3hzIiwiX0ZyYWdtZW50IiwiTGFiZWwiLCJ0ZXh0IiwiYWZ0ZXJPcGVuIiwiZmlyc3RGaWVsZCIsImZvY3VzSW5mbyIsImdldEZvY3VzSW5mbyIsInRhcmdldEluZm8iLCJzaWxlbnQiLCJmb2N1cyIsImNyZWF0ZURpYWxvZyIsInJlc291cmNlTW9kZWwiLCJnZXRSZXNvdXJjZU1vZGVsIiwibWV0YUNvbnRleHQiLCJvYmplY3RQYXRoIiwiZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzIiwiYmVnaW5CdXR0b25MYWJlbCIsImdldFRleHQiLCJlbmRCdXR0b24iLCJCdXR0b24iLCJwcmVzcyIsIm9uQ2FuY2VsIiwiRGlhbG9nIiwidGl0bGUiLCJ0YXJnZXRFbnRpdHlTZXQiLCJyZXNpemFibGUiLCJkcmFnZ2FibGUiLCJpbml0aWFsRm9jdXMiLCJiZWdpbkJ1dHRvbiIsIm9uT0siLCJ0eXBlIiwiY29udGVudCIsIlNpbXBsZUZvcm0iLCJtYXAiLCJkaXNwbGF5RXJyb3JNZXNzYWdlcyIsIm1lc3NhZ2VzIiwiY29udGV4dE1ldGFQYXRoIiwibWVzc2FnZSIsInRhcmdldCIsImdldFRhcmdldHMiLCJ0YXJnZXRNZXRhUGF0aCIsInBhcmFtZXRlckluZm8iLCJmaW5kIiwiYWN0aW9uUGFyYW1ldGVySW5mbyIsInNldFZhbHVlU3RhdGUiLCJnZXRUeXBlIiwiTWVzc2FnZVR5cGUiLCJFcnJvciIsInNldFZhbHVlU3RhdGVUZXh0IiwiZ2V0TWVzc2FnZSIsIm1lc3NhZ2VDb250cm9sSURzIiwiZ2V0Q29udHJvbElkcyIsImdldElkIiwicmVtb3ZlTWVzc2FnZXNGb3JBY3Rpb25QYXJhbWV0ZXIiLCJtZXNzYWdlQ29udHJvbElkIiwiYWxsTWVzc2FnZXMiLCJNZXNzYWdpbmciLCJnZXRNZXNzYWdlTW9kZWwiLCJnZXREYXRhIiwicmVsZXZhbnRNZXNzYWdlcyIsImZpbHRlciIsIm1zZyIsInNvbWUiLCJjb250cm9sSWQiLCJyZW1vdmVNZXNzYWdlcyIsImxpdmVDaGFuZ2VFdmVudCIsImZpZWxkSWQiLCJnZXRTb3VyY2UiLCJjaGFuZ2VFdmVudCIsImdldFBhcmFtZXRlciIsIk5vbmUiLCJlcnJvciIsIkFjdGlvblJ1bnRpbWUiLCJ2YWxpZGF0ZVByb3BlcnRpZXMiLCJvbkVzY2FwZSIsInAiLCJyZWplY3QiLCJvcGVuRGlhbG9nIiwic2V0RXNjYXBlSGFuZGxlciIsImFkZERlcGVuZGVudCIsInNldEJpbmRpbmdDb250ZXh0Iiwib3BlbiIsImNsb3NlRGlhbG9nIiwiQnVzeUxvY2tlciIsImlzTG9ja2VkIiwidW5sb2NrIiwiY2xvc2UiLCJkZXN0cm95Iiwic2V0QnVzeSIsImJ1c3kiLCJsb2NrIiwiaXNPcGVuIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJDcmVhdGVEaWFsb2cudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRW50aXR5U2V0IH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzXCI7XG5pbXBvcnQgeyB0eXBlIFByb3BlcnR5IH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzXCI7XG5pbXBvcnQgeyBjb21waWxlRXhwcmVzc2lvbiwgb3IgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB7IGRlZmluZVVJNUNsYXNzLCBldmVudCB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB0eXBlIHsgQWN0aW9uUGFyYW1ldGVySW5mbyB9IGZyb20gXCJzYXAvZmUvY29yZS9BY3Rpb25SdW50aW1lXCI7XG5pbXBvcnQgQWN0aW9uUnVudGltZSBmcm9tIFwic2FwL2ZlL2NvcmUvQWN0aW9uUnVudGltZVwiO1xuaW1wb3J0IHR5cGUgQXBwQ29tcG9uZW50IGZyb20gXCJzYXAvZmUvY29yZS9BcHBDb21wb25lbnRcIjtcbmltcG9ydCB0eXBlIHsgU3RhbmRhcmREaWFsb2cgfSBmcm9tIFwic2FwL2ZlL2NvcmUvVUlQcm92aWRlclwiO1xuaW1wb3J0IEJ1c3lMb2NrZXIgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL0J1c3lMb2NrZXJcIjtcbmltcG9ydCB7IGdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL01ldGFNb2RlbENvbnZlcnRlclwiO1xuaW1wb3J0IHsgZ2V0UmVxdWlyZWRQcm9wZXJ0aWVzRnJvbUluc2VydFJlc3RyaWN0aW9ucyB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL01ldGFNb2RlbEZ1bmN0aW9uXCI7XG5pbXBvcnQgeyBnZXRSZXNvdXJjZU1vZGVsIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvUmVzb3VyY2VNb2RlbEhlbHBlclwiO1xuaW1wb3J0IHsgZ2VuZXJhdGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9TdGFibGVJZEhlbHBlclwiO1xuaW1wb3J0IHsgZW5oYW5jZURhdGFNb2RlbFBhdGgsIGdldFRhcmdldE9iamVjdFBhdGgsIHR5cGUgRGF0YU1vZGVsT2JqZWN0UGF0aCB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0RhdGFNb2RlbFBhdGhIZWxwZXJcIjtcbmltcG9ydCB7IGlzUmVxdWlyZWRFeHByZXNzaW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvRmllbGRDb250cm9sSGVscGVyXCI7XG5pbXBvcnQgeyBoYXNWYWx1ZUhlbHAgfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9Qcm9wZXJ0eUhlbHBlclwiO1xuaW1wb3J0IEZpZWxkSGVscGVyIGZyb20gXCJzYXAvZmUvbWFjcm9zL2ZpZWxkL0ZpZWxkSGVscGVyXCI7XG5pbXBvcnQgeyByZXF1aXJlc1ZhbGlkYXRpb24sIHVzZUNhc2VTZW5zaXRpdmVGaWx0ZXJSZXF1ZXN0cyB9IGZyb20gXCJzYXAvZmUvbWFjcm9zL2ludGVybmFsL3ZhbHVlaGVscC9WYWx1ZUhlbHBUZW1wbGF0aW5nXCI7XG5pbXBvcnQgQnV0dG9uIGZyb20gXCJzYXAvbS9CdXR0b25cIjtcbmltcG9ydCBEaWFsb2cgZnJvbSBcInNhcC9tL0RpYWxvZ1wiO1xuaW1wb3J0IExhYmVsIGZyb20gXCJzYXAvbS9MYWJlbFwiO1xuaW1wb3J0IEV2ZW50UHJvdmlkZXIgZnJvbSBcInNhcC91aS9iYXNlL0V2ZW50UHJvdmlkZXJcIjtcbmltcG9ydCB0eXBlIENvbnRyb2wgZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCBDdXN0b21EYXRhIGZyb20gXCJzYXAvdWkvY29yZS9DdXN0b21EYXRhXCI7XG5pbXBvcnQgTWVzc2FnaW5nIGZyb20gXCJzYXAvdWkvY29yZS9NZXNzYWdpbmdcIjtcbmltcG9ydCB0eXBlIE1lc3NhZ2UgZnJvbSBcInNhcC91aS9jb3JlL21lc3NhZ2UvTWVzc2FnZVwiO1xuaW1wb3J0IE1lc3NhZ2VUeXBlIGZyb20gXCJzYXAvdWkvY29yZS9tZXNzYWdlL01lc3NhZ2VUeXBlXCI7XG5pbXBvcnQgU2ltcGxlRm9ybSBmcm9tIFwic2FwL3VpL2xheW91dC9mb3JtL1NpbXBsZUZvcm1cIjtcbmltcG9ydCBNRENGaWVsZCwgeyB0eXBlIEZpZWxkJENoYW5nZUV2ZW50IH0gZnJvbSBcInNhcC91aS9tZGMvRmllbGRcIjtcbmltcG9ydCBWYWx1ZUhlbHAgZnJvbSBcInNhcC91aS9tZGMvVmFsdWVIZWxwXCI7XG5pbXBvcnQgeyB0eXBlIEZpZWxkQmFzZSRMaXZlQ2hhbmdlRXZlbnQgfSBmcm9tIFwic2FwL3VpL21kYy9maWVsZC9GaWVsZEJhc2VcIjtcbmltcG9ydCBWSERpYWxvZyBmcm9tIFwic2FwL3VpL21kYy92YWx1ZWhlbHAvRGlhbG9nXCI7XG5pbXBvcnQgUG9wb3ZlciBmcm9tIFwic2FwL3VpL21kYy92YWx1ZWhlbHAvUG9wb3ZlclwiO1xuaW1wb3J0IE1UYWJsZSBmcm9tIFwic2FwL3VpL21kYy92YWx1ZWhlbHAvY29udGVudC9NVGFibGVcIjtcbmltcG9ydCBBbm5vdGF0aW9uSGVscGVyIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvQW5ub3RhdGlvbkhlbHBlclwiO1xuaW1wb3J0IHR5cGUgT0RhdGFWNENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9Db250ZXh0XCI7XG5pbXBvcnQgdHlwZSBPRGF0YU1ldGFNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTWV0YU1vZGVsXCI7XG5pbXBvcnQgdHlwZSBPRGF0YU1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFNb2RlbFwiO1xuXG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUuY29yZS5zZXJ2aWNlcy5Sb3V0aW5nU2VydmljZUV2ZW50aW5nXCIpXG5jbGFzcyBDb250ZXh0VXBkYXRlRGlhbG9nRXZlbnRQcm92aWRlciBleHRlbmRzIEV2ZW50UHJvdmlkZXIge1xuXHRAZXZlbnQoKVxuXHRleGl0RGlhbG9nITogRnVuY3Rpb247XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENyZWF0ZURpYWxvZyBpbXBsZW1lbnRzIFN0YW5kYXJkRGlhbG9nIHtcblx0cHJpdmF0ZSBkaWFsb2c/OiBEaWFsb2c7XG5cblx0cHJpdmF0ZSBtZXRhTW9kZWw6IE9EYXRhTWV0YU1vZGVsO1xuXG5cdHByaXZhdGUgcmVxdWlyZWRGaWVsZE5hbWVzOiBzdHJpbmdbXTtcblxuXHRwcml2YXRlIGFjdGlvblBhcmFtZXRlckluZm9zOiBBY3Rpb25QYXJhbWV0ZXJJbmZvW10gPSBbXTtcblxuXHRwcml2YXRlIGV2ZW50UHJvdmlkZXIgPSBuZXcgQ29udGV4dFVwZGF0ZURpYWxvZ0V2ZW50UHJvdmlkZXIoKTtcblxuXHRjb25zdHJ1Y3Rvcihcblx0XHRwcml2YXRlIGNvbnRleHRUb1VwZGF0ZTogT0RhdGFWNENvbnRleHQsXG5cdFx0cHJpdmF0ZSBmaWVsZE5hbWVzOiBzdHJpbmdbXSxcblx0XHRwcml2YXRlIGFwcENvbXBvbmVudDogQXBwQ29tcG9uZW50LFxuXHRcdHByaXZhdGUgbW9kZTogXCJTdGFuZGFsb25lXCIgfCBcIldpdGhOYXZpZ2F0aW9uXCIsXG5cdFx0cHJpdmF0ZSBwYXJlbnRDb250cm9sPzogQ29udHJvbFxuXHQpIHtcblx0XHRjb25zdCBtb2RlbDogT0RhdGFNb2RlbCA9IGNvbnRleHRUb1VwZGF0ZS5nZXRNb2RlbCgpO1xuXHRcdHRoaXMubWV0YU1vZGVsID0gbW9kZWwuZ2V0TWV0YU1vZGVsKCk7XG5cblx0XHRjb25zdCBtZXRhUGF0aCA9IHRoaXMubWV0YU1vZGVsLmdldE1ldGFQYXRoKGNvbnRleHRUb1VwZGF0ZS5nZXRQYXRoKCkpO1xuXHRcdHRoaXMucmVxdWlyZWRGaWVsZE5hbWVzID0gZ2V0UmVxdWlyZWRQcm9wZXJ0aWVzRnJvbUluc2VydFJlc3RyaWN0aW9ucyhtZXRhUGF0aCwgdGhpcy5tZXRhTW9kZWwpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEF0dGFjaGVzIGFuIGV2ZW50IGhhbmRsZXIgY2FsbGVkIHdoZW4gdGhlIHVzZXIgY2xvc2VzIHRoZSBkaWFsb2cgKGVpdGhlciB3aXRoIE9LIG9yIENhbmNlbCkuXG5cdCAqXG5cdCAqIFRoZSBldmVudCBoYXMgYW4gJ2FjY2VwdCcgcGFyYW1ldGVyIHRoYXQgaXMgdHJ1ZSAocmVzcC4gZmFsc2UpIGlmIHRoZSB1c2VyIGNsaWNrZWQgb24gT0sgKHJlc3AuIENhbmNlbCkuXG5cdCAqIEBwYXJhbSBvRGF0YSBQYXlsb2FkIG9iamVjdCB0aGF0IHdpbGwgYmUgcGFzc2VkIHRvIHRoZSBldmVudCBoYW5kbGVyIGFsb25nIHdpdGggdGhlIGV2ZW50IG9iamVjdCB3aGVuIGZpcmluZyB0aGUgZXZlbnRcblx0ICogQHBhcmFtIGZuRnVuY3Rpb24gVGhlIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBldmVudCBvY2N1cnNcblx0ICogQHBhcmFtIG9MaXN0ZW5lciBDb250ZXh0IG9iamVjdCB0byBjYWxsIHRoZSBldmVudCBoYW5kbGVyIHdpdGhcblx0ICovXG5cdGF0dGFjaEV4aXREaWFsb2cob0RhdGE6IG9iamVjdCwgZm5GdW5jdGlvbjogRnVuY3Rpb24sIG9MaXN0ZW5lcj86IG9iamVjdCk6IHZvaWQge1xuXHRcdHRoaXMuZXZlbnRQcm92aWRlci5hdHRhY2hFdmVudChcImV4aXREaWFsb2dcIiwgb0RhdGEsIGZuRnVuY3Rpb24sIG9MaXN0ZW5lcik7XG5cdH1cblxuXHRwcml2YXRlIGZpcmVFeGl0RGlhbG9nKGFjY2VwdDogYm9vbGVhbik6IHZvaWQge1xuXHRcdHRoaXMuZXZlbnRQcm92aWRlci5maXJlRXZlbnQoXCJleGl0RGlhbG9nXCIsIHsgYWNjZXB0IH0pO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIGVkaXRNb2RlIGZvciBhIHByb3BlcnR5LlxuXHQgKiBAcGFyYW0gcHJvcGVydHlcblx0ICogQHJldHVybnMgRGlzcGxheSBvciBFZGl0YWJsZVxuXHQgKi9cblx0cHJpdmF0ZSBnZXRFZGl0TW9kZShwcm9wZXJ0eTogUHJvcGVydHkpOiBzdHJpbmcge1xuXHRcdGlmIChwcm9wZXJ0eS5hbm5vdGF0aW9ucy5Db21tb24/LkZpZWxkQ29udHJvbCkge1xuXHRcdFx0Y29uc3QgZmllbGRDb250cm9sID0gcHJvcGVydHkuYW5ub3RhdGlvbnMuQ29tbW9uLkZpZWxkQ29udHJvbCBhcyB1bmtub3duIGFzIHsgJEVudW1NZW1iZXI/OiBzdHJpbmcgfTtcblx0XHRcdHJldHVybiBmaWVsZENvbnRyb2wuJEVudW1NZW1iZXIgPT09IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLkZpZWxkQ29udHJvbFR5cGUvUmVhZE9ubHlcIiA/IFwiRGlzcGxheVwiIDogXCJFZGl0YWJsZVwiO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4gXCJFZGl0YWJsZVwiO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIHRoZSBwb3BvdmVyIGZvciB0aGUgVkggdHlwZWFoZWFkLlxuXHQgKiBAcGFyYW0gZmllbGROYW1lXG5cdCAqIEBwYXJhbSBwcm9wZXJ0eVxuXHQgKiBAcGFyYW0gcHJvcGVydHlPYmplY3RQYXRoXG5cdCAqIEByZXR1cm5zIFRoZSBwb3BvdmVyXG5cdCAqL1xuXHRwcml2YXRlIGdldEZpZWxkVkhUeXBlQWhlYWQoZmllbGROYW1lOiBzdHJpbmcsIHByb3BlcnR5OiBQcm9wZXJ0eSwgcHJvcGVydHlPYmplY3RQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoPFByb3BlcnR5Pik6IFBvcG92ZXIge1xuXHRcdHJldHVybiAoXG5cdFx0XHQ8UG9wb3Zlcj5cblx0XHRcdFx0PE1UYWJsZVxuXHRcdFx0XHRcdGlkPXtnZW5lcmF0ZShbZmllbGROYW1lLCBcIlZIXCIsIFwiUG9wb3ZlclwiLCBcInF1YWxpZmllclwiXSl9XG5cdFx0XHRcdFx0Y2FzZVNlbnNpdGl2ZT17dXNlQ2FzZVNlbnNpdGl2ZUZpbHRlclJlcXVlc3RzKFxuXHRcdFx0XHRcdFx0cHJvcGVydHlPYmplY3RQYXRoLFxuXHRcdFx0XHRcdFx0KHByb3BlcnR5T2JqZWN0UGF0aC5jb252ZXJ0ZWRUeXBlcy5lbnRpdHlDb250YWluZXIuYW5ub3RhdGlvbnMuQ2FwYWJpbGl0aWVzXG5cdFx0XHRcdFx0XHRcdD8uRmlsdGVyRnVuY3Rpb25zIGFzIHVua25vd24gYXMgc3RyaW5nW10pID8/IFtdXG5cdFx0XHRcdFx0KX1cblx0XHRcdFx0XHR1c2VBc1ZhbHVlSGVscD17ISFwcm9wZXJ0eS5hbm5vdGF0aW9ucy5Db21tb24/LlZhbHVlTGlzdFdpdGhGaXhlZFZhbHVlc31cblx0XHRcdFx0Lz5cblx0XHRcdDwvUG9wb3Zlcj5cblx0XHQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIFZIIGRpYWxvZyBmb3IgYSBnaXZlbiBwcm9wZXJ0eS5cblx0ICogQHBhcmFtIHByb3BlcnR5XG5cdCAqIEByZXR1cm5zIEEgZGlhbG9nIGlmIHRoZSBwcm9wZXJ0eSBoYXMgYSBWSCwgdW5kZWZpbmVkIG90aGVyd2lzZVxuXHQgKi9cblx0cHJpdmF0ZSBnZXRGaWVsZFZIRGlhbG9nKHByb3BlcnR5OiBQcm9wZXJ0eSk6IFZIRGlhbG9nIHwgdW5kZWZpbmVkIHtcblx0XHRpZiAocHJvcGVydHkuYW5ub3RhdGlvbnMuQ29tbW9uPy5WYWx1ZUxpc3RXaXRoRml4ZWRWYWx1ZXM/LnZhbHVlT2YoKSAhPT0gdHJ1ZSkge1xuXHRcdFx0cmV0dXJuIDxWSERpYWxvZyAvPjtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyB0aGUgVkggZm9yIGEgZ2l2ZW4gZmllbGQuXG5cdCAqIEBwYXJhbSBmaWVsZE5hbWVcblx0ICogQHBhcmFtIHByb3BlcnR5XG5cdCAqIEBwYXJhbSBwcm9wZXJ0eU9iamVjdFBhdGhcblx0ICogQHJldHVybnMgVGhlIFZhbHVlSGVscCBjb250cm9sIGlmIHRoZSBwcm9wZXJ0eSBoYXMgYSBWSCwgdW5kZWZpbmVkIG90aGVyd2lzZVxuXHQgKi9cblx0cHJpdmF0ZSBnZXRGaWVsZFZhbHVlSGVscChcblx0XHRmaWVsZE5hbWU6IHN0cmluZyxcblx0XHRwcm9wZXJ0eTogUHJvcGVydHksXG5cdFx0cHJvcGVydHlPYmplY3RQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoPFByb3BlcnR5PlxuXHQpOiBWYWx1ZUhlbHAgfCB1bmRlZmluZWQge1xuXHRcdGlmICghaGFzVmFsdWVIZWxwKHByb3BlcnR5KSkge1xuXHRcdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0XHR9XG5cblx0XHRjb25zdCB2aERlbGVnYXRlID0ge1xuXHRcdFx0bmFtZTogXCJzYXAvZmUvbWFjcm9zL3ZhbHVlaGVscC9WYWx1ZUhlbHBEZWxlZ2F0ZVwiLFxuXHRcdFx0cGF5bG9hZDoge1xuXHRcdFx0XHRwcm9wZXJ0eVBhdGg6IGdldFRhcmdldE9iamVjdFBhdGgocHJvcGVydHlPYmplY3RQYXRoKSxcblx0XHRcdFx0cXVhbGlmaWVyczoge30sXG5cdFx0XHRcdHZhbHVlSGVscFF1YWxpZmllcjogXCJcIlxuXHRcdFx0fVxuXHRcdH07XG5cblx0XHRyZXR1cm4gKFxuXHRcdFx0PFZhbHVlSGVscFxuXHRcdFx0XHRpZD17Z2VuZXJhdGUoW2ZpZWxkTmFtZSwgXCJWSFwiXSl9XG5cdFx0XHRcdGRlbGVnYXRlPXt2aERlbGVnYXRlfVxuXHRcdFx0XHR2YWxpZGF0ZUlucHV0PXtyZXF1aXJlc1ZhbGlkYXRpb24ocHJvcGVydHkpfVxuXHRcdFx0XHR0eXBlYWhlYWQ9e3RoaXMuZ2V0RmllbGRWSFR5cGVBaGVhZChmaWVsZE5hbWUsIHByb3BlcnR5LCBwcm9wZXJ0eU9iamVjdFBhdGgpfVxuXHRcdFx0XHRkaWFsb2c9e3RoaXMuZ2V0RmllbGRWSERpYWxvZyhwcm9wZXJ0eSl9XG5cdFx0XHQ+PC9WYWx1ZUhlbHA+XG5cdFx0KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIHRoZSBGb3JtIGVsZW1lbnQgKGxhYmVsICsgZmllbGQpIGZvciBhIGdpdmVuIHByb3BlcnR5IG5hbWUuXG5cdCAqIEBwYXJhbSBmaWVsZE5hbWVcblx0ICogQHBhcmFtIGxpc3RPYmplY3RQYXRoXG5cdCAqIEBwYXJhbSBsaXN0TWV0YVBhdGhcblx0ICogQHJldHVybnMgVGhlIGVsZW1lbnRcblx0ICovXG5cdHByaXZhdGUgY3JlYXRlRm9ybUVsZW1lbnQoZmllbGROYW1lOiBzdHJpbmcsIGxpc3RPYmplY3RQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoPEVudGl0eVNldD4sIGxpc3RNZXRhUGF0aDogc3RyaW5nKTogdW5rbm93biB7XG5cdFx0Y29uc3QgcHJvcGVydHlPYmplY3RQYXRoID0gZW5oYW5jZURhdGFNb2RlbFBhdGg8UHJvcGVydHk+KGxpc3RPYmplY3RQYXRoLCBmaWVsZE5hbWUpO1xuXHRcdGNvbnN0IHByb3BlcnR5ID0gcHJvcGVydHlPYmplY3RQYXRoLnRhcmdldE9iamVjdCBhcyBQcm9wZXJ0eTtcblx0XHRjb25zdCBwcm9wZXJ0eU1ldGFDb250ZXh0ID0gdGhpcy5tZXRhTW9kZWwuY3JlYXRlQmluZGluZ0NvbnRleHQoYCR7bGlzdE1ldGFQYXRofS8ke2ZpZWxkTmFtZX1gKSE7XG5cdFx0Y29uc3QgcHJvcGVydHlQbGFjZUhvbGRlck1ldGFDb250ZXh0ID0gdGhpcy5tZXRhTW9kZWwuY3JlYXRlQmluZGluZ0NvbnRleHQoXG5cdFx0XHRgJHtsaXN0TWV0YVBhdGh9LyR7ZmllbGROYW1lfUBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5QbGFjZWhvbGRlcmBcblx0XHQpITtcblxuXHRcdGNvbnN0IGZpZWxkID0gKFxuXHRcdFx0PE1EQ0ZpZWxkXG5cdFx0XHRcdGRlbGVnYXRlPXt7IG5hbWU6IFwic2FwL2ZlL21hY3Jvcy9maWVsZC9GaWVsZEJhc2VEZWxlZ2F0ZVwiLCBwYXlsb2FkOiB7IHJldHJpZXZlVGV4dEZyb21WYWx1ZUxpc3Q6IHRydWUgfSB9fVxuXHRcdFx0XHRpZD17Z2VuZXJhdGUoW1wiQ3JlYXRlRGlhbG9nXCIsIGxpc3RPYmplY3RQYXRoLnRhcmdldEVudGl0eVR5cGUubmFtZSwgZmllbGROYW1lXSl9XG5cdFx0XHRcdHZhbHVlPXtBbm5vdGF0aW9uSGVscGVyLmZvcm1hdChwcm9wZXJ0eU1ldGFDb250ZXh0LmdldE9iamVjdCgpLCB7IGNvbnRleHQ6IHByb3BlcnR5TWV0YUNvbnRleHQgfSl9XG5cdFx0XHRcdHBsYWNlaG9sZGVyPXtBbm5vdGF0aW9uSGVscGVyLnZhbHVlKHByb3BlcnR5UGxhY2VIb2xkZXJNZXRhQ29udGV4dC5nZXRPYmplY3QoKSwge1xuXHRcdFx0XHRcdGNvbnRleHQ6IHByb3BlcnR5UGxhY2VIb2xkZXJNZXRhQ29udGV4dFxuXHRcdFx0XHR9KX1cblx0XHRcdFx0d2lkdGg9XCIxMDAlXCJcblx0XHRcdFx0cmVxdWlyZWQ9e2NvbXBpbGVFeHByZXNzaW9uKG9yKGlzUmVxdWlyZWRFeHByZXNzaW9uKHByb3BlcnR5KSwgdGhpcy5yZXF1aXJlZEZpZWxkTmFtZXMuaW5jbHVkZXMoZmllbGROYW1lKSkpfVxuXHRcdFx0XHRkaXNwbGF5PXtGaWVsZEhlbHBlci5nZXRBUERpYWxvZ0Rpc3BsYXlGb3JtYXQocHJvcGVydHlNZXRhQ29udGV4dC5nZXRPYmplY3QoKSwgeyBjb250ZXh0OiBwcm9wZXJ0eU1ldGFDb250ZXh0IH0pfVxuXHRcdFx0XHR2YWx1ZUhlbHA9e2hhc1ZhbHVlSGVscChwcm9wZXJ0eSkgPyBnZW5lcmF0ZShbZmllbGROYW1lLCBcIlZIXCJdKSA6IHVuZGVmaW5lZH1cblx0XHRcdFx0ZWRpdE1vZGU9e3RoaXMuZ2V0RWRpdE1vZGUocHJvcGVydHkpfVxuXHRcdFx0XHRkZXBlbmRlbnRzPXt0aGlzLmdldEZpZWxkVmFsdWVIZWxwKGZpZWxkTmFtZSwgcHJvcGVydHksIHByb3BlcnR5T2JqZWN0UGF0aCl9XG5cdFx0XHRcdGN1c3RvbURhdGE9ezxDdXN0b21EYXRhIGtleT1cImZpZWxkTmFtZVwiIHZhbHVlPXtmaWVsZE5hbWV9IC8+fVxuXHRcdFx0XHRsaXZlQ2hhbmdlPXt0aGlzLmhhbmRsZUxpdmVDaGFuZ2UuYmluZCh0aGlzKX1cblx0XHRcdFx0Y2hhbmdlPXt0aGlzLmhhbmRsZUNoYW5nZS5iaW5kKHRoaXMpfVxuXHRcdFx0Lz5cblx0XHQpO1xuXG5cdFx0dGhpcy5hY3Rpb25QYXJhbWV0ZXJJbmZvcy5wdXNoKHtcblx0XHRcdGlzTXVsdGlWYWx1ZTogZmFsc2UsXG5cdFx0XHRmaWVsZDogZmllbGQsXG5cdFx0XHR2YWx1ZTogZmllbGQuZ2V0VmFsdWUoKSxcblx0XHRcdHZhbGlkYXRpb25Qcm9taXNlOiB1bmRlZmluZWQsXG5cdFx0XHRoYXNFcnJvcjogZmFsc2UsXG5cdFx0XHRwcm9wZXJ0eVBhdGg6IGZpZWxkTmFtZVxuXHRcdH0pO1xuXG5cdFx0cmV0dXJuIChcblx0XHRcdDw+XG5cdFx0XHRcdDxMYWJlbCB0ZXh0PXtwcm9wZXJ0eS5hbm5vdGF0aW9ucy5Db21tb24/LkxhYmVsfSAvPlxuXHRcdFx0XHR7ZmllbGR9XG5cdFx0XHQ8Lz5cblx0XHQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENhbGxiYWNrIHdoZW4gdGhlIGRpYWxvZyBpcyBvcGVuZWQuIFNldHMgdGhlIGZvY3VzIG9uIHRoZSBmaXJzdCBmaWVsZCB3aXRob3V0IG9wZW5pbmcgdGhlIFZIIGRpYWxvZy5cblx0ICovXG5cdHByaXZhdGUgYWZ0ZXJPcGVuKCk6IHZvaWQge1xuXHRcdGNvbnN0IGZpcnN0RmllbGQgPSB0aGlzLmFjdGlvblBhcmFtZXRlckluZm9zWzBdLmZpZWxkO1xuXHRcdGNvbnN0IGZvY3VzSW5mbyA9IGZpcnN0RmllbGQuZ2V0Rm9jdXNJbmZvKCkgYXMgeyB0YXJnZXRJbmZvOiBvYmplY3QgfTtcblx0XHRmb2N1c0luZm8udGFyZ2V0SW5mbyA9IHsgc2lsZW50OiB0cnVlIH07XG5cdFx0Zmlyc3RGaWVsZC5mb2N1cyhmb2N1c0luZm8pO1xuXHR9XG5cblx0LyoqXG5cdCAqIEludGVybmFsIG1ldGhvZCB0byBjcmVhdGUgdGhlIERpYWxvZyBjb250cm9sIGFuZCBpdHMgY29udGVudC5cblx0ICogQHJldHVybnMgVGhlIGRpYWxvZyBjb250cm9sXG5cdCAqL1xuXHRwcml2YXRlIGNyZWF0ZURpYWxvZygpOiBEaWFsb2cge1xuXHRcdGNvbnN0IHJlc291cmNlTW9kZWwgPSBnZXRSZXNvdXJjZU1vZGVsKHRoaXMucGFyZW50Q29udHJvbCA/PyB0aGlzLmFwcENvbXBvbmVudCk7XG5cdFx0Y29uc3QgbWV0YVBhdGggPSB0aGlzLm1ldGFNb2RlbC5nZXRNZXRhUGF0aCh0aGlzLmNvbnRleHRUb1VwZGF0ZS5nZXRQYXRoKCkpO1xuXHRcdGNvbnN0IG1ldGFDb250ZXh0ID0gdGhpcy5tZXRhTW9kZWwuY3JlYXRlQmluZGluZ0NvbnRleHQobWV0YVBhdGgpITtcblx0XHRjb25zdCBvYmplY3RQYXRoID0gZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzPEVudGl0eVNldD4obWV0YUNvbnRleHQpO1xuXG5cdFx0dGhpcy5hY3Rpb25QYXJhbWV0ZXJJbmZvcyA9IFtdO1xuXG5cdFx0Y29uc3QgYmVnaW5CdXR0b25MYWJlbCA9IHJlc291cmNlTW9kZWwuZ2V0VGV4dChcblx0XHRcdHRoaXMubW9kZSA9PT0gXCJTdGFuZGFsb25lXCJcblx0XHRcdFx0PyBcIkNfVFJBTlNBQ1RJT05fSEVMUEVSX1NBUEZFX0FDVElPTl9DUkVBVEVfQlVUVE9OX0NSRUFURVwiXG5cdFx0XHRcdDogXCJDX1RSQU5TQUNUSU9OX0hFTFBFUl9TQVBGRV9BQ1RJT05fQ1JFQVRFX0JVVFRPTl9DT05USU5VRVwiXG5cdFx0KTtcblx0XHRjb25zdCBlbmRCdXR0b24gPSAoXG5cdFx0XHQ8QnV0dG9uIHRleHQ9e3Jlc291cmNlTW9kZWwuZ2V0VGV4dChcIkNfQ09NTU9OX0FDVElPTl9QQVJBTUVURVJfRElBTE9HX0NBTkNFTFwiKX0gcHJlc3M9e3RoaXMub25DYW5jZWwuYmluZCh0aGlzKX0gLz5cblx0XHQpO1xuXHRcdHJldHVybiAoXG5cdFx0XHQ8RGlhbG9nXG5cdFx0XHRcdGlkPXtnZW5lcmF0ZShbXCJDcmVhdGVEaWFsb2dcIiwgbWV0YVBhdGhdKX1cblx0XHRcdFx0dGl0bGU9e3Jlc291cmNlTW9kZWwuZ2V0VGV4dChcIkNfVFJBTlNBQ1RJT05fSEVMUEVSX1NBUEZFX0FDVElPTl9DUkVBVEVcIiwgdW5kZWZpbmVkLCBvYmplY3RQYXRoLnRhcmdldEVudGl0eVNldD8ubmFtZSl9XG5cdFx0XHRcdGFmdGVyT3Blbj17KCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdHRoaXMuYWZ0ZXJPcGVuKCk7XG5cdFx0XHRcdH19XG5cdFx0XHRcdHJlc2l6YWJsZT17dHJ1ZX1cblx0XHRcdFx0ZHJhZ2dhYmxlPXt0cnVlfVxuXHRcdFx0XHRpbml0aWFsRm9jdXM9e2VuZEJ1dHRvbn0gLy8gVGhlIGluaXRpYWwgZm9jdXMgaXMgc2V0IHByb2dyYW1tYXRpY2FsbHkgaW4gYWZ0ZXJPcGVuLCB0byBhdm9pZCBvcGVuaW5nIHRoZSBWSCBkaWFsb2dcblx0XHRcdD5cblx0XHRcdFx0e3tcblx0XHRcdFx0XHRiZWdpbkJ1dHRvbjogPEJ1dHRvbiB0ZXh0PXtiZWdpbkJ1dHRvbkxhYmVsfSBwcmVzcz17dGhpcy5vbk9LLmJpbmQodGhpcyl9IHR5cGU9XCJFbXBoYXNpemVkXCIgLz4sXG5cdFx0XHRcdFx0ZW5kQnV0dG9uOiBlbmRCdXR0b24sXG5cdFx0XHRcdFx0Y29udGVudDogKFxuXHRcdFx0XHRcdFx0PFNpbXBsZUZvcm0+XG5cdFx0XHRcdFx0XHRcdHt0aGlzLmZpZWxkTmFtZXMubWFwKChuYW1lKSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHRoaXMuY3JlYXRlRm9ybUVsZW1lbnQobmFtZSwgb2JqZWN0UGF0aCwgbWV0YVBhdGgpO1xuXHRcdFx0XHRcdFx0XHR9KX1cblx0XHRcdFx0XHRcdDwvU2ltcGxlRm9ybT5cblx0XHRcdFx0XHQpXG5cdFx0XHRcdH19XG5cdFx0XHQ8L0RpYWxvZz5cblx0XHQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNldHMgdGhlIGVycm9yIHN0YXRlIGluIHRoZSBkaWFsb2cgZmllbGRzIHRoYXQgY29ycmVzcG9uZCB0byBhbiBlcnJvciBpbiB0aGUgZ2l2ZW4gbWVzc2FnZXMuXG5cdCAqIEBwYXJhbSBtZXNzYWdlc1xuXHQgKi9cblx0cHVibGljIGRpc3BsYXlFcnJvck1lc3NhZ2VzKG1lc3NhZ2VzOiBNZXNzYWdlW10pOiB2b2lkIHtcblx0XHQvLyBJdGVyYXRlIG92ZXIgYWxsIG1lc3NhZ2VzIGFuZCBzZXQgdGhlIGVycm9yIHN0YXRlIGZvciB0aGUgY29ycmVzcG9uZGluZyBmaWVsZFxuXHRcdC8vIFdlIGNhbm5vdCBjb21wYXJlIHRoZSBwYXRocyBkaXJlY3RseSwgYXMgdGhlIGNvbnRleHQgaW4gdGhlIGRpYWxvZyBpcyBhIHRlbXBvcmFyeSBvbmUsIGFuZCBkaWZmZXJlbnQgZnJvbSB0aGUgb25lIHRoYXQgaXMgc2F2ZWRcblx0XHQvLyBUaGVyZWZvcmUgd2UgY29tcGFyZSB0aGUgbWV0YXBhdGhzXG5cdFx0Y29uc3QgY29udGV4dE1ldGFQYXRoID0gdGhpcy5tZXRhTW9kZWwuZ2V0TWV0YVBhdGgodGhpcy5jb250ZXh0VG9VcGRhdGUuZ2V0UGF0aCgpKTtcblxuXHRcdGZvciAoY29uc3QgbWVzc2FnZSBvZiBtZXNzYWdlcykge1xuXHRcdFx0Zm9yIChjb25zdCB0YXJnZXQgb2YgbWVzc2FnZS5nZXRUYXJnZXRzKCkpIHtcblx0XHRcdFx0Y29uc3QgdGFyZ2V0TWV0YVBhdGggPSB0aGlzLm1ldGFNb2RlbC5nZXRNZXRhUGF0aCh0YXJnZXQpO1xuXHRcdFx0XHRjb25zdCBwYXJhbWV0ZXJJbmZvID0gdGhpcy5hY3Rpb25QYXJhbWV0ZXJJbmZvcy5maW5kKFxuXHRcdFx0XHRcdChhY3Rpb25QYXJhbWV0ZXJJbmZvKSA9PiBgJHtjb250ZXh0TWV0YVBhdGh9LyR7YWN0aW9uUGFyYW1ldGVySW5mby5wcm9wZXJ0eVBhdGh9YCA9PT0gdGFyZ2V0TWV0YVBhdGhcblx0XHRcdFx0KTtcblx0XHRcdFx0aWYgKHBhcmFtZXRlckluZm8pIHtcblx0XHRcdFx0XHRwYXJhbWV0ZXJJbmZvLmhhc0Vycm9yID0gdHJ1ZTtcblx0XHRcdFx0XHRwYXJhbWV0ZXJJbmZvLmZpZWxkLnNldFZhbHVlU3RhdGUobWVzc2FnZS5nZXRUeXBlKCkgfHwgTWVzc2FnZVR5cGUuRXJyb3IpO1xuXHRcdFx0XHRcdHBhcmFtZXRlckluZm8uZmllbGQuc2V0VmFsdWVTdGF0ZVRleHQobWVzc2FnZS5nZXRNZXNzYWdlKCkpO1xuXG5cdFx0XHRcdFx0Y29uc3QgbWVzc2FnZUNvbnRyb2xJRHMgPSBtZXNzYWdlLmdldENvbnRyb2xJZHMoKTtcblx0XHRcdFx0XHRpZiAoIW1lc3NhZ2VDb250cm9sSURzLmluY2x1ZGVzKHBhcmFtZXRlckluZm8uZmllbGQuZ2V0SWQoKSkpIHtcblx0XHRcdFx0XHRcdG1lc3NhZ2VDb250cm9sSURzLnB1c2gocGFyYW1ldGVySW5mby5maWVsZC5nZXRJZCgpKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogUmVtb3ZlcyB0aGUgZXJyb3IgbWVzc2FnZXMgZm9yIGEgZ2l2ZW4gZmllbGQuXG5cdCAqIEBwYXJhbSBtZXNzYWdlQ29udHJvbElkIFRoZSBJRCBvZiB0aGUgZmllbGRcblx0ICovXG5cdHByaXZhdGUgcmVtb3ZlTWVzc2FnZXNGb3JBY3Rpb25QYXJhbWV0ZXIobWVzc2FnZUNvbnRyb2xJZDogc3RyaW5nKTogdm9pZCB7XG5cdFx0Y29uc3QgYWxsTWVzc2FnZXMgPSBNZXNzYWdpbmcuZ2V0TWVzc2FnZU1vZGVsKCkuZ2V0RGF0YSgpO1xuXHRcdC8vIGFsc28gcmVtb3ZlIG1lc3NhZ2VzIGFzc2lnbmVkIHRvIGlubmVyIGNvbnRyb2xzLCBidXQgYXZvaWQgcmVtb3ZpbmcgbWVzc2FnZXMgZm9yIGRpZmZlcmVudCBwYXJhbWV0ZXJzICh3aXRoIG5hbWUgYmVpbmcgc3Vic3RyaW5nIG9mIGFub3RoZXIgcGFyYW1ldGVyIG5hbWUpXG5cdFx0Y29uc3QgcmVsZXZhbnRNZXNzYWdlcyA9IGFsbE1lc3NhZ2VzLmZpbHRlcigobXNnOiBNZXNzYWdlKSA9PlxuXHRcdFx0bXNnLmdldENvbnRyb2xJZHMoKS5zb21lKChjb250cm9sSWQ6IHN0cmluZykgPT4gY29udHJvbElkLmluY2x1ZGVzKG1lc3NhZ2VDb250cm9sSWQpKVxuXHRcdCk7XG5cdFx0TWVzc2FnaW5nLnJlbW92ZU1lc3NhZ2VzKHJlbGV2YW50TWVzc2FnZXMpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENhbGxiYWNrIHdoZW4gdGhlIHVzZXIgaXMgZG9pbmcgc29tZSBsaXZlIGNoYW5nZXMgaW4gYSBmaWVsZC5cblx0ICogQHBhcmFtIGxpdmVDaGFuZ2VFdmVudFxuXHQgKi9cblx0cHJpdmF0ZSBoYW5kbGVMaXZlQ2hhbmdlKGxpdmVDaGFuZ2VFdmVudDogRmllbGRCYXNlJExpdmVDaGFuZ2VFdmVudCk6IHZvaWQge1xuXHRcdGNvbnN0IGZpZWxkSWQgPSBsaXZlQ2hhbmdlRXZlbnQuZ2V0U291cmNlPE1EQ0ZpZWxkPigpLmdldElkKCk7XG5cdFx0dGhpcy5yZW1vdmVNZXNzYWdlc0ZvckFjdGlvblBhcmFtZXRlcihmaWVsZElkKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDYWxsYmFjayB3aGVuIHRoZSB1c2VyIGhhcyBjaGFuZ2VkIGEgZmllbGQgdmFsdWUuXG5cdCAqIEBwYXJhbSBjaGFuZ2VFdmVudFxuXHQgKi9cblx0cHJpdmF0ZSBhc3luYyBoYW5kbGVDaGFuZ2UoY2hhbmdlRXZlbnQ6IEZpZWxkJENoYW5nZUV2ZW50KTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0Y29uc3QgZmllbGQgPSBjaGFuZ2VFdmVudC5nZXRTb3VyY2U8TURDRmllbGQ+KCk7XG5cblx0XHRjb25zdCBhY3Rpb25QYXJhbWV0ZXJJbmZvID0gdGhpcy5hY3Rpb25QYXJhbWV0ZXJJbmZvcy5maW5kKChhY3Rpb25QYXJhbWV0ZXJJbmZvKSA9PiBhY3Rpb25QYXJhbWV0ZXJJbmZvLmZpZWxkID09PSBmaWVsZCk7XG5cdFx0aWYgKGFjdGlvblBhcmFtZXRlckluZm8gIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0dGhpcy5yZW1vdmVNZXNzYWdlc0ZvckFjdGlvblBhcmFtZXRlcihmaWVsZC5nZXRJZCgpKTtcblx0XHRcdGFjdGlvblBhcmFtZXRlckluZm8udmFsaWRhdGlvblByb21pc2UgPSBjaGFuZ2VFdmVudC5nZXRQYXJhbWV0ZXIoXCJwcm9taXNlXCIpO1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0YWN0aW9uUGFyYW1ldGVySW5mby52YWx1ZSA9IGF3YWl0IGFjdGlvblBhcmFtZXRlckluZm8udmFsaWRhdGlvblByb21pc2U7XG5cdFx0XHRcdGFjdGlvblBhcmFtZXRlckluZm8uaGFzRXJyb3IgPSBmYWxzZTtcblx0XHRcdFx0YWN0aW9uUGFyYW1ldGVySW5mby5maWVsZC5zZXRWYWx1ZVN0YXRlKE1lc3NhZ2VUeXBlLk5vbmUpO1xuXHRcdFx0fSBjYXRjaCAoZXJyb3IpIHtcblx0XHRcdFx0ZGVsZXRlIGFjdGlvblBhcmFtZXRlckluZm8udmFsdWU7XG5cdFx0XHRcdGFjdGlvblBhcmFtZXRlckluZm8uaGFzRXJyb3IgPSB0cnVlO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBDYWxsYmFjayB3aGVuIHRoZSB1c2VyIGNsaWNrZWQgJ09LJy5cblx0ICovXG5cdHByaXZhdGUgYXN5bmMgb25PSygpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHQvLyBWYWxpZGF0aW9uIG9mIG1hbmRhdG9yeSBhbmQgdmFsdWUgc3RhdGUgZm9yIGFjdGlvbiBwYXJhbWV0ZXJzXG5cdFx0Y29uc3QgcmVzb3VyY2VNb2RlbCA9IGdldFJlc291cmNlTW9kZWwodGhpcy5hcHBDb21wb25lbnQpO1xuXHRcdGlmIChhd2FpdCBBY3Rpb25SdW50aW1lLnZhbGlkYXRlUHJvcGVydGllcyh0aGlzLmFjdGlvblBhcmFtZXRlckluZm9zLCByZXNvdXJjZU1vZGVsKSkge1xuXHRcdFx0dGhpcy5maXJlRXhpdERpYWxvZyh0cnVlKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogQ2FsbGJhY2sgd2hlbiB0aGUgdXNlIGNsaWNrZWQgJ0NhbmNlbCcuXG5cdCAqL1xuXHRwcml2YXRlIG9uQ2FuY2VsKCk6IHZvaWQge1xuXHRcdHRoaXMuZmlyZUV4aXREaWFsb2coZmFsc2UpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEVzY2FwZSBoYW5kbGVyIChjYWxsZWQgd2hlbiB0aGUgdXNlciB0eXBlZCAnRXNjYXBlJyB0byBsZWF2ZSB0aGUgZGlhbG9nKS5cblx0ICogQHBhcmFtIHBcblx0ICogQHBhcmFtIHAucmVzb2x2ZVxuXHQgKiBAcGFyYW0gcC5yZWplY3Rcblx0ICovXG5cdHByaXZhdGUgb25Fc2NhcGUocDogeyByZXNvbHZlOiBGdW5jdGlvbjsgcmVqZWN0OiBGdW5jdGlvbiB9KTogdm9pZCB7XG5cdFx0cC5yZWplY3QoKTsgLy8gRG8gbm90IGNsb3NlIHRoZSBkaWFsb2dcblx0XHR0aGlzLm9uQ2FuY2VsKCk7XG5cdH1cblxuXHQvKipcblx0ICogT3BlbnMgdGhlIGRpYWxvZy5cblx0ICogQHJldHVybnMgVGhlIGludGVybmFsIERpYWxvZyBjb250cm9sXG5cdCAqL1xuXHRvcGVuRGlhbG9nKCk6IERpYWxvZyB7XG5cdFx0aWYgKHRoaXMuZGlhbG9nKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3Qgb3BlbiB0aGUgQ3JlYXRlIGRpYWxvZyB0d2ljZVwiKTtcblx0XHR9XG5cblx0XHR0aGlzLmRpYWxvZyA9IHRoaXMuY3JlYXRlRGlhbG9nKCk7XG5cdFx0dGhpcy5kaWFsb2cuc2V0RXNjYXBlSGFuZGxlcih0aGlzLm9uRXNjYXBlLmJpbmQodGhpcykpO1xuXHRcdHRoaXMucGFyZW50Q29udHJvbD8uYWRkRGVwZW5kZW50KHRoaXMuZGlhbG9nKTtcblx0XHR0aGlzLmRpYWxvZy5zZXRCaW5kaW5nQ29udGV4dCh0aGlzLmNvbnRleHRUb1VwZGF0ZSk7XG5cblx0XHR0aGlzLmRpYWxvZy5vcGVuKCk7XG5cblx0XHRyZXR1cm4gdGhpcy5kaWFsb2c7XG5cdH1cblxuXHQvKipcblx0ICogQ2xvc2VzIGFuZCBkZXN0cm95cyB0aGUgZGlhbG9nLlxuXHQgKi9cblx0Y2xvc2VEaWFsb2coKTogdm9pZCB7XG5cdFx0LyogV2hlbiB0aGUgZGlhbG9nIGlzIGNhbmNlbGxlZCwgbWVzc2FnZXMgbmVlZCB0byBiZSByZW1vdmVkIGluIGNhc2UgdGhlIHNhbWUgYWN0aW9uIHNob3VsZCBiZSBleGVjdXRlZCBhZ2FpbiAqL1xuXHRcdGZvciAoY29uc3QgYWN0aW9uUGFyYW1ldGVySW5mbyBvZiB0aGlzLmFjdGlvblBhcmFtZXRlckluZm9zKSB7XG5cdFx0XHRjb25zdCBmaWVsZElkID0gYWN0aW9uUGFyYW1ldGVySW5mby5maWVsZC5nZXRJZCgpO1xuXHRcdFx0dGhpcy5yZW1vdmVNZXNzYWdlc0ZvckFjdGlvblBhcmFtZXRlcihmaWVsZElkKTtcblx0XHR9XG5cblx0XHRpZiAodGhpcy5kaWFsb2cgJiYgQnVzeUxvY2tlci5pc0xvY2tlZCh0aGlzLmRpYWxvZykpIHtcblx0XHRcdEJ1c3lMb2NrZXIudW5sb2NrKHRoaXMuZGlhbG9nKTsgLy8gVG8gYXZvaWQgYW4gZXJyb3IgaW4gdGhlIGNvbnNvbGVcblx0XHR9XG5cdFx0dGhpcy5kaWFsb2c/LmNsb3NlKCk7XG5cdFx0dGhpcy5kaWFsb2c/LmRlc3Ryb3koKTtcblx0XHR0aGlzLmRpYWxvZyA9IHVuZGVmaW5lZDtcblx0fVxuXG5cdC8qKlxuXHQgKiBEaXNwbGF5cyBvciByZW1vdmVzIGEgYnVzeSBpbmRpY2F0b3Igb24gdGhlIGRpYWxvZy5cblx0ICogQHBhcmFtIGJ1c3lcblx0ICovXG5cdHNldEJ1c3koYnVzeTogYm9vbGVhbik6IHZvaWQge1xuXHRcdGlmICghdGhpcy5kaWFsb2cpIHtcblx0XHRcdHJldHVybjsgLy8gTm90aGluZyB0byBzZXQgYnVzeVxuXHRcdH1cblxuXHRcdGlmIChidXN5KSB7XG5cdFx0XHRCdXN5TG9ja2VyLmxvY2sodGhpcy5kaWFsb2cpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRCdXN5TG9ja2VyLnVubG9jayh0aGlzLmRpYWxvZyk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIElzIERpYWxvZyBvcGVuLlxuXHQgKiBAcmV0dXJucyBCb29sZWFuXG5cdCAqL1xuXHRpc09wZW4oKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHRoaXMuZGlhbG9nPy5pc09wZW4oKSA/PyBmYWxzZTtcblx0fVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O01Bd0NNQSxnQ0FBZ0MsSUFBQUMsSUFBQSxHQURyQ0MsY0FBYyxDQUFDLDZDQUE2QyxDQUFDLEVBQUFDLEtBQUEsR0FFNURDLEtBQUssQ0FBQyxDQUFDLEVBQUFILElBQUEsQ0FBQUksTUFBQSxJQUFBQyxPQUFBLDBCQUFBQyxjQUFBO0lBQUEsU0FBQVAsaUNBQUE7TUFBQSxJQUFBUSxLQUFBO01BQUEsU0FBQUMsSUFBQSxHQUFB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
|
|
@@ -255,7 +255,7 @@ export default class CreateDialog implements StandardDialog {
|
|
|
255
255
|
return (
|
|
256
256
|
<Dialog
|
|
257
257
|
id={generate(["CreateDialog", metaPath])}
|
|
258
|
-
title={resourceModel.getText("C_TRANSACTION_HELPER_SAPFE_ACTION_CREATE")}
|
|
258
|
+
title={resourceModel.getText("C_TRANSACTION_HELPER_SAPFE_ACTION_CREATE", undefined, objectPath.targetEntitySet?.name)}
|
|
259
259
|
afterOpen={(): void => {
|
|
260
260
|
this.afterOpen();
|
|
261
261
|
}}
|