@acorex/platform 18.2.0 → 18.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/common/lib/app/application.types.d.ts +18 -2
- package/common/lib/data/data.types.d.ts +1 -1
- package/common/lib/data/entity-storage-service.d.ts +1 -2
- package/common/lib/layout/component-slot/component-slot-loader.service.d.ts +2 -2
- package/common/lib/layout/component-slot/component-slot.types.d.ts +2 -1
- package/common/lib/layout/menu/index.d.ts +0 -1
- package/common/lib/layout/menu/menu.provider.d.ts +12 -5
- package/common/lib/layout/menu/menu.service.d.ts +8 -2
- package/common/lib/layout/menu/menu.types.d.ts +9 -6
- package/common/lib/settings/index.d.ts +2 -1
- package/common/lib/settings/setting-definition.provider.d.ts +19 -0
- package/common/lib/settings/settings.types.d.ts +42 -0
- package/common/lib/utils/index.d.ts +0 -1
- package/esm2022/common/lib/app/application.types.mjs +13 -1
- package/esm2022/common/lib/common.module.mjs +14 -16
- package/esm2022/common/lib/data/data.types.mjs +1 -1
- package/esm2022/common/lib/data/dexie-storage.service.mjs +2 -2
- package/esm2022/common/lib/data/entity-storage-service.mjs +5 -5
- package/esm2022/common/lib/layout/component-slot/component-slot-loader.service.mjs +6 -5
- package/esm2022/common/lib/layout/component-slot/component-slot.types.mjs +1 -1
- package/esm2022/common/lib/layout/menu/index.mjs +1 -2
- package/esm2022/common/lib/layout/menu/menu.provider.mjs +105 -28
- package/esm2022/common/lib/layout/menu/menu.service.mjs +42 -10
- package/esm2022/common/lib/layout/menu/menu.types.mjs +1 -1
- package/esm2022/common/lib/layout/theme/store/admin-layout.reducers.mjs +2 -1
- package/esm2022/common/lib/layout/theme/store/admin-layout.state.mjs +4 -4
- package/esm2022/common/lib/schema/widgets/checkbox/checkbox-widget-edit.component.mjs +2 -2
- package/esm2022/common/lib/schema/widgets/common-widget-filter/boolean-widget-filter.component.mjs +2 -2
- package/esm2022/common/lib/schema/widgets/common-widget-filter/number-widget-filter.component.mjs +2 -2
- package/esm2022/common/lib/schema/widgets/common-widget-filter/string-widget-filter.component.mjs +2 -2
- package/esm2022/common/lib/schema/widgets/common-widgets.module.mjs +22 -22
- package/esm2022/common/lib/schema/widgets/lookup/lookup-widget-filter.component.mjs +2 -2
- package/esm2022/common/lib/schema/widgets/password/change-password.component.mjs +2 -2
- package/esm2022/common/lib/schema/widgets/selection-list/selection-list-widget-edit.component.mjs +2 -2
- package/esm2022/common/lib/settings/index.mjs +3 -2
- package/esm2022/common/lib/settings/setting-definition.provider.mjs +229 -0
- package/esm2022/common/lib/settings/settings.types.mjs +7 -2
- package/esm2022/common/lib/utils/index.mjs +1 -2
- package/esm2022/common/lib/workflows/common.workflow.mjs +5 -3
- package/esm2022/layout/builder/lib/builder/builder.service.mjs +3 -2
- package/esm2022/layout/builder/lib/builder/datasource-provider.service.mjs +27 -0
- package/esm2022/layout/builder/lib/builder/index.mjs +2 -1
- package/esm2022/layout/builder/lib/builder/widget-catalog.mjs +2 -1
- package/esm2022/layout/builder/lib/builder/widget-renderer.component.directive.mjs +3 -9
- package/esm2022/layout/builder/lib/builder/widget-renderer.component.mjs +7 -5
- package/esm2022/layout/builder/lib/builder/widget.types.mjs +59 -6
- package/esm2022/layout/designer/lib/designer/components/board/board.component.mjs +66 -47
- package/esm2022/layout/designer/lib/designer/components/breadcrumbs/breadcrumbs.component.mjs +27 -32
- package/esm2022/layout/designer/lib/designer/components/drawers/data-sources/data-sources.component.mjs +5 -4
- package/esm2022/layout/designer/lib/designer/components/grid-drawer/grid-drawer.component.mjs +2 -2
- package/esm2022/layout/designer/lib/designer/components/header-menu/header-menu.component.mjs +35 -10
- package/esm2022/layout/designer/lib/designer/components/size-mode/view-size-toolbar.component.mjs +23 -23
- package/esm2022/layout/designer/lib/designer/components/widget-picker/widget-picker.component.mjs +3 -3
- package/esm2022/layout/designer/lib/designer/designer.component.mjs +10 -9
- package/esm2022/layout/designer/lib/designer/index.mjs +2 -1
- package/esm2022/layout/designer/lib/designer/shared/designer-connector.service.mjs +5 -5
- package/esm2022/layout/designer/lib/designer/shared/designer.service.mjs +158 -63
- package/esm2022/layout/designer/lib/designer/shared/designer.types.mjs +1 -1
- package/esm2022/layout/designer/lib/designer/shared/generic-commands.types.mjs +52 -0
- package/esm2022/layout/designer/lib/designer/shared/widget-designer-renderer.directive.mjs +35 -38
- package/esm2022/layout/designer/lib/preview/preview-viewer.component.mjs +12 -3
- package/esm2022/layout/designer/lib/preview/preview.component.mjs +3 -2
- package/esm2022/layout/designer/lib/property-viewer/widget-property-viewer.component.mjs +7 -6
- package/esm2022/layout/entity/lib/entity-detail-list.viewmodel.mjs +5 -7
- package/esm2022/layout/entity/lib/entity-master-create.viewmodel.mjs +3 -3
- package/esm2022/layout/entity/lib/entity-master-list.viewmodel.mjs +21 -18
- package/esm2022/layout/entity/lib/entity-master-single.viewmodel.mjs +8 -7
- package/esm2022/layout/entity/lib/entity.config.mjs +6 -6
- package/esm2022/layout/entity/lib/entity.service.mjs +18 -0
- package/esm2022/layout/entity/lib/entity.viewmodel.mjs +7 -5
- package/esm2022/layout/entity/lib/index.mjs +2 -1
- package/esm2022/layout/entity/lib/widgets/lookup-widget/lookup-widget-column.component.mjs +10 -4
- package/esm2022/layout/entity/lib/widgets/lookup-widget/lookup-widget-edit.component.mjs +42 -32
- package/esm2022/layout/entity/lib/widgets/lookup-widget/lookup-widget-selector.component.mjs +3 -3
- package/esm2022/layout/entity/lib/widgets/lookup-widget/lookup-widget-selector.viewmodel.mjs +20 -19
- package/esm2022/layout/entity/lib/widgets/lookup-widget/lookup-widget-view.component.mjs +79 -40
- package/esm2022/layout/entity/lib/workflows/modify-section.workflow.mjs +2 -2
- package/esm2022/layouts/lib/admin/entity-layout/entity-create-view/entity-create-view.component.mjs +2 -2
- package/esm2022/layouts/lib/admin/entity-layout/entity-details-view/entity-details-view.component.mjs +2 -2
- package/esm2022/layouts/lib/admin/entity-layout/entity-list-view/components/entity-custom-view/entity-custom-view.component.mjs +1 -1
- package/esm2022/layouts/lib/admin/entity-layout/entity-list-view/components/list-view-option-conditions/list-view-option-conditions.component.mjs +1 -1
- package/esm2022/layouts/lib/admin/entity-layout/entity-list-view/entity-list-view.component.mjs +6 -5
- package/esm2022/layouts/lib/admin/entity-layout/entity-modify-view/entity-modify-view.component.mjs +2 -2
- package/esm2022/layouts/lib/admin/entity-layout/workflows/create-entity.workflow.mjs +2 -2
- package/esm2022/layouts/lib/admin/entity-layout/workflows/modify-entity.workflow.mjs +2 -2
- package/esm2022/themes/default/lib/layouts/entity-layouts/entity-detail-list-view/entity-detail-list-view.component.mjs +30 -10
- package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-create-view/entity-master-create-view.component.mjs +3 -3
- package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-list-view/entity-master-list-view.component.mjs +9 -8
- package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-list-view/list-view-option-columns/list-view-option-columns.component.mjs +3 -3
- package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-list-view/list-view-option-sorting/list-view-option-sorting.component.mjs +24 -18
- package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-modify-view/entity-master-modify-view.component.mjs +3 -3
- package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-single-view/entity-master-single-view.component.mjs +3 -3
- package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-single-view/overview/entity-single-overview.component.mjs +12 -10
- package/esm2022/themes/default/lib/layouts/root-layout/components/header/header.component.mjs +2 -2
- package/esm2022/themes/default/lib/layouts/root-layout/components/menu/root-menu.component.mjs +4 -3
- package/esm2022/themes/default/lib/layouts/root-layout/root-layout.component.mjs +2 -4
- package/esm2022/themes/default/lib/layouts/root-layout/root-layout.module.mjs +6 -1
- package/esm2022/themes/shared/lib/shared.module.mjs +25 -4
- package/esm2022/widgets/lib/properties/editors.props.mjs +4 -2
- package/esm2022/widgets/lib/properties/general.props.mjs +2 -2
- package/esm2022/widgets/lib/widgets/editors/checkbox/checkbox-widget-designer.component.mjs +2 -2
- package/esm2022/widgets/lib/widgets/editors/checkbox/checkbox-widget-edit.component.mjs +44 -20
- package/esm2022/widgets/lib/widgets/editors/contact/popup-component.mjs +1 -1
- package/esm2022/widgets/lib/widgets/editors/date-time/date-time-box-widget-column.component.mjs +17 -15
- package/esm2022/widgets/lib/widgets/editors/date-time/date-time-box-widget-edit.component.mjs +7 -10
- package/esm2022/widgets/lib/widgets/editors/date-time/date-time-box-widget-view.component.mjs +13 -6
- package/esm2022/widgets/lib/widgets/editors/link/link-widget-edit.component.mjs +1 -2
- package/esm2022/widgets/lib/widgets/editors/select/index.mjs +3 -3
- package/esm2022/widgets/lib/widgets/editors/select/select-box-widget-edit.component.mjs +9 -20
- package/esm2022/widgets/lib/widgets/editors/select/select-box-widget-view.component.mjs +20 -25
- package/esm2022/widgets/lib/widgets/editors/selection-list/selection-list-widget-designer.component.mjs +35 -17
- package/esm2022/widgets/lib/widgets/editors/selection-list/selection-list-widget-edit.component.mjs +41 -19
- package/esm2022/widgets/lib/widgets/editors/selection-list/selection-list-widget-view.component.mjs +24 -15
- package/esm2022/widgets/lib/widgets/editors/selection-list/selection-list-widget.config.mjs +4 -2
- package/esm2022/widgets/lib/widgets/editors/toggle/toggle-widget-edit.component.mjs +14 -7
- package/esm2022/widgets/lib/widgets/editors/toggle/toggle-widget-print.component.mjs +3 -3
- package/esm2022/widgets/lib/widgets/editors/toggle/toggle-widget-view.component.mjs +29 -67
- package/esm2022/widgets/lib/widgets/layout/block/block-widget-designer.component.mjs +32 -17
- package/esm2022/widgets/lib/widgets/layout/grid/grid-widget-designer.component.mjs +1 -22
- package/esm2022/widgets/lib/widgets/layout/grid-row/grid-row-widget-designer.component.mjs +3 -3
- package/esm2022/widgets/lib/widgets/layout/page/page-widget-designer.component.mjs +76 -78
- package/esm2022/widgets/lib/widgets/layout/page/page-widget.config.mjs +9 -9
- package/esm2022/widgets/lib/widgets/layout/template/template-picker/template-picker.component.mjs +120 -0
- package/esm2022/widgets/lib/widgets/layout/template/template-widget-edit.component.mjs +65 -24
- package/esm2022/widgets/lib/widgets/layout/template/template-widget-view.component.mjs +27 -7
- package/esm2022/widgets/lib/widgets/layout/template/template.provider.mjs +18 -1
- package/fesm2022/acorex-platform-auth.mjs +1 -1
- package/fesm2022/{acorex-platform-common-avatar-widget-edit.component-D4k52w2k.mjs → acorex-platform-common-avatar-widget-edit.component-vDhYokEG.mjs} +3 -4
- package/fesm2022/{acorex-platform-common-avatar-widget-edit.component-D4k52w2k.mjs.map → acorex-platform-common-avatar-widget-edit.component-vDhYokEG.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-avatar-widget-view.component-Bbg1imZG.mjs → acorex-platform-common-avatar-widget-view.component-Dew3CVLm.mjs} +3 -4
- package/fesm2022/acorex-platform-common-avatar-widget-view.component-Dew3CVLm.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-boolean-widget-filter.component-CRFI7vNR.mjs → acorex-platform-common-boolean-widget-filter.component-BdE7WOK5.mjs} +4 -5
- package/fesm2022/{acorex-platform-common-boolean-widget-filter.component-CRFI7vNR.mjs.map → acorex-platform-common-boolean-widget-filter.component-BdE7WOK5.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-change-password.component-Djd4SeNv.mjs → acorex-platform-common-change-password.component-g_GEw3IZ.mjs} +4 -4
- package/fesm2022/{acorex-platform-common-change-password.component-Djd4SeNv.mjs.map → acorex-platform-common-change-password.component-g_GEw3IZ.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-checkbox-widget-column.component-BCUcZiP_.mjs → acorex-platform-common-checkbox-widget-column.component-Bj5rjEk1.mjs} +3 -4
- package/fesm2022/{acorex-platform-common-checkbox-widget-column.component-BCUcZiP_.mjs.map → acorex-platform-common-checkbox-widget-column.component-Bj5rjEk1.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-checkbox-widget-edit.component-GgWLpxV0.mjs → acorex-platform-common-checkbox-widget-edit.component-ChXbJsuG.mjs} +4 -5
- package/fesm2022/acorex-platform-common-checkbox-widget-edit.component-ChXbJsuG.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-checkbox-widget-view.component-KuRnDGoQ.mjs → acorex-platform-common-checkbox-widget-view.component-CbQwjE_u.mjs} +3 -4
- package/fesm2022/{acorex-platform-common-checkbox-widget-view.component-KuRnDGoQ.mjs.map → acorex-platform-common-checkbox-widget-view.component-CbQwjE_u.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-dateTime-widget-column.component-DaXNK6e2.mjs → acorex-platform-common-dateTime-widget-column.component-QUYyDVw8.mjs} +3 -4
- package/fesm2022/acorex-platform-common-dateTime-widget-column.component-QUYyDVw8.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-dateTime-widget-edit.component-XOReyHZ-.mjs → acorex-platform-common-dateTime-widget-edit.component-CzLb3xnR.mjs} +3 -4
- package/fesm2022/{acorex-platform-common-dateTime-widget-edit.component-XOReyHZ-.mjs.map → acorex-platform-common-dateTime-widget-edit.component-CzLb3xnR.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-dateTime-widget-filter.component-3PJx2C6G.mjs → acorex-platform-common-dateTime-widget-filter.component-DZRQ6yVk.mjs} +3 -4
- package/fesm2022/{acorex-platform-common-dateTime-widget-filter.component-3PJx2C6G.mjs.map → acorex-platform-common-dateTime-widget-filter.component-DZRQ6yVk.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-dateTime-widget-view.component-BWTedYCf.mjs → acorex-platform-common-dateTime-widget-view.component-DxNwm_5m.mjs} +3 -4
- package/fesm2022/{acorex-platform-common-dateTime-widget-view.component-BWTedYCf.mjs.map → acorex-platform-common-dateTime-widget-view.component-DxNwm_5m.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-email-widget-column.component-MySWR3RG.mjs → acorex-platform-common-email-widget-column.component-Cm-fhlNZ.mjs} +3 -4
- package/fesm2022/acorex-platform-common-email-widget-column.component-Cm-fhlNZ.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-email-widget-edit.component-DzqW3Ay6.mjs → acorex-platform-common-email-widget-edit.component-BfXFBLF6.mjs} +3 -4
- package/fesm2022/{acorex-platform-common-email-widget-edit.component-DzqW3Ay6.mjs.map → acorex-platform-common-email-widget-edit.component-BfXFBLF6.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-email-widget-view.component-ikN6SIj0.mjs → acorex-platform-common-email-widget-view.component-ClRjKVy6.mjs} +2 -3
- package/fesm2022/{acorex-platform-common-email-widget-view.component-ikN6SIj0.mjs.map → acorex-platform-common-email-widget-view.component-ClRjKVy6.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-file-widget-column.component-GtbElxmS.mjs → acorex-platform-common-file-widget-column.component-B0v2rSWI.mjs} +2 -3
- package/fesm2022/acorex-platform-common-file-widget-column.component-B0v2rSWI.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-file-widget-edit.component-CPSsJviw.mjs → acorex-platform-common-file-widget-edit.component-DsIqehpt.mjs} +3 -4
- package/fesm2022/{acorex-platform-common-file-widget-edit.component-CPSsJviw.mjs.map → acorex-platform-common-file-widget-edit.component-DsIqehpt.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-file-widget-filter.component-D-_WnxlE.mjs → acorex-platform-common-file-widget-filter.component-C3uBjqF-.mjs} +3 -4
- package/fesm2022/acorex-platform-common-file-widget-filter.component-C3uBjqF-.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-file-widget-view.component-BU8iWCVR.mjs → acorex-platform-common-file-widget-view.component-DTl_Rehd.mjs} +3 -4
- package/fesm2022/{acorex-platform-common-file-widget-view.component-BU8iWCVR.mjs.map → acorex-platform-common-file-widget-view.component-DTl_Rehd.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-gallery-widget-edit.component-DMu9OW45.mjs → acorex-platform-common-gallery-widget-edit.component-DHeFVg5x.mjs} +3 -4
- package/fesm2022/{acorex-platform-common-gallery-widget-edit.component-DMu9OW45.mjs.map → acorex-platform-common-gallery-widget-edit.component-DHeFVg5x.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-gallery-widget-filter.component-BNYgn0eK.mjs → acorex-platform-common-gallery-widget-filter.component-Di446i2c.mjs} +3 -4
- package/fesm2022/acorex-platform-common-gallery-widget-filter.component-Di446i2c.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-gallery-widget-view.component-D52gjNcJ.mjs → acorex-platform-common-gallery-widget-view.component-CkcRvfv-.mjs} +3 -4
- package/fesm2022/{acorex-platform-common-gallery-widget-view.component-D52gjNcJ.mjs.map → acorex-platform-common-gallery-widget-view.component-CkcRvfv-.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-largetext-widget-edit.component-B7Hq-1ny.mjs → acorex-platform-common-largetext-widget-edit.component-D89AlBSm.mjs} +2 -3
- package/fesm2022/acorex-platform-common-largetext-widget-edit.component-D89AlBSm.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-lookup-widget-column.component-2ccF27nN.mjs → acorex-platform-common-lookup-widget-column.component-CB0ehp_y.mjs} +3 -4
- package/fesm2022/acorex-platform-common-lookup-widget-column.component-CB0ehp_y.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-lookup-widget-edit.component-Cn3yALld.mjs → acorex-platform-common-lookup-widget-edit.component-B0HQnsb8.mjs} +3 -4
- package/fesm2022/{acorex-platform-common-lookup-widget-edit.component-Cn3yALld.mjs.map → acorex-platform-common-lookup-widget-edit.component-B0HQnsb8.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-lookup-widget-filter.component-NY-w7EgD.mjs → acorex-platform-common-lookup-widget-filter.component-Dxj_XEYV.mjs} +4 -5
- package/fesm2022/acorex-platform-common-lookup-widget-filter.component-Dxj_XEYV.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-lookup-widget-view.component-DjbS0xsx.mjs → acorex-platform-common-lookup-widget-view.component-BtO3feA9.mjs} +3 -4
- package/fesm2022/acorex-platform-common-lookup-widget-view.component-BtO3feA9.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-map-widget-edit.component-CHyEencO.mjs → acorex-platform-common-map-widget-edit.component-hXIZrhzg.mjs} +3 -4
- package/fesm2022/acorex-platform-common-map-widget-edit.component-hXIZrhzg.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-map-widget-view.component-BMK6QTKt.mjs → acorex-platform-common-map-widget-view.component-RgV-r8q6.mjs} +3 -4
- package/fesm2022/acorex-platform-common-map-widget-view.component-RgV-r8q6.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-messenger-widget-column.component-iVdgR19k.mjs → acorex-platform-common-messenger-widget-column.component-DGWQWuzM.mjs} +3 -4
- package/fesm2022/acorex-platform-common-messenger-widget-column.component-DGWQWuzM.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-messenger-widget-edit.component-BicSI2_5.mjs → acorex-platform-common-messenger-widget-edit.component-Blv1qL4e.mjs} +3 -4
- package/fesm2022/acorex-platform-common-messenger-widget-edit.component-Blv1qL4e.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-messenger-widget-view.component-DlSSOqrz.mjs → acorex-platform-common-messenger-widget-view.component-DEbnPggG.mjs} +3 -4
- package/fesm2022/{acorex-platform-common-messenger-widget-view.component-DlSSOqrz.mjs.map → acorex-platform-common-messenger-widget-view.component-DEbnPggG.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-number-widget-edit.component-DlLjt4OQ.mjs → acorex-platform-common-number-widget-edit.component-gQCEBhPv.mjs} +3 -4
- package/fesm2022/acorex-platform-common-number-widget-edit.component-gQCEBhPv.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-number-widget-filter.component-DPZQomNX.mjs → acorex-platform-common-number-widget-filter.component-CvEw3awN.mjs} +4 -5
- package/fesm2022/acorex-platform-common-number-widget-filter.component-CvEw3awN.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-number-widget-view.component-BW1ftaLk.mjs → acorex-platform-common-number-widget-view.component-ROrdklif.mjs} +3 -4
- package/fesm2022/acorex-platform-common-number-widget-view.component-ROrdklif.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-password-widget-column.component-BZEavb7p.mjs → acorex-platform-common-password-widget-column.component-vXdE4UjM.mjs} +3 -4
- package/fesm2022/{acorex-platform-common-password-widget-column.component-BZEavb7p.mjs.map → acorex-platform-common-password-widget-column.component-vXdE4UjM.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-password-widget-edit.component-De5r-L4i.mjs → acorex-platform-common-password-widget-edit.component-BCOoHtGl.mjs} +3 -4
- package/fesm2022/acorex-platform-common-password-widget-edit.component-BCOoHtGl.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-password-widget-view.component-Dw4xxdOT.mjs → acorex-platform-common-password-widget-view.component-rpjAeimk.mjs} +4 -5
- package/fesm2022/{acorex-platform-common-password-widget-view.component-Dw4xxdOT.mjs.map → acorex-platform-common-password-widget-view.component-rpjAeimk.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-phone-widget-column.component-BTbtfPty.mjs → acorex-platform-common-phone-widget-column.component-BbuUbPCu.mjs} +3 -4
- package/fesm2022/{acorex-platform-common-phone-widget-column.component-BTbtfPty.mjs.map → acorex-platform-common-phone-widget-column.component-BbuUbPCu.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-phone-widget-edit.component-Ay4y8j_t.mjs → acorex-platform-common-phone-widget-edit.component-Bo_aOxfZ.mjs} +3 -4
- package/fesm2022/{acorex-platform-common-phone-widget-edit.component-Ay4y8j_t.mjs.map → acorex-platform-common-phone-widget-edit.component-Bo_aOxfZ.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-phone-widget-view.component-D4WqjjBP.mjs → acorex-platform-common-phone-widget-view.component-DDBCR_QY.mjs} +3 -4
- package/fesm2022/{acorex-platform-common-phone-widget-view.component-D4WqjjBP.mjs.map → acorex-platform-common-phone-widget-view.component-DDBCR_QY.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-rich-text-widget-column.component-B5rev2NB.mjs → acorex-platform-common-rich-text-widget-column.component-BHiq7hdp.mjs} +3 -4
- package/fesm2022/{acorex-platform-common-rich-text-widget-column.component-B5rev2NB.mjs.map → acorex-platform-common-rich-text-widget-column.component-BHiq7hdp.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-rich-text-widget-edit.component-BHBRQKhj.mjs → acorex-platform-common-rich-text-widget-edit.component-12odUyzb.mjs} +3 -4
- package/fesm2022/acorex-platform-common-rich-text-widget-edit.component-12odUyzb.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-rich-text-widget-view.component-0bIoY7Ws.mjs → acorex-platform-common-rich-text-widget-view.component-Xr0ohz5L.mjs} +3 -4
- package/fesm2022/acorex-platform-common-rich-text-widget-view.component-Xr0ohz5L.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-selection-list-widget-column.component-CzJWP4YT.mjs → acorex-platform-common-selection-list-widget-column.component-C2JikSdw.mjs} +3 -4
- package/fesm2022/{acorex-platform-common-selection-list-widget-column.component-CzJWP4YT.mjs.map → acorex-platform-common-selection-list-widget-column.component-C2JikSdw.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-selection-list-widget-edit.component-DhYa6y65.mjs → acorex-platform-common-selection-list-widget-edit.component-C1QPfHCm.mjs} +4 -5
- package/fesm2022/acorex-platform-common-selection-list-widget-edit.component-C1QPfHCm.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-selection-list-widget-filter.component-B344MeXJ.mjs → acorex-platform-common-selection-list-widget-filter.component-DIgxHmqa.mjs} +3 -4
- package/fesm2022/acorex-platform-common-selection-list-widget-filter.component-DIgxHmqa.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-selection-list-widget-view.component-Czk5DzgK.mjs → acorex-platform-common-selection-list-widget-view.component-D-VQ4JNC.mjs} +3 -4
- package/fesm2022/acorex-platform-common-selection-list-widget-view.component-D-VQ4JNC.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-signature-pad-widget-edit.component-YSGjL25D.mjs → acorex-platform-common-signature-pad-widget-edit.component-BimaJ4_d.mjs} +3 -4
- package/fesm2022/{acorex-platform-common-signature-pad-widget-edit.component-YSGjL25D.mjs.map → acorex-platform-common-signature-pad-widget-edit.component-BimaJ4_d.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-signature-pad-widget-view.component-D64btt99.mjs → acorex-platform-common-signature-pad-widget-view.component-USd0U707.mjs} +3 -4
- package/fesm2022/acorex-platform-common-signature-pad-widget-view.component-USd0U707.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-string-widget-filter.component-5wb1x5Fa.mjs → acorex-platform-common-string-widget-filter.component-wI9D-Ju5.mjs} +4 -5
- package/fesm2022/acorex-platform-common-string-widget-filter.component-wI9D-Ju5.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-text-widget-column.component-U-V3HD2V.mjs → acorex-platform-common-text-widget-column.component-Be7Nr0lJ.mjs} +3 -4
- package/fesm2022/{acorex-platform-common-text-widget-column.component-U-V3HD2V.mjs.map → acorex-platform-common-text-widget-column.component-Be7Nr0lJ.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-text-widget-edit.component-BCs13zUr.mjs → acorex-platform-common-text-widget-edit.component-feJTTnye.mjs} +3 -4
- package/fesm2022/{acorex-platform-common-text-widget-edit.component-BCs13zUr.mjs.map → acorex-platform-common-text-widget-edit.component-feJTTnye.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-text-widget-view.component-V1RkKuNZ.mjs → acorex-platform-common-text-widget-view.component-DsUAJ-md.mjs} +3 -4
- package/fesm2022/{acorex-platform-common-text-widget-view.component-V1RkKuNZ.mjs.map → acorex-platform-common-text-widget-view.component-DsUAJ-md.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-toggle-widget-column.component-FqKLeAhY.mjs → acorex-platform-common-toggle-widget-column.component-BFwzsY4-.mjs} +3 -4
- package/fesm2022/{acorex-platform-common-toggle-widget-column.component-FqKLeAhY.mjs.map → acorex-platform-common-toggle-widget-column.component-BFwzsY4-.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-toggle-widget-edit.component-DKSnFdTQ.mjs → acorex-platform-common-toggle-widget-edit.component-Cuf9_RrU.mjs} +3 -4
- package/fesm2022/acorex-platform-common-toggle-widget-edit.component-Cuf9_RrU.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-toggle-widget-view.component-BOYPRUCt.mjs → acorex-platform-common-toggle-widget-view.component-DYz6VTey.mjs} +3 -4
- package/fesm2022/{acorex-platform-common-toggle-widget-view.component-BOYPRUCt.mjs.map → acorex-platform-common-toggle-widget-view.component-DYz6VTey.mjs.map} +1 -1
- package/fesm2022/acorex-platform-common.mjs +515 -237
- package/fesm2022/acorex-platform-common.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-builder.mjs +92 -17
- package/fesm2022/acorex-platform-layout-builder.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-designer.mjs +424 -231
- package/fesm2022/acorex-platform-layout-designer.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-entity.mjs +206 -134
- package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
- package/fesm2022/{acorex-platform-layouts-entity-create-view.component-CPGbLM4C.mjs → acorex-platform-layouts-entity-create-view.component-JsGlDx_S.mjs} +3 -3
- package/fesm2022/{acorex-platform-layouts-entity-create-view.component-CPGbLM4C.mjs.map → acorex-platform-layouts-entity-create-view.component-JsGlDx_S.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-layouts-entity-import-view.component-CZpEcVi9.mjs → acorex-platform-layouts-entity-import-view.component-9FK_Iro9.mjs} +2 -2
- package/fesm2022/{acorex-platform-layouts-entity-import-view.component-CZpEcVi9.mjs.map → acorex-platform-layouts-entity-import-view.component-9FK_Iro9.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-layouts-entity-modify-view.component-Bt4MLEou.mjs → acorex-platform-layouts-entity-modify-view.component-CNbc8ewu.mjs} +3 -3
- package/fesm2022/{acorex-platform-layouts-entity-modify-view.component-Bt4MLEou.mjs.map → acorex-platform-layouts-entity-modify-view.component-CNbc8ewu.mjs.map} +1 -1
- package/fesm2022/acorex-platform-layouts.mjs +14 -13
- package/fesm2022/acorex-platform-layouts.mjs.map +1 -1
- package/fesm2022/{acorex-platform-themes-default-entity-master-create-view.component-BJ7inoTB.mjs → acorex-platform-themes-default-entity-master-create-view.component-Cf5ttvrG.mjs} +7 -7
- package/fesm2022/{acorex-platform-themes-default-entity-master-create-view.component-BJ7inoTB.mjs.map → acorex-platform-themes-default-entity-master-create-view.component-Cf5ttvrG.mjs.map} +1 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-BLb_4pK5.mjs +306 -0
- package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-BLb_4pK5.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-CCvE7XiE.mjs +88 -0
- package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-CCvE7XiE.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-CwrgQFY7.mjs +150 -0
- package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-CwrgQFY7.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-default.mjs +49 -27
- package/fesm2022/acorex-platform-themes-default.mjs.map +1 -1
- package/fesm2022/acorex-platform-themes-shared.mjs +23 -4
- package/fesm2022/acorex-platform-themes-shared.mjs.map +1 -1
- package/fesm2022/{acorex-platform-widgets-button-widget-designer.component-M_JuDPbt.mjs → acorex-platform-widgets-button-widget-designer.component-CPFA79Gx.mjs} +2 -2
- package/fesm2022/{acorex-platform-widgets-button-widget-designer.component-M_JuDPbt.mjs.map → acorex-platform-widgets-button-widget-designer.component-CPFA79Gx.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-widgets-checkbox-widget-column.component-j1jG8pCr.mjs → acorex-platform-widgets-checkbox-widget-column.component-MInF2GVN.mjs} +2 -2
- package/fesm2022/{acorex-platform-widgets-checkbox-widget-column.component-j1jG8pCr.mjs.map → acorex-platform-widgets-checkbox-widget-column.component-MInF2GVN.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-widgets-checkbox-widget-designer.component-e9O9qFIf.mjs → acorex-platform-widgets-checkbox-widget-designer.component-B7Qv2aYx.mjs} +5 -5
- package/fesm2022/{acorex-platform-widgets-checkbox-widget-designer.component-e9O9qFIf.mjs.map → acorex-platform-widgets-checkbox-widget-designer.component-B7Qv2aYx.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-widgets-checkbox-widget-view.component-CDA7Jwov.mjs → acorex-platform-widgets-checkbox-widget-view.component-DP4kITs-.mjs} +2 -2
- package/fesm2022/{acorex-platform-widgets-checkbox-widget-view.component-CDA7Jwov.mjs.map → acorex-platform-widgets-checkbox-widget-view.component-DP4kITs-.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-widgets-color-box-widget-designer.component-Brsun0id.mjs → acorex-platform-widgets-color-box-widget-designer.component-uQBHAspe.mjs} +5 -5
- package/fesm2022/acorex-platform-widgets-color-box-widget-designer.component-uQBHAspe.mjs.map +1 -0
- package/fesm2022/{acorex-platform-widgets-contact-widget-filter.component-GTwK51nJ.mjs → acorex-platform-widgets-contact-widget-filter.component-DnQZon-E.mjs} +2 -2
- package/fesm2022/{acorex-platform-widgets-contact-widget-filter.component-GTwK51nJ.mjs.map → acorex-platform-widgets-contact-widget-filter.component-DnQZon-E.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-widgets-page-widget-designer.component-BL_EAwUs.mjs → acorex-platform-widgets-page-widget-designer.component-DOulAanE.mjs} +76 -78
- package/fesm2022/acorex-platform-widgets-page-widget-designer.component-DOulAanE.mjs.map +1 -0
- package/fesm2022/{acorex-platform-widgets-rich-text-popup.component-RCdFIz45.mjs → acorex-platform-widgets-rich-text-popup.component-C8KmObPV.mjs} +2 -2
- package/fesm2022/{acorex-platform-widgets-rich-text-popup.component-RCdFIz45.mjs.map → acorex-platform-widgets-rich-text-popup.component-C8KmObPV.mjs.map} +1 -1
- package/fesm2022/acorex-platform-widgets-template-picker.component-DPlvwgbu.mjs +123 -0
- package/fesm2022/acorex-platform-widgets-template-picker.component-DPlvwgbu.mjs.map +1 -0
- package/fesm2022/acorex-platform-widgets-template-widget-edit.component-JlCVB-Aq.mjs +135 -0
- package/fesm2022/acorex-platform-widgets-template-widget-edit.component-JlCVB-Aq.mjs.map +1 -0
- package/fesm2022/{acorex-platform-widgets-text-block-widget-designer.component-Bi9hlpvB.mjs → acorex-platform-widgets-text-block-widget-designer.component-BE6goaZc.mjs} +2 -2
- package/fesm2022/{acorex-platform-widgets-text-block-widget-designer.component-Bi9hlpvB.mjs.map → acorex-platform-widgets-text-block-widget-designer.component-BE6goaZc.mjs.map} +1 -1
- package/fesm2022/acorex-platform-widgets.mjs +438 -385
- package/fesm2022/acorex-platform-widgets.mjs.map +1 -1
- package/fesm2022/acorex-platform-workflow.mjs +1 -1
- package/layout/builder/lib/builder/datasource-provider.service.d.ts +24 -0
- package/layout/builder/lib/builder/index.d.ts +1 -0
- package/layout/builder/lib/builder/widget.types.d.ts +15 -9
- package/layout/designer/lib/designer/components/board/board.component.d.ts +8 -1
- package/layout/designer/lib/designer/components/drawers/data-sources/data-sources.component.d.ts +6 -4
- package/layout/designer/lib/designer/designer.component.d.ts +3 -2
- package/layout/designer/lib/designer/index.d.ts +1 -0
- package/layout/designer/lib/designer/shared/designer-connector.service.d.ts +10 -9
- package/layout/designer/lib/designer/shared/designer.service.d.ts +18 -5
- package/layout/designer/lib/designer/shared/designer.types.d.ts +0 -4
- package/layout/designer/lib/designer/shared/generic-commands.types.d.ts +9 -0
- package/layout/designer/lib/designer/shared/widget-designer-renderer.directive.d.ts +8 -5
- package/layout/designer/lib/preview/preview-viewer.component.d.ts +8 -1
- package/layout/designer/lib/property-viewer/widget-property-viewer.component.d.ts +8 -4
- package/layout/entity/lib/entity-detail-list.viewmodel.d.ts +2 -1
- package/layout/entity/lib/entity-master-create.viewmodel.d.ts +1 -1
- package/layout/entity/lib/entity-master-list.viewmodel.d.ts +2 -3
- package/layout/entity/lib/entity-master-single.viewmodel.d.ts +2 -1
- package/layout/entity/lib/entity-master-update.viewmodel.d.ts +1 -1
- package/layout/entity/lib/entity.config.d.ts +1 -1
- package/layout/entity/lib/entity.service.d.ts +7 -0
- package/layout/entity/lib/entity.viewmodel.d.ts +6 -4
- package/layout/entity/lib/index.d.ts +1 -0
- package/layout/entity/lib/widgets/lookup-widget/lookup-widget-edit.component.d.ts +14 -12
- package/layout/entity/lib/widgets/lookup-widget/lookup-widget-selector.viewmodel.d.ts +2 -2
- package/layout/entity/lib/widgets/lookup-widget/lookup-widget-view.component.d.ts +13 -10
- package/layouts/lib/admin/entity-layout/entity-list-view/entity-list-view.component.d.ts +0 -1
- package/package.json +12 -12
- package/themes/default/lib/layouts/entity-layouts/entity-detail-list-view/entity-detail-list-view.component.d.ts +4 -1
- package/themes/default/lib/layouts/entity-layouts/entity-master-list-view/list-view-option-sorting/list-view-option-sorting.component.d.ts +1 -1
- package/themes/default/lib/layouts/root-layout/components/menu/root-menu.component.d.ts +8 -2
- package/themes/default/lib/layouts/root-layout/root-layout.component.d.ts +3 -6
- package/themes/default/lib/layouts/root-layout/root-layout.module.d.ts +14 -13
- package/themes/shared/lib/shared.module.d.ts +2 -1
- package/widgets/lib/widgets/editors/checkbox/checkbox-widget-edit.component.d.ts +2 -0
- package/widgets/lib/widgets/editors/date-time/date-time-box-widget-column.component.d.ts +1 -3
- package/widgets/lib/widgets/editors/date-time/date-time-box-widget-view.component.d.ts +1 -0
- package/widgets/lib/widgets/editors/select/index.d.ts +2 -2
- package/widgets/lib/widgets/editors/select/select-box-widget-edit.component.d.ts +3 -6
- package/widgets/lib/widgets/editors/select/select-box-widget-view.component.d.ts +2 -3
- package/widgets/lib/widgets/editors/selection-list/selection-list-widget-designer.component.d.ts +6 -7
- package/widgets/lib/widgets/editors/selection-list/selection-list-widget-edit.component.d.ts +5 -6
- package/widgets/lib/widgets/editors/selection-list/selection-list-widget-view.component.d.ts +3 -3
- package/widgets/lib/widgets/editors/toggle/toggle-widget-edit.component.d.ts +1 -2
- package/widgets/lib/widgets/editors/toggle/toggle-widget-print.component.d.ts +1 -1
- package/widgets/lib/widgets/editors/toggle/toggle-widget-view.component.d.ts +1 -1
- package/widgets/lib/widgets/layout/page/page-widget-designer.component.d.ts +8 -9
- package/widgets/lib/widgets/layout/template/template-picker/template-picker.component.d.ts +30 -0
- package/widgets/lib/widgets/layout/template/template-widget-edit.component.d.ts +3 -0
- package/widgets/lib/widgets/layout/template/template-widget-view.component.d.ts +1 -0
- package/widgets/lib/widgets/layout/template/template.provider.d.ts +3 -0
- package/common/lib/layout/menu/menu.loader.d.ts +0 -17
- package/common/lib/utils/router-util.service.d.ts +0 -12
- package/esm2022/common/lib/layout/menu/menu.loader.mjs +0 -39
- package/esm2022/common/lib/utils/router-util.service.mjs +0 -43
- package/fesm2022/acorex-platform-common-avatar-widget-view.component-Bbg1imZG.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-checkbox-widget-edit.component-GgWLpxV0.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-dateTime-widget-column.component-DaXNK6e2.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-email-widget-column.component-MySWR3RG.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-file-widget-column.component-GtbElxmS.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-file-widget-filter.component-D-_WnxlE.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-gallery-widget-filter.component-BNYgn0eK.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-largetext-widget-edit.component-B7Hq-1ny.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-lookup-widget-column.component-2ccF27nN.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-lookup-widget-filter.component-NY-w7EgD.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-lookup-widget-view.component-DjbS0xsx.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-map-widget-edit.component-CHyEencO.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-map-widget-view.component-BMK6QTKt.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-messenger-widget-column.component-iVdgR19k.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-messenger-widget-edit.component-BicSI2_5.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-number-widget-edit.component-DlLjt4OQ.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-number-widget-filter.component-DPZQomNX.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-number-widget-view.component-BW1ftaLk.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-password-widget-edit.component-De5r-L4i.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-rich-text-widget-edit.component-BHBRQKhj.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-rich-text-widget-view.component-0bIoY7Ws.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-selection-list-widget-edit.component-DhYa6y65.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-selection-list-widget-filter.component-B344MeXJ.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-selection-list-widget-view.component-Czk5DzgK.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-signature-pad-widget-view.component-D64btt99.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-string-widget-filter.component-5wb1x5Fa.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-toggle-widget-edit.component-DKSnFdTQ.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-BGKWaCth.mjs +0 -298
- package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-BGKWaCth.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-B3phYOIw.mjs +0 -88
- package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-B3phYOIw.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-BO_lAQc_.mjs +0 -150
- package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-BO_lAQc_.mjs.map +0 -1
- package/fesm2022/acorex-platform-widgets-color-box-widget-designer.component-Brsun0id.mjs.map +0 -1
- package/fesm2022/acorex-platform-widgets-page-widget-designer.component-BL_EAwUs.mjs.map +0 -1
- package/fesm2022/acorex-platform-widgets-template-widget-edit.component-gvAh-gH1.mjs +0 -96
- package/fesm2022/acorex-platform-widgets-template-widget-edit.component-gvAh-gH1.mjs.map +0 -1
|
@@ -36,12 +36,6 @@ export class AXPWidgetRendererDirective {
|
|
|
36
36
|
}
|
|
37
37
|
});
|
|
38
38
|
}
|
|
39
|
-
// async ngOnInit() {
|
|
40
|
-
// await this.rerenderComponent();
|
|
41
|
-
// }
|
|
42
|
-
// async ngAfterViewInit() {
|
|
43
|
-
// await this.rerenderComponent();
|
|
44
|
-
// }
|
|
45
39
|
// Detect input changes
|
|
46
40
|
ngOnChanges(changes) {
|
|
47
41
|
if (changes['mode'] || changes['node']) {
|
|
@@ -74,8 +68,8 @@ export class AXPWidgetRendererDirective {
|
|
|
74
68
|
//
|
|
75
69
|
const widget = this.widgetRegistery.resolve(this.node().type);
|
|
76
70
|
//
|
|
77
|
-
const props = widget?.components[this.mode()]?.properties
|
|
78
|
-
?.filter((c) => c.schema.defaultValue)
|
|
71
|
+
const props = [...(widget?.properties ?? []), ...(widget?.components[this.mode()]?.properties ?? [])]
|
|
72
|
+
?.filter((c) => c.schema.defaultValue != null)
|
|
79
73
|
.map((c) => ({ [c.name]: c.schema.defaultValue }))
|
|
80
74
|
.reduce((acc, curr) => {
|
|
81
75
|
return { ...acc, ...curr };
|
|
@@ -316,4 +310,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
|
|
|
316
310
|
],
|
|
317
311
|
}]
|
|
318
312
|
}], ctorParameters: () => [] });
|
|
319
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LXJlbmRlcmVyLmNvbXBvbmVudC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2xheW91dC9idWlsZGVyL3NyYy9saWIvYnVpbGRlci93aWRnZXQtcmVuZGVyZXIuY29tcG9uZW50LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUVMLFNBQVMsRUFDVCxRQUFRLEVBRVIsZ0JBQWdCLEVBRWhCLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQzVELE9BQU8sRUFBYyxNQUFNLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDNUQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdEUsT0FBTyxFQUtMLGdCQUFnQixHQUNqQixNQUFNLGdCQUFnQixDQUFDOztBQVV4QixNQUFNLE9BQU8sMEJBQTBCO0lBdUJyQztRQXRCQSxlQUFVLEdBQUcsS0FBSyxFQUE2QixDQUFDO1FBRWhELFVBQUssR0FBRyxLQUFLLEVBQWlCLENBQUM7UUFFL0IsU0FBSSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQXVCLENBQUM7UUFDN0MsU0FBSSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQWlCLENBQUM7UUFFN0Isa0JBQWEsR0FBd0IsTUFBTSxDQUFNLEVBQUUsQ0FBQyxDQUFDO1FBRXZELGFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDMUIsbUJBQWMsR0FBRyxNQUFN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SSxDQUFDLGVBQWUsRUFBRSxDQUFDO2dCQUNyQixNQUFNLEtBQUssQ0FBQyxpQ0FBaUMsa0JBQWtCLEdBQUcsQ0FBQyxDQUFDO1lBQ3RFLENBQUM7WUFDRCxNQUFNLFVBQVUsR0FBRyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFdEMsc0RBQXNEO1lBQ3RELE1BQU0sS0FBSyxHQUFRLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN6QyxNQUFNLE9BQU8sR0FBRyxJQUFJLFFBQVEsQ0FBQyxPQUFPLEVBQUUsbUJBQW1CLFVBQVUsSUFBSSxDQUFDLENBQUM7WUFDekUsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pCLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsT0FBTyxDQUFDLEtBQUssQ0FBQyw4QkFBOEIsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN2RCxDQUFDO0lBQ0gsQ0FBQzs4R0FqVVUsMEJBQTBCO2tHQUExQiwwQkFBMEIsbWlCQU4xQjtZQUNUO2dCQUNFLE9BQU8sRUFBRSxjQUFjO2FBQ3hCO1NBQ0Y7OzJGQUVVLDBCQUEwQjtrQkFSdEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsdUJBQXVCO29CQUNqQyxTQUFTLEVBQUU7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGNBQWM7eUJBQ3hCO3FCQUNGO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhVbnN1YnNjcmliZXIgfSBmcm9tICdAYWNvcmV4L2NvcmUvdXRpbHMnO1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50UmVmLFxuICBEaXJlY3RpdmUsXG4gIEluamVjdG9yLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q29udGFpbmVyUmVmLFxuICBXcml0YWJsZVNpZ25hbCxcbiAgaW5qZWN0LFxuICBpbnB1dCxcbiAgc2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNsb25lRGVlcCwgZ2V0LCBtZXJnZSwgc2V0LCBzdW0gfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgZmlsdGVyIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBWFBMYXlvdXRCdWlsZGVyU2VydmljZSB9IGZyb20gJy4vYnVpbGRlci5zZXJ2aWNlJztcbmltcG9ydCB7IEFYUFdpZGdldFJlZ2lzdHJ5U2VydmljZSB9IGZyb20gJy4vd2lkZ2V0LXJlZ2lzdGVyeS5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIEFYUFdpZGdldENvbXBvbmVudCxcbiAgQVhQV2lkZ2V0Tm9kZSxcbiAgQVhQV2lkZ2V0Tm9kZVRva2VuLFxuICBBWFBXaWRnZXRSZW5kZXJNb2RlLFxuICBBWFBfV0lER0VUX1RPS0VOLFxufSBmcm9tICcuL3dpZGdldC50eXBlcyc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1theHAtd2lkZ2V0LXJlbmRlcmVyXScsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IEFYVW5zdWJzY3JpYmVyLFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEFYUFdpZGdldFJlbmRlcmVyRGlyZWN0aXZlIHtcbiAgcGFyZW50Tm9kZSA9IGlucHV0PEFYUFdpZGdldENvbXBvbmVudCB8IG51bGw+KCk7XG5cbiAgaW5kZXggPSBpbnB1dDxudW1iZXIgfCBudWxsPigpO1xuXG4gIG1vZGUgPSBpbnB1dC5yZXF1aXJlZDxBWFBXaWRnZXRSZW5kZXJNb2RlPigpO1xuICBub2RlID0gaW5wdXQucmVxdWlyZWQ8QVhQV2lkZ2V0Tm9kZT4oKTtcblxuICBwcm90ZWN0ZWQgbWVyZ2VkT3B0aW9uczogV3JpdGFibGVTaWduYWw8YW55PiA9IHNpZ25hbDxhbnk+KHt9KTtcblxuICBwcml2YXRlIGluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcbiAgcHJvdGVjdGVkIGJ1aWxkZXJTZXJ2aWNlID0gaW5qZWN0KEFYUExheW91dEJ1aWxkZXJTZXJ2aWNlKTtcbiAgcHJvdGVjdGVkIHdpZGdldFJlZ2lzdGVyeSA9IGluamVjdChBWFBXaWRnZXRSZWdpc3RyeVNlcnZpY2UpO1xuICBwcm90ZWN0ZWQgdW5zdWJzY3JpYmVyID0gaW5qZWN0KEFYVW5zdWJzY3JpYmVyKTtcbiAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmID0gaW5qZWN0KFZpZXdDb250YWluZXJSZWYpO1xuXG4gIHByb3RlY3RlZCBpc0xvYWRpbmcgPSBzaWduYWwoZmFsc2UpO1xuICBwcml2YXRlIGluc3RhbmNlITogQVhQV2lkZ2V0Q29tcG9uZW50O1xuICBwcml2YXRlIGV4cHJlc3Npb25DYWNoZTogTWFwPHN0cmluZywgKCkgPT4gUHJvbWlzZTxhbnk+PiA9IG5ldyBNYXAoKTtcbiAgcHJpdmF0ZSBleHByZXNzaW9uRXZhbHVhdG9yczogTWFwPHN0cmluZywgKCkgPT4gUHJvbWlzZTxhbnk+PiA9IG5ldyBNYXAoKTtcbiAgcHJpdmF0ZSBzY29wZTogYW55ID0gbnVsbDtcbiAgcHJpdmF0ZSBjb21wb25lbnRSZWY6IENvbXBvbmVudFJlZjxhbnk+O1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuYnVpbGRlclNlcnZpY2Uub25DaGFuZ2VkLnBpcGUodGhpcy51bnN1YnNjcmliZXIudGFrZVVudGlsRGVzdHJveSkuc3Vic2NyaWJlKGFzeW5jIChlKSA9PiB7XG4gICAgICBpZiAoKGF3YWl0IHRoaXMudXBkYXRlT3B0aW9uc0Jhc2VkT25Db250ZXh0KCkpID4gMCkge1xuICAgICAgICB0aGlzLmFwcGx5T3B0aW9ucygpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuY2hlY2tGb3JtdWxhRm9yVXBkYXRlKHRoaXMubm9kZSgpLmZvcm11bGEsIGUucGF0aCkpIHtcbiAgICAgICAgYXdhaXQgdGhpcy51cGRhdGVWYWx1ZUJhc2VkT25Gb3JtdWxhKCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5idWlsZGVyU2VydmljZS5vblJlZnJlc2gucGlwZSh0aGlzLnVuc3Vic2NyaWJlci50YWtlVW50aWxEZXN0cm95KS5zdWJzY3JpYmUoYXN5bmMgKCkgPT4ge1xuICAgICAgaWYgKChhd2FpdCB0aGlzLnVwZGF0ZU9wdGlvbnNCYXNlZE9uQ29udGV4dCgpKSA+IDApIHtcbiAgICAgICAgdGhpcy5hcHBseU9wdGlvbnMoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG5cbiAgLy8gYXN5bmMgbmdPbkluaXQoKSB7XG4gIC8vICAgYXdhaXQgdGhpcy5yZXJlbmRlckNvbXBvbmVudCgpO1xuICAvLyB9XG5cbiAgLy8gYXN5bmMgbmdBZnRlclZpZXdJbml0KCkge1xuICAvLyAgIGF3YWl0IHRoaXMucmVyZW5kZXJDb21wb25lbnQoKTtcbiAgLy8gfVxuXG4gIC8vIERldGVjdCBpbnB1dCBjaGFuZ2VzXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlc1snbW9kZSddIHx8IGNoYW5nZXNbJ25vZGUnXSkge1xuICAgICAgLy8gQ2hlY2sgaWYgZWl0aGVyICdtb2RlJyBvciAnbm9kZScgaGFzIGNoYW5nZWRcbiAgICAgIHRoaXMucmVyZW5kZXJDb21wb25lbnQoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlcmVuZGVyQ29tcG9uZW50KCkge1xuICAgIHRoaXMuaXNMb2FkaW5nLnNldChmYWxzZSk7XG4gICAgLy8gQ2FsbCBsb2FkQ29tcG9uZW50IHRvIGNyZWF0ZSBhbmQgcmVuZGVyIHRoZSBjb21wb25lbnRcbiAgICBzZXRUaW1lb3V0KGFzeW5jICgpID0+IHtcbiAgICAgIGF3YWl0IHRoaXMubG9hZENvbXBvbmVudCgpO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMuY29tcG9uZW50UmVmKSB7XG4gICAgICB0aGlzLmNvbXBvbmVudFJlZi5kZXN0cm95KCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBsb2FkQ29tcG9uZW50KCkge1xuICAgIGlmICh0aGlzLmlzTG9hZGluZygpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaXNMb2FkaW5nLnNldCh0cnVlKTtcbiAgICAvLyBEZXN0cm95IHRoZSBleGlzdGluZyBjb21wb25lbnQgaWYgaXQgZXhpc3RzXG4gICAgaWYgKHRoaXMuY29tcG9uZW50UmVmKSB7XG4gICAgICB0aGlzLmNvbXBvbmVudFJlZi5kZXN0cm95KCk7XG4gICAgfVxuICAgIHRoaXMudmlld0NvbnRhaW5lclJlZi5jbGVhcigpO1xuICAgIC8vXG4gICAgY29uc3Qgd2lkZ2V0ID0gdGhpcy53aWRnZXRSZWdpc3RlcnkucmVzb2x2ZSh0aGlzLm5vZGUoKS50eXBlKTtcbiAgICAvL1xuICAgIGNvbnN0IHByb3BzID0gd2lkZ2V0Py5jb21wb25lbnRzW3RoaXMubW9kZSgpXT8ucHJvcGVydGllc1xuICAgICAgPy5maWx0ZXIoKGMpID0+IGMuc2NoZW1hLmRlZmF1bHRWYWx1ZSlcbiAgICAgIC5tYXAoKGMpID0+ICh7IFtjLm5hbWVdOiBjLnNjaGVtYS5kZWZhdWx0VmFsdWUgfSkpXG4gICAgICAucmVkdWNlKChhY2MsIGN1cnIpID0+IHtcbiAgICAgICAgcmV0dXJuIHsgLi4uYWNjLCAuLi5jdXJyIH07XG4gICAgICB9LCB7fSk7XG4gICAgLy9cbiAgICB0aGlzLm1lcmdlZE9wdGlvbnMuc2V0KG1lcmdlKHByb3BzLCB0aGlzLm5vZGUoKS5vcHRpb25zKSB8fCB7fSk7XG4gICAgdGhpcy5wcmVwcm9jZXNzQW5kSW5pdGlhbE9wdGlvbnMoY2xvbmVEZWVwKHRoaXMubm9kZSgpLm9wdGlvbnMpKTtcbiAgICBhd2FpdCB0aGlzLnVwZGF0ZU9wdGlvbnNCYXNlZE9uQ29udGV4dCgpO1xuICAgIC8vXG4gICAgY29uc3QgdG9rZW5WYWx1ZSA9IHtcbiAgICAgIG5vZGU6IHRoaXMubm9kZSgpLFxuICAgICAgb3B0aW9uczogdGhpcy5tZXJnZWRPcHRpb25zKCksXG4gICAgICBjb25maWc6IHdpZGdldCxcbiAgICB9IGFzIEFYUFdpZGdldE5vZGVUb2tlbjtcbiAgICBjb25zdCB0b2tlbiA9IEluamVjdG9yLmNyZWF0ZSh7XG4gICAgICBwYXJlbnQ6IHRoaXMuaW5qZWN0b3IsXG4gICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHByb3ZpZGU6IEFYUF9XSURHRVRfVE9LRU4sXG4gICAgICAgICAgdXNlVmFsdWU6IHRva2VuVmFsdWUsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuICAgIC8vXG4gICAgY29uc3QgY29tID0gYXdhaXQgd2lkZ2V0Py5jb21wb25lbnRzW3RoaXMubW9kZSgpXT8uY29tcG9uZW50KCk7XG4gICAgdGhpcy5jb21wb25lbnRSZWYgPSB0aGlzLnZpZXdDb250YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50PEFYUFdpZGdldENvbXBvbmVudDxhbnk+Pihjb20sIHsgaW5qZWN0b3I6IHRva2VuIH0pO1xuICAgIHRoaXMuaW5zdGFuY2UgPSB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZTtcbiAgICB0aGlzLmluc3RhbmNlLnBhcmVudCA9IHRoaXMucGFyZW50Tm9kZSgpO1xuICAgIHRoaXMuaW5zdGFuY2UuaW5kZXggPSB0aGlzLmluZGV4KCk7XG4gICAgdGhpcy5pbnN0YW5jZS5tb2RlID0gdGhpcy5tb2RlKCk7XG4gICAgYXdhaXQgdGhpcy51cGRhdGVWYWx1ZUJhc2VkT25Gb3JtdWxhKCk7XG4gICAgYXdhaXQgdGhpcy5hc3NpZ25UcmlnZ2VycygpO1xuICAgIC8vXG4gICAgdGhpcy5pc0xvYWRpbmcuc2V0KGZhbHNlKTtcbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlPcHRpb25zKCkge1xuICAgIGlmICghdGhpcy5pbnN0YW5jZSkgcmV0dXJuO1xuICAgIHRoaXMuaW5zdGFuY2Uuc2V0T3B0aW9ucyh0aGlzLm1lcmdlZE9wdGlvbnMoKSk7XG4gIH1cblxuICBwcml2YXRlIGNoZWNrRm9ybXVsYUZvclVwZGF0ZShmb3JtdWxhOiBzdHJpbmcgfCB1bmRlZmluZWQsIHBhdGg/OiBzdHJpbmcgfCBudWxsKTogYm9vbGVhbiB7XG4gICAgaWYgKGZvcm11bGEpIHtcbiAgICAgIGNvbnN0IHJlZ2V4ID0gL2NvbnRleHRcXC5ldmFsXFwoJyhbXiddKyknXFwpL2c7XG4gICAgICBjb25zdCBtYXRjaGVzID0gZm9ybXVsYS5tYXRjaChyZWdleCk7XG4gICAgICBjb25zdCBub2RlcyA9IG1hdGNoZXMgPyBtYXRjaGVzLm1hcCgobWF0Y2g6IGFueSkgPT4gbWF0Y2gubWF0Y2goLycoW14nXSspJy8pWzFdKSA6IFtdO1xuICAgICAgcmV0dXJuIG5vZGVzLmluY2x1ZGVzKHBhdGgpO1xuICAgIH0gZWxzZSByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwcmVwcm9jZXNzQW5kSW5pdGlhbE9wdGlvbnMob2JqOiBhbnksIHBhdGhQcmVmaXg6IHN0cmluZyA9ICcnKTogdm9pZCB7XG4gICAgaWYgKCFvYmopIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgT2JqZWN0LmVudHJpZXMob2JqKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgIGNvbnN0IGN1cnJlbnRQYXRoID0gcGF0aFByZWZpeCA/IGAke3BhdGhQcmVmaXh9LiR7a2V5fWAgOiBrZXk7XG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiB2YWx1ZS5pbmNsdWRlcygne3snKSkge1xuICAgICAgICAvLyBDYWNoZSBkeW5hbWljIGV4cHJlc3Npb24gZm9yIGxhdGVyIGV2YWx1YXRpb25cbiAgICAgICAgdGhpcy5leHByZXNzaW9uRXZhbHVhdG9ycy5zZXQoY3VycmVudFBhdGgsICgpID0+IHRoaXMuZXZhbHVhdGVFeHByZXNzaW9uKHZhbHVlKSk7XG4gICAgICB9IGVsc2UgaWYgKFxuICAgICAgICB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmXG4gICAgICAgIHZhbHVlICE9PSBudWxsICYmXG4gICAgICAgICh2YWx1ZS5jb25zdHJ1Y3RvciA9PT0gT2JqZWN0IHx8IEFycmF5LmlzQXJyYXkodmFsdWUpKVxuICAgICAgKSB7XG4gICAgICAgIC8vIFJlY3Vyc2l2ZWx5IGhhbmRsZSBuZXN0ZWQgb2JqZWN0c1xuICAgICAgICB0aGlzLnByZXByb2Nlc3NBbmRJbml0aWFsT3B0aW9ucyh2YWx1ZSwgY3VycmVudFBhdGgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gQXBwbHkgc3RhdGljIHZhbHVlcyBkaXJlY3RseVxuICAgICAgICB0aGlzLm1lcmdlZE9wdGlvbnMudXBkYXRlKChjdXJyZW50T3B0aW9ucykgPT4ge1xuICAgICAgICAgIHJldHVybiBzZXQoY3VycmVudE9wdGlvbnMsIGN1cnJlbnRQYXRoLCB2YWx1ZSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgdXBkYXRlT3B0aW9uc0Jhc2VkT25Db250ZXh0KCkge1xuICAgIGNvbnN0IHVwZGF0ZVByb21pc2VzID0gQXJyYXkuZnJvbSh0aGlzLmV4cHJlc3Npb25FdmFsdWF0b3JzKS5tYXAoYXN5bmMgKFtwYXRoLCBldmFsdWF0b3JdKSA9PiB7XG4gICAgICBjb25zdCBuZXdWYWx1ZSA9IGF3YWl0IGV2YWx1YXRvcigpO1xuICAgICAgcmV0dXJuIHsgcGF0aCwgbmV3VmFsdWUgfTtcbiAgICB9KTtcbiAgICAvLyBXYWl0IGZvciBhbGwgZXZhbHVhdG9ycyB0byBjb21wbGV0ZVxuICAgIGNvbnN0IHVwZGF0ZXMgPSBhd2FpdCBQcm9taXNlLmFsbCh1cGRhdGVQcm9taXNlcyk7XG4gICAgLy8gQXBwbHkgdXBkYXRlcyB0byBtZXJnZWRPcHRpb25zXG4gICAgaWYgKHVwZGF0ZXMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5tZXJnZWRPcHRpb25zLnVwZGF0ZSgobykgPT4ge1xuICAgICAgICBjb25zdCB1cGRhdGVkT3B0aW9ucyA9IHsgLi4ubyB9O1xuICAgICAgICB1cGRhdGVzLmZvckVhY2goKHsgcGF0aCwgbmV3VmFsdWUgfSkgPT4ge1xuICAgICAgICAgIC8vIFNldCB0aGUgbmV3IHZhbHVlIGluIHRoZSB1cGRhdGVkT3B0aW9ucyBvYmplY3QgYnkgcGF0aFxuICAgICAgICAgIHNldCh1cGRhdGVkT3B0aW9ucywgcGF0aCwgbmV3VmFsdWUpOyAvLyBBc3N1bWluZyAnc2V0JyBjYW4gaGFuZGxlIHBhdGhzIGxpa2UgJ3Byb3BlcnR5LnN1YnByb3BlcnR5J1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHVwZGF0ZWRPcHRpb25zO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiB1cGRhdGVzLmxlbmd0aDtcbiAgfVxuXG4gIGFzeW5jIHVwZGF0ZVZhbHVlQmFzZWRPbkZvcm11bGEoKSB7XG4gICAgaWYgKHRoaXMubm9kZSgpLmZvcm11bGEpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gYXdhaXQgdGhpcy5ldmFsdWF0ZUV4cHJlc3Npb24odGhpcy5ub2RlKCkuZm9ybXVsYSEpO1xuICAgICAgdGhpcy5pbnN0YW5jZS5zZXRWYWx1ZSh2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBldmFsdWF0ZUV4cHJlc3Npb24odGVtcGxhdGVFeHByZXNzaW9uOiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xuICAgIHRyeSB7XG4gICAgICAvLyBDaGVjayBjYWNoZSBmaXJzdCwgYnV0IGNhY2hlIHRoZSBmdW5jdGlvbiBmb3IgZXZhbHVhdGlvbiwgbm90IHRoZSBldmFsdWF0ZWQgdmFsdWVcbiAgICAgIGlmICghdGhpcy5leHByZXNzaW9uQ2FjaGUuaGFzKHRlbXBsYXRlRXhwcmVzc2lvbikpIHtcbiAgICAgICAgY29uc3QgZXhwcmVzc2lvbk1hdGNoID0gdGVtcGxhdGVFeHByZXNzaW9uLm1hdGNoKC9cXHtcXHtcXHMqKC4qPylcXHMqXFx9XFx9Lyk7XG4gICAgICAgIGlmICghZXhwcmVzc2lvbk1hdGNoKSB7XG4gICAgICAgICAgdGhyb3cgRXJyb3IoYE5vIHZhbGlkIGV4cHJlc3Npb24gZm91bmQgaW4gXCIke3RlbXBsYXRlRXhwcmVzc2lvbn1cImApO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGV4cHJlc3Npb24gPSBleHByZXNzaW9uTWF0Y2hbMV07XG5cbiAgICAgICAgLy8gQ2FjaGUgdGhlIGV2YWx1YXRpb24gZnVuY3Rpb24gaW5zdGVhZCBvZiB0aGUgcmVzdWx0XG4gICAgICAgIGNvbnN0IHNjb3BlID0gdGhpcy5nZXRHbG9iYWxTY29wZSgpO1xuICAgICAgICBjb25zdCBldmFsdWF0aW9uRnVuY3Rpb24gPSBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgY29uc3Qgc2FuZGJveCA9IG5ldyBGdW5jdGlvbihcbiAgICAgICAgICAgICdzY29wZScsXG4gICAgICAgICAgICBgd2l0aCAoc2NvcGUpIHsgcmV0dXJuIChhc3luYyBmdW5jdGlvbigpIHsgcmV0dXJuICR7ZXhwcmVzc2lvbn07IH0pKCk7IH1gXG4gICAgICAgICAgKTtcbiAgICAgICAgICByZXR1cm4gYXdhaXQgc2FuZGJveChzY29wZSk7XG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5leHByZXNzaW9uQ2FjaGUuc2V0KHRlbXBsYXRlRXhwcmVzc2lvbiwgZXZhbHVhdGlvbkZ1bmN0aW9uKTtcbiAgICAgIH1cblxuICAgICAgLy8gUmV0cmlldmUgdGhlIGZ1bmN0aW9uIGZyb20gdGhlIGNhY2hlIGFuZCBjYWxsIGl0IHRvIGV2YWx1YXRlIHRoZSBleHByZXNzaW9uXG4gICAgICBjb25zdCBldmFsdWF0ZSA9IHRoaXMuZXhwcmVzc2lvbkNhY2hlLmdldCh0ZW1wbGF0ZUV4cHJlc3Npb24pO1xuICAgICAgaWYgKGV2YWx1YXRlKSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGV2YWx1YXRlKCk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBFcnJvcihgRmFpbGVkIHRvIHJldHJpZXZlIGV2YWx1YXRpb24gZnVuY3Rpb24gZm9yIGV4cHJlc3Npb246IFwiJHt0ZW1wbGF0ZUV4cHJlc3Npb259XCJgKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZXZhbHVhdGluZyBleHByZXNzaW9uOicsIGVycm9yKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldEdsb2JhbFNjb3BlKCkge1xuICAgIGlmICh0aGlzLnNjb3BlKSByZXR1cm4gdGhpcy5zY29wZTtcbiAgICB0aGlzLnNjb3BlID0ge307XG4gICAgc2V0KHRoaXMuc2NvcGUsICdjb250ZXh0JywgdGhpcy5nZXRDb250ZXh0U2NvcGUoKSk7XG4gICAgc2V0KHRoaXMuc2NvcGUsICdldmVudHMnLCB0aGlzLmdldEV2ZW50U2NvcGUoKSk7XG4gICAgc2V0KHRoaXMuc2NvcGUsICd3aWRnZXQnLCB0aGlzLmdldFdpZGdldFNjb3BlKCkpO1xuICAgIHNldCh0aGlzLnNjb3BlLCAnbWV0aG9kcycsIHRoaXMuZ2V0RnVuY3Rpb25TY29wZSgpKTtcbiAgICBzZXQodGhpcy5zY29wZSwgJ3ZhcnMnLCB0aGlzLmdldFZhcmlhYmxlc1Njb3BlKCkpO1xuICAgIHJldHVybiB0aGlzLnNjb3BlO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDb250ZXh0U2NvcGUoKTogYW55IHtcbiAgICBjb25zdCBzY29wZTogYW55ID0ge307XG4gICAgc2V0KHNjb3BlLCAnZXZhbCcsIChwYXRoOiBzdHJpbmcpID0+IHRoaXMuYnVpbGRlclNlcnZpY2UuZ2V0VmFsdWUocGF0aCkpO1xuICAgIHJldHVybiBzY29wZTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RXZlbnRTY29wZSgpOiBhbnkge1xuICAgIGNvbnN0IHNjb3BlOiBhbnkgPSB7fTtcbiAgICBzZXQoc2NvcGUsICdjb250ZXh0JywgKHBhdGg6IHN0cmluZykgPT4gdGhpcy5idWlsZGVyU2VydmljZS5vbkNoYW5nZWQucGlwZShmaWx0ZXIoKGMpID0+IGMucGF0aCA9PSBwYXRoKSkpO1xuICAgIHNldChzY29wZSwgJ2Zyb20nLCAoZXZlbnQ6IHN0cmluZykgPT4gZ2V0KHRoaXMuaW5zdGFuY2UuYXBpKCksIGV2ZW50KSk7XG4gICAgcmV0dXJuIHNjb3BlO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRXaWRnZXRTY29wZSgpOiBhbnkge1xuICAgIGNvbnN0IHNjb3BlOiBhbnkgPSB7fTtcbiAgICBzZXQoc2NvcGUsICdjYWxsJywgKG5hbWU6IHN0cmluZywgLi4uYXJnczogYW55W10pID0+IHtcbiAgICAgIHRoaXMuaW5zdGFuY2UuY2FsbChuYW1lLCAuLi5hcmdzKTtcbiAgICB9KTtcbiAgICBzZXQoc2NvcGUsICdmaW5kJywgKGlkOiBzdHJpbmcpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmJ1aWxkZXJTZXJ2aWNlLmdldFdpZGdldChpZCk/LmFwaSgpO1xuICAgIH0pO1xuICAgIHJldHVybiBzY29wZTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RnVuY3Rpb25TY29wZSgpOiBhbnkge1xuICAgIGNvbnN0IHNjb3BlOiBhbnkgPSB7fTtcbiAgICBzZXQoc2NvcGUsICdzdW0nLCAodmFsdWVzOiBhbnkpID0+IHtcbiAgICAgIHJldHVybiBzdW0odmFsdWVzKTtcbiAgICB9KTtcbiAgICBPYmplY3QuZW50cmllcyh0aGlzLmJ1aWxkZXJTZXJ2aWNlLmZ1bmN0aW9ucykuZm9yRWFjaCgoaSkgPT4ge1xuICAgICAgc2V0KHNjb3BlLCBpWzBdLCAoLi4uYXJnczogYW55W10pID0+IHtcbiAgICAgICAgcmV0dXJuIGlbMV0oLi4uYXJncyk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICByZXR1cm4gc2NvcGU7XG4gIH1cblxuICBwcml2YXRlIGdldFZhcmlhYmxlc1Njb3BlKCk6IGFueSB7XG4gICAgY29uc3Qgc2NvcGU6IGFueSA9IHt9O1xuICAgIHNldChzY29wZSwgJ2V2YWwnLCAocGF0aDogc3RyaW5nKSA9PiBnZXQodGhpcy5idWlsZGVyU2VydmljZS52YXJpYWJsZXMsIHBhdGgpKTtcbiAgICByZXR1cm4gc2NvcGU7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGFzc2lnblRyaWdnZXJzKCkge1xuICAgIHRoaXMubm9kZSgpLnRyaWdnZXJzPy5mb3JFYWNoKCh0KSA9PiB7XG4gICAgICBjb25zdCBldmVudCA9IHRoaXMuZXZhbHVhdGVUcmlnZ2VyKHQuZXZlbnQpO1xuICAgICAgZXZlbnQ/LnBpcGUodGhpcy51bnN1YnNjcmliZXIudGFrZVVudGlsRGVzdHJveSkuc3Vic2NyaWJlKChjKSA9PiB7XG4gICAgICAgIHRoaXMuZXZhbHVhdGVBY3Rpb24odC5hY3Rpb24pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGV2YWx1YXRlVHJpZ2dlcih0ZW1wbGF0ZUV4cHJlc3Npb246IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB8IG51bGwge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBleHByZXNzaW9uTWF0Y2ggPSB0ZW1wbGF0ZUV4cHJlc3Npb24ubWF0Y2goL1xce1xce1xccyooLio/KVxccypcXH1cXH0vKTtcbiAgICAgIGlmICghZXhwcmVzc2lvbk1hdGNoKSB7XG4gICAgICAgIHRocm93IEVycm9yKGBObyB2YWxpZCBleHByZXNzaW9uIGZvdW5kIGluIFwiJHt0ZW1wbGF0ZUV4cHJlc3Npb259XCJgKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGV4cHJlc3Npb24gPSBleHByZXNzaW9uTWF0Y2hbMV07XG5cbiAgICAgIC8vIENhY2hlIHRoZSBldmFsdWF0aW9uIGZ1bmN0aW9uIGluc3RlYWQgb2YgdGhlIHJlc3VsdFxuICAgICAgY29uc3Qgc2NvcGUgPSB0aGlzLmdldEdsb2JhbFNjb3BlKCk7XG4gICAgICBjb25zdCBzYW5kYm94ID0gbmV3IEZ1bmN0aW9uKCdzY29wZScsIGB3aXRoIChzY29wZSkgeyByZXR1cm4gKCAgZnVuY3Rpb24oKSB7IHJldHVybiAke2V4cHJlc3Npb259OyB9KSgpOyB9YCk7XG4gICAgICByZXR1cm4gc2FuZGJveChzY29wZSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGV2YWx1YXRpbmcgZXhwcmVzc2lvbjonLCBlcnJvcik7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGV2YWx1YXRlQWN0aW9uKHRlbXBsYXRlRXhwcmVzc2lvbjogc3RyaW5nKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGV4cHJlc3Npb25NYXRjaCA9IHRlbXBsYXRlRXhwcmVzc2lvbi5tYXRjaCgvXFx7XFx7XFxzKiguKj8pXFxzKlxcfVxcfS8pO1xuICAgICAgaWYgKCFleHByZXNzaW9uTWF0Y2gpIHtcbiAgICAgICAgdGhyb3cgRXJyb3IoYE5vIHZhbGlkIGV4cHJlc3Npb24gZm91bmQgaW4gXCIke3RlbXBsYXRlRXhwcmVzc2lvbn1cImApO1xuICAgICAgfVxuICAgICAgY29uc3QgZXhwcmVzc2lvbiA9IGV4cHJlc3Npb25NYXRjaFsxXTtcblxuICAgICAgLy8gQ2FjaGUgdGhlIGV2YWx1YXRpb24gZnVuY3Rpb24gaW5zdGVhZCBvZiB0aGUgcmVzdWx0XG4gICAgICBjb25zdCBzY29wZTogYW55ID0gdGhpcy5nZXRHbG9iYWxTY29wZSgpO1xuICAgICAgY29uc3Qgc2FuZGJveCA9IG5ldyBGdW5jdGlvbignc2NvcGUnLCBgd2l0aCAoc2NvcGUpIHsgICR7ZXhwcmVzc2lvbn0gfWApO1xuICAgICAgc2FuZGJveChzY29wZSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGV2YWx1YXRpbmcgZXhwcmVzc2lvbjonLCBlcnJvcik7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
313
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LXJlbmRlcmVyLmNvbXBvbmVudC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2xheW91dC9idWlsZGVyL3NyYy9saWIvYnVpbGRlci93aWRnZXQtcmVuZGVyZXIuY29tcG9uZW50LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUVMLFNBQVMsRUFDVCxRQUFRLEVBRVIsZ0JBQWdCLEVBRWhCLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQzVELE9BQU8sRUFBYyxNQUFNLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDNUQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdEUsT0FBTyxFQUtMLGdCQUFnQixHQUNqQixNQUFNLGdCQUFnQixDQUFDOztBQVV4QixNQUFNLE9BQU8sMEJBQTBCO0lBdUJyQztRQXRCQSxlQUFVLEdBQUcsS0FBSyxFQUE2QixDQUFDO1FBRWhELFVBQUssR0FBRyxLQUFLLEVBQWlCLENBQUM7UUFFL0IsU0FBSSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQXVCLENBQUM7UUFDN0MsU0FBSSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQWlCLENBQUM7UUFFN0Isa0JBQWEsR0FBd0IsTUFBTSxDQUFNLEVBQUUsQ0FBQyxDQUFDO1FBRXZELGFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDMUIsbUJBQWMsR0FBRyxNQUFN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QUFDLENBQUM7WUFDeEUsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO2dCQUNyQixNQUFNLEtBQUssQ0FBQyxpQ0FBaUMsa0JBQWtCLEdBQUcsQ0FBQyxDQUFDO1lBQ3RFLENBQUM7WUFDRCxNQUFNLFVBQVUsR0FBRyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFdEMsc0RBQXNEO1lBQ3RELE1BQU0sS0FBSyxHQUFRLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN6QyxNQUFNLE9BQU8sR0FBRyxJQUFJLFFBQVEsQ0FBQyxPQUFPLEVBQUUsbUJBQW1CLFVBQVUsSUFBSSxDQUFDLENBQUM7WUFDekUsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pCLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsT0FBTyxDQUFDLEtBQUssQ0FBQyw4QkFBOEIsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN2RCxDQUFDO0lBQ0gsQ0FBQzs4R0ExVFUsMEJBQTBCO2tHQUExQiwwQkFBMEIsbWlCQU4xQjtZQUNUO2dCQUNFLE9BQU8sRUFBRSxjQUFjO2FBQ3hCO1NBQ0Y7OzJGQUVVLDBCQUEwQjtrQkFSdEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsdUJBQXVCO29CQUNqQyxTQUFTLEVBQUU7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGNBQWM7eUJBQ3hCO3FCQUNGO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhVbnN1YnNjcmliZXIgfSBmcm9tICdAYWNvcmV4L2NvcmUvdXRpbHMnO1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50UmVmLFxuICBEaXJlY3RpdmUsXG4gIEluamVjdG9yLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q29udGFpbmVyUmVmLFxuICBXcml0YWJsZVNpZ25hbCxcbiAgaW5qZWN0LFxuICBpbnB1dCxcbiAgc2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNsb25lRGVlcCwgZ2V0LCBtZXJnZSwgc2V0LCBzdW0gfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgZmlsdGVyIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBWFBMYXlvdXRCdWlsZGVyU2VydmljZSB9IGZyb20gJy4vYnVpbGRlci5zZXJ2aWNlJztcbmltcG9ydCB7IEFYUFdpZGdldFJlZ2lzdHJ5U2VydmljZSB9IGZyb20gJy4vd2lkZ2V0LXJlZ2lzdGVyeS5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIEFYUFdpZGdldENvbXBvbmVudCxcbiAgQVhQV2lkZ2V0Tm9kZSxcbiAgQVhQV2lkZ2V0Tm9kZVRva2VuLFxuICBBWFBXaWRnZXRSZW5kZXJNb2RlLFxuICBBWFBfV0lER0VUX1RPS0VOLFxufSBmcm9tICcuL3dpZGdldC50eXBlcyc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1theHAtd2lkZ2V0LXJlbmRlcmVyXScsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IEFYVW5zdWJzY3JpYmVyLFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEFYUFdpZGdldFJlbmRlcmVyRGlyZWN0aXZlIHtcbiAgcGFyZW50Tm9kZSA9IGlucHV0PEFYUFdpZGdldENvbXBvbmVudCB8IG51bGw+KCk7XG5cbiAgaW5kZXggPSBpbnB1dDxudW1iZXIgfCBudWxsPigpO1xuXG4gIG1vZGUgPSBpbnB1dC5yZXF1aXJlZDxBWFBXaWRnZXRSZW5kZXJNb2RlPigpO1xuICBub2RlID0gaW5wdXQucmVxdWlyZWQ8QVhQV2lkZ2V0Tm9kZT4oKTtcblxuICBwcm90ZWN0ZWQgbWVyZ2VkT3B0aW9uczogV3JpdGFibGVTaWduYWw8YW55PiA9IHNpZ25hbDxhbnk+KHt9KTtcblxuICBwcml2YXRlIGluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcbiAgcHJvdGVjdGVkIGJ1aWxkZXJTZXJ2aWNlID0gaW5qZWN0KEFYUExheW91dEJ1aWxkZXJTZXJ2aWNlKTtcbiAgcHJvdGVjdGVkIHdpZGdldFJlZ2lzdGVyeSA9IGluamVjdChBWFBXaWRnZXRSZWdpc3RyeVNlcnZpY2UpO1xuICBwcm90ZWN0ZWQgdW5zdWJzY3JpYmVyID0gaW5qZWN0KEFYVW5zdWJzY3JpYmVyKTtcbiAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmID0gaW5qZWN0KFZpZXdDb250YWluZXJSZWYpO1xuXG4gIHByb3RlY3RlZCBpc0xvYWRpbmcgPSBzaWduYWwoZmFsc2UpO1xuICBwcml2YXRlIGluc3RhbmNlITogQVhQV2lkZ2V0Q29tcG9uZW50O1xuICBwcml2YXRlIGV4cHJlc3Npb25DYWNoZTogTWFwPHN0cmluZywgKCkgPT4gUHJvbWlzZTxhbnk+PiA9IG5ldyBNYXAoKTtcbiAgcHJpdmF0ZSBleHByZXNzaW9uRXZhbHVhdG9yczogTWFwPHN0cmluZywgKCkgPT4gUHJvbWlzZTxhbnk+PiA9IG5ldyBNYXAoKTtcbiAgcHJpdmF0ZSBzY29wZTogYW55ID0gbnVsbDtcbiAgcHJpdmF0ZSBjb21wb25lbnRSZWY6IENvbXBvbmVudFJlZjxhbnk+O1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuYnVpbGRlclNlcnZpY2Uub25DaGFuZ2VkLnBpcGUodGhpcy51bnN1YnNjcmliZXIudGFrZVVudGlsRGVzdHJveSkuc3Vic2NyaWJlKGFzeW5jIChlKSA9PiB7XG4gICAgICBpZiAoKGF3YWl0IHRoaXMudXBkYXRlT3B0aW9uc0Jhc2VkT25Db250ZXh0KCkpID4gMCkge1xuICAgICAgICB0aGlzLmFwcGx5T3B0aW9ucygpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuY2hlY2tGb3JtdWxhRm9yVXBkYXRlKHRoaXMubm9kZSgpLmZvcm11bGEsIGUucGF0aCkpIHtcbiAgICAgICAgYXdhaXQgdGhpcy51cGRhdGVWYWx1ZUJhc2VkT25Gb3JtdWxhKCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5idWlsZGVyU2VydmljZS5vblJlZnJlc2gucGlwZSh0aGlzLnVuc3Vic2NyaWJlci50YWtlVW50aWxEZXN0cm95KS5zdWJzY3JpYmUoYXN5bmMgKCkgPT4ge1xuICAgICAgaWYgKChhd2FpdCB0aGlzLnVwZGF0ZU9wdGlvbnNCYXNlZE9uQ29udGV4dCgpKSA+IDApIHtcbiAgICAgICAgdGhpcy5hcHBseU9wdGlvbnMoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8vIERldGVjdCBpbnB1dCBjaGFuZ2VzXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlc1snbW9kZSddIHx8IGNoYW5nZXNbJ25vZGUnXSkge1xuICAgICAgLy8gQ2hlY2sgaWYgZWl0aGVyICdtb2RlJyBvciAnbm9kZScgaGFzIGNoYW5nZWRcbiAgICAgIHRoaXMucmVyZW5kZXJDb21wb25lbnQoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlcmVuZGVyQ29tcG9uZW50KCkge1xuICAgIHRoaXMuaXNMb2FkaW5nLnNldChmYWxzZSk7XG4gICAgLy8gQ2FsbCBsb2FkQ29tcG9uZW50IHRvIGNyZWF0ZSBhbmQgcmVuZGVyIHRoZSBjb21wb25lbnRcbiAgICBzZXRUaW1lb3V0KGFzeW5jICgpID0+IHtcbiAgICAgIGF3YWl0IHRoaXMubG9hZENvbXBvbmVudCgpO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMuY29tcG9uZW50UmVmKSB7XG4gICAgICB0aGlzLmNvbXBvbmVudFJlZi5kZXN0cm95KCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBsb2FkQ29tcG9uZW50KCkge1xuICAgIGlmICh0aGlzLmlzTG9hZGluZygpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaXNMb2FkaW5nLnNldCh0cnVlKTtcbiAgICAvLyBEZXN0cm95IHRoZSBleGlzdGluZyBjb21wb25lbnQgaWYgaXQgZXhpc3RzXG4gICAgaWYgKHRoaXMuY29tcG9uZW50UmVmKSB7XG4gICAgICB0aGlzLmNvbXBvbmVudFJlZi5kZXN0cm95KCk7XG4gICAgfVxuICAgIHRoaXMudmlld0NvbnRhaW5lclJlZi5jbGVhcigpO1xuICAgIC8vXG4gICAgY29uc3Qgd2lkZ2V0ID0gdGhpcy53aWRnZXRSZWdpc3RlcnkucmVzb2x2ZSh0aGlzLm5vZGUoKS50eXBlKTtcbiAgICAvL1xuICAgIGNvbnN0IHByb3BzID0gWy4uLih3aWRnZXQ/LnByb3BlcnRpZXMgPz8gW10pLCAuLi4od2lkZ2V0Py5jb21wb25lbnRzW3RoaXMubW9kZSgpXT8ucHJvcGVydGllcyA/PyBbXSldXG4gICAgICA/LmZpbHRlcigoYykgPT4gYy5zY2hlbWEuZGVmYXVsdFZhbHVlICE9IG51bGwpXG4gICAgICAubWFwKChjKSA9PiAoeyBbYy5uYW1lXTogYy5zY2hlbWEuZGVmYXVsdFZhbHVlIH0pKVxuICAgICAgLnJlZHVjZSgoYWNjLCBjdXJyKSA9PiB7XG4gICAgICAgIHJldHVybiB7IC4uLmFjYywgLi4uY3VyciB9O1xuICAgICAgfSwge30pO1xuXG4gICAgLy9cbiAgICB0aGlzLm1lcmdlZE9wdGlvbnMuc2V0KG1lcmdlKHByb3BzLCB0aGlzLm5vZGUoKS5vcHRpb25zKSB8fCB7fSk7XG5cbiAgICB0aGlzLnByZXByb2Nlc3NBbmRJbml0aWFsT3B0aW9ucyhjbG9uZURlZXAodGhpcy5ub2RlKCkub3B0aW9ucykpO1xuICAgIGF3YWl0IHRoaXMudXBkYXRlT3B0aW9uc0Jhc2VkT25Db250ZXh0KCk7XG4gICAgLy9cbiAgICBjb25zdCB0b2tlblZhbHVlID0ge1xuICAgICAgbm9kZTogdGhpcy5ub2RlKCksXG4gICAgICBvcHRpb25zOiB0aGlzLm1lcmdlZE9wdGlvbnMoKSxcbiAgICAgIGNvbmZpZzogd2lkZ2V0LFxuICAgIH0gYXMgQVhQV2lkZ2V0Tm9kZVRva2VuO1xuICAgIGNvbnN0IHRva2VuID0gSW5qZWN0b3IuY3JlYXRlKHtcbiAgICAgIHBhcmVudDogdGhpcy5pbmplY3RvcixcbiAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgcHJvdmlkZTogQVhQX1dJREdFVF9UT0tFTixcbiAgICAgICAgICB1c2VWYWx1ZTogdG9rZW5WYWx1ZSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG4gICAgLy9cbiAgICBjb25zdCBjb20gPSBhd2FpdCB3aWRnZXQ/LmNvbXBvbmVudHNbdGhpcy5tb2RlKCldPy5jb21wb25lbnQoKTtcbiAgICB0aGlzLmNvbXBvbmVudFJlZiA9IHRoaXMudmlld0NvbnRhaW5lclJlZi5jcmVhdGVDb21wb25lbnQ8QVhQV2lkZ2V0Q29tcG9uZW50PGFueT4+KGNvbSwgeyBpbmplY3RvcjogdG9rZW4gfSk7XG4gICAgdGhpcy5pbnN0YW5jZSA9IHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlO1xuICAgIHRoaXMuaW5zdGFuY2UucGFyZW50ID0gdGhpcy5wYXJlbnROb2RlKCk7XG4gICAgdGhpcy5pbnN0YW5jZS5pbmRleCA9IHRoaXMuaW5kZXgoKTtcbiAgICB0aGlzLmluc3RhbmNlLm1vZGUgPSB0aGlzLm1vZGUoKTtcbiAgICBhd2FpdCB0aGlzLnVwZGF0ZVZhbHVlQmFzZWRPbkZvcm11bGEoKTtcbiAgICBhd2FpdCB0aGlzLmFzc2lnblRyaWdnZXJzKCk7XG4gICAgLy9cbiAgICB0aGlzLmlzTG9hZGluZy5zZXQoZmFsc2UpO1xuICB9XG5cbiAgcHJpdmF0ZSBhcHBseU9wdGlvbnMoKSB7XG4gICAgaWYgKCF0aGlzLmluc3RhbmNlKSByZXR1cm47XG4gICAgdGhpcy5pbnN0YW5jZS5zZXRPcHRpb25zKHRoaXMubWVyZ2VkT3B0aW9ucygpKTtcbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tGb3JtdWxhRm9yVXBkYXRlKGZvcm11bGE6IHN0cmluZyB8IHVuZGVmaW5lZCwgcGF0aD86IHN0cmluZyB8IG51bGwpOiBib29sZWFuIHtcbiAgICBpZiAoZm9ybXVsYSkge1xuICAgICAgY29uc3QgcmVnZXggPSAvY29udGV4dFxcLmV2YWxcXCgnKFteJ10rKSdcXCkvZztcbiAgICAgIGNvbnN0IG1hdGNoZXMgPSBmb3JtdWxhLm1hdGNoKHJlZ2V4KTtcbiAgICAgIGNvbnN0IG5vZGVzID0gbWF0Y2hlcyA/IG1hdGNoZXMubWFwKChtYXRjaDogYW55KSA9PiBtYXRjaC5tYXRjaCgvJyhbXiddKyknLylbMV0pIDogW107XG4gICAgICByZXR1cm4gbm9kZXMuaW5jbHVkZXMocGF0aCk7XG4gICAgfSBlbHNlIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHByZXByb2Nlc3NBbmRJbml0aWFsT3B0aW9ucyhvYmo6IGFueSwgcGF0aFByZWZpeDogc3RyaW5nID0gJycpOiB2b2lkIHtcbiAgICBpZiAoIW9iaikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBPYmplY3QuZW50cmllcyhvYmopLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgY29uc3QgY3VycmVudFBhdGggPSBwYXRoUHJlZml4ID8gYCR7cGF0aFByZWZpeH0uJHtrZXl9YCA6IGtleTtcbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIHZhbHVlLmluY2x1ZGVzKCd7eycpKSB7XG4gICAgICAgIC8vIENhY2hlIGR5bmFtaWMgZXhwcmVzc2lvbiBmb3IgbGF0ZXIgZXZhbHVhdGlvblxuICAgICAgICB0aGlzLmV4cHJlc3Npb25FdmFsdWF0b3JzLnNldChjdXJyZW50UGF0aCwgKCkgPT4gdGhpcy5ldmFsdWF0ZUV4cHJlc3Npb24odmFsdWUpKTtcbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiZcbiAgICAgICAgdmFsdWUgIT09IG51bGwgJiZcbiAgICAgICAgKHZhbHVlLmNvbnN0cnVjdG9yID09PSBPYmplY3QgfHwgQXJyYXkuaXNBcnJheSh2YWx1ZSkpXG4gICAgICApIHtcbiAgICAgICAgLy8gUmVjdXJzaXZlbHkgaGFuZGxlIG5lc3RlZCBvYmplY3RzXG4gICAgICAgIHRoaXMucHJlcHJvY2Vzc0FuZEluaXRpYWxPcHRpb25zKHZhbHVlLCBjdXJyZW50UGF0aCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBBcHBseSBzdGF0aWMgdmFsdWVzIGRpcmVjdGx5XG4gICAgICAgIHRoaXMubWVyZ2VkT3B0aW9ucy51cGRhdGUoKGN1cnJlbnRPcHRpb25zKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHNldChjdXJyZW50T3B0aW9ucywgY3VycmVudFBhdGgsIHZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyB1cGRhdGVPcHRpb25zQmFzZWRPbkNvbnRleHQoKSB7XG4gICAgY29uc3QgdXBkYXRlUHJvbWlzZXMgPSBBcnJheS5mcm9tKHRoaXMuZXhwcmVzc2lvbkV2YWx1YXRvcnMpLm1hcChhc3luYyAoW3BhdGgsIGV2YWx1YXRvcl0pID0+IHtcbiAgICAgIGNvbnN0IG5ld1ZhbHVlID0gYXdhaXQgZXZhbHVhdG9yKCk7XG4gICAgICByZXR1cm4geyBwYXRoLCBuZXdWYWx1ZSB9O1xuICAgIH0pO1xuICAgIC8vIFdhaXQgZm9yIGFsbCBldmFsdWF0b3JzIHRvIGNvbXBsZXRlXG4gICAgY29uc3QgdXBkYXRlcyA9IGF3YWl0IFByb21pc2UuYWxsKHVwZGF0ZVByb21pc2VzKTtcbiAgICAvLyBBcHBseSB1cGRhdGVzIHRvIG1lcmdlZE9wdGlvbnNcbiAgICBpZiAodXBkYXRlcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLm1lcmdlZE9wdGlvbnMudXBkYXRlKChvKSA9PiB7XG4gICAgICAgIGNvbnN0IHVwZGF0ZWRPcHRpb25zID0geyAuLi5vIH07XG4gICAgICAgIHVwZGF0ZXMuZm9yRWFjaCgoeyBwYXRoLCBuZXdWYWx1ZSB9KSA9PiB7XG4gICAgICAgICAgLy8gU2V0IHRoZSBuZXcgdmFsdWUgaW4gdGhlIHVwZGF0ZWRPcHRpb25zIG9iamVjdCBieSBwYXRoXG4gICAgICAgICAgc2V0KHVwZGF0ZWRPcHRpb25zLCBwYXRoLCBuZXdWYWx1ZSk7IC8vIEFzc3VtaW5nICdzZXQnIGNhbiBoYW5kbGUgcGF0aHMgbGlrZSAncHJvcGVydHkuc3VicHJvcGVydHknXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdXBkYXRlZE9wdGlvbnM7XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHVwZGF0ZXMubGVuZ3RoO1xuICB9XG5cbiAgYXN5bmMgdXBkYXRlVmFsdWVCYXNlZE9uRm9ybXVsYSgpIHtcbiAgICBpZiAodGhpcy5ub2RlKCkuZm9ybXVsYSkge1xuICAgICAgY29uc3QgdmFsdWUgPSBhd2FpdCB0aGlzLmV2YWx1YXRlRXhwcmVzc2lvbih0aGlzLm5vZGUoKS5mb3JtdWxhISk7XG4gICAgICB0aGlzLmluc3RhbmNlLnNldFZhbHVlKHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGV2YWx1YXRlRXhwcmVzc2lvbih0ZW1wbGF0ZUV4cHJlc3Npb246IHN0cmluZyk6IFByb21pc2U8YW55PiB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIENoZWNrIGNhY2hlIGZpcnN0LCBidXQgY2FjaGUgdGhlIGZ1bmN0aW9uIGZvciBldmFsdWF0aW9uLCBub3QgdGhlIGV2YWx1YXRlZCB2YWx1ZVxuICAgICAgaWYgKCF0aGlzLmV4cHJlc3Npb25DYWNoZS5oYXModGVtcGxhdGVFeHByZXNzaW9uKSkge1xuICAgICAgICBjb25zdCBleHByZXNzaW9uTWF0Y2ggPSB0ZW1wbGF0ZUV4cHJlc3Npb24ubWF0Y2goL1xce1xce1xccyooLio/KVxccypcXH1cXH0vKTtcbiAgICAgICAgaWYgKCFleHByZXNzaW9uTWF0Y2gpIHtcbiAgICAgICAgICB0aHJvdyBFcnJvcihgTm8gdmFsaWQgZXhwcmVzc2lvbiBmb3VuZCBpbiBcIiR7dGVtcGxhdGVFeHByZXNzaW9ufVwiYCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZXhwcmVzc2lvbiA9IGV4cHJlc3Npb25NYXRjaFsxXTtcblxuICAgICAgICAvLyBDYWNoZSB0aGUgZXZhbHVhdGlvbiBmdW5jdGlvbiBpbnN0ZWFkIG9mIHRoZSByZXN1bHRcbiAgICAgICAgY29uc3Qgc2NvcGUgPSB0aGlzLmdldEdsb2JhbFNjb3BlKCk7XG4gICAgICAgIGNvbnN0IGV2YWx1YXRpb25GdW5jdGlvbiA9IGFzeW5jICgpID0+IHtcbiAgICAgICAgICBjb25zdCBzYW5kYm94ID0gbmV3IEZ1bmN0aW9uKFxuICAgICAgICAgICAgJ3Njb3BlJyxcbiAgICAgICAgICAgIGB3aXRoIChzY29wZSkgeyByZXR1cm4gKGFzeW5jIGZ1bmN0aW9uKCkgeyByZXR1cm4gJHtleHByZXNzaW9ufTsgfSkoKTsgfWBcbiAgICAgICAgICApO1xuICAgICAgICAgIHJldHVybiBhd2FpdCBzYW5kYm94KHNjb3BlKTtcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLmV4cHJlc3Npb25DYWNoZS5zZXQodGVtcGxhdGVFeHByZXNzaW9uLCBldmFsdWF0aW9uRnVuY3Rpb24pO1xuICAgICAgfVxuXG4gICAgICAvLyBSZXRyaWV2ZSB0aGUgZnVuY3Rpb24gZnJvbSB0aGUgY2FjaGUgYW5kIGNhbGwgaXQgdG8gZXZhbHVhdGUgdGhlIGV4cHJlc3Npb25cbiAgICAgIGNvbnN0IGV2YWx1YXRlID0gdGhpcy5leHByZXNzaW9uQ2FjaGUuZ2V0KHRlbXBsYXRlRXhwcmVzc2lvbik7XG4gICAgICBpZiAoZXZhbHVhdGUpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZXZhbHVhdGUoKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IEVycm9yKGBGYWlsZWQgdG8gcmV0cmlldmUgZXZhbHVhdGlvbiBmdW5jdGlvbiBmb3IgZXhwcmVzc2lvbjogXCIke3RlbXBsYXRlRXhwcmVzc2lvbn1cImApO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBldmFsdWF0aW5nIGV4cHJlc3Npb246JywgZXJyb3IpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0R2xvYmFsU2NvcGUoKSB7XG4gICAgaWYgKHRoaXMuc2NvcGUpIHJldHVybiB0aGlzLnNjb3BlO1xuICAgIHRoaXMuc2NvcGUgPSB7fTtcbiAgICBzZXQodGhpcy5zY29wZSwgJ2NvbnRleHQnLCB0aGlzLmdldENvbnRleHRTY29wZSgpKTtcbiAgICBzZXQodGhpcy5zY29wZSwgJ2V2ZW50cycsIHRoaXMuZ2V0RXZlbnRTY29wZSgpKTtcbiAgICBzZXQodGhpcy5zY29wZSwgJ3dpZGdldCcsIHRoaXMuZ2V0V2lkZ2V0U2NvcGUoKSk7XG4gICAgc2V0KHRoaXMuc2NvcGUsICdtZXRob2RzJywgdGhpcy5nZXRGdW5jdGlvblNjb3BlKCkpO1xuICAgIHNldCh0aGlzLnNjb3BlLCAndmFycycsIHRoaXMuZ2V0VmFyaWFibGVzU2NvcGUoKSk7XG4gICAgcmV0dXJuIHRoaXMuc2NvcGU7XG4gIH1cblxuICBwcml2YXRlIGdldENvbnRleHRTY29wZSgpOiBhbnkge1xuICAgIGNvbnN0IHNjb3BlOiBhbnkgPSB7fTtcbiAgICBzZXQoc2NvcGUsICdldmFsJywgKHBhdGg6IHN0cmluZykgPT4gdGhpcy5idWlsZGVyU2VydmljZS5nZXRWYWx1ZShwYXRoKSk7XG4gICAgcmV0dXJuIHNjb3BlO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRFdmVudFNjb3BlKCk6IGFueSB7XG4gICAgY29uc3Qgc2NvcGU6IGFueSA9IHt9O1xuICAgIHNldChzY29wZSwgJ2NvbnRleHQnLCAocGF0aDogc3RyaW5nKSA9PiB0aGlzLmJ1aWxkZXJTZXJ2aWNlLm9uQ2hhbmdlZC5waXBlKGZpbHRlcigoYykgPT4gYy5wYXRoID09IHBhdGgpKSk7XG4gICAgc2V0KHNjb3BlLCAnZnJvbScsIChldmVudDogc3RyaW5nKSA9PiBnZXQodGhpcy5pbnN0YW5jZS5hcGkoKSwgZXZlbnQpKTtcbiAgICByZXR1cm4gc2NvcGU7XG4gIH1cblxuICBwcml2YXRlIGdldFdpZGdldFNjb3BlKCk6IGFueSB7XG4gICAgY29uc3Qgc2NvcGU6IGFueSA9IHt9O1xuICAgIHNldChzY29wZSwgJ2NhbGwnLCAobmFtZTogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSkgPT4ge1xuICAgICAgdGhpcy5pbnN0YW5jZS5jYWxsKG5hbWUsIC4uLmFyZ3MpO1xuICAgIH0pO1xuICAgIHNldChzY29wZSwgJ2ZpbmQnLCAoaWQ6IHN0cmluZykgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuYnVpbGRlclNlcnZpY2UuZ2V0V2lkZ2V0KGlkKT8uYXBpKCk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHNjb3BlO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRGdW5jdGlvblNjb3BlKCk6IGFueSB7XG4gICAgY29uc3Qgc2NvcGU6IGFueSA9IHt9O1xuICAgIHNldChzY29wZSwgJ3N1bScsICh2YWx1ZXM6IGFueSkgPT4ge1xuICAgICAgcmV0dXJuIHN1bSh2YWx1ZXMpO1xuICAgIH0pO1xuICAgIE9iamVjdC5lbnRyaWVzKHRoaXMuYnVpbGRlclNlcnZpY2UuZnVuY3Rpb25zKS5mb3JFYWNoKChpKSA9PiB7XG4gICAgICBzZXQoc2NvcGUsIGlbMF0sICguLi5hcmdzOiBhbnlbXSkgPT4ge1xuICAgICAgICByZXR1cm4gaVsxXSguLi5hcmdzKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHJldHVybiBzY29wZTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VmFyaWFibGVzU2NvcGUoKTogYW55IHtcbiAgICBjb25zdCBzY29wZTogYW55ID0ge307XG4gICAgc2V0KHNjb3BlLCAnZXZhbCcsIChwYXRoOiBzdHJpbmcpID0+IGdldCh0aGlzLmJ1aWxkZXJTZXJ2aWNlLnZhcmlhYmxlcywgcGF0aCkpO1xuICAgIHJldHVybiBzY29wZTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgYXNzaWduVHJpZ2dlcnMoKSB7XG4gICAgdGhpcy5ub2RlKCkudHJpZ2dlcnM/LmZvckVhY2goKHQpID0+IHtcbiAgICAgIGNvbnN0IGV2ZW50ID0gdGhpcy5ldmFsdWF0ZVRyaWdnZXIodC5ldmVudCk7XG4gICAgICBldmVudD8ucGlwZSh0aGlzLnVuc3Vic2NyaWJlci50YWtlVW50aWxEZXN0cm95KS5zdWJzY3JpYmUoKGMpID0+IHtcbiAgICAgICAgdGhpcy5ldmFsdWF0ZUFjdGlvbih0LmFjdGlvbik7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZXZhbHVhdGVUcmlnZ2VyKHRlbXBsYXRlRXhwcmVzc2lvbjogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHwgbnVsbCB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGV4cHJlc3Npb25NYXRjaCA9IHRlbXBsYXRlRXhwcmVzc2lvbi5tYXRjaCgvXFx7XFx7XFxzKiguKj8pXFxzKlxcfVxcfS8pO1xuICAgICAgaWYgKCFleHByZXNzaW9uTWF0Y2gpIHtcbiAgICAgICAgdGhyb3cgRXJyb3IoYE5vIHZhbGlkIGV4cHJlc3Npb24gZm91bmQgaW4gXCIke3RlbXBsYXRlRXhwcmVzc2lvbn1cImApO1xuICAgICAgfVxuICAgICAgY29uc3QgZXhwcmVzc2lvbiA9IGV4cHJlc3Npb25NYXRjaFsxXTtcblxuICAgICAgLy8gQ2FjaGUgdGhlIGV2YWx1YXRpb24gZnVuY3Rpb24gaW5zdGVhZCBvZiB0aGUgcmVzdWx0XG4gICAgICBjb25zdCBzY29wZSA9IHRoaXMuZ2V0R2xvYmFsU2NvcGUoKTtcbiAgICAgIGNvbnN0IHNhbmRib3ggPSBuZXcgRnVuY3Rpb24oJ3Njb3BlJywgYHdpdGggKHNjb3BlKSB7IHJldHVybiAoICBmdW5jdGlvbigpIHsgcmV0dXJuICR7ZXhwcmVzc2lvbn07IH0pKCk7IH1gKTtcbiAgICAgIHJldHVybiBzYW5kYm94KHNjb3BlKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZXZhbHVhdGluZyBleHByZXNzaW9uOicsIGVycm9yKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZXZhbHVhdGVBY3Rpb24odGVtcGxhdGVFeHByZXNzaW9uOiBzdHJpbmcpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgZXhwcmVzc2lvbk1hdGNoID0gdGVtcGxhdGVFeHByZXNzaW9uLm1hdGNoKC9cXHtcXHtcXHMqKC4qPylcXHMqXFx9XFx9Lyk7XG4gICAgICBpZiAoIWV4cHJlc3Npb25NYXRjaCkge1xuICAgICAgICB0aHJvdyBFcnJvcihgTm8gdmFsaWQgZXhwcmVzc2lvbiBmb3VuZCBpbiBcIiR7dGVtcGxhdGVFeHByZXNzaW9ufVwiYCk7XG4gICAgICB9XG4gICAgICBjb25zdCBleHByZXNzaW9uID0gZXhwcmVzc2lvbk1hdGNoWzFdO1xuXG4gICAgICAvLyBDYWNoZSB0aGUgZXZhbHVhdGlvbiBmdW5jdGlvbiBpbnN0ZWFkIG9mIHRoZSByZXN1bHRcbiAgICAgIGNvbnN0IHNjb3BlOiBhbnkgPSB0aGlzLmdldEdsb2JhbFNjb3BlKCk7XG4gICAgICBjb25zdCBzYW5kYm94ID0gbmV3IEZ1bmN0aW9uKCdzY29wZScsIGB3aXRoIChzY29wZSkgeyAgJHtleHByZXNzaW9ufSB9YCk7XG4gICAgICBzYW5kYm94KHNjb3BlKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZXZhbHVhdGluZyBleHByZXNzaW9uOicsIGVycm9yKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { AXUnsubscriber } from '@acorex/core/utils';
|
|
2
2
|
import { ComponentPortal } from '@angular/cdk/portal';
|
|
3
|
-
import { ChangeDetectionStrategy, Component, Injector, Input, inject, signal } from '@angular/core';
|
|
3
|
+
import { ChangeDetectionStrategy, Component, Injector, Input, inject, signal, } from '@angular/core';
|
|
4
4
|
import { cloneDeep, get, merge, set, sum } from 'lodash-es';
|
|
5
5
|
import { filter } from 'rxjs';
|
|
6
6
|
import { AXPLayoutBuilderService } from './builder.service';
|
|
7
7
|
import { AXPWidgetRegistryService } from './widget-registery.service';
|
|
8
|
-
import { AXP_WIDGET_TOKEN } from './widget.types';
|
|
8
|
+
import { AXP_WIDGET_TOKEN, } from './widget.types';
|
|
9
9
|
import * as i0 from "@angular/core";
|
|
10
10
|
import * as i1 from "@angular/common";
|
|
11
11
|
import * as i2 from "@angular/cdk/portal";
|
|
@@ -49,7 +49,7 @@ export class AXPWidgetRendererComponent {
|
|
|
49
49
|
const widget = this.widgetRegistery.resolve(this.node.type);
|
|
50
50
|
//
|
|
51
51
|
const props = widget?.components[this.mode]?.properties
|
|
52
|
-
?.filter((c) => c.schema.defaultValue)
|
|
52
|
+
?.filter((c) => c.schema.defaultValue != null)
|
|
53
53
|
.map((c) => ({ [c.name]: c.schema.defaultValue }))
|
|
54
54
|
.reduce((acc, curr) => {
|
|
55
55
|
return { ...acc, ...curr };
|
|
@@ -109,7 +109,9 @@ export class AXPWidgetRendererComponent {
|
|
|
109
109
|
// Cache dynamic expression for later evaluation
|
|
110
110
|
this.expressionEvaluators.set(currentPath, () => this.evaluateExpression(value));
|
|
111
111
|
}
|
|
112
|
-
else if (typeof value === 'object' &&
|
|
112
|
+
else if (typeof value === 'object' &&
|
|
113
|
+
value !== null &&
|
|
114
|
+
(value.constructor === Object || Array.isArray(value))) {
|
|
113
115
|
// Recursively handle nested objects
|
|
114
116
|
this.preprocessAndInitialOptions(value, currentPath);
|
|
115
117
|
}
|
|
@@ -315,4 +317,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
|
|
|
315
317
|
}], index: [{
|
|
316
318
|
type: Input
|
|
317
319
|
}] } });
|
|
318
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LXJlbmRlcmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vbGF5b3V0L2J1aWxkZXIvc3JjL2xpYi9idWlsZGVyL3dpZGdldC1yZW5kZXJlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3BELE9BQU8sRUFBOEIsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbEYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBZ0IsUUFBUSxFQUFFLEtBQUssRUFBa0IsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsSSxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUM1RCxPQUFPLEVBQWMsTUFBTSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzVELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RFLE9BQU8sRUFBOEUsZ0JBQWdCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7QUFxQjlILE1BQU0sT0FBTywwQkFBMEI7SUFFckMsSUFDVyxJQUFJO1FBQ2IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFDRCxJQUFXLElBQUksQ0FBQyxDQUFnQjtRQUM5QixJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztRQUNmLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBR0QsSUFDVyxJQUFJO1FBQ2IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFDRCxJQUFXLElBQUks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QU0sVUFBVSxHQUFHLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUV0QyxzREFBc0Q7WUFDdEQsTUFBTSxLQUFLLEdBQVEsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3pDLE1BQU0sT0FBTyxHQUFHLElBQUksUUFBUSxDQUFDLE9BQU8sRUFBRSxtQkFBbUIsVUFBVSxJQUFJLENBQUMsQ0FBQztZQUN6RSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakIsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixPQUFPLENBQUMsS0FBSyxDQUFDLDhCQUE4QixFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3ZELENBQUM7SUFDSCxDQUFDOzhHQTVSVSwwQkFBMEI7a0dBQTFCLDBCQUEwQixnSUFOMUI7WUFDVDtnQkFDRSxPQUFPLEVBQUUsY0FBYzthQUN4QjtTQUNGLDBCQWZTOzs7Ozs7Ozs7R0FTVDs7MkZBUVUsMEJBQTBCO2tCQW5CdEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUscUJBQXFCO29CQUMvQixRQUFRLEVBQUU7Ozs7Ozs7OztHQVNUO29CQUNELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxTQUFTLEVBQUU7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGNBQWM7eUJBQ3hCO3FCQUNGO2lCQUNGO3dEQUlZLElBQUk7c0JBRGQsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBV2QsSUFBSTtzQkFEZCxLQUFLO2dCQVNOLFVBQVU7c0JBRFQsS0FBSztnQkFJTixLQUFLO3NCQURKLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWFVuc3Vic2NyaWJlciB9IGZyb20gJ0BhY29yZXgvY29yZS91dGlscyc7XG5pbXBvcnQgeyBDZGtQb3J0YWxPdXRsZXRBdHRhY2hlZFJlZiwgQ29tcG9uZW50UG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBDb21wb25lbnRSZWYsIEluamVjdG9yLCBJbnB1dCwgV3JpdGFibGVTaWduYWwsIGluamVjdCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjbG9uZURlZXAsIGdldCwgbWVyZ2UsIHNldCwgc3VtIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IE9ic2VydmFibGUsIGZpbHRlciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQVhQTGF5b3V0QnVpbGRlclNlcnZpY2UgfSBmcm9tICcuL2J1aWxkZXIuc2VydmljZSc7XG5pbXBvcnQgeyBBWFBXaWRnZXRSZWdpc3RyeVNlcnZpY2UgfSBmcm9tICcuL3dpZGdldC1yZWdpc3Rlcnkuc2VydmljZSc7XG5pbXBvcnQgeyBBWFBXaWRnZXRDb21wb25lbnQsIEFYUFdpZGdldE5vZGUsIEFYUFdpZGdldE5vZGVUb2tlbiwgQVhQV2lkZ2V0UmVuZGVyTW9kZSwgQVhQX1dJREdFVF9UT0tFTiB9IGZyb20gJy4vd2lkZ2V0LnR5cGVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXhwLXdpZGdldC1yZW5kZXJlcicsXG4gIHRlbXBsYXRlOiBgXG4gICAgQGlmKG1lcmdlZE9wdGlvbnMoKS5pc1Zpc2libGUhPWZhbHNlKSB7IEBpZihpc0xvYWRpbmcoKSl7XG4gICAgPGF4LXNrZWxldG9uIFthbmltYXRlZF09XCJ0cnVlXCIgY2xhc3M9XCJheC13LWZ1bGwgIGxnOmF4LXctWzUwJV0gYXgtaC04IGF4LXJvdW5kZWRcIj48L2F4LXNrZWxldG9uPlxuICAgIH0gQGVsc2Uge1xuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0dFwiPjwvbmctY29udGFpbmVyPlxuICAgIH0gfVxuICAgIDxuZy10ZW1wbGF0ZSAjdHQ+XG4gICAgICA8bmctdGVtcGxhdGUgW2Nka1BvcnRhbE91dGxldF09XCJwb3J0YWxcIiAoYXR0YWNoZWQpPVwiaGFuZGxlQXR0YWNoZWQoJGV2ZW50KVwiPjwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgYCxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IEFYVW5zdWJzY3JpYmVyLFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEFYUFdpZGdldFJlbmRlcmVyQ29tcG9uZW50IHtcbiAgcHJpdmF0ZSBfbm9kZTogQVhQV2lkZ2V0Tm9kZTtcbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcbiAgcHVibGljIGdldCBub2RlKCk6IEFYUFdpZGdldE5vZGUge1xuICAgIHJldHVybiB0aGlzLl9ub2RlO1xuICB9XG4gIHB1YmxpYyBzZXQgbm9kZSh2OiBBWFBXaWRnZXROb2RlKSB7XG4gICAgdGhpcy5fbm9kZSA9IHY7XG4gICAgdGhpcy5sb2FkQ29tcG9uZW50KCk7XG4gIH1cblxuICBwcml2YXRlIF9tb2RlOiBBWFBXaWRnZXRSZW5kZXJNb2RlID0gJ2VkaXQnO1xuICBASW5wdXQoKVxuICBwdWJsaWMgZ2V0IG1vZGUoKTogQVhQV2lkZ2V0UmVuZGVyTW9kZSB7XG4gICAgcmV0dXJuIHRoaXMuX21vZGU7XG4gIH1cbiAgcHVibGljIHNldCBtb2RlKHY6IEFYUFdpZGdldFJlbmRlck1vZGUpIHtcbiAgICB0aGlzLl9tb2RlID0gdjtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHBhcmVudE5vZGU6IEFYUFdpZGdldENvbXBvbmVudCB8IG51bGw7XG5cbiAgQElucHV0KClcbiAgaW5kZXg6IG51bWJlciB8IG51bGw7XG5cbiAgcHJvdGVjdGVkIG1lcmdlZE9wdGlvbnM6IFdyaXRhYmxlU2lnbmFsPGFueT4gPSBzaWduYWw8YW55Pih7fSk7XG5cbiAgcHJpdmF0ZSBpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG4gIHByb3RlY3RlZCBidWlsZGVyU2VydmljZSA9IGluamVjdChBWFBMYXlvdXRCdWlsZGVyU2VydmljZSk7XG4gIHByb3RlY3RlZCB3aWRnZXRSZWdpc3RlcnkgPSBpbmplY3QoQVhQV2lkZ2V0UmVnaXN0cnlTZXJ2aWNlKTtcbiAgcHJvdGVjdGVkIHVuc3Vic2NyaWJlciA9IGluamVjdChBWFVuc3Vic2NyaWJlcik7XG5cbiAgcHJvdGVjdGVkIGlzTG9hZGluZyA9IHNpZ25hbCh0cnVlKTtcbiAgcHJpdmF0ZSBpbnN0YW5jZSE6IEFYUFdpZGdldENvbXBvbmVudDtcbiAgcHJvdGVjdGVkIHBvcnRhbCE6IENvbXBvbmVudFBvcnRhbDxhbnk+O1xuICBwcml2YXRlIGV4cHJlc3Npb25DYWNoZTogTWFwPHN0cmluZywgKCkgPT4gUHJvbWlzZTxhbnk+PiA9IG5ldyBNYXAoKTtcbiAgcHJpdmF0ZSBleHByZXNzaW9uRXZhbHVhdG9yczogTWFwPHN0cmluZywgKCkgPT4gUHJvbWlzZTxhbnk+PiA9IG5ldyBNYXAoKTtcbiAgcHJpdmF0ZSBzY29wZTogYW55ID0gbnVsbDtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmJ1aWxkZXJTZXJ2aWNlLm9uQ2hhbmdlZC5waXBlKHRoaXMudW5zdWJzY3JpYmVyLnRha2VVbnRpbERlc3Ryb3kpLnN1YnNjcmliZShhc3luYyAoZSkgPT4ge1xuICAgICAgaWYgKChhd2FpdCB0aGlzLnVwZGF0ZU9wdGlvbnNCYXNlZE9uQ29udGV4dCgpKSA+IDApIHtcbiAgICAgICAgdGhpcy5hcHBseU9wdGlvbnMoKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmNoZWNrRm9ybXVsYUZvclVwZGF0ZSh0aGlzLm5vZGUuZm9ybXVsYSwgZS5wYXRoKSkge1xuICAgICAgICBhd2FpdCB0aGlzLnVwZGF0ZVZhbHVlQmFzZWRPbkZvcm11bGEoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgbG9hZENvbXBvbmVudCgpIHtcbiAgICB0aGlzLmlzTG9hZGluZy5zZXQodHJ1ZSk7XG4gICAgY29uc3Qgd2lkZ2V0ID0gdGhpcy53aWRnZXRSZWdpc3RlcnkucmVzb2x2ZSh0aGlzLm5vZGUudHlwZSk7XG4gICAgLy9cbiAgICBjb25zdCBwcm9wcyA9IHdpZGdldD8uY29tcG9uZW50c1t0aGlzLm1vZGVdPy5wcm9wZXJ0aWVzXG4gICAgICA/LmZpbHRlcigoYykgPT4gYy5zY2hlbWEuZGVmYXVsdFZhbHVlKVxuICAgICAgLm1hcCgoYykgPT4gKHsgW2MubmFtZV06IGMuc2NoZW1hLmRlZmF1bHRWYWx1ZSB9KSlcbiAgICAgIC5yZWR1Y2UoKGFjYywgY3VycikgPT4ge1xuICAgICAgICByZXR1cm4geyAuLi5hY2MsIC4uLmN1cnIgfTtcbiAgICAgIH0sIHt9KTtcbiAgICAvL1xuICAgIHRoaXMubWVyZ2VkT3B0aW9ucy5zZXQobWVyZ2UocHJvcHMsIHRoaXMubm9kZS5vcHRpb25zKSB8fCB7fSk7XG4gICAgdGhpcy5wcmVwcm9jZXNzQW5kSW5pdGlhbE9wdGlvbnMoY2xvbmVEZWVwKHRoaXMubm9kZS5vcHRpb25zKSk7XG4gICAgYXdhaXQgdGhpcy51cGRhdGVPcHRpb25zQmFzZWRPbkNvbnRleHQoKTtcbiAgICBjb25zdCB0b2tlblZhbHVlID0ge1xuICAgICAgbm9kZTogdGhpcy5ub2RlLFxuICAgICAgb3B0aW9uczogdGhpcy5tZXJnZWRPcHRpb25zKCksXG4gICAgICBjb25maWc6IHdpZGdldCxcbiAgICB9IGFzIEFYUFdpZGdldE5vZGVUb2tlbjtcbiAgICBjb25zdCB0b2tlbiA9IEluamVjdG9yLmNyZWF0ZSh7XG4gICAgICBwYXJlbnQ6IHRoaXMuaW5qZWN0b3IsXG4gICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHByb3ZpZGU6IEFYUF9XSURHRVRfVE9LRU4sXG4gICAgICAgICAgdXNlVmFsdWU6IHRva2VuVmFsdWUsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuICAgIHZhciBjb20gPSBhd2FpdCB3aWRnZXQ/LmNvbXBvbmVudHNbdGhpcy5tb2RlXT8uY29tcG9uZW50KCk7XG4gICAgdGhpcy5wb3J0YWwgPSBuZXcgQ29tcG9uZW50UG9ydGFsKGNvbSwgbnVsbCwgdG9rZW4pO1xuICAgIHRoaXMuaXNMb2FkaW5nLnNldChmYWxzZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgaGFuZGxlQXR0YWNoZWQocG9ydGFsT3V0bGV0UmVmOiBDZGtQb3J0YWxPdXRsZXRBdHRhY2hlZFJlZikge1xuICAgIHBvcnRhbE91dGxldFJlZiA9IHBvcnRhbE91dGxldFJlZiBhcyBDb21wb25lbnRSZWY8QVhQV2lkZ2V0Q29tcG9uZW50PjtcbiAgICB0aGlzLmluc3RhbmNlID0gcG9ydGFsT3V0bGV0UmVmLmluc3RhbmNlIGFzIEFYUFdpZGdldENvbXBvbmVudDtcbiAgICB0aGlzLmluc3RhbmNlLnBhcmVudCA9IHRoaXMucGFyZW50Tm9kZTtcbiAgICB0aGlzLmluc3RhbmNlLmluZGV4ID0gdGhpcy5pbmRleDtcbiAgICB0aGlzLmluc3RhbmNlLm1vZGUgPSB0aGlzLm1vZGU7XG4gICAgYXdhaXQgdGhpcy51cGRhdGVWYWx1ZUJhc2VkT25Gb3JtdWxhKCk7XG4gICAgYXdhaXQgdGhpcy5hc3NpZ25UcmlnZ2VycygpO1xuICB9XG5cbiAgcHJpdmF0ZSBhcHBseU9wdGlvbnMoKSB7XG4gICAgaWYgKCF0aGlzLmluc3RhbmNlKSByZXR1cm47XG4gICAgdGhpcy5pbnN0YW5jZS5zZXRPcHRpb25zKHRoaXMubWVyZ2VkT3B0aW9ucygpKTtcbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tGb3JtdWxhRm9yVXBkYXRlKGZvcm11bGE6IHN0cmluZyB8IHVuZGVmaW5lZCwgcGF0aD86IHN0cmluZyB8IG51bGwpOiBib29sZWFuIHtcbiAgICBpZiAoZm9ybXVsYSkge1xuICAgICAgY29uc3QgcmVnZXggPSAvY29udGV4dFxcLmV2YWxcXCgnKFteJ10rKSdcXCkvZztcbiAgICAgIGNvbnN0IG1hdGNoZXMgPSBmb3JtdWxhLm1hdGNoKHJlZ2V4KTtcbiAgICAgIGNvbnN0IG5vZGVzID0gbWF0Y2hlcyA/IG1hdGNoZXMubWFwKChtYXRjaDogYW55KSA9PiBtYXRjaC5tYXRjaCgvJyhbXiddKyknLylbMV0pIDogW107XG4gICAgICByZXR1cm4gbm9kZXMuaW5jbHVkZXMocGF0aCk7XG4gICAgfSBlbHNlIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHByZXByb2Nlc3NBbmRJbml0aWFsT3B0aW9ucyhvYmo6IGFueSwgcGF0aFByZWZpeDogc3RyaW5nID0gJycpOiB2b2lkIHtcbiAgICBpZiAoIW9iaikgcmV0dXJuO1xuICAgIE9iamVjdC5lbnRyaWVzKG9iaikuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICBjb25zdCBjdXJyZW50UGF0aCA9IHBhdGhQcmVmaXggPyBgJHtwYXRoUHJlZml4fS4ke2tleX1gIDoga2V5O1xuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgdmFsdWUuaW5jbHVkZXMoJ3t7JykpIHtcbiAgICAgICAgLy8gQ2FjaGUgZHluYW1pYyBleHByZXNzaW9uIGZvciBsYXRlciBldmFsdWF0aW9uXG4gICAgICAgIHRoaXMuZXhwcmVzc2lvbkV2YWx1YXRvcnMuc2V0KGN1cnJlbnRQYXRoLCAoKSA9PiB0aGlzLmV2YWx1YXRlRXhwcmVzc2lvbih2YWx1ZSkpO1xuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICE9PSBudWxsICYmICh2YWx1ZS5jb25zdHJ1Y3RvciA9PT0gT2JqZWN0IHx8IEFycmF5LmlzQXJyYXkodmFsdWUpKSkge1xuICAgICAgICAvLyBSZWN1cnNpdmVseSBoYW5kbGUgbmVzdGVkIG9iamVjdHNcbiAgICAgICAgdGhpcy5wcmVwcm9jZXNzQW5kSW5pdGlhbE9wdGlvbnModmFsdWUsIGN1cnJlbnRQYXRoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIEFwcGx5IHN0YXRpYyB2YWx1ZXMgZGlyZWN0bHlcbiAgICAgICAgdGhpcy5tZXJnZWRPcHRpb25zLnVwZGF0ZSgoY3VycmVudE9wdGlvbnMpID0+IHtcbiAgICAgICAgICByZXR1cm4gc2V0KGN1cnJlbnRPcHRpb25zLCBjdXJyZW50UGF0aCwgdmFsdWUpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIHVwZGF0ZU9wdGlvbnNCYXNlZE9uQ29udGV4dCgpIHtcbiAgICBjb25zdCB1cGRhdGVzOiBhbnlbXSA9IFtdO1xuICAgIGZvciAobGV0IFtwYXRoLCBldmFsdWF0b3JdIG9mIHRoaXMuZXhwcmVzc2lvbkV2YWx1YXRvcnMpIHtcbiAgICAgIGNvbnN0IG5ld1ZhbHVlID0gYXdhaXQgZXZhbHVhdG9yKCk7XG4gICAgICB1cGRhdGVzLnB1c2goeyBwYXRoLCBuZXdWYWx1ZSB9KTtcbiAgICB9XG4gICAgLy8gQXBwbHkgdXBkYXRlcyB0byBtZXJnZWRPcHRpb25zXG4gICAgaWYgKHVwZGF0ZXMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5tZXJnZWRPcHRpb25zLnVwZGF0ZSgobykgPT4ge1xuICAgICAgICBjb25zdCB1cGRhdGVkT3B0aW9ucyA9IHsgLi4ubyB9O1xuICAgICAgICB1cGRhdGVzLmZvckVhY2goKHsgcGF0aCwgbmV3VmFsdWUgfSkgPT4ge1xuICAgICAgICAgIC8vIFNldCB0aGUgbmV3IHZhbHVlIGluIHRoZSB1cGRhdGVkT3B0aW9ucyBvYmplY3QgYnkgcGF0aFxuICAgICAgICAgIHNldCh1cGRhdGVkT3B0aW9ucywgcGF0aCwgbmV3VmFsdWUpOyAvLyBBc3N1bWluZyAnc2V0JyBjYW4gaGFuZGxlIHBhdGhzIGxpa2UgJ3Byb3BlcnR5LnN1YnByb3BlcnR5J1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHVwZGF0ZWRPcHRpb25zO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiB1cGRhdGVzLmxlbmd0aDtcbiAgfVxuXG4gIGFzeW5jIHVwZGF0ZVZhbHVlQmFzZWRPbkZvcm11bGEoKSB7XG4gICAgaWYgKHRoaXMubm9kZS5mb3JtdWxhKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IGF3YWl0IHRoaXMuZXZhbHVhdGVFeHByZXNzaW9uKHRoaXMubm9kZS5mb3JtdWxhKTtcbiAgICAgIHRoaXMuaW5zdGFuY2Uuc2V0VmFsdWUodmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZXZhbHVhdGVFeHByZXNzaW9uKHRlbXBsYXRlRXhwcmVzc2lvbjogc3RyaW5nKTogUHJvbWlzZTxhbnk+IHtcbiAgICB0cnkge1xuICAgICAgLy8gQ2hlY2sgY2FjaGUgZmlyc3QsIGJ1dCBjYWNoZSB0aGUgZnVuY3Rpb24gZm9yIGV2YWx1YXRpb24sIG5vdCB0aGUgZXZhbHVhdGVkIHZhbHVlXG4gICAgICBpZiAoIXRoaXMuZXhwcmVzc2lvbkNhY2hlLmhhcyh0ZW1wbGF0ZUV4cHJlc3Npb24pKSB7XG4gICAgICAgIGNvbnN0IGV4cHJlc3Npb25NYXRjaCA9IHRlbXBsYXRlRXhwcmVzc2lvbi5tYXRjaCgvXFx7XFx7XFxzKiguKj8pXFxzKlxcfVxcfS8pO1xuICAgICAgICBpZiAoIWV4cHJlc3Npb25NYXRjaCkge1xuICAgICAgICAgIHRocm93IEVycm9yKGBObyB2YWxpZCBleHByZXNzaW9uIGZvdW5kIGluIFwiJHt0ZW1wbGF0ZUV4cHJlc3Npb259XCJgKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBleHByZXNzaW9uID0gZXhwcmVzc2lvbk1hdGNoWzFdO1xuXG4gICAgICAgIC8vIENhY2hlIHRoZSBldmFsdWF0aW9uIGZ1bmN0aW9uIGluc3RlYWQgb2YgdGhlIHJlc3VsdFxuICAgICAgICBjb25zdCBzY29wZSA9IHRoaXMuZ2V0R2xvYmFsU2NvcGUoKTtcbiAgICAgICAgY29uc3QgZXZhbHVhdGlvbkZ1bmN0aW9uID0gYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHNhbmRib3ggPSBuZXcgRnVuY3Rpb24oJ3Njb3BlJywgYHdpdGggKHNjb3BlKSB7IHJldHVybiAoYXN5bmMgZnVuY3Rpb24oKSB7IHJldHVybiAke2V4cHJlc3Npb259OyB9KSgpOyB9YCk7XG4gICAgICAgICAgcmV0dXJuIGF3YWl0IHNhbmRib3goc2NvcGUpO1xuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuZXhwcmVzc2lvbkNhY2hlLnNldCh0ZW1wbGF0ZUV4cHJlc3Npb24sIGV2YWx1YXRpb25GdW5jdGlvbik7XG4gICAgICB9XG5cbiAgICAgIC8vIFJldHJpZXZlIHRoZSBmdW5jdGlvbiBmcm9tIHRoZSBjYWNoZSBhbmQgY2FsbCBpdCB0byBldmFsdWF0ZSB0aGUgZXhwcmVzc2lvblxuICAgICAgY29uc3QgZXZhbHVhdGUgPSB0aGlzLmV4cHJlc3Npb25DYWNoZS5nZXQodGVtcGxhdGVFeHByZXNzaW9uKTtcbiAgICAgIGlmIChldmFsdWF0ZSkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBldmFsdWF0ZSgpO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgRXJyb3IoYEZhaWxlZCB0byByZXRyaWV2ZSBldmFsdWF0aW9uIGZ1bmN0aW9uIGZvciBleHByZXNzaW9uOiBcIiR7dGVtcGxhdGVFeHByZXNzaW9ufVwiYCk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGV2YWx1YXRpbmcgZXhwcmVzc2lvbjonLCBlcnJvcik7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRHbG9iYWxTY29wZSgpIHtcbiAgICBpZiAodGhpcy5zY29wZSkgcmV0dXJuIHRoaXMuc2NvcGU7XG4gICAgdGhpcy5zY29wZSA9IHt9O1xuICAgIHNldCh0aGlzLnNjb3BlLCAnY29udGV4dCcsIHRoaXMuZ2V0Q29udGV4dFNjb3BlKCkpO1xuICAgIHNldCh0aGlzLnNjb3BlLCAnZXZlbnRzJywgdGhpcy5nZXRFdmVudFNjb3BlKCkpO1xuICAgIHNldCh0aGlzLnNjb3BlLCAnd2lkZ2V0JywgdGhpcy5nZXRXaWRnZXRTY29wZSgpKTtcbiAgICBzZXQodGhpcy5zY29wZSwgJ21ldGhvZHMnLCB0aGlzLmdldEZ1bmN0aW9uU2NvcGUoKSk7XG4gICAgc2V0KHRoaXMuc2NvcGUsICd2YXJzJywgdGhpcy5nZXRWYXJpYWJsZXNTY29wZSgpKTtcbiAgICByZXR1cm4gdGhpcy5zY29wZTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q29udGV4dFNjb3BlKCk6IGFueSB7XG4gICAgY29uc3Qgc2NvcGU6IGFueSA9IHt9O1xuICAgIHNldChzY29wZSwgJ2V2YWwnLCAocGF0aDogc3RyaW5nKSA9PiB0aGlzLmJ1aWxkZXJTZXJ2aWNlLmdldFZhbHVlKHBhdGgpKTtcbiAgICByZXR1cm4gc2NvcGU7XG4gIH1cblxuICBwcml2YXRlIGdldEV2ZW50U2NvcGUoKTogYW55IHtcbiAgICBjb25zdCBzY29wZTogYW55ID0ge307XG4gICAgc2V0KHNjb3BlLCAnY29udGV4dCcsIChwYXRoOiBzdHJpbmcpID0+IHRoaXMuYnVpbGRlclNlcnZpY2Uub25DaGFuZ2VkLnBpcGUoZmlsdGVyKChjKSA9PiBjLnBhdGggPT0gcGF0aCkpKTtcbiAgICBzZXQoc2NvcGUsICdmcm9tJywgKGV2ZW50OiBzdHJpbmcpID0+IGdldCh0aGlzLmluc3RhbmNlLmFwaSgpLCBldmVudCkpO1xuICAgIHJldHVybiBzY29wZTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0V2lkZ2V0U2NvcGUoKTogYW55IHtcbiAgICBjb25zdCBzY29wZTogYW55ID0ge307XG4gICAgc2V0KHNjb3BlLCAnY2FsbCcsIChuYW1lOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSA9PiB7XG4gICAgICB0aGlzLmluc3RhbmNlLmNhbGwobmFtZSwgLi4uYXJncyk7XG4gICAgfSk7XG4gICAgc2V0KHNjb3BlLCAnZmluZCcsIChpZDogc3RyaW5nKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5idWlsZGVyU2VydmljZS5nZXRXaWRnZXQoaWQpPy5hcGkoKTtcbiAgICB9KTtcbiAgICByZXR1cm4gc2NvcGU7XG4gIH1cblxuICBwcml2YXRlIGdldEZ1bmN0aW9uU2NvcGUoKTogYW55IHtcbiAgICBjb25zdCBzY29wZTogYW55ID0ge307XG4gICAgc2V0KHNjb3BlLCAnc3VtJywgKHZhbHVlczogYW55KSA9PiB7XG4gICAgICByZXR1cm4gc3VtKHZhbHVlcyk7XG4gICAgfSk7XG4gICAgT2JqZWN0LmVudHJpZXModGhpcy5idWlsZGVyU2VydmljZS5mdW5jdGlvbnMpLmZvckVhY2goKGkpID0+IHtcbiAgICAgIHNldChzY29wZSwgaVswXSwgKC4uLmFyZ3M6IGFueVtdKSA9PiB7XG4gICAgICAgIHJldHVybiBpWzFdKC4uLmFyZ3MpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHNjb3BlO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRWYXJpYWJsZXNTY29wZSgpOiBhbnkge1xuICAgIGNvbnN0IHNjb3BlOiBhbnkgPSB7fTtcbiAgICBzZXQoc2NvcGUsICdldmFsJywgKHBhdGg6IHN0cmluZykgPT4gZ2V0KHRoaXMuYnVpbGRlclNlcnZpY2UudmFyaWFibGVzLCBwYXRoKSk7XG4gICAgcmV0dXJuIHNjb3BlO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBhc3NpZ25UcmlnZ2VycygpIHtcbiAgICB0aGlzLm5vZGUudHJpZ2dlcnM/LmZvckVhY2goKHQpID0+IHtcbiAgICAgIGNvbnN0IGV2ZW50ID0gdGhpcy5ldmFsdWF0ZVRyaWdnZXIodC5ldmVudCk7XG4gICAgICBldmVudD8ucGlwZSh0aGlzLnVuc3Vic2NyaWJlci50YWtlVW50aWxEZXN0cm95KS5zdWJzY3JpYmUoKGMpID0+IHtcbiAgICAgICAgdGhpcy5ldmFsdWF0ZUFjdGlvbih0LmFjdGlvbik7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZXZhbHVhdGVUcmlnZ2VyKHRlbXBsYXRlRXhwcmVzc2lvbjogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHwgbnVsbCB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGV4cHJlc3Npb25NYXRjaCA9IHRlbXBsYXRlRXhwcmVzc2lvbi5tYXRjaCgvXFx7XFx7XFxzKiguKj8pXFxzKlxcfVxcfS8pO1xuICAgICAgaWYgKCFleHByZXNzaW9uTWF0Y2gpIHtcbiAgICAgICAgdGhyb3cgRXJyb3IoYE5vIHZhbGlkIGV4cHJlc3Npb24gZm91bmQgaW4gXCIke3RlbXBsYXRlRXhwcmVzc2lvbn1cImApO1xuICAgICAgfVxuICAgICAgY29uc3QgZXhwcmVzc2lvbiA9IGV4cHJlc3Npb25NYXRjaFsxXTtcblxuICAgICAgLy8gQ2FjaGUgdGhlIGV2YWx1YXRpb24gZnVuY3Rpb24gaW5zdGVhZCBvZiB0aGUgcmVzdWx0XG4gICAgICBjb25zdCBzY29wZSA9IHRoaXMuZ2V0R2xvYmFsU2NvcGUoKTtcbiAgICAgIGNvbnN0IHNhbmRib3ggPSBuZXcgRnVuY3Rpb24oJ3Njb3BlJywgYHdpdGggKHNjb3BlKSB7IHJldHVybiAoICBmdW5jdGlvbigpIHsgcmV0dXJuICR7ZXhwcmVzc2lvbn07IH0pKCk7IH1gKTtcbiAgICAgIHJldHVybiBzYW5kYm94KHNjb3BlKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZXZhbHVhdGluZyBleHByZXNzaW9uOicsIGVycm9yKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZXZhbHVhdGVBY3Rpb24odGVtcGxhdGVFeHByZXNzaW9uOiBzdHJpbmcpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgZXhwcmVzc2lvbk1hdGNoID0gdGVtcGxhdGVFeHByZXNzaW9uLm1hdGNoKC9cXHtcXHtcXHMqKC4qPylcXHMqXFx9XFx9Lyk7XG4gICAgICBpZiAoIWV4cHJlc3Npb25NYXRjaCkge1xuICAgICAgICB0aHJvdyBFcnJvcihgTm8gdmFsaWQgZXhwcmVzc2lvbiBmb3VuZCBpbiBcIiR7dGVtcGxhdGVFeHByZXNzaW9ufVwiYCk7XG4gICAgICB9XG4gICAgICBjb25zdCBleHByZXNzaW9uID0gZXhwcmVzc2lvbk1hdGNoWzFdO1xuXG4gICAgICAvLyBDYWNoZSB0aGUgZXZhbHVhdGlvbiBmdW5jdGlvbiBpbnN0ZWFkIG9mIHRoZSByZXN1bHRcbiAgICAgIGNvbnN0IHNjb3BlOiBhbnkgPSB0aGlzLmdldEdsb2JhbFNjb3BlKCk7XG4gICAgICBjb25zdCBzYW5kYm94ID0gbmV3IEZ1bmN0aW9uKCdzY29wZScsIGB3aXRoIChzY29wZSkgeyAgJHtleHByZXNzaW9ufSB9YCk7XG4gICAgICBzYW5kYm94KHNjb3BlKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZXZhbHVhdGluZyBleHByZXNzaW9uOicsIGVycm9yKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
320
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LXJlbmRlcmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vbGF5b3V0L2J1aWxkZXIvc3JjL2xpYi9idWlsZGVyL3dpZGdldC1yZW5kZXJlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3BELE9BQU8sRUFBOEIsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbEYsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBRVQsUUFBUSxFQUNSLEtBQUssRUFFTCxNQUFNLEVBQ04sTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQzVELE9BQU8sRUFBYyxNQUFNLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDNUQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdEUsT0FBTyxFQUtMLGdCQUFnQixHQUNqQixNQUFNLGdCQUFnQixDQUFDOzs7OztBQXFCeEIsTUFBTSxPQUFPLDBCQUEwQjtJQUVyQyxJQUNXLElBQUk7UUFDYixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQUNELElBQVcsSUFBSSxDQUFDLENBQWdCO1FBQzlCLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQ2YsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFHRCxJQUNXLElBQUk7UUFDYixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQUNELElBQVcsSUFBSSxD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LENBQUM7WUFDRCxNQUFNLFVBQVUsR0FBRyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFdEMsc0RBQXNEO1lBQ3RELE1BQU0sS0FBSyxHQUFRLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN6QyxNQUFNLE9BQU8sR0FBRyxJQUFJLFFBQVEsQ0FBQyxPQUFPLEVBQUUsbUJBQW1CLFVBQVUsSUFBSSxDQUFDLENBQUM7WUFDekUsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pCLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsT0FBTyxDQUFDLEtBQUssQ0FBQyw4QkFBOEIsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN2RCxDQUFDO0lBQ0gsQ0FBQzs4R0FuU1UsMEJBQTBCO2tHQUExQiwwQkFBMEIsZ0lBTjFCO1lBQ1Q7Z0JBQ0UsT0FBTyxFQUFFLGNBQWM7YUFDeEI7U0FDRiwwQkFmUzs7Ozs7Ozs7O0dBU1Q7OzJGQVFVLDBCQUEwQjtrQkFuQnRDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHFCQUFxQjtvQkFDL0IsUUFBUSxFQUFFOzs7Ozs7Ozs7R0FTVDtvQkFDRCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsU0FBUyxFQUFFO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxjQUFjO3lCQUN4QjtxQkFDRjtpQkFDRjt3REFJWSxJQUFJO3NCQURkLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQVdkLElBQUk7c0JBRGQsS0FBSztnQkFTTixVQUFVO3NCQURULEtBQUs7Z0JBSU4sS0FBSztzQkFESixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhVbnN1YnNjcmliZXIgfSBmcm9tICdAYWNvcmV4L2NvcmUvdXRpbHMnO1xuaW1wb3J0IHsgQ2RrUG9ydGFsT3V0bGV0QXR0YWNoZWRSZWYsIENvbXBvbmVudFBvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgQ29tcG9uZW50UmVmLFxuICBJbmplY3RvcixcbiAgSW5wdXQsXG4gIFdyaXRhYmxlU2lnbmFsLFxuICBpbmplY3QsXG4gIHNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjbG9uZURlZXAsIGdldCwgbWVyZ2UsIHNldCwgc3VtIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IE9ic2VydmFibGUsIGZpbHRlciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQVhQTGF5b3V0QnVpbGRlclNlcnZpY2UgfSBmcm9tICcuL2J1aWxkZXIuc2VydmljZSc7XG5pbXBvcnQgeyBBWFBXaWRnZXRSZWdpc3RyeVNlcnZpY2UgfSBmcm9tICcuL3dpZGdldC1yZWdpc3Rlcnkuc2VydmljZSc7XG5pbXBvcnQge1xuICBBWFBXaWRnZXRDb21wb25lbnQsXG4gIEFYUFdpZGdldE5vZGUsXG4gIEFYUFdpZGdldE5vZGVUb2tlbixcbiAgQVhQV2lkZ2V0UmVuZGVyTW9kZSxcbiAgQVhQX1dJREdFVF9UT0tFTixcbn0gZnJvbSAnLi93aWRnZXQudHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdheHAtd2lkZ2V0LXJlbmRlcmVyJyxcbiAgdGVtcGxhdGU6IGBcbiAgICBAaWYobWVyZ2VkT3B0aW9ucygpLmlzVmlzaWJsZSE9ZmFsc2UpIHsgQGlmKGlzTG9hZGluZygpKXtcbiAgICA8YXgtc2tlbGV0b24gW2FuaW1hdGVkXT1cInRydWVcIiBjbGFzcz1cImF4LXctZnVsbCAgbGc6YXgtdy1bNTAlXSBheC1oLTggYXgtcm91bmRlZFwiPjwvYXgtc2tlbGV0b24+XG4gICAgfSBAZWxzZSB7XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInR0XCI+PC9uZy1jb250YWluZXI+XG4gICAgfSB9XG4gICAgPG5nLXRlbXBsYXRlICN0dD5cbiAgICAgIDxuZy10ZW1wbGF0ZSBbY2RrUG9ydGFsT3V0bGV0XT1cInBvcnRhbFwiIChhdHRhY2hlZCk9XCJoYW5kbGVBdHRhY2hlZCgkZXZlbnQpXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLXRlbXBsYXRlPlxuICBgLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogQVhVbnN1YnNjcmliZXIsXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhQV2lkZ2V0UmVuZGVyZXJDb21wb25lbnQge1xuICBwcml2YXRlIF9ub2RlOiBBWFBXaWRnZXROb2RlO1xuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KVxuICBwdWJsaWMgZ2V0IG5vZGUoKTogQVhQV2lkZ2V0Tm9kZSB7XG4gICAgcmV0dXJuIHRoaXMuX25vZGU7XG4gIH1cbiAgcHVibGljIHNldCBub2RlKHY6IEFYUFdpZGdldE5vZGUpIHtcbiAgICB0aGlzLl9ub2RlID0gdjtcbiAgICB0aGlzLmxvYWRDb21wb25lbnQoKTtcbiAgfVxuXG4gIHByaXZhdGUgX21vZGU6IEFYUFdpZGdldFJlbmRlck1vZGUgPSAnZWRpdCc7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBnZXQgbW9kZSgpOiBBWFBXaWRnZXRSZW5kZXJNb2RlIHtcbiAgICByZXR1cm4gdGhpcy5fbW9kZTtcbiAgfVxuICBwdWJsaWMgc2V0IG1vZGUodjogQVhQV2lkZ2V0UmVuZGVyTW9kZSkge1xuICAgIHRoaXMuX21vZGUgPSB2O1xuICB9XG5cbiAgQElucHV0KClcbiAgcGFyZW50Tm9kZTogQVhQV2lkZ2V0Q29tcG9uZW50IHwgbnVsbDtcblxuICBASW5wdXQoKVxuICBpbmRleDogbnVtYmVyIHwgbnVsbDtcblxuICBwcm90ZWN0ZWQgbWVyZ2VkT3B0aW9uczogV3JpdGFibGVTaWduYWw8YW55PiA9IHNpZ25hbDxhbnk+KHt9KTtcblxuICBwcml2YXRlIGluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcbiAgcHJvdGVjdGVkIGJ1aWxkZXJTZXJ2aWNlID0gaW5qZWN0KEFYUExheW91dEJ1aWxkZXJTZXJ2aWNlKTtcbiAgcHJvdGVjdGVkIHdpZGdldFJlZ2lzdGVyeSA9IGluamVjdChBWFBXaWRnZXRSZWdpc3RyeVNlcnZpY2UpO1xuICBwcm90ZWN0ZWQgdW5zdWJzY3JpYmVyID0gaW5qZWN0KEFYVW5zdWJzY3JpYmVyKTtcblxuICBwcm90ZWN0ZWQgaXNMb2FkaW5nID0gc2lnbmFsKHRydWUpO1xuICBwcml2YXRlIGluc3RhbmNlITogQVhQV2lkZ2V0Q29tcG9uZW50O1xuICBwcm90ZWN0ZWQgcG9ydGFsITogQ29tcG9uZW50UG9ydGFsPGFueT47XG4gIHByaXZhdGUgZXhwcmVzc2lvbkNhY2hlOiBNYXA8c3RyaW5nLCAoKSA9PiBQcm9taXNlPGFueT4+ID0gbmV3IE1hcCgpO1xuICBwcml2YXRlIGV4cHJlc3Npb25FdmFsdWF0b3JzOiBNYXA8c3RyaW5nLCAoKSA9PiBQcm9taXNlPGFueT4+ID0gbmV3IE1hcCgpO1xuICBwcml2YXRlIHNjb3BlOiBhbnkgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuYnVpbGRlclNlcnZpY2Uub25DaGFuZ2VkLnBpcGUodGhpcy51bnN1YnNjcmliZXIudGFrZVVudGlsRGVzdHJveSkuc3Vic2NyaWJlKGFzeW5jIChlKSA9PiB7XG4gICAgICBpZiAoKGF3YWl0IHRoaXMudXBkYXRlT3B0aW9uc0Jhc2VkT25Db250ZXh0KCkpID4gMCkge1xuICAgICAgICB0aGlzLmFwcGx5T3B0aW9ucygpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuY2hlY2tGb3JtdWxhRm9yVXBkYXRlKHRoaXMubm9kZS5mb3JtdWxhLCBlLnBhdGgpKSB7XG4gICAgICAgIGF3YWl0IHRoaXMudXBkYXRlVmFsdWVCYXNlZE9uRm9ybXVsYSgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBsb2FkQ29tcG9uZW50KCkge1xuICAgIHRoaXMuaXNMb2FkaW5nLnNldCh0cnVlKTtcbiAgICBjb25zdCB3aWRnZXQgPSB0aGlzLndpZGdldFJlZ2lzdGVyeS5yZXNvbHZlKHRoaXMubm9kZS50eXBlKTtcbiAgICAvL1xuICAgIGNvbnN0IHByb3BzID0gd2lkZ2V0Py5jb21wb25lbnRzW3RoaXMubW9kZV0/LnByb3BlcnRpZXNcbiAgICAgID8uZmlsdGVyKChjKSA9PiBjLnNjaGVtYS5kZWZhdWx0VmFsdWUgIT0gbnVsbClcbiAgICAgIC5tYXAoKGMpID0+ICh7IFtjLm5hbWVdOiBjLnNjaGVtYS5kZWZhdWx0VmFsdWUgfSkpXG4gICAgICAucmVkdWNlKChhY2MsIGN1cnIpID0+IHtcbiAgICAgICAgcmV0dXJuIHsgLi4uYWNjLCAuLi5jdXJyIH07XG4gICAgICB9LCB7fSk7XG4gICAgLy9cbiAgICB0aGlzLm1lcmdlZE9wdGlvbnMuc2V0KG1lcmdlKHByb3BzLCB0aGlzLm5vZGUub3B0aW9ucykgfHwge30pO1xuICAgIHRoaXMucHJlcHJvY2Vzc0FuZEluaXRpYWxPcHRpb25zKGNsb25lRGVlcCh0aGlzLm5vZGUub3B0aW9ucykpO1xuICAgIGF3YWl0IHRoaXMudXBkYXRlT3B0aW9uc0Jhc2VkT25Db250ZXh0KCk7XG4gICAgY29uc3QgdG9rZW5WYWx1ZSA9IHtcbiAgICAgIG5vZGU6IHRoaXMubm9kZSxcbiAgICAgIG9wdGlvbnM6IHRoaXMubWVyZ2VkT3B0aW9ucygpLFxuICAgICAgY29uZmlnOiB3aWRnZXQsXG4gICAgfSBhcyBBWFBXaWRnZXROb2RlVG9rZW47XG4gICAgY29uc3QgdG9rZW4gPSBJbmplY3Rvci5jcmVhdGUoe1xuICAgICAgcGFyZW50OiB0aGlzLmluamVjdG9yLFxuICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBwcm92aWRlOiBBWFBfV0lER0VUX1RPS0VOLFxuICAgICAgICAgIHVzZVZhbHVlOiB0b2tlblZhbHVlLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KTtcbiAgICB2YXIgY29tID0gYXdhaXQgd2lkZ2V0Py5jb21wb25lbnRzW3RoaXMubW9kZV0/LmNvbXBvbmVudCgpO1xuICAgIHRoaXMucG9ydGFsID0gbmV3IENvbXBvbmVudFBvcnRhbChjb20sIG51bGwsIHRva2VuKTtcbiAgICB0aGlzLmlzTG9hZGluZy5zZXQoZmFsc2UpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGhhbmRsZUF0dGFjaGVkKHBvcnRhbE91dGxldFJlZjogQ2RrUG9ydGFsT3V0bGV0QXR0YWNoZWRSZWYpIHtcbiAgICBwb3J0YWxPdXRsZXRSZWYgPSBwb3J0YWxPdXRsZXRSZWYgYXMgQ29tcG9uZW50UmVmPEFYUFdpZGdldENvbXBvbmVudD47XG4gICAgdGhpcy5pbnN0YW5jZSA9IHBvcnRhbE91dGxldFJlZi5pbnN0YW5jZSBhcyBBWFBXaWRnZXRDb21wb25lbnQ7XG4gICAgdGhpcy5pbnN0YW5jZS5wYXJlbnQgPSB0aGlzLnBhcmVudE5vZGU7XG4gICAgdGhpcy5pbnN0YW5jZS5pbmRleCA9IHRoaXMuaW5kZXg7XG4gICAgdGhpcy5pbnN0YW5jZS5tb2RlID0gdGhpcy5tb2RlO1xuICAgIGF3YWl0IHRoaXMudXBkYXRlVmFsdWVCYXNlZE9uRm9ybXVsYSgpO1xuICAgIGF3YWl0IHRoaXMuYXNzaWduVHJpZ2dlcnMoKTtcbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlPcHRpb25zKCkge1xuICAgIGlmICghdGhpcy5pbnN0YW5jZSkgcmV0dXJuO1xuICAgIHRoaXMuaW5zdGFuY2Uuc2V0T3B0aW9ucyh0aGlzLm1lcmdlZE9wdGlvbnMoKSk7XG4gIH1cblxuICBwcml2YXRlIGNoZWNrRm9ybXVsYUZvclVwZGF0ZShmb3JtdWxhOiBzdHJpbmcgfCB1bmRlZmluZWQsIHBhdGg/OiBzdHJpbmcgfCBudWxsKTogYm9vbGVhbiB7XG4gICAgaWYgKGZvcm11bGEpIHtcbiAgICAgIGNvbnN0IHJlZ2V4ID0gL2NvbnRleHRcXC5ldmFsXFwoJyhbXiddKyknXFwpL2c7XG4gICAgICBjb25zdCBtYXRjaGVzID0gZm9ybXVsYS5tYXRjaChyZWdleCk7XG4gICAgICBjb25zdCBub2RlcyA9IG1hdGNoZXMgPyBtYXRjaGVzLm1hcCgobWF0Y2g6IGFueSkgPT4gbWF0Y2gubWF0Y2goLycoW14nXSspJy8pWzFdKSA6IFtdO1xuICAgICAgcmV0dXJuIG5vZGVzLmluY2x1ZGVzKHBhdGgpO1xuICAgIH0gZWxzZSByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwcmVwcm9jZXNzQW5kSW5pdGlhbE9wdGlvbnMob2JqOiBhbnksIHBhdGhQcmVmaXg6IHN0cmluZyA9ICcnKTogdm9pZCB7XG4gICAgaWYgKCFvYmopIHJldHVybjtcbiAgICBPYmplY3QuZW50cmllcyhvYmopLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgY29uc3QgY3VycmVudFBhdGggPSBwYXRoUHJlZml4ID8gYCR7cGF0aFByZWZpeH0uJHtrZXl9YCA6IGtleTtcbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIHZhbHVlLmluY2x1ZGVzKCd7eycpKSB7XG4gICAgICAgIC8vIENhY2hlIGR5bmFtaWMgZXhwcmVzc2lvbiBmb3IgbGF0ZXIgZXZhbHVhdGlvblxuICAgICAgICB0aGlzLmV4cHJlc3Npb25FdmFsdWF0b3JzLnNldChjdXJyZW50UGF0aCwgKCkgPT4gdGhpcy5ldmFsdWF0ZUV4cHJlc3Npb24odmFsdWUpKTtcbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiZcbiAgICAgICAgdmFsdWUgIT09IG51bGwgJiZcbiAgICAgICAgKHZhbHVlLmNvbnN0cnVjdG9yID09PSBPYmplY3QgfHwgQXJyYXkuaXNBcnJheSh2YWx1ZSkpXG4gICAgICApIHtcbiAgICAgICAgLy8gUmVjdXJzaXZlbHkgaGFuZGxlIG5lc3RlZCBvYmplY3RzXG4gICAgICAgIHRoaXMucHJlcHJvY2Vzc0FuZEluaXRpYWxPcHRpb25zKHZhbHVlLCBjdXJyZW50UGF0aCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBBcHBseSBzdGF0aWMgdmFsdWVzIGRpcmVjdGx5XG4gICAgICAgIHRoaXMubWVyZ2VkT3B0aW9ucy51cGRhdGUoKGN1cnJlbnRPcHRpb25zKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHNldChjdXJyZW50T3B0aW9ucywgY3VycmVudFBhdGgsIHZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyB1cGRhdGVPcHRpb25zQmFzZWRPbkNvbnRleHQoKSB7XG4gICAgY29uc3QgdXBkYXRlczogYW55W10gPSBbXTtcbiAgICBmb3IgKGxldCBbcGF0aCwgZXZhbHVhdG9yXSBvZiB0aGlzLmV4cHJlc3Npb25FdmFsdWF0b3JzKSB7XG4gICAgICBjb25zdCBuZXdWYWx1ZSA9IGF3YWl0IGV2YWx1YXRvcigpO1xuICAgICAgdXBkYXRlcy5wdXNoKHsgcGF0aCwgbmV3VmFsdWUgfSk7XG4gICAgfVxuICAgIC8vIEFwcGx5IHVwZGF0ZXMgdG8gbWVyZ2VkT3B0aW9uc1xuICAgIGlmICh1cGRhdGVzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMubWVyZ2VkT3B0aW9ucy51cGRhdGUoKG8pID0+IHtcbiAgICAgICAgY29uc3QgdXBkYXRlZE9wdGlvbnMgPSB7IC4uLm8gfTtcbiAgICAgICAgdXBkYXRlcy5mb3JFYWNoKCh7IHBhdGgsIG5ld1ZhbHVlIH0pID0+IHtcbiAgICAgICAgICAvLyBTZXQgdGhlIG5ldyB2YWx1ZSBpbiB0aGUgdXBkYXRlZE9wdGlvbnMgb2JqZWN0IGJ5IHBhdGhcbiAgICAgICAgICBzZXQodXBkYXRlZE9wdGlvbnMsIHBhdGgsIG5ld1ZhbHVlKTsgLy8gQXNzdW1pbmcgJ3NldCcgY2FuIGhhbmRsZSBwYXRocyBsaWtlICdwcm9wZXJ0eS5zdWJwcm9wZXJ0eSdcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB1cGRhdGVkT3B0aW9ucztcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gdXBkYXRlcy5sZW5ndGg7XG4gIH1cblxuICBhc3luYyB1cGRhdGVWYWx1ZUJhc2VkT25Gb3JtdWxhKCkge1xuICAgIGlmICh0aGlzLm5vZGUuZm9ybXVsYSkge1xuICAgICAgY29uc3QgdmFsdWUgPSBhd2FpdCB0aGlzLmV2YWx1YXRlRXhwcmVzc2lvbih0aGlzLm5vZGUuZm9ybXVsYSk7XG4gICAgICB0aGlzLmluc3RhbmNlLnNldFZhbHVlKHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGV2YWx1YXRlRXhwcmVzc2lvbih0ZW1wbGF0ZUV4cHJlc3Npb246IHN0cmluZyk6IFByb21pc2U8YW55PiB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIENoZWNrIGNhY2hlIGZpcnN0LCBidXQgY2FjaGUgdGhlIGZ1bmN0aW9uIGZvciBldmFsdWF0aW9uLCBub3QgdGhlIGV2YWx1YXRlZCB2YWx1ZVxuICAgICAgaWYgKCF0aGlzLmV4cHJlc3Npb25DYWNoZS5oYXModGVtcGxhdGVFeHByZXNzaW9uKSkge1xuICAgICAgICBjb25zdCBleHByZXNzaW9uTWF0Y2ggPSB0ZW1wbGF0ZUV4cHJlc3Npb24ubWF0Y2goL1xce1xce1xccyooLio/KVxccypcXH1cXH0vKTtcbiAgICAgICAgaWYgKCFleHByZXNzaW9uTWF0Y2gpIHtcbiAgICAgICAgICB0aHJvdyBFcnJvcihgTm8gdmFsaWQgZXhwcmVzc2lvbiBmb3VuZCBpbiBcIiR7dGVtcGxhdGVFeHByZXNzaW9ufVwiYCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZXhwcmVzc2lvbiA9IGV4cHJlc3Npb25NYXRjaFsxXTtcblxuICAgICAgICAvLyBDYWNoZSB0aGUgZXZhbHVhdGlvbiBmdW5jdGlvbiBpbnN0ZWFkIG9mIHRoZSByZXN1bHRcbiAgICAgICAgY29uc3Qgc2NvcGUgPSB0aGlzLmdldEdsb2JhbFNjb3BlKCk7XG4gICAgICAgIGNvbnN0IGV2YWx1YXRpb25GdW5jdGlvbiA9IGFzeW5jICgpID0+IHtcbiAgICAgICAgICBjb25zdCBzYW5kYm94ID0gbmV3IEZ1bmN0aW9uKFxuICAgICAgICAgICAgJ3Njb3BlJyxcbiAgICAgICAgICAgIGB3aXRoIChzY29wZSkgeyByZXR1cm4gKGFzeW5jIGZ1bmN0aW9uKCkgeyByZXR1cm4gJHtleHByZXNzaW9ufTsgfSkoKTsgfWBcbiAgICAgICAgICApO1xuICAgICAgICAgIHJldHVybiBhd2FpdCBzYW5kYm94KHNjb3BlKTtcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLmV4cHJlc3Npb25DYWNoZS5zZXQodGVtcGxhdGVFeHByZXNzaW9uLCBldmFsdWF0aW9uRnVuY3Rpb24pO1xuICAgICAgfVxuXG4gICAgICAvLyBSZXRyaWV2ZSB0aGUgZnVuY3Rpb24gZnJvbSB0aGUgY2FjaGUgYW5kIGNhbGwgaXQgdG8gZXZhbHVhdGUgdGhlIGV4cHJlc3Npb25cbiAgICAgIGNvbnN0IGV2YWx1YXRlID0gdGhpcy5leHByZXNzaW9uQ2FjaGUuZ2V0KHRlbXBsYXRlRXhwcmVzc2lvbik7XG4gICAgICBpZiAoZXZhbHVhdGUpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZXZhbHVhdGUoKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IEVycm9yKGBGYWlsZWQgdG8gcmV0cmlldmUgZXZhbHVhdGlvbiBmdW5jdGlvbiBmb3IgZXhwcmVzc2lvbjogXCIke3RlbXBsYXRlRXhwcmVzc2lvbn1cImApO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBldmFsdWF0aW5nIGV4cHJlc3Npb246JywgZXJyb3IpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0R2xvYmFsU2NvcGUoKSB7XG4gICAgaWYgKHRoaXMuc2NvcGUpIHJldHVybiB0aGlzLnNjb3BlO1xuICAgIHRoaXMuc2NvcGUgPSB7fTtcbiAgICBzZXQodGhpcy5zY29wZSwgJ2NvbnRleHQnLCB0aGlzLmdldENvbnRleHRTY29wZSgpKTtcbiAgICBzZXQodGhpcy5zY29wZSwgJ2V2ZW50cycsIHRoaXMuZ2V0RXZlbnRTY29wZSgpKTtcbiAgICBzZXQodGhpcy5zY29wZSwgJ3dpZGdldCcsIHRoaXMuZ2V0V2lkZ2V0U2NvcGUoKSk7XG4gICAgc2V0KHRoaXMuc2NvcGUsICdtZXRob2RzJywgdGhpcy5nZXRGdW5jdGlvblNjb3BlKCkpO1xuICAgIHNldCh0aGlzLnNjb3BlLCAndmFycycsIHRoaXMuZ2V0VmFyaWFibGVzU2NvcGUoKSk7XG4gICAgcmV0dXJuIHRoaXMuc2NvcGU7XG4gIH1cblxuICBwcml2YXRlIGdldENvbnRleHRTY29wZSgpOiBhbnkge1xuICAgIGNvbnN0IHNjb3BlOiBhbnkgPSB7fTtcbiAgICBzZXQoc2NvcGUsICdldmFsJywgKHBhdGg6IHN0cmluZykgPT4gdGhpcy5idWlsZGVyU2VydmljZS5nZXRWYWx1ZShwYXRoKSk7XG4gICAgcmV0dXJuIHNjb3BlO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRFdmVudFNjb3BlKCk6IGFueSB7XG4gICAgY29uc3Qgc2NvcGU6IGFueSA9IHt9O1xuICAgIHNldChzY29wZSwgJ2NvbnRleHQnLCAocGF0aDogc3RyaW5nKSA9PiB0aGlzLmJ1aWxkZXJTZXJ2aWNlLm9uQ2hhbmdlZC5waXBlKGZpbHRlcigoYykgPT4gYy5wYXRoID09IHBhdGgpKSk7XG4gICAgc2V0KHNjb3BlLCAnZnJvbScsIChldmVudDogc3RyaW5nKSA9PiBnZXQodGhpcy5pbnN0YW5jZS5hcGkoKSwgZXZlbnQpKTtcbiAgICByZXR1cm4gc2NvcGU7XG4gIH1cblxuICBwcml2YXRlIGdldFdpZGdldFNjb3BlKCk6IGFueSB7XG4gICAgY29uc3Qgc2NvcGU6IGFueSA9IHt9O1xuICAgIHNldChzY29wZSwgJ2NhbGwnLCAobmFtZTogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSkgPT4ge1xuICAgICAgdGhpcy5pbnN0YW5jZS5jYWxsKG5hbWUsIC4uLmFyZ3MpO1xuICAgIH0pO1xuICAgIHNldChzY29wZSwgJ2ZpbmQnLCAoaWQ6IHN0cmluZykgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuYnVpbGRlclNlcnZpY2UuZ2V0V2lkZ2V0KGlkKT8uYXBpKCk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHNjb3BlO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRGdW5jdGlvblNjb3BlKCk6IGFueSB7XG4gICAgY29uc3Qgc2NvcGU6IGFueSA9IHt9O1xuICAgIHNldChzY29wZSwgJ3N1bScsICh2YWx1ZXM6IGFueSkgPT4ge1xuICAgICAgcmV0dXJuIHN1bSh2YWx1ZXMpO1xuICAgIH0pO1xuICAgIE9iamVjdC5lbnRyaWVzKHRoaXMuYnVpbGRlclNlcnZpY2UuZnVuY3Rpb25zKS5mb3JFYWNoKChpKSA9PiB7XG4gICAgICBzZXQoc2NvcGUsIGlbMF0sICguLi5hcmdzOiBhbnlbXSkgPT4ge1xuICAgICAgICByZXR1cm4gaVsxXSguLi5hcmdzKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHJldHVybiBzY29wZTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VmFyaWFibGVzU2NvcGUoKTogYW55IHtcbiAgICBjb25zdCBzY29wZTogYW55ID0ge307XG4gICAgc2V0KHNjb3BlLCAnZXZhbCcsIChwYXRoOiBzdHJpbmcpID0+IGdldCh0aGlzLmJ1aWxkZXJTZXJ2aWNlLnZhcmlhYmxlcywgcGF0aCkpO1xuICAgIHJldHVybiBzY29wZTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgYXNzaWduVHJpZ2dlcnMoKSB7XG4gICAgdGhpcy5ub2RlLnRyaWdnZXJzPy5mb3JFYWNoKCh0KSA9PiB7XG4gICAgICBjb25zdCBldmVudCA9IHRoaXMuZXZhbHVhdGVUcmlnZ2VyKHQuZXZlbnQpO1xuICAgICAgZXZlbnQ/LnBpcGUodGhpcy51bnN1YnNjcmliZXIudGFrZVVudGlsRGVzdHJveSkuc3Vic2NyaWJlKChjKSA9PiB7XG4gICAgICAgIHRoaXMuZXZhbHVhdGVBY3Rpb24odC5hY3Rpb24pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGV2YWx1YXRlVHJpZ2dlcih0ZW1wbGF0ZUV4cHJlc3Npb246IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB8IG51bGwge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBleHByZXNzaW9uTWF0Y2ggPSB0ZW1wbGF0ZUV4cHJlc3Npb24ubWF0Y2goL1xce1xce1xccyooLio/KVxccypcXH1cXH0vKTtcbiAgICAgIGlmICghZXhwcmVzc2lvbk1hdGNoKSB7XG4gICAgICAgIHRocm93IEVycm9yKGBObyB2YWxpZCBleHByZXNzaW9uIGZvdW5kIGluIFwiJHt0ZW1wbGF0ZUV4cHJlc3Npb259XCJgKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGV4cHJlc3Npb24gPSBleHByZXNzaW9uTWF0Y2hbMV07XG5cbiAgICAgIC8vIENhY2hlIHRoZSBldmFsdWF0aW9uIGZ1bmN0aW9uIGluc3RlYWQgb2YgdGhlIHJlc3VsdFxuICAgICAgY29uc3Qgc2NvcGUgPSB0aGlzLmdldEdsb2JhbFNjb3BlKCk7XG4gICAgICBjb25zdCBzYW5kYm94ID0gbmV3IEZ1bmN0aW9uKCdzY29wZScsIGB3aXRoIChzY29wZSkgeyByZXR1cm4gKCAgZnVuY3Rpb24oKSB7IHJldHVybiAke2V4cHJlc3Npb259OyB9KSgpOyB9YCk7XG4gICAgICByZXR1cm4gc2FuZGJveChzY29wZSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGV2YWx1YXRpbmcgZXhwcmVzc2lvbjonLCBlcnJvcik7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGV2YWx1YXRlQWN0aW9uKHRlbXBsYXRlRXhwcmVzc2lvbjogc3RyaW5nKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGV4cHJlc3Npb25NYXRjaCA9IHRlbXBsYXRlRXhwcmVzc2lvbi5tYXRjaCgvXFx7XFx7XFxzKiguKj8pXFxzKlxcfVxcfS8pO1xuICAgICAgaWYgKCFleHByZXNzaW9uTWF0Y2gpIHtcbiAgICAgICAgdGhyb3cgRXJyb3IoYE5vIHZhbGlkIGV4cHJlc3Npb24gZm91bmQgaW4gXCIke3RlbXBsYXRlRXhwcmVzc2lvbn1cImApO1xuICAgICAgfVxuICAgICAgY29uc3QgZXhwcmVzc2lvbiA9IGV4cHJlc3Npb25NYXRjaFsxXTtcblxuICAgICAgLy8gQ2FjaGUgdGhlIGV2YWx1YXRpb24gZnVuY3Rpb24gaW5zdGVhZCBvZiB0aGUgcmVzdWx0XG4gICAgICBjb25zdCBzY29wZTogYW55ID0gdGhpcy5nZXRHbG9iYWxTY29wZSgpO1xuICAgICAgY29uc3Qgc2FuZGJveCA9IG5ldyBGdW5jdGlvbignc2NvcGUnLCBgd2l0aCAoc2NvcGUpIHsgICR7ZXhwcmVzc2lvbn0gfWApO1xuICAgICAgc2FuZGJveChzY29wZSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGV2YWx1YXRpbmcgZXhwcmVzc2lvbjonLCBlcnJvcik7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { AXDataSource, convertArrayToDataSource } from '@acorex/components/common';
|
|
2
|
+
import { afterNextRender, computed, effect, ElementRef, inject, Injectable, InjectionToken, signal, } from '@angular/core';
|
|
3
|
+
import { cloneDeep, get, isNil, isUndefined, merge } from 'lodash-es';
|
|
3
4
|
import { Subject } from 'rxjs';
|
|
4
5
|
import { AXPLayoutBuilderService, AXPLayoutElement } from './builder.service';
|
|
6
|
+
import { AXPWidgetDataSourceProviderService } from './datasource-provider.service';
|
|
5
7
|
import { AXPWidgetsCatalog } from './widget-catalog';
|
|
6
8
|
import * as i0 from "@angular/core";
|
|
7
9
|
export function cloneProperty(property, values) {
|
|
@@ -97,7 +99,7 @@ export class AXPWidgetComponent extends AXPLayoutElement {
|
|
|
97
99
|
}
|
|
98
100
|
});
|
|
99
101
|
this.getValue = computed(() => {
|
|
100
|
-
return this.fullPath() ?
|
|
102
|
+
return this.fullPath() ? this.extractValue(this.fullPath()) : null;
|
|
101
103
|
});
|
|
102
104
|
}
|
|
103
105
|
get id() {
|
|
@@ -110,11 +112,15 @@ export class AXPWidgetComponent extends AXPLayoutElement {
|
|
|
110
112
|
this._isValueWidget = this.config.properties?.some((c) => c.name == 'path') ?? false;
|
|
111
113
|
if (this.isValueWidget()) {
|
|
112
114
|
this.detectFullPath();
|
|
113
|
-
if (this.defaultValue
|
|
115
|
+
if (!isNil(this.defaultValue) && isNil(this.getValue())) {
|
|
116
|
+
console.log(this.getValue(), this.defaultValue);
|
|
114
117
|
this.setValue(this.defaultValue, true);
|
|
115
118
|
}
|
|
116
119
|
}
|
|
117
120
|
}
|
|
121
|
+
extractValue(path) {
|
|
122
|
+
return get(this.contextService.context(), path);
|
|
123
|
+
}
|
|
118
124
|
setValue(value, init = false) {
|
|
119
125
|
const oldValue = this.getValue();
|
|
120
126
|
value = isUndefined(value) ? null : value;
|
|
@@ -124,7 +130,6 @@ export class AXPWidgetComponent extends AXPLayoutElement {
|
|
|
124
130
|
}
|
|
125
131
|
}
|
|
126
132
|
setOptions(values) {
|
|
127
|
-
console.log(this.config.name, this.mode, values);
|
|
128
133
|
this._options.set({ ...this.options(), ...values });
|
|
129
134
|
}
|
|
130
135
|
call(name, ...args) {
|
|
@@ -190,6 +195,54 @@ export class AXPContainerWidgetComponent extends AXPWidgetComponent {
|
|
|
190
195
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPContainerWidgetComponent, decorators: [{
|
|
191
196
|
type: Injectable
|
|
192
197
|
}] });
|
|
198
|
+
export class AXPDataListWidgetComponent extends AXPWidgetComponent {
|
|
199
|
+
constructor() {
|
|
200
|
+
super(...arguments);
|
|
201
|
+
this.dataService = inject(AXPWidgetDataSourceProviderService);
|
|
202
|
+
this.rawDataSource = computed(() => this.options()['dataSource']);
|
|
203
|
+
this.dataSource = signal(convertArrayToDataSource([]));
|
|
204
|
+
this.items = computed(() => this.options()['items'] ?? []);
|
|
205
|
+
this.textField = computed(() => this.options()['textField'] ?? 'title');
|
|
206
|
+
this.valueField = computed(() => this.options()['valueField'] ?? 'id');
|
|
207
|
+
this.rf = effect(() => {
|
|
208
|
+
const rawValue = this.options()['dataSource'];
|
|
209
|
+
// static datasource class
|
|
210
|
+
if (rawValue instanceof AXDataSource) {
|
|
211
|
+
this.dataSource.set(rawValue);
|
|
212
|
+
} // static array datasource
|
|
213
|
+
else if (Array.isArray(rawValue)) {
|
|
214
|
+
this.dataSource.set(convertArrayToDataSource(rawValue));
|
|
215
|
+
} // resolve data source by name
|
|
216
|
+
else if (rawValue && (typeof rawValue == 'string' || typeof rawValue == 'object')) {
|
|
217
|
+
const name = typeof rawValue == 'object' ? rawValue[this.valueField()] : rawValue;
|
|
218
|
+
this.dataService.get(name).then((c) => {
|
|
219
|
+
if (this.mode == 'designer' && c?.samples?.length) {
|
|
220
|
+
this.dataSource.set(convertArrayToDataSource(c.samples));
|
|
221
|
+
}
|
|
222
|
+
else {
|
|
223
|
+
const ds = c?.source();
|
|
224
|
+
if (ds) {
|
|
225
|
+
this.dataSource.set(ds);
|
|
226
|
+
}
|
|
227
|
+
// empty datasource
|
|
228
|
+
else {
|
|
229
|
+
this.dataSource.set(convertArrayToDataSource([]));
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
});
|
|
233
|
+
}
|
|
234
|
+
// empty datasource
|
|
235
|
+
else {
|
|
236
|
+
this.dataSource.set(convertArrayToDataSource([]));
|
|
237
|
+
}
|
|
238
|
+
}, { allowSignalWrites: true });
|
|
239
|
+
}
|
|
240
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPDataListWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
241
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPDataListWidgetComponent }); }
|
|
242
|
+
}
|
|
243
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPDataListWidgetComponent, decorators: [{
|
|
244
|
+
type: Injectable
|
|
245
|
+
}] });
|
|
193
246
|
export class AXPColumnWidgetComponent {
|
|
194
247
|
constructor() {
|
|
195
248
|
this.token = inject(AXP_WIDGET_COLUMN_TOKEN);
|
|
@@ -203,4 +256,4 @@ export class AXPColumnWidgetComponent {
|
|
|
203
256
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPColumnWidgetComponent, decorators: [{
|
|
204
257
|
type: Injectable
|
|
205
258
|
}] });
|
|
206
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LnR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9sYXlvdXQvYnVpbGRlci9zcmMvbGliL2J1aWxkZXIvd2lkZ2V0LnR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEgsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUMvRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzlFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDOztBQStDckQsTUFBTSxVQUFVLGFBQWEsQ0FDM0IsUUFBMkIsRUFDM0IsTUFBMkM7SUFFM0MsT0FBTyxLQUFLLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQzVDLENBQUM7QUFFRCxNQUFNLFVBQVUsb0JBQW9CLENBQUMsSUFPcEM7SUFDQyxPQUFPO1FBQ0wsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1FBQ2YsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1FBQ2pCLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztRQUNqQixNQUFNLEVBQUU7WUFDTixRQUFRLEVBQUUsUUFBUTtZQUNsQixZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVk7WUFDL0IsU0FBUyxFQUFFO2dCQUNULElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtnQkFDZixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENB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QUFDO1lBQ2IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNyRCxDQUFDO0lBQ0gsQ0FBQztJQUVTLGtCQUFrQixDQUFDLENBQXlCO1FBQ3BELElBQUksQ0FBQyxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBTSxDQUFDLENBQUM7UUFDMUIsQ0FBQztJQUNILENBQUM7OEdBL0htQixrQkFBa0I7a0hBQWxCLGtCQUFrQjs7MkZBQWxCLGtCQUFrQjtrQkFEdkMsVUFBVTs7QUFvSVgsTUFBTSxPQUFnQiwyQkFBK0IsU0FBUSxrQkFBcUI7SUFEbEY7O1FBRWtCLFNBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztLQUN4Qzs4R0FGcUIsMkJBQTJCO2tIQUEzQiwyQkFBMkI7OzJGQUEzQiwyQkFBMkI7a0JBRGhELFVBQVU7O0FBTVgsTUFBTSxPQUFnQix3QkFBd0I7SUFEOUM7UUFFbUIsVUFBSyxHQUFHLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBRXRDLFNBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztRQUN2QixZQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDO1FBQ25DLGFBQVEsR0FBUSxJQUFJLENBQUM7S0FDekM7OEdBTnFCLHdCQUF3QjtrSEFBeEIsd0JBQXdCOzsyRkFBeEIsd0JBQXdCO2tCQUQ3QyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhEYXRhU291cmNlLCBBWFZhbHVlQ2hhbmdlZEV2ZW50IH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2NvbW1vbic7XG5pbXBvcnQgeyBBWFBNZXRhRGF0YSwgQVhQT3B0aW9uc0RhdGEsIEFYUFBhcnRpYWxOZXN0ZWQsIEFYUFZhbGlkYXRpb25SdWxlcyB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29yZSc7XG5pbXBvcnQgeyBhZnRlck5leHRSZW5kZXIsIGNvbXB1dGVkLCBFbGVtZW50UmVmLCBpbmplY3QsIEluamVjdGFibGUsIEluamVjdGlvblRva2VuLCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNsb25lRGVlcCwgZ2V0LCBpc1VuZGVmaW5lZCwgbWVyZ2UgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQVhQTGF5b3V0QnVpbGRlclNlcnZpY2UsIEFYUExheW91dEVsZW1lbnQgfSBmcm9tICcuL2J1aWxkZXIuc2VydmljZSc7XG5pbXBvcnQgeyBBWFBXaWRnZXRzQ2F0YWxvZyB9IGZyb20gJy4vd2lkZ2V0LWNhdGFsb2cnO1xuXG5leHBvcnQgdHlwZSBBWFBXaWRnZXRUcmlnZ2VyID0geyBldmVudDogc3RyaW5nOyBhY3Rpb246IHN0cmluZzsgZGlzYWJsZWQ/OiBib29sZWFuIH07XG5leHBvcnQgdHlwZSBBWFBXaWRnZXRUcmlnZ2VycyA9IEFYUFdpZGdldFRyaWdnZXJbXTtcblxuZXhwb3J0IGludGVyZmFjZSBBWFBXaWRnZXREYXRhU291cmNlIHtcbiAgbmFtZTogc3RyaW5nO1xuICBjb2x1bW5zOiB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgLy8gZGF0YVR5cGU6IHN0cmluZztcbiAgICAvLyBudWxsYWJsZT86IGJvb2xlYW47XG4gICAgLy8gaW50ZXJmYWNlPzogUGFydGlhbDxBWEVudGl0eVByb3BlcnR5V2lkZ2V0PjtcbiAgfVtdO1xuICBzb3VyY2U6IEFYRGF0YVNvdXJjZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBWFBXaWRnZXRQcm9wZXJ0eUdyb3VwIHtcbiAgbmFtZTogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xuICBvcmRlcjogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYUFdpZGdldEdyb3VwIHtcbiAgbmFtZTogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xuICBvcmRlcjogbnVtYmVyO1xufVxuXG5leHBvcnQgdHlwZSBBWFBXaWRnZXREYXRhVHlwZSA9ICdzdHJpbmcnIHwgJ251bWJlcicgfCAnb2JqZWN0JyB8ICdib29sZWFuJyB8ICdhcnJheSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQV2lkZ2V0UHJvcGVydHkge1xuICBuYW1lOiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBncm91cDogQVhQV2lkZ2V0UHJvcGVydHlHcm91cDtcbiAgc2NoZW1hOiB7XG4gICAgZGF0YVR5cGU6IEFYUFdpZGdldERhdGFUeXBlO1xuICAgIG51bGxhYmxlPzogYm9vbGVhbjtcbiAgICBkZWZhdWx0VmFsdWU/OiBhbnkgfCBzdHJpbmcgfCAoKGNvbnRleHQ6IGFueSB8IG51bGwpID0+IGFueSk7XG4gICAgaW50ZXJmYWNlOiBSZXF1aXJlZDxQaWNrPEFYUFdpZGdldE5vZGUsICdwYXRoJz4+ICYgT21pdDxBWFBXaWRnZXROb2RlLCAncGF0aCc+O1xuICB9O1xuICBvcHRpb25zPzogQVhQT3B0aW9uc0RhdGE7XG4gIHZhbGlkYXRpb25zPzogQVhQVmFsaWRhdGlvblJ1bGVzO1xuICB2aXNpYmxlOiBib29sZWFuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2xvbmVQcm9wZXJ0eShcbiAgcHJvcGVydHk6IEFYUFdpZGdldFByb3BlcnR5LFxuICB2YWx1ZXM6IEFYUFBhcnRpYWxOZXN0ZWQ8QVhQV2lkZ2V0UHJvcGVydHk+XG4pOiBBWFBXaWRnZXRQcm9wZXJ0eSB7XG4gIHJldHVybiBtZXJnZShjbG9uZURlZXAocHJvcGVydHkpLCB2YWx1ZXMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU3RyaW5nUHJvcGVydHkoY3Rvcjoge1xuICBkZWZhdWx0VmFsdWU/OiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgdGl0bGU6IHN0cmluZztcbiAgcGF0aD86IHN0cmluZztcbiAgZ3JvdXA6IEFYUFdpZGdldFByb3BlcnR5R3JvdXA7XG4gIHZpc2libGU/OiBib29sZWFuO1xufSk6IEFYUFdpZGdldFByb3BlcnR5IHtcbiAgcmV0dXJuIHtcbiAgICBuYW1lOiBjdG9yLm5hbWUsXG4gICAgdGl0bGU6IGN0b3IudGl0bGUsXG4gICAgZ3JvdXA6IGN0b3IuZ3JvdXAsXG4gICAgc2NoZW1hOiB7XG4gICAgICBkYXRhVHlwZTogJ3N0cmluZycsXG4gICAgICBkZWZhdWx0VmFsdWU6IGN0b3IuZGVmYXVsdFZhbHVlLFxuICAgICAgaW50ZXJmYWNlOiB7XG4gICAgICAgIG5hbWU6IGN0b3IubmFtZSxcbiAgICAgICAgcGF0aDogY3Rvci5wYXRoID8/IGN0b3IubmFtZSxcbiAgICAgICAgdHlwZTogQVhQV2lkZ2V0c0NhdGFsb2cudGV4dCxcbiAgICAgIH0sXG4gICAgfSxcbiAgICB2aXNpYmxlOiBjdG9yLnZpc2libGUgPz8gdHJ1ZSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUJvb2xlYW5Qcm9wZXJ0eShjdG9yOiB7XG4gIGRlZmF1bHRWYWx1ZT86IGJvb2xlYW47XG4gIG5hbWU6IHN0cmluZztcbiAgdGl0bGU6IHN0cmluZztcbiAgcGF0aD86IHN0cmluZztcbiAgZ3JvdXA6IEFYUFdpZGdldFByb3BlcnR5R3JvdXA7XG4gIHZpc2libGU/OiBib29sZWFuO1xufSk6IEFYUFdpZGdldFByb3BlcnR5IHtcbiAgcmV0dXJuIHtcbiAgICBuYW1lOiBjdG9yLm5hbWUsXG4gICAgdGl0bGU6IGN0b3IudGl0bGUsXG4gICAgZ3JvdXA6IGN0b3IuZ3JvdXAsXG4gICAgc2NoZW1hOiB7XG4gICAgICBkYXRhVHlwZTogJ2Jvb2xlYW4nLFxuICAgICAgZGVmYXVsdFZhbHVlOiBjdG9yLmRlZmF1bHRWYWx1ZSA/PyBmYWxzZSxcbiAgICAgIGludGVyZmFjZToge1xuICAgICAgICBuYW1lOiBjdG9yLm5hbWUsXG4gICAgICAgIHBhdGg6IGN0b3IucGF0aCA/PyBjdG9yLm5hbWUsXG4gICAgICAgIHR5cGU6IEFYUFdpZGdldHNDYXRhbG9nLnRvZ2dsZSxcbiAgICAgIH0sXG4gICAgfSxcbiAgICB2aXNpYmxlOiBjdG9yLnZpc2libGUgPz8gdHJ1ZSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVNlbGVjdFByb3BlcnR5PFQgPSBzdHJpbmcgfCB7IGlkOiBzdHJpbmc7IHRpdGxlOiBzdHJpbmcgfT4oY3Rvcjoge1xuICBkZWZhdWx0VmFsdWU6IFQgfCBUW10gfCBhbnk7XG4gIGRhdGFTb3VyY2U6IFRbXTtcbiAgbmFtZTogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xuICBwYXRoPzogc3RyaW5nO1xuICBncm91cDogQVhQV2lkZ2V0UHJvcGVydHlHcm91cDtcbiAgdmlzaWJsZT86IGJvb2xlYW47XG59KTogQVhQV2lkZ2V0UHJvcGVydHkge1xuICByZXR1cm4ge1xuICAgIG5hbWU6IGN0b3IubmFtZSxcbiAgICB0aXRsZTogY3Rvci50aXRsZSxcbiAgICBncm91cDogY3Rvci5ncm91cCxcbiAgICBzY2hlbWE6IHtcbiAgICAgIGRhdGFUeXBlOiAnc3RyaW5nJyxcbiAgICAgIGRlZmF1bHRWYWx1ZTogQXJyYXkuaXNBcnJheShjdG9yLmRlZmF1bHRWYWx1ZSlcbiAgICAgICAgPyBjdG9yLmRlZmF1bHRWYWx1ZS5tYXAoKGl0ZW0pID0+ICh0eXBlb2YgaXRlbSA9PT0gJ3N0cmluZycgPyB7IGlkOiBpdGVtIH0gOiBpdGVtKSlcbiAgICAgICAgOiB0eXBlb2YgY3Rvci5kZWZhdWx0VmFsdWUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgPyB7IGlkOiBjdG9yLmRlZmF1bHRWYWx1ZSwgdGl0bGU6IGN0b3IuZGVmYXVsdFZhbHVlIH1cbiAgICAgICAgICA6IGN0b3IuZGVmYXVsdFZhbHVlLFxuICAgICAgaW50ZXJmYWNlOiB7XG4gICAgICAgIG5hbWU6IGN0b3IubmFtZSxcbiAgICAgICAgcGF0aDogY3Rvci5wYXRoID8/IGN0b3IubmFtZSxcbiAgICAgICAgdHlwZTogQVhQV2lkZ2V0c0NhdGFsb2cuc2VsZWN0LFxuICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgZGF0YVNvdXJjZTogY3Rvci5kYXRhU291cmNlLm1hcCgoaXRlbSkgPT4gKHR5cGVvZiBpdGVtID09PSAnc3RyaW5nJyA/IHsgaWQ6IGl0ZW0sIHRpdGxlOiBpdGVtIH0gOiBpdGVtKSksXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0sXG4gICAgdmlzaWJsZTogY3Rvci52aXNpYmxlID8/IHRydWUsXG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQV2lkZ2V0Tm9kZSB7XG4gIHR5cGU6IEFYUFdpZGdldFR5cGVzTWFwW2tleW9mIEFYUFdpZGdldFR5cGVzTWFwXTtcbiAgcGF0aD86IHN0cmluZztcbiAgbmFtZT86IHN0cmluZztcbiAgZGVmYXVsdFZhbHVlPzogYW55O1xuICBmb3JtdWxhPzogc3RyaW5nO1xuICBjaGlsZHJlbj86IEFYUFdpZGdldE5vZGVbXTtcbiAgb3B0aW9ucz86IEFYUE9wdGlvbnNEYXRhO1xuICB0cmlnZ2Vycz86IEFYUFdpZGdldFRyaWdnZXJzO1xuICBtZXRhPzogQVhQTWV0YURhdGE7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQV2lkZ2V0VHlwZXNNYXAge1xuICBjaGVja2JveDogJ2NoZWNrYm94LWVkaXRvcic7XG4gIGNvbG9yOiAnY29sb3ItZWRpdG9yJztcbiAgY29udGFjdDogJ2NvbnRhY3QtZWRpdG9yJztcbiAgZGF0ZVRpbWU6ICdkYXRlLXRpbWUtZWRpdG9yJztcbiAgZW1haWw6ICdlbWFpbC1lZGl0b3InO1xuICBsYXJnZVRleHQ6ICdsYXJnZS10ZXh0LWVkaXRvcic7XG4gIGxpbms6ICdsaW5rLWVkaXRvcic7XG4gIG51bWJlcjogJ251bWJlci1lZGl0b3InO1xuICBwYXNzd29yZDogJ3Bhc3N3b3JkLWVkaXRvcic7XG4gIHBob25lOiAncGhvbmUtZWRpdG9yJztcbiAgcmljaFRleHQ6ICdyaWNoLXRleHQtZWRpdG9yJztcbiAgc2VsZWN0OiAnc2VsZWN0LWVkaXRvcic7XG4gIHNlbGVjdGlvbkxpc3Q6ICdzZWxlY3Rpb24tbGlzdC1lZGl0b3InO1xuICB0ZXh0OiAndGV4dC1lZGl0b3InO1xuICB0b2dnbGU6ICd0b2dnbGUtZWRpdG9yJztcbiAgYmxvY2tMYXlvdXQ6ICdibG9jay1sYXlvdXQnO1xuICBwYWdlTGF5b3V0OiAncGFnZS1sYXlvdXQnO1xuICByZXBlYXRlckxheW91dDogJ3JlcGVhdGVyLWxheW91dCc7XG4gIHRleHRCbG9ja0xheW91dDogJ3RleHQtYmxvY2stbGF5b3V0JztcbiAgZmlsZTogJ2ZpbGUnO1xuICBtYXA6ICdtYXAnO1xuICBnYWxsZXJ5OiAnZ2FsbGVyeSc7XG4gIHNpZ25hdHVyZTogJ3NpZ25hdHVyZSc7XG4gIGJ1dHRvbkFjdGlvbjogJ2J1dHRvbi1hY3Rpb24nO1xuICBkb2N1bWVudDogJ2RvY3VtZW50LWxheW91dCc7XG4gIGxvb2t1cDogJ2xvb2t1cC1lZGl0b3InO1xuICBmb3JtRmllbGQ6ICdmb3JtLWZpZWxkJztcbiAgZ3JpZDogJ2dyaWQtbGF5b3V0JztcbiAgZ3JpZFJvdzogJ2dyaWQtcm93LWxheW91dCc7XG4gIGdyaWRJdGVtOiAnZ3JpZC1pdGVtLWxheW91dCc7XG4gIHFyY29kZTogJ3FyY29kZSc7XG4gIHdpZGdldFNlbGVjdG9yOiAnd2lkZ2V0LXNlbGVjdG9yJztcbiAgdGVtcGxhdGU6ICd0ZW1wbGF0ZSc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQV2lkZ2V0Tm9kZVRva2VuIHtcbiAgY29uZmlnOiBBWFBXaWRnZXRDb25maWc7XG4gIG5vZGU6IEFYUFdpZGdldE5vZGU7XG4gIG9wdGlvbnM/OiBBWFBPcHRpb25zRGF0YTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBWFBXaWRnZXRDb2x1bW5Ob2RlIHtcbiAgdHlwZTogc3RyaW5nO1xuICBwYXRoOiBzdHJpbmc7XG4gIG9wdGlvbnM/OiBBWFBPcHRpb25zRGF0YTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBWFBXaWRnZXRDb2x1bW5Ob2RlVG9rZW4gZXh0ZW5kcyBBWFBXaWRnZXRDb2x1bW5Ob2RlIHtcbiAgY29uZmlnOiBBWFBXaWRnZXRDb25maWc7XG59XG5cbmV4cG9ydCBjb25zdCBBWFBfV0lER0VUX1RPS0VOID0gbmV3IEluamVjdGlvblRva2VuPEFYUFdpZGdldE5vZGVUb2tlbj4oJ0FYUF9XSURHRVRfVE9LRU4nKTtcbmV4cG9ydCBjb25zdCBBWFBfV0lER0VUX0NPTFVNTl9UT0tFTiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxBWFBXaWRnZXRDb2x1bW5Ob2RlVG9rZW4+KCdBWFBfV0lER0VUX0NPTFVNTl9UT0tFTicpO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFYUFdpZGdldENvbXBvbmVudENvbmZpZyB7XG4gIGNvbXBvbmVudDogKCkgPT4gUHJvbWlzZTxhbnk+O1xuICBwcm9wZXJ0aWVzPzogQVhQV2lkZ2V0UHJvcGVydHlbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBWFBXaWRnZXRDb25maWdDb21wb25lbnRzIHtcbiAgZGVzaWduZXI/OiBBWFBXaWRnZXRDb21wb25lbnRDb25maWc7XG4gIHZpZXc/OiBBWFBXaWRnZXRDb21wb25lbnRDb25maWc7XG4gIGVkaXQ/OiBBWFBXaWRnZXRDb21wb25lbnRDb25maWc7XG4gIHByaW50PzogQVhQV2lkZ2V0Q29tcG9uZW50Q29uZmlnO1xuICBjb2x1bW4/OiBBWFBXaWRnZXRDb21wb25lbnRDb25maWc7XG4gIGZpbHRlcj86IEFYUFdpZGdldENvbXBvbmVudENvbmZpZztcbn1cblxuZXhwb3J0IHR5cGUgQVhQV2lkZ2V0VHlwZSA9ICdjb250YWluZXInIHwgJ2VkaXRvcicgfCAnYWN0aW9uJyB8ICd2aWV3JztcblxuZXhwb3J0IGludGVyZmFjZSBBWFBXaWRnZXRDb25maWcge1xuICBuYW1lOiBBWFBXaWRnZXRUeXBlc01hcFtrZXlvZiBBWFBXaWRnZXRUeXBlc01hcF07XG4gIHRpdGxlOiBzdHJpbmc7XG4gIGljb24/OiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBncm91cDogQVhQV2lkZ2V0R3JvdXA7XG4gIHByb3BlcnRpZXM/OiBBWFBXaWRnZXRQcm9wZXJ0eVtdO1xuICBjb21wb25lbnRzOiBBWFBXaWRnZXRDb25maWdDb21wb25lbnRzO1xuICBtZXRhPzogQVhQTWV0YURhdGE7XG4gIHR5cGU6IEFYUFdpZGdldFR5cGU7XG4gIHZpc2libGU/OiBib29sZWFuO1xufVxuXG5leHBvcnQgdHlwZSBBWFBXaWRnZXRSZW5kZXJNb2RlID0ga2V5b2YgQVhQV2lkZ2V0Q29uZmlnQ29tcG9uZW50cztcblxuZXhwb3J0IGludGVyZmFjZSBBWFBMYXlvdXRDb250ZXh0RXZlbnQge1xuICBvbGRWYWx1ZTogYW55O1xuICBuZXdWYWx1ZTogYW55O1xuICBwYXRoPzogc3RyaW5nIHwgbnVsbDtcbiAgZGF0YTogYW55O1xuICBpbml0OiBib29sZWFuO1xufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQVhQV2lkZ2V0Q29tcG9uZW50PFQgPSBhbnkgfCBudWxsIHwgdm9pZD4gZXh0ZW5kcyBBWFBMYXlvdXRFbGVtZW50IHtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHRva2VuID0gaW5qZWN0KEFYUF9XSURHRVRfVE9LRU4pO1xuICBwdWJsaWMgcmVhZG9ubHkgaG9zdCA9IGluamVjdChFbGVtZW50UmVmKS5uYXRpdmVFbGVtZW50IGFzIEhUTUxEaXZFbGVtZW50O1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBjb25maWcgPSB0aGlzLnRva2VuLmNvbmZpZztcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgbmFtZSA9IHRoaXMudG9rZW4ubm9kZS5uYW1lO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcGF0aCA9IHRoaXMudG9rZW4ubm9kZS5wYXRoO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGVmYXVsdFZhbHVlID0gdGhpcy50b2tlbi5ub2RlLmRlZmF1bHRWYWx1ZTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2NoaWxkcmVuID0gc2lnbmFsKHRoaXMudG9rZW4ubm9kZS5jaGlsZHJlbiA/PyBbXSk7XG4gIHByb3RlY3RlZCBjaGlsZHJlbiA9IHRoaXMuX2NoaWxkcmVuLmFzUmVhZG9ubHkoKTtcblxuICBwcm90ZWN0ZWQgX29wdGlvbnMgPSBzaWduYWw8YW55Pih0aGlzLnRva2VuLm9wdGlvbnMgPz8ge30pO1xuICBwcm90ZWN0ZWQgb3B0aW9ucyA9IHRoaXMuX29wdGlvbnMuYXNSZWFkb25seSgpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgY29udGV4dFNlcnZpY2UgPSBpbmplY3QoQVhQTGF5b3V0QnVpbGRlclNlcnZpY2UpO1xuXG4gIHB1YmxpYyByZWFkb25seSBvblJlYWR5ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBwcml2YXRlIGlzUmVuZGVyZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfaXNWYWx1ZVdpZGdldCA9IGZhbHNlO1xuICBwcml2YXRlIGlzVmFsdWVXaWRnZXQgPSAoKSA9PiB0aGlzLl9pc1ZhbHVlV2lkZ2V0O1xuXG4gIHByaXZhdGUgX2lkOiBzdHJpbmcgfCBudWxsO1xuICBwdWJsaWMgZ2V0IGlkKCk6IHN0cmluZyB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9pZDtcbiAgfVxuXG4gIHBhcmVudDogQVhQV2lkZ2V0Q29tcG9uZW50IHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgaW5kZXg6IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIG1vZGU6IEFYUFdpZGdldFJlbmRlck1vZGU7XG5cbiAgcHJpdmF0ZSBmdWxsUGF0aCA9IHNpZ25hbDxzdHJpbmcgfCBudWxsPihudWxsKTtcblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmluaXRSZW5kZXIoKTtcbiAgfVxuXG4gIHByaXZhdGUgbmV4dFJlbmRlciA9IGFmdGVyTmV4dFJlbmRlcigoKSA9PiB7XG4gICAgLy9cbiAgICBpZiAoIXRoaXMuaXNSZW5kZXJlZCkge1xuICAgICAgdGhpcy5kZXRlY3RGdWxsUGF0aCgpO1xuICAgICAgLy9cbiAgICAgIHRoaXMub25SZWFkeS5uZXh0KCk7XG4gICAgICAvL1xuICAgICAgdGhpcy5pc1JlbmRlcmVkID0gdHJ1ZTtcbiAgICB9XG4gIH0pO1xuXG4gIHByaXZhdGUgaW5pdFJlbmRlcigpIHtcbiAgICB0aGlzLl9pc1ZhbHVlV2lkZ2V0ID0gdGhpcy5jb25maWcucHJvcGVydGllcz8uc29tZSgoYykgPT4gYy5uYW1lID09ICdwYXRoJykgPz8gZmFsc2U7XG4gICAgaWYgKHRoaXMuaXNWYWx1ZVdpZGdldCgpKSB7XG4gICAgICB0aGlzLmRldGVjdEZ1bGxQYXRoKCk7XG4gICAgICBpZiAodGhpcy5kZWZhdWx0VmFsdWUgIT0gbnVsbCkge1xuICAgICAgICB0aGlzLnNldFZhbHVlKHRoaXMuZGVmYXVsdFZhbHVlLCB0cnVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0VmFsdWUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuZnVsbFBhdGgoKSA/IGdldCh0aGlzLmNvbnRleHRTZXJ2aWNlLmNvbnRleHQoKSwgdGhpcy5mdWxsUGF0aCgpISkgOiBudWxsO1xuICB9KTtcblxuICBzZXRWYWx1ZSh2YWx1ZTogVCB8IG51bGwgfCB1bmRlZmluZWQsIGluaXQ6IGJvb2xlYW4gPSBmYWxzZSkge1xuICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy5nZXRWYWx1ZSgpO1xuICAgIHZhbHVlID0gaXNVbmRlZmluZWQodmFsdWUpID8gbnVsbCA6IHZhbHVlO1xuICAgIGlmICh0aGlzLmZ1bGxQYXRoKCkpIHtcbiAgICAgIHRoaXMuY29udGV4dFNlcnZpY2Uuc2V0VmFsdWUodGhpcy5mdWxsUGF0aCgpISwgdmFsdWUsIGluaXQpO1xuICAgICAgdGhpcy5vblZhbHVlQ2hhbmdlZChvbGRWYWx1ZSwgdmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHNldE9wdGlvbnModmFsdWVzOiBhbnkpOiB2b2lkIHtcbiAgICBjb25zb2xlLmxvZyh0aGlzLmNvbmZpZy5uYW1lLCB0aGlzLm1vZGUsIHZhbHVlcyk7XG4gICAgdGhpcy5fb3B0aW9ucy5zZXQoeyAuLi50aGlzLm9wdGlvbnMoKSwgLi4udmFsdWVzIH0pO1xuICB9XG5cbiAgY2FsbChuYW1lOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKTogdm9pZCB7XG4gICAgY29uc3QgZm4gPSBnZXQodGhpcywgbmFtZSkgYXMgRnVuY3Rpb247XG4gICAgaWYgKGZuICYmIHR5cGVvZiBmbiA9PSAnZnVuY3Rpb24nKSB7XG4gICAgICBmbi5iaW5kKHRoaXMpKC4uLmFyZ3MpO1xuICAgIH1cbiAgfVxuXG4gIHNldENoaWxkcmVuKGNoaWxkcmVuOiBBWFBXaWRnZXROb2RlW10pIHtcbiAgICB0aGlzLl9jaGlsZHJlbi5zZXQoWy4uLmNoaWxkcmVuXSk7XG4gIH1cblxuICBvblZhbHVlQ2hhbmdlZChvbGRWYWx1ZTogVCB8IG51bGwsIG5ld1ZhbHVlOiBUIHwgbnVsbCkgeyB9XG5cbiAgcHJpdmF0ZSBkZXRlY3RGdWxsUGF0aCgpIHtcbiAgICBsZXQgc2VjdGlvbnMgPSBbXTtcbiAgICBsZXQgaWRzID0gW107XG4gICAgLy9cbiAgICBsZXQgcGFyZW50OiBBWFBXaWRnZXRDb21wb25lbnQgfCBudWxsIHwgdW5kZWZpbmVkID0gdGhpcztcbiAgICAvL1xuICAgIHdoaWxlIChwYXJlbnQpIHtcbiAgICAgIGNvbnN0IHBhdGggPSBwYXJlbnQucGF0aCA/PyAocGFyZW50LmlzVmFsdWVXaWRnZXQoKSAmJiBwYXJlbnQuaW5kZXggPT0gbnVsbCA/IHBhcmVudC5uYW1lIDogbnVsbCk7XG4gICAgICBjb25zdCBpZCA9IHBhcmVudC5uYW1lO1xuICAgICAgLy9cbiAgICAgIGlmIChwYXRoKSB7XG4gICAgICAgIHNlY3Rpb25zLnB1c2gocGF0aCk7XG4gICAgICB9XG4gICAgICBpZiAocGFyZW50LmluZGV4ICE9IG51bGwpIHtcbiAgICAgICAgc2VjdGlvbnMucHVzaChgWyR7cGFyZW50LmluZGV4fV1gKTtcbiAgICAgIH1cbiAgICAgIGlmIChpZCkge1xuICAgICAgICBpZHMucHVzaChpZCk7XG4gICAgICAgIGlmIChwYXJlbnQuaW5kZXggIT0gbnVsbCkge1xuICAgICAgICAgIGlkcy5wdXNoKGAke3BhcmVudC5pbmRleH1gKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcGFyZW50ID0gcGFyZW50LnBhcmVudDtcbiAgICB9XG4gICAgLy9cbiAgICB0aGlzLmZ1bGxQYXRoLnNldChzZWN0aW9ucy5yZXZlcnNlKCkuam9pbignLicpKTtcbiAgICB0aGlzLl9pZCA9IHRoaXMubmFtZSB8fCB0aGlzLnBhcmVudCA/IGlkcy5yZXZlcnNlKCkuam9pbignXycpIDogbnVsbDtcbiAgICBpZiAodGhpcy5faWQpIHtcbiAgICAgIHRoaXMuY29udGV4dFNlcnZpY2UucmVnaXN0ZXJXaWRnZXQodGhpcy5faWQsIHRoaXMpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVWYWx1ZUNoYW5nZWQoZTogQVhWYWx1ZUNoYW5nZWRFdmVudDxUPikge1xuICAgIGlmIChlLmlzVXNlckludGVyYWN0aW9uKSB7XG4gICAgICB0aGlzLnNldFZhbHVlKGUudmFsdWUhKTtcbiAgICB9XG4gIH1cbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFYUENvbnRhaW5lcldpZGdldENvbXBvbmVudDxUPiBleHRlbmRzIEFYUFdpZGdldENvbXBvbmVudDxUPiB7XG4gIHB1YmxpYyByZWFkb25seSBub2RlID0gdGhpcy50b2tlbi5ub2RlO1xufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQVhQQ29sdW1uV2lkZ2V0Q29tcG9uZW50PFQgPSBhbnkgfCBudWxsIHwgdm9pZD4ge1xuICBwcml2YXRlIHJlYWRvbmx5IHRva2VuID0gaW5qZWN0KEFYUF9XSURHRVRfQ09MVU1OX1RPS0VOKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcGF0aCA9IHRoaXMudG9rZW4ucGF0aDtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IG9wdGlvbnMgPSB0aGlzLnRva2VuLm9wdGlvbnMgPz8ge307XG4gIHByb3RlY3RlZCByZWFkb25seSByYXdWYWx1ZTogYW55ID0gbnVsbDtcbn1cbiJdfQ==
|
|
259
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LnR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9sYXlvdXQvYnVpbGRlci9zcmMvbGliL2J1aWxkZXIvd2lkZ2V0LnR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQXVCLHdCQUF3QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFeEcsT0FBTyxFQUNMLGVBQWUsRUFDZixRQUFRLEVBQ1IsTUFBTSxFQUNOLFVBQVUsRUFDVixNQUFNLEVBQ04sVUFBVSxFQUNWLGNBQWMsRUFDZCxNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDdEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM5RSxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNuRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7QUFtQ3JELE1BQU0sVUFBVSxhQUFhLENBQzNCLFFBQTJCLEVBQzNCLE1BQTJDO0lBRTNDLE9BQU8sS0FBSyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUM1QyxDQUFDO0FBRUQsTUFBTSxVQUFVLG9CQUFvQixDQUFDLElBT3BDO0lBQ0MsT0FBTztRQUNMLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtRQUNmLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztRQUNqQixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7UUFDakIsTUFBTSxFQUFFO1lBQ04sUUFBUSxFQUFFLFFBQVE7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YUFBUSxHQUFRLElBQUksQ0FBQztLQUN6Qzs4R0FOcUIsd0JBQXdCO2tIQUF4Qix3QkFBd0I7OzJGQUF4Qix3QkFBd0I7a0JBRDdDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWERhdGFTb3VyY2UsIEFYVmFsdWVDaGFuZ2VkRXZlbnQsIGNvbnZlcnRBcnJheVRvRGF0YVNvdXJjZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9jb21tb24nO1xuaW1wb3J0IHsgQVhQTWV0YURhdGEsIEFYUE9wdGlvbnNEYXRhLCBBWFBQYXJ0aWFsTmVzdGVkLCBBWFBWYWxpZGF0aW9uUnVsZXMgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvcmUnO1xuaW1wb3J0IHtcbiAgYWZ0ZXJOZXh0UmVuZGVyLFxuICBjb21wdXRlZCxcbiAgZWZmZWN0LFxuICBFbGVtZW50UmVmLFxuICBpbmplY3QsXG4gIEluamVjdGFibGUsXG4gIEluamVjdGlvblRva2VuLFxuICBzaWduYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgY2xvbmVEZWVwLCBnZXQsIGlzTmlsLCBpc1VuZGVmaW5lZCwgbWVyZ2UgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQVhQTGF5b3V0QnVpbGRlclNlcnZpY2UsIEFYUExheW91dEVsZW1lbnQgfSBmcm9tICcuL2J1aWxkZXIuc2VydmljZSc7XG5pbXBvcnQgeyBBWFBXaWRnZXREYXRhU291cmNlUHJvdmlkZXJTZXJ2aWNlIH0gZnJvbSAnLi9kYXRhc291cmNlLXByb3ZpZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQVhQV2lkZ2V0c0NhdGFsb2cgfSBmcm9tICcuL3dpZGdldC1jYXRhbG9nJztcblxuZXhwb3J0IHR5cGUgQVhQV2lkZ2V0VHJpZ2dlciA9IHsgZXZlbnQ6IHN0cmluZzsgYWN0aW9uOiBzdHJpbmc7IGRpc2FibGVkPzogYm9vbGVhbiB9O1xuZXhwb3J0IHR5cGUgQVhQV2lkZ2V0VHJpZ2dlcnMgPSBBWFBXaWRnZXRUcmlnZ2VyW107XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQV2lkZ2V0UHJvcGVydHlHcm91cCB7XG4gIG5hbWU6IHN0cmluZztcbiAgdGl0bGU6IHN0cmluZztcbiAgb3JkZXI6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBWFBXaWRnZXRHcm91cCB7XG4gIG5hbWU6IHN0cmluZztcbiAgdGl0bGU6IHN0cmluZztcbiAgb3JkZXI6IG51bWJlcjtcbn1cblxuZXhwb3J0IHR5cGUgQVhQV2lkZ2V0RGF0YVR5cGUgPSAnc3RyaW5nJyB8ICdudW1iZXInIHwgJ29iamVjdCcgfCAnYm9vbGVhbicgfCAnYXJyYXknO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFYUFdpZGdldFByb3BlcnR5IHtcbiAgbmFtZTogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgZ3JvdXA6IEFYUFdpZGdldFByb3BlcnR5R3JvdXA7XG4gIHNjaGVtYToge1xuICAgIGRhdGFUeXBlOiBBWFBXaWRnZXREYXRhVHlwZTtcbiAgICBudWxsYWJsZT86IGJvb2xlYW47XG4gICAgZGVmYXVsdFZhbHVlPzogYW55IHwgc3RyaW5nIHwgKChjb250ZXh0OiBhbnkgfCBudWxsKSA9PiBhbnkpO1xuICAgIGludGVyZmFjZTogUmVxdWlyZWQ8UGljazxBWFBXaWRnZXROb2RlLCAncGF0aCc+PiAmIE9taXQ8QVhQV2lkZ2V0Tm9kZSwgJ3BhdGgnPjtcbiAgfTtcbiAgb3B0aW9ucz86IEFYUE9wdGlvbnNEYXRhO1xuICB2YWxpZGF0aW9ucz86IEFYUFZhbGlkYXRpb25SdWxlcztcbiAgdmlzaWJsZTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNsb25lUHJvcGVydHkoXG4gIHByb3BlcnR5OiBBWFBXaWRnZXRQcm9wZXJ0eSxcbiAgdmFsdWVzOiBBWFBQYXJ0aWFsTmVzdGVkPEFYUFdpZGdldFByb3BlcnR5PlxuKTogQVhQV2lkZ2V0UHJvcGVydHkge1xuICByZXR1cm4gbWVyZ2UoY2xvbmVEZWVwKHByb3BlcnR5KSwgdmFsdWVzKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVN0cmluZ1Byb3BlcnR5KGN0b3I6IHtcbiAgZGVmYXVsdFZhbHVlPzogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIHBhdGg/OiBzdHJpbmc7XG4gIGdyb3VwOiBBWFBXaWRnZXRQcm9wZXJ0eUdyb3VwO1xuICB2aXNpYmxlPzogYm9vbGVhbjtcbn0pOiBBWFBXaWRnZXRQcm9wZXJ0eSB7XG4gIHJldHVybiB7XG4gICAgbmFtZTogY3Rvci5uYW1lLFxuICAgIHRpdGxlOiBjdG9yLnRpdGxlLFxuICAgIGdyb3VwOiBjdG9yLmdyb3VwLFxuICAgIHNjaGVtYToge1xuICAgICAgZGF0YVR5cGU6ICdzdHJpbmcnLFxuICAgICAgZGVmYXVsdFZhbHVlOiBjdG9yLmRlZmF1bHRWYWx1ZSxcbiAgICAgIGludGVyZmFjZToge1xuICAgICAgICBuYW1lOiBjdG9yLm5hbWUsXG4gICAgICAgIHBhdGg6IGN0b3IucGF0aCA/PyBjdG9yLm5hbWUsXG4gICAgICAgIHR5cGU6IEFYUFdpZGdldHNDYXRhbG9nLnRleHQsXG4gICAgICB9LFxuICAgIH0sXG4gICAgdmlzaWJsZTogY3Rvci52aXNpYmxlID8/IHRydWUsXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVCb29sZWFuUHJvcGVydHkoY3Rvcjoge1xuICBkZWZhdWx0VmFsdWU/OiBib29sZWFuO1xuICBuYW1lOiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIHBhdGg/OiBzdHJpbmc7XG4gIGdyb3VwOiBBWFBXaWRnZXRQcm9wZXJ0eUdyb3VwO1xuICB2aXNpYmxlPzogYm9vbGVhbjtcbn0pOiBBWFBXaWRnZXRQcm9wZXJ0eSB7XG4gIHJldHVybiB7XG4gICAgbmFtZTogY3Rvci5uYW1lLFxuICAgIHRpdGxlOiBjdG9yLnRpdGxlLFxuICAgIGdyb3VwOiBjdG9yLmdyb3VwLFxuICAgIHNjaGVtYToge1xuICAgICAgZGF0YVR5cGU6ICdib29sZWFuJyxcbiAgICAgIGRlZmF1bHRWYWx1ZTogY3Rvci5kZWZhdWx0VmFsdWUgPz8gZmFsc2UsXG4gICAgICBpbnRlcmZhY2U6IHtcbiAgICAgICAgbmFtZTogY3Rvci5uYW1lLFxuICAgICAgICBwYXRoOiBjdG9yLnBhdGggPz8gY3Rvci5uYW1lLFxuICAgICAgICB0eXBlOiBBWFBXaWRnZXRzQ2F0YWxvZy50b2dnbGUsXG4gICAgICB9LFxuICAgIH0sXG4gICAgdmlzaWJsZTogY3Rvci52aXNpYmxlID8/IHRydWUsXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTZWxlY3RQcm9wZXJ0eTxUID0gc3RyaW5nIHwgeyBpZDogc3RyaW5nOyB0aXRsZTogc3RyaW5nIH0+KGN0b3I6IHtcbiAgZGVmYXVsdFZhbHVlOiBUIHwgVFtdIHwgYW55O1xuICBkYXRhU291cmNlOiBUW107XG4gIG5hbWU6IHN0cmluZztcbiAgdGl0bGU6IHN0cmluZztcbiAgcGF0aD86IHN0cmluZztcbiAgZ3JvdXA6IEFYUFdpZGdldFByb3BlcnR5R3JvdXA7XG4gIHZpc2libGU/OiBib29sZWFuO1xufSk6IEFYUFdpZGdldFByb3BlcnR5IHtcbiAgcmV0dXJuIHtcbiAgICBuYW1lOiBjdG9yLm5hbWUsXG4gICAgdGl0bGU6IGN0b3IudGl0bGUsXG4gICAgZ3JvdXA6IGN0b3IuZ3JvdXAsXG4gICAgc2NoZW1hOiB7XG4gICAgICBkYXRhVHlwZTogJ3N0cmluZycsXG4gICAgICBkZWZhdWx0VmFsdWU6IEFycmF5LmlzQXJyYXkoY3Rvci5kZWZhdWx0VmFsdWUpXG4gICAgICAgID8gY3Rvci5kZWZhdWx0VmFsdWUubWFwKChpdGVtKSA9PiAodHlwZW9mIGl0ZW0gPT09ICdzdHJpbmcnID8geyBpZDogaXRlbSB9IDogaXRlbSkpXG4gICAgICAgIDogdHlwZW9mIGN0b3IuZGVmYXVsdFZhbHVlID09PSAnc3RyaW5nJ1xuICAgICAgICA/IHsgaWQ6IGN0b3IuZGVmYXVsdFZhbHVlLCB0aXRsZTogY3Rvci5kZWZhdWx0VmFsdWUgfVxuICAgICAgICA6IGN0b3IuZGVmYXVsdFZhbHVlLFxuICAgICAgaW50ZXJmYWNlOiB7XG4gICAgICAgIG5hbWU6IGN0b3IubmFtZSxcbiAgICAgICAgcGF0aDogY3Rvci5wYXRoID8/IGN0b3IubmFtZSxcbiAgICAgICAgdHlwZTogQVhQV2lkZ2V0c0NhdGFsb2cuc2VsZWN0LFxuICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgZGF0YVNvdXJjZTogY3Rvci5kYXRhU291cmNlLm1hcCgoaXRlbSkgPT4gKHR5cGVvZiBpdGVtID09PSAnc3RyaW5nJyA/IHsgaWQ6IGl0ZW0sIHRpdGxlOiBpdGVtIH0gOiBpdGVtKSksXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0sXG4gICAgdmlzaWJsZTogY3Rvci52aXNpYmxlID8/IHRydWUsXG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQV2lkZ2V0Tm9kZSB7XG4gIHR5cGU6IEFYUFdpZGdldFR5cGVzTWFwW2tleW9mIEFYUFdpZGdldFR5cGVzTWFwXTtcbiAgcGF0aD86IHN0cmluZztcbiAgbmFtZT86IHN0cmluZztcbiAgZGVmYXVsdFZhbHVlPzogYW55O1xuICBmb3JtdWxhPzogc3RyaW5nO1xuICBjaGlsZHJlbj86IEFYUFdpZGdldE5vZGVbXTtcbiAgb3B0aW9ucz86IEFYUE9wdGlvbnNEYXRhO1xuICB0cmlnZ2Vycz86IEFYUFdpZGdldFRyaWdnZXJzO1xuICBtZXRhPzogQVhQTWV0YURhdGE7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQV2lkZ2V0VHlwZXNNYXAge1xuICBjaGVja2JveDogJ2NoZWNrYm94LWVkaXRvcic7XG4gIGNvbG9yOiAnY29sb3ItZWRpdG9yJztcbiAgY29udGFjdDogJ2NvbnRhY3QtZWRpdG9yJztcbiAgZGF0ZVRpbWU6ICdkYXRlLXRpbWUtZWRpdG9yJztcbiAgZW1haWw6ICdlbWFpbC1lZGl0b3InO1xuICBsYXJnZVRleHQ6ICdsYXJnZS10ZXh0LWVkaXRvcic7XG4gIGxpbms6ICdsaW5rLWVkaXRvcic7XG4gIG51bWJlcjogJ251bWJlci1lZGl0b3InO1xuICBwYXNzd29yZDogJ3Bhc3N3b3JkLWVkaXRvcic7XG4gIHBob25lOiAncGhvbmUtZWRpdG9yJztcbiAgcmljaFRleHQ6ICdyaWNoLXRleHQtZWRpdG9yJztcbiAgc2VsZWN0OiAnc2VsZWN0LWVkaXRvcic7XG4gIHNlbGVjdGlvbkxpc3Q6ICdzZWxlY3Rpb24tbGlzdC1lZGl0b3InO1xuICB0ZXh0OiAndGV4dC1lZGl0b3InO1xuICB0b2dnbGU6ICd0b2dnbGUtZWRpdG9yJztcbiAgYmxvY2tMYXlvdXQ6ICdibG9jay1sYXlvdXQnO1xuICBwYWdlTGF5b3V0OiAncGFnZS1sYXlvdXQnO1xuICByZXBlYXRlckxheW91dDogJ3JlcGVhdGVyLWxheW91dCc7XG4gIHRleHRCbG9ja0xheW91dDogJ3RleHQtYmxvY2stbGF5b3V0JztcbiAgZmlsZTogJ2ZpbGUnO1xuICBtYXA6ICdtYXAnO1xuICBnYWxsZXJ5OiAnZ2FsbGVyeSc7XG4gIHNpZ25hdHVyZTogJ3NpZ25hdHVyZSc7XG4gIGJ1dHRvbkFjdGlvbjogJ2J1dHRvbi1hY3Rpb24nO1xuICBkb2N1bWVudDogJ2RvY3VtZW50LWxheW91dCc7XG4gIGxvb2t1cDogJ2xvb2t1cC1lZGl0b3InO1xuICBmb3JtRmllbGQ6ICdmb3JtLWZpZWxkJztcbiAgZ3JpZDogJ2dyaWQtbGF5b3V0JztcbiAgZ3JpZFJvdzogJ2dyaWQtcm93LWxheW91dCc7XG4gIGdyaWRJdGVtOiAnZ3JpZC1pdGVtLWxheW91dCc7XG4gIHFyY29kZTogJ3FyY29kZSc7XG4gIHdpZGdldFNlbGVjdG9yOiAnd2lkZ2V0LXNlbGVjdG9yJztcbiAgdGVtcGxhdGU6ICd0ZW1wbGF0ZSc7XG4gIHRlbXBsYXRlRGVzaWduZXI6ICd0ZW1wbGF0ZS1kZXNpZ25lcic7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQV2lkZ2V0Tm9kZVRva2VuIHtcbiAgY29uZmlnOiBBWFBXaWRnZXRDb25maWc7XG4gIG5vZGU6IEFYUFdpZGdldE5vZGU7XG4gIG9wdGlvbnM/OiBBWFBPcHRpb25zRGF0YTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBWFBXaWRnZXRDb2x1bW5Ob2RlIHtcbiAgdHlwZTogc3RyaW5nO1xuICBwYXRoOiBzdHJpbmc7XG4gIG9wdGlvbnM/OiBBWFBPcHRpb25zRGF0YTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBWFBXaWRnZXRDb2x1bW5Ob2RlVG9rZW4gZXh0ZW5kcyBBWFBXaWRnZXRDb2x1bW5Ob2RlIHtcbiAgY29uZmlnOiBBWFBXaWRnZXRDb25maWc7XG59XG5cbmV4cG9ydCBjb25zdCBBWFBfV0lER0VUX1RPS0VOID0gbmV3IEluamVjdGlvblRva2VuPEFYUFdpZGdldE5vZGVUb2tlbj4oJ0FYUF9XSURHRVRfVE9LRU4nKTtcbmV4cG9ydCBjb25zdCBBWFBfV0lER0VUX0NPTFVNTl9UT0tFTiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxBWFBXaWRnZXRDb2x1bW5Ob2RlVG9rZW4+KCdBWFBfV0lER0VUX0NPTFVNTl9UT0tFTicpO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFYUFdpZGdldENvbXBvbmVudENvbmZpZyB7XG4gIGNvbXBvbmVudDogKCkgPT4gUHJvbWlzZTxhbnk+O1xuICBwcm9wZXJ0aWVzPzogQVhQV2lkZ2V0UHJvcGVydHlbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBWFBXaWRnZXRDb25maWdDb21wb25lbnRzIHtcbiAgZGVzaWduZXI/OiBBWFBXaWRnZXRDb21wb25lbnRDb25maWc7XG4gIHZpZXc/OiBBWFBXaWRnZXRDb21wb25lbnRDb25maWc7XG4gIGVkaXQ/OiBBWFBXaWRnZXRDb21wb25lbnRDb25maWc7XG4gIHByaW50PzogQVhQV2lkZ2V0Q29tcG9uZW50Q29uZmlnO1xuICBjb2x1bW4/OiBBWFBXaWRnZXRDb21wb25lbnRDb25maWc7XG4gIGZpbHRlcj86IEFYUFdpZGdldENvbXBvbmVudENvbmZpZztcbn1cblxuZXhwb3J0IHR5cGUgQVhQV2lkZ2V0VHlwZSA9ICdjb250YWluZXInIHwgJ2VkaXRvcicgfCAnYWN0aW9uJyB8ICd2aWV3JztcblxuZXhwb3J0IGludGVyZmFjZSBBWFBXaWRnZXRDb25maWcge1xuICBuYW1lOiBBWFBXaWRnZXRUeXBlc01hcFtrZXlvZiBBWFBXaWRnZXRUeXBlc01hcF07XG4gIHRpdGxlOiBzdHJpbmc7XG4gIGljb24/OiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBncm91cDogQVhQV2lkZ2V0R3JvdXA7XG4gIHByb3BlcnRpZXM/OiBBWFBXaWRnZXRQcm9wZXJ0eVtdO1xuICBjb21wb25lbnRzOiBBWFBXaWRnZXRDb25maWdDb21wb25lbnRzO1xuICBtZXRhPzogQVhQTWV0YURhdGE7XG4gIHR5cGU6IEFYUFdpZGdldFR5cGU7XG4gIHZpc2libGU/OiBib29sZWFuO1xufVxuXG5leHBvcnQgdHlwZSBBWFBXaWRnZXRSZW5kZXJNb2RlID0ga2V5b2YgQVhQV2lkZ2V0Q29uZmlnQ29tcG9uZW50cztcblxuZXhwb3J0IGludGVyZmFjZSBBWFBMYXlvdXRDb250ZXh0RXZlbnQge1xuICBvbGRWYWx1ZTogYW55O1xuICBuZXdWYWx1ZTogYW55O1xuICBwYXRoPzogc3RyaW5nIHwgbnVsbDtcbiAgZGF0YTogYW55O1xuICBpbml0OiBib29sZWFuO1xufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQVhQV2lkZ2V0Q29tcG9uZW50PFQgPSBhbnkgfCBudWxsIHwgdm9pZD4gZXh0ZW5kcyBBWFBMYXlvdXRFbGVtZW50IHtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHRva2VuID0gaW5qZWN0KEFYUF9XSURHRVRfVE9LRU4pO1xuICBwdWJsaWMgcmVhZG9ubHkgaG9zdCA9IGluamVjdChFbGVtZW50UmVmKS5uYXRpdmVFbGVtZW50IGFzIEhUTUxEaXZFbGVtZW50O1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBjb25maWcgPSB0aGlzLnRva2VuLmNvbmZpZztcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgbmFtZSA9IHRoaXMudG9rZW4ubm9kZS5uYW1lO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcGF0aCA9IHRoaXMudG9rZW4ubm9kZS5wYXRoO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGVmYXVsdFZhbHVlID0gdGhpcy50b2tlbi5ub2RlLmRlZmF1bHRWYWx1ZTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2NoaWxkcmVuID0gc2lnbmFsKHRoaXMudG9rZW4ubm9kZS5jaGlsZHJlbiA/PyBbXSk7XG4gIHByb3RlY3RlZCBjaGlsZHJlbiA9IHRoaXMuX2NoaWxkcmVuLmFzUmVhZG9ubHkoKTtcblxuICBwcm90ZWN0ZWQgX29wdGlvbnMgPSBzaWduYWw8YW55Pih0aGlzLnRva2VuLm9wdGlvbnMgPz8ge30pO1xuICBwcm90ZWN0ZWQgb3B0aW9ucyA9IHRoaXMuX29wdGlvbnMuYXNSZWFkb25seSgpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgY29udGV4dFNlcnZpY2UgPSBpbmplY3QoQVhQTGF5b3V0QnVpbGRlclNlcnZpY2UpO1xuXG4gIHB1YmxpYyByZWFkb25seSBvblJlYWR5ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBwcml2YXRlIGlzUmVuZGVyZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfaXNWYWx1ZVdpZGdldCA9IGZhbHNlO1xuICBwcml2YXRlIGlzVmFsdWVXaWRnZXQgPSAoKSA9PiB0aGlzLl9pc1ZhbHVlV2lkZ2V0O1xuXG4gIHByaXZhdGUgX2lkOiBzdHJpbmcgfCBudWxsO1xuICBwdWJsaWMgZ2V0IGlkKCk6IHN0cmluZyB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9pZDtcbiAgfVxuXG4gIHBhcmVudDogQVhQV2lkZ2V0Q29tcG9uZW50IHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgaW5kZXg6IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIG1vZGU6IEFYUFdpZGdldFJlbmRlck1vZGU7XG5cbiAgcHJvdGVjdGVkIGZ1bGxQYXRoID0gc2lnbmFsPHN0cmluZyB8IG51bGw+KG51bGwpO1xuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuaW5pdFJlbmRlcigpO1xuICB9XG5cbiAgcHJpdmF0ZSBuZXh0UmVuZGVyID0gYWZ0ZXJOZXh0UmVuZGVyKCgpID0+IHtcbiAgICAvL1xuICAgIGlmICghdGhpcy5pc1JlbmRlcmVkKSB7XG4gICAgICB0aGlzLmRldGVjdEZ1bGxQYXRoKCk7XG4gICAgICAvL1xuICAgICAgdGhpcy5vblJlYWR5Lm5leHQoKTtcbiAgICAgIC8vXG4gICAgICB0aGlzLmlzUmVuZGVyZWQgPSB0cnVlO1xuICAgIH1cbiAgfSk7XG5cbiAgcHJpdmF0ZSBpbml0UmVuZGVyKCkge1xuICAgIHRoaXMuX2lzVmFsdWVXaWRnZXQgPSB0aGlzLmNvbmZpZy5wcm9wZXJ0aWVzPy5zb21lKChjKSA9PiBjLm5hbWUgPT0gJ3BhdGgnKSA/PyBmYWxzZTtcbiAgICBpZiAodGhpcy5pc1ZhbHVlV2lkZ2V0KCkpIHtcbiAgICAgIHRoaXMuZGV0ZWN0RnVsbFBhdGgoKTtcbiAgICAgIGlmICghaXNOaWwodGhpcy5kZWZhdWx0VmFsdWUpICYmIGlzTmlsKHRoaXMuZ2V0VmFsdWUoKSkpIHtcbiAgICAgICAgY29uc29sZS5sb2codGhpcy5nZXRWYWx1ZSgpLCB0aGlzLmRlZmF1bHRWYWx1ZSk7XG4gICAgICAgIHRoaXMuc2V0VmFsdWUodGhpcy5kZWZhdWx0VmFsdWUsIHRydWUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRWYWx1ZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5mdWxsUGF0aCgpID8gdGhpcy5leHRyYWN0VmFsdWUodGhpcy5mdWxsUGF0aCgpISkgOiBudWxsO1xuICB9KTtcblxuICBwcm90ZWN0ZWQgZXh0cmFjdFZhbHVlKHBhdGg6IHN0cmluZyk6IGFueSB7XG4gICAgcmV0dXJuIGdldCh0aGlzLmNvbnRleHRTZXJ2aWNlLmNvbnRleHQoKSwgcGF0aCk7XG4gIH1cblxuICBzZXRWYWx1ZSh2YWx1ZTogVCB8IG51bGwgfCB1bmRlZmluZWQsIGluaXQ6IGJvb2xlYW4gPSBmYWxzZSkge1xuICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy5nZXRWYWx1ZSgpO1xuICAgIHZhbHVlID0gaXNVbmRlZmluZWQodmFsdWUpID8gbnVsbCA6IHZhbHVlO1xuICAgIGlmICh0aGlzLmZ1bGxQYXRoKCkpIHtcbiAgICAgIHRoaXMuY29udGV4dFNlcnZpY2Uuc2V0VmFsdWUodGhpcy5mdWxsUGF0aCgpISwgdmFsdWUsIGluaXQpO1xuICAgICAgdGhpcy5vblZhbHVlQ2hhbmdlZChvbGRWYWx1ZSwgdmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHNldE9wdGlvbnModmFsdWVzOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLl9vcHRpb25zLnNldCh7IC4uLnRoaXMub3B0aW9ucygpLCAuLi52YWx1ZXMgfSk7XG4gIH1cblxuICBjYWxsKG5hbWU6IHN0cmluZywgLi4uYXJnczogYW55W10pOiB2b2lkIHtcbiAgICBjb25zdCBmbiA9IGdldCh0aGlzLCBuYW1lKSBhcyBGdW5jdGlvbjtcbiAgICBpZiAoZm4gJiYgdHlwZW9mIGZuID09ICdmdW5jdGlvbicpIHtcbiAgICAgIGZuLmJpbmQodGhpcykoLi4uYXJncyk7XG4gICAgfVxuICB9XG5cbiAgc2V0Q2hpbGRyZW4oY2hpbGRyZW46IEFYUFdpZGdldE5vZGVbXSkge1xuICAgIHRoaXMuX2NoaWxkcmVuLnNldChbLi4uY2hpbGRyZW5dKTtcbiAgfVxuXG4gIG9uVmFsdWVDaGFuZ2VkKG9sZFZhbHVlOiBUIHwgbnVsbCwgbmV3VmFsdWU6IFQgfCBudWxsKSB7fVxuXG4gIHByaXZhdGUgZGV0ZWN0RnVsbFBhdGgoKSB7XG4gICAgbGV0IHNlY3Rpb25zID0gW107XG4gICAgbGV0IGlkcyA9IFtdO1xuICAgIC8vXG4gICAgbGV0IHBhcmVudDogQVhQV2lkZ2V0Q29tcG9uZW50IHwgbnVsbCB8IHVuZGVmaW5lZCA9IHRoaXM7XG4gICAgLy9cbiAgICB3aGlsZSAocGFyZW50KSB7XG4gICAgICBjb25zdCBwYXRoID0gcGFyZW50LnBhdGggPz8gKHBhcmVudC5pc1ZhbHVlV2lkZ2V0KCkgJiYgcGFyZW50LmluZGV4ID09IG51bGwgPyBwYXJlbnQubmFtZSA6IG51bGwpO1xuICAgICAgY29uc3QgaWQgPSBwYXJlbnQubmFtZTtcbiAgICAgIC8vXG4gICAgICBpZiAocGF0aCkge1xuICAgICAgICBzZWN0aW9ucy5wdXNoKHBhdGgpO1xuICAgICAgfVxuICAgICAgaWYgKHBhcmVudC5pbmRleCAhPSBudWxsKSB7XG4gICAgICAgIHNlY3Rpb25zLnB1c2goYFske3BhcmVudC5pbmRleH1dYCk7XG4gICAgICB9XG4gICAgICBpZiAoaWQpIHtcbiAgICAgICAgaWRzLnB1c2goaWQpO1xuICAgICAgICBpZiAocGFyZW50LmluZGV4ICE9IG51bGwpIHtcbiAgICAgICAgICBpZHMucHVzaChgJHtwYXJlbnQuaW5kZXh9YCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHBhcmVudCA9IHBhcmVudC5wYXJlbnQ7XG4gICAgfVxuICAgIC8vXG4gICAgdGhpcy5mdWxsUGF0aC5zZXQoc2VjdGlvbnMucmV2ZXJzZSgpLmpvaW4oJy4nKSk7XG4gICAgdGhpcy5faWQgPSB0aGlzLm5hbWUgfHwgdGhpcy5wYXJlbnQgPyBpZHMucmV2ZXJzZSgpLmpvaW4oJ18nKSA6IG51bGw7XG4gICAgaWYgKHRoaXMuX2lkKSB7XG4gICAgICB0aGlzLmNvbnRleHRTZXJ2aWNlLnJlZ2lzdGVyV2lkZ2V0KHRoaXMuX2lkLCB0aGlzKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlVmFsdWVDaGFuZ2VkKGU6IEFYVmFsdWVDaGFuZ2VkRXZlbnQ8VD4pIHtcbiAgICBpZiAoZS5pc1VzZXJJbnRlcmFjdGlvbikge1xuICAgICAgdGhpcy5zZXRWYWx1ZShlLnZhbHVlISk7XG4gICAgfVxuICB9XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBWFBDb250YWluZXJXaWRnZXRDb21wb25lbnQ8VD4gZXh0ZW5kcyBBWFBXaWRnZXRDb21wb25lbnQ8VD4ge1xuICBwdWJsaWMgcmVhZG9ubHkgbm9kZSA9IHRoaXMudG9rZW4ubm9kZTtcbn1cblxuZXhwb3J0IHR5cGUgQVhQRGF0YVNvdXJjZSA9IHN0cmluZyB8IEFYRGF0YVNvdXJjZSB8IGFueVtdO1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFYUERhdGFMaXN0V2lkZ2V0Q29tcG9uZW50IGV4dGVuZHMgQVhQV2lkZ2V0Q29tcG9uZW50PGFueT4ge1xuICBwcml2YXRlIGRhdGFTZXJ2aWNlID0gaW5qZWN0KEFYUFdpZGdldERhdGFTb3VyY2VQcm92aWRlclNlcnZpY2UpO1xuXG4gIHByb3RlY3RlZCByYXdEYXRhU291cmNlID0gY29tcHV0ZWQ8QVhQRGF0YVNvdXJjZT4oKCkgPT4gdGhpcy5vcHRpb25zKClbJ2RhdGFTb3VyY2UnXSBhcyBBWFBEYXRhU291cmNlKTtcbiAgcHJvdGVjdGVkIGRhdGFTb3VyY2UgPSBzaWduYWw8QVhEYXRhU291cmNlPihjb252ZXJ0QXJyYXlUb0RhdGFTb3VyY2UoW10pKTtcbiAgcHJvdGVjdGVkIGl0ZW1zID0gY29tcHV0ZWQ8YW55W10+KCgpID0+IHRoaXMub3B0aW9ucygpWydpdGVtcyddID8/IFtdKTtcbiAgcHJvdGVjdGVkIHRleHRGaWVsZCA9IGNvbXB1dGVkPHN0cmluZz4oKCkgPT4gdGhpcy5vcHRpb25zKClbJ3RleHRGaWVsZCddID8/ICd0aXRsZScpO1xuICBwcm90ZWN0ZWQgdmFsdWVGaWVsZCA9IGNvbXB1dGVkPHN0cmluZz4oKCkgPT4gKHRoaXMub3B0aW9ucygpWyd2YWx1ZUZpZWxkJ10gYXMgc3RyaW5nKSA/PyAnaWQnKTtcblxuICBwcml2YXRlIHJmID0gZWZmZWN0KFxuICAgICgpID0+IHtcbiAgICAgIGNvbnN0IHJhd1ZhbHVlID0gdGhpcy5vcHRpb25zKClbJ2RhdGFTb3VyY2UnXTtcbiAgICAgIC8vIHN0YXRpYyAgZGF0YXNvdXJjZSBjbGFzc1xuICAgICAgaWYgKHJhd1ZhbHVlIGluc3RhbmNlb2YgQVhEYXRhU291cmNlKSB7XG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZS5zZXQocmF3VmFsdWUpO1xuICAgICAgfSAvLyBzdGF0aWMgYXJyYXkgZGF0YXNvdXJjZVxuICAgICAgZWxzZSBpZiAoQXJyYXkuaXNBcnJheShyYXdWYWx1ZSkpIHtcbiAgICAgICAgdGhpcy5kYXRhU291cmNlLnNldChjb252ZXJ0QXJyYXlUb0RhdGFTb3VyY2UocmF3VmFsdWUpKTtcbiAgICAgIH0gLy8gcmVzb2x2ZSBkYXRhIHNvdXJjZSBieSBuYW1lXG4gICAgICBlbHNlIGlmIChyYXdWYWx1ZSAmJiAodHlwZW9mIHJhd1ZhbHVlID09ICdzdHJpbmcnIHx8IHR5cGVvZiByYXdWYWx1ZSA9PSAnb2JqZWN0JykpIHtcbiAgICAgICAgY29uc3QgbmFtZSA9IHR5cGVvZiByYXdWYWx1ZSA9PSAnb2JqZWN0JyA/IHJhd1ZhbHVlW3RoaXMudmFsdWVGaWVsZCgpXSA6IHJhd1ZhbHVlO1xuICAgICAgICB0aGlzLmRhdGFTZXJ2aWNlLmdldChuYW1lKS50aGVuKChjKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMubW9kZSA9PSAnZGVzaWduZXInICYmIGM/LnNhbXBsZXM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5kYXRhU291cmNlLnNldChjb252ZXJ0QXJyYXlUb0RhdGFTb3VyY2UoYy5zYW1wbGVzKSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGRzID0gYz8uc291cmNlKCk7XG4gICAgICAgICAgICBpZiAoZHMpIHtcbiAgICAgICAgICAgICAgdGhpcy5kYXRhU291cmNlLnNldChkcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBlbXB0eSBkYXRhc291cmNlXG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgdGhpcy5kYXRhU291cmNlLnNldChjb252ZXJ0QXJyYXlUb0RhdGFTb3VyY2UoW10pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgLy8gZW1wdHkgZGF0YXNvdXJjZVxuICAgICAgZWxzZSB7XG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZS5zZXQoY29udmVydEFycmF5VG9EYXRhU291cmNlKFtdKSk7XG4gICAgICB9XG4gICAgfSxcbiAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH1cbiAgKTtcbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFYUENvbHVtbldpZGdldENvbXBvbmVudDxUID0gYW55IHwgbnVsbCB8IHZvaWQ+IHtcbiAgcHJpdmF0ZSByZWFkb25seSB0b2tlbiA9IGluamVjdChBWFBfV0lER0VUX0NPTFVNTl9UT0tFTik7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHBhdGggPSB0aGlzLnRva2VuLnBhdGg7XG4gIHByb3RlY3RlZCByZWFkb25seSBvcHRpb25zID0gdGhpcy50b2tlbi5vcHRpb25zID8/IHt9O1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcmF3VmFsdWU6IGFueSA9IG51bGw7XG59XG4iXX0=
|