@eo-sdk/client 11.9.0-rc.2 → 11.10.0-rc.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/app/eo-client/about-state/about-state.component.d.ts.map +1 -1
- package/app/eo-client/dashboard/widgets/charts-widget/charts-setup/charts-setup.component.d.ts.map +1 -1
- package/app/eo-client/dashboard/widgets/charts-widget/charts-widget.component.d.ts +1 -0
- package/app/eo-client/dashboard/widgets/charts-widget/charts-widget.component.d.ts.map +1 -1
- package/app/eo-client/dashboard/widgets/charts-widget/icharts.d.ts +1 -0
- package/app/eo-client/dashboard/widgets/charts-widget/icharts.d.ts.map +1 -1
- package/app/eo-client/dashboard/widgets/signature-statistics-widget/signature-statistics-setup/signature-statistics-setup.component.d.ts.map +1 -1
- package/app/eo-client/inbox-state/inbox-state/inbox-state.component.d.ts +1 -0
- package/app/eo-client/inbox-state/inbox-state/inbox-state.component.d.ts.map +1 -1
- package/app/eo-client/notifications-state/notifications-state.component.d.ts +1 -0
- package/app/eo-client/notifications-state/notifications-state.component.d.ts.map +1 -1
- package/app/eo-client/process-state/process-state.component.d.ts +1 -0
- package/app/eo-client/process-state/process-state.component.d.ts.map +1 -1
- package/app/eo-framework/app-shell/app-bar/app-search/app-search.component.d.ts +1 -0
- package/app/eo-framework/app-shell/app-bar/app-search/app-search.component.d.ts.map +1 -1
- package/app/eo-framework/form-elements/datetime-range/datetime-range.component.d.ts +4 -2
- package/app/eo-framework/form-elements/datetime-range/datetime-range.component.d.ts.map +1 -1
- package/app/eo-framework/form-elements/dynamic-list/dynamic-list.component.d.ts.map +1 -1
- package/app/eo-framework/form-elements/number-range/number-range.component.d.ts +7 -2
- package/app/eo-framework/form-elements/number-range/number-range.component.d.ts.map +1 -1
- package/app/eo-framework/form-elements/organization/organization.component.d.ts +10 -0
- package/app/eo-framework/form-elements/organization/organization.component.d.ts.map +1 -1
- package/app/eo-framework/inbox-details/inbox-details.component.d.ts +28 -5
- package/app/eo-framework/inbox-details/inbox-details.component.d.ts.map +1 -1
- package/app/eo-framework/object-form/object-form/form-element-table/row-edit/row-edit.component.d.ts +0 -1
- package/app/eo-framework/object-form/object-form/form-element-table/row-edit/row-edit.component.d.ts.map +1 -1
- package/app/eo-framework/object-form/object-form-helper.service.d.ts.map +1 -1
- package/app/eo-framework/ui/overlay/overlay.component.d.ts +3 -2
- package/app/eo-framework/ui/overlay/overlay.component.d.ts.map +1 -1
- package/assets/_default/i18n/de.json +4 -0
- package/assets/_default/i18n/en.json +12 -8
- package/assets/_default/i18n/ja.json +1132 -0
- package/assets/_default/i18n/ko.json +1132 -0
- package/assets/_default/i18n/th.json +1132 -0
- package/assets/_default/i18n/zh.json +1132 -0
- package/esm2022/app/eo-client/about-state/about-state.component.mjs +6 -6
- package/esm2022/app/eo-client/dashboard/dashboard.component.mjs +3 -3
- package/esm2022/app/eo-client/dashboard/widgets/charts-widget/charts-setup/charts-setup.component.mjs +7 -5
- package/esm2022/app/eo-client/dashboard/widgets/charts-widget/charts-widget.component.mjs +83 -120
- 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 +3 -3
- package/esm2022/app/eo-client/dashboard/widgets/count-objects-widget/count-objects-widget.component.mjs +3 -3
- package/esm2022/app/eo-client/dashboard/widgets/hitlist-widget/hitlist-setup/hitlist-setup.component.mjs +3 -3
- package/esm2022/app/eo-client/dashboard/widgets/hitlist-widget/hitlist-widget.component.mjs +3 -3
- package/esm2022/app/eo-client/dashboard/widgets/iframe-widget/iframe-setup/iframe-setup.component.mjs +3 -3
- package/esm2022/app/eo-client/dashboard/widgets/iframe-widget/iframe-widget.component.mjs +6 -6
- package/esm2022/app/eo-client/dashboard/widgets/info-inbox-widget/info-inbox-setup/info-inbox-setup.component.mjs +3 -3
- package/esm2022/app/eo-client/dashboard/widgets/info-inbox-widget/info-inbox-widget.component.mjs +3 -3
- package/esm2022/app/eo-client/dashboard/widgets/info-intray-widget/info-intray-setup/info-intray-setup.component.mjs +3 -3
- package/esm2022/app/eo-client/dashboard/widgets/info-intray-widget/info-intray-widget.component.mjs +3 -3
- package/esm2022/app/eo-client/dashboard/widgets/last-edited-widget/last-edited-and-created-setup/last-edited-and-created-setup.component.mjs +3 -3
- package/esm2022/app/eo-client/dashboard/widgets/last-edited-widget/last-edited-and-created.component.mjs +3 -3
- package/esm2022/app/eo-client/dashboard/widgets/picture-widget/picture-widget-setup/picture-widget-setup.component.mjs +3 -3
- package/esm2022/app/eo-client/dashboard/widgets/picture-widget/picture-widget.component.mjs +3 -3
- package/esm2022/app/eo-client/dashboard/widgets/search-widget/search-widget.component.mjs +5 -5
- package/esm2022/app/eo-client/dashboard/widgets/signature-statistics-widget/signature-statistics-setup/signature-statistics-setup.component.mjs +7 -7
- package/esm2022/app/eo-client/dashboard/widgets/signature-statistics-widget/signature-statistics-widget.component.mjs +3 -3
- package/esm2022/app/eo-client/dashboard/widgets/todowidget/todo-setup/todo-setup.component.mjs +3 -3
- package/esm2022/app/eo-client/dashboard/widgets/todowidget/todo-widget.component.mjs +3 -3
- package/esm2022/app/eo-client/eo-client-routing.module.mjs +4 -4
- package/esm2022/app/eo-client/eo-client.module.mjs +4 -4
- package/esm2022/app/eo-client/favorite-state/favorite-state.component.mjs +3 -3
- package/esm2022/app/eo-client/inbox-state/inbox-state/inbox-state.component.mjs +11 -5
- package/esm2022/app/eo-client/inbox-state/inbox-state-routing.module.mjs +4 -4
- package/esm2022/app/eo-client/inbox-state/inbox-state.module.mjs +4 -4
- package/esm2022/app/eo-client/login/login.component.mjs +3 -3
- package/esm2022/app/eo-client/notifications-state/notifications-state.component.mjs +11 -5
- package/esm2022/app/eo-client/object-state/object-state/object-state.component.mjs +3 -3
- package/esm2022/app/eo-client/object-state/object-state-routing.module.mjs +4 -4
- package/esm2022/app/eo-client/object-state/object-state-service/object-state.service.mjs +3 -3
- package/esm2022/app/eo-client/object-state/object-state.module.mjs +4 -4
- package/esm2022/app/eo-client/prepare-state/prepare-state/prepare-state.component.mjs +3 -3
- package/esm2022/app/eo-client/prepare-state/prepare-state-routing.module.mjs +4 -4
- package/esm2022/app/eo-client/prepare-state/prepare-state.module.mjs +4 -4
- package/esm2022/app/eo-client/process-state/process-state.component.mjs +11 -5
- package/esm2022/app/eo-client/recyclebin-state/recyclebin-state.component.mjs +3 -3
- package/esm2022/app/eo-client/result-state/result-state.component.mjs +3 -3
- package/esm2022/app/eo-client/settings/settings.component.mjs +3 -3
- package/esm2022/app/eo-client/stored-queries-state/stored-queries-state.component.mjs +3 -3
- package/esm2022/app/eo-client/version-state/version-state.component.mjs +3 -3
- package/esm2022/app/eo-framework/accordion/accordion.module.mjs +4 -4
- package/esm2022/app/eo-framework/accordion/simple-accordion/simple-accordion.component.mjs +3 -3
- package/esm2022/app/eo-framework/actions/action-menu/action-component-anchor/action-component-anchor.directive.mjs +3 -3
- package/esm2022/app/eo-framework/actions/action-menu/action-menu.component.mjs +3 -3
- package/esm2022/app/eo-framework/actions/action-service/action.service.mjs +3 -3
- package/esm2022/app/eo-framework/actions/action.module.mjs +4 -4
- package/esm2022/app/eo-framework/actions/actions/add-resubmission-action/add-resubmission/add-resubmission.component.mjs +3 -3
- package/esm2022/app/eo-framework/actions/actions/add-resubmission-action/add-resubmission-action.mjs +3 -3
- package/esm2022/app/eo-framework/actions/actions/add-subscription-action/add-subscription/add-subscription.component.mjs +3 -3
- package/esm2022/app/eo-framework/actions/actions/add-subscription-action/add-subscription-action.mjs +3 -3
- package/esm2022/app/eo-framework/actions/actions/cancel-signing-action/cancel-signing/cancel-signing.component.mjs +3 -3
- package/esm2022/app/eo-framework/actions/actions/cancel-signing-action/cancel-signing-action.mjs +3 -3
- package/esm2022/app/eo-framework/actions/actions/clipboard/clipboard-action.mjs +3 -3
- package/esm2022/app/eo-framework/actions/actions/clipboard/clipboard-object-action/clipboard-object-action.component.mjs +3 -3
- package/esm2022/app/eo-framework/actions/actions/copy-action/copy-action.mjs +3 -3
- package/esm2022/app/eo-framework/actions/actions/custom-actions/custom-actions.component.mjs +3 -3
- package/esm2022/app/eo-framework/actions/actions/cut-action/cut-action.mjs +3 -3
- package/esm2022/app/eo-framework/actions/actions/delete-action/delete/delete.component.mjs +3 -3
- package/esm2022/app/eo-framework/actions/actions/delete-action/delete-action.mjs +3 -3
- package/esm2022/app/eo-framework/actions/actions/delete-action/delete-prepared-action.mjs +3 -3
- package/esm2022/app/eo-framework/actions/actions/delete-content-action/delete-content/delete-content.component.mjs +3 -3
- package/esm2022/app/eo-framework/actions/actions/delete-content-action/delete-content-action.mjs +3 -3
- package/esm2022/app/eo-framework/actions/actions/download-action/download-action.mjs +3 -3
- package/esm2022/app/eo-framework/actions/actions/download-action/download-object-action/download-object-action.component.mjs +3 -3
- package/esm2022/app/eo-framework/actions/actions/email/email/email.component.mjs +3 -3
- package/esm2022/app/eo-framework/actions/actions/email/email-action.mjs +3 -3
- package/esm2022/app/eo-framework/actions/actions/favorite-action/favorite-action.mjs +3 -3
- package/esm2022/app/eo-framework/actions/actions/finalize/definalize-action.mjs +3 -3
- package/esm2022/app/eo-framework/actions/actions/finalize/finalize-action.mjs +4 -4
- package/esm2022/app/eo-framework/actions/actions/finalize/finalize-object-action/finalize-object-action.component.mjs +3 -3
- package/esm2022/app/eo-framework/actions/actions/open-context-action/open-context-action.mjs +3 -3
- package/esm2022/app/eo-framework/actions/actions/open-document-action/open-document-action.component.mjs +3 -3
- package/esm2022/app/eo-framework/actions/actions/open-document-action/open-document-action.mjs +3 -3
- package/esm2022/app/eo-framework/actions/actions/open-versions-action/open-versions-action.mjs +3 -3
- package/esm2022/app/eo-framework/actions/actions/remove-subscription-action/remove-subscription-action.mjs +3 -3
- package/esm2022/app/eo-framework/actions/actions/restore-version-action/restore-version-action.mjs +3 -3
- package/esm2022/app/eo-framework/actions/actions/return-task-action/return-task/return-task.component.mjs +3 -3
- package/esm2022/app/eo-framework/actions/actions/return-task-action/return-task-action.mjs +3 -3
- package/esm2022/app/eo-framework/actions/actions/share-object-action/share-object/share-object.component.mjs +3 -3
- package/esm2022/app/eo-framework/actions/actions/share-object-action/share-object-action.mjs +3 -3
- package/esm2022/app/eo-framework/actions/actions/signature-action/sequence-list/sequence-list.component.mjs +4 -4
- package/esm2022/app/eo-framework/actions/actions/signature-action/sequence-list-item/sequence-list-item.component.mjs +3 -3
- package/esm2022/app/eo-framework/actions/actions/signature-action/signature/signature.component.mjs +3 -3
- package/esm2022/app/eo-framework/actions/actions/signature-action/signature-action.component.mjs +3 -3
- package/esm2022/app/eo-framework/actions/actions/unlock-action/unlock-action.mjs +3 -3
- package/esm2022/app/eo-framework/actions/actions/unlock-action/unlock-object-action/unlock-object-action.component.mjs +3 -3
- package/esm2022/app/eo-framework/actions/actions/update-resubmission-action/update-resubmission-action.mjs +3 -3
- package/esm2022/app/eo-framework/actions/actions/workflow-action/simple-workflow-action.component.mjs +3 -3
- package/esm2022/app/eo-framework/actions/actions/workflow-action/workflow/workflow.component.mjs +3 -3
- package/esm2022/app/eo-framework/actions/actions/workflow-action/workflow-action.component.mjs +3 -3
- package/esm2022/app/eo-framework/app-shell/app-bar/app-add/app-add-dialog/app-add-dialog.component.mjs +3 -3
- package/esm2022/app/eo-framework/app-shell/app-bar/app-add/app-add.component.mjs +3 -3
- package/esm2022/app/eo-framework/app-shell/app-bar/app-bar.component.mjs +3 -3
- package/esm2022/app/eo-framework/app-shell/app-bar/app-process/app-process.component.mjs +3 -3
- package/esm2022/app/eo-framework/app-shell/app-bar/app-search/app-search.component.mjs +3 -3
- package/esm2022/app/eo-framework/app-shell/app-bar/context-search/context-search.component.mjs +3 -3
- package/esm2022/app/eo-framework/app-shell/app-bar/side-bar/side-bar.component.mjs +3 -3
- package/esm2022/app/eo-framework/app-shell/app-bar/user-avatar-overlay/user-avatar-overlay.component.mjs +3 -3
- package/esm2022/app/eo-framework/app-shell/app-shell-routing.module.mjs +4 -4
- package/esm2022/app/eo-framework/app-shell/app-shell.module.mjs +4 -4
- package/esm2022/app/eo-framework/app-shell/license-warning/license-warning.component.mjs +3 -3
- package/esm2022/app/eo-framework/cta/component/cta.component.mjs +3 -3
- package/esm2022/app/eo-framework/cta/cta.module.mjs +4 -4
- package/esm2022/app/eo-framework/eo-framework.module.mjs +4 -4
- package/esm2022/app/eo-framework/error/error.module.mjs +4 -4
- package/esm2022/app/eo-framework/error/error404/error404.component.mjs +3 -3
- package/esm2022/app/eo-framework/error/not-found/not-found.component.mjs +3 -3
- package/esm2022/app/eo-framework/form-elements/checkbox/checkbox.component.mjs +3 -3
- package/esm2022/app/eo-framework/form-elements/codesystem/codesystem.component.mjs +3 -3
- package/esm2022/app/eo-framework/form-elements/date/date.component.mjs +3 -3
- package/esm2022/app/eo-framework/form-elements/date/year-range/year-range.directive.mjs +3 -3
- package/esm2022/app/eo-framework/form-elements/datetime-range/datetime-range.component.mjs +19 -10
- package/esm2022/app/eo-framework/form-elements/dynamic-list/dynamic-list.component.mjs +20 -14
- package/esm2022/app/eo-framework/form-elements/dynamic-list/dynamic-list.service.mjs +3 -3
- package/esm2022/app/eo-framework/form-elements/form-elements.module.mjs +4 -4
- package/esm2022/app/eo-framework/form-elements/form-input/form-input.component.mjs +3 -3
- package/esm2022/app/eo-framework/form-elements/form-input/input-focus/input-focus.directive.mjs +3 -3
- package/esm2022/app/eo-framework/form-elements/id-reference/id-reference.component.mjs +3 -3
- package/esm2022/app/eo-framework/form-elements/id-reference/reference-finder/reference-finder.component.mjs +3 -3
- package/esm2022/app/eo-framework/form-elements/id-reference/reference-finder-entry/reference-finder-entry.component.mjs +3 -3
- package/esm2022/app/eo-framework/form-elements/id-reference/service/reference-finder.service.mjs +3 -3
- package/esm2022/app/eo-framework/form-elements/number/number.component.mjs +3 -3
- package/esm2022/app/eo-framework/form-elements/number-range/number-range.component.mjs +12 -6
- package/esm2022/app/eo-framework/form-elements/organization/organization.component.mjs +34 -14
- package/esm2022/app/eo-framework/form-elements/password/password.component.mjs +3 -3
- package/esm2022/app/eo-framework/form-elements/reference/reference.component.mjs +3 -3
- package/esm2022/app/eo-framework/form-elements/string/string.component.mjs +3 -3
- package/esm2022/app/eo-framework/frame/frame.component.mjs +3 -3
- package/esm2022/app/eo-framework/grid/column-configurator/column-configurator.component.mjs +3 -3
- package/esm2022/app/eo-framework/grid/extensions/custom-sort/custom-sort.component.mjs +3 -3
- package/esm2022/app/eo-framework/grid/extensions/empty/empty.component.mjs +3 -3
- package/esm2022/app/eo-framework/grid/extensions/filter/abstract-filter.component.mjs +3 -3
- package/esm2022/app/eo-framework/grid/extensions/filter/custom/custom-filter.component.mjs +3 -3
- package/esm2022/app/eo-framework/grid/extensions/filter/setFilters/set-filter.component.mjs +3 -3
- package/esm2022/app/eo-framework/grid/extensions/filter/text/text-filter.component.mjs +3 -3
- package/esm2022/app/eo-framework/grid/extensions/pagination/pagination.component.mjs +3 -3
- package/esm2022/app/eo-framework/grid/extensions/quick-filter/quick-filter.component.mjs +3 -3
- package/esm2022/app/eo-framework/grid/extensions/reset-filter/reset-filter.component.mjs +3 -3
- package/esm2022/app/eo-framework/grid/extensions/services/list-settings.service.mjs +3 -3
- package/esm2022/app/eo-framework/grid/extensions/total-count/total-count.component.mjs +3 -3
- package/esm2022/app/eo-framework/grid/filters/codesystem-filter.component.mjs +3 -3
- package/esm2022/app/eo-framework/grid/filters/datetime-filter.component.mjs +3 -3
- package/esm2022/app/eo-framework/grid/filters/dynamic-list-filter.component.mjs +3 -3
- package/esm2022/app/eo-framework/grid/filters/list-filter.component.mjs +3 -3
- package/esm2022/app/eo-framework/grid/filters/organization-filter.component.mjs +3 -3
- package/esm2022/app/eo-framework/grid/grid.component.mjs +3 -3
- package/esm2022/app/eo-framework/grid/grid.module.mjs +4 -4
- package/esm2022/app/eo-framework/inbox-details/duetimeInfo/duetimeInfo.component.mjs +3 -3
- package/esm2022/app/eo-framework/inbox-details/inbox-details.component.mjs +54 -14
- package/esm2022/app/eo-framework/list-container/list-container.component.mjs +3 -3
- package/esm2022/app/eo-framework/list-container/list-container.module.mjs +4 -4
- package/esm2022/app/eo-framework/media/content-preview.service.mjs +3 -3
- package/esm2022/app/eo-framework/media/media.component.mjs +3 -3
- package/esm2022/app/eo-framework/media/media.module.mjs +4 -4
- package/esm2022/app/eo-framework/object-details/edit-icon/edit-icon.component.mjs +3 -3
- package/esm2022/app/eo-framework/object-details/favorite-icon/favorite-icon.component.mjs +3 -3
- package/esm2022/app/eo-framework/object-details/object-details.component.mjs +3 -3
- package/esm2022/app/eo-framework/object-details/object-details.module.mjs +4 -4
- package/esm2022/app/eo-framework/object-details/object-history/history-filter/history-filter-pipe/history-filter.pipe.mjs +3 -3
- package/esm2022/app/eo-framework/object-details/object-history/history-filter/history-filter.component.mjs +3 -3
- package/esm2022/app/eo-framework/object-details/object-history/object-history.component.mjs +3 -3
- package/esm2022/app/eo-framework/object-details/object-links/object-links.component.mjs +3 -3
- package/esm2022/app/eo-framework/object-form/object-form/form-element/form-element-template.directive.mjs +3 -3
- package/esm2022/app/eo-framework/object-form/object-form/form-element/form-element.component.mjs +3 -3
- package/esm2022/app/eo-framework/object-form/object-form/form-element-table/form-element-table.component.mjs +3 -3
- package/esm2022/app/eo-framework/object-form/object-form/form-element-table/row-edit/row-edit.component.mjs +4 -12
- package/esm2022/app/eo-framework/object-form/object-form/object-form-group/object-form-group.component.mjs +3 -3
- package/esm2022/app/eo-framework/object-form/object-form/object-form-script/object-form-script.service.mjs +3 -3
- package/esm2022/app/eo-framework/object-form/object-form/object-form.component.mjs +3 -3
- package/esm2022/app/eo-framework/object-form/object-form-edit/object-form-edit.component.mjs +3 -3
- package/esm2022/app/eo-framework/object-form/object-form-helper.service.mjs +5 -5
- package/esm2022/app/eo-framework/object-form/object-form.module.mjs +4 -4
- package/esm2022/app/eo-framework/object-state-details/object-state-details.component.mjs +3 -3
- package/esm2022/app/eo-framework/plugins/plugin.component.mjs +9 -9
- package/esm2022/app/eo-framework/plugins/plugin.directive.mjs +3 -3
- package/esm2022/app/eo-framework/plugins/plugin.service.mjs +3 -3
- package/esm2022/app/eo-framework/plugins/plugins.module.mjs +4 -4
- package/esm2022/app/eo-framework/prepare-details/prepare-content-exists-info/prepare-content-exists-info.component.mjs +3 -3
- package/esm2022/app/eo-framework/prepare-details/prepare-details.component.mjs +3 -3
- package/esm2022/app/eo-framework/process/details/process-details.component.mjs +3 -3
- package/esm2022/app/eo-framework/process/history/process-history.component.mjs +3 -3
- package/esm2022/app/eo-framework/process/process-file/process-file.component.mjs +3 -3
- package/esm2022/app/eo-framework/process-form/process-form.component.mjs +3 -3
- package/esm2022/app/eo-framework/process-form/process-form.module.mjs +4 -4
- package/esm2022/app/eo-framework/quick-search/quick-search/quick-search.component.mjs +3 -3
- package/esm2022/app/eo-framework/quick-search/quick-search.module.mjs +4 -4
- package/esm2022/app/eo-framework/recyclebin-details/recyclebin-details.component.mjs +3 -3
- package/esm2022/app/eo-framework/result-list/result-list.component.mjs +3 -3
- package/esm2022/app/eo-framework/result-list/result-list.module.mjs +4 -4
- package/esm2022/app/eo-framework/settings/change-password/change-password-form/change-password-form.component.mjs +3 -3
- package/esm2022/app/eo-framework/settings/permissions/permissions.component.mjs +3 -3
- package/esm2022/app/eo-framework/settings/settings.module.mjs +4 -4
- package/esm2022/app/eo-framework/shortcuts/global-shortcuts/global-shortcuts-section/global-shortcuts-section.component.mjs +3 -3
- package/esm2022/app/eo-framework/shortcuts/global-shortcuts/global-shortcuts.component.mjs +3 -3
- package/esm2022/app/eo-framework/shortcuts/shortcuts.directive.mjs +3 -3
- package/esm2022/app/eo-framework/shortcuts/shortcuts.module.mjs +4 -4
- package/esm2022/app/eo-framework/shortcuts/shortcuts.service.mjs +3 -3
- package/esm2022/app/eo-framework/stored-query/stored-query/stored-query.component.mjs +3 -3
- package/esm2022/app/eo-framework/stored-query/stored-query-details/dynamic-property-switch/dynamic-property-switch.component.mjs +3 -3
- package/esm2022/app/eo-framework/stored-query/stored-query-details/stored-query-details.component.mjs +3 -3
- package/esm2022/app/eo-framework/stored-query/stored-query.module.mjs +4 -4
- package/esm2022/app/eo-framework/tree/tree-node/tree-node.component.mjs +5 -5
- package/esm2022/app/eo-framework/tree/tree.component.mjs +3 -3
- package/esm2022/app/eo-framework/tree/tree.module.mjs +4 -4
- package/esm2022/app/eo-framework/ui/clipboard/clipboard.component.mjs +3 -3
- package/esm2022/app/eo-framework/ui/eo-dialog/eo-dialog.component.mjs +9 -9
- package/esm2022/app/eo-framework/ui/eo-icon/eo-icon.component.mjs +3 -3
- package/esm2022/app/eo-framework/ui/error-message/error-message.component.mjs +3 -3
- package/esm2022/app/eo-framework/ui/indexdata-summary/indexdata-summary-entry/indexdata-summary-entry.component.mjs +3 -3
- package/esm2022/app/eo-framework/ui/indexdata-summary/indexdata-summary.component.mjs +3 -3
- package/esm2022/app/eo-framework/ui/loading-spinner/loading-spinner.component.mjs +3 -3
- package/esm2022/app/eo-framework/ui/outside-click/outside-click.directive.mjs +3 -3
- package/esm2022/app/eo-framework/ui/overlay/overlay.component.mjs +14 -6
- package/esm2022/app/eo-framework/ui/query-scope-select/query-scope-select.component.mjs +3 -3
- package/esm2022/app/eo-framework/ui/router-link/router-link.directive.mjs +3 -3
- package/esm2022/app/eo-framework/ui/rtl-aware/rtl-aware.directive.mjs +3 -3
- package/esm2022/app/eo-framework/ui/signature-tab/signature-tab.component.mjs +3 -3
- package/esm2022/app/eo-framework/ui/ui.module.mjs +4 -4
- package/esm2022/app/eo-framework/ui/user-avatar/user-avatar.component.mjs +3 -3
- package/esm2022/app/eo-framework/upload-overlay/upload-overlay-guard.service.mjs +3 -3
- 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 +3 -3
- package/esm2022/app/eo-framework/util/directive/trap-focus.directive.mjs +3 -3
- package/esm2022/app/eo-framework/util/services/utilities.service.mjs +3 -3
- package/esm2022/app/eo-framework/util/sortable/order-by.pipe.mjs +3 -3
- package/esm2022/app/eo-framework/util/util.module.mjs +4 -4
- package/esm2022/app/eo-framework-core/agent/agent.service.mjs +3 -3
- package/esm2022/app/eo-framework-core/api/grid.service.mjs +3 -3
- package/esm2022/app/eo-framework-core/api/plugins.service.mjs +3 -3
- package/esm2022/app/eo-framework-core/empty-state/empty-state.service.mjs +3 -3
- package/esm2022/app/eo-framework-core/eo-framework-core.module.mjs +4 -4
- package/esm2022/app/eo-framework-core/error-handler/error-handler.service.mjs +3 -3
- package/esm2022/app/eo-framework-core/layout/layout.service.mjs +3 -3
- package/esm2022/app/eo-framework-core/location/location.service.mjs +3 -3
- package/esm2022/app/eo-framework-core/pending-changes/pending-changes-guard.service.mjs +3 -3
- package/esm2022/app/eo-framework-core/pending-changes/pending-changes.service.mjs +3 -3
- package/esm2022/app/eo-framework-core/pipes/filesize.pipe.mjs +3 -3
- package/esm2022/app/eo-framework-core/pipes/keys.pipe.mjs +3 -3
- package/esm2022/app/eo-framework-core/pipes/locale-date.pipe.mjs +3 -3
- package/esm2022/app/eo-framework-core/pipes/locale-number.pipe.mjs +12 -12
- package/esm2022/app/eo-framework-core/pipes/pipes.module.mjs +4 -4
- package/esm2022/app/eo-framework-core/pipes/safe-html.pipe.mjs +3 -3
- package/esm2022/app/eo-framework-core/references/reference.service.mjs +3 -3
- package/esm2022/app/eo-framework-core/route-guards/auth/auth-guard.service.mjs +3 -3
- package/esm2022/app/eo-framework-core/route-guards/capabilities/capabilities-guard.service.mjs +3 -3
- package/esm2022/app/eo-framework-core/search/app-search.service.mjs +3 -3
- package/esm2022/app/eo-framework-core/selection/selection.service.mjs +3 -3
- package/esm2022/app/eo-framework-core/title/page-title.service.mjs +3 -3
- package/fesm2022/eo-sdk-client.mjs +1058 -995
- package/fesm2022/eo-sdk-client.mjs.map +1 -1
- package/package.json +12 -12
|
@@ -104,10 +104,10 @@ export class ObjectFormScriptService {
|
|
|
104
104
|
return globalScript(scope, UtilitiesService.lodash, moment);
|
|
105
105
|
}));
|
|
106
106
|
}
|
|
107
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0
|
|
108
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0
|
|
107
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ObjectFormScriptService, deps: [{ token: i1.Logger }, { token: i1.BackendService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
108
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ObjectFormScriptService }); }
|
|
109
109
|
}
|
|
110
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0
|
|
110
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ObjectFormScriptService, decorators: [{
|
|
111
111
|
type: Injectable
|
|
112
112
|
}], ctorParameters: () => [{ type: i1.Logger }, { type: i1.BackendService }] });
|
|
113
113
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LWZvcm0tc2NyaXB0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2VvLWZyYW1ld29yay9vYmplY3QtZm9ybS9vYmplY3QtZm9ybS9vYmplY3QtZm9ybS1zY3JpcHQvb2JqZWN0LWZvcm0tc2NyaXB0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLFFBQVEsSUFBSSxrQkFBa0IsRUFBYSxNQUFNLE1BQU0sQ0FBQztBQUVoRSxPQUFPLEVBQUMsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkMsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFbkQsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBRTVCLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDBDQUEwQyxDQUFDOzs7QUFHMUUsTUFBTSxPQUFPLHVCQUF1QjtJQUVsQyxZQUFvQixNQUFjLEVBQ2QsT0FBdUI7UUFEdkIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLFlBQU8sR0FBUCxPQUFPLENBQWdCO0lBQzNDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLGFBQWEsQ0FBQyxLQUErQixFQUFFLE1BQVcsRUFBRSxVQUFtQjtRQUVwRixJQUFJLENBQUM7WUFDSCxrQ0FBa0M7WUFDbEMsSUFBSSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsR0FBRyxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDakYsc0JBQXNCO1lBQ3RCLElBQUksZ0JBQWdCLEdBQUcsa0JBQWtCLENBQ3ZDLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUN2QyxDQUFDO1lBQ0YsMkVBQTJFO1lBQzNFLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztnQkFD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aW4gYXMgb2JzZXJ2YWJsZUZvcmtKb2luLCBPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHttYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7T2JqZWN0Rm9ybVNjcmlwdGluZ1Njb3BlfSBmcm9tICcuL29iamVjdC1mb3JtLXNjcmlwdGluZy1zY29wZSc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQge0xvZ2dlciwgQmFja2VuZFNlcnZpY2V9IGZyb20gJ0Blby1zZGsvY29yZSc7XG5pbXBvcnQge1V0aWxpdGllc1NlcnZpY2V9IGZyb20gJy4uLy4uLy4uL3V0aWwvc2VydmljZXMvdXRpbGl0aWVzLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgT2JqZWN0Rm9ybVNjcmlwdFNlcnZpY2Uge1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbG9nZ2VyOiBMb2dnZXIsXG4gICAgICAgICAgICAgIHByaXZhdGUgYmFja2VuZDogQmFja2VuZFNlcnZpY2UpIHtcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW4gYSBmb3JtIHNjcmlwdC5cbiAgICogQHBhcmFtIHNjb3BlIC0gdGhlIGN1cnJlbnQgc2NyaXB0aW5nIHNjb3BlXG4gICAqIEBwYXJhbSBzY3JpcHQgLSB0aGUgc2NyaXB0IHRvIGJlIGV4ZWN1dGVkXG4gICAqIEBwYXJhbSBbc2NyaXB0TmFtZV0gLSB0aGUgc2NyaXB0cyBuYW1lXG4gICAqL1xuICBwdWJsaWMgcnVuRm9ybVNjcmlwdChzY29wZTogT2JqZWN0Rm9ybVNjcmlwdGluZ1Njb3BlLCBzY3JpcHQ6IGFueSwgc2NyaXB0TmFtZT86IHN0cmluZykge1xuXG4gICAgdHJ5IHtcbiAgICAgIC8vIERlZmluZSBmb3JtIHNjcmlwdCB0aGUgZnVuY3Rpb25cbiAgICAgIGxldCBmb3JtU2NyaXB0RnVuY3Rpb24gPSB0aGlzLmRlZmluZUZ1bmN0aW9uKCdGb3Jtc2NyaXB0LycgKyBzY3JpcHROYW1lLCBzY3JpcHQpO1xuICAgICAgLy8gcnVuIHRoZSBmb3JtIHNjcmlwdFxuICAgICAgbGV0IGZvcm1TY3JpcHRSZXR1cm4gPSBmb3JtU2NyaXB0RnVuY3Rpb24oXG4gICAgICAgIHNjb3BlLCBVdGlsaXRpZXNTZXJ2aWNlLmxvZGFzaCwgbW9tZW50XG4gICAgICApO1xuICAgICAgLy8gQ2hlY2sgaWYgdGhlIGZvcm0gc2NyaXB0IHJldHVybnMgc29tZXRoaW5nIGFuZCBtYXkgZXhwb3J0IGdsb2JhbCBzY3JpcHRzXG4gICAgICBpZiAoZm9ybVNjcmlwdFJldHVybikge1xuICAgICAgICB0aGlzLmltcG9ydEdsb2JhbFNjcmlwdHNBbmRDYWxsSW5pdChzY29wZSwgZm9ybVNjcmlwdFJldHVybik7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaWYgKGUgaW5zdGFuY2VvZiBTeW50YXhFcnJvcikge1xuICAgICAgICBhbGVydCgnU3ludGF4IGVycm9yIGluIEZvcm0tU2NyaXB0LiBTZWUgY29uc29sZSBsb2cgZm9yIGRldGFpbHMuJyk7XG4gICAgICB9XG4gICAgICB0aGlzLmxvZ2dlci5lcnJvcignR290IHNjcmlwdCBlcnJvcicsIGUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBEZWZpbmUgZm9ybSBzY3JpcHQgZnVuY3Rpb24sIGFwcGVuZGluZyBzb3VyY2UgdXJsIGFzIGNvbW1lbnQuXG4gICAqIEVuYWJsZXMgZGVidWdnaW5nIHVzaW5nIGJyb3dzZXIgZGVidWdnaW5nIHRvb2xzIChDaHJvbWUrRmlyZWZveClcbiAgICogQHNlZTogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9Ub29scy9EZWJ1Z2dlci9Ib3dfdG8vRGVidWdfZXZhbF9zb3VyY2VzXG4gICAqXG4gICAqIEBwYXJhbSBuYW1lIC0gdGhlIG5hbWUgb2YgdGhlIHNjcmlwdFxuICAgKiBAcGFyYW0gc2NyaXB0IC0gc2NyaXB0IHRvIGJlIHdyYXBwZWQgaW4gYSBmdW5jdGlvblxuICAgKiBAcmV0dXJucyB0aGUgZnVuY3Rpb25cbiAgICovXG4gIHByaXZhdGUgZGVmaW5lRnVuY3Rpb24obmFtZTogc3RyaW5nLCBzY3JpcHQ6IGFueSk6IEZ1bmN0aW9uIHtcbiAgICAvLyBBcHBlbmRpbmcgc291cmNlIHVybCBhcyBjb21tZW50LiBTZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9Ub29scy9EZWJ1Z2dlci9Ib3dfdG8vRGVidWdfZXZhbF9zb3VyY2VzXG4gICAgLy8gRW5hYmxlcyBkZWJ1Z2dpbmcgdXNpbmcgYnJvd3NlciBkZWJ1Z2dpbmcgdG9vbHMgKENocm9tZStGaXJlZm94KVxuICAgIC8vIFRoZSBsaW5lIGZlZWQgaXMgbmVlZGVkLCBpZiB0aGUgc2NyaXB0IGhhcyBhIGNvbW1lbnQgaW4gdGhlIGxhc3QgbGluZVxuICAgIHJldHVybiBuZXcgRnVuY3Rpb24oJ3Njb3BlJywgJ18nLCAnbW9tZW50Jywgc2NyaXB0ICsgJ1xcbjsvLyMgc291cmNlVVJMPScgKyBuYW1lICsgJy5qcycpO1xuICB9XG5cbiAgLyoqXG4gICAqIElmIHRoZSBzY3JpcHQgY29udGFpbnMgZ2xvYmFsIHNjcmlwdCwgdGhpcyBmdW5jdGlvbiB3aWxsIGltcG9ydCBhbmQgcnVuIHRoZW1cbiAgICogYmVmb3JlIHJ1bm5pbmcgdGhlIGFjdHVhbCBzY3JpcHQuXG4gICAqXG4gICAqIEBwYXJhbSBzY29wZSAtIHRoZSBjdXJyZW50IHNjcmlwdGluZyBzY29wZVxuICAgKiBAcGFyYW0gZm9ybVNjcmlwdFJldHVybiAtIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIGFjdHVhbCBmb3JtIHNjcmlwdFxuICAgKi9cbiAgcHJpdmF0ZSBpbXBvcnRHbG9iYWxTY3JpcHRzQW5kQ2FsbEluaXQoc2NvcGU6IE9iamVjdEZvcm1TY3JpcHRpbmdTY29wZSwgZm9ybVNjcmlwdFJldHVybjogYW55KSB7XG5cbiAgICBpZiAoIWZvcm1TY3JpcHRSZXR1cm4uaW5pdCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChmb3JtU2NyaXB0UmV0dXJuLnVzZXMpIHtcbiAgICAgIC8vIGNvbGxlY3QgdGhlIGdsb2JhbCBzY3JpcHQgZXhwb3J0cyBwcm9taXNlc1xuICAgICAgbGV0IGV4cG9ydHMgPSBbXTtcbiAgICAgIGxldCBnbG9iYWxzID0gW107XG5cbiAgICAgIC8vIGNvbGxlY3QgT2JzZXJ2YWJsZXMgZm9yIGZldGNoaW5nIGdsb2JhbCBzY3JpcHRzXG4gICAgICBmb3IgKGxldCB1c2Ugb2YgZm9ybVNjcmlwdFJldHVybi51c2VzKSB7XG4gICAgICAgIGdsb2JhbHMucHVzaCh0aGlzLnJlc29sdmVHbG9iYWxTY3JpcHQodXNlLCBzY29wZSkpO1xuICAgICAgfVxuXG4gICAgICBvYnNlcnZhYmxlRm9ya0pvaW4oZ2xvYmFscykuc3Vic2NyaWJlKChnbG9iYWxSZXR1cm5zKSA9PiB7XG5cbiAgICAgICAgZm9yIChsZXQgc2NyaXB0UmV0dXJuIG9mIGdsb2JhbFJldHVybnMpIHtcbiAgICAgICAgICBleHBvcnRzLnB1c2goc2NyaXB0UmV0dXJuWydleHBvcnRzJ10pO1xuICAgICAgICB9XG4gICAgICAgIC8vIEludm9rZSBpbml0IGZ1bmN0aW9uIG9uIGZvcm0gc2NyaXB0IHJldHVybiB3aXRoIHRoZVxuICAgICAgICAvLyBjb2xsZWN0ZWQgZXhwb3J0cyB1c2luZyBqYXZhc2NyaXB0IGFwcGx5IG1hZ2ljXG4gICAgICAgIGZvcm1TY3JpcHRSZXR1cm4uaW5pdC5hcHBseSh0aGlzLCBleHBvcnRzKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBpbnZva2UgaW5pdCBkaXJlY3QgKG5vIHVzZSBvZiBnbG9iYWwgc2NyaXB0cylcbiAgICAgIGZvcm1TY3JpcHRSZXR1cm4uaW5pdCgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBGZXRjaCBnbG9iYWwgc2NyaXB0cy5cbiAgICogQHBhcmFtIG5hbWUgLSB0aGUgbmFtZSBvZiB0aGUgZ2xvYmFsIHNjcmlwdFxuICAgKiBAcGFyYW0gc2NvcGUgLSB0aGUgY3VycmVudCBzY3JpcHRpbmcgc2NvcGVcbiAgICogQHJldHVybnNcbiAgICovXG4gIHByaXZhdGUgcmVzb2x2ZUdsb2JhbFNjcmlwdChuYW1lOiBzdHJpbmcsIHNjb3BlOiBPYmplY3RGb3JtU2NyaXB0aW5nU2NvcGUpOiBPYnNlcnZhYmxlPGFueT4ge1xuXG4gICAgY29uc3QgcmVxdWVzdE9wdGlvbnMgPSB7XG4gICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoe1xuICAgICAgICAnQWNjZXB0JzogJ3RleHQvcGxhaW4nXG4gICAgICB9KSxcbiAgICAgIHJlc3BvbnNlVHlwZTogJ3RleHQnXG4gICAgfTtcblxuICAgIHJldHVybiB0aGlzLmJhY2tlbmRcbiAgICAgIC5nZXQoYC9zY3JpcHQvJHtuYW1lfS9zY3JpcHRgLCBudWxsLCByZXF1ZXN0T3B0aW9ucykucGlwZShcbiAgICAgIG1hcCgocmVzOiBhbnkpID0+IHtcbiAgICAgICAgLy8gZGVmaW5lIHRoZSBnbG9iYWwgZnVuY3Rpb24gLi4uXG4gICAgICAgIGxldCBnbG9iYWxTY3JpcHQgPSB0aGlzLmRlZmluZUZ1bmN0aW9uKCdHbG9iYWwvJyArIG5hbWUsIHJlcyk7XG4gICAgICAgIC8vIC4uLiBhbmQgcnVuIGl0XG4gICAgICAgIHJldHVybiBnbG9iYWxTY3JpcHQoc2NvcGUsIFV0aWxpdGllc1NlcnZpY2UubG9kYXNoLCBtb21lbnQpO1xuICAgICAgfSkpO1xuICB9XG59XG4iXX0=
|
|
@@ -129,10 +129,10 @@ export class ObjectFormComponent {
|
|
|
129
129
|
this.subscriptions = [];
|
|
130
130
|
}
|
|
131
131
|
}
|
|
132
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0
|
|
133
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0
|
|
132
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ObjectFormComponent, deps: [{ token: i1.Logger }, { token: i0.ElementRef }, { token: i2.ObjectFormScriptService }, { token: i3.ObjectFormHelperService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
133
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", type: ObjectFormComponent, selector: "eo-object-form", inputs: { isInnerTableForm: "isInnerTableForm", options: ["formOptions", "options"] }, outputs: { statusChanged: "statusChanged", onFormReady: "onFormReady" }, providers: [ObjectFormScriptService], ngImport: i0, template: "<div class=\"eo-object-form\" *ngIf=\"form && formOptions\" [formGroup]=\"form\" eoRtlAware>\n <div class=\"form-element-wrap core\">\n <eo-form-group [group]=\"form.get('core')\" [situation]=\"formOptions.formModel.situation\"></eo-form-group>\n </div>\n <div class=\"form-element-wrap data\">\n <eo-form-group [group]=\"form.get('data')\" [situation]=\"formOptions.formModel.situation\"></eo-form-group>\n </div>\n</div>\n\n\n\n\n", styles: [":host{display:block}:host .eo-object-form .core{padding:var(--app-pane-padding) var(--app-pane-padding) calc(var(--app-pane-padding) * 2) var(--app-pane-padding)}:host .eo-object-form .ui-tabview{padding:0}:host::ng-deep .eo-object-form>.data>eo-form-group>.form-element.o2mGroupStack{background:transparent;border:0}:host::ng-deep .eo-object-form>.data>eo-form-group>.form-element.o2mGroupStack>eo-form-group>.o2mGroup{background-color:var(--panel-background-lightgrey);border-top:1px solid rgba(var(--color-black-rgb),.1);padding:var(--app-pane-padding)}:host::ng-deep .eo-object-form>.data>eo-form-group>.form-element.o2mGroupStack>p-tabview>.ui-tabview>.ui-tabview-panels{background-color:var(--panel-background-lightgrey)}:host-context(.dark)::ng-deep .eo-object-form>.data>eo-form-group>.form-element.o2mGroupStack>eo-form-group>.o2mGroup{background-color:rgba(var(--color-white-rgb),.1);border-top:1px solid rgba(var(--color-white-rgb),.1)}:host-context(.dark)::ng-deep .eo-object-form>.data>eo-form-group>.form-element.o2mGroupStack>p-tabview>.ui-tabview>.ui-tabview-panels{background-color:rgba(var(--color-white-rgb),.1)}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i6.RtlAwareDirective, selector: "[eoRtlAware]", inputs: ["eoRtlAware"] }, { kind: "component", type: i7.ObjectFormGroupComponent, selector: "eo-form-group", inputs: ["situation", "skipToggle", "group", "noGroupLabels"] }] }); }
|
|
134
134
|
}
|
|
135
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0
|
|
135
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ObjectFormComponent, decorators: [{
|
|
136
136
|
type: Component,
|
|
137
137
|
args: [{ selector: 'eo-object-form', providers: [ObjectFormScriptService], template: "<div class=\"eo-object-form\" *ngIf=\"form && formOptions\" [formGroup]=\"form\" eoRtlAware>\n <div class=\"form-element-wrap core\">\n <eo-form-group [group]=\"form.get('core')\" [situation]=\"formOptions.formModel.situation\"></eo-form-group>\n </div>\n <div class=\"form-element-wrap data\">\n <eo-form-group [group]=\"form.get('data')\" [situation]=\"formOptions.formModel.situation\"></eo-form-group>\n </div>\n</div>\n\n\n\n\n", styles: [":host{display:block}:host .eo-object-form .core{padding:var(--app-pane-padding) var(--app-pane-padding) calc(var(--app-pane-padding) * 2) var(--app-pane-padding)}:host .eo-object-form .ui-tabview{padding:0}:host::ng-deep .eo-object-form>.data>eo-form-group>.form-element.o2mGroupStack{background:transparent;border:0}:host::ng-deep .eo-object-form>.data>eo-form-group>.form-element.o2mGroupStack>eo-form-group>.o2mGroup{background-color:var(--panel-background-lightgrey);border-top:1px solid rgba(var(--color-black-rgb),.1);padding:var(--app-pane-padding)}:host::ng-deep .eo-object-form>.data>eo-form-group>.form-element.o2mGroupStack>p-tabview>.ui-tabview>.ui-tabview-panels{background-color:var(--panel-background-lightgrey)}:host-context(.dark)::ng-deep .eo-object-form>.data>eo-form-group>.form-element.o2mGroupStack>eo-form-group>.o2mGroup{background-color:rgba(var(--color-white-rgb),.1);border-top:1px solid rgba(var(--color-white-rgb),.1)}:host-context(.dark)::ng-deep .eo-object-form>.data>eo-form-group>.form-element.o2mGroupStack>p-tabview>.ui-tabview>.ui-tabview-panels{background-color:rgba(var(--color-white-rgb),.1)}\n"] }]
|
|
138
138
|
}], ctorParameters: () => [{ type: i1.Logger }, { type: i0.ElementRef }, { type: i2.ObjectFormScriptService }, { type: i3.ObjectFormHelperService }, { type: i0.ChangeDetectorRef }], propDecorators: { isInnerTableForm: [{
|
package/esm2022/app/eo-framework/object-form/object-form-edit/object-form-edit.component.mjs
CHANGED
|
@@ -196,10 +196,10 @@ export class ObjectFormEditComponent {
|
|
|
196
196
|
isEditable(dmsObject) {
|
|
197
197
|
return dmsObject.hasOwnProperty('rights') && dmsObject.rights.edit && !dmsObject.isFinalized;
|
|
198
198
|
}
|
|
199
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0
|
|
200
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0
|
|
199
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ObjectFormEditComponent, deps: [{ token: i1.SystemService }, { token: i1.DmsService }, { token: i0.ElementRef }, { token: i1.NotificationsService }, { token: i2.PendingChangesService }, { token: i3.Router }, { token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
200
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", type: ObjectFormEditComponent, selector: "eo-object-form-edit", inputs: { formDisabled: "formDisabled", dmsObject: "dmsObject" }, outputs: { indexDataSaved: "indexDataSaved" }, viewQueries: [{ propertyName: "objectForm", first: true, predicate: ObjectFormComponent, descendants: true }], ngImport: i0, template: "<div class=\"object-form-edit\" [ngClass]=\"{invalid: formState?.invalid === true}\" [eoShortcuts]=\"shortcuts\">\n <eo-object-form [formOptions]=\"formOptions\" *ngIf=\"formOptions\"\n (statusChanged)=\"onFormStatusChanged($event)\"></eo-object-form>\n <div class=\"form-controls\" *ngIf=\"controls.visible\">\n <div class=\"err-msg\" *ngIf=\"formState?.invalid\" translate>eo.object.indexdata.form.invalid</div>\n\n <div class=\"buttons\">\n\n <button class=\"secondary\" (click)=\"reset()\" [disabled]=\"controls.saving\" translate>eo.object.indexdata.reset</button>\n <button class=\"primary\" [ngClass]=\"{spinner: controls.saving}\"\n [disabled]=\"formState?.invalid || controls.saving\"\n (click)=\"save()\" translate>eo.object.indexdata.save</button>\n </div>\n </div>\n</div>\n\n<eo-dialog [title]=\"('eo.object.indexdata.save.conflict.dialog.title' | translate : {modifier: conflictError?.dmsobject.modified.by.firstname + ' ' + conflictError?.dmsobject.modified.by.lastname})\"\n (hide)=\"controls.saving = false;\" [(visible)]=\"showConflictDialog\" [minWidth]=\"400\" [styleClass]=\"'conflict__dialog'\">\n\n <div class=\"action-buttons conflict--action-buttons flex-row\">\n <button type=\"button\" class=\"button cancel\" (click)=\"cancelSaving()\"\n translate>eo.cta.button.cancel</button>\n <button type=\"button\" class=\"button cancel\" (click)=\"showConflictChanges()\"\n translate>eo.object.indexdata.save.changes</button>\n <button type=\"button\" (click)=\"save(true); closeConflictDialog();\" class=\"button primary\"\n translate>eo.object.indexdata.save</button>\n </div>\n</eo-dialog>\n", styles: [".object-form-edit{background:var(--color-white);min-width:300px;display:grid;grid-template-columns:1fr;grid-template-rows:1fr auto;grid-template-areas:\"form\" \"buttons\"}.object-form-edit eo-object-form{grid-area:form}.object-form-edit .form-controls{grid-area:buttons;box-sizing:border-box}.object-form-edit .form-controls .err-msg{order:0;flex:1 1 auto;display:none;background-color:var(--color-error);color:#fff;padding:calc(var(--app-pane-padding) / 2) var(--app-pane-padding)}.object-form-edit .form-controls .buttons{order:1;flex:1 1 auto;display:flex;flex-flow:row wrap;align-items:center;justify-content:flex-end;padding:var(--app-pane-padding) calc(var(--app-pane-padding) * .875)}.object-form-edit .form-controls .buttons button{flex:0 0 auto;margin:0 calc(var(--app-pane-padding) * .125)}.object-form-edit .form-controls .buttons .loader{flex:1 1 auto}.object-form-edit .form-controls .buttons .loader eo-icon{display:none}.object-form-edit .form-controls .buttons .loader.saving eo-icon{display:block}.object-form-edit.invalid .form-controls .err-msg{display:block}::ng-deep .conflict__dialog{padding:8px;min-height:unset!important}::ng-deep .conflict__dialog--header{font-size:1.17em!important;font-weight:400!important;color:rgba(var(--color-black-rgb),.54)!important;padding:0 0 1em!important;margin:0;background:#fff!important}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i6.EoDialogComponent, selector: "eo-dialog", inputs: ["hasPreviewFile", "title", "subtitle", "styleClass", "dirtyCheck", "minWidth", "minHeight", "height", "width", "focusOnShow", "align", "isFormTable", "showPreview", "visible"], outputs: ["onTogglePreview", "visibleChange", "hide", "show"] }, { kind: "directive", type: i7.ShortcutsDirective, selector: "[eoShortcuts]", inputs: ["eoShortcuts"] }, { kind: "component", type: i8.ObjectFormComponent, selector: "eo-object-form", inputs: ["isInnerTableForm", "formOptions"], outputs: ["statusChanged", "onFormReady"] }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }] }); }
|
|
201
201
|
}
|
|
202
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0
|
|
202
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ObjectFormEditComponent, decorators: [{
|
|
203
203
|
type: Component,
|
|
204
204
|
args: [{ selector: 'eo-object-form-edit', template: "<div class=\"object-form-edit\" [ngClass]=\"{invalid: formState?.invalid === true}\" [eoShortcuts]=\"shortcuts\">\n <eo-object-form [formOptions]=\"formOptions\" *ngIf=\"formOptions\"\n (statusChanged)=\"onFormStatusChanged($event)\"></eo-object-form>\n <div class=\"form-controls\" *ngIf=\"controls.visible\">\n <div class=\"err-msg\" *ngIf=\"formState?.invalid\" translate>eo.object.indexdata.form.invalid</div>\n\n <div class=\"buttons\">\n\n <button class=\"secondary\" (click)=\"reset()\" [disabled]=\"controls.saving\" translate>eo.object.indexdata.reset</button>\n <button class=\"primary\" [ngClass]=\"{spinner: controls.saving}\"\n [disabled]=\"formState?.invalid || controls.saving\"\n (click)=\"save()\" translate>eo.object.indexdata.save</button>\n </div>\n </div>\n</div>\n\n<eo-dialog [title]=\"('eo.object.indexdata.save.conflict.dialog.title' | translate : {modifier: conflictError?.dmsobject.modified.by.firstname + ' ' + conflictError?.dmsobject.modified.by.lastname})\"\n (hide)=\"controls.saving = false;\" [(visible)]=\"showConflictDialog\" [minWidth]=\"400\" [styleClass]=\"'conflict__dialog'\">\n\n <div class=\"action-buttons conflict--action-buttons flex-row\">\n <button type=\"button\" class=\"button cancel\" (click)=\"cancelSaving()\"\n translate>eo.cta.button.cancel</button>\n <button type=\"button\" class=\"button cancel\" (click)=\"showConflictChanges()\"\n translate>eo.object.indexdata.save.changes</button>\n <button type=\"button\" (click)=\"save(true); closeConflictDialog();\" class=\"button primary\"\n translate>eo.object.indexdata.save</button>\n </div>\n</eo-dialog>\n", styles: [".object-form-edit{background:var(--color-white);min-width:300px;display:grid;grid-template-columns:1fr;grid-template-rows:1fr auto;grid-template-areas:\"form\" \"buttons\"}.object-form-edit eo-object-form{grid-area:form}.object-form-edit .form-controls{grid-area:buttons;box-sizing:border-box}.object-form-edit .form-controls .err-msg{order:0;flex:1 1 auto;display:none;background-color:var(--color-error);color:#fff;padding:calc(var(--app-pane-padding) / 2) var(--app-pane-padding)}.object-form-edit .form-controls .buttons{order:1;flex:1 1 auto;display:flex;flex-flow:row wrap;align-items:center;justify-content:flex-end;padding:var(--app-pane-padding) calc(var(--app-pane-padding) * .875)}.object-form-edit .form-controls .buttons button{flex:0 0 auto;margin:0 calc(var(--app-pane-padding) * .125)}.object-form-edit .form-controls .buttons .loader{flex:1 1 auto}.object-form-edit .form-controls .buttons .loader eo-icon{display:none}.object-form-edit .form-controls .buttons .loader.saving eo-icon{display:block}.object-form-edit.invalid .form-controls .err-msg{display:block}::ng-deep .conflict__dialog{padding:8px;min-height:unset!important}::ng-deep .conflict__dialog--header{font-size:1.17em!important;font-weight:400!important;color:rgba(var(--color-black-rgb),.54)!important;padding:0 0 1em!important;margin:0;background:#fff!important}\n"] }]
|
|
205
205
|
}], ctorParameters: () => [{ type: i1.SystemService }, { type: i1.DmsService }, { type: i0.ElementRef }, { type: i1.NotificationsService }, { type: i2.PendingChangesService }, { type: i3.Router }, { type: i1.TranslateService }], propDecorators: { objectForm: [{
|
|
@@ -269,7 +269,7 @@ export class ObjectFormHelperService {
|
|
|
269
269
|
return this.datePipe.transform(value, 'yyyy-MM-dd');
|
|
270
270
|
}
|
|
271
271
|
else if (value instanceof RangeValue) {
|
|
272
|
-
return new RangeValue(value.operator, value.firstValue && this.datePipe.transform(value.firstValue, 'yyyy-MM-dd'), value.secondValue && this.datePipe.transform(value.secondValue, 'yyyy-MM-dd'));
|
|
272
|
+
return new RangeValue(value.operator, value.firstValue && this.datePipe.transform(value.firstValue, 'yyyy-MM-dd'), value.secondValue && this.datePipe.transform(value.secondValue, 'yyyy-MM-dd'), value?.useNot, value?.actualOperator);
|
|
273
273
|
}
|
|
274
274
|
}
|
|
275
275
|
if (formElement.type === 'TABLE') {
|
|
@@ -752,10 +752,10 @@ export class ObjectFormHelperService {
|
|
|
752
752
|
console.debug(`Found ${res.length} tmp entries to be removed`);
|
|
753
753
|
return res;
|
|
754
754
|
}
|
|
755
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0
|
|
756
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0
|
|
755
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ObjectFormHelperService, deps: [{ token: i1.Logger }, { token: i2.ReferenceService }, { token: i1.SearchService }, { token: i3.PluginsService }, { token: i1.SystemService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
756
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ObjectFormHelperService }); }
|
|
757
757
|
}
|
|
758
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0
|
|
758
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ObjectFormHelperService, decorators: [{
|
|
759
759
|
type: Injectable
|
|
760
760
|
}], ctorParameters: () => [{ type: i1.Logger }, { type: i2.ReferenceService }, { type: i1.SearchService }, { type: i3.PluginsService }, { type: i1.SystemService }] });
|
|
761
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LWZvcm0taGVscGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2VvLWZyYW1ld29yay9vYmplY3QtZm9ybS9vYmplY3QtZm9ybS1oZWxwZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQWMsVUFBVSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkQsT0FBTyxFQUFTLFVBQVUsRUFBZ0IsYUFBYSxFQUFpQixLQUFLLEVBQWUsTUFBTSxjQUFjLENBQUM7QUFDakgsT0FBTyxFQUFDLGVBQWUsRUFBRSxRQUFRLEVBQWMsRUFBRSxFQUFlLE1BQU0sTUFBTSxDQUFDO0FBQzdFLE9BQU8sRUFBQyxZQUFZLEVBQUUsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFLakQsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLCtDQUErQyxDQUFDO0FBQzdFLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBQ3BFLE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLDJDQUEyQyxDQUFDO0FBQ25GLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQztBQUV0RSxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSw4REFBOEQsQ0FBQzs7Ozs7QUF5QnRHLE1BQU0sT0FBTyx1QkFBdUI7SUFNbEMsWUFBb0IsTUFBYyxFQUN4QixnQkFBa0MsRUFDbEMsYUFBNEIsRUFDNUIsYUFBNkIsRUFDN0IsYUFBNEI7UUFKbEIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUN4QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLGtC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SUFBSSxDQUFDLHdCQUF3QixDQUFDLENBQUMsQ0FBQztZQUMxRixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDO2dCQUFFLEdBQUcsR0FBRyxPQUFPLENBQUM7UUFDNUMsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDWCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQ2xCLENBQUM7UUFDRCxPQUFPLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxDQUFDLE1BQU0sNEJBQTRCLENBQUMsQ0FBQztRQUMvRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7OEdBOXlCVSx1QkFBdUI7a0hBQXZCLHVCQUF1Qjs7MkZBQXZCLHVCQUF1QjtrQkFEbkMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RGF0ZVBpcGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtWYWxpZGF0b3JGbiwgVmFsaWRhdG9yc30gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtMb2dnZXIsIFJhbmdlVmFsdWUsIFNlYXJjaEZpbHRlciwgU2VhcmNoU2VydmljZSwgU3lzdGVtU2VydmljZSwgVXRpbHMsIFNlYXJjaFBhcmFtc30gZnJvbSAnQGVvLXNkay9jb3JlJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBmb3JrSm9pbiwgT2JzZXJ2YWJsZSwgb2YsIFN1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge2RlYm91bmNlVGltZSwgdGFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7UGx1Z2luc1NlcnZpY2V9IGZyb20gJy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL2FwaS9wbHVnaW5zLnNlcnZpY2UnO1xuaW1wb3J0IHtSZWZlcmVuY2VTZXJ2aWNlfSBmcm9tICcuLi8uLi9lby1mcmFtZXdvcmstY29yZS9yZWZlcmVuY2VzL3JlZmVyZW5jZS5zZXJ2aWNlJztcbmltcG9ydCB7T2JqZWN0Rm9ybU9wdGlvbnN9IGZyb20gJy4vb2JqZWN0LWZvcm0tb3B0aW9ucy5pbnRlcmZhY2UnO1xuaW1wb3J0IHtGb3JtVmFsaWRhdGlvbn0gZnJvbSAnLi9vYmplY3QtZm9ybS9mb3JtLXZhbGlkYXRpb24vZm9ybS12YWxpZGF0aW9uJztcbmltcG9ydCB7T2JqZWN0Rm9ybUNvbnRyb2x9IGZyb20gJy4vb2JqZWN0LWZvcm0vb2JqZWN0LWZvcm0tY29udHJvbCc7XG5pbXBvcnQge09iamVjdEZvcm1Db250cm9sV3JhcHBlcn0gZnJvbSAnLi9vYmplY3QtZm9ybS9vYmplY3QtZm9ybS1jb250cm9sLXdyYXBwZXInO1xuaW1wb3J0IHtPYmplY3RGb3JtR3JvdXB9IGZyb20gJy4vb2JqZWN0LWZvcm0vb2JqZWN0LWZvcm0tZ3JvdXAubW9kZWwnO1xuaW1wb3J0IHtPYmplY3RGb3JtU2NyaXB0U2VydmljZX0gZnJvbSAnLi9vYmplY3QtZm9ybS9vYmplY3QtZm9ybS1zY3JpcHQvb2JqZWN0LWZvcm0tc2NyaXB0LnNlcnZpY2UnO1xuaW1wb3J0IHtPYmplY3RGb3JtU2NyaXB0aW5nU2NvcGV9IGZyb20gJy4vb2JqZWN0LWZvcm0vb2JqZWN0LWZvcm0tc2NyaXB0L29iamVjdC1mb3JtLXNjcmlwdGluZy1zY29wZSc7XG5pbXBvcnQge09iamVjdEZvcm1Nb2RlbH0gZnJvbSAnLi9vYmplY3QtZm9ybS9vYmplY3QtZm9ybS5tb2RlbCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRm9ybUdlblNjb3BlIHtcbiAgZ0NvdW50OiBudW1iZXI7XG4gIGZvcm1PcHRpb25zOiBPYmplY3RGb3JtT3B0aW9ucztcbiAgaXNJbm5lclRhYmxlRm9ybTogYm9vbGVhbjtcbiAgaW5pdGlhbFZhbGlkYXRvcnM6IHtbbmFtZTogc3RyaW5nXTogVmFsaWRhdG9yRm4gfCBudWxsfTtcbiAgZm9ybUdlblJlc3VsdDogRm9ybUdlblJlc3VsdDtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgRm9ybUdlblJlc3VsdCB7XG4gIC8vIEZvcm0gY29udHJvbHMgZ2VuZXJhdGVkIGZyb20gdGhlIG1vZGVsIGFzICdRdWljayBhY2Nlc3Mgb2JqZWN0J1xuICAvLyBGb3JtIGVsZW1lbnRzIG5hbWUgaXMga2V5IGFuZCB0aGUgdmFsdWUgaXMgdGhlIGZvcm0gY29udHJvbCBpdHNlbGZcbiAgZm9ybUNvbnRyb2xzOiB7W25hbWU6IHN0cmluZ106IE9iamVjdEZvcm1Db250cm9sfTtcbiAgZm9ybU1vZGVsOiBhbnksXG4gIC8vIFN1YnNjcmlwdGlvbnMgdG8gdmFsdWUgY2hhbmdlcyBvZiB0aGUgZ2VuZXJhdGVkIGZvcm0gY29udHJvbHNcbiAgLy8gWW91IHNob3VsZCBhbHdheXMgdW5zdWJzY3JpYmUgZnJvbSBhbGwgb2YgdGhlbSB3aGVuIGNvbnN1bWluZ1xuICAvLyBjb21wb25lbnQgaXMgZGVzdHJveWVkXG4gIGNvbnRyb2xWYWx1ZVN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdO1xuICBzY3JpcHRpbmdTY29wZTogT2JqZWN0Rm9ybVNjcmlwdGluZ1Njb3BlO1xuICBzY3JpcHRNb2RlbDoge1tuYW1lOiBzdHJpbmddOiBhbnl9O1xuICBmb3JtOiBPYmplY3RGb3JtR3JvdXA7XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBPYmplY3RGb3JtSGVscGVyU2VydmljZSB7XG5cbiAgcHJpdmF0ZSBkYXRlUGlwZSA9IG5ldyBEYXRlUGlwZSgnZW4nKTtcbiAgcHJpdmF0ZSBURU1QX1NUT1JBR0VfRU5UUklFU19LRVkgPSAnZW8uY21wLm9iamVjdGZvcm0udG1wc3RvcmFnZS5lbnRyaWVzJztcbiAgcHJpdmF0ZSBfbGF0ZXN0Rm9ybUVsZW1lbnRDaGFuZ2VzOiBCZWhhdmlvclN1YmplY3Q8U2VhcmNoUGFyYW1zPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8U2VhcmNoUGFyYW1zPih7fSk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBsb2dnZXI6IExvZ2dlcixcbiAgICBwcml2YXRlIHJlZmVyZW5jZVNlcnZpY2U6IFJlZmVyZW5jZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzZWFyY2hTZXJ2aWNlOiBTZWFyY2hTZXJ2aWNlLFxuICAgIHByaXZhdGUgcGx1Z2luU2VydmljZTogUGx1Z2luc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBzeXN0ZW1TZXJ2aWNlOiBTeXN0ZW1TZXJ2aWNlKSB7XG4gICAgdGhpcy5fY2xlYXJUZW1wb3JhcnlTdG9yYWdlRW50cmllcygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHRlciBmb3IgcmV0cmlldmluZyB0aGUgbGF0ZXN0IGZvcm0gZWxlbWVudCBjaGFuZ2VzIGFzIGFuIG9ic2VydmFibGUuXG4gICAqXG4gICAqIFRoaXMgZ2V0dGVyIHJldHVybnMgYW4gb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHRoZSBsYXRlc3QgY2hhbmdlcyB0byB0aGUgZm9ybSBlbGVtZW50cy5cbiAgICogSXQgYWxsb3dzIHN1YnNjcmliZXJzIHRvIHJlYWN0IHRvIGNoYW5nZXMgaW4gdGhlIGZvcm0gZWxlbWVudHMgaW4gcmVhbC10aW1lLlxuICAgKlxuICAgKiBAcmV0dXJucyB7T2JzZXJ2YWJsZTxTZWFyY2hQYXJhbXM+fSAtIEFuIG9ic2VydmFibGUgZW1pdHRpbmcgdGhlIGxhdGVzdCBmb3JtIGVsZW1lbnQgY2hhbmdlcy5cbiAgICovXG4gIGdldCBsYXRlc3RGb3JtRWxlbWVudENoYW5nZXMkKCk6IE9ic2VydmFibGU8U2VhcmNoUGFyYW1zPiB7XG4gICAgcmV0dXJuIHRoaXMuX2xhdGVzdEZvcm1FbGVtZW50Q2hhbmdlcy5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZXMgYSByZWFjdGl2ZSBmb3JtIGJhc2VkIG9uIGEgZm9ybSBtb2RlbCB0aGF0IG1heSBhbHNvIGluY2x1ZGUgZm9ybSBzY3JpcHRzLlxuICAgKiBAcGFyYW0gZm9ybU9wdGlvbnMgYE9iamVjdEZvcm1PcHRpb25zYCBkZWZpbmluZyB0aGUgZm9ybVxuICAgKiBAcGFyYW0gZm9ybVNjcmlwdFNlcnZpY2UgSW5zdGFuY2Ugb2YgYSBgT2JqZWN0Rm9ybVNjcmlwdFNlcnZpY2VgLiBUaGlzIHNlcnZpY2UgaXMgc3VwcG9zZWQgdG8gYmVcbiAgICogc2NvcGVkIHRvIHRoZSBjb21wb25lbnQgcmVuZGVyaW5nIHRoZSBmb3JtIChwcm92aWRlcnMgYXJyYXkgaW4gY29tcG9uZW50IGRlY29yYXRvcikuXG4gICAqIEBwYXJhbSBpc0lubmVyVGFibGVGb3JtIHdoZXRoZXIgb3Igbm90IHRoZSBmb3JtIGlzIHBhcnQgb2YgYW5vdGhlciBmb3JtIChhcyBpcyB3aXRoIHRhYmxlIGVkaXQgZm9ybXMpXG4gICAqIEByZXR1cm5zIEFuIGBGb3JtR2VuUmVzdWx0YCBvYmplY3RcbiAgICovXG4gIGJ1aWxkUmVhY3RpdmVGb3JtKFxuICAgIGZvcm1PcHRpb25zOiBPYmplY3RGb3JtT3B0aW9ucyxcbiAgICBmb3JtU2NyaXB0U2VydmljZTogT2JqZWN0Rm9ybVNjcmlwdFNlcnZpY2UsXG4gICAgaXNJbm5lclRhYmxlRm9ybT86IGJvb2xlYW4pOiBGb3JtR2VuUmVzdWx0IHtcblxuICAgIGNvbnN0IF9zY29wZTogRm9ybUdlblNjb3BlID0ge1xuICAgICAgZ0NvdW50OiAwLFxuICAgICAgZm9ybU9wdGlvbnMsXG4gICAgICBpc0lubmVyVGFibGVGb3JtLFxuICAgICAgaW5pdGlhbFZhbGlkYXRvcnM6IHt9LFxuICAgICAgZm9ybUdlblJlc3VsdDoge1xuICAgICAgICBmb3JtQ29udHJvbHM6IHt9LFxuICAgICAgICBmb3JtTW9kZWw6IHt9LFxuICAgICAgICBjb250cm9sVmFsdWVTdWJzY3JpcHRpb25zOiBbXSxcbiAgICAgICAgc2NyaXB0aW5nU2NvcGU6IHVuZGVmaW5lZCxcbiAgICAgICAgc2NyaXB0TW9kZWw6IHt9LFxuICAgICAgICBmb3JtOiBudWxsXG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgZm9ybU1vZGVsID0gdGhpcy5fZGF0YVRvRm9ybShfc2NvcGUsIGZvcm1PcHRpb25zLmZvcm1Nb2RlbCwgZm9ybU9wdGlvbnMuZGF0YSk7XG4gICAgX3Njb3BlLmZvcm1HZW5SZXN1bHQuZm9ybU1vZGVsID0gZm9ybU1vZGVsO1xuICAgIGlmICghZm9ybU1vZGVsKSByZXR1cm47XG5cbiAgICAvLyBpZiBhIHNjcmlwdCBpcyBhdmFpbGFibGUsIHdlJ2xsIGluaXQgdGhlIGZvcm0gc2NyaXB0aW5nIGZvciB0aGVcbiAgICAvLyBjdXJyZW50IGZvcm1cbiAgICBsZXQgc2NyaXB0aW5nU2NvcGU6IE9iamVjdEZvcm1TY3JpcHRpbmdTY29wZTtcbiAgICBpZiAoX3Njb3BlLmlzSW5uZXJUYWJsZUZvcm0gfHwgKGZvcm1Nb2RlbC5zY3JpcHQgJiYgZm9ybU1vZGVsLnNjcmlwdC5sZW5ndGggPiAwKSkge1xuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoJ2FkZGluZyBmb3JtIHNjcmlwdGluZyBzY29wZScpO1xuICAgICAgc2NyaXB0aW5nU2NvcGUgPSBuZXcgT2JqZWN0Rm9ybVNjcmlwdGluZ1Njb3BlKFxuICAgICAgICBmb3JtTW9kZWwuc2l0dWF0aW9uLFxuICAgICAgICB0aGlzLl9nZXRTY3JpcHRpbmdNb2RlbENoYW5nZWQoX3Njb3BlKSxcbiAgICAgICAgdGhpcy5wbHVnaW5TZXJ2aWNlLmdldEFwaSgpLFxuICAgICAgICBfc2NvcGUuaXNJbm5lclRhYmxlRm9ybVxuICAgICAgKTtcbiAgICAgIHNjcmlwdGluZ1Njb3BlLm9iamVjdElkID0gZm9ybU9wdGlvbnMub2JqZWN0SWQ7XG4gICAgfVxuICAgIF9zY29wZS5mb3JtR2VuUmVzdWx0LnNjcmlwdGluZ1Njb3BlID0gc2NyaXB0aW5nU2NvcGU7XG5cblxuICAgIGxldCBmb3JtID0gbmV3IE9iamVjdEZvcm1Hcm91cCh7fSk7XG4gICAgaWYgKGZvcm1Nb2RlbC5lbGVtZW50c1swXSAmJiBmb3JtTW9kZWwuZWxlbWVudHNbMF0uZWxlbWVudHMpIHtcbiAgICAgIHRoaXMuX2FkZEZvcm1Db250cm9sKF9zY29wZSwgZm9ybSwgZm9ybU1vZGVsLmVsZW1lbnRzWzBdLCAnY29yZScpO1xuICAgIH1cbiAgICBpZiAoZm9ybU1vZGVsLmVsZW1lbnRzWzFdICYmIGZvcm1Nb2RlbC5lbGVtZW50c1sxXS5lbGVtZW50cykge1xuICAgICAgdGhpcy5fYWRkRm9ybUNvbnRyb2woX3Njb3BlLCBmb3JtLCBmb3JtTW9kZWwuZWxlbWVudHNbMV0sICdkYXRhJyk7XG4gICAgfVxuICAgIF9zY29wZS5mb3JtR2VuUmVzdWx0LmZvcm0gPSBmb3JtO1xuICAgIHRoaXMuX2luaXRWYWxpZGF0b3JzKF9zY29wZS5mb3JtR2VuUmVzdWx0LmZvcm0sIF9zY29wZSk7XG4gICAgdGhpcy5faW5pdFNjcmlwdGluZ1Njb3BlKF9zY29wZSwgZm9ybVNjcmlwdFNlcnZpY2UpO1xuICAgIHJldHVybiBfc2NvcGUuZm9ybUdlblJlc3VsdDtcbiAgfVxuXG5cblxuICAvKipcbiAgICogQ29udmVydHMgYSBmb3JtIGVsZW1lbnQgb2JqZWN0IHRvIGFuIE9iamVjdEZvcm1Db250cm9sV3JhcHBlciB3aGljaCB0aGVuIGNhbiBiZSB1c2VkIHRvXG4gICAqIHJlbmRlciBhIGZyb20gY29udHJvbC4gUmVzdWx0IGNhbiBiZSB1c2VkIGFzIGlucHV0IGZvciBGb3JtRWxlbWVudENvbXBvbmVudC5cbiAgICpcbiAgICogQHBhcmFtIGVsZW1lbnQgLSB0aGUgZWxlbWVudCBvYmplY3Qgb3IgYSBqc29uIHN0cmluZ1xuICAgKiBAcGFyYW0gc2l0dWF0aW9uIC0gb3B0aW9uYWwgcHJvcGVydHkgdG8gc2V0IHVwIGEgZm9ybSBzaXR1YXRpb24gZm9yIHRoZSBjb250cm9sIChkZWZhdWx0IGlzIEVESVQpXG4gICAqIEByZXR1cm4gdGhlIGNvbnZlcnRlZCBPYmplY3RGb3JtQ29udHJvbFdyYXBwZXIgb3IgbnVsbCBpbiBjYXNlIG9mIGFuIGVycm9yXG4gICAqL1xuICBlbGVtZW50VG9Gb3JtQ29udHJvbChlbGVtZW50OiBhbnksIHNpdHVhdGlvbj86IHN0cmluZyk6IE9iamVjdEZvcm1Db250cm9sV3JhcHBlciB7XG5cbiAgICBsZXQgZm9ybUVsZW1lbnQ7XG4gICAgaWYgKHR5cGVvZiBlbGVtZW50ID09PSAnc3RyaW5nJykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgZm9ybUVsZW1lbnQgPSBKU09OLnBhcnNlKGVsZW1lbnQpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcignVW5hYmxlIHRvIHBhcnNlIGZvcm0gZWxlbWVudCBmcm9tIGpzb24gJywgZm9ybUVsZW1lbnQpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBmb3JtRWxlbWVudCA9IGVsZW1lbnQ7XG4gICAgfVxuXG4gICAgaWYgKCFmb3JtRWxlbWVudCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLy8gQ3JlYXRlIHRoZSBPYmplY3RGb3JtQ29udHJvbFdyYXBwZXJcbiAgICBsZXQgd3JhcHBlciA9IG5ldyBPYmplY3RGb3JtQ29udHJvbFdyYXBwZXIoe30pO1xuICAgIGxldCBmb3JtU2l0dWF0aW9uID0gc2l0dWF0aW9uID8gc2l0dWF0aW9uIDogJ0VESVQnO1xuXG4gICAgd3JhcHBlci5fZW9Gb3JtQ29udHJvbFdyYXBwZXIgPSB7XG4gICAgICBjb250cm9sTmFtZTogZm9ybUVsZW1lbnQubmFtZSxcbiAgICAgIHNpdHVhdGlvbjogZm9ybVNpdHVhdGlvblxuICAgIH07XG5cbiAgICAvLyBmb3IgY29kZXN5c3RlbSBlbGVtZW50cyBhZGQgZW50cmllcyBpZiBub3QgeWV0IHByb3ZpZGVkXG4gICAgaWYgKGZvcm1FbGVtZW50LnR5cGUgPT09ICdDT0RFU1lTVEVNJyAmJiAoIWZvcm1FbGVtZW50LmNvZGVzeXN0ZW0gfHwgIWZvcm1FbGVtZW50LmNvZGVzeXN0ZW0uZW50cmllcykpIHtcbiAgICAgIGZvcm1FbGVtZW50LmNvZGVzeXN0ZW0gPSB0aGlzLnN5c3RlbVNlcnZpY2UuZ2V0Q29kZXN5c3RlbShmb3JtRWxlbWVudC5jb2Rlc3lzdGVtLmlkKTtcbiAgICB9XG4gICAgLy8gY3JlYXRlIHRoZSBhY3R1YWwgZm9ybSBjb250cm9sXG4gICAgbGV0IGNvbnRyb2xEaXNhYmxlZCA9ICEhZm9ybUVsZW1lbnQucmVhZG9ubHk7XG4gICAgbGV0IGZvcm1Db250cm9sID0gbmV3IE9iamVjdEZvcm1Db250cm9sKHtcbiAgICAgIHZhbHVlOiBmb3JtRWxlbWVudC52YWx1ZSxcbiAgICAgIGRpc2FibGVkOiBjb250cm9sRGlzYWJsZWRcbiAgICB9LCBGb3JtVmFsaWRhdGlvbi5nZXRWYWxpZGF0b3JzKGZvcm1FbGVtZW50LCBmb3JtU2l0dWF0aW9uKSk7XG5cbiAgICAvLyBGb3JtIGVsZW1lbnRzIGluIFNFQVJDSCBzaXR1YXRpb24gbWF5IGFycml2ZSB3aXRoIGEgdmFsdWUgc2V0IHRvIE5VTEwgKGV4cGxpY2l0IHNlYXJjaCBmb3JcbiAgICAvLyBmaWVsZHMgdGhhdCBhcmUgTk9UIHNldCkuIEluIHRoYXQgY2FzZSB3ZSBuZWVkIHRvIHByZXBhcmUgdGhlIGZvcm0gY29udHJvbFxuICAgIGlmIChmb3JtU2l0dWF0aW9uID09PSAnU0VBUkNIJyAmJiBmb3JtRWxlbWVudC52YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgZm9ybUVsZW1lbnQuaXNOb3RTZXRWYWx1ZSA9IHRydWU7XG4gICAgfVxuXG4gICAgZm9ybUNvbnRyb2wuX2VvRm9ybUVsZW1lbnQgPSBmb3JtRWxlbWVudDtcbiAgICB3cmFwcGVyLmFkZENvbnRyb2woZm9ybUVsZW1lbnQubmFtZSwgZm9ybUNvbnRyb2wpO1xuXG4gICAgcmV0dXJuIHdyYXBwZXI7XG4gIH1cblxuICAvKipcbiAgICogRXh0cmFjdCBkYXRhIGZyb20gYW4gb2JqZWN0IGZvcm0gYmFzZWQgb24gc2l0dWF0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gZm9ybSAtIGZvcm0gdG8gZXh0cmFjdCBkYXRhIGZyb21cbiAgICogQHBhcmFtIHNpdHVhdGlvbiAtIGZvcm0gc2l0dWF0aW9uXG4gICAqIEBwYXJhbSBbaW5pdGlhbERhdGFdIC0gb3B0aW9uYWwgZm9ybSBkYXRhIHRvIG1hdGNoIHRoZSBjdXJyZW50IHZhbHVlcyBhZ2FpbnN0XG4gICAqIFRoaXMgaXMgcmVxdWlyZWQgZm9yIGVkaXRpZyBpbmRleGRhdGEgKEVESVQgc2l0dWF0aW9uKSwgYmVjYXVzZSB3ZSBoYXZlIHRvIGNvbXBhcmUgbmV3IHZhbHVlc1xuICAgKiBhZ2FpbnN0IHRoZSBpbml0aWFsIHZhbHVlcy4gSWYgYSBwcm9wZXJ0eSB0aGF0IGlzIGNvbnRhaW5lZCBpbiB0aGUgZm9ybXMgaW5pdGlhbCBkYXRhIGlzIHJlbW92ZWRcbiAgICogKGUuZy4gc2V0IHRvIG51bGwpIHRoZW4gd2UgaGF2ZSB0byBzZXQgdGhpcyBudWxsIHZhbHVlLCBiZWNhdXNlIG90aGVyd2lzZSB0aGUgc2VydmVyIHdvdWxkXG4gICAqIGlnbm9yZSB0aGUgY2hhbmdlcy5cbiAgICogQHBhcmFtIGlzVGFibGVSb3dFZGl0Rm9ybSBGbGFnIGluZGljYXRpbmcgdGhhdCB0aGUgcHJvdmlkZWQgZm9ybSBpcyBhbiBpbmxpbmUgZm9ybSB1c2VkIGJ5XG4gICAqIGEgZm9ybXMgdGFibGUgZWxlbWVudCBmb3IgZWRpdGluZyByb3dzLiBUaG9zZSBuZWVkIGEgc3BlY2lhbCBoYW5kbGluZy5cbiAgICogQHJldHVybiBleHRyYWN0ZWQgZGF0YSBhcyBvYmplY3RcbiAgICovXG4gIGV4dHJhY3RGb3JtRGF0YShmb3JtOiBPYmplY3RGb3JtR3JvdXAsIHNpdHVhdGlvbjogc3RyaW5nLCBpbml0aWFsRGF0YT86IGFueSwgaXNUYWJsZVJvd0VkaXRGb3JtPzogYm9vbGVhbikge1xuICAgIGxldCBleHRyYWN0ZWREYXRhID0ge307XG4gICAgdGhpcy5nZXRFbGVtZW50VmFsdWVzKGV4dHJhY3RlZERhdGEsIGZvcm0sIHNpdHVhdGlvbiB8fCAnRURJVCcsIGluaXRpYWxEYXRhLCBpc1RhYmxlUm93RWRpdEZvcm0pO1xuICAgIHJldHVybiBleHRyYWN0ZWREYXRhO1xuICB9XG5cbiAgLyoqXG4gKiBBZGQgYSByZWZlcmVuY2UgdG8gYSB0ZW1wb3JhcnkgbG9jYWxzdG9yYWdlIGVudHJ5IHRoYXQgc2hvdWxkIGJlIGNsZWFyZWQgd2hlbiBhXG4gKiBuZXcgYnJvd3NlciBzZXNzaW9uIHN0YXJ0cy4gSW4gY29udGV4dCBvZiBmb3JtcyB0aGlzIHdpbGwgYmUgdXNlZCB0byBjbGVhbnVwIHRoZVxuICogbGF5b3V0IHN0YXRlIG9mIGZvcm1zIChzZWxlY3RlZCB0YWJzIGV0Yy4pIHRoYXQgYXJlIHN0b3JlZCBsb2NhbGx5IGJ1dCBzaG91bGQgb25seVxuICogYmUgcGVzaXN0ZWQgZm9yIG9uZSBicm93c2VyIHNlc3Npb24uXG4gKiBAcGFyYW0gc3RvcmFnZUtleSBLZXkgb2YgdGhlIGxvY2Fsc3RvcmFnZSBpdGVtXG4gKi9cbiAgYWRkVGVtcG9yYXJ5U3RvcmFnZUVudHJ5KHN0b3JhZ2VLZXk6IHN0cmluZykge1xuICAgIC8vIGVudHJpZXMgd2lsbCB0aGVtc2VsdmVzIGJlIHN0b3JlZCBpbiBsb2NhbHN0b3JhZ2Ugc28gd2UgY2FuIGNoZWNrIGZvciBlbnRyaWVzXG4gICAgLy8gdG8gYmUgcmVtb3ZlZCBvbmNlIHRoZSBhcHBsaWNhdGlvbiBzdGFydHNcbiAgICBjb25zdCBjdXJyZW50ID0gdGhpcy5fZ2V0VGVtcG9yYXJ5U3RvcmFnZUVudHJpZXMoKTtcbiAgICBpZiAoIWN1cnJlbnQuaW5jbHVkZXMoc3RvcmFnZUtleSkpXG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLlRFTVBfU1RPUkFHRV9FTlRSSUVTX0tFWSwgSlNPTi5zdHJpbmdpZnkoWy4uLmN1cnJlbnQsIHN0b3JhZ2VLZXldKSlcbiAgfVxuXG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGhlIGxhdGVzdCBmb3JtIGVsZW1lbnQgY2hhbmdlcyB3aXRoIHRoZSBwcm92aWRlZCB2YWx1ZS5cbiAgICpcbiAgICogVGhpcyBtZXRob2QgbWVyZ2VzIHRoZSBjdXJyZW50IGZvcm0gZWxlbWVudCBjaGFuZ2VzIHdpdGggdGhlIG5ldyB2YWx1ZVxuICAgKiBhbmQgZW1pdHMgdGhlIHVwZGF0ZWQgY2hhbmdlcyB0byB0aGUgYF9sYXRlc3RGb3JtRWxlbWVudENoYW5nZXNgIHN1YmplY3QuXG4gICAqXG4gICAqIEBwYXJhbSB7U2VhcmNoUGFyYW1zfSB2YWx1ZSAtIFRoZSBuZXcgZm9ybSBlbGVtZW50IGNoYW5nZXMgdG8gYmUgbWVyZ2VkLlxuICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICovXG4gIHVwZGF0ZUZvcm1FbGVtZW50Q2hhbmdlcyh2YWx1ZTogU2VhcmNoUGFyYW1zKTogdm9pZCB7XG4gICAgY29uc3QgY3VycmVudENoYW5nZXMgPSB0aGlzLl9sYXRlc3RGb3JtRWxlbWVudENoYW5nZXMudmFsdWU7XG4gICAgY29uc3QgdXBkYXRlZENoYW5nZXMgPSB7Li4uY3VycmVudENoYW5nZXMsIC4uLnZhbHVlfTtcbiAgICB0aGlzLl9sYXRlc3RGb3JtRWxlbWVudENoYW5nZXMubmV4dCh1cGRhdGVkQ2hhbmdlcyk7XG4gIH1cblxuICAvLyBSZWN1cnNpdmUgbWV0aG9kIHRvIGdldCB0aGUgdmFsdWVzIGZyb20gZWFjaCBmb3JtIGNvbnRyb2wuXG4gIHByaXZhdGUgZ2V0RWxlbWVudFZhbHVlcyhkYXRhOiBhbnksIGZvcm1Db250cm9sOiBPYmplY3RGb3JtTW9kZWwsIHNpdHVhdGlvbjogc3RyaW5nLCBpbml0aWFsRGF0YT86IGFueSwgaXNUYWJsZVJvd0VkaXRGb3JtPzogYm9vbGVhbikge1xuXG4gICAgaWYgKCFmb3JtQ29udHJvbCB8fCAhZm9ybUNvbnRyb2wuY29udHJvbHMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoZm9ybUNvbnRyb2wgaW5zdGFuY2VvZiBPYmplY3RGb3JtQ29udHJvbFdyYXBwZXIpIHtcblxuICAgICAgY29uc3QgZmM6IGFueSA9IGZvcm1Db250cm9sLmNvbnRyb2xzW2Zvcm1Db250cm9sLl9lb0Zvcm1Db250cm9sV3JhcHBlci5jb250cm9sTmFtZV07XG5cbiAgICAgIGlmIChmYy5fZW9Gb3JtRWxlbWVudC5pc05vdFNldFZhbHVlID09PSB0cnVlKSB7XG4gICAgICAgIC8vIGZvcm0gZWxlbWVudHMgbWF5IGV4cGxpY2l0bHkgc2V0IHRvIGhhdmUgTlVMTCB2YWx1ZSAoZS5nLiBmcm9tIFNlYXJjaCBmb3JtIGlmIHZhbHVlcyBhcmUgcmVxdWVzdGVkIHRoYXQgaGF2ZSBubyB2YWx1ZXMpXG4gICAgICAgIGlmIChpc1RhYmxlUm93RWRpdEZvcm0pIHtcbiAgICAgICAgICB0aGlzLnNldERhdGFWYWx1ZShmYy5fZW9Gb3JtRWxlbWVudC5uYW1lLCBudWxsLCBkYXRhLCBmYy5fZW9Gb3JtRWxlbWVudCwgaXNUYWJsZVJvd0VkaXRGb3JtKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnNldERhdGFWYWx1ZShmYy5fZW9Gb3JtRWxlbWVudC5xbmFtZSwgbnVsbCwgZGF0YSwgZmMuX2VvRm9ybUVsZW1lbnQsIGlzVGFibGVSb3dFZGl0Rm9ybSk7XG4gICAgICAgIH1cblxuICAgICAgfSBlbHNlIGlmIChmYy52YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGxldCB2YWwgPSBmYy52YWx1ZTtcblxuICAgICAgICAvLyBtYWtlIHN1cmUgdGhhdCBtZXRhIGRhdGEgYXJlIGFsc28gdXAgdG8gZGF0ZVxuICAgICAgICBpZiAoZmMuX2VvRm9ybUVsZW1lbnQudHlwZSA9PT0gJ0NPREVTWVNURU0nKSB7XG4gICAgICAgICAgY29uc3QgY3MgPSB0aGlzLnN5c3RlbVNlcnZpY2UuZ2V0Q29kZXN5c3RlbShmYy5fZW9Gb3JtRWxlbWVudC5jb2Rlc3lzdGVtLmlkKTtcbiAgICAgICAgICBmYy5fZW9Gb3JtRWxlbWVudC5kYXRhTWV0YSA9IGNzLmVudHJpZXMuZmluZChlID0+IGUuZGF0YSA9PT0gdmFsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHN3aXRjaCAoc2l0dWF0aW9uKSB7XG4gICAgICAgICAgY2FzZSAnU0VBUkNIJzoge1xuICAgICAgICAgICAgaWYgKHZhbCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAvLyByb3cgZWRpdGluZyBmb3JtcyB1c2UgdGhlIG5hbWUgaW5zdGVhZCBvZiB0aGUgcW5hbWUgYmVjYXVzZSBvdGhlcndpc2UgdGhlXG4gICAgICAgICAgICAgIC8vIHRhYmxlcyBncmlkIGlzbid0IGFibGUgdG8gbWFwIHRoZSBmaWVsZHNcbiAgICAgICAgICAgICAgaWYgKCFpc1RhYmxlUm93RWRpdEZvcm0pIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldERhdGFWYWx1ZShmYy5fZW9Gb3JtRWxlbWVudC5xbmFtZSwgdmFsLCBkYXRhLCBmYy5fZW9Gb3JtRWxlbWVudCwgaXNUYWJsZVJvd0VkaXRGb3JtKVxuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0RGF0YVZhbHVlKGZjLl9lb0Zvcm1FbGVtZW50Lm5hbWUsIHZhbCwgZGF0YSwgZmMuX2VvRm9ybUVsZW1lbnQsIGlzVGFibGVSb3dFZGl0Rm9ybSlcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgJ0NSRUFURSc6IHtcbiAgICAgICAgICAgIC8vIGFsc28gYWRkIE5VTEwgdmFsdWVzIChvdmVycmlkZSBleGlzdGluZyBkZWZhdWx0dmFsdWVzKVxuICAgICAgICAgICAgdGhpcy5zZXREYXRhVmFsdWUoZmMuX2VvRm9ybUVsZW1lbnQubmFtZSwgdmFsLCBkYXRhLCBmYy5fZW9Gb3JtRWxlbWVudCwgaXNUYWJsZVJvd0VkaXRGb3JtKVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgJ0VESVQnOiB7XG4gICAgICAgICAgICAvLyBpbiBlZGl0IHNpdHVhdGlvbiB3ZSBoYXZlIHRvIGNvbXBhcmUgbmV3IHZhbHVlcyBhZ2FpbnN0IHRoZSBpbml0aWFsIHZhbHVlc1xuICAgICAgICAgICAgLy8gSWYgYSBwcm9wZXJ0eSB0aGF0IGlzIGNvbnRhaW5lZCBpbiB0aGUgZm9ybXMgaW5pdGlhbCBkYXRhIGlzIHJlbW92ZWQgKGUuZy4gc2V0IHRvIG51bGwpXG4gICAgICAgICAgICAvLyB0aGVuIHdlIGhhdmUgdG8gc2V0IHRoaXMgbnVsbCB2YWx1ZSwgYmVjYXVzZSBvdGhlcndpc2UgdGhlIHNlcnZlciB3aWxsIGlnbm9yZSB0aGUgY2hhbmdlc1xuICAgICAgICAgICAgaWYgKHZhbCAhPT0gbnVsbCB8fCAoaW5pdGlhbERhdGEgJiYgaW5pdGlhbERhdGFbZmMuX2VvRm9ybUVsZW1lbnQubmFtZV0gIT09IHVuZGVmaW5lZCkpIHtcbiAgICAgICAgICAgICAgLy8gZGF0YVtmYy5fZW9Gb3JtRWxlbWVudC5uYW1lXSA9IHZhbDtcbiAgICAgICAgICAgICAgdGhpcy5zZXREYXRhVmFsdWUoZmMuX2VvRm9ybUVsZW1lbnQubmFtZSwgdmFsLCBkYXRhLCBmYy5fZW9Gb3JtRWxlbWVudCwgaXNUYWJsZVJvd0VkaXRGb3JtKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIE9iamVjdC5rZXlzKGZvcm1Db250cm9sLmNvbnRyb2xzKVxuICAgICAgICAuZm9yRWFjaChjb250cm9sS2V5ID0+IHtcbiAgICAgICAgICBsZXQgZm9ybUNvbnRyb2xLZXllZCA9IDxPYmplY3RGb3JtR3JvdXA+Zm9ybUNvbnRyb2wuY29udHJvbHNbY29udHJvbEtleV07XG4gICAgICAgICAgdGhpcy5nZXRFbGVtZW50VmFsdWVzKGRhdGEsIGZvcm1Db250cm9sS2V5ZWQsIHNpdHVhdGlvbiwgaW5pdGlhbERhdGEsIGlzVGFibGVSb3dFZGl0Rm9ybSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0RGF0YVZhbHVlKGtleSwgdmFsdWUsIGRhdGEsIGZvcm1FbGVtZW50LCBpc1RhYmxlUm93RWRpdEZvcm0pIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUubGVuZ3RoKSB7XG4gICAgICBmb3IgKGNvbnN0IFtrLCB2XSBvZiBPYmplY3QuZW50cmllcyh2YWx1ZVswXSkpIHtcbiAgICAgICAgaWYgKHYgaW5zdGFuY2VvZiBSYW5nZVZhbHVlICYmIHYub3BlcmF0b3IgPT09ICdtcicpIHtcbiAgICAgICAgICBkYXRhW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgfSBlbHNlIGlmICh2KSB7XG4gICAgICAgICAgZGF0YVtrZXldID0gdGhpcy5mb3JtYXRWYWx1ZSh2YWx1ZSwgZm9ybUVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGRhdGFba2V5XSA9ICh2YWx1ZSBpbnN0YW5jZW9mIFJhbmdlVmFsdWUgJiYgdmFsdWUub3BlcmF0b3IgPT09ICdtcicpID8gdmFsdWUgOiB0aGlzLmZvcm1hdFZhbHVlKHZhbHVlLCBmb3JtRWxlbWVudCk7XG4gICAgfVxuICAgIGlmIChpc1RhYmxlUm93RWRpdEZvcm0gJiYgZm9ybUVsZW1lbnQuZGF0YU1ldGEpIHtcbiAgICAgIC8vIGlubmVyIHRhYmxlcyBuZWVkIHRvIHNldCB1cCB0aGUgbWV0YSBkYXRhIGFzIHdlbGxcbiAgICAgIGRhdGFba2V5ICsgJ19tZXRhJ10gPSBmb3JtRWxlbWVudC5kYXRhTWV0YTtcbiAgICB9XG4gIH1cblxuICBmb3JtYXRWYWx1ZSh2YWx1ZSwgZm9ybUVsZW1lbnQpIHtcbiAgICBpZiAoZm9ybUVsZW1lbnQudHlwZSA9PT0gJ0RBVEVUSU1FJyAmJiAhZm9ybUVsZW1lbnQud2l0aHRpbWUpIHtcbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnIHx8ICh2YWx1ZSBpbnN0YW5jZW9mIERhdGUgJiYgIWlzTmFOKHZhbHVlLmdldFRpbWUoKSkpKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybSh2YWx1ZSwgJ3l5eXktTU0tZGQnKTtcbiAgICAgIH0gZWxzZSBpZiAodmFsdWUgaW5zdGFuY2VvZiBSYW5nZVZhbHVlKSB7XG4gICAgICAgIHJldHVybiBuZXcgUmFuZ2VWYWx1ZShcbiAgICAgICAgICB2YWx1ZS5vcGVyYXRvcixcbiAgICAgICAgICB2YWx1ZS5maXJzdFZhbHVlICYmIHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKHZhbHVlLmZpcnN0VmFsdWUsICd5eXl5LU1NLWRkJyksXG4gICAgICAgICAgdmFsdWUuc2Vjb25kVmFsdWUgJiYgdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0odmFsdWUuc2Vjb25kVmFsdWUsICd5eXl5LU1NLWRkJylcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZm9ybUVsZW1lbnQudHlwZSA9PT0gJ1RBQkxFJykge1xuICAgICAgKGZvcm1FbGVtZW50LmVsZW1lbnRzIHx8IFtdKS5mb3JFYWNoKGVsID0+IHtcbiAgICAgICAgKHZhbHVlIHx8IFtdKS5mb3JFYWNoKHYgPT4gdltlbC5uYW1lXSA9IHRoaXMuZm9ybWF0VmFsdWUodltlbC5uYW1lXSwgZWwpKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuXG4gIC8vIEZ1bmN0aW9ucyBpbnZvbHZlZCBpbiBidWlsZGluZyBhbiBvYmplY3QgZm9ybVxuXG4gIC8qKlxuICAgKiBSZWN1cnNpdmUgbWV0aG9kIGFkZGluZyBhIG5ldyBVbnR5cGVkRm9ybUNvbnRyb2wgKGdyb3VwIG9yIGNvbnRyb2wpIHRvIGEgcGFyZW50IGZvcm0gZ3JvdXBcbiAgICpcbiAgICogQHBhcmFtIHBhcmVudEdyb3VwIC0gdGhlIHBhcmVudCBncm91cCB0byBhZGQgdGhlIGNvbnRyb2wgdG9cbiAgICogQHBhcmFtIGZvcm1FbGVtZW50IC0gdGhlIGVuYWlvIGZvcm0gbW9kZWwgZWxlbWVudCB0byBjcmVhdGUgdGhlIGNoaWxkIGNvbnRyb2wgZnJvbVxuICAgKiBAcGFyYW0gW3VzZU5hbWVdIC0gdXNlIHRoaXMgbmFtZSBpbnN0ZWFkIG9mIHRoZSBvbmUgZnJvbSB0aGUgbW9kZWxcbiAgICovXG4gIHByaXZhdGUgX2FkZEZvcm1Db250cm9sKHNjb3BlOiBGb3JtR2VuU2NvcGUsIHBhcmVudEdyb3VwOiBPYmplY3RGb3JtR3JvdXAsIGZvcm1FbGVtZW50OiBhbnksIHVzZU5hbWU/OiBzdHJpbmcpIHtcblxuICAgIGxldCBjdHJsO1xuICAgIGxldCBuYW1lO1xuXG4gICAgLy8gYWRkIGEgZm9ybSBncm91cFxuICAgIGlmIChmb3JtRWxlbWVudC50eXBlID09PSAnbzJtR3JvdXAnIHx8IGZvcm1FbGVtZW50LnR5cGUgPT09ICdvMm1Hcm91cFN0YWNrJykge1xuXG4gICAgICAvLyBkbyBub3QgYWRkIGdyb3VwcyB0aGF0IGFyZSBlbXB0eVxuICAgICAgaWYgKCFmb3JtRWxlbWVudC5lbGVtZW50cyB8fCBmb3JtRWxlbWVudC5lbGVtZW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoJ0ZvdW5kIGVtcHR5IGZvcm0gZ3JvdXAnLCBmb3JtRWxlbWVudCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY3RybCA9IG5ldyBPYmplY3RGb3JtR3JvdXAoe30pO1xuICAgICAgY3RybC5fZW9Gb3JtR3JvdXAgPSB7XG4gICAgICAgIGxhYmVsOiBmb3JtRWxlbWVudC5sYWJlbCxcbiAgICAgICAgbGF5b3V0OiBmb3JtRWxlbWVudC5sYXlvdXQsXG4gICAgICAgIHR5cGU6IGZvcm1FbGVtZW50LnR5cGVcbiAgICAgIH07XG5cbiAgICAgIGlmICh1c2VOYW1lID09PSAnY29yZScgfHwgdXNlTmFtZSA9PT0gJ2RhdGEnKSB7XG4gICAgICAgIGN0cmwuX2VvRm9ybUdyb3VwLmxhYmVsID0gdXNlTmFtZTtcbiAgICAgIH1cblxuICAgICAgZm9yIChsZXQgZSBvZiBmb3JtRWxlbWVudC5lbGVtZW50cykge1xuICAgICAgICB0aGlzLl9hZGRGb3JtQ29udHJvbChzY29wZSwgY3RybCwgZSk7XG4gICAgICB9XG4gICAgICBuYW1lID0gdXNlTmFtZSB8fCAnZmcnICsgc2NvcGUuZ0NvdW50Kys7XG4gICAgICBjdHJsLl9lb0Zvcm1Hcm91cC5pZCA9IGAke3Njb3BlLmZvcm1PcHRpb25zLmxheW91dFNldHRpbmdzSUQgfHwgc2NvcGUuZm9ybU9wdGlvbnMuZm9ybU1vZGVsLm5hbWV9LiR7bmFtZX1gO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBhZGQgZm9ybSBjb250cm9sXG4gICAgICAvLyBUbyBiZSBhYmxlIHRvIGludGVncmF0ZSByZWN1cnNpdmUgZm9ybSBjb250cm9scyBpbnRvIHRoZSBtYWluIGZvcm0sXG4gICAgICAvLyB3ZSBoYXZlIHRvIHdyYXAgdGhlbSBpbiBhIGZvcm0gZ3JvdXBcbiAgICAgIGN0cmwgPSBuZXcgT2JqZWN0Rm9ybUNvbnRyb2xXcmFwcGVyKHt9KTtcbiAgICAgIGN0cmwuX2VvRm9ybUNvbnRyb2xXcmFwcGVyID0ge1xuICAgICAgICAvLyB0aGUgbmFtZSBvZiB0aGUgd3JhcHBlZCBVbnR5cGVkRm9ybUNvbnRyb2xcbiAgICAgICAgY29udHJvbE5hbWU6IGZvcm1FbGVtZW50Lm5hbWUsXG4gICAgICAgIHNpdHVhdGlvbjogc2NvcGUuZm9ybU9wdGlvbnMuZm9ybU1vZGVsLnNpdHVhdGlvblxuICAgICAgfTtcbiAgICAgIGlmIChzY29wZS5mb3JtT3B0aW9ucy5mb3JtTW9kZWwuc2l0dWF0aW9uID09PSAnU0VBUkNIJyAmJiBmb3JtRWxlbWVudC52YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICBmb3JtRWxlbWVudC5pc05vdFNldFZhbHVlID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIC8vIGRvIG5vdCBzZXQgYSByZWZlcmVuY2UgYXMgdGhlIGZvcm0gY29udHJvbHMgdmFsdWVcbiAgICAgIC8vIG90aGVyd2lzZSB3ZSBjb3VsZCBub3QgcmVzZXQgdGhlIGZvcm1cbiAgICAgIGxldCB2YWx1ZTogYW55O1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZm9ybUVsZW1lbnQudmFsdWUpKSB7XG4gICAgICAgIC8vIGNvcHkgYnkgdmFsdWUgZm9yIGFycmF5cyBvZiBvYmplY3RzIChlLmcuIHRhYmxlIGRhdGEpXG4gICAgICAgIHZhbHVlID0gW107XG4gICAgICAgIGZvcm1FbGVtZW50LnZhbHVlLmZvckVhY2goKG8pID0+IHtcbiAgICAgICAgICB2YWx1ZS5wdXNoKFV0aWxzLmZvcm1EYXRhUGFyc2UoVXRpbHMuZm9ybURhdGFTdHJpbmdpZnkobykpKTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YWx1ZSA9IGZvcm1FbGVtZW50LnZhbHVlO1xuICAgICAgfVxuXG4gICAgICAvLyBmb3IgY29kZXN5c3RlbSBlbGVtZW50cyBhZGQgZW50cmllcyBpZiBub3QgeWV0IHByb3ZpZGVkXG4gICAgICBpZiAoZm9ybUVsZW1lbnQudHlwZSA9PT0gJ0NPREVTWVNURU0nICYmICFmb3JtRWxlbWVudC5jb2Rlc3lzdGVtLmVudHJpZXMpIHtcbiAgICAgICAgZm9ybUVsZW1lbnQuY29kZXN5c3RlbSA9IHRoaXMuc3lzdGVtU2VydmljZS5nZXRDb2Rlc3lzdGVtKGZvcm1FbGVtZW50LmNvZGVzeXN0ZW0uaWQpO1xuICAgICAgfVxuXG4gICAgICAvLyBjcmVhdGUgdGhlIGFjdHVhbCBmb3JtIGNvbnRyb2xcbiAgICAgIGxldCBjb250cm9sRGlzYWJsZWQgPSBzY29wZS5mb3JtT3B0aW9ucy5kaXNhYmxlZCB8fCAhIWZvcm1FbGVtZW50LnJlYWRvbmx5O1xuICAgICAgbGV0IGZvcm1Db250cm9sID0gbmV3IE9iamVjdEZvcm1Db250cm9sKHtcbiAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICBkaXNhYmxlZDogY29udHJvbERpc2FibGVkXG4gICAgICB9KTtcblxuICAgICAgZm9ybUVsZW1lbnQucmVhZG9ubHkgPSBjb250cm9sRGlzYWJsZWQ7XG5cbiAgICAgIGZvcm1Db250cm9sLl9lb0Zvcm1FbGVtZW50ID0gZm9ybUVsZW1lbnQ7XG4gICAgICBzY29wZS5mb3JtR2VuUmVzdWx0LmZvcm1Db250cm9sc1tmb3JtRWxlbWVudC5uYW1lXSA9IGZvcm1Db250cm9sO1xuXG4gICAgICBpZiAoZm9ybUVsZW1lbnQudHlwZSA9PT0gJ0NPREVTWVNURU0nIHx8IChmb3JtRWxlbWVudC50eXBlID09PSAnU1RSSU5HJyAmJiBmb3JtRWxlbWVudC5jbGFzc2lmaWNhdGlvbiA9PT0gJ3NlbGVjdG9yJykpIHtcbiAgICAgICAgZm9ybUNvbnRyb2wuX2VvRm9ybUVsZW1lbnQuYXBwbHlGaWx0ZXIgPSAoZnVuYzogRnVuY3Rpb24pID0+IHtcbiAgICAgICAgICBmb3JtQ29udHJvbC5fZW9Gb3JtRWxlbWVudC5maWx0ZXJGdW5jdGlvbiA9IGZ1bmM7XG4gICAgICAgIH07XG4gICAgICAgIGZvcm1Db250cm9sLl9lb0Zvcm1FbGVtZW50LmFwcGx5RGlzYWJsaW5nRmlsdGVyID0gKGZ1bmM6IEZ1bmN0aW9uKSA9PiB7XG4gICAgICAgICAgZm9ybUNvbnRyb2wuX2VvRm9ybUVsZW1lbnQuZGlzYWJsaW5nRmlsdGVyRnVuY3Rpb24gPSBmdW5jO1xuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICBpZiAoZm9ybUVsZW1lbnQudHlwZSA9PT0gJ1NUUklORycgJiYgZm9ybUVsZW1lbnQuY2xhc3NpZmljYXRpb24gPT09ICdzZWxlY3RvcicpIHtcbiAgICAgICAgZm9ybUNvbnRyb2wuX2VvRm9ybUVsZW1lbnQuc2V0TGlzdCA9IChsaXN0T2JqZWN0OiBhbnkpID0+IHtcbiAgICAgICAgICBmb3JtQ29udHJvbC5fZW9Gb3JtRWxlbWVudC5saXN0ID0gbGlzdE9iamVjdDtcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgaWYgKGZvcm1FbGVtZW50LnR5cGUgPT09ICdPUkdBTklaQVRJT04nKSB7XG4gICAgICAgIGZvcm1Db250cm9sLl9lb0Zvcm1FbGVtZW50LnNldEZpbHRlciA9IChmaWx0ZXJPYmplY3Q6IGFueSkgPT4ge1xuICAgICAgICAgIGZvcm1Db250cm9sLl9lb0Zvcm1FbGVtZW50LmZpbHRlciA9IGZpbHRlck9iamVjdDtcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgaWYgKGZvcm1FbGVtZW50LnR5cGUgPT09ICdUQUJMRScpIHtcbiAgICAgICAgZm9ybUNvbnRyb2wuX2VvRm9ybUVsZW1lbnQub2JqZWN0ID0gc2NvcGUuZm9ybU9wdGlvbnMub2JqZWN0O1xuICAgICAgfVxuXG4gICAgICBpZiAoZm9ybUVsZW1lbnQudHlwZSA9PT0gJ1JFRkVSRU5DRScpIHtcbiAgICAgICAgZm9ybUNvbnRyb2wuX2VvRm9ybUVsZW1lbnQuc2V0UXVlcnlGaWx0ZXJzID0gKHF1ZXJ5RmlsdGVyc09iamVjdDoge1tmaWVsZFFuYW1lOiBzdHJpbmddOiB7bzogc3RyaW5nLCB2MTogYW55LCB2MjogYW55fX0sIG9iamVjdFR5cGVzPzogc3RyaW5nW10pID0+IHtcbiAgICAgICAgICBmb3JtQ29udHJvbC5fZW9Gb3JtRWxlbWVudC5xdWVyeUZpbHRlcnMgPSBxdWVyeUZpbHRlcnNPYmplY3Q7XG4gICAgICAgICAgZm9ybUNvbnRyb2wuX2VvRm9ybUVsZW1lbnQub2JqZWN0VHlwZXNGaWx0ZXIgPSBvYmplY3RUeXBlcztcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgaWYgKHNjb3BlLmZvcm1PcHRpb25zLmZvcm1Nb2RlbC5zaXR1YXRpb24gPT09ICdTRUFSQ0gnKSB7XG4gICAgICAgIC8vIGluIHNlYXJjaCBzaXR1YXRpb24gZXZlbiByZWFkb25seSBmaWVsZHMgc2hvdWxkIGJlIGVkaXRhYmxlIC4uLlxuICAgICAgICBmb3JtQ29udHJvbC5fZW9Gb3JtRWxlbWVudC5yZWFkb25seSA9IGZhbHNlO1xuICAgICAgICAvLyAuLi4gYW5kIHJlcXVpcmVkIG1ha2VzIG5vIHNlbnNlIGhlcmVcbiAgICAgICAgZm9ybUNvbnRyb2wuX2VvRm9ybUVsZW1lbnQucmVxdWlyZWQgPSBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgLy8gcmVtb3ZlIGVtcHR5IGRlc2NyaXB0aW9uc1xuICAgICAgbGV0IGRlc2MgPSBmb3JtQ29udHJvbC5fZW9Gb3JtRWxlbWVudC5kZXNjcmlwdGlvbjtcbiAgICAgIGlmIChkZXNjICYmIGRlc2MudHJpbSgpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBmb3JtQ29udHJvbC5fZW9Gb3JtRWxlbWVudC5kZXNjcmlwdGlvbiA9IG51bGw7XG4gICAgICB9XG5cbiAgICAgIC8vIGFkZCB0aGUgZm9ybSBlbGVtZW50IHRvIHRoZSBzY3JpcHQgbW9kZWwgdGhhdCB3aWxsIGJlIGluamVjdGVkIGludG9cbiAgICAgIC8vIHRoZSBmb3JtcyBzY3JpcHRpbmcgc2NvcGUgbGF0ZXIgb25cbiAgICAgIHNjb3BlLmZvcm1HZW5SZXN1bHQuc2NyaXB0TW9kZWxbZm9ybUVsZW1lbnQubmFtZV0gPSBmb3JtQ29udHJvbC5fZW9Gb3JtRWxlbWVudDtcblxuICAgICAgLy8gYXBwbHkgY2hhbmdlIGxpc3RlbmVyIHRvIHRoZSBmb3JtIGNvbnRyb2wsIHRoYXQgd2lsbCB0cmlnZ2VyXG4gICAgICAvLyB0aGUgZm9ybSBlbGVtZW50cyBvbkNoYW5nZSBsaXN0ZW5lclxuICAgICAgbGV0IGNvbnRyb2xXYXRjaCA9IGN0cmwudmFsdWVDaGFuZ2VzLnBpcGUoZGVib3VuY2VUaW1lKGZvcm1FbGVtZW50LnR5cGUgPT09ICdUQUJMRScgPyAwIDogNTAwKSk7XG4gICAgICBjb250cm9sV2F0Y2guc3Vic2NyaWJlKCh2KSA9PiB7XG4gICAgICAgIGlmIChmb3JtQ29udHJvbC5fZW9Gb3JtRWxlbWVudC50eXBlID09PSAnUkVGRVJFTkNFJykge1xuICAgICAgICAgIHRoaXMuX2dldERhdGFNZXRhKGZvcm1Db250cm9sLl9lb0Zvcm1FbGVtZW50LCB2W2Zvcm1Db250cm9sLl9lb0Zvcm1FbGVtZW50Lm5hbWVdKS5zdWJzY3JpYmUobSA9PiB7XG4gICAgICAgICAgICBpZiAobSkge1xuICAgICAgICAgICAgICBmb3JtQ29udHJvbC5fZW9Gb3JtRWxlbWVudC5kYXRhTWV0YSA9IGZvcm1Db250cm9sLl9lb0Zvcm1FbGVtZW50Lm11bHRpc2VsZWN0ID8gbSA6IG1bMF07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBkZWxldGUgZm9ybUNvbnRyb2wuX2VvRm9ybUVsZW1lbnQuZGF0YU1ldGE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnVwZGF0ZUZvcm1FbGVtZW50Q2hhbmdlcyh2KTtcblxuICAgICAgICBpZiAoc2NvcGUuZm9ybUdlblJlc3VsdC5zY3JpcHRpbmdTY29wZSkge1xuICAgICAgICAgIHNjb3BlLmZvcm1HZW5SZXN1bHQuc2NyaXB0aW5nU2NvcGUubW9kZWxDaGFuZ2VkKHYpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHNjb3BlLmZvcm1HZW5SZXN1bHQuY29udHJvbFZhbHVlU3Vic2NyaXB0aW9ucy5wdXNoKGNvbnRyb2xXYXRjaCk7XG5cbiAgICAgIGN0cmwuYWRkQ29udHJvbChmb3JtRWxlbWVudC5uYW1lLCBmb3JtQ29udHJvbCk7XG4gICAgICBuYW1lID0gJ2ZnXycgKyBmb3JtRWxlbWVudC5uYW1lO1xuICAgIH1cbiAgICBwYXJlbnRHcm91cC5hZGRDb250cm9sKG5hbWUsIGN0cmwpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1lcmdlIGRhdGEgaW50byBhIGZvcm0gbW9kZWwuXG4gICAqXG4gICAqIEBwYXJhbSBtb2RlbCAtIGZvcm0gbW9kZWxcbiAgICogQHBhcmFtIGRhdGEgLSBkYXRhIG9iamVjdCBvciBhcnJheSBvZiBTZWFyY2hGaWx0ZXIgb2JqZWN0cyBpbiBjYXNlIG9mIGEgc2VhcmNoIGZvcm1cbiAgICovXG4gIHByaXZhdGUgX2RhdGFUb0Zvcm0oc2NvcGU6IEZvcm1HZW5TY29wZSwgbW9kZWw6IGFueSwgZGF0YTogYW55KSB7XG4gICAgaWYgKG1vZGVsICYmIGRhdGEpIHtcbiAgICAgIHRoaXMuX3NldEVsZW1lbnRWYWx1ZXMoc2NvcGUsIG1vZGVsLmVsZW1lbnRzLCBkYXRhKTtcbiAgICB9XG4gICAgcmV0dXJuIG1vZGVsO1xuICB9XG5cbiAgLy8gcmVjdXJzaXZlIG1ldGhvZCBmb3IgYWRkaW5nIHZhbHVlcyB0byBtb2RlbCBlbGVtZW50c1xuICBwcml2YXRlIF9zZXRFbGVtZW50VmFsdWVzKHNjb3BlOiBGb3JtR2VuU2NvcGUsIGVsZW1lbnRzLCBkYXRhKSB7XG5cbiAgICBlbGVtZW50cy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgaWYgKHRoaXMuX2hhc1ZhbHVlKGRhdGEsIGVsZW1lbnQpKSB7XG5cbiAgICAgICAgZWxlbWVudC52YWx1ZSA9IHRoaXMuX2dldFZhbHVlKHNjb3BlLCBkYXRhLCBlbGVtZW50KTtcbiAgICAgICAgaWYgKGVsZW1lbnQudmFsdWUpIHtcbiAgICAgICAgICAvLyBhZGQgbWV0YSBkYXRhIGZvciBzb21lIG9mIHRoZSB0eXBlc1xuICAgICAgICAgIHRoaXMuX2ZldGNoTWV0YURhdGEoc2NvcGUsIGRhdGEsIGVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkZWxldGUgZWxlbWVudC52YWx1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChlbGVtZW50LnR5cGUgIT09ICdUQUJMRScgJiYgZWxlbWVudC5lbGVtZW50cyAmJiBlbGVtZW50LmVsZW1lbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhpcy5fc2V0RWxlbWVudFZhbHVlcyhzY29wZSwgZWxlbWVudC5lbGVtZW50cywgZGF0YSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvLyBpbiBzb21lIGNhc2VzIHJlcXVpcmVkIG1ldGEgZGF0YSBtYXkgbm90IGJlIGF2YWlsYWJsZSBvbiB0aGUgZWxlbWVudCBpdHNlbGZcbiAgLy8gc28gdGhleSBoYXZlIHRvIGJlIGZldGNoZWQgYW5kIGFkZGVkIHRvIHRoZSBlbGVtZW50IGZvciB0aGUgZm9ybSB0byBiZSBhYmxlXG4gIC8vIHRvIHJlbmRlciB0aGUgZWxlbWVudCBjb3JyZWN0bHlcbiAgcHJpdmF0ZSBfZmV0Y2hNZXRhRGF0YShzY29wZTogRm9ybUdlblNjb3BlLCBkYXRhLCBlbGVtZW50KSB7XG5cbiAgICBpZiAoc2NvcGUuZm9ybU9wdGlvbnMuZm9ybU1vZGVsLnNpdHVhdGlvbiA9PT0gJ1NFQVJDSCcpIHtcbiAgICAgIC8vIHRvZG86IGhvdyB0byBmZXRjaCBtZXRhIGRhdGEgaW4gc2VhcmNoIHNpdHVhdGlvblxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoZWxlbWVudC50eXBlID09PSAnT1JHQU5JWkFUSU9OJyAmJiBkYXRhW2VsZW1lbnQubmFtZSArICdfbWV0YSddKSB7XG4gICAgICAgIGVsZW1lbnQuZGF0YU1ldGEgPSBkYXRhW2VsZW1lbnQubmFtZSArICdfbWV0YSddO1xuICAgICAgfSBlbHNlIGlmIChlbGVtZW50LnR5cGUgPT09ICdDT0RFU1lTVEVNJyAmJiBkYXRhW2VsZW1lbnQubmFtZSArICdfbWV0YSddKSB7XG4gICAgICAgIGVsZW1lbnQuZGF0YU1ldGEgPSBkYXRhW2VsZW1lbnQubmFtZSArICdfbWV0YSddO1xuICAgICAgICBlbGVtZW50LmRlZmF1bHRyZXByZXNlbnRhdGlvbiA9IGRhdGFbZWxlbWVudC5uYW1lICsgJ19tZXRhJ10uZGVmYXVsdHJlcHJlc2VudGF0aW9uO1xuICAgICAgfSBlbHNlIGlmIChlbGVtZW50LnR5cGUgPT09ICdSRUZFUkVOQ0UnICYmIGRhdGFbZWxlbWVudC5uYW1lICsgJ19tZXRhJ10pIHtcbiAgICAgICAgZWxlbWVudC5kYXRhTWV0YSA9IGRhdGFbZWxlbWVudC5uYW1lICsgJ19tZXRhJ107XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0RGF0YU1ldGEoZm9ybUVsZW1lbnQ6IGFueSwgbmV3VmFsdWU6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XG5cbiAgICBpZiAobmV3VmFsdWUpIHtcbiAgICAgIHN3aXRjaCAoZm9ybUVsZW1lbnQudHlwZSkge1xuICAgICAgICBjYXNlICdPUkdBTklaQVRJT04nOiB7XG4gICAgICAgICAgaWYgKHR5cGVvZiBuZXdWYWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnN5c3RlbVNlcnZpY2UuZ2V0T3JnYW5pemF0aW9uT2JqZWN0KG5ld1ZhbHVlKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKG5ld1ZhbHVlLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3lzdGVtU2VydmljZS5nZXRPcmdhbml6YXRpb25PYmplY3QobmV3VmFsdWVbMF0pO1xuICAgICAgICAgIH0gZWxzZSBpZiAobmV3VmFsdWUubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3lzdGVtU2VydmljZS5nZXRPcmdhbml6YXRpb25PYmplY3RzKG5ld1ZhbHVlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAnUkVGRVJFTkNFJzoge1xuICAgICAgICAgIHJldHVybiB0aGlzLnJlZmVyZW5jZVNlcnZpY2UuZmV0Y2hJRFJlZmVyZW5jZU1ldGFEYXRhKEFycmF5LmlzQXJyYXkobmV3VmFsdWUpID8gbmV3VmFsdWUgOiBbbmV3VmFsdWVdKTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlICdDT0RFU1lTVEVNJzoge1xuICAgICAgICAgIHJldHVybiBvZih0aGlzLnN5c3RlbVNlcnZpY2UuZ2V0Q29kZXN5c3RlbShmb3JtRWxlbWVudC5jb2Rlc3lzdGVtLmlkKS5lbnRyaWVzLmZpbmQoKGVudHJ5KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gZW50cnkuZGVmYXVsdHJlcHJlc2VudGF0aW9uID09PSBuZXdWYWx1ZTtcbiAgICAgICAgICB9KSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG9mKG51bGwpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaGFzVmFsdWUoZGF0YSwgZWxlbWVudCkge1xuXG4gICAgLy8gZGlmZmVyIGJldHdlZW4gYXJyYXkgb2YgU2VhcmNoRmlsdGVycyBhbmQgYSBmb3JtIGRhdGEgb2JqZWN0XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZGF0YSkpIHtcbiAgICAgIGlmIChlbGVtZW50LnR5cGUgPT09ICdUQUJMRScpIHtcbiAgICAgICAgcmV0dXJuICEhKGRhdGEuZmluZCgoZmlsdGVyKSA9PiBmaWx0ZXIucHJvcGVydHkuc3RhcnRzV2l0aChlbGVtZW50LnFuYW1lKSkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuICEhKGRhdGEuZmluZCgoZmlsdGVyKSA9PiBmaWx0ZXIucHJvcGVydHkgPT09IGVsZW1lbnQucW5hbWUpKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGRhdGEuaGFzT3duUHJvcGVydHkoZWxlbWVudC5uYW1lKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9nZXRWYWx1ZShzY29wZTogRm9ybUdlblNjb3BlLCBkYXRhLCBlbGVtZW50KSB7XG5cbiAgICBsZXQgdmFsdWU7XG4gICAgaWYgKHNjb3BlLmZvcm1PcHRpb25zLmZvcm1Nb2RlbC5zaXR1YXRpb24gPT09ICdTRUFSQ0gnKSB7XG4gICAgICBpZiAoc2NvcGUuaXNJbm5lclRhYmxlRm9ybSkge1xuICAgICAgICBpZiAoZWxlbWVudC50eXBlID09PSAnREFURVRJTUUnIHx8IGVsZW1lbnQudHlwZSA9PT0gJ05VTUJFUicpIHtcbiAgICAgICAgICB2YWx1ZSA9IFNlYXJjaFNlcnZpY2UudG9SYW5nZVZhbHVlKGRhdGFbZWxlbWVudC5uYW1lXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmFsdWUgPSBkYXRhW2VsZW1lbnQubmFtZV07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoZWxlbWVudC50eXBlID09PSAnVEFCTEUnKSB7XG4gICAgICAgIHZhbHVlID0gdGhpcy5zZWFyY2hTZXJ2aWNlLnRhYmxlRmlsdGVyc1RvRWxlbWVudFZhbHVlKHRoaXMuX2dldFRhYmxlRmlsdGVycyhkYXRhLCBlbGVtZW50LnFuYW1lKSwgZWxlbWVudC5lbGVtZW50cyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBmaWx0ZXIgPSBkYXRhLmZpbmQoZiA9PiBmLnByb3BlcnR5ID09PSBlbGVtZW50LnFuYW1lKTtcbiAgICAgICAgdmFsdWUgPSB0aGlzLnNlYXJjaFNlcnZpY2UuZmlsdGVyVG9FbGVtZW50VmFsdWUoZmlsdGVyLCBlbGVtZW50LnR5cGUpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG5cbiAgICAgIGlmIChlbGVtZW50LnR5cGUgPT09ICdEQVRFVElNRScgJiYgZGF0YVtlbGVtZW50Lm5hbWVdKSB7XG4gICAgICAgIHZhbHVlID0gbmV3IERhdGUoYCR7ZGF0YVtlbGVtZW50Lm5hbWVdfSR7KHR5cGVvZiBkYXRhW2VsZW1lbnQubmFtZV0gPT09ICdzdHJpbmcnID8gZGF0YVtlbGVtZW50Lm5hbWVdLmluZGV4T2YoJ1QnKSA6IGRhdGFbZWxlbWVudC5uYW1lXS50b0lTT1N0cmluZygpLmluZGV4T2YoJ1QnKSkgIT09IC0xID8gJycgOiAnVDAwOjAwOjAwJ31gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhbHVlID0gZGF0YVtlbGVtZW50Lm5hbWVdO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICBwcml2YXRlIF9nZXRUYWJsZUZpbHRlcnMoZmlsdGVyczogU2VhcmNoRmlsdGVyW10sIHByb3BlcnR5TmFtZTogc3RyaW5nKTogU2VhcmNoRmlsdGVyW10ge1xuICAgIHJldHVybiBmaWx0ZXJzLmZpbHRlcihmID0+IGYucHJvcGVydHkuc3RhcnRzV2l0aChwcm9wZXJ0eU5hbWUgKyAnLicpKTtcbiAgfVxuXG4gIHByaXZhdGUgX2luaXRWYWxpZGF0b3JzKGZvcm1Db250cm9sOiBPYmplY3RGb3JtR3JvdXAsIHNjb3BlOiBGb3JtR2VuU2NvcGUpIHtcbiAgICBpZiAoZm9ybUNvbnRyb2wpIHtcbiAgICAgIGZvciAobGV0IGtleSBpbiBmb3JtQ29udHJvbC5jb250cm9scykge1xuICAgICAgICBjb25zdCBjb250cm9sID0gZm9ybUNvbnRyb2wuY29udHJvbHNba2V5XSBhcyBhbnk7XG4gICAgICAgIGlmIChjb250cm9sLmNvbnRyb2xzKSB7XG4gICAgICAgICAgdGhpcy5faW5pdFZhbGlkYXRvcnMoY29udHJvbCwgc2NvcGUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNjb3BlLmluaXRpYWxWYWxpZGF0b3JzW2NvbnRyb2wuX2VvRm9ybUVsZW1lbnQubmFtZV0gPSBjb250cm9sLnZhbGlkYXRvcjtcbiAgICAgICAgICBjb250cm9sLnNldFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5jb21wb3NlKFxuICAgICAgICAgICAgdGhpcy5fZ2V0VmFsaWRhdG9ycyhzY29wZSwgY29udHJvbC5fZW9Gb3JtRWxlbWVudCkuY29uY2F0KFxuICAgICAgICAgICAgICBbc2NvcGUuaW5pdGlhbFZhbGlkYXRvcnNbY29udHJvbC5fZW9Gb3JtRWxlbWVudC5uYW1lXV0pXG4gICAgICAgICAgKSk7XG4gICAgICAgICAgY29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgKiBCdWlsZCB2YWxpZGF0b3JzIGZvciB0aGUgZ2l2ZW4gZm9ybSBlbGVtZW50IHRvIGJlIGF0dGFjaGVkIHRvXG4gICogYSByZWFjdGl2ZSBmb3JtQ29udHJvbC5cbiAgKlxuICAqIEBwYXJhbSBmb3JtRWxlbWVudCAtIGZvcm0gZWxlbWVudCBvYmplY3RcbiAgKi9cbiAgcHJpdmF0ZSBfZ2V0VmFsaWRhdG9ycyhzY29wZTogRm9ybUdlblNjb3BlLCBmb3JtRWxlbWVudDogYW55KTogVmFsaWRhdG9yRm5bXSB7XG4gICAgbGV0IGVsbVZhbGlkYXRvcnMgPSBGb3JtVmFsaWRhdGlvbi5nZXRWYWxpZGF0b3JzKGZvcm1FbGVtZW50LCBzY29wZS5mb3JtT3B0aW9ucy5mb3JtTW9kZWwuc2l0dWF0aW9uKTtcbiAgICAvLyBhZGQgY3VzdG9tIHZhbGlkYXRvciBmb3Igc2NyaXB0IGVuYWJsZWQgZm9ybXNcbiAgICBpZiAoc2NvcGUuZm9ybUdlblJlc3VsdC5zY3JpcHRpbmdTY29wZSkge1xuICAgICAgZWxtVmFsaWRhdG9ycy5wdXNoKEZvcm1WYWxpZGF0aW9uLmN1c3RvbVNjcmlwdGluZ1ZhbGlkYXRpb24pO1xuICAgIH1cblxuICAgIHJldHVybiBlbG1WYWxpZGF0b3JzO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW5pdFNjcmlwdGluZ1Njb3BlKHNjb3BlOiBGb3JtR2VuU2NvcGUsIGZvcm1TY3JpcHRTZXJ2aWNlOiBPYmplY3RGb3JtU2NyaXB0U2VydmljZSkge1xuICAgIGxldCB7ZGF0YSwgYWN0aW9ucywgb2JqZWN0cywgY29udGV4dH0gPSA8T2JqZWN0Rm9ybU9wdGlvbnM+KHNjb3BlLmZvcm1PcHRpb25zIHx8IHt9KTtcblxuICAgIGlmIChzY29wZS5mb3JtR2VuUmVzdWx0LnNjcmlwdGluZ1Njb3BlKSB7XG4gICAgICBzY29wZS5mb3JtR2VuUmVzdWx0LnNjcmlwdGluZ1Njb3BlLnNldE1vZGVsKHNjb3BlLmZvcm1HZW5SZXN1bHQuc2NyaXB0TW9kZWwpO1xuICAgICAgLyoqIHByb3ZpZGUgYWNjZXNzIHRvIGFjdGlvbnMgKHVzZWQgaW5zaWRlIG9mIEJQTS1Gb3JtcykgKi9cbiAgICAgIHNjb3BlLmZvcm1HZW5SZXN1bHQuc2NyaXB0aW5nU2NvcGUuYWN0aW9ucyA9IGFjdGlvbnM7XG4gICAgICAvKiogcHJvdmlkZSBhY2Nlc3MgdG8gYWRkaXRpb25hbCBvYmplY3RzICh1c2VkIGZvciBleGFtcGxlIGluIEJQTS1TdGFydC1Gb3JtcyB0b1xuICAgICAgICogYWRkIGRhdGEgb2YgRE1TLU9iamVjdHMgdG8gc3RhcnQgdGhlIHByb2Nlc3MgZm9yKVxuICAgICAgICovXG4gICAgICBzY29wZS5mb3JtR2VuUmVzdWx0LnNjcmlwdGluZ1Njb3BlLm9iamVjdHMgPSBvYmplY3RzO1xuICAgICAgc2NvcGUuZm9ybUdlblJlc3VsdC5zY3JpcHRpbmdTY29wZS5jb250ZXh0ID0gY29udGV4dDtcbiAgICAgIC8qKiBwcm92aWRlIHJlYWRvbmx5IGFjY2VzcyB0byBpbml0aWFsIGZvcm0gZGF0YSAod2hpY2ggbWF5IGFsc28gY29udGFpbiB2YWx1ZXMgdGhhdFxuICAgICAgICogYXJlIG5vdCByZW5kZXJlZCBhcyBmb3JtIGVsZW1lbnRzIChpbnZpc2libGUgdmFsdWVzKSlcbiAgICAgICAqL1xuICAgICAgc2NvcGUuZm9ybUdlblJlc3VsdC5zY3JpcHRpbmdTY29wZS5kYXRhID0gZGF0YTtcblxuICAgICAgLyoqIGJ5IGRlZmF1bHQsIHNjcmlwdGluZyBzY29wZXMgYXJlIGFwcGxpZWQgdG8gZm9ybXMuIEJ1dCB0YWJsZSBlbGVtZW50cyBjcmVhdGUgdGhlaXIgb3duIHNjb3BlXG4gICAgICAgKiBmb3IgZWRpdGluZyByb3dzLiBCZWluZyBvbmUgb2YgdGhvc2UgaW5uZXIgZm9ybXMgc2hvdWxkIG5vdCBydW4gdGhlIGZvcm0gc2NyaXB0IGFnYWluLCBidXRcbiAgICAgICAqIGluc3RlYWQganVzdCBwcm92aWRlIHRoZSBvYnNlcnZpbmcgYWJpbGl0aWVzIG9mIHRoZSBzY3JpcHRpbmcgc2NvcGUuXG4gICAgICAgKi9cbiAgICAgIGlmICghc2NvcGUuZm9ybU9wdGlvbnMuZGlzYWJsZWQgJiYgIXNjb3BlLmlzSW5uZXJUYWJsZUZvcm0gJiYgc2NvcGUuZm9ybUdlblJlc3VsdC5mb3JtTW9kZWwpIHtcbiAgICAgICAgY29uc3Qgc2NyaXB0TmFtZSA9IHNjb3BlLmZvcm1HZW5SZXN1bHQuZm9ybU1vZGVsLm5hbWUgKyAnXycgKyBzY29wZS5mb3JtR2VuUmVzdWx0LmZvcm1Nb2RlbC5zaXR1YXRpb247XG4gICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdleGVjdXRpbmcgZm9ybSBzY3JpcHQgJyArIHNjcmlwdE5hbWUpO1xuICAgICAgICBmb3JtU2NyaXB0U2VydmljZS5ydW5Gb3JtU2NyaXB0KFxuICAgICAgICAgIHNjb3BlLmZvcm1HZW5SZXN1bHQuc2NyaXB0aW5nU2NvcGUsXG4gICAgICAgICAgc2NvcGUuZm9ybUdlblJlc3VsdC5mb3JtTW9kZWwuc2NyaXB0LFxuICAgICAgICAgIHNjcmlwdE5hbWVcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCB3aWxsIGJlIGNhbGxlZCBlYWNoIHRpbWUgdGhlIHNjcmlwdCBjaGFuZ2VzIGl0cyBpbnRlcm5hbCBtb2RlbC5cbiAgICAgKiBJdCBpcyB1c2VkIHRvIHRyYW5zZmVyIHRoZSBzY3JpcHQgY2hhbmdlcyB0byB0aGUgYWN0dWFsIGZvcm0gbW9kZWwuXG4gICAgICpcbiAgICAgKiBUbyBlbnN1cmUgdGhlIHJpZ2h0IGNvbnRleHQsIHdlIGRlZmluZSBhbiBpbnN0YW5jZSBtZXRob2QgYXMgY2FsbGJhY2sgZm9yIHRoZSBzY3JpcHRpbmcgc2NvcGVcbiAgICAgKiBAc2VlOiBodHRwczovL2Jsb2cuam9obm55cmVpbGx5LmNvbS8yMDE0LzA0L3R5cGVzY3JpcHQtaW5zdGFuY2UtbWV0aG9kcy5odG1sXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZm9ybUNvbnRyb2xOYW1lXG4gICAgICogQHBhcmFtIGNoYW5nZVxuICAgICAqL1xuXG4gIHByaXZhdGUgX2dldFNjcmlwdGluZ01vZGVsQ2hhbmdlZChzY29wZTogRm9ybUdlblNjb3BlKTogRnVuY3Rpb24ge1xuICAgIHJldHVybiAoZm9ybUNvbnRyb2xOYW1lLCBjaGFuZ2UpID0+IHtcblxuICAgICAgLy8gZmluZCB0aGUgdGFyZ2V0IGNvbnRyb2xcbiAgICAgIGxldCBmYzogT2JqZWN0Rm9ybUNvbnRyb2wgPSBzY29wZS5mb3JtR2VuUmVzdWx0LmZvcm1Db250cm9sc1tmb3JtQ29udHJvbE5hbWVdIGFzIE9iamVjdEZvcm1Db250cm9sO1xuICAgICAgaWYgKGZjKSB7XG5cbiAgICAgICAgLy8gY2hhbmdlIG9ubHkgYWxsb3dlZCBwcm9wZXJ0aWVzXG4gICAgICAgIHN3aXRjaCAoY2hhbmdlLm5hbWUpIHtcbiAgICAgICAgICBjYXNlICd2YWx1ZSc6IHtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGNoYW5nZS5uZXdWYWx1ZSkpIHtcbiAgICAgICAgICAgICAgdGhpcy5fcHJvY2Vzc0FycmF5VmFsdWVDaGFuZ2UoZmMsIGNoYW5nZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBmYy5fZW9Gb3JtRWxlbWVudC52YWx1ZSA9IGNoYW5nZS5uZXdWYWx1ZTtcbiAgICAgICAgICAgICAgaWYgKGZjLnZhbHVlICE9PSBjaGFuZ2UubmV3VmFsdWUpIHtcbiAgICAgICAgICAgICAgICBmYy5wYXRjaFZhbHVlKGNoYW5nZS5uZXdWYWx1ZSk7XG4gICAgICAgICAgICAgICAgZmMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgICAgICAgICAgICAgIGZjLm1hcmtBc0RpcnR5KCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNjb3BlLmZvcm1HZW5SZXN1bHQuZm9ybS5tYXJrQXNEaXJ0eSgpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgJ3JlcXVpcmVkJzoge1xuICAgICAgICAgICAgaWYgKGZjLl9lb0Zvcm1FbGVtZW50LnJlcXVpcmVkICE9PSBjaGFuZ2UubmV3VmFsdWUpIHtcbiAgICAgICAgICAgICAgZmMuX2VvRm9ybUVsZW1lbnQucmVxdWlyZWQgPSBjaGFuZ2UubmV3VmFsdWU7XG4gICAgICAgICAgICAgIC8vIGFwcGx5IG5ldyB2YWxpZGF0b3JzXG4gICAgICAgICAgICAgIC8vIEBzZWU6IGh0dHBzOi8vc2NvdGNoLmlvL3R1dG9yaWFscy9ob3ctdG8taW1wbGVtZW50LWNvbmRpdGlvbmFsLXZhbGlkYXRpb24taW4tYW5ndWxhci0yLW1vZGVsLWRyaXZlbi1mb3Jtc1xuICAgICAgICAgICAgICBmYy5zZXRWYWxpZGF0b3JzKFZhbGlkYXRvcnMuY29tcG9zZSh0aGlzLl9nZXRWYWxpZGF0b3JzKHNjb3BlLCBmYy5fZW9Gb3JtRWxlbWVudCkuY29uY2F0KFtzY29wZS5pbml0aWFsVmFsaWRhdG9yc1tmYy5fZW9Gb3JtRWxlbWVudC5uYW1lXV0pKSk7XG4gICAgICAgICAgICAgIC8vIG5lZWQgdG8gbWFyayBmb3JtIGNvbnRyb2wgYXMgdG91Y2hlZCBiZWNhdXNlIG90aGVyd2lzZSBmb3JtIHZhbGlkYXRpb24gd2lsbCBub3Qgc2hvd1xuICAgICAgICAgICAgICAvLyBlcnJvciBtZXNzYWdlc1xuICAgICAgICAgICAgICBmYy5tYXJrQXNUb3VjaGVkKCk7XG4gICAgICAgICAgICAgIGZjLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlICdyZWFkb25seSc6IHtcbiAgICAgICAgICAgIGZjLl9lb0Zvcm1FbGVtZW50LnJlYWRvbmx5ID0gY2hhbmdlLm5ld1ZhbHVlO1xuICAgICAgICAgICAgaWYgKGNoYW5nZS5uZXdWYWx1ZSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICBmYy5kaXNhYmxlKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBmYy5lbmFibGUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlICdlcnJvcic6IHtcbiAgICAgICAgICAgIGlmIChKU09OLnN0cmluZ2lmeShmYy5fZW9Gb3JtRWxlbWVudC5lcnJvcikgIT09IEpTT04uc3RyaW5naWZ5KGNoYW5nZS5uZXdWYWx1ZSkpIHtcbiAgICAgICAgICAgICAgZmMuX2VvRm9ybUVsZW1lbnQuZXJyb3IgPSBjaGFuZ2UubmV3VmFsdWU7XG4gICAgICAgICAgICAgIGZjLm1hcmtBc1RvdWNoZWQoKTtcbiAgICAgICAgICAgICAgZmMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIG5ldyBvbnJvd2VkaXQgZnVuY3Rpb24gd2FzIGFwcGxpZWQgYnkgdGhlIHNjcmlwdFxuICAgICAgICAgIGNhc2UgJ29ucm93ZWRpdCc6IHtcbiAgICAgICAgICAgIGZjLl9lb0Zvcm1FbGVtZW50Lm9ucm93ZWRpdCA9IGNoYW5nZS5uZXdWYWx1ZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBuZXcgb25jaGFuZ2UgZnVuY3Rpb24gd2FzIGFwcGxpZWQgYnkgdGhlIHNjcmlwdFxuICAgICAgICAgIGNhc2UgJ29uY2hhbmdlJzoge1xuICAgICAgICAgICAgZmMuX2VvRm9ybUVsZW1lbnQub25jaGFuZ2UgPSBjaGFuZ2UubmV3VmFsdWU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gbmV3IGNvbnRleHRJZCB3YXMgYXBwbGllZCBieSB0aGUgc2NyaXB0XG4gICAgICAgICAgY2FzZSAnY29udGV4dElkJzoge1xuICAgICAgICAgICAgZmMuX2VvRm9ybUVsZW1lbnQuY29udGV4dElkID0gY2hhbmdlLm5ld1ZhbHVlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIG5ldyBkZXNjcmlwdGlvbiB3YXMgYXBwbGllZCBieSB0aGUgc2NyaXB0XG4gICAgICAgICAgY2FzZSAnZGVzY3JpcHRpb24nOiB7XG4gICAgICAgICAgICBmYy5fZW9Gb3JtRWxlbWVudC5kZXNjcmlwdGlvbiA9IGNoYW5nZS5uZXdWYWx1ZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3Byb2Nlc3NBcnJheVZhbHVlQ2hhbmdlKGZjLCBjaGFuZ2UpIHtcbiAgICBjb25zdCBuZXdWYWwgPSBjaGFuZ2UubmV3VmFsdWU7XG4gICAgY29uc3QgdGFyZ2V0VHlwZSA9IGZjLl9lb0Zvcm1FbGVtZW50LnR5cGU7XG4gICAgLy8gZm9yIHNvbWUgdHlwZXMgd2UgaGF2ZSB0byBlbnN1cmUgdGhhdCBtZXRhIGRhdGEgYXJlIHByb3ZpZGVkIGFzIHdlbGxcbiAgICBzd2l0Y2ggKHRhcmdldFR5cGUpIHtcbiAgICAgIGNhc2UgJ09SR0FOSVpBVElPTic6IHtcbiAgICAgICAgdGhpcy5fZ2V0RGF0YU1ldGEoZmMuX2VvRm9ybUVsZW1lbnQsIG5ld1ZhbCkuc3Vic2NyaWJlKG0gPT4ge1xuICAgICAgICAgIGZjLl9lb0Zvcm1FbGVtZW50LmRhdGFNZXRhID0gbTtcbiAgICAgICAgfSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnQ09ERVNZU1RFTSc6IHtcbiAgICAgICAgaWYgKCFmYy5fZW9Gb3JtRWxlbWVudC5jb2Rlc3lzdGVtLmVudHJpZXMpIHtcbiAgICAgICAgICBmYy5fZW9Gb3JtRWxlbWVudC5jb2Rlc3lzdGVtID0gdGhpcy5zeXN0ZW1TZXJ2aWNlLmdldENvZGVzeXN0ZW0oZmMuX2VvRm9ybUVsZW1lbnQuY29kZXN5c3RlbS5pZCk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdUQUJMRSc6IHtcbiAgICAgICAgY29uc3QgZGF0YVRvQmVQcm9jZXNzZWQgPSB7fTtcbiAgICAgICAgZmMuX2VvRm9ybUVsZW1lbnQuZWxlbWVudHMuZm9yRWFjaChlID0+IHtcbiAgICAgICAgICBpZiAoZS50eXBlID09PSAnT1JHQU5JWkFUSU9OJyB8fCBlLnR5cGUgPT09ICdDT0RFU1lTVEVNJykge1xuICAgICAgICAgICAgZGF0YVRvQmVQcm9jZXNzZWRbZS5uYW1lXSA9IGU7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKE9iamVjdC5rZXlzKGRhdGFUb0JlUHJvY2Vzc2VkKS5sZW5ndGgpIHtcbiAgICAgICAgICBsZXQgb2JzID0gW107XG4gICAgICAgICAgbmV3VmFsLmZvckVhY2gocm93RGF0YSA9PiB7XG4gICAgICAgICAgICBPYmplY3Qua2V5cyhyb3dEYXRhKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgICAgICAgIGlmIChkYXRhVG9CZVByb2Nlc3NlZFtrZXldKSB7XG4gICAgICAgICAgICAgICAgb2JzLnB1c2godGhpcy5fZ2V0RGF0YU1ldGEoZGF0YVRvQmVQcm9jZXNzZWRba2V5XSwgcm93RGF0YVtrZXldKS5waXBlKFxuICAgICAgICAgICAgICAgICAgdGFwKG0gPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAobSkge1xuICAgICAgICAgICAgICAgICAgICAgIHJvd0RhdGFba2V5ICsgJ19tZXRhJ10gPSBtO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSByb3dEYXRhW2tleSArICdfbWV0YSddO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICkpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBmb3JrSm9pbihvYnMpLnN1YnNjcmliZSgoKSA9PiB0aGlzLl91cGRhdGVBcnJheVZhbHVlKGZjLCBuZXdWYWwpKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5fdXBkYXRlQXJyYXlWYWx1ZShmYywgbmV3VmFsKTtcbiAgfVxuXG4gIHByaXZhdGUgX3VwZGF0ZUFycmF5VmFsdWUoZmMsIG5ld1ZhbHVlKSB7XG4gICAgZmMuX2VvRm9ybUVsZW1lbnQudmFsdWUgPSBbXS5jb25jYXQobmV3VmFsdWUpO1xuICAgIGZjLnBhdGNoVmFsdWUoW10uY29uY2F0KG5ld1ZhbHVlKSk7XG4gICAgZmMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgIGZjLm1hcmtBc0RpcnR5KCk7XG4gIH1cblxuICBwcml2YXRlIF9jbGVhclRlbXBvcmFyeVN0b3JhZ2VFbnRyaWVzKCkge1xuICAgIHRoaXMuX2dldFRlbXBvcmFyeVN0b3JhZ2VFbnRyaWVzKCkuZm9yRWFjaChlID0+IGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGUpKTtcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSh0aGlzLlRFTVBfU1RPUkFHRV9FTlRSSUVTX0tFWSk7XG4gIH1cblxuICBwcml2YXRlIF9nZXRUZW1wb3JhcnlTdG9yYWdlRW50cmllcygpOiBzdHJpbmdbXSB7XG4gICAgbGV0IHJlcyA9IFtdO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBlbnRyaWVzOiBzdHJpbmdbXSA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5URU1QX1NUT1JBR0VfRU5UUklFU19LRVkpKTtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGVudHJpZXMpKSByZXMgPSBlbnRyaWVzO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnNvbGUuZGVidWcoZSlcbiAgICB9XG4gICAgY29uc29sZS5kZWJ1ZyhgRm91bmQgJHtyZXMubGVuZ3RofSB0bXAgZW50cmllcyB0byBiZSByZW1vdmVkYCk7XG4gICAgcmV0dXJuIHJlcztcbiAgfVxuXG5cbn1cbiJdfQ==
|
|
761
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LWZvcm0taGVscGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2VvLWZyYW1ld29yay9vYmplY3QtZm9ybS9vYmplY3QtZm9ybS1oZWxwZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQWMsVUFBVSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkQsT0FBTyxFQUFTLFVBQVUsRUFBZ0IsYUFBYSxFQUFpQixLQUFLLEVBQWUsTUFBTSxjQUFjLENBQUM7QUFDakgsT0FBTyxFQUFDLGVBQWUsRUFBRSxRQUFRLEVBQWMsRUFBRSxFQUFlLE1BQU0sTUFBTSxDQUFDO0FBQzdFLE9BQU8sRUFBQyxZQUFZLEVBQUUsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFLakQsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLCtDQUErQyxDQUFDO0FBQzdFLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBQ3BFLE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLDJDQUEyQyxDQUFDO0FBQ25GLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQztBQUV0RSxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSw4REFBOEQsQ0FBQzs7Ozs7QUF5QnRHLE1BQU0sT0FBTyx1QkFBdUI7SUFNbEMsWUFBb0IsTUFBYyxFQUN4QixnQkFBa0MsRUFDbEMsYUFBNEIsRUFDNUIsYUFBNkIsRUFDN0IsYUFBNEI7UUFKbEIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUN4QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLGtCQUFhLEdBQWIsYUFBYSxDQUFnQjtRQUM3QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQVI5QixhQUFRLEdBQUcsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUIsNkJBQXdCLEdBQUcsc0NBQXNDLENBQUM7UUFDbEUsOEJBQXlCLEdBQWtDLElBQUksZUFBZSxDQUFlLEVBQUUsQ0FBQyxDQUFDO1FBT3ZHLElBQUksQ0FBQyw2QkFBNkIsRUFBRSxDQUFDO0lBQ3ZDLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsSUFBSSx5QkFBeUI7UUFDM0IsT0FBTyxJQUFJLENBQUMseUJBQXlCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdkQsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxpQkFBaUIsQ0FDZixXQUE4QixFQUM5QixpQkFBMEMsRUFDMUMsZ0JBQTBCO1FBRTFCLE1BQU0sTUFBTSxHQUFpQjtZQUMzQixNQUFNLEVBQUUsQ0FBQztZQUNULFdBQVc7WUFDWCxnQkFBZ0I7WUFDaEIsaUJBQWlCLEVBQUUsRUFBRTtZQUNyQixhQUFhLEVBQUU7Z0JBQ2IsWUFBWSxFQUFFLEVBQUU7Z0JBQ2hCLFNBQVMsRUFBRSxFQUFFO2dCQUNiLHlCQUF5QixFQUFFLEVBQUU7Z0JBQzdCLGNBQWMsRUFBRSxTQUFTO2dCQUN6QixXQUFXLEVBQUUsRUFBRTtnQkFDZixJQUFJLEVBQUUsSUFBSTthQUNYO1NBQ0YsQ0FBQTtRQUVELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQyxTQUFTLEVBQUUsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3BGLE1BQU0sQ0FBQyxhQUFhLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUMzQyxJQUFJLENBQUMsU0FBUztZQUFFLE9BQU87UUFFdkIsa0VBQWtFO1FBQ2xFLGVBQWU7UUFDZixJQUFJLGNBQXdDLENBQUM7UUFDN0MsSUFBSSxNQUFNLENBQUMsZ0JBQWdCLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxJQUFJLFNBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDakYsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsNkJBQTZCLENBQUMsQ0FBQztZQUNqRCxjQUFjLEdBQUcsSUFBSSx3QkFBd0IsQ0FDM0MsU0FBUyxDQUFDLFNBQVMsRUFDbkIsSUFBSSxDQUFDLHlCQUF5QixDQUFDLE1BQU0sQ0FBQyxFQUN0QyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxFQUMzQixNQUFNLENBQUMsZ0JBQWdCLENBQ3hCLENBQUM7WUFDRixjQUFjLENBQUMsUUFBUSxHQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUM7UUFDakQsQ0FBQztRQUNELE1BQU0sQ0FBQyxhQUFhLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQztRQUdyRCxJQUFJLElBQUksR0FBRyxJQUFJLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNuQyxJQUFJLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUM1RCxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNwRSxDQUFDO1FBQ0QsSUFBSSxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDNUQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDcEUsQ0FBQztRQUNELE1BQU0sQ0FBQyxhQUFhLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3hELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztRQUNwRCxPQUFPLE1BQU0sQ0FBQyxhQUFhLENBQUM7SUFDOUIsQ0FBQztJQUlEOzs7Ozs7O09BT0c7SUFDSCxvQkFBb0IsQ0FBQyxPQUFZLEVBQUUsU0FBa0I7UUFFbkQsSUFBSSxXQUFXLENBQUM7UUFDaEIsSUFBSSxPQUFPLE9BQU8sS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUNoQyxJQUFJLENBQUM7Z0JBQ0gsV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDcEMsQ0FBQztZQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7Z0JBQ1gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMseUNBQXlDLEVBQUUsV0FBVyxDQUFDLENBQUM7WUFDNUUsQ0FBQztRQUNILENBQUM7YUFBTSxDQUFDO1lBQ04sV0FBVyxHQUFHLE9BQU8sQ0FBQztRQUN4QixDQUFDO1FBRUQsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2pCLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUVELHNDQUFzQztRQUN0QyxJQUFJLE9BQU8sR0FBRyxJQUFJLHdCQUF3QixDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQy9DLElBQUksYUFBYSxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFFbkQsT0FBTyxDQUFDLHFCQUFxQixHQUFHO1lBQzlCLFdBQVcsRUFBRSxXQUFXLENBQUMsSUFBSTtZQUM3QixTQUFTLEVBQUUsYUFBYTtTQUN6QixDQUFDO1FBRUYsMERBQTBEO1FBQzFELElBQUksV0FBVyxDQUFDLElBQUksS0FBSyxZQUFZLElBQUksQ0FBQyxDQUFDLFdBQVcsQ0FBQyxVQUFVLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDdEcsV0FBVyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZGLENBQUM7UUFDRCxpQ0FBaUM7UUFDakMsSUFBSSxlQUFlLEdBQUcsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUM7UUFDN0MsSUFBSSxXQUFXLEdBQUcsSUFBSSxpQkFBaUIsQ0FBQztZQUN0QyxLQUFLLEVBQUUsV0FBVyxDQUFDLEtBQUs7WUFDeEIsUUFBUSxFQUFFLGVBQWU7U0FDMUIsRUFBRSxjQUFjLENBQUMsYUFBYSxDQUFDLFdBQVcsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDO1FBRTdELDZGQUE2RjtRQUM3Riw2RUFBNkU7UUFDN0UsSUFBSSxhQUFhLEtBQUssUUFBUSxJQUFJLFdBQVcsQ0FBQyxLQUFLLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDN0QsV0FBVyxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7UUFDbkMsQ0FBQztRQUVELFdBQVcsQ0FBQyxjQUFjLEdBQUcsV0FBVyxDQUFDO1FBQ3pDLE9BQU8sQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQztRQUVsRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7T0FhRztJQUNILGVBQWUsQ0FBQyxJQUFxQixFQUFFLFNBQWlCLEVBQUUsV0FBaUIsRUFBRSxrQkFBNEI7UUFDdkcsSUFBSSxhQUFhLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLEVBQUUsSUFBSSxFQUFFLFNBQVMsSUFBSSxNQUFNLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixDQUFDLENBQUM7UUFDakcsT0FBTyxhQUFhLENBQUM7SUFDdkIsQ0FBQztJQUVEOzs7Ozs7S0FNQztJQUNELHdCQUF3QixDQUFDLFVBQWtCO1FBQ3pDLGdGQUFnRjtRQUNoRiw0Q0FBNEM7UUFDNUMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLDJCQUEyQixFQUFFLENBQUM7UUFDbkQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDO1lBQy9CLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLHdCQUF3QixFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLE9BQU8sRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDakcsQ0FBQztJQUdEOzs7Ozs7OztPQVFHO0lBQ0gsd0JBQXdCLENBQUMsS0FBbUI7UUFDMUMsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLHlCQUF5QixDQUFDLEtBQUssQ0FBQztRQUM1RCxNQUFNLGNBQWMsR0FBRyxFQUFDLEdBQUcsY0FBYyxFQUFFLEdBQUcsS0FBSyxFQUFDLENBQUM7UUFDckQsSUFBSSxDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQsNkRBQTZEO0lBQ3JELGdCQUFnQixDQUFDLElBQVMsRUFBRSxXQUE0QixFQUFFLFNBQWlCLEVBQUUsV0FBaUIsRUFBRSxrQkFBNEI7UUFFbEksSUFBSSxDQUFDLFdBQVcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUMxQyxPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksV0FBVyxZQUFZLHdCQUF3QixFQUFFLENBQUM7WUFFcEQsTUFBTSxFQUFFLEdBQVEsV0FBVyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMscUJBQXFCLENBQUMsV0FBVyxDQUFDLENBQUM7WUFFcEYsSUFBSSxFQUFFLENBQUMsY0FBYyxDQUFDLGFBQWEsS0FBSyxJQUFJLEVBQUUsQ0FBQztnQkFDN0MsMEhBQTBIO2dCQUMxSCxJQUFJLGtCQUFrQixFQUFFLENBQUM7b0JBQ3ZCLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsY0FBYyxFQUFFLGtCQUFrQixDQUFDLENBQUM7Z0JBQy9GLENBQUM7cUJBQU0sQ0FBQztvQkFDTixJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLGNBQWMsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO2dCQUNoRyxDQUFDO1lBRUgsQ0FBQztpQkFBTSxJQUFJLEVBQUUsQ0FBQyxLQUFLLEtBQUssU0FBUyxFQUFFLENBQUM7Z0JBQ2xDLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUM7Z0JBRW5CLCtDQUErQztnQkFDL0MsSUFBSSxFQUFFLENBQUMsY0FBYyxDQUFDLElBQUksS0FBSyxZQUFZLEVBQUUsQ0FBQztvQkFDNUMsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBQzdFLEVBQUUsQ0FBQyxjQUFjLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztnQkFDcEUsQ0FBQztnQkFFRCxRQUFRLFNBQVMsRUFBRSxDQUFDO29CQUNsQixLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUM7d0JBQ2QsSUFBSSxHQUFHLEtBQUssSUFBSSxFQUFFLENBQUM7NEJBQ2pCLDRFQUE0RTs0QkFDNUUsMkNBQTJDOzRCQUMzQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztnQ0FDeEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxjQUFjLEVBQUUsa0JBQWtCLENBQUMsQ0FBQTs0QkFDOUYsQ0FBQztpQ0FBTSxDQUFDO2dDQUNOLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsY0FBYyxFQUFFLGtCQUFrQixDQUFDLENBQUE7NEJBQzdGLENBQUM7d0JBQ0gsQ0FBQzt3QkFDRCxNQUFNO29CQUNSLENBQUM7b0JBQ0QsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDO3dCQUNkLHlEQUF5RDt3QkFDekQsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxjQUFjLEVBQUUsa0JBQWtCLENBQUMsQ0FBQTt3QkFDM0YsTUFBTTtvQkFDUixDQUFDO29CQUNELEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQzt3QkFDWiw2RUFBNkU7d0JBQzdFLDBGQUEwRjt3QkFDMUYsNEZBQTRGO3dCQUM1RixJQUFJLEdBQUcsS0FBSyxJQUFJLElBQUksQ0FBQyxXQUFXLElBQUksV0FBVyxDQUFDLEVBQUUsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssU0FBUyxDQUFDLEVBQUUsQ0FBQzs0QkFDdkYsc0NBQXNDOzRCQUN0QyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLGNBQWMsRUFBRSxrQkFBa0IsQ0FBQyxDQUFBO3dCQUM3RixDQUFDO3dCQUNELE1BQU07b0JBQ1IsQ0FBQztnQkFDSCxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDO2lCQUM5QixPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUU7Z0JBQ3BCLElBQUksZ0JBQWdCLEdBQW9CLFdBQVcsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQ3pFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO1lBQzVGLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztJQUNILENBQUM7SUFFTyxZQUFZLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLGtCQUFrQjtRQUNwRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3pDLEtBQUssTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQzlDLElBQUksQ0FBQyxZQUFZLFVBQVUsSUFBSSxDQUFDLENBQUMsUUFBUSxLQUFLLElBQUksRUFBRSxDQUFDO29CQUNuRCxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDO2dCQUNwQixDQUFDO3FCQUFNLElBQUksQ0FBQyxFQUFFLENBQUM7b0JBQ2IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDO2dCQUNuRCxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxZQUFZLFVBQVUsSUFBSSxLQUFLLENBQUMsUUFBUSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ3RILENBQUM7UUFDRCxJQUFJLGtCQUFrQixJQUFJLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUMvQyxvREFBb0Q7WUFDcEQsSUFBSSxDQUFDLEdBQUcsR0FBRyxPQUFPLENBQUMsR0FBRyxXQUFXLENBQUMsUUFBUSxDQUFDO1FBQzdDLENBQUM7SUFDSCxDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQUssRUFBRSxXQUFXO1FBQzVCLElBQUksV0FBVyxDQUFDLElBQUksS0FBSyxVQUFVLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDN0QsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksQ0FBQyxLQUFLLFlBQVksSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDcEYsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsWUFBWSxDQUFDLENBQUM7WUFDdEQsQ0FBQztpQkFBTSxJQUFJLEtBQUssWUFBWSxVQUFVLEVBQUUsQ0FBQztnQkFDdkMsT0FBTyxJQUFJLFVBQVUsQ0FDbkIsS0FBSyxDQUFDLFFBQVEsRUFDZCxLQUFLLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsWUFBWSxDQUFDLEVBQzNFLEtBQUssQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxZQUFZLENBQUMsRUFDN0UsS0FBSyxFQUFFLE1BQU0sRUFDYixLQUFLLEVBQUUsY0FBYyxDQUN0QixDQUFDO1lBQ0osQ0FBQztRQUNILENBQUM7UUFFRCxJQUFJLFdBQVcsQ0FBQyxJQUFJLEtBQUssT0FBTyxFQUFFLENBQUM7WUFDakMsQ0FBQyxXQUFXLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRTtnQkFDeEMsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUM1RSxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFHRCxnREFBZ0Q7SUFFaEQ7Ozs7OztPQU1HO0lBQ0ssZUFBZSxDQUFDLEtBQW1CLEVBQUUsV0FBNEIsRUFBRSxXQUFnQixFQUFFLE9BQWdCO1FBRTNHLElBQUksSUFBSSxDQUFDO1FBQ1QsSUFBSSxJQUFJLENBQUM7UUFFVCxtQkFBbUI7UUFDbkIsSUFBSSxXQUFXLENBQUMsSUFBSSxLQUFLLFVBQVUsSUFBSSxXQUFXLENBQUMsSUFBSSxLQUFLLGVBQWUsRUFBRSxDQUFDO1lBRTVFLG1DQUFtQztZQUNuQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsSUFBSSxXQUFXLENBQUMsUUFBUSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDL0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsd0JBQXdCLEVBQUUsV0FBVyxDQUFDLENBQUM7Z0JBQ3pELE9BQU87WUFDVCxDQUFDO1lBRUQsSUFBSSxHQUFHLElBQUksZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQy9CLElBQUksQ0FBQyxZQUFZLEdBQUc7Z0JBQ2xCLEtBQUssRUFBRSxXQUFXLENBQUMsS0FBSztnQkFDeEIsTUFBTSxFQUFFLFdBQVcsQ0FBQyxNQUFNO2dCQUMxQixJQUFJLEVBQUUsV0FBVyxDQUFDLElBQUk7YUFDdkIsQ0FBQztZQUVGLElBQUksT0FBTyxLQUFLLE1BQU0sSUFBSSxPQUFPLEtBQUssTUFBTSxFQUFFLENBQUM7Z0JBQzdDLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQztZQUNwQyxDQUFDO1lBRUQsS0FBSyxJQUFJLENBQUMsSUFBSSxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ25DLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztZQUN2QyxDQUFDO1lBQ0QsSUFBSSxHQUFHLE9BQU8sSUFBSSxJQUFJLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3hDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxHQUFHLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsSUFBSSxLQUFLLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxJQUFJLElBQUksSUFBSSxFQUFFLENBQUM7UUFDN0csQ0FBQzthQUFNLENBQUM7WUFDTixtQkFBbUI7WUFDbkIsc0VBQXNFO1lBQ3RFLHVDQUF1QztZQUN2QyxJQUFJLEdBQUcsSUFBSSx3QkFBd0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUN4QyxJQUFJLENBQUMscUJBQXFCLEdBQUc7Z0JBQzNCLDZDQUE2QztnQkFDN0MsV0FBVyxFQUFFLFdBQVcsQ0FBQyxJQUFJO2dCQUM3QixTQUFTLEVBQUUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsU0FBUzthQUNqRCxDQUFDO1lBQ0YsSUFBSSxLQUFLLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxTQUFTLEtBQUssUUFBUSxJQUFJLFdBQVcsQ0FBQyxLQUFLLEtBQUssSUFBSSxFQUFFLENBQUM7Z0JBQ3JGLFdBQVcsQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1lBQ25DLENBQUM7WUFDRCxvREFBb0Q7WUFDcEQsd0NBQXdDO1lBQ3hDLElBQUksS0FBVSxDQUFDO1lBQ2YsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUNyQyx3REFBd0Q7Z0JBQ3hELEtBQUssR0FBRyxFQUFFLENBQUM7Z0JBQ1gsV0FBVyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtvQkFDOUIsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzlELENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLEtBQUssR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDO1lBQzVCLENBQUM7WUFFRCwwREFBMEQ7WUFDMUQsSUFBSSxXQUFXLENBQUMsSUFBSSxLQUFLLFlBQVksSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ3pFLFdBQVcsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUN2RixDQUFDO1lBRUQsaUNBQWlDO1lBQ2pDLElBQUksZUFBZSxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUMsUUFBUSxJQUFJLENBQUMsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDO1lBQzNFLElBQUksV0FBVyxHQUFHLElBQUksaUJBQWlCLENBQUM7Z0JBQ3RDLEtBQUssRUFBRSxLQUFLO2dCQUNaLFFBQVEsRUFBRSxlQUFlO2FBQzFCLENBQUMsQ0FBQztZQUVILFdBQVcsQ0FBQyxRQUFRLEdBQUcsZUFBZSxDQUFDO1lBRXZDLFdBQVcsQ0FBQyxjQUFjLEdBQUcsV0FBVyxDQUFDO1lBQ3pDLEtBQUssQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxXQUFXLENBQUM7WUFFakUsSUFBSSxXQUFXLENBQUMsSUFBSSxLQUFLLFlBQVksSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEtBQUssUUFBUSxJQUFJLFdBQVcsQ0FBQyxjQUFjLEtBQUssVUFBVSxDQUFDLEVBQUUsQ0FBQztnQkFDdEgsV0FBVyxDQUFDLGNBQWMsQ0FBQyxXQUFXLEdBQUcsQ0FBQyxJQUFjLEVBQUUsRUFBRTtvQkFDMUQsV0FBVyxDQUFDLGNBQWMsQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO2dCQUNuRCxDQUFDLENBQUM7Z0JBQ0YsV0FBVyxDQUFDLGNBQWMsQ0FBQyxvQkFBb0IsR0FBRyxDQUFDLElBQWMsRUFBRSxFQUFFO29CQUNuRSxXQUFXLENBQUMsY0FBYyxDQUFDLHVCQUF1QixHQUFHLElBQUksQ0FBQztnQkFDNUQsQ0FBQyxDQUFDO1lBQ0osQ0FBQztZQUVELElBQUksV0FBVyxDQUFDLElBQUksS0FBSyxRQUFRLElBQUksV0FBVyxDQUFDLGNBQWMsS0FBSyxVQUFVLEVBQUUsQ0FBQztnQkFDL0UsV0FBVyxDQUFDLGNBQWMsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxVQUFlLEVBQUUsRUFBRTtvQkFDdkQsV0FBVyxDQUFDLGNBQWMsQ0FBQyxJQUFJLEdBQUcsVUFBVSxDQUFDO2dCQUMvQyxDQUFDLENBQUM7WUFDSixDQUFDO1lBRUQsSUFBSSxXQUFXLENBQUMsSUFBSSxLQUFLLGNBQWMsRUFBRSxDQUFDO2dCQUN4QyxXQUFXLENBQUMsY0FBYyxDQUFDLFNBQVMsR0FBRyxDQUFDLFlBQWlCLEVBQUUsRUFBRTtvQkFDM0QsV0FBVyxDQUFDLGNBQWMsQ0FBQyxNQUFNLEdBQUcsWUFBWSxDQUFDO2dCQUNuRCxDQUFDLENBQUM7WUFDSixDQUFDO1lBRUQsSUFBSSxXQUFXLENBQUMsSUFBSSxLQUFLLE9BQU8sRUFBRSxDQUFDO2dCQUNqQyxXQUFXLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQztZQUMvRCxDQUFDO1lBRUQsSUFBSSxXQUFXLENBQUMsSUFBSSxLQUFLLFdBQVcsRUFBRSxDQUFDO2dCQUNyQyxXQUFXLENBQUMsY0FBYyxDQUFDLGVBQWUsR0FBRyxDQUFDLGtCQUF5RSxFQUFFLFdBQXNCLEVBQUUsRUFBRTtvQkFDakosV0FBVyxDQUFDLGNBQWMsQ0FBQyxZQUFZLEdBQUcsa0JBQWtCLENBQUM7b0JBQzdELFdBQVcsQ0FBQyxjQUFjLENBQUMsaUJBQWlCLEdBQUcsV0FBVyxDQUFDO2dCQUM3RCxDQUFDLENBQUM7WUFDSixDQUFDO1lBRUQsSUFBSSxLQUFLLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxTQUFTLEtBQUssUUFBUSxFQUFFLENBQUM7Z0JBQ3ZELGtFQUFrRTtnQkFDbEUsV0FBVyxDQUFDLGNBQWMsQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO2dCQUM1Qyx1Q0FBdUM7Z0JBQ3ZDLFdBQVcsQ0FBQyxjQUFjLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztZQUM5QyxDQUFDO1lBRUQsNEJBQTRCO1lBQzVCLElBQUksSUFBSSxHQUFHLFdBQVcsQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDO1lBQ2xELElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ3JDLFdBQVcsQ0FBQyxjQUFjLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztZQUNoRCxDQUFDO1lBRUQsc0VBQXNFO1lBQ3RFLHFDQUFxQztZQUNyQyxLQUFLLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsV0FBVyxDQUFDLGNBQWMsQ0FBQztZQUUvRSwrREFBK0Q7WUFDL0Qsc0NBQXNDO1lBQ3RDLElBQUksWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsSUFBSSxLQUFLLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ2hHLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtnQkFDM0IsSUFBSSxXQUFXLENBQUMsY0FBYyxDQUFDLElBQUksS0FBSyxXQUFXLEVBQUUsQ0FBQztvQkFDcEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFO3dCQUM5RixJQUFJLENBQUMsRUFBRSxDQUFDOzRCQUNOLFdBQVcsQ0FBQyxjQUFjLENBQUMsUUFBUSxHQUFHLFdBQVcsQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzt3QkFDMUYsQ0FBQzs2QkFBTSxDQUFDOzRCQUNOLE9BQU8sV0FBVyxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUM7d0JBQzdDLENBQUM7b0JBQ0gsQ0FBQyxDQUFDLENBQUM7Z0JBQ0wsQ0FBQztnQkFFRCxJQUFJLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBRWpDLElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyxjQUFjLEVBQUUsQ0FBQztvQkFDdkMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNyRCxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFDSCxLQUFLLENBQUMsYUFBYSxDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUVqRSxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7WUFDL0MsSUFBSSxHQUFHLEtBQUssR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDO1FBQ2xDLENBQUM7UUFDRCxXQUFXLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSyxXQUFXLENBQUMsS0FBbUIsRUFBRSxLQUFVLEVBQUUsSUFBUztRQUM1RCxJQUFJLEtBQUssSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDdEQsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELHVEQUF1RDtJQUMvQyxpQkFBaUIsQ0FBQyxLQUFtQixFQUFFLFFBQVEsRUFBRSxJQUFJO1FBRTNELFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDekIsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDO2dCQUVsQyxPQUFPLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztnQkFDckQsSUFBSSxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7b0JBQ2xCLHNDQUFzQztvQkFDdEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO2dCQUM1QyxDQUFDO1lBQ0gsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQztZQUN2QixDQUFDO1lBQ0QsSUFBSSxPQUFPLENBQUMsSUFBSSxLQUFLLE9BQU8sSUFBSSxPQUFPLENBQUMsUUFBUSxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNoRixJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDeEQsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELDhFQUE4RTtJQUM5RSw4RUFBOEU7SUFDOUUsa0NBQWtDO0lBQzFCLGNBQWMsQ0FBQyxLQUFtQixFQUFFLElBQUksRUFBRSxPQUFPO1FBRXZELElBQUksS0FBSyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsU0FBUyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ3ZELG1EQUFtRDtRQUNyRCxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksT0FBTyxDQUFDLElBQUksS0FBSyxjQUFjLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLEVBQUUsQ0FBQztnQkFDcEUsT0FBTyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsQ0FBQztZQUNsRCxDQUFDO2lCQUFNLElBQUksT0FBTyxDQUFDLElBQUksS0FBSyxZQUFZLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLEVBQUUsQ0FBQztnQkFDekUsT0FBTyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsQ0FBQztnQkFDaEQsT0FBTyxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQyxDQUFDLHFCQUFxQixDQUFDO1lBQ3JGLENBQUM7aUJBQU0sSUFBSSxPQUFPLENBQUMsSUFBSSxLQUFLLFdBQVcsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDO2dCQUN4RSxPQUFPLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQyxDQUFDO1lBQ2xELENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVPLFlBQVksQ0FBQyxXQUFnQixFQUFFLFFBQWE7UUFFbEQsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNiLFFBQVEsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUN6QixLQUFLLGNBQWMsQ0FBQyxDQUFDLENBQUM7b0JBQ3BCLElBQUksT0FBTyxRQUFRLEtBQUssUUFBUSxFQUFFLENBQUM7d0JBQ2pDLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxxQkFBcUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztvQkFDNUQsQ0FBQzt5QkFBTSxJQUFJLFFBQVEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7d0JBQ2pDLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxxQkFBcUIsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDL0QsQ0FBQzt5QkFBTSxJQUFJLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7d0JBQy9CLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxzQkFBc0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztvQkFDN0QsQ0FBQztvQkFDRCxNQUFNO2dCQUNSLENBQUM7Z0JBQ0QsS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDO29CQUNqQixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyx3QkFBd0IsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztnQkFDekcsQ0FBQztnQkFDRCxLQUFLLFlBQVksQ0FBQyxDQUFDLENBQUM7b0JBQ2xCLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO3dCQUMzRixPQUFPLEtBQUssQ0FBQyxxQkFBcUIsS0FBSyxRQUFRLENBQUM7b0JBQ2xELENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ04sQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEIsQ0FBQztJQUVPLFNBQVMsQ0FBQyxJQUFJLEVBQUUsT0FBTztRQUU3QiwrREFBK0Q7UUFDL0QsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDeEIsSUFBSSxPQUFPLENBQUMsSUFBSSxLQUFLLE9BQU8sRUFBRSxDQUFDO2dCQUM3QixPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDOUUsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLFFBQVEsS0FBSyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUN0RSxDQUFDO1FBQ0gsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNDLENBQUM7SUFDSCxDQUFDO0lBRU8sU0FBUyxDQUFDLEtBQW1CLEVBQUUsSUFBSSxFQUFFLE9BQU87UUFFbEQsSUFBSSxLQUFLLENBQUM7UUFDVixJQUFJLEtBQUssQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLFNBQVMsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUN2RCxJQUFJLEtBQUssQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO2dCQUMzQixJQUFJLE9BQU8sQ0FBQyxJQUFJLEtBQUssVUFBVSxJQUFJLE9BQU8sQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUFFLENBQUM7b0JBQzdELEtBQUssR0FBRyxhQUFhLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztnQkFDekQsQ0FBQztxQkFBTSxDQUFDO29CQUNOLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUM3QixDQUFDO1lBQ0gsQ0FBQztpQkFBTSxJQUFJLE9BQU8sQ0FBQyxJQUFJLEtBQUssT0FBTyxFQUFFLENBQUM7Z0JBQ3BDLEtBQUssR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLDBCQUEwQixDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN0SCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLEtBQUssT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUM1RCxLQUFLLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3hFLENBQUM7UUFDSCxDQUFDO2FBQU0sQ0FBQztZQUVOLElBQUksT0FBTyxDQUFDLElBQUksS0FBSyxVQUFVLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUN0RCxLQUFLLEdBQUcsSUFBSSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztZQUNuTSxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDN0IsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxPQUF1QixFQUFFLFlBQW9CO1FBQ3BFLE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLFlBQVksR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7SUFFTyxlQUFlLENBQUMsV0FBNEIsRUFBRSxLQUFtQjtRQUN2RSxJQUFJLFdBQVcsRUFBRSxDQUFDO1lBQ2hCLEtBQUssSUFBSSxHQUFHLElBQUksV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNyQyxNQUFNLE9BQU8sR0FBRyxXQUFXLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBUSxDQUFDO2dCQUNqRCxJQUFJLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQztvQkFDckIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQ3ZDLENBQUM7cUJBQU0sQ0FBQztvQkFDTixLQUFLLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDO29CQUN6RSxPQUFPLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQ3RDLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQyxNQUFNLENBQ3ZELENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUMxRCxDQUFDLENBQUM7b0JBQ0gsT0FBTyxDQUFDLHNCQUFzQixFQUFFLENBQUM7Z0JBQ25DLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRDs7Ozs7TUFLRTtJQUNNLGNBQWMsQ0FBQyxLQUFtQixFQUFFLFdBQWdCO1FBQzFELElBQUksYUFBYSxHQUFHLGNBQWMsQ0FBQyxhQUFhLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3JHLGdEQUFnRDtRQUNoRCxJQUFJLEtBQUssQ0FBQyxhQUFhLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDdkMsYUFBYSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUMvRCxDQUFDO1FBRUQsT0FBTyxhQUFhLENBQUM7SUFDdkIsQ0FBQztJQUVPLG1CQUFtQixDQUFDLEtBQW1CLEVBQUUsaUJBQTBDO1FBQ3pGLElBQUksRUFBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUMsR0FBc0IsQ0FBQyxLQUFLLENBQUMsV0FBVyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBRXJGLElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN2QyxLQUFLLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUM3RSwyREFBMkQ7WUFDM0QsS0FBSyxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztZQUNyRDs7ZUFFRztZQUNILEtBQUssQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7WUFDckQsS0FBSyxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztZQUNyRDs7ZUFFRztZQUNILEtBQUssQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7WUFFL0M7OztlQUdHO1lBQ0gsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixJQUFJLEtBQUssQ0FBQyxhQUFhLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQzVGLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLElBQUksR0FBRyxHQUFHLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDO2dCQUN0RyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyx3QkFBd0IsR0FBRyxVQUFVLENBQUMsQ0FBQztnQkFDekQsaUJBQWlCLENBQUMsYUFBYSxDQUM3QixLQUFLLENBQUMsYUFBYSxDQUFDLGNBQWMsRUFDbEMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUNwQyxVQUFVLENBQ1gsQ0FBQztZQUNKLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7Ozs7U0FTSztJQUVHLHlCQUF5QixDQUFDLEtBQW1CO1FBQ25ELE9BQU8sQ0FBQyxlQUFlLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFFakMsMEJBQTBCO1lBQzFCLElBQUksRUFBRSxHQUFzQixLQUFLLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxlQUFlLENBQXNCLENBQUM7WUFDbkcsSUFBSSxFQUFFLEVBQUUsQ0FBQztnQkFFUCxpQ0FBaUM7Z0JBQ2pDLFFBQVEsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO29CQUNwQixLQUFLLE9BQU8sQ0FBQyxDQUFDLENBQUM7d0JBQ2IsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDOzRCQUNuQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO3dCQUM1QyxDQUFDOzZCQUFNLENBQUM7NEJBQ04sRUFBRSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQzs0QkFDMUMsSUFBSSxFQUFFLENBQUMsS0FBSyxLQUFLLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQ0FDakMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7Z0NBQy9CLEVBQUUsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO2dDQUM1QixFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7NEJBQ25CLENBQUM7d0JBQ0gsQ0FBQzt3QkFDRCxLQUFLLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQzt3QkFDdkMsTUFBTTtvQkFDUixDQUFDO29CQUNELEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQzt3QkFDaEIsSUFBSSxFQUFFLENBQUMsY0FBYyxDQUFDLFFBQVEsS0FBSyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7NEJBQ25ELEVBQUUsQ0FBQyxjQUFjLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUM7NEJBQzdDLHVCQUF1Qjs0QkFDdkIsNEdBQTRHOzRCQUM1RyxFQUFFLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLGNBQWMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7NEJBQzlJLHVGQUF1Rjs0QkFDdkYsaUJBQWlCOzRCQUNqQixFQUFFLENBQUMsYUFBYSxFQUFFLENBQUM7NEJBQ25CLEVBQUUsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO3dCQUM5QixDQUFDO3dCQUNELE1BQU07b0JBQ1IsQ0FBQztvQkFDRCxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUM7d0JBQ2hCLEVBQUUsQ0FBQyxjQUFjLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUM7d0JBQzdDLElBQUksTUFBTSxDQUFDLFFBQVEsS0FBSyxJQUFJLEVBQUUsQ0FBQzs0QkFDN0IsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDO3dCQUNmLENBQUM7NkJBQU0sQ0FBQzs0QkFDTixFQUFFLENBQUMsTUFBTSxFQUFFLENBQUM7d0JBQ2QsQ0FBQzt3QkFDRCxNQUFNO29CQUNSLENBQUM7b0JBQ0QsS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFDO3dCQUNiLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7NEJBQ2hGLEVBQUUsQ0FBQyxjQUFjLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUM7NEJBQzFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQzs0QkFDbkIsRUFBRSxDQUFDLHNCQUFzQixFQUFFLENBQUM7d0JBQzlCLENBQUM7d0JBQ0QsTUFBTTtvQkFDUixDQUFDO29CQUNELG1EQUFtRDtvQkFDbkQsS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDO3dCQUNqQixFQUFFLENBQUMsY0FBYyxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDO3dCQUM5QyxNQUFNO29CQUNSLENBQUM7b0JBQ0Qsa0RBQWtEO29CQUNsRCxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUM7d0JBQ2hCLEVBQUUsQ0FBQyxjQUFjLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUM7d0JBQzdDLE1BQU07b0JBQ1IsQ0FBQztvQkFDRCwwQ0FBMEM7b0JBQzFDLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQzt3QkFDakIsRUFBRSxDQUFDLGNBQWMsQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQzt3QkFDOUMsTUFBTTtvQkFDUixDQUFDO29CQUNELDRDQUE0QztvQkFDNUMsS0FBSyxhQUFhLENBQUMsQ0FBQyxDQUFDO3dCQUNuQixFQUFFLENBQUMsY0FBYyxDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDO3dCQUNoRCxNQUFNO29CQUNSLENBQUM7Z0JBQ0gsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDLENBQUE7SUFDSCxDQUFDO0lBRU8sd0JBQXdCLENBQUMsRUFBRSxFQUFFLE1BQU07UUFDekMsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQztRQUMvQixNQUFNLFVBQVUsR0FBRyxFQUFFLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQztRQUMxQyx1RUFBdUU7UUFDdkUsUUFBUSxVQUFVLEVBQUUsQ0FBQztZQUNuQixLQUFLLGNBQWMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3BCLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLGNBQWMsRUFBRSxNQUFNLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU7b0JBQ3pELEVBQUUsQ0FBQyxjQUFjLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQztnQkFDakMsQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsTUFBTTtZQUNSLENBQUM7WUFDRCxLQUFLLFlBQVksQ0FBQyxDQUFDLENBQUM7Z0JBQ2xCLElBQUksQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztvQkFDMUMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ25HLENBQUM7Z0JBQ0QsTUFBTTtZQUNSLENBQUM7WUFDRCxLQUFLLE9BQU8sQ0FBQyxDQUFDLENBQUM7Z0JBQ2IsTUFBTSxpQkFBaUIsR0FBRyxFQUFFLENBQUM7Z0JBQzdCLEVBQUUsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtvQkFDckMsSUFBSSxDQUFDLENBQUMsSUFBSSxLQUFLLGNBQWMsSUFBSSxDQUFDLENBQUMsSUFBSSxLQUFLLFlBQVksRUFBRSxDQUFDO3dCQUN6RCxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUNoQyxDQUFDO2dCQUNILENBQUMsQ0FBQyxDQUFDO2dCQUNILElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUMxQyxJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUM7b0JBQ2IsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTt3QkFDdkIsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7NEJBQ2pDLElBQUksaUJBQWlCLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztnQ0FDM0IsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDbkUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO29DQUNOLElBQUksQ0FBQyxFQUFFLENBQUM7d0NBQ04sT0FBTyxDQUFDLEdBQUcsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7b0NBQzdCLENBQUM7eUNBQU0sQ0FBQzt3Q0FDTixPQUFPLE9BQU8sQ0FBQyxHQUFHLEdBQUcsT0FBTyxDQUFDLENBQUM7b0NBQ2hDLENBQUM7Z0NBQ0gsQ0FBQyxDQUFDLENBQ0gsQ0FBQyxDQUFDOzRCQUNMLENBQUM7d0JBQ0gsQ0FBQyxDQUFDLENBQUM7b0JBQ0wsQ0FBQyxDQUFDLENBQUM7b0JBQ0gsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7Z0JBQ3BFLENBQUM7Z0JBQ0QsTUFBTTtZQUNSLENBQUM7UUFDSCxDQUFDO1FBQ0QsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRU8saUJBQWlCLENBQUMsRUFBRSxFQUFFLFFBQVE7UUFDcEMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM5QyxFQUFFLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUNuQyxFQUFFLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUM1QixFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVPLDZCQUE2QjtRQUNuQyxJQUFJLENBQUMsMkJBQTJCLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUUsWUFBWSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRU8sMkJBQTJCO1FBQ2pDLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQztRQUNiLElBQUksQ0FBQztZQUNILE1BQU0sT0FBTyxHQUFhLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxDQUFDO1lBQzFGLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUM7Z0JBQUUsR0FBRyxHQUFHLE9BQU8sQ0FBQztRQUM1QyxDQUFDO1FBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNYLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDbEIsQ0FBQztRQUNELE9BQU8sQ0FBQyxLQUFLLENBQUMsU0FBUyxHQUFHLENBQUMsTUFBTSw0QkFBNEIsQ0FBQyxDQUFDO1FBQy9ELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQzs4R0FoekJVLHVCQUF1QjtrSEFBdkIsdUJBQXVCOzsyRkFBdkIsdUJBQXVCO2tCQURuQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEYXRlUGlwZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1ZhbGlkYXRvckZuLCBWYWxpZGF0b3JzfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge0xvZ2dlciwgUmFuZ2VWYWx1ZSwgU2VhcmNoRmlsdGVyLCBTZWFyY2hTZXJ2aWNlLCBTeXN0ZW1TZXJ2aWNlLCBVdGlscywgU2VhcmNoUGFyYW1zfSBmcm9tICdAZW8tc2RrL2NvcmUnO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIGZvcmtKb2luLCBPYnNlcnZhYmxlLCBvZiwgU3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcbmltcG9ydCB7ZGVib3VuY2VUaW1lLCB0YXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtQbHVnaW5zU2VydmljZX0gZnJvbSAnLi4vLi4vZW8tZnJhbWV3b3JrLWNvcmUvYXBpL3BsdWdpbnMuc2VydmljZSc7XG5pbXBvcnQge1JlZmVyZW5jZVNlcnZpY2V9IGZyb20gJy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL3JlZmVyZW5jZXMvcmVmZXJlbmNlLnNlcnZpY2UnO1xuaW1wb3J0IHtPYmplY3RGb3JtT3B0aW9uc30gZnJvbSAnLi9vYmplY3QtZm9ybS1vcHRpb25zLmludGVyZmFjZSc7XG5pbXBvcnQge0Zvcm1WYWxpZGF0aW9ufSBmcm9tICcuL29iamVjdC1mb3JtL2Zvcm0tdmFsaWRhdGlvbi9mb3JtLXZhbGlkYXRpb24nO1xuaW1wb3J0IHtPYmplY3RGb3JtQ29udHJvbH0gZnJvbSAnLi9vYmplY3QtZm9ybS9vYmplY3QtZm9ybS1jb250cm9sJztcbmltcG9ydCB7T2JqZWN0Rm9ybUNvbnRyb2xXcmFwcGVyfSBmcm9tICcuL29iamVjdC1mb3JtL29iamVjdC1mb3JtLWNvbnRyb2wtd3JhcHBlcic7XG5pbXBvcnQge09iamVjdEZvcm1Hcm91cH0gZnJvbSAnLi9vYmplY3QtZm9ybS9vYmplY3QtZm9ybS1ncm91cC5tb2RlbCc7XG5pbXBvcnQge09iamVjdEZvcm1TY3JpcHRTZXJ2aWNlfSBmcm9tICcuL29iamVjdC1mb3JtL29iamVjdC1mb3JtLXNjcmlwdC9vYmplY3QtZm9ybS1zY3JpcHQuc2VydmljZSc7XG5pbXBvcnQge09iamVjdEZvcm1TY3JpcHRpbmdTY29wZX0gZnJvbSAnLi9vYmplY3QtZm9ybS9vYmplY3QtZm9ybS1zY3JpcHQvb2JqZWN0LWZvcm0tc2NyaXB0aW5nLXNjb3BlJztcbmltcG9ydCB7T2JqZWN0Rm9ybU1vZGVsfSBmcm9tICcuL29iamVjdC1mb3JtL29iamVjdC1mb3JtLm1vZGVsJztcblxuZXhwb3J0IGludGVyZmFjZSBGb3JtR2VuU2NvcGUge1xuICBnQ291bnQ6IG51bWJlcjtcbiAgZm9ybU9wdGlvbnM6IE9iamVjdEZvcm1PcHRpb25zO1xuICBpc0lubmVyVGFibGVGb3JtOiBib29sZWFuO1xuICBpbml0aWFsVmFsaWRhdG9yczoge1tuYW1lOiBzdHJpbmddOiBWYWxpZGF0b3JGbiB8IG51bGx9O1xuICBmb3JtR2VuUmVzdWx0OiBGb3JtR2VuUmVzdWx0O1xufVxuZXhwb3J0IGludGVyZmFjZSBGb3JtR2VuUmVzdWx0IHtcbiAgLy8gRm9ybSBjb250cm9scyBnZW5lcmF0ZWQgZnJvbSB0aGUgbW9kZWwgYXMgJ1F1aWNrIGFjY2VzcyBvYmplY3QnXG4gIC8vIEZvcm0gZWxlbWVudHMgbmFtZSBpcyBrZXkgYW5kIHRoZSB2YWx1ZSBpcyB0aGUgZm9ybSBjb250cm9sIGl0c2VsZlxuICBmb3JtQ29udHJvbHM6IHtbbmFtZTogc3RyaW5nXTogT2JqZWN0Rm9ybUNvbnRyb2x9O1xuICBmb3JtTW9kZWw6IGFueSxcbiAgLy8gU3Vic2NyaXB0aW9ucyB0byB2YWx1ZSBjaGFuZ2VzIG9mIHRoZSBnZW5lcmF0ZWQgZm9ybSBjb250cm9sc1xuICAvLyBZb3Ugc2hvdWxkIGFsd2F5cyB1bnN1YnNjcmliZSBmcm9tIGFsbCBvZiB0aGVtIHdoZW4gY29uc3VtaW5nXG4gIC8vIGNvbXBvbmVudCBpcyBkZXN0cm95ZWRcbiAgY29udHJvbFZhbHVlU3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW107XG4gIHNjcmlwdGluZ1Njb3BlOiBPYmplY3RGb3JtU2NyaXB0aW5nU2NvcGU7XG4gIHNjcmlwdE1vZGVsOiB7W25hbWU6IHN0cmluZ106IGFueX07XG4gIGZvcm06IE9iamVjdEZvcm1Hcm91cDtcbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE9iamVjdEZvcm1IZWxwZXJTZXJ2aWNlIHtcblxuICBwcml2YXRlIGRhdGVQaXBlID0gbmV3IERhdGVQaXBlKCdlbicpO1xuICBwcml2YXRlIFRFTVBfU1RPUkFHRV9FTlRSSUVTX0tFWSA9ICdlby5jbXAub2JqZWN0Zm9ybS50bXBzdG9yYWdlLmVudHJpZXMnO1xuICBwcml2YXRlIF9sYXRlc3RGb3JtRWxlbWVudENoYW5nZXM6IEJlaGF2aW9yU3ViamVjdDxTZWFyY2hQYXJhbXM+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxTZWFyY2hQYXJhbXM+KHt9KTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGxvZ2dlcjogTG9nZ2VyLFxuICAgIHByaXZhdGUgcmVmZXJlbmNlU2VydmljZTogUmVmZXJlbmNlU2VydmljZSxcbiAgICBwcml2YXRlIHNlYXJjaFNlcnZpY2U6IFNlYXJjaFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwbHVnaW5TZXJ2aWNlOiBQbHVnaW5zU2VydmljZSxcbiAgICBwcml2YXRlIHN5c3RlbVNlcnZpY2U6IFN5c3RlbVNlcnZpY2UpIHtcbiAgICB0aGlzLl9jbGVhclRlbXBvcmFyeVN0b3JhZ2VFbnRyaWVzKCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0dGVyIGZvciByZXRyaWV2aW5nIHRoZSBsYXRlc3QgZm9ybSBlbGVtZW50IGNoYW5nZXMgYXMgYW4gb2JzZXJ2YWJsZS5cbiAgICpcbiAgICogVGhpcyBnZXR0ZXIgcmV0dXJucyBhbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIGxhdGVzdCBjaGFuZ2VzIHRvIHRoZSBmb3JtIGVsZW1lbnRzLlxuICAgKiBJdCBhbGxvd3Mgc3Vic2NyaWJlcnMgdG8gcmVhY3QgdG8gY2hhbmdlcyBpbiB0aGUgZm9ybSBlbGVtZW50cyBpbiByZWFsLXRpbWUuXG4gICAqXG4gICAqIEByZXR1cm5zIHtPYnNlcnZhYmxlPFNlYXJjaFBhcmFtcz59IC0gQW4gb2JzZXJ2YWJsZSBlbWl0dGluZyB0aGUgbGF0ZXN0IGZvcm0gZWxlbWVudCBjaGFuZ2VzLlxuICAgKi9cbiAgZ2V0IGxhdGVzdEZvcm1FbGVtZW50Q2hhbmdlcyQoKTogT2JzZXJ2YWJsZTxTZWFyY2hQYXJhbXM+IHtcbiAgICByZXR1cm4gdGhpcy5fbGF0ZXN0Rm9ybUVsZW1lbnRDaGFuZ2VzLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlcyBhIHJlYWN0aXZlIGZvcm0gYmFzZWQgb24gYSBmb3JtIG1vZGVsIHRoYXQgbWF5IGFsc28gaW5jbHVkZSBmb3JtIHNjcmlwdHMuXG4gICAqIEBwYXJhbSBmb3JtT3B0aW9ucyBgT2JqZWN0Rm9ybU9wdGlvbnNgIGRlZmluaW5nIHRoZSBmb3JtXG4gICAqIEBwYXJhbSBmb3JtU2NyaXB0U2VydmljZSBJbnN0YW5jZSBvZiBhIGBPYmplY3RGb3JtU2NyaXB0U2VydmljZWAuIFRoaXMgc2VydmljZSBpcyBzdXBwb3NlZCB0byBiZVxuICAgKiBzY29wZWQgdG8gdGhlIGNvbXBvbmVudCByZW5kZXJpbmcgdGhlIGZvcm0gKHByb3ZpZGVycyBhcnJheSBpbiBjb21wb25lbnQgZGVjb3JhdG9yKS5cbiAgICogQHBhcmFtIGlzSW5uZXJUYWJsZUZvcm0gd2hldGhlciBvciBub3QgdGhlIGZvcm0gaXMgcGFydCBvZiBhbm90aGVyIGZvcm0gKGFzIGlzIHdpdGggdGFibGUgZWRpdCBmb3JtcylcbiAgICogQHJldHVybnMgQW4gYEZvcm1HZW5SZXN1bHRgIG9iamVjdFxuICAgKi9cbiAgYnVpbGRSZWFjdGl2ZUZvcm0oXG4gICAgZm9ybU9wdGlvbnM6IE9iamVjdEZvcm1PcHRpb25zLFxuICAgIGZvcm1TY3JpcHRTZXJ2aWNlOiBPYmplY3RGb3JtU2NyaXB0U2VydmljZSxcbiAgICBpc0lubmVyVGFibGVGb3JtPzogYm9vbGVhbik6IEZvcm1HZW5SZXN1bHQge1xuXG4gICAgY29uc3QgX3Njb3BlOiBGb3JtR2VuU2NvcGUgPSB7XG4gICAgICBnQ291bnQ6IDAsXG4gICAgICBmb3JtT3B0aW9ucyxcbiAgICAgIGlzSW5uZXJUYWJsZUZvcm0sXG4gICAgICBpbml0aWFsVmFsaWRhdG9yczoge30sXG4gICAgICBmb3JtR2VuUmVzdWx0OiB7XG4gICAgICAgIGZvcm1Db250cm9sczoge30sXG4gICAgICAgIGZvcm1Nb2RlbDoge30sXG4gICAgICAgIGNvbnRyb2xWYWx1ZVN1YnNjcmlwdGlvbnM6IFtdLFxuICAgICAgICBzY3JpcHRpbmdTY29wZTogdW5kZWZpbmVkLFxuICAgICAgICBzY3JpcHRNb2RlbDoge30sXG4gICAgICAgIGZvcm06IG51bGxcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBmb3JtTW9kZWwgPSB0aGlzLl9kYXRhVG9Gb3JtKF9zY29wZSwgZm9ybU9wdGlvbnMuZm9ybU1vZGVsLCBmb3JtT3B0aW9ucy5kYXRhKTtcbiAgICBfc2NvcGUuZm9ybUdlblJlc3VsdC5mb3JtTW9kZWwgPSBmb3JtTW9kZWw7XG4gICAgaWYgKCFmb3JtTW9kZWwpIHJldHVybjtcblxuICAgIC8vIGlmIGEgc2NyaXB0IGlzIGF2YWlsYWJsZSwgd2UnbGwgaW5pdCB0aGUgZm9ybSBzY3JpcHRpbmcgZm9yIHRoZVxuICAgIC8vIGN1cnJlbnQgZm9ybVxuICAgIGxldCBzY3JpcHRpbmdTY29wZTogT2JqZWN0Rm9ybVNjcmlwdGluZ1Njb3BlO1xuICAgIGlmIChfc2NvcGUuaXNJbm5lclRhYmxlRm9ybSB8fCAoZm9ybU1vZGVsLnNjcmlwdCAmJiBmb3JtTW9kZWwuc2NyaXB0Lmxlbmd0aCA+IDApKSB7XG4gICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnYWRkaW5nIGZvcm0gc2NyaXB0aW5nIHNjb3BlJyk7XG4gICAgICBzY3JpcHRpbmdTY29wZSA9IG5ldyBPYmplY3RGb3JtU2NyaXB0aW5nU2NvcGUoXG4gICAgICAgIGZvcm1Nb2RlbC5zaXR1YXRpb24sXG4gICAgICAgIHRoaXMuX2dldFNjcmlwdGluZ01vZGVsQ2hhbmdlZChfc2NvcGUpLFxuICAgICAgICB0aGlzLnBsdWdpblNlcnZpY2UuZ2V0QXBpKCksXG4gICAgICAgIF9zY29wZS5pc0lubmVyVGFibGVGb3JtXG4gICAgICApO1xuICAgICAgc2NyaXB0aW5nU2NvcGUub2JqZWN0SWQgPSBmb3JtT3B0aW9ucy5vYmplY3RJZDtcbiAgICB9XG4gICAgX3Njb3BlLmZvcm1HZW5SZXN1bHQuc2NyaXB0aW5nU2NvcGUgPSBzY3JpcHRpbmdTY29wZTtcblxuXG4gICAgbGV0IGZvcm0gPSBuZXcgT2JqZWN0Rm9ybUdyb3VwKHt9KTtcbiAgICBpZiAoZm9ybU1vZGVsLmVsZW1lbnRzWzBdICYmIGZvcm1Nb2RlbC5lbGVtZW50c1swXS5lbGVtZW50cykge1xuICAgICAgdGhpcy5fYWRkRm9ybUNvbnRyb2woX3Njb3BlLCBmb3JtLCBmb3JtTW9kZWwuZWxlbWVudHNbMF0sICdjb3JlJyk7XG4gICAgfVxuICAgIGlmIChmb3JtTW9kZWwuZWxlbWVudHNbMV0gJiYgZm9ybU1vZGVsLmVsZW1lbnRzWzFdLmVsZW1lbnRzKSB7XG4gICAgICB0aGlzLl9hZGRGb3JtQ29udHJvbChfc2NvcGUsIGZvcm0sIGZvcm1Nb2RlbC5lbGVtZW50c1sxXSwgJ2RhdGEnKTtcbiAgICB9XG4gICAgX3Njb3BlLmZvcm1HZW5SZXN1bHQuZm9ybSA9IGZvcm07XG4gICAgdGhpcy5faW5pdFZhbGlkYXRvcnMoX3Njb3BlLmZvcm1HZW5SZXN1bHQuZm9ybSwgX3Njb3BlKTtcbiAgICB0aGlzLl9pbml0U2NyaXB0aW5nU2NvcGUoX3Njb3BlLCBmb3JtU2NyaXB0U2VydmljZSk7XG4gICAgcmV0dXJuIF9zY29wZS5mb3JtR2VuUmVzdWx0O1xuICB9XG5cblxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyBhIGZvcm0gZWxlbWVudCBvYmplY3QgdG8gYW4gT2JqZWN0Rm9ybUNvbnRyb2xXcmFwcGVyIHdoaWNoIHRoZW4gY2FuIGJlIHVzZWQgdG9cbiAgICogcmVuZGVyIGEgZnJvbSBjb250cm9sLiBSZXN1bHQgY2FuIGJlIHVzZWQgYXMgaW5wdXQgZm9yIEZvcm1FbGVtZW50Q29tcG9uZW50LlxuICAgKlxuICAgKiBAcGFyYW0gZWxlbWVudCAtIHRoZSBlbGVtZW50IG9iamVjdCBvciBhIGpzb24gc3RyaW5nXG4gICAqIEBwYXJhbSBzaXR1YXRpb24gLSBvcHRpb25hbCBwcm9wZXJ0eSB0byBzZXQgdXAgYSBmb3JtIHNpdHVhdGlvbiBmb3IgdGhlIGNvbnRyb2wgKGRlZmF1bHQgaXMgRURJVClcbiAgICogQHJldHVybiB0aGUgY29udmVydGVkIE9iamVjdEZvcm1Db250cm9sV3JhcHBlciBvciBudWxsIGluIGNhc2Ugb2YgYW4gZXJyb3JcbiAgICovXG4gIGVsZW1lbnRUb0Zvcm1Db250cm9sKGVsZW1lbnQ6IGFueSwgc2l0dWF0aW9uPzogc3RyaW5nKTogT2JqZWN0Rm9ybUNvbnRyb2xXcmFwcGVyIHtcblxuICAgIGxldCBmb3JtRWxlbWVudDtcbiAgICBpZiAodHlwZW9mIGVsZW1lbnQgPT09ICdzdHJpbmcnKSB7XG4gICAgICB0cnkge1xuICAgICAgICBmb3JtRWxlbWVudCA9IEpTT04ucGFyc2UoZWxlbWVudCk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKCdVbmFibGUgdG8gcGFyc2UgZm9ybSBlbGVtZW50IGZyb20ganNvbiAnLCBmb3JtRWxlbWVudCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGZvcm1FbGVtZW50ID0gZWxlbWVudDtcbiAgICB9XG5cbiAgICBpZiAoIWZvcm1FbGVtZW50KSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICAvLyBDcmVhdGUgdGhlIE9iamVjdEZvcm1Db250cm9sV3JhcHBlclxuICAgIGxldCB3cmFwcGVyID0gbmV3IE9iamVjdEZvcm1Db250cm9sV3JhcHBlcih7fSk7XG4gICAgbGV0IGZvcm1TaXR1YXRpb24gPSBzaXR1YXRpb24gPyBzaXR1YXRpb24gOiAnRURJVCc7XG5cbiAgICB3cmFwcGVyLl9lb0Zvcm1Db250cm9sV3JhcHBlciA9IHtcbiAgICAgIGNvbnRyb2xOYW1lOiBmb3JtRWxlbWVudC5uYW1lLFxuICAgICAgc2l0dWF0aW9uOiBmb3JtU2l0dWF0aW9uXG4gICAgfTtcblxuICAgIC8vIGZvciBjb2Rlc3lzdGVtIGVsZW1lbnRzIGFkZCBlbnRyaWVzIGlmIG5vdCB5ZXQgcHJvdmlkZWRcbiAgICBpZiAoZm9ybUVsZW1lbnQudHlwZSA9PT0gJ0NPREVTWVNURU0nICYmICghZm9ybUVsZW1lbnQuY29kZXN5c3RlbSB8fCAhZm9ybUVsZW1lbnQuY29kZXN5c3RlbS5lbnRyaWVzKSkge1xuICAgICAgZm9ybUVsZW1lbnQuY29kZXN5c3RlbSA9IHRoaXMuc3lzdGVtU2VydmljZS5nZXRDb2Rlc3lzdGVtKGZvcm1FbGVtZW50LmNvZGVzeXN0ZW0uaWQpO1xuICAgIH1cbiAgICAvLyBjcmVhdGUgdGhlIGFjdHVhbCBmb3JtIGNvbnRyb2xcbiAgICBsZXQgY29udHJvbERpc2FibGVkID0gISFmb3JtRWxlbWVudC5yZWFkb25seTtcbiAgICBsZXQgZm9ybUNvbnRyb2wgPSBuZXcgT2JqZWN0Rm9ybUNvbnRyb2woe1xuICAgICAgdmFsdWU6IGZvcm1FbGVtZW50LnZhbHVlLFxuICAgICAgZGlzYWJsZWQ6IGNvbnRyb2xEaXNhYmxlZFxuICAgIH0sIEZvcm1WYWxpZGF0aW9uLmdldFZhbGlkYXRvcnMoZm9ybUVsZW1lbnQsIGZvcm1TaXR1YXRpb24pKTtcblxuICAgIC8vIEZvcm0gZWxlbWVudHMgaW4gU0VBUkNIIHNpdHVhdGlvbiBtYXkgYXJyaXZlIHdpdGggYSB2YWx1ZSBzZXQgdG8gTlVMTCAoZXhwbGljaXQgc2VhcmNoIGZvclxuICAgIC8vIGZpZWxkcyB0aGF0IGFyZSBOT1Qgc2V0KS4gSW4gdGhhdCBjYXNlIHdlIG5lZWQgdG8gcHJlcGFyZSB0aGUgZm9ybSBjb250cm9sXG4gICAgaWYgKGZvcm1TaXR1YXRpb24gPT09ICdTRUFSQ0gnICYmIGZvcm1FbGVtZW50LnZhbHVlID09PSBudWxsKSB7XG4gICAgICBmb3JtRWxlbWVudC5pc05vdFNldFZhbHVlID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBmb3JtQ29udHJvbC5fZW9Gb3JtRWxlbWVudCA9IGZvcm1FbGVtZW50O1xuICAgIHdyYXBwZXIuYWRkQ29udHJvbChmb3JtRWxlbWVudC5uYW1lLCBmb3JtQ29udHJvbCk7XG5cbiAgICByZXR1cm4gd3JhcHBlcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeHRyYWN0IGRhdGEgZnJvbSBhbiBvYmplY3QgZm9ybSBiYXNlZCBvbiBzaXR1YXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSBmb3JtIC0gZm9ybSB0byBleHRyYWN0IGRhdGEgZnJvbVxuICAgKiBAcGFyYW0gc2l0dWF0aW9uIC0gZm9ybSBzaXR1YXRpb25cbiAgICogQHBhcmFtIFtpbml0aWFsRGF0YV0gLSBvcHRpb25hbCBmb3JtIGRhdGEgdG8gbWF0Y2ggdGhlIGN1cnJlbnQgdmFsdWVzIGFnYWluc3RcbiAgICogVGhpcyBpcyByZXF1aXJlZCBmb3IgZWRpdGlnIGluZGV4ZGF0YSAoRURJVCBzaXR1YXRpb24pLCBiZWNhdXNlIHdlIGhhdmUgdG8gY29tcGFyZSBuZXcgdmFsdWVzXG4gICAqIGFnYWluc3QgdGhlIGluaXRpYWwgdmFsdWVzLiBJZiBhIHByb3BlcnR5IHRoYXQgaXMgY29udGFpbmVkIGluIHRoZSBmb3JtcyBpbml0aWFsIGRhdGEgaXMgcmVtb3ZlZFxuICAgKiAoZS5nLiBzZXQgdG8gbnVsbCkgdGhlbiB3ZSBoYXZlIHRvIHNldCB0aGlzIG51bGwgdmFsdWUsIGJlY2F1c2Ugb3RoZXJ3aXNlIHRoZSBzZXJ2ZXIgd291bGRcbiAgICogaWdub3JlIHRoZSBjaGFuZ2VzLlxuICAgKiBAcGFyYW0gaXNUYWJsZVJvd0VkaXRGb3JtIEZsYWcgaW5kaWNhdGluZyB0aGF0IHRoZSBwcm92aWRlZCBmb3JtIGlzIGFuIGlubGluZSBmb3JtIHVzZWQgYnlcbiAgICogYSBmb3JtcyB0YWJsZSBlbGVtZW50IGZvciBlZGl0aW5nIHJvd3MuIFRob3NlIG5lZWQgYSBzcGVjaWFsIGhhbmRsaW5nLlxuICAgKiBAcmV0dXJuIGV4dHJhY3RlZCBkYXRhIGFzIG9iamVjdFxuICAgKi9cbiAgZXh0cmFjdEZvcm1EYXRhKGZvcm06IE9iamVjdEZvcm1Hcm91cCwgc2l0dWF0aW9uOiBzdHJpbmcsIGluaXRpYWxEYXRhPzogYW55LCBpc1RhYmxlUm93RWRpdEZvcm0/OiBib29sZWFuKSB7XG4gICAgbGV0IGV4dHJhY3RlZERhdGEgPSB7fTtcbiAgICB0aGlzLmdldEVsZW1lbnRWYWx1ZXMoZXh0cmFjdGVkRGF0YSwgZm9ybSwgc2l0dWF0aW9uIHx8ICdFRElUJywgaW5pdGlhbERhdGEsIGlzVGFibGVSb3dFZGl0Rm9ybSk7XG4gICAgcmV0dXJuIGV4dHJhY3RlZERhdGE7XG4gIH1cblxuICAvKipcbiAqIEFkZCBhIHJlZmVyZW5jZSB0byBhIHRlbXBvcmFyeSBsb2NhbHN0b3JhZ2UgZW50cnkgdGhhdCBzaG91bGQgYmUgY2xlYXJlZCB3aGVuIGFcbiAqIG5ldyBicm93c2VyIHNlc3Npb24gc3RhcnRzLiBJbiBjb250ZXh0IG9mIGZvcm1zIHRoaXMgd2lsbCBiZSB1c2VkIHRvIGNsZWFudXAgdGhlXG4gKiBsYXlvdXQgc3RhdGUgb2YgZm9ybXMgKHNlbGVjdGVkIHRhYnMgZXRjLikgdGhhdCBhcmUgc3RvcmVkIGxvY2FsbHkgYnV0IHNob3VsZCBvbmx5XG4gKiBiZSBwZXNpc3RlZCBmb3Igb25lIGJyb3dzZXIgc2Vzc2lvbi5cbiAqIEBwYXJhbSBzdG9yYWdlS2V5IEtleSBvZiB0aGUgbG9jYWxzdG9yYWdlIGl0ZW1cbiAqL1xuICBhZGRUZW1wb3JhcnlTdG9yYWdlRW50cnkoc3RvcmFnZUtleTogc3RyaW5nKSB7XG4gICAgLy8gZW50cmllcyB3aWxsIHRoZW1zZWx2ZXMgYmUgc3RvcmVkIGluIGxvY2Fsc3RvcmFnZSBzbyB3ZSBjYW4gY2hlY2sgZm9yIGVudHJpZXNcbiAgICAvLyB0byBiZSByZW1vdmVkIG9uY2UgdGhlIGFwcGxpY2F0aW9uIHN0YXJ0c1xuICAgIGNvbnN0IGN1cnJlbnQgPSB0aGlzLl9nZXRUZW1wb3JhcnlTdG9yYWdlRW50cmllcygpO1xuICAgIGlmICghY3VycmVudC5pbmNsdWRlcyhzdG9yYWdlS2V5KSlcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuVEVNUF9TVE9SQUdFX0VOVFJJRVNfS0VZLCBKU09OLnN0cmluZ2lmeShbLi4uY3VycmVudCwgc3RvcmFnZUtleV0pKVxuICB9XG5cblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgbGF0ZXN0IGZvcm0gZWxlbWVudCBjaGFuZ2VzIHdpdGggdGhlIHByb3ZpZGVkIHZhbHVlLlxuICAgKlxuICAgKiBUaGlzIG1ldGhvZCBtZXJnZXMgdGhlIGN1cnJlbnQgZm9ybSBlbGVtZW50IGNoYW5nZXMgd2l0aCB0aGUgbmV3IHZhbHVlXG4gICAqIGFuZCBlbWl0cyB0aGUgdXBkYXRlZCBjaGFuZ2VzIHRvIHRoZSBgX2xhdGVzdEZvcm1FbGVtZW50Q2hhbmdlc2Agc3ViamVjdC5cbiAgICpcbiAgICogQHBhcmFtIHtTZWFyY2hQYXJhbXN9IHZhbHVlIC0gVGhlIG5ldyBmb3JtIGVsZW1lbnQgY2hhbmdlcyB0byBiZSBtZXJnZWQuXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cbiAgdXBkYXRlRm9ybUVsZW1lbnRDaGFuZ2VzKHZhbHVlOiBTZWFyY2hQYXJhbXMpOiB2b2lkIHtcbiAgICBjb25zdCBjdXJyZW50Q2hhbmdlcyA9IHRoaXMuX2xhdGVzdEZvcm1FbGVtZW50Q2hhbmdlcy52YWx1ZTtcbiAgICBjb25zdCB1cGRhdGVkQ2hhbmdlcyA9IHsuLi5jdXJyZW50Q2hhbmdlcywgLi4udmFsdWV9O1xuICAgIHRoaXMuX2xhdGVzdEZvcm1FbGVtZW50Q2hhbmdlcy5uZXh0KHVwZGF0ZWRDaGFuZ2VzKTtcbiAgfVxuXG4gIC8vIFJlY3Vyc2l2ZSBtZXRob2QgdG8gZ2V0IHRoZSB2YWx1ZXMgZnJvbSBlYWNoIGZvcm0gY29udHJvbC5cbiAgcHJpdmF0ZSBnZXRFbGVtZW50VmFsdWVzKGRhdGE6IGFueSwgZm9ybUNvbnRyb2w6IE9iamVjdEZvcm1Nb2RlbCwgc2l0dWF0aW9uOiBzdHJpbmcsIGluaXRpYWxEYXRhPzogYW55LCBpc1RhYmxlUm93RWRpdEZvcm0/OiBib29sZWFuKSB7XG5cbiAgICBpZiAoIWZvcm1Db250cm9sIHx8ICFmb3JtQ29udHJvbC5jb250cm9scykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChmb3JtQ29udHJvbCBpbnN0YW5jZW9mIE9iamVjdEZvcm1Db250cm9sV3JhcHBlcikge1xuXG4gICAgICBjb25zdCBmYzogYW55ID0gZm9ybUNvbnRyb2wuY29udHJvbHNbZm9ybUNvbnRyb2wuX2VvRm9ybUNvbnRyb2xXcmFwcGVyLmNvbnRyb2xOYW1lXTtcblxuICAgICAgaWYgKGZjLl9lb0Zvcm1FbGVtZW50LmlzTm90U2V0VmFsdWUgPT09IHRydWUpIHtcbiAgICAgICAgLy8gZm9ybSBlbGVtZW50cyBtYXkgZXhwbGljaXRseSBzZXQgdG8gaGF2ZSBOVUxMIHZhbHVlIChlLmcuIGZyb20gU2VhcmNoIGZvcm0gaWYgdmFsdWVzIGFyZSByZXF1ZXN0ZWQgdGhhdCBoYXZlIG5vIHZhbHVlcylcbiAgICAgICAgaWYgKGlzVGFibGVSb3dFZGl0Rm9ybSkge1xuICAgICAgICAgIHRoaXMuc2V0RGF0YVZhbHVlKGZjLl9lb0Zvcm1FbGVtZW50Lm5hbWUsIG51bGwsIGRhdGEsIGZjLl9lb0Zvcm1FbGVtZW50LCBpc1RhYmxlUm93RWRpdEZvcm0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuc2V0RGF0YVZhbHVlKGZjLl9lb0Zvcm1FbGVtZW50LnFuYW1lLCBudWxsLCBkYXRhLCBmYy5fZW9Gb3JtRWxlbWVudCwgaXNUYWJsZVJvd0VkaXRGb3JtKTtcbiAgICAgICAgfVxuXG4gICAgICB9IGVsc2UgaWYgKGZjLnZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgbGV0IHZhbCA9IGZjLnZhbHVlO1xuXG4gICAgICAgIC8vIG1ha2Ugc3VyZSB0aGF0IG1ldGEgZGF0YSBhcmUgYWxzbyB1cCB0byBkYXRlXG4gICAgICAgIGlmIChmYy5fZW9Gb3JtRWxlbWVudC50eXBlID09PSAnQ09ERVNZU1RFTScpIHtcbiAgICAgICAgICBjb25zdCBjcyA9IHRoaXMuc3lzdGVtU2VydmljZS5nZXRDb2Rlc3lzdGVtKGZjLl9lb0Zvcm1FbGVtZW50LmNvZGVzeXN0ZW0uaWQpO1xuICAgICAgICAgIGZjLl9lb0Zvcm1FbGVtZW50LmRhdGFNZXRhID0gY3MuZW50cmllcy5maW5kKGUgPT4gZS5kYXRhID09PSB2YWwpO1xuICAgICAgICB9XG5cbiAgICAgICAgc3dpdGNoIChzaXR1YXRpb24pIHtcbiAgICAgICAgICBjYXNlICdTRUFSQ0gnOiB7XG4gICAgICAgICAgICBpZiAodmFsICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgIC8vIHJvdyBlZGl0aW5nIGZvcm1zIHVzZSB0aGUgbmFtZSBpbnN0ZWFkIG9mIHRoZSBxbmFtZSBiZWNhdXNlIG90aGVyd2lzZSB0aGVcbiAgICAgICAgICAgICAgLy8gdGFibGVzIGdyaWQgaXNuJ3QgYWJsZSB0byBtYXAgdGhlIGZpZWxkc1xuICAgICAgICAgICAgICBpZiAoIWlzVGFibGVSb3dFZGl0Rm9ybSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0RGF0YVZhbHVlKGZjLl9lb0Zvcm1FbGVtZW50LnFuYW1lLCB2YWwsIGRhdGEsIGZjLl9lb0Zvcm1FbGVtZW50LCBpc1RhYmxlUm93RWRpdEZvcm0pXG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXREYXRhVmFsdWUoZmMuX2VvRm9ybUVsZW1lbnQubmFtZSwgdmFsLCBkYXRhLCBmYy5fZW9Gb3JtRWxlbWVudCwgaXNUYWJsZVJvd0VkaXRGb3JtKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSAnQ1JFQVRFJzoge1xuICAgICAgICAgICAgLy8gYWxzbyBhZGQgTlVMTCB2YWx1ZXMgKG92ZXJyaWRlIGV4aXN0aW5nIGRlZmF1bHR2YWx1ZXMpXG4gICAgICAgICAgICB0aGlzLnNldERhdGFWYWx1ZShmYy5fZW9Gb3JtRWxlbWVudC5uYW1lLCB2YWwsIGRhdGEsIGZjLl9lb0Zvcm1FbGVtZW50LCBpc1RhYmxlUm93RWRpdEZvcm0pXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSAnRURJVCc6IHtcbiAgICAgICAgICAgIC8vIGluIGVkaXQgc2l0dWF0aW9uIHdlIGhhdmUgdG8gY29tcGFyZSBuZXcgdmFsdWVzIGFnYWluc3QgdGhlIGluaXRpYWwgdmFsdWVzXG4gICAgICAgICAgICAvLyBJZiBhIHByb3BlcnR5IHRoYXQgaXMgY29udGFpbmVkIGluIHRoZSBmb3JtcyBpbml0aWFsIGRhdGEgaXMgcmVtb3ZlZCAoZS5nLiBzZXQgdG8gbnVsbClcbiAgICAgICAgICAgIC8vIHRoZW4gd2UgaGF2ZSB0byBzZXQgdGhpcyBudWxsIHZhbHVlLCBiZWNhdXNlIG90aGVyd2lzZSB0aGUgc2VydmVyIHdpbGwgaWdub3JlIHRoZSBjaGFuZ2VzXG4gICAgICAgICAgICBpZiAodmFsICE9PSBudWxsIHx8IChpbml0aWFsRGF0YSAmJiBpbml0aWFsRGF0YVtmYy5fZW9Gb3JtRWxlbWVudC5uYW1lXSAhPT0gdW5kZWZpbmVkKSkge1xuICAgICAgICAgICAgICAvLyBkYXRhW2ZjLl9lb0Zvcm1FbGVtZW50Lm5hbWVdID0gdmFsO1xuICAgICAgICAgICAgICB0aGlzLnNldERhdGFWYWx1ZShmYy5fZW9Gb3JtRWxlbWVudC5uYW1lLCB2YWwsIGRhdGEsIGZjLl9lb0Zvcm1FbGVtZW50LCBpc1RhYmxlUm93RWRpdEZvcm0pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgT2JqZWN0LmtleXMoZm9ybUNvbnRyb2wuY29udHJvbHMpXG4gICAgICAgIC5mb3JFYWNoKGNvbnRyb2xLZXkgPT4ge1xuICAgICAgICAgIGxldCBmb3JtQ29udHJvbEtleWVkID0gPE9iamVjdEZvcm1Hcm91cD5mb3JtQ29udHJvbC5jb250cm9sc1tjb250cm9sS2V5XTtcbiAgICAgICAgICB0aGlzLmdldEVsZW1lbnRWYWx1ZXMoZGF0YSwgZm9ybUNvbnRyb2xLZXllZCwgc2l0dWF0aW9uLCBpbml0aWFsRGF0YSwgaXNUYWJsZVJvd0VkaXRGb3JtKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXREYXRhVmFsdWUoa2V5LCB2YWx1ZSwgZGF0YSwgZm9ybUVsZW1lbnQsIGlzVGFibGVSb3dFZGl0Rm9ybSkge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGgpIHtcbiAgICAgIGZvciAoY29uc3QgW2ssIHZdIG9mIE9iamVjdC5lbnRyaWVzKHZhbHVlWzBdKSkge1xuICAgICAgICBpZiAodiBpbnN0YW5jZW9mIFJhbmdlVmFsdWUgJiYgdi5vcGVyYXRvciA9PT0gJ21yJykge1xuICAgICAgICAgIGRhdGFba2V5XSA9IHZhbHVlO1xuICAgICAgICB9IGVsc2UgaWYgKHYpIHtcbiAgICAgICAgICBkYXRhW2tleV0gPSB0aGlzLmZvcm1hdFZhbHVlKHZhbHVlLCBmb3JtRWxlbWVudCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZGF0YVtrZXldID0gKHZhbHVlIGluc3RhbmNlb2YgUmFuZ2VWYWx1ZSAmJiB2YWx1ZS5vcGVyYXRvciA9PT0gJ21yJykgPyB2YWx1ZSA6IHRoaXMuZm9ybWF0VmFsdWUodmFsdWUsIGZvcm1FbGVtZW50KTtcbiAgICB9XG4gICAgaWYgKGlzVGFibGVSb3dFZGl0Rm9ybSAmJiBmb3JtRWxlbWVudC5kYXRhTWV0YSkge1xuICAgICAgLy8gaW5uZXIgdGFibGVzIG5lZWQgdG8gc2V0IHVwIHRoZSBtZXRhIGRhdGEgYXMgd2VsbFxuICAgICAgZGF0YVtrZXkgKyAnX21ldGEnXSA9IGZvcm1FbGVtZW50LmRhdGFNZXRhO1xuICAgIH1cbiAgfVxuXG4gIGZvcm1hdFZhbHVlKHZhbHVlLCBmb3JtRWxlbWVudCkge1xuICAgIGlmIChmb3JtRWxlbWVudC50eXBlID09PSAnREFURVRJTUUnICYmICFmb3JtRWxlbWVudC53aXRodGltZSkge1xuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgfHwgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSAmJiAhaXNOYU4odmFsdWUuZ2V0VGltZSgpKSkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKHZhbHVlLCAneXl5eS1NTS1kZCcpO1xuICAgICAgfSBlbHNlIGlmICh2YWx1ZSBpbnN0YW5jZW9mIFJhbmdlVmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBSYW5nZVZhbHVlKFxuICAgICAgICAgIHZhbHVlLm9wZXJhdG9yLFxuICAgICAgICAgIHZhbHVlLmZpcnN0VmFsdWUgJiYgdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0odmFsdWUuZmlyc3RWYWx1ZSwgJ3l5eXktTU0tZGQnKSxcbiAgICAgICAgICB2YWx1ZS5zZWNvbmRWYWx1ZSAmJiB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybSh2YWx1ZS5zZWNvbmRWYWx1ZSwgJ3l5eXktTU0tZGQnKSxcbiAgICAgICAgICB2YWx1ZT8udXNlTm90LFxuICAgICAgICAgIHZhbHVlPy5hY3R1YWxPcGVyYXRvclxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChmb3JtRWxlbWVudC50eXBlID09PSAnVEFCTEUnKSB7XG4gICAgICAoZm9ybUVsZW1lbnQuZWxlbWVudHMgfHwgW10pLmZvckVhY2goZWwgPT4ge1xuICAgICAgICAodmFsdWUgfHwgW10pLmZvckVhY2godiA9PiB2W2VsLm5hbWVdID0gdGhpcy5mb3JtYXRWYWx1ZSh2W2VsLm5hbWVdLCBlbCkpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG5cbiAgLy8gRnVuY3Rpb25zIGludm9sdmVkIGluIGJ1aWxkaW5nIGFuIG9iamVjdCBmb3JtXG5cbiAgLyoqXG4gICAqIFJlY3Vyc2l2ZSBtZXRob2QgYWRkaW5nIGEgbmV3IFVudHlwZWRGb3JtQ29udHJvbCAoZ3JvdXAgb3IgY29udHJvbCkgdG8gYSBwYXJlbnQgZm9ybSBncm91cFxuICAgKlxuICAgKiBAcGFyYW0gcGFyZW50R3JvdXAgLSB0aGUgcGFyZW50IGdyb3VwIHRvIGFkZCB0aGUgY29udHJvbCB0b1xuICAgKiBAcGFyYW0gZm9ybUVsZW1lbnQgLSB0aGUgZW5haW8gZm9ybSBtb2RlbCBlbGVtZW50IHRvIGNyZWF0ZSB0aGUgY2hpbGQgY29udHJvbCBmcm9tXG4gICAqIEBwYXJhbSBbdXNlTmFtZV0gLSB1c2UgdGhpcyBuYW1lIGluc3RlYWQgb2YgdGhlIG9uZSBmcm9tIHRoZSBtb2RlbFxuICAgKi9cbiAgcHJpdmF0ZSBfYWRkRm9ybUNvbnRyb2woc2NvcGU6IEZvcm1HZW5TY29wZSwgcGFyZW50R3JvdXA6IE9iamVjdEZvcm1Hcm91cCwgZm9ybUVsZW1lbnQ6IGFueSwgdXNlTmFtZT86IHN0cmluZykge1xuXG4gICAgbGV0IGN0cmw7XG4gICAgbGV0IG5hbWU7XG5cbiAgICAvLyBhZGQgYSBmb3JtIGdyb3VwXG4gICAgaWYgKGZvcm1FbGVtZW50LnR5cGUgPT09ICdvMm1Hcm91cCcgfHwgZm9ybUVsZW1lbnQudHlwZSA9PT0gJ28ybUdyb3VwU3RhY2snKSB7XG5cbiAgICAgIC8vIGRvIG5vdCBhZGQgZ3JvdXBzIHRoYXQgYXJlIGVtcHR5XG4gICAgICBpZiAoIWZvcm1FbGVtZW50LmVsZW1lbnRzIHx8IGZvcm1FbGVtZW50LmVsZW1lbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcignRm91bmQgZW1wdHkgZm9ybSBncm91cCcsIGZvcm1FbGVtZW50KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjdHJsID0gbmV3IE9iamVjdEZvcm1Hcm91cCh7fSk7XG4gICAgICBjdHJsLl9lb0Zvcm1Hcm91cCA9IHtcbiAgICAgICAgbGFiZWw6IGZvcm1FbGVtZW50LmxhYmVsLFxuICAgICAgICBsYXlvdXQ6IGZvcm1FbGVtZW50LmxheW91dCxcbiAgICAgICAgdHlwZTogZm9ybUVsZW1lbnQudHlwZVxuICAgICAgfTtcblxuICAgICAgaWYgKHVzZU5hbWUgPT09ICdjb3JlJyB8fCB1c2VOYW1lID09PSAnZGF0YScpIHtcbiAgICAgICAgY3RybC5fZW9Gb3JtR3JvdXAubGFiZWwgPSB1c2VOYW1lO1xuICAgICAgfVxuXG4gICAgICBmb3IgKGxldCBlIG9mIGZvcm1FbGVtZW50LmVsZW1lbnRzKSB7XG4gICAgICAgIHRoaXMuX2FkZEZvcm1Db250cm9sKHNjb3BlLCBjdHJsLCBlKTtcbiAgICAgIH1cbiAgICAgIG5hbWUgPSB1c2VOYW1lIHx8ICdmZycgKyBzY29wZS5nQ291bnQrKztcbiAgICAgIGN0cmwuX2VvRm9ybUdyb3VwLmlkID0gYCR7c2NvcGUuZm9ybU9wdGlvbnMubGF5b3V0U2V0dGluZ3NJRCB8fCBzY29wZS5mb3JtT3B0aW9ucy5mb3JtTW9kZWwubmFtZX0uJHtuYW1lfWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGFkZCBmb3JtIGNvbnRyb2xcbiAgICAgIC8vIFRvIGJlIGFibGUgdG8gaW50ZWdyYXRlIHJlY3Vyc2l2ZSBmb3JtIGNvbnRyb2xzIGludG8gdGhlIG1haW4gZm9ybSxcbiAgICAgIC8vIHdlIGhhdmUgdG8gd3JhcCB0aGVtIGluIGEgZm9ybSBncm91cFxuICAgICAgY3RybCA9IG5ldyBPYmplY3RGb3JtQ29udHJvbFdyYXBwZXIoe30pO1xuICAgICAgY3RybC5fZW9Gb3JtQ29udHJvbFdyYXBwZXIgPSB7XG4gICAgICAgIC8vIHRoZSBuYW1lIG9mIHRoZSB3cmFwcGVkIFVudHlwZWRGb3JtQ29udHJvbFxuICAgICAgICBjb250cm9sTmFtZTogZm9ybUVsZW1lbnQubmFtZSxcbiAgICAgICAgc2l0dWF0aW9uOiBzY29wZS5mb3JtT3B0aW9ucy5mb3JtTW9kZWwuc2l0dWF0aW9uXG4gICAgICB9O1xuICAgICAgaWYgKHNjb3BlLmZvcm1PcHRpb25zLmZvcm1Nb2RlbC5zaXR1YXRpb24gPT09ICdTRUFSQ0gnICYmIGZvcm1FbGVtZW50LnZhbHVlID09PSBudWxsKSB7XG4gICAgICAgIGZvcm1FbGVtZW50LmlzTm90U2V0VmFsdWUgPSB0cnVlO1xuICAgICAgfVxuICAgICAgLy8gZG8gbm90IHNldCBhIHJlZmVyZW5jZSBhcyB0aGUgZm9ybSBjb250cm9scyB2YWx1ZVxuICAgICAgLy8gb3RoZXJ3aXNlIHdlIGNvdWxkIG5vdCByZXNldCB0aGUgZm9ybVxuICAgICAgbGV0IHZhbHVlOiBhbnk7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShmb3JtRWxlbWVudC52YWx1ZSkpIHtcbiAgICAgICAgLy8gY29weSBieSB2YWx1ZSBmb3IgYXJyYXlzIG9mIG9iamVjdHMgKGUuZy4gdGFibGUgZGF0YSlcbiAgICAgICAgdmFsdWUgPSBbXTtcbiAgICAgICAgZm9ybUVsZW1lbnQudmFsdWUuZm9yRWFjaCgobykgPT4ge1xuICAgICAgICAgIHZhbHVlLnB1c2goVXRpbHMuZm9ybURhdGFQYXJzZShVdGlscy5mb3JtRGF0YVN0cmluZ2lmeShvKSkpO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhbHVlID0gZm9ybUVsZW1lbnQudmFsdWU7XG4gICAgICB9XG5cbiAgICAgIC8vIGZvciBjb2Rlc3lzdGVtIGVsZW1lbnRzIGFkZCBlbnRyaWVzIGlmIG5vdCB5ZXQgcHJvdmlkZWRcbiAgICAgIGlmIChmb3JtRWxlbWVudC50eXBlID09PSAnQ09ERVNZU1RFTScgJiYgIWZvcm1FbGVtZW50LmNvZGVzeXN0ZW0uZW50cmllcykge1xuICAgICAgICBmb3JtRWxlbWVudC5jb2Rlc3lzdGVtID0gdGhpcy5zeXN0ZW1TZXJ2aWNlLmdldENvZGVzeXN0ZW0oZm9ybUVsZW1lbnQuY29kZXN5c3RlbS5pZCk7XG4gICAgICB9XG5cbiAgICAgIC8vIGNyZWF0ZSB0aGUgYWN0dWFsIGZvcm0gY29udHJvbFxuICAgICAgbGV0IGNvbnRyb2xEaXNhYmxlZCA9IHNjb3BlLmZvcm1PcHRpb25zLmRpc2FibGVkIHx8ICEhZm9ybUVsZW1lbnQucmVhZG9ubHk7XG4gICAgICBsZXQgZm9ybUNvbnRyb2wgPSBuZXcgT2JqZWN0Rm9ybUNvbnRyb2woe1xuICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgIGRpc2FibGVkOiBjb250cm9sRGlzYWJsZWRcbiAgICAgIH0pO1xuXG4gICAgICBmb3JtRWxlbWVudC5yZWFkb25seSA9IGNvbnRyb2xEaXNhYmxlZDtcblxuICAgICAgZm9ybUNvbnRyb2wuX2VvRm9ybUVsZW1lbnQgPSBmb3JtRWxlbWVudDtcbiAgICAgIHNjb3BlLmZvcm1HZW5SZXN1bHQuZm9ybUNvbnRyb2xzW2Zvcm1FbGVtZW50Lm5hbWVdID0gZm9ybUNvbnRyb2w7XG5cbiAgICAgIGlmIChmb3JtRWxlbWVudC50eXBlID09PSAnQ09ERVNZU1RFTScgfHwgKGZvcm1FbGVtZW50LnR5cGUgPT09ICdTVFJJTkcnICYmIGZvcm1FbGVtZW50LmNsYXNzaWZpY2F0aW9uID09PSAnc2VsZWN0b3InKSkge1xuICAgICAgICBmb3JtQ29udHJvbC5fZW9Gb3JtRWxlbWVudC5hcHBseUZpbHRlciA9IChmdW5jOiBGdW5jdGlvbikgPT4ge1xuICAgICAgICAgIGZvcm1Db250cm9sLl9lb0Zvcm1FbGVtZW50LmZpbHRlckZ1bmN0aW9uID0gZnVuYztcbiAgICAgICAgfTtcbiAgICAgICAgZm9ybUNvbnRyb2wuX2VvRm9ybUVsZW1lbnQuYXBwbHlEaXNhYmxpbmdGaWx0ZXIgPSAoZnVuYzogRnVuY3Rpb24pID0+IHtcbiAgICAgICAgICBmb3JtQ29udHJvbC5fZW9Gb3JtRWxlbWVudC5kaXNhYmxpbmdGaWx0ZXJGdW5jdGlvbiA9IGZ1bmM7XG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGlmIChmb3JtRWxlbWVudC50eXBlID09PSAnU1RSSU5HJyAmJiBmb3JtRWxlbWVudC5jbGFzc2lmaWNhdGlvbiA9PT0gJ3NlbGVjdG9yJykge1xuICAgICAgICBmb3JtQ29udHJvbC5fZW9Gb3JtRWxlbWVudC5zZXRMaXN0ID0gKGxpc3RPYmplY3Q6IGFueSkgPT4ge1xuICAgICAgICAgIGZvcm1Db250cm9sLl9lb0Zvcm1FbGVtZW50Lmxpc3QgPSBsaXN0T2JqZWN0O1xuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICBpZiAoZm9ybUVsZW1lbnQudHlwZSA9PT0gJ09SR0FOSVpBVElPTicpIHtcbiAgICAgICAgZm9ybUNvbnRyb2wuX2VvRm9ybUVsZW1lbnQuc2V0RmlsdGVyID0gKGZpbHRlck9iamVjdDogYW55KSA9PiB7XG4gICAgICAgICAgZm9ybUNvbnRyb2wuX2VvRm9ybUVsZW1lbnQuZmlsdGVyID0gZmlsdGVyT2JqZWN0O1xuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICBpZiAoZm9ybUVsZW1lbnQudHlwZSA9PT0gJ1RBQkxFJykge1xuICAgICAgICBmb3JtQ29udHJvbC5fZW9Gb3JtRWxlbWVudC5vYmplY3QgPSBzY29wZS5mb3JtT3B0aW9ucy5vYmplY3Q7XG4gICAgICB9XG5cbiAgICAgIGlmIChmb3JtRWxlbWVudC50eXBlID09PSAnUkVGRVJFTkNFJykge1xuICAgICAgICBmb3JtQ29udHJvbC5fZW9Gb3JtRWxlbWVudC5zZXRRdWVyeUZpbHRlcnMgPSAocXVlcnlGaWx0ZXJzT2JqZWN0OiB7W2ZpZWxkUW5hbWU6IHN0cmluZ106IHtvOiBzdHJpbmcsIHYxOiBhbnksIHYyOiBhbnl9fSwgb2JqZWN0VHlwZXM/OiBzdHJpbmdbXSkgPT4ge1xuICAgICAgICAgIGZvcm1Db250cm9sLl9lb0Zvcm1FbGVtZW50LnF1ZXJ5RmlsdGVycyA9IHF1ZXJ5RmlsdGVyc09iamVjdDtcbiAgICAgICAgICBmb3JtQ29udHJvbC5fZW9Gb3JtRWxlbWVudC5vYmplY3RUeXBlc0ZpbHRlciA9IG9iamVjdFR5cGVzO1xuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICBpZiAoc2NvcGUuZm9ybU9wdGlvbnMuZm9ybU1vZGVsLnNpdHVhdGlvbiA9PT0gJ1NFQVJDSCcpIHtcbiAgICAgICAgLy8gaW4gc2VhcmNoIHNpdHVhdGlvbiBldmVuIHJlYWRvbmx5IGZpZWxkcyBzaG91bGQgYmUgZWRpdGFibGUgLi4uXG4gICAgICAgIGZvcm1Db250cm9sLl9lb0Zvcm1FbGVtZW50LnJlYWRvbmx5ID0gZmFsc2U7XG4gICAgICAgIC8vIC4uLiBhbmQgcmVxdWlyZWQgbWFrZXMgbm8gc2Vuc2UgaGVyZVxuICAgICAgICBmb3JtQ29udHJvbC5fZW9Gb3JtRWxlbWVudC5yZXF1aXJlZCA9IGZhbHNlO1xuICAgICAgfVxuXG4gICAgICAvLyByZW1vdmUgZW1wdHkgZGVzY3JpcHRpb25zXG4gICAgICBsZXQgZGVzYyA9IGZvcm1Db250cm9sLl9lb0Zvcm1FbGVtZW50LmRlc2NyaXB0aW9uO1xuICAgICAgaWYgKGRlc2MgJiYgZGVzYy50cmltKCkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIGZvcm1Db250cm9sLl9lb0Zvcm1FbGVtZW50LmRlc2NyaXB0aW9uID0gbnVsbDtcbiAgICAgIH1cblxuICAgICAgLy8gYWRkIHRoZSBmb3JtIGVsZW1lbnQgdG8gdGhlIHNjcmlwdCBtb2RlbCB0aGF0IHdpbGwgYmUgaW5qZWN0ZWQgaW50b1xuICAgICAgLy8gdGhlIGZvcm1zIHNjcmlwdGluZyBzY29wZSBsYXRlciBvblxuICAgICAgc2NvcGUuZm9ybUdlblJlc3VsdC5zY3JpcHRNb2RlbFtmb3JtRWxlbWVudC5uYW1lXSA9IGZvcm1Db250cm9sLl9lb0Zvcm1FbGVtZW50O1xuXG4gICAgICAvLyBhcHBseSBjaGFuZ2UgbGlzdGVuZXIgdG8gdGhlIGZvcm0gY29udHJvbCwgdGhhdCB3aWxsIHRyaWdnZXJcbiAgICAgIC8vIHRoZSBmb3JtIGVsZW1lbnRzIG9uQ2hhbmdlIGxpc3RlbmVyXG4gICAgICBsZXQgY29udHJvbFdhdGNoID0gY3RybC52YWx1ZUNoYW5nZXMucGlwZShkZWJvdW5jZVRpbWUoZm9ybUVsZW1lbnQudHlwZSA9PT0gJ1RBQkxFJyA/IDAgOiA1MDApKTtcbiAgICAgIGNvbnRyb2xXYXRjaC5zdWJzY3JpYmUoKHYpID0+IHtcbiAgICAgICAgaWYgKGZvcm1Db250cm9sLl9lb0Zvcm1FbGVtZW50LnR5cGUgPT09ICdSRUZFUkVOQ0UnKSB7XG4gICAgICAgICAgdGhpcy5fZ2V0RGF0YU1ldGEoZm9ybUNvbnRyb2wuX2VvRm9ybUVsZW1lbnQsIHZbZm9ybUNvbnRyb2wuX2VvRm9ybUVsZW1lbnQubmFtZV0pLnN1YnNjcmliZShtID0+IHtcbiAgICAgICAgICAgIGlmIChtKSB7XG4gICAgICAgICAgICAgIGZvcm1Db250cm9sLl9lb0Zvcm1FbGVtZW50LmRhdGFNZXRhID0gZm9ybUNvbnRyb2wuX2VvRm9ybUVsZW1lbnQubXVsdGlzZWxlY3QgPyBtIDogbVswXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGRlbGV0ZSBmb3JtQ29udHJvbC5fZW9Gb3JtRWxlbWVudC5kYXRhTWV0YTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudXBkYXRlRm9ybUVsZW1lbnRDaGFuZ2VzKHYpO1xuXG4gICAgICAgIGlmIChzY29wZS5mb3JtR2VuUmVzdWx0LnNjcmlwdGluZ1Njb3BlKSB7XG4gICAgICAgICAgc2NvcGUuZm9ybUdlblJlc3VsdC5zY3JpcHRpbmdTY29wZS5tb2RlbENoYW5nZWQodik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgc2NvcGUuZm9ybUdlblJlc3VsdC5jb250cm9sVmFsdWVTdWJzY3JpcHRpb25zLnB1c2goY29udHJvbFdhdGNoKTtcblxuICAgICAgY3RybC5hZGRDb250cm9sKGZvcm1FbGVtZW50Lm5hbWUsIGZvcm1Db250cm9sKTtcbiAgICAgIG5hbWUgPSAnZmdfJyArIGZvcm1FbGVtZW50Lm5hbWU7XG4gICAgfVxuICAgIHBhcmVudEdyb3VwLmFkZENvbnRyb2wobmFtZSwgY3RybCk7XG4gIH1cblxuICAvKipcbiAgICogTWVyZ2UgZGF0YSBpbnRvIGEgZm9ybSBtb2RlbC5cbiAgICpcbiAgICogQHBhcmFtIG1vZGVsIC0gZm9ybSBtb2RlbFxuICAgKiBAcGFyYW0gZGF0YSAtIGRhdGEgb2JqZWN0IG9yIGFycmF5IG9mIFNlYXJjaEZpbHRlciBvYmplY3RzIGluIGNhc2Ugb2YgYSBzZWFyY2ggZm9ybVxuICAgKi9cbiAgcHJpdmF0ZSBfZGF0YVRvRm9ybShzY29wZTogRm9ybUdlblNjb3BlLCBtb2RlbDogYW55LCBkYXRhOiBhbnkpIHtcbiAgICBpZiAobW9kZWwgJiYgZGF0YSkge1xuICAgICAgdGhpcy5fc2V0RWxlbWVudFZhbHVlcyhzY29wZSwgbW9kZWwuZWxlbWVudHMsIGRhdGEpO1xuICAgIH1cbiAgICByZXR1cm4gbW9kZWw7XG4gIH1cblxuICAvLyByZWN1cnNpdmUgbWV0aG9kIGZvciBhZGRpbmcgdmFsdWVzIHRvIG1vZGVsIGVsZW1lbnRzXG4gIHByaXZhdGUgX3NldEVsZW1lbnRWYWx1ZXMoc2NvcGU6IEZvcm1HZW5TY29wZSwgZWxlbWVudHMsIGRhdGEpIHtcblxuICAgIGVsZW1lbnRzLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICBpZiAodGhpcy5faGFzVmFsdWUoZGF0YSwgZWxlbWVudCkpIHtcblxuICAgICAgICBlbGVtZW50LnZhbHVlID0gdGhpcy5fZ2V0VmFsdWUoc2NvcGUsIGRhdGEsIGVsZW1lbnQpO1xuICAgICAgICBpZiAoZWxlbWVudC52YWx1ZSkge1xuICAgICAgICAgIC8vIGFkZCBtZXRhIGRhdGEgZm9yIHNvbWUgb2YgdGhlIHR5cGVzXG4gICAgICAgICAgdGhpcy5fZmV0Y2hNZXRhRGF0YShzY29wZSwgZGF0YSwgZWxlbWVudCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRlbGV0ZSBlbGVtZW50LnZhbHVlO1xuICAgICAgfVxuICAgICAgaWYgKGVsZW1lbnQudHlwZSAhPT0gJ1RBQkxFJyAmJiBlbGVtZW50LmVsZW1lbnRzICYmIGVsZW1lbnQuZWxlbWVudHMubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLl9zZXRFbGVtZW50VmFsdWVzKHNjb3BlLCBlbGVtZW50LmVsZW1lbnRzLCBkYXRhKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8vIGluIHNvbWUgY2FzZXMgcmVxdWlyZWQgbWV0YSBkYXRhIG1heSBub3QgYmUgYXZhaWxhYmxlIG9uIHRoZSBlbGVtZW50IGl0c2VsZlxuICAvLyBzbyB0aGV5IGhhdmUgdG8gYmUgZmV0Y2hlZCBhbmQgYWRkZWQgdG8gdGhlIGVsZW1lbnQgZm9yIHRoZSBmb3JtIHRvIGJlIGFibGVcbiAgLy8gdG8gcmVuZGVyIHRoZSBlbGVtZW50IGNvcnJlY3RseVxuICBwcml2YXRlIF9mZXRjaE1ldGFEYXRhKHNjb3BlOiBGb3JtR2VuU2NvcGUsIGRhdGEsIGVsZW1lbnQpIHtcblxuICAgIGlmIChzY29wZS5mb3JtT3B0aW9ucy5mb3JtTW9kZWwuc2l0dWF0aW9uID09PSAnU0VBUkNIJykge1xuICAgICAgLy8gdG9kbzogaG93IHRvIGZldGNoIG1ldGEgZGF0YSBpbiBzZWFyY2ggc2l0dWF0aW9uXG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChlbGVtZW50LnR5cGUgPT09ICdPUkdBTklaQVRJT04nICYmIGRhdGFbZWxlbWVudC5uYW1lICsgJ19tZXRhJ10pIHtcbiAgICAgICAgZWxlbWVudC5kYXRhTWV0YSA9IGRhdGFbZWxlbWVudC5uYW1lICsgJ19tZXRhJ107XG4gICAgICB9IGVsc2UgaWYgKGVsZW1lbnQudHlwZSA9PT0gJ0NPREVTWVNURU0nICYmIGRhdGFbZWxlbWVudC5uYW1lICsgJ19tZXRhJ10pIHtcbiAgICAgICAgZWxlbWVudC5kYXRhTWV0YSA9IGRhdGFbZWxlbWVudC5uYW1lICsgJ19tZXRhJ107XG4gICAgICAgIGVsZW1lbnQuZGVmYXVsdHJlcHJlc2VudGF0aW9uID0gZGF0YVtlbGVtZW50Lm5hbWUgKyAnX21ldGEnXS5kZWZhdWx0cmVwcmVzZW50YXRpb247XG4gICAgICB9IGVsc2UgaWYgKGVsZW1lbnQudHlwZSA9PT0gJ1JFRkVSRU5DRScgJiYgZGF0YVtlbGVtZW50Lm5hbWUgKyAnX21ldGEnXSkge1xuICAgICAgICBlbGVtZW50LmRhdGFNZXRhID0gZGF0YVtlbGVtZW50Lm5hbWUgKyAnX21ldGEnXTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9nZXREYXRhTWV0YShmb3JtRWxlbWVudDogYW55LCBuZXdWYWx1ZTogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcblxuICAgIGlmIChuZXdWYWx1ZSkge1xuICAgICAgc3dpdGNoIChmb3JtRWxlbWVudC50eXBlKSB7XG4gICAgICAgIGNhc2UgJ09SR0FOSVpBVElPTic6IHtcbiAgICAgICAgICBpZiAodHlwZW9mIG5ld1ZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3lzdGVtU2VydmljZS5nZXRPcmdhbml6YXRpb25PYmplY3QobmV3VmFsdWUpO1xuICAgICAgICAgIH0gZWxzZSBpZiAobmV3VmFsdWUubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zeXN0ZW1TZXJ2aWNlLmdldE9yZ2FuaXphdGlvbk9iamVjdChuZXdWYWx1ZVswXSk7XG4gICAgICAgICAgfSBlbHNlIGlmIChuZXdWYWx1ZS5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zeXN0ZW1TZXJ2aWNlLmdldE9yZ2FuaXphdGlvbk9iamVjdHMobmV3VmFsdWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICdSRUZFUkVOQ0UnOiB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMucmVmZXJlbmNlU2VydmljZS5mZXRjaElEUmVmZXJlbmNlTWV0YURhdGEoQXJyYXkuaXNBcnJheShuZXdWYWx1ZSkgPyBuZXdWYWx1ZSA6IFtuZXdWYWx1ZV0pO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJ0NPREVTWVNURU0nOiB7XG4gICAgICAgICAgcmV0dXJuIG9mKHRoaXMuc3lzdGVtU2VydmljZS5nZXRDb2Rlc3lzdGVtKGZvcm1FbGVtZW50LmNvZGVzeXN0ZW0uaWQpLmVudHJpZXMuZmluZCgoZW50cnkpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBlbnRyeS5kZWZhdWx0cmVwcmVzZW50YXRpb24gPT09IG5ld1ZhbHVlO1xuICAgICAgICAgIH0pKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gb2YobnVsbCk7XG4gIH1cblxuICBwcml2YXRlIF9oYXNWYWx1ZShkYXRhLCBlbGVtZW50KSB7XG5cbiAgICAvLyBkaWZmZXIgYmV0d2VlbiBhcnJheSBvZiBTZWFyY2hGaWx0ZXJzIGFuZCBhIGZvcm0gZGF0YSBvYmplY3RcbiAgICBpZiAoQXJyYXkuaXNBcnJheShkYXRhKSkge1xuICAgICAgaWYgKGVsZW1lbnQudHlwZSA9PT0gJ1RBQkxFJykge1xuICAgICAgICByZXR1cm4gISEoZGF0YS5maW5kKChmaWx0ZXIpID0+IGZpbHRlci5wcm9wZXJ0eS5zdGFydHNXaXRoKGVsZW1lbnQucW5hbWUpKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gISEoZGF0YS5maW5kKChmaWx0ZXIpID0+IGZpbHRlci5wcm9wZXJ0eSA9PT0gZWxlbWVudC5xbmFtZSkpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZGF0YS5oYXNPd25Qcm9wZXJ0eShlbGVtZW50Lm5hbWUpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2dldFZhbHVlKHNjb3BlOiBGb3JtR2VuU2NvcGUsIGRhdGEsIGVsZW1lbnQpIHtcblxuICAgIGxldCB2YWx1ZTtcbiAgICBpZiAoc2NvcGUuZm9ybU9wdGlvbnMuZm9ybU1vZGVsLnNpdHVhdGlvbiA9PT0gJ1NFQVJDSCcpIHtcbiAgICAgIGlmIChzY29wZS5pc0lubmVyVGFibGVGb3JtKSB7XG4gICAgICAgIGlmIChlbGVtZW50LnR5cGUgPT09ICdEQVRFVElNRScgfHwgZWxlbWVudC50eXBlID09PSAnTlVNQkVSJykge1xuICAgICAgICAgIHZhbHVlID0gU2VhcmNoU2VydmljZS50b1JhbmdlVmFsdWUoZGF0YVtlbGVtZW50Lm5hbWVdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2YWx1ZSA9IGRhdGFbZWxlbWVudC5uYW1lXTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChlbGVtZW50LnR5cGUgPT09ICdUQUJMRScpIHtcbiAgICAgICAgdmFsdWUgPSB0aGlzLnNlYXJjaFNlcnZpY2UudGFibGVGaWx0ZXJzVG9FbGVtZW50VmFsdWUodGhpcy5fZ2V0VGFibGVGaWx0ZXJzKGRhdGEsIGVsZW1lbnQucW5hbWUpLCBlbGVtZW50LmVsZW1lbnRzKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGZpbHRlciA9IGRhdGEuZmluZChmID0+IGYucHJvcGVydHkgPT09IGVsZW1lbnQucW5hbWUpO1xuICAgICAgICB2YWx1ZSA9IHRoaXMuc2VhcmNoU2VydmljZS5maWx0ZXJUb0VsZW1lbnRWYWx1ZShmaWx0ZXIsIGVsZW1lbnQudHlwZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcblxuICAgICAgaWYgKGVsZW1lbnQudHlwZSA9PT0gJ0RBVEVUSU1FJyAmJiBkYXRhW2VsZW1lbnQubmFtZV0pIHtcbiAgICAgICAgdmFsdWUgPSBuZXcgRGF0ZShgJHtkYXRhW2VsZW1lbnQubmFtZV19JHsodHlwZW9mIGRhdGFbZWxlbWVudC5uYW1lXSA9PT0gJ3N0cmluZycgPyBkYXRhW2VsZW1lbnQubmFtZV0uaW5kZXhPZignVCcpIDogZGF0YVtlbGVtZW50Lm5hbWVdLnRvSVNPU3RyaW5nKCkuaW5kZXhPZignVCcpKSAhPT0gLTEgPyAnJyA6ICdUMDA6MDA6MDAnfWApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFsdWUgPSBkYXRhW2VsZW1lbnQubmFtZV07XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldFRhYmxlRmlsdGVycyhmaWx0ZXJzOiBTZWFyY2hGaWx0ZXJbXSwgcHJvcGVydHlOYW1lOiBzdHJpbmcpOiBTZWFyY2hGaWx0ZXJbXSB7XG4gICAgcmV0dXJuIGZpbHRlcnMuZmlsdGVyKGYgPT4gZi5wcm9wZXJ0eS5zdGFydHNXaXRoKHByb3BlcnR5TmFtZSArICcuJykpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW5pdFZhbGlkYXRvcnMoZm9ybUNvbnRyb2w6IE9iamVjdEZvcm1Hcm91cCwgc2NvcGU6IEZvcm1HZW5TY29wZSkge1xuICAgIGlmIChmb3JtQ29udHJvbCkge1xuICAgICAgZm9yIChsZXQga2V5IGluIGZvcm1Db250cm9sLmNvbnRyb2xzKSB7XG4gICAgICAgIGNvbnN0IGNvbnRyb2wgPSBmb3JtQ29udHJvbC5jb250cm9sc1trZXldIGFzIGFueTtcbiAgICAgICAgaWYgKGNvbnRyb2wuY29udHJvbHMpIHtcbiAgICAgICAgICB0aGlzLl9pbml0VmFsaWRhdG9ycyhjb250cm9sLCBzY29wZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2NvcGUuaW5pdGlhbFZhbGlkYXRvcnNbY29udHJvbC5fZW9Gb3JtRWxlbWVudC5uYW1lXSA9IGNvbnRyb2wudmFsaWRhdG9yO1xuICAgICAgICAgIGNvbnRyb2wuc2V0VmFsaWRhdG9ycyhWYWxpZGF0b3JzLmNvbXBvc2UoXG4gICAgICAgICAgICB0aGlzLl9nZXRWYWxpZGF0b3JzKHNjb3BlLCBjb250cm9sLl9lb0Zvcm1FbGVtZW50KS5jb25jYXQoXG4gICAgICAgICAgICAgIFtzY29wZS5pbml0aWFsVmFsaWRhdG9yc1tjb250cm9sLl9lb0Zvcm1FbGVtZW50Lm5hbWVdXSlcbiAgICAgICAgICApKTtcbiAgICAgICAgICBjb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAqIEJ1aWxkIHZhbGlkYXRvcnMgZm9yIHRoZSBnaXZlbiBmb3JtIGVsZW1lbnQgdG8gYmUgYXR0YWNoZWQgdG9cbiAgKiBhIHJlYWN0aXZlIGZvcm1Db250cm9sLlxuICAqXG4gICogQHBhcmFtIGZvcm1FbGVtZW50IC0gZm9ybSBlbGVtZW50IG9iamVjdFxuICAqL1xuICBwcml2YXRlIF9nZXRWYWxpZGF0b3JzKHNjb3BlOiBGb3JtR2VuU2NvcGUsIGZvcm1FbGVtZW50OiBhbnkpOiBWYWxpZGF0b3JGbltdIHtcbiAgICBsZXQgZWxtVmFsaWRhdG9ycyA9IEZvcm1WYWxpZGF0aW9uLmdldFZhbGlkYXRvcnMoZm9ybUVsZW1lbnQsIHNjb3BlLmZvcm1PcHRpb25zLmZvcm1Nb2RlbC5zaXR1YXRpb24pO1xuICAgIC8vIGFkZCBjdXN0b20gdmFsaWRhdG9yIGZvciBzY3JpcHQgZW5hYmxlZCBmb3Jtc1xuICAgIGlmIChzY29wZS5mb3JtR2VuUmVzdWx0LnNjcmlwdGluZ1Njb3BlKSB7XG4gICAgICBlbG1WYWxpZGF0b3JzLnB1c2goRm9ybVZhbGlkYXRpb24uY3VzdG9tU2NyaXB0aW5nVmFsaWRhdGlvbik7XG4gICAgfVxuXG4gICAgcmV0dXJuIGVsbVZhbGlkYXRvcnM7XG4gIH1cblxuICBwcml2YXRlIF9pbml0U2NyaXB0aW5nU2NvcGUoc2NvcGU6IEZvcm1HZW5TY29wZSwgZm9ybVNjcmlwdFNlcnZpY2U6IE9iamVjdEZvcm1TY3JpcHRTZXJ2aWNlKSB7XG4gICAgbGV0IHtkYXRhLCBhY3Rpb25zLCBvYmplY3RzLCBjb250ZXh0fSA9IDxPYmplY3RGb3JtT3B0aW9ucz4oc2NvcGUuZm9ybU9wdGlvbnMgfHwge30pO1xuXG4gICAgaWYgKHNjb3BlLmZvcm1HZW5SZXN1bHQuc2NyaXB0aW5nU2NvcGUpIHtcbiAgICAgIHNjb3BlLmZvcm1HZW5SZXN1bHQuc2NyaXB0aW5nU2NvcGUuc2V0TW9kZWwoc2NvcGUuZm9ybUdlblJlc3VsdC5zY3JpcHRNb2RlbCk7XG4gICAgICAvKiogcHJvdmlkZSBhY2Nlc3MgdG8gYWN0aW9ucyAodXNlZCBpbnNpZGUgb2YgQlBNLUZvcm1zKSAqL1xuICAgICAgc2NvcGUuZm9ybUdlblJlc3VsdC5zY3JpcHRpbmdTY29wZS5hY3Rpb25zID0gYWN0aW9ucztcbiAgICAgIC8qKiBwcm92aWRlIGFjY2VzcyB0byBhZGRpdGlvbmFsIG9iamVjdHMgKHVzZWQgZm9yIGV4YW1wbGUgaW4gQlBNLVN0YXJ0LUZvcm1zIHRvXG4gICAgICAgKiBhZGQgZGF0YSBvZiBETVMtT2JqZWN0cyB0byBzdGFydCB0aGUgcHJvY2VzcyBmb3IpXG4gICAgICAgKi9cbiAgICAgIHNjb3BlLmZvcm1HZW5SZXN1bHQuc2NyaXB0aW5nU2NvcGUub2JqZWN0cyA9IG9iamVjdHM7XG4gICAgICBzY29wZS5mb3JtR2VuUmVzdWx0LnNjcmlwdGluZ1Njb3BlLmNvbnRleHQgPSBjb250ZXh0O1xuICAgICAgLyoqIHByb3ZpZGUgcmVhZG9ubHkgYWNjZXNzIHRvIGluaXRpYWwgZm9ybSBkYXRhICh3aGljaCBtYXkgYWxzbyBjb250YWluIHZhbHVlcyB0aGF0XG4gICAgICAgKiBhcmUgbm90IHJlbmRlcmVkIGFzIGZvcm0gZWxlbWVudHMgKGludmlzaWJsZSB2YWx1ZXMpKVxuICAgICAgICovXG4gICAgICBzY29wZS5mb3JtR2VuUmVzdWx0LnNjcmlwdGluZ1Njb3BlLmRhdGEgPSBkYXRhO1xuXG4gICAgICAvKiogYnkgZGVmYXVsdCwgc2NyaXB0aW5nIHNjb3BlcyBhcmUgYXBwbGllZCB0byBmb3Jtcy4gQnV0IHRhYmxlIGVsZW1lbnRzIGNyZWF0ZSB0aGVpciBvd24gc2NvcGVcbiAgICAgICAqIGZvciBlZGl0aW5nIHJvd3MuIEJlaW5nIG9uZSBvZiB0aG9zZSBpbm5lciBmb3JtcyBzaG91bGQgbm90IHJ1biB0aGUgZm9ybSBzY3JpcHQgYWdhaW4sIGJ1dFxuICAgICAgICogaW5zdGVhZCBqdXN0IHByb3ZpZGUgdGhlIG9ic2VydmluZyBhYmlsaXRpZXMgb2YgdGhlIHNjcmlwdGluZyBzY29wZS5cbiAgICAgICAqL1xuICAgICAgaWYgKCFzY29wZS5mb3JtT3B0aW9ucy5kaXNhYmxlZCAmJiAhc2NvcGUuaXNJbm5lclRhYmxlRm9ybSAmJiBzY29wZS5mb3JtR2VuUmVzdWx0LmZvcm1Nb2RlbCkge1xuICAgICAgICBjb25zdCBzY3JpcHROYW1lID0gc2NvcGUuZm9ybUdlblJlc3VsdC5mb3JtTW9kZWwubmFtZSArICdfJyArIHNjb3BlLmZvcm1HZW5SZXN1bHQuZm9ybU1vZGVsLnNpdHVhdGlvbjtcbiAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoJ2V4ZWN1dGluZyBmb3JtIHNjcmlwdCAnICsgc2NyaXB0TmFtZSk7XG4gICAgICAgIGZvcm1TY3JpcHRTZXJ2aWNlLnJ1bkZvcm1TY3JpcHQoXG4gICAgICAgICAgc2NvcGUuZm9ybUdlblJlc3VsdC5zY3JpcHRpbmdTY29wZSxcbiAgICAgICAgICBzY29wZS5mb3JtR2VuUmVzdWx0LmZvcm1Nb2RlbC5zY3JpcHQsXG4gICAgICAgICAgc2NyaXB0TmFtZVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIHdpbGwgYmUgY2FsbGVkIGVhY2ggdGltZSB0aGUgc2NyaXB0IGNoYW5nZXMgaXRzIGludGVybmFsIG1vZGVsLlxuICAgICAqIEl0IGlzIHVzZWQgdG8gdHJhbnNmZXIgdGhlIHNjcmlwdCBjaGFuZ2VzIHRvIHRoZSBhY3R1YWwgZm9ybSBtb2RlbC5cbiAgICAgKlxuICAgICAqIFRvIGVuc3VyZSB0aGUgcmlnaHQgY29udGV4dCwgd2UgZGVmaW5lIGFuIGluc3RhbmNlIG1ldGhvZCBhcyBjYWxsYmFjayBmb3IgdGhlIHNjcmlwdGluZyBzY29wZVxuICAgICAqIEBzZWU6IGh0dHBzOi8vYmxvZy5qb2hubnlyZWlsbHkuY29tLzIwMTQvMDQvdHlwZXNjcmlwdC1pbnN0YW5jZS1tZXRob2RzLmh0bWxcbiAgICAgKlxuICAgICAqIEBwYXJhbSBmb3JtQ29udHJvbE5hbWVcbiAgICAgKiBAcGFyYW0gY2hhbmdlXG4gICAgICovXG5cbiAgcHJpdmF0ZSBfZ2V0U2NyaXB0aW5nTW9kZWxDaGFuZ2VkKHNjb3BlOiBGb3JtR2VuU2NvcGUpOiBGdW5jdGlvbiB7XG4gICAgcmV0dXJuIChmb3JtQ29udHJvbE5hbWUsIGNoYW5nZSkgPT4ge1xuXG4gICAgICAvLyBmaW5kIHRoZSB0YXJnZXQgY29udHJvbFxuICAgICAgbGV0IGZjOiBPYmplY3RGb3JtQ29udHJvbCA9IHNjb3BlLmZvcm1HZW5SZXN1bHQuZm9ybUNvbnRyb2xzW2Zvcm1Db250cm9sTmFtZV0gYXMgT2JqZWN0Rm9ybUNvbnRyb2w7XG4gICAgICBpZiAoZmMpIHtcblxuICAgICAgICAvLyBjaGFuZ2Ugb25seSBhbGxvd2VkIHByb3BlcnRpZXNcbiAgICAgICAgc3dpdGNoIChjaGFuZ2UubmFtZSkge1xuICAgICAgICAgIGNhc2UgJ3ZhbHVlJzoge1xuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY2hhbmdlLm5ld1ZhbHVlKSkge1xuICAgICAgICAgICAgICB0aGlzLl9wcm9jZXNzQXJyYXlWYWx1ZUNoYW5nZShmYywgY2hhbmdlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGZjLl9lb0Zvcm1FbGVtZW50LnZhbHVlID0gY2hhbmdlLm5ld1ZhbHVlO1xuICAgICAgICAgICAgICBpZiAoZmMudmFsdWUgIT09IGNoYW5nZS5uZXdWYWx1ZSkge1xuICAgICAgICAgICAgICAgIGZjLnBhdGNoVmFsdWUoY2hhbmdlLm5ld1ZhbHVlKTtcbiAgICAgICAgICAgICAgICBmYy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgICAgICAgICAgICAgZmMubWFya0FzRGlydHkoKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2NvcGUuZm9ybUdlblJlc3VsdC5mb3JtLm1hcmtBc0RpcnR5KCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSAncmVxdWlyZWQnOiB7XG4gICAgICAgICAgICBpZiAoZmMuX2VvRm9ybUVsZW1lbnQucmVxdWlyZWQgIT09IGNoYW5nZS5uZXdWYWx1ZSkge1xuICAgICAgICAgICAgICBmYy5fZW9Gb3JtRWxlbWVudC5yZXF1aXJlZCA9IGNoYW5nZS5uZXdWYWx1ZTtcbiAgICAgICAgICAgICAgLy8gYXBwbHkgbmV3IHZhbGlkYXRvcnNcbiAgICAgICAgICAgICAgLy8gQHNlZTogaHR0cHM6Ly9zY290Y2guaW8vdHV0b3JpYWxzL2hvdy10by1pbXBsZW1lbnQtY29uZGl0aW9uYWwtdmFsaWRhdGlvbi1pbi1hbmd1bGFyLTItbW9kZWwtZHJpdmVuLWZvcm1zXG4gICAgICAgICAgICAgIGZjLnNldFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5jb21wb3NlKHRoaXMuX2dldFZhbGlkYXRvcnMoc2NvcGUsIGZjLl9lb0Zvcm1FbGVtZW50KS5jb25jYXQoW3Njb3BlLmluaXRpYWxWYWxpZGF0b3JzW2ZjLl9lb0Zvcm1FbGVtZW50Lm5hbWVdXSkpKTtcbiAgICAgICAgICAgICAgLy8gbmVlZCB0byBtYXJrIGZvcm0gY29udHJvbCBhcyB0b3VjaGVkIGJlY2F1c2Ugb3RoZXJ3aXNlIGZvcm0gdmFsaWRhdGlvbiB3aWxsIG5vdCBzaG93XG4gICAgICAgICAgICAgIC8vIGVycm9yIG1lc3NhZ2VzXG4gICAgICAgICAgICAgIGZjLm1hcmtBc1RvdWNoZWQoKTtcbiAgICAgICAgICAgICAgZmMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgJ3JlYWRvbmx5Jzoge1xuICAgICAgICAgICAgZmMuX2VvRm9ybUVsZW1lbnQucmVhZG9ubHkgPSBjaGFuZ2UubmV3VmFsdWU7XG4gICAgICAgICAgICBpZiAoY2hhbmdlLm5ld1ZhbHVlID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgIGZjLmRpc2FibGUoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGZjLmVuYWJsZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgJ2Vycm9yJzoge1xuICAgICAgICAgICAgaWYgKEpTT04uc3RyaW5naWZ5KGZjLl9lb0Zvcm1FbGVtZW50LmVycm9yKSAhPT0gSlNPTi5zdHJpbmdpZnkoY2hhbmdlLm5ld1ZhbHVlKSkge1xuICAgICAgICAgICAgICBmYy5fZW9Gb3JtRWxlbWVudC5lcnJvciA9IGNoYW5nZS5uZXdWYWx1ZTtcbiAgICAgICAgICAgICAgZmMubWFya0FzVG91Y2hlZCgpO1xuICAgICAgICAgICAgICBmYy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gbmV3IG9ucm93ZWRpdCBmdW5jdGlvbiB3YXMgYXBwbGllZCBieSB0aGUgc2NyaXB0XG4gICAgICAgICAgY2FzZSAnb25yb3dlZGl0Jzoge1xuICAgICAgICAgICAgZmMuX2VvRm9ybUVsZW1lbnQub25yb3dlZGl0ID0gY2hhbmdlLm5ld1ZhbHVlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIG5ldyBvbmNoYW5nZSBmdW5jdGlvbiB3YXMgYXBwbGllZCBieSB0aGUgc2NyaXB0XG4gICAgICAgICAgY2FzZSAnb25jaGFuZ2UnOiB7XG4gICAgICAgICAgICBmYy5fZW9Gb3JtRWxlbWVudC5vbmNoYW5nZSA9IGNoYW5nZS5uZXdWYWx1ZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBuZXcgY29udGV4dElkIHdhcyBhcHBsaWVkIGJ5IHRoZSBzY3JpcHRcbiAgICAgICAgICBjYXNlICdjb250ZXh0SWQnOiB7XG4gICAgICAgICAgICBmYy5fZW9Gb3JtRWxlbWVudC5jb250ZXh0SWQgPSBjaGFuZ2UubmV3VmFsdWU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gbmV3IGRlc2NyaXB0aW9uIHdhcyBhcHBsaWVkIGJ5IHRoZSBzY3JpcHRcbiAgICAgICAgICBjYXNlICdkZXNjcmlwdGlvbic6IHtcbiAgICAgICAgICAgIGZjLl9lb0Zvcm1FbGVtZW50LmRlc2NyaXB0aW9uID0gY2hhbmdlLm5ld1ZhbHVlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfcHJvY2Vzc0FycmF5VmFsdWVDaGFuZ2UoZmMsIGNoYW5nZSkge1xuICAgIGNvbnN0IG5ld1ZhbCA9IGNoYW5nZS5uZXdWYWx1ZTtcbiAgICBjb25zdCB0YXJnZXRUeXBlID0gZmMuX2VvRm9ybUVsZW1lbnQudHlwZTtcbiAgICAvLyBmb3Igc29tZSB0eXBlcyB3ZSBoYXZlIHRvIGVuc3VyZSB0aGF0IG1ldGEgZGF0YSBhcmUgcHJvdmlkZWQgYXMgd2VsbFxuICAgIHN3aXRjaCAodGFyZ2V0VHlwZSkge1xuICAgICAgY2FzZSAnT1JHQU5JWkFUSU9OJzoge1xuICAgICAgICB0aGlzLl9nZXREYXRhTWV0YShmYy5fZW9Gb3JtRWxlbWVudCwgbmV3VmFsKS5zdWJzY3JpYmUobSA9PiB7XG4gICAgICAgICAgZmMuX2VvRm9ybUVsZW1lbnQuZGF0YU1ldGEgPSBtO1xuICAgICAgICB9KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdDT0RFU1lTVEVNJzoge1xuICAgICAgICBpZiAoIWZjLl9lb0Zvcm1FbGVtZW50LmNvZGVzeXN0ZW0uZW50cmllcykge1xuICAgICAgICAgIGZjLl9lb0Zvcm1FbGVtZW50LmNvZGVzeXN0ZW0gPSB0aGlzLnN5c3RlbVNlcnZpY2UuZ2V0Q29kZXN5c3RlbShmYy5fZW9Gb3JtRWxlbWVudC5jb2Rlc3lzdGVtLmlkKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ1RBQkxFJzoge1xuICAgICAgICBjb25zdCBkYXRhVG9CZVByb2Nlc3NlZCA9IHt9O1xuICAgICAgICBmYy5fZW9Gb3JtRWxlbWVudC5lbGVtZW50cy5mb3JFYWNoKGUgPT4ge1xuICAgICAgICAgIGlmIChlLnR5cGUgPT09ICdPUkdBTklaQVRJT04nIHx8IGUudHlwZSA9PT0gJ0NPREVTWVNURU0nKSB7XG4gICAgICAgICAgICBkYXRhVG9CZVByb2Nlc3NlZFtlLm5hbWVdID0gZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoT2JqZWN0LmtleXMoZGF0YVRvQmVQcm9jZXNzZWQpLmxlbmd0aCkge1xuICAgICAgICAgIGxldCBvYnMgPSBbXTtcbiAgICAgICAgICBuZXdWYWwuZm9yRWFjaChyb3dEYXRhID0+IHtcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKHJvd0RhdGEpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgICAgICAgaWYgKGRhdGFUb0JlUHJvY2Vzc2VkW2tleV0pIHtcbiAgICAgICAgICAgICAgICBvYnMucHVzaCh0aGlzLl9nZXREYXRhTWV0YShkYXRhVG9CZVByb2Nlc3NlZFtrZXldLCByb3dEYXRhW2tleV0pLnBpcGUoXG4gICAgICAgICAgICAgICAgICB0YXAobSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChtKSB7XG4gICAgICAgICAgICAgICAgICAgICAgcm93RGF0YVtrZXkgKyAnX21ldGEnXSA9IG07XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHJvd0RhdGFba2V5ICsgJ19tZXRhJ107XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGZvcmtKb2luKG9icykuc3Vic2NyaWJlKCgpID0+IHRoaXMuX3VwZGF0ZUFycmF5VmFsdWUoZmMsIG5ld1ZhbCkpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLl91cGRhdGVBcnJheVZhbHVlKGZjLCBuZXdWYWwpO1xuICB9XG5cbiAgcHJpdmF0ZSBfdXBkYXRlQXJyYXlWYWx1ZShmYywgbmV3VmFsdWUpIHtcbiAgICBmYy5fZW9Gb3JtRWxlbWVudC52YWx1ZSA9IFtdLmNvbmNhdChuZXdWYWx1ZSk7XG4gICAgZmMucGF0Y2hWYWx1ZShbXS5jb25jYXQobmV3VmFsdWUpKTtcbiAgICBmYy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgZmMubWFya0FzRGlydHkoKTtcbiAgfVxuXG4gIHByaXZhdGUgX2NsZWFyVGVtcG9yYXJ5U3RvcmFnZUVudHJpZXMoKSB7XG4gICAgdGhpcy5fZ2V0VGVtcG9yYXJ5U3RvcmFnZUVudHJpZXMoKS5mb3JFYWNoKGUgPT4gbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oZSkpO1xuICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKHRoaXMuVEVNUF9TVE9SQUdFX0VOVFJJRVNfS0VZKTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldFRlbXBvcmFyeVN0b3JhZ2VFbnRyaWVzKCk6IHN0cmluZ1tdIHtcbiAgICBsZXQgcmVzID0gW107XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGVudHJpZXM6IHN0cmluZ1tdID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLlRFTVBfU1RPUkFHRV9FTlRSSUVTX0tFWSkpO1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZW50cmllcykpIHJlcyA9IGVudHJpZXM7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5kZWJ1ZyhlKVxuICAgIH1cbiAgICBjb25zb2xlLmRlYnVnKGBGb3VuZCAke3Jlcy5sZW5ndGh9IHRtcCBlbnRyaWVzIHRvIGJlIHJlbW92ZWRgKTtcbiAgICByZXR1cm4gcmVzO1xuICB9XG5cblxufVxuIl19
|
|
@@ -27,8 +27,8 @@ import * as i0 from "@angular/core";
|
|
|
27
27
|
* Module rendering a dms objects form.
|
|
28
28
|
*/
|
|
29
29
|
export class ObjectFormModule {
|
|
30
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0
|
|
31
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0
|
|
30
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ObjectFormModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
31
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.1.0", ngImport: i0, type: ObjectFormModule, declarations: [ObjectFormComponent,
|
|
32
32
|
ObjectFormGroupComponent,
|
|
33
33
|
ObjectFormEditComponent,
|
|
34
34
|
FormElementComponent,
|
|
@@ -48,7 +48,7 @@ export class ObjectFormModule {
|
|
|
48
48
|
YvcDatepickerModule,
|
|
49
49
|
YvcTabsModule,
|
|
50
50
|
YvcSplitViewModule], exports: [ObjectFormComponent, ObjectFormGroupComponent, ObjectFormEditComponent, FormElementComponent, FormElementTableComponent] }); }
|
|
51
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0
|
|
51
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ObjectFormModule, providers: [ObjectFormHelperService], imports: [CommonModule,
|
|
52
52
|
FormsModule,
|
|
53
53
|
ReactiveFormsModule,
|
|
54
54
|
UiModule,
|
|
@@ -63,7 +63,7 @@ export class ObjectFormModule {
|
|
|
63
63
|
YvcTabsModule,
|
|
64
64
|
YvcSplitViewModule] }); }
|
|
65
65
|
}
|
|
66
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0
|
|
66
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ObjectFormModule, decorators: [{
|
|
67
67
|
type: NgModule,
|
|
68
68
|
args: [{
|
|
69
69
|
imports: [
|