@pega/angular-sdk-components 24.1.10 → 24.2.12
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/esm2022/lib/_bridge/angular-pconnect.mjs +3 -3
- package/esm2022/lib/_bridge/component-mapper/component-mapper.component.mjs +6 -13
- package/esm2022/lib/_components/designSystemExtension/alert/alert.component.mjs +3 -3
- package/esm2022/lib/_components/designSystemExtension/alert-banner/alert-banner.component.mjs +4 -4
- package/esm2022/lib/_components/designSystemExtension/banner/banner.component.mjs +3 -3
- package/esm2022/lib/_components/designSystemExtension/case-create-stage/case-create-stage.component.mjs +4 -4
- package/esm2022/lib/_components/designSystemExtension/field-group/field-group.component.mjs +3 -3
- package/esm2022/lib/_components/designSystemExtension/material-case-summary/material-case-summary.component.mjs +5 -6
- package/esm2022/lib/_components/designSystemExtension/material-details/material-details.component.mjs +3 -3
- package/esm2022/lib/_components/designSystemExtension/material-details-fields/material-details-fields.component.mjs +13 -6
- package/esm2022/lib/_components/designSystemExtension/material-summary-item/material-summary-item.component.mjs +3 -3
- package/esm2022/lib/_components/designSystemExtension/material-summary-list/material-summary-list.component.mjs +3 -3
- package/esm2022/lib/_components/designSystemExtension/material-utility/material-utility.component.mjs +3 -3
- package/esm2022/lib/_components/designSystemExtension/material-vertical-tabs/material-vertical-tabs.component.mjs +4 -4
- package/esm2022/lib/_components/designSystemExtension/operator/operator.component.mjs +9 -7
- package/esm2022/lib/_components/designSystemExtension/pulse/pulse.component.mjs +9 -9
- package/esm2022/lib/_components/designSystemExtension/rich-text-editor/rich-text-editor.component.mjs +3 -3
- package/esm2022/lib/_components/designSystemExtension/wss-quick-create/wss-quick-create.component.mjs +3 -3
- package/esm2022/lib/_components/field/auto-complete/auto-complete.component.mjs +23 -13
- package/esm2022/lib/_components/field/cancel-alert/cancel-alert.component.mjs +3 -3
- package/esm2022/lib/_components/field/check-box/check-box.component.mjs +12 -10
- package/esm2022/lib/_components/field/currency/currency.component.mjs +39 -21
- package/esm2022/lib/_components/field/date/date.component.mjs +19 -39
- package/esm2022/lib/_components/field/date-time/date-time.component.mjs +32 -17
- package/esm2022/lib/_components/field/decimal/decimal.component.mjs +43 -23
- package/esm2022/lib/_components/field/dropdown/dropdown.component.mjs +133 -25
- package/esm2022/lib/_components/field/email/email.component.mjs +22 -7
- package/esm2022/lib/_components/field/group/group.component.mjs +6 -6
- package/esm2022/lib/_components/field/integer/integer.component.mjs +20 -7
- package/esm2022/lib/_components/field/list-view-action-buttons/list-view-action-buttons.component.mjs +8 -7
- package/esm2022/lib/_components/field/multiselect/multiselect.component.mjs +13 -6
- package/esm2022/lib/_components/field/percentage/percentage.component.mjs +39 -23
- package/esm2022/lib/_components/field/phone/phone.component.mjs +17 -29
- package/esm2022/lib/_components/field/radio-buttons/radio-buttons.component.mjs +10 -12
- package/esm2022/lib/_components/field/rich-text/rich-text.component.mjs +17 -11
- package/esm2022/lib/_components/field/scalar-list/scalar-list.component.mjs +7 -8
- package/esm2022/lib/_components/field/semantic-link/semantic-link.component.mjs +3 -3
- package/esm2022/lib/_components/field/text/text.component.mjs +12 -8
- package/esm2022/lib/_components/field/text-area/text-area.component.mjs +21 -9
- package/esm2022/lib/_components/field/text-content/text-content.component.mjs +3 -3
- package/esm2022/lib/_components/field/text-input/text-input.component.mjs +20 -7
- package/esm2022/lib/_components/field/time/time.component.mjs +31 -10
- package/esm2022/lib/_components/field/url/url.component.mjs +20 -7
- package/esm2022/lib/_components/field/user-reference/user-reference.component.mjs +102 -23
- package/esm2022/lib/_components/infra/Containers/flow-container/flow-container.component.mjs +18 -44
- package/esm2022/lib/_components/infra/Containers/flow-container/helpers.mjs +3 -3
- package/esm2022/lib/_components/infra/Containers/hybrid-view-container/hybrid-view-container.component.mjs +3 -3
- package/esm2022/lib/_components/infra/Containers/modal-view-container/modal-view-container.component.mjs +5 -12
- package/esm2022/lib/_components/infra/Containers/preview-view-container/preview-view-container.component.mjs +4 -4
- package/esm2022/lib/_components/infra/Containers/view-container/helper.mjs +22 -0
- package/esm2022/lib/_components/infra/Containers/view-container/view-container.component.mjs +9 -16
- package/esm2022/lib/_components/infra/action-buttons/action-buttons.component.mjs +5 -5
- package/esm2022/lib/_components/infra/assignment/assignment.component.mjs +73 -49
- package/esm2022/lib/_components/infra/assignment-card/assignment-card.component.mjs +5 -5
- package/esm2022/lib/_components/infra/dashboard-filter/dashboard-filter.component.mjs +3 -3
- package/esm2022/lib/_components/infra/defer-load/defer-load.component.mjs +10 -8
- package/esm2022/lib/_components/infra/error-boundary/error-boundary.component.mjs +3 -3
- package/esm2022/lib/_components/infra/multi-step/multi-step.component.mjs +3 -3
- package/esm2022/lib/_components/infra/navbar/navbar.component.mjs +5 -5
- package/esm2022/lib/_components/infra/reference/reference.component.mjs +74 -81
- package/esm2022/lib/_components/infra/region/region.component.mjs +3 -3
- package/esm2022/lib/_components/infra/root-container/root-container.component.mjs +25 -30
- package/esm2022/lib/_components/infra/stages/stages.component.mjs +5 -5
- package/esm2022/lib/_components/infra/view/view.component.mjs +22 -7
- package/esm2022/lib/_components/template/app-shell/app-shell.component.mjs +20 -4
- package/esm2022/lib/_components/template/banner-page/banner-page.component.mjs +3 -3
- package/esm2022/lib/_components/template/base/details-template-base.mjs +56 -0
- package/esm2022/lib/_components/template/base/form-template-base.mjs +16 -0
- package/esm2022/lib/_components/template/case-summary/case-summary.component.mjs +4 -4
- package/esm2022/lib/_components/template/case-view/case-view.component.mjs +11 -16
- package/esm2022/lib/_components/template/confirmation/confirmation.component.mjs +6 -6
- package/esm2022/lib/_components/template/data-reference/data-reference.component.mjs +13 -8
- package/esm2022/lib/_components/template/default-form/default-form.component.mjs +37 -25
- package/esm2022/lib/_components/template/details/details.component.mjs +12 -39
- package/esm2022/lib/_components/template/details-narrow-wide/details-narrow-wide.component.mjs +11 -38
- package/esm2022/lib/_components/template/details-one-column/details-one-column.component.mjs +12 -41
- package/esm2022/lib/_components/template/details-sub-tabs/details-sub-tabs.component.mjs +13 -40
- package/esm2022/lib/_components/template/details-three-column/details-three-column.component.mjs +12 -41
- package/esm2022/lib/_components/template/details-two-column/details-two-column.component.mjs +13 -42
- package/esm2022/lib/_components/template/details-wide-narrow/details-wide-narrow.component.mjs +12 -41
- package/esm2022/lib/_components/template/dynamic-tabs/dynamic-tabs.component.mjs +8 -7
- package/esm2022/lib/_components/template/field-group-list/field-group-list.component.mjs +3 -3
- package/esm2022/lib/_components/template/field-group-template/field-group-template.component.mjs +49 -42
- package/esm2022/lib/_components/template/field-value-list/field-value-list.component.mjs +5 -5
- package/esm2022/lib/_components/template/inline-dashboard/inline-dashboard.component.mjs +3 -3
- package/esm2022/lib/_components/template/inline-dashboard-page/inline-dashboard-page.component.mjs +5 -5
- package/esm2022/lib/_components/template/list-page/list-page.component.mjs +3 -3
- package/esm2022/lib/_components/template/list-view/list-view.component.mjs +24 -9
- package/esm2022/lib/_components/template/list-view/listViewHelpers.mjs +3 -3
- package/esm2022/lib/_components/template/list-view/utils.mjs +1 -1
- package/esm2022/lib/_components/template/multi-reference-readonly/multi-reference-readonly.component.mjs +3 -3
- package/esm2022/lib/_components/template/narrow-wide-form/narrow-wide-form.component.mjs +4 -4
- package/esm2022/lib/_components/template/one-column/one-column.component.mjs +6 -5
- package/esm2022/lib/_components/template/one-column-page/one-column-page.component.mjs +3 -3
- package/esm2022/lib/_components/template/one-column-tab/one-column-tab.component.mjs +4 -4
- package/esm2022/lib/_components/template/page/page.component.mjs +4 -4
- package/esm2022/lib/_components/template/promoted-filters/promoted-filters.component.mjs +4 -4
- package/esm2022/lib/_components/template/repeating-structures/repeating-structures.component.mjs +4 -4
- package/esm2022/lib/_components/template/simple-table/simple-table.component.mjs +3 -3
- package/esm2022/lib/_components/template/simple-table-manual/helpers.mjs +10 -9
- package/esm2022/lib/_components/template/simple-table-manual/simple-table-manual.component.mjs +61 -29
- package/esm2022/lib/_components/template/simple-table-select/simple-table-select.component.mjs +5 -5
- package/esm2022/lib/_components/template/single-reference-readonly/single-reference-readonly.component.mjs +3 -3
- package/esm2022/lib/_components/template/sub-tabs/sub-tabs.component.mjs +4 -4
- package/esm2022/lib/_components/template/three-column/three-column.component.mjs +6 -5
- package/esm2022/lib/_components/template/three-column-page/three-column-page.component.mjs +3 -3
- package/esm2022/lib/_components/template/two-column/two-column.component.mjs +6 -5
- package/esm2022/lib/_components/template/two-column-page/two-column-page.component.mjs +3 -3
- package/esm2022/lib/_components/template/two-column-tab/two-column-tab.component.mjs +4 -4
- package/esm2022/lib/_components/template/utils.mjs +17 -1
- package/esm2022/lib/_components/template/wide-narrow-form/wide-narrow-form.component.mjs +6 -5
- package/esm2022/lib/_components/template/wide-narrow-page/wide-narrow-page.component.mjs +4 -4
- package/esm2022/lib/_components/template/wss-nav-bar/wss-nav-bar.component.mjs +5 -5
- package/esm2022/lib/_components/widget/app-announcement/app-announcement.component.mjs +3 -3
- package/esm2022/lib/_components/widget/attachment/attachment.component.mjs +6 -8
- package/esm2022/lib/_components/widget/case-history/case-history.component.mjs +3 -3
- package/esm2022/lib/_components/widget/feed-container/feed-container.component.mjs +5 -5
- package/esm2022/lib/_components/widget/file-utility/file-utility.component.mjs +4 -4
- package/esm2022/lib/_components/widget/list-utility/list-utility.component.mjs +3 -3
- package/esm2022/lib/_components/widget/quick-create/quick-create.component.mjs +3 -3
- package/esm2022/lib/_components/widget/todo/todo.component.mjs +79 -63
- package/esm2022/lib/_components/widget/utility/utility.component.mjs +3 -3
- package/esm2022/lib/_directives/thousand-seperator.directive.mjs +4 -4
- package/esm2022/lib/_helpers/createstage-utils.mjs +15 -0
- package/esm2022/lib/_helpers/field-group-utils.mjs +3 -3
- package/esm2022/lib/_helpers/filter-utils.mjs +1 -2
- package/esm2022/lib/_helpers/formatters/boolean.mjs +2 -2
- package/esm2022/lib/_helpers/formatters/common.mjs +3 -2
- package/esm2022/lib/_helpers/formatters/currency.mjs +2 -2
- package/esm2022/lib/_helpers/formatters/date.mjs +5 -5
- package/esm2022/lib/_helpers/formatters/format-utils.mjs +10 -2
- package/esm2022/lib/_helpers/formatters/index.mjs +30 -16
- package/esm2022/lib/_helpers/template-utils.mjs +3 -3
- package/esm2022/lib/_helpers/utils.mjs +44 -18
- package/esm2022/lib/_messages/error-messages.service.mjs +4 -4
- package/esm2022/lib/_messages/progress-spinner.service.mjs +3 -3
- package/esm2022/lib/_messages/update-worklist.service.mjs +3 -3
- package/esm2022/lib/_services/banner.service.mjs +35 -0
- package/esm2022/lib/_services/case.service.mjs +3 -3
- package/esm2022/lib/_services/datapage.service.mjs +3 -3
- package/esm2022/lib/_services/endpoints.mjs +1 -2
- package/esm2022/lib/_services/server-config.service.mjs +3 -3
- package/esm2022/public-api.mjs +16 -12
- package/fesm2022/pega-angular-sdk-components.mjs +1988 -1666
- package/fesm2022/pega-angular-sdk-components.mjs.map +1 -1
- package/lib/_components/designSystemExtension/banner/banner.component.d.ts +0 -1
- package/lib/_components/designSystemExtension/case-create-stage/case-create-stage.component.d.ts +0 -1
- package/lib/_components/designSystemExtension/material-case-summary/material-case-summary.component.d.ts +1 -1
- package/lib/_components/designSystemExtension/material-details-fields/material-details-fields.component.d.ts +2 -1
- package/lib/_components/designSystemExtension/operator/operator.component.d.ts +2 -3
- package/lib/_components/designSystemExtension/pulse/pulse.component.d.ts +2 -3
- package/lib/_components/field/auto-complete/auto-complete.component.d.ts +8 -3
- package/lib/_components/field/cancel-alert/cancel-alert.component.d.ts +0 -1
- package/lib/_components/field/check-box/check-box.component.d.ts +2 -3
- package/lib/_components/field/currency/currency.component.d.ts +6 -4
- package/lib/_components/field/date/date.component.d.ts +17 -7
- package/lib/_components/field/date-time/date-time.component.d.ts +10 -3
- package/lib/_components/field/decimal/decimal.component.d.ts +4 -4
- package/lib/_components/field/dropdown/dropdown.component.d.ts +14 -3
- package/lib/_components/field/email/email.component.d.ts +2 -1
- package/lib/_components/field/group/group.component.d.ts +0 -1
- package/lib/_components/field/integer/integer.component.d.ts +2 -1
- package/lib/_components/field/list-view-action-buttons/list-view-action-buttons.component.d.ts +1 -2
- package/lib/_components/field/multiselect/multiselect.component.d.ts +3 -3
- package/lib/_components/field/percentage/percentage.component.d.ts +6 -3
- package/lib/_components/field/phone/phone.component.d.ts +3 -8
- package/lib/_components/field/radio-buttons/radio-buttons.component.d.ts +2 -2
- package/lib/_components/field/rich-text/rich-text.component.d.ts +3 -2
- package/lib/_components/field/scalar-list/scalar-list.component.d.ts +0 -1
- package/lib/_components/field/semantic-link/semantic-link.component.d.ts +0 -1
- package/lib/_components/field/text/text.component.d.ts +3 -2
- package/lib/_components/field/text-area/text-area.component.d.ts +2 -1
- package/lib/_components/field/text-content/text-content.component.d.ts +0 -1
- package/lib/_components/field/text-input/text-input.component.d.ts +2 -1
- package/lib/_components/field/time/time.component.d.ts +3 -1
- package/lib/_components/field/url/url.component.d.ts +2 -1
- package/lib/_components/field/user-reference/user-reference.component.d.ts +7 -1
- package/lib/_components/infra/Containers/flow-container/flow-container.component.d.ts +0 -2
- package/lib/_components/infra/Containers/flow-container/helpers.d.ts +1 -0
- package/lib/_components/infra/Containers/hybrid-view-container/hybrid-view-container.component.d.ts +0 -1
- package/lib/_components/infra/Containers/modal-view-container/modal-view-container.component.d.ts +1 -4
- package/lib/_components/infra/Containers/preview-view-container/preview-view-container.component.d.ts +0 -1
- package/lib/_components/infra/Containers/view-container/helper.d.ts +2 -0
- package/lib/_components/infra/Containers/view-container/view-container.component.d.ts +0 -1
- package/lib/_components/infra/action-buttons/action-buttons.component.d.ts +1 -1
- package/lib/_components/infra/assignment/assignment.component.d.ts +6 -4
- package/lib/_components/infra/assignment-card/assignment-card.component.d.ts +0 -1
- package/lib/_components/infra/dashboard-filter/dashboard-filter.component.d.ts +0 -1
- package/lib/_components/infra/defer-load/defer-load.component.d.ts +3 -3
- package/lib/_components/infra/error-boundary/error-boundary.component.d.ts +1 -1
- package/lib/_components/infra/multi-step/multi-step.component.d.ts +0 -1
- package/lib/_components/infra/navbar/navbar.component.d.ts +2 -3
- package/lib/_components/infra/reference/reference.component.d.ts +23 -3
- package/lib/_components/infra/region/region.component.d.ts +0 -1
- package/lib/_components/infra/root-container/root-container.component.d.ts +3 -2
- package/lib/_components/infra/stages/stages.component.d.ts +0 -1
- package/lib/_components/infra/view/view.component.d.ts +1 -1
- package/lib/_components/template/app-shell/app-shell.component.d.ts +0 -1
- package/lib/_components/template/banner-page/banner-page.component.d.ts +0 -1
- package/lib/_components/template/base/details-template-base.d.ts +21 -0
- package/lib/_components/template/base/form-template-base.d.ts +10 -0
- package/lib/_components/template/case-summary/case-summary.component.d.ts +0 -1
- package/lib/_components/template/case-view/case-view.component.d.ts +1 -3
- package/lib/_components/template/confirmation/confirmation.component.d.ts +0 -1
- package/lib/_components/template/data-reference/data-reference.component.d.ts +0 -1
- package/lib/_components/template/default-form/default-form.component.d.ts +8 -7
- package/lib/_components/template/details/details.component.d.ts +3 -12
- package/lib/_components/template/details-narrow-wide/details-narrow-wide.component.d.ts +3 -12
- package/lib/_components/template/details-one-column/details-one-column.component.d.ts +3 -14
- package/lib/_components/template/details-sub-tabs/details-sub-tabs.component.d.ts +3 -14
- package/lib/_components/template/details-three-column/details-three-column.component.d.ts +3 -14
- package/lib/_components/template/details-two-column/details-two-column.component.d.ts +3 -14
- package/lib/_components/template/details-wide-narrow/details-wide-narrow.component.d.ts +3 -14
- package/lib/_components/template/dynamic-tabs/dynamic-tabs.component.d.ts +1 -1
- package/lib/_components/template/field-group-template/field-group-template.component.d.ts +12 -9
- package/lib/_components/template/inline-dashboard/inline-dashboard.component.d.ts +0 -1
- package/lib/_components/template/inline-dashboard-page/inline-dashboard-page.component.d.ts +0 -1
- package/lib/_components/template/list-page/list-page.component.d.ts +0 -1
- package/lib/_components/template/list-view/list-view.component.d.ts +7 -3
- package/lib/_components/template/list-view/listViewHelpers.d.ts +1 -1
- package/lib/_components/template/multi-reference-readonly/multi-reference-readonly.component.d.ts +0 -1
- package/lib/_components/template/narrow-wide-form/narrow-wide-form.component.d.ts +0 -1
- package/lib/_components/template/one-column/one-column.component.d.ts +2 -2
- package/lib/_components/template/one-column-page/one-column-page.component.d.ts +0 -1
- package/lib/_components/template/one-column-tab/one-column-tab.component.d.ts +0 -1
- package/lib/_components/template/page/page.component.d.ts +0 -1
- package/lib/_components/template/promoted-filters/promoted-filters.component.d.ts +0 -1
- package/lib/_components/template/repeating-structures/repeating-structures.component.d.ts +0 -1
- package/lib/_components/template/simple-table/simple-table.component.d.ts +0 -1
- package/lib/_components/template/simple-table-manual/helpers.d.ts +4 -3
- package/lib/_components/template/simple-table-manual/simple-table-manual.component.d.ts +10 -3
- package/lib/_components/template/simple-table-select/simple-table-select.component.d.ts +0 -1
- package/lib/_components/template/single-reference-readonly/single-reference-readonly.component.d.ts +0 -1
- package/lib/_components/template/sub-tabs/sub-tabs.component.d.ts +0 -1
- package/lib/_components/template/three-column/three-column.component.d.ts +2 -2
- package/lib/_components/template/three-column-page/three-column-page.component.d.ts +0 -1
- package/lib/_components/template/two-column/two-column.component.d.ts +2 -2
- package/lib/_components/template/two-column-page/two-column-page.component.d.ts +0 -1
- package/lib/_components/template/two-column-tab/two-column-tab.component.d.ts +0 -1
- package/lib/_components/template/utils.d.ts +7 -0
- package/lib/_components/template/wide-narrow-form/wide-narrow-form.component.d.ts +2 -2
- package/lib/_components/template/wide-narrow-page/wide-narrow-page.component.d.ts +1 -2
- package/lib/_components/template/wss-nav-bar/wss-nav-bar.component.d.ts +3 -4
- package/lib/_components/widget/app-announcement/app-announcement.component.d.ts +0 -1
- package/lib/_components/widget/attachment/attachment.component.d.ts +3 -4
- package/lib/_components/widget/case-history/case-history.component.d.ts +0 -1
- package/lib/_components/widget/feed-container/feed-container.component.d.ts +2 -3
- package/lib/_components/widget/file-utility/file-utility.component.d.ts +1 -2
- package/lib/_components/widget/quick-create/quick-create.component.d.ts +0 -1
- package/lib/_components/widget/todo/todo.component.d.ts +10 -14
- package/lib/_components/widget/utility/utility.component.d.ts +0 -1
- package/lib/_helpers/common.d.ts +1 -1
- package/lib/_helpers/createstage-utils.d.ts +1 -0
- package/lib/_helpers/formatters/boolean.d.ts +1 -2
- package/lib/_helpers/formatters/common.d.ts +2 -2
- package/lib/_helpers/formatters/currency.d.ts +1 -2
- package/lib/_helpers/formatters/date.d.ts +1 -2
- package/lib/_helpers/formatters/index.d.ts +1 -2
- package/lib/_helpers/utils.d.ts +8 -0
- package/lib/_messages/error-messages.service.d.ts +1 -1
- package/lib/_services/banner.service.d.ts +8 -0
- package/lib/_services/endpoints.d.ts +0 -1
- package/lib/doc/KeyReleaseUpdates.md +23 -6
- package/package.json +3 -3
- package/public-api.d.ts +15 -11
- package/esm2022/lib/_messages/get-login-status.service.mjs +0 -26
- package/esm2022/lib/_messages/oauth-response.service.mjs +0 -30
- package/esm2022/lib/_messages/reset-pconnect.service.mjs +0 -31
- package/lib/_messages/get-login-status.service.d.ts +0 -10
- package/lib/_messages/oauth-response.service.d.ts +0 -14
- package/lib/_messages/reset-pconnect.service.d.ts +0 -15
|
@@ -60,6 +60,12 @@ export class AutoCompleteComponent {
|
|
|
60
60
|
}
|
|
61
61
|
this.filteredOptions = this.fieldControl.valueChanges.pipe(startWith(''), map(value => this._filter(value || '')));
|
|
62
62
|
}
|
|
63
|
+
setOptions(options) {
|
|
64
|
+
this.options$ = options;
|
|
65
|
+
const index = this.options$?.findIndex(element => element.key === this.configProps$.value);
|
|
66
|
+
this.value$ = index > -1 ? this.options$[index].value : this.configProps$.value;
|
|
67
|
+
this.fieldControl.setValue(this.value$);
|
|
68
|
+
}
|
|
63
69
|
ngOnDestroy() {
|
|
64
70
|
if (this.formGroup$) {
|
|
65
71
|
this.formGroup$.removeControl(this.controlName$);
|
|
@@ -93,8 +99,11 @@ export class AutoCompleteComponent {
|
|
|
93
99
|
if (this.configProps$.value != undefined) {
|
|
94
100
|
const index = this.options$?.findIndex(element => element.key === this.configProps$.value);
|
|
95
101
|
this.value$ = index > -1 ? this.options$[index].value : this.configProps$.value;
|
|
102
|
+
this.fieldControl.setValue(this.value$);
|
|
96
103
|
}
|
|
97
104
|
this.setPropertyValuesFromProps();
|
|
105
|
+
this.actionsApi = this.pConn$.getActionsApi();
|
|
106
|
+
this.propName = this.pConn$.getStateProps().value;
|
|
98
107
|
const context = this.pConn$.getContextName();
|
|
99
108
|
const { columns, datasource } = this.generateColumnsAndDataSource();
|
|
100
109
|
if (columns) {
|
|
@@ -125,7 +134,8 @@ export class AutoCompleteComponent {
|
|
|
125
134
|
}
|
|
126
135
|
this.componentReference = this.pConn$.getStateProps().value;
|
|
127
136
|
if (this.listType === 'associated') {
|
|
128
|
-
|
|
137
|
+
const optionsList = this.utils.getOptionList(this.configProps$, this.pConn$.getDataObject('')); // 1st arg empty string until typedef marked correctly
|
|
138
|
+
this.setOptions(optionsList);
|
|
129
139
|
}
|
|
130
140
|
if (!this.displayMode$ && this.listType !== 'associated') {
|
|
131
141
|
const results = await this.dataPageService.getDataPageData(datasource, this.parameters, context);
|
|
@@ -190,7 +200,7 @@ export class AutoCompleteComponent {
|
|
|
190
200
|
};
|
|
191
201
|
optionsData.push(obj);
|
|
192
202
|
});
|
|
193
|
-
this.
|
|
203
|
+
this.setOptions(optionsData);
|
|
194
204
|
}
|
|
195
205
|
flattenParameters(params = {}) {
|
|
196
206
|
const flatParams = {};
|
|
@@ -227,11 +237,13 @@ export class AutoCompleteComponent {
|
|
|
227
237
|
// this works - this.pConn$.setValue( this.componentReference, this.fieldControl.value);
|
|
228
238
|
// PConnect wants to use changeHandler for onChange
|
|
229
239
|
// this.angularPConnect.changeHandler( this, event);
|
|
230
|
-
|
|
231
|
-
this.
|
|
240
|
+
const value = event.target.value;
|
|
241
|
+
this.filterValue = value;
|
|
242
|
+
handleEvent(this.actionsApi, 'change', this.propName, value);
|
|
232
243
|
}
|
|
233
244
|
optionChanged(event) {
|
|
234
|
-
|
|
245
|
+
const value = event?.option?.value;
|
|
246
|
+
handleEvent(this.actionsApi, 'change', this.propName, value);
|
|
235
247
|
}
|
|
236
248
|
fieldOnBlur(event) {
|
|
237
249
|
let key = '';
|
|
@@ -241,9 +253,7 @@ export class AutoCompleteComponent {
|
|
|
241
253
|
key = index > -1 ? (key = this.options$[index].key) : el.value;
|
|
242
254
|
}
|
|
243
255
|
const value = key;
|
|
244
|
-
|
|
245
|
-
const propName = (this.pConn$?.getStateProps()).value;
|
|
246
|
-
handleEvent(actionsApi, 'changeNblur', propName, value);
|
|
256
|
+
handleEvent(this.actionsApi, 'changeNblur', this.propName, value);
|
|
247
257
|
if (this.configProps$?.onRecordChange) {
|
|
248
258
|
el.value = value;
|
|
249
259
|
this.configProps$.onRecordChange(event);
|
|
@@ -264,10 +274,10 @@ export class AutoCompleteComponent {
|
|
|
264
274
|
}
|
|
265
275
|
return errMessage;
|
|
266
276
|
}
|
|
267
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
268
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
277
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AutoCompleteComponent, deps: [{ token: i1.AngularPConnectService }, { token: i0.ChangeDetectorRef }, { token: i2.Utils }, { token: i3.DatapageService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
278
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: AutoCompleteComponent, isStandalone: true, selector: "app-auto-complete", inputs: { pConn$: "pConn$", formGroup$: "formGroup$" }, ngImport: i0, template: "<div *ngIf=\"displayMode$; else noDisplayMode\">\n <component-mapper *ngIf=\"bVisible$ !== false\" name=\"FieldValueList\" [props]=\"{ label$, value$, displayMode$, hideLabel }\"></component-mapper>\n</div>\n<ng-template #noDisplayMode>\n <div *ngIf=\"!bReadonly$ && bHasForm$; else noEdit\">\n <div [formGroup]=\"formGroup$\" *ngIf=\"bVisible$\">\n <mat-form-field class=\"psdk-full-width\" subscriptSizing=\"dynamic\" [hintLabel]=\"helperText\">\n <mat-label>{{ label$ }}</mat-label>\n <input\n matInput\n [placeholder]=\"placeholder\"\n [formControl]=\"fieldControl\"\n [attr.data-test-id]=\"testId\"\n [required]=\"bRequired$\"\n [matAutocomplete]=\"auto\"\n (input)=\"fieldOnChange($event)\"\n (blur)=\"fieldOnBlur($event)\"\n />\n <mat-autocomplete #auto=\"matAutocomplete\" autoActiveFirstOption (optionSelected)=\"optionChanged($event)\">\n <mat-option *ngFor=\"let opt of filteredOptions | async\" [value]=\"opt.value\">\n <span>{{ opt.value }}</span>\n </mat-option>\n </mat-autocomplete>\n <mat-error *ngIf=\"fieldControl.invalid\">{{ getErrorMessage() }}</mat-error>\n </mat-form-field>\n </div>\n </div>\n</ng-template>\n<ng-template #noEdit>\n <component-mapper *ngIf=\"bVisible$ !== false\" name=\"Text\" [props]=\"{ pConn$, formatAs$: 'text' }\"></component-mapper>\n</ng-template>\n", styles: [".psdk-full-width{width:100%}.psdk-label-readonly{font-size:1rem;display:block;transform:translateY(-1.28125em) scale(.75) perspective(100px) translateZ(.001px);-ms-transform:translateY(-1.28125em) scale(.75);width:133.33333%}.psdk-data-readonly{padding-top:.625rem;width:100%}::ng-deep .mat-mdc-form-field-infix{width:auto}\n"], dependencies: [{ kind: "ngmodule", type: i0.forwardRef(() => CommonModule) }, { kind: "directive", type: i0.forwardRef(() => i4.NgForOf), selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i0.forwardRef(() => i4.NgIf), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i0.forwardRef(() => i4.AsyncPipe), name: "async" }, { kind: "ngmodule", type: i0.forwardRef(() => ReactiveFormsModule) }, { kind: "directive", type: i0.forwardRef(() => i5.DefaultValueAccessor), selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i0.forwardRef(() => i5.NgControlStatus), selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i0.forwardRef(() => i5.NgControlStatusGroup), selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i0.forwardRef(() => i5.RequiredValidator), selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i0.forwardRef(() => i5.FormControlDirective), selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i0.forwardRef(() => i5.FormGroupDirective), selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: i0.forwardRef(() => MatFormFieldModule) }, { kind: "component", type: i0.forwardRef(() => i6.MatFormField), selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i0.forwardRef(() => i6.MatLabel), selector: "mat-label" }, { kind: "directive", type: i0.forwardRef(() => i6.MatError), selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "ngmodule", type: i0.forwardRef(() => MatInputModule) }, { kind: "directive", type: i0.forwardRef(() => i7.MatInput), selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: i0.forwardRef(() => MatAutocompleteModule) }, { kind: "component", type: i0.forwardRef(() => i8.MatAutocomplete), selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i0.forwardRef(() => i9.MatOption), selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i0.forwardRef(() => i8.MatAutocompleteTrigger), selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "ngmodule", type: i0.forwardRef(() => MatOptionModule) }, { kind: "component", type: i0.forwardRef(() => ComponentMapperComponent), selector: "component-mapper", inputs: ["name", "props", "errorMsg", "outputEvents", "parent"] }] }); }
|
|
269
279
|
}
|
|
270
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
280
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AutoCompleteComponent, decorators: [{
|
|
271
281
|
type: Component,
|
|
272
282
|
args: [{ selector: 'app-auto-complete', standalone: true, imports: [
|
|
273
283
|
CommonModule,
|
|
@@ -277,10 +287,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
277
287
|
MatAutocompleteModule,
|
|
278
288
|
MatOptionModule,
|
|
279
289
|
forwardRef(() => ComponentMapperComponent)
|
|
280
|
-
], template: "<div *ngIf=\"displayMode$; else noDisplayMode\">\n <component-mapper *ngIf=\"bVisible$ !== false\" name=\"FieldValueList\" [props]=\"{ label$, value$, displayMode$, hideLabel }\"></component-mapper>\n</div>\n<ng-template #noDisplayMode>\n <div *ngIf=\"!bReadonly$ && bHasForm$; else noEdit\">\n <div [formGroup]=\"formGroup$\" *ngIf=\"bVisible$\">\n <mat-form-field class=\"psdk-full-width\" subscriptSizing=\"dynamic\" [hintLabel]=\"helperText\">\n <mat-label>{{ label$ }}</mat-label>\n <input\n matInput\n [placeholder]=\"placeholder\"\n [formControl]=\"fieldControl\"\n [attr.data-test-id]=\"testId\"\n [
|
|
290
|
+
], template: "<div *ngIf=\"displayMode$; else noDisplayMode\">\n <component-mapper *ngIf=\"bVisible$ !== false\" name=\"FieldValueList\" [props]=\"{ label$, value$, displayMode$, hideLabel }\"></component-mapper>\n</div>\n<ng-template #noDisplayMode>\n <div *ngIf=\"!bReadonly$ && bHasForm$; else noEdit\">\n <div [formGroup]=\"formGroup$\" *ngIf=\"bVisible$\">\n <mat-form-field class=\"psdk-full-width\" subscriptSizing=\"dynamic\" [hintLabel]=\"helperText\">\n <mat-label>{{ label$ }}</mat-label>\n <input\n matInput\n [placeholder]=\"placeholder\"\n [formControl]=\"fieldControl\"\n [attr.data-test-id]=\"testId\"\n [required]=\"bRequired$\"\n [matAutocomplete]=\"auto\"\n (input)=\"fieldOnChange($event)\"\n (blur)=\"fieldOnBlur($event)\"\n />\n <mat-autocomplete #auto=\"matAutocomplete\" autoActiveFirstOption (optionSelected)=\"optionChanged($event)\">\n <mat-option *ngFor=\"let opt of filteredOptions | async\" [value]=\"opt.value\">\n <span>{{ opt.value }}</span>\n </mat-option>\n </mat-autocomplete>\n <mat-error *ngIf=\"fieldControl.invalid\">{{ getErrorMessage() }}</mat-error>\n </mat-form-field>\n </div>\n </div>\n</ng-template>\n<ng-template #noEdit>\n <component-mapper *ngIf=\"bVisible$ !== false\" name=\"Text\" [props]=\"{ pConn$, formatAs$: 'text' }\"></component-mapper>\n</ng-template>\n", styles: [".psdk-full-width{width:100%}.psdk-label-readonly{font-size:1rem;display:block;transform:translateY(-1.28125em) scale(.75) perspective(100px) translateZ(.001px);-ms-transform:translateY(-1.28125em) scale(.75);width:133.33333%}.psdk-data-readonly{padding-top:.625rem;width:100%}::ng-deep .mat-mdc-form-field-infix{width:auto}\n"] }]
|
|
281
291
|
}], ctorParameters: () => [{ type: i1.AngularPConnectService }, { type: i0.ChangeDetectorRef }, { type: i2.Utils }, { type: i3.DatapageService }], propDecorators: { pConn$: [{
|
|
282
292
|
type: Input
|
|
283
293
|
}], formGroup$: [{
|
|
284
294
|
type: Input
|
|
285
295
|
}] } });
|
|
286
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0by1jb21wbGV0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyLXNkay1jb21wb25lbnRzL3NyYy9saWIvX2NvbXBvbmVudHMvZmllbGQvYXV0by1jb21wbGV0ZS9hdXRvLWNvbXBsZXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItc2RrLWNvbXBvbmVudHMvc3JjL2xpYi9fY29tcG9uZW50cy9maWVsZC9hdXRvLWNvbXBsZXRlL2F1dG8tY29tcGxldGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQXFCLFVBQVUsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUNuRyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBYSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUscUJBQXFCLEVBQWdDLE1BQU0sZ0NBQWdDLENBQUM7QUFDckcsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxRQUFRLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDNUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUdoRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw4REFBOEQsQ0FBQztBQUV4RyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sOEJBQThCLENBQUM7Ozs7Ozs7Ozs7O0FBOEIzRCxNQUFNLE9BQU8scUJBQXFCO0lB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T25Jbml0LCBJbnB1dCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIGZvcndhcmRSZWYsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRPcHRpb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7IE1hdEF1dG9jb21wbGV0ZU1vZHVsZSwgTWF0QXV0b2NvbXBsZXRlU2VsZWN0ZWRFdmVudCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2F1dG9jb21wbGV0ZSc7XG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgaW50ZXJ2YWwsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgc3RhcnRXaXRoIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQW5ndWxhclBDb25uZWN0RGF0YSwgQW5ndWxhclBDb25uZWN0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL19icmlkZ2UvYW5ndWxhci1wY29ubmVjdCc7XG5pbXBvcnQgeyBVdGlscyB9IGZyb20gJy4uLy4uLy4uL19oZWxwZXJzL3V0aWxzJztcbmltcG9ydCB7IENvbXBvbmVudE1hcHBlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL19icmlkZ2UvY29tcG9uZW50LW1hcHBlci9jb21wb25lbnQtbWFwcGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEYXRhcGFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9fc2VydmljZXMvZGF0YXBhZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBoYW5kbGVFdmVudCB9IGZyb20gJy4uLy4uLy4uL19oZWxwZXJzL2V2ZW50LXV0aWwnO1xuaW1wb3J0IHsgUENvbm5GaWVsZFByb3BzIH0gZnJvbSAnLi4vLi4vLi4vX3R5cGVzL1BDb25uUHJvcHMuaW50ZXJmYWNlJztcblxuaW50ZXJmYWNlIEF1dG9Db21wbGV0ZVByb3BzIGV4dGVuZHMgUENvbm5GaWVsZFByb3BzIHtcbiAgLy8gSWYgYW55LCBlbnRlciBhZGRpdGlvbmFsIHByb3BzIHRoYXQgb25seSBleGlzdCBvbiBBdXRvQ29tcGxldGUgaGVyZVxuICBkZWZlckRhdGFzb3VyY2U/OiBib29sZWFuO1xuICBkYXRhc291cmNlTWV0YWRhdGE/OiBhbnk7XG4gIG9uUmVjb3JkQ2hhbmdlPzogYW55O1xuICBhZGRpdGlvbmFsUHJvcHM/OiBvYmplY3Q7XG4gIGxpc3RUeXBlOiBzdHJpbmc7XG4gIHBhcmFtZXRlcnM/OiBhbnk7XG4gIGRhdGFzb3VyY2U6IGFueTtcbiAgY29sdW1uczogYW55W107XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1hdXRvLWNvbXBsZXRlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2F1dG8tY29tcGxldGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9hdXRvLWNvbXBsZXRlLmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBNYXRGb3JtRmllbGRNb2R1bGUsXG4gICAgTWF0SW5wdXRNb2R1bGUsXG4gICAgTWF0QXV0b2NvbXBsZXRlTW9kdWxlLFxuICAgIE1hdE9wdGlvbk1vZHVsZSxcbiAgICBmb3J3YXJkUmVmKCgpID0+IENvbXBvbmVudE1hcHBlckNvbXBvbmVudClcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBBdXRvQ29tcGxldGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIHBDb25uJDogdHlwZW9mIFBDb25uZWN0O1xuICBASW5wdXQoKSBmb3JtR3JvdXAkOiBGb3JtR3JvdXA7XG5cbiAgLy8gVXNlZCB3aXRoIEFuZ3VsYXJQQ29ubmVjdFxuICBhbmd1bGFyUENvbm5lY3REYXRhOiBBbmd1bGFyUENvbm5lY3REYXRhID0ge307XG4gIGNvbmZpZ1Byb3BzJDogQXV0b0NvbXBsZXRlUHJvcHM7XG5cbiAgbGFiZWwkID0gJyc7XG4gIHZhbHVlJCA9ICcnO1xuICBiUmVxdWlyZWQkID0gZmFsc2U7XG4gIGJSZWFkb25seSQgPSBmYWxzZTtcbiAgYkRpc2FibGVkJCA9IGZhbHNlO1xuICBiVmlzaWJsZSQgPSB0cnVlO1xuICBkaXNwbGF5TW9kZSQ/OiBzdHJpbmcgPSAnJztcbiAgY29udHJvbE5hbWUkOiBzdHJpbmc7XG4gIGJIYXNGb3JtJCA9IHRydWU7XG4gIG9wdGlvbnMkOiBhbnlbXTtcbiAgY29tcG9uZW50UmVmZXJlbmNlID0gJyc7XG4gIHRlc3RJZDogc3RyaW5nO1xuICBsaXN0VHlwZTogc3RyaW5nO1xuICBjb2x1bW5zID0gW107XG4gIGhlbHBlclRleHQ6IHN0cmluZztcbiAgcGxhY2Vob2xkZXI6IHN0cmluZztcblxuICBmaWVsZENvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woJycsIG51bGwpO1xuICBwYXJhbWV0ZXJzOiB7fTtcbiAgaGlkZUxhYmVsOiBib29sZWFuO1xuICBmaWx0ZXJlZE9wdGlvbnM6IE9ic2VydmFibGU8YW55W10+O1xuICBmaWx0ZXJWYWx1ZSA9ICcnO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYW5ndWxhclBDb25uZWN0OiBBbmd1bGFyUENvbm5lY3RTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgdXRpbHM6IFV0aWxzLFxuICAgIHByaXZhdGUgZGF0YVBhZ2VTZXJ2aWNlOiBEYXRhcGFnZVNlcnZpY2VcbiAgKSB7fVxuXG4gIGFzeW5jIG5nT25Jbml0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIC8vIEZpcnN0IHRoaW5nIGluIGluaXRpYWxpemF0aW9uIGlzIHJlZ2lzdGVyaW5nIGFuZCBzdWJzY3JpYmluZyB0byB0aGUgQW5ndWxhclBDb25uZWN0IHNlcnZpY2VcbiAgICB0aGlzLmFuZ3VsYXJQQ29ubmVjdERhdGEgPSB0aGlzLmFuZ3VsYXJQQ29ubmVjdC5yZWdpc3RlckFuZFN1YnNjcmliZUNvbXBvbmVudCh0aGlzLCB0aGlzLm9uU3RhdGVDaGFuZ2UpO1xuICAgIHRoaXMuY29udHJvbE5hbWUkID0gdGhpcy5hbmd1bGFyUENvbm5lY3QuZ2V0Q29tcG9uZW50SUQodGhpcyk7XG5cbiAgICAvLyBUaGVuLCBjb250aW51ZSBvbiB3aXRoIG90aGVyIGluaXRpYWxpemF0aW9uXG5cbiAgICAvLyBjYWxsIHVwZGF0ZVNlbGYgd2hlbiBpbml0aWFsaXppbmdcbiAgICAvLyB0aGlzLnVwZGF0ZVNlbGYoKTtcbiAgICBhd2FpdCB0aGlzLmNoZWNrQW5kVXBkYXRlKCk7XG5cbiAgICBpZiAodGhpcy5mb3JtR3JvdXAkKSB7XG4gICAgICAvLyBhZGQgY29udHJvbCB0byBmb3JtR3JvdXBcbiAgICAgIHRoaXMuZm9ybUdyb3VwJC5hZGRDb250cm9sKHRoaXMuY29udHJvbE5hbWUkLCB0aGlzLmZpZWxkQ29udHJvbCk7XG4gICAgICB0aGlzLmZpZWxkQ29udHJvbC5zZXRWYWx1ZSh0aGlzLnZhbHVlJCk7XG4gICAgICB0aGlzLmJIYXNGb3JtJCA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYlJlYWRvbmx5JCA9IHRydWU7XG4gICAgICB0aGlzLmJIYXNGb3JtJCA9IGZhbHNlO1xuICAgIH1cblxuICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zID0gdGhpcy5maWVsZENvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoXG4gICAgICBzdGFydFdpdGgoJycpLFxuICAgICAgbWFwKHZhbHVlID0+IHRoaXMuX2ZpbHRlcih2YWx1ZSB8fCAnJykpXG4gICAgKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmZvcm1Hcm91cCQpIHtcbiAgICAgIHRoaXMuZm9ybUdyb3VwJC5yZW1vdmVDb250cm9sKHRoaXMuY29udHJvbE5hbWUkKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5hbmd1bGFyUENvbm5lY3REYXRhLnVuc3Vic2NyaWJlRm4pIHtcbiAgICAgIHRoaXMuYW5ndWxhclBDb25uZWN0RGF0YS51bnN1YnNjcmliZUZuKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfZmlsdGVyKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgZmlsdGVyVmFsID0gKHZhbHVlIHx8IHRoaXMuZmlsdGVyVmFsdWUpLnRvTG93ZXJDYXNlKCk7XG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucyQ/LmZpbHRlcihvcHRpb24gPT4gb3B0aW9uLnZhbHVlPy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGZpbHRlclZhbCkpO1xuICB9XG5cbiAgLy8gQ2FsbGJhY2sgcGFzc2VkIHdoZW4gc3Vic2NyaWJpbmcgdG8gc3RvcmUgY2hhbmdlXG4gIGFzeW5jIG9uU3RhdGVDaGFuZ2UoKSB7XG4gICAgYXdhaXQgdGhpcy5jaGVja0FuZFVwZGF0ZSgpO1xuICB9XG5cbiAgYXN5bmMgY2hlY2tBbmRVcGRhdGUoKSB7XG4gICAgLy8gU2hvdWxkIGFsd2F5cyBjaGVjayB0aGUgYnJpZGdlIHRvIHNlZSBpZiB0aGUgY29tcG9uZW50IHNob3VsZFxuICAgIC8vIHVwZGF0ZSBpdHNlbGYgKHJlLXJlbmRlcilcbiAgICBjb25zdCBiVXBkYXRlU2VsZiA9IHRoaXMuYW5ndWxhclBDb25uZWN0LnNob3VsZENvbXBvbmVudFVwZGF0ZSh0aGlzKTtcblxuICAgIC8vIE9OTFkgY2FsbCB1cGRhdGVTZWxmIHdoZW4gdGhlIGNvbXBvbmVudCBzaG91bGQgdXBkYXRlXG4gICAgaWYgKGJVcGRhdGVTZWxmKSB7XG4gICAgICBhd2FpdCB0aGlzLnVwZGF0ZVNlbGYoKTtcbiAgICB9XG4gIH1cblxuICAvLyB1cGRhdGVTZWxmXG4gIGFzeW5jIHVwZGF0ZVNlbGYoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgLy8gc3RhcnRpbmcgdmVyeSBzaW1wbGUuLi5cblxuICAgIC8vIG1vdmVkIHRoaXMgZnJvbSBuZ09uSW5pdCgpIGFuZCBjYWxsIHRoaXMgZnJvbSB0aGVyZSBpbnN0ZWFkLi4uXG4gICAgdGhpcy5jb25maWdQcm9wcyQgPSB0aGlzLnBDb25uJC5yZXNvbHZlQ29uZmlnUHJvcHModGhpcy5wQ29ubiQuZ2V0Q29uZmlnUHJvcHMoKSkgYXMgQXV0b0NvbXBsZXRlUHJvcHM7XG5cbiAgICBpZiAodGhpcy5jb25maWdQcm9wcyQudmFsdWUgIT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBpbmRleCA9IHRoaXMub3B0aW9ucyQ/LmZpbmRJbmRleChlbGVtZW50ID0+IGVsZW1lbnQua2V5ID09PSB0aGlzLmNvbmZpZ1Byb3BzJC52YWx1ZSk7XG4gICAgICB0aGlzLnZhbHVlJCA9IGluZGV4ID4gLTEgPyB0aGlzLm9wdGlvbnMkW2luZGV4XS52YWx1ZSA6IHRoaXMuY29uZmlnUHJvcHMkLnZhbHVlO1xuICAgIH1cblxuICAgIHRoaXMuc2V0UHJvcGVydHlWYWx1ZXNGcm9tUHJvcHMoKTtcblxuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLnBDb25uJC5nZXRDb250ZXh0TmFtZSgpO1xuICAgIGNvbnN0IHsgY29sdW1ucywgZGF0YXNvdXJjZSB9ID0gdGhpcy5nZW5lcmF0ZUNvbHVtbnNBbmREYXRhU291cmNlKCk7XG5cbiAgICBpZiAoY29sdW1ucykge1xuICAgICAgdGhpcy5jb2x1bW5zID0gdGhpcy5wcmVQcm9jZXNzQ29sdW1ucyhjb2x1bW5zKTtcbiAgICB9XG4gICAgLy8gdGltZW91dCBhbmQgZGV0ZWN0Q2hhbmdlcyB0byBhdm9pZCBFeHByZXNzaW9uQ2hhbmdlZEFmdGVySXRIYXNCZWVuQ2hlY2tlZEVycm9yXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5jb25maWdQcm9wcyQucmVxdWlyZWQgIT0gbnVsbCkge1xuICAgICAgICB0aGlzLmJSZXF1aXJlZCQgPSB0aGlzLnV0aWxzLmdldEJvb2xlYW5WYWx1ZSh0aGlzLmNvbmZpZ1Byb3BzJC5yZXF1aXJlZCk7XG4gICAgICB9XG4gICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICB9KTtcblxuICAgIGlmICh0aGlzLmNvbmZpZ1Byb3BzJC52aXNpYmlsaXR5ICE9IG51bGwpIHtcbiAgICAgIHRoaXMuYlZpc2libGUkID0gdGhpcy51dGlscy5nZXRCb29sZWFuVmFsdWUodGhpcy5jb25maWdQcm9wcyQudmlzaWJpbGl0eSk7XG4gICAgfVxuXG4gICAgLy8gZGlzYWJsZWRcbiAgICBpZiAodGhpcy5jb25maWdQcm9wcyQuZGlzYWJsZWQgIT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmJEaXNhYmxlZCQgPSB0aGlzLnV0aWxzLmdldEJvb2xlYW5WYWx1ZSh0aGlzLmNvbmZpZ1Byb3BzJC5kaXNhYmxlZCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuYkRpc2FibGVkJCkge1xuICAgICAgdGhpcy5maWVsZENvbnRyb2wuZGlzYWJsZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZpZWxkQ29udHJvbC5lbmFibGUoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jb25maWdQcm9wcyQucmVhZE9ubHkgIT0gbnVsbCkge1xuICAgICAgdGhpcy5iUmVhZG9ubHkkID0gdGhpcy51dGlscy5nZXRCb29sZWFuVmFsdWUodGhpcy5jb25maWdQcm9wcyQucmVhZE9ubHkpO1xuICAgIH1cblxuICAgIHRoaXMuY29tcG9uZW50UmVmZXJlbmNlID0gKHRoaXMucENvbm4kLmdldFN0YXRlUHJvcHMoKSBhcyBhbnkpLnZhbHVlO1xuICAgIGlmICh0aGlzLmxpc3RUeXBlID09PSAnYXNzb2NpYXRlZCcpIHtcbiAgICAgIHRoaXMub3B0aW9ucyQgPSB0aGlzLnV0aWxzLmdldE9wdGlvbkxpc3QodGhpcy5jb25maWdQcm9wcyQsIHRoaXMucENvbm4kLmdldERhdGFPYmplY3QoJycpKTsgLy8gMXN0IGFyZyBlbXB0eSBzdHJpbmcgdW50aWwgdHlwZWRlZiBtYXJrZWQgY29ycmVjdGx5XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmRpc3BsYXlNb2RlJCAmJiB0aGlzLmxpc3RUeXBlICE9PSAnYXNzb2NpYXRlZCcpIHtcbiAgICAgIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCB0aGlzLmRhdGFQYWdlU2VydmljZS5nZXREYXRhUGFnZURhdGEoZGF0YXNvdXJjZSwgdGhpcy5wYXJhbWV0ZXJzLCBjb250ZXh0KTtcbiAgICAgIHRoaXMuZmlsbE9wdGlvbnMocmVzdWx0cyk7XG4gICAgfVxuXG4gICAgLy8gdHJpZ2dlciBkaXNwbGF5IG9mIGVycm9yIG1lc3NhZ2Ugd2l0aCBmaWVsZCBjb250cm9sXG4gICAgaWYgKHRoaXMuYW5ndWxhclBDb25uZWN0RGF0YS52YWxpZGF0ZU1lc3NhZ2UgIT0gbnVsbCAmJiB0aGlzLmFuZ3VsYXJQQ29ubmVjdERhdGEudmFsaWRhdGVNZXNzYWdlICE9ICcnKSB7XG4gICAgICBjb25zdCB0aW1lciA9IGludGVydmFsKDEwMCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5maWVsZENvbnRyb2wuc2V0RXJyb3JzKHsgbWVzc2FnZTogdHJ1ZSB9KTtcbiAgICAgICAgdGhpcy5maWVsZENvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuXG4gICAgICAgIHRpbWVyLnVuc3Vic2NyaWJlKCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBzZXRQcm9wZXJ0eVZhbHVlc0Zyb21Qcm9wcygpIHtcbiAgICB0aGlzLnRlc3RJZCA9IHRoaXMuY29uZmlnUHJvcHMkLnRlc3RJZDtcbiAgICB0aGlzLmxhYmVsJCA9IHRoaXMuY29uZmlnUHJvcHMkLmxhYmVsO1xuICAgIHRoaXMucGxhY2Vob2xkZXIgPSB0aGlzLmNvbmZpZ1Byb3BzJC5wbGFjZWhvbGRlciB8fCAnJztcbiAgICB0aGlzLmRpc3BsYXlNb2RlJCA9IHRoaXMuY29uZmlnUHJvcHMkLmRpc3BsYXlNb2RlO1xuICAgIHRoaXMubGlzdFR5cGUgPSB0aGlzLmNvbmZpZ1Byb3BzJC5saXN0VHlwZTtcbiAgICB0aGlzLmhpZGVMYWJlbCA9IHRoaXMuY29uZmlnUHJvcHMkLmhpZGVMYWJlbDtcbiAgICB0aGlzLmhlbHBlclRleHQgPSB0aGlzLmNvbmZpZ1Byb3BzJC5oZWxwZXJUZXh0O1xuICAgIHRoaXMucGFyYW1ldGVycyA9IHRoaXMuY29uZmlnUHJvcHMkPy5wYXJhbWV0ZXJzO1xuICB9XG5cbiAgZ2VuZXJhdGVDb2x1bW5zQW5kRGF0YVNvdXJjZSgpIHtcbiAgICBsZXQgZGF0YXNvdXJjZSA9IHRoaXMuY29uZmlnUHJvcHMkLmRhdGFzb3VyY2U7XG4gICAgbGV0IGNvbHVtbnMgPSB0aGlzLmNvbmZpZ1Byb3BzJC5jb2x1bW5zO1xuICAgIC8vIGNvbnN0IHsgZGVmZXJEYXRhc291cmNlLCBkYXRhc291cmNlTWV0YWRhdGEgfSA9IHRoaXMuY29uZmlnUHJvcHMkO1xuICAgIGNvbnN0IHsgZGVmZXJEYXRhc291cmNlLCBkYXRhc291cmNlTWV0YWRhdGEgfTogYW55ID0gdGhpcy5wQ29ubiQuZ2V0Q29uZmlnUHJvcHMoKTtcbiAgICAvLyBjb252ZXJ0IGFzc29jaWF0ZWQgdG8gZGF0YXBhZ2UgbGlzdHR5cGUgYW5kIHRyYW5zZm9ybSBwcm9wc1xuICAgIC8vIFByb2Nlc3MgZGVmZXJEYXRhc291cmNlIHdoZW4gZGF0YXBhZ2UgbmFtZSBpcyBwcmVzZW50LiBXSGhlbiB0YWJsZVR5cGUgaXMgcHJvbXB0TGlzdCAvIGxvY2FsTGlzdFxuICAgIGlmIChkZWZlckRhdGFzb3VyY2UgJiYgZGF0YXNvdXJjZU1ldGFkYXRhPy5kYXRhc291cmNlPy5uYW1lKSB7XG4gICAgICB0aGlzLmxpc3RUeXBlID0gJ2RhdGFwYWdlJztcbiAgICAgIGRhdGFzb3VyY2UgPSBkYXRhc291cmNlTWV0YWRhdGEuZGF0YXNvdXJjZS5uYW1lO1xuICAgICAgY29uc3QgeyBwYXJhbWV0ZXJzLCBwcm9wZXJ0eUZvckRpc3BsYXlUZXh0LCBwcm9wZXJ0eUZvclZhbHVlIH0gPSBkYXRhc291cmNlTWV0YWRhdGEuZGF0YXNvdXJjZTtcbiAgICAgIHRoaXMucGFyYW1ldGVycyA9IHRoaXMuZmxhdHRlblBhcmFtZXRlcnMocGFyYW1ldGVycyk7XG4gICAgICBjb25zdCBkaXNwbGF5UHJvcCA9IHByb3BlcnR5Rm9yRGlzcGxheVRleHQ/LnN0YXJ0c1dpdGgoJ0BQJykgPyBwcm9wZXJ0eUZvckRpc3BsYXlUZXh0LnN1YnN0cmluZygzKSA6IHByb3BlcnR5Rm9yRGlzcGxheVRleHQ7XG4gICAgICBjb25zdCB2YWx1ZVByb3AgPSBwcm9wZXJ0eUZvclZhbHVlPy5zdGFydHNXaXRoKCdAUCcpID8gcHJvcGVydHlGb3JWYWx1ZS5zdWJzdHJpbmcoMykgOiBwcm9wZXJ0eUZvclZhbHVlO1xuICAgICAgY29sdW1ucyA9IFtcbiAgICAgICAge1xuICAgICAgICAgIGtleTogJ3RydWUnLFxuICAgICAgICAgIHNldFByb3BlcnR5OiAnQXNzb2NpYXRlZCBwcm9wZXJ0eScsXG4gICAgICAgICAgdmFsdWU6IHZhbHVlUHJvcFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgZGlzcGxheTogJ3RydWUnLFxuICAgICAgICAgIHByaW1hcnk6ICd0cnVlJyxcbiAgICAgICAgICB1c2VGb3JTZWFyY2g6IHRydWUsXG4gICAgICAgICAgdmFsdWU6IGRpc3BsYXlQcm9wXG4gICAgICAgIH1cbiAgICAgIF07XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgY29sdW1ucywgZGF0YXNvdXJjZSB9O1xuICB9XG5cbiAgZmlsbE9wdGlvbnMocmVzdWx0czogYW55KSB7XG4gICAgY29uc3Qgb3B0aW9uc0RhdGE6IGFueVtdID0gW107XG4gICAgY29uc3QgZGlzcGxheUNvbHVtbiA9IHRoaXMuZ2V0RGlzcGxheUZpZWxkc01ldGFEYXRhKHRoaXMuY29sdW1ucyk7XG4gICAgcmVzdWx0cz8uZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgIGNvbnN0IG9iaiA9IHtcbiAgICAgICAga2V5OiBlbGVtZW50W2Rpc3BsYXlDb2x1bW4ua2V5XSB8fCBlbGVtZW50LnB5R1VJRCxcbiAgICAgICAgdmFsdWU6IGVsZW1lbnRbZGlzcGxheUNvbHVtbi5wcmltYXJ5XT8udG9TdHJpbmcoKVxuICAgICAgfTtcbiAgICAgIG9wdGlvbnNEYXRhLnB1c2gob2JqKTtcbiAgICB9KTtcbiAgICB0aGlzLm9wdGlvbnMkID0gb3B0aW9uc0RhdGE7XG4gIH1cblxuICBmbGF0dGVuUGFyYW1ldGVycyhwYXJhbXMgPSB7fSkge1xuICAgIGNvbnN0IGZsYXRQYXJhbXMgPSB7fTtcbiAgICBPYmplY3Qua2V5cyhwYXJhbXMpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgIGNvbnN0IHsgbmFtZSwgdmFsdWU6IHRoZVZhbCB9ID0gcGFyYW1zW2tleV07XG4gICAgICBmbGF0UGFyYW1zW25hbWVdID0gdGhlVmFsO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIGZsYXRQYXJhbXM7XG4gIH1cblxuICBnZXREaXNwbGF5RmllbGRzTWV0YURhdGEoY29sdW1uTGlzdCkge1xuICAgIGNvbnN0IGRpc3BsYXlDb2x1bW5zID0gY29sdW1uTGlzdC5maWx0ZXIoY29sID0+IGNvbC5kaXNwbGF5ID09PSAndHJ1ZScpO1xuICAgIGNvbnN0IG1ldGFEYXRhT2JqOiBhbnkgPSB7IGtleTogJycsIHByaW1hcnk6ICcnLCBzZWNvbmRhcnk6IFtdIH07XG4gICAgY29uc3Qga2V5Q29sID0gY29sdW1uTGlzdC5maWx0ZXIoY29sID0+IGNvbC5rZXkgPT09ICd0cnVlJyk7XG4gICAgbWV0YURhdGFPYmoua2V5ID0ga2V5Q29sLmxlbmd0aCA+IDAgPyBrZXlDb2xbMF0udmFsdWUgOiAnYXV0byc7XG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGRpc3BsYXlDb2x1bW5zLmxlbmd0aDsgaW5kZXggKz0gMSkge1xuICAgICAgaWYgKGRpc3BsYXlDb2x1bW5zW2luZGV4XS5wcmltYXJ5ID09PSAndHJ1ZScpIHtcbiAgICAgICAgbWV0YURhdGFPYmoucHJpbWFyeSA9IGRpc3BsYXlDb2x1bW5zW2luZGV4XS52YWx1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1ldGFEYXRhT2JqLnNlY29uZGFyeS5wdXNoKGRpc3BsYXlDb2x1bW5zW2luZGV4XS52YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBtZXRhRGF0YU9iajtcbiAgfVxuXG4gIHByZVByb2Nlc3NDb2x1bW5zKGNvbHVtbkxpc3QpIHtcbiAgICByZXR1cm4gY29sdW1uTGlzdD8ubWFwKGNvbCA9PiB7XG4gICAgICBjb25zdCB0ZW1wQ29sT2JqID0geyAuLi5jb2wgfTtcbiAgICAgIHRlbXBDb2xPYmoudmFsdWUgPSBjb2wudmFsdWUgJiYgY29sLnZhbHVlLnN0YXJ0c1dpdGgoJy4nKSA/IGNvbC52YWx1ZS5zdWJzdHJpbmcoMSkgOiBjb2wudmFsdWU7XG4gICAgICByZXR1cm4gdGVtcENvbE9iajtcbiAgICB9KTtcbiAgfVxuXG4gIGZpZWxkT25DaGFuZ2UoZXZlbnQ6IEV2ZW50KSB7XG4gICAgLy8gdGhpcyB3b3JrcyAtIHRoaXMucENvbm4kLnNldFZhbHVlKCB0aGlzLmNvbXBvbmVudFJlZmVyZW5jZSwgYHByb3BlcnR5OiAke3RoaXMuY29tcG9uZW50UmVmZXJlbmNlfWApO1xuICAgIC8vIHRoaXMgd29ya3MgLSB0aGlzLnBDb25uJC5zZXRWYWx1ZSggdGhpcy5jb21wb25lbnRSZWZlcmVuY2UsIHRoaXMuZmllbGRDb250cm9sLnZhbHVlKTtcbiAgICAvLyBQQ29ubmVjdCB3YW50cyB0byB1c2UgY2hhbmdlSGFuZGxlciBmb3Igb25DaGFuZ2VcbiAgICAvLyB0aGlzLmFuZ3VsYXJQQ29ubmVjdC5jaGFuZ2VIYW5kbGVyKCB0aGlzLCBldmVudCk7XG4gICAgdGhpcy5maWx0ZXJWYWx1ZSA9IChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWU7XG5cbiAgICB0aGlzLmFuZ3VsYXJQQ29ubmVjdERhdGEuYWN0aW9ucz8ub25DaGFuZ2UodGhpcywgZXZlbnQpO1xuICB9XG5cbiAgb3B0aW9uQ2hhbmdlZChldmVudDogTWF0QXV0b2NvbXBsZXRlU2VsZWN0ZWRFdmVudCkge1xuICAgIHRoaXMuYW5ndWxhclBDb25uZWN0RGF0YS5hY3Rpb25zPy5vbkNoYW5nZSh0aGlzLCBldmVudCk7XG4gIH1cblxuICBmaWVsZE9uQmx1cihldmVudDogRXZlbnQpIHtcbiAgICBsZXQga2V5ID0gJyc7XG4gICAgY29uc3QgZWwgPSBldmVudD8udGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgaWYgKGVsPy52YWx1ZSkge1xuICAgICAgY29uc3QgaW5kZXggPSB0aGlzLm9wdGlvbnMkPy5maW5kSW5kZXgoZWxlbWVudCA9PiBlbGVtZW50LnZhbHVlID09PSBlbC52YWx1ZSk7XG4gICAgICBrZXkgPSBpbmRleCA+IC0xID8gKGtleSA9IHRoaXMub3B0aW9ucyRbaW5kZXhdLmtleSkgOiBlbC52YWx1ZTtcbiAgICB9XG5cbiAgICBjb25zdCB2YWx1ZSA9IGtleTtcbiAgICBjb25zdCBhY3Rpb25zQXBpID0gdGhpcy5wQ29ubiQ/LmdldEFjdGlvbnNBcGkoKTtcbiAgICBjb25zdCBwcm9wTmFtZSA9ICh0aGlzLnBDb25uJD8uZ2V0U3RhdGVQcm9wcygpIGFzIGFueSkudmFsdWU7XG4gICAgaGFuZGxlRXZlbnQoYWN0aW9uc0FwaSwgJ2NoYW5nZU5ibHVyJywgcHJvcE5hbWUsIHZhbHVlKTtcbiAgICBpZiAodGhpcy5jb25maWdQcm9wcyQ/Lm9uUmVjb3JkQ2hhbmdlKSB7XG4gICAgICBlbC52YWx1ZSA9IHZhbHVlO1xuICAgICAgdGhpcy5jb25maWdQcm9wcyQub25SZWNvcmRDaGFuZ2UoZXZlbnQpO1xuICAgIH1cbiAgfVxuXG4gIGdldEVycm9yTWVzc2FnZSgpIHtcbiAgICBsZXQgZXJyTWVzc2FnZSA9ICcnO1xuXG4gICAgLy8gbG9vayBmb3IgdmFsaWRhdGlvbiBtZXNzYWdlcyBmb3IganNvbiwgcHJlLWRlZmluZWQgb3IganVzdCBhbiBlcnJvciBwdXNoZWQgZnJvbSB3b3JraXRlbSAoNDAwKVxuICAgIGlmICh0aGlzLmZpZWxkQ29udHJvbC5oYXNFcnJvcignbWVzc2FnZScpKSB7XG4gICAgICBlcnJNZXNzYWdlID0gdGhpcy5hbmd1bGFyUENvbm5lY3REYXRhLnZhbGlkYXRlTWVzc2FnZSA/PyAnJztcbiAgICAgIHJldHVybiBlcnJNZXNzYWdlO1xuICAgIH1cbiAgICBpZiAodGhpcy5maWVsZENvbnRyb2wuaGFzRXJyb3IoJ3JlcXVpcmVkJykpIHtcbiAgICAgIGVyck1lc3NhZ2UgPSAnWW91IG11c3QgZW50ZXIgYSB2YWx1ZSc7XG4gICAgfSBlbHNlIGlmICh0aGlzLmZpZWxkQ29udHJvbC5lcnJvcnMpIHtcbiAgICAgIGVyck1lc3NhZ2UgPSB0aGlzLmZpZWxkQ29udHJvbC5lcnJvcnMudG9TdHJpbmcoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZXJyTWVzc2FnZTtcbiAgfVxufVxuIiwiPGRpdiAqbmdJZj1cImRpc3BsYXlNb2RlJDsgZWxzZSBub0Rpc3BsYXlNb2RlXCI+XG4gIDxjb21wb25lbnQtbWFwcGVyICpuZ0lmPVwiYlZpc2libGUkICE9PSBmYWxzZVwiIG5hbWU9XCJGaWVsZFZhbHVlTGlzdFwiIFtwcm9wc109XCJ7IGxhYmVsJCwgdmFsdWUkLCBkaXNwbGF5TW9kZSQsIGhpZGVMYWJlbCB9XCI+PC9jb21wb25lbnQtbWFwcGVyPlxuPC9kaXY+XG48bmctdGVtcGxhdGUgI25vRGlzcGxheU1vZGU+XG4gIDxkaXYgKm5nSWY9XCIhYlJlYWRvbmx5JCAmJiBiSGFzRm9ybSQ7IGVsc2Ugbm9FZGl0XCI+XG4gICAgPGRpdiBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cCRcIiAqbmdJZj1cImJWaXNpYmxlJFwiPlxuICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwicHNkay1mdWxsLXdpZHRoXCIgc3Vic2NyaXB0U2l6aW5nPVwiZHluYW1pY1wiIFtoaW50TGFiZWxdPVwiaGVscGVyVGV4dFwiPlxuICAgICAgICA8bWF0LWxhYmVsPnt7IGxhYmVsJCB9fTwvbWF0LWxhYmVsPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICBtYXRJbnB1dFxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgICAgICAgW2Zvcm1Db250cm9sXT1cImZpZWxkQ29udHJvbFwiXG4gICAgICAgICAgW2F0dHIuZGF0YS10ZXN0LWlkXT1cInRlc3RJZFwiXG4gICAgICAgICAgW3ZhbHVlXT1cInZhbHVlJFwiXG4gICAgICAgICAgW3JlcXVpcmVkXT1cImJSZXF1aXJlZCRcIlxuICAgICAgICAgIFttYXRBdXRvY29tcGxldGVdPVwiYXV0b1wiXG4gICAgICAgICAgKGlucHV0KT1cImZpZWxkT25DaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgKGJsdXIpPVwiZmllbGRPbkJsdXIoJGV2ZW50KVwiXG4gICAgICAgIC8+XG4gICAgICAgIDxtYXQtYXV0b2NvbXBsZXRlICNhdXRvPVwibWF0QXV0b2NvbXBsZXRlXCIgYXV0b0FjdGl2ZUZpcnN0T3B0aW9uIChvcHRpb25TZWxlY3RlZCk9XCJvcHRpb25DaGFuZ2VkKCRldmVudClcIj5cbiAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgb3B0IG9mIGZpbHRlcmVkT3B0aW9ucyB8IGFzeW5jXCIgW3ZhbHVlXT1cIm9wdC52YWx1ZVwiPlxuICAgICAgICAgICAgPHNwYW4+e3sgb3B0LnZhbHVlIH19PC9zcGFuPlxuICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgPC9tYXQtYXV0b2NvbXBsZXRlPlxuICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiZmllbGRDb250cm9sLmludmFsaWRcIj57eyBnZXRFcnJvck1lc3NhZ2UoKSB9fTwvbWF0LWVycm9yPlxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNub0VkaXQ+XG4gIDxjb21wb25lbnQtbWFwcGVyICpuZ0lmPVwiYlZpc2libGUkICE9PSBmYWxzZVwiIG5hbWU9XCJUZXh0XCIgW3Byb3BzXT1cInsgcENvbm4kLCBmb3JtYXRBcyQ6ICd0ZXh0JyB9XCI+PC9jb21wb25lbnQtbWFwcGVyPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
296
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0by1jb21wbGV0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyLXNkay1jb21wb25lbnRzL3NyYy9saWIvX2NvbXBvbmVudHMvZmllbGQvYXV0by1jb21wbGV0ZS9hdXRvLWNvbXBsZXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItc2RrLWNvbXBvbmVudHMvc3JjL2xpYi9fY29tcG9uZW50cy9maWVsZC9hdXRvLWNvbXBsZXRlL2F1dG8tY29tcGxldGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQXFCLFVBQVUsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUNuRyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBYSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFFBQVEsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUM1QyxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR2hELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDhEQUE4RCxDQUFDO0FBRXhHLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7Ozs7Ozs7Ozs7QUFrQzNELE1BQU0sT0FBTyxxQkFBcUI7SUFp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QUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDM0MsVUFBVSxHQUFHLHdCQUF3QixDQUFDO1FBQ3hDLENBQUM7YUFBTSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDcEMsVUFBVSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ25ELENBQUM7UUFFRCxPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDOytHQXhUVSxxQkFBcUI7bUdBQXJCLHFCQUFxQixxSUMvQ2xDLHc3Q0ErQkEsa1pET0ksWUFBWSx3WUFDWixtQkFBbUIsc3VDQUNuQixrQkFBa0IsMmRBQ2xCLGNBQWMsb1pBQ2QscUJBQXFCLDQ2QkFDckIsZUFBZSxvREFDRSx3QkFBd0I7OzRGQUdoQyxxQkFBcUI7a0JBZmpDLFNBQVM7K0JBQ0UsbUJBQW1CLGNBR2pCLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLG1CQUFtQjt3QkFDbkIsa0JBQWtCO3dCQUNsQixjQUFjO3dCQUNkLHFCQUFxQjt3QkFDckIsZUFBZTt3QkFDZixVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsd0JBQXdCLENBQUM7cUJBQzNDOzZLQUdRLE1BQU07c0JBQWQsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBDaGFuZ2VEZXRlY3RvclJlZiwgZm9yd2FyZFJlZiwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdE9wdGlvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuaW1wb3J0IHsgTWF0QXV0b2NvbXBsZXRlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYXV0b2NvbXBsZXRlJztcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBpbnRlcnZhbCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwLCBzdGFydFdpdGggfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBBbmd1bGFyUENvbm5lY3REYXRhLCBBbmd1bGFyUENvbm5lY3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vX2JyaWRnZS9hbmd1bGFyLXBjb25uZWN0JztcbmltcG9ydCB7IFV0aWxzIH0gZnJvbSAnLi4vLi4vLi4vX2hlbHBlcnMvdXRpbHMnO1xuaW1wb3J0IHsgQ29tcG9uZW50TWFwcGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vX2JyaWRnZS9jb21wb25lbnQtbWFwcGVyL2NvbXBvbmVudC1tYXBwZXIuY29tcG9uZW50JztcbmltcG9ydCB7IERhdGFwYWdlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL19zZXJ2aWNlcy9kYXRhcGFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IGhhbmRsZUV2ZW50IH0gZnJvbSAnLi4vLi4vLi4vX2hlbHBlcnMvZXZlbnQtdXRpbCc7XG5pbXBvcnQgeyBQQ29ubkZpZWxkUHJvcHMgfSBmcm9tICcuLi8uLi8uLi9fdHlwZXMvUENvbm5Qcm9wcy5pbnRlcmZhY2UnO1xuXG5pbnRlcmZhY2UgSU9wdGlvbiB7XG4gIGtleTogc3RyaW5nO1xuICB2YWx1ZTogc3RyaW5nO1xufVxuaW50ZXJmYWNlIEF1dG9Db21wbGV0ZVByb3BzIGV4dGVuZHMgUENvbm5GaWVsZFByb3BzIHtcbiAgLy8gSWYgYW55LCBlbnRlciBhZGRpdGlvbmFsIHByb3BzIHRoYXQgb25seSBleGlzdCBvbiBBdXRvQ29tcGxldGUgaGVyZVxuICBkZWZlckRhdGFzb3VyY2U/OiBib29sZWFuO1xuICBkYXRhc291cmNlTWV0YWRhdGE/OiBhbnk7XG4gIG9uUmVjb3JkQ2hhbmdlPzogYW55O1xuICBhZGRpdGlvbmFsUHJvcHM/OiBvYmplY3Q7XG4gIGxpc3RUeXBlOiBzdHJpbmc7XG4gIHBhcmFtZXRlcnM/OiBhbnk7XG4gIGRhdGFzb3VyY2U6IGFueTtcbiAgY29sdW1uczogYW55W107XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1hdXRvLWNvbXBsZXRlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2F1dG8tY29tcGxldGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9hdXRvLWNvbXBsZXRlLmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBNYXRGb3JtRmllbGRNb2R1bGUsXG4gICAgTWF0SW5wdXRNb2R1bGUsXG4gICAgTWF0QXV0b2NvbXBsZXRlTW9kdWxlLFxuICAgIE1hdE9wdGlvbk1vZHVsZSxcbiAgICBmb3J3YXJkUmVmKCgpID0+IENvbXBvbmVudE1hcHBlckNvbXBvbmVudClcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBBdXRvQ29tcGxldGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIHBDb25uJDogdHlwZW9mIFBDb25uZWN0O1xuICBASW5wdXQoKSBmb3JtR3JvdXAkOiBGb3JtR3JvdXA7XG5cbiAgLy8gVXNlZCB3aXRoIEFuZ3VsYXJQQ29ubmVjdFxuICBhbmd1bGFyUENvbm5lY3REYXRhOiBBbmd1bGFyUENvbm5lY3REYXRhID0ge307XG4gIGNvbmZpZ1Byb3BzJDogQXV0b0NvbXBsZXRlUHJvcHM7XG5cbiAgbGFiZWwkID0gJyc7XG4gIHZhbHVlJCA9ICcnO1xuICBiUmVxdWlyZWQkID0gZmFsc2U7XG4gIGJSZWFkb25seSQgPSBmYWxzZTtcbiAgYkRpc2FibGVkJCA9IGZhbHNlO1xuICBiVmlzaWJsZSQgPSB0cnVlO1xuICBkaXNwbGF5TW9kZSQ/OiBzdHJpbmcgPSAnJztcbiAgY29udHJvbE5hbWUkOiBzdHJpbmc7XG4gIGJIYXNGb3JtJCA9IHRydWU7XG4gIG9wdGlvbnMkOiBhbnlbXTtcbiAgY29tcG9uZW50UmVmZXJlbmNlID0gJyc7XG4gIHRlc3RJZDogc3RyaW5nO1xuICBsaXN0VHlwZTogc3RyaW5nO1xuICBjb2x1bW5zID0gW107XG4gIGhlbHBlclRleHQ6IHN0cmluZztcbiAgcGxhY2Vob2xkZXI6IHN0cmluZztcblxuICBmaWVsZENvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woJycsIG51bGwpO1xuICBwYXJhbWV0ZXJzOiB7fTtcbiAgaGlkZUxhYmVsOiBib29sZWFuO1xuICBmaWx0ZXJlZE9wdGlvbnM6IE9ic2VydmFibGU8YW55W10+O1xuICBmaWx0ZXJWYWx1ZSA9ICcnO1xuICBhY3Rpb25zQXBpOiBPYmplY3Q7XG4gIHByb3BOYW1lOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBhbmd1bGFyUENvbm5lY3Q6IEFuZ3VsYXJQQ29ubmVjdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSB1dGlsczogVXRpbHMsXG4gICAgcHJpdmF0ZSBkYXRhUGFnZVNlcnZpY2U6IERhdGFwYWdlU2VydmljZVxuICApIHt9XG5cbiAgYXN5bmMgbmdPbkluaXQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgLy8gRmlyc3QgdGhpbmcgaW4gaW5pdGlhbGl6YXRpb24gaXMgcmVnaXN0ZXJpbmcgYW5kIHN1YnNjcmliaW5nIHRvIHRoZSBBbmd1bGFyUENvbm5lY3Qgc2VydmljZVxuICAgIHRoaXMuYW5ndWxhclBDb25uZWN0RGF0YSA9IHRoaXMuYW5ndWxhclBDb25uZWN0LnJlZ2lzdGVyQW5kU3Vic2NyaWJlQ29tcG9uZW50KHRoaXMsIHRoaXMub25TdGF0ZUNoYW5nZSk7XG4gICAgdGhpcy5jb250cm9sTmFtZSQgPSB0aGlzLmFuZ3VsYXJQQ29ubmVjdC5nZXRDb21wb25lbnRJRCh0aGlzKTtcblxuICAgIC8vIFRoZW4sIGNvbnRpbnVlIG9uIHdpdGggb3RoZXIgaW5pdGlhbGl6YXRpb25cblxuICAgIC8vIGNhbGwgdXBkYXRlU2VsZiB3aGVuIGluaXRpYWxpemluZ1xuICAgIC8vIHRoaXMudXBkYXRlU2VsZigpO1xuICAgIGF3YWl0IHRoaXMuY2hlY2tBbmRVcGRhdGUoKTtcblxuICAgIGlmICh0aGlzLmZvcm1Hcm91cCQpIHtcbiAgICAgIC8vIGFkZCBjb250cm9sIHRvIGZvcm1Hcm91cFxuICAgICAgdGhpcy5mb3JtR3JvdXAkLmFkZENvbnRyb2wodGhpcy5jb250cm9sTmFtZSQsIHRoaXMuZmllbGRDb250cm9sKTtcbiAgICAgIHRoaXMuZmllbGRDb250cm9sLnNldFZhbHVlKHRoaXMudmFsdWUkKTtcbiAgICAgIHRoaXMuYkhhc0Zvcm0kID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5iUmVhZG9ubHkkID0gdHJ1ZTtcbiAgICAgIHRoaXMuYkhhc0Zvcm0kID0gZmFsc2U7XG4gICAgfVxuXG4gICAgdGhpcy5maWx0ZXJlZE9wdGlvbnMgPSB0aGlzLmZpZWxkQ29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShcbiAgICAgIHN0YXJ0V2l0aCgnJyksXG4gICAgICBtYXAodmFsdWUgPT4gdGhpcy5fZmlsdGVyKCh2YWx1ZSBhcyBzdHJpbmcpIHx8ICcnKSlcbiAgICApO1xuICB9XG5cbiAgc2V0T3B0aW9ucyhvcHRpb25zOiBJT3B0aW9uW10pIHtcbiAgICB0aGlzLm9wdGlvbnMkID0gb3B0aW9ucztcbiAgICBjb25zdCBpbmRleCA9IHRoaXMub3B0aW9ucyQ/LmZpbmRJbmRleChlbGVtZW50ID0+IGVsZW1lbnQua2V5ID09PSB0aGlzLmNvbmZpZ1Byb3BzJC52YWx1ZSk7XG4gICAgdGhpcy52YWx1ZSQgPSBpbmRleCA+IC0xID8gdGhpcy5vcHRpb25zJFtpbmRleF0udmFsdWUgOiB0aGlzLmNvbmZpZ1Byb3BzJC52YWx1ZTtcbiAgICB0aGlzLmZpZWxkQ29udHJvbC5zZXRWYWx1ZSh0aGlzLnZhbHVlJCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5mb3JtR3JvdXAkKSB7XG4gICAgICB0aGlzLmZvcm1Hcm91cCQucmVtb3ZlQ29udHJvbCh0aGlzLmNvbnRyb2xOYW1lJCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuYW5ndWxhclBDb25uZWN0RGF0YS51bnN1YnNjcmliZUZuKSB7XG4gICAgICB0aGlzLmFuZ3VsYXJQQ29ubmVjdERhdGEudW5zdWJzY3JpYmVGbigpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2ZpbHRlcih2YWx1ZTogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IGZpbHRlclZhbCA9ICh2YWx1ZSB8fCB0aGlzLmZpbHRlclZhbHVlKS50b0xvd2VyQ2FzZSgpO1xuICAgIHJldHVybiB0aGlzLm9wdGlvbnMkPy5maWx0ZXIob3B0aW9uID0+IG9wdGlvbi52YWx1ZT8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhmaWx0ZXJWYWwpKTtcbiAgfVxuXG4gIC8vIENhbGxiYWNrIHBhc3NlZCB3aGVuIHN1YnNjcmliaW5nIHRvIHN0b3JlIGNoYW5nZVxuICBhc3luYyBvblN0YXRlQ2hhbmdlKCkge1xuICAgIGF3YWl0IHRoaXMuY2hlY2tBbmRVcGRhdGUoKTtcbiAgfVxuXG4gIGFzeW5jIGNoZWNrQW5kVXBkYXRlKCkge1xuICAgIC8vIFNob3VsZCBhbHdheXMgY2hlY2sgdGhlIGJyaWRnZSB0byBzZWUgaWYgdGhlIGNvbXBvbmVudCBzaG91bGRcbiAgICAvLyB1cGRhdGUgaXRzZWxmIChyZS1yZW5kZXIpXG4gICAgY29uc3QgYlVwZGF0ZVNlbGYgPSB0aGlzLmFuZ3VsYXJQQ29ubmVjdC5zaG91bGRDb21wb25lbnRVcGRhdGUodGhpcyk7XG5cbiAgICAvLyBPTkxZIGNhbGwgdXBkYXRlU2VsZiB3aGVuIHRoZSBjb21wb25lbnQgc2hvdWxkIHVwZGF0ZVxuICAgIGlmIChiVXBkYXRlU2VsZikge1xuICAgICAgYXdhaXQgdGhpcy51cGRhdGVTZWxmKCk7XG4gICAgfVxuICB9XG5cbiAgLy8gdXBkYXRlU2VsZlxuICBhc3luYyB1cGRhdGVTZWxmKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIC8vIHN0YXJ0aW5nIHZlcnkgc2ltcGxlLi4uXG5cbiAgICAvLyBtb3ZlZCB0aGlzIGZyb20gbmdPbkluaXQoKSBhbmQgY2FsbCB0aGlzIGZyb20gdGhlcmUgaW5zdGVhZC4uLlxuICAgIHRoaXMuY29uZmlnUHJvcHMkID0gdGhpcy5wQ29ubiQucmVzb2x2ZUNvbmZpZ1Byb3BzKHRoaXMucENvbm4kLmdldENvbmZpZ1Byb3BzKCkpIGFzIEF1dG9Db21wbGV0ZVByb3BzO1xuXG4gICAgaWYgKHRoaXMuY29uZmlnUHJvcHMkLnZhbHVlICE9IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgaW5kZXggPSB0aGlzLm9wdGlvbnMkPy5maW5kSW5kZXgoZWxlbWVudCA9PiBlbGVtZW50LmtleSA9PT0gdGhpcy5jb25maWdQcm9wcyQudmFsdWUpO1xuICAgICAgdGhpcy52YWx1ZSQgPSBpbmRleCA+IC0xID8gdGhpcy5vcHRpb25zJFtpbmRleF0udmFsdWUgOiB0aGlzLmNvbmZpZ1Byb3BzJC52YWx1ZTtcbiAgICAgIHRoaXMuZmllbGRDb250cm9sLnNldFZhbHVlKHRoaXMudmFsdWUkKTtcbiAgICB9XG5cbiAgICB0aGlzLnNldFByb3BlcnR5VmFsdWVzRnJvbVByb3BzKCk7XG5cbiAgICB0aGlzLmFjdGlvbnNBcGkgPSB0aGlzLnBDb25uJC5nZXRBY3Rpb25zQXBpKCk7XG4gICAgdGhpcy5wcm9wTmFtZSA9IHRoaXMucENvbm4kLmdldFN0YXRlUHJvcHMoKS52YWx1ZTtcblxuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLnBDb25uJC5nZXRDb250ZXh0TmFtZSgpO1xuICAgIGNvbnN0IHsgY29sdW1ucywgZGF0YXNvdXJjZSB9ID0gdGhpcy5nZW5lcmF0ZUNvbHVtbnNBbmREYXRhU291cmNlKCk7XG5cbiAgICBpZiAoY29sdW1ucykge1xuICAgICAgdGhpcy5jb2x1bW5zID0gdGhpcy5wcmVQcm9jZXNzQ29sdW1ucyhjb2x1bW5zKTtcbiAgICB9XG4gICAgLy8gdGltZW91dCBhbmQgZGV0ZWN0Q2hhbmdlcyB0byBhdm9pZCBFeHByZXNzaW9uQ2hhbmdlZEFmdGVySXRIYXNCZWVuQ2hlY2tlZEVycm9yXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5jb25maWdQcm9wcyQucmVxdWlyZWQgIT0gbnVsbCkge1xuICAgICAgICB0aGlzLmJSZXF1aXJlZCQgPSB0aGlzLnV0aWxzLmdldEJvb2xlYW5WYWx1ZSh0aGlzLmNvbmZpZ1Byb3BzJC5yZXF1aXJlZCk7XG4gICAgICB9XG4gICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICB9KTtcblxuICAgIGlmICh0aGlzLmNvbmZpZ1Byb3BzJC52aXNpYmlsaXR5ICE9IG51bGwpIHtcbiAgICAgIHRoaXMuYlZpc2libGUkID0gdGhpcy51dGlscy5nZXRCb29sZWFuVmFsdWUodGhpcy5jb25maWdQcm9wcyQudmlzaWJpbGl0eSk7XG4gICAgfVxuXG4gICAgLy8gZGlzYWJsZWRcbiAgICBpZiAodGhpcy5jb25maWdQcm9wcyQuZGlzYWJsZWQgIT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmJEaXNhYmxlZCQgPSB0aGlzLnV0aWxzLmdldEJvb2xlYW5WYWx1ZSh0aGlzLmNvbmZpZ1Byb3BzJC5kaXNhYmxlZCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuYkRpc2FibGVkJCkge1xuICAgICAgdGhpcy5maWVsZENvbnRyb2wuZGlzYWJsZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZpZWxkQ29udHJvbC5lbmFibGUoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jb25maWdQcm9wcyQucmVhZE9ubHkgIT0gbnVsbCkge1xuICAgICAgdGhpcy5iUmVhZG9ubHkkID0gdGhpcy51dGlscy5nZXRCb29sZWFuVmFsdWUodGhpcy5jb25maWdQcm9wcyQucmVhZE9ubHkpO1xuICAgIH1cblxuICAgIHRoaXMuY29tcG9uZW50UmVmZXJlbmNlID0gdGhpcy5wQ29ubiQuZ2V0U3RhdGVQcm9wcygpLnZhbHVlO1xuICAgIGlmICh0aGlzLmxpc3RUeXBlID09PSAnYXNzb2NpYXRlZCcpIHtcbiAgICAgIGNvbnN0IG9wdGlvbnNMaXN0ID0gdGhpcy51dGlscy5nZXRPcHRpb25MaXN0KHRoaXMuY29uZmlnUHJvcHMkLCB0aGlzLnBDb25uJC5nZXREYXRhT2JqZWN0KCcnKSk7IC8vIDFzdCBhcmcgZW1wdHkgc3RyaW5nIHVudGlsIHR5cGVkZWYgbWFya2VkIGNvcnJlY3RseVxuICAgICAgdGhpcy5zZXRPcHRpb25zKG9wdGlvbnNMaXN0KTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuZGlzcGxheU1vZGUkICYmIHRoaXMubGlzdFR5cGUgIT09ICdhc3NvY2lhdGVkJykge1xuICAgICAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IHRoaXMuZGF0YVBhZ2VTZXJ2aWNlLmdldERhdGFQYWdlRGF0YShkYXRhc291cmNlLCB0aGlzLnBhcmFtZXRlcnMsIGNvbnRleHQpO1xuICAgICAgdGhpcy5maWxsT3B0aW9ucyhyZXN1bHRzKTtcbiAgICB9XG5cbiAgICAvLyB0cmlnZ2VyIGRpc3BsYXkgb2YgZXJyb3IgbWVzc2FnZSB3aXRoIGZpZWxkIGNvbnRyb2xcbiAgICBpZiAodGhpcy5hbmd1bGFyUENvbm5lY3REYXRhLnZhbGlkYXRlTWVzc2FnZSAhPSBudWxsICYmIHRoaXMuYW5ndWxhclBDb25uZWN0RGF0YS52YWxpZGF0ZU1lc3NhZ2UgIT0gJycpIHtcbiAgICAgIGNvbnN0IHRpbWVyID0gaW50ZXJ2YWwoMTAwKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmZpZWxkQ29udHJvbC5zZXRFcnJvcnMoeyBtZXNzYWdlOiB0cnVlIH0pO1xuICAgICAgICB0aGlzLmZpZWxkQ29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XG5cbiAgICAgICAgdGltZXIudW5zdWJzY3JpYmUoKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHNldFByb3BlcnR5VmFsdWVzRnJvbVByb3BzKCkge1xuICAgIHRoaXMudGVzdElkID0gdGhpcy5jb25maWdQcm9wcyQudGVzdElkO1xuICAgIHRoaXMubGFiZWwkID0gdGhpcy5jb25maWdQcm9wcyQubGFiZWw7XG4gICAgdGhpcy5wbGFjZWhvbGRlciA9IHRoaXMuY29uZmlnUHJvcHMkLnBsYWNlaG9sZGVyIHx8ICcnO1xuICAgIHRoaXMuZGlzcGxheU1vZGUkID0gdGhpcy5jb25maWdQcm9wcyQuZGlzcGxheU1vZGU7XG4gICAgdGhpcy5saXN0VHlwZSA9IHRoaXMuY29uZmlnUHJvcHMkLmxpc3RUeXBlO1xuICAgIHRoaXMuaGlkZUxhYmVsID0gdGhpcy5jb25maWdQcm9wcyQuaGlkZUxhYmVsO1xuICAgIHRoaXMuaGVscGVyVGV4dCA9IHRoaXMuY29uZmlnUHJvcHMkLmhlbHBlclRleHQ7XG4gICAgdGhpcy5wYXJhbWV0ZXJzID0gdGhpcy5jb25maWdQcm9wcyQ/LnBhcmFtZXRlcnM7XG4gIH1cblxuICBnZW5lcmF0ZUNvbHVtbnNBbmREYXRhU291cmNlKCkge1xuICAgIGxldCBkYXRhc291cmNlID0gdGhpcy5jb25maWdQcm9wcyQuZGF0YXNvdXJjZTtcbiAgICBsZXQgY29sdW1ucyA9IHRoaXMuY29uZmlnUHJvcHMkLmNvbHVtbnM7XG4gICAgLy8gY29uc3QgeyBkZWZlckRhdGFzb3VyY2UsIGRhdGFzb3VyY2VNZXRhZGF0YSB9ID0gdGhpcy5jb25maWdQcm9wcyQ7XG4gICAgY29uc3QgeyBkZWZlckRhdGFzb3VyY2UsIGRhdGFzb3VyY2VNZXRhZGF0YSB9ID0gdGhpcy5wQ29ubiQuZ2V0Q29uZmlnUHJvcHMoKTtcbiAgICAvLyBjb252ZXJ0IGFzc29jaWF0ZWQgdG8gZGF0YXBhZ2UgbGlzdHR5cGUgYW5kIHRyYW5zZm9ybSBwcm9wc1xuICAgIC8vIFByb2Nlc3MgZGVmZXJEYXRhc291cmNlIHdoZW4gZGF0YXBhZ2UgbmFtZSBpcyBwcmVzZW50LiBXSGhlbiB0YWJsZVR5cGUgaXMgcHJvbXB0TGlzdCAvIGxvY2FsTGlzdFxuICAgIGlmIChkZWZlckRhdGFzb3VyY2UgJiYgZGF0YXNvdXJjZU1ldGFkYXRhPy5kYXRhc291cmNlPy5uYW1lKSB7XG4gICAgICB0aGlzLmxpc3RUeXBlID0gJ2RhdGFwYWdlJztcbiAgICAgIGRhdGFzb3VyY2UgPSBkYXRhc291cmNlTWV0YWRhdGEuZGF0YXNvdXJjZS5uYW1lO1xuICAgICAgY29uc3QgeyBwYXJhbWV0ZXJzLCBwcm9wZXJ0eUZvckRpc3BsYXlUZXh0LCBwcm9wZXJ0eUZvclZhbHVlIH0gPSBkYXRhc291cmNlTWV0YWRhdGEuZGF0YXNvdXJjZTtcbiAgICAgIHRoaXMucGFyYW1ldGVycyA9IHRoaXMuZmxhdHRlblBhcmFtZXRlcnMocGFyYW1ldGVycyk7XG4gICAgICBjb25zdCBkaXNwbGF5UHJvcCA9IHByb3BlcnR5Rm9yRGlzcGxheVRleHQ/LnN0YXJ0c1dpdGgoJ0BQJykgPyBwcm9wZXJ0eUZvckRpc3BsYXlUZXh0LnN1YnN0cmluZygzKSA6IHByb3BlcnR5Rm9yRGlzcGxheVRleHQ7XG4gICAgICBjb25zdCB2YWx1ZVByb3AgPSBwcm9wZXJ0eUZvclZhbHVlPy5zdGFydHNXaXRoKCdAUCcpID8gcHJvcGVydHlGb3JWYWx1ZS5zdWJzdHJpbmcoMykgOiBwcm9wZXJ0eUZvclZhbHVlO1xuICAgICAgY29sdW1ucyA9IFtcbiAgICAgICAge1xuICAgICAgICAgIGtleTogJ3RydWUnLFxuICAgICAgICAgIHNldFByb3BlcnR5OiAnQXNzb2NpYXRlZCBwcm9wZXJ0eScsXG4gICAgICAgICAgdmFsdWU6IHZhbHVlUHJvcFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgZGlzcGxheTogJ3RydWUnLFxuICAgICAgICAgIHByaW1hcnk6ICd0cnVlJyxcbiAgICAgICAgICB1c2VGb3JTZWFyY2g6IHRydWUsXG4gICAgICAgICAgdmFsdWU6IGRpc3BsYXlQcm9wXG4gICAgICAgIH1cbiAgICAgIF07XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgY29sdW1ucywgZGF0YXNvdXJjZSB9O1xuICB9XG5cbiAgZmlsbE9wdGlvbnMocmVzdWx0czogYW55KSB7XG4gICAgY29uc3Qgb3B0aW9uc0RhdGE6IGFueVtdID0gW107XG4gICAgY29uc3QgZGlzcGxheUNvbHVtbiA9IHRoaXMuZ2V0RGlzcGxheUZpZWxkc01ldGFEYXRhKHRoaXMuY29sdW1ucyk7XG4gICAgcmVzdWx0cz8uZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgIGNvbnN0IG9iaiA9IHtcbiAgICAgICAga2V5OiBlbGVtZW50W2Rpc3BsYXlDb2x1bW4ua2V5XSB8fCBlbGVtZW50LnB5R1VJRCxcbiAgICAgICAgdmFsdWU6IGVsZW1lbnRbZGlzcGxheUNvbHVtbi5wcmltYXJ5XT8udG9TdHJpbmcoKVxuICAgICAgfTtcbiAgICAgIG9wdGlvbnNEYXRhLnB1c2gob2JqKTtcbiAgICB9KTtcbiAgICB0aGlzLnNldE9wdGlvbnMob3B0aW9uc0RhdGEpO1xuICB9XG5cbiAgZmxhdHRlblBhcmFtZXRlcnMocGFyYW1zID0ge30pIHtcbiAgICBjb25zdCBmbGF0UGFyYW1zID0ge307XG4gICAgT2JqZWN0LmtleXMocGFyYW1zKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICBjb25zdCB7IG5hbWUsIHZhbHVlOiB0aGVWYWwgfSA9IHBhcmFtc1trZXldO1xuICAgICAgZmxhdFBhcmFtc1tuYW1lXSA9IHRoZVZhbDtcbiAgICB9KTtcblxuICAgIHJldHVybiBmbGF0UGFyYW1zO1xuICB9XG5cbiAgZ2V0RGlzcGxheUZpZWxkc01ldGFEYXRhKGNvbHVtbkxpc3QpIHtcbiAgICBjb25zdCBkaXNwbGF5Q29sdW1ucyA9IGNvbHVtbkxpc3QuZmlsdGVyKGNvbCA9PiBjb2wuZGlzcGxheSA9PT0gJ3RydWUnKTtcbiAgICBjb25zdCBtZXRhRGF0YU9iajogYW55ID0geyBrZXk6ICcnLCBwcmltYXJ5OiAnJywgc2Vjb25kYXJ5OiBbXSB9O1xuICAgIGNvbnN0IGtleUNvbCA9IGNvbHVtbkxpc3QuZmlsdGVyKGNvbCA9PiBjb2wua2V5ID09PSAndHJ1ZScpO1xuICAgIG1ldGFEYXRhT2JqLmtleSA9IGtleUNvbC5sZW5ndGggPiAwID8ga2V5Q29sWzBdLnZhbHVlIDogJ2F1dG8nO1xuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBkaXNwbGF5Q29sdW1ucy5sZW5ndGg7IGluZGV4ICs9IDEpIHtcbiAgICAgIGlmIChkaXNwbGF5Q29sdW1uc1tpbmRleF0ucHJpbWFyeSA9PT0gJ3RydWUnKSB7XG4gICAgICAgIG1ldGFEYXRhT2JqLnByaW1hcnkgPSBkaXNwbGF5Q29sdW1uc1tpbmRleF0udmFsdWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtZXRhRGF0YU9iai5zZWNvbmRhcnkucHVzaChkaXNwbGF5Q29sdW1uc1tpbmRleF0udmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbWV0YURhdGFPYmo7XG4gIH1cblxuICBwcmVQcm9jZXNzQ29sdW1ucyhjb2x1bW5MaXN0KSB7XG4gICAgcmV0dXJuIGNvbHVtbkxpc3Q/Lm1hcChjb2wgPT4ge1xuICAgICAgY29uc3QgdGVtcENvbE9iaiA9IHsgLi4uY29sIH07XG4gICAgICB0ZW1wQ29sT2JqLnZhbHVlID0gY29sLnZhbHVlICYmIGNvbC52YWx1ZS5zdGFydHNXaXRoKCcuJykgPyBjb2wudmFsdWUuc3Vic3RyaW5nKDEpIDogY29sLnZhbHVlO1xuICAgICAgcmV0dXJuIHRlbXBDb2xPYmo7XG4gICAgfSk7XG4gIH1cblxuICBmaWVsZE9uQ2hhbmdlKGV2ZW50OiBFdmVudCkge1xuICAgIC8vIHRoaXMgd29ya3MgLSB0aGlzLnBDb25uJC5zZXRWYWx1ZSggdGhpcy5jb21wb25lbnRSZWZlcmVuY2UsIGBwcm9wZXJ0eTogJHt0aGlzLmNvbXBvbmVudFJlZmVyZW5jZX1gKTtcbiAgICAvLyB0aGlzIHdvcmtzIC0gdGhpcy5wQ29ubiQuc2V0VmFsdWUoIHRoaXMuY29tcG9uZW50UmVmZXJlbmNlLCB0aGlzLmZpZWxkQ29udHJvbC52YWx1ZSk7XG4gICAgLy8gUENvbm5lY3Qgd2FudHMgdG8gdXNlIGNoYW5nZUhhbmRsZXIgZm9yIG9uQ2hhbmdlXG4gICAgLy8gdGhpcy5hbmd1bGFyUENvbm5lY3QuY2hhbmdlSGFuZGxlciggdGhpcywgZXZlbnQpO1xuICAgIGNvbnN0IHZhbHVlID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZTtcbiAgICB0aGlzLmZpbHRlclZhbHVlID0gdmFsdWU7XG4gICAgaGFuZGxlRXZlbnQodGhpcy5hY3Rpb25zQXBpLCAnY2hhbmdlJywgdGhpcy5wcm9wTmFtZSwgdmFsdWUpO1xuICB9XG5cbiAgb3B0aW9uQ2hhbmdlZChldmVudDogYW55KSB7XG4gICAgY29uc3QgdmFsdWUgPSBldmVudD8ub3B0aW9uPy52YWx1ZTtcbiAgICBoYW5kbGVFdmVudCh0aGlzLmFjdGlvbnNBcGksICdjaGFuZ2UnLCB0aGlzLnByb3BOYW1lLCB2YWx1ZSk7XG4gIH1cblxuICBmaWVsZE9uQmx1cihldmVudDogRXZlbnQpIHtcbiAgICBsZXQga2V5ID0gJyc7XG4gICAgY29uc3QgZWwgPSBldmVudD8udGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgaWYgKGVsPy52YWx1ZSkge1xuICAgICAgY29uc3QgaW5kZXggPSB0aGlzLm9wdGlvbnMkPy5maW5kSW5kZXgoZWxlbWVudCA9PiBlbGVtZW50LnZhbHVlID09PSBlbC52YWx1ZSk7XG4gICAgICBrZXkgPSBpbmRleCA+IC0xID8gKGtleSA9IHRoaXMub3B0aW9ucyRbaW5kZXhdLmtleSkgOiBlbC52YWx1ZTtcbiAgICB9XG4gICAgY29uc3QgdmFsdWUgPSBrZXk7XG4gICAgaGFuZGxlRXZlbnQodGhpcy5hY3Rpb25zQXBpLCAnY2hhbmdlTmJsdXInLCB0aGlzLnByb3BOYW1lLCB2YWx1ZSk7XG4gICAgaWYgKHRoaXMuY29uZmlnUHJvcHMkPy5vblJlY29yZENoYW5nZSkge1xuICAgICAgZWwudmFsdWUgPSB2YWx1ZTtcbiAgICAgIHRoaXMuY29uZmlnUHJvcHMkLm9uUmVjb3JkQ2hhbmdlKGV2ZW50KTtcbiAgICB9XG4gIH1cblxuICBnZXRFcnJvck1lc3NhZ2UoKSB7XG4gICAgbGV0IGVyck1lc3NhZ2UgPSAnJztcblxuICAgIC8vIGxvb2sgZm9yIHZhbGlkYXRpb24gbWVzc2FnZXMgZm9yIGpzb24sIHByZS1kZWZpbmVkIG9yIGp1c3QgYW4gZXJyb3IgcHVzaGVkIGZyb20gd29ya2l0ZW0gKDQwMClcbiAgICBpZiAodGhpcy5maWVsZENvbnRyb2wuaGFzRXJyb3IoJ21lc3NhZ2UnKSkge1xuICAgICAgZXJyTWVzc2FnZSA9IHRoaXMuYW5ndWxhclBDb25uZWN0RGF0YS52YWxpZGF0ZU1lc3NhZ2UgPz8gJyc7XG4gICAgICByZXR1cm4gZXJyTWVzc2FnZTtcbiAgICB9XG4gICAgaWYgKHRoaXMuZmllbGRDb250cm9sLmhhc0Vycm9yKCdyZXF1aXJlZCcpKSB7XG4gICAgICBlcnJNZXNzYWdlID0gJ1lvdSBtdXN0IGVudGVyIGEgdmFsdWUnO1xuICAgIH0gZWxzZSBpZiAodGhpcy5maWVsZENvbnRyb2wuZXJyb3JzKSB7XG4gICAgICBlcnJNZXNzYWdlID0gdGhpcy5maWVsZENvbnRyb2wuZXJyb3JzLnRvU3RyaW5nKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGVyck1lc3NhZ2U7XG4gIH1cbn1cbiIsIjxkaXYgKm5nSWY9XCJkaXNwbGF5TW9kZSQ7IGVsc2Ugbm9EaXNwbGF5TW9kZVwiPlxuICA8Y29tcG9uZW50LW1hcHBlciAqbmdJZj1cImJWaXNpYmxlJCAhPT0gZmFsc2VcIiBuYW1lPVwiRmllbGRWYWx1ZUxpc3RcIiBbcHJvcHNdPVwieyBsYWJlbCQsIHZhbHVlJCwgZGlzcGxheU1vZGUkLCBoaWRlTGFiZWwgfVwiPjwvY29tcG9uZW50LW1hcHBlcj5cbjwvZGl2PlxuPG5nLXRlbXBsYXRlICNub0Rpc3BsYXlNb2RlPlxuICA8ZGl2ICpuZ0lmPVwiIWJSZWFkb25seSQgJiYgYkhhc0Zvcm0kOyBlbHNlIG5vRWRpdFwiPlxuICAgIDxkaXYgW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXAkXCIgKm5nSWY9XCJiVmlzaWJsZSRcIj5cbiAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInBzZGstZnVsbC13aWR0aFwiIHN1YnNjcmlwdFNpemluZz1cImR5bmFtaWNcIiBbaGludExhYmVsXT1cImhlbHBlclRleHRcIj5cbiAgICAgICAgPG1hdC1sYWJlbD57eyBsYWJlbCQgfX08L21hdC1sYWJlbD5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJmaWVsZENvbnRyb2xcIlxuICAgICAgICAgIFthdHRyLmRhdGEtdGVzdC1pZF09XCJ0ZXN0SWRcIlxuICAgICAgICAgIFtyZXF1aXJlZF09XCJiUmVxdWlyZWQkXCJcbiAgICAgICAgICBbbWF0QXV0b2NvbXBsZXRlXT1cImF1dG9cIlxuICAgICAgICAgIChpbnB1dCk9XCJmaWVsZE9uQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgIChibHVyKT1cImZpZWxkT25CbHVyKCRldmVudClcIlxuICAgICAgICAvPlxuICAgICAgICA8bWF0LWF1dG9jb21wbGV0ZSAjYXV0bz1cIm1hdEF1dG9jb21wbGV0ZVwiIGF1dG9BY3RpdmVGaXJzdE9wdGlvbiAob3B0aW9uU2VsZWN0ZWQpPVwib3B0aW9uQ2hhbmdlZCgkZXZlbnQpXCI+XG4gICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IG9wdCBvZiBmaWx0ZXJlZE9wdGlvbnMgfCBhc3luY1wiIFt2YWx1ZV09XCJvcHQudmFsdWVcIj5cbiAgICAgICAgICAgIDxzcGFuPnt7IG9wdC52YWx1ZSB9fTwvc3Bhbj5cbiAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgIDwvbWF0LWF1dG9jb21wbGV0ZT5cbiAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cImZpZWxkQ29udHJvbC5pbnZhbGlkXCI+e3sgZ2V0RXJyb3JNZXNzYWdlKCkgfX08L21hdC1lcnJvcj5cbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjbm9FZGl0PlxuICA8Y29tcG9uZW50LW1hcHBlciAqbmdJZj1cImJWaXNpYmxlJCAhPT0gZmFsc2VcIiBuYW1lPVwiVGV4dFwiIFtwcm9wc109XCJ7IHBDb25uJCwgZm9ybWF0QXMkOiAndGV4dCcgfVwiPjwvY29tcG9uZW50LW1hcHBlcj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
@@ -80,10 +80,10 @@ export class CancelAlertComponent {
|
|
|
80
80
|
break;
|
|
81
81
|
}
|
|
82
82
|
}
|
|
83
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
84
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
83
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CancelAlertComponent, deps: [{ token: i1.ProgressSpinnerService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
84
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CancelAlertComponent, isStandalone: true, selector: "app-cancel-alert", inputs: { pConn$: "pConn$", bShowAlert$: "bShowAlert$" }, outputs: { onAlertState$: "onAlertState$" }, usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"bShowAlert$\" class=\"psdk-cancel-alert-background\">\n <div class=\"psdk-cancel-alert-top\">\n <h3 *ngIf=\"heading$ != ''\">{{ heading$ }}</h3>\n <div>\n <p>{{ body1$ }}</p>\n <p>{{ body2$ }}</p>\n </div>\n <mat-grid-list cols=\"2\" rowHeight=\"6.25rem\">\n <mat-grid-tile>\n <button mat-raised-button color=\"secondary\" (click)=\"buttonClick('save')\">{{ localizedVal('Save for later', localeCategory) }}</button>\n </mat-grid-tile>\n <mat-grid-tile>\n <button mat-raised-button color=\"secondary\" (click)=\"buttonClick('continue')\">{{ localizedVal('Continue Working', localeCategory) }}</button>\n <button mat-raised-button color=\"primary\" (click)=\"buttonClick('delete')\">{{ localizedVal('Delete', localeCategory) }}</button>\n </mat-grid-tile>\n </mat-grid-list>\n </div>\n</div>\n", styles: [".psdk-cancel-alert-background{display:flex;flex-direction:column;justify-content:center;align-items:center;height:100%;width:100%;background-color:var(--app-dialog-background-color);position:fixed;z-index:9999;top:0;left:0}.psdk-cancel-alert-top{display:table;margin:auto;min-width:550px;background-color:var(--app-form-color);border:1px solid var(--app-inverse-form-color);border-radius:10px;padding:20px;box-shadow:0 0 10px 3px var(--app-box-shadow-color)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatGridListModule }, { kind: "component", type: i3.MatGridList, selector: "mat-grid-list", inputs: ["cols", "gutterSize", "rowHeight"], exportAs: ["matGridList"] }, { kind: "component", type: i3.MatGridTile, selector: "mat-grid-tile", inputs: ["rowspan", "colspan"], exportAs: ["matGridTile"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }] }); }
|
|
85
85
|
}
|
|
86
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
86
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CancelAlertComponent, decorators: [{
|
|
87
87
|
type: Component,
|
|
88
88
|
args: [{ selector: 'app-cancel-alert', standalone: true, imports: [CommonModule, MatGridListModule, MatButtonModule], template: "<div *ngIf=\"bShowAlert$\" class=\"psdk-cancel-alert-background\">\n <div class=\"psdk-cancel-alert-top\">\n <h3 *ngIf=\"heading$ != ''\">{{ heading$ }}</h3>\n <div>\n <p>{{ body1$ }}</p>\n <p>{{ body2$ }}</p>\n </div>\n <mat-grid-list cols=\"2\" rowHeight=\"6.25rem\">\n <mat-grid-tile>\n <button mat-raised-button color=\"secondary\" (click)=\"buttonClick('save')\">{{ localizedVal('Save for later', localeCategory) }}</button>\n </mat-grid-tile>\n <mat-grid-tile>\n <button mat-raised-button color=\"secondary\" (click)=\"buttonClick('continue')\">{{ localizedVal('Continue Working', localeCategory) }}</button>\n <button mat-raised-button color=\"primary\" (click)=\"buttonClick('delete')\">{{ localizedVal('Delete', localeCategory) }}</button>\n </mat-grid-tile>\n </mat-grid-list>\n </div>\n</div>\n", styles: [".psdk-cancel-alert-background{display:flex;flex-direction:column;justify-content:center;align-items:center;height:100%;width:100%;background-color:var(--app-dialog-background-color);position:fixed;z-index:9999;top:0;left:0}.psdk-cancel-alert-top{display:table;margin:auto;min-width:550px;background-color:var(--app-form-color);border:1px solid var(--app-inverse-form-color);border-radius:10px;padding:20px;box-shadow:0 0 10px 3px var(--app-box-shadow-color)}\n"] }]
|
|
89
89
|
}], ctorParameters: () => [{ type: i1.ProgressSpinnerService }], propDecorators: { pConn$: [{
|
|
@@ -105,7 +105,7 @@ export class CheckBoxComponent {
|
|
|
105
105
|
this.datasource = this.configProps$.datasource;
|
|
106
106
|
this.selectionKey = this.configProps$.selectionKey;
|
|
107
107
|
const listSourceItems = this.datasource?.source ?? [];
|
|
108
|
-
const dataField = this.selectionKey?.split?.('.')[1];
|
|
108
|
+
const dataField = this.selectionKey?.split?.('.')[1] ?? '';
|
|
109
109
|
const listToDisplay = [];
|
|
110
110
|
listSourceItems.forEach(element => {
|
|
111
111
|
element.selected = this.selectedvalues?.some?.(data => data[dataField] === element.key);
|
|
@@ -119,8 +119,8 @@ export class CheckBoxComponent {
|
|
|
119
119
|
}
|
|
120
120
|
this.caption$ = this.configProps$.caption;
|
|
121
121
|
this.helperText = this.configProps$.helperText;
|
|
122
|
-
this.trueLabel$ = this.configProps$.trueLabel;
|
|
123
|
-
this.falseLabel$ = this.configProps$.falseLabel;
|
|
122
|
+
this.trueLabel$ = this.configProps$.trueLabel || 'Yes';
|
|
123
|
+
this.falseLabel$ = this.configProps$.falseLabel || 'No';
|
|
124
124
|
// timeout and detectChanges to avoid ExpressionChangedAfterItHasBeenCheckedError
|
|
125
125
|
setTimeout(() => {
|
|
126
126
|
if (this.configProps$.required != null) {
|
|
@@ -165,14 +165,16 @@ export class CheckBoxComponent {
|
|
|
165
165
|
fieldOnChange(event) {
|
|
166
166
|
event.value = event.checked;
|
|
167
167
|
handleEvent(this.actionsApi, 'changeNblur', this.propName, event.checked);
|
|
168
|
+
this.pConn$.clearErrorMessages({
|
|
169
|
+
property: this.propName
|
|
170
|
+
});
|
|
168
171
|
}
|
|
169
172
|
fieldOnBlur(event) {
|
|
170
173
|
if (this.selectionMode === 'multi') {
|
|
171
174
|
this.pConn$.getValidationApi().validate(this.selectedvalues, this.selectionList);
|
|
172
175
|
}
|
|
173
176
|
else {
|
|
174
|
-
|
|
175
|
-
this.angularPConnectData.actions?.onBlur(this, event);
|
|
177
|
+
this.pConn$.getValidationApi().validate(event.target.checked);
|
|
176
178
|
}
|
|
177
179
|
}
|
|
178
180
|
handleChangeMultiMode(event, element) {
|
|
@@ -209,15 +211,15 @@ export class CheckBoxComponent {
|
|
|
209
211
|
}
|
|
210
212
|
return errMessage;
|
|
211
213
|
}
|
|
212
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
213
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
214
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CheckBoxComponent, deps: [{ token: i1.AngularPConnectService }, { token: i0.ChangeDetectorRef }, { token: i2.Utils }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
215
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CheckBoxComponent, isStandalone: true, selector: "app-check-box", inputs: { pConn$: "pConn$", formGroup$: "formGroup$" }, ngImport: i0, template: "<div *ngIf=\"displayMode$; else noDisplayMode\">\n <component-mapper\n *ngIf=\"bVisible$ !== false\"\n name=\"FieldValueList\"\n [props]=\"{ label$: caption$, value$: value$ ? trueLabel$ : falseLabel$, displayMode$ }\"\n ></component-mapper>\n</div>\n<ng-template #noDisplayMode>\n <div *ngIf=\"bHasForm$; else noEdit\">\n <div [formGroup]=\"formGroup$\" *ngIf=\"bVisible$\">\n <div class=\"mat-form-field-infix\" *ngIf=\"showLabel$\">\n <span>\n <label class=\"mat-form-field-label psdk-label-readonly\">{{ label$ }}</label>\n </span>\n </div>\n <div *ngIf=\"selectionMode === 'multi'; else single\">\n <mat-option *ngFor=\"let item of listOfCheckboxes\" (click)=\"handleChangeMultiMode($event, item)\">\n <mat-checkbox\n [labelPosition]=\"'after'\"\n [checked]=\"item.selected\"\n [disabled]=\"bDisabled$ || bReadonly$\"\n [required]=\"bRequired$\"\n [attr.data-test-id]=\"testId + ':' + item.value\"\n (change)=\"handleChangeMultiMode($event, item)\"\n (blur)=\"fieldOnBlur($event)\"\n >{{ item.text ?? item.value }}\n </mat-checkbox>\n </mat-option>\n </div>\n <ng-template #single>\n <mat-checkbox\n [labelPosition]=\"'after'\"\n [checked]=\"isChecked$\"\n [disabled]=\"bDisabled$ || bReadonly$\"\n [required]=\"bRequired$\"\n [attr.data-test-id]=\"testId\"\n [formControl]=\"fieldControl\"\n (change)=\"fieldOnChange($event)\"\n (blur)=\"fieldOnBlur($event)\"\n >{{ caption$ }}</mat-checkbox\n >\n <p *ngIf=\"helperText\">{{ helperText }}</p>\n </ng-template>\n <mat-error *ngIf=\"fieldControl.invalid\">{{ getErrorMessage() }}</mat-error>\n </div>\n </div>\n</ng-template>\n<ng-template #noEdit>\n <component-mapper *ngIf=\"bVisible$ !== false\" name=\"Text\" [props]=\"{ pConn$, formatAs$: 'text' }\"></component-mapper>\n</ng-template>\n", styles: [".psdk-full-width{min-width:9.375rem;width:100%;text-align:left}.psdk-label-readonly{top:0rem;margin-top:.625rem;font-size:.875rem;transform:translateY(-1.28125em) scale(.75) perspective(100px) translateZ(.001px);-ms-transform:translateY(-1.28125em) scale(.75);width:133.33333%;color:#0009}.psdk-data-readonly{padding-top:.625rem;width:100%}::ng-deep .mat-mdc-form-field-infix{width:auto}p{font-size:.75rem;color:#00000094}mat-checkbox{margin-left:-11px}.mat-mdc-option{margin-left:-16px}\n"], dependencies: [{ kind: "ngmodule", type: i0.forwardRef(() => CommonModule) }, { kind: "directive", type: i0.forwardRef(() => i3.NgForOf), selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i0.forwardRef(() => i3.NgIf), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: i0.forwardRef(() => ReactiveFormsModule) }, { kind: "directive", type: i0.forwardRef(() => i4.NgControlStatus), selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i0.forwardRef(() => i4.NgControlStatusGroup), selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i0.forwardRef(() => i4.RequiredValidator), selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i0.forwardRef(() => i4.FormControlDirective), selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i0.forwardRef(() => i4.FormGroupDirective), selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: i0.forwardRef(() => MatCheckboxModule) }, { kind: "component", type: i0.forwardRef(() => i5.MatCheckbox), selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "ngmodule", type: i0.forwardRef(() => MatFormFieldModule) }, { kind: "directive", type: i0.forwardRef(() => i6.MatError), selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "ngmodule", type: i0.forwardRef(() => MatOptionModule) }, { kind: "component", type: i0.forwardRef(() => i7.MatOption), selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i0.forwardRef(() => ComponentMapperComponent), selector: "component-mapper", inputs: ["name", "props", "errorMsg", "outputEvents", "parent"] }] }); }
|
|
214
216
|
}
|
|
215
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
217
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CheckBoxComponent, decorators: [{
|
|
216
218
|
type: Component,
|
|
217
|
-
args: [{ selector: 'app-check-box', standalone: true, imports: [CommonModule, ReactiveFormsModule, MatCheckboxModule, MatFormFieldModule, MatOptionModule, forwardRef(() => ComponentMapperComponent)], template: "<div *ngIf=\"displayMode$; else noDisplayMode\">\n <component-mapper\n *ngIf=\"bVisible$ !== false\"\n name=\"FieldValueList\"\n [props]=\"{ label$: caption$, value$: value$ ? trueLabel$ : falseLabel$, displayMode$ }\"\n ></component-mapper>\n</div>\n<ng-template #noDisplayMode>\n <div *ngIf=\"bHasForm$; else noEdit\">\n <div [formGroup]=\"formGroup$\" *ngIf=\"bVisible$\">\n <div class=\"mat-form-field-infix\" *ngIf=\"showLabel$\">\n <span>\n <label class=\"mat-form-field-label psdk-label-readonly\">{{ label$ }}</label>\n </span>\n </div>\n <div *ngIf=\"selectionMode === 'multi'; else single\">\n <mat-option *ngFor=\"let item of listOfCheckboxes\" (click)=\"handleChangeMultiMode($event, item)\">\n <mat-checkbox\n [labelPosition]=\"'after'\"\n [checked]=\"item.selected\"\n [attr.data-test-id]=\"testId + ':' + item.value\"\n (change)=\"handleChangeMultiMode($event, item)\"\n (blur)=\"fieldOnBlur($event)\"\n >{{ item.text ?? item.value }}\n </mat-checkbox>\n </mat-option>\n </div>\n <ng-template #single>\n <mat-checkbox\n [labelPosition]=\"'after'\"\n [checked]=\"isChecked$\"\n [attr.data-test-id]=\"testId\"\n [formControl]=\"fieldControl\"\n (change)=\"fieldOnChange($event)\"\n (blur)=\"fieldOnBlur($event)\"\n >{{ caption$ }}</mat-checkbox\n >\n <p *ngIf=\"helperText\">{{ helperText }}</p>\n </ng-template>\n <mat-error *ngIf=\"fieldControl.invalid\">{{ getErrorMessage() }}</mat-error>\n </div>\n </div>\n</ng-template>\n<ng-template #noEdit>\n <component-mapper *ngIf=\"bVisible$ !== false\" name=\"Text\" [props]=\"{ pConn$, formatAs$: 'text' }\"></component-mapper>\n</ng-template>\n", styles: [".psdk-full-width{min-width:9.375rem;width:100%;text-align:left}.psdk-label-readonly{top:0rem;margin-top:.625rem;font-size:.875rem;transform:translateY(-1.28125em) scale(.75) perspective(100px) translateZ(.001px);-ms-transform:translateY(-1.28125em) scale(.75);width:133.33333%;color:#0009}.psdk-data-readonly{padding-top:.625rem;width:100%}::ng-deep .mat-mdc-form-field-infix{width:auto}p{font-size:.75rem;color:#00000094}mat-checkbox{margin-left:-11px}.mat-mdc-option{margin-left:-16px}\n"] }]
|
|
219
|
+
args: [{ selector: 'app-check-box', standalone: true, imports: [CommonModule, ReactiveFormsModule, MatCheckboxModule, MatFormFieldModule, MatOptionModule, forwardRef(() => ComponentMapperComponent)], template: "<div *ngIf=\"displayMode$; else noDisplayMode\">\n <component-mapper\n *ngIf=\"bVisible$ !== false\"\n name=\"FieldValueList\"\n [props]=\"{ label$: caption$, value$: value$ ? trueLabel$ : falseLabel$, displayMode$ }\"\n ></component-mapper>\n</div>\n<ng-template #noDisplayMode>\n <div *ngIf=\"bHasForm$; else noEdit\">\n <div [formGroup]=\"formGroup$\" *ngIf=\"bVisible$\">\n <div class=\"mat-form-field-infix\" *ngIf=\"showLabel$\">\n <span>\n <label class=\"mat-form-field-label psdk-label-readonly\">{{ label$ }}</label>\n </span>\n </div>\n <div *ngIf=\"selectionMode === 'multi'; else single\">\n <mat-option *ngFor=\"let item of listOfCheckboxes\" (click)=\"handleChangeMultiMode($event, item)\">\n <mat-checkbox\n [labelPosition]=\"'after'\"\n [checked]=\"item.selected\"\n [disabled]=\"bDisabled$ || bReadonly$\"\n [required]=\"bRequired$\"\n [attr.data-test-id]=\"testId + ':' + item.value\"\n (change)=\"handleChangeMultiMode($event, item)\"\n (blur)=\"fieldOnBlur($event)\"\n >{{ item.text ?? item.value }}\n </mat-checkbox>\n </mat-option>\n </div>\n <ng-template #single>\n <mat-checkbox\n [labelPosition]=\"'after'\"\n [checked]=\"isChecked$\"\n [disabled]=\"bDisabled$ || bReadonly$\"\n [required]=\"bRequired$\"\n [attr.data-test-id]=\"testId\"\n [formControl]=\"fieldControl\"\n (change)=\"fieldOnChange($event)\"\n (blur)=\"fieldOnBlur($event)\"\n >{{ caption$ }}</mat-checkbox\n >\n <p *ngIf=\"helperText\">{{ helperText }}</p>\n </ng-template>\n <mat-error *ngIf=\"fieldControl.invalid\">{{ getErrorMessage() }}</mat-error>\n </div>\n </div>\n</ng-template>\n<ng-template #noEdit>\n <component-mapper *ngIf=\"bVisible$ !== false\" name=\"Text\" [props]=\"{ pConn$, formatAs$: 'text' }\"></component-mapper>\n</ng-template>\n", styles: [".psdk-full-width{min-width:9.375rem;width:100%;text-align:left}.psdk-label-readonly{top:0rem;margin-top:.625rem;font-size:.875rem;transform:translateY(-1.28125em) scale(.75) perspective(100px) translateZ(.001px);-ms-transform:translateY(-1.28125em) scale(.75);width:133.33333%;color:#0009}.psdk-data-readonly{padding-top:.625rem;width:100%}::ng-deep .mat-mdc-form-field-infix{width:auto}p{font-size:.75rem;color:#00000094}mat-checkbox{margin-left:-11px}.mat-mdc-option{margin-left:-16px}\n"] }]
|
|
218
220
|
}], ctorParameters: () => [{ type: i1.AngularPConnectService }, { type: i0.ChangeDetectorRef }, { type: i2.Utils }], propDecorators: { pConn$: [{
|
|
219
221
|
type: Input
|
|
220
222
|
}], formGroup$: [{
|
|
221
223
|
type: Input
|
|
222
224
|
}] } });
|
|
223
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2stYm94LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItc2RrLWNvbXBvbmVudHMvc3JjL2xpYi9fY29tcG9uZW50cy9maWVsZC9jaGVjay1ib3gvY2hlY2stYm94LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItc2RrLWNvbXBvbmVudHMvc3JjL2xpYi9fY29tcG9uZW50cy9maWVsZC9jaGVjay1ib3gvY2hlY2stYm94LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFxQixVQUFVLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDbkcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQWEsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUdoQyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw4REFBOEQsQ0FBQztBQUV4RyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsaUJBQWlCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNuSCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sOEJBQThCLENBQUM7Ozs7Ozs7OztBQXlCM0QsTUFBTSxPQUFPLGlCQUFpQjtJQXVDNUIsWUFDVSxlQUF1QyxFQUN2QyxLQUF3QixFQUN4QixLQUFZO1FBRlosb0JBQWUs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LENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxVQUFVLEdBQUcsRUFBRSxDQUFDO1FBRXBCLGlHQUFpRztRQUNqRyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7WUFDMUMsVUFBVSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxlQUFlLElBQUksRUFBRSxDQUFDO1lBQzVELE9BQU8sVUFBVSxDQUFDO1FBQ3BCLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDM0MsVUFBVSxHQUFHLHdCQUF3QixDQUFDO1FBQ3hDLENBQUM7YUFBTSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDcEMsVUFBVSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ25ELENBQUM7UUFFRCxPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDOytHQTdPVSxpQkFBaUI7bUdBQWpCLGlCQUFpQixpSUNyQzlCLDQwREE4Q0Esc2pCRFhZLFlBQVksOFRBQUUsbUJBQW1CLCtzQkFBRSxpQkFBaUIsdVpBQUUsa0JBQWtCLHFLQUFFLGVBQWUsME9BQW1CLHdCQUF3Qjs7NEZBRW5JLGlCQUFpQjtrQkFQN0IsU0FBUzsrQkFDRSxlQUFlLGNBR2IsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLG1CQUFtQixFQUFFLGlCQUFpQixFQUFFLGtCQUFrQixFQUFFLGVBQWUsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsd0JBQXdCLENBQUMsQ0FBQzsrSUFHdkksTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIENoYW5nZURldGVjdG9yUmVmLCBmb3J3YXJkUmVmLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0Q2hlY2tib3hNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XG5pbXBvcnQgeyBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IE1hdE9wdGlvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuaW1wb3J0IHsgaW50ZXJ2YWwgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFuZ3VsYXJQQ29ubmVjdERhdGEsIEFuZ3VsYXJQQ29ubmVjdFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9fYnJpZGdlL2FuZ3VsYXItcGNvbm5lY3QnO1xuaW1wb3J0IHsgVXRpbHMgfSBmcm9tICcuLi8uLi8uLi9faGVscGVycy91dGlscyc7XG5pbXBvcnQgeyBDb21wb25lbnRNYXBwZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9fYnJpZGdlL2NvbXBvbmVudC1tYXBwZXIvY29tcG9uZW50LW1hcHBlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgUENvbm5GaWVsZFByb3BzIH0gZnJvbSAnLi4vLi4vLi4vX3R5cGVzL1BDb25uUHJvcHMuaW50ZXJmYWNlJztcbmltcG9ydCB7IGRlbGV0ZUluc3RydWN0aW9uLCBpbnNlcnRJbnN0cnVjdGlvbiwgdXBkYXRlTmV3SW5zdHJ1Y3Rpb25zIH0gZnJvbSAnLi4vLi4vLi4vX2hlbHBlcnMvaW5zdHJ1Y3Rpb25zLXV0aWxzJztcbmltcG9ydCB7IGhhbmRsZUV2ZW50IH0gZnJvbSAnLi4vLi4vLi4vX2hlbHBlcnMvZXZlbnQtdXRpbCc7XG5cbmludGVyZmFjZSBDaGVja2JveFByb3BzIGV4dGVuZHMgT21pdDxQQ29ubkZpZWxkUHJvcHMsICd2YWx1ZSc+IHtcbiAgLy8gSWYgYW55LCBlbnRlciBhZGRpdGlvbmFsIHByb3BzIHRoYXQgb25seSBleGlzdCBvbiBDaGVja2JveCBoZXJlXG4gIC8vIEV2ZXJ5dGhpbmcgZnJvbSBQQ29ubkZpZWxkUHJvcHMgZXhjZXB0IHZhbHVlIGFuZCBjaGFuZ2UgdHlwZSBvZiB2YWx1ZSB0byBib29sZWFuXG4gIHZhbHVlOiBib29sZWFuO1xuICBjYXB0aW9uPzogc3RyaW5nO1xuICB0cnVlTGFiZWw/OiBzdHJpbmc7XG4gIGZhbHNlTGFiZWw/OiBzdHJpbmc7XG4gIHNlbGVjdGlvbk1vZGU/OiBzdHJpbmc7XG4gIGRhdGFzb3VyY2U/OiBhbnk7XG4gIHNlbGVjdGlvbktleT86IHN0cmluZztcbiAgc2VsZWN0aW9uTGlzdD86IGFueTtcbiAgcHJpbWFyeUZpZWxkOiBzdHJpbmc7XG4gIHJlYWRvbmx5Q29udGV4dExpc3Q6IGFueTtcbiAgcmVmZXJlbmNlTGlzdDogc3RyaW5nO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtY2hlY2stYm94JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NoZWNrLWJveC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NoZWNrLWJveC5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBNYXRDaGVja2JveE1vZHVsZSwgTWF0Rm9ybUZpZWxkTW9kdWxlLCBNYXRPcHRpb25Nb2R1bGUsIGZvcndhcmRSZWYoKCkgPT4gQ29tcG9uZW50TWFwcGVyQ29tcG9uZW50KV1cbn0pXG5leHBvcnQgY2xhc3MgQ2hlY2tCb3hDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIHBDb25uJDogdHlwZW9mIFBDb25uZWN0O1xuICBASW5wdXQoKSBmb3JtR3JvdXAkOiBGb3JtR3JvdXA7XG5cbiAgLy8gVXNlZCB3aXRoIEFuZ3VsYXJQQ29ubmVjdFxuICBhbmd1bGFyUENvbm5lY3REYXRhOiBBbmd1bGFyUENvbm5lY3REYXRhID0ge307XG4gIGNvbmZpZ1Byb3BzJDogQ2hlY2tib3hQcm9wcztcblxuICBsYWJlbCQgPSAnJztcbiAgdmFsdWUkOiBhbnkgPSAnJztcbiAgY2FwdGlvbiQ/OiBzdHJpbmcgPSAnJztcbiAgdGVzdElkID0gJyc7XG4gIHNob3dMYWJlbCQgPSBmYWxzZTtcbiAgaXNDaGVja2VkJCA9IGZhbHNlO1xuICBiUmVxdWlyZWQkID0gZmFsc2U7XG4gIGJSZWFkb25seSQgPSBmYWxzZTtcbiAgYkRpc2FibGVkJCA9IGZhbHNlO1xuICBiVmlzaWJsZSQgPSB0cnVlO1xuICBkaXNwbGF5TW9kZSQ/OiBzdHJpbmcgPSAnJztcbiAgY29udHJvbE5hbWUkOiBzdHJpbmc7XG4gIGJIYXNGb3JtJCA9IHRydWU7XG4gIGNvbXBvbmVudFJlZmVyZW5jZSA9ICcnO1xuICBoZWxwZXJUZXh0OiBzdHJpbmc7XG4gIHRydWVMYWJlbCQ/OiBzdHJpbmc7XG4gIGZhbHNlTGFiZWwkPzogc3RyaW5nO1xuXG4gIHNlbGVjdGlvbk1vZGU/OiBzdHJpbmc7XG4gIGRhdGFzb3VyY2U/OiBhbnk7XG4gIHNlbGVjdGlvbktleT86IHN0cmluZztcbiAgc2VsZWN0aW9uTGlzdD86IGFueTtcbiAgcHJpbWFyeUZpZWxkOiBzdHJpbmc7XG4gIHNlbGVjdGVkdmFsdWVzOiBhbnk7XG4gIHJlZmVyZW5jZUxpc3Q6IHN0cmluZztcbiAgbGlzdE9mQ2hlY2tib3hlczogYW55W10gPSBbXTtcbiAgYWN0aW9uc0FwaTogYW55O1xuICBwcm9wTmFtZTogYW55O1xuXG4gIGZpZWxkQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgnJywgbnVsbCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBhbmd1bGFyUENvbm5lY3Q6IEFuZ3VsYXJQQ29ubmVjdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSB1dGlsczogVXRpbHNcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIC8vIEZpcnN0IHRoaW5nIGluIGluaXRpYWxpemF0aW9uIGlzIHJlZ2lzdGVyaW5nIGFuZCBzdWJzY3JpYmluZyB0byB0aGUgQW5ndWxhclBDb25uZWN0IHNlcnZpY2VcbiAgICB0aGlzLmFuZ3VsYXJQQ29ubmVjdERhdGEgPSB0aGlzLmFuZ3VsYXJQQ29ubmVjdC5yZWdpc3RlckFuZFN1YnNjcmliZUNvbXBvbmVudCh0aGlzLCB0aGlzLm9uU3RhdGVDaGFuZ2UpO1xuICAgIHRoaXMuY29udHJvbE5hbWUkID0gdGhpcy5hbmd1bGFyUENvbm5lY3QuZ2V0Q29tcG9uZW50SUQodGhpcyk7XG5cbiAgICAvLyBUaGVuLCBjb250aW51ZSBvbiB3aXRoIG90aGVyIGluaXRpYWxpemF0aW9uXG5cbiAgICAvLyBjYWxsIHVwZGF0ZVNlbGYgd2hlbiBpbml0aWFsaXppbmdcbiAgICAvLyB0aGlzLnVwZGF0ZVNlbGYoKTtcbiAgICB0aGlzLmNoZWNrQW5kVXBkYXRlKCk7XG5cbiAgICBpZiAodGhpcy5zZWxlY3Rpb25Nb2RlID09PSAnbXVsdGknICYmIHRoaXMucmVmZXJlbmNlTGlzdD8ubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5wQ29ubiQuc2V0UmVmZXJlbmNlTGlzdCh0aGlzLnNlbGVjdGlvbkxpc3QpO1xuICAgICAgdXBkYXRlTmV3SW5zdHJ1Y3Rpb25zKHRoaXMucENvbm4kLCB0aGlzLnNlbGVjdGlvbkxpc3QpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmZvcm1Hcm91cCQpIHtcbiAgICAgIC8vIGFkZCBjb250cm9sIHRvIGZvcm1Hcm91cFxuICAgICAgdGhpcy5mb3JtR3JvdXAkLmFkZENvbnRyb2wodGhpcy5jb250cm9sTmFtZSQsIHRoaXMuZmllbGRDb250cm9sKTtcbiAgICAgIHRoaXMuZmllbGRDb250cm9sLnNldFZhbHVlKHRoaXMudmFsdWUkKTtcbiAgICAgIHRoaXMuYkhhc0Zvcm0kID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5iUmVhZG9ubHkkID0gdHJ1ZTtcbiAgICAgIHRoaXMuYkhhc0Zvcm0kID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZm9ybUdyb3VwJCkge1xuICAgICAgdGhpcy5mb3JtR3JvdXAkLnJlbW92ZUNvbnRyb2wodGhpcy5jb250cm9sTmFtZSQpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmFuZ3VsYXJQQ29ubmVjdERhdGEudW5zdWJzY3JpYmVGbikge1xuICAgICAgdGhpcy5hbmd1bGFyUENvbm5lY3REYXRhLnVuc3Vic2NyaWJlRm4oKTtcbiAgICB9XG4gIH1cblxuICAvLyBDYWxsYmFjayBwYXNzZWQgd2hlbiBzdWJzY3JpYmluZyB0byBzdG9yZSBjaGFuZ2VcbiAgb25TdGF0ZUNoYW5nZSgpIHtcbiAgICB0aGlzLmNoZWNrQW5kVXBkYXRlKCk7XG4gIH1cblxuICBjaGVja0FuZFVwZGF0ZSgpIHtcbiAgICAvLyBTaG91bGQgYWx3YXlzIGNoZWNrIHRoZSBicmlkZ2UgdG8gc2VlIGlmIHRoZSBjb21wb25lbnQgc2hvdWxkXG4gICAgLy8gdXBkYXRlIGl0c2VsZiAocmUtcmVuZGVyKVxuICAgIGNvbnN0IGJVcGRhdGVTZWxmID0gdGhpcy5hbmd1bGFyUENvbm5lY3Quc2hvdWxkQ29tcG9uZW50VXBkYXRlKHRoaXMpO1xuXG4gICAgLy8gT05MWSBjYWxsIHVwZGF0ZVNlbGYgd2hlbiB0aGUgY29tcG9uZW50IHNob3VsZCB1cGRhdGVcbiAgICBpZiAoYlVwZGF0ZVNlbGYpIHtcbiAgICAgIHRoaXMudXBkYXRlU2VsZigpO1xuICAgIH1cbiAgfVxuXG4gIC8vIHVwZGF0ZVNlbGZcbiAgdXBkYXRlU2VsZigpOiB2b2lkIHtcbiAgICAvLyBtb3ZlZCB0aGlzIGZyb20gbmdPbkluaXQoKSBhbmQgY2FsbCB0aGlzIGZyb20gdGhlcmUgaW5zdGVhZC4uLlxuICAgIHRoaXMuY29uZmlnUHJvcHMkID0gdGhpcy5wQ29ubiQucmVzb2x2ZUNvbmZpZ1Byb3BzKHRoaXMucENvbm4kLmdldENvbmZpZ1Byb3BzKCkpIGFzIENoZWNrYm94UHJvcHM7XG5cbiAgICB0aGlzLnRlc3RJZCA9IHRoaXMuY29uZmlnUHJvcHMkLnRlc3RJZDtcbiAgICB0aGlzLmRpc3BsYXlNb2RlJCA9IHRoaXMuY29uZmlnUHJvcHMkLmRpc3BsYXlNb2RlO1xuICAgIHRoaXMubGFiZWwkID0gdGhpcy5jb25maWdQcm9wcyQubGFiZWw7XG4gICAgaWYgKHRoaXMubGFiZWwkICE9ICcnKSB7XG4gICAgICB0aGlzLnNob3dMYWJlbCQgPSB0cnVlO1xuICAgIH1cblxuICAgIHRoaXMuYWN0aW9uc0FwaSA9IHRoaXMucENvbm4kLmdldEFjdGlvbnNBcGkoKTtcbiAgICB0aGlzLnByb3BOYW1lID0gKHRoaXMucENvbm4kLmdldFN0YXRlUHJvcHMoKSBhcyBhbnkpLnZhbHVlO1xuXG4gICAgLy8gbXVsdGkgY2FzZVxuICAgIHRoaXMuc2VsZWN0aW9uTW9kZSA9IHRoaXMuY29uZmlnUHJvcHMkLnNlbGVjdGlvbk1vZGU7XG4gICAgaWYgKHRoaXMuc2VsZWN0aW9uTW9kZSA9PT0gJ211bHRpJykge1xuICAgICAgdGhpcy5yZWZlcmVuY2VMaXN0ID0gdGhpcy5jb25maWdQcm9wcyQucmVmZXJlbmNlTGlzdDtcbiAgICAgIHRoaXMuc2VsZWN0aW9uTGlzdCA9IHRoaXMuY29uZmlnUHJvcHMkLnNlbGVjdGlvbkxpc3Q7XG4gICAgICB0aGlzLnNlbGVjdGVkdmFsdWVzID0gdGhpcy5jb25maWdQcm9wcyQucmVhZG9ubHlDb250ZXh0TGlzdDtcbiAgICAgIHRoaXMucHJpbWFyeUZpZWxkID0gdGhpcy5jb25maWdQcm9wcyQucHJpbWFyeUZpZWxkO1xuXG4gICAgICB0aGlzLmRhdGFzb3VyY2UgPSB0aGlzLmNvbmZpZ1Byb3BzJC5kYXRhc291cmNlO1xuICAgICAgdGhpcy5zZWxlY3Rpb25LZXkgPSB0aGlzLmNvbmZpZ1Byb3BzJC5zZWxlY3Rpb25LZXk7XG4gICAgICBjb25zdCBsaXN0U291cmNlSXRlbXMgPSB0aGlzLmRhdGFzb3VyY2U/LnNvdXJjZSA/PyBbXTtcbiAgICAgIGNvbnN0IGRhdGFGaWVsZDogYW55ID0gdGhpcy5zZWxlY3Rpb25LZXk/LnNwbGl0Py4oJy4nKVsxXTtcbiAgICAgIGNvbnN0IGxpc3RUb0Rpc3BsYXk6IGFueVtdID0gW107XG4gICAgICBsaXN0U291cmNlSXRlbXMuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgICAgZWxlbWVudC5zZWxlY3RlZCA9IHRoaXMuc2VsZWN0ZWR2YWx1ZXM/LnNvbWU/LihkYXRhID0+IGRhdGFbZGF0YUZpZWxkXSA9PT0gZWxlbWVudC5rZXkpO1xuICAgICAgICBsaXN0VG9EaXNwbGF5LnB1c2goZWxlbWVudCk7XG4gICAgICB9KTtcbiAgICAgIHRoaXMubGlzdE9mQ2hlY2tib3hlcyA9IGxpc3RUb0Rpc3BsYXk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLmNvbmZpZ1Byb3BzJC52YWx1ZSAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy52YWx1ZSQgPSB0aGlzLmNvbmZpZ1Byb3BzJC52YWx1ZTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5jYXB0aW9uJCA9IHRoaXMuY29uZmlnUHJvcHMkLmNhcHRpb247XG4gICAgICB0aGlzLmhlbHBlclRleHQgPSB0aGlzLmNvbmZpZ1Byb3BzJC5oZWxwZXJUZXh0O1xuICAgICAgdGhpcy50cnVlTGFiZWwkID0gdGhpcy5jb25maWdQcm9wcyQudHJ1ZUxhYmVsO1xuICAgICAgdGhpcy5mYWxzZUxhYmVsJCA9IHRoaXMuY29uZmlnUHJvcHMkLmZhbHNlTGFiZWw7XG5cbiAgICAgIC8vIHRpbWVvdXQgYW5kIGRldGVjdENoYW5nZXMgdG8gYXZvaWQgRXhwcmVzc2lvbkNoYW5nZWRBZnRlckl0SGFzQmVlbkNoZWNrZWRFcnJvclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmNvbmZpZ1Byb3BzJC5yZXF1aXJlZCAhPSBudWxsKSB7XG4gICAgICAgICAgdGhpcy5iUmVxdWlyZWQkID0gdGhpcy51dGlscy5nZXRCb29sZWFuVmFsdWUodGhpcy5jb25maWdQcm9wcyQucmVxdWlyZWQpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfSk7XG5cbiAgICAgIGlmICh0aGlzLmNvbmZpZ1Byb3BzJC52aXNpYmlsaXR5ICE9IG51bGwpIHtcbiAgICAgICAgdGhpcy5iVmlzaWJsZSQgPSB0aGlzLnV0aWxzLmdldEJvb2xlYW5WYWx1ZSh0aGlzLmNvbmZpZ1Byb3BzJC52aXNpYmlsaXR5KTtcbiAgICAgIH1cblxuICAgICAgLy8gZGlzYWJsZWRcbiAgICAgIGlmICh0aGlzLmNvbmZpZ1Byb3BzJC5kaXNhYmxlZCAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5iRGlzYWJsZWQkID0gdGhpcy51dGlscy5nZXRCb29sZWFuVmFsdWUodGhpcy5jb25maWdQcm9wcyQuZGlzYWJsZWQpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5jb25maWdQcm9wcyQucmVhZE9ubHkgIT0gbnVsbCkge1xuICAgICAgICB0aGlzLmJSZWFkb25seSQgPSB0aGlzLnV0aWxzLmdldEJvb2xlYW5WYWx1ZSh0aGlzLmNvbmZpZ1Byb3BzJC5yZWFkT25seSk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmJEaXNhYmxlZCQgfHwgdGhpcy5iUmVhZG9ubHkkKSB7XG4gICAgICAgIHRoaXMuZmllbGRDb250cm9sLmRpc2FibGUoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZmllbGRDb250cm9sLmVuYWJsZSgpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmNvbXBvbmVudFJlZmVyZW5jZSA9ICh0aGlzLnBDb25uJC5nZXRTdGF0ZVByb3BzKCkgYXMgYW55KS52YWx1ZTtcblxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHNvbmFyanMvbm8tcmVkdW5kYW50LWJvb2xlYW5cbiAgICAgIGlmICh0aGlzLnZhbHVlJCA9PT0gJ3RydWUnIHx8IHRoaXMudmFsdWUkID09IHRydWUpIHtcbiAgICAgICAgdGhpcy5pc0NoZWNrZWQkID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuaXNDaGVja2VkJCA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgLy8gdHJpZ2dlciBkaXNwbGF5IG9mIGVycm9yIG1lc3NhZ2Ugd2l0aCBmaWVsZCBjb250cm9sXG4gICAgICBpZiAodGhpcy5hbmd1bGFyUENvbm5lY3REYXRhLnZhbGlkYXRlTWVzc2FnZSAhPSBudWxsICYmIHRoaXMuYW5ndWxhclBDb25uZWN0RGF0YS52YWxpZGF0ZU1lc3NhZ2UgIT0gJycpIHtcbiAgICAgICAgY29uc3QgdGltZXIgPSBpbnRlcnZhbCgxMDApLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5maWVsZENvbnRyb2wuc2V0RXJyb3JzKHsgbWVzc2FnZTogdHJ1ZSB9KTtcbiAgICAgICAgICB0aGlzLmZpZWxkQ29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XG5cbiAgICAgICAgICB0aW1lci51bnN1YnNjcmliZSgpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmaWVsZE9uQ2hhbmdlKGV2ZW50OiBhbnkpIHtcbiAgICBldmVudC52YWx1ZSA9IGV2ZW50LmNoZWNrZWQ7XG5cbiAgICBoYW5kbGVFdmVudCh0aGlzLmFjdGlvbnNBcGksICdjaGFuZ2VOYmx1cicsIHRoaXMucHJvcE5hbWUsIGV2ZW50LmNoZWNrZWQpO1xuICB9XG5cbiAgZmllbGRPbkJsdXIoZXZlbnQ6IGFueSkge1xuICAgIGlmICh0aGlzLnNlbGVjdGlvbk1vZGUgPT09ICdtdWx0aScpIHtcbiAgICAgIHRoaXMucENvbm4kLmdldFZhbGlkYXRpb25BcGkoKS52YWxpZGF0ZSh0aGlzLnNlbGVjdGVkdmFsdWVzLCB0aGlzLnNlbGVjdGlvbkxpc3QpO1xuICAgIH0gZWxzZSB7XG4gICAgICBldmVudC52YWx1ZSA9IGV2ZW50LmNoZWNrZWQ7XG4gICAgICB0aGlzLmFuZ3VsYXJQQ29ubmVjdERhdGEuYWN0aW9ucz8ub25CbHVyKHRoaXMsIGV2ZW50KTtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVDaGFuZ2VNdWx0aU1vZGUoZXZlbnQsIGVsZW1lbnQpIHtcbiAgICBpZiAoIWVsZW1lbnQuc2VsZWN0ZWQpIHtcbiAgICAgIGluc2VydEluc3RydWN0aW9uKHRoaXMucENvbm4kLCB0aGlzLnNlbGVjdGlvbkxpc3QsIHRoaXMuc2VsZWN0aW9uS2V5LCB0aGlzLnByaW1hcnlGaWVsZCwge1xuICAgICAgICBpZDogZWxlbWVudC5rZXksXG4gICAgICAgIHByaW1hcnk6IGVsZW1lbnQudGV4dCA/PyBlbGVtZW50LnZhbHVlXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgZGVsZXRlSW5zdHJ1Y3Rpb24odGhpcy5wQ29ubiQsIHRoaXMuc2VsZWN0aW9uTGlzdCwgdGhpcy5zZWxlY3Rpb25LZXksIHtcbiAgICAgICAgaWQ6IGVsZW1lbnQua2V5LFxuICAgICAgICBwcmltYXJ5OiBlbGVtZW50LnRleHQgPz8gZWxlbWVudC52YWx1ZVxuICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMucENvbm4kLmNsZWFyRXJyb3JNZXNzYWdlcyh7XG4gICAgICBwcm9wZXJ0eTogdGhpcy5zZWxlY3Rpb25MaXN0LFxuICAgICAgY2F0ZWdvcnk6ICcnLFxuICAgICAgY29udGV4dDogJydcbiAgICB9KTtcbiAgfVxuXG4gIGdldEVycm9yTWVzc2FnZSgpIHtcbiAgICBsZXQgZXJyTWVzc2FnZSA9ICcnO1xuXG4gICAgLy8gbG9vayBmb3IgdmFsaWRhdGlvbiBtZXNzYWdlcyBmb3IganNvbiwgcHJlLWRlZmluZWQgb3IganVzdCBhbiBlcnJvciBwdXNoZWQgZnJvbSB3b3JraXRlbSAoNDAwKVxuICAgIGlmICh0aGlzLmZpZWxkQ29udHJvbC5oYXNFcnJvcignbWVzc2FnZScpKSB7XG4gICAgICBlcnJNZXNzYWdlID0gdGhpcy5hbmd1bGFyUENvbm5lY3REYXRhLnZhbGlkYXRlTWVzc2FnZSA/PyAnJztcbiAgICAgIHJldHVybiBlcnJNZXNzYWdlO1xuICAgIH1cbiAgICBpZiAodGhpcy5maWVsZENvbnRyb2wuaGFzRXJyb3IoJ3JlcXVpcmVkJykpIHtcbiAgICAgIGVyck1lc3NhZ2UgPSAnWW91IG11c3QgZW50ZXIgYSB2YWx1ZSc7XG4gICAgfSBlbHNlIGlmICh0aGlzLmZpZWxkQ29udHJvbC5lcnJvcnMpIHtcbiAgICAgIGVyck1lc3NhZ2UgPSB0aGlzLmZpZWxkQ29udHJvbC5lcnJvcnMudG9TdHJpbmcoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZXJyTWVzc2FnZTtcbiAgfVxufVxuIiwiPGRpdiAqbmdJZj1cImRpc3BsYXlNb2RlJDsgZWxzZSBub0Rpc3BsYXlNb2RlXCI+XG4gIDxjb21wb25lbnQtbWFwcGVyXG4gICAgKm5nSWY9XCJiVmlzaWJsZSQgIT09IGZhbHNlXCJcbiAgICBuYW1lPVwiRmllbGRWYWx1ZUxpc3RcIlxuICAgIFtwcm9wc109XCJ7IGxhYmVsJDogY2FwdGlvbiQsIHZhbHVlJDogdmFsdWUkID8gdHJ1ZUxhYmVsJCA6IGZhbHNlTGFiZWwkLCBkaXNwbGF5TW9kZSQgfVwiXG4gID48L2NvbXBvbmVudC1tYXBwZXI+XG48L2Rpdj5cbjxuZy10ZW1wbGF0ZSAjbm9EaXNwbGF5TW9kZT5cbiAgPGRpdiAqbmdJZj1cImJIYXNGb3JtJDsgZWxzZSBub0VkaXRcIj5cbiAgICA8ZGl2IFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwJFwiICpuZ0lmPVwiYlZpc2libGUkXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibWF0LWZvcm0tZmllbGQtaW5maXhcIiAqbmdJZj1cInNob3dMYWJlbCRcIj5cbiAgICAgICAgPHNwYW4+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwibWF0LWZvcm0tZmllbGQtbGFiZWwgcHNkay1sYWJlbC1yZWFkb25seVwiPnt7IGxhYmVsJCB9fTwvbGFiZWw+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cInNlbGVjdGlvbk1vZGUgPT09ICdtdWx0aSc7IGVsc2Ugc2luZ2xlXCI+XG4gICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBpdGVtIG9mIGxpc3RPZkNoZWNrYm94ZXNcIiAoY2xpY2spPVwiaGFuZGxlQ2hhbmdlTXVsdGlNb2RlKCRldmVudCwgaXRlbSlcIj5cbiAgICAgICAgICA8bWF0LWNoZWNrYm94XG4gICAgICAgICAgICBbbGFiZWxQb3NpdGlvbl09XCInYWZ0ZXInXCJcbiAgICAgICAgICAgIFtjaGVja2VkXT1cIml0ZW0uc2VsZWN0ZWRcIlxuICAgICAgICAgICAgW2F0dHIuZGF0YS10ZXN0LWlkXT1cInRlc3RJZCArICc6JyArIGl0ZW0udmFsdWVcIlxuICAgICAgICAgICAgKGNoYW5nZSk9XCJoYW5kbGVDaGFuZ2VNdWx0aU1vZGUoJGV2ZW50LCBpdGVtKVwiXG4gICAgICAgICAgICAoYmx1cik9XCJmaWVsZE9uQmx1cigkZXZlbnQpXCJcbiAgICAgICAgICAgID57eyBpdGVtLnRleHQgPz8gaXRlbS52YWx1ZSB9fVxuICAgICAgICAgIDwvbWF0LWNoZWNrYm94PlxuICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjc2luZ2xlPlxuICAgICAgICA8bWF0LWNoZWNrYm94XG4gICAgICAgICAgW2xhYmVsUG9zaXRpb25dPVwiJ2FmdGVyJ1wiXG4gICAgICAgICAgW2NoZWNrZWRdPVwiaXNDaGVja2VkJFwiXG4gICAgICAgICAgW2F0dHIuZGF0YS10ZXN0LWlkXT1cInRlc3RJZFwiXG4gICAgICAgICAgW2Zvcm1Db250cm9sXT1cImZpZWxkQ29udHJvbFwiXG4gICAgICAgICAgKGNoYW5nZSk9XCJmaWVsZE9uQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgIChibHVyKT1cImZpZWxkT25CbHVyKCRldmVudClcIlxuICAgICAgICAgID57eyBjYXB0aW9uJCB9fTwvbWF0LWNoZWNrYm94XG4gICAgICAgID5cbiAgICAgICAgPHAgKm5nSWY9XCJoZWxwZXJUZXh0XCI+e3sgaGVscGVyVGV4dCB9fTwvcD5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8bWF0LWVycm9yICpuZ0lmPVwiZmllbGRDb250cm9sLmludmFsaWRcIj57eyBnZXRFcnJvck1lc3NhZ2UoKSB9fTwvbWF0LWVycm9yPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI25vRWRpdD5cbiAgPGNvbXBvbmVudC1tYXBwZXIgKm5nSWY9XCJiVmlzaWJsZSQgIT09IGZhbHNlXCIgbmFtZT1cIlRleHRcIiBbcHJvcHNdPVwieyBwQ29ubiQsIGZvcm1hdEFzJDogJ3RleHQnIH1cIj48L2NvbXBvbmVudC1tYXBwZXI+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
225
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2stYm94LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItc2RrLWNvbXBvbmVudHMvc3JjL2xpYi9fY29tcG9uZW50cy9maWVsZC9jaGVjay1ib3gvY2hlY2stYm94LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItc2RrLWNvbXBvbmVudHMvc3JjL2xpYi9fY29tcG9uZW50cy9maWVsZC9jaGVjay1ib3gvY2hlY2stYm94LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFxQixVQUFVLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDbkcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQWEsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUdoQyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw4REFBOEQsQ0FBQztBQUV4RyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsaUJBQWlCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNuSCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sOEJBQThCLENBQUM7Ozs7Ozs7OztBQXlCM0QsTUFBTSxPQUFPLGlCQUFpQjtJQXVDNUIsWUFDVSxlQUF1QyxFQUN2QyxLQUF3QixFQUN4QixLQUFZO1FBRlosb0JBQWUs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dCwgT25Jbml0LCBJbnB1dCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIGZvcndhcmRSZWYsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRDaGVja2JveE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoZWNrYm94JztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgTWF0T3B0aW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQgeyBpbnRlcnZhbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQW5ndWxhclBDb25uZWN0RGF0YSwgQW5ndWxhclBDb25uZWN0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL19icmlkZ2UvYW5ndWxhci1wY29ubmVjdCc7XG5pbXBvcnQgeyBVdGlscyB9IGZyb20gJy4uLy4uLy4uL19oZWxwZXJzL3V0aWxzJztcbmltcG9ydCB7IENvbXBvbmVudE1hcHBlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL19icmlkZ2UvY29tcG9uZW50LW1hcHBlci9jb21wb25lbnQtbWFwcGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQQ29ubkZpZWxkUHJvcHMgfSBmcm9tICcuLi8uLi8uLi9fdHlwZXMvUENvbm5Qcm9wcy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgZGVsZXRlSW5zdHJ1Y3Rpb24sIGluc2VydEluc3RydWN0aW9uLCB1cGRhdGVOZXdJbnN0cnVjdGlvbnMgfSBmcm9tICcuLi8uLi8uLi9faGVscGVycy9pbnN0cnVjdGlvbnMtdXRpbHMnO1xuaW1wb3J0IHsgaGFuZGxlRXZlbnQgfSBmcm9tICcuLi8uLi8uLi9faGVscGVycy9ldmVudC11dGlsJztcblxuaW50ZXJmYWNlIENoZWNrYm94UHJvcHMgZXh0ZW5kcyBPbWl0PFBDb25uRmllbGRQcm9wcywgJ3ZhbHVlJz4ge1xuICAvLyBJZiBhbnksIGVudGVyIGFkZGl0aW9uYWwgcHJvcHMgdGhhdCBvbmx5IGV4aXN0IG9uIENoZWNrYm94IGhlcmVcbiAgLy8gRXZlcnl0aGluZyBmcm9tIFBDb25uRmllbGRQcm9wcyBleGNlcHQgdmFsdWUgYW5kIGNoYW5nZSB0eXBlIG9mIHZhbHVlIHRvIGJvb2xlYW5cbiAgdmFsdWU6IGJvb2xlYW47XG4gIGNhcHRpb24/OiBzdHJpbmc7XG4gIHRydWVMYWJlbD86IHN0cmluZztcbiAgZmFsc2VMYWJlbD86IHN0cmluZztcbiAgc2VsZWN0aW9uTW9kZT86IHN0cmluZztcbiAgZGF0YXNvdXJjZT86IGFueTtcbiAgc2VsZWN0aW9uS2V5Pzogc3RyaW5nO1xuICBzZWxlY3Rpb25MaXN0PzogYW55O1xuICBwcmltYXJ5RmllbGQ6IHN0cmluZztcbiAgcmVhZG9ubHlDb250ZXh0TGlzdDogYW55O1xuICByZWZlcmVuY2VMaXN0OiBzdHJpbmc7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1jaGVjay1ib3gnLFxuICB0ZW1wbGF0ZVVybDogJy4vY2hlY2stYm94LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2hlY2stYm94LmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIE1hdENoZWNrYm94TW9kdWxlLCBNYXRGb3JtRmllbGRNb2R1bGUsIE1hdE9wdGlvbk1vZHVsZSwgZm9yd2FyZFJlZigoKSA9PiBDb21wb25lbnRNYXBwZXJDb21wb25lbnQpXVxufSlcbmV4cG9ydCBjbGFzcyBDaGVja0JveENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgcENvbm4kOiB0eXBlb2YgUENvbm5lY3Q7XG4gIEBJbnB1dCgpIGZvcm1Hcm91cCQ6IEZvcm1Hcm91cDtcblxuICAvLyBVc2VkIHdpdGggQW5ndWxhclBDb25uZWN0XG4gIGFuZ3VsYXJQQ29ubmVjdERhdGE6IEFuZ3VsYXJQQ29ubmVjdERhdGEgPSB7fTtcbiAgY29uZmlnUHJvcHMkOiBDaGVja2JveFByb3BzO1xuXG4gIGxhYmVsJCA9ICcnO1xuICB2YWx1ZSQ6IGFueSA9ICcnO1xuICBjYXB0aW9uJD86IHN0cmluZyA9ICcnO1xuICB0ZXN0SWQgPSAnJztcbiAgc2hvd0xhYmVsJCA9IGZhbHNlO1xuICBpc0NoZWNrZWQkID0gZmFsc2U7XG4gIGJSZXF1aXJlZCQgPSBmYWxzZTtcbiAgYlJlYWRvbmx5JCA9IGZhbHNlO1xuICBiRGlzYWJsZWQkID0gZmFsc2U7XG4gIGJWaXNpYmxlJCA9IHRydWU7XG4gIGRpc3BsYXlNb2RlJD86IHN0cmluZyA9ICcnO1xuICBjb250cm9sTmFtZSQ6IHN0cmluZztcbiAgYkhhc0Zvcm0kID0gdHJ1ZTtcbiAgY29tcG9uZW50UmVmZXJlbmNlID0gJyc7XG4gIGhlbHBlclRleHQ6IHN0cmluZztcbiAgdHJ1ZUxhYmVsJD86IHN0cmluZztcbiAgZmFsc2VMYWJlbCQ/OiBzdHJpbmc7XG5cbiAgc2VsZWN0aW9uTW9kZT86IHN0cmluZztcbiAgZGF0YXNvdXJjZT86IGFueTtcbiAgc2VsZWN0aW9uS2V5Pzogc3RyaW5nO1xuICBzZWxlY3Rpb25MaXN0PzogYW55O1xuICBwcmltYXJ5RmllbGQ6IHN0cmluZztcbiAgc2VsZWN0ZWR2YWx1ZXM6IGFueTtcbiAgcmVmZXJlbmNlTGlzdDogc3RyaW5nO1xuICBsaXN0T2ZDaGVja2JveGVzOiBhbnlbXSA9IFtdO1xuICBhY3Rpb25zQXBpOiBPYmplY3Q7XG4gIHByb3BOYW1lOiBzdHJpbmc7XG5cbiAgZmllbGRDb250cm9sID0gbmV3IEZvcm1Db250cm9sKCcnLCBudWxsKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGFuZ3VsYXJQQ29ubmVjdDogQW5ndWxhclBDb25uZWN0U2VydmljZSxcbiAgICBwcml2YXRlIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIHV0aWxzOiBVdGlsc1xuICApIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgLy8gRmlyc3QgdGhpbmcgaW4gaW5pdGlhbGl6YXRpb24gaXMgcmVnaXN0ZXJpbmcgYW5kIHN1YnNjcmliaW5nIHRvIHRoZSBBbmd1bGFyUENvbm5lY3Qgc2VydmljZVxuICAgIHRoaXMuYW5ndWxhclBDb25uZWN0RGF0YSA9IHRoaXMuYW5ndWxhclBDb25uZWN0LnJlZ2lzdGVyQW5kU3Vic2NyaWJlQ29tcG9uZW50KHRoaXMsIHRoaXMub25TdGF0ZUNoYW5nZSk7XG4gICAgdGhpcy5jb250cm9sTmFtZSQgPSB0aGlzLmFuZ3VsYXJQQ29ubmVjdC5nZXRDb21wb25lbnRJRCh0aGlzKTtcblxuICAgIC8vIFRoZW4sIGNvbnRpbnVlIG9uIHdpdGggb3RoZXIgaW5pdGlhbGl6YXRpb25cblxuICAgIC8vIGNhbGwgdXBkYXRlU2VsZiB3aGVuIGluaXRpYWxpemluZ1xuICAgIC8vIHRoaXMudXBkYXRlU2VsZigpO1xuICAgIHRoaXMuY2hlY2tBbmRVcGRhdGUoKTtcblxuICAgIGlmICh0aGlzLnNlbGVjdGlvbk1vZGUgPT09ICdtdWx0aScgJiYgdGhpcy5yZWZlcmVuY2VMaXN0Py5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnBDb25uJC5zZXRSZWZlcmVuY2VMaXN0KHRoaXMuc2VsZWN0aW9uTGlzdCk7XG4gICAgICB1cGRhdGVOZXdJbnN0cnVjdGlvbnModGhpcy5wQ29ubiQsIHRoaXMuc2VsZWN0aW9uTGlzdCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZm9ybUdyb3VwJCkge1xuICAgICAgLy8gYWRkIGNvbnRyb2wgdG8gZm9ybUdyb3VwXG4gICAgICB0aGlzLmZvcm1Hcm91cCQuYWRkQ29udHJvbCh0aGlzLmNvbnRyb2xOYW1lJCwgdGhpcy5maWVsZENvbnRyb2wpO1xuICAgICAgdGhpcy5maWVsZENvbnRyb2wuc2V0VmFsdWUodGhpcy52YWx1ZSQpO1xuICAgICAgdGhpcy5iSGFzRm9ybSQgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmJSZWFkb25seSQgPSB0cnVlO1xuICAgICAgdGhpcy5iSGFzRm9ybSQgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5mb3JtR3JvdXAkKSB7XG4gICAgICB0aGlzLmZvcm1Hcm91cCQucmVtb3ZlQ29udHJvbCh0aGlzLmNvbnRyb2xOYW1lJCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuYW5ndWxhclBDb25uZWN0RGF0YS51bnN1YnNjcmliZUZuKSB7XG4gICAgICB0aGlzLmFuZ3VsYXJQQ29ubmVjdERhdGEudW5zdWJzY3JpYmVGbigpO1xuICAgIH1cbiAgfVxuXG4gIC8vIENhbGxiYWNrIHBhc3NlZCB3aGVuIHN1YnNjcmliaW5nIHRvIHN0b3JlIGNoYW5nZVxuICBvblN0YXRlQ2hhbmdlKCkge1xuICAgIHRoaXMuY2hlY2tBbmRVcGRhdGUoKTtcbiAgfVxuXG4gIGNoZWNrQW5kVXBkYXRlKCkge1xuICAgIC8vIFNob3VsZCBhbHdheXMgY2hlY2sgdGhlIGJyaWRnZSB0byBzZWUgaWYgdGhlIGNvbXBvbmVudCBzaG91bGRcbiAgICAvLyB1cGRhdGUgaXRzZWxmIChyZS1yZW5kZXIpXG4gICAgY29uc3QgYlVwZGF0ZVNlbGYgPSB0aGlzLmFuZ3VsYXJQQ29ubmVjdC5zaG91bGRDb21wb25lbnRVcGRhdGUodGhpcyk7XG5cbiAgICAvLyBPTkxZIGNhbGwgdXBkYXRlU2VsZiB3aGVuIHRoZSBjb21wb25lbnQgc2hvdWxkIHVwZGF0ZVxuICAgIGlmIChiVXBkYXRlU2VsZikge1xuICAgICAgdGhpcy51cGRhdGVTZWxmKCk7XG4gICAgfVxuICB9XG5cbiAgLy8gdXBkYXRlU2VsZlxuICB1cGRhdGVTZWxmKCk6IHZvaWQge1xuICAgIC8vIG1vdmVkIHRoaXMgZnJvbSBuZ09uSW5pdCgpIGFuZCBjYWxsIHRoaXMgZnJvbSB0aGVyZSBpbnN0ZWFkLi4uXG4gICAgdGhpcy5jb25maWdQcm9wcyQgPSB0aGlzLnBDb25uJC5yZXNvbHZlQ29uZmlnUHJvcHModGhpcy5wQ29ubiQuZ2V0Q29uZmlnUHJvcHMoKSkgYXMgQ2hlY2tib3hQcm9wcztcblxuICAgIHRoaXMudGVzdElkID0gdGhpcy5jb25maWdQcm9wcyQudGVzdElkO1xuICAgIHRoaXMuZGlzcGxheU1vZGUkID0gdGhpcy5jb25maWdQcm9wcyQuZGlzcGxheU1vZGU7XG4gICAgdGhpcy5sYWJlbCQgPSB0aGlzLmNvbmZpZ1Byb3BzJC5sYWJlbDtcbiAgICBpZiAodGhpcy5sYWJlbCQgIT0gJycpIHtcbiAgICAgIHRoaXMuc2hvd0xhYmVsJCA9IHRydWU7XG4gICAgfVxuXG4gICAgdGhpcy5hY3Rpb25zQXBpID0gdGhpcy5wQ29ubiQuZ2V0QWN0aW9uc0FwaSgpO1xuICAgIHRoaXMucHJvcE5hbWUgPSB0aGlzLnBDb25uJC5nZXRTdGF0ZVByb3BzKCkudmFsdWU7XG5cbiAgICAvLyBtdWx0aSBjYXNlXG4gICAgdGhpcy5zZWxlY3Rpb25Nb2RlID0gdGhpcy5jb25maWdQcm9wcyQuc2VsZWN0aW9uTW9kZTtcbiAgICBpZiAodGhpcy5zZWxlY3Rpb25Nb2RlID09PSAnbXVsdGknKSB7XG4gICAgICB0aGlzLnJlZmVyZW5jZUxpc3QgPSB0aGlzLmNvbmZpZ1Byb3BzJC5yZWZlcmVuY2VMaXN0O1xuICAgICAgdGhpcy5zZWxlY3Rpb25MaXN0ID0gdGhpcy5jb25maWdQcm9wcyQuc2VsZWN0aW9uTGlzdDtcbiAgICAgIHRoaXMuc2VsZWN0ZWR2YWx1ZXMgPSB0aGlzLmNvbmZpZ1Byb3BzJC5yZWFkb25seUNvbnRleHRMaXN0O1xuICAgICAgdGhpcy5wcmltYXJ5RmllbGQgPSB0aGlzLmNvbmZpZ1Byb3BzJC5wcmltYXJ5RmllbGQ7XG5cbiAgICAgIHRoaXMuZGF0YXNvdXJjZSA9IHRoaXMuY29uZmlnUHJvcHMkLmRhdGFzb3VyY2U7XG4gICAgICB0aGlzLnNlbGVjdGlvbktleSA9IHRoaXMuY29uZmlnUHJvcHMkLnNlbGVjdGlvbktleTtcbiAgICAgIGNvbnN0IGxpc3RTb3VyY2VJdGVtcyA9IHRoaXMuZGF0YXNvdXJjZT8uc291cmNlID8/IFtdO1xuICAgICAgY29uc3QgZGF0YUZpZWxkID0gdGhpcy5zZWxlY3Rpb25LZXk/LnNwbGl0Py4oJy4nKVsxXSA/PyAnJztcbiAgICAgIGNvbnN0IGxpc3RUb0Rpc3BsYXk6IGFueVtdID0gW107XG4gICAgICBsaXN0U291cmNlSXRlbXMuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgICAgZWxlbWVudC5zZWxlY3RlZCA9IHRoaXMuc2VsZWN0ZWR2YWx1ZXM/LnNvbWU/LihkYXRhID0+IGRhdGFbZGF0YUZpZWxkXSA9PT0gZWxlbWVudC5rZXkpO1xuICAgICAgICBsaXN0VG9EaXNwbGF5LnB1c2goZWxlbWVudCk7XG4gICAgICB9KTtcbiAgICAgIHRoaXMubGlzdE9mQ2hlY2tib3hlcyA9IGxpc3RUb0Rpc3BsYXk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLmNvbmZpZ1Byb3BzJC52YWx1ZSAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy52YWx1ZSQgPSB0aGlzLmNvbmZpZ1Byb3BzJC52YWx1ZTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5jYXB0aW9uJCA9IHRoaXMuY29uZmlnUHJvcHMkLmNhcHRpb247XG4gICAgICB0aGlzLmhlbHBlclRleHQgPSB0aGlzLmNvbmZpZ1Byb3BzJC5oZWxwZXJUZXh0O1xuICAgICAgdGhpcy50cnVlTGFiZWwkID0gdGhpcy5jb25maWdQcm9wcyQudHJ1ZUxhYmVsIHx8ICdZZXMnO1xuICAgICAgdGhpcy5mYWxzZUxhYmVsJCA9IHRoaXMuY29uZmlnUHJvcHMkLmZhbHNlTGFiZWwgfHwgJ05vJztcblxuICAgICAgLy8gdGltZW91dCBhbmQgZGV0ZWN0Q2hhbmdlcyB0byBhdm9pZCBFeHByZXNzaW9uQ2hhbmdlZEFmdGVySXRIYXNCZWVuQ2hlY2tlZEVycm9yXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuY29uZmlnUHJvcHMkLnJlcXVpcmVkICE9IG51bGwpIHtcbiAgICAgICAgICB0aGlzLmJSZXF1aXJlZCQgPSB0aGlzLnV0aWxzLmdldEJvb2xlYW5WYWx1ZSh0aGlzLmNvbmZpZ1Byb3BzJC5yZXF1aXJlZCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9KTtcblxuICAgICAgaWYgKHRoaXMuY29uZmlnUHJvcHMkLnZpc2liaWxpdHkgIT0gbnVsbCkge1xuICAgICAgICB0aGlzLmJWaXNpYmxlJCA9IHRoaXMudXRpbHMuZ2V0Qm9vbGVhblZhbHVlKHRoaXMuY29uZmlnUHJvcHMkLnZpc2liaWxpdHkpO1xuICAgICAgfVxuXG4gICAgICAvLyBkaXNhYmxlZFxuICAgICAgaWYgKHRoaXMuY29uZmlnUHJvcHMkLmRpc2FibGVkICE9IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLmJEaXNhYmxlZCQgPSB0aGlzLnV0aWxzLmdldEJvb2xlYW5WYWx1ZSh0aGlzLmNvbmZpZ1Byb3BzJC5kaXNhYmxlZCk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmNvbmZpZ1Byb3BzJC5yZWFkT25seSAhPSBudWxsKSB7XG4gICAgICAgIHRoaXMuYlJlYWRvbmx5JCA9IHRoaXMudXRpbHMuZ2V0Qm9vbGVhblZhbHVlKHRoaXMuY29uZmlnUHJvcHMkLnJlYWRPbmx5KTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuYkRpc2FibGVkJCB8fCB0aGlzLmJSZWFkb25seSQpIHtcbiAgICAgICAgdGhpcy5maWVsZENvbnRyb2wuZGlzYWJsZSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5maWVsZENvbnRyb2wuZW5hYmxlKCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuY29tcG9uZW50UmVmZXJlbmNlID0gdGhpcy5wQ29ubiQuZ2V0U3RhdGVQcm9wcygpLnZhbHVlO1xuXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc29uYXJqcy9uby1yZWR1bmRhbnQtYm9vbGVhblxuICAgICAgaWYgKHRoaXMudmFsdWUkID09PSAndHJ1ZScgfHwgdGhpcy52YWx1ZSQgPT0gdHJ1ZSkge1xuICAgICAgICB0aGlzLmlzQ2hlY2tlZCQgPSB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5pc0NoZWNrZWQkID0gZmFsc2U7XG4gICAgICB9XG4gICAgICAvLyB0cmlnZ2VyIGRpc3BsYXkgb2YgZXJyb3IgbWVzc2FnZSB3aXRoIGZpZWxkIGNvbnRyb2xcbiAgICAgIGlmICh0aGlzLmFuZ3VsYXJQQ29ubmVjdERhdGEudmFsaWRhdGVNZXNzYWdlICE9IG51bGwgJiYgdGhpcy5hbmd1bGFyUENvbm5lY3REYXRhLnZhbGlkYXRlTWVzc2FnZSAhPSAnJykge1xuICAgICAgICBjb25zdCB0aW1lciA9IGludGVydmFsKDEwMCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmZpZWxkQ29udHJvbC5zZXRFcnJvcnMoeyBtZXNzYWdlOiB0cnVlIH0pO1xuICAgICAgICAgIHRoaXMuZmllbGRDb250cm9sLm1hcmtBc1RvdWNoZWQoKTtcblxuICAgICAgICAgIHRpbWVyLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZpZWxkT25DaGFuZ2UoZXZlbnQ6IGFueSkge1xuICAgIGV2ZW50LnZhbHVlID0gZXZlbnQuY2hlY2tlZDtcbiAgICBoYW5kbGVFdmVudCh0aGlzLmFjdGlvbnNBcGksICdjaGFuZ2VOYmx1cicsIHRoaXMucHJvcE5hbWUsIGV2ZW50LmNoZWNrZWQpO1xuICAgIHRoaXMucENvbm4kLmNsZWFyRXJyb3JNZXNzYWdlcyh7XG4gICAgICBwcm9wZXJ0eTogdGhpcy5wcm9wTmFtZVxuICAgIH0pO1xuICB9XG5cbiAgZmllbGRPbkJsdXIoZXZlbnQ6IGFueSkge1xuICAgIGlmICh0aGlzLnNlbGVjdGlvbk1vZGUgPT09ICdtdWx0aScpIHtcbiAgICAgIHRoaXMucENvbm4kLmdldFZhbGlkYXRpb25BcGkoKS52YWxpZGF0ZSh0aGlzLnNlbGVjdGVkdmFsdWVzLCB0aGlzLnNlbGVjdGlvbkxpc3QpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnBDb25uJC5nZXRWYWxpZGF0aW9uQXBpKCkudmFsaWRhdGUoZXZlbnQudGFyZ2V0LmNoZWNrZWQpO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZUNoYW5nZU11bHRpTW9kZShldmVudCwgZWxlbWVudCkge1xuICAgIGlmICghZWxlbWVudC5zZWxlY3RlZCkge1xuICAgICAgaW5zZXJ0SW5zdHJ1Y3Rpb24odGhpcy5wQ29ubiQsIHRoaXMuc2VsZWN0aW9uTGlzdCwgdGhpcy5zZWxlY3Rpb25LZXksIHRoaXMucHJpbWFyeUZpZWxkLCB7XG4gICAgICAgIGlkOiBlbGVtZW50LmtleSxcbiAgICAgICAgcHJpbWFyeTogZWxlbWVudC50ZXh0ID8/IGVsZW1lbnQudmFsdWVcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBkZWxldGVJbnN0cnVjdGlvbih0aGlzLnBDb25uJCwgdGhpcy5zZWxlY3Rpb25MaXN0LCB0aGlzLnNlbGVjdGlvbktleSwge1xuICAgICAgICBpZDogZWxlbWVudC5rZXksXG4gICAgICAgIHByaW1hcnk6IGVsZW1lbnQudGV4dCA/PyBlbGVtZW50LnZhbHVlXG4gICAgICB9KTtcbiAgICB9XG4gICAgdGhpcy5wQ29ubiQuY2xlYXJFcnJvck1lc3NhZ2VzKHtcbiAgICAgIHByb3BlcnR5OiB0aGlzLnNlbGVjdGlvbkxpc3QsXG4gICAgICBjYXRlZ29yeTogJycsXG4gICAgICBjb250ZXh0OiAnJ1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0RXJyb3JNZXNzYWdlKCkge1xuICAgIGxldCBlcnJNZXNzYWdlID0gJyc7XG5cbiAgICAvLyBsb29rIGZvciB2YWxpZGF0aW9uIG1lc3NhZ2VzIGZvciBqc29uLCBwcmUtZGVmaW5lZCBvciBqdXN0IGFuIGVycm9yIHB1c2hlZCBmcm9tIHdvcmtpdGVtICg0MDApXG4gICAgaWYgKHRoaXMuZmllbGRDb250cm9sLmhhc0Vycm9yKCdtZXNzYWdlJykpIHtcbiAgICAgIGVyck1lc3NhZ2UgPSB0aGlzLmFuZ3VsYXJQQ29ubmVjdERhdGEudmFsaWRhdGVNZXNzYWdlID8/ICcnO1xuICAgICAgcmV0dXJuIGVyck1lc3NhZ2U7XG4gICAgfVxuICAgIGlmICh0aGlzLmZpZWxkQ29udHJvbC5oYXNFcnJvcigncmVxdWlyZWQnKSkge1xuICAgICAgZXJyTWVzc2FnZSA9ICdZb3UgbXVzdCBlbnRlciBhIHZhbHVlJztcbiAgICB9IGVsc2UgaWYgKHRoaXMuZmllbGRDb250cm9sLmVycm9ycykge1xuICAgICAgZXJyTWVzc2FnZSA9IHRoaXMuZmllbGRDb250cm9sLmVycm9ycy50b1N0cmluZygpO1xuICAgIH1cblxuICAgIHJldHVybiBlcnJNZXNzYWdlO1xuICB9XG59XG4iLCI8ZGl2ICpuZ0lmPVwiZGlzcGxheU1vZGUkOyBlbHNlIG5vRGlzcGxheU1vZGVcIj5cbiAgPGNvbXBvbmVudC1tYXBwZXJcbiAgICAqbmdJZj1cImJWaXNpYmxlJCAhPT0gZmFsc2VcIlxuICAgIG5hbWU9XCJGaWVsZFZhbHVlTGlzdFwiXG4gICAgW3Byb3BzXT1cInsgbGFiZWwkOiBjYXB0aW9uJCwgdmFsdWUkOiB2YWx1ZSQgPyB0cnVlTGFiZWwkIDogZmFsc2VMYWJlbCQsIGRpc3BsYXlNb2RlJCB9XCJcbiAgPjwvY29tcG9uZW50LW1hcHBlcj5cbjwvZGl2PlxuPG5nLXRlbXBsYXRlICNub0Rpc3BsYXlNb2RlPlxuICA8ZGl2ICpuZ0lmPVwiYkhhc0Zvcm0kOyBlbHNlIG5vRWRpdFwiPlxuICAgIDxkaXYgW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXAkXCIgKm5nSWY9XCJiVmlzaWJsZSRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtYXQtZm9ybS1maWVsZC1pbmZpeFwiICpuZ0lmPVwic2hvd0xhYmVsJFwiPlxuICAgICAgICA8c3Bhbj5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJtYXQtZm9ybS1maWVsZC1sYWJlbCBwc2RrLWxhYmVsLXJlYWRvbmx5XCI+e3sgbGFiZWwkIH19PC9sYWJlbD5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2ICpuZ0lmPVwic2VsZWN0aW9uTW9kZSA9PT0gJ211bHRpJzsgZWxzZSBzaW5nbGVcIj5cbiAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGl0ZW0gb2YgbGlzdE9mQ2hlY2tib3hlc1wiIChjbGljayk9XCJoYW5kbGVDaGFuZ2VNdWx0aU1vZGUoJGV2ZW50LCBpdGVtKVwiPlxuICAgICAgICAgIDxtYXQtY2hlY2tib3hcbiAgICAgICAgICAgIFtsYWJlbFBvc2l0aW9uXT1cIidhZnRlcidcIlxuICAgICAgICAgICAgW2NoZWNrZWRdPVwiaXRlbS5zZWxlY3RlZFwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiYkRpc2FibGVkJCB8fCBiUmVhZG9ubHkkXCJcbiAgICAgICAgICAgIFtyZXF1aXJlZF09XCJiUmVxdWlyZWQkXCJcbiAgICAgICAgICAgIFthdHRyLmRhdGEtdGVzdC1pZF09XCJ0ZXN0SWQgKyAnOicgKyBpdGVtLnZhbHVlXCJcbiAgICAgICAgICAgIChjaGFuZ2UpPVwiaGFuZGxlQ2hhbmdlTXVsdGlNb2RlKCRldmVudCwgaXRlbSlcIlxuICAgICAgICAgICAgKGJsdXIpPVwiZmllbGRPbkJsdXIoJGV2ZW50KVwiXG4gICAgICAgICAgICA+e3sgaXRlbS50ZXh0ID8/IGl0ZW0udmFsdWUgfX1cbiAgICAgICAgICA8L21hdC1jaGVja2JveD5cbiAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgPC9kaXY+XG4gICAgICA8bmctdGVtcGxhdGUgI3NpbmdsZT5cbiAgICAgICAgPG1hdC1jaGVja2JveFxuICAgICAgICAgIFtsYWJlbFBvc2l0aW9uXT1cIidhZnRlcidcIlxuICAgICAgICAgIFtjaGVja2VkXT1cImlzQ2hlY2tlZCRcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJiRGlzYWJsZWQkIHx8IGJSZWFkb25seSRcIlxuICAgICAgICAgIFtyZXF1aXJlZF09XCJiUmVxdWlyZWQkXCJcbiAgICAgICAgICBbYXR0ci5kYXRhLXRlc3QtaWRdPVwidGVzdElkXCJcbiAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiZmllbGRDb250cm9sXCJcbiAgICAgICAgICAoY2hhbmdlKT1cImZpZWxkT25DaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgKGJsdXIpPVwiZmllbGRPbkJsdXIoJGV2ZW50KVwiXG4gICAgICAgICAgPnt7IGNhcHRpb24kIH19PC9tYXQtY2hlY2tib3hcbiAgICAgICAgPlxuICAgICAgICA8cCAqbmdJZj1cImhlbHBlclRleHRcIj57eyBoZWxwZXJUZXh0IH19PC9wPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJmaWVsZENvbnRyb2wuaW52YWxpZFwiPnt7IGdldEVycm9yTWVzc2FnZSgpIH19PC9tYXQtZXJyb3I+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjbm9FZGl0PlxuICA8Y29tcG9uZW50LW1hcHBlciAqbmdJZj1cImJWaXNpYmxlJCAhPT0gZmFsc2VcIiBuYW1lPVwiVGV4dFwiIFtwcm9wc109XCJ7IHBDb25uJCwgZm9ybWF0QXMkOiAndGV4dCcgfVwiPjwvY29tcG9uZW50LW1hcHBlcj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|