@eo-sdk/client 10.7.0-rc.5 → 11.0.0-beta.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/app/eo-client/about-state/about-state.component.d.ts.map +1 -1
- package/app/eo-client/dashboard/widgets/charts-widget/charts-setup/charts-setup.component.d.ts +1 -1
- package/app/eo-client/dashboard/widgets/charts-widget/charts-widget.component.d.ts +1 -1
- package/app/eo-client/dashboard/widgets/count-objects-widget/count-objects-setup/count-objects-setup.component.d.ts +1 -1
- package/app/eo-client/dashboard/widgets/count-objects-widget/count-objects-widget.component.d.ts +1 -1
- package/app/eo-client/dashboard/widgets/hitlist-widget/hitlist-setup/hitlist-setup.component.d.ts +1 -1
- package/app/eo-client/dashboard/widgets/hitlist-widget/hitlist-widget.component.d.ts +1 -1
- package/app/eo-client/dashboard/widgets/iframe-widget/iframe-setup/iframe-setup.component.d.ts +1 -1
- package/app/eo-client/dashboard/widgets/iframe-widget/iframe-widget.component.d.ts +1 -1
- package/app/eo-client/dashboard/widgets/info-inbox-widget/info-inbox-setup/info-inbox-setup.component.d.ts +1 -1
- package/app/eo-client/dashboard/widgets/info-inbox-widget/info-inbox-widget.component.d.ts +1 -1
- package/app/eo-client/dashboard/widgets/info-intray-widget/info-intray-setup/info-intray-setup.component.d.ts +1 -1
- package/app/eo-client/dashboard/widgets/info-intray-widget/info-intray-widget.component.d.ts +1 -1
- package/app/eo-client/dashboard/widgets/last-edited-widget/last-edited-and-created.component.d.ts +1 -1
- package/app/eo-client/dashboard/widgets/search-widget/search-widget.component.d.ts +1 -1
- package/app/eo-client/stored-queries-state/stored-queries-state.component.d.ts.map +1 -1
- package/app/eo-framework/accordion/simple-accordion/simple-accordion.component.d.ts +1 -1
- package/app/eo-framework/actions/action.module.d.ts.map +1 -1
- package/app/eo-framework/actions/actions/add-resubmission-action/add-resubmission/add-resubmission.component.d.ts +1 -1
- package/app/eo-framework/actions/actions/add-subscription-action/add-subscription/add-subscription.component.d.ts +1 -1
- package/app/eo-framework/actions/actions/cancel-signing-action/cancel-signing/cancel-signing.component.d.ts +1 -1
- package/app/eo-framework/actions/actions/clipboard/clipboard-object-action/clipboard-object-action.component.d.ts +1 -1
- package/app/eo-framework/actions/actions/custom-actions/custom-actions.component.d.ts +1 -1
- package/app/eo-framework/actions/actions/delete-action/delete/delete.component.d.ts +1 -1
- package/app/eo-framework/actions/actions/delete-content-action/delete-content/delete-content.component.d.ts +1 -1
- package/app/eo-framework/actions/actions/download-action/download-object-action/download-object-action.component.d.ts +1 -1
- package/app/eo-framework/actions/actions/email/email/email.component.d.ts +1 -1
- package/app/eo-framework/actions/actions/finalize/finalize-object-action/finalize-object-action.component.d.ts +1 -1
- package/app/eo-framework/actions/actions/open-document-action/open-document-action.component.d.ts +1 -1
- package/app/eo-framework/actions/actions/signature-action/sequence-list/sequence-list.component.d.ts +1 -1
- package/app/eo-framework/actions/actions/signature-action/sequence-list-item/sequence-list-item.component.d.ts +1 -1
- package/app/eo-framework/actions/actions/workflow-action/simple-workflow-action.component.d.ts +1 -1
- package/app/eo-framework/actions/actions/workflow-action/workflow/workflow.component.d.ts +1 -1
- package/app/eo-framework/actions/actions/workflow-action/workflow-action.component.d.ts +1 -1
- package/app/eo-framework/app-shell/app-bar/app-bar.component.d.ts +1 -1
- package/app/eo-framework/app-shell/app-bar/context-search/context-search.component.d.ts +1 -1
- package/app/eo-framework/app-shell/app-bar/user-avatar-overlay/user-avatar-overlay.component.d.ts +1 -1
- package/app/eo-framework/cta/component/cta.component.d.ts +1 -1
- package/app/eo-framework/form-elements/checkbox/checkbox.component.d.ts +1 -1
- package/app/eo-framework/form-elements/codesystem/codesystem.component.d.ts +1 -1
- package/app/eo-framework/form-elements/date/date.component.d.ts +1 -1
- package/app/eo-framework/form-elements/date/year-range/year-range.directive.d.ts +1 -1
- package/app/eo-framework/form-elements/datetime-range/datetime-range.component.d.ts +1 -1
- package/app/eo-framework/form-elements/dynamic-list/dynamic-list.component.d.ts +1 -1
- package/app/eo-framework/form-elements/form-input/form-input.component.d.ts +1 -1
- package/app/eo-framework/form-elements/form-input/input-focus/input-focus.directive.d.ts +1 -1
- package/app/eo-framework/form-elements/id-reference/id-reference.component.d.ts +1 -1
- package/app/eo-framework/form-elements/id-reference/reference-finder/reference-finder.component.d.ts +1 -1
- package/app/eo-framework/form-elements/id-reference/reference-finder-entry/reference-finder-entry.component.d.ts +1 -1
- package/app/eo-framework/form-elements/number/number.component.d.ts +1 -1
- package/app/eo-framework/form-elements/number-range/number-range.component.d.ts +1 -1
- package/app/eo-framework/form-elements/organization/organization.component.d.ts +1 -1
- package/app/eo-framework/form-elements/password/password.component.d.ts +1 -1
- package/app/eo-framework/form-elements/reference/reference.component.d.ts +1 -1
- package/app/eo-framework/form-elements/string/string.component.d.ts +1 -1
- package/app/eo-framework/grid/column-configurator/column-configurator.component.d.ts +1 -1
- package/app/eo-framework/grid/extensions/custom-sort/custom-sort.component.d.ts +1 -1
- package/app/eo-framework/grid/extensions/custom-sort/custom-sort.component.d.ts.map +1 -1
- package/app/eo-framework/grid/extensions/filter/abstract-filter.component.d.ts +3 -3
- package/app/eo-framework/grid/extensions/filter/abstract-filter.component.d.ts.map +1 -1
- package/app/eo-framework/grid/extensions/filter/custom/custom-filter.component.d.ts +1 -1
- package/app/eo-framework/grid/extensions/filter/setFilters/set-filter.component.d.ts +1 -1
- package/app/eo-framework/grid/extensions/filter/text/text-filter.component.d.ts +3 -3
- package/app/eo-framework/grid/extensions/filter/text/text-filter.component.d.ts.map +1 -1
- package/app/eo-framework/grid/extensions/pagination/pagination.component.d.ts +1 -1
- package/app/eo-framework/grid/extensions/quick-filter/quick-filter.component.d.ts +1 -1
- package/app/eo-framework/grid/extensions/reset-filter/reset-filter.component.d.ts +1 -1
- package/app/eo-framework/grid/extensions/total-count/total-count.component.d.ts +1 -1
- package/app/eo-framework/grid/filters/datetime-filter.component.d.ts.map +1 -1
- package/app/eo-framework/grid/grid.component.d.ts +6 -17
- package/app/eo-framework/grid/grid.component.d.ts.map +1 -1
- package/app/eo-framework/grid/grid.module.d.ts +0 -3
- package/app/eo-framework/grid/grid.module.d.ts.map +1 -1
- package/app/eo-framework/grid/row-grouping/batchRemover.d.ts +13 -0
- package/app/eo-framework/grid/row-grouping/batchRemover.d.ts.map +1 -0
- package/app/eo-framework/grid/row-grouping/group-stage.d.ts +14 -14
- package/app/eo-framework/grid/row-grouping/group-stage.d.ts.map +1 -1
- package/app/eo-framework/grid/row-grouping/row-grouping.module.d.ts +1 -0
- package/app/eo-framework/grid/row-grouping/row-grouping.module.d.ts.map +1 -1
- package/app/eo-framework/inbox-details/duetimeInfo/duetimeInfo.component.d.ts +1 -1
- package/app/eo-framework/inbox-details/inbox-details.component.d.ts +1 -1
- package/app/eo-framework/list-container/list-container.component.d.ts +1 -1
- package/app/eo-framework/media/media.component.d.ts +1 -1
- package/app/eo-framework/object-details/edit-icon/edit-icon.component.d.ts +1 -1
- package/app/eo-framework/object-details/favorite-icon/favorite-icon.component.d.ts +1 -1
- package/app/eo-framework/object-details/object-details.component.d.ts +1 -1
- package/app/eo-framework/object-details/object-history/history-filter/history-filter.component.d.ts +1 -1
- package/app/eo-framework/object-details/object-history/object-history.component.d.ts +1 -1
- package/app/eo-framework/object-details/object-links/object-links.component.d.ts +1 -1
- package/app/eo-framework/object-form/object-form/form-element/form-element-template.directive.d.ts +1 -1
- package/app/eo-framework/object-form/object-form/form-element/form-element.component.d.ts +1 -1
- package/app/eo-framework/object-form/object-form/form-element-table/form-element-table.component.d.ts +4 -1
- package/app/eo-framework/object-form/object-form/form-element-table/form-element-table.component.d.ts.map +1 -1
- package/app/eo-framework/object-form/object-form/form-element-table/row-edit/row-edit.component.d.ts +1 -1
- package/app/eo-framework/object-form/object-form/object-form-group/object-form-group.component.d.ts +1 -1
- package/app/eo-framework/object-form/object-form/object-form.component.d.ts +1 -1
- package/app/eo-framework/object-form/object-form-edit/object-form-edit.component.d.ts +1 -1
- package/app/eo-framework/object-state-details/object-state-details.component.d.ts +1 -1
- package/app/eo-framework/plugins/plugin.component.d.ts +2 -2
- package/app/eo-framework/plugins/plugins.module.d.ts.map +1 -1
- package/app/eo-framework/prepare-details/prepare-content-exists-info/prepare-content-exists-info.component.d.ts +1 -1
- package/app/eo-framework/prepare-details/prepare-details.component.d.ts +1 -1
- package/app/eo-framework/process/details/process-details.component.d.ts +1 -1
- package/app/eo-framework/process/history/process-history.component.d.ts +1 -1
- package/app/eo-framework/process/process-file/process-file.component.d.ts +1 -1
- package/app/eo-framework/process-form/process-form.component.d.ts +1 -1
- package/app/eo-framework/quick-search/quick-search/quick-search.component.d.ts +1 -1
- package/app/eo-framework/recyclebin-details/recyclebin-details.component.d.ts +1 -1
- package/app/eo-framework/result-list/result-list.component.d.ts +1 -1
- package/app/eo-framework/settings/change-password/change-password-form/change-password-form.component.d.ts +1 -1
- package/app/eo-framework/settings/permissions/permissions.component.d.ts +1 -1
- package/app/eo-framework/shortcuts/global-shortcuts/global-shortcuts-section/global-shortcuts-section.component.d.ts +1 -1
- package/app/eo-framework/shortcuts/shortcuts.directive.d.ts +1 -1
- package/app/eo-framework/stored-query/stored-query/stored-query.component.d.ts +1 -1
- package/app/eo-framework/stored-query/stored-query-details/dynamic-property-switch/dynamic-property-switch.component.d.ts +1 -1
- package/app/eo-framework/stored-query/stored-query-details/stored-query-details.component.d.ts +1 -1
- package/app/eo-framework/tree/tree-node/tree-node.component.d.ts +1 -1
- package/app/eo-framework/tree/tree.component.d.ts +1 -1
- package/app/eo-framework/ui/eo-dialog/eo-dialog.component.d.ts +1 -1
- package/app/eo-framework/ui/eo-icon/eo-icon.component.d.ts +1 -1
- package/app/eo-framework/ui/error-message/error-message.component.d.ts +1 -1
- package/app/eo-framework/ui/indexdata-summary/indexdata-summary-entry/indexdata-summary-entry.component.d.ts +1 -1
- package/app/eo-framework/ui/indexdata-summary/indexdata-summary.component.d.ts +1 -1
- package/app/eo-framework/ui/loading-spinner/loading-spinner.component.d.ts +1 -1
- package/app/eo-framework/ui/overlay/overlay.component.d.ts +1 -1
- package/app/eo-framework/ui/query-scope-select/query-scope-select.component.d.ts +1 -1
- package/app/eo-framework/ui/rtl-aware/rtl-aware.directive.d.ts +1 -1
- package/app/eo-framework/ui/signature-tab/signature-tab.component.d.ts +1 -1
- package/app/eo-framework/ui/user-avatar/user-avatar.component.d.ts +1 -1
- package/app/eo-framework/upload-overlay/upload-overlay-guard.service.d.ts +2 -2
- package/app/eo-framework/upload-overlay/upload-overlay-guard.service.d.ts.map +1 -1
- package/app/eo-framework/util/directive/prevent-double-click.directive.d.ts +1 -1
- package/app/eo-framework-core/api/grid.service.d.ts +4 -3
- package/app/eo-framework-core/api/grid.service.d.ts.map +1 -1
- package/app/eo-framework-core/pending-changes/pending-changes-guard.service.d.ts +1 -2
- package/app/eo-framework-core/pending-changes/pending-changes-guard.service.d.ts.map +1 -1
- package/app/eo-framework-core/route-guards/auth/auth-guard.service.d.ts +2 -2
- package/app/eo-framework-core/route-guards/auth/auth-guard.service.d.ts.map +1 -1
- package/app/eo-framework-core/route-guards/capabilities/capabilities-guard.service.d.ts +2 -2
- package/app/eo-framework-core/route-guards/capabilities/capabilities-guard.service.d.ts.map +1 -1
- package/assets/_default/i18n/de.json +1 -0
- package/assets/_default/i18n/en.json +1 -0
- package/esm2022/app/eo-client/about-state/about-state.component.mjs +81 -0
- package/esm2022/app/eo-client/dashboard/dashboard.component.mjs +305 -0
- package/esm2022/app/eo-client/dashboard/widgets/charts-widget/charts-setup/charts-setup.component.mjs +288 -0
- package/esm2022/app/eo-client/dashboard/widgets/charts-widget/charts-widget.component.mjs +265 -0
- package/esm2022/app/eo-client/dashboard/widgets/count-objects-widget/count-objects-setup/count-objects-setup.component.mjs +121 -0
- package/esm2022/app/eo-client/dashboard/widgets/count-objects-widget/count-objects-widget.component.mjs +125 -0
- package/esm2022/app/eo-client/dashboard/widgets/hitlist-widget/hitlist-setup/hitlist-setup.component.mjs +192 -0
- package/esm2022/app/eo-client/dashboard/widgets/hitlist-widget/hitlist-widget.component.mjs +164 -0
- package/esm2022/app/eo-client/dashboard/widgets/iframe-widget/iframe-setup/iframe-setup.component.mjs +59 -0
- package/{esm2020 → esm2022}/app/eo-client/dashboard/widgets/iframe-widget/iframe-widget.component.mjs +8 -8
- package/esm2022/app/eo-client/dashboard/widgets/info-inbox-widget/info-inbox-setup/info-inbox-setup.component.mjs +60 -0
- package/esm2022/app/eo-client/dashboard/widgets/info-inbox-widget/info-inbox-widget.component.mjs +42 -0
- package/esm2022/app/eo-client/dashboard/widgets/info-intray-widget/info-intray-setup/info-intray-setup.component.mjs +69 -0
- package/esm2022/app/eo-client/dashboard/widgets/info-intray-widget/info-intray-widget.component.mjs +43 -0
- package/esm2022/app/eo-client/dashboard/widgets/last-edited-widget/last-edited-and-created.component.mjs +116 -0
- package/esm2022/app/eo-client/dashboard/widgets/search-widget/search-widget.component.mjs +123 -0
- package/{esm2020 → esm2022}/app/eo-client/eo-client-routing.module.mjs +5 -5
- package/esm2022/app/eo-client/eo-client.module.mjs +170 -0
- package/esm2022/app/eo-client/favorite-state/favorite-state.component.mjs +150 -0
- package/esm2022/app/eo-client/inbox-state/inbox-state/inbox-state.component.mjs +218 -0
- package/{esm2020 → esm2022}/app/eo-client/inbox-state/inbox-state-routing.module.mjs +5 -5
- package/{esm2020 → esm2022}/app/eo-client/inbox-state/inbox-state.module.mjs +13 -13
- package/esm2022/app/eo-client/login/login.component.mjs +111 -0
- package/esm2022/app/eo-client/notifications-state/notifications-state.component.mjs +227 -0
- package/esm2022/app/eo-client/object-state/object-state/object-state.component.mjs +342 -0
- package/{esm2020 → esm2022}/app/eo-client/object-state/object-state-routing.module.mjs +5 -5
- package/esm2022/app/eo-client/object-state/object-state-service/object-state.service.mjs +134 -0
- package/{esm2020 → esm2022}/app/eo-client/object-state/object-state.module.mjs +11 -11
- package/esm2022/app/eo-client/prepare-state/prepare-state/prepare-state.component.mjs +159 -0
- package/{esm2020 → esm2022}/app/eo-client/prepare-state/prepare-state-routing.module.mjs +5 -5
- package/{esm2020 → esm2022}/app/eo-client/prepare-state/prepare-state.module.mjs +15 -15
- package/esm2022/app/eo-client/process-state/process-state.component.mjs +330 -0
- package/esm2022/app/eo-client/recyclebin-state/recyclebin-state.component.mjs +150 -0
- package/esm2022/app/eo-client/result-state/result-state.component.mjs +71 -0
- package/esm2022/app/eo-client/settings/settings.component.mjs +287 -0
- package/esm2022/app/eo-client/stored-queries-state/stored-queries-state.component.mjs +209 -0
- package/esm2022/app/eo-client/version-state/version-state.component.mjs +142 -0
- package/{esm2020 → esm2022}/app/eo-framework/accordion/accordion.module.mjs +5 -5
- package/{esm2020 → esm2022}/app/eo-framework/accordion/simple-accordion/simple-accordion.component.mjs +4 -4
- package/{esm2020 → esm2022}/app/eo-framework/actions/action-menu/action-component-anchor/action-component-anchor.directive.mjs +5 -5
- package/esm2022/app/eo-framework/actions/action-menu/action-menu.component.mjs +208 -0
- package/esm2022/app/eo-framework/actions/action-service/action.service.mjs +185 -0
- package/esm2022/app/eo-framework/actions/action-target.mjs +28 -0
- package/esm2022/app/eo-framework/actions/action.module.mjs +269 -0
- package/esm2022/app/eo-framework/actions/actions/add-resubmission-action/add-resubmission/add-resubmission.component.mjs +201 -0
- package/esm2022/app/eo-framework/actions/actions/add-resubmission-action/add-resubmission-action.mjs +50 -0
- package/esm2022/app/eo-framework/actions/actions/add-subscription-action/add-subscription/add-subscription.component.mjs +134 -0
- package/esm2022/app/eo-framework/actions/actions/add-subscription-action/add-subscription-action.mjs +50 -0
- package/{esm2020 → esm2022}/app/eo-framework/actions/actions/cancel-signing-action/cancel-signing/cancel-signing.component.mjs +6 -6
- package/{esm2020 → esm2022}/app/eo-framework/actions/actions/cancel-signing-action/cancel-signing-action.mjs +5 -5
- package/{esm2020 → esm2022}/app/eo-framework/actions/actions/clipboard/clipboard-action.mjs +5 -5
- package/esm2022/app/eo-framework/actions/actions/clipboard/clipboard-object-action/clipboard-object-action.component.mjs +95 -0
- package/{esm2020 → esm2022}/app/eo-framework/actions/actions/copy-action/copy-action.mjs +5 -5
- package/esm2022/app/eo-framework/actions/actions/custom-actions/custom-actions.component.mjs +88 -0
- package/{esm2020 → esm2022}/app/eo-framework/actions/actions/cut-action/cut-action.mjs +5 -5
- package/esm2022/app/eo-framework/actions/actions/delete-action/delete/delete.component.mjs +111 -0
- package/{esm2020 → esm2022}/app/eo-framework/actions/actions/delete-action/delete-action.mjs +5 -5
- package/{esm2020 → esm2022}/app/eo-framework/actions/actions/delete-action/delete-prepared-action.mjs +5 -5
- package/{esm2020 → esm2022}/app/eo-framework/actions/actions/delete-content-action/delete-content/delete-content.component.mjs +6 -6
- package/{esm2020 → esm2022}/app/eo-framework/actions/actions/delete-content-action/delete-content-action.mjs +5 -5
- package/{esm2020 → esm2022}/app/eo-framework/actions/actions/download-action/download-action.mjs +5 -5
- package/{esm2020 → esm2022}/app/eo-framework/actions/actions/download-action/download-object-action/download-object-action.component.mjs +6 -6
- package/esm2022/app/eo-framework/actions/actions/email/email/email.component.mjs +97 -0
- package/{esm2020 → esm2022}/app/eo-framework/actions/actions/email/email-action.mjs +5 -5
- package/esm2022/app/eo-framework/actions/actions/favorite-action/favorite-action.mjs +76 -0
- package/{esm2020 → esm2022}/app/eo-framework/actions/actions/finalize/definalize-action.mjs +5 -5
- package/{esm2020 → esm2022}/app/eo-framework/actions/actions/finalize/finalize-action.mjs +6 -6
- package/{esm2020 → esm2022}/app/eo-framework/actions/actions/finalize/finalize-object-action/finalize-object-action.component.mjs +6 -6
- package/esm2022/app/eo-framework/actions/actions/open-context-action/open-context-action.mjs +56 -0
- package/esm2022/app/eo-framework/actions/actions/open-document-action/open-document-action.component.mjs +69 -0
- package/{esm2020 → esm2022}/app/eo-framework/actions/actions/open-document-action/open-document-action.mjs +5 -5
- package/{esm2020 → esm2022}/app/eo-framework/actions/actions/open-versions-action/open-versions-action.mjs +5 -5
- package/esm2022/app/eo-framework/actions/actions/remove-subscription-action/remove-subscription-action.mjs +45 -0
- package/{esm2020 → esm2022}/app/eo-framework/actions/actions/restore-version-action/restore-version-action.mjs +5 -5
- package/esm2022/app/eo-framework/actions/actions/share-object-action/share-object/share-object.component.mjs +89 -0
- package/{esm2020 → esm2022}/app/eo-framework/actions/actions/share-object-action/share-object-action.mjs +5 -5
- package/esm2022/app/eo-framework/actions/actions/signature-action/sequence-list/sequence-list.component.mjs +184 -0
- package/esm2022/app/eo-framework/actions/actions/signature-action/sequence-list-item/sequence-list-item.component.mjs +53 -0
- package/esm2022/app/eo-framework/actions/actions/signature-action/signature/signature.component.mjs +146 -0
- package/{esm2020 → esm2022}/app/eo-framework/actions/actions/signature-action/signature-action.component.mjs +5 -5
- package/{esm2020 → esm2022}/app/eo-framework/actions/actions/unlock-action/unlock-action.mjs +5 -5
- package/{esm2020 → esm2022}/app/eo-framework/actions/actions/update-resubmission-action/update-resubmission-action.mjs +5 -5
- package/{esm2020 → esm2022}/app/eo-framework/actions/actions/workflow-action/simple-workflow-action.component.mjs +5 -5
- package/esm2022/app/eo-framework/actions/actions/workflow-action/workflow/workflow.component.mjs +107 -0
- package/{esm2020 → esm2022}/app/eo-framework/actions/actions/workflow-action/workflow-action.component.mjs +5 -5
- package/esm2022/app/eo-framework/app-shell/app-bar/app-add/app-add-dialog/app-add-dialog.component.mjs +173 -0
- package/{esm2020 → esm2022}/app/eo-framework/app-shell/app-bar/app-add/app-add.component.mjs +5 -5
- package/esm2022/app/eo-framework/app-shell/app-bar/app-bar.component.mjs +203 -0
- package/esm2022/app/eo-framework/app-shell/app-bar/app-process/app-process.component.mjs +112 -0
- package/esm2022/app/eo-framework/app-shell/app-bar/app-search/app-search.component.mjs +793 -0
- package/esm2022/app/eo-framework/app-shell/app-bar/context-search/context-search.component.mjs +46 -0
- package/{esm2020 → esm2022}/app/eo-framework/app-shell/app-bar/side-bar/side-bar.component.mjs +6 -6
- package/esm2022/app/eo-framework/app-shell/app-bar/user-avatar-overlay/user-avatar-overlay.component.mjs +42 -0
- package/{esm2020 → esm2022}/app/eo-framework/app-shell/app-shell-routing.module.mjs +5 -5
- package/{esm2020 → esm2022}/app/eo-framework/app-shell/app-shell.module.mjs +40 -40
- package/{esm2020 → esm2022}/app/eo-framework/cta/component/cta.component.mjs +4 -4
- package/{esm2020 → esm2022}/app/eo-framework/cta/cta.module.mjs +5 -5
- package/{esm2020 → esm2022}/app/eo-framework/eo-framework.module.mjs +110 -110
- package/{esm2020 → esm2022}/app/eo-framework/error/error.module.mjs +9 -9
- package/{esm2020 → esm2022}/app/eo-framework/error/error404/error404.component.mjs +4 -4
- package/{esm2020 → esm2022}/app/eo-framework/error/not-found/not-found.component.mjs +5 -5
- package/esm2022/app/eo-framework/form-elements/checkbox/checkbox.component.mjs +62 -0
- package/esm2022/app/eo-framework/form-elements/codesystem/codesystem.component.mjs +312 -0
- package/esm2022/app/eo-framework/form-elements/date/date.component.mjs +101 -0
- package/esm2022/app/eo-framework/form-elements/date/year-range/year-range.directive.mjs +44 -0
- package/esm2022/app/eo-framework/form-elements/datetime-range/datetime-range.component.mjs +184 -0
- package/esm2022/app/eo-framework/form-elements/dynamic-list/dynamic-list.component.mjs +303 -0
- package/{esm2020 → esm2022}/app/eo-framework/form-elements/form-elements.module.mjs +76 -76
- package/esm2022/app/eo-framework/form-elements/form-input/form-input.component.mjs +73 -0
- package/esm2022/app/eo-framework/form-elements/form-input/input-focus/input-focus.directive.mjs +35 -0
- package/esm2022/app/eo-framework/form-elements/id-reference/id-reference.component.mjs +252 -0
- package/esm2022/app/eo-framework/form-elements/id-reference/reference-finder/reference-finder.component.mjs +253 -0
- package/esm2022/app/eo-framework/form-elements/id-reference/reference-finder-entry/reference-finder-entry.component.mjs +33 -0
- package/esm2022/app/eo-framework/form-elements/id-reference/service/reference-finder.service.mjs +106 -0
- package/esm2022/app/eo-framework/form-elements/number/number.component.mjs +171 -0
- package/esm2022/app/eo-framework/form-elements/number-range/number-range.component.mjs +138 -0
- package/esm2022/app/eo-framework/form-elements/organization/organization.component.mjs +216 -0
- package/{esm2020 → esm2022}/app/eo-framework/form-elements/password/password.component.mjs +4 -4
- package/esm2022/app/eo-framework/form-elements/reference/reference.component.mjs +223 -0
- package/esm2022/app/eo-framework/form-elements/string/string.component.mjs +254 -0
- package/{esm2020 → esm2022}/app/eo-framework/frame/frame.component.mjs +5 -5
- package/esm2022/app/eo-framework/grid/column-configurator/column-configurator.component.mjs +211 -0
- package/esm2022/app/eo-framework/grid/extensions/custom-sort/custom-sort.component.mjs +83 -0
- package/{esm2020 → esm2022}/app/eo-framework/grid/extensions/empty/empty.component.mjs +4 -4
- package/esm2022/app/eo-framework/grid/extensions/filter/abstract-filter.component.mjs +65 -0
- package/esm2022/app/eo-framework/grid/extensions/filter/custom/custom-filter.component.mjs +82 -0
- package/esm2022/app/eo-framework/grid/extensions/filter/setFilters/set-filter.component.mjs +85 -0
- package/esm2022/app/eo-framework/grid/extensions/filter/text/text-filter.component.mjs +98 -0
- package/esm2022/app/eo-framework/grid/extensions/pagination/pagination.component.mjs +52 -0
- package/{esm2020 → esm2022}/app/eo-framework/grid/extensions/quick-filter/quick-filter.component.mjs +6 -6
- package/{esm2020 → esm2022}/app/eo-framework/grid/extensions/reset-filter/reset-filter.component.mjs +4 -4
- package/esm2022/app/eo-framework/grid/extensions/services/list-settings.service.mjs +42 -0
- package/esm2022/app/eo-framework/grid/extensions/total-count/total-count.component.mjs +36 -0
- package/esm2022/app/eo-framework/grid/filters/codesystem-filter.component.mjs +94 -0
- package/esm2022/app/eo-framework/grid/filters/datetime-filter.component.mjs +75 -0
- package/esm2022/app/eo-framework/grid/filters/dynamic-list-filter.component.mjs +96 -0
- package/esm2022/app/eo-framework/grid/filters/list-filter.component.mjs +54 -0
- package/esm2022/app/eo-framework/grid/filters/organization-filter.component.mjs +64 -0
- package/esm2022/app/eo-framework/grid/grid.component.mjs +420 -0
- package/esm2022/app/eo-framework/grid/grid.module.mjs +97 -0
- package/esm2022/app/eo-framework/grid/row-grouping/batchRemover.mjs +50 -0
- package/esm2022/app/eo-framework/grid/row-grouping/group-stage.mjs +623 -0
- package/{esm2020 → esm2022}/app/eo-framework/grid/row-grouping/row-grouping.module.mjs +2 -1
- package/{esm2020 → esm2022}/app/eo-framework/inbox-details/duetimeInfo/duetimeInfo.component.mjs +5 -5
- package/esm2022/app/eo-framework/inbox-details/inbox-details.component.mjs +457 -0
- package/esm2022/app/eo-framework/list-container/list-container.component.mjs +101 -0
- package/{esm2020 → esm2022}/app/eo-framework/list-container/list-container.module.mjs +7 -7
- package/esm2022/app/eo-framework/media/content-preview.service.mjs +42 -0
- package/esm2022/app/eo-framework/media/media.component.mjs +315 -0
- package/{esm2020 → esm2022}/app/eo-framework/media/media.module.mjs +13 -13
- package/{esm2020 → esm2022}/app/eo-framework/object-details/edit-icon/edit-icon.component.mjs +5 -5
- package/esm2022/app/eo-framework/object-details/favorite-icon/favorite-icon.component.mjs +104 -0
- package/esm2022/app/eo-framework/object-details/object-details.component.mjs +439 -0
- package/{esm2020 → esm2022}/app/eo-framework/object-details/object-details.module.mjs +42 -42
- package/esm2022/app/eo-framework/object-details/object-history/history-filter/history-filter-pipe/history-filter.pipe.mjs +32 -0
- package/{esm2020 → esm2022}/app/eo-framework/object-details/object-history/history-filter/history-filter.component.mjs +4 -4
- package/esm2022/app/eo-framework/object-details/object-history/object-history.component.mjs +82 -0
- package/esm2022/app/eo-framework/object-details/object-links/object-links.component.mjs +292 -0
- package/{esm2020 → esm2022}/app/eo-framework/object-form/object-form/form-element/form-element-template.directive.mjs +5 -5
- package/esm2022/app/eo-framework/object-form/object-form/form-element/form-element.component.mjs +123 -0
- package/esm2022/app/eo-framework/object-form/object-form/form-element-table/form-element-table.component.mjs +639 -0
- package/esm2022/app/eo-framework/object-form/object-form/form-element-table/row-edit/row-edit.component.mjs +238 -0
- package/esm2022/app/eo-framework/object-form/object-form/form-validation/form-validation.mjs +40 -0
- package/esm2022/app/eo-framework/object-form/object-form/object-form-group/object-form-group.component.mjs +81 -0
- package/esm2022/app/eo-framework/object-form/object-form/object-form-script/object-form-script.service.mjs +113 -0
- package/esm2022/app/eo-framework/object-form/object-form/object-form-script/object-form-scripting-scope.mjs +267 -0
- package/esm2022/app/eo-framework/object-form/object-form/object-form.component.mjs +148 -0
- package/esm2022/app/eo-framework/object-form/object-form-edit/object-form-edit.component.mjs +216 -0
- package/esm2022/app/eo-framework/object-form/object-form-helper.service.mjs +717 -0
- package/{esm2020 → esm2022}/app/eo-framework/object-form/object-form.module.mjs +37 -37
- package/esm2022/app/eo-framework/object-state-details/object-state-details.component.mjs +135 -0
- package/{esm2020 → esm2022}/app/eo-framework/plugins/plugin.component.mjs +16 -16
- package/{esm2020 → esm2022}/app/eo-framework/plugins/plugin.directive.mjs +5 -5
- package/{esm2020 → esm2022}/app/eo-framework/plugins/plugin.service.mjs +6 -6
- package/esm2022/app/eo-framework/plugins/plugins.module.mjs +55 -0
- package/{esm2020 → esm2022}/app/eo-framework/prepare-details/prepare-content-exists-info/prepare-content-exists-info.component.mjs +4 -4
- package/esm2022/app/eo-framework/prepare-details/prepare-details.component.mjs +557 -0
- package/esm2022/app/eo-framework/process/details/process-details.component.mjs +226 -0
- package/{esm2020 → esm2022}/app/eo-framework/process/history/process-history.component.mjs +4 -4
- package/{esm2020 → esm2022}/app/eo-framework/process/process-file/process-file.component.mjs +6 -6
- package/esm2022/app/eo-framework/process-form/process-form.component.mjs +50 -0
- package/{esm2020 → esm2022}/app/eo-framework/process-form/process-form.module.mjs +11 -11
- package/esm2022/app/eo-framework/quick-search/quick-search/quick-search.component.mjs +220 -0
- package/{esm2020 → esm2022}/app/eo-framework/quick-search/quick-search.module.mjs +11 -11
- package/esm2022/app/eo-framework/recyclebin-details/recyclebin-details.component.mjs +271 -0
- package/esm2022/app/eo-framework/result-list/result-list.component.mjs +369 -0
- package/{esm2020 → esm2022}/app/eo-framework/result-list/result-list.module.mjs +11 -11
- package/esm2022/app/eo-framework/settings/change-password/change-password-form/change-password-form.component.mjs +125 -0
- package/{esm2020 → esm2022}/app/eo-framework/settings/permissions/permissions.component.mjs +4 -4
- package/{esm2020 → esm2022}/app/eo-framework/settings/settings.module.mjs +13 -13
- package/esm2022/app/eo-framework/shortcuts/global-shortcuts/global-shortcuts-section/global-shortcuts-section.component.mjs +65 -0
- package/esm2022/app/eo-framework/shortcuts/global-shortcuts/global-shortcuts.component.mjs +130 -0
- package/{esm2020 → esm2022}/app/eo-framework/shortcuts/shortcut.interface.mjs +1 -1
- package/{esm2020 → esm2022}/app/eo-framework/shortcuts/shortcuts.directive.mjs +5 -5
- package/{esm2020 → esm2022}/app/eo-framework/shortcuts/shortcuts.module.mjs +9 -9
- package/esm2022/app/eo-framework/shortcuts/shortcuts.service.mjs +45 -0
- package/esm2022/app/eo-framework/stored-query/stored-query/stored-query.component.mjs +225 -0
- package/esm2022/app/eo-framework/stored-query/stored-query-details/dynamic-property-switch/dynamic-property-switch.component.mjs +46 -0
- package/esm2022/app/eo-framework/stored-query/stored-query-details/stored-query-details.component.mjs +501 -0
- package/{esm2020 → esm2022}/app/eo-framework/stored-query/stored-query.module.mjs +20 -20
- package/{esm2020 → esm2022}/app/eo-framework/tree/tree-node/tree-node.component.mjs +5 -5
- package/esm2022/app/eo-framework/tree/tree.component.mjs +281 -0
- package/{esm2020 → esm2022}/app/eo-framework/tree/tree.module.mjs +7 -7
- package/{esm2020 → esm2022}/app/eo-framework/ui/animations/panel-loading.animation.mjs +1 -1
- package/esm2022/app/eo-framework/ui/clipboard/clipboard.component.mjs +159 -0
- package/esm2022/app/eo-framework/ui/eo-dialog/eo-dialog.component.mjs +130 -0
- package/esm2022/app/eo-framework/ui/eo-icon/eo-icon.component.mjs +119 -0
- package/esm2022/app/eo-framework/ui/error-message/error-message.component.mjs +33 -0
- package/{esm2020 → esm2022}/app/eo-framework/ui/indexdata-summary/indexdata-summary-entry/indexdata-summary-entry.component.mjs +4 -4
- package/esm2022/app/eo-framework/ui/indexdata-summary/indexdata-summary.component.mjs +147 -0
- package/{esm2020 → esm2022}/app/eo-framework/ui/loading-spinner/loading-spinner.component.mjs +8 -8
- package/esm2022/app/eo-framework/ui/outside-click/outside-click.directive.mjs +60 -0
- package/esm2022/app/eo-framework/ui/overlay/overlay.component.mjs +71 -0
- package/{esm2020 → esm2022}/app/eo-framework/ui/query-scope-select/query-scope-select.component.mjs +5 -5
- package/esm2022/app/eo-framework/ui/router-link/router-link.directive.mjs +26 -0
- package/esm2022/app/eo-framework/ui/rtl-aware/rtl-aware.directive.mjs +57 -0
- package/esm2022/app/eo-framework/ui/signature-tab/signature-tab.component.mjs +32 -0
- package/{esm2020 → esm2022}/app/eo-framework/ui/ui.module.mjs +59 -59
- package/esm2022/app/eo-framework/ui/user-avatar/user-avatar.component.mjs +54 -0
- package/esm2022/app/eo-framework/upload-overlay/upload-overlay-guard.service.mjs +17 -0
- package/esm2022/app/eo-framework/upload-overlay/upload-overlay.component.mjs +397 -0
- package/{esm2020 → esm2022}/app/eo-framework/util/directive/prevent-double-click.directive.mjs +5 -5
- package/esm2022/app/eo-framework/util/directive/trap-focus.directive.mjs +69 -0
- package/esm2022/app/eo-framework/util/services/utilities.service.mjs +25 -0
- package/esm2022/app/eo-framework/util/sortable/order-by.pipe.mjs +48 -0
- package/{esm2020 → esm2022}/app/eo-framework/util/util.module.mjs +5 -5
- package/esm2022/app/eo-framework-core/agent/agent.service.mjs +178 -0
- package/esm2022/app/eo-framework-core/api/grid.service.mjs +732 -0
- package/esm2022/app/eo-framework-core/api/plugins.service.mjs +258 -0
- package/esm2022/app/eo-framework-core/empty-state/empty-state.service.mjs +53 -0
- package/esm2022/app/eo-framework-core/eo-framework-core.module.mjs +105 -0
- package/esm2022/app/eo-framework-core/error-handler/error-handler.service.mjs +89 -0
- package/esm2022/app/eo-framework-core/layout/layout.service.mjs +106 -0
- package/esm2022/app/eo-framework-core/location/location.service.mjs +146 -0
- package/esm2022/app/eo-framework-core/pending-changes/pending-changes-guard.service.mjs +18 -0
- package/esm2022/app/eo-framework-core/pending-changes/pending-changes.service.mjs +112 -0
- package/esm2022/app/eo-framework-core/pipes/filesize.pipe.mjs +30 -0
- package/{esm2020 → esm2022}/app/eo-framework-core/pipes/keys.pipe.mjs +4 -4
- package/esm2022/app/eo-framework-core/pipes/locale-date.pipe.mjs +63 -0
- package/esm2022/app/eo-framework-core/pipes/locale-number.pipe.mjs +109 -0
- package/{esm2020 → esm2022}/app/eo-framework-core/pipes/pipes.module.mjs +19 -19
- package/{esm2020 → esm2022}/app/eo-framework-core/pipes/safe-html.pipe.mjs +5 -5
- package/esm2022/app/eo-framework-core/references/reference.service.mjs +266 -0
- package/esm2022/app/eo-framework-core/route-guards/auth/auth-guard.service.mjs +29 -0
- package/esm2022/app/eo-framework-core/route-guards/capabilities/capabilities-guard.service.mjs +55 -0
- package/esm2022/app/eo-framework-core/search/app-search.service.mjs +387 -0
- package/esm2022/app/eo-framework-core/selection/selection.service.mjs +63 -0
- package/esm2022/app/eo-framework-core/title/page-title.service.mjs +42 -0
- package/{fesm2020 → fesm2022}/eo-sdk-client.mjs +2278 -2143
- package/fesm2022/eo-sdk-client.mjs.map +1 -0
- package/misc/scripts/copy-client-assets.js +1 -1
- package/package.json +31 -44
- package/styles.css +725 -550
- package/styles.scss +3 -3
- package/esm2020/app/eo-client/about-state/about-state.component.mjs +0 -81
- package/esm2020/app/eo-client/dashboard/dashboard.component.mjs +0 -305
- package/esm2020/app/eo-client/dashboard/widgets/charts-widget/charts-setup/charts-setup.component.mjs +0 -288
- package/esm2020/app/eo-client/dashboard/widgets/charts-widget/charts-widget.component.mjs +0 -265
- package/esm2020/app/eo-client/dashboard/widgets/count-objects-widget/count-objects-setup/count-objects-setup.component.mjs +0 -121
- package/esm2020/app/eo-client/dashboard/widgets/count-objects-widget/count-objects-widget.component.mjs +0 -125
- package/esm2020/app/eo-client/dashboard/widgets/hitlist-widget/hitlist-setup/hitlist-setup.component.mjs +0 -192
- package/esm2020/app/eo-client/dashboard/widgets/hitlist-widget/hitlist-widget.component.mjs +0 -164
- package/esm2020/app/eo-client/dashboard/widgets/iframe-widget/iframe-setup/iframe-setup.component.mjs +0 -59
- package/esm2020/app/eo-client/dashboard/widgets/info-inbox-widget/info-inbox-setup/info-inbox-setup.component.mjs +0 -60
- package/esm2020/app/eo-client/dashboard/widgets/info-inbox-widget/info-inbox-widget.component.mjs +0 -42
- package/esm2020/app/eo-client/dashboard/widgets/info-intray-widget/info-intray-setup/info-intray-setup.component.mjs +0 -69
- package/esm2020/app/eo-client/dashboard/widgets/info-intray-widget/info-intray-widget.component.mjs +0 -43
- package/esm2020/app/eo-client/dashboard/widgets/last-edited-widget/last-edited-and-created.component.mjs +0 -116
- package/esm2020/app/eo-client/dashboard/widgets/search-widget/search-widget.component.mjs +0 -123
- package/esm2020/app/eo-client/eo-client.module.mjs +0 -170
- package/esm2020/app/eo-client/favorite-state/favorite-state.component.mjs +0 -150
- package/esm2020/app/eo-client/inbox-state/inbox-state/inbox-state.component.mjs +0 -218
- package/esm2020/app/eo-client/login/login.component.mjs +0 -111
- package/esm2020/app/eo-client/notifications-state/notifications-state.component.mjs +0 -227
- package/esm2020/app/eo-client/object-state/object-state/object-state.component.mjs +0 -342
- package/esm2020/app/eo-client/object-state/object-state-service/object-state.service.mjs +0 -134
- package/esm2020/app/eo-client/prepare-state/prepare-state/prepare-state.component.mjs +0 -159
- package/esm2020/app/eo-client/process-state/process-state.component.mjs +0 -330
- package/esm2020/app/eo-client/recyclebin-state/recyclebin-state.component.mjs +0 -150
- package/esm2020/app/eo-client/result-state/result-state.component.mjs +0 -71
- package/esm2020/app/eo-client/settings/settings.component.mjs +0 -287
- package/esm2020/app/eo-client/stored-queries-state/stored-queries-state.component.mjs +0 -209
- package/esm2020/app/eo-client/version-state/version-state.component.mjs +0 -142
- package/esm2020/app/eo-framework/actions/action-menu/action-menu.component.mjs +0 -208
- package/esm2020/app/eo-framework/actions/action-service/action.service.mjs +0 -185
- package/esm2020/app/eo-framework/actions/action-target.mjs +0 -28
- package/esm2020/app/eo-framework/actions/action.module.mjs +0 -274
- package/esm2020/app/eo-framework/actions/actions/add-resubmission-action/add-resubmission/add-resubmission.component.mjs +0 -201
- package/esm2020/app/eo-framework/actions/actions/add-resubmission-action/add-resubmission-action.mjs +0 -50
- package/esm2020/app/eo-framework/actions/actions/add-subscription-action/add-subscription/add-subscription.component.mjs +0 -134
- package/esm2020/app/eo-framework/actions/actions/add-subscription-action/add-subscription-action.mjs +0 -50
- package/esm2020/app/eo-framework/actions/actions/clipboard/clipboard-object-action/clipboard-object-action.component.mjs +0 -95
- package/esm2020/app/eo-framework/actions/actions/custom-actions/custom-actions.component.mjs +0 -88
- package/esm2020/app/eo-framework/actions/actions/delete-action/delete/delete.component.mjs +0 -111
- package/esm2020/app/eo-framework/actions/actions/email/email/email.component.mjs +0 -97
- package/esm2020/app/eo-framework/actions/actions/favorite-action/favorite-action.mjs +0 -76
- package/esm2020/app/eo-framework/actions/actions/open-context-action/open-context-action.mjs +0 -56
- package/esm2020/app/eo-framework/actions/actions/open-document-action/open-document-action.component.mjs +0 -69
- package/esm2020/app/eo-framework/actions/actions/remove-subscription-action/remove-subscription-action.mjs +0 -45
- package/esm2020/app/eo-framework/actions/actions/share-object-action/share-object/share-object.component.mjs +0 -89
- package/esm2020/app/eo-framework/actions/actions/signature-action/sequence-list/sequence-list.component.mjs +0 -184
- package/esm2020/app/eo-framework/actions/actions/signature-action/sequence-list-item/sequence-list-item.component.mjs +0 -53
- package/esm2020/app/eo-framework/actions/actions/signature-action/signature/signature.component.mjs +0 -146
- package/esm2020/app/eo-framework/actions/actions/workflow-action/workflow/workflow.component.mjs +0 -107
- package/esm2020/app/eo-framework/app-shell/app-bar/app-add/app-add-dialog/app-add-dialog.component.mjs +0 -173
- package/esm2020/app/eo-framework/app-shell/app-bar/app-bar.component.mjs +0 -203
- package/esm2020/app/eo-framework/app-shell/app-bar/app-process/app-process.component.mjs +0 -112
- package/esm2020/app/eo-framework/app-shell/app-bar/app-search/app-search.component.mjs +0 -793
- package/esm2020/app/eo-framework/app-shell/app-bar/context-search/context-search.component.mjs +0 -46
- package/esm2020/app/eo-framework/app-shell/app-bar/user-avatar-overlay/user-avatar-overlay.component.mjs +0 -42
- package/esm2020/app/eo-framework/form-elements/checkbox/checkbox.component.mjs +0 -62
- package/esm2020/app/eo-framework/form-elements/codesystem/codesystem.component.mjs +0 -312
- package/esm2020/app/eo-framework/form-elements/date/date.component.mjs +0 -101
- package/esm2020/app/eo-framework/form-elements/date/year-range/year-range.directive.mjs +0 -44
- package/esm2020/app/eo-framework/form-elements/datetime-range/datetime-range.component.mjs +0 -184
- package/esm2020/app/eo-framework/form-elements/dynamic-list/dynamic-list.component.mjs +0 -303
- package/esm2020/app/eo-framework/form-elements/form-input/form-input.component.mjs +0 -73
- package/esm2020/app/eo-framework/form-elements/form-input/input-focus/input-focus.directive.mjs +0 -35
- package/esm2020/app/eo-framework/form-elements/id-reference/id-reference.component.mjs +0 -252
- package/esm2020/app/eo-framework/form-elements/id-reference/reference-finder/reference-finder.component.mjs +0 -253
- package/esm2020/app/eo-framework/form-elements/id-reference/reference-finder-entry/reference-finder-entry.component.mjs +0 -33
- package/esm2020/app/eo-framework/form-elements/id-reference/service/reference-finder.service.mjs +0 -106
- package/esm2020/app/eo-framework/form-elements/number/number.component.mjs +0 -171
- package/esm2020/app/eo-framework/form-elements/number-range/number-range.component.mjs +0 -138
- package/esm2020/app/eo-framework/form-elements/organization/organization.component.mjs +0 -216
- package/esm2020/app/eo-framework/form-elements/reference/reference.component.mjs +0 -223
- package/esm2020/app/eo-framework/form-elements/string/string.component.mjs +0 -254
- package/esm2020/app/eo-framework/grid/column-configurator/column-configurator.component.mjs +0 -211
- package/esm2020/app/eo-framework/grid/extensions/custom-sort/custom-sort.component.mjs +0 -83
- package/esm2020/app/eo-framework/grid/extensions/filter/abstract-filter.component.mjs +0 -65
- package/esm2020/app/eo-framework/grid/extensions/filter/custom/custom-filter.component.mjs +0 -82
- package/esm2020/app/eo-framework/grid/extensions/filter/setFilters/set-filter.component.mjs +0 -85
- package/esm2020/app/eo-framework/grid/extensions/filter/text/text-filter.component.mjs +0 -98
- package/esm2020/app/eo-framework/grid/extensions/pagination/pagination.component.mjs +0 -52
- package/esm2020/app/eo-framework/grid/extensions/services/list-settings.service.mjs +0 -42
- package/esm2020/app/eo-framework/grid/extensions/total-count/total-count.component.mjs +0 -36
- package/esm2020/app/eo-framework/grid/filters/codesystem-filter.component.mjs +0 -94
- package/esm2020/app/eo-framework/grid/filters/datetime-filter.component.mjs +0 -75
- package/esm2020/app/eo-framework/grid/filters/dynamic-list-filter.component.mjs +0 -96
- package/esm2020/app/eo-framework/grid/filters/list-filter.component.mjs +0 -54
- package/esm2020/app/eo-framework/grid/filters/organization-filter.component.mjs +0 -64
- package/esm2020/app/eo-framework/grid/grid.component.mjs +0 -421
- package/esm2020/app/eo-framework/grid/grid.module.mjs +0 -107
- package/esm2020/app/eo-framework/grid/row-grouping/group-stage.mjs +0 -528
- package/esm2020/app/eo-framework/inbox-details/inbox-details.component.mjs +0 -457
- package/esm2020/app/eo-framework/list-container/list-container.component.mjs +0 -101
- package/esm2020/app/eo-framework/media/content-preview.service.mjs +0 -42
- package/esm2020/app/eo-framework/media/media.component.mjs +0 -314
- package/esm2020/app/eo-framework/object-details/favorite-icon/favorite-icon.component.mjs +0 -104
- package/esm2020/app/eo-framework/object-details/object-details.component.mjs +0 -439
- package/esm2020/app/eo-framework/object-details/object-history/history-filter/history-filter-pipe/history-filter.pipe.mjs +0 -32
- package/esm2020/app/eo-framework/object-details/object-history/object-history.component.mjs +0 -82
- package/esm2020/app/eo-framework/object-details/object-links/object-links.component.mjs +0 -292
- package/esm2020/app/eo-framework/object-form/object-form/form-element/form-element.component.mjs +0 -123
- package/esm2020/app/eo-framework/object-form/object-form/form-element-table/form-element-table.component.mjs +0 -634
- package/esm2020/app/eo-framework/object-form/object-form/form-element-table/row-edit/row-edit.component.mjs +0 -238
- package/esm2020/app/eo-framework/object-form/object-form/form-validation/form-validation.mjs +0 -40
- package/esm2020/app/eo-framework/object-form/object-form/object-form-group/object-form-group.component.mjs +0 -81
- package/esm2020/app/eo-framework/object-form/object-form/object-form-script/object-form-script.service.mjs +0 -113
- package/esm2020/app/eo-framework/object-form/object-form/object-form-script/object-form-scripting-scope.mjs +0 -267
- package/esm2020/app/eo-framework/object-form/object-form/object-form.component.mjs +0 -148
- package/esm2020/app/eo-framework/object-form/object-form-edit/object-form-edit.component.mjs +0 -216
- package/esm2020/app/eo-framework/object-form/object-form-helper.service.mjs +0 -717
- package/esm2020/app/eo-framework/object-state-details/object-state-details.component.mjs +0 -134
- package/esm2020/app/eo-framework/plugins/plugins.module.mjs +0 -59
- package/esm2020/app/eo-framework/prepare-details/prepare-details.component.mjs +0 -557
- package/esm2020/app/eo-framework/process/details/process-details.component.mjs +0 -226
- package/esm2020/app/eo-framework/process-form/process-form.component.mjs +0 -50
- package/esm2020/app/eo-framework/quick-search/quick-search/quick-search.component.mjs +0 -220
- package/esm2020/app/eo-framework/recyclebin-details/recyclebin-details.component.mjs +0 -271
- package/esm2020/app/eo-framework/result-list/result-list.component.mjs +0 -368
- package/esm2020/app/eo-framework/settings/change-password/change-password-form/change-password-form.component.mjs +0 -125
- package/esm2020/app/eo-framework/shortcuts/global-shortcuts/global-shortcuts-section/global-shortcuts-section.component.mjs +0 -65
- package/esm2020/app/eo-framework/shortcuts/global-shortcuts/global-shortcuts.component.mjs +0 -130
- package/esm2020/app/eo-framework/shortcuts/shortcuts.service.mjs +0 -45
- package/esm2020/app/eo-framework/stored-query/stored-query/stored-query.component.mjs +0 -225
- package/esm2020/app/eo-framework/stored-query/stored-query-details/dynamic-property-switch/dynamic-property-switch.component.mjs +0 -46
- package/esm2020/app/eo-framework/stored-query/stored-query-details/stored-query-details.component.mjs +0 -501
- package/esm2020/app/eo-framework/tree/tree.component.mjs +0 -281
- package/esm2020/app/eo-framework/ui/clipboard/clipboard.component.mjs +0 -159
- package/esm2020/app/eo-framework/ui/eo-dialog/eo-dialog.component.mjs +0 -130
- package/esm2020/app/eo-framework/ui/eo-icon/eo-icon.component.mjs +0 -119
- package/esm2020/app/eo-framework/ui/error-message/error-message.component.mjs +0 -33
- package/esm2020/app/eo-framework/ui/indexdata-summary/indexdata-summary.component.mjs +0 -146
- package/esm2020/app/eo-framework/ui/outside-click/outside-click.directive.mjs +0 -60
- package/esm2020/app/eo-framework/ui/overlay/overlay.component.mjs +0 -71
- package/esm2020/app/eo-framework/ui/router-link/router-link.directive.mjs +0 -26
- package/esm2020/app/eo-framework/ui/rtl-aware/rtl-aware.directive.mjs +0 -57
- package/esm2020/app/eo-framework/ui/signature-tab/signature-tab.component.mjs +0 -32
- package/esm2020/app/eo-framework/ui/user-avatar/user-avatar.component.mjs +0 -54
- package/esm2020/app/eo-framework/upload-overlay/upload-overlay-guard.service.mjs +0 -17
- package/esm2020/app/eo-framework/upload-overlay/upload-overlay.component.mjs +0 -397
- package/esm2020/app/eo-framework/util/directive/trap-focus.directive.mjs +0 -69
- package/esm2020/app/eo-framework/util/services/utilities.service.mjs +0 -25
- package/esm2020/app/eo-framework/util/sortable/order-by.pipe.mjs +0 -48
- package/esm2020/app/eo-framework-core/agent/agent.service.mjs +0 -178
- package/esm2020/app/eo-framework-core/api/grid.service.mjs +0 -732
- package/esm2020/app/eo-framework-core/api/plugins.service.mjs +0 -258
- package/esm2020/app/eo-framework-core/empty-state/empty-state.service.mjs +0 -53
- package/esm2020/app/eo-framework-core/eo-framework-core.module.mjs +0 -105
- package/esm2020/app/eo-framework-core/error-handler/error-handler.service.mjs +0 -89
- package/esm2020/app/eo-framework-core/layout/layout.service.mjs +0 -106
- package/esm2020/app/eo-framework-core/location/location.service.mjs +0 -146
- package/esm2020/app/eo-framework-core/pending-changes/pending-changes-guard.service.mjs +0 -18
- package/esm2020/app/eo-framework-core/pending-changes/pending-changes.service.mjs +0 -112
- package/esm2020/app/eo-framework-core/pipes/filesize.pipe.mjs +0 -30
- package/esm2020/app/eo-framework-core/pipes/locale-date.pipe.mjs +0 -63
- package/esm2020/app/eo-framework-core/pipes/locale-number.pipe.mjs +0 -109
- package/esm2020/app/eo-framework-core/references/reference.service.mjs +0 -266
- package/esm2020/app/eo-framework-core/route-guards/auth/auth-guard.service.mjs +0 -29
- package/esm2020/app/eo-framework-core/route-guards/capabilities/capabilities-guard.service.mjs +0 -55
- package/esm2020/app/eo-framework-core/search/app-search.service.mjs +0 -387
- package/esm2020/app/eo-framework-core/selection/selection.service.mjs +0 -63
- package/esm2020/app/eo-framework-core/title/page-title.service.mjs +0 -42
- package/esm2020/projects/eo-sdk/core/eo-sdk-client-projects-eo-sdk-core.mjs +0 -5
- package/esm2020/projects/eo-sdk/core/lib/config/core-config.mjs +0 -23
- package/esm2020/projects/eo-sdk/core/lib/config/core-init.service.mjs +0 -71
- package/esm2020/projects/eo-sdk/core/lib/config/core-init.tokens.mjs +0 -8
- package/esm2020/projects/eo-sdk/core/lib/config/initialize-module.mjs +0 -11
- package/esm2020/projects/eo-sdk/core/lib/config/missing-translation-handler.mjs +0 -15
- package/esm2020/projects/eo-sdk/core/lib/config/translate-json-loader.mjs +0 -130
- package/esm2020/projects/eo-sdk/core/lib/environment.enaio.mjs +0 -12
- package/esm2020/projects/eo-sdk/core/lib/eo-core-shared.module.mjs +0 -24
- package/esm2020/projects/eo-sdk/core/lib/eo-core.module.mjs +0 -117
- package/esm2020/projects/eo-sdk/core/lib/interface/change-password.interface.mjs +0 -2
- package/esm2020/projects/eo-sdk/core/lib/interface/event.interface.mjs +0 -2
- package/esm2020/projects/eo-sdk/core/lib/interface/http-options.interface.mjs +0 -2
- package/esm2020/projects/eo-sdk/core/lib/interface/logger.interface.mjs +0 -7
- package/esm2020/projects/eo-sdk/core/lib/interface/organization-objects.interface.mjs +0 -2
- package/esm2020/projects/eo-sdk/core/lib/interface/tree-node.interface.mjs +0 -2
- package/esm2020/projects/eo-sdk/core/lib/model/baseparams.model.mjs +0 -2
- package/esm2020/projects/eo-sdk/core/lib/model/bpm.model.mjs +0 -70
- package/esm2020/projects/eo-sdk/core/lib/model/custom-action.model.mjs +0 -2
- package/esm2020/projects/eo-sdk/core/lib/model/dms-object-history.model.mjs +0 -30
- package/esm2020/projects/eo-sdk/core/lib/model/dms-object.model.mjs +0 -140
- package/esm2020/projects/eo-sdk/core/lib/model/eo-error.model.mjs +0 -37
- package/esm2020/projects/eo-sdk/core/lib/model/eo-user.model.mjs +0 -86
- package/esm2020/projects/eo-sdk/core/lib/model/inbox-item.model.mjs +0 -36
- package/esm2020/projects/eo-sdk/core/lib/model/object-type.model.mjs +0 -39
- package/esm2020/projects/eo-sdk/core/lib/model/org.model.mjs +0 -2
- package/esm2020/projects/eo-sdk/core/lib/model/prepared-item.model.mjs +0 -35
- package/esm2020/projects/eo-sdk/core/lib/model/range-value.model.mjs +0 -45
- package/esm2020/projects/eo-sdk/core/lib/model/upload-file-item.model.mjs +0 -17
- package/esm2020/projects/eo-sdk/core/lib/model/upload-target.model.mjs +0 -50
- package/esm2020/projects/eo-sdk/core/lib/model/work-item-history.model.mjs +0 -54
- package/esm2020/projects/eo-sdk/core/lib/service/auth/auth-interceptor.mjs +0 -29
- package/esm2020/projects/eo-sdk/core/lib/service/auth/auth-profile.interface.mjs +0 -2
- package/esm2020/projects/eo-sdk/core/lib/service/auth/auth.service.mjs +0 -215
- package/esm2020/projects/eo-sdk/core/lib/service/auth/gateway-info.interface.mjs +0 -2
- package/esm2020/projects/eo-sdk/core/lib/service/backend/backend.service.mjs +0 -358
- package/esm2020/projects/eo-sdk/core/lib/service/bpm/bpm.service.mjs +0 -286
- package/esm2020/projects/eo-sdk/core/lib/service/cache/app-cache.service.mjs +0 -117
- package/esm2020/projects/eo-sdk/core/lib/service/capabilities/capabilities.model.mjs +0 -2
- package/esm2020/projects/eo-sdk/core/lib/service/capabilities/capabilities.service.mjs +0 -60
- package/esm2020/projects/eo-sdk/core/lib/service/clipboard/clipboard-action.enum.mjs +0 -6
- package/esm2020/projects/eo-sdk/core/lib/service/clipboard/clipboard.interface.mjs +0 -2
- package/esm2020/projects/eo-sdk/core/lib/service/clipboard/clipboard.service.mjs +0 -100
- package/esm2020/projects/eo-sdk/core/lib/service/config/config.enum.mjs +0 -6
- package/esm2020/projects/eo-sdk/core/lib/service/config/config.interface.mjs +0 -2
- package/esm2020/projects/eo-sdk/core/lib/service/config/config.service.mjs +0 -135
- package/esm2020/projects/eo-sdk/core/lib/service/dms/dms.service.mjs +0 -507
- package/esm2020/projects/eo-sdk/core/lib/service/dms/dmsParams.interface.mjs +0 -2
- package/esm2020/projects/eo-sdk/core/lib/service/events/event.service.mjs +0 -44
- package/esm2020/projects/eo-sdk/core/lib/service/events/events.mjs +0 -27
- package/esm2020/projects/eo-sdk/core/lib/service/inbox/inbox.service.mjs +0 -111
- package/esm2020/projects/eo-sdk/core/lib/service/logger/console-log.service.mjs +0 -41
- package/esm2020/projects/eo-sdk/core/lib/service/logger/logger.mjs +0 -47
- package/esm2020/projects/eo-sdk/core/lib/service/notifications/notifications.service.mjs +0 -136
- package/esm2020/projects/eo-sdk/core/lib/service/prepare/objectTypes.interface.mjs +0 -2
- package/esm2020/projects/eo-sdk/core/lib/service/prepare/prepare.service.mjs +0 -305
- package/esm2020/projects/eo-sdk/core/lib/service/search/search-filter-type.interface.mjs +0 -2
- package/esm2020/projects/eo-sdk/core/lib/service/search/search-query.model.mjs +0 -510
- package/esm2020/projects/eo-sdk/core/lib/service/search/search.service.mjs +0 -478
- package/esm2020/projects/eo-sdk/core/lib/service/signing/signing.service.mjs +0 -60
- package/esm2020/projects/eo-sdk/core/lib/service/storage/local-storage.service.mjs +0 -111
- package/esm2020/projects/eo-sdk/core/lib/service/stored-queries/stored-queries-subscription.interface.mjs +0 -2
- package/esm2020/projects/eo-sdk/core/lib/service/stored-queries/stored-queries.service.mjs +0 -216
- package/esm2020/projects/eo-sdk/core/lib/service/stored-queries/stored-query.model.mjs +0 -98
- package/esm2020/projects/eo-sdk/core/lib/service/system/system.service.mjs +0 -345
- package/esm2020/projects/eo-sdk/core/lib/service/system/systemdefinition.interface.mjs +0 -2
- package/esm2020/projects/eo-sdk/core/lib/service/system-status/system-status.service.mjs +0 -104
- package/esm2020/projects/eo-sdk/core/lib/service/system-status/system.status.enum.mjs +0 -9
- package/esm2020/projects/eo-sdk/core/lib/service/system-status/system.status.interface.mjs +0 -2
- package/esm2020/projects/eo-sdk/core/lib/service/upload/upload.service.mjs +0 -46
- package/esm2020/projects/eo-sdk/core/lib/service/upload-registry/upload-registry.service.mjs +0 -83
- package/esm2020/projects/eo-sdk/core/lib/service/user/user.service.mjs +0 -399
- package/esm2020/projects/eo-sdk/core/lib/util/utils.mjs +0 -304
- package/esm2020/projects/eo-sdk/core/public_api.mjs +0 -85
- package/fesm2015/eo-sdk-client-projects-eo-sdk-core.mjs +0 -6118
- package/fesm2015/eo-sdk-client-projects-eo-sdk-core.mjs.map +0 -1
- package/fesm2015/eo-sdk-client.mjs +0 -27040
- package/fesm2015/eo-sdk-client.mjs.map +0 -1
- package/fesm2020/eo-sdk-client-projects-eo-sdk-core.mjs +0 -6133
- package/fesm2020/eo-sdk-client-projects-eo-sdk-core.mjs.map +0 -1
- package/fesm2020/eo-sdk-client.mjs.map +0 -1
- package/projects/eo-sdk/core/README.md +0 -113
- package/projects/eo-sdk/core/eo-sdk-client-projects-eo-sdk-core.d.ts.map +0 -1
- package/projects/eo-sdk/core/index.d.ts +0 -6
- package/projects/eo-sdk/core/lib/config/core-config.d.ts +0 -14
- package/projects/eo-sdk/core/lib/config/core-config.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/config/core-init.service.d.ts +0 -33
- package/projects/eo-sdk/core/lib/config/core-init.service.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/config/core-init.tokens.d.ts +0 -8
- package/projects/eo-sdk/core/lib/config/core-init.tokens.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/config/initialize-module.d.ts +0 -7
- package/projects/eo-sdk/core/lib/config/initialize-module.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/config/missing-translation-handler.d.ts +0 -14
- package/projects/eo-sdk/core/lib/config/missing-translation-handler.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/config/translate-json-loader.d.ts +0 -21
- package/projects/eo-sdk/core/lib/config/translate-json-loader.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/environment.enaio.d.ts +0 -6
- package/projects/eo-sdk/core/lib/environment.enaio.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/eo-core-shared.module.d.ts +0 -12
- package/projects/eo-sdk/core/lib/eo-core-shared.module.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/eo-core.module.d.ts +0 -46
- package/projects/eo-sdk/core/lib/eo-core.module.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/interface/change-password.interface.d.ts +0 -8
- package/projects/eo-sdk/core/lib/interface/change-password.interface.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/interface/event.interface.d.ts +0 -14
- package/projects/eo-sdk/core/lib/interface/event.interface.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/interface/http-options.interface.d.ts +0 -17
- package/projects/eo-sdk/core/lib/interface/http-options.interface.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/interface/logger.interface.d.ts +0 -20
- package/projects/eo-sdk/core/lib/interface/logger.interface.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/interface/organization-objects.interface.d.ts +0 -20
- package/projects/eo-sdk/core/lib/interface/organization-objects.interface.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/interface/tree-node.interface.d.ts +0 -24
- package/projects/eo-sdk/core/lib/interface/tree-node.interface.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/model/baseparams.model.d.ts +0 -58
- package/projects/eo-sdk/core/lib/model/baseparams.model.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/model/bpm.model.d.ts +0 -253
- package/projects/eo-sdk/core/lib/model/bpm.model.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/model/custom-action.model.d.ts +0 -34
- package/projects/eo-sdk/core/lib/model/custom-action.model.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/model/dms-object-history.model.d.ts +0 -59
- package/projects/eo-sdk/core/lib/model/dms-object-history.model.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/model/dms-object.model.d.ts +0 -137
- package/projects/eo-sdk/core/lib/model/dms-object.model.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/model/eo-error.model.d.ts +0 -19
- package/projects/eo-sdk/core/lib/model/eo-error.model.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/model/eo-user.model.d.ts +0 -107
- package/projects/eo-sdk/core/lib/model/eo-user.model.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/model/inbox-item.model.d.ts +0 -71
- package/projects/eo-sdk/core/lib/model/inbox-item.model.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/model/object-type.model.d.ts +0 -125
- package/projects/eo-sdk/core/lib/model/object-type.model.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/model/org.model.d.ts +0 -94
- package/projects/eo-sdk/core/lib/model/org.model.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/model/prepared-item.model.d.ts +0 -190
- package/projects/eo-sdk/core/lib/model/prepared-item.model.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/model/range-value.model.d.ts +0 -22
- package/projects/eo-sdk/core/lib/model/range-value.model.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/model/upload-file-item.model.d.ts +0 -30
- package/projects/eo-sdk/core/lib/model/upload-file-item.model.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/model/upload-target.model.d.ts +0 -60
- package/projects/eo-sdk/core/lib/model/upload-target.model.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/model/work-item-history.model.d.ts +0 -52
- package/projects/eo-sdk/core/lib/model/work-item-history.model.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/auth/auth-interceptor.d.ts +0 -12
- package/projects/eo-sdk/core/lib/service/auth/auth-interceptor.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/auth/auth-profile.interface.d.ts +0 -23
- package/projects/eo-sdk/core/lib/service/auth/auth-profile.interface.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/auth/auth.service.d.ts +0 -104
- package/projects/eo-sdk/core/lib/service/auth/auth.service.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/auth/gateway-info.interface.d.ts +0 -18
- package/projects/eo-sdk/core/lib/service/auth/gateway-info.interface.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/backend/backend.service.d.ts +0 -209
- package/projects/eo-sdk/core/lib/service/backend/backend.service.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/bpm/bpm.service.d.ts +0 -150
- package/projects/eo-sdk/core/lib/service/bpm/bpm.service.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/cache/app-cache.service.d.ts +0 -59
- package/projects/eo-sdk/core/lib/service/cache/app-cache.service.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/capabilities/capabilities.model.d.ts +0 -54
- package/projects/eo-sdk/core/lib/service/capabilities/capabilities.model.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/capabilities/capabilities.service.d.ts +0 -35
- package/projects/eo-sdk/core/lib/service/capabilities/capabilities.service.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/clipboard/clipboard-action.enum.d.ts +0 -5
- package/projects/eo-sdk/core/lib/service/clipboard/clipboard-action.enum.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/clipboard/clipboard.interface.d.ts +0 -16
- package/projects/eo-sdk/core/lib/service/clipboard/clipboard.interface.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/clipboard/clipboard.service.d.ts +0 -49
- package/projects/eo-sdk/core/lib/service/clipboard/clipboard.service.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/config/config.enum.d.ts +0 -5
- package/projects/eo-sdk/core/lib/service/config/config.enum.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/config/config.interface.d.ts +0 -55
- package/projects/eo-sdk/core/lib/service/config/config.interface.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/config/config.service.d.ts +0 -80
- package/projects/eo-sdk/core/lib/service/config/config.service.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/dms/dms.service.d.ts +0 -286
- package/projects/eo-sdk/core/lib/service/dms/dms.service.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/dms/dmsParams.interface.d.ts +0 -13
- package/projects/eo-sdk/core/lib/service/dms/dmsParams.interface.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/events/event.service.d.ts +0 -31
- package/projects/eo-sdk/core/lib/service/events/event.service.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/events/events.d.ts +0 -27
- package/projects/eo-sdk/core/lib/service/events/events.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/inbox/inbox.service.d.ts +0 -66
- package/projects/eo-sdk/core/lib/service/inbox/inbox.service.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/logger/console-log.service.d.ts +0 -20
- package/projects/eo-sdk/core/lib/service/logger/console-log.service.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/logger/logger.d.ts +0 -25
- package/projects/eo-sdk/core/lib/service/logger/logger.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/notifications/notifications.service.d.ts +0 -78
- package/projects/eo-sdk/core/lib/service/notifications/notifications.service.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/prepare/objectTypes.interface.d.ts +0 -9
- package/projects/eo-sdk/core/lib/service/prepare/objectTypes.interface.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/prepare/prepare.service.d.ts +0 -189
- package/projects/eo-sdk/core/lib/service/prepare/prepare.service.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/search/search-filter-type.interface.d.ts +0 -10
- package/projects/eo-sdk/core/lib/service/search/search-filter-type.interface.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/search/search-query.model.d.ts +0 -327
- package/projects/eo-sdk/core/lib/service/search/search-query.model.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/search/search.service.d.ts +0 -173
- package/projects/eo-sdk/core/lib/service/search/search.service.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/signing/signing.service.d.ts +0 -52
- package/projects/eo-sdk/core/lib/service/signing/signing.service.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/storage/local-storage.service.d.ts +0 -53
- package/projects/eo-sdk/core/lib/service/storage/local-storage.service.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/stored-queries/stored-queries-subscription.interface.d.ts +0 -15
- package/projects/eo-sdk/core/lib/service/stored-queries/stored-queries-subscription.interface.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/stored-queries/stored-queries.service.d.ts +0 -108
- package/projects/eo-sdk/core/lib/service/stored-queries/stored-queries.service.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/stored-queries/stored-query.model.d.ts +0 -74
- package/projects/eo-sdk/core/lib/service/stored-queries/stored-query.model.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/system/system.service.d.ts +0 -125
- package/projects/eo-sdk/core/lib/service/system/system.service.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/system/systemdefinition.interface.d.ts +0 -53
- package/projects/eo-sdk/core/lib/service/system/systemdefinition.interface.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/system-status/system-status.service.d.ts +0 -26
- package/projects/eo-sdk/core/lib/service/system-status/system-status.service.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/system-status/system.status.enum.d.ts +0 -8
- package/projects/eo-sdk/core/lib/service/system-status/system.status.enum.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/system-status/system.status.interface.d.ts +0 -8
- package/projects/eo-sdk/core/lib/service/system-status/system.status.interface.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/upload/upload.service.d.ts +0 -28
- package/projects/eo-sdk/core/lib/service/upload/upload.service.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/upload-registry/upload-registry.service.d.ts +0 -50
- package/projects/eo-sdk/core/lib/service/upload-registry/upload-registry.service.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/service/user/user.service.d.ts +0 -216
- package/projects/eo-sdk/core/lib/service/user/user.service.d.ts.map +0 -1
- package/projects/eo-sdk/core/lib/util/utils.d.ts +0 -148
- package/projects/eo-sdk/core/lib/util/utils.d.ts.map +0 -1
- package/projects/eo-sdk/core/public_api.d.ts +0 -82
- package/projects/eo-sdk/core/public_api.d.ts.map +0 -1
- /package/{esm2020 → esm2022}/app/eo-client/dashboard/widgets/charts-widget/icharts.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-client/dashboard/widgets/count-objects-widget/count-objects.model.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-client/dashboard/widgets/hitlist-widget/IHitlist.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-client/dashboard/widgets/info-inbox-widget/info-inbox.model.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-client/dashboard/widgets/info-intray-widget/info-intray.model.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-client/inbox-state/inbox-state/inbox.types.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-client/index.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-client/notifications-state/notifications-state.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-client/object-state/object-state-service/object-state.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-client/settings/agent-lock-settings.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/accordion/index.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/actions/actions/signature-action/signature.model.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/actions/index.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/actions/interfaces/action-component.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/actions/interfaces/action-list-entry.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/actions/interfaces/action.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/actions/selection-range.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/animations/animations.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/app-shell/app-bar/app-search/app-search.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/app-shell/index.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/cta/index.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/error/index.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/form-elements/id-reference/animation/reference-finder.animation.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/form-elements/id-reference/interface/reference-finder.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/form-elements/index.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/grid/extensions/filter/setFilters/set-filters.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/grid/filters/filesize-filter.component.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/grid/grid-filter.model.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/grid/index.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/grid/loader.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/index.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/list-container/index.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/media/index.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/object-details/index.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/object-details/object-history/history-filter/history-filter.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/object-form/form-status-changed-event.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/object-form/index.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/object-form/object-form/form-element-table/form-element.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/object-form/object-form/object-form-control-wrapper.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/object-form/object-form/object-form-control.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/object-form/object-form/object-form-group.model.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/object-form/object-form/object-form-script/object-form-script.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/object-form/object-form/object-form.model.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/object-form/object-form-options.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/plugins/index.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/process/process-file/file-entry-permissions.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/quick-search/index.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/quick-search/quick-search/quick-search-result.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/result-list/index.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/settings/change-password/change-password.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/settings/index.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/shortcuts/global-shortcut-action.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/shortcuts/global-shortcut-component.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/shortcuts/index.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/stored-query/index.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/stored-query/stored-query-type-filter.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/stored-query/stored-query.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/tree/index.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/tree/tree.component.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/ui/index.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/ui/indexdata-summary/indexdata-summary-entry.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework/util/index.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework-core/agent/agent.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework-core/api/model/dms-object.api.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework-core/empty-state/empty-state.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework-core/error-handler/error-keys.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework-core/index.mjs +0 -0
- /package/{esm2020 → esm2022}/app/eo-framework-core/pending-changes/pending-changes-component.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/eo-sdk-client.mjs +0 -0
- /package/{esm2020 → esm2022}/public_api.mjs +0 -0
|
@@ -1,528 +0,0 @@
|
|
|
1
|
-
import { __decorate } from "tslib";
|
|
2
|
-
import { Autowired, Bean, NumberSequence, PostConstruct, RowNode, _ } from "@ag-grid-community/core";
|
|
3
|
-
let GroupStage = class GroupStage {
|
|
4
|
-
constructor() {
|
|
5
|
-
// we use a sequence variable so that each time we do a grouping, we don't
|
|
6
|
-
// reuse the ids - otherwise the rowRenderer will confuse rowNodes between redraws
|
|
7
|
-
// when it tries to animate between rows. we set to -1 as others row id 0 will be shared
|
|
8
|
-
// with the other rows.
|
|
9
|
-
this.groupIdSequence = new NumberSequence(1);
|
|
10
|
-
}
|
|
11
|
-
postConstruct() {
|
|
12
|
-
this.usingTreeData = this.gridOptionsWrapper.isTreeData();
|
|
13
|
-
if (this.usingTreeData) {
|
|
14
|
-
this.getDataPath = this.gridOptionsWrapper.getDataPathFunc();
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
execute(params) {
|
|
18
|
-
const details = this.createGroupingDetails(params);
|
|
19
|
-
if (details.transaction) {
|
|
20
|
-
this.handleTransaction(details);
|
|
21
|
-
}
|
|
22
|
-
else {
|
|
23
|
-
const afterColsChanged = params.afterColumnsChanged === true;
|
|
24
|
-
this.shotgunResetEverything(details, afterColsChanged);
|
|
25
|
-
}
|
|
26
|
-
this.sortGroupsWithComparator(details.rootNode);
|
|
27
|
-
this.selectableService.updateSelectableAfterGrouping(details.rootNode);
|
|
28
|
-
}
|
|
29
|
-
createGroupingDetails(params) {
|
|
30
|
-
const { rowNode, changedPath, rowNodeTransaction, rowNodeOrder } = params;
|
|
31
|
-
const groupedCols = this.usingTreeData ? null : this.columnController.getRowGroupColumns();
|
|
32
|
-
const isGrouping = this.usingTreeData || (groupedCols && groupedCols.length > 0);
|
|
33
|
-
const usingTransaction = isGrouping && _.exists(rowNodeTransaction);
|
|
34
|
-
const details = {
|
|
35
|
-
// someone complained that the parent attribute was causing some change detection
|
|
36
|
-
// to break is some angular add-on - which i never used. taking the parent out breaks
|
|
37
|
-
// a cyclic dependency, hence this flag got introduced.
|
|
38
|
-
includeParents: !this.gridOptionsWrapper.isSuppressParentsInRowNodes(),
|
|
39
|
-
expandByDefault: this.gridOptionsWrapper.isGroupSuppressRow() ?
|
|
40
|
-
-1 : this.gridOptionsWrapper.getGroupDefaultExpanded(),
|
|
41
|
-
groupedCols: groupedCols,
|
|
42
|
-
rootNode: rowNode,
|
|
43
|
-
pivotMode: this.columnController.isPivotMode(),
|
|
44
|
-
groupedColCount: this.usingTreeData || !groupedCols ? 0 : groupedCols.length,
|
|
45
|
-
rowNodeOrder: rowNodeOrder,
|
|
46
|
-
// important not to do transaction if we are not grouping, as otherwise the 'insert index' is ignored.
|
|
47
|
-
// ie, if not grouping, then we just want to shotgun so the rootNode.allLeafChildren gets copied
|
|
48
|
-
// to rootNode.childrenAfterGroup and maintaining order (as delta transaction misses the order).
|
|
49
|
-
transaction: usingTransaction ? rowNodeTransaction : null,
|
|
50
|
-
// if no transaction, then it's shotgun, changed path would be 'not active' at this point anyway
|
|
51
|
-
changedPath: changedPath
|
|
52
|
-
};
|
|
53
|
-
return details;
|
|
54
|
-
}
|
|
55
|
-
handleTransaction(details) {
|
|
56
|
-
const tran = details.transaction;
|
|
57
|
-
if (tran.add) {
|
|
58
|
-
this.insertNodes(tran.add, details, false);
|
|
59
|
-
}
|
|
60
|
-
if (tran.update) {
|
|
61
|
-
this.moveNodesInWrongPath(tran.update, details);
|
|
62
|
-
}
|
|
63
|
-
if (tran.remove) {
|
|
64
|
-
this.removeNodes(tran.remove, details);
|
|
65
|
-
}
|
|
66
|
-
if (details.rowNodeOrder) {
|
|
67
|
-
this.sortChildren(details);
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
// this is used when doing delta updates, eg Redux, keeps nodes in right order
|
|
71
|
-
sortChildren(details) {
|
|
72
|
-
details.changedPath.forEachChangedNodeDepthFirst(rowNode => {
|
|
73
|
-
_.sortRowNodesByOrder(rowNode.childrenAfterGroup, details.rowNodeOrder);
|
|
74
|
-
});
|
|
75
|
-
}
|
|
76
|
-
sortGroupsWithComparator(rootNode) {
|
|
77
|
-
// we don't do group sorting for tree data
|
|
78
|
-
if (this.usingTreeData) {
|
|
79
|
-
return;
|
|
80
|
-
}
|
|
81
|
-
const comparator = this.gridOptionsWrapper.getDefaultGroupSortComparator();
|
|
82
|
-
if (_.exists(comparator)) {
|
|
83
|
-
recursiveSort(rootNode);
|
|
84
|
-
}
|
|
85
|
-
function recursiveSort(rowNode) {
|
|
86
|
-
const doSort = _.exists(rowNode.childrenAfterGroup) &&
|
|
87
|
-
// we only want to sort groups, so we do not sort leafs (a leaf group has leafs as children)
|
|
88
|
-
!rowNode.leafGroup;
|
|
89
|
-
if (doSort) {
|
|
90
|
-
rowNode.childrenAfterGroup.sort(comparator);
|
|
91
|
-
rowNode.childrenAfterGroup.forEach((childNode) => recursiveSort(childNode));
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
getExistingPathForNode(node, details) {
|
|
96
|
-
const res = [];
|
|
97
|
-
// when doing tree data, the node is part of the path,
|
|
98
|
-
// but when doing grid grouping, the node is not part of the path so we start with the parent.
|
|
99
|
-
let pointer = this.usingTreeData ? node : node.parent;
|
|
100
|
-
while (pointer && pointer !== details.rootNode) {
|
|
101
|
-
res.push({
|
|
102
|
-
key: pointer.key,
|
|
103
|
-
rowGroupColumn: pointer.rowGroupColumn,
|
|
104
|
-
field: pointer.field
|
|
105
|
-
});
|
|
106
|
-
pointer = pointer.parent;
|
|
107
|
-
}
|
|
108
|
-
res.reverse();
|
|
109
|
-
return res;
|
|
110
|
-
}
|
|
111
|
-
moveNodesInWrongPath(childNodes, details) {
|
|
112
|
-
childNodes.forEach(childNode => {
|
|
113
|
-
// we add node, even if parent has not changed, as the data could have
|
|
114
|
-
// changed, hence aggregations will be wrong
|
|
115
|
-
if (details.changedPath.isActive()) {
|
|
116
|
-
details.changedPath.addParentNode(childNode.parent);
|
|
117
|
-
}
|
|
118
|
-
const infoToKeyMapper = (item) => item.key;
|
|
119
|
-
const oldPath = this.getExistingPathForNode(childNode, details).map(infoToKeyMapper);
|
|
120
|
-
const newPath = this.getGroupInfo(childNode, details).map(infoToKeyMapper);
|
|
121
|
-
const nodeInCorrectPath = _.compareArrays(oldPath, newPath);
|
|
122
|
-
if (!nodeInCorrectPath) {
|
|
123
|
-
this.moveNode(childNode, details);
|
|
124
|
-
}
|
|
125
|
-
});
|
|
126
|
-
}
|
|
127
|
-
moveNode(childNode, details) {
|
|
128
|
-
this.removeNodesInStages([childNode], details);
|
|
129
|
-
this.insertOneNode(childNode, details, true);
|
|
130
|
-
// hack - if we didn't do this, then renaming a tree item (ie changing rowNode.key) wouldn't get
|
|
131
|
-
// refreshed into the gui.
|
|
132
|
-
// this is needed to kick off the event that rowComp listens to for refresh. this in turn
|
|
133
|
-
// then will get each cell in the row to refresh - which is what we need as we don't know which
|
|
134
|
-
// columns will be displaying the rowNode.key info.
|
|
135
|
-
childNode.setData(childNode.data);
|
|
136
|
-
// we add both old and new parents to changed path, as both will need to be refreshed.
|
|
137
|
-
// we already added the old parent (in calling method), so just add the new parent here
|
|
138
|
-
if (details.changedPath.isActive()) {
|
|
139
|
-
const newParent = childNode.parent;
|
|
140
|
-
details.changedPath.addParentNode(newParent);
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
removeNodes(leafRowNodes, details) {
|
|
144
|
-
this.removeNodesInStages(leafRowNodes, details);
|
|
145
|
-
if (details.changedPath.isActive()) {
|
|
146
|
-
leafRowNodes.forEach(rowNode => details.changedPath.addParentNode(rowNode.parent));
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
removeNodesInStages(leafRowNodes, details) {
|
|
150
|
-
this.removeNodesFromParents(leafRowNodes, details);
|
|
151
|
-
this.postRemoveCreateFillerNodes(leafRowNodes, details);
|
|
152
|
-
this.postRemoveRemoveEmptyGroups(leafRowNodes, details);
|
|
153
|
-
}
|
|
154
|
-
forEachParentGroup(details, child, callback) {
|
|
155
|
-
let pointer = child.parent;
|
|
156
|
-
while (pointer && pointer !== details.rootNode) {
|
|
157
|
-
callback(pointer);
|
|
158
|
-
pointer = pointer.parent;
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
removeNodesFromParents(nodesToRemove, details) {
|
|
162
|
-
const batchRemover = new BatchRemover();
|
|
163
|
-
nodesToRemove.forEach(nodeToRemove => {
|
|
164
|
-
this.removeFromParent(nodeToRemove, batchRemover);
|
|
165
|
-
// remove from allLeafChildren. we clear down all parents EXCEPT the Root Node, as
|
|
166
|
-
// the ClientSideNodeManager is responsible for the Root Node.
|
|
167
|
-
this.forEachParentGroup(details, nodeToRemove, parentNode => {
|
|
168
|
-
batchRemover.removeFromAllLeafChildren(parentNode, nodeToRemove);
|
|
169
|
-
});
|
|
170
|
-
});
|
|
171
|
-
batchRemover.flush();
|
|
172
|
-
}
|
|
173
|
-
postRemoveCreateFillerNodes(nodesToRemove, details) {
|
|
174
|
-
nodesToRemove.forEach(nodeToRemove => {
|
|
175
|
-
// if not group, and children are present, need to move children to a group.
|
|
176
|
-
// otherwise if no children, we can just remove without replacing.
|
|
177
|
-
const replaceWithGroup = nodeToRemove.hasChildren();
|
|
178
|
-
if (replaceWithGroup) {
|
|
179
|
-
const oldPath = this.getExistingPathForNode(nodeToRemove, details);
|
|
180
|
-
// because we just removed the userGroup, this will always return new support group
|
|
181
|
-
const newGroupNode = this.findParentForNode(nodeToRemove, oldPath, details);
|
|
182
|
-
// these properties are the ones that will be incorrect in the newly created group,
|
|
183
|
-
// so copy them from the old childNode
|
|
184
|
-
newGroupNode.expanded = nodeToRemove.expanded;
|
|
185
|
-
newGroupNode.allLeafChildren = nodeToRemove.allLeafChildren;
|
|
186
|
-
newGroupNode.childrenAfterGroup = nodeToRemove.childrenAfterGroup;
|
|
187
|
-
newGroupNode.childrenMapped = nodeToRemove.childrenMapped;
|
|
188
|
-
newGroupNode.childrenAfterGroup.forEach(rowNode => rowNode.parent = newGroupNode);
|
|
189
|
-
}
|
|
190
|
-
});
|
|
191
|
-
}
|
|
192
|
-
postRemoveRemoveEmptyGroups(nodesToRemove, details) {
|
|
193
|
-
// we do this multiple times, as when we remove groups, that means the parent of just removed
|
|
194
|
-
// group can then be empty. to get around this, if we remove, then we check everything again for
|
|
195
|
-
// newly emptied groups. the max number of times this will execute is the depth of the group tree.
|
|
196
|
-
let checkAgain = true;
|
|
197
|
-
const groupShouldBeRemoved = (rowNode) => {
|
|
198
|
-
// because of the while loop below, it's possible we already moved the node,
|
|
199
|
-
// so double check before trying to remove again.
|
|
200
|
-
const mapKey = this.getChildrenMappedKey(rowNode.key, rowNode.rowGroupColumn);
|
|
201
|
-
const parentRowNode = rowNode.parent;
|
|
202
|
-
const groupAlreadyRemoved = (parentRowNode && parentRowNode.childrenMapped) ?
|
|
203
|
-
!parentRowNode.childrenMapped[mapKey] : true;
|
|
204
|
-
if (groupAlreadyRemoved) {
|
|
205
|
-
// if not linked, then group was already removed
|
|
206
|
-
return false;
|
|
207
|
-
}
|
|
208
|
-
else {
|
|
209
|
-
// if still not removed, then we remove if this group is empty
|
|
210
|
-
return rowNode.isEmptyRowGroupNode();
|
|
211
|
-
}
|
|
212
|
-
};
|
|
213
|
-
while (checkAgain) {
|
|
214
|
-
checkAgain = false;
|
|
215
|
-
const batchRemover = new BatchRemover();
|
|
216
|
-
nodesToRemove.forEach(nodeToRemove => {
|
|
217
|
-
// remove empty groups
|
|
218
|
-
this.forEachParentGroup(details, nodeToRemove, rowNode => {
|
|
219
|
-
if (groupShouldBeRemoved(rowNode)) {
|
|
220
|
-
checkAgain = true;
|
|
221
|
-
this.removeFromParent(rowNode, batchRemover);
|
|
222
|
-
// we remove selection on filler nodes here, as the selection would not be removed
|
|
223
|
-
// from the RowNodeManager, as filler nodes don't exist on the RowNodeManager
|
|
224
|
-
rowNode.setSelected(false);
|
|
225
|
-
}
|
|
226
|
-
});
|
|
227
|
-
});
|
|
228
|
-
batchRemover.flush();
|
|
229
|
-
}
|
|
230
|
-
}
|
|
231
|
-
// removes the node from the parent by:
|
|
232
|
-
// a) removing from childrenAfterGroup (using batchRemover if present, otherwise immediately)
|
|
233
|
-
// b) removing from childrenMapped (immediately)
|
|
234
|
-
// c) setRowTop(null) - as the rowRenderer uses this to know the RowNode is no longer needed
|
|
235
|
-
removeFromParent(child, batchRemover) {
|
|
236
|
-
if (child.parent) {
|
|
237
|
-
if (batchRemover) {
|
|
238
|
-
batchRemover.removeFromChildrenAfterGroup(child.parent, child);
|
|
239
|
-
}
|
|
240
|
-
else {
|
|
241
|
-
_.removeFromArray(child.parent.childrenAfterGroup, child);
|
|
242
|
-
}
|
|
243
|
-
}
|
|
244
|
-
const mapKey = this.getChildrenMappedKey(child.key, child.rowGroupColumn);
|
|
245
|
-
if (child.parent && child.parent.childrenMapped) {
|
|
246
|
-
child.parent.childrenMapped[mapKey] = undefined;
|
|
247
|
-
}
|
|
248
|
-
// this is important for transition, see rowComp removeFirstPassFuncs. when doing animation and
|
|
249
|
-
// remove, if rowTop is still present, the rowComp thinks it's just moved position.
|
|
250
|
-
child.setRowTop(null);
|
|
251
|
-
}
|
|
252
|
-
addToParent(child, parent) {
|
|
253
|
-
const mapKey = this.getChildrenMappedKey(child.key, child.rowGroupColumn);
|
|
254
|
-
if (parent) {
|
|
255
|
-
if (parent.childrenMapped) {
|
|
256
|
-
parent.childrenMapped[mapKey] = child;
|
|
257
|
-
}
|
|
258
|
-
parent.childrenAfterGroup.push(child);
|
|
259
|
-
}
|
|
260
|
-
}
|
|
261
|
-
areGroupColsEqual(d1, d2) {
|
|
262
|
-
if (d1 == null || d2 == null) {
|
|
263
|
-
return false;
|
|
264
|
-
}
|
|
265
|
-
if (d1.pivotMode !== d2.pivotMode) {
|
|
266
|
-
return false;
|
|
267
|
-
}
|
|
268
|
-
if (!_.compareArrays(d1.groupedCols, d2.groupedCols)) {
|
|
269
|
-
return false;
|
|
270
|
-
}
|
|
271
|
-
return true;
|
|
272
|
-
}
|
|
273
|
-
shotgunResetEverything(details, afterColumnsChanged) {
|
|
274
|
-
const skipStage = afterColumnsChanged ?
|
|
275
|
-
this.usingTreeData || this.areGroupColsEqual(details, this.oldGroupingDetails)
|
|
276
|
-
: false;
|
|
277
|
-
this.oldGroupingDetails = details;
|
|
278
|
-
if (skipStage) {
|
|
279
|
-
return;
|
|
280
|
-
}
|
|
281
|
-
// because we are not creating the root node each time, we have the logic
|
|
282
|
-
// here to change leafGroup once.
|
|
283
|
-
// we set .leafGroup to false for tree data, as .leafGroup is only used when pivoting, and pivoting
|
|
284
|
-
// isn't allowed with treeData, so the grid never actually use .leafGroup when doing treeData.
|
|
285
|
-
details.rootNode.leafGroup = this.usingTreeData ? false : details.groupedCols.length === 0;
|
|
286
|
-
// we are doing everything from scratch, so reset childrenAfterGroup and childrenMapped from the rootNode
|
|
287
|
-
details.rootNode.childrenAfterGroup = [];
|
|
288
|
-
details.rootNode.childrenMapped = {};
|
|
289
|
-
this.insertNodes(details.rootNode.allLeafChildren, details, false);
|
|
290
|
-
}
|
|
291
|
-
insertNodes(newRowNodes, details, isMove) {
|
|
292
|
-
newRowNodes.forEach(rowNode => {
|
|
293
|
-
this.insertOneNode(rowNode, details, isMove);
|
|
294
|
-
if (details.changedPath.isActive()) {
|
|
295
|
-
details.changedPath.addParentNode(rowNode.parent);
|
|
296
|
-
}
|
|
297
|
-
});
|
|
298
|
-
}
|
|
299
|
-
insertOneNode(childNode, details, isMove) {
|
|
300
|
-
const path = this.getGroupInfo(childNode, details);
|
|
301
|
-
const parentGroup = this.findParentForNode(childNode, path, details);
|
|
302
|
-
if (!parentGroup.group) {
|
|
303
|
-
console.warn(`ag-Grid: duplicate group keys for row data, keys should be unique`, [parentGroup.data, childNode.data]);
|
|
304
|
-
}
|
|
305
|
-
if (this.usingTreeData) {
|
|
306
|
-
this.swapGroupWithUserNode(parentGroup, childNode, isMove);
|
|
307
|
-
}
|
|
308
|
-
else {
|
|
309
|
-
childNode.parent = parentGroup;
|
|
310
|
-
childNode.level = path.length;
|
|
311
|
-
parentGroup.childrenAfterGroup.push(childNode);
|
|
312
|
-
}
|
|
313
|
-
}
|
|
314
|
-
findParentForNode(childNode, path, details) {
|
|
315
|
-
let nextNode = details.rootNode;
|
|
316
|
-
path.forEach((groupInfo, level) => {
|
|
317
|
-
nextNode = this.getOrCreateNextNode(nextNode, groupInfo, level, details);
|
|
318
|
-
// node gets added to all group nodes.
|
|
319
|
-
// note: we do not add to rootNode here, as the rootNode is the master list of rowNodes
|
|
320
|
-
nextNode.allLeafChildren.push(childNode);
|
|
321
|
-
});
|
|
322
|
-
return nextNode;
|
|
323
|
-
}
|
|
324
|
-
swapGroupWithUserNode(fillerGroup, userGroup, isMove) {
|
|
325
|
-
userGroup.parent = fillerGroup.parent;
|
|
326
|
-
userGroup.key = fillerGroup.key;
|
|
327
|
-
userGroup.field = fillerGroup.field;
|
|
328
|
-
userGroup.groupData = fillerGroup.groupData;
|
|
329
|
-
userGroup.level = fillerGroup.level;
|
|
330
|
-
// AG-3441 - preserve the existing expanded status of the node if we're moving it, so that
|
|
331
|
-
// you can drag a sub tree from one parent to another without changing its expansion
|
|
332
|
-
if (!isMove) {
|
|
333
|
-
userGroup.expanded = fillerGroup.expanded;
|
|
334
|
-
}
|
|
335
|
-
// we set .leafGroup to false for tree data, as .leafGroup is only used when pivoting, and pivoting
|
|
336
|
-
// isn't allowed with treeData, so the grid never actually use .leafGroup when doing treeData.
|
|
337
|
-
userGroup.leafGroup = fillerGroup.leafGroup;
|
|
338
|
-
// always null for userGroups, as row grouping is not allowed when doing tree data
|
|
339
|
-
userGroup.rowGroupIndex = fillerGroup.rowGroupIndex;
|
|
340
|
-
userGroup.allLeafChildren = fillerGroup.allLeafChildren;
|
|
341
|
-
userGroup.childrenAfterGroup = fillerGroup.childrenAfterGroup;
|
|
342
|
-
userGroup.childrenMapped = fillerGroup.childrenMapped;
|
|
343
|
-
this.removeFromParent(fillerGroup);
|
|
344
|
-
userGroup.childrenAfterGroup.forEach((rowNode) => rowNode.parent = userGroup);
|
|
345
|
-
this.addToParent(userGroup, fillerGroup.parent);
|
|
346
|
-
}
|
|
347
|
-
getOrCreateNextNode(parentGroup, groupInfo, level, details) {
|
|
348
|
-
const mapKey = this.getChildrenMappedKey(groupInfo.key, groupInfo.rowGroupColumn);
|
|
349
|
-
let nextNode = parentGroup.childrenMapped ? parentGroup.childrenMapped[mapKey] : undefined;
|
|
350
|
-
if (!nextNode) {
|
|
351
|
-
nextNode = this.createGroup(groupInfo, parentGroup, level, details);
|
|
352
|
-
// attach the new group to the parent
|
|
353
|
-
this.addToParent(nextNode, parentGroup);
|
|
354
|
-
}
|
|
355
|
-
return nextNode;
|
|
356
|
-
}
|
|
357
|
-
createGroup(groupInfo, parent, level, details) {
|
|
358
|
-
const groupNode = new RowNode();
|
|
359
|
-
this.context.wireBean(groupNode);
|
|
360
|
-
groupNode.group = true;
|
|
361
|
-
groupNode.field = groupInfo.field;
|
|
362
|
-
groupNode.rowGroupColumn = groupInfo.rowGroupColumn;
|
|
363
|
-
groupNode.groupData = {};
|
|
364
|
-
const groupDisplayCols = this.columnController.getGroupDisplayColumns();
|
|
365
|
-
groupDisplayCols.forEach(col => {
|
|
366
|
-
// newGroup.rowGroupColumn=null when working off GroupInfo, and we always display the group in the group column
|
|
367
|
-
// if rowGroupColumn is present, then it's grid row grouping and we only include if configuration says so
|
|
368
|
-
const displayGroupForCol = this.usingTreeData || (groupNode.rowGroupColumn ? col.isRowGroupDisplayed(groupNode.rowGroupColumn.getId()) : false);
|
|
369
|
-
if (displayGroupForCol) {
|
|
370
|
-
groupNode.groupData[col.getColId()] = groupInfo.key;
|
|
371
|
-
}
|
|
372
|
-
});
|
|
373
|
-
// we use negative number for the ids of the groups, this makes sure we don't clash with the
|
|
374
|
-
// id's of the leaf nodes.
|
|
375
|
-
groupNode.id = (this.groupIdSequence.next() * -1).toString();
|
|
376
|
-
groupNode.key = groupInfo.key;
|
|
377
|
-
groupNode.level = level;
|
|
378
|
-
groupNode.leafGroup = this.usingTreeData ? false : level === (details.groupedColCount - 1);
|
|
379
|
-
// if doing pivoting, then the leaf group is never expanded,
|
|
380
|
-
// as we do not show leaf rows
|
|
381
|
-
if (details.pivotMode && groupNode.leafGroup) {
|
|
382
|
-
groupNode.expanded = false;
|
|
383
|
-
}
|
|
384
|
-
else {
|
|
385
|
-
groupNode.expanded = this.isExpanded(details.expandByDefault, level);
|
|
386
|
-
}
|
|
387
|
-
groupNode.allLeafChildren = [];
|
|
388
|
-
// why is this done here? we are not updating the children could as we go,
|
|
389
|
-
// i suspect this is updated in the filter stage
|
|
390
|
-
groupNode.setAllChildrenCount(0);
|
|
391
|
-
groupNode.rowGroupIndex = this.usingTreeData ? null : level;
|
|
392
|
-
groupNode.childrenAfterGroup = [];
|
|
393
|
-
groupNode.childrenMapped = {};
|
|
394
|
-
groupNode.parent = details.includeParents ? parent : null;
|
|
395
|
-
return groupNode;
|
|
396
|
-
}
|
|
397
|
-
getChildrenMappedKey(key, rowGroupColumn) {
|
|
398
|
-
if (rowGroupColumn) {
|
|
399
|
-
// grouping by columns
|
|
400
|
-
return rowGroupColumn.getId() + '-' + key;
|
|
401
|
-
}
|
|
402
|
-
else {
|
|
403
|
-
// tree data - we don't have rowGroupColumns
|
|
404
|
-
return key;
|
|
405
|
-
}
|
|
406
|
-
}
|
|
407
|
-
isExpanded(expandByDefault, level) {
|
|
408
|
-
if (expandByDefault === -1) {
|
|
409
|
-
return true;
|
|
410
|
-
}
|
|
411
|
-
else {
|
|
412
|
-
return level < expandByDefault;
|
|
413
|
-
}
|
|
414
|
-
}
|
|
415
|
-
getGroupInfo(rowNode, details) {
|
|
416
|
-
if (this.usingTreeData) {
|
|
417
|
-
return this.getGroupInfoFromCallback(rowNode);
|
|
418
|
-
}
|
|
419
|
-
else {
|
|
420
|
-
return this.getGroupInfoFromGroupColumns(rowNode, details);
|
|
421
|
-
}
|
|
422
|
-
}
|
|
423
|
-
getGroupInfoFromCallback(rowNode) {
|
|
424
|
-
const keys = this.getDataPath ? this.getDataPath(rowNode.data) : null;
|
|
425
|
-
if (keys === null || keys === undefined || keys.length === 0) {
|
|
426
|
-
_.doOnce(() => console.warn(`getDataPath() should not return an empty path for data`, rowNode.data), 'groupStage.getGroupInfoFromCallback');
|
|
427
|
-
}
|
|
428
|
-
const groupInfoMapper = (key) => ({ key, field: null, rowGroupColumn: null });
|
|
429
|
-
return keys ? keys.map(groupInfoMapper) : [];
|
|
430
|
-
}
|
|
431
|
-
getGroupInfoFromGroupColumns(rowNode, details) {
|
|
432
|
-
const res = [];
|
|
433
|
-
details.groupedCols.forEach(groupCol => {
|
|
434
|
-
let key = this.valueService.getKeyForNode(groupCol, rowNode);
|
|
435
|
-
let keyExists = key !== null && key !== undefined;
|
|
436
|
-
// unbalanced tree and pivot mode don't work together - not because of the grid, it doesn't make
|
|
437
|
-
// mathematical sense as you are building up a cube. so if pivot mode, we put in a blank key where missing.
|
|
438
|
-
// this keeps the tree balanced and hence can be represented as a group.
|
|
439
|
-
if (details.pivotMode && !keyExists) {
|
|
440
|
-
key = ' ';
|
|
441
|
-
keyExists = true;
|
|
442
|
-
}
|
|
443
|
-
if (keyExists) {
|
|
444
|
-
const item = {
|
|
445
|
-
key: key,
|
|
446
|
-
field: groupCol.getColDef().field,
|
|
447
|
-
rowGroupColumn: groupCol
|
|
448
|
-
};
|
|
449
|
-
res.push(item);
|
|
450
|
-
}
|
|
451
|
-
});
|
|
452
|
-
return res;
|
|
453
|
-
}
|
|
454
|
-
};
|
|
455
|
-
__decorate([
|
|
456
|
-
Autowired('selectionController')
|
|
457
|
-
], GroupStage.prototype, "selectionController", void 0);
|
|
458
|
-
__decorate([
|
|
459
|
-
Autowired('gridOptionsWrapper')
|
|
460
|
-
], GroupStage.prototype, "gridOptionsWrapper", void 0);
|
|
461
|
-
__decorate([
|
|
462
|
-
Autowired('columnController')
|
|
463
|
-
], GroupStage.prototype, "columnController", void 0);
|
|
464
|
-
__decorate([
|
|
465
|
-
Autowired('selectableService')
|
|
466
|
-
], GroupStage.prototype, "selectableService", void 0);
|
|
467
|
-
__decorate([
|
|
468
|
-
Autowired('valueService')
|
|
469
|
-
], GroupStage.prototype, "valueService", void 0);
|
|
470
|
-
__decorate([
|
|
471
|
-
Autowired('eventService')
|
|
472
|
-
], GroupStage.prototype, "eventService", void 0);
|
|
473
|
-
__decorate([
|
|
474
|
-
Autowired('context')
|
|
475
|
-
], GroupStage.prototype, "context", void 0);
|
|
476
|
-
__decorate([
|
|
477
|
-
PostConstruct
|
|
478
|
-
], GroupStage.prototype, "postConstruct", null);
|
|
479
|
-
GroupStage = __decorate([
|
|
480
|
-
Bean('groupStage')
|
|
481
|
-
], GroupStage);
|
|
482
|
-
export { GroupStage };
|
|
483
|
-
// doing _.removeFromArray() multiple times on a large list can be a bottleneck.
|
|
484
|
-
// when doing large deletes (eg removing 1,000 rows) then we would be calling _.removeFromArray()
|
|
485
|
-
// a thousands of times, in particular RootNode.allGroupChildren could be a large list, and
|
|
486
|
-
// 1,000 removes is time consuming as each one requires traversing the full list.
|
|
487
|
-
// to get around this, we do all the removes in a batch. this class manages the batch.
|
|
488
|
-
//
|
|
489
|
-
// This problem was brought to light by a client (AG-2879), with dataset of 20,000
|
|
490
|
-
// in 10,000 groups (2 items per group), then deleting all rows with transaction,
|
|
491
|
-
// it took about 20 seconds to delete. with the BathRemoved, the reduced to less than 1 second.
|
|
492
|
-
class BatchRemover {
|
|
493
|
-
constructor() {
|
|
494
|
-
this.allSets = {};
|
|
495
|
-
this.allParents = [];
|
|
496
|
-
}
|
|
497
|
-
removeFromChildrenAfterGroup(parent, child) {
|
|
498
|
-
const set = this.getSet(parent);
|
|
499
|
-
set.removeFromChildrenAfterGroup[child.id] = true;
|
|
500
|
-
}
|
|
501
|
-
removeFromAllLeafChildren(parent, child) {
|
|
502
|
-
const set = this.getSet(parent);
|
|
503
|
-
set.removeFromAllLeafChildren[child.id] = true;
|
|
504
|
-
}
|
|
505
|
-
getSet(parent) {
|
|
506
|
-
if (!this.allSets[parent.id]) {
|
|
507
|
-
this.allSets[parent.id] = {
|
|
508
|
-
removeFromAllLeafChildren: {},
|
|
509
|
-
removeFromChildrenAfterGroup: {}
|
|
510
|
-
};
|
|
511
|
-
this.allParents.push(parent);
|
|
512
|
-
}
|
|
513
|
-
return this.allSets[parent.id];
|
|
514
|
-
}
|
|
515
|
-
flush() {
|
|
516
|
-
this.allParents.forEach(parent => {
|
|
517
|
-
const nodeDetails = this.allSets[parent.id];
|
|
518
|
-
parent.childrenAfterGroup = parent.childrenAfterGroup.filter(child => {
|
|
519
|
-
const res = !nodeDetails.removeFromChildrenAfterGroup[child.id];
|
|
520
|
-
return res;
|
|
521
|
-
});
|
|
522
|
-
parent.allLeafChildren = parent.allLeafChildren.filter(child => !nodeDetails.removeFromAllLeafChildren[child.id]);
|
|
523
|
-
});
|
|
524
|
-
this.allSets = {};
|
|
525
|
-
this.allParents.length = 0;
|
|
526
|
-
}
|
|
527
|
-
}
|
|
528
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAtc3RhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2VvLWZyYW1ld29yay9ncmlkL3Jvdy1ncm91cGluZy9ncm91cC1zdGFnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxJQUFJLEVBU0osY0FBYyxFQUNkLGFBQWEsRUFDYixPQUFPLEVBTVAsQ0FBQyxFQUNKLE1BQU0seUJBQXlCLENBQUM7QUFxQjFCLElBQU0sVUFBVSxHQUFoQixNQUFNLFVBQVU7SUFBaEI7UUFlSCwwRUFBMEU7UUFDMUUsa0ZBQWtGO1FBQ2xGLHdGQUF3RjtRQUN4Rix1QkFBdUI7UUFDZixvQkFBZSxHQUFHLElBQUksY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBNmhCcEQsQ0FBQztJQWxoQlcsYUFBYTtRQUNqQixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUMxRCxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDcEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsZUFBZSxFQUFFLENBQUM7U0FDaEU7SUFDTCxDQUFDO0lBRU0sT0FBTyxDQUFDLE1BQTBCO1FBRXJDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVuRCxJQUFJLE9BQU8sQ0FBQyxXQUFXLEVBQUU7WUFDckIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ25DO2FBQU07WUFDSCxNQUFNLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsS0FBSyxJQUFJLENBQUM7WUFDN0QsSUFBSSxDQUFDLHNCQUFzQixDQUFDLE9BQU8sRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1NBQzFEO1FBRUQsSUFBSSxDQUFDLHdCQUF3QixDQUFD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R0FBRyxDQUFDLENBQUM7SUFDL0IsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBdXRvd2lyZWQsXG4gICAgQmVhbixcbiAgICBDaGFuZ2VkUGF0aCxcbiAgICBDb2x1bW4sXG4gICAgQ29sdW1uQ29udHJvbGxlcixcbiAgICBDb250ZXh0LFxuICAgIEV2ZW50U2VydmljZSxcbiAgICBHZXREYXRhUGF0aCxcbiAgICBHcmlkT3B0aW9uc1dyYXBwZXIsXG4gICAgSVJvd05vZGVTdGFnZSxcbiAgICBOdW1iZXJTZXF1ZW5jZSxcbiAgICBQb3N0Q29uc3RydWN0LFxuICAgIFJvd05vZGUsXG4gICAgUm93Tm9kZVRyYW5zYWN0aW9uLFxuICAgIFNlbGVjdGFibGVTZXJ2aWNlLFxuICAgIFNlbGVjdGlvbkNvbnRyb2xsZXIsXG4gICAgU3RhZ2VFeGVjdXRlUGFyYW1zLFxuICAgIFZhbHVlU2VydmljZSxcbiAgICBfXG59IGZyb20gXCJAYWctZ3JpZC1jb21tdW5pdHkvY29yZVwiO1xuXG5pbnRlcmZhY2UgR3JvdXBJbmZvIHtcbiAgICBrZXk6IHN0cmluZzsgLy8gZS5nLiAnSXJlbGFuZCdcbiAgICBmaWVsZDogc3RyaW5nIHwgbnVsbDsgLy8gZS5nLiAnY291bnRyeSdcbiAgICByb3dHcm91cENvbHVtbjogQ29sdW1uIHwgbnVsbDtcbn1cblxuaW50ZXJmYWNlIEdyb3VwaW5nRGV0YWlscyB7XG4gICAgcGl2b3RNb2RlOiBib29sZWFuO1xuICAgIGluY2x1ZGVQYXJlbnRzOiBib29sZWFuO1xuICAgIGV4cGFuZEJ5RGVmYXVsdDogbnVtYmVyO1xuICAgIGNoYW5nZWRQYXRoOiBDaGFuZ2VkUGF0aDtcbiAgICByb290Tm9kZTogUm93Tm9kZTtcbiAgICBncm91cGVkQ29sczogQ29sdW1uW107XG4gICAgZ3JvdXBlZENvbENvdW50OiBudW1iZXI7XG4gICAgdHJhbnNhY3Rpb246IFJvd05vZGVUcmFuc2FjdGlvbjtcbiAgICByb3dOb2RlT3JkZXI6IHsgW2lkOiBzdHJpbmddOiBudW1iZXIgfTtcbn1cblxuQEJlYW4oJ2dyb3VwU3RhZ2UnKVxuZXhwb3J0IGNsYXNzIEdyb3VwU3RhZ2UgaW1wbGVtZW50cyBJUm93Tm9kZVN0YWdlIHtcblxuICAgIEBBdXRvd2lyZWQoJ3NlbGVjdGlvbkNvbnRyb2xsZXInKSBwcml2YXRlIHNlbGVjdGlvbkNvbnRyb2xsZXI6IFNlbGVjdGlvbkNvbnRyb2xsZXI7XG4gICAgQEF1dG93aXJlZCgnZ3JpZE9wdGlvbnNXcmFwcGVyJykgcHJpdmF0ZSBncmlkT3B0aW9uc1dyYXBwZXI6IEdyaWRPcHRpb25zV3JhcHBlcjtcbiAgICBAQXV0b3dpcmVkKCdjb2x1bW5Db250cm9sbGVyJykgcHJpdmF0ZSBjb2x1bW5Db250cm9sbGVyOiBDb2x1bW5Db250cm9sbGVyO1xuICAgIEBBdXRvd2lyZWQoJ3NlbGVjdGFibGVTZXJ2aWNlJykgcHJpdmF0ZSBzZWxlY3RhYmxlU2VydmljZTogU2VsZWN0YWJsZVNlcnZpY2U7XG4gICAgQEF1dG93aXJlZCgndmFsdWVTZXJ2aWNlJykgcHJpdmF0ZSB2YWx1ZVNlcnZpY2U6IFZhbHVlU2VydmljZTtcbiAgICBAQXV0b3dpcmVkKCdldmVudFNlcnZpY2UnKSBwcml2YXRlIGV2ZW50U2VydmljZTogRXZlbnRTZXJ2aWNlO1xuICAgIEBBdXRvd2lyZWQoJ2NvbnRleHQnKSBwcml2YXRlIGNvbnRleHQ6IENvbnRleHQ7XG5cbiAgICAvLyBpZiBkb2luZyB0cmVlIGRhdGEsIHRoaXMgaXMgdHJ1ZS4gd2Ugc2V0IHRoaXMgYXQgY3JlYXRlIHRpbWUgLSBhcyBvdXIgY29kZSBkb2VzIG5vdFxuICAgIC8vIGNhdGVyIGZvciB0aGUgc2NlbmFyaW8gd2hlcmUgdGhpcyBpcyBzd2l0Y2hlZCBvbiAvIG9mZiBkeW5hbWljYWxseVxuICAgIHByaXZhdGUgdXNpbmdUcmVlRGF0YTogYm9vbGVhbjtcbiAgICBwcml2YXRlIGdldERhdGFQYXRoOiBHZXREYXRhUGF0aCB8IHVuZGVmaW5lZDtcblxuICAgIC8vIHdlIHVzZSBhIHNlcXVlbmNlIHZhcmlhYmxlIHNvIHRoYXQgZWFjaCB0aW1lIHdlIGRvIGEgZ3JvdXBpbmcsIHdlIGRvbid0XG4gICAgLy8gcmV1c2UgdGhlIGlkcyAtIG90aGVyd2lzZSB0aGUgcm93UmVuZGVyZXIgd2lsbCBjb25mdXNlIHJvd05vZGVzIGJldHdlZW4gcmVkcmF3c1xuICAgIC8vIHdoZW4gaXQgdHJpZXMgdG8gYW5pbWF0ZSBiZXR3ZWVuIHJvd3MuIHdlIHNldCB0byAtMSBhcyBvdGhlcnMgcm93IGlkIDAgd2lsbCBiZSBzaGFyZWRcbiAgICAvLyB3aXRoIHRoZSBvdGhlciByb3dzLlxuICAgIHByaXZhdGUgZ3JvdXBJZFNlcXVlbmNlID0gbmV3IE51bWJlclNlcXVlbmNlKDEpO1xuXG4gICAgLy8gd2hlbiBncm91cGluZywgdGhlc2UgaXRlbXMgYXJlIG9mIG5vdGU6XG4gICAgLy8gcm93Tm9kZS5wYXJlbnQ6IFJvd05vZGU6IHNldCB0byB0aGUgcGFyZW50XG4gICAgLy8gcm93Tm9kZS5jaGlsZHJlbkFmdGVyR3JvdXA6IFJvd05vZGVbXSA9IHRoZSBkaXJlY3QgY2hpbGRyZW4gb2YgdGhpcyBncm91cFxuICAgIC8vIHJvd05vZGUuY2hpbGRyZW5NYXBwZWQ6IHN0cmluZz0+Um93Tm9kZSA9IGNoaWxkcmVuIG1hcHBlZCBieSBncm91cCBrZXkgKHdoZW4gZ3JvdXBzKSBvciBhbiBlbXB0eSBtYXAgaWYgbGVhZiBncm91cCAodGhpcyBpcyB0aGVuIHVzZWQgYnkgcGl2b3QpXG4gICAgLy8gZm9yIGxlYWYgZ3JvdXBzLCByb3dOb2RlLmNoaWxkcmVuQWZ0ZXJHcm91cCA9IHJvd05vZGUuYWxsTGVhZkNoaWxkcmVuO1xuXG4gICAgcHJpdmF0ZSBvbGRHcm91cGluZ0RldGFpbHM6IEdyb3VwaW5nRGV0YWlscztcblxuICAgIEBQb3N0Q29uc3RydWN0XG4gICAgcHJpdmF0ZSBwb3N0Q29uc3RydWN0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnVzaW5nVHJlZURhdGEgPSB0aGlzLmdyaWRPcHRpb25zV3JhcHBlci5pc1RyZWVEYXRhKCk7XG4gICAgICAgIGlmICh0aGlzLnVzaW5nVHJlZURhdGEpIHtcbiAgICAgICAgICAgIHRoaXMuZ2V0RGF0YVBhdGggPSB0aGlzLmdyaWRPcHRpb25zV3JhcHBlci5nZXREYXRhUGF0aEZ1bmMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBleGVjdXRlKHBhcmFtczogU3RhZ2VFeGVjdXRlUGFyYW1zKTogdm9pZCB7XG5cbiAgICAgICAgY29uc3QgZGV0YWlscyA9IHRoaXMuY3JlYXRlR3JvdXBpbmdEZXRhaWxzKHBhcmFtcyk7XG5cbiAgICAgICAgaWYgKGRldGFpbHMudHJhbnNhY3Rpb24pIHtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlVHJhbnNhY3Rpb24oZGV0YWlscyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBhZnRlckNvbHNDaGFuZ2VkID0gcGFyYW1zLmFmdGVyQ29sdW1uc0NoYW5nZWQgPT09IHRydWU7XG4gICAgICAgICAgICB0aGlzLnNob3RndW5SZXNldEV2ZXJ5dGhpbmcoZGV0YWlscywgYWZ0ZXJDb2xzQ2hhbmdlZCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNvcnRHcm91cHNXaXRoQ29tcGFyYXRvcihkZXRhaWxzLnJvb3ROb2RlKTtcblxuICAgICAgICB0aGlzLnNlbGVjdGFibGVTZXJ2aWNlLnVwZGF0ZVNlbGVjdGFibGVBZnRlckdyb3VwaW5nKGRldGFpbHMucm9vdE5vZGUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlR3JvdXBpbmdEZXRhaWxzKHBhcmFtczogU3RhZ2VFeGVjdXRlUGFyYW1zKTogR3JvdXBpbmdEZXRhaWxzIHtcbiAgICAgICAgY29uc3Qge3Jvd05vZGUsIGNoYW5nZWRQYXRoLCByb3dOb2RlVHJhbnNhY3Rpb24sIHJvd05vZGVPcmRlcn0gPSBwYXJhbXM7XG5cbiAgICAgICAgY29uc3QgZ3JvdXBlZENvbHMgPSB0aGlzLnVzaW5nVHJlZURhdGEgPyBudWxsIDogdGhpcy5jb2x1bW5Db250cm9sbGVyLmdldFJvd0dyb3VwQ29sdW1ucygpO1xuICAgICAgICBjb25zdCBpc0dyb3VwaW5nID0gdGhpcy51c2luZ1RyZWVEYXRhIHx8IChncm91cGVkQ29scyAmJiBncm91cGVkQ29scy5sZW5ndGggPiAwKTtcbiAgICAgICAgY29uc3QgdXNpbmdUcmFuc2FjdGlvbiA9IGlzR3JvdXBpbmcgJiYgXy5leGlzdHMocm93Tm9kZVRyYW5zYWN0aW9uKTtcblxuICAgICAgICBjb25zdCBkZXRhaWxzOiBHcm91cGluZ0RldGFpbHMgPSB7XG4gICAgICAgICAgICAvLyBzb21lb25lIGNvbXBsYWluZWQgdGhhdCB0aGUgcGFyZW50IGF0dHJpYnV0ZSB3YXMgY2F1c2luZyBzb21lIGNoYW5nZSBkZXRlY3Rpb25cbiAgICAgICAgICAgIC8vIHRvIGJyZWFrIGlzIHNvbWUgYW5ndWxhciBhZGQtb24gLSB3aGljaCBpIG5ldmVyIHVzZWQuIHRha2luZyB0aGUgcGFyZW50IG91dCBicmVha3NcbiAgICAgICAgICAgIC8vIGEgY3ljbGljIGRlcGVuZGVuY3ksIGhlbmNlIHRoaXMgZmxhZyBnb3QgaW50cm9kdWNlZC5cbiAgICAgICAgICAgIGluY2x1ZGVQYXJlbnRzOiAhdGhpcy5ncmlkT3B0aW9uc1dyYXBwZXIuaXNTdXBwcmVzc1BhcmVudHNJblJvd05vZGVzKCksXG4gICAgICAgICAgICBleHBhbmRCeURlZmF1bHQ6IHRoaXMuZ3JpZE9wdGlvbnNXcmFwcGVyLmlzR3JvdXBTdXBwcmVzc1JvdygpID9cbiAgICAgICAgICAgICAgICAtMSA6IHRoaXMuZ3JpZE9wdGlvbnNXcmFwcGVyLmdldEdyb3VwRGVmYXVsdEV4cGFuZGVkKCksXG4gICAgICAgICAgICBncm91cGVkQ29sczogZ3JvdXBlZENvbHMsXG4gICAgICAgICAgICByb290Tm9kZTogcm93Tm9kZSxcbiAgICAgICAgICAgIHBpdm90TW9kZTogdGhpcy5jb2x1bW5Db250cm9sbGVyLmlzUGl2b3RNb2RlKCksXG4gICAgICAgICAgICBncm91cGVkQ29sQ291bnQ6IHRoaXMudXNpbmdUcmVlRGF0YSB8fCAhZ3JvdXBlZENvbHMgPyAwIDogZ3JvdXBlZENvbHMubGVuZ3RoLFxuICAgICAgICAgICAgcm93Tm9kZU9yZGVyOiByb3dOb2RlT3JkZXIsXG5cbiAgICAgICAgICAgIC8vIGltcG9ydGFudCBub3QgdG8gZG8gdHJhbnNhY3Rpb24gaWYgd2UgYXJlIG5vdCBncm91cGluZywgYXMgb3RoZXJ3aXNlIHRoZSAnaW5zZXJ0IGluZGV4JyBpcyBpZ25vcmVkLlxuICAgICAgICAgICAgLy8gaWUsIGlmIG5vdCBncm91cGluZywgdGhlbiB3ZSBqdXN0IHdhbnQgdG8gc2hvdGd1biBzbyB0aGUgcm9vdE5vZGUuYWxsTGVhZkNoaWxkcmVuIGdldHMgY29waWVkXG4gICAgICAgICAgICAvLyB0byByb290Tm9kZS5jaGlsZHJlbkFmdGVyR3JvdXAgYW5kIG1haW50YWluaW5nIG9yZGVyIChhcyBkZWx0YSB0cmFuc2FjdGlvbiBtaXNzZXMgdGhlIG9yZGVyKS5cbiAgICAgICAgICAgIHRyYW5zYWN0aW9uOiB1c2luZ1RyYW5zYWN0aW9uID8gcm93Tm9kZVRyYW5zYWN0aW9uIDogbnVsbCxcblxuICAgICAgICAgICAgLy8gaWYgbm8gdHJhbnNhY3Rpb24sIHRoZW4gaXQncyBzaG90Z3VuLCBjaGFuZ2VkIHBhdGggd291bGQgYmUgJ25vdCBhY3RpdmUnIGF0IHRoaXMgcG9pbnQgYW55d2F5XG4gICAgICAgICAgICBjaGFuZ2VkUGF0aDogY2hhbmdlZFBhdGhcbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4gZGV0YWlscztcbiAgICB9XG5cbiAgICBwcml2YXRlIGhhbmRsZVRyYW5zYWN0aW9uKGRldGFpbHM6IEdyb3VwaW5nRGV0YWlscyk6IHZvaWQge1xuICAgICAgICBjb25zdCB0cmFuID0gZGV0YWlscy50cmFuc2FjdGlvbjtcbiAgICAgICAgaWYgKHRyYW4uYWRkKSB7XG4gICAgICAgICAgICB0aGlzLmluc2VydE5vZGVzKHRyYW4uYWRkLCBkZXRhaWxzLCBmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRyYW4udXBkYXRlKSB7XG4gICAgICAgICAgICB0aGlzLm1vdmVOb2Rlc0luV3JvbmdQYXRoKHRyYW4udXBkYXRlLCBkZXRhaWxzKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHJhbi5yZW1vdmUpIHtcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlTm9kZXModHJhbi5yZW1vdmUsIGRldGFpbHMpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChkZXRhaWxzLnJvd05vZGVPcmRlcikge1xuICAgICAgICAgICAgdGhpcy5zb3J0Q2hpbGRyZW4oZGV0YWlscyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyB0aGlzIGlzIHVzZWQgd2hlbiBkb2luZyBkZWx0YSB1cGRhdGVzLCBlZyBSZWR1eCwga2VlcHMgbm9kZXMgaW4gcmlnaHQgb3JkZXJcbiAgICBwcml2YXRlIHNvcnRDaGlsZHJlbihkZXRhaWxzOiBHcm91cGluZ0RldGFpbHMpOiB2b2lkIHtcbiAgICAgICAgZGV0YWlscy5jaGFuZ2VkUGF0aC5mb3JFYWNoQ2hhbmdlZE5vZGVEZXB0aEZpcnN0KHJvd05vZGUgPT4ge1xuICAgICAgICAgICAgXy5zb3J0Um93Tm9kZXNCeU9yZGVyKHJvd05vZGUuY2hpbGRyZW5BZnRlckdyb3VwLCBkZXRhaWxzLnJvd05vZGVPcmRlcik7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgc29ydEdyb3Vwc1dpdGhDb21wYXJhdG9yKHJvb3ROb2RlOiBSb3dOb2RlKTogdm9pZCB7XG4gICAgICAgIC8vIHdlIGRvbid0IGRvIGdyb3VwIHNvcnRpbmcgZm9yIHRyZWUgZGF0YVxuICAgICAgICBpZiAodGhpcy51c2luZ1RyZWVEYXRhKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjb21wYXJhdG9yID0gdGhpcy5ncmlkT3B0aW9uc1dyYXBwZXIuZ2V0RGVmYXVsdEdyb3VwU29ydENvbXBhcmF0b3IoKTtcbiAgICAgICAgaWYgKF8uZXhpc3RzKGNvbXBhcmF0b3IpKSB7XG4gICAgICAgICAgICByZWN1cnNpdmVTb3J0KHJvb3ROb2RlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIHJlY3Vyc2l2ZVNvcnQocm93Tm9kZTogUm93Tm9kZSk6IHZvaWQge1xuICAgICAgICAgICAgY29uc3QgZG9Tb3J0ID0gXy5leGlzdHMocm93Tm9kZS5jaGlsZHJlbkFmdGVyR3JvdXApICYmXG4gICAgICAgICAgICAgICAgLy8gd2Ugb25seSB3YW50IHRvIHNvcnQgZ3JvdXBzLCBzbyB3ZSBkbyBub3Qgc29ydCBsZWFmcyAoYSBsZWFmIGdyb3VwIGhhcyBsZWFmcyBhcyBjaGlsZHJlbilcbiAgICAgICAgICAgICAgICAhcm93Tm9kZS5sZWFmR3JvdXA7XG5cbiAgICAgICAgICAgIGlmIChkb1NvcnQpIHtcbiAgICAgICAgICAgICAgICByb3dOb2RlLmNoaWxkcmVuQWZ0ZXJHcm91cC5zb3J0KGNvbXBhcmF0b3IpO1xuICAgICAgICAgICAgICAgIHJvd05vZGUuY2hpbGRyZW5BZnRlckdyb3VwLmZvckVhY2goKGNoaWxkTm9kZTogUm93Tm9kZSkgPT4gcmVjdXJzaXZlU29ydChjaGlsZE5vZGUpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0RXhpc3RpbmdQYXRoRm9yTm9kZShub2RlOiBSb3dOb2RlLCBkZXRhaWxzOiBHcm91cGluZ0RldGFpbHMpOiBHcm91cEluZm9bXSB7XG4gICAgICAgIGNvbnN0IHJlczogR3JvdXBJbmZvW10gPSBbXTtcblxuICAgICAgICAvLyB3aGVuIGRvaW5nIHRyZWUgZGF0YSwgdGhlIG5vZGUgaXMgcGFydCBvZiB0aGUgcGF0aCxcbiAgICAgICAgLy8gYnV0IHdoZW4gZG9pbmcgZ3JpZCBncm91cGluZywgdGhlIG5vZGUgaXMgbm90IHBhcnQgb2YgdGhlIHBhdGggc28gd2Ugc3RhcnQgd2l0aCB0aGUgcGFyZW50LlxuICAgICAgICBsZXQgcG9pbnRlciA9IHRoaXMudXNpbmdUcmVlRGF0YSA/IG5vZGUgOiBub2RlLnBhcmVudDtcbiAgICAgICAgd2hpbGUgKHBvaW50ZXIgJiYgcG9pbnRlciAhPT0gZGV0YWlscy5yb290Tm9kZSkge1xuICAgICAgICAgICAgcmVzLnB1c2goe1xuICAgICAgICAgICAgICAgIGtleTogcG9pbnRlci5rZXksXG4gICAgICAgICAgICAgICAgcm93R3JvdXBDb2x1bW46IHBvaW50ZXIucm93R3JvdXBDb2x1bW4sXG4gICAgICAgICAgICAgICAgZmllbGQ6IHBvaW50ZXIuZmllbGRcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcG9pbnRlciA9IHBvaW50ZXIucGFyZW50O1xuICAgICAgICB9XG4gICAgICAgIHJlcy5yZXZlcnNlKCk7XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtb3ZlTm9kZXNJbldyb25nUGF0aChjaGlsZE5vZGVzOiBSb3dOb2RlW10sIGRldGFpbHM6IEdyb3VwaW5nRGV0YWlscyk6IHZvaWQge1xuXG4gICAgICAgIGNoaWxkTm9kZXMuZm9yRWFjaChjaGlsZE5vZGUgPT4ge1xuXG4gICAgICAgICAgICAvLyB3ZSBhZGQgbm9kZSwgZXZlbiBpZiBwYXJlbnQgaGFzIG5vdCBjaGFuZ2VkLCBhcyB0aGUgZGF0YSBjb3VsZCBoYXZlXG4gICAgICAgICAgICAvLyBjaGFuZ2VkLCBoZW5jZSBhZ2dyZWdhdGlvbnMgd2lsbCBiZSB3cm9uZ1xuICAgICAgICAgICAgaWYgKGRldGFpbHMuY2hhbmdlZFBhdGguaXNBY3RpdmUoKSkge1xuICAgICAgICAgICAgICAgIGRldGFpbHMuY2hhbmdlZFBhdGguYWRkUGFyZW50Tm9kZShjaGlsZE5vZGUucGFyZW50KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgaW5mb1RvS2V5TWFwcGVyID0gKGl0ZW06IEdyb3VwSW5mbykgPT4gaXRlbS5rZXk7XG4gICAgICAgICAgICBjb25zdCBvbGRQYXRoOiBzdHJpbmdbXSA9IHRoaXMuZ2V0RXhpc3RpbmdQYXRoRm9yTm9kZShjaGlsZE5vZGUsIGRldGFpbHMpLm1hcChpbmZvVG9LZXlNYXBwZXIpO1xuICAgICAgICAgICAgY29uc3QgbmV3UGF0aDogc3RyaW5nW10gPSB0aGlzLmdldEdyb3VwSW5mbyhjaGlsZE5vZGUsIGRldGFpbHMpLm1hcChpbmZvVG9LZXlNYXBwZXIpO1xuXG4gICAgICAgICAgICBjb25zdCBub2RlSW5Db3JyZWN0UGF0aCA9IF8uY29tcGFyZUFycmF5cyhvbGRQYXRoLCBuZXdQYXRoKTtcblxuICAgICAgICAgICAgaWYgKCFub2RlSW5Db3JyZWN0UGF0aCkge1xuICAgICAgICAgICAgICAgIHRoaXMubW92ZU5vZGUoY2hpbGROb2RlLCBkZXRhaWxzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtb3ZlTm9kZShjaGlsZE5vZGU6IFJvd05vZGUsIGRldGFpbHM6IEdyb3VwaW5nRGV0YWlscyk6IHZvaWQge1xuXG4gICAgICAgIHRoaXMucmVtb3ZlTm9kZXNJblN0YWdlcyhbY2hpbGROb2RlXSwgZGV0YWlscyk7XG4gICAgICAgIHRoaXMuaW5zZXJ0T25lTm9kZShjaGlsZE5vZGUsIGRldGFpbHMsIHRydWUpO1xuXG4gICAgICAgIC8vIGhhY2sgLSBpZiB3ZSBkaWRuJ3QgZG8gdGhpcywgdGhlbiByZW5hbWluZyBhIHRyZWUgaXRlbSAoaWUgY2hhbmdpbmcgcm93Tm9kZS5rZXkpIHdvdWxkbid0IGdldFxuICAgICAgICAvLyByZWZyZXNoZWQgaW50byB0aGUgZ3VpLlxuICAgICAgICAvLyB0aGlzIGlzIG5lZWRlZCB0byBraWNrIG9mZiB0aGUgZXZlbnQgdGhhdCByb3dDb21wIGxpc3RlbnMgdG8gZm9yIHJlZnJlc2guIHRoaXMgaW4gdHVyblxuICAgICAgICAvLyB0aGVuIHdpbGwgZ2V0IGVhY2ggY2VsbCBpbiB0aGUgcm93IHRvIHJlZnJlc2ggLSB3aGljaCBpcyB3aGF0IHdlIG5lZWQgYXMgd2UgZG9uJ3Qga25vdyB3aGljaFxuICAgICAgICAvLyBjb2x1bW5zIHdpbGwgYmUgZGlzcGxheWluZyB0aGUgcm93Tm9kZS5rZXkgaW5mby5cbiAgICAgICAgY2hpbGROb2RlLnNldERhdGEoY2hpbGROb2RlLmRhdGEpO1xuXG4gICAgICAgIC8vIHdlIGFkZCBib3RoIG9sZCBhbmQgbmV3IHBhcmVudHMgdG8gY2hhbmdlZCBwYXRoLCBhcyBib3RoIHdpbGwgbmVlZCB0byBiZSByZWZyZXNoZWQuXG4gICAgICAgIC8vIHdlIGFscmVhZHkgYWRkZWQgdGhlIG9sZCBwYXJlbnQgKGluIGNhbGxpbmcgbWV0aG9kKSwgc28ganVzdCBhZGQgdGhlIG5ldyBwYXJlbnQgaGVyZVxuICAgICAgICBpZiAoZGV0YWlscy5jaGFuZ2VkUGF0aC5pc0FjdGl2ZSgpKSB7XG4gICAgICAgICAgICBjb25zdCBuZXdQYXJlbnQgPSBjaGlsZE5vZGUucGFyZW50O1xuICAgICAgICAgICAgZGV0YWlscy5jaGFuZ2VkUGF0aC5hZGRQYXJlbnROb2RlKG5ld1BhcmVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHJlbW92ZU5vZGVzKGxlYWZSb3dOb2RlczogUm93Tm9kZVtdLCBkZXRhaWxzOiBHcm91cGluZ0RldGFpbHMpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yZW1vdmVOb2Rlc0luU3RhZ2VzKGxlYWZSb3dOb2RlcywgZGV0YWlscyk7XG4gICAgICAgIGlmIChkZXRhaWxzLmNoYW5nZWRQYXRoLmlzQWN0aXZlKCkpIHtcbiAgICAgICAgICAgIGxlYWZSb3dOb2Rlcy5mb3JFYWNoKHJvd05vZGUgPT4gZGV0YWlscy5jaGFuZ2VkUGF0aC5hZGRQYXJlbnROb2RlKHJvd05vZGUucGFyZW50KSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHJlbW92ZU5vZGVzSW5TdGFnZXMobGVhZlJvd05vZGVzOiBSb3dOb2RlW10sIGRldGFpbHM6IEdyb3VwaW5nRGV0YWlscyk6IHZvaWQge1xuICAgICAgICB0aGlzLnJlbW92ZU5vZGVzRnJvbVBhcmVudHMobGVhZlJvd05vZGVzLCBkZXRhaWxzKTtcbiAgICAgICAgdGhpcy5wb3N0UmVtb3ZlQ3JlYXRlRmlsbGVyTm9kZXMobGVhZlJvd05vZGVzLCBkZXRhaWxzKTtcbiAgICAgICAgdGhpcy5wb3N0UmVtb3ZlUmVtb3ZlRW1wdHlHcm91cHMobGVhZlJvd05vZGVzLCBkZXRhaWxzKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZvckVhY2hQYXJlbnRHcm91cChkZXRhaWxzOiBHcm91cGluZ0RldGFpbHMsIGNoaWxkOiBSb3dOb2RlLCBjYWxsYmFjazogKHBhcmVudDogUm93Tm9kZSkgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICBsZXQgcG9pbnRlciA9IGNoaWxkLnBhcmVudDtcbiAgICAgICAgd2hpbGUgKHBvaW50ZXIgJiYgcG9pbnRlciAhPT0gZGV0YWlscy5yb290Tm9kZSkge1xuICAgICAgICAgICAgY2FsbGJhY2socG9pbnRlcik7XG4gICAgICAgICAgICBwb2ludGVyID0gcG9pbnRlci5wYXJlbnQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHJlbW92ZU5vZGVzRnJvbVBhcmVudHMobm9kZXNUb1JlbW92ZTogUm93Tm9kZVtdLCBkZXRhaWxzOiBHcm91cGluZ0RldGFpbHMpOiB2b2lkIHtcblxuICAgICAgICBjb25zdCBiYXRjaFJlbW92ZXI6IEJhdGNoUmVtb3ZlciA9IG5ldyBCYXRjaFJlbW92ZXIoKTtcblxuICAgICAgICBub2Rlc1RvUmVtb3ZlLmZvckVhY2gobm9kZVRvUmVtb3ZlID0+IHtcblxuICAgICAgICAgICAgdGhpcy5yZW1vdmVGcm9tUGFyZW50KG5vZGVUb1JlbW92ZSwgYmF0Y2hSZW1vdmVyKTtcblxuICAgICAgICAgICAgLy8gcmVtb3ZlIGZyb20gYWxsTGVhZkNoaWxkcmVuLiB3ZSBjbGVhciBkb3duIGFsbCBwYXJlbnRzIEVYQ0VQVCB0aGUgUm9vdCBOb2RlLCBhc1xuICAgICAgICAgICAgLy8gdGhlIENsaWVudFNpZGVOb2RlTWFuYWdlciBpcyByZXNwb25zaWJsZSBmb3IgdGhlIFJvb3QgTm9kZS5cbiAgICAgICAgICAgIHRoaXMuZm9yRWFjaFBhcmVudEdyb3VwKGRldGFpbHMsIG5vZGVUb1JlbW92ZSwgcGFyZW50Tm9kZSA9PiB7XG4gICAgICAgICAgICAgICAgYmF0Y2hSZW1vdmVyLnJlbW92ZUZyb21BbGxMZWFmQ2hpbGRyZW4ocGFyZW50Tm9kZSwgbm9kZVRvUmVtb3ZlKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGJhdGNoUmVtb3Zlci5mbHVzaCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgcG9zdFJlbW92ZUNyZWF0ZUZpbGxlck5vZGVzKG5vZGVzVG9SZW1vdmU6IFJvd05vZGVbXSwgZGV0YWlsczogR3JvdXBpbmdEZXRhaWxzKTogdm9pZCB7XG4gICAgICAgIG5vZGVzVG9SZW1vdmUuZm9yRWFjaChub2RlVG9SZW1vdmUgPT4ge1xuXG4gICAgICAgICAgICAvLyBpZiBub3QgZ3JvdXAsIGFuZCBjaGlsZHJlbiBhcmUgcHJlc2VudCwgbmVlZCB0byBtb3ZlIGNoaWxkcmVuIHRvIGEgZ3JvdXAuXG4gICAgICAgICAgICAvLyBvdGhlcndpc2UgaWYgbm8gY2hpbGRyZW4sIHdlIGNhbiBqdXN0IHJlbW92ZSB3aXRob3V0IHJlcGxhY2luZy5cbiAgICAgICAgICAgIGNvbnN0IHJlcGxhY2VXaXRoR3JvdXAgPSBub2RlVG9SZW1vdmUuaGFzQ2hpbGRyZW4oKTtcbiAgICAgICAgICAgIGlmIChyZXBsYWNlV2l0aEdyb3VwKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgb2xkUGF0aCA9IHRoaXMuZ2V0RXhpc3RpbmdQYXRoRm9yTm9kZShub2RlVG9SZW1vdmUsIGRldGFpbHMpO1xuICAgICAgICAgICAgICAgIC8vIGJlY2F1c2Ugd2UganVzdCByZW1vdmVkIHRoZSB1c2VyR3JvdXAsIHRoaXMgd2lsbCBhbHdheXMgcmV0dXJuIG5ldyBzdXBwb3J0IGdyb3VwXG4gICAgICAgICAgICAgICAgY29uc3QgbmV3R3JvdXBOb2RlID0gdGhpcy5maW5kUGFyZW50Rm9yTm9kZShub2RlVG9SZW1vdmUsIG9sZFBhdGgsIGRldGFpbHMpO1xuXG4gICAgICAgICAgICAgICAgLy8gdGhlc2UgcHJvcGVydGllcyBhcmUgdGhlIG9uZXMgdGhhdCB3aWxsIGJlIGluY29ycmVjdCBpbiB0aGUgbmV3bHkgY3JlYXRlZCBncm91cCxcbiAgICAgICAgICAgICAgICAvLyBzbyBjb3B5IHRoZW0gZnJvbSB0aGUgb2xkIGNoaWxkTm9kZVxuICAgICAgICAgICAgICAgIG5ld0dyb3VwTm9kZS5leHBhbmRlZCA9IG5vZGVUb1JlbW92ZS5leHBhbmRlZDtcbiAgICAgICAgICAgICAgICBuZXdHcm91cE5vZGUuYWxsTGVhZkNoaWxkcmVuID0gbm9kZVRvUmVtb3ZlLmFsbExlYWZDaGlsZHJlbjtcbiAgICAgICAgICAgICAgICBuZXdHcm91cE5vZGUuY2hpbGRyZW5BZnRlckdyb3VwID0gbm9kZVRvUmVtb3ZlLmNoaWxkcmVuQWZ0ZXJHcm91cDtcbiAgICAgICAgICAgICAgICBuZXdHcm91cE5vZGUuY2hpbGRyZW5NYXBwZWQgPSBub2RlVG9SZW1vdmUuY2hpbGRyZW5NYXBwZWQ7XG5cbiAgICAgICAgICAgICAgICBuZXdHcm91cE5vZGUuY2hpbGRyZW5BZnRlckdyb3VwLmZvckVhY2gocm93Tm9kZSA9PiByb3dOb2RlLnBhcmVudCA9IG5ld0dyb3VwTm9kZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwb3N0UmVtb3ZlUmVtb3ZlRW1wdHlHcm91cHMobm9kZXNUb1JlbW92ZTogUm93Tm9kZVtdLCBkZXRhaWxzOiBHcm91cGluZ0RldGFpbHMpOiB2b2lkIHtcbiAgICAgICAgLy8gd2UgZG8gdGhpcyBtdWx0aXBsZSB0aW1lcywgYXMgd2hlbiB3ZSByZW1vdmUgZ3JvdXBzLCB0aGF0IG1lYW5zIHRoZSBwYXJlbnQgb2YganVzdCByZW1vdmVkXG4gICAgICAgIC8vIGdyb3VwIGNhbiB0aGVuIGJlIGVtcHR5LiB0byBnZXQgYXJvdW5kIHRoaXMsIGlmIHdlIHJlbW92ZSwgdGhlbiB3ZSBjaGVjayBldmVyeXRoaW5nIGFnYWluIGZvclxuICAgICAgICAvLyBuZXdseSBlbXB0aWVkIGdyb3Vwcy4gdGhlIG1heCBudW1iZXIgb2YgdGltZXMgdGhpcyB3aWxsIGV4ZWN1dGUgaXMgdGhlIGRlcHRoIG9mIHRoZSBncm91cCB0cmVlLlxuICAgICAgICBsZXQgY2hlY2tBZ2FpbiA9IHRydWU7XG5cbiAgICAgICAgY29uc3QgZ3JvdXBTaG91bGRCZVJlbW92ZWQgPSAocm93Tm9kZTogUm93Tm9kZSk6IGJvb2xlYW4gPT4ge1xuXG4gICAgICAgICAgICAvLyBiZWNhdXNlIG9mIHRoZSB3aGlsZSBsb29wIGJlbG93LCBpdCdzIHBvc3NpYmxlIHdlIGFscmVhZHkgbW92ZWQgdGhlIG5vZGUsXG4gICAgICAgICAgICAvLyBzbyBkb3VibGUgY2hlY2sgYmVmb3JlIHRyeWluZyB0byByZW1vdmUgYWdhaW4uXG4gICAgICAgICAgICBjb25zdCBtYXBLZXkgPSB0aGlzLmdldENoaWxkcmVuTWFwcGVkS2V5KHJvd05vZGUua2V5LCByb3dOb2RlLnJvd0dyb3VwQ29sdW1uKTtcbiAgICAgICAgICAgIGNvbnN0IHBhcmVudFJvd05vZGUgPSByb3dOb2RlLnBhcmVudDtcbiAgICAgICAgICAgIGNvbnN0IGdyb3VwQWxyZWFkeVJlbW92ZWQgPSAocGFyZW50Um93Tm9kZSAmJiBwYXJlbnRSb3dOb2RlLmNoaWxkcmVuTWFwcGVkKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAhcGFyZW50Um93Tm9kZS5jaGlsZHJlbk1hcHBlZFttYXBLZXldIDogdHJ1ZTtcblxuICAgICAgICAgICAgaWYgKGdyb3VwQWxyZWFkeVJlbW92ZWQpIHtcbiAgICAgICAgICAgICAgICAvLyBpZiBub3QgbGlua2VkLCB0aGVuIGdyb3VwIHdhcyBhbHJlYWR5IHJlbW92ZWRcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIGlmIHN0aWxsIG5vdCByZW1vdmVkLCB0aGVuIHdlIHJlbW92ZSBpZiB0aGlzIGdyb3VwIGlzIGVtcHR5XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJvd05vZGUuaXNFbXB0eVJvd0dyb3VwTm9kZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIHdoaWxlIChjaGVja0FnYWluKSB7XG4gICAgICAgICAgICBjaGVja0FnYWluID0gZmFsc2U7XG4gICAgICAgICAgICBjb25zdCBiYXRjaFJlbW92ZXI6IEJhdGNoUmVtb3ZlciA9IG5ldyBCYXRjaFJlbW92ZXIoKTtcbiAgICAgICAgICAgIG5vZGVzVG9SZW1vdmUuZm9yRWFjaChub2RlVG9SZW1vdmUgPT4ge1xuICAgICAgICAgICAgICAgIC8vIHJlbW92ZSBlbXB0eSBncm91cHNcbiAgICAgICAgICAgICAgICB0aGlzLmZvckVhY2hQYXJlbnRHcm91cChkZXRhaWxzLCBub2RlVG9SZW1vdmUsIHJvd05vZGUgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZ3JvdXBTaG91bGRCZVJlbW92ZWQocm93Tm9kZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrQWdhaW4gPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVGcm9tUGFyZW50KHJvd05vZGUsIGJhdGNoUmVtb3Zlcik7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB3ZSByZW1vdmUgc2VsZWN0aW9uIG9uIGZpbGxlciBub2RlcyBoZXJlLCBhcyB0aGUgc2VsZWN0aW9uIHdvdWxkIG5vdCBiZSByZW1vdmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBmcm9tIHRoZSBSb3dOb2RlTWFuYWdlciwgYXMgZmlsbGVyIG5vZGVzIGRvbid0IGV4aXN0IG9uIHRoZSBSb3dOb2RlTWFuYWdlclxuICAgICAgICAgICAgICAgICAgICAgICAgcm93Tm9kZS5zZXRTZWxlY3RlZChmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgYmF0Y2hSZW1vdmVyLmZsdXNoKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyByZW1vdmVzIHRoZSBub2RlIGZyb20gdGhlIHBhcmVudCBieTpcbiAgICAvLyBhKSByZW1vdmluZyBmcm9tIGNoaWxkcmVuQWZ0ZXJHcm91cCAodXNpbmcgYmF0Y2hSZW1vdmVyIGlmIHByZXNlbnQsIG90aGVyd2lzZSBpbW1lZGlhdGVseSlcbiAgICAvLyBiKSByZW1vdmluZyBmcm9tIGNoaWxkcmVuTWFwcGVkIChpbW1lZGlhdGVseSlcbiAgICAvLyBjKSBzZXRSb3dUb3AobnVsbCkgLSBhcyB0aGUgcm93UmVuZGVyZXIgdXNlcyB0aGlzIHRvIGtub3cgdGhlIFJvd05vZGUgaXMgbm8gbG9uZ2VyIG5lZWRlZFxuICAgIHByaXZhdGUgcmVtb3ZlRnJvbVBhcmVudChjaGlsZDogUm93Tm9kZSwgYmF0Y2hSZW1vdmVyPzogQmF0Y2hSZW1vdmVyKSB7XG4gICAgICAgIGlmIChjaGlsZC5wYXJlbnQpIHtcbiAgICAgICAgICAgIGlmIChiYXRjaFJlbW92ZXIpIHtcbiAgICAgICAgICAgICAgICBiYXRjaFJlbW92ZXIucmVtb3ZlRnJvbUNoaWxkcmVuQWZ0ZXJHcm91cChjaGlsZC5wYXJlbnQsIGNoaWxkKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgXy5yZW1vdmVGcm9tQXJyYXkoY2hpbGQucGFyZW50LmNoaWxkcmVuQWZ0ZXJHcm91cCwgY2hpbGQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG1hcEtleSA9IHRoaXMuZ2V0Q2hpbGRyZW5NYXBwZWRLZXkoY2hpbGQua2V5LCBjaGlsZC5yb3dHcm91cENvbHVtbik7XG4gICAgICAgIGlmIChjaGlsZC5wYXJlbnQgJiYgY2hpbGQucGFyZW50LmNoaWxkcmVuTWFwcGVkKSB7XG4gICAgICAgICAgICBjaGlsZC5wYXJlbnQuY2hpbGRyZW5NYXBwZWRbbWFwS2V5XSA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICAvLyB0aGlzIGlzIGltcG9ydGFudCBmb3IgdHJhbnNpdGlvbiwgc2VlIHJvd0NvbXAgcmVtb3ZlRmlyc3RQYXNzRnVuY3MuIHdoZW4gZG9pbmcgYW5pbWF0aW9uIGFuZFxuICAgICAgICAvLyByZW1vdmUsIGlmIHJvd1RvcCBpcyBzdGlsbCBwcmVzZW50LCB0aGUgcm93Q29tcCB0aGlua3MgaXQncyBqdXN0IG1vdmVkIHBvc2l0aW9uLlxuICAgICAgICBjaGlsZC5zZXRSb3dUb3AobnVsbCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhZGRUb1BhcmVudChjaGlsZDogUm93Tm9kZSwgcGFyZW50OiBSb3dOb2RlIHwgbnVsbCkge1xuICAgICAgICBjb25zdCBtYXBLZXkgPSB0aGlzLmdldENoaWxkcmVuTWFwcGVkS2V5KGNoaWxkLmtleSwgY2hpbGQucm93R3JvdXBDb2x1bW4pO1xuICAgICAgICBpZiAocGFyZW50KSB7XG4gICAgICAgICAgICBpZiAocGFyZW50LmNoaWxkcmVuTWFwcGVkKSB7XG4gICAgICAgICAgICAgICAgcGFyZW50LmNoaWxkcmVuTWFwcGVkW21hcEtleV0gPSBjaGlsZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHBhcmVudC5jaGlsZHJlbkFmdGVyR3JvdXAucHVzaChjaGlsZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGFyZUdyb3VwQ29sc0VxdWFsKGQxOiBHcm91cGluZ0RldGFpbHMsIGQyOiBHcm91cGluZ0RldGFpbHMpOiBib29sZWFuIHtcblxuICAgICAgICBpZiAoZDEgPT0gbnVsbCB8fCBkMiA9PSBudWxsKSB7IHJldHVybiBmYWxzZTsgfVxuXG4gICAgICAgIGlmIChkMS5waXZvdE1vZGUgIT09IGQyLnBpdm90TW9kZSkgeyByZXR1cm4gZmFsc2U7IH1cblxuICAgICAgICBpZiAoIV8uY29tcGFyZUFycmF5cyhkMS5ncm91cGVkQ29scywgZDIuZ3JvdXBlZENvbHMpKSB7IHJldHVybiBmYWxzZTsgfVxuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2hvdGd1blJlc2V0RXZlcnl0aGluZyhkZXRhaWxzOiBHcm91cGluZ0RldGFpbHMsIGFmdGVyQ29sdW1uc0NoYW5nZWQ6IGJvb2xlYW4pOiB2b2lkIHtcblxuICAgICAgICBjb25zdCBza2lwU3RhZ2UgPSBhZnRlckNvbHVtbnNDaGFuZ2VkID9cbiAgICAgICAgICAgIHRoaXMudXNpbmdUcmVlRGF0YSB8fCB0aGlzLmFyZUdyb3VwQ29sc0VxdWFsKGRldGFpbHMsIHRoaXMub2xkR3JvdXBpbmdEZXRhaWxzKVxuICAgICAgICAgICAgOiBmYWxzZTtcbiAgICAgICAgdGhpcy5vbGRHcm91cGluZ0RldGFpbHMgPSBkZXRhaWxzO1xuICAgICAgICBpZiAoc2tpcFN0YWdlKSB7IHJldHVybjsgfVxuXG4gICAgICAgIC8vIGJlY2F1c2Ugd2UgYXJlIG5vdCBjcmVhdGluZyB0aGUgcm9vdCBub2RlIGVhY2ggdGltZSwgd2UgaGF2ZSB0aGUgbG9naWNcbiAgICAgICAgLy8gaGVyZSB0byBjaGFuZ2UgbGVhZkdyb3VwIG9uY2UuXG4gICAgICAgIC8vIHdlIHNldCAubGVhZkdyb3VwIHRvIGZhbHNlIGZvciB0cmVlIGRhdGEsIGFzIC5sZWFmR3JvdXAgaXMgb25seSB1c2VkIHdoZW4gcGl2b3RpbmcsIGFuZCBwaXZvdGluZ1xuICAgICAgICAvLyBpc24ndCBhbGxvd2VkIHdpdGggdHJlZURhdGEsIHNvIHRoZSBncmlkIG5ldmVyIGFjdHVhbGx5IHVzZSAubGVhZkdyb3VwIHdoZW4gZG9pbmcgdHJlZURhdGEuXG4gICAgICAgIGRldGFpbHMucm9vdE5vZGUubGVhZkdyb3VwID0gdGhpcy51c2luZ1RyZWVEYXRhID8gZmFsc2UgOiBkZXRhaWxzLmdyb3VwZWRDb2xzLmxlbmd0aCA9PT0gMDtcblxuICAgICAgICAvLyB3ZSBhcmUgZG9pbmcgZXZlcnl0aGluZyBmcm9tIHNjcmF0Y2gsIHNvIHJlc2V0IGNoaWxkcmVuQWZ0ZXJHcm91cCBhbmQgY2hpbGRyZW5NYXBwZWQgZnJvbSB0aGUgcm9vdE5vZGVcbiAgICAgICAgZGV0YWlscy5yb290Tm9kZS5jaGlsZHJlbkFmdGVyR3JvdXAgPSBbXTtcbiAgICAgICAgZGV0YWlscy5yb290Tm9kZS5jaGlsZHJlbk1hcHBlZCA9IHt9O1xuXG4gICAgICAgIHRoaXMuaW5zZXJ0Tm9kZXMoZGV0YWlscy5yb290Tm9kZS5hbGxMZWFmQ2hpbGRyZW4sIGRldGFpbHMsIGZhbHNlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluc2VydE5vZGVzKG5ld1Jvd05vZGVzOiBSb3dOb2RlW10sIGRldGFpbHM6IEdyb3VwaW5nRGV0YWlscywgaXNNb3ZlOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIG5ld1Jvd05vZGVzLmZvckVhY2gocm93Tm9kZSA9PiB7XG4gICAgICAgICAgICB0aGlzLmluc2VydE9uZU5vZGUocm93Tm9kZSwgZGV0YWlscywgaXNNb3ZlKTtcbiAgICAgICAgICAgIGlmIChkZXRhaWxzLmNoYW5nZWRQYXRoLmlzQWN0aXZlKCkpIHtcbiAgICAgICAgICAgICAgICBkZXRhaWxzLmNoYW5nZWRQYXRoLmFkZFBhcmVudE5vZGUocm93Tm9kZS5wYXJlbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluc2VydE9uZU5vZGUoY2hpbGROb2RlOiBSb3dOb2RlLCBkZXRhaWxzOiBHcm91cGluZ0RldGFpbHMsIGlzTW92ZTogYm9vbGVhbik6IHZvaWQge1xuXG4gICAgICAgIGNvbnN0IHBhdGg6IEdyb3VwSW5mb1tdID0gdGhpcy5nZXRHcm91cEluZm8oY2hpbGROb2RlLCBkZXRhaWxzKTtcblxuICAgICAgICBjb25zdCBwYXJlbnRHcm91cCA9IHRoaXMuZmluZFBhcmVudEZvck5vZGUoY2hpbGROb2RlLCBwYXRoLCBkZXRhaWxzKTtcbiAgICAgICAgaWYgKCFwYXJlbnRHcm91cC5ncm91cCkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKGBhZy1HcmlkOiBkdXBsaWNhdGUgZ3JvdXAga2V5cyBmb3Igcm93IGRhdGEsIGtleXMgc2hvdWxkIGJlIHVuaXF1ZWAsXG4gICAgICAgICAgICAgICAgW3BhcmVudEdyb3VwLmRhdGEsIGNoaWxkTm9kZS5kYXRhXSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy51c2luZ1RyZWVEYXRhKSB7XG4gICAgICAgICAgICB0aGlzLnN3YXBHcm91cFdpdGhVc2VyTm9kZShwYXJlbnRHcm91cCwgY2hpbGROb2RlLCBpc01vdmUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2hpbGROb2RlLnBhcmVudCA9IHBhcmVudEdyb3VwO1xuICAgICAgICAgICAgY2hpbGROb2RlLmxldmVsID0gcGF0aC5sZW5ndGg7XG4gICAgICAgICAgICBwYXJlbnRHcm91cC5jaGlsZHJlbkFmdGVyR3JvdXAucHVzaChjaGlsZE5vZGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmaW5kUGFyZW50Rm9yTm9kZShjaGlsZE5vZGU6IFJvd05vZGUsIHBhdGg6IEdyb3VwSW5mb1tdLCBkZXRhaWxzOiBHcm91cGluZ0RldGFpbHMpOiBSb3dOb2RlIHtcbiAgICAgICAgbGV0IG5leHROb2RlOiBSb3dOb2RlID0gZGV0YWlscy5yb290Tm9kZTtcblxuICAgICAgICBwYXRoLmZvckVhY2goKGdyb3VwSW5mbywgbGV2ZWwpID0+IHtcbiAgICAgICAgICAgIG5leHROb2RlID0gdGhpcy5nZXRPckNyZWF0ZU5leHROb2RlKG5leHROb2RlLCBncm91cEluZm8sIGxldmVsLCBkZXRhaWxzKTtcbiAgICAgICAgICAgIC8vIG5vZGUgZ2V0cyBhZGRlZCB0byBhbGwgZ3JvdXAgbm9kZXMuXG4gICAgICAgICAgICAvLyBub3RlOiB3ZSBkbyBub3QgYWRkIHRvIHJvb3ROb2RlIGhlcmUsIGFzIHRoZSByb290Tm9kZSBpcyB0aGUgbWFzdGVyIGxpc3Qgb2Ygcm93Tm9kZXNcbiAgICAgICAgICAgIG5leHROb2RlLmFsbExlYWZDaGlsZHJlbi5wdXNoKGNoaWxkTm9kZSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBuZXh0Tm9kZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN3YXBHcm91cFdpdGhVc2VyTm9kZShmaWxsZXJHcm91cDogUm93Tm9kZSwgdXNlckdyb3VwOiBSb3dOb2RlLCBpc01vdmU6IGJvb2xlYW4pIHtcbiAgICAgICAgdXNlckdyb3VwLnBhcmVudCA9IGZpbGxlckdyb3VwLnBhcmVudDtcbiAgICAgICAgdXNlckdyb3VwLmtleSA9IGZpbGxlckdyb3VwLmtleTtcbiAgICAgICAgdXNlckdyb3VwLmZpZWxkID0gZmlsbGVyR3JvdXAuZmllbGQ7XG4gICAgICAgIHVzZXJHcm91cC5ncm91cERhdGEgPSBmaWxsZXJHcm91cC5ncm91cERhdGE7XG4gICAgICAgIHVzZXJHcm91cC5sZXZlbCA9IGZpbGxlckdyb3VwLmxldmVsO1xuICAgICAgICAvLyBBRy0zNDQxIC0gcHJlc2VydmUgdGhlIGV4aXN0aW5nIGV4cGFuZGVkIHN0YXR1cyBvZiB0aGUgbm9kZSBpZiB3ZSdyZSBtb3ZpbmcgaXQsIHNvIHRoYXRcbiAgICAgICAgLy8geW91IGNhbiBkcmFnIGEgc3ViIHRyZWUgZnJvbSBvbmUgcGFyZW50IHRvIGFub3RoZXIgd2l0aG91dCBjaGFuZ2luZyBpdHMgZXhwYW5zaW9uXG4gICAgICAgIGlmICghaXNNb3ZlKSB7XG4gICAgICAgICAgICB1c2VyR3JvdXAuZXhwYW5kZWQgPSBmaWxsZXJHcm91cC5leHBhbmRlZDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHdlIHNldCAubGVhZkdyb3VwIHRvIGZhbHNlIGZvciB0cmVlIGRhdGEsIGFzIC5sZWFmR3JvdXAgaXMgb25seSB1c2VkIHdoZW4gcGl2b3RpbmcsIGFuZCBwaXZvdGluZ1xuICAgICAgICAvLyBpc24ndCBhbGxvd2VkIHdpdGggdHJlZURhdGEsIHNvIHRoZSBncmlkIG5ldmVyIGFjdHVhbGx5IHVzZSAubGVhZkdyb3VwIHdoZW4gZG9pbmcgdHJlZURhdGEuXG4gICAgICAgIHVzZXJHcm91cC5sZWFmR3JvdXAgPSBmaWxsZXJHcm91cC5sZWFmR3JvdXA7XG5cbiAgICAgICAgLy8gYWx3YXlzIG51bGwgZm9yIHVzZXJHcm91cHMsIGFzIHJvdyBncm91cGluZyBpcyBub3QgYWxsb3dlZCB3aGVuIGRvaW5nIHRyZWUgZGF0YVxuICAgICAgICB1c2VyR3JvdXAucm93R3JvdXBJbmRleCA9IGZpbGxlckdyb3VwLnJvd0dyb3VwSW5kZXg7XG5cbiAgICAgICAgdXNlckdyb3VwLmFsbExlYWZDaGlsZHJlbiA9IGZpbGxlckdyb3VwLmFsbExlYWZDaGlsZHJlbjtcbiAgICAgICAgdXNlckdyb3VwLmNoaWxkcmVuQWZ0ZXJHcm91cCA9IGZpbGxlckdyb3VwLmNoaWxkcmVuQWZ0ZXJHcm91cDtcbiAgICAgICAgdXNlckdyb3VwLmNoaWxkcmVuTWFwcGVkID0gZmlsbGVyR3JvdXAuY2hpbGRyZW5NYXBwZWQ7XG5cbiAgICAgICAgdGhpcy5yZW1vdmVGcm9tUGFyZW50KGZpbGxlckdyb3VwKTtcbiAgICAgICAgdXNlckdyb3VwLmNoaWxkcmVuQWZ0ZXJHcm91cC5mb3JFYWNoKChyb3dOb2RlOiBSb3dOb2RlKSA9PiByb3dOb2RlLnBhcmVudCA9IHVzZXJHcm91cCk7XG4gICAgICAgIHRoaXMuYWRkVG9QYXJlbnQodXNlckdyb3VwLCBmaWxsZXJHcm91cC5wYXJlbnQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0T3JDcmVhdGVOZXh0Tm9kZShwYXJlbnRHcm91cDogUm93Tm9kZSwgZ3JvdXBJbmZvOiBHcm91cEluZm8sIGxldmVsOiBudW1iZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbHM6IEdyb3VwaW5nRGV0YWlscyk6IFJvd05vZGUge1xuXG4gICAgICAgIGNvbnN0IG1hcEtleSA9IHRoaXMuZ2V0Q2hpbGRyZW5NYXBwZWRLZXkoZ3JvdXBJbmZvLmtleSwgZ3JvdXBJbmZvLnJvd0dyb3VwQ29sdW1uKTtcbiAgICAgICAgbGV0IG5leHROb2RlID0gcGFyZW50R3JvdXAuY2hpbGRyZW5NYXBwZWQgPyBwYXJlbnRHcm91cC5jaGlsZHJlbk1hcHBlZFttYXBLZXldIGFzIFJvd05vZGUgOiB1bmRlZmluZWQ7XG4gICAgICAgIGlmICghbmV4dE5vZGUpIHtcbiAgICAgICAgICAgIG5leHROb2RlID0gdGhpcy5jcmVhdGVHcm91cChncm91cEluZm8sIHBhcmVudEdyb3VwLCBsZXZlbCwgZGV0YWlscyk7XG4gICAgICAgICAgICAvLyBhdHRhY2ggdGhlIG5ldyBncm91cCB0byB0aGUgcGFyZW50XG4gICAgICAgICAgICB0aGlzLmFkZFRvUGFyZW50KG5leHROb2RlLCBwYXJlbnRHcm91cCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbmV4dE5vZGU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVHcm91cChncm91cEluZm86IEdyb3VwSW5mbywgcGFyZW50OiBSb3dOb2RlLCBsZXZlbDogbnVtYmVyLCBkZXRhaWxzOiBHcm91cGluZ0RldGFpbHMpOiBSb3dOb2RlIHtcbiAgICAgICAgY29uc3QgZ3JvdXBOb2RlID0gbmV3IFJvd05vZGUoKTtcbiAgICAgICAgdGhpcy5jb250ZXh0LndpcmVCZWFuKGdyb3VwTm9kZSk7XG5cbiAgICAgICAgZ3JvdXBOb2RlLmdyb3VwID0gdHJ1ZTtcbiAgICAgICAgZ3JvdXBOb2RlLmZpZWxkID0gZ3JvdXBJbmZvLmZpZWxkO1xuICAgICAgICBncm91cE5vZGUucm93R3JvdXBDb2x1bW4gPSBncm91cEluZm8ucm93R3JvdXBDb2x1bW47XG4gICAgICAgIGdyb3VwTm9kZS5ncm91cERhdGEgPSB7fTtcblxuICAgICAgICBjb25zdCBncm91cERpc3BsYXlDb2xzOiBDb2x1bW5bXSA9IHRoaXMuY29sdW1uQ29udHJvbGxlci5nZXRHcm91cERpc3BsYXlDb2x1bW5zKCk7XG5cbiAgICAgICAgZ3JvdXBEaXNwbGF5Q29scy5mb3JFYWNoKGNvbCA9PiB7XG4gICAgICAgICAgICAvLyBuZXdHcm91cC5yb3dHcm91cENvbHVtbj1udWxsIHdoZW4gd29ya2luZyBvZmYgR3JvdXBJbmZvLCBhbmQgd2UgYWx3YXlzIGRpc3BsYXkgdGhlIGdyb3VwIGluIHRoZSBncm91cCBjb2x1bW5cbiAgICAgICAgICAgIC8vIGlmIHJvd0dyb3VwQ29sdW1uIGlzIHByZXNlbnQsIHRoZW4gaXQncyBncmlkIHJvdyBncm91cGluZyBhbmQgd2Ugb25seSBpbmNsdWRlIGlmIGNvbmZpZ3VyYXRpb24gc2F5cyBzb1xuICAgICAgICAgICAgY29uc3QgZGlzcGxheUdyb3VwRm9yQ29sID0gdGhpcy51c2luZ1RyZWVEYXRhIHx8IChncm91cE5vZGUucm93R3JvdXBDb2x1bW4gPyBjb2wuaXNSb3dHcm91cERpc3BsYXllZChncm91cE5vZGUucm93R3JvdXBDb2x1bW4uZ2V0SWQoKSkgOiBmYWxzZSk7XG4gICAgICAgICAgICBpZiAoZGlzcGxheUdyb3VwRm9yQ29sKSB7XG4gICAgICAgICAgICAgICAgZ3JvdXBOb2RlLmdyb3VwRGF0YVtjb2wuZ2V0Q29sSWQoKV0gPSBncm91cEluZm8ua2V5O1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICAvLyB3ZSB1c2UgbmVnYXRpdmUgbnVtYmVyIGZvciB0aGUgaWRzIG9mIHRoZSBncm91cHMsIHRoaXMgbWFrZXMgc3VyZSB3ZSBkb24ndCBjbGFzaCB3aXRoIHRoZVxuICAgICAgICAvLyBpZCdzIG9mIHRoZSBsZWFmIG5vZGVzLlxuICAgICAgICBncm91cE5vZGUuaWQgPSAodGhpcy5ncm91cElkU2VxdWVuY2UubmV4dCgpICogLTEpLnRvU3RyaW5nKCk7XG4gICAgICAgIGdyb3VwTm9kZS5rZXkgPSBncm91cEluZm8ua2V5O1xuXG4gICAgICAgIGdyb3VwTm9kZS5sZXZlbCA9IGxldmVsO1xuICAgICAgICBncm91cE5vZGUubGVhZkdyb3VwID0gdGhpcy51c2luZ1RyZWVEYXRhID8gZmFsc2UgOiBsZXZlbCA9PT0gKGRldGFpbHMuZ3JvdXBlZENvbENvdW50IC0gMSk7XG5cbiAgICAgICAgLy8gaWYgZG9pbmcgcGl2b3RpbmcsIHRoZW4gdGhlIGxlYWYgZ3JvdXAgaXMgbmV2ZXIgZXhwYW5kZWQsXG4gICAgICAgIC8vIGFzIHdlIGRvIG5vdCBzaG93IGxlYWYgcm93c1xuICAgICAgICBpZiAoZGV0YWlscy5waXZvdE1vZGUgJiYgZ3JvdXBOb2RlLmxlYWZHcm91cCkge1xuICAgICAgICAgICAgZ3JvdXBOb2RlLmV4cGFuZGVkID0gZmFsc2U7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBncm91cE5vZGUuZXhwYW5kZWQgPSB0aGlzLmlzRXhwYW5kZWQoZGV0YWlscy5leHBhbmRCeURlZmF1bHQsIGxldmVsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGdyb3VwTm9kZS5hbGxMZWFmQ2hpbGRyZW4gPSBbXTtcbiAgICAgICAgLy8gd2h5IGlzIHRoaXMgZG9uZSBoZXJlPyB3ZSBhcmUgbm90IHVwZGF0aW5nIHRoZSBjaGlsZHJlbiBjb3VsZCBhcyB3ZSBnbyxcbiAgICAgICAgLy8gaSBzdXNwZWN0IHRoaXMgaXMgdXBkYXRlZCBpbiB0aGUgZmlsdGVyIHN0YWdlXG5cbiAgICAgICAgZ3JvdXBOb2RlLnNldEFsbENoaWxkcmVuQ291bnQoMCk7XG5cbiAgICAgICAgZ3JvdXBOb2RlLnJvd0dyb3VwSW5kZXggPSB0aGlzLnVzaW5nVHJlZURhdGEgPyBudWxsIDogbGV2ZWw7XG5cbiAgICAgICAgZ3JvdXBOb2RlLmNoaWxkcmVuQWZ0ZXJHcm91cCA9IFtdO1xuICAgICAgICBncm91cE5vZGUuY2hpbGRyZW5NYXBwZWQgPSB7fTtcblxuICAgICAgICBncm91cE5vZGUucGFyZW50ID0gZGV0YWlscy5pbmNsdWRlUGFyZW50cyA/IHBhcmVudCA6IG51bGw7XG5cbiAgICAgICAgcmV0dXJuIGdyb3VwTm9kZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldENoaWxkcmVuTWFwcGVkS2V5KGtleTogc3RyaW5nLCByb3dHcm91cENvbHVtbjogQ29sdW1uIHwgbnVsbCk6IHN0cmluZyB7XG4gICAgICAgIGlmIChyb3dHcm91cENvbHVtbikge1xuICAgICAgICAgICAgLy8gZ3JvdXBpbmcgYnkgY29sdW1uc1xuICAgICAgICAgICAgcmV0dXJuIHJvd0dyb3VwQ29sdW1uLmdldElkKCkgKyAnLScgKyBrZXk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyB0cmVlIGRhdGEgLSB3ZSBkb24ndCBoYXZlIHJvd0dyb3VwQ29sdW1uc1xuICAgICAgICAgICAgcmV0dXJuIGtleTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgaXNFeHBhbmRlZChleHBhbmRCeURlZmF1bHQ6IG51bWJlciwgbGV2ZWw6IG51bWJlcikge1xuICAgICAgICBpZiAoZXhwYW5kQnlEZWZhdWx0ID09PSAtMSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbGV2ZWwgPCBleHBhbmRCeURlZmF1bHQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEdyb3VwSW5mbyhyb3dOb2RlOiBSb3dOb2RlLCBkZXRhaWxzOiBHcm91cGluZ0RldGFpbHMpOiBHcm91cEluZm9bXSB7XG4gICAgICAgIGlmICh0aGlzLnVzaW5nVHJlZURhdGEpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldEdyb3VwSW5mb0Zyb21DYWxsYmFjayhyb3dOb2RlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldEdyb3VwSW5mb0Zyb21Hcm91cENvbHVtbnMocm93Tm9kZSwgZGV0YWlscyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEdyb3VwSW5mb0Zyb21DYWxsYmFjayhyb3dOb2RlOiBSb3dOb2RlKTogR3JvdXBJbmZvW10ge1xuICAgICAgICBjb25zdCBrZXlzOiBzdHJpbmdbXSB8IG51bGwgPSB0aGlzLmdldERhdGFQYXRoID8gdGhpcy5nZXREYXRhUGF0aChyb3dOb2RlLmRhdGEpIDogbnVsbDtcblxuICAgICAgICBpZiAoa2V5cyA9PT0gbnVsbCB8fCBrZXlzID09PSB1bmRlZmluZWQgfHwga2V5cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIF8uZG9PbmNlKFxuICAgICAgICAgICAgICAgICgpID0+IGNvbnNvbGUud2FybihgZ2V0RGF0YVBhdGgoKSBzaG91bGQgbm90IHJldHVybiBhbiBlbXB0eSBwYXRoIGZvciBkYXRhYCwgcm93Tm9kZS5kYXRhKSxcbiAgICAgICAgICAgICAgICAnZ3JvdXBTdGFnZS5nZXRHcm91cEluZm9Gcm9tQ2FsbGJhY2snXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGdyb3VwSW5mb01hcHBlciA9IChrZXk6IHN0cmluZyB8IG51bGwpID0+ICh7a2V5LCBmaWVsZDogbnVsbCwgcm93R3JvdXBDb2x1bW46IG51bGx9KSBhcyBHcm91cEluZm87XG4gICAgICAgIHJldHVybiBrZXlzID8ga2V5cy5tYXAoZ3JvdXBJbmZvTWFwcGVyKSA6IFtdO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0R3JvdXBJbmZvRnJvbUdyb3VwQ29sdW1ucyhyb3dOb2RlOiBSb3dOb2RlLCBkZXRhaWxzOiBHcm91cGluZ0RldGFpbHMpIHtcbiAgICAgICAgY29uc3QgcmVzOiBHcm91cEluZm9bXSA9IFtdO1xuICAgICAgICBkZXRhaWxzLmdyb3VwZWRDb2xzLmZvckVhY2goZ3JvdXBDb2wgPT4ge1xuICAgICAgICAgICAgbGV0IGtleTogc3RyaW5nID0gdGhpcy52YWx1ZVNlcnZpY2UuZ2V0S2V5Rm9yTm9kZShncm91cENvbCwgcm93Tm9kZSk7XG4gICAgICAgICAgICBsZXQga2V5RXhpc3RzID0ga2V5ICE9PSBudWxsICYmIGtleSAhPT0gdW5kZWZpbmVkO1xuXG4gICAgICAgICAgICAvLyB1bmJhbGFuY2VkIHRyZWUgYW5kIHBpdm90IG1vZGUgZG9uJ3Qgd29yayB0b2dldGhlciAtIG5vdCBiZWNhdXNlIG9mIHRoZSBncmlkLCBpdCBkb2Vzbid0IG1ha2VcbiAgICAgICAgICAgIC8vIG1hdGhlbWF0aWNhbCBzZW5zZSBhcyB5b3UgYXJlIGJ1aWxkaW5nIHVwIGEgY3ViZS4gc28gaWYgcGl2b3QgbW9kZSwgd2UgcHV0IGluIGEgYmxhbmsga2V5IHdoZXJlIG1pc3NpbmcuXG4gICAgICAgICAgICAvLyB0aGlzIGtlZXBzIHRoZSB0cmVlIGJhbGFuY2VkIGFuZCBoZW5jZSBjYW4gYmUgcmVwcmVzZW50ZWQgYXMgYSBncm91cC5cbiAgICAgICAgICAgIGlmIChkZXRhaWxzLnBpdm90TW9kZSAmJiAha2V5RXhpc3RzKSB7XG4gICAgICAgICAgICAgICAga2V5ID0gJyAnO1xuICAgICAgICAgICAgICAgIGtleUV4aXN0cyA9IHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChrZXlFeGlzdHMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpdGVtID0ge1xuICAgICAgICAgICAgICAgICAgICBrZXk6IGtleSxcbiAgICAgICAgICAgICAgICAgICAgZmllbGQ6IGdyb3VwQ29sLmdldENvbERlZigpLmZpZWxkLFxuICAgICAgICAgICAgICAgICAgICByb3dHcm91cENvbHVtbjogZ3JvdXBDb2xcbiAgICAgICAgICAgICAgICB9IGFzIEdyb3VwSW5mbztcbiAgICAgICAgICAgICAgICByZXMucHVzaChpdGVtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxufVxuXG5pbnRlcmZhY2UgUmVtb3ZlRGV0YWlscyB7XG4gICAgcmVtb3ZlRnJvbUNoaWxkcmVuQWZ0ZXJHcm91cDoge1tpZDpzdHJpbmddOiBib29sZWFufTtcbiAgICByZW1vdmVGcm9tQWxsTGVhZkNoaWxkcmVuOiB7W2lkOnN0cmluZ106IGJvb2xlYW59O1xufVxuXG4vLyBkb2luZyBfLnJlbW92ZUZyb21BcnJheSgpIG11bHRpcGxlIHRpbWVzIG9uIGEgbGFyZ2UgbGlzdCBjYW4gYmUgYSBib3R0bGVuZWNrLlxuLy8gd2hlbiBkb2luZyBsYXJnZSBkZWxldGVzIChlZyByZW1vdmluZyAxLDAwMCByb3dzKSB0aGVuIHdlIHdvdWxkIGJlIGNhbGxpbmcgXy5yZW1vdmVGcm9tQXJyYXkoKVxuLy8gYSB0aG91c2FuZHMgb2YgdGltZXMsIGluIHBhcnRpY3VsYXIgUm9vdE5vZGUuYWxsR3JvdXBDaGlsZHJlbiBjb3VsZCBiZSBhIGxhcmdlIGxpc3QsIGFuZFxuLy8gMSwwMDAgcmVtb3ZlcyBpcyB0aW1lIGNvbnN1bWluZyBhcyBlYWNoIG9uZSByZXF1aXJlcyB0cmF2ZXJzaW5nIHRoZSBmdWxsIGxpc3QuXG4vLyB0byBnZXQgYXJvdW5kIHRoaXMsIHdlIGRvIGFsbCB0aGUgcmVtb3ZlcyBpbiBhIGJhdGNoLiB0aGlzIGNsYXNzIG1hbmFnZXMgdGhlIGJhdGNoLlxuLy9cbi8vIFRoaXMgcHJvYmxlbSB3YXMgYnJvdWdodCB0byBsaWdodCBieSBhIGNsaWVudCAoQUctMjg3OSksIHdpdGggZGF0YXNldCBvZiAyMCwwMDBcbi8vIGluIDEwLDAwMCBncm91cHMgKDIgaXRlbXMgcGVyIGdyb3VwKSwgdGhlbiBkZWxldGluZyBhbGwgcm93cyB3aXRoIHRyYW5zYWN0aW9uLFxuLy8gaXQgdG9vayBhYm91dCAyMCBzZWNvbmRzIHRvIGRlbGV0ZS4gd2l0aCB0aGUgQmF0aFJlbW92ZWQsIHRoZSByZWR1Y2VkIHRvIGxlc3MgdGhhbiAxIHNlY29uZC5cbmNsYXNzIEJhdGNoUmVtb3ZlciB7XG5cbiAgICBwcml2YXRlIGFsbFNldHM6IHtbcGFyZW50SWQ6IHN0cmluZ106IFJlbW92ZURldGFpbHN9ID0ge307XG4gICAgcHJpdmF0ZSBhbGxQYXJlbnRzOiBSb3dOb2RlW10gPSBbXTtcblxuICAgIHB1YmxpYyByZW1vdmVGcm9tQ2hpbGRyZW5BZnRlckdyb3VwKHBhcmVudDogUm93Tm9kZSwgY2hpbGQ6IFJvd05vZGUpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgc2V0ID0gdGhpcy5nZXRTZXQocGFyZW50KTtcbiAgICAgICAgc2V0LnJlbW92ZUZyb21DaGlsZHJlbkFmdGVyR3JvdXBbY2hpbGQuaWRdID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVtb3ZlRnJvbUFsbExlYWZDaGlsZHJlbihwYXJlbnQ6IFJvd05vZGUsIGNoaWxkOiBSb3dOb2RlKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHNldCA9IHRoaXMuZ2V0U2V0KHBhcmVudCk7XG4gICAgICAgIHNldC5yZW1vdmVGcm9tQWxsTGVhZkNoaWxkcmVuW2NoaWxkLmlkXSA9IHRydWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRTZXQocGFyZW50OiBSb3dOb2RlKTogUmVtb3ZlRGV0YWlscyB7XG4gICAgICAgIGlmICghdGhpcy5hbGxTZXRzW3BhcmVudCEuaWRdKSB7XG4gICAgICAgICAgICB0aGlzLmFsbFNldHNbcGFyZW50IS5pZF0gPSB7XG4gICAgICAgICAgICAgICAgcmVtb3ZlRnJvbUFsbExlYWZDaGlsZHJlbjoge30sXG4gICAgICAgICAgICAgICAgcmVtb3ZlRnJvbUNoaWxkcmVuQWZ0ZXJHcm91cDoge31cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB0aGlzLmFsbFBhcmVudHMucHVzaChwYXJlbnQhKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5hbGxTZXRzW3BhcmVudCEuaWRdO1xuICAgIH1cblxuICAgIHB1YmxpYyBmbHVzaCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5hbGxQYXJlbnRzLmZvckVhY2gocGFyZW50ID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5vZGVEZXRhaWxzID0gdGhpcy5hbGxTZXRzW3BhcmVudC5pZF07XG4gICAgICAgICAgICBwYXJlbnQuY2hpbGRyZW5BZnRlckdyb3VwID0gcGFyZW50LmNoaWxkcmVuQWZ0ZXJHcm91cC5maWx0ZXIoY2hpbGQgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXMgPSAhbm9kZURldGFpbHMucmVtb3ZlRnJvbUNoaWxkcmVuQWZ0ZXJHcm91cFtjaGlsZC5pZF07XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHBhcmVudC5hbGxMZWFmQ2hpbGRyZW4gPSBwYXJlbnQuYWxsTGVhZkNoaWxkcmVuLmZpbHRlcihjaGlsZCA9PiAhbm9kZURldGFpbHMucmVtb3ZlRnJvbUFsbExlYWZDaGlsZHJlbltjaGlsZC5pZF0pO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5hbGxTZXRzID0ge307XG4gICAgICAgIHRoaXMuYWxsUGFyZW50cy5sZW5ndGggPSAwO1xuICAgIH1cbn0iXX0=
|