@eo-sdk/client 11.5.0-rc.3 → 11.7.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/LICENSE +21 -21
- package/README.md +35 -35
- package/app/eo-client/about-state/about-state.component.d.ts.map +1 -1
- package/app/eo-client/dashboard/dashboard.component.d.ts.map +1 -1
- package/app/eo-client/eo-client.module.d.ts +4 -5
- package/app/eo-client/eo-client.module.d.ts.map +1 -1
- package/app/eo-client/index.d.ts +3 -0
- package/app/eo-client/index.d.ts.map +1 -1
- package/app/eo-client/process-state/filter-label.d.ts +10 -0
- package/app/eo-client/process-state/filter-label.d.ts.map +1 -0
- package/app/eo-framework/grid/grid.component.d.ts +2 -1
- package/app/eo-framework/grid/grid.component.d.ts.map +1 -1
- package/app/eo-framework/object-form/object-form/form-element-table/form-element-table.component.d.ts +1 -0
- package/app/eo-framework/object-form/object-form/form-element-table/form-element-table.component.d.ts.map +1 -1
- package/app/eo-framework/ui/ui.module.d.ts +10 -11
- package/app/eo-framework/ui/ui.module.d.ts.map +1 -1
- package/app/eo-framework-core/agent/agent.service.d.ts.map +1 -1
- package/app/eo-framework-core/eo-framework-core.module.d.ts +1 -2
- package/app/eo-framework-core/eo-framework-core.module.d.ts.map +1 -1
- package/app/eo-framework-core/error-handler/error-handler.service.d.ts.map +1 -1
- package/assets/_default/README.md +2 -2
- package/assets/_default/config/extend.json +6 -6
- package/assets/_default/config/main.json +44 -44
- package/assets/_default/fonts/roboto_bold_macroman/Roboto-Bold-webfont.svg +765 -765
- package/assets/_default/fonts/roboto_light_macroman/Roboto-Light-webfont.svg +818 -818
- package/assets/_default/fonts/roboto_medium_macroman/Roboto-Medium-webfont.svg +765 -765
- package/assets/_default/fonts/roboto_regular_macroman/Roboto-Regular-webfont.svg +795 -795
- package/assets/_default/i18n/de.json +1130 -1130
- package/assets/_default/i18n/de_after.json +1137 -0
- package/assets/_default/i18n/en.json +1130 -1130
- package/assets/_default/i18n/po/de.po +310 -310
- package/assets/_default/i18n/po/en.po +310 -310
- package/assets/_default/svg/ic_delete_sweep.svg +3 -3
- package/assets/_default/svg/ic_emoticon-cool.svg +1 -1
- package/assets/_default/svg/ic_kitt-loader.svg +1 -1
- package/assets/_default/svg/ic_link.svg +6 -6
- package/assets/_default/svg/ic_not_listed_location.svg +4 -4
- package/assets/_default/theme/theme.css +13 -13
- package/assets/dashboard.json +47 -47
- package/assets/i18n/temp.json +584 -584
- package/assets/i18n/temp.pot +1753 -1753
- package/esm2022/app/eo-client/about-state/about-state.component.mjs +7 -7
- package/esm2022/app/eo-client/dashboard/dashboard.component.mjs +5 -5
- package/esm2022/app/eo-client/dashboard/widgets/charts-widget/charts-setup/charts-setup.component.mjs +5 -5
- package/esm2022/app/eo-client/dashboard/widgets/charts-widget/charts-widget.component.mjs +5 -5
- package/esm2022/app/eo-client/dashboard/widgets/charts-widget/icharts.mjs +1 -1
- package/esm2022/app/eo-client/dashboard/widgets/count-objects-widget/count-objects-setup/count-objects-setup.component.mjs +5 -5
- package/esm2022/app/eo-client/dashboard/widgets/count-objects-widget/count-objects-widget.component.mjs +5 -5
- package/esm2022/app/eo-client/dashboard/widgets/count-objects-widget/count-objects.model.mjs +1 -1
- package/esm2022/app/eo-client/dashboard/widgets/hitlist-widget/IHitlist.mjs +1 -1
- package/esm2022/app/eo-client/dashboard/widgets/hitlist-widget/hitlist-setup/hitlist-setup.component.mjs +5 -5
- package/esm2022/app/eo-client/dashboard/widgets/hitlist-widget/hitlist-widget.component.mjs +5 -5
- package/esm2022/app/eo-client/dashboard/widgets/iframe-widget/iframe-setup/iframe-setup.component.mjs +5 -5
- package/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 +5 -5
- package/esm2022/app/eo-client/dashboard/widgets/info-inbox-widget/info-inbox-widget.component.mjs +5 -5
- package/esm2022/app/eo-client/dashboard/widgets/info-inbox-widget/info-inbox.model.mjs +1 -1
- package/esm2022/app/eo-client/dashboard/widgets/info-intray-widget/info-intray-setup/info-intray-setup.component.mjs +5 -5
- package/esm2022/app/eo-client/dashboard/widgets/info-intray-widget/info-intray-widget.component.mjs +5 -5
- package/esm2022/app/eo-client/dashboard/widgets/info-intray-widget/info-intray.model.mjs +1 -1
- package/esm2022/app/eo-client/dashboard/widgets/last-edited-widget/last-edited-and-created-setup/last-edited-and-created-setup.component.mjs +5 -5
- package/esm2022/app/eo-client/dashboard/widgets/last-edited-widget/last-edited-and-created.component.mjs +5 -5
- package/esm2022/app/eo-client/dashboard/widgets/last-edited-widget/last-edited-and-created.mjs +1 -1
- package/esm2022/app/eo-client/dashboard/widgets/picture-widget/picture-widget-setup/picture-widget-setup.component.mjs +5 -5
- package/esm2022/app/eo-client/dashboard/widgets/picture-widget/picture-widget.component.mjs +5 -5
- package/esm2022/app/eo-client/dashboard/widgets/search-widget/search-widget.component.mjs +5 -5
- package/esm2022/app/eo-client/dashboard/widgets/todowidget/todo-setup/todo-setup.component.mjs +5 -5
- package/esm2022/app/eo-client/dashboard/widgets/todowidget/todo-widget.component.mjs +5 -5
- package/esm2022/app/eo-client/eo-client-routing.module.mjs +5 -5
- package/esm2022/app/eo-client/eo-client.module.mjs +26 -28
- package/esm2022/app/eo-client/favorite-state/favorite-state.component.mjs +16 -16
- package/esm2022/app/eo-client/inbox-state/inbox-state/inbox-state.component.mjs +20 -20
- package/esm2022/app/eo-client/inbox-state/inbox-state/inbox.types.enum.mjs +1 -1
- package/esm2022/app/eo-client/inbox-state/inbox-state-routing.module.mjs +5 -5
- package/esm2022/app/eo-client/inbox-state/inbox-state.module.mjs +5 -5
- package/esm2022/app/eo-client/index.mjs +4 -1
- package/esm2022/app/eo-client/login/login.component.mjs +5 -5
- package/esm2022/app/eo-client/notifications-state/notifications-state.component.mjs +18 -18
- package/esm2022/app/eo-client/notifications-state/notifications-state.interface.mjs +1 -1
- package/esm2022/app/eo-client/object-state/object-state/object-state.component.mjs +5 -5
- package/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.interface.mjs +1 -1
- package/esm2022/app/eo-client/object-state/object-state-service/object-state.service.mjs +4 -4
- package/esm2022/app/eo-client/object-state/object-state.module.mjs +5 -5
- package/esm2022/app/eo-client/prepare-state/prepare-state/prepare-state.component.mjs +16 -16
- package/esm2022/app/eo-client/prepare-state/prepare-state-routing.module.mjs +5 -5
- package/esm2022/app/eo-client/prepare-state/prepare-state.module.mjs +5 -5
- package/esm2022/app/eo-client/process-state/filter-label.mjs +11 -0
- package/esm2022/app/eo-client/process-state/process-state.component.mjs +24 -24
- package/esm2022/app/eo-client/recyclebin-state/recyclebin-state.component.mjs +18 -18
- package/esm2022/app/eo-client/result-state/result-state.component.mjs +5 -5
- package/esm2022/app/eo-client/settings/agent-lock-settings.enum.mjs +1 -1
- package/esm2022/app/eo-client/settings/settings.component.mjs +5 -5
- package/esm2022/app/eo-client/stored-queries-state/stored-queries-state.component.mjs +16 -16
- package/esm2022/app/eo-client/version-state/version-state.component.mjs +18 -18
- package/esm2022/app/eo-framework/accordion/accordion.module.mjs +5 -5
- package/esm2022/app/eo-framework/accordion/index.mjs +1 -1
- package/esm2022/app/eo-framework/accordion/simple-accordion/simple-accordion.component.mjs +5 -5
- package/esm2022/app/eo-framework/actions/action-menu/action-component-anchor/action-component-anchor.directive.mjs +4 -4
- package/esm2022/app/eo-framework/actions/action-menu/action-menu.component.mjs +5 -5
- package/esm2022/app/eo-framework/actions/action-service/action.service.mjs +4 -4
- package/esm2022/app/eo-framework/actions/action-target.mjs +1 -1
- package/esm2022/app/eo-framework/actions/action.module.mjs +5 -5
- package/esm2022/app/eo-framework/actions/actions/add-resubmission-action/add-resubmission/add-resubmission.component.mjs +5 -5
- package/esm2022/app/eo-framework/actions/actions/add-resubmission-action/add-resubmission-action.mjs +4 -4
- package/esm2022/app/eo-framework/actions/actions/add-subscription-action/add-subscription/add-subscription.component.mjs +5 -5
- package/esm2022/app/eo-framework/actions/actions/add-subscription-action/add-subscription-action.mjs +4 -4
- package/esm2022/app/eo-framework/actions/actions/cancel-signing-action/cancel-signing/cancel-signing.component.mjs +5 -5
- package/esm2022/app/eo-framework/actions/actions/cancel-signing-action/cancel-signing-action.mjs +4 -4
- package/esm2022/app/eo-framework/actions/actions/clipboard/clipboard-action.mjs +4 -4
- package/esm2022/app/eo-framework/actions/actions/clipboard/clipboard-object-action/clipboard-object-action.component.mjs +5 -5
- package/esm2022/app/eo-framework/actions/actions/copy-action/copy-action.mjs +4 -4
- package/esm2022/app/eo-framework/actions/actions/custom-actions/custom-actions.component.mjs +4 -4
- package/esm2022/app/eo-framework/actions/actions/cut-action/cut-action.mjs +4 -4
- package/esm2022/app/eo-framework/actions/actions/delete-action/delete/delete.component.mjs +5 -5
- package/esm2022/app/eo-framework/actions/actions/delete-action/delete-action.mjs +4 -4
- package/esm2022/app/eo-framework/actions/actions/delete-action/delete-prepared-action.mjs +4 -4
- package/esm2022/app/eo-framework/actions/actions/delete-content-action/delete-content/delete-content.component.mjs +5 -5
- package/esm2022/app/eo-framework/actions/actions/delete-content-action/delete-content-action.mjs +4 -4
- package/esm2022/app/eo-framework/actions/actions/download-action/download-action.mjs +4 -4
- package/esm2022/app/eo-framework/actions/actions/download-action/download-object-action/download-object-action.component.mjs +5 -5
- package/esm2022/app/eo-framework/actions/actions/email/email/email.component.mjs +5 -5
- package/esm2022/app/eo-framework/actions/actions/email/email-action.mjs +4 -4
- package/esm2022/app/eo-framework/actions/actions/favorite-action/favorite-action.mjs +4 -4
- package/esm2022/app/eo-framework/actions/actions/finalize/definalize-action.mjs +4 -4
- package/esm2022/app/eo-framework/actions/actions/finalize/finalize-action.mjs +5 -5
- package/esm2022/app/eo-framework/actions/actions/finalize/finalize-object-action/finalize-object-action.component.mjs +5 -5
- package/esm2022/app/eo-framework/actions/actions/open-context-action/open-context-action.mjs +4 -4
- package/esm2022/app/eo-framework/actions/actions/open-document-action/open-document-action.component.mjs +5 -5
- package/esm2022/app/eo-framework/actions/actions/open-document-action/open-document-action.mjs +4 -4
- package/esm2022/app/eo-framework/actions/actions/open-versions-action/open-versions-action.mjs +4 -4
- package/esm2022/app/eo-framework/actions/actions/remove-subscription-action/remove-subscription-action.mjs +4 -4
- package/esm2022/app/eo-framework/actions/actions/restore-version-action/restore-version-action.mjs +4 -4
- package/esm2022/app/eo-framework/actions/actions/share-object-action/share-object/share-object.component.mjs +5 -5
- package/esm2022/app/eo-framework/actions/actions/share-object-action/share-object-action.mjs +4 -4
- package/esm2022/app/eo-framework/actions/actions/signature-action/sequence-list/sequence-list.component.mjs +6 -6
- package/esm2022/app/eo-framework/actions/actions/signature-action/sequence-list-item/sequence-list-item.component.mjs +5 -5
- package/esm2022/app/eo-framework/actions/actions/signature-action/signature/signature.component.mjs +5 -5
- package/esm2022/app/eo-framework/actions/actions/signature-action/signature-action.component.mjs +4 -4
- package/esm2022/app/eo-framework/actions/actions/signature-action/signature.model.mjs +1 -1
- package/esm2022/app/eo-framework/actions/actions/unlock-action/unlock-action.mjs +4 -4
- package/esm2022/app/eo-framework/actions/actions/update-resubmission-action/update-resubmission-action.mjs +4 -4
- package/esm2022/app/eo-framework/actions/actions/workflow-action/simple-workflow-action.component.mjs +4 -4
- package/esm2022/app/eo-framework/actions/actions/workflow-action/workflow/workflow.component.mjs +5 -5
- package/esm2022/app/eo-framework/actions/actions/workflow-action/workflow-action.component.mjs +4 -4
- package/esm2022/app/eo-framework/actions/index.mjs +1 -1
- package/esm2022/app/eo-framework/actions/interfaces/action-component.interface.mjs +1 -1
- package/esm2022/app/eo-framework/actions/interfaces/action-list-entry.mjs +1 -1
- package/esm2022/app/eo-framework/actions/interfaces/action.interface.mjs +1 -1
- package/esm2022/app/eo-framework/actions/selection-range.enum.mjs +1 -1
- package/esm2022/app/eo-framework/animations/animations.mjs +1 -1
- package/esm2022/app/eo-framework/app-shell/app-bar/app-add/app-add-dialog/app-add-dialog.component.mjs +5 -5
- package/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 +5 -5
- package/esm2022/app/eo-framework/app-shell/app-bar/app-process/app-process.component.mjs +5 -5
- package/esm2022/app/eo-framework/app-shell/app-bar/app-search/app-search.component.mjs +5 -5
- package/esm2022/app/eo-framework/app-shell/app-bar/app-search/app-search.interface.mjs +1 -1
- package/esm2022/app/eo-framework/app-shell/app-bar/context-search/context-search.component.mjs +5 -5
- package/esm2022/app/eo-framework/app-shell/app-bar/side-bar/side-bar.component.mjs +5 -5
- package/esm2022/app/eo-framework/app-shell/app-bar/user-avatar-overlay/user-avatar-overlay.component.mjs +5 -5
- package/esm2022/app/eo-framework/app-shell/app-shell-routing.module.mjs +5 -5
- package/esm2022/app/eo-framework/app-shell/app-shell.module.mjs +5 -5
- package/esm2022/app/eo-framework/app-shell/index.mjs +1 -1
- package/esm2022/app/eo-framework/app-shell/license-warning/license-warning.component.mjs +5 -5
- package/esm2022/app/eo-framework/cta/component/cta.component.mjs +5 -5
- package/esm2022/app/eo-framework/cta/cta.module.mjs +5 -5
- package/esm2022/app/eo-framework/cta/index.mjs +1 -1
- package/esm2022/app/eo-framework/eo-framework.module.mjs +5 -5
- package/esm2022/app/eo-framework/error/error.module.mjs +5 -5
- package/esm2022/app/eo-framework/error/error404/error404.component.mjs +5 -5
- package/esm2022/app/eo-framework/error/index.mjs +1 -1
- package/esm2022/app/eo-framework/error/not-found/not-found.component.mjs +4 -4
- package/esm2022/app/eo-framework/form-elements/checkbox/checkbox.component.mjs +6 -6
- package/esm2022/app/eo-framework/form-elements/codesystem/codesystem.component.mjs +6 -6
- package/esm2022/app/eo-framework/form-elements/date/date.component.mjs +6 -6
- package/esm2022/app/eo-framework/form-elements/date/year-range/year-range.directive.mjs +4 -4
- package/esm2022/app/eo-framework/form-elements/datetime-range/datetime-range.component.mjs +6 -6
- package/esm2022/app/eo-framework/form-elements/dynamic-list/dynamic-list.component.mjs +6 -6
- package/esm2022/app/eo-framework/form-elements/form-elements.module.mjs +5 -5
- package/esm2022/app/eo-framework/form-elements/form-input/form-input.component.mjs +5 -5
- package/esm2022/app/eo-framework/form-elements/form-input/input-focus/input-focus.directive.mjs +4 -4
- package/esm2022/app/eo-framework/form-elements/id-reference/animation/reference-finder.animation.mjs +1 -1
- package/esm2022/app/eo-framework/form-elements/id-reference/id-reference.component.mjs +6 -6
- package/esm2022/app/eo-framework/form-elements/id-reference/interface/reference-finder.interface.mjs +1 -1
- package/esm2022/app/eo-framework/form-elements/id-reference/reference-finder/reference-finder.component.mjs +5 -5
- package/esm2022/app/eo-framework/form-elements/id-reference/reference-finder-entry/reference-finder-entry.component.mjs +5 -5
- package/esm2022/app/eo-framework/form-elements/id-reference/service/reference-finder.service.mjs +4 -4
- package/esm2022/app/eo-framework/form-elements/index.mjs +1 -1
- package/esm2022/app/eo-framework/form-elements/number/number.component.mjs +6 -6
- package/esm2022/app/eo-framework/form-elements/number-range/number-range.component.mjs +6 -6
- package/esm2022/app/eo-framework/form-elements/organization/organization.component.mjs +6 -6
- package/esm2022/app/eo-framework/form-elements/password/password.component.mjs +5 -5
- package/esm2022/app/eo-framework/form-elements/reference/reference.component.mjs +6 -6
- package/esm2022/app/eo-framework/form-elements/string/string.component.mjs +6 -6
- package/esm2022/app/eo-framework/frame/frame.component.mjs +5 -5
- package/esm2022/app/eo-framework/grid/column-configurator/column-configurator.component.mjs +5 -5
- package/esm2022/app/eo-framework/grid/extensions/custom-sort/custom-sort.component.mjs +5 -5
- package/esm2022/app/eo-framework/grid/extensions/empty/empty.component.mjs +5 -5
- package/esm2022/app/eo-framework/grid/extensions/filter/abstract-filter.component.mjs +4 -4
- package/esm2022/app/eo-framework/grid/extensions/filter/custom/custom-filter.component.mjs +5 -5
- package/esm2022/app/eo-framework/grid/extensions/filter/setFilters/set-filter.component.mjs +5 -5
- package/esm2022/app/eo-framework/grid/extensions/filter/setFilters/set-filters.interface.mjs +1 -1
- package/esm2022/app/eo-framework/grid/extensions/filter/text/text-filter.component.mjs +5 -5
- package/esm2022/app/eo-framework/grid/extensions/pagination/pagination.component.mjs +5 -5
- package/esm2022/app/eo-framework/grid/extensions/quick-filter/quick-filter.component.mjs +23 -23
- package/esm2022/app/eo-framework/grid/extensions/reset-filter/reset-filter.component.mjs +5 -5
- package/esm2022/app/eo-framework/grid/extensions/services/list-settings.service.mjs +4 -4
- package/esm2022/app/eo-framework/grid/extensions/total-count/total-count.component.mjs +5 -5
- package/esm2022/app/eo-framework/grid/filters/codesystem-filter.component.mjs +5 -5
- package/esm2022/app/eo-framework/grid/filters/datetime-filter.component.mjs +5 -5
- package/esm2022/app/eo-framework/grid/filters/dynamic-list-filter.component.mjs +5 -5
- package/esm2022/app/eo-framework/grid/filters/filesize-filter.component.mjs +1 -1
- package/esm2022/app/eo-framework/grid/filters/list-filter.component.mjs +5 -5
- package/esm2022/app/eo-framework/grid/filters/organization-filter.component.mjs +5 -5
- package/esm2022/app/eo-framework/grid/grid-filter.model.mjs +1 -1
- package/esm2022/app/eo-framework/grid/grid.component.mjs +22 -18
- package/esm2022/app/eo-framework/grid/grid.module.mjs +5 -5
- package/esm2022/app/eo-framework/grid/index.mjs +1 -1
- package/esm2022/app/eo-framework/grid/loader.interface.mjs +1 -1
- package/esm2022/app/eo-framework/grid/row-grouping/batchRemover.mjs +1 -1
- package/esm2022/app/eo-framework/grid/row-grouping/group-stage.mjs +1 -1
- package/esm2022/app/eo-framework/grid/row-grouping/row-grouping.module.mjs +1 -1
- package/esm2022/app/eo-framework/inbox-details/duetimeInfo/duetimeInfo.component.mjs +5 -5
- package/esm2022/app/eo-framework/inbox-details/inbox-details.component.mjs +5 -5
- package/esm2022/app/eo-framework/index.mjs +1 -1
- package/esm2022/app/eo-framework/list-container/index.mjs +1 -1
- package/esm2022/app/eo-framework/list-container/list-container.component.mjs +5 -5
- package/esm2022/app/eo-framework/list-container/list-container.module.mjs +5 -5
- package/esm2022/app/eo-framework/media/content-preview.service.mjs +4 -4
- package/esm2022/app/eo-framework/media/index.mjs +1 -1
- package/esm2022/app/eo-framework/media/media.component.mjs +5 -5
- package/esm2022/app/eo-framework/media/media.module.mjs +5 -5
- package/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 +5 -5
- package/esm2022/app/eo-framework/object-details/index.mjs +1 -1
- package/esm2022/app/eo-framework/object-details/object-details.component.mjs +5 -5
- package/esm2022/app/eo-framework/object-details/object-details.module.mjs +5 -5
- package/esm2022/app/eo-framework/object-details/object-history/history-filter/history-filter-pipe/history-filter.pipe.mjs +4 -4
- package/esm2022/app/eo-framework/object-details/object-history/history-filter/history-filter.component.mjs +5 -5
- package/esm2022/app/eo-framework/object-details/object-history/history-filter/history-filter.mjs +1 -1
- package/esm2022/app/eo-framework/object-details/object-history/object-history.component.mjs +5 -5
- package/esm2022/app/eo-framework/object-details/object-links/object-links.component.mjs +5 -5
- package/esm2022/app/eo-framework/object-form/form-status-changed-event.interface.mjs +1 -1
- package/esm2022/app/eo-framework/object-form/index.mjs +1 -1
- package/esm2022/app/eo-framework/object-form/object-form/form-element/form-element-template.directive.mjs +4 -4
- package/esm2022/app/eo-framework/object-form/object-form/form-element/form-element.component.mjs +5 -5
- package/esm2022/app/eo-framework/object-form/object-form/form-element-table/form-element-table.component.mjs +30 -28
- package/esm2022/app/eo-framework/object-form/object-form/form-element-table/form-element.interface.mjs +1 -1
- package/esm2022/app/eo-framework/object-form/object-form/form-element-table/row-edit/row-edit.component.mjs +5 -5
- package/esm2022/app/eo-framework/object-form/object-form/form-validation/form-validation.mjs +1 -1
- package/esm2022/app/eo-framework/object-form/object-form/object-form-control-wrapper.mjs +1 -1
- package/esm2022/app/eo-framework/object-form/object-form/object-form-control.mjs +1 -1
- package/esm2022/app/eo-framework/object-form/object-form/object-form-group/object-form-group.component.mjs +5 -5
- package/esm2022/app/eo-framework/object-form/object-form/object-form-group.model.mjs +1 -1
- package/esm2022/app/eo-framework/object-form/object-form/object-form-script/object-form-script.interface.mjs +1 -1
- package/esm2022/app/eo-framework/object-form/object-form/object-form-script/object-form-script.service.mjs +4 -4
- package/esm2022/app/eo-framework/object-form/object-form/object-form-script/object-form-scripting-scope.mjs +1 -1
- package/esm2022/app/eo-framework/object-form/object-form/object-form.component.mjs +5 -5
- package/esm2022/app/eo-framework/object-form/object-form/object-form.model.mjs +1 -1
- package/esm2022/app/eo-framework/object-form/object-form-edit/object-form-edit.component.mjs +5 -5
- package/esm2022/app/eo-framework/object-form/object-form-helper.service.mjs +4 -4
- package/esm2022/app/eo-framework/object-form/object-form-options.interface.mjs +1 -1
- package/esm2022/app/eo-framework/object-form/object-form.module.mjs +5 -5
- package/esm2022/app/eo-framework/object-state-details/object-state-details.component.mjs +5 -5
- package/esm2022/app/eo-framework/plugins/index.mjs +1 -1
- package/esm2022/app/eo-framework/plugins/plugin.component.mjs +22 -22
- package/esm2022/app/eo-framework/plugins/plugin.directive.mjs +4 -4
- package/esm2022/app/eo-framework/plugins/plugin.service.mjs +4 -4
- package/esm2022/app/eo-framework/plugins/plugins.module.mjs +5 -5
- package/esm2022/app/eo-framework/prepare-details/prepare-content-exists-info/prepare-content-exists-info.component.mjs +5 -5
- package/esm2022/app/eo-framework/prepare-details/prepare-details.component.mjs +12 -12
- package/esm2022/app/eo-framework/process/details/process-details.component.mjs +5 -5
- package/esm2022/app/eo-framework/process/history/process-history.component.mjs +5 -5
- package/esm2022/app/eo-framework/process/process-file/file-entry-permissions.interface.mjs +1 -1
- package/esm2022/app/eo-framework/process/process-file/process-file.component.mjs +5 -5
- package/esm2022/app/eo-framework/process-form/process-form.component.mjs +5 -5
- package/esm2022/app/eo-framework/process-form/process-form.module.mjs +5 -5
- package/esm2022/app/eo-framework/quick-search/index.mjs +1 -1
- package/esm2022/app/eo-framework/quick-search/quick-search/quick-search-result.interface.mjs +1 -1
- package/esm2022/app/eo-framework/quick-search/quick-search/quick-search.component.mjs +5 -5
- package/esm2022/app/eo-framework/quick-search/quick-search.module.mjs +5 -5
- package/esm2022/app/eo-framework/recyclebin-details/recyclebin-details.component.mjs +5 -5
- package/esm2022/app/eo-framework/result-list/index.mjs +1 -1
- package/esm2022/app/eo-framework/result-list/result-list.component.mjs +5 -5
- package/esm2022/app/eo-framework/result-list/result-list.module.mjs +5 -5
- package/esm2022/app/eo-framework/settings/change-password/change-password-form/change-password-form.component.mjs +5 -5
- package/esm2022/app/eo-framework/settings/change-password/change-password.interface.mjs +1 -1
- package/esm2022/app/eo-framework/settings/index.mjs +1 -1
- package/esm2022/app/eo-framework/settings/permissions/permissions.component.mjs +5 -5
- package/esm2022/app/eo-framework/settings/settings.module.mjs +5 -5
- package/esm2022/app/eo-framework/shortcuts/global-shortcut-action.interface.mjs +1 -1
- package/esm2022/app/eo-framework/shortcuts/global-shortcut-component.interface.mjs +1 -1
- package/esm2022/app/eo-framework/shortcuts/global-shortcuts/global-shortcuts-section/global-shortcuts-section.component.mjs +5 -5
- package/esm2022/app/eo-framework/shortcuts/global-shortcuts/global-shortcuts.component.mjs +5 -5
- package/esm2022/app/eo-framework/shortcuts/index.mjs +1 -1
- package/esm2022/app/eo-framework/shortcuts/shortcut.interface.mjs +4 -4
- package/esm2022/app/eo-framework/shortcuts/shortcuts.directive.mjs +4 -4
- package/esm2022/app/eo-framework/shortcuts/shortcuts.module.mjs +5 -5
- package/esm2022/app/eo-framework/shortcuts/shortcuts.service.mjs +4 -4
- package/esm2022/app/eo-framework/stored-query/index.mjs +1 -1
- package/esm2022/app/eo-framework/stored-query/stored-query/stored-query.component.mjs +5 -5
- package/esm2022/app/eo-framework/stored-query/stored-query-details/dynamic-property-switch/dynamic-property-switch.component.mjs +5 -5
- package/esm2022/app/eo-framework/stored-query/stored-query-details/stored-query-details.component.mjs +5 -5
- package/esm2022/app/eo-framework/stored-query/stored-query-type-filter.enum.mjs +1 -1
- package/esm2022/app/eo-framework/stored-query/stored-query.interface.mjs +1 -1
- package/esm2022/app/eo-framework/stored-query/stored-query.module.mjs +5 -5
- package/esm2022/app/eo-framework/tree/index.mjs +1 -1
- package/esm2022/app/eo-framework/tree/tree-node/tree-node.component.mjs +5 -5
- package/esm2022/app/eo-framework/tree/tree.component.interface.mjs +1 -1
- package/esm2022/app/eo-framework/tree/tree.component.mjs +6 -6
- package/esm2022/app/eo-framework/tree/tree.module.mjs +5 -5
- package/esm2022/app/eo-framework/ui/animations/panel-loading.animation.mjs +1 -1
- package/esm2022/app/eo-framework/ui/clipboard/clipboard.component.mjs +5 -5
- package/esm2022/app/eo-framework/ui/eo-dialog/eo-dialog.component.mjs +5 -5
- package/esm2022/app/eo-framework/ui/eo-icon/eo-icon.component.mjs +4 -4
- package/esm2022/app/eo-framework/ui/error-message/error-message.component.mjs +5 -5
- package/esm2022/app/eo-framework/ui/index.mjs +1 -1
- package/esm2022/app/eo-framework/ui/indexdata-summary/indexdata-summary-entry/indexdata-summary-entry.component.mjs +5 -5
- package/esm2022/app/eo-framework/ui/indexdata-summary/indexdata-summary-entry.interface.mjs +1 -1
- package/esm2022/app/eo-framework/ui/indexdata-summary/indexdata-summary.component.mjs +5 -5
- package/esm2022/app/eo-framework/ui/loading-spinner/loading-spinner.component.mjs +9 -9
- package/esm2022/app/eo-framework/ui/outside-click/outside-click.directive.mjs +4 -4
- package/esm2022/app/eo-framework/ui/overlay/overlay.component.mjs +5 -5
- package/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 +4 -4
- package/esm2022/app/eo-framework/ui/rtl-aware/rtl-aware.directive.mjs +4 -4
- package/esm2022/app/eo-framework/ui/signature-tab/signature-tab.component.mjs +5 -5
- package/esm2022/app/eo-framework/ui/ui.module.mjs +17 -28
- package/esm2022/app/eo-framework/ui/user-avatar/user-avatar.component.mjs +4 -4
- package/esm2022/app/eo-framework/upload-overlay/upload-overlay-guard.service.mjs +4 -4
- package/esm2022/app/eo-framework/upload-overlay/upload-overlay.component.mjs +5 -5
- package/esm2022/app/eo-framework/util/directive/prevent-double-click.directive.mjs +4 -4
- package/esm2022/app/eo-framework/util/directive/trap-focus.directive.mjs +4 -4
- package/esm2022/app/eo-framework/util/index.mjs +1 -1
- package/esm2022/app/eo-framework/util/services/utilities.service.mjs +4 -4
- package/esm2022/app/eo-framework/util/sortable/order-by.pipe.mjs +4 -4
- package/esm2022/app/eo-framework/util/util.module.mjs +5 -5
- package/esm2022/app/eo-framework-core/agent/agent.interface.mjs +1 -1
- package/esm2022/app/eo-framework-core/agent/agent.service.mjs +4 -4
- package/esm2022/app/eo-framework-core/api/grid.service.mjs +6 -6
- package/esm2022/app/eo-framework-core/api/model/dms-object.api.interface.mjs +1 -1
- package/esm2022/app/eo-framework-core/api/plugins.service.mjs +4 -4
- package/esm2022/app/eo-framework-core/empty-state/empty-state.interface.mjs +1 -1
- package/esm2022/app/eo-framework-core/empty-state/empty-state.service.mjs +4 -4
- package/esm2022/app/eo-framework-core/eo-framework-core.module.mjs +13 -19
- package/esm2022/app/eo-framework-core/error-handler/error-handler.service.mjs +4 -4
- package/esm2022/app/eo-framework-core/error-handler/error-keys.mjs +1 -1
- package/esm2022/app/eo-framework-core/index.mjs +1 -1
- package/esm2022/app/eo-framework-core/layout/layout.service.mjs +4 -4
- package/esm2022/app/eo-framework-core/location/location.service.mjs +4 -4
- package/esm2022/app/eo-framework-core/pending-changes/pending-changes-component.interface.mjs +1 -1
- package/esm2022/app/eo-framework-core/pending-changes/pending-changes-guard.service.mjs +4 -4
- package/esm2022/app/eo-framework-core/pending-changes/pending-changes.service.mjs +4 -4
- package/esm2022/app/eo-framework-core/pipes/filesize.pipe.mjs +4 -4
- package/esm2022/app/eo-framework-core/pipes/keys.pipe.mjs +4 -4
- package/esm2022/app/eo-framework-core/pipes/locale-date.pipe.mjs +4 -4
- package/esm2022/app/eo-framework-core/pipes/locale-number.pipe.mjs +13 -13
- package/esm2022/app/eo-framework-core/pipes/pipes.module.mjs +5 -5
- package/esm2022/app/eo-framework-core/pipes/safe-html.pipe.mjs +4 -4
- package/esm2022/app/eo-framework-core/references/reference.service.mjs +4 -4
- package/esm2022/app/eo-framework-core/route-guards/auth/auth-guard.service.mjs +4 -4
- package/esm2022/app/eo-framework-core/route-guards/capabilities/capabilities-guard.service.mjs +4 -4
- package/esm2022/app/eo-framework-core/search/app-search.service.mjs +4 -4
- package/esm2022/app/eo-framework-core/selection/selection.service.mjs +4 -4
- package/esm2022/app/eo-framework-core/title/page-title.service.mjs +4 -4
- package/esm2022/public_api.mjs +1 -1
- package/fesm2022/eo-sdk-client.mjs +1187 -1189
- package/fesm2022/eo-sdk-client.mjs.map +1 -1
- package/languages/ar.json +523 -523
- package/languages/es.json +523 -523
- package/languages/fr.json +523 -523
- package/languages/po/ar.po +457 -457
- package/languages/pt.json +523 -523
- package/languages/temp.pot +928 -928
- package/languages/zh.json +523 -523
- package/misc/client.properties +1 -1
- package/misc/doc-styles/style.css +175 -175
- package/misc/scripts/copy-client-assets.js +26 -26
- package/misc/scripts/copy-core-styles.js +3 -3
- package/misc/scripts/exclude-core-ng-package.js +11 -11
- package/misc/scripts/helper.js +64 -64
- package/misc/scripts/i18n-apply.js +46 -46
- package/misc/scripts/i18n-diff.js +100 -100
- package/misc/scripts/injectdocbase.js +7 -7
- package/misc/scripts/mvn-deploy.js +66 -66
- package/misc/scripts/prebuild-about-state.js +32 -32
- package/misc/scripts/preparedist.js +39 -39
- package/misc/scripts/zipdist.js +21 -21
- package/misc/template.yml +4 -4
- package/misc/tsscheme.xml +34 -34
- package/package.json +17 -17
- package/proxy.config.json +97 -97
- package/scss/_ag-grid.scss +59 -59
- package/scss/_animation.scss +55 -55
- package/scss/_eo-variables.scss +78 -78
- package/scss/_form.scss +660 -660
- package/scss/_main.scss +394 -394
- package/scss/_migrationTemp.scss +27 -27
- package/scss/_mixins.scss +201 -201
- package/scss/_theme-dark.scss +22 -22
- package/scss/_timeline.scss +98 -98
- package/scss/_yuuvis-components.scss +40 -40
- package/styles.scss +141 -141
|
@@ -39,8 +39,8 @@ export class GridModule {
|
|
|
39
39
|
.on(EnaioEvent.EO_LICENSE_GRID)
|
|
40
40
|
.subscribe(() => { });
|
|
41
41
|
}
|
|
42
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
43
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
42
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: GridModule, deps: [{ token: i1.EventService }, { token: i1.Config }], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
43
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.4", ngImport: i0, type: GridModule, declarations: [GridComponent, ColumnConfiguratorComponent, TotalCountComponent, QuickFilterComponent,
|
|
44
44
|
CustomSortComponent, CustomFilterComponent, TextFilterComponent, SetFilterComponent, DatetimeFilterComponent,
|
|
45
45
|
CodesystemFilterComponent, OrganizationFilterComponent, ResetFilterComponent, EmptyComponent, PaginationComponent, DynamicListFilterComponent, ListFilterComponent], imports: [UiModule,
|
|
46
46
|
UtilModule,
|
|
@@ -56,7 +56,7 @@ export class GridModule {
|
|
|
56
56
|
AgGridModule], exports: [GridComponent, ColumnConfiguratorComponent, TotalCountComponent, QuickFilterComponent,
|
|
57
57
|
CustomSortComponent, CustomFilterComponent, TextFilterComponent, SetFilterComponent, DatetimeFilterComponent,
|
|
58
58
|
CodesystemFilterComponent, OrganizationFilterComponent, ResetFilterComponent, EmptyComponent, PaginationComponent, DynamicListFilterComponent, ListFilterComponent] }); }
|
|
59
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
59
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: GridModule, imports: [UiModule,
|
|
60
60
|
UtilModule,
|
|
61
61
|
FormsModule,
|
|
62
62
|
ReactiveFormsModule,
|
|
@@ -69,7 +69,7 @@ export class GridModule {
|
|
|
69
69
|
DragDropModule,
|
|
70
70
|
AgGridModule] }); }
|
|
71
71
|
}
|
|
72
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
72
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: GridModule, decorators: [{
|
|
73
73
|
type: NgModule,
|
|
74
74
|
args: [{
|
|
75
75
|
imports: [
|
|
@@ -94,4 +94,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
|
|
|
94
94
|
CodesystemFilterComponent, OrganizationFilterComponent, ResetFilterComponent, EmptyComponent, PaginationComponent, DynamicListFilterComponent, ListFilterComponent]
|
|
95
95
|
}]
|
|
96
96
|
}], ctorParameters: () => [{ type: i1.EventService }, { type: i1.Config }] });
|
|
97
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
97
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2VvLWZyYW1ld29yay9ncmlkL2dyaWQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBc0IsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzVELE9BQU8sRUFBZSxVQUFVLEVBQVMsTUFBTSxjQUFjLENBQUM7QUFDOUQsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUV4RCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDL0MsT0FBTyxFQUFDLDJCQUEyQixFQUFDLE1BQU0scURBQXFELENBQUM7QUFDaEcsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQy9DLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLGdEQUFnRCxDQUFDO0FBQ25GLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLGtEQUFrRCxDQUFDO0FBQ3RGLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLGdEQUFnRCxDQUFDO0FBQ25GLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLG9EQUFvRCxDQUFDO0FBQ3pGLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLGdEQUFnRCxDQUFDO0FBQ25GLE9BQU8sRUFBQyxXQUFXLEVBQUUsbUJBQW1CLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRSxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxxREFBcUQsQ0FBQztBQUN2RixPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQztBQUN6RSxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDNUMsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0scUNB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QW1CLEVBQUUsb0JBQW9CO3dCQUNsRyxtQkFBbUIsRUFBRSxxQkFBcUIsRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsRUFBRSx1QkFBdUI7d0JBQzVHLHlCQUF5QixFQUFFLDJCQUEyQixFQUFFLG9CQUFvQixFQUFFLGNBQWMsRUFBRSxtQkFBbUIsRUFBRSwwQkFBMEIsRUFBRSxtQkFBbUIsQ0FBQztvQkFDckssT0FBTyxFQUFFLENBQUMsYUFBYSxFQUFFLDJCQUEyQixFQUFFLG1CQUFtQixFQUFFLG9CQUFvQjt3QkFDN0YsbUJBQW1CLEVBQUUscUJBQXFCLEVBQUUsbUJBQW1CLEVBQUUsa0JBQWtCLEVBQUUsdUJBQXVCO3dCQUM1Ryx5QkFBeUIsRUFBRSwyQkFBMkIsRUFBRSxvQkFBb0IsRUFBRSxjQUFjLEVBQUUsbUJBQW1CLEVBQUUsMEJBQTBCLEVBQUUsbUJBQW1CLENBQUM7aUJBQ3RLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtNb2R1bGVXaXRoUHJvdmlkZXJzLCBOZ01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7RXZlbnRTZXJ2aWNlLCBFbmFpb0V2ZW50LCBDb25maWd9IGZyb20gJ0Blby1zZGsvY29yZSc7XHJcbmltcG9ydCB7VWlNb2R1bGV9IGZyb20gJy4uL3VpL3VpLm1vZHVsZSc7XHJcbmltcG9ydCB7QWdHcmlkTW9kdWxlfSBmcm9tICdAYWctZ3JpZC1jb21tdW5pdHkvYW5ndWxhcic7XHJcblxyXG5pbXBvcnQge0dyaWRDb21wb25lbnR9IGZyb20gJy4vZ3JpZC5jb21wb25lbnQnO1xyXG5pbXBvcnQge0NvbHVtbkNvbmZpZ3VyYXRvckNvbXBvbmVudH0gZnJvbSAnLi9jb2x1bW4tY29uZmlndXJhdG9yL2NvbHVtbi1jb25maWd1cmF0b3IuY29tcG9uZW50JztcclxuaW1wb3J0IHtVdGlsTW9kdWxlfSBmcm9tICcuLi91dGlsL3V0aWwubW9kdWxlJztcclxuaW1wb3J0IHtUb3RhbENvdW50Q29tcG9uZW50fSBmcm9tICcuL2V4dGVuc2lvbnMvdG90YWwtY291bnQvdG90YWwtY291bnQuY29tcG9uZW50JztcclxuaW1wb3J0IHtRdWlja0ZpbHRlckNvbXBvbmVudH0gZnJvbSAnLi9leHRlbnNpb25zL3F1aWNrLWZpbHRlci9xdWljay1maWx0ZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHtDdXN0b21Tb3J0Q29tcG9uZW50fSBmcm9tICcuL2V4dGVuc2lvbnMvY3VzdG9tLXNvcnQvY3VzdG9tLXNvcnQuY29tcG9uZW50JztcclxuaW1wb3J0IHtDdXN0b21GaWx0ZXJDb21wb25lbnR9IGZyb20gJy4vZXh0ZW5zaW9ucy9maWx0ZXIvY3VzdG9tL2N1c3RvbS1maWx0ZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHtUZXh0RmlsdGVyQ29tcG9uZW50fSBmcm9tICcuL2V4dGVuc2lvbnMvZmlsdGVyL3RleHQvdGV4dC1maWx0ZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHtGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQge1NldEZpbHRlckNvbXBvbmVudH0gZnJvbSAnLi9leHRlbnNpb25zL2ZpbHRlci9zZXRGaWx0ZXJzL3NldC1maWx0ZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHtGb3JtRWxlbWVudHNNb2R1bGV9IGZyb20gJy4uL2Zvcm0tZWxlbWVudHMvZm9ybS1lbGVtZW50cy5tb2R1bGUnO1xyXG5pbXBvcnQge0N0YU1vZHVsZX0gZnJvbSAnLi4vY3RhL2N0YS5tb2R1bGUnO1xyXG5pbXBvcnQge0RhdGV0aW1lRmlsdGVyQ29tcG9uZW50fSBmcm9tICcuL2ZpbHRlcnMvZGF0ZXRpbWUtZmlsdGVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7T3JnYW5pemF0aW9uRmlsdGVyQ29tcG9uZW50fSBmcm9tICcuL2ZpbHRlcnMvb3JnYW5pemF0aW9uLWZpbHRlci5jb21wb25lbnQnO1xyXG5pbXBvcnQge0NvZGVzeXN0ZW1GaWx0ZXJDb21wb25lbnR9IGZyb20gJy4vZmlsdGVycy9jb2Rlc3lzdGVtLWZpbHRlci5jb21wb25lbnQnO1xyXG5pbXBvcnQge0R5bmFtaWNMaXN0RmlsdGVyQ29tcG9uZW50fSBmcm9tICcuL2ZpbHRlcnMvZHluYW1pYy1saXN0LWZpbHRlci5jb21wb25lbnQnO1xyXG5pbXBvcnQge1RyZWVNb2R1bGV9IGZyb20gJy4uL3RyZWUvdHJlZS5tb2R1bGUnO1xyXG5pbXBvcnQge1Jlc2V0RmlsdGVyQ29tcG9uZW50fSBmcm9tICcuL2V4dGVuc2lvbnMvcmVzZXQtZmlsdGVyL3Jlc2V0LWZpbHRlci5jb21wb25lbnQnO1xyXG5pbXBvcnQge0VtcHR5Q29tcG9uZW50fSBmcm9tICcuL2V4dGVuc2lvbnMvZW1wdHkvZW1wdHkuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUGFnaW5hdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vZXh0ZW5zaW9ucy9wYWdpbmF0aW9uL3BhZ2luYXRpb24uY29tcG9uZW50JztcclxuaW1wb3J0IHtMaXN0RmlsdGVyQ29tcG9uZW50fSBmcm9tICcuL2ZpbHRlcnMvbGlzdC1maWx0ZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHtEcmFnRHJvcE1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XHJcbmltcG9ydCB7WXZjQXV0b2NvbXBsZXRlTW9kdWxlfSBmcm9tICdAeXV1dmlzL2NvbXBvbmVudHMvYXV0b2NvbXBsZXRlJztcclxuaW1wb3J0IHtZdmNJY29uTW9kdWxlfSBmcm9tICdAeXV1dmlzL2NvbXBvbmVudHMvaWNvbic7XHJcbmltcG9ydCB7WXZjRGF0ZXBpY2tlck1vZHVsZX0gZnJvbSAnQHl1dXZpcy9jb21wb25lbnRzL2RhdGVwaWNrZXInO1xyXG5cclxuY29uc3QgZmlsdGVyQ29tcG9uZW50cyA9IFtUZXh0RmlsdGVyQ29tcG9uZW50LCBTZXRGaWx0ZXJDb21wb25lbnQsIERhdGV0aW1lRmlsdGVyQ29tcG9uZW50LCBDb2Rlc3lzdGVtRmlsdGVyQ29tcG9uZW50LCBPcmdhbml6YXRpb25GaWx0ZXJDb21wb25lbnQsXHJcbiAgRHluYW1pY0xpc3RGaWx0ZXJDb21wb25lbnQsIExpc3RGaWx0ZXJDb21wb25lbnRdO1xyXG5ATmdNb2R1bGUoe1xyXG4gIGltcG9ydHM6IFtcclxuICAgIFVpTW9kdWxlLFxyXG4gICAgVXRpbE1vZHVsZSxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgIEZvcm1FbGVtZW50c01vZHVsZSxcclxuICAgIFRyZWVNb2R1bGUsXHJcbiAgICBDdGFNb2R1bGUsXHJcbiAgICBZdmNBdXRvY29tcGxldGVNb2R1bGUsXHJcbiAgICBZdmNJY29uTW9kdWxlLFxyXG4gICAgWXZjRGF0ZXBpY2tlck1vZHVsZSxcclxuICAgIERyYWdEcm9wTW9kdWxlLFxyXG4gICAgQWdHcmlkTW9kdWxlXHJcbiAgXSxcclxuICBkZWNsYXJhdGlvbnM6IFtHcmlkQ29tcG9uZW50LCBDb2x1bW5Db25maWd1cmF0b3JDb21wb25lbnQsIFRvdGFsQ291bnRDb21wb25lbnQsIFF1aWNrRmlsdGVyQ29tcG9uZW50LFxyXG4gICAgQ3VzdG9tU29ydENvbXBvbmVudCwgQ3VzdG9tRmlsdGVyQ29tcG9uZW50LCBUZXh0RmlsdGVyQ29tcG9uZW50LCBTZXRGaWx0ZXJDb21wb25lbnQsIERhdGV0aW1lRmlsdGVyQ29tcG9uZW50LFxyXG4gICAgQ29kZXN5c3RlbUZpbHRlckNvbXBvbmVudCwgT3JnYW5pemF0aW9uRmlsdGVyQ29tcG9uZW50LCBSZXNldEZpbHRlckNvbXBvbmVudCwgRW1wdHlDb21wb25lbnQsIFBhZ2luYXRpb25Db21wb25lbnQsIER5bmFtaWNMaXN0RmlsdGVyQ29tcG9uZW50LCBMaXN0RmlsdGVyQ29tcG9uZW50XSxcclxuICBleHBvcnRzOiBbR3JpZENvbXBvbmVudCwgQ29sdW1uQ29uZmlndXJhdG9yQ29tcG9uZW50LCBUb3RhbENvdW50Q29tcG9uZW50LCBRdWlja0ZpbHRlckNvbXBvbmVudCxcclxuICAgIEN1c3RvbVNvcnRDb21wb25lbnQsIEN1c3RvbUZpbHRlckNvbXBvbmVudCwgVGV4dEZpbHRlckNvbXBvbmVudCwgU2V0RmlsdGVyQ29tcG9uZW50LCBEYXRldGltZUZpbHRlckNvbXBvbmVudCxcclxuICAgIENvZGVzeXN0ZW1GaWx0ZXJDb21wb25lbnQsIE9yZ2FuaXphdGlvbkZpbHRlckNvbXBvbmVudCwgUmVzZXRGaWx0ZXJDb21wb25lbnQsIEVtcHR5Q29tcG9uZW50LCBQYWdpbmF0aW9uQ29tcG9uZW50LCBEeW5hbWljTGlzdEZpbHRlckNvbXBvbmVudCwgTGlzdEZpbHRlckNvbXBvbmVudF1cclxufSlcclxuZXhwb3J0IGNsYXNzIEdyaWRNb2R1bGUge1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGV2ZW50OiBFdmVudFNlcnZpY2UsIHByaXZhdGUgY29uZmlnOiBDb25maWcpIHtcclxuICAgIHRoaXMuZXZlbnRcclxuICAgICAgLm9uKEVuYWlvRXZlbnQuRU9fTElDRU5TRV9HUklEKVxyXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHt9KTtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -20,4 +20,4 @@ export * from './filters/codesystem-filter.component';
|
|
|
20
20
|
export * from './filters/datetime-filter.component';
|
|
21
21
|
export * from './extensions/pagination/pagination.component';
|
|
22
22
|
export * from './filters/organization-filter.component';
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2VvLWZyYW1ld29yay9ncmlkL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMscURBQXFELENBQUM7QUFDcEUsY0FBYyxnREFBZ0QsQ0FBQztBQUMvRCxjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMsK0NBQStDLENBQUM7QUFDOUQsY0FBYyxvREFBb0QsQ0FBQztBQUNuRSxjQUFjLHFEQUFxRCxDQUFDO0FBQ3BFLGNBQWMsc0RBQXNELENBQUM7QUFDckUsY0FBYyx5Q0FBeUMsQ0FBQztBQUN4RCxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsZ0RBQWdELENBQUM7QUFDL0QsY0FBYyxrREFBa0QsQ0FBQztBQUNqRSxjQUFjLGtEQUFrRCxDQUFDO0FBQ2pFLGNBQWMsNkNBQTZDLENBQUM7QUFDNUQsY0FBYyxnREFBZ0QsQ0FBQztBQUMvRCxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyw4Q0FBOEMsQ0FBQztBQUM3RCxjQUFjLHlDQUF5QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9ncmlkLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZ3JpZC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2dyaWQtZmlsdGVyLm1vZGVsJztcclxuZXhwb3J0ICogZnJvbSAnLi9sb2FkZXIuaW50ZXJmYWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9jb2x1bW4tY29uZmlndXJhdG9yL2NvbHVtbi1jb25maWd1cmF0b3IuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9leHRlbnNpb25zL2N1c3RvbS1zb3J0L2N1c3RvbS1zb3J0LmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZXh0ZW5zaW9ucy9lbXB0eS9lbXB0eS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2V4dGVuc2lvbnMvZmlsdGVyL2Fic3RyYWN0LWZpbHRlci5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2V4dGVuc2lvbnMvZmlsdGVyL2N1c3RvbS9jdXN0b20tZmlsdGVyLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZXh0ZW5zaW9ucy9maWx0ZXIvc2V0RmlsdGVycy9zZXQtZmlsdGVyLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZXh0ZW5zaW9ucy9maWx0ZXIvc2V0RmlsdGVycy9zZXQtZmlsdGVycy5pbnRlcmZhY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2ZpbHRlcnMvZHluYW1pYy1saXN0LWZpbHRlci5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2ZpbHRlcnMvbGlzdC1maWx0ZXIuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9leHRlbnNpb25zL2ZpbHRlci90ZXh0L3RleHQtZmlsdGVyLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZXh0ZW5zaW9ucy9xdWljay1maWx0ZXIvcXVpY2stZmlsdGVyLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZXh0ZW5zaW9ucy9yZXNldC1maWx0ZXIvcmVzZXQtZmlsdGVyLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZXh0ZW5zaW9ucy9zZXJ2aWNlcy9saXN0LXNldHRpbmdzLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2V4dGVuc2lvbnMvdG90YWwtY291bnQvdG90YWwtY291bnQuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9maWx0ZXJzL2NvZGVzeXN0ZW0tZmlsdGVyLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZmlsdGVycy9kYXRldGltZS1maWx0ZXIuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9leHRlbnNpb25zL3BhZ2luYXRpb24vcGFnaW5hdGlvbi5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2ZpbHRlcnMvb3JnYW5pemF0aW9uLWZpbHRlci5jb21wb25lbnQnO1xyXG4iXX0=
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGVyLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZW8tZnJhbWV3b3JrL2dyaWQvbG9hZGVyLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBJTG9hZGVyIHtcclxuICBzaG93OiBib29sZWFuLFxyXG4gIGltYWdlOiBzdHJpbmcsXHJcbiAgdGV4dDogc3RyaW5nXHJcbn1cclxuIl19
|
|
@@ -47,4 +47,4 @@ export class BatchRemover {
|
|
|
47
47
|
this.allParents.length = 0;
|
|
48
48
|
}
|
|
49
49
|
}
|
|
50
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmF0Y2hSZW1vdmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvZ3JpZC9yb3ctZ3JvdXBpbmcvYmF0Y2hSZW1vdmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWlCQSxNQUFNLE9BQU8sWUFBWTtJQUF6QjtRQUVZLFlBQU8sR0FBMkMsRUFBRSxDQUFDO1FBQ3JELGVBQVUsR0FBYyxFQUFFLENBQUM7SUF5RHZDLENBQUM7SUF2RFUsNEJBQTRCLENBQUMsTUFBZSxFQUFFLEtBQWM7UUFDL0QsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNoQyxHQUFHLENBQUMsNEJBQTRCLENBQUMsS0FBSyxDQUFDLEVBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQztJQUN2RCxDQUFDO0lBRU0sMkJBQTJCLENBQUMsTUFBZSxFQUFFLEtBQWM7UUFDOUQsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNoQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMseUJBQXlCLENBQUMsS0FBSyxDQUFDLEVBQUcsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFTSxnQ0FBZ0MsQ0FBQyxNQUFlLEVBQUUsS0FBYztRQUNuRSxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2hDLE9BQU8sR0FBRyxDQUFDLHlCQUF5QixDQUFDLEtBQUssQ0FBQyxFQUFHLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRU0seUJBQXlCLENBQUMsTUFBZSxFQUFFLEtBQWM7UUFDNUQsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNoQyxHQUFHLENBQUMseUJBQXlCLENBQUMsS0FBSyxDQUFDLEVBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQztJQUNwRCxDQUFDO0lBRU8sTUFBTSxDQUFDLE1BQWU7UUFDMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUcsQ0FBQyxFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRyxDQUFDLEdBQUc7Z0JBQ3ZCLHlCQUF5QixFQUFFLEVBQUU7Z0JBQzdCLDRCQUE0QixFQUFFLEVBQUU7YUFDbkMsQ0FBQztZQUNGLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2pDLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUcsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFTSxhQUFhO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUMzQixDQUFDO0lBRU0sS0FBSztRQUNSLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQzdCLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUcsQ0FBQyxDQUFDO1lBRTdDLE1BQU0sQ0FBQyxrQkFBa0IsR0FBRyxNQUFNLENBQUMsa0JBQW1CLENBQUMsTUFBTSxDQUN6RCxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsV0FBVyxDQUFDLDRCQUE0QixDQUFDLEtBQUssQ0FBQyxFQUFHLENBQUMsQ0FDaEUsQ0FBQztZQUNGLE1BQU0sQ0FBQyxlQUFlLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQ2xELEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxXQUFXLENBQUMseUJBQXlCLENBQUMsS0FBSyxDQUFDLEVBQUcsQ0FBQyxDQUM3RCxDQUFDO1lBQ0YsTUFBTSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFFM0IsSUFBSSxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ2pCLE1BQU0sQ0FBQyxPQUFPLENBQUMsa0JBQWtCLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDO2dCQUM5RCxNQUFNLENBQUMsT0FBTyxDQUFDLGVBQWUsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDO1lBQzVELENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUMvQixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSb3dOb2RlIH0gZnJvbSBcIkBhZy1ncmlkLWNvbW11bml0eS9jb3JlXCI7XHJcblxyXG4vLyBkb2luZyBfLnJlbW92ZUZyb21BcnJheSgpIG11bHRpcGxlIHRpbWVzIG9uIGEgbGFyZ2UgbGlzdCBjYW4gYmUgYSBib3R0bGVuZWNrLlxyXG4vLyB3aGVuIGRvaW5nIGxhcmdlIGRlbGV0ZXMgKGVnIHJlbW92aW5nIDEsMDAwIHJvd3MpIHRoZW4gd2Ugd291bGQgYmUgY2FsbGluZyBfLnJlbW92ZUZyb21BcnJheSgpXHJcbi8vIGEgdGhvdXNhbmRzIG9mIHRpbWVzLCBpbiBwYXJ0aWN1bGFyIFJvb3ROb2RlLmFsbEdyb3VwQ2hpbGRyZW4gY291bGQgYmUgYSBsYXJnZSBsaXN0LCBhbmRcclxuLy8gMSwwMDAgcmVtb3ZlcyBpcyB0aW1lIGNvbnN1bWluZyBhcyBlYWNoIG9uZSByZXF1aXJlcyB0cmF2ZXJzaW5nIHRoZSBmdWxsIGxpc3QuXHJcbi8vIHRvIGdldCBhcm91bmQgdGhpcywgd2UgZG8gYWxsIHRoZSByZW1vdmVzIGluIGEgYmF0Y2guIHRoaXMgY2xhc3MgbWFuYWdlcyB0aGUgYmF0Y2guXHJcbi8vXHJcbi8vIFRoaXMgcHJvYmxlbSB3YXMgYnJvdWdodCB0byBsaWdodCBieSBhIGNsaWVudCAoQUctMjg3OSksIHdpdGggZGF0YXNldCBvZiAyMCwwMDBcclxuLy8gaW4gMTAsMDAwIGdyb3VwcyAoMiBpdGVtcyBwZXIgZ3JvdXApLCB0aGVuIGRlbGV0aW5nIGFsbCByb3dzIHdpdGggdHJhbnNhY3Rpb24sXHJcbi8vIGl0IHRvb2sgYWJvdXQgMjAgc2Vjb25kcyB0byBkZWxldGUuIHdpdGggdGhlIEJhdGhSZW1vdmVkLCB0aGUgcmVkdWNlZCB0byBsZXNzIHRoYW4gMSBzZWNvbmQuXHJcblxyXG5pbnRlcmZhY2UgUmVtb3ZlRGV0YWlscyB7XHJcbiAgICByZW1vdmVGcm9tQ2hpbGRyZW5BZnRlckdyb3VwOiB7IFtpZDogc3RyaW5nXTogYm9vbGVhbjsgfTtcclxuICAgIHJlbW92ZUZyb21BbGxMZWFmQ2hpbGRyZW46IHsgW2lkOiBzdHJpbmddOiBib29sZWFuOyB9O1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQmF0Y2hSZW1vdmVyIHtcclxuXHJcbiAgICBwcml2YXRlIGFsbFNldHM6IHsgW3BhcmVudElkOiBzdHJpbmddOiBSZW1vdmVEZXRhaWxzOyB9ID0ge307XHJcbiAgICBwcml2YXRlIGFsbFBhcmVudHM6IFJvd05vZGVbXSA9IFtdO1xyXG5cclxuICAgIHB1YmxpYyByZW1vdmVGcm9tQ2hpbGRyZW5BZnRlckdyb3VwKHBhcmVudDogUm93Tm9kZSwgY2hpbGQ6IFJvd05vZGUpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBzZXQgPSB0aGlzLmdldFNldChwYXJlbnQpO1xyXG4gICAgICAgIHNldC5yZW1vdmVGcm9tQ2hpbGRyZW5BZnRlckdyb3VwW2NoaWxkLmlkIV0gPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBpc1JlbW92ZUZyb21BbGxMZWFmQ2hpbGRyZW4ocGFyZW50OiBSb3dOb2RlLCBjaGlsZDogUm93Tm9kZSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGNvbnN0IHNldCA9IHRoaXMuZ2V0U2V0KHBhcmVudCk7XHJcbiAgICAgICAgcmV0dXJuICEhc2V0LnJlbW92ZUZyb21BbGxMZWFmQ2hpbGRyZW5bY2hpbGQuaWQhXTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgcHJldmVudFJlbW92ZUZyb21BbGxMZWFmQ2hpbGRyZW4ocGFyZW50OiBSb3dOb2RlLCBjaGlsZDogUm93Tm9kZSk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IHNldCA9IHRoaXMuZ2V0U2V0KHBhcmVudCk7XHJcbiAgICAgICAgZGVsZXRlIHNldC5yZW1vdmVGcm9tQWxsTGVhZkNoaWxkcmVuW2NoaWxkLmlkIV07XHJcbiAgICB9XHJcbiAgICBcclxuICAgIHB1YmxpYyByZW1vdmVGcm9tQWxsTGVhZkNoaWxkcmVuKHBhcmVudDogUm93Tm9kZSwgY2hpbGQ6IFJvd05vZGUpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBzZXQgPSB0aGlzLmdldFNldChwYXJlbnQpO1xyXG4gICAgICAgIHNldC5yZW1vdmVGcm9tQWxsTGVhZkNoaWxkcmVuW2NoaWxkLmlkIV0gPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2V0U2V0KHBhcmVudDogUm93Tm9kZSk6IFJlbW92ZURldGFpbHMge1xyXG4gICAgICAgIGlmICghdGhpcy5hbGxTZXRzW3BhcmVudC5pZCFdKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYWxsU2V0c1twYXJlbnQuaWQhXSA9IHtcclxuICAgICAgICAgICAgICAgIHJlbW92ZUZyb21BbGxMZWFmQ2hpbGRyZW46IHt9LFxyXG4gICAgICAgICAgICAgICAgcmVtb3ZlRnJvbUNoaWxkcmVuQWZ0ZXJHcm91cDoge31cclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgdGhpcy5hbGxQYXJlbnRzLnB1c2gocGFyZW50KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYWxsU2V0c1twYXJlbnQuaWQhXTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0QWxsUGFyZW50cygpOiBSb3dOb2RlW10ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmFsbFBhcmVudHM7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGZsdXNoKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuYWxsUGFyZW50cy5mb3JFYWNoKHBhcmVudCA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IG5vZGVEZXRhaWxzID0gdGhpcy5hbGxTZXRzW3BhcmVudC5pZCFdO1xyXG5cclxuICAgICAgICAgICAgcGFyZW50LmNoaWxkcmVuQWZ0ZXJHcm91cCA9IHBhcmVudC5jaGlsZHJlbkFmdGVyR3JvdXAhLmZpbHRlcihcclxuICAgICAgICAgICAgICAgIGNoaWxkID0+ICFub2RlRGV0YWlscy5yZW1vdmVGcm9tQ2hpbGRyZW5BZnRlckdyb3VwW2NoaWxkLmlkIV1cclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgcGFyZW50LmFsbExlYWZDaGlsZHJlbiA9IHBhcmVudC5hbGxMZWFmQ2hpbGRyZW4uZmlsdGVyKFxyXG4gICAgICAgICAgICAgICAgY2hpbGQgPT4gIW5vZGVEZXRhaWxzLnJlbW92ZUZyb21BbGxMZWFmQ2hpbGRyZW5bY2hpbGQuaWQhXVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBwYXJlbnQudXBkYXRlSGFzQ2hpbGRyZW4oKTtcclxuXHJcbiAgICAgICAgICAgIGlmIChwYXJlbnQuc2libGluZykge1xyXG4gICAgICAgICAgICAgICAgcGFyZW50LnNpYmxpbmcuY2hpbGRyZW5BZnRlckdyb3VwID0gcGFyZW50LmNoaWxkcmVuQWZ0ZXJHcm91cDtcclxuICAgICAgICAgICAgICAgIHBhcmVudC5zaWJsaW5nLmFsbExlYWZDaGlsZHJlbiA9IHBhcmVudC5hbGxMZWFmQ2hpbGRyZW47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmFsbFNldHMgPSB7fTtcclxuICAgICAgICB0aGlzLmFsbFBhcmVudHMubGVuZ3RoID0gMDtcclxuICAgIH1cclxufSJdfQ==
|
|
@@ -620,4 +620,4 @@ GroupStage = __decorate([
|
|
|
620
620
|
Bean('groupStage')
|
|
621
621
|
], GroupStage);
|
|
622
622
|
export { GroupStage };
|
|
623
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAtc3RhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2VvLWZyYW1ld29yay9ncmlkL3Jvdy1ncm91cGluZy9ncm91cC1zdGFnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNILENBQUMsRUFDRCxTQUFTLEVBQ1QsSUFBSSxFQUNKLFFBQVEsRUFPUixPQUFPLEVBV1YsTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUErQnZDLElBQU0sVUFBVSxHQUFoQixNQUFNLFVBQVcsU0FBUSxRQUFRO0lBaUI3QixPQUFPLENBQUMsTUFBMEI7UUFFckMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRW5ELElBQUksT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNwQyxDQUFDO2FBQU0sQ0FBQztZQUNKLE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixLQUFLLElBQUksQ0FBQztZQUM3RCxJQUFJLENBQUMsc0JBQXNCLENBQUMsT0FBTyxFQUFFLGdCQUFnQixDQUFDLENBQUM7UUFDM0QsQ0FBQztRQUVELElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDekIsMENBQTBDO1lBQzFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxNQUFNLENBQUMsV0FBWSxDQUFDLENBQUM7WUFDakQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM5QixDQUFDO1FBRUQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLDZCQUE2QixFQUFFLENBQUM7SUFDM0QsQ0FBQztJQUVPLHNCQUFzQixDQUFDLFdBQXdCO1FBQ25ELFdBQVcsQ0FBQyw0QkFBNEIsQ0FB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QUFDO2dCQUNmLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbkIsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDO0NBQ0osQ0FBQTtBQXZzQnFDO0lBQWpDLFNBQVMsQ0FBQyxhQUFhLENBQUM7K0NBQWtDO0FBQ25CO0lBQXZDLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQztxREFBOEM7QUFDMUM7SUFBbEMsU0FBUyxDQUFDLGNBQWMsQ0FBQztnREFBb0M7QUFDbEM7SUFBM0IsU0FBUyxDQUFDLE9BQU8sQ0FBQzt5Q0FBc0I7QUFDRjtJQUF0QyxTQUFTLENBQUMsa0JBQWtCLENBQUM7b0RBQTZDO0FBTmxFLFVBQVU7SUFEdEIsSUFBSSxDQUFDLFlBQVksQ0FBQztHQUNOLFVBQVUsQ0F5c0J0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgXyxcbiAgICBBdXRvd2lyZWQsXG4gICAgQmVhbixcbiAgICBCZWFuU3R1YixcbiAgICBDaGFuZ2VkUGF0aCxcbiAgICBDb2x1bW4sXG4gICAgQ29sdW1uTW9kZWwsXG4gICAgR2V0RGF0YVBhdGgsXG4gICAgSVJvd05vZGVTdGFnZSxcbiAgICBJc0dyb3VwT3BlbkJ5RGVmYXVsdFBhcmFtcyxcbiAgICBSb3dOb2RlLFxuICAgIFJvd05vZGVUcmFuc2FjdGlvbixcbiAgICBTZWxlY3RhYmxlU2VydmljZSxcbiAgICBTdGFnZUV4ZWN1dGVQYXJhbXMsXG4gICAgVmFsdWVTZXJ2aWNlLFxuICAgIEJlYW5zLFxuICAgIElTZWxlY3Rpb25TZXJ2aWNlLFxuICAgIFdpdGhvdXRHcmlkQ29tbW9uLFxuICAgIEluaXRpYWxHcm91cE9yZGVyQ29tcGFyYXRvclBhcmFtcyxcbiAgICBHcmlkT3B0aW9ucyxcbiAgICBLZXlDcmVhdG9yUGFyYW1zXG59IGZyb20gXCJAYWctZ3JpZC1jb21tdW5pdHkvY29yZVwiO1xuaW1wb3J0IHsgQmF0Y2hSZW1vdmVyIH0gZnJvbSBcIi4vYmF0Y2hSZW1vdmVyXCI7XG5cbmludGVyZmFjZSBHcm91cEluZm8ge1xuICAgIGtleTogc3RyaW5nOyAvLyBlLmcuICdJcmVsYW5kJ1xuICAgIGZpZWxkOiBzdHJpbmcgfCBudWxsOyAvLyBlLmcuICdjb3VudHJ5J1xuICAgIHJvd0dyb3VwQ29sdW1uOiBDb2x1bW4gfCBudWxsO1xuICAgIGxlYWZOb2RlPzogUm93Tm9kZTtcbn1cblxuaW50ZXJmYWNlIEdyb3VwaW5nRGV0YWlscyB7XG4gICAgcGl2b3RNb2RlOiBib29sZWFuO1xuICAgIGluY2x1ZGVQYXJlbnRzOiBib29sZWFuO1xuICAgIGV4cGFuZEJ5RGVmYXVsdDogbnVtYmVyO1xuICAgIGNoYW5nZWRQYXRoOiBDaGFuZ2VkUGF0aDtcbiAgICByb290Tm9kZTogUm93Tm9kZTtcbiAgICBncm91cGVkQ29sczogQ29sdW1uW107XG4gICAgZ3JvdXBlZENvbENvdW50OiBudW1iZXI7XG4gICAgdHJhbnNhY3Rpb25zOiBSb3dOb2RlVHJhbnNhY3Rpb25bXTtcbiAgICByb3dOb2RlT3JkZXI6IHsgW2lkOiBzdHJpbmddOiBudW1iZXI7IH07XG4gICAgXG4gICAgZ3JvdXBBbGxvd1VuYmFsYW5jZWQ6IGJvb2xlYW47XG4gICAgaXNHcm91cE9wZW5CeURlZmF1bHQ6IChwYXJhbXM6IFdpdGhvdXRHcmlkQ29tbW9uPElzR3JvdXBPcGVuQnlEZWZhdWx0UGFyYW1zPikgPT4gYm9vbGVhbjtcbiAgICBpbml0aWFsR3JvdXBPcmRlckNvbXBhcmF0b3I6IChwYXJhbXM6IFdpdGhvdXRHcmlkQ29tbW9uPEluaXRpYWxHcm91cE9yZGVyQ29tcGFyYXRvclBhcmFtcz4pID0+IG51bWJlcjtcbiAgICBcbiAgICB1c2luZ1RyZWVEYXRhOiBib29sZWFuO1xuICAgIHN1cHByZXNzR3JvdXBNYWludGFpblZhbHVlVHlwZTogYm9vbGVhbjtcbiAgICBnZXREYXRhUGF0aDogR2V0RGF0YVBhdGggfCB1bmRlZmluZWQ7XG4gICAga2V5Q3JlYXRvcnM6ICgoKHBhcmFtczogS2V5Q3JlYXRvclBhcmFtcykgPT4gc3RyaW5nKSB8IHVuZGVmaW5lZClbXTtcbn1cblxuQEJlYW4oJ2dyb3VwU3RhZ2UnKVxuZXhwb3J0IGNsYXNzIEdyb3VwU3RhZ2UgZXh0ZW5kcyBCZWFuU3R1YiBpbXBsZW1lbnRzIElSb3dOb2RlU3RhZ2Uge1xuXG4gICAgQEF1dG93aXJlZCgnY29sdW1uTW9kZWwnKSBwcml2YXRlIGNvbHVtbk1vZGVsOiBDb2x1bW5Nb2RlbDtcbiAgICBAQXV0b3dpcmVkKCdzZWxlY3RhYmxlU2VydmljZScpIHByaXZhdGUgc2VsZWN0YWJsZVNlcnZpY2U6IFNlbGVjdGFibGVTZXJ2aWNlO1xuICAgIEBBdXRvd2lyZWQoJ3ZhbHVlU2VydmljZScpIHByaXZhdGUgdmFsdWVTZXJ2aWNlOiBWYWx1ZVNlcnZpY2U7XG4gICAgQEF1dG93aXJlZCgnYmVhbnMnKSBwcml2YXRlIGJlYW5zOiBCZWFucztcbiAgICBAQXV0b3dpcmVkKCdzZWxlY3Rpb25TZXJ2aWNlJykgcHJpdmF0ZSBzZWxlY3Rpb25TZXJ2aWNlOiBJU2VsZWN0aW9uU2VydmljZTtcblxuICAgIC8vIHdoZW4gZ3JvdXBpbmcsIHRoZXNlIGl0ZW1zIGFyZSBvZiBub3RlOlxuICAgIC8vIHJvd05vZGUucGFyZW50OiBSb3dOb2RlOiBzZXQgdG8gdGhlIHBhcmVudFxuICAgIC8vIHJvd05vZGUuY2hpbGRyZW5BZnRlckdyb3VwOiBSb3dOb2RlW10gPSB0aGUgZGlyZWN0IGNoaWxkcmVuIG9mIHRoaXMgZ3JvdXBcbiAgICAvLyByb3dOb2RlLmNoaWxkcmVuTWFwcGVkOiBzdHJpbmc9PlJvd05vZGUgPSBjaGlsZHJlbiBtYXBwZWQgYnkgZ3JvdXAga2V5ICh3aGVuIGdyb3Vwcykgb3IgYW4gZW1wdHkgbWFwIGlmIGxlYWYgZ3JvdXAgKHRoaXMgaXMgdGhlbiB1c2VkIGJ5IHBpdm90KVxuICAgIC8vIGZvciBsZWFmIGdyb3Vwcywgcm93Tm9kZS5jaGlsZHJlbkFmdGVyR3JvdXAgPSByb3dOb2RlLmFsbExlYWZDaGlsZHJlbjtcblxuICAgIHByaXZhdGUgb2xkR3JvdXBpbmdEZXRhaWxzOiBHcm91cGluZ0RldGFpbHM7XG4gICAgcHJpdmF0ZSBvbGRHcm91cERpc3BsYXlDb2xJZHM6IHN0cmluZztcblxuICAgIHB1YmxpYyBleGVjdXRlKHBhcmFtczogU3RhZ2VFeGVjdXRlUGFyYW1zKTogdm9pZCB7XG5cbiAgICAgICAgY29uc3QgZGV0YWlscyA9IHRoaXMuY3JlYXRlR3JvdXBpbmdEZXRhaWxzKHBhcmFtcyk7XG5cbiAgICAgICAgaWYgKGRldGFpbHMudHJhbnNhY3Rpb25zKSB7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZVRyYW5zYWN0aW9uKGRldGFpbHMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgYWZ0ZXJDb2xzQ2hhbmdlZCA9IHBhcmFtcy5hZnRlckNvbHVtbnNDaGFuZ2VkID09PSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5zaG90Z3VuUmVzZXRFdmVyeXRoaW5nKGRldGFpbHMsIGFmdGVyQ29sc0NoYW5nZWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFkZXRhaWxzLnVzaW5nVHJlZURhdGEpIHtcbiAgICAgICAgICAgIC8vIHdlIGRvbid0IGRvIGdyb3VwIHNvcnRpbmcgZm9yIHRyZWUgZGF0YVxuICAgICAgICAgICAgdGhpcy5wb3NpdGlvbkxlYWZzQW5kR3JvdXBzKHBhcmFtcy5jaGFuZ2VkUGF0aCEpO1xuICAgICAgICAgICAgdGhpcy5vcmRlckdyb3VwcyhkZXRhaWxzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2VsZWN0YWJsZVNlcnZpY2UudXBkYXRlU2VsZWN0YWJsZUFmdGVyR3JvdXBpbmcoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHBvc2l0aW9uTGVhZnNBbmRHcm91cHMoY2hhbmdlZFBhdGg6IENoYW5nZWRQYXRoKSB7XG4gICAgICAgIGNoYW5nZWRQYXRoLmZvckVhY2hDaGFuZ2VkTm9kZURlcHRoRmlyc3QoZ3JvdXAgPT4ge1xuICAgICAgICAgICAgaWYgKGdyb3VwLmNoaWxkcmVuQWZ0ZXJHcm91cCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGxlYWZOb2RlczogUm93Tm9kZVtdID0gW107XG4gICAgICAgICAgICAgICAgY29uc3QgZ3JvdXBOb2RlczogUm93Tm9kZVtdID0gW107XG4gICAgICAgICAgICAgICAgbGV0IHVuYmFsYW5jZWROb2RlOiBSb3dOb2RlIHwgdW5kZWZpbmVkO1xuXG4gICAgICAgICAgICAgICAgZ3JvdXAuY2hpbGRyZW5BZnRlckdyb3VwLmZvckVhY2gocm93ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFyb3cuY2hpbGRyZW5BZnRlckdyb3VwPy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxlYWZOb2Rlcy5wdXNoKHJvdyk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocm93LmtleSA9PT0gJycgJiYgIXVuYmFsYW5jZWROb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5iYWxhbmNlZE5vZGUgPSByb3c7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwTm9kZXMucHVzaChyb3cpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICBpZiAodW5iYWxhbmNlZE5vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgZ3JvdXBOb2Rlcy5wdXNoKHVuYmFsYW5jZWROb2RlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgZ3JvdXAuY2hpbGRyZW5BZnRlckdyb3VwID0gWy4uLmxlYWZOb2RlcywgLi4uZ3JvdXBOb2Rlc107XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIGZhbHNlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZUdyb3VwaW5nRGV0YWlscyhwYXJhbXM6IFN0YWdlRXhlY3V0ZVBhcmFtcyk6IEdyb3VwaW5nRGV0YWlscyB7XG4gICAgICAgIGNvbnN0IHsgcm93Tm9kZSwgY2hhbmdlZFBhdGgsIHJvd05vZGVUcmFuc2FjdGlvbnMsIHJvd05vZGVPcmRlciB9ID0gcGFyYW1zO1xuXG4gICAgICAgIGNvbnN0IHVzaW5nVHJlZURhdGEgPSB0aGlzLmdvcy5nZXQoJ3RyZWVEYXRhJyk7XG5cbiAgICAgICAgY29uc3QgZ3JvdXBlZENvbHMgPSB1c2luZ1RyZWVEYXRhID8gbnVsbCA6IHRoaXMuY29sdW1uTW9kZWwuZ2V0Um93R3JvdXBDb2x1bW5zKCk7XG5cbiAgICAgICAgY29uc3QgZGV0YWlsczogR3JvdXBpbmdEZXRhaWxzID0ge1xuICAgICAgICAgICAgLy8gc29tZW9uZSBjb21wbGFpbmVkIHRoYXQgdGhlIHBhcmVudCBhdHRyaWJ1dGUgd2FzIGNhdXNpbmcgc29tZSBjaGFuZ2UgZGV0ZWN0aW9uXG4gICAgICAgICAgICAvLyB0byBicmVhayBpbiBhbiBhbmd1bGFyIGFkZC1vbi4gIFRha2luZyB0aGUgcGFyZW50IG91dCBicmVha3MgYSBjeWNsaWMgZGVwZW5kZW5jeSwgaGVuY2UgdGhpcyBmbGFnIGdvdCBpbnRyb2R1Y2VkLlxuICAgICAgICAgICAgaW5jbHVkZVBhcmVudHM6ICF0aGlzLmdvcy5nZXQoJ3N1cHByZXNzUGFyZW50c0luUm93Tm9kZXMnKSxcbiAgICAgICAgICAgIGV4cGFuZEJ5RGVmYXVsdDogdGhpcy5nb3MuZ2V0KCdncm91cERlZmF1bHRFeHBhbmRlZCcpLFxuICAgICAgICAgICAgZ3JvdXBlZENvbHM6IGdyb3VwZWRDb2xzISxcbiAgICAgICAgICAgIHJvb3ROb2RlOiByb3dOb2RlLFxuICAgICAgICAgICAgcGl2b3RNb2RlOiB0aGlzLmNvbHVtbk1vZGVsLmlzUGl2b3RNb2RlKCksXG4gICAgICAgICAgICBncm91cGVkQ29sQ291bnQ6IHVzaW5nVHJlZURhdGEgfHwgIWdyb3VwZWRDb2xzID8gMCA6IGdyb3VwZWRDb2xzLmxlbmd0aCxcbiAgICAgICAgICAgIHJvd05vZGVPcmRlcjogcm93Tm9kZU9yZGVyISxcbiAgICAgICAgICAgIHRyYW5zYWN0aW9uczogcm93Tm9kZVRyYW5zYWN0aW9ucyEsXG4gICAgICAgICAgICAvLyBpZiBubyB0cmFuc2FjdGlvbiwgdGhlbiBpdCdzIHNob3RndW4sIGNoYW5nZWQgcGF0aCB3b3VsZCBiZSAnbm90IGFjdGl2ZScgYXQgdGhpcyBwb2ludCBhbnl3YXlcbiAgICAgICAgICAgIGNoYW5nZWRQYXRoOiBjaGFuZ2VkUGF0aCEsXG4gICAgICAgICAgICBncm91cEFsbG93VW5iYWxhbmNlZDogIHRoaXMuZ29zLmdldCgnZ3JvdXBBbGxvd1VuYmFsYW5jZWQnKSxcbiAgICAgICAgICAgIGlzR3JvdXBPcGVuQnlEZWZhdWx0OiB0aGlzLmdvcy5nZXRDYWxsYmFjaygnaXNHcm91cE9wZW5CeURlZmF1bHQnKSBhcyBhbnksXG4gICAgICAgICAgICBpbml0aWFsR3JvdXBPcmRlckNvbXBhcmF0b3I6IHRoaXMuZ29zLmdldENhbGxiYWNrKCdpbml0aWFsR3JvdXBPcmRlckNvbXBhcmF0b3InKSBhcyBhbnksXG4gICAgICAgICAgICB1c2luZ1RyZWVEYXRhOiB1c2luZ1RyZWVEYXRhLFxuICAgICAgICAgICAgc3VwcHJlc3NHcm91cE1haW50YWluVmFsdWVUeXBlOiB0aGlzLmdvcy5nZXQoJ3N1cHByZXNzR3JvdXBNYWludGFpblZhbHVlVHlwZScpLFxuICAgICAgICAgICAgZ2V0RGF0YVBhdGg6IHVzaW5nVHJlZURhdGEgPyB0aGlzLmdvcy5nZXQoJ2dldERhdGFQYXRoJykgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBrZXlDcmVhdG9yczogZ3JvdXBlZENvbHM/Lm1hcChjb2x1bW4gPT4gY29sdW1uLmdldENvbERlZigpLmtleUNyZWF0b3IpID8/IFtdXG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIGRldGFpbHM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVUcmFuc2FjdGlvbihkZXRhaWxzOiBHcm91cGluZ0RldGFpbHMpOiB2b2lkIHtcblxuICAgICAgICBkZXRhaWxzLnRyYW5zYWN0aW9ucy5mb3JFYWNoKHRyYW4gPT4ge1xuICAgICAgICAgICAgLy8gd2UgZG9uJ3QgYWxsb3cgYmF0Y2ggcmVtb3ZlciBmb3IgdHJlZSBkYXRhIGFzIHRyZWUgZGF0YSB1c2VzIEZpbGxlciBOb2RlcyxcbiAgICAgICAgICAgIC8vIGFuZCBjcmVhdGluZy9kZWxldGluZyBmaWxsZXIgbm9kZXMgbmVlZHMgdG8gYmUgZG9uZSBhbG9uZ3NpZGUgdGhlIG5vZGUgZGVsZXRpbmdcbiAgICAgICAgICAgIC8vIGFuZCBtb3ZpbmcuIGlmIHdlIHdhbnQgdG8gQmF0Y2ggUmVtb3ZlciB3b3JraW5nIHdpdGggdHJlZSBkYXRhIHRoZW4gd291bGQgbmVlZFxuICAgICAgICAgICAgLy8gdG8gY29uc2lkZXIgaG93IEZpbGxlciBOb2RlcyB3b3VsZCBiZSBpbXBhY3RlZCAoaXQncyBwb3NzaWJsZSB0aGF0IGl0IGNhbiBiZSBlYXNpbHlcbiAgICAgICAgICAgIC8vIG1vZGlmaWVkIHRvIHdvcmssIGhvd2V2ZXIgZm9yIG5vdyBJIGRvbid0IGhhdmUgdGhlIGJyYWluIGVuZXJneSB0byB3b3JrIGl0IGFsbCBvdXQpLlxuICAgICAgICAgICAgY29uc3QgYmF0Y2hSZW1vdmVyID0gIWRldGFpbHMudXNpbmdUcmVlRGF0YSA/IG5ldyBCYXRjaFJlbW92ZXIoKSA6IHVuZGVmaW5lZDtcblxuICAgICAgICAgICAgLy8gdGhlIG9yZGVyIGhlcmUgb2YgW2FkZCwgcmVtb3ZlLCB1cGRhdGVdIG5lZWRzIHRvIGJlIHRoZSBzYW1lIGFzIGluIENsaWVudFNpZGVOb2RlTWFuYWdlcixcbiAgICAgICAgICAgIC8vIGFzIHRoZSBvcmRlciBpcyBpbXBvcnRhbnQgd2hlbiBhIHJlY29yZCB3aXRoIHRoZSBzYW1lIGlkIGlzIGFkZGVkIGFuZCByZW1vdmVkIGluIHRoZSBzYW1lXG4gICAgICAgICAgICAvLyB0cmFuc2FjdGlvbi5cbiAgICAgICAgICAgIGlmIChfLmV4aXN0c0FuZE5vdEVtcHR5KHRyYW4ucmVtb3ZlKSkge1xuICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlTm9kZXModHJhbi5yZW1vdmUgYXMgUm93Tm9kZVtdLCBkZXRhaWxzLCBiYXRjaFJlbW92ZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKF8uZXhpc3RzQW5kTm90RW1wdHkodHJhbi51cGRhdGUpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5tb3ZlTm9kZXNJbldyb25nUGF0aCh0cmFuLnVwZGF0ZSBhcyBSb3dOb2RlW10sIGRldGFpbHMsIGJhdGNoUmVtb3Zlcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoXy5leGlzdHNBbmROb3RFbXB0eSh0cmFuLmFkZCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmluc2VydE5vZGVzKHRyYW4uYWRkIGFzIFJvd05vZGVbXSwgZGV0YWlscywgZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gbXVzdCBmbHVzaCBoZXJlLCBhbmQgbm90IGFsbG93IGFub3RoZXIgdHJhbnNhY3Rpb24gdG8gYmUgYXBwbGllZCxcbiAgICAgICAgICAgIC8vIGFzIGVhY2ggdHJhbnNhY3Rpb24gbXVzdCBmaW5pc2ggbGVhdmluZyB0aGUgZGF0YSBpbiBhIGNvbnNpc3RlbnQgc3RhdGUuXG4gICAgICAgICAgICBpZiAoYmF0Y2hSZW1vdmVyKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcGFyZW50c1dpdGhDaGlsZHJlblJlbW92ZWQgPSBiYXRjaFJlbW92ZXIuZ2V0QWxsUGFyZW50cygpLnNsaWNlKCk7XG4gICAgICAgICAgICAgICAgYmF0Y2hSZW1vdmVyLmZsdXNoKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVFbXB0eUdyb3VwcyhwYXJlbnRzV2l0aENoaWxkcmVuUmVtb3ZlZCwgZGV0YWlscyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChkZXRhaWxzLnJvd05vZGVPcmRlcikge1xuICAgICAgICAgICAgdGhpcy5zb3J0Q2hpbGRyZW4oZGV0YWlscyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyB0aGlzIGlzIHVzZWQgd2hlbiBkb2luZyBkZWx0YSB1cGRhdGVzLCBlZyBSZWR1eCwga2VlcHMgbm9kZXMgaW4gcmlnaHQgb3JkZXJcbiAgICBwcml2YXRlIHNvcnRDaGlsZHJlbihkZXRhaWxzOiBHcm91cGluZ0RldGFpbHMpOiB2b2lkIHtcbiAgICAgICAgZGV0YWlscy5jaGFuZ2VkUGF0aC5mb3JFYWNoQ2hhbmdlZE5vZGVEZXB0aEZpcnN0KG5vZGUgPT4ge1xuICAgICAgICAgICAgaWYgKCFub2RlLmNoaWxkcmVuQWZ0ZXJHcm91cCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgZGlkU29ydCA9IF8uc29ydFJvd05vZGVzQnlPcmRlcihub2RlLmNoaWxkcmVuQWZ0ZXJHcm91cCEsIGRldGFpbHMucm93Tm9kZU9yZGVyKTtcbiAgICAgICAgICAgIGlmIChkaWRTb3J0KSB7XG4gICAgICAgICAgICAgICAgZGV0YWlscy5jaGFuZ2VkUGF0aC5hZGRQYXJlbnROb2RlKG5vZGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCBmYWxzZSwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvcmRlckdyb3VwcyhkZXRhaWxzOiBHcm91cGluZ0RldGFpbHMpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY29tcGFyYXRvciA9IGRldGFpbHMuaW5pdGlhbEdyb3VwT3JkZXJDb21wYXJhdG9yO1xuICAgICAgICBpZiAoXy5leGlzdHMoY29tcGFyYXRvcikpIHsgcmVjdXJzaXZlU29ydChkZXRhaWxzLnJvb3ROb2RlKTsgfVxuXG4gICAgICAgIGZ1bmN0aW9uIHJlY3Vyc2l2ZVNvcnQocm93Tm9kZTogUm93Tm9kZSk6IHZvaWQge1xuICAgICAgICAgICAgY29uc3QgZG9Tb3J0ID0gXy5leGlzdHMocm93Tm9kZS5jaGlsZHJlbkFmdGVyR3JvdXApICYmXG4gICAgICAgICAgICAgICAgLy8gd2Ugb25seSB3YW50IHRvIHNvcnQgZ3JvdXBzLCBzbyB3ZSBkbyBub3Qgc29ydCBsZWFmcyAoYSBsZWFmIGdyb3VwIGhhcyBsZWFmcyBhcyBjaGlsZHJlbilcbiAgICAgICAgICAgICAgICAhcm93Tm9kZS5sZWFmR3JvdXA7XG5cbiAgICAgICAgICAgIGlmIChkb1NvcnQpIHtcbiAgICAgICAgICAgICAgICByb3dOb2RlLmNoaWxkcmVuQWZ0ZXJHcm91cCEuc29ydCgobm9kZUEsIG5vZGVCKSA9PiBjb21wYXJhdG9yISh7IG5vZGVBLCBub2RlQiB9KSk7XG4gICAgICAgICAgICAgICAgcm93Tm9kZS5jaGlsZHJlbkFmdGVyR3JvdXAhLmZvckVhY2goKGNoaWxkTm9kZTogUm93Tm9kZSkgPT4gcmVjdXJzaXZlU29ydChjaGlsZE5vZGUpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0RXhpc3RpbmdQYXRoRm9yTm9kZShub2RlOiBSb3dOb2RlLCBkZXRhaWxzOiBHcm91cGluZ0RldGFpbHMpOiBHcm91cEluZm9bXSB7XG4gICAgICAgIGNvbnN0IHJlczogR3JvdXBJbmZvW10gPSBbXTtcblxuICAgICAgICAvLyB3aGVuIGRvaW5nIHRyZWUgZGF0YSwgdGhlIG5vZGUgaXMgcGFydCBvZiB0aGUgcGF0aCxcbiAgICAgICAgLy8gYnV0IHdoZW4gZG9pbmcgZ3JpZCBncm91cGluZywgdGhlIG5vZGUgaXMgbm90IHBhcnQgb2YgdGhlIHBhdGggc28gd2Ugc3RhcnQgd2l0aCB0aGUgcGFyZW50LlxuICAgICAgICBsZXQgcG9pbnRlciA9IGRldGFpbHMudXNpbmdUcmVlRGF0YSA/IG5vZGUgOiBub2RlLnBhcmVudDtcbiAgICAgICAgd2hpbGUgKHBvaW50ZXIgJiYgcG9pbnRlciAhPT0gZGV0YWlscy5yb290Tm9kZSkge1xuICAgICAgICAgICAgcmVzLnB1c2goe1xuICAgICAgICAgICAgICAgIGtleTogcG9pbnRlci5rZXkhLFxuICAgICAgICAgICAgICAgIHJvd0dyb3VwQ29sdW1uOiBwb2ludGVyLnJvd0dyb3VwQ29sdW1uLFxuICAgICAgICAgICAgICAgIGZpZWxkOiBwb2ludGVyLmZpZWxkXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHBvaW50ZXIgPSBwb2ludGVyLnBhcmVudDtcbiAgICAgICAgfVxuICAgICAgICByZXMucmV2ZXJzZSgpO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIHByaXZhdGUgbW92ZU5vZGVzSW5Xcm9uZ1BhdGgoY2hpbGROb2RlczogUm93Tm9kZVtdLCBkZXRhaWxzOiBHcm91cGluZ0RldGFpbHMsIGJhdGNoUmVtb3ZlcjogQmF0Y2hSZW1vdmVyIHwgdW5kZWZpbmVkKTogdm9pZCB7XG4gICAgICAgIGNoaWxkTm9kZXMuZm9yRWFjaChjaGlsZE5vZGUgPT4ge1xuXG4gICAgICAgICAgICAvLyB3ZSBhZGQgbm9kZSwgZXZlbiBpZiBwYXJlbnQgaGFzIG5vdCBjaGFuZ2VkLCBhcyB0aGUgZGF0YSBjb3VsZCBoYXZlXG4gICAgICAgICAgICAvLyBjaGFuZ2VkLCBoZW5jZSBhZ2dyZWdhdGlvbnMgd2lsbCBiZSB3cm9uZ1xuICAgICAgICAgICAgaWYgKGRldGFpbHMuY2hhbmdlZFBhdGguaXNBY3RpdmUoKSkge1xuICAgICAgICAgICAgICAgIGRldGFpbHMuY2hhbmdlZFBhdGguYWRkUGFyZW50Tm9kZShjaGlsZE5vZGUucGFyZW50KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgaW5mb1RvS2V5TWFwcGVyID0gKGl0ZW06IEdyb3VwSW5mbykgPT4gaXRlbS5rZXk7XG4gICAgICAgICAgICBjb25zdCBvbGRQYXRoOiBzdHJpbmdbXSA9IHRoaXMuZ2V0RXhpc3RpbmdQYXRoRm9yTm9kZShjaGlsZE5vZGUsIGRldGFpbHMpLm1hcChpbmZvVG9LZXlNYXBwZXIpO1xuICAgICAgICAgICAgY29uc3QgbmV3UGF0aDogc3RyaW5nW10gPSB0aGlzLmdldEdyb3VwSW5mbyhjaGlsZE5vZGUsIGRldGFpbHMpLm1hcChpbmZvVG9LZXlNYXBwZXIpO1xuXG4gICAgICAgICAgICBjb25zdCBub2RlSW5Db3JyZWN0UGF0aCA9IF8uYXJlRXF1YWwob2xkUGF0aCwgbmV3UGF0aCk7XG5cbiAgICAgICAgICAgIGlmICghbm9kZUluQ29ycmVjdFBhdGgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm1vdmVOb2RlKGNoaWxkTm9kZSwgZGV0YWlscywgYmF0Y2hSZW1vdmVyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtb3ZlTm9kZShjaGlsZE5vZGU6IFJvd05vZGUsIGRldGFpbHM6IEdyb3VwaW5nRGV0YWlscywgYmF0Y2hSZW1vdmVyOiBCYXRjaFJlbW92ZXIgfCB1bmRlZmluZWQpOiB2b2lkIHtcblxuICAgICAgICB0aGlzLnJlbW92ZU5vZGVzSW5TdGFnZXMoW2NoaWxkTm9kZV0sIGRldGFpbHMsIGJhdGNoUmVtb3Zlcik7XG4gICAgICAgIHRoaXMuaW5zZXJ0T25lTm9kZShjaGlsZE5vZGUsIGRldGFpbHMsIHRydWUsIGJhdGNoUmVtb3Zlcik7XG5cbiAgICAgICAgLy8gaGFjayAtIGlmIHdlIGRpZG4ndCBkbyB0aGlzLCB0aGVuIHJlbmFtaW5nIGEgdHJlZSBpdGVtIChpZSBjaGFuZ2luZyByb3dOb2RlLmtleSkgd291bGRuJ3QgZ2V0XG4gICAgICAgIC8vIHJlZnJlc2hlZCBpbnRvIHRoZSBndWkuXG4gICAgICAgIC8vIHRoaXMgaXMgbmVlZGVkIHRvIGtpY2sgb2ZmIHRoZSBldmVudCB0aGF0IHJvd0NvbXAgbGlzdGVucyB0byBmb3IgcmVmcmVzaC4gdGhpcyBpbiB0dXJuXG4gICAgICAgIC8vIHRoZW4gd2lsbCBnZXQgZWFjaCBjZWxsIGluIHRoZSByb3cgdG8gcmVmcmVzaCAtIHdoaWNoIGlzIHdoYXQgd2UgbmVlZCBhcyB3ZSBkb24ndCBrbm93IHdoaWNoXG4gICAgICAgIC8vIGNvbHVtbnMgd2lsbCBiZSBkaXNwbGF5aW5nIHRoZSByb3dOb2RlLmtleSBpbmZvLlxuICAgICAgICBjaGlsZE5vZGUuc2V0RGF0YShjaGlsZE5vZGUuZGF0YSk7XG5cbiAgICAgICAgLy8gd2UgYWRkIGJvdGggb2xkIGFuZCBuZXcgcGFyZW50cyB0byBjaGFuZ2VkIHBhdGgsIGFzIGJvdGggd2lsbCBuZWVkIHRvIGJlIHJlZnJlc2hlZC5cbiAgICAgICAgLy8gd2UgYWxyZWFkeSBhZGRlZCB0aGUgb2xkIHBhcmVudCAoaW4gY2FsbGluZyBtZXRob2QpLCBzbyBqdXN0IGFkZCB0aGUgbmV3IHBhcmVudCBoZXJlXG4gICAgICAgIGlmIChkZXRhaWxzLmNoYW5nZWRQYXRoLmlzQWN0aXZlKCkpIHtcbiAgICAgICAgICAgIGNvbnN0IG5ld1BhcmVudCA9IGNoaWxkTm9kZS5wYXJlbnQ7XG4gICAgICAgICAgICBkZXRhaWxzLmNoYW5nZWRQYXRoLmFkZFBhcmVudE5vZGUobmV3UGFyZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgcmVtb3ZlTm9kZXMobGVhZlJvd05vZGVzOiBSb3dOb2RlW10sIGRldGFpbHM6IEdyb3VwaW5nRGV0YWlscywgYmF0Y2hSZW1vdmVyOiBCYXRjaFJlbW92ZXIgfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yZW1vdmVOb2Rlc0luU3RhZ2VzKGxlYWZSb3dOb2RlcywgZGV0YWlscywgYmF0Y2hSZW1vdmVyKTtcbiAgICAgICAgaWYgKGRldGFpbHMuY2hhbmdlZFBhdGguaXNBY3RpdmUoKSkge1xuICAgICAgICAgICAgbGVhZlJvd05vZGVzLmZvckVhY2gocm93Tm9kZSA9PiBkZXRhaWxzLmNoYW5nZWRQYXRoLmFkZFBhcmVudE5vZGUocm93Tm9kZS5wYXJlbnQpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgcmVtb3ZlTm9kZXNJblN0YWdlcyhsZWFmUm93Tm9kZXM6IFJvd05vZGVbXSwgZGV0YWlsczogR3JvdXBpbmdEZXRhaWxzLCBiYXRjaFJlbW92ZXI6IEJhdGNoUmVtb3ZlciB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgICAgICB0aGlzLnJlbW92ZU5vZGVzRnJvbVBhcmVudHMobGVhZlJvd05vZGVzLCBkZXRhaWxzLCBiYXRjaFJlbW92ZXIpO1xuICAgICAgICBpZiAoZGV0YWlscy51c2luZ1RyZWVEYXRhKSB7XG4gICAgICAgICAgICB0aGlzLnBvc3RSZW1vdmVDcmVhdGVGaWxsZXJOb2RlcyhsZWFmUm93Tm9kZXMsIGRldGFpbHMpO1xuXG4gICAgICAgICAgICAvLyBXaGVuIG5vdCBUcmVlRGF0YSwgdGhlbiByZW1vdmVFbXB0eUdyb3VwcyBpcyBjYWxsZWQganVzdCBiZWZvcmUgdGhlIEJhdGNoUmVtb3ZlciBpcyBmbHVzaGVkLlxuICAgICAgICAgICAgLy8gSG93ZXZlciBmb3IgVHJlZURhdGEsIHRoZXJlIGlzIG5vIEJhdGNoUmVtb3Zlciwgc28gd2UgaGF2ZSB0byBjYWxsIHJlbW92ZUVtcHR5R3JvdXBzIGhlcmUuXG4gICAgICAgICAgICBjb25zdCBub2RlUGFyZW50cyA9IGxlYWZSb3dOb2Rlcy5tYXAobiA9PiBuLnBhcmVudCEpO1xuICAgICAgICAgICAgdGhpcy5yZW1vdmVFbXB0eUdyb3Vwcyhub2RlUGFyZW50cywgZGV0YWlscyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGZvckVhY2hQYXJlbnRHcm91cChkZXRhaWxzOiBHcm91cGluZ0RldGFpbHMsIGdyb3VwOiBSb3dOb2RlLCBjYWxsYmFjazogKHBhcmVudDogUm93Tm9kZSkgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICBsZXQgcG9pbnRlcjogUm93Tm9kZSB8IG51bGwgPSBncm91cDtcbiAgICAgICAgd2hpbGUgKHBvaW50ZXIgJiYgcG9pbnRlciAhPT0gZGV0YWlscy5yb290Tm9kZSkge1xuICAgICAgICAgICAgY2FsbGJhY2socG9pbnRlcik7XG4gICAgICAgICAgICBwb2ludGVyID0gcG9pbnRlci5wYXJlbnQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHJlbW92ZU5vZGVzRnJvbVBhcmVudHMobm9kZXNUb1JlbW92ZTogUm93Tm9kZVtdLCBkZXRhaWxzOiBHcm91cGluZ0RldGFpbHMsIHByb3ZpZGVkOiBCYXRjaFJlbW92ZXIgfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgICAgICAgLy8gdGhpcyBtZXRob2QgY2FuIGJlIGNhbGxlZCB3aXRoIEJhdGNoUmVtb3ZlciBhcyBvcHRpb25hbC4gaWYgaXQgaXMgbWlzc2VkLCB3ZSBjcmVhdGVkIGEgbG9jYWwgdmVyc2lvblxuICAgICAgICAvLyBhbmQgZmx1c2ggaXQgYXQgdGhlIGVuZC4gaWYgb25lIGlzIHByb3ZpZGVkLCB3ZSBhZGQgdG8gdGhlIHByb3ZpZGVkIG9uZSBhbmQgaXQgZ2V0cyBmbHVzaGVkIGVsc2V3aGVyZS5cbiAgICAgICAgY29uc3QgYmF0Y2hSZW1vdmVySXNMb2NhbCA9IHByb3ZpZGVkID09IG51bGw7XG4gICAgICAgIGNvbnN0IGJhdGNoUmVtb3ZlclRvVXNlID0gcHJvdmlkZWQgPyBwcm92aWRlZCA6IG5ldyBCYXRjaFJlbW92ZXIoKTtcblxuICAgICAgICBub2Rlc1RvUmVtb3ZlLmZvckVhY2gobm9kZVRvUmVtb3ZlID0+IHtcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlRnJvbVBhcmVudChub2RlVG9SZW1vdmUsIGJhdGNoUmVtb3ZlclRvVXNlKTtcblxuICAgICAgICAgICAgLy8gcmVtb3ZlIGZyb20gYWxsTGVhZkNoaWxkcmVuLiB3ZSBjbGVhciBkb3duIGFsbCBwYXJlbnRzIEVYQ0VQVCB0aGUgUm9vdCBOb2RlLCBhc1xuICAgICAgICAgICAgLy8gdGhlIENsaWVudFNpZGVOb2RlTWFuYWdlciBpcyByZXNwb25zaWJsZSBmb3IgdGhlIFJvb3QgTm9kZS5cbiAgICAgICAgICAgIHRoaXMuZm9yRWFjaFBhcmVudEdyb3VwKGRldGFpbHMsIG5vZGVUb1JlbW92ZS5wYXJlbnQhLCBwYXJlbnROb2RlID0+IHtcbiAgICAgICAgICAgICAgICBiYXRjaFJlbW92ZXJUb1VzZS5yZW1vdmVGcm9tQWxsTGVhZkNoaWxkcmVuKHBhcmVudE5vZGUsIG5vZGVUb1JlbW92ZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKGJhdGNoUmVtb3ZlcklzTG9jYWwpIHtcbiAgICAgICAgICAgIGJhdGNoUmVtb3ZlclRvVXNlLmZsdXNoKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHBvc3RSZW1vdmVDcmVhdGVGaWxsZXJOb2Rlcyhub2Rlc1RvUmVtb3ZlOiBSb3dOb2RlW10sIGRldGFpbHM6IEdyb3VwaW5nRGV0YWlscyk6IHZvaWQge1xuICAgICAgICBub2Rlc1RvUmVtb3ZlLmZvckVhY2gobm9kZVRvUmVtb3ZlID0+IHtcblxuICAgICAgICAgICAgLy8gaWYgbm90IGdyb3VwLCBhbmQgY2hpbGRyZW4gYXJlIHByZXNlbnQsIG5lZWQgdG8gbW92ZSBjaGlsZHJlbiB0byBhIGdyb3VwLlxuICAgICAgICAgICAgLy8gb3RoZXJ3aXNlIGlmIG5vIGNoaWxkcmVuLCB3ZSBjYW4ganVzdCByZW1vdmUgd2l0aG91dCByZXBsYWNpbmcuXG4gICAgICAgICAgICBjb25zdCByZXBsYWNlV2l0aEdyb3VwID0gbm9kZVRvUmVtb3ZlLmhhc0NoaWxkcmVuKCk7XG4gICAgICAgICAgICBpZiAocmVwbGFjZVdpdGhHcm91cCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG9sZFBhdGggPSB0aGlzLmdldEV4aXN0aW5nUGF0aEZvck5vZGUobm9kZVRvUmVtb3ZlLCBkZXRhaWxzKTtcbiAgICAgICAgICAgICAgICAvLyBiZWNhdXNlIHdlIGp1c3QgcmVtb3ZlZCB0aGUgdXNlckdyb3VwLCB0aGlzIHdpbGwgYWx3YXlzIHJldHVybiBuZXcgc3VwcG9ydCBncm91cFxuICAgICAgICAgICAgICAgIGNvbnN0IG5ld0dyb3VwTm9kZSA9IHRoaXMuZmluZFBhcmVudEZvck5vZGUobm9kZVRvUmVtb3ZlLCBvbGRQYXRoLCBkZXRhaWxzKTtcblxuICAgICAgICAgICAgICAgIC8vIHRoZXNlIHByb3BlcnRpZXMgYXJlIHRoZSBvbmVzIHRoYXQgd2lsbCBiZSBpbmNvcnJlY3QgaW4gdGhlIG5ld2x5IGNyZWF0ZWQgZ3JvdXAsXG4gICAgICAgICAgICAgICAgLy8gc28gY29weSB0aGVtIGZyb20gdGhlIG9sZCBjaGlsZE5vZGVcbiAgICAgICAgICAgICAgICBuZXdHcm91cE5vZGUuZXhwYW5kZWQgPSBub2RlVG9SZW1vdmUuZXhwYW5kZWQ7XG4gICAgICAgICAgICAgICAgbmV3R3JvdXBOb2RlLmFsbExlYWZDaGlsZHJlbiA9IG5vZGVUb1JlbW92ZS5hbGxMZWFmQ2hpbGRyZW47XG4gICAgICAgICAgICAgICAgbmV3R3JvdXBOb2RlLmNoaWxkcmVuQWZ0ZXJHcm91cCA9IG5vZGVUb1JlbW92ZS5jaGlsZHJlbkFmdGVyR3JvdXA7XG4gICAgICAgICAgICAgICAgbmV3R3JvdXBOb2RlLmNoaWxkcmVuTWFwcGVkID0gbm9kZVRvUmVtb3ZlLmNoaWxkcmVuTWFwcGVkO1xuICAgICAgICAgICAgICAgIG5ld0dyb3VwTm9kZS51cGRhdGVIYXNDaGlsZHJlbigpO1xuXG4gICAgICAgICAgICAgICAgbmV3R3JvdXBOb2RlLmNoaWxkcmVuQWZ0ZXJHcm91cCEuZm9yRWFjaChyb3dOb2RlID0+IHJvd05vZGUucGFyZW50ID0gbmV3R3JvdXBOb2RlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlbW92ZUVtcHR5R3JvdXBzKHBvc3NpYmxlRW1wdHlHcm91cHM6IFJvd05vZGVbXSwgZGV0YWlsczogR3JvdXBpbmdEZXRhaWxzKTogdm9pZCB7XG4gICAgICAgIC8vIHdlIGRvIHRoaXMgbXVsdGlwbGUgdGltZXMsIGFzIHdoZW4gd2UgcmVtb3ZlIGdyb3VwcywgdGhhdCBtZWFucyB0aGUgcGFyZW50IG9mIGp1c3QgcmVtb3ZlZFxuICAgICAgICAvLyBncm91cCBjYW4gdGhlbiBiZSBlbXB0eS4gdG8gZ2V0IGFyb3VuZCB0aGlzLCBpZiB3ZSByZW1vdmUsIHRoZW4gd2UgY2hlY2sgZXZlcnl0aGluZyBhZ2FpbiBmb3JcbiAgICAgICAgLy8gbmV3bHkgZW1wdGllZCBncm91cHMuIHRoZSBtYXggbnVtYmVyIG9mIHRpbWVzIHRoaXMgd2lsbCBleGVjdXRlIGlzIHRoZSBkZXB0aCBvZiB0aGUgZ3JvdXAgdHJlZS5cbiAgICAgICAgbGV0IGNoZWNrQWdhaW4gPSB0cnVlO1xuXG4gICAgICAgIGNvbnN0IGdyb3VwU2hvdWxkQmVSZW1vdmVkID0gKHJvd05vZGU6IFJvd05vZGUpOiBib29sZWFuID0+IHtcblxuICAgICAgICAgICAgLy8gYmVjYXVzZSBvZiB0aGUgd2hpbGUgbG9vcCBiZWxvdywgaXQncyBwb3NzaWJsZSB3ZSBhbHJlYWR5IG1vdmVkIHRoZSBub2RlLFxuICAgICAgICAgICAgLy8gc28gZG91YmxlIGNoZWNrIGJlZm9yZSB0cnlpbmcgdG8gcmVtb3ZlIGFnYWluLlxuICAgICAgICAgICAgY29uc3QgbWFwS2V5ID0gdGhpcy5nZXRDaGlsZHJlbk1hcHBlZEtleShyb3dOb2RlLmtleSEsIHJvd05vZGUucm93R3JvdXBDb2x1bW4pO1xuICAgICAgICAgICAgY29uc3QgcGFyZW50Um93Tm9kZSA9IHJvd05vZGUucGFyZW50O1xuICAgICAgICAgICAgY29uc3QgZ3JvdXBBbHJlYWR5UmVtb3ZlZCA9IChwYXJlbnRSb3dOb2RlICYmIHBhcmVudFJvd05vZGUuY2hpbGRyZW5NYXBwZWQpID9cbiAgICAgICAgICAgICAgICAhcGFyZW50Um93Tm9kZS5jaGlsZHJlbk1hcHBlZFttYXBLZXldIDogdHJ1ZTtcblxuICAgICAgICAgICAgaWYgKGdyb3VwQWxyZWFkeVJlbW92ZWQpIHtcbiAgICAgICAgICAgICAgICAvLyBpZiBub3QgbGlua2VkLCB0aGVuIGdyb3VwIHdhcyBhbHJlYWR5IHJlbW92ZWRcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBpZiBzdGlsbCBub3QgcmVtb3ZlZCwgdGhlbiB3ZSByZW1vdmUgaWYgdGhpcyBncm91cCBpcyBlbXB0eVxuICAgICAgICAgICAgcmV0dXJuICEhcm93Tm9kZS5pc0VtcHR5Um93R3JvdXBOb2RlKCk7XG4gICAgICAgIH07XG5cbiAgICAgICAgd2hpbGUgKGNoZWNrQWdhaW4pIHtcbiAgICAgICAgICAgIGNoZWNrQWdhaW4gPSBmYWxzZTtcbiAgICAgICAgICAgIGNvbnN0IGJhdGNoUmVtb3ZlcjogQmF0Y2hSZW1vdmVyID0gbmV3IEJhdGNoUmVtb3ZlcigpO1xuICAgICAgICAgICAgcG9zc2libGVFbXB0eUdyb3Vwcy5mb3JFYWNoKHBvc3NpYmxlRW1wdHlHcm91cCA9PiB7XG4gICAgICAgICAgICAgICAgLy8gcmVtb3ZlIGVtcHR5IGdyb3Vwc1xuICAgICAgICAgICAgICAgIHRoaXMuZm9yRWFjaFBhcmVudEdyb3VwKGRldGFpbHMsIHBvc3NpYmxlRW1wdHlHcm91cCwgcm93Tm9kZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChncm91cFNob3VsZEJlUmVtb3ZlZChyb3dOb2RlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tBZ2FpbiA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZUZyb21QYXJlbnQocm93Tm9kZSwgYmF0Y2hSZW1vdmVyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdlIHJlbW92ZSBzZWxlY3Rpb24gb24gZmlsbGVyIG5vZGVzIGhlcmUsIGFzIHRoZSBzZWxlY3Rpb24gd291bGQgbm90IGJlIHJlbW92ZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZyb20gdGhlIFJvd05vZGVNYW5hZ2VyLCBhcyBmaWxsZXIgbm9kZXMgZG9uJ3QgZXhpc3Qgb24gdGhlIFJvd05vZGVNYW5hZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICByb3dOb2RlLnNldFNlbGVjdGVkUGFyYW1zKHsgbmV3VmFsdWU6IGZhbHNlLCBzb3VyY2U6ICdyb3dHcm91cENoYW5nZWQnIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGJhdGNoUmVtb3Zlci5mbHVzaCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gcmVtb3ZlcyB0aGUgbm9kZSBmcm9tIHRoZSBwYXJlbnQgYnk6XG4gICAgLy8gYSkgcmVtb3ZpbmcgZnJvbSBjaGlsZHJlbkFmdGVyR3JvdXAgKHVzaW5nIGJhdGNoUmVtb3ZlciBpZiBwcmVzZW50LCBvdGhlcndpc2UgaW1tZWRpYXRlbHkpXG4gICAgLy8gYikgcmVtb3ZpbmcgZnJvbSBjaGlsZHJlbk1hcHBlZCAoaW1tZWRpYXRlbHkpXG4gICAgLy8gYykgc2V0Um93VG9wKG51bGwpIC0gYXMgdGhlIHJvd1JlbmRlcmVyIHVzZXMgdGhpcyB0byBrbm93IHRoZSBSb3dOb2RlIGlzIG5vIGxvbmdlciBuZWVkZWRcbiAgICAvLyBkKSBzZXRSb3dJbmRleChudWxsKSAtIGFzIHRoZSByb3dOb2RlIHdpbGwgbm8gbG9uZ2VyIGJlIGRpc3BsYXllZC5cbiAgICBwcml2YXRlIHJlbW92ZUZyb21QYXJlbnQoY2hpbGQ6IFJvd05vZGUsIGJhdGNoUmVtb3Zlcj86IEJhdGNoUmVtb3Zlcikge1xuICAgICAgICBpZiAoY2hpbGQucGFyZW50KSB7XG4gICAgICAgICAgICBpZiAoYmF0Y2hSZW1vdmVyKSB7XG4gICAgICAgICAgICAgICAgYmF0Y2hSZW1vdmVyLnJlbW92ZUZyb21DaGlsZHJlbkFmdGVyR3JvdXAoY2hpbGQucGFyZW50LCBjaGlsZCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIF8ucmVtb3ZlRnJvbUFycmF5KGNoaWxkLnBhcmVudC5jaGlsZHJlbkFmdGVyR3JvdXAhLCBjaGlsZCk7XG4gICAgICAgICAgICAgICAgY2hpbGQucGFyZW50LnVwZGF0ZUhhc0NoaWxkcmVuKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbWFwS2V5ID0gdGhpcy5nZXRDaGlsZHJlbk1hcHBlZEtleShjaGlsZC5rZXkhLCBjaGlsZC5yb3dHcm91cENvbHVtbik7XG4gICAgICAgIGlmIChjaGlsZC5wYXJlbnQgJiYgY2hpbGQucGFyZW50LmNoaWxkcmVuTWFwcGVkKSB7XG4gICAgICAgICAgICBjaGlsZC5wYXJlbnQuY2hpbGRyZW5NYXBwZWRbbWFwS2V5XSA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICAvLyB0aGlzIGlzIGltcG9ydGFudCBmb3IgdHJhbnNpdGlvbiwgc2VlIHJvd0NvbXAgcmVtb3ZlRmlyc3RQYXNzRnVuY3MuIHdoZW4gZG9pbmcgYW5pbWF0aW9uIGFuZFxuICAgICAgICAvLyByZW1vdmUsIGlmIHJvd1RvcCBpcyBzdGlsbCBwcmVzZW50LCB0aGUgcm93Q29tcCB0aGlua3MgaXQncyBqdXN0IG1vdmVkIHBvc2l0aW9uLlxuICAgICAgICBjaGlsZC5zZXRSb3dUb3AobnVsbCk7XG4gICAgICAgIGNoaWxkLnNldFJvd0luZGV4KG51bGwpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYWRkVG9QYXJlbnQoY2hpbGQ6IFJvd05vZGUsIHBhcmVudDogUm93Tm9kZSB8IG51bGwpIHtcbiAgICAgICAgY29uc3QgbWFwS2V5ID0gdGhpcy5nZXRDaGlsZHJlbk1hcHBlZEtleShjaGlsZC5rZXkhLCBjaGlsZC5yb3dHcm91cENvbHVtbik7XG4gICAgICAgIGlmIChwYXJlbnQpIHtcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkcmVuID0gcGFyZW50LmNoaWxkcmVuTWFwcGVkICE9IG51bGw7XG4gICAgICAgICAgICBpZiAoY2hpbGRyZW4pIHtcbiAgICAgICAgICAgICAgICBwYXJlbnQuY2hpbGRyZW5NYXBwZWQhW21hcEtleV0gPSBjaGlsZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHBhcmVudC5jaGlsZHJlbkFmdGVyR3JvdXAhLnB1c2goY2hpbGQpO1xuICAgICAgICAgICAgcGFyZW50LnVwZGF0ZUhhc0NoaWxkcmVuKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGFyZUdyb3VwQ29sc0VxdWFsKGQxOiBHcm91cGluZ0RldGFpbHMsIGQyOiBHcm91cGluZ0RldGFpbHMpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKGQxID09IG51bGwgfHwgZDIgPT0gbnVsbCB8fCBkMS5waXZvdE1vZGUgIT09IGQyLnBpdm90TW9kZSkgeyByZXR1cm4gZmFsc2U7IH1cblxuICAgICAgICByZXR1cm4gXy5hcmVFcXVhbChkMS5ncm91cGVkQ29scywgZDIuZ3JvdXBlZENvbHMpICYmIF8uYXJlRXF1YWwoZDEua2V5Q3JlYXRvcnMsIGQyLmtleUNyZWF0b3JzKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNoZWNrQWxsR3JvdXBEYXRhQWZ0ZXJDb2xzQ2hhbmdlZChkZXRhaWxzOiBHcm91cGluZ0RldGFpbHMpOiB2b2lkIHtcblxuICAgICAgICBjb25zdCByZWN1cnNlID0gKHJvd05vZGVzOiBSb3dOb2RlW10gfCBudWxsKSA9PiB7XG4gICAgICAgICAgICBpZiAoIXJvd05vZGVzKSB7IHJldHVybjsgfVxuICAgICAgICAgICAgcm93Tm9kZXMuZm9yRWFjaChyb3dOb2RlID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBpc0xlYWZOb2RlID0gIWRldGFpbHMudXNpbmdUcmVlRGF0YSAmJiAhcm93Tm9kZS5ncm91cDtcbiAgICAgICAgICAgICAgICBpZiAoaXNMZWFmTm9kZSkgeyByZXR1cm47IH1cbiAgICAgICAgICAgICAgICBjb25zdCBncm91cEluZm86IEdyb3VwSW5mbyA9IHtcbiAgICAgICAgICAgICAgICAgICAgZmllbGQ6IHJvd05vZGUuZmllbGQsXG4gICAgICAgICAgICAgICAgICAgIGtleTogcm93Tm9kZS5rZXkhLFxuICAgICAgICAgICAgICAgICAgICByb3dHcm91cENvbHVtbjogcm93Tm9kZS5yb3dHcm91cENvbHVtbixcbiAgICAgICAgICAgICAgICAgICAgbGVhZk5vZGU6IHJvd05vZGUuYWxsTGVhZkNoaWxkcmVuWzBdLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRHcm91cERhdGEocm93Tm9kZSwgZ3JvdXBJbmZvLCBkZXRhaWxzKTtcbiAgICAgICAgICAgICAgICByZWN1cnNlKHJvd05vZGUuY2hpbGRyZW5BZnRlckdyb3VwKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuXG4gICAgICAgIHJlY3Vyc2UoZGV0YWlscy5yb290Tm9kZS5jaGlsZHJlbkFmdGVyR3JvdXApO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2hvdGd1blJlc2V0RXZlcnl0aGluZyhkZXRhaWxzOiBHcm91cGluZ0RldGFpbHMsIGFmdGVyQ29sdW1uc0NoYW5nZWQ6IGJvb2xlYW4pOiB2b2lkIHtcblxuICAgICAgICBpZiAodGhpcy5ub0NoYW5nZUluR3JvdXBpbmdDb2x1bW5zKGRldGFpbHMsIGFmdGVyQ29sdW1uc0NoYW5nZWQpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBncm91cHMgYXJlIGFib3V0IHRvIGdldCBkaXNwb3NlZCwgc28gbmVlZCB0byBkZXNlbGVjdCBhbnkgdGhhdCBhcmUgc2VsZWN0ZWRcbiAgICAgICAgdGhpcy5zZWxlY3Rpb25TZXJ2aWNlLmZpbHRlckZyb21TZWxlY3Rpb24oKG5vZGU6IFJvd05vZGUpID0+IG5vZGUgJiYgIW5vZGUuZ3JvdXApO1xuXG4gICAgICAgIGNvbnN0IHsgcm9vdE5vZGUsIGdyb3VwZWRDb2xzIH0gPSBkZXRhaWxzO1xuICAgICAgICAvLyBiZWNhdXNlIHdlIGFyZSBub3QgY3JlYXRpbmcgdGhlIHJvb3Qgbm9kZSBlYWNoIHRpbWUsIHdlIGhhdmUgdGhlIGxvZ2ljXG4gICAgICAgIC8vIGhlcmUgdG8gY2hhbmdlIGxlYWZHcm91cCBvbmNlLlxuICAgICAgICAvLyB3ZSBzZXQgLmxlYWZHcm91cCB0byBmYWxzZSBmb3IgdHJlZSBkYXRhLCBhcyAubGVhZkdyb3VwIGlzIG9ubHkgdXNlZCB3aGVuIHBpdm90aW5nLCBhbmQgcGl2b3RpbmdcbiAgICAgICAgLy8gaXNuJ3QgYWxsb3dlZCB3aXRoIHRyZWVEYXRhLCBzbyB0aGUgZ3JpZCBuZXZlciBhY3R1YWxseSB1c2UgLmxlYWZHcm91cCB3aGVuIGRvaW5nIHRyZWVEYXRhLlxuICAgICAgICByb290Tm9kZS5sZWFmR3JvdXAgPSBkZXRhaWxzLnVzaW5nVHJlZURhdGEgPyBmYWxzZSA6IGdyb3VwZWRDb2xzLmxlbmd0aCA9PT0gMDtcblxuICAgICAgICAvLyB3ZSBhcmUgZG9pbmcgZXZlcnl0aGluZyBmcm9tIHNjcmF0Y2gsIHNvIHJlc2V0IGNoaWxkcmVuQWZ0ZXJHcm91cCBhbmQgY2hpbGRyZW5NYXBwZWQgZnJvbSB0aGUgcm9vdE5vZGVcbiAgICAgICAgcm9vdE5vZGUuY2hpbGRyZW5BZnRlckdyb3VwID0gW107XG4gICAgICAgIHJvb3ROb2RlLmNoaWxkcmVuTWFwcGVkID0ge307XG4gICAgICAgIHJvb3ROb2RlLnVwZGF0ZUhhc0NoaWxkcmVuKCk7XG5cbiAgICAgICAgY29uc3Qgc2libGluZyA9IHJvb3ROb2RlLnNpYmxpbmc7XG4gICAgICAgIGlmIChzaWJsaW5nKSB7XG4gICAgICAgICAgICBzaWJsaW5nLmNoaWxkcmVuQWZ0ZXJHcm91cCA9IHJvb3ROb2RlLmNoaWxkcmVuQWZ0ZXJHcm91cDtcbiAgICAgICAgICAgIHNpYmxpbmcuY2hpbGRyZW5NYXBwZWQgPSByb290Tm9kZS5jaGlsZHJlbk1hcHBlZDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaW5zZXJ0Tm9kZXMocm9vdE5vZGUuYWxsTGVhZkNoaWxkcmVuLCBkZXRhaWxzLCBmYWxzZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBub0NoYW5nZUluR3JvdXBpbmdDb2x1bW5zKGRldGFpbHM6IEdyb3VwaW5nRGV0YWlscywgYWZ0ZXJDb2x1bW5zQ2hhbmdlZDogYm9vbGVhbik6IGJvb2xlYW4ge1xuICAgICAgICBsZXQgbm9GdXJ0aGVyUHJvY2Vzc2luZ05lZWRlZCA9IGZhbHNlO1xuXG4gICAgICAgIGNvbnN0IGdyb3VwRGlzcGxheUNvbHVtbnMgPSB0aGlzLmNvbHVtbk1vZGVsLmdldEdyb3VwRGlzcGxheUNvbHVtbnMoKTtcbiAgICAgICAgY29uc3QgbmV3R3JvdXBEaXNwbGF5Q29sSWRzID0gZ3JvdXBEaXNwbGF5Q29sdW1ucyA/XG4gICAgICAgICAgICBncm91cERpc3BsYXlDb2x1bW5zLm1hcChjID0+IGMuZ2V0SWQoKSkuam9pbignLScpIDogJyc7XG5cbiAgICAgICAgaWYgKGFmdGVyQ29sdW1uc0NoYW5nZWQpIHtcbiAgICAgICAgICAgIC8vIHdlIG9ubHkgbmVlZCB0byByZWRvIGdyb3VwaW5nIGlmIGRvaW5nIG5vcm1hbCBncm91cGluZyAoaWUgbm90IHRyZWUgZGF0YSlcbiAgICAgICAgICAgIC8vIGFuZCB0aGUgZ3JvdXAgY29scyBoYXZlIGNoYW5nZWQuXG4gICAgICAgICAgICBub0Z1cnRoZXJQcm9jZXNzaW5nTmVlZGVkID0gZGV0YWlscy51c2luZ1RyZWVEYXRhIHx8IHRoaXMuYXJlR3JvdXBDb2xzRXF1YWwoZGV0YWlscywgdGhpcy5vbGRHcm91cGluZ0RldGFpbHMpO1xuXG4gICAgICAgICAgICAvLyBpZiB0aGUgZ3JvdXAgZGlzcGxheSBjb2xzIGhhdmUgY2hhbmdlZCwgdGhlbiB3ZSBuZWVkIHRvIHVwZGF0ZSByb3dOb2RlLmdyb3VwRGF0YVxuICAgICAgICAgICAgLy8gKHJlZ2FyZGxlc3Mgb2YgdHJlZSBkYXRhIG9yIHJvdyBncm91cGluZylcbiAgICAgICAgICAgIGlmICh0aGlzLm9sZEdyb3VwRGlzcGxheUNvbElkcyAhPT0gbmV3R3JvdXBEaXNwbGF5Q29sSWRzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jaGVja0FsbEdyb3VwRGF0YUFmdGVyQ29sc0NoYW5nZWQoZGV0YWlscyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm9sZEdyb3VwaW5nRGV0YWlscyA9IGRldGFpbHM7XG4gICAgICAgIHRoaXMub2xkR3JvdXBEaXNwbGF5Q29sSWRzID0gbmV3R3JvdXBEaXNwbGF5Q29sSWRzO1xuXG4gICAgICAgIHJldHVybiBub0Z1cnRoZXJQcm9jZXNzaW5nTmVlZGVkO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5zZXJ0Tm9kZXMobmV3Um93Tm9kZXM6IFJvd05vZGVbXSwgZGV0YWlsczogR3JvdXBpbmdEZXRhaWxzLCBpc01vdmU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgbmV3Um93Tm9kZXMuZm9yRWFjaChyb3dOb2RlID0+IHtcbiAgICAgICAgICAgIHRoaXMuaW5zZXJ0T25lTm9kZShyb3dOb2RlLCBkZXRhaWxzLCBpc01vdmUpO1xuICAgICAgICAgICAgaWYgKGRldGFpbHMuY2hhbmdlZFBhdGguaXNBY3RpdmUoKSkge1xuICAgICAgICAgICAgICAgIGRldGFpbHMuY2hhbmdlZFBhdGguYWRkUGFyZW50Tm9kZShyb3dOb2RlLnBhcmVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5zZXJ0T25lTm9kZShjaGlsZE5vZGU6IFJvd05vZGUsIGRldGFpbHM6IEdyb3VwaW5nRGV0YWlscywgaXNNb3ZlOiBib29sZWFuLCBiYXRjaFJlbW92ZXI/OiBCYXRjaFJlbW92ZXIpOiB2b2lkIHtcblxuICAgICAgICBjb25zdCBwYXRoOiBHcm91cEluZm9bXSA9IHRoaXMuZ2V0R3JvdXBJbmZvKGNoaWxkTm9kZSwgZGV0YWlscyk7XG5cbiAgICAgICAgY29uc3QgcGFyZW50R3JvdXAgPSB0aGlzLmZpbmRQYXJlbnRGb3JOb2RlKGNoaWxkTm9kZSwgcGF0aCwgZGV0YWlscywgYmF0Y2hSZW1vdmVyKTtcbiAgICAgICAgaWYgKCFwYXJlbnRHcm91cC5ncm91cCkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKGBBRyBHcmlkOiBkdXBsaWNhdGUgZ3JvdXAga2V5cyBmb3Igcm93IGRhdGEsIGtleXMgc2hvdWxkIGJlIHVuaXF1ZWAsXG4gICAgICAgICAgICAgICAgW3BhcmVudEdyb3VwLmRhdGEsIGNoaWxkTm9kZS5kYXRhXSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZGV0YWlscy51c2luZ1RyZWVEYXRhKSB7XG4gICAgICAgICAgICB0aGlzLnN3YXBHcm91cFdpdGhVc2VyTm9kZShwYXJlbnRHcm91cCwgY2hpbGROb2RlLCBpc01vdmUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2hpbGROb2RlLnBhcmVudCA9IHBhcmVudEdyb3VwO1xuICAgICAgICAgICAgY2hpbGROb2RlLmxldmVsID0gcGF0aC5sZW5ndGg7XG4gICAgICAgICAgICBwYXJlbnRHcm91cC5jaGlsZHJlbkFmdGVyR3JvdXAhLnB1c2goY2hpbGROb2RlKTtcbiAgICAgICAgICAgIHBhcmVudEdyb3VwLnVwZGF0ZUhhc0NoaWxkcmVuKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGZpbmRQYXJlbnRGb3JOb2RlKGNoaWxkTm9kZTogUm93Tm9kZSwgcGF0aDogR3JvdXBJbmZvW10sIGRldGFpbHM6IEdyb3VwaW5nRGV0YWlscywgYmF0Y2hSZW1vdmVyPzogQmF0Y2hSZW1vdmVyKTogUm93Tm9kZSB7XG4gICAgICAgIGxldCBuZXh0Tm9kZTogUm93Tm9kZSA9IGRldGFpbHMucm9vdE5vZGU7XG5cbiAgICAgICAgcGF0aC5mb3JFYWNoKChncm91cEluZm8sIGxldmVsKSA9PiB7XG4gICAgICAgICAgICBuZXh0Tm9kZSA9IHRoaXMuZ2V0T3JDcmVhdGVOZXh0Tm9kZShuZXh0Tm9kZSwgZ3JvdXBJbmZvLCBsZXZlbCwgZGV0YWlscyk7XG4gICAgICAgICAgICAvLyBub2RlIGdldHMgYWRkZWQgdG8gYWxsIGdyb3VwIG5vZGVzLlxuICAgICAgICAgICAgLy8gbm90ZTogd2UgZG8gbm90IGFkZCB0byByb290Tm9kZSBoZXJlLCBhcyB0aGUgcm9vdE5vZGUgaXMgdGhlIG1hc3RlciBsaXN0IG9mIHJvd05vZGVzXG5cbiAgICAgICAgICAgIGlmICghYmF0Y2hSZW1vdmVyPy5pc1JlbW92ZUZyb21BbGxMZWFmQ2hpbGRyZW4obmV4dE5vZGUsIGNoaWxkTm9kZSkpIHtcbiAgICAgICAgICAgICAgICBuZXh0Tm9kZS5hbGxMZWFmQ2hpbGRyZW4ucHVzaChjaGlsZE5vZGUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBpZiB0aGlzIG5vZGUgaXMgYWJvdXQgdG8gYmUgcmVtb3ZlZCwgcHJldmVudCB0aGF0XG4gICAgICAgICAgICAgICAgYmF0Y2hSZW1vdmVyPy5wcmV2ZW50UmVtb3ZlRnJvbUFsbExlYWZDaGlsZHJlbihuZXh0Tm9kZSwgY2hpbGROb2RlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIG5leHROb2RlO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3dhcEdyb3VwV2l0aFVzZXJOb2RlKGZpbGxlckdyb3VwOiBSb3dOb2RlLCB1c2VyR3JvdXA6IFJvd05vZGUsIGlzTW92ZTogYm9vbGVhbikge1xuICAgICAgICB1c2VyR3JvdXAucGFyZW50ID0gZmlsbGVyR3JvdXAucGFyZW50O1xuICAgICAgICB1c2VyR3JvdXAua2V5ID0gZmlsbGVyR3JvdXAua2V5O1xuICAgICAgICB1c2VyR3JvdXAuZmllbGQgPSBmaWxsZXJHcm91cC5maWVsZDtcbiAgICAgICAgdXNlckdyb3VwLmdyb3VwRGF0YSA9IGZpbGxlckdyb3VwLmdyb3VwRGF0YTtcbiAgICAgICAgdXNlckdyb3VwLmxldmVsID0gZmlsbGVyR3JvdXAubGV2ZWw7XG4gICAgICAgIC8vIEFHLTM0NDEgLSBwcmVzZXJ2ZSB0aGUgZXhpc3RpbmcgZXhwYW5kZWQgc3RhdHVzIG9mIHRoZSBub2RlIGlmIHdlJ3JlIG1vdmluZyBpdCwgc28gdGhhdFxuICAgICAgICAvLyB5b3UgY2FuIGRyYWcgYSBzdWIgdHJlZSBmcm9tIG9uZSBwYXJlbnQgdG8gYW5vdGhlciB3aXRob3V0IGNoYW5naW5nIGl0cyBleHBhbnNpb25cbiAgICAgICAgaWYgKCFpc01vdmUpIHtcbiAgICAgICAgICAgIHVzZXJHcm91cC5leHBhbmRlZCA9IGZpbGxlckdyb3VwLmV4cGFuZGVkO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gd2Ugc2V0IC5sZWFmR3JvdXAgdG8gZmFsc2UgZm9yIHRyZWUgZGF0YSwgYXMgLmxlYWZHcm91cCBpcyBvbmx5IHVzZWQgd2hlbiBwaXZvdGluZywgYW5kIHBpdm90aW5nXG4gICAgICAgIC8vIGlzbid0IGFsbG93ZWQgd2l0aCB0cmVlRGF0YSwgc28gdGhlIGdyaWQgbmV2ZXIgYWN0dWFsbHkgdXNlIC5sZWFmR3JvdXAgd2hlbiBkb2luZyB0cmVlRGF0YS5cbiAgICAgICAgdXNlckdyb3VwLmxlYWZHcm91cCA9IGZpbGxlckdyb3VwLmxlYWZHcm91cDtcblxuICAgICAgICAvLyBhbHdheXMgbnVsbCBmb3IgdXNlckdyb3VwcywgYXMgcm93IGdyb3VwaW5nIGlzIG5vdCBhbGxvd2VkIHdoZW4gZG9pbmcgdHJlZSBkYXRhXG4gICAgICAgIHVzZXJHcm91cC5yb3dHcm91cEluZGV4ID0gZmlsbGVyR3JvdXAucm93R3JvdXBJbmRleDtcblxuICAgICAgICB1c2VyR3JvdXAuYWxsTGVhZkNoaWxkcmVuID0gZmlsbGVyR3JvdXAuYWxsTGVhZkNoaWxkcmVuO1xuICAgICAgICB1c2VyR3JvdXAuY2hpbGRyZW5BZnRlckdyb3VwID0gZmlsbGVyR3JvdXAuY2hpbGRyZW5BZnRlckdyb3VwO1xuICAgICAgICB1c2VyR3JvdXAuY2hpbGRyZW5NYXBwZWQgPSBmaWxsZXJHcm91cC5jaGlsZHJlbk1hcHBlZDtcbiAgICAgICAgdXNlckdyb3VwLnNpYmxpbmcgPSBmaWxsZXJHcm91cC5zaWJsaW5nO1xuICAgICAgICB1c2VyR3JvdXAudXBkYXRlSGFzQ2hpbGRyZW4oKTtcblxuICAgICAgICB0aGlzLnJlbW92ZUZyb21QYXJlbnQoZmlsbGVyR3JvdXApO1xuICAgICAgICB1c2VyR3JvdXAuY2hpbGRyZW5BZnRlckdyb3VwIS5mb3JFYWNoKChyb3dOb2RlOiBSb3dOb2RlKSA9PiByb3dOb2RlLnBhcmVudCA9IHVzZXJHcm91cCk7XG4gICAgICAgIHRoaXMuYWRkVG9QYXJlbnQodXNlckdyb3VwLCBmaWxsZXJHcm91cC5wYXJlbnQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0T3JDcmVhdGVOZXh0Tm9kZShwYXJlbnRHcm91cDogUm93Tm9kZSwgZ3JvdXBJbmZvOiBHcm91cEluZm8sIGxldmVsOiBudW1iZXIsXG4gICAgICAgIGRldGFpbHM6IEdyb3VwaW5nRGV0YWlscyk6IFJvd05vZGUge1xuXG4gICAgICAgIGNvbnN0IGtleSA9IHRoaXMuZ2V0Q2hpbGRyZW5NYXBwZWRLZXkoZ3JvdXBJbmZvLmtleSwgZ3JvdXBJbmZvLnJvd0dyb3VwQ29sdW1uKTtcbiAgICAgICAgbGV0IG5leHROb2RlID0gcGFyZW50R3JvdXAuY2hpbGRyZW5NYXBwZWQgPyBwYXJlbnRHcm91cC5jaGlsZHJlbk1hcHBlZFtrZXldIDogdW5kZWZpbmVkO1xuXG4gICAgICAgIGlmICghbmV4dE5vZGUpIHtcbiAgICAgICAgICAgIG5leHROb2RlID0gdGhpcy5jcmVhdGVHcm91cChncm91cEluZm8sIHBhcmVudEdyb3VwLCBsZXZlbCwgZGV0YWlscyk7XG4gICAgICAgICAgICAvLyBhdHRhY2ggdGhlIG5ldyBncm91cCB0byB0aGUgcGFyZW50XG4gICAgICAgICAgICB0aGlzLmFkZFRvUGFyZW50KG5leHROb2RlLCBwYXJlbnRHcm91cCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbmV4dE5vZGU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVHcm91cChncm91cEluZm86IEdyb3VwSW5mbywgcGFyZW50OiBSb3dOb2RlLCBsZXZlbDogbnVtYmVyLCBkZXRhaWxzOiBHcm91cGluZ0RldGFpbHMpOiBSb3dOb2RlIHtcbiAgICAgICAgY29uc3QgZ3JvdXBOb2RlID0gbmV3IFJvd05vZGUodGhpcy5iZWFucyk7XG5cbiAgICAgICAgZ3JvdXBOb2RlLmdyb3VwID0gdHJ1ZTtcbiAgICAgICAgZ3JvdXBOb2RlLmZpZWxkID0gZ3JvdXBJbmZvLmZpZWxkO1xuICAgICAgICBncm91cE5vZGUucm93R3JvdXBDb2x1bW4gPSBncm91cEluZm8ucm93R3JvdXBDb2x1bW47XG5cbiAgICAgICAgdGhpcy5zZXRHcm91cERhdGEoZ3JvdXBOb2RlLCBncm91cEluZm8sIGRldGFpbHMpO1xuXG4gICAgICAgIGdyb3VwTm9kZS5rZXkgPSBncm91cEluZm8ua2V5O1xuICAgICAgICBncm91cE5vZGUuaWQgPSB0aGlzLmNyZWF0ZUdyb3VwSWQoZ3JvdXBOb2RlLCBwYXJlbnQsIGRldGFpbHMudXNpbmdUcmVlRGF0YSwgbGV2ZWwpO1xuXG4gICAgICAgIGdyb3VwTm9kZS5sZXZlbCA9IGxldmVsO1xuICAgICAgICBncm91cE5vZGUubGVhZkdyb3VwID0gZGV0YWlscy51c2luZ1RyZWVEYXRhID8gZmFsc2UgOiBsZXZlbCA9PT0gKGRldGFpbHMuZ3JvdXBlZENvbENvdW50IC0gMSk7XG5cbiAgICAgICAgZ3JvdXBOb2RlLmFsbExlYWZDaGlsZHJlbiA9IFtdO1xuXG4gICAgICAgIC8vIHdoeSBpcyB0aGlzIGRvbmUgaGVyZT8gd2UgYXJlIG5vdCB1cGRhdGluZyB0aGUgY2hpbGRyZW4gY291bnQgYXMgd2UgZ28sXG4gICAgICAgIC8vIGkgc3VzcGVjdCB0aGlzIGlzIHVwZGF0ZWQgaW4gdGhlIGZpbHRlciBzdGFnZVxuICAgICAgICBncm91cE5vZGUuc2V0QWxsQ2hpbGRyZW5Db3VudCgwKTtcblxuICAgICAgICBncm91cE5vZGUucm93R3JvdXBJbmRleCA9IGRldGFpbHMudXNpbmdUcmVlRGF0YSA/IG51bGwgOiBsZXZlbDtcblxuICAgICAgICBncm91cE5vZGUuY2hpbGRyZW5BZnRlckdyb3VwID0gW107XG4gICAgICAgIGdyb3VwTm9kZS5jaGlsZHJlbk1hcHBlZCA9IHt9O1xuICAgICAgICBncm91cE5vZGUudXBkYXRlSGFzQ2hpbGRyZW4oKTtcblxuICAgICAgICBncm91cE5vZGUucGFyZW50ID0gZGV0YWlscy5pbmNsdWRlUGFyZW50cyA/IHBhcmVudCA6IG51bGw7XG5cbiAgICAgICAgdGhpcy5zZXRFeHBhbmRlZEluaXRpYWxWYWx1ZShkZXRhaWxzLCBncm91cE5vZGUpO1xuXG4gICAgICAgIHJldHVybiBncm91cE5vZGU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVHcm91cElkKG5vZGU6IFJvd05vZGUsIHBhcmVudDogUm93Tm9kZSwgdXNpbmdUcmVlRGF0YTogYm9vbGVhbiwgbGV2ZWw6IG51bWJlcik6IHN0cmluZyB7XG4gICAgICAgIGxldCBjcmVhdGVHcm91cElkOiAobm9kZTogUm93Tm9kZSwgcGFyZW50OiBSb3dOb2RlIHwgbnVsbCwgbGV2ZWw6IG51bWJlcikgPT4gc3RyaW5nIHwgbnVsbDtcbiAgICAgICAgaWYgKHVzaW5nVHJlZURhdGEpIHtcbiAgICAgICAgICAgIGNyZWF0ZUdyb3VwSWQgPSAobm9kZSwgcGFyZW50LCBsZXZlbCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChsZXZlbCA8IDApIHsgcmV0dXJuIG51bGw7IH0gLy8gcm9vdCBub2RlXG4gICAgICAgICAgICAgICAgY29uc3QgcGFyZW50SWQgPSBwYXJlbnQgPyBjcmVhdGVHcm91cElkKHBhcmVudCwgcGFyZW50LnBhcmVudCwgbGV2ZWwgLSAxKSA6IG51bGw7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke3BhcmVudElkID09IG51bGwgPyAnJyA6IHBhcmVudElkICsgJy0nfSR7bGV2ZWx9LSR7bm9kZS5rZXl9YDtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjcmVhdGVHcm91cElkID0gKG5vZGUsIHBhcmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghbm9kZS5yb3dHcm91cENvbHVtbikgeyByZXR1cm4gbnVsbDsgfSAvLyByb290IG5vZGVcbiAgICAgICAgICAgICAgICBjb25zdCBwYXJlbnRJZCA9IHBhcmVudCA/IGNyZWF0ZUdyb3VwSWQocGFyZW50LCBwYXJlbnQucGFyZW50LCAwKSA6IG51bGw7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke3BhcmVudElkID09IG51bGwgPyAnJyA6IHBhcmVudElkICsgJy0nfSR7bm9kZS5yb3dHcm91cENvbHVtbi5nZXRDb2xJZCgpfS0ke25vZGUua2V5fWA7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gd2UgcHV0ICdyb3ctZ3JvdXAtJyBiZWZvcmUgdGhlIGdyb3VwIGlkLCBzbyBpdCBkb2Vzbid0IGNsYXNoIHdpdGggc3RhbmRhcmQgcm93IGlkJ3MuIHdlIGFsc28gdXNlICd0LScgYW5kICdiLSdcbiAgICAgICAgLy8gZm9yIHRvcCBwaW5uZWQgYW5kIGJvdHRvbSBwaW5uZWQgcm93cy5cbiAgICAgICAgcmV0dXJuIFJvd05vZGUuSURfUFJFRklYX1JPV19HUk9VUCArIGNyZWF0ZUdyb3VwSWQobm9kZSwgcGFyZW50LCBsZXZlbCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRHcm91cERhdGEoZ3JvdXBOb2RlOiBSb3dOb2RlLCBncm91cEluZm86IEdyb3VwSW5mbywgZGV0YWlsczogR3JvdXBpbmdEZXRhaWxzKTogdm9pZCB7XG4gICAgICAgIGdyb3VwTm9kZS5ncm91cERhdGEgPSB7fTtcbiAgICAgICAgY29uc3QgZ3JvdXBEaXNwbGF5Q29sczogQ29sdW1uW10gPSB0aGlzLmNvbHVtbk1vZGVsLmdldEdyb3VwRGlzcGxheUNvbHVtbnMoKTtcbiAgICAgICAgZ3JvdXBEaXNwbGF5Q29scy5mb3JFYWNoKGNvbCA9PiB7XG4gICAgICAgICAgICAvLyBuZXdHcm91cC5yb3dHcm91cENvbHVtbj1udWxsIHdoZW4gd29ya2luZyBvZmYgR3JvdXBJbmZvLCBhbmQgd2UgYWx3YXlzIGRpc3BsYXkgdGhlIGdyb3VwIGluIHRoZSBncm91cCBjb2x1bW5cbiAgICAgICAgICAgIC8vIGlmIHJvd0dyb3VwQ29sdW1uIGlzIHByZXNlbnQsIHRoZW4gaXQncyBncmlkIHJvdyBncm91cGluZyBhbmQgd2Ugb25seSBpbmNsdWRlIGlmIGNvbmZpZ3VyYXRpb24gc2F5cyBzb1xuICAgICAgICAgICAgY29uc3QgaXNUcmVlRGF0YSA9IGRldGFpbHMudXNpbmdUcmVlRGF0YTtcbiAgICAgICAgICAgIGlmIChpc1RyZWVEYXRhKSB7XG4gICAgICAgICAgICAgICAgZ3JvdXBOb2RlLmdyb3VwRGF0YSFbY29sLmdldENvbElkKCldID0gZ3JvdXBJbmZvLmtleTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGdyb3VwQ29sdW1uID0gZ3JvdXBOb2RlLnJvd0dyb3VwQ29sdW1uO1xuICAgICAgICAgICAgY29uc3QgaXNSb3dHcm91cERpc3BsYXllZCA9IGdyb3VwQ29sdW1uICE9PSBudWxsICYmIGNvbC5pc1Jvd0dyb3VwRGlzcGxheWVkKGdyb3VwQ29sdW1uLmdldElkKCkpO1xuICAgICAgICAgICAgaWYgKGlzUm93R3JvdXBEaXNwbGF5ZWQpIHtcbiAgICAgICAgICAgICAgICBpZiAoZGV0YWlscy5zdXBwcmVzc0dyb3VwTWFpbnRhaW5WYWx1ZVR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgZ3JvdXBOb2RlLmdyb3VwRGF0YSFbY29sLmdldENvbElkKCldID0gZ3JvdXBJbmZvLmtleTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyBpZiBtYWludGFpbiBncm91cCB2YWx1ZSB0eXBlLCBnZXQgdGhlIHZhbHVlIGZyb20gYW55IGxlYWYgbm9kZS5cbiAgICAgICAgICAgICAgICAgICAgZ3JvdXBOb2RlLmdyb3VwRGF0YSFbY29sLmdldENvbElkKCldID0gdGhpcy52YWx1ZVNlcnZpY2UuZ2V0VmFsdWUoZ3JvdXBDb2x1bW4sIGdyb3VwSW5mby5sZWFmTm9kZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldENoaWxkcmVuTWFwcGVkS2V5KGtleTogc3RyaW5nLCByb3dHcm91cENvbHVtbjogQ29sdW1uIHwgbnVsbCk6IHN0cmluZyB7XG4gICAgICAgIGlmIChyb3dHcm91cENvbHVtbikge1xuICAgICAgICAgICAgLy8gZ3JvdXBpbmcgYnkgY29sdW1uc1xuICAgICAgICAgICAgcmV0dXJuIHJvd0dyb3VwQ29sdW1uLmdldElkKCkgKyAnLScgKyBrZXk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gdHJlZSBkYXRhIC0gd2UgZG9uJ3QgaGF2ZSByb3dHcm91cENvbHVtbnNcbiAgICAgICAgcmV0dXJuIGtleTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldEV4cGFuZGVkSW5pdGlhbFZhbHVlKGRldGFpbHM6IEdyb3VwaW5nRGV0YWlscywgZ3JvdXBOb2RlOiBSb3dOb2RlKTogdm9pZCB7XG4gICAgICAgIC8vIGlmIHBpdm90aW5nIHRoZSBsZWFmIGdyb3VwIGlzIG5ldmVyIGV4cGFuZGVkIGFzIHdlIGRvIG5vdCBzaG93IGxlYWYgcm93c1xuICAgICAgICBpZiAoZGV0YWlscy5waXZvdE1vZGUgJiYgZ3JvdXBOb2RlLmxlYWZHcm91cCkge1xuICAgICAgICAgICAgZ3JvdXBOb2RlLmV4cGFuZGVkID0gZmFsc2U7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyB1c2UgY2FsbGJhY2sgaWYgZXhpc3RzXG4gICAgICAgIGNvbnN0IHVzZXJDYWxsYmFjayA9IGRldGFpbHMuaXNHcm91cE9wZW5CeURlZmF1bHQ7XG4gICAgICAgIGlmICh1c2VyQ2FsbGJhY2spIHtcbiAgICAgICAgICAgIGNvbnN0IHBhcmFtczogV2l0aG91dEdyaWRDb21tb248SXNHcm91cE9wZW5CeURlZmF1bHRQYXJhbXM+ID0ge1xuICAgICAgICAgICAgICAgIHJvd05vZGU6IGdyb3VwTm9kZSxcbiAgICAgICAgICAgICAgICBmaWVsZDogZ3JvdXBOb2RlLmZpZWxkISxcbiAgICAgICAgICAgICAgICBrZXk6IGdyb3VwTm9kZS5rZXkhLFxuICAgICAgICAgICAgICAgIGxldmVsOiBncm91cE5vZGUubGV2ZWwsXG4gICAgICAgICAgICAgICAgcm93R3JvdXBDb2x1bW46IGdyb3VwTm9kZS5yb3dHcm91cENvbHVtbiFcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBncm91cE5vZGUuZXhwYW5kZWQgPSB1c2VyQ2FsbGJhY2socGFyYW1zKSA9PSB0cnVlO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gdXNlIGV4cGFuZEJ5RGVmYXVsdCBpZiBleGlzdHNcbiAgICAgICAgY29uc3QgeyBleHBhbmRCeURlZmF1bHQgfSA9IGRldGFpbHM7XG4gICAgICAgIGlmIChkZXRhaWxzLmV4cGFuZEJ5RGVmYXVsdCA9PT0gLTEpIHtcbiAgICAgICAgICAgIGdyb3VwTm9kZS5leHBhbmRlZCA9IHRydWU7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBvdGhlcndpc2VcbiAgICAgICAgZ3JvdXBOb2RlLmV4cGFuZGVkID0gZ3JvdXBOb2RlLmxldmVsIDwgZXhwYW5kQnlEZWZhdWx0O1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0R3JvdXBJbmZvKHJvd05vZGU6IFJvd05vZGUsIGRldGFpbHM6IEdyb3VwaW5nRGV0YWlscyk6IEdyb3VwSW5mb1tdIHtcbiAgICAgICAgaWYgKGRldGFpbHMudXNpbmdUcmVlRGF0YSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0R3JvdXBJbmZvRnJvbUNhbGxiYWNrKHJvd05vZGUsIGRldGFpbHMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmdldEdyb3VwSW5mb0Zyb21Hcm91cENvbHVtbnMocm93Tm9kZSwgZGV0YWlscyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRHcm91cEluZm9Gcm9tQ2FsbGJhY2socm93Tm9kZTogUm93Tm9kZSwgZGV0YWlsczogR3JvdXBpbmdEZXRhaWxzKTogR3JvdXBJbmZvW10geyAgICAgICAgXG4gICAgICAgIGNvbnN0IGtleXM6IHN0cmluZ1tdIHwgbnVsbCA9IGRldGFpbHMuZ2V0RGF0YVBhdGggPyBkZXRhaWxzLmdldERhdGFQYXRoKHJvd05vZGUuZGF0YSkgOiBudWxsO1xuXG4gICAgICAgIGlmIChrZXlzID09PSBudWxsIHx8IGtleXMgPT09IHVuZGVmaW5lZCB8fCBrZXlzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgXy53YXJuT25jZShgZ2V0RGF0YVBhdGgoKSBzaG91bGQgbm90IHJldHVybiBhbiBlbXB0eSBwYXRoIGZvciBkYXRhICR7cm93Tm9kZS5kYXRhfWApO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGdyb3VwSW5mb01hcHBlciA9IChrZXk6IHN0cmluZyB8IG51bGwpID0+ICh7IGtleSwgZmllbGQ6IG51bGwsIHJvd0dyb3VwQ29sdW1uOiBudWxsIH0pIGFzIEdyb3VwSW5mbztcbiAgICAgICAgcmV0dXJuIGtleXMgPyBrZXlzLm1hcChncm91cEluZm9NYXBwZXIpIDogW107XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRHcm91cEluZm9Gcm9tR3JvdXBDb2x1bW5zKHJvd05vZGU6IFJvd05vZGUsIGRldGFpbHM6IEdyb3VwaW5nRGV0YWlscykge1xuICAgICAgICBjb25zdCByZXM6IEdyb3VwSW5mb1tdID0gW107XG4gICAgICAgIGRldGFpbHMuZ3JvdXBlZENvbHMuZm9yRWFjaChncm91cENvbCA9PiB7XG4gICAgICAgICAgICBsZXQga2V5OiBzdHJpbmcgPSB0aGlzLnZhbHVlU2VydmljZS5nZXRLZXlGb3JOb2RlKGdyb3VwQ29sLCByb3dOb2RlKTtcbiAgICAgICAgICAgIGxldCBrZXlFeGlzdHMgPSBrZXkgIT09IG51bGwgJiYga2V5ICE9PSB1bmRlZmluZWQgJiYga2V5ICE9PSAnJztcblxuICAgICAgICAgICAgLy8gdW5iYWxhbmNlZCB0cmVlIGFuZCBwaXZvdCBtb2RlIGRvbid0IHdvcmsgdG9nZXRoZXIgLSBub3QgYmVjYXVzZSBvZiB0aGUgZ3JpZCwgaXQgZG9lc24ndCBtYWtlXG4gICAgICAgICAgICAvLyBtYXRoZW1hdGljYWwgc2Vuc2UgYXMgeW91IGFyZSBidWlsZGluZyB1cCBhIGN1YmUuIHNvIGlmIHBpdm90IG1vZGUsIHdlIHB1dCBpbiBhIGJsYW5rIGtleSB3aGVyZSBtaXNzaW5nLlxuICAgICAgICAgICAgLy8gdGhpcyBrZWVwcyB0aGUgdHJlZSBiYWxhbmNlZCBhbmQgaGVuY2UgY2FuIGJlIHJlcHJlc2VudGVkIGFzIGEgZ3JvdXAuXG4gICAgICAgICAgICBjb25zdCBjcmVhdGVHcm91cEZvckVtcHR5ID0gZGV0YWlscy5waXZvdE1vZGUgfHwgIWRldGFpbHMuZ3JvdXBBbGxvd1VuYmFsYW5jZWQ7XG4gICAgICAgICAgICBpZiAoY3JlYXRlR3JvdXBGb3JFbXB0eSAmJiAha2V5RXhpc3RzKSB7XG4gICAgICAgICAgICAgICAga2V5ID0gJyc7XG4gICAgICAgICAgICAgICAga2V5RXhpc3RzID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGtleUV4aXN0cykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSB7XG4gICAgICAgICAgICAgICAgICAgIGtleToga2V5LFxuICAgICAgICAgICAgICAgICAgICBmaWVsZDogZ3JvdXBDb2wuZ2V0Q29sRGVmKCkuZmllbGQsXG4gICAgICAgICAgICAgICAgICAgIHJvd0dyb3VwQ29sdW1uOiBncm91cENvbCxcbiAgICAgICAgICAgICAgICAgICAgbGVhZk5vZGU6IHJvd05vZGUsXG4gICAgICAgICAgICAgICAgfSBhcyBHcm91cEluZm87XG4gICAgICAgICAgICAgICAgcmVzLnB1c2goaXRlbSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cbn0iXX0=
|
|
623
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAtc3RhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2VvLWZyYW1ld29yay9ncmlkL3Jvdy1ncm91cGluZy9ncm91cC1zdGFnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNILENBQUMsRUFDRCxTQUFTLEVBQ1QsSUFBSSxFQUNKLFFBQVEsRUFPUixPQUFPLEVBV1YsTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUErQnZDLElBQU0sVUFBVSxHQUFoQixNQUFNLFVBQVcsU0FBUSxRQUFRO0lBaUI3QixPQUFPLENBQUMsTUFBMEI7UUFFckMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRW5ELElBQUksT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNwQyxDQUFDO2FBQU0sQ0FBQztZQUNKLE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixLQUFLLElBQUksQ0FBQztZQUM3RCxJQUFJLENBQUMsc0JBQXNCLENBQUMsT0FBTyxFQUFFLGdCQUFnQixDQUFDLENBQUM7UUFDM0QsQ0FBQztRQUVELElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDekIsMENBQTBDO1lBQzFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxNQUFNLENBQUMsV0FBWSxDQUFDLENBQUM7WUFDakQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM5QixDQUFDO1FBRUQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLDZCQUE2QixFQUFFLENBQUM7SUFDM0QsQ0FBQztJQUVPLHNCQUFzQixDQUFDLFdBQXdCO1FBQ25ELFdBQVcsQ0FBQyw0QkFBNEIsQ0FB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QUFDO2dCQUNmLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbkIsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDO0NBQ0osQ0FBQTtBQXZzQnFDO0lBQWpDLFNBQVMsQ0FBQyxhQUFhLENBQUM7K0NBQWtDO0FBQ25CO0lBQXZDLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQztxREFBOEM7QUFDMUM7SUFBbEMsU0FBUyxDQUFDLGNBQWMsQ0FBQztnREFBb0M7QUFDbEM7SUFBM0IsU0FBUyxDQUFDLE9BQU8sQ0FBQzt5Q0FBc0I7QUFDRjtJQUF0QyxTQUFTLENBQUMsa0JBQWtCLENBQUM7b0RBQTZDO0FBTmxFLFVBQVU7SUFEdEIsSUFBSSxDQUFDLFlBQVksQ0FBQztHQUNOLFVBQVUsQ0F5c0J0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgICBfLFxyXG4gICAgQXV0b3dpcmVkLFxyXG4gICAgQmVhbixcclxuICAgIEJlYW5TdHViLFxyXG4gICAgQ2hhbmdlZFBhdGgsXHJcbiAgICBDb2x1bW4sXHJcbiAgICBDb2x1bW5Nb2RlbCxcclxuICAgIEdldERhdGFQYXRoLFxyXG4gICAgSVJvd05vZGVTdGFnZSxcclxuICAgIElzR3JvdXBPcGVuQnlEZWZhdWx0UGFyYW1zLFxyXG4gICAgUm93Tm9kZSxcclxuICAgIFJvd05vZGVUcmFuc2FjdGlvbixcclxuICAgIFNlbGVjdGFibGVTZXJ2aWNlLFxyXG4gICAgU3RhZ2VFeGVjdXRlUGFyYW1zLFxyXG4gICAgVmFsdWVTZXJ2aWNlLFxyXG4gICAgQmVhbnMsXHJcbiAgICBJU2VsZWN0aW9uU2VydmljZSxcclxuICAgIFdpdGhvdXRHcmlkQ29tbW9uLFxyXG4gICAgSW5pdGlhbEdyb3VwT3JkZXJDb21wYXJhdG9yUGFyYW1zLFxyXG4gICAgR3JpZE9wdGlvbnMsXHJcbiAgICBLZXlDcmVhdG9yUGFyYW1zXHJcbn0gZnJvbSBcIkBhZy1ncmlkLWNvbW11bml0eS9jb3JlXCI7XHJcbmltcG9ydCB7IEJhdGNoUmVtb3ZlciB9IGZyb20gXCIuL2JhdGNoUmVtb3ZlclwiO1xyXG5cclxuaW50ZXJmYWNlIEdyb3VwSW5mbyB7XHJcbiAgICBrZXk6IHN0cmluZzsgLy8gZS5nLiAnSXJlbGFuZCdcclxuICAgIGZpZWxkOiBzdHJpbmcgfCBudWxsOyAvLyBlLmcuICdjb3VudHJ5J1xyXG4gICAgcm93R3JvdXBDb2x1bW46IENvbHVtbiB8IG51bGw7XHJcbiAgICBsZWFmTm9kZT86IFJvd05vZGU7XHJcbn1cclxuXHJcbmludGVyZmFjZSBHcm91cGluZ0RldGFpbHMge1xyXG4gICAgcGl2b3RNb2RlOiBib29sZWFuO1xyXG4gICAgaW5jbHVkZVBhcmVudHM6IGJvb2xlYW47XHJcbiAgICBleHBhbmRCeURlZmF1bHQ6IG51bWJlcjtcclxuICAgIGNoYW5nZWRQYXRoOiBDaGFuZ2VkUGF0aDtcclxuICAgIHJvb3ROb2RlOiBSb3dOb2RlO1xyXG4gICAgZ3JvdXBlZENvbHM6IENvbHVtbltdO1xyXG4gICAgZ3JvdXBlZENvbENvdW50OiBudW1iZXI7XHJcbiAgICB0cmFuc2FjdGlvbnM6IFJvd05vZGVUcmFuc2FjdGlvbltdO1xyXG4gICAgcm93Tm9kZU9yZGVyOiB7IFtpZDogc3RyaW5nXTogbnVtYmVyOyB9O1xyXG4gICAgXHJcbiAgICBncm91cEFsbG93VW5iYWxhbmNlZDogYm9vbGVhbjtcclxuICAgIGlzR3JvdXBPcGVuQnlEZWZhdWx0OiAocGFyYW1zOiBXaXRob3V0R3JpZENvbW1vbjxJc0dyb3VwT3BlbkJ5RGVmYXVsdFBhcmFtcz4pID0+IGJvb2xlYW47XHJcbiAgICBpbml0aWFsR3JvdXBPcmRlckNvbXBhcmF0b3I6IChwYXJhbXM6IFdpdGhvdXRHcmlkQ29tbW9uPEluaXRpYWxHcm91cE9yZGVyQ29tcGFyYXRvclBhcmFtcz4pID0+IG51bWJlcjtcclxuICAgIFxyXG4gICAgdXNpbmdUcmVlRGF0YTogYm9vbGVhbjtcclxuICAgIHN1cHByZXNzR3JvdXBNYWludGFpblZhbHVlVHlwZTogYm9vbGVhbjtcclxuICAgIGdldERhdGFQYXRoOiBHZXREYXRhUGF0aCB8IHVuZGVmaW5lZDtcclxuICAgIGtleUNyZWF0b3JzOiAoKChwYXJhbXM6IEtleUNyZWF0b3JQYXJhbXMpID0+IHN0cmluZykgfCB1bmRlZmluZWQpW107XHJcbn1cclxuXHJcbkBCZWFuKCdncm91cFN0YWdlJylcclxuZXhwb3J0IGNsYXNzIEdyb3VwU3RhZ2UgZXh0ZW5kcyBCZWFuU3R1YiBpbXBsZW1lbnRzIElSb3dOb2RlU3RhZ2Uge1xyXG5cclxuICAgIEBBdXRvd2lyZWQoJ2NvbHVtbk1vZGVsJykgcHJpdmF0ZSBjb2x1bW5Nb2RlbDogQ29sdW1uTW9kZWw7XHJcbiAgICBAQXV0b3dpcmVkKCdzZWxlY3RhYmxlU2VydmljZScpIHByaXZhdGUgc2VsZWN0YWJsZVNlcnZpY2U6IFNlbGVjdGFibGVTZXJ2aWNlO1xyXG4gICAgQEF1dG93aXJlZCgndmFsdWVTZXJ2aWNlJykgcHJpdmF0ZSB2YWx1ZVNlcnZpY2U6IFZhbHVlU2VydmljZTtcclxuICAgIEBBdXRvd2lyZWQoJ2JlYW5zJykgcHJpdmF0ZSBiZWFuczogQmVhbnM7XHJcbiAgICBAQXV0b3dpcmVkKCdzZWxlY3Rpb25TZXJ2aWNlJykgcHJpdmF0ZSBzZWxlY3Rpb25TZXJ2aWNlOiBJU2VsZWN0aW9uU2VydmljZTtcclxuXHJcbiAgICAvLyB3aGVuIGdyb3VwaW5nLCB0aGVzZSBpdGVtcyBhcmUgb2Ygbm90ZTpcclxuICAgIC8vIHJvd05vZGUucGFyZW50OiBSb3dOb2RlOiBzZXQgdG8gdGhlIHBhcmVudFxyXG4gICAgLy8gcm93Tm9kZS5jaGlsZHJlbkFmdGVyR3JvdXA6IFJvd05vZGVbXSA9IHRoZSBkaXJlY3QgY2hpbGRyZW4gb2YgdGhpcyBncm91cFxyXG4gICAgLy8gcm93Tm9kZS5jaGlsZHJlbk1hcHBlZDogc3RyaW5nPT5Sb3dOb2RlID0gY2hpbGRyZW4gbWFwcGVkIGJ5IGdyb3VwIGtleSAod2hlbiBncm91cHMpIG9yIGFuIGVtcHR5IG1hcCBpZiBsZWFmIGdyb3VwICh0aGlzIGlzIHRoZW4gdXNlZCBieSBwaXZvdClcclxuICAgIC8vIGZvciBsZWFmIGdyb3Vwcywgcm93Tm9kZS5jaGlsZHJlbkFmdGVyR3JvdXAgPSByb3dOb2RlLmFsbExlYWZDaGlsZHJlbjtcclxuXHJcbiAgICBwcml2YXRlIG9sZEdyb3VwaW5nRGV0YWlsczogR3JvdXBpbmdEZXRhaWxzO1xyXG4gICAgcHJpdmF0ZSBvbGRHcm91cERpc3BsYXlDb2xJZHM6IHN0cmluZztcclxuXHJcbiAgICBwdWJsaWMgZXhlY3V0ZShwYXJhbXM6IFN0YWdlRXhlY3V0ZVBhcmFtcyk6IHZvaWQge1xyXG5cclxuICAgICAgICBjb25zdCBkZXRhaWxzID0gdGhpcy5jcmVhdGVHcm91cGluZ0RldGFpbHMocGFyYW1zKTtcclxuXHJcbiAgICAgICAgaWYgKGRldGFpbHMudHJhbnNhY3Rpb25zKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlVHJhbnNhY3Rpb24oZGV0YWlscyk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29uc3QgYWZ0ZXJDb2xzQ2hhbmdlZCA9IHBhcmFtcy5hZnRlckNvbHVtbnNDaGFuZ2VkID09PSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLnNob3RndW5SZXNldEV2ZXJ5dGhpbmcoZGV0YWlscywgYWZ0ZXJDb2xzQ2hhbmdlZCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoIWRldGFpbHMudXNpbmdUcmVlRGF0YSkge1xyXG4gICAgICAgICAgICAvLyB3ZSBkb24ndCBkbyBncm91cCBzb3J0aW5nIGZvciB0cmVlIGRhdGFcclxuICAgICAgICAgICAgdGhpcy5wb3NpdGlvbkxlYWZzQW5kR3JvdXBzKHBhcmFtcy5jaGFuZ2VkUGF0aCEpO1xyXG4gICAgICAgICAgICB0aGlzLm9yZGVyR3JvdXBzKGRldGFpbHMpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5zZWxlY3RhYmxlU2VydmljZS51cGRhdGVTZWxlY3RhYmxlQWZ0ZXJHcm91cGluZygpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgcG9zaXRpb25MZWFmc0FuZEdyb3VwcyhjaGFuZ2VkUGF0aDogQ2hhbmdlZFBhdGgpIHtcclxuICAgICAgICBjaGFuZ2VkUGF0aC5mb3JFYWNoQ2hhbmdlZE5vZGVEZXB0aEZpcnN0KGdyb3VwID0+IHtcclxuICAgICAgICAgICAgaWYgKGdyb3VwLmNoaWxkcmVuQWZ0ZXJHcm91cCkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbGVhZk5vZGVzOiBSb3dOb2RlW10gPSBbXTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGdyb3VwTm9kZXM6IFJvd05vZGVbXSA9IFtdO1xyXG4gICAgICAgICAgICAgICAgbGV0IHVuYmFsYW5jZWROb2RlOiBSb3dOb2RlIHwgdW5kZWZpbmVkO1xyXG5cclxuICAgICAgICAgICAgICAgIGdyb3VwLmNoaWxkcmVuQWZ0ZXJHcm91cC5mb3JFYWNoKHJvdyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFyb3cuY2hpbGRyZW5BZnRlckdyb3VwPy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGVhZk5vZGVzLnB1c2gocm93KTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocm93LmtleSA9PT0gJycgJiYgIXVuYmFsYW5jZWROb2RlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmJhbGFuY2VkTm9kZSA9IHJvdztcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwTm9kZXMucHVzaChyb3cpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKHVuYmFsYW5jZWROb2RlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZ3JvdXBOb2Rlcy5wdXNoKHVuYmFsYW5jZWROb2RlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgZ3JvdXAuY2hpbGRyZW5BZnRlckdyb3VwID0gWy4uLmxlYWZOb2RlcywgLi4uZ3JvdXBOb2Rlc107XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LCBmYWxzZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBjcmVhdGVHcm91cGluZ0RldGFpbHMocGFyYW1zOiBTdGFnZUV4ZWN1dGVQYXJhbXMpOiBHcm91cGluZ0RldGFpbHMge1xyXG4gICAgICAgIGNvbnN0IHsgcm93Tm9kZSwgY2hhbmdlZFBhdGgsIHJvd05vZGVUcmFuc2FjdGlvbnMsIHJvd05vZGVPcmRlciB9ID0gcGFyYW1zO1xyXG5cclxuICAgICAgICBjb25zdCB1c2luZ1RyZWVEYXRhID0gdGhpcy5nb3MuZ2V0KCd0cmVlRGF0YScpO1xyXG5cclxuICAgICAgICBjb25zdCBncm91cGVkQ29scyA9IHVzaW5nVHJlZURhdGEgPyBudWxsIDogdGhpcy5jb2x1bW5Nb2RlbC5nZXRSb3dHcm91cENvbHVtbnMoKTtcclxuXHJcbiAgICAgICAgY29uc3QgZGV0YWlsczogR3JvdXBpbmdEZXRhaWxzID0ge1xyXG4gICAgICAgICAgICAvLyBzb21lb25lIGNvbXBsYWluZWQgdGhhdCB0aGUgcGFyZW50IGF0dHJpYnV0ZSB3YXMgY2F1c2luZyBzb21lIGNoYW5nZSBkZXRlY3Rpb25cclxuICAgICAgICAgICAgLy8gdG8gYnJlYWsgaW4gYW4gYW5ndWxhciBhZGQtb24uICBUYWtpbmcgdGhlIHBhcmVudCBvdXQgYnJlYWtzIGEgY3ljbGljIGRlcGVuZGVuY3ksIGhlbmNlIHRoaXMgZmxhZyBnb3QgaW50cm9kdWNlZC5cclxuICAgICAgICAgICAgaW5jbHVkZVBhcmVudHM6ICF0aGlzLmdvcy5nZXQoJ3N1cHByZXNzUGFyZW50c0luUm93Tm9kZXMnKSxcclxuICAgICAgICAgICAgZXhwYW5kQnlEZWZhdWx0OiB0aGlzLmdvcy5nZXQoJ2dyb3VwRGVmYXVsdEV4cGFuZGVkJyksXHJcbiAgICAgICAgICAgIGdyb3VwZWRDb2xzOiBncm91cGVkQ29scyEsXHJcbiAgICAgICAgICAgIHJvb3ROb2RlOiByb3dOb2RlLFxyXG4gICAgICAgICAgICBwaXZvdE1vZGU6IHRoaXMuY29sdW1uTW9kZWwuaXNQaXZvdE1vZGUoKSxcclxuICAgICAgICAgICAgZ3JvdXBlZENvbENvdW50OiB1c2luZ1RyZWVEYXRhIHx8ICFncm91cGVkQ29scyA/IDAgOiBncm91cGVkQ29scy5sZW5ndGgsXHJcbiAgICAgICAgICAgIHJvd05vZGVPcmRlcjogcm93Tm9kZU9yZGVyISxcclxuICAgICAgICAgICAgdHJhbnNhY3Rpb25zOiByb3dOb2RlVHJhbnNhY3Rpb25zISxcclxuICAgICAgICAgICAgLy8gaWYgbm8gdHJhbnNhY3Rpb24sIHRoZW4gaXQncyBzaG90Z3VuLCBjaGFuZ2VkIHBhdGggd291bGQgYmUgJ25vdCBhY3RpdmUnIGF0IHRoaXMgcG9pbnQgYW55d2F5XHJcbiAgICAgICAgICAgIGNoYW5nZWRQYXRoOiBjaGFuZ2VkUGF0aCEsXHJcbiAgICAgICAgICAgIGdyb3VwQWxsb3dVbmJhbGFuY2VkOiAgdGhpcy5nb3MuZ2V0KCdncm91cEFsbG93VW5iYWxhbmNlZCcpLFxyXG4gICAgICAgICAgICBpc0dyb3VwT3BlbkJ5RGVmYXVsdDogdGhpcy5nb3MuZ2V0Q2FsbGJhY2soJ2lzR3JvdXBPcGVuQnlEZWZhdWx0JykgYXMgYW55LFxyXG4gICAgICAgICAgICBpbml0aWFsR3JvdXBPcmRlckNvbXBhcmF0b3I6IHRoaXMuZ29zLmdldENhbGxiYWNrKCdpbml0aWFsR3JvdXBPcmRlckNvbXBhcmF0b3InKSBhcyBhbnksXHJcbiAgICAgICAgICAgIHVzaW5nVHJlZURhdGE6IHVzaW5nVHJlZURhdGEsXHJcbiAgICAgICAgICAgIHN1cHByZXNzR3JvdXBNYWludGFpblZhbHVlVHlwZTogdGhpcy5nb3MuZ2V0KCdzdXBwcmVzc0dyb3VwTWFpbnRhaW5WYWx1ZVR5cGUnKSxcclxuICAgICAgICAgICAgZ2V0RGF0YVBhdGg6IHVzaW5nVHJlZURhdGEgPyB0aGlzLmdvcy5nZXQoJ2dldERhdGFQYXRoJykgOiB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgIGtleUNyZWF0b3JzOiBncm91cGVkQ29scz8ubWFwKGNvbHVtbiA9PiBjb2x1bW4uZ2V0Q29sRGVmKCkua2V5Q3JlYXRvcikgPz8gW11cclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICByZXR1cm4gZGV0YWlscztcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGhhbmRsZVRyYW5zYWN0aW9uKGRldGFpbHM6IEdyb3VwaW5nRGV0YWlscyk6IHZvaWQge1xyXG5cclxuICAgICAgICBkZXRhaWxzLnRyYW5zYWN0aW9ucy5mb3JFYWNoKHRyYW4gPT4ge1xyXG4gICAgICAgICAgICAvLyB3ZSBkb24ndCBhbGxvdyBiYXRjaCByZW1vdmVyIGZvciB0cmVlIGRhdGEgYXMgdHJlZSBkYXRhIHVzZXMgRmlsbGVyIE5vZGVzLFxyXG4gICAgICAgICAgICAvLyBhbmQgY3JlYXRpbmcvZGVsZXRpbmcgZmlsbGVyIG5vZGVzIG5lZWRzIHRvIGJlIGRvbmUgYWxvbmdzaWRlIHRoZSBub2RlIGRlbGV0aW5nXHJcbiAgICAgICAgICAgIC8vIGFuZCBtb3ZpbmcuIGlmIHdlIHdhbnQgdG8gQmF0Y2ggUmVtb3ZlciB3b3JraW5nIHdpdGggdHJlZSBkYXRhIHRoZW4gd291bGQgbmVlZFxyXG4gICAgICAgICAgICAvLyB0byBjb25zaWRlciBob3cgRmlsbGVyIE5vZGVzIHdvdWxkIGJlIGltcGFjdGVkIChpdCdzIHBvc3NpYmxlIHRoYXQgaXQgY2FuIGJlIGVhc2lseVxyXG4gICAgICAgICAgICAvLyBtb2RpZmllZCB0byB3b3JrLCBob3dldmVyIGZvciBub3cgSSBkb24ndCBoYXZlIHRoZSBicmFpbiBlbmVyZ3kgdG8gd29yayBpdCBhbGwgb3V0KS5cclxuICAgICAgICAgICAgY29uc3QgYmF0Y2hSZW1vdmVyID0gIWRldGFpbHMudXNpbmdUcmVlRGF0YSA/IG5ldyBCYXRjaFJlbW92ZXIoKSA6IHVuZGVmaW5lZDtcclxuXHJcbiAgICAgICAgICAgIC8vIHRoZSBvcmRlciBoZXJlIG9mIFthZGQsIHJlbW92ZSwgdXBkYXRlXSBuZWVkcyB0byBiZSB0aGUgc2FtZSBhcyBpbiBDbGllbnRTaWRlTm9kZU1hbmFnZXIsXHJcbiAgICAgICAgICAgIC8vIGFzIHRoZSBvcmRlciBpcyBpbXBvcnRhbnQgd2hlbiBhIHJlY29yZCB3aXRoIHRoZSBzYW1lIGlkIGlzIGFkZGVkIGFuZCByZW1vdmVkIGluIHRoZSBzYW1lXHJcbiAgICAgICAgICAgIC8vIHRyYW5zYWN0aW9uLlxyXG4gICAgICAgICAgICBpZiAoXy5leGlzdHNBbmROb3RFbXB0eSh0cmFuLnJlbW92ZSkpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlTm9kZXModHJhbi5yZW1vdmUgYXMgUm93Tm9kZVtdLCBkZXRhaWxzLCBiYXRjaFJlbW92ZXIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChfLmV4aXN0c0FuZE5vdEVtcHR5KHRyYW4udXBkYXRlKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tb3ZlTm9kZXNJbldyb25nUGF0aCh0cmFuLnVwZGF0ZSBhcyBSb3dOb2RlW10sIGRldGFpbHMsIGJhdGNoUmVtb3Zlcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKF8uZXhpc3RzQW5kTm90RW1wdHkodHJhbi5hZGQpKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmluc2VydE5vZGVzKHRyYW4uYWRkIGFzIFJvd05vZGVbXSwgZGV0YWlscywgZmFsc2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIG11c3QgZmx1c2ggaGVyZSwgYW5kIG5vdCBhbGxvdyBhbm90aGVyIHRyYW5zYWN0aW9uIHRvIGJlIGFwcGxpZWQsXHJcbiAgICAgICAgICAgIC8vIGFzIGVhY2ggdHJhbnNhY3Rpb24gbXVzdCBmaW5pc2ggbGVhdmluZyB0aGUgZGF0YSBpbiBhIGNvbnNpc3RlbnQgc3RhdGUuXHJcbiAgICAgICAgICAgIGlmIChiYXRjaFJlbW92ZXIpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudHNXaXRoQ2hpbGRyZW5SZW1vdmVkID0gYmF0Y2hSZW1vdmVyLmdldEFsbFBhcmVudHMoKS5zbGljZSgpO1xyXG4gICAgICAgICAgICAgICAgYmF0Y2hSZW1vdmVyLmZsdXNoKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZUVtcHR5R3JvdXBzKHBhcmVudHNXaXRoQ2hpbGRyZW5SZW1vdmVkLCBkZXRhaWxzKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBpZiAoZGV0YWlscy5yb3dOb2RlT3JkZXIpIHtcclxuICAgICAgICAgICAgdGhpcy5zb3J0Q2hpbGRyZW4oZGV0YWlscyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIHRoaXMgaXMgdXNlZCB3aGVuIGRvaW5nIGRlbHRhIHVwZGF0ZXMsIGVnIFJlZHV4LCBrZWVwcyBub2RlcyBpbiByaWdodCBvcmRlclxyXG4gICAgcHJpdmF0ZSBzb3J0Q2hpbGRyZW4oZGV0YWlsczogR3JvdXBpbmdEZXRhaWxzKTogdm9pZCB7XHJcbiAgICAgICAgZGV0YWlscy5jaGFuZ2VkUGF0aC5mb3JFYWNoQ2hhbmdlZE5vZGVEZXB0aEZpcnN0KG5vZGUgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIW5vZGUuY2hpbGRyZW5BZnRlckdyb3VwKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGNvbnN0IGRpZFNvcnQgPSBfLnNvcnRSb3dOb2Rlc0J5T3JkZXIobm9kZS5jaGlsZHJlbkFmdGVyR3JvdXAhLCBkZXRhaWxzLnJvd05vZGVPcmRlcik7XHJcbiAgICAgICAgICAgIGlmIChkaWRTb3J0KSB7XHJcbiAgICAgICAgICAgICAgICBkZXRhaWxzLmNoYW5nZWRQYXRoLmFkZFBhcmVudE5vZGUobm9kZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LCBmYWxzZSwgdHJ1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBvcmRlckdyb3VwcyhkZXRhaWxzOiBHcm91cGluZ0RldGFpbHMpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBjb21wYXJhdG9yID0gZGV0YWlscy5pbml0aWFsR3JvdXBPcmRlckNvbXBhcmF0b3I7XHJcbiAgICAgICAgaWYgKF8uZXhpc3RzKGNvbXBhcmF0b3IpKSB7IHJlY3Vyc2l2ZVNvcnQoZGV0YWlscy5yb290Tm9kZSk7IH1cclxuXHJcbiAgICAgICAgZnVuY3Rpb24gcmVjdXJzaXZlU29ydChyb3dOb2RlOiBSb3dOb2RlKTogdm9pZCB7XHJcbiAgICAgICAgICAgIGNvbnN0IGRvU29ydCA9IF8uZXhpc3RzKHJvd05vZGUuY2hpbGRyZW5BZnRlckdyb3VwKSAmJlxyXG4gICAgICAgICAgICAgICAgLy8gd2Ugb25seSB3YW50IHRvIHNvcnQgZ3JvdXBzLCBzbyB3ZSBkbyBub3Qgc29ydCBsZWFmcyAoYSBsZWFmIGdyb3VwIGhhcyBsZWFmcyBhcyBjaGlsZHJlbilcclxuICAgICAgICAgICAgICAgICFyb3dOb2RlLmxlYWZHcm91cDtcclxuXHJcbiAgICAgICAgICAgIGlmIChkb1NvcnQpIHtcclxuICAgICAgICAgICAgICAgIHJvd05vZGUuY2hpbGRyZW5BZnRlckdyb3VwIS5zb3J0KChub2RlQSwgbm9kZUIpID0+IGNvbXBhcmF0b3IhKHsgbm9kZUEsIG5vZGVCIH0pKTtcclxuICAgICAgICAgICAgICAgIHJvd05vZGUuY2hpbGRyZW5BZnRlckdyb3VwIS5mb3JFYWNoKChjaGlsZE5vZGU6IFJvd05vZGUpID0+IHJlY3Vyc2l2ZVNvcnQoY2hpbGROb2RlKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZXRFeGlzdGluZ1BhdGhGb3JOb2RlKG5vZGU6IFJvd05vZGUsIGRldGFpbHM6IEdyb3VwaW5nRGV0YWlscyk6IEdyb3VwSW5mb1tdIHtcclxuICAgICAgICBjb25zdCByZXM6IEdyb3VwSW5mb1tdID0gW107XHJcblxyXG4gICAgICAgIC8vIHdoZW4gZG9pbmcgdHJlZSBkYXRhLCB0aGUgbm9kZSBpcyBwYXJ0IG9mIHRoZSBwYXRoLFxyXG4gICAgICAgIC8vIGJ1dCB3aGVuIGRvaW5nIGdyaWQgZ3JvdXBpbmcsIHRoZSBub2RlIGlzIG5vdCBwYXJ0IG9mIHRoZSBwYXRoIHNvIHdlIHN0YXJ0IHdpdGggdGhlIHBhcmVudC5cclxuICAgICAgICBsZXQgcG9pbnRlciA9IGRldGFpbHMudXNpbmdUcmVlRGF0YSA/IG5vZGUgOiBub2RlLnBhcmVudDtcclxuICAgICAgICB3aGlsZSAocG9pbnRlciAmJiBwb2ludGVyICE9PSBkZXRhaWxzLnJvb3ROb2RlKSB7XHJcbiAgICAgICAgICAgIHJlcy5wdXNoKHtcclxuICAgICAgICAgICAgICAgIGtleTogcG9pbnRlci5rZXkhLFxyXG4gICAgICAgICAgICAgICAgcm93R3JvdXBDb2x1bW46IHBvaW50ZXIucm93R3JvdXBDb2x1bW4sXHJcbiAgICAgICAgICAgICAgICBmaWVsZDogcG9pbnRlci5maWVsZFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgcG9pbnRlciA9IHBvaW50ZXIucGFyZW50O1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXMucmV2ZXJzZSgpO1xyXG4gICAgICAgIHJldHVybiByZXM7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBtb3ZlTm9kZXNJbldyb25nUGF0aChjaGlsZE5vZGVzOiBSb3dOb2RlW10sIGRldGFpbHM6IEdyb3VwaW5nRGV0YWlscywgYmF0Y2hSZW1vdmVyOiBCYXRjaFJlbW92ZXIgfCB1bmRlZmluZWQpOiB2b2lkIHtcclxuICAgICAgICBjaGlsZE5vZGVzLmZvckVhY2goY2hpbGROb2RlID0+IHtcclxuXHJcbiAgICAgICAgICAgIC8vIHdlIGFkZCBub2RlLCBldmVuIGlmIHBhcmVudCBoYXMgbm90IGNoYW5nZWQsIGFzIHRoZSBkYXRhIGNvdWxkIGhhdmVcclxuICAgICAgICAgICAgLy8gY2hhbmdlZCwgaGVuY2UgYWdncmVnYXRpb25zIHdpbGwgYmUgd3JvbmdcclxuICAgICAgICAgICAgaWYgKGRldGFpbHMuY2hhbmdlZFBhdGguaXNBY3RpdmUoKSkge1xyXG4gICAgICAgICAgICAgICAgZGV0YWlscy5jaGFuZ2VkUGF0aC5hZGRQYXJlbnROb2RlKGNoaWxkTm9kZS5wYXJlbnQpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBjb25zdCBpbmZvVG9LZXlNYXBwZXIgPSAoaXRlbTogR3JvdXBJbmZvKSA9PiBpdGVtLmtleTtcclxuICAgICAgICAgICAgY29uc3Qgb2xkUGF0aDogc3RyaW5nW10gPSB0aGlzLmdldEV4aXN0aW5nUGF0aEZvck5vZGUoY2hpbGROb2RlLCBkZXRhaWxzKS5tYXAoaW5mb1RvS2V5TWFwcGVyKTtcclxuICAgICAgICAgICAgY29uc3QgbmV3UGF0aDogc3RyaW5nW10gPSB0aGlzLmdldEdyb3VwSW5mbyhjaGlsZE5vZGUsIGRldGFpbHMpLm1hcChpbmZvVG9LZXlNYXBwZXIpO1xyXG5cclxuICAgICAgICAgICAgY29uc3Qgbm9kZUluQ29ycmVjdFBhdGggPSBfLmFyZUVxdWFsKG9sZFBhdGgsIG5ld1BhdGgpO1xyXG5cclxuICAgICAgICAgICAgaWYgKCFub2RlSW5Db3JyZWN0UGF0aCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tb3ZlTm9kZShjaGlsZE5vZGUsIGRldGFpbHMsIGJhdGNoUmVtb3Zlcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIG1vdmVOb2RlKGNoaWxkTm9kZTogUm93Tm9kZSwgZGV0YWlsczogR3JvdXBpbmdEZXRhaWxzLCBiYXRjaFJlbW92ZXI6IEJhdGNoUmVtb3ZlciB8IHVuZGVmaW5lZCk6IHZvaWQge1xyXG5cclxuICAgICAgICB0aGlzLnJlbW92ZU5vZGVzSW5TdGFnZXMoW2NoaWxkTm9kZV0sIGRldGFpbHMsIGJhdGNoUmVtb3Zlcik7XHJcbiAgICAgICAgdGhpcy5pbnNlcnRPbmVOb2RlKGNoaWxkTm9kZSwgZGV0YWlscywgdHJ1ZSwgYmF0Y2hSZW1vdmVyKTtcclxuXHJcbiAgICAgICAgLy8gaGFjayAtIGlmIHdlIGRpZG4ndCBkbyB0aGlzLCB0aGVuIHJlbmFtaW5nIGEgdHJlZSBpdGVtIChpZSBjaGFuZ2luZyByb3dOb2RlLmtleSkgd291bGRuJ3QgZ2V0XHJcbiAgICAgICAgLy8gcmVmcmVzaGVkIGludG8gdGhlIGd1aS5cclxuICAgICAgICAvLyB0aGlzIGlzIG5lZWRlZCB0byBraWNrIG9mZiB0aGUgZXZlbnQgdGhhdCByb3dDb21wIGxpc3RlbnMgdG8gZm9yIHJlZnJlc2guIHRoaXMgaW4gdHVyblxyXG4gICAgICAgIC8vIHRoZW4gd2lsbCBnZXQgZWFjaCBjZWxsIGluIHRoZSByb3cgdG8gcmVmcmVzaCAtIHdoaWNoIGlzIHdoYXQgd2UgbmVlZCBhcyB3ZSBkb24ndCBrbm93IHdoaWNoXHJcbiAgICAgICAgLy8gY29sdW1ucyB3aWxsIGJlIGRpc3BsYXlpbmcgdGhlIHJvd05vZGUua2V5IGluZm8uXHJcbiAgICAgICAgY2hpbGROb2RlLnNldERhdGEoY2hpbGROb2RlLmRhdGEpO1xyXG5cclxuICAgICAgICAvLyB3ZSBhZGQgYm90aCBvbGQgYW5kIG5ldyBwYXJlbnRzIHRvIGNoYW5nZWQgcGF0aCwgYXMgYm90aCB3aWxsIG5lZWQgdG8gYmUgcmVmcmVzaGVkLlxyXG4gICAgICAgIC8vIHdlIGFscmVhZHkgYWRkZWQgdGhlIG9sZCBwYXJlbnQgKGluIGNhbGxpbmcgbWV0aG9kKSwgc28ganVzdCBhZGQgdGhlIG5ldyBwYXJlbnQgaGVyZVxyXG4gICAgICAgIGlmIChkZXRhaWxzLmNoYW5nZWRQYXRoLmlzQWN0aXZlKCkpIHtcclxuICAgICAgICAgICAgY29uc3QgbmV3UGFyZW50ID0gY2hpbGROb2RlLnBhcmVudDtcclxuICAgICAgICAgICAgZGV0YWlscy5jaGFuZ2VkUGF0aC5hZGRQYXJlbnROb2RlKG5ld1BhcmVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgcmVtb3ZlTm9kZXMobGVhZlJvd05vZGVzOiBSb3dOb2RlW10sIGRldGFpbHM6IEdyb3VwaW5nRGV0YWlscywgYmF0Y2hSZW1vdmVyOiBCYXRjaFJlbW92ZXIgfCB1bmRlZmluZWQpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnJlbW92ZU5vZGVzSW5TdGFnZXMobGVhZlJvd05vZGVzLCBkZXRhaWxzLCBiYXRjaFJlbW92ZXIpO1xyXG4gICAgICAgIGlmIChkZXRhaWxzLmNoYW5nZWRQYXRoLmlzQWN0aXZlKCkpIHtcclxuICAgICAgICAgICAgbGVhZlJvd05vZGVzLmZvckVhY2gocm93Tm9kZSA9PiBkZXRhaWxzLmNoYW5nZWRQYXRoLmFkZFBhcmVudE5vZGUocm93Tm9kZS5wYXJlbnQpKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSByZW1vdmVOb2Rlc0luU3RhZ2VzKGxlYWZSb3dOb2RlczogUm93Tm9kZVtdLCBkZXRhaWxzOiBHcm91cGluZ0RldGFpbHMsIGJhdGNoUmVtb3ZlcjogQmF0Y2hSZW1vdmVyIHwgdW5kZWZpbmVkKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5yZW1vdmVOb2Rlc0Zyb21QYXJlbnRzKGxlYWZSb3dOb2RlcywgZGV0YWlscywgYmF0Y2hSZW1vdmVyKTtcclxuICAgICAgICBpZiAoZGV0YWlscy51c2luZ1RyZWVEYXRhKSB7XHJcbiAgICAgICAgICAgIHRoaXMucG9zdFJlbW92ZUNyZWF0ZUZpbGxlck5vZGVzKGxlYWZSb3dOb2RlcywgZGV0YWlscyk7XHJcblxyXG4gICAgICAgICAgICAvLyBXaGVuIG5vdCBUcmVlRGF0YSwgdGhlbiByZW1vdmVFbXB0eUdyb3VwcyBpcyBjYWxsZWQganVzdCBiZWZvcmUgdGhlIEJhdGNoUmVtb3ZlciBpcyBmbHVzaGVkLlxyXG4gICAgICAgICAgICAvLyBIb3dldmVyIGZvciBUcmVlRGF0YSwgdGhlcmUgaXMgbm8gQmF0Y2hSZW1vdmVyLCBzbyB3ZSBoYXZlIHRvIGNhbGwgcmVtb3ZlRW1wdHlHcm91cHMgaGVyZS5cclxuICAgICAgICAgICAgY29uc3Qgbm9kZVBhcmVudHMgPSBsZWFmUm93Tm9kZXMubWFwKG4gPT4gbi5wYXJlbnQhKTtcclxuICAgICAgICAgICAgdGhpcy5yZW1vdmVFbXB0eUdyb3Vwcyhub2RlUGFyZW50cywgZGV0YWlscyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZm9yRWFjaFBhcmVudEdyb3VwKGRldGFpbHM6IEdyb3VwaW5nRGV0YWlscywgZ3JvdXA6IFJvd05vZGUsIGNhbGxiYWNrOiAocGFyZW50OiBSb3dOb2RlKSA9PiB2b2lkKTogdm9pZCB7XHJcbiAgICAgICAgbGV0IHBvaW50ZXI6IFJvd05vZGUgfCBudWxsID0gZ3JvdXA7XHJcbiAgICAgICAgd2hpbGUgKHBvaW50ZXIgJiYgcG9pbnRlciAhPT0gZGV0YWlscy5yb290Tm9kZSkge1xyXG4gICAgICAgICAgICBjYWxsYmFjayhwb2ludGVyKTtcclxuICAgICAgICAgICAgcG9pbnRlciA9IHBvaW50ZXIucGFyZW50O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHJlbW92ZU5vZGVzRnJvbVBhcmVudHMobm9kZXNUb1JlbW92ZTogUm93Tm9kZVtdLCBkZXRhaWxzOiBHcm91cGluZ0RldGFpbHMsIHByb3ZpZGVkOiBCYXRjaFJlbW92ZXIgfCB1bmRlZmluZWQpOiB2b2lkIHtcclxuICAgICAgICAvLyB0aGlzIG1ldGhvZCBjYW4gYmUgY2FsbGVkIHdpdGggQmF0Y2hSZW1vdmVyIGFzIG9wdGlvbmFsLiBpZiBpdCBpcyBtaXNzZWQsIHdlIGNyZWF0ZWQgYSBsb2NhbCB2ZXJzaW9uXHJcbiAgICAgICAgLy8gYW5kIGZsdXNoIGl0IGF0IHRoZSBlbmQuIGlmIG9uZSBpcyBwcm92aWRlZCwgd2UgYWRkIHRvIHRoZSBwcm92aWRlZCBvbmUgYW5kIGl0IGdldHMgZmx1c2hlZCBlbHNld2hlcmUuXHJcbiAgICAgICAgY29uc3QgYmF0Y2hSZW1vdmVySXNMb2NhbCA9IHByb3ZpZGVkID09IG51bGw7XHJcbiAgICAgICAgY29uc3QgYmF0Y2hSZW1vdmVyVG9Vc2UgPSBwcm92aWRlZCA/IHByb3ZpZGVkIDogbmV3IEJhdGNoUmVtb3ZlcigpO1xyXG5cclxuICAgICAgICBub2Rlc1RvUmVtb3ZlLmZvckVhY2gobm9kZVRvUmVtb3ZlID0+IHtcclxuICAgICAgICAgICAgdGhpcy5yZW1vdmVGcm9tUGFyZW50KG5vZGVUb1JlbW92ZSwgYmF0Y2hSZW1vdmVyVG9Vc2UpO1xyXG5cclxuICAgICAgICAgICAgLy8gcmVtb3ZlIGZyb20gYWxsTGVhZkNoaWxkcmVuLiB3ZSBjbGVhciBkb3duIGFsbCBwYXJlbnRzIEVYQ0VQVCB0aGUgUm9vdCBOb2RlLCBhc1xyXG4gICAgICAgICAgICAvLyB0aGUgQ2xpZW50U2lkZU5vZGVNYW5hZ2VyIGlzIHJlc3BvbnNpYmxlIGZvciB0aGUgUm9vdCBOb2RlLlxyXG4gICAgICAgICAgICB0aGlzLmZvckVhY2hQYXJlbnRHcm91cChkZXRhaWxzLCBub2RlVG9SZW1vdmUucGFyZW50ISwgcGFyZW50Tm9kZSA9PiB7XHJcbiAgICAgICAgICAgICAgICBiYXRjaFJlbW92ZXJUb1VzZS5yZW1vdmVGcm9tQWxsTGVhZkNoaWxkcmVuKHBhcmVudE5vZGUsIG5vZGVUb1JlbW92ZSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBpZiAoYmF0Y2hSZW1vdmVySXNMb2NhbCkge1xyXG4gICAgICAgICAgICBiYXRjaFJlbW92ZXJUb1VzZS5mbHVzaCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHBvc3RSZW1vdmVDcmVhdGVGaWxsZXJOb2Rlcyhub2Rlc1RvUmVtb3ZlOiBSb3dOb2RlW10sIGRldGFpbHM6IEdyb3VwaW5nRGV0YWlscyk6IHZvaWQge1xyXG4gICAgICAgIG5vZGVzVG9SZW1vdmUuZm9yRWFjaChub2RlVG9SZW1vdmUgPT4ge1xyXG5cclxuICAgICAgICAgICAgLy8gaWYgbm90IGdyb3VwLCBhbmQgY2hpbGRyZW4gYXJlIHByZXNlbnQsIG5lZWQgdG8gbW92ZSBjaGlsZHJlbiB0byBhIGdyb3VwLlxyXG4gICAgICAgICAgICAvLyBvdGhlcndpc2UgaWYgbm8gY2hpbGRyZW4sIHdlIGNhbiBqdXN0IHJlbW92ZSB3aXRob3V0IHJlcGxhY2luZy5cclxuICAgICAgICAgICAgY29uc3QgcmVwbGFjZVdpdGhHcm91cCA9IG5vZGVUb1JlbW92ZS5oYXNDaGlsZHJlbigpO1xyXG4gICAgICAgICAgICBpZiAocmVwbGFjZVdpdGhHcm91cCkge1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgb2xkUGF0aCA9IHRoaXMuZ2V0RXhpc3RpbmdQYXRoRm9yTm9kZShub2RlVG9SZW1vdmUsIGRldGFpbHMpO1xyXG4gICAgICAgICAgICAgICAgLy8gYmVjYXVzZSB3ZSBqdXN0IHJlbW92ZWQgdGhlIHVzZXJHcm91cCwgdGhpcyB3aWxsIGFsd2F5cyByZXR1cm4gbmV3IHN1cHBvcnQgZ3JvdXBcclxuICAgICAgICAgICAgICAgIGNvbnN0IG5ld0dyb3VwTm9kZSA9IHRoaXMuZmluZFBhcmVudEZvck5vZGUobm9kZVRvUmVtb3ZlLCBvbGRQYXRoLCBkZXRhaWxzKTtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyB0aGVzZSBwcm9wZXJ0aWVzIGFyZSB0aGUgb25lcyB0aGF0IHdpbGwgYmUgaW5jb3JyZWN0IGluIHRoZSBuZXdseSBjcmVhdGVkIGdyb3VwLFxyXG4gICAgICAgICAgICAgICAgLy8gc28gY29weSB0aGVtIGZyb20gdGhlIG9sZCBjaGlsZE5vZGVcclxuICAgICAgICAgICAgICAgIG5ld0dyb3VwTm9kZS5leHBhbmRlZCA9IG5vZGVUb1JlbW92ZS5leHBhbmRlZDtcclxuICAgICAgICAgICAgICAgIG5ld0dyb3VwTm9kZS5hbGxMZWFmQ2hpbGRyZW4gPSBub2RlVG9SZW1vdmUuYWxsTGVhZkNoaWxkcmVuO1xyXG4gICAgICAgICAgICAgICAgbmV3R3JvdXBOb2RlLmNoaWxkcmVuQWZ0ZXJHcm91cCA9IG5vZGVUb1JlbW92ZS5jaGlsZHJlbkFmdGVyR3JvdXA7XHJcbiAgICAgICAgICAgICAgICBuZXdHcm91cE5vZGUuY2hpbGRyZW5NYXBwZWQgPSBub2RlVG9SZW1vdmUuY2hpbGRyZW5NYXBwZWQ7XHJcbiAgICAgICAgICAgICAgICBuZXdHcm91cE5vZGUudXBkYXRlSGFzQ2hpbGRyZW4oKTtcclxuXHJcbiAgICAgICAgICAgICAgICBuZXdHcm91cE5vZGUuY2hpbGRyZW5BZnRlckdyb3VwIS5mb3JFYWNoKHJvd05vZGUgPT4gcm93Tm9kZS5wYXJlbnQgPSBuZXdHcm91cE5vZGUpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgcmVtb3ZlRW1wdHlHcm91cHMocG9zc2libGVFbXB0eUdyb3VwczogUm93Tm9kZVtdLCBkZXRhaWxzOiBHcm91cGluZ0RldGFpbHMpOiB2b2lkIHtcclxuICAgICAgICAvLyB3ZSBkbyB0aGlzIG11bHRpcGxlIHRpbWVzLCBhcyB3aGVuIHdlIHJlbW92ZSBncm91cHMsIHRoYXQgbWVhbnMgdGhlIHBhcmVudCBvZiBqdXN0IHJlbW92ZWRcclxuICAgICAgICAvLyBncm91cCBjYW4gdGhlbiBiZSBlbXB0eS4gdG8gZ2V0IGFyb3VuZCB0aGlzLCBpZiB3ZSByZW1vdmUsIHRoZW4gd2UgY2hlY2sgZXZlcnl0aGluZyBhZ2FpbiBmb3JcclxuICAgICAgICAvLyBuZXdseSBlbXB0aWVkIGdyb3Vwcy4gdGhlIG1heCBudW1iZXIgb2YgdGltZXMgdGhpcyB3aWxsIGV4ZWN1dGUgaXMgdGhlIGRlcHRoIG9mIHRoZSBncm91cCB0cmVlLlxyXG4gICAgICAgIGxldCBjaGVja0FnYWluID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgY29uc3QgZ3JvdXBTaG91bGRCZVJlbW92ZWQgPSAocm93Tm9kZTogUm93Tm9kZSk6IGJvb2xlYW4gPT4ge1xyXG5cclxuICAgICAgICAgICAgLy8gYmVjYXVzZSBvZiB0aGUgd2hpbGUgbG9vcCBiZWxvdywgaXQncyBwb3NzaWJsZSB3ZSBhbHJlYWR5IG1vdmVkIHRoZSBub2RlLFxyXG4gICAgICAgICAgICAvLyBzbyBkb3VibGUgY2hlY2sgYmVmb3JlIHRyeWluZyB0byByZW1vdmUgYWdhaW4uXHJcbiAgICAgICAgICAgIGNvbnN0IG1hcEtleSA9IHRoaXMuZ2V0Q2hpbGRyZW5NYXBwZWRLZXkocm93Tm9kZS5rZXkhLCByb3dOb2RlLnJvd0dyb3VwQ29sdW1uKTtcclxuICAgICAgICAgICAgY29uc3QgcGFyZW50Um93Tm9kZSA9IHJvd05vZGUucGFyZW50O1xyXG4gICAgICAgICAgICBjb25zdCBncm91cEFscmVhZHlSZW1vdmVkID0gKHBhcmVudFJvd05vZGUgJiYgcGFyZW50Um93Tm9kZS5jaGlsZHJlbk1hcHBlZCkgP1xyXG4gICAgICAgICAgICAgICAgIXBhcmVudFJvd05vZGUuY2hpbGRyZW5NYXBwZWRbbWFwS2V5XSA6IHRydWU7XHJcblxyXG4gICAgICAgICAgICBpZiAoZ3JvdXBBbHJlYWR5UmVtb3ZlZCkge1xyXG4gICAgICAgICAgICAgICAgLy8gaWYgbm90IGxpbmtlZCwgdGhlbiBncm91cCB3YXMgYWxyZWFkeSByZW1vdmVkXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gaWYgc3RpbGwgbm90IHJlbW92ZWQsIHRoZW4gd2UgcmVtb3ZlIGlmIHRoaXMgZ3JvdXAgaXMgZW1wdHlcclxuICAgICAgICAgICAgcmV0dXJuICEhcm93Tm9kZS5pc0VtcHR5Um93R3JvdXBOb2RlKCk7XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgd2hpbGUgKGNoZWNrQWdhaW4pIHtcclxuICAgICAgICAgICAgY2hlY2tBZ2FpbiA9IGZhbHNlO1xyXG4gICAgICAgICAgICBjb25zdCBiYXRjaFJlbW92ZXI6IEJhdGNoUmVtb3ZlciA9IG5ldyBCYXRjaFJlbW92ZXIoKTtcclxuICAgICAgICAgICAgcG9zc2libGVFbXB0eUdyb3Vwcy5mb3JFYWNoKHBvc3NpYmxlRW1wdHlHcm91cCA9PiB7XHJcbiAgICAgICAgICAgICAgICAvLyByZW1vdmUgZW1wdHkgZ3JvdXBzXHJcbiAgICAgICAgICAgICAgICB0aGlzLmZvckVhY2hQYXJlbnRHcm91cChkZXRhaWxzLCBwb3NzaWJsZUVtcHR5R3JvdXAsIHJvd05vZGUgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChncm91cFNob3VsZEJlUmVtb3ZlZChyb3dOb2RlKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjaGVja0FnYWluID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVGcm9tUGFyZW50KHJvd05vZGUsIGJhdGNoUmVtb3Zlcik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdlIHJlbW92ZSBzZWxlY3Rpb24gb24gZmlsbGVyIG5vZGVzIGhlcmUsIGFzIHRoZSBzZWxlY3Rpb24gd291bGQgbm90IGJlIHJlbW92ZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gZnJvbSB0aGUgUm93Tm9kZU1hbmFnZXIsIGFzIGZpbGxlciBub2RlcyBkb24ndCBleGlzdCBvbiB0aGUgUm93Tm9kZU1hbmFnZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgcm93Tm9kZS5zZXRTZWxlY3RlZFBhcmFtcyh7IG5ld1ZhbHVlOiBmYWxzZSwgc291cmNlOiAncm93R3JvdXBDaGFuZ2VkJyB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGJhdGNoUmVtb3Zlci5mbHVzaCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyByZW1vdmVzIHRoZSBub2RlIGZyb20gdGhlIHBhcmVudCBieTpcclxuICAgIC8vIGEpIHJlbW92aW5nIGZyb20gY2hpbGRyZW5BZnRlckdyb3VwICh1c2luZyBiYXRjaFJlbW92ZXIgaWYgcHJlc2VudCwgb3RoZXJ3aXNlIGltbWVkaWF0ZWx5KVxyXG4gICAgLy8gYikgcmVtb3ZpbmcgZnJvbSBjaGlsZHJlbk1hcHBlZCAoaW1tZWRpYXRlbHkpXHJcbiAgICAvLyBjKSBzZXRSb3dUb3AobnVsbCkgLSBhcyB0aGUgcm93UmVuZGVyZXIgdXNlcyB0aGlzIHRvIGtub3cgdGhlIFJvd05vZGUgaXMgbm8gbG9uZ2VyIG5lZWRlZFxyXG4gICAgLy8gZCkgc2V0Um93SW5kZXgobnVsbCkgLSBhcyB0aGUgcm93Tm9kZSB3aWxsIG5vIGxvbmdlciBiZSBkaXNwbGF5ZWQuXHJcbiAgICBwcml2YXRlIHJlbW92ZUZyb21QYXJlbnQoY2hpbGQ6IFJvd05vZGUsIGJhdGNoUmVtb3Zlcj86IEJhdGNoUmVtb3Zlcikge1xyXG4gICAgICAgIGlmIChjaGlsZC5wYXJlbnQpIHtcclxuICAgICAgICAgICAgaWYgKGJhdGNoUmVtb3Zlcikge1xyXG4gICAgICAgICAgICAgICAgYmF0Y2hSZW1vdmVyLnJlbW92ZUZyb21DaGlsZHJlbkFmdGVyR3JvdXAoY2hpbGQucGFyZW50LCBjaGlsZCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBfLnJlbW92ZUZyb21BcnJheShjaGlsZC5wYXJlbnQuY2hpbGRyZW5BZnRlckdyb3VwISwgY2hpbGQpO1xyXG4gICAgICAgICAgICAgICAgY2hpbGQucGFyZW50LnVwZGF0ZUhhc0NoaWxkcmVuKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgbWFwS2V5ID0gdGhpcy5nZXRDaGlsZHJlbk1hcHBlZEtleShjaGlsZC5rZXkhLCBjaGlsZC5yb3dHcm91cENvbHVtbik7XHJcbiAgICAgICAgaWYgKGNoaWxkLnBhcmVudCAmJiBjaGlsZC5wYXJlbnQuY2hpbGRyZW5NYXBwZWQpIHtcclxuICAgICAgICAgICAgY2hpbGQucGFyZW50LmNoaWxkcmVuTWFwcGVkW21hcEtleV0gPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIHRoaXMgaXMgaW1wb3J0YW50IGZvciB0cmFuc2l0aW9uLCBzZWUgcm93Q29tcCByZW1vdmVGaXJzdFBhc3NGdW5jcy4gd2hlbiBkb2luZyBhbmltYXRpb24gYW5kXHJcbiAgICAgICAgLy8gcmVtb3ZlLCBpZiByb3dUb3AgaXMgc3RpbGwgcHJlc2VudCwgdGhlIHJvd0NvbXAgdGhpbmtzIGl0J3MganVzdCBtb3ZlZCBwb3NpdGlvbi5cclxuICAgICAgICBjaGlsZC5zZXRSb3dUb3AobnVsbCk7XHJcbiAgICAgICAgY2hpbGQuc2V0Um93SW5kZXgobnVsbCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBhZGRUb1BhcmVudChjaGlsZDogUm93Tm9kZSwgcGFyZW50OiBSb3dOb2RlIHwgbnVsbCkge1xyXG4gICAgICAgIGNvbnN0IG1hcEtleSA9IHRoaXMuZ2V0Q2hpbGRyZW5NYXBwZWRLZXkoY2hpbGQua2V5ISwgY2hpbGQucm93R3JvdXBDb2x1bW4pO1xyXG4gICAgICAgIGlmIChwYXJlbnQpIHtcclxuICAgICAgICAgICAgY29uc3QgY2hpbGRyZW4gPSBwYXJlbnQuY2hpbGRyZW5NYXBwZWQgIT0gbnVsbDtcclxuICAgICAgICAgICAgaWYgKGNoaWxkcmVuKSB7XHJcbiAgICAgICAgICAgICAgICBwYXJlbnQuY2hpbGRyZW5NYXBwZWQhW21hcEtleV0gPSBjaGlsZDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBwYXJlbnQuY2hpbGRyZW5BZnRlckdyb3VwIS5wdXNoKGNoaWxkKTtcclxuICAgICAgICAgICAgcGFyZW50LnVwZGF0ZUhhc0NoaWxkcmVuKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgYXJlR3JvdXBDb2xzRXF1YWwoZDE6IEdyb3VwaW5nRGV0YWlscywgZDI6IEdyb3VwaW5nRGV0YWlscyk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmIChkMSA9PSBudWxsIHx8IGQyID09IG51bGwgfHwgZDEucGl2b3RNb2RlICE9PSBkMi5waXZvdE1vZGUpIHsgcmV0dXJuIGZhbHNlOyB9XHJcblxyXG4gICAgICAgIHJldHVybiBfLmFyZUVxdWFsKGQxLmdyb3VwZWRDb2xzLCBkMi5ncm91cGVkQ29scykgJiYgXy5hcmVFcXVhbChkMS5rZXlDcmVhdG9ycywgZDIua2V5Q3JlYXRvcnMpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgY2hlY2tBbGxHcm91cERhdGFBZnRlckNvbHNDaGFuZ2VkKGRldGFpbHM6IEdyb3VwaW5nRGV0YWlscyk6IHZvaWQge1xyXG5cclxuICAgICAgICBjb25zdCByZWN1cnNlID0gKHJvd05vZGVzOiBSb3dOb2RlW10gfCBudWxsKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICghcm93Tm9kZXMpIHsgcmV0dXJuOyB9XHJcbiAgICAgICAgICAgIHJvd05vZGVzLmZvckVhY2gocm93Tm9kZSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBpc0xlYWZOb2RlID0gIWRldGFpbHMudXNpbmdUcmVlRGF0YSAmJiAhcm93Tm9kZS5ncm91cDtcclxuICAgICAgICAgICAgICAgIGlmIChpc0xlYWZOb2RlKSB7IHJldHVybjsgfVxyXG4gICAgICAgICAgICAgICAgY29uc3QgZ3JvdXBJbmZvOiBHcm91cEluZm8gPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZmllbGQ6IHJvd05vZGUuZmllbGQsXHJcbiAgICAgICAgICAgICAgICAgICAga2V5OiByb3dOb2RlLmtleSEsXHJcbiAgICAgICAgICAgICAgICAgICAgcm93R3JvdXBDb2x1bW46IHJvd05vZGUucm93R3JvdXBDb2x1bW4sXHJcbiAgICAgICAgICAgICAgICAgICAgbGVhZk5vZGU6IHJvd05vZGUuYWxsTGVhZkNoaWxkcmVuWzBdLFxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0R3JvdXBEYXRhKHJvd05vZGUsIGdyb3VwSW5mbywgZGV0YWlscyk7XHJcbiAgICAgICAgICAgICAgICByZWN1cnNlKHJvd05vZGUuY2hpbGRyZW5BZnRlckdyb3VwKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgcmVjdXJzZShkZXRhaWxzLnJvb3ROb2RlLmNoaWxkcmVuQWZ0ZXJHcm91cCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzaG90Z3VuUmVzZXRFdmVyeXRoaW5nKGRldGFpbHM6IEdyb3VwaW5nRGV0YWlscywgYWZ0ZXJDb2x1bW5zQ2hhbmdlZDogYm9vbGVhbik6IHZvaWQge1xyXG5cclxuICAgICAgICBpZiAodGhpcy5ub0NoYW5nZUluR3JvdXBpbmdDb2x1bW5zKGRldGFpbHMsIGFmdGVyQ29sdW1uc0NoYW5nZWQpKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIGdyb3VwcyBhcmUgYWJvdXQgdG8gZ2V0IGRpc3Bvc2VkLCBzbyBuZWVkIHRvIGRlc2VsZWN0IGFueSB0aGF0IGFyZSBzZWxlY3RlZFxyXG4gICAgICAgIHRoaXMuc2VsZWN0aW9uU2VydmljZS5maWx0ZXJGcm9tU2VsZWN0aW9uKChub2RlOiBSb3dOb2RlKSA9PiBub2RlICYmICFub2RlLmdyb3VwKTtcclxuXHJcbiAgICAgICAgY29uc3QgeyByb290Tm9kZSwgZ3JvdXBlZENvbHMgfSA9IGRldGFpbHM7XHJcbiAgICAgICAgLy8gYmVjYXVzZSB3ZSBhcmUgbm90IGNyZWF0aW5nIHRoZSByb290IG5vZGUgZWFjaCB0aW1lLCB3ZSBoYXZlIHRoZSBsb2dpY1xyXG4gICAgICAgIC8vIGhlcmUgdG8gY2hhbmdlIGxlYWZHcm91cCBvbmNlLlxyXG4gICAgICAgIC8vIHdlIHNldCAubGVhZkdyb3VwIHRvIGZhbHNlIGZvciB0cmVlIGRhdGEsIGFzIC5sZWFmR3JvdXAgaXMgb25seSB1c2VkIHdoZW4gcGl2b3RpbmcsIGFuZCBwaXZvdGluZ1xyXG4gICAgICAgIC8vIGlzbid0IGFsbG93ZWQgd2l0aCB0cmVlRGF0YSwgc28gdGhlIGdyaWQgbmV2ZXIgYWN0dWFsbHkgdXNlIC5sZWFmR3JvdXAgd2hlbiBkb2luZyB0cmVlRGF0YS5cclxuICAgICAgICByb290Tm9kZS5sZWFmR3JvdXAgPSBkZXRhaWxzLnVzaW5nVHJlZURhdGEgPyBmYWxzZSA6IGdyb3VwZWRDb2xzLmxlbmd0aCA9PT0gMDtcclxuXHJcbiAgICAgICAgLy8gd2UgYXJlIGRvaW5nIGV2ZXJ5dGhpbmcgZnJvbSBzY3JhdGNoLCBzbyByZXNldCBjaGlsZHJlbkFmdGVyR3JvdXAgYW5kIGNoaWxkcmVuTWFwcGVkIGZyb20gdGhlIHJvb3ROb2RlXHJcbiAgICAgICAgcm9vdE5vZGUuY2hpbGRyZW5BZnRlckdyb3VwID0gW107XHJcbiAgICAgICAgcm9vdE5vZGUuY2hpbGRyZW5NYXBwZWQgPSB7fTtcclxuICAgICAgICByb290Tm9kZS51cGRhdGVIYXNDaGlsZHJlbigpO1xyXG5cclxuICAgICAgICBjb25zdCBzaWJsaW5nID0gcm9vdE5vZGUuc2libGluZztcclxuICAgICAgICBpZiAoc2libGluZykge1xyXG4gICAgICAgICAgICBzaWJsaW5nLmNoaWxkcmVuQWZ0ZXJHcm91cCA9IHJvb3ROb2RlLmNoaWxkcmVuQWZ0ZXJHcm91cDtcclxuICAgICAgICAgICAgc2libGluZy5jaGlsZHJlbk1hcHBlZCA9IHJvb3ROb2RlLmNoaWxkcmVuTWFwcGVkO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5pbnNlcnROb2Rlcyhyb290Tm9kZS5hbGxMZWFmQ2hpbGRyZW4sIGRldGFpbHMsIGZhbHNlKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIG5vQ2hhbmdlSW5Hcm91cGluZ0NvbHVtbnMoZGV0YWlsczogR3JvdXBpbmdEZXRhaWxzLCBhZnRlckNvbHVtbnNDaGFuZ2VkOiBib29sZWFuKTogYm9vbGVhbiB7XHJcbiAgICAgICAgbGV0IG5vRnVydGhlclByb2Nlc3NpbmdOZWVkZWQgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgY29uc3QgZ3JvdXBEaXNwbGF5Q29sdW1ucyA9IHRoaXMuY29sdW1uTW9kZWwuZ2V0R3JvdXBEaXNwbGF5Q29sdW1ucygpO1xyXG4gICAgICAgIGNvbnN0IG5ld0dyb3VwRGlzcGxheUNvbElkcyA9IGdyb3VwRGlzcGxheUNvbHVtbnMgP1xyXG4gICAgICAgICAgICBncm91cERpc3BsYXlDb2x1bW5zLm1hcChjID0+IGMuZ2V0SWQoKSkuam9pbignLScpIDogJyc7XHJcblxyXG4gICAgICAgIGlmIChhZnRlckNvbHVtbnNDaGFuZ2VkKSB7XHJcbiAgICAgICAgICAgIC8vIHdlIG9ubHkgbmVlZCB0byByZWRvIGdyb3VwaW5nIGlmIGRvaW5nIG5vcm1hbCBncm91cGluZyAoaWUgbm90IHRyZWUgZGF0YSlcclxuICAgICAgICAgICAgLy8gYW5kIHRoZSBncm91cCBjb2xzIGhhdmUgY2hhbmdlZC5cclxuICAgICAgICAgICAgbm9GdXJ0aGVyUHJvY2Vzc2luZ05lZWRlZCA9IGRldGFpbHMudXNpbmdUcmVlRGF0YSB8fCB0aGlzLmFyZUdyb3VwQ29sc0VxdWFsKGRldGFpbHMsIHRoaXMub2xkR3JvdXBpbmdEZXRhaWxzKTtcclxuXHJcbiAgICAgICAgICAgIC8vIGlmIHRoZSBncm91cCBkaXNwbGF5IGNvbHMgaGF2ZSBjaGFuZ2VkLCB0aGVuIHdlIG5lZWQgdG8gdXBkYXRlIHJvd05vZGUuZ3JvdXBEYXRhXHJcbiAgICAgICAgICAgIC8vIChyZWdhcmRsZXNzIG9mIHRyZWUgZGF0YSBvciByb3cgZ3JvdXBpbmcpXHJcbiAgICAgICAgICAgIGlmICh0aGlzLm9sZEdyb3VwRGlzcGxheUNvbElkcyAhPT0gbmV3R3JvdXBEaXNwbGF5Q29sSWRzKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNoZWNrQWxsR3JvdXBEYXRhQWZ0ZXJDb2xzQ2hhbmdlZChkZXRhaWxzKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5vbGRHcm91cGluZ0RldGFpbHMgPSBkZXRhaWxzO1xyXG4gICAgICAgIHRoaXMub2xkR3JvdXBEaXNwbGF5Q29sSWRzID0gbmV3R3JvdXBEaXNwbGF5Q29sSWRzO1xyXG5cclxuICAgICAgICByZXR1cm4gbm9GdXJ0aGVyUHJvY2Vzc2luZ05lZWRlZDtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGluc2VydE5vZGVzKG5ld1Jvd05vZGVzOiBSb3dOb2RlW10sIGRldGFpbHM6IEdyb3VwaW5nRGV0YWlscywgaXNNb3ZlOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICAgICAgbmV3Um93Tm9kZXMuZm9yRWFjaChyb3dOb2RlID0+IHtcclxuICAgICAgICAgICAgdGhpcy5pbnNlcnRPbmVOb2RlKHJvd05vZGUsIGRldGFpbHMsIGlzTW92ZSk7XHJcbiAgICAgICAgICAgIGlmIChkZXRhaWxzLmNoYW5nZWRQYXRoLmlzQWN0aXZlKCkpIHtcclxuICAgICAgICAgICAgICAgIGRldGFpbHMuY2hhbmdlZFBhdGguYWRkUGFyZW50Tm9kZShyb3dOb2RlLnBhcmVudCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGluc2VydE9uZU5vZGUoY2hpbGROb2RlOiBSb3dOb2RlLCBkZXRhaWxzOiBHcm91cGluZ0RldGFpbHMsIGlzTW92ZTogYm9vbGVhbiwgYmF0Y2hSZW1vdmVyPzogQmF0Y2hSZW1vdmVyKTogdm9pZCB7XHJcblxyXG4gICAgICAgIGNvbnN0IHBhdGg6IEdyb3VwSW5mb1tdID0gdGhpcy5nZXRHcm91cEluZm8oY2hpbGROb2RlLCBkZXRhaWxzKTtcclxuXHJcbiAgICAgICAgY29uc3QgcGFyZW50R3JvdXAgPSB0aGlzLmZpbmRQYXJlbnRGb3JOb2RlKGNoaWxkTm9kZSwgcGF0aCwgZGV0YWlscywgYmF0Y2hSZW1vdmVyKTtcclxuICAgICAgICBpZiAoIXBhcmVudEdyb3VwLmdyb3VwKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgQUcgR3JpZDogZHVwbGljYXRlIGdyb3VwIGtleXMgZm9yIHJvdyBkYXRhLCBrZXlzIHNob3VsZCBiZSB1bmlxdWVgLFxyXG4gICAgICAgICAgICAgICAgW3BhcmVudEdyb3VwLmRhdGEsIGNoaWxkTm9kZS5kYXRhXSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoZGV0YWlscy51c2luZ1RyZWVEYXRhKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc3dhcEdyb3VwV2l0aFVzZXJOb2RlKHBhcmVudEdyb3VwLCBjaGlsZE5vZGUsIGlzTW92ZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY2hpbGROb2RlLnBhcmVudCA9IHBhcmVudEdyb3VwO1xyXG4gICAgICAgICAgICBjaGlsZE5vZGUubGV2ZWwgPSBwYXRoLmxlbmd0aDtcclxuICAgICAgICAgICAgcGFyZW50R3JvdXAuY2hpbGRyZW5BZnRlckdyb3VwIS5wdXNoKGNoaWxkTm9kZSk7XHJcbiAgICAgICAgICAgIHBhcmVudEdyb3VwLnVwZGF0ZUhhc0NoaWxkcmVuKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZmluZFBhcmVudEZvck5vZGUoY2hpbGROb2RlOiBSb3dOb2RlLCBwYXRoOiBHcm91cEluZm9bXSwgZGV0YWlsczogR3JvdXBpbmdEZXRhaWxzLCBiYXRjaFJlbW92ZXI/OiBCYXRjaFJlbW92ZXIpOiBSb3dOb2RlIHtcclxuICAgICAgICBsZXQgbmV4dE5vZGU6IFJvd05vZGUgPSBkZXRhaWxzLnJvb3ROb2RlO1xyXG5cclxuICAgICAgICBwYXRoLmZvckVhY2goKGdyb3VwSW5mbywgbGV2ZWwpID0+IHtcclxuICAgICAgICAgICAgbmV4dE5vZGUgPSB0aGlzLmdldE9yQ3JlYXRlTmV4dE5vZGUobmV4dE5vZGUsIGdyb3VwSW5mbywgbGV2ZWwsIGRldGFpbHMpO1xyXG4gICAgICAgICAgICAvLyBub2RlIGdldHMgYWRkZWQgdG8gYWxsIGdyb3VwIG5vZGVzLlxyXG4gICAgICAgICAgICAvLyBub3RlOiB3ZSBkbyBub3QgYWRkIHRvIHJvb3ROb2RlIGhlcmUsIGFzIHRoZSByb290Tm9kZSBpcyB0aGUgbWFzdGVyIGxpc3Qgb2Ygcm93Tm9kZXNcclxuXHJcbiAgICAgICAgICAgIGlmICghYmF0Y2hSZW1vdmVyPy5pc1JlbW92ZUZyb21BbGxMZWFmQ2hpbGRyZW4obmV4dE5vZGUsIGNoaWxkTm9kZSkpIHtcclxuICAgICAgICAgICAgICAgIG5leHROb2RlLmFsbExlYWZDaGlsZHJlbi5wdXNoKGNoaWxkTm9kZSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAvLyBpZiB0aGlzIG5vZGUgaXMgYWJvdXQgdG8gYmUgcmVtb3ZlZCwgcHJldmVudCB0aGF0XHJcbiAgICAgICAgICAgICAgICBiYXRjaFJlbW92ZXI/LnByZXZlbnRSZW1vdmVGcm9tQWxsTGVhZkNoaWxkcmVuKG5leHROb2RlLCBjaGlsZE5vZGUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHJldHVybiBuZXh0Tm9kZTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHN3YXBHcm91cFdpdGhVc2VyTm9kZShmaWxsZXJHcm91cDogUm93Tm9kZSwgdXNlckdyb3VwOiBSb3dOb2RlLCBpc01vdmU6IGJvb2xlYW4pIHtcclxuICAgICAgICB1c2VyR3JvdXAucGFyZW50ID0gZmlsbGVyR3JvdXAucGFyZW50O1xyXG4gICAgICAgIHVzZXJHcm91cC5rZXkgPSBmaWxsZXJHcm91cC5rZXk7XHJcbiAgICAgICAgdXNlckdyb3VwLmZpZWxkID0gZmlsbGVyR3JvdXAuZmllbGQ7XHJcbiAgICAgICAgdXNlckdyb3VwLmdyb3VwRGF0YSA9IGZpbGxlckdyb3VwLmdyb3VwRGF0YTtcclxuICAgICAgICB1c2VyR3JvdXAubGV2ZWwgPSBmaWxsZXJHcm91cC5sZXZlbDtcclxuICAgICAgICAvLyBBRy0zNDQxIC0gcHJlc2VydmUgdGhlIGV4aXN0aW5nIGV4cGFuZGVkIHN0YXR1cyBvZiB0aGUgbm9kZSBpZiB3ZSdyZSBtb3ZpbmcgaXQsIHNvIHRoYXRcclxuICAgICAgICAvLyB5b3UgY2FuIGRyYWcgYSBzdWIgdHJlZSBmcm9tIG9uZSBwYXJlbnQgdG8gYW5vdGhlciB3aXRob3V0IGNoYW5naW5nIGl0cyBleHBhbnNpb25cclxuICAgICAgICBpZiAoIWlzTW92ZSkge1xyXG4gICAgICAgICAgICB1c2VyR3JvdXAuZXhwYW5kZWQgPSBmaWxsZXJHcm91cC5leHBhbmRlZDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIHdlIHNldCAubGVhZkdyb3VwIHRvIGZhbHNlIGZvciB0cmVlIGRhdGEsIGFzIC5sZWFmR3JvdXAgaXMgb25seSB1c2VkIHdoZW4gcGl2b3RpbmcsIGFuZCBwaXZvdGluZ1xyXG4gICAgICAgIC8vIGlzbid0IGFsbG93ZWQgd2l0aCB0cmVlRGF0YSwgc28gdGhlIGdyaWQgbmV2ZXIgYWN0dWFsbHkgdXNlIC5sZWFmR3JvdXAgd2hlbiBkb2luZyB0cmVlRGF0YS5cclxuICAgICAgICB1c2VyR3JvdXAubGVhZkdyb3VwID0gZmlsbGVyR3JvdXAubGVhZkdyb3VwO1xyXG5cclxuICAgICAgICAvLyBhbHdheXMgbnVsbCBmb3IgdXNlckdyb3VwcywgYXMgcm93IGdyb3VwaW5nIGlzIG5vdCBhbGxvd2VkIHdoZW4gZG9pbmcgdHJlZSBkYXRhXHJcbiAgICAgICAgdXNlckdyb3VwLnJvd0dyb3VwSW5kZXggPSBmaWxsZXJHcm91cC5yb3dHcm91cEluZGV4O1xyXG5cclxuICAgICAgICB1c2VyR3JvdXAuYWxsTGVhZkNoaWxkcmVuID0gZmlsbGVyR3JvdXAuYWxsTGVhZkNoaWxkcmVuO1xyXG4gICAgICAgIHVzZXJHcm91cC5jaGlsZHJlbkFmdGVyR3JvdXAgPSBmaWxsZXJHcm91cC5jaGlsZHJlbkFmdGVyR3JvdXA7XHJcbiAgICAgICAgdXNlckdyb3VwLmNoaWxkcmVuTWFwcGVkID0gZmlsbGVyR3JvdXAuY2hpbGRyZW5NYXBwZWQ7XHJcbiAgICAgICAgdXNlckdyb3VwLnNpYmxpbmcgPSBmaWxsZXJHcm91cC5zaWJsaW5nO1xyXG4gICAgICAgIHVzZXJHcm91cC51cGRhdGVIYXNDaGlsZHJlbigpO1xyXG5cclxuICAgICAgICB0aGlzLnJlbW92ZUZyb21QYXJlbnQoZmlsbGVyR3JvdXApO1xyXG4gICAgICAgIHVzZXJHcm91cC5jaGlsZHJlbkFmdGVyR3JvdXAhLmZvckVhY2goKHJvd05vZGU6IFJvd05vZGUpID0+IHJvd05vZGUucGFyZW50ID0gdXNlckdyb3VwKTtcclxuICAgICAgICB0aGlzLmFkZFRvUGFyZW50KHVzZXJHcm91cCwgZmlsbGVyR3JvdXAucGFyZW50KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGdldE9yQ3JlYXRlTmV4dE5vZGUocGFyZW50R3JvdXA6IFJvd05vZGUsIGdyb3VwSW5mbzogR3JvdXBJbmZvLCBsZXZlbDogbnVtYmVyLFxyXG4gICAgICAgIGRldGFpbHM6IEdyb3VwaW5nRGV0YWlscyk6IFJvd05vZGUge1xyXG5cclxuICAgICAgICBjb25zdCBrZXkgPSB0aGlzLmdldENoaWxkcmVuTWFwcGVkS2V5KGdyb3VwSW5mby5rZXksIGdyb3VwSW5mby5yb3dHcm91cENvbHVtbik7XHJcbiAgICAgICAgbGV0IG5leHROb2RlID0gcGFyZW50R3JvdXAuY2hpbGRyZW5NYXBwZWQgPyBwYXJlbnRHcm91cC5jaGlsZHJlbk1hcHBlZFtrZXldIDogdW5kZWZpbmVkO1xyXG5cclxuICAgICAgICBpZiAoIW5leHROb2RlKSB7XHJcbiAgICAgICAgICAgIG5leHROb2RlID0gdGhpcy5jcmVhdGVHcm91cChncm91cEluZm8sIHBhcmVudEdyb3VwLCBsZXZlbCwgZGV0YWlscyk7XHJcbiAgICAgICAgICAgIC8vIGF0dGFjaCB0aGUgbmV3IGdyb3VwIHRvIHRoZSBwYXJlbnRcclxuICAgICAgICAgICAgdGhpcy5hZGRUb1BhcmVudChuZXh0Tm9kZSwgcGFyZW50R3JvdXApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIG5leHROb2RlO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgY3JlYXRlR3JvdXAoZ3JvdXBJbmZvOiBHcm91cEluZm8sIHBhcmVudDogUm93Tm9kZSwgbGV2ZWw6IG51bWJlciwgZGV0YWlsczogR3JvdXBpbmdEZXRhaWxzKTogUm93Tm9kZSB7XHJcbiAgICAgICAgY29uc3QgZ3JvdXBOb2RlID0gbmV3IFJvd05vZGUodGhpcy5iZWFucyk7XHJcblxyXG4gICAgICAgIGdyb3VwTm9kZS5ncm91cCA9IHRydWU7XHJcbiAgICAgICAgZ3JvdXBOb2RlLmZpZWxkID0gZ3JvdXBJbmZvLmZpZWxkO1xyXG4gICAgICAgIGdyb3VwTm9kZS5yb3dHcm91cENvbHVtbiA9IGdyb3VwSW5mby5yb3dHcm91cENvbHVtbjtcclxuXHJcbiAgICAgICAgdGhpcy5zZXRHcm91cERhdGEoZ3JvdXBOb2RlLCBncm91cEluZm8sIGRldGFpbHMpO1xyXG5cclxuICAgICAgICBncm91cE5vZGUua2V5ID0gZ3JvdXBJbmZvLmtleTtcclxuICAgICAgICBncm91cE5vZGUuaWQgPSB0aGlzLmNyZWF0ZUdyb3VwSWQoZ3JvdXBOb2RlLCBwYXJlbnQsIGRldGFpbHMudXNpbmdUcmVlRGF0YSwgbGV2ZWwpO1xyXG5cclxuICAgICAgICBncm91cE5vZGUubGV2ZWwgPSBsZXZlbDtcclxuICAgICAgICBncm91cE5vZGUubGVhZkdyb3VwID0gZGV0YWlscy51c2luZ1RyZWVEYXRhID8gZmFsc2UgOiBsZXZlbCA9PT0gKGRldGFpbHMuZ3JvdXBlZENvbENvdW50IC0gMSk7XHJcblxyXG4gICAgICAgIGdyb3VwTm9kZS5hbGxMZWFmQ2hpbGRyZW4gPSBbXTtcclxuXHJcbiAgICAgICAgLy8gd2h5IGlzIHRoaXMgZG9uZSBoZXJlPyB3ZSBhcmUgbm90IHVwZGF0aW5nIHRoZSBjaGlsZHJlbiBjb3VudCBhcyB3ZSBnbyxcclxuICAgICAgICAvLyBpIHN1c3BlY3QgdGhpcyBpcyB1cGRhdGVkIGluIHRoZSBmaWx0ZXIgc3RhZ2VcclxuICAgICAgICBncm91cE5vZGUuc2V0QWxsQ2hpbGRyZW5Db3VudCgwKTtcclxuXHJcbiAgICAgICAgZ3JvdXBOb2RlLnJvd0dyb3VwSW5kZXggPSBkZXRhaWxzLnVzaW5nVHJlZURhdGEgPyBudWxsIDogbGV2ZWw7XHJcblxyXG4gICAgICAgIGdyb3VwTm9kZS5jaGlsZHJlbkFmdGVyR3JvdXAgPSBbXTtcclxuICAgICAgICBncm91cE5vZGUuY2hpbGRyZW5NYXBwZWQgPSB7fTtcclxuICAgICAgICBncm91cE5vZGUudXBkYXRlSGFzQ2hpbGRyZW4oKTtcclxuXHJcbiAgICAgICAgZ3JvdXBOb2RlLnBhcmVudCA9IGRldGFpbHMuaW5jbHVkZVBhcmVudHMgPyBwYXJlbnQgOiBudWxsO1xyXG5cclxuICAgICAgICB0aGlzLnNldEV4cGFuZGVkSW5pdGlhbFZhbHVlKGRldGFpbHMsIGdyb3VwTm9kZSk7XHJcblxyXG4gICAgICAgIHJldHVybiBncm91cE5vZGU7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBjcmVhdGVHcm91cElkKG5vZGU6IFJvd05vZGUsIHBhcmVudDogUm93Tm9kZSwgdXNpbmdUcmVlRGF0YTogYm9vbGVhbiwgbGV2ZWw6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICAgICAgbGV0IGNyZWF0ZUdyb3VwSWQ6IChub2RlOiBSb3dOb2RlLCBwYXJlbnQ6IFJvd05vZGUgfCBudWxsLCBsZXZlbDogbnVtYmVyKSA9PiBzdHJpbmcgfCBudWxsO1xyXG4gICAgICAgIGlmICh1c2luZ1RyZWVEYXRhKSB7XHJcbiAgICAgICAgICAgIGNyZWF0ZUdyb3VwSWQgPSAobm9kZSwgcGFyZW50LCBsZXZlbCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGxldmVsIDwgMCkgeyByZXR1cm4gbnVsbDsgfSAvLyByb290IG5vZGVcclxuICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudElkID0gcGFyZW50ID8gY3JlYXRlR3JvdXBJZChwYXJlbnQsIHBhcmVudC5wYXJlbnQsIGxldmVsIC0gMSkgOiBudWxsO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke3BhcmVudElkID09IG51bGwgPyAnJyA6IHBhcmVudElkICsgJy0nfSR7bGV2ZWx9LSR7bm9kZS5rZXl9YDtcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjcmVhdGVHcm91cElkID0gKG5vZGUsIHBhcmVudCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFub2RlLnJvd0dyb3VwQ29sdW1uKSB7IHJldHVybiBudWxsOyB9IC8vIHJvb3Qgbm9kZVxyXG4gICAgICAgICAgICAgICAgY29uc3QgcGFyZW50SWQgPSBwYXJlbnQgPyBjcmVhdGVHcm91cElkKHBhcmVudCwgcGFyZW50LnBhcmVudCwgMCkgOiBudWxsO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke3BhcmVudElkID09IG51bGwgPyAnJyA6IHBhcmVudElkICsgJy0nfSR7bm9kZS5yb3dHcm91cENvbHVtbi5nZXRDb2xJZCgpfS0ke25vZGUua2V5fWA7XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyB3ZSBwdXQgJ3Jvdy1ncm91cC0nIGJlZm9yZSB0aGUgZ3JvdXAgaWQsIHNvIGl0IGRvZXNuJ3QgY2xhc2ggd2l0aCBzdGFuZGFyZCByb3cgaWQncy4gd2UgYWxzbyB1c2UgJ3QtJyBhbmQgJ2ItJ1xyXG4gICAgICAgIC8vIGZvciB0b3AgcGlubmVkIGFuZCBib3R0b20gcGlubmVkIHJvd3MuXHJcbiAgICAgICAgcmV0dXJuIFJvd05vZGUuSURfUFJFRklYX1JPV19HUk9VUCArIGNyZWF0ZUdyb3VwSWQobm9kZSwgcGFyZW50LCBsZXZlbCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzZXRHcm91cERhdGEoZ3JvdXBOb2RlOiBSb3dOb2RlLCBncm91cEluZm86IEdyb3VwSW5mbywgZGV0YWlsczogR3JvdXBpbmdEZXRhaWxzKTogdm9pZCB7XHJcbiAgICAgICAgZ3JvdXBOb2RlLmdyb3VwRGF0YSA9IHt9O1xyXG4gICAgICAgIGNvbnN0IGdyb3VwRGlzcGxheUNvbHM6IENvbHVtbltdID0gdGhpcy5jb2x1bW5Nb2RlbC5nZXRHcm91cERpc3BsYXlDb2x1bW5zKCk7XHJcbiAgICAgICAgZ3JvdXBEaXNwbGF5Q29scy5mb3JFYWNoKGNvbCA9PiB7XHJcbiAgICAgICAgICAgIC8vIG5ld0dyb3VwLnJvd0dyb3VwQ29sdW1uPW51bGwgd2hlbiB3b3JraW5nIG9mZiBHcm91cEluZm8sIGFuZCB3ZSBhbHdheXMgZGlzcGxheSB0aGUgZ3JvdXAgaW4gdGhlIGdyb3VwIGNvbHVtblxyXG4gICAgICAgICAgICAvLyBpZiByb3dHcm91cENvbHVtbiBpcyBwcmVzZW50LCB0aGVuIGl0J3MgZ3JpZCByb3cgZ3JvdXBpbmcgYW5kIHdlIG9ubHkgaW5jbHVkZSBpZiBjb25maWd1cmF0aW9uIHNheXMgc29cclxuICAgICAgICAgICAgY29uc3QgaXNUcmVlRGF0YSA9IGRldGFpbHMudXNpbmdUcmVlRGF0YTtcclxuICAgICAgICAgICAgaWYgKGlzVHJlZURhdGEpIHtcclxuICAgICAgICAgICAgICAgIGdyb3VwTm9kZS5ncm91cERhdGEhW2NvbC5nZXRDb2xJZCgpXSA9IGdyb3VwSW5mby5rZXk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGNvbnN0IGdyb3VwQ29sdW1uID0gZ3JvdXBOb2RlLnJvd0dyb3VwQ29sdW1uO1xyXG4gICAgICAgICAgICBjb25zdCBpc1Jvd0dyb3VwRGlzcGxheWVkID0gZ3JvdXBDb2x1bW4gIT09IG51bGwgJiYgY29sLmlzUm93R3JvdXBEaXNwbGF5ZWQoZ3JvdXBDb2x1bW4uZ2V0SWQoKSk7XHJcbiAgICAgICAgICAgIGlmIChpc1Jvd0dyb3VwRGlzcGxheWVkKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZGV0YWlscy5zdXBwcmVzc0dyb3VwTWFpbnRhaW5WYWx1ZVR5cGUpIHtcclxuICAgICAgICAgICAgICAgICAgICBncm91cE5vZGUuZ3JvdXBEYXRhIVtjb2wuZ2V0Q29sSWQoKV0gPSBncm91cEluZm8ua2V5O1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBpZiBtYWludGFpbiBncm91cCB2YWx1ZSB0eXBlLCBnZXQgdGhlIHZhbHVlIGZyb20gYW55IGxlYWYgbm9kZS5cclxuICAgICAgICAgICAgICAgICAgICBncm91cE5vZGUuZ3JvdXBEYXRhIVtjb2wuZ2V0Q29sSWQoKV0gPSB0aGlzLnZhbHVlU2VydmljZS5nZXRWYWx1ZShncm91cENvbHVtbiwgZ3JvdXBJbmZvLmxlYWZOb2RlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2V0Q2hpbGRyZW5NYXBwZWRLZXkoa2V5OiBzdHJpbmcsIHJvd0dyb3VwQ29sdW1uOiBDb2x1bW4gfCBudWxsKTogc3RyaW5nIHtcclxuICAgICAgICBpZiAocm93R3JvdXBDb2x1bW4pIHtcclxuICAgICAgICAgICAgLy8gZ3JvdXBpbmcgYnkgY29sdW1uc1xyXG4gICAgICAgICAgICByZXR1cm4gcm93R3JvdXBDb2x1bW4uZ2V0SWQoKSArICctJyArIGtleTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gdHJlZSBkYXRhIC0gd2UgZG9uJ3QgaGF2ZSByb3dHcm91cENvbHVtbnNcclxuICAgICAgICByZXR1cm4ga2V5O1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc2V0RXhwYW5kZWRJbml0aWFsVmFsdWUoZGV0YWlsczogR3JvdXBpbmdEZXRhaWxzLCBncm91cE5vZGU6IFJvd05vZGUpOiB2b2lkIHtcclxuICAgICAgICAvLyBpZiBwaXZvdGluZyB0aGUgbGVhZiBncm91cCBpcyBuZXZlciBleHBhbmRlZCBhcyB3ZSBkbyBub3Qgc2hvdyBsZWFmIHJvd3NcclxuICAgICAgICBpZiAoZGV0YWlscy5waXZvdE1vZGUgJiYgZ3JvdXBOb2RlLmxlYWZHcm91cCkge1xyXG4gICAgICAgICAgICBncm91cE5vZGUuZXhwYW5kZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gdXNlIGNhbGxiYWNrIGlmIGV4aXN0c1xyXG4gICAgICAgIGNvbnN0IHVzZXJDYWxsYmFjayA9IGRldGFpbHMuaXNHcm91cE9wZW5CeURlZmF1bHQ7XHJcbiAgICAgICAgaWYgKHVzZXJDYWxsYmFjaykge1xyXG4gICAgICAgICAgICBjb25zdCBwYXJhbXM6IFdpdGhvdXRHcmlkQ29tbW9uPElzR3JvdXBPcGVuQnlEZWZhdWx0UGFyYW1zPiA9IHtcclxuICAgICAgICAgICAgICAgIHJvd05vZGU6IGdyb3VwTm9kZSxcclxuICAgICAgICAgICAgICAgIGZpZWxkOiBncm91cE5vZGUuZmllbGQhLFxyXG4gICAgICAgICAgICAgICAga2V5OiBncm91cE5vZGUua2V5ISxcclxuICAgICAgICAgICAgICAgIGxldmVsOiBncm91cE5vZGUubGV2ZWwsXHJcbiAgICAgICAgICAgICAgICByb3dHcm91cENvbHVtbjogZ3JvdXBOb2RlLnJvd0dyb3VwQ29sdW1uIVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBncm91cE5vZGUuZXhwYW5kZWQgPSB1c2VyQ2FsbGJhY2socGFyYW1zKSA9PSB0cnVlO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyB1c2UgZXhwYW5kQnlEZWZhdWx0IGlmIGV4aXN0c1xyXG4gICAgICAgIGNvbnN0IHsgZXhwYW5kQnlEZWZhdWx0IH0gPSBkZXRhaWxzO1xyXG4gICAgICAgIGlmIChkZXRhaWxzLmV4cGFuZEJ5RGVmYXVsdCA9PT0gLTEpIHtcclxuICAgICAgICAgICAgZ3JvdXBOb2RlLmV4cGFuZGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gb3RoZXJ3aXNlXHJcbiAgICAgICAgZ3JvdXBOb2RlLmV4cGFuZGVkID0gZ3JvdXBOb2RlLmxldmVsIDwgZXhwYW5kQnlEZWZhdWx0O1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2V0R3JvdXBJbmZvKHJvd05vZGU6IFJvd05vZGUsIGRldGFpbHM6IEdyb3VwaW5nRGV0YWlscyk6IEdyb3VwSW5mb1tdIHtcclxuICAgICAgICBpZiAoZGV0YWlscy51c2luZ1RyZWVEYXRhKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldEdyb3VwSW5mb0Zyb21DYWxsYmFjayhyb3dOb2RlLCBkZXRhaWxzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0R3JvdXBJbmZvRnJvbUdyb3VwQ29sdW1ucyhyb3dOb2RlLCBkZXRhaWxzKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGdldEdyb3VwSW5mb0Zyb21DYWxsYmFjayhyb3dOb2RlOiBSb3dOb2RlLCBkZXRhaWxzOiBHcm91cGluZ0RldGFpbHMpOiBHcm91cEluZm9bXSB7ICAgICAgICBcclxuICAgICAgICBjb25zdCBrZXlzOiBzdHJpbmdbXSB8IG51bGwgPSBkZXRhaWxzLmdldERhdGFQYXRoID8gZGV0YWlscy5nZXREYXRhUGF0aChyb3dOb2RlLmRhdGEpIDogbnVsbDtcclxuXHJcbiAgICAgICAgaWYgKGtleXMgPT09IG51bGwgfHwga2V5cyA9PT0gdW5kZWZpbmVkIHx8IGtleXMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgIF8ud2Fybk9uY2UoYGdldERhdGFQYXRoKCkgc2hvdWxkIG5vdCByZXR1cm4gYW4gZW1wdHkgcGF0aCBmb3IgZGF0YSAke3Jvd05vZGUuZGF0YX1gKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgZ3JvdXBJbmZvTWFwcGVyID0gKGtleTogc3RyaW5nIHwgbnVsbCkgPT4gKHsga2V5LCBmaWVsZDogbnVsbCwgcm93R3JvdXBDb2x1bW46IG51bGwgfSkgYXMgR3JvdXBJbmZvO1xyXG4gICAgICAgIHJldHVybiBrZXlzID8ga2V5cy5tYXAoZ3JvdXBJbmZvTWFwcGVyKSA6IFtdO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2V0R3JvdXBJbmZvRnJvbUdyb3VwQ29sdW1ucyhyb3dOb2RlOiBSb3dOb2RlLCBkZXRhaWxzOiBHcm91cGluZ0RldGFpbHMpIHtcclxuICAgICAgICBjb25zdCByZXM6IEdyb3VwSW5mb1tdID0gW107XHJcbiAgICAgICAgZGV0YWlscy5ncm91cGVkQ29scy5mb3JFYWNoKGdyb3VwQ29sID0+IHtcclxuICAgICAgICAgICAgbGV0IGtleTogc3RyaW5nID0gdGhpcy52YWx1ZVNlcnZpY2UuZ2V0S2V5Rm9yTm9kZShncm91cENvbCwgcm93Tm9kZSk7XHJcbiAgICAgICAgICAgIGxldCBrZXlFeGlzdHMgPSBrZXkgIT09IG51bGwgJiYga2V5ICE9PSB1bmRlZmluZWQgJiYga2V5ICE9PSAnJztcclxuXHJcbiAgICAgICAgICAgIC8vIHVuYmFsYW5jZWQgdHJlZSBhbmQgcGl2b3QgbW9kZSBkb24ndCB3b3JrIHRvZ2V0aGVyIC0gbm90IGJlY2F1c2Ugb2YgdGhlIGdyaWQsIGl0IGRvZXNuJ3QgbWFrZVxyXG4gICAgICAgICAgICAvLyBtYXRoZW1hdGljYWwgc2Vuc2UgYXMgeW91IGFyZSBidWlsZGluZyB1cCBhIGN1YmUuIHNvIGlmIHBpdm90IG1vZGUsIHdlIHB1dCBpbiBhIGJsYW5rIGtleSB3aGVyZSBtaXNzaW5nLlxyXG4gICAgICAgICAgICAvLyB0aGlzIGtlZXBzIHRoZSB0cmVlIGJhbGFuY2VkIGFuZCBoZW5jZSBjYW4gYmUgcmVwcmVzZW50ZWQgYXMgYSBncm91cC5cclxuICAgICAgICAgICAgY29uc3QgY3JlYXRlR3JvdXBGb3JFbXB0eSA9IGRldGFpbHMucGl2b3RNb2RlIHx8ICFkZXRhaWxzLmdyb3VwQWxsb3dVbmJhbGFuY2VkO1xyXG4gICAgICAgICAgICBpZiAoY3JlYXRlR3JvdXBGb3JFbXB0eSAmJiAha2V5RXhpc3RzKSB7XHJcbiAgICAgICAgICAgICAgICBrZXkgPSAnJztcclxuICAgICAgICAgICAgICAgIGtleUV4aXN0cyA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmIChrZXlFeGlzdHMpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSB7XHJcbiAgICAgICAgICAgICAgICAgICAga2V5OiBrZXksXHJcbiAgICAgICAgICAgICAgICAgICAgZmllbGQ6IGdyb3VwQ29sLmdldENvbERlZigpLmZpZWxkLFxyXG4gICAgICAgICAgICAgICAgICAgIHJvd0dyb3VwQ29sdW1uOiBncm91cENvbCxcclxuICAgICAgICAgICAgICAgICAgICBsZWFmTm9kZTogcm93Tm9kZSxcclxuICAgICAgICAgICAgICAgIH0gYXMgR3JvdXBJbmZvO1xyXG4gICAgICAgICAgICAgICAgcmVzLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gcmVzO1xyXG4gICAgfVxyXG59Il19
|
|
@@ -5,4 +5,4 @@ export var RowGroupingModule = {
|
|
|
5
5
|
moduleName: ModuleNames.RowGroupingModule,
|
|
6
6
|
beans: [GroupStage]
|
|
7
7
|
};
|
|
8
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm93LWdyb3VwaW5nLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZW8tZnJhbWV3b3JrL2dyaWQvcm93LWdyb3VwaW5nL3Jvdy1ncm91cGluZy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsTUFBTSxDQUFDLElBQUksaUJBQWlCLEdBQUc7SUFDN0IsT0FBTyxFQUFFLFFBQVE7SUFDakIsVUFBVSxFQUFFLFdBQVcsQ0FBQyxpQkFBaUI7SUFDekMsS0FBSyxFQUFFLENBQUMsVUFBVSxDQUFDO0NBQ3BCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNb2R1bGVOYW1lcyB9IGZyb20gXCJAYWctZ3JpZC1jb21tdW5pdHkvY29yZVwiO1xyXG5pbXBvcnQgeyBHcm91cFN0YWdlIH0gZnJvbSBcIi4vZ3JvdXAtc3RhZ2VcIjtcclxuXHJcbmV4cG9ydCB2YXIgUm93R3JvdXBpbmdNb2R1bGUgPSB7XHJcbiAgdmVyc2lvbjogJzMxLjMuMicsXHJcbiAgbW9kdWxlTmFtZTogTW9kdWxlTmFtZXMuUm93R3JvdXBpbmdNb2R1bGUsXHJcbiAgYmVhbnM6IFtHcm91cFN0YWdlXVxyXG59O1xyXG4iXX0=
|
|
@@ -14,13 +14,13 @@ export class DuetimeInfoComponent {
|
|
|
14
14
|
constructor() { }
|
|
15
15
|
ngOnInit() {
|
|
16
16
|
}
|
|
17
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
18
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
17
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: DuetimeInfoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
18
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.4", type: DuetimeInfoComponent, selector: "eo-duetimeInfo", inputs: { item: "item" }, ngImport: i0, template: "<ng-container *ngIf=\"isOverDue; else notOverDue\">\r\n <div class=\"notice duetime pastDue\"\r\n [translateParams]=\"{date: item?.duetime | localeDate}\"\r\n translate>eo.process.task.overdue</div>\r\n</ng-container>\r\n \r\n<ng-template #notOverDue>\r\n <div class=\"notice duetime\"\r\n [translateParams]=\"{date: item?.duetime | localeDate}\"\r\n translate>eo.process.task.due</div>\r\n</ng-template>", styles: [".notice{background-color:rgba(var(--color-black-rgb),.06);border-radius:2px;padding:calc(var(--app-pane-padding) / 4) calc(var(--app-pane-padding) / 2);margin-bottom:var(--app-pane-padding)}.notice.pastDue{background-color:var(--color-error);color:var(--color-white)}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "pipe", type: i3.LocaleDatePipe, name: "localeDate" }] }); }
|
|
19
19
|
}
|
|
20
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
20
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: DuetimeInfoComponent, decorators: [{
|
|
21
21
|
type: Component,
|
|
22
|
-
args: [{ selector: 'eo-duetimeInfo', template: "<ng-container *ngIf=\"isOverDue; else notOverDue\">\n <div class=\"notice duetime pastDue\"\n [translateParams]=\"{date: item?.duetime | localeDate}\"\n translate>eo.process.task.overdue</div>\n</ng-container>\n \n<ng-template #notOverDue>\n <div class=\"notice duetime\"\n [translateParams]=\"{date: item?.duetime | localeDate}\"\n translate>eo.process.task.due</div>\n</ng-template>", styles: [".notice{background-color:rgba(var(--color-black-rgb),.06);border-radius:2px;padding:calc(var(--app-pane-padding) / 4) calc(var(--app-pane-padding) / 2);margin-bottom:var(--app-pane-padding)}.notice.pastDue{background-color:var(--color-error);color:var(--color-white)}\n"] }]
|
|
22
|
+
args: [{ selector: 'eo-duetimeInfo', template: "<ng-container *ngIf=\"isOverDue; else notOverDue\">\r\n <div class=\"notice duetime pastDue\"\r\n [translateParams]=\"{date: item?.duetime | localeDate}\"\r\n translate>eo.process.task.overdue</div>\r\n</ng-container>\r\n \r\n<ng-template #notOverDue>\r\n <div class=\"notice duetime\"\r\n [translateParams]=\"{date: item?.duetime | localeDate}\"\r\n translate>eo.process.task.due</div>\r\n</ng-template>", styles: [".notice{background-color:rgba(var(--color-black-rgb),.06);border-radius:2px;padding:calc(var(--app-pane-padding) / 4) calc(var(--app-pane-padding) / 2);margin-bottom:var(--app-pane-padding)}.notice.pastDue{background-color:var(--color-error);color:var(--color-white)}\n"] }]
|
|
23
23
|
}], ctorParameters: () => [], propDecorators: { item: [{
|
|
24
24
|
type: Input
|
|
25
25
|
}] } });
|
|
26
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHVldGltZUluZm8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvaW5ib3gtZGV0YWlscy9kdWV0aW1lSW5mby9kdWV0aW1lSW5mby5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2VvLWZyYW1ld29yay9pbmJveC1kZXRhaWxzL2R1ZXRpbWVJbmZvL2R1ZXRpbWVJbmZvLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQVUsS0FBSyxFQUFDLE1BQU0sZUFBZSxDQUFDOzs7OztBQVF2RCxNQUFNLE9BQU8sb0JBQW9CO0lBSS9CLElBQ0ksSUFBSSxDQUFDLElBQWU7UUFDdEIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDbEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNwRCxDQUFDO0lBRUQsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFFRCxnQkFBZSxDQUFDO0lBRWhCLFFBQVE7SUFDUixDQUFDOzhHQWpCVSxvQkFBb0I7a0dBQXBCLG9CQUFvQixnRkNSakMscWFBVWM7OzJGREZELG9CQUFvQjtrQkFMaEMsU0FBUzsrQkFDRSxnQkFBZ0I7d0RBU3RCLElBQUk7c0JBRFAsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBPbkluaXQsIElucHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtJbmJveEl0ZW19IGZyb20gJ0Blby1zZGsvY29yZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2VvLWR1ZXRpbWVJbmZvJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZHVldGltZUluZm8uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2R1ZXRpbWVJbmZvLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIER1ZXRpbWVJbmZvQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgX2l0ZW06IEluYm94SXRlbTtcclxuICBpc092ZXJEdWU6IGJvb2xlYW47XHJcbiAgQElucHV0KClcclxuICBzZXQgaXRlbShpdGVtOiBJbmJveEl0ZW0pIHtcclxuICAgIHRoaXMuX2l0ZW0gPSBpdGVtO1xyXG4gICAgdGhpcy5pc092ZXJEdWUgPSBpdGVtLmR1ZXRpbWUgJiYgaXRlbS5pc092ZXJkdWUoKTtcclxuICB9XHJcblxyXG4gIGdldCBpdGVtKCk6IEluYm94SXRlbSB7XHJcbiAgICByZXR1cm4gdGhpcy5faXRlbTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge31cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiaXNPdmVyRHVlOyBlbHNlIG5vdE92ZXJEdWVcIj5cclxuICA8ZGl2IGNsYXNzPVwibm90aWNlIGR1ZXRpbWUgcGFzdER1ZVwiXHJcbiAgICBbdHJhbnNsYXRlUGFyYW1zXT1cIntkYXRlOiBpdGVtPy5kdWV0aW1lIHwgbG9jYWxlRGF0ZX1cIlxyXG4gICAgdHJhbnNsYXRlPmVvLnByb2Nlc3MudGFzay5vdmVyZHVlPC9kaXY+XHJcbjwvbmctY29udGFpbmVyPlxyXG4gIFxyXG48bmctdGVtcGxhdGUgI25vdE92ZXJEdWU+XHJcbiAgPGRpdiBjbGFzcz1cIm5vdGljZSBkdWV0aW1lXCJcclxuICAgIFt0cmFuc2xhdGVQYXJhbXNdPVwie2RhdGU6IGl0ZW0/LmR1ZXRpbWUgfCBsb2NhbGVEYXRlfVwiXHJcbiAgICB0cmFuc2xhdGU+ZW8ucHJvY2Vzcy50YXNrLmR1ZTwvZGl2PlxyXG48L25nLXRlbXBsYXRlPiJdfQ==
|