@acorex/platform 18.1.5 → 18.2.0
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/index.d.ts +3 -3
- package/common/lib/app/application.types.d.ts +1 -1
- package/common/lib/common.module.d.ts +3 -6
- package/common/lib/data/data-provider.types.d.ts +1 -0
- package/common/lib/data/data.types.d.ts +14 -0
- package/common/lib/data/dexie-storage.service.d.ts +6 -20
- package/common/lib/data/entity-data-seeder.d.ts +12 -0
- package/common/lib/data/entity-storage-service.d.ts +59 -15
- package/common/lib/data/index.d.ts +2 -1
- package/common/lib/layout/menu/index.d.ts +2 -0
- package/common/lib/layout/menu/menu.provider.d.ts +15 -0
- package/common/lib/layout/menu/menu.service.d.ts +12 -0
- package/common/lib/layout/menu/menu.types.d.ts +8 -1
- package/common/lib/schema/widgets/dateTime/dateTime-widget-filter.component.d.ts +2 -0
- package/common/lib/schema/widgets/lookup/lookup-widget-edit.component.d.ts +1 -0
- package/common/lib/settings/settings.service.d.ts +3 -3
- package/common/lib/store/common.actions.d.ts +1 -8
- package/common/lib/store/common.effects.d.ts +3 -6
- package/common/lib/workflows/common.workflow.d.ts +2 -0
- package/core/utils/data-conditioner.d.ts +2 -5
- package/esm2022/common/index.mjs +4 -4
- package/esm2022/common/lib/app/app-startup.service.mjs +3 -3
- package/esm2022/common/lib/app/application.types.mjs +1 -1
- package/esm2022/common/lib/common.module.mjs +38 -31
- package/esm2022/common/lib/data/data-provider.types.mjs +1 -1
- package/esm2022/common/lib/data/data.types.mjs +2 -0
- package/esm2022/common/lib/data/dexie-storage.service.mjs +98 -84
- package/esm2022/common/lib/data/entity-data-seeder.mjs +25 -0
- package/esm2022/common/lib/data/entity-storage-service.mjs +59 -1
- package/esm2022/common/lib/data/index.mjs +3 -2
- package/esm2022/common/lib/layout/menu/index.mjs +3 -1
- package/esm2022/common/lib/layout/menu/menu.provider.mjs +60 -0
- package/esm2022/common/lib/layout/menu/menu.service.mjs +73 -0
- package/esm2022/common/lib/layout/menu/menu.types.mjs +1 -1
- package/esm2022/common/lib/layout/theme/store/admin-layout.reducers.mjs +24 -19
- package/esm2022/common/lib/schema/widgets/avatar/avatar-widget-edit.component.mjs +8 -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/dateTime/dateTime-widget-filter.component.mjs +27 -5
- package/esm2022/common/lib/schema/widgets/gallery/gallery-widget-edit.component.mjs +3 -3
- package/esm2022/common/lib/schema/widgets/gallery/gallery-widget-view.component.mjs +3 -3
- package/esm2022/common/lib/schema/widgets/lookup/lookup-widget-edit.component.mjs +2 -2
- package/esm2022/common/lib/schema/widgets/lookup/lookup-widget-filter.component.mjs +3 -3
- package/esm2022/common/lib/settings/settings.service.mjs +10 -7
- package/esm2022/common/lib/store/common.actions.mjs +2 -4
- package/esm2022/common/lib/store/common.effects.mjs +8 -9
- package/esm2022/common/lib/workflows/common.workflow.mjs +7 -4
- package/esm2022/core/utils/data-conditioner.mjs +3 -3
- package/esm2022/layout/builder/lib/builder/builder.service.mjs +19 -16
- package/esm2022/layout/builder/lib/builder/widget-catalog.mjs +2 -1
- package/esm2022/layout/builder/lib/builder/widget-container.component.mjs +5 -8
- package/esm2022/layout/builder/lib/builder/widget-renderer.component.directive.mjs +39 -22
- package/esm2022/layout/builder/lib/builder/widget.types.mjs +12 -8
- package/esm2022/layout/designer/index.mjs +3 -1
- package/esm2022/layout/designer/lib/designer/components/board/board.component.mjs +7 -3
- package/esm2022/layout/designer/lib/designer/components/header-menu/header-menu.component.mjs +66 -5
- package/esm2022/layout/designer/lib/designer/components/size-mode/view-size-toolbar.component.mjs +54 -0
- package/esm2022/layout/designer/lib/designer/components/widget-picker/widget-picker.component.mjs +24 -15
- package/esm2022/layout/designer/lib/designer/designer.component.mjs +17 -56
- package/esm2022/layout/designer/lib/designer/shared/designer.service.mjs +27 -5
- package/esm2022/layout/designer/lib/designer/shared/widget-designer-renderer.directive.mjs +1 -1
- package/esm2022/layout/designer/lib/preview/preview-frame.component.mjs +75 -0
- package/esm2022/layout/designer/lib/preview/preview-viewer.component.mjs +58 -0
- package/esm2022/layout/designer/lib/preview/preview.component.mjs +67 -9
- package/esm2022/layout/entity/lib/entity-detail-list.viewmodel.mjs +48 -36
- package/esm2022/layout/entity/lib/entity-master-list.viewmodel.mjs +3 -3
- package/esm2022/layout/entity/lib/entity-master-single.viewmodel.mjs +1 -2
- package/esm2022/layout/entity/lib/entity-registery.service.mjs +5 -5
- package/esm2022/layout/entity/lib/entity.config.mjs +28 -2
- package/esm2022/layout/entity/lib/widgets/lookup-widget/lookup-widget-edit.component.mjs +5 -5
- package/esm2022/layout/entity/lib/widgets/lookup-widget/lookup-widget-selector.viewmodel.mjs +2 -2
- package/esm2022/layout/entity/lib/widgets/lookup-widget/lookup-widget-view.component.mjs +4 -4
- package/esm2022/layout/entity/lib/widgets/widget-selector/widget-selector-widget.config.mjs +2 -1
- package/esm2022/layout/entity/lib/workflows/create-entity.workflow.mjs +3 -3
- package/esm2022/layout/entity/lib/workflows/delete-entity.workflow.mjs +18 -9
- package/esm2022/layout/entity/lib/workflows/modify-section.workflow.mjs +7 -5
- package/esm2022/layouts/lib/admin/entity-layout/entity-details-view/entity-details-view.component.mjs +3 -3
- 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 +3 -3
- package/esm2022/layouts/lib/admin/entity-layout/entity-list-view/list-view.config.mjs +9 -5
- package/esm2022/layouts/lib/admin/entity-layout/workflows/delete-entity.workflow.mjs +2 -2
- package/esm2022/layouts/lib/admin/entity-layout/workflows/modify-entity.workflow.mjs +5 -3
- package/esm2022/themes/default/lib/layouts/entity-layouts/entity-detail-list-view/entity-detail-list-view.component.mjs +10 -7
- package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-create-view/entity-master-create-view.component.mjs +2 -2
- package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-list-view/entity-master-list-view.component.mjs +13 -9
- 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 +14 -10
- package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-single-view/overview/entity-single-overview.component.mjs +1 -1
- package/esm2022/themes/default/lib/layouts/root-layout/components/menu/root-menu.component.mjs +39 -0
- package/esm2022/themes/default/lib/layouts/root-layout/index.mjs +2 -1
- package/esm2022/themes/default/lib/layouts/root-layout/root-layout.component.mjs +13 -31
- package/esm2022/themes/default/lib/layouts/root-layout/root-layout.module.mjs +9 -6
- package/esm2022/themes/shared/index.mjs +1 -5
- package/esm2022/themes/shared/lib/components/theme-slot.component.mjs +87 -88
- package/esm2022/themes/shared/lib/services/theme.service.mjs +20 -13
- package/esm2022/themes/shared/lib/shared.module.mjs +5 -9
- package/esm2022/widgets/lib/properties/editors.props.mjs +2 -2
- package/esm2022/widgets/lib/widgets/advance/gallery/gallery-widget-edit.component.mjs +3 -3
- package/esm2022/widgets/lib/widgets/advance/gallery/gallery-widget-view.component.mjs +3 -3
- package/esm2022/widgets/lib/widgets/advance/qrcode/qrcode-widget-view.component.mjs +4 -4
- package/esm2022/widgets/lib/widgets/editors/color/color-box-widget-column.component.mjs +26 -5
- package/esm2022/widgets/lib/widgets/editors/color/color-box-widget-view.component.mjs +26 -5
- package/esm2022/widgets/lib/widgets/editors/contact/contact-widget-column.component.mjs +18 -4
- package/esm2022/widgets/lib/widgets/editors/contact/contact-widget-edit.component.mjs +7 -10
- package/esm2022/widgets/lib/widgets/editors/contact/contact-widget.config.mjs +2 -6
- package/esm2022/widgets/lib/widgets/editors/date-time/date-time-box-widget-column.component.mjs +27 -9
- package/esm2022/widgets/lib/widgets/editors/date-time/date-time-box-widget-edit.component.mjs +19 -8
- package/esm2022/widgets/lib/widgets/editors/date-time/date-time-box-widget-view.component.mjs +10 -2
- package/esm2022/widgets/lib/widgets/editors/large-text/large-text-widget-edit.component.mjs +1 -1
- package/esm2022/widgets/lib/widgets/editors/large-text/large-text-widget-view.component.mjs +1 -1
- package/esm2022/widgets/lib/widgets/editors/rich-text/rich-text-widget-edit.component.mjs +18 -20
- package/esm2022/widgets/lib/widgets/editors/select/select-box-widget-edit.component.mjs +3 -2
- package/esm2022/widgets/lib/widgets/editors/select/select-box-widget-view.component.mjs +15 -19
- package/esm2022/widgets/lib/widgets/editors/select/select-box-widget.config.mjs +4 -2
- package/esm2022/widgets/lib/widgets/index.mjs +2 -1
- package/esm2022/widgets/lib/widgets/layout/block/block-widget-view.component.mjs +36 -15
- package/esm2022/widgets/lib/widgets/layout/grid/grid-widget-designer.component.mjs +2 -2
- package/esm2022/widgets/lib/widgets/layout/repeater/repeater-widget-edit.component.mjs +42 -10
- package/esm2022/widgets/lib/widgets/layout/template/index.mjs +5 -0
- package/esm2022/widgets/lib/widgets/layout/template/template-widget-designer.component.mjs +70 -0
- package/esm2022/widgets/lib/widgets/layout/template/template-widget-edit.component.mjs +55 -0
- package/esm2022/widgets/lib/widgets/layout/template/template-widget-view.component.mjs +42 -0
- package/esm2022/widgets/lib/widgets/layout/template/template-widget.config.mjs +30 -0
- package/esm2022/widgets/lib/widgets/layout/template/template.provider.mjs +41 -0
- package/esm2022/widgets/lib/widgets.module.mjs +4 -1
- package/fesm2022/{acorex-platform-common-avatar-widget-edit.component-CSSz-dqg.mjs → acorex-platform-common-avatar-widget-edit.component-D4k52w2k.mjs} +16 -7
- package/fesm2022/acorex-platform-common-avatar-widget-edit.component-D4k52w2k.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-avatar-widget-view.component-WofmamJK.mjs → acorex-platform-common-avatar-widget-view.component-Bbg1imZG.mjs} +9 -6
- package/fesm2022/acorex-platform-common-avatar-widget-view.component-Bbg1imZG.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-boolean-widget-filter.component-ByoMpVAs.mjs → acorex-platform-common-boolean-widget-filter.component-CRFI7vNR.mjs} +9 -7
- package/fesm2022/acorex-platform-common-boolean-widget-filter.component-CRFI7vNR.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-checkbox-widget-column.component-BAK1Wlh_.mjs → acorex-platform-common-checkbox-widget-column.component-BCUcZiP_.mjs} +9 -6
- package/fesm2022/{acorex-platform-common-checkbox-widget-column.component-BAK1Wlh_.mjs.map → acorex-platform-common-checkbox-widget-column.component-BCUcZiP_.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-checkbox-widget-edit.component-C1PgHZsE.mjs → acorex-platform-common-checkbox-widget-edit.component-GgWLpxV0.mjs} +9 -6
- package/fesm2022/acorex-platform-common-checkbox-widget-edit.component-GgWLpxV0.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-checkbox-widget-view.component-B4BG4mCQ.mjs → acorex-platform-common-checkbox-widget-view.component-KuRnDGoQ.mjs} +9 -6
- package/fesm2022/{acorex-platform-common-checkbox-widget-view.component-B4BG4mCQ.mjs.map → acorex-platform-common-checkbox-widget-view.component-KuRnDGoQ.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-dateTime-widget-column.component-BnW8m1wn.mjs → acorex-platform-common-dateTime-widget-column.component-DaXNK6e2.mjs} +9 -6
- package/fesm2022/acorex-platform-common-dateTime-widget-column.component-DaXNK6e2.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-dateTime-widget-edit.component-DCYX2iyT.mjs → acorex-platform-common-dateTime-widget-edit.component-XOReyHZ-.mjs} +9 -6
- package/fesm2022/{acorex-platform-common-dateTime-widget-edit.component-DCYX2iyT.mjs.map → acorex-platform-common-dateTime-widget-edit.component-XOReyHZ-.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-dateTime-widget-filter.component-Dbxz84tm.mjs → acorex-platform-common-dateTime-widget-filter.component-3PJx2C6G.mjs} +34 -10
- package/fesm2022/acorex-platform-common-dateTime-widget-filter.component-3PJx2C6G.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-dateTime-widget-view.component-Bg1h8xAj.mjs → acorex-platform-common-dateTime-widget-view.component-BWTedYCf.mjs} +9 -6
- package/fesm2022/{acorex-platform-common-dateTime-widget-view.component-Bg1h8xAj.mjs.map → acorex-platform-common-dateTime-widget-view.component-BWTedYCf.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-email-widget-column.component-BqRR2jW9.mjs → acorex-platform-common-email-widget-column.component-MySWR3RG.mjs} +9 -6
- package/fesm2022/acorex-platform-common-email-widget-column.component-MySWR3RG.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-email-widget-edit.component-C7oCyByG.mjs → acorex-platform-common-email-widget-edit.component-DzqW3Ay6.mjs} +9 -6
- package/fesm2022/{acorex-platform-common-email-widget-edit.component-C7oCyByG.mjs.map → acorex-platform-common-email-widget-edit.component-DzqW3Ay6.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-email-widget-view.component-hfVZnW_L.mjs → acorex-platform-common-email-widget-view.component-ikN6SIj0.mjs} +9 -6
- package/fesm2022/{acorex-platform-common-email-widget-view.component-hfVZnW_L.mjs.map → acorex-platform-common-email-widget-view.component-ikN6SIj0.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-file-widget-column.component-Dt2mR6hJ.mjs → acorex-platform-common-file-widget-column.component-GtbElxmS.mjs} +8 -5
- package/fesm2022/acorex-platform-common-file-widget-column.component-GtbElxmS.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-file-widget-edit.component-DQol3UN8.mjs → acorex-platform-common-file-widget-edit.component-CPSsJviw.mjs} +9 -6
- package/fesm2022/{acorex-platform-common-file-widget-edit.component-DQol3UN8.mjs.map → acorex-platform-common-file-widget-edit.component-CPSsJviw.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-file-widget-filter.component-CGd1mY-z.mjs → acorex-platform-common-file-widget-filter.component-D-_WnxlE.mjs} +9 -6
- package/fesm2022/acorex-platform-common-file-widget-filter.component-D-_WnxlE.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-file-widget-view.component-lKWnGSSb.mjs → acorex-platform-common-file-widget-view.component-BU8iWCVR.mjs} +9 -6
- package/fesm2022/{acorex-platform-common-file-widget-view.component-lKWnGSSb.mjs.map → acorex-platform-common-file-widget-view.component-BU8iWCVR.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-gallery-widget-edit.component-DgjY3ZWk.mjs → acorex-platform-common-gallery-widget-edit.component-DMu9OW45.mjs} +10 -7
- package/fesm2022/{acorex-platform-common-gallery-widget-edit.component-DgjY3ZWk.mjs.map → acorex-platform-common-gallery-widget-edit.component-DMu9OW45.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-gallery-widget-filter.component-CUw4kxTW.mjs → acorex-platform-common-gallery-widget-filter.component-BNYgn0eK.mjs} +9 -6
- package/fesm2022/acorex-platform-common-gallery-widget-filter.component-BNYgn0eK.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-gallery-widget-view.component-DK52JTds.mjs → acorex-platform-common-gallery-widget-view.component-D52gjNcJ.mjs} +10 -7
- package/fesm2022/{acorex-platform-common-gallery-widget-view.component-DK52JTds.mjs.map → acorex-platform-common-gallery-widget-view.component-D52gjNcJ.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-largetext-widget-edit.component-7bbHUOnp.mjs → acorex-platform-common-largetext-widget-edit.component-B7Hq-1ny.mjs} +9 -6
- package/fesm2022/acorex-platform-common-largetext-widget-edit.component-B7Hq-1ny.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-lookup-widget-column.component-PGf5qjC4.mjs → acorex-platform-common-lookup-widget-column.component-2ccF27nN.mjs} +9 -6
- package/fesm2022/acorex-platform-common-lookup-widget-column.component-2ccF27nN.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-lookup-widget-edit.component-CGZf6rH2.mjs → acorex-platform-common-lookup-widget-edit.component-Cn3yALld.mjs} +10 -7
- package/fesm2022/acorex-platform-common-lookup-widget-edit.component-Cn3yALld.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-lookup-widget-filter.component-CUBdIuu9.mjs → acorex-platform-common-lookup-widget-filter.component-NY-w7EgD.mjs} +10 -8
- package/fesm2022/acorex-platform-common-lookup-widget-filter.component-NY-w7EgD.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-lookup-widget-view.component-dmGctRc9.mjs → acorex-platform-common-lookup-widget-view.component-DjbS0xsx.mjs} +9 -6
- package/fesm2022/acorex-platform-common-lookup-widget-view.component-DjbS0xsx.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-map-widget-edit.component-Cyi6AF9u.mjs → acorex-platform-common-map-widget-edit.component-CHyEencO.mjs} +9 -6
- package/fesm2022/acorex-platform-common-map-widget-edit.component-CHyEencO.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-map-widget-view.component-Cbl1KClC.mjs → acorex-platform-common-map-widget-view.component-BMK6QTKt.mjs} +9 -6
- package/fesm2022/acorex-platform-common-map-widget-view.component-BMK6QTKt.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-messenger-widget-column.component-BGiTw0jL.mjs → acorex-platform-common-messenger-widget-column.component-iVdgR19k.mjs} +9 -6
- package/fesm2022/acorex-platform-common-messenger-widget-column.component-iVdgR19k.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-messenger-widget-edit.component-BBSmai_5.mjs → acorex-platform-common-messenger-widget-edit.component-BicSI2_5.mjs} +9 -6
- package/fesm2022/acorex-platform-common-messenger-widget-edit.component-BicSI2_5.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-messenger-widget-view.component-C15KdEZ6.mjs → acorex-platform-common-messenger-widget-view.component-DlSSOqrz.mjs} +9 -6
- package/fesm2022/{acorex-platform-common-messenger-widget-view.component-C15KdEZ6.mjs.map → acorex-platform-common-messenger-widget-view.component-DlSSOqrz.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-number-widget-edit.component-CGmS-gd7.mjs → acorex-platform-common-number-widget-edit.component-DlLjt4OQ.mjs} +9 -6
- package/fesm2022/acorex-platform-common-number-widget-edit.component-DlLjt4OQ.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-number-widget-filter.component-8RC01k_0.mjs → acorex-platform-common-number-widget-filter.component-DPZQomNX.mjs} +10 -7
- package/fesm2022/acorex-platform-common-number-widget-filter.component-DPZQomNX.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-number-widget-view.component-DGPcZ-yE.mjs → acorex-platform-common-number-widget-view.component-BW1ftaLk.mjs} +9 -6
- package/fesm2022/acorex-platform-common-number-widget-view.component-BW1ftaLk.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-password-widget-column.component-O3L2DvZq.mjs → acorex-platform-common-password-widget-column.component-BZEavb7p.mjs} +9 -6
- package/fesm2022/{acorex-platform-common-password-widget-column.component-O3L2DvZq.mjs.map → acorex-platform-common-password-widget-column.component-BZEavb7p.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-password-widget-edit.component-DZz6rAL3.mjs → acorex-platform-common-password-widget-edit.component-De5r-L4i.mjs} +9 -6
- package/fesm2022/acorex-platform-common-password-widget-edit.component-De5r-L4i.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-password-widget-view.component-OxinnOs8.mjs → acorex-platform-common-password-widget-view.component-Dw4xxdOT.mjs} +9 -6
- package/fesm2022/{acorex-platform-common-password-widget-view.component-OxinnOs8.mjs.map → acorex-platform-common-password-widget-view.component-Dw4xxdOT.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-phone-widget-column.component-D9AXNMVq.mjs → acorex-platform-common-phone-widget-column.component-BTbtfPty.mjs} +9 -6
- package/fesm2022/{acorex-platform-common-phone-widget-column.component-D9AXNMVq.mjs.map → acorex-platform-common-phone-widget-column.component-BTbtfPty.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-phone-widget-edit.component-CKvODAMQ.mjs → acorex-platform-common-phone-widget-edit.component-Ay4y8j_t.mjs} +8 -6
- package/fesm2022/{acorex-platform-common-phone-widget-edit.component-CKvODAMQ.mjs.map → acorex-platform-common-phone-widget-edit.component-Ay4y8j_t.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-phone-widget-view.component-Cx-SrpUs.mjs → acorex-platform-common-phone-widget-view.component-D4WqjjBP.mjs} +9 -6
- package/fesm2022/{acorex-platform-common-phone-widget-view.component-Cx-SrpUs.mjs.map → acorex-platform-common-phone-widget-view.component-D4WqjjBP.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-rich-text-widget-column.component-C7IqYbqM.mjs → acorex-platform-common-rich-text-widget-column.component-B5rev2NB.mjs} +9 -6
- package/fesm2022/{acorex-platform-common-rich-text-widget-column.component-C7IqYbqM.mjs.map → acorex-platform-common-rich-text-widget-column.component-B5rev2NB.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-rich-text-widget-edit.component-DtEcLWte.mjs → acorex-platform-common-rich-text-widget-edit.component-BHBRQKhj.mjs} +9 -6
- package/fesm2022/acorex-platform-common-rich-text-widget-edit.component-BHBRQKhj.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-rich-text-widget-view.component-DI4I6wII.mjs → acorex-platform-common-rich-text-widget-view.component-0bIoY7Ws.mjs} +9 -6
- package/fesm2022/acorex-platform-common-rich-text-widget-view.component-0bIoY7Ws.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-selection-list-widget-column.component-CHDTopqW.mjs → acorex-platform-common-selection-list-widget-column.component-CzJWP4YT.mjs} +9 -6
- package/fesm2022/{acorex-platform-common-selection-list-widget-column.component-CHDTopqW.mjs.map → acorex-platform-common-selection-list-widget-column.component-CzJWP4YT.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-selection-list-widget-edit.component-Ds7Pc22g.mjs → acorex-platform-common-selection-list-widget-edit.component-DhYa6y65.mjs} +9 -6
- package/fesm2022/acorex-platform-common-selection-list-widget-edit.component-DhYa6y65.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-selection-list-widget-filter.component-D7h2tUqB.mjs → acorex-platform-common-selection-list-widget-filter.component-B344MeXJ.mjs} +8 -6
- package/fesm2022/acorex-platform-common-selection-list-widget-filter.component-B344MeXJ.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-selection-list-widget-view.component-DGuotR-q.mjs → acorex-platform-common-selection-list-widget-view.component-Czk5DzgK.mjs} +9 -6
- package/fesm2022/acorex-platform-common-selection-list-widget-view.component-Czk5DzgK.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-signature-pad-widget-edit.component-DPr0hCtB.mjs → acorex-platform-common-signature-pad-widget-edit.component-YSGjL25D.mjs} +8 -5
- package/fesm2022/{acorex-platform-common-signature-pad-widget-edit.component-DPr0hCtB.mjs.map → acorex-platform-common-signature-pad-widget-edit.component-YSGjL25D.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-signature-pad-widget-view.component-CdqZ17tU.mjs → acorex-platform-common-signature-pad-widget-view.component-D64btt99.mjs} +9 -6
- package/fesm2022/acorex-platform-common-signature-pad-widget-view.component-D64btt99.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-string-widget-filter.component-Ctde9CDD.mjs → acorex-platform-common-string-widget-filter.component-5wb1x5Fa.mjs} +10 -7
- package/fesm2022/acorex-platform-common-string-widget-filter.component-5wb1x5Fa.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-text-widget-column.component-BHd_WWKq.mjs → acorex-platform-common-text-widget-column.component-U-V3HD2V.mjs} +9 -6
- package/fesm2022/{acorex-platform-common-text-widget-column.component-BHd_WWKq.mjs.map → acorex-platform-common-text-widget-column.component-U-V3HD2V.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-text-widget-edit.component-BwfelIOW.mjs → acorex-platform-common-text-widget-edit.component-BCs13zUr.mjs} +9 -6
- package/fesm2022/acorex-platform-common-text-widget-edit.component-BCs13zUr.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-text-widget-view.component-SHWXqKZS.mjs → acorex-platform-common-text-widget-view.component-V1RkKuNZ.mjs} +9 -6
- package/fesm2022/{acorex-platform-common-text-widget-view.component-SHWXqKZS.mjs.map → acorex-platform-common-text-widget-view.component-V1RkKuNZ.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-toggle-widget-column.component-Dc_Ahdvn.mjs → acorex-platform-common-toggle-widget-column.component-FqKLeAhY.mjs} +9 -6
- package/fesm2022/{acorex-platform-common-toggle-widget-column.component-Dc_Ahdvn.mjs.map → acorex-platform-common-toggle-widget-column.component-FqKLeAhY.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-toggle-widget-edit.component-BnPyXdAA.mjs → acorex-platform-common-toggle-widget-edit.component-DKSnFdTQ.mjs} +9 -6
- package/fesm2022/acorex-platform-common-toggle-widget-edit.component-DKSnFdTQ.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-toggle-widget-view.component-D14GMwWe.mjs → acorex-platform-common-toggle-widget-view.component-BOYPRUCt.mjs} +9 -6
- package/fesm2022/{acorex-platform-common-toggle-widget-view.component-D14GMwWe.mjs.map → acorex-platform-common-toggle-widget-view.component-BOYPRUCt.mjs.map} +1 -1
- package/fesm2022/acorex-platform-common.mjs +2300 -2094
- package/fesm2022/acorex-platform-common.mjs.map +1 -1
- package/fesm2022/acorex-platform-core.mjs +2 -2
- package/fesm2022/acorex-platform-core.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-builder.mjs +67 -45
- package/fesm2022/acorex-platform-layout-builder.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-designer.mjs +365 -67
- package/fesm2022/acorex-platform-layout-designer.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-entity.mjs +103 -57
- package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
- package/fesm2022/acorex-platform-layouts.mjs +16 -11
- package/fesm2022/acorex-platform-layouts.mjs.map +1 -1
- package/fesm2022/{acorex-platform-themes-default-entity-master-create-view.component-Q8eTfAVx.mjs → acorex-platform-themes-default-entity-master-create-view.component-BJ7inoTB.mjs} +4 -4
- package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-BJ7inoTB.mjs.map +1 -0
- package/fesm2022/{acorex-platform-themes-default-entity-master-list-view.component-CNXG0nP4.mjs → acorex-platform-themes-default-entity-master-list-view.component-BGKWaCth.mjs} +22 -18
- package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-BGKWaCth.mjs.map +1 -0
- package/fesm2022/{acorex-platform-themes-default-entity-master-modify-view.component-BijYXMme.mjs → acorex-platform-themes-default-entity-master-modify-view.component-B3phYOIw.mjs} +5 -5
- package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-B3phYOIw.mjs.map +1 -0
- package/fesm2022/{acorex-platform-themes-default-entity-master-single-view.component-Bnrabotu.mjs → acorex-platform-themes-default-entity-master-single-view.component-BO_lAQc_.mjs} +20 -15
- package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-BO_lAQc_.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-default.mjs +75 -57
- package/fesm2022/acorex-platform-themes-default.mjs.map +1 -1
- package/fesm2022/acorex-platform-themes-shared.mjs +111 -570
- package/fesm2022/acorex-platform-themes-shared.mjs.map +1 -1
- package/fesm2022/{acorex-platform-widgets-checkbox-widget-designer.component-DzGg-uFi.mjs → acorex-platform-widgets-checkbox-widget-designer.component-e9O9qFIf.mjs} +4 -4
- package/fesm2022/{acorex-platform-widgets-checkbox-widget-designer.component-DzGg-uFi.mjs.map → acorex-platform-widgets-checkbox-widget-designer.component-e9O9qFIf.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-widgets-color-box-widget-designer.component-DIvi0BtT.mjs → acorex-platform-widgets-color-box-widget-designer.component-Brsun0id.mjs} +4 -4
- package/fesm2022/acorex-platform-widgets-color-box-widget-designer.component-Brsun0id.mjs.map +1 -0
- package/fesm2022/acorex-platform-widgets-template-widget-edit.component-gvAh-gH1.mjs +96 -0
- package/fesm2022/acorex-platform-widgets-template-widget-edit.component-gvAh-gH1.mjs.map +1 -0
- package/fesm2022/acorex-platform-widgets.mjs +478 -169
- package/fesm2022/acorex-platform-widgets.mjs.map +1 -1
- package/layout/builder/lib/builder/builder.service.d.ts +2 -0
- package/layout/builder/lib/builder/widget-container.component.d.ts +2 -2
- package/layout/builder/lib/builder/widget-renderer.component.directive.d.ts +1 -1
- package/layout/builder/lib/builder/widget.types.d.ts +5 -2
- package/layout/designer/index.d.ts +2 -0
- package/layout/designer/lib/designer/components/board/board.component.d.ts +1 -0
- package/layout/designer/lib/designer/components/header-menu/header-menu.component.d.ts +1 -0
- package/layout/designer/lib/designer/components/size-mode/view-size-toolbar.component.d.ts +6 -0
- package/layout/designer/lib/designer/components/widget-picker/widget-picker.component.d.ts +1 -1
- package/layout/designer/lib/designer/designer.component.d.ts +1 -1
- package/layout/designer/lib/designer/shared/designer.service.d.ts +6 -1
- package/layout/designer/lib/preview/preview-frame.component.d.ts +8 -0
- package/layout/designer/lib/preview/preview-viewer.component.d.ts +14 -0
- package/layout/designer/lib/preview/preview.component.d.ts +17 -3
- package/layout/entity/lib/entity-detail-list.viewmodel.d.ts +4 -4
- package/layout/entity/lib/entity-master-create.viewmodel.d.ts +1 -1
- package/layout/entity/lib/entity-master-single.viewmodel.d.ts +1 -5
- package/layout/entity/lib/entity-master-update.viewmodel.d.ts +1 -1
- package/layout/entity/lib/entity-registery.service.d.ts +1 -1
- package/layout/entity/lib/entity.config.d.ts +7 -0
- package/layout/entity/lib/entity.viewmodel.d.ts +1 -1
- package/layout/entity/lib/widgets/lookup-widget/lookup-widget-edit.component.d.ts +2 -1
- package/layout/entity/lib/widgets/lookup-widget/lookup-widget-view.component.d.ts +2 -1
- package/layout/entity/lib/workflows/delete-entity.workflow.d.ts +1 -0
- package/layout/entity/lib/workflows/modify-section.workflow.d.ts +1 -0
- package/layouts/lib/admin/entity-layout/workflows/modify-entity.workflow.d.ts +1 -0
- package/package.json +7 -7
- package/themes/default/lib/layouts/entity-layouts/entity-master-single-view/entity-master-single-view.component.d.ts +1 -1
- package/themes/default/lib/layouts/root-layout/components/menu/root-menu.component.d.ts +22 -0
- package/themes/default/lib/layouts/root-layout/index.d.ts +1 -0
- package/themes/default/lib/layouts/root-layout/root-layout.component.d.ts +0 -4
- package/themes/default/lib/layouts/root-layout/root-layout.module.d.ts +17 -16
- package/themes/shared/index.d.ts +0 -4
- package/themes/shared/lib/components/theme-slot.component.d.ts +1 -1
- package/themes/shared/lib/services/theme.service.d.ts +1 -1
- package/themes/shared/lib/shared.module.d.ts +0 -1
- package/widgets/lib/widgets/advance/qrcode/qrcode-widget-view.component.d.ts +1 -1
- package/widgets/lib/widgets/editors/color/color-box-widget-column.component.d.ts +3 -0
- package/widgets/lib/widgets/editors/color/color-box-widget-view.component.d.ts +3 -0
- package/widgets/lib/widgets/editors/contact/contact-widget-column.component.d.ts +2 -0
- package/widgets/lib/widgets/editors/contact/contact-widget-edit.component.d.ts +1 -1
- package/widgets/lib/widgets/editors/contact/contact-widget-view.component.d.ts +1 -1
- package/widgets/lib/widgets/editors/date-time/date-time-box-widget-column.component.d.ts +4 -1
- package/widgets/lib/widgets/editors/rich-text/rich-text-widget-edit.component.d.ts +5 -5
- package/widgets/lib/widgets/index.d.ts +1 -0
- package/widgets/lib/widgets/layout/block/block-widget-view.component.d.ts +4 -2
- package/widgets/lib/widgets/layout/repeater/repeater-widget-edit.component.d.ts +1 -0
- package/widgets/lib/widgets/layout/template/index.d.ts +4 -0
- package/widgets/lib/widgets/layout/template/template-widget-designer.component.d.ts +11 -0
- package/widgets/lib/widgets/layout/template/template-widget-edit.component.d.ts +10 -0
- package/widgets/lib/widgets/layout/template/template-widget-view.component.d.ts +10 -0
- package/widgets/lib/widgets/layout/template/template-widget.config.d.ts +7 -0
- package/widgets/lib/widgets/layout/template/template.provider.d.ts +21 -0
- package/common/lib/data/entity-data-provider.d.ts +0 -14
- package/esm2022/common/lib/data/entity-data-provider.mjs +0 -26
- package/esm2022/themes/shared/lib/comments/comment-list-view.component.mjs +0 -421
- package/esm2022/themes/shared/lib/comments/comment-lookup-popup.component.mjs +0 -56
- package/esm2022/themes/shared/lib/comments/comments.service.mjs +0 -3
- package/esm2022/themes/shared/lib/comments/comments.type.mjs +0 -2
- package/fesm2022/acorex-platform-common-avatar-widget-edit.component-CSSz-dqg.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-avatar-widget-view.component-WofmamJK.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-boolean-widget-filter.component-ByoMpVAs.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-checkbox-widget-edit.component-C1PgHZsE.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-dateTime-widget-column.component-BnW8m1wn.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-dateTime-widget-filter.component-Dbxz84tm.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-email-widget-column.component-BqRR2jW9.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-file-widget-column.component-Dt2mR6hJ.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-file-widget-filter.component-CGd1mY-z.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-gallery-widget-filter.component-CUw4kxTW.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-largetext-widget-edit.component-7bbHUOnp.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-lookup-widget-column.component-PGf5qjC4.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-lookup-widget-edit.component-CGZf6rH2.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-lookup-widget-filter.component-CUBdIuu9.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-lookup-widget-view.component-dmGctRc9.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-map-widget-edit.component-Cyi6AF9u.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-map-widget-view.component-Cbl1KClC.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-messenger-widget-column.component-BGiTw0jL.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-messenger-widget-edit.component-BBSmai_5.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-number-widget-edit.component-CGmS-gd7.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-number-widget-filter.component-8RC01k_0.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-number-widget-view.component-DGPcZ-yE.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-password-widget-edit.component-DZz6rAL3.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-rich-text-widget-edit.component-DtEcLWte.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-rich-text-widget-view.component-DI4I6wII.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-selection-list-widget-edit.component-Ds7Pc22g.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-selection-list-widget-filter.component-D7h2tUqB.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-selection-list-widget-view.component-DGuotR-q.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-signature-pad-widget-view.component-CdqZ17tU.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-string-widget-filter.component-Ctde9CDD.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-text-widget-edit.component-BwfelIOW.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-toggle-widget-edit.component-BnPyXdAA.mjs.map +0 -1
- package/fesm2022/acorex-platform-layout-designer-preview.component-CaRHf4x_.mjs +0 -23
- package/fesm2022/acorex-platform-layout-designer-preview.component-CaRHf4x_.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-Q8eTfAVx.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-CNXG0nP4.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-BijYXMme.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-Bnrabotu.mjs.map +0 -1
- package/fesm2022/acorex-platform-widgets-color-box-widget-designer.component-DIvi0BtT.mjs.map +0 -1
- package/themes/shared/lib/comments/comment-list-view.component.d.ts +0 -61
- package/themes/shared/lib/comments/comment-lookup-popup.component.d.ts +0 -10
- package/themes/shared/lib/comments/comments.service.d.ts +0 -8
- package/themes/shared/lib/comments/comments.type.d.ts +0 -70
|
@@ -14,6 +14,7 @@ export class AXPDesignerService {
|
|
|
14
14
|
this.fileService = inject(AXFileService);
|
|
15
15
|
this.loadingService = inject(AXLoadingDialogService);
|
|
16
16
|
this.widgetRegisteryService = inject(AXPWidgetRegistryService);
|
|
17
|
+
this.channel = new BroadcastChannel('livePreviewChannel');
|
|
17
18
|
this.document = signal(this.createDoc());
|
|
18
19
|
this.currentPageIndex = signal(0);
|
|
19
20
|
this.currentPage = signal(this.document().children?.[0]);
|
|
@@ -36,6 +37,15 @@ export class AXPDesignerService {
|
|
|
36
37
|
this.onRefresh = new Subject();
|
|
37
38
|
this.onUpdate = new Subject();
|
|
38
39
|
this.onFocused = new Subject();
|
|
40
|
+
this.channelCallback = (message) => {
|
|
41
|
+
if (message.data.action == 'designer-preview-loaded') {
|
|
42
|
+
this.updatePreview();
|
|
43
|
+
}
|
|
44
|
+
if (message.data.action == 'open-preview-window') {
|
|
45
|
+
this.openPreviewWindow();
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
this.channel.addEventListener('message', this.channelCallback);
|
|
39
49
|
}
|
|
40
50
|
register(command) {
|
|
41
51
|
this.select({ widget: command.widget });
|
|
@@ -51,6 +61,7 @@ export class AXPDesignerService {
|
|
|
51
61
|
}
|
|
52
62
|
this.selectedNode.update((c) => merge(node, command.values));
|
|
53
63
|
this.onUpdate.next({ widget: node, values: command.values });
|
|
64
|
+
this.updatePreview();
|
|
54
65
|
}
|
|
55
66
|
focus(command) {
|
|
56
67
|
if (this._focusedNode != command.widget) {
|
|
@@ -60,6 +71,7 @@ export class AXPDesignerService {
|
|
|
60
71
|
}
|
|
61
72
|
refresh(command) {
|
|
62
73
|
this.onRefresh.next({ widget: command.widget });
|
|
74
|
+
this.updatePreview();
|
|
63
75
|
}
|
|
64
76
|
findBreadcrumbs(node, targetNode, breadcrumb = []) {
|
|
65
77
|
// Add the current node to the breadcrumb path
|
|
@@ -144,6 +156,7 @@ export class AXPDesignerService {
|
|
|
144
156
|
setTimeout(() => {
|
|
145
157
|
this.currentPage.set(this.document().children?.[this.currentPageIndex()]);
|
|
146
158
|
this.select({ widget: this.currentPage() });
|
|
159
|
+
this.updatePreview();
|
|
147
160
|
});
|
|
148
161
|
}
|
|
149
162
|
reRenderPage() {
|
|
@@ -466,21 +479,30 @@ export class AXPDesignerService {
|
|
|
466
479
|
}
|
|
467
480
|
}
|
|
468
481
|
}
|
|
469
|
-
|
|
482
|
+
updatePreview() {
|
|
483
|
+
this.channel.postMessage({
|
|
484
|
+
action: 'designer-preview',
|
|
485
|
+
document: this.removeMetaProp(this.document()),
|
|
486
|
+
});
|
|
487
|
+
}
|
|
488
|
+
async openPreviewDialog() {
|
|
470
489
|
const com = await import('../../preview/preview.component').then((c) => c.AXPLayoutDesignerPreviewComponent);
|
|
471
490
|
await this.popupService.open(com, {
|
|
472
491
|
header: false,
|
|
473
492
|
size: 'full',
|
|
474
|
-
closeButton: true,
|
|
475
493
|
data: {
|
|
476
|
-
|
|
494
|
+
initialSize: this.size(),
|
|
495
|
+
isDialogWindow: true,
|
|
477
496
|
},
|
|
478
497
|
});
|
|
479
498
|
}
|
|
499
|
+
openPreviewWindow() {
|
|
500
|
+
window.open('/forms/preview', '_blank');
|
|
501
|
+
}
|
|
480
502
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPDesignerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
481
503
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPDesignerService }); }
|
|
482
504
|
}
|
|
483
505
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPDesignerService, decorators: [{
|
|
484
506
|
type: Injectable
|
|
485
|
-
}] });
|
|
486
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzaWduZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vbGF5b3V0L2Rlc2lnbmVyL3NyYy9saWIvZGVzaWduZXIvc2hhcmVkL2Rlc2lnbmVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUE2QixzQkFBc0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3RHLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbEQsT0FBTyxFQUlMLHdCQUF3QixFQUN4QixpQkFBaUIsR0FDbEIsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGNBQWMsRUFBRSxtQkFBbUIsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN2RyxPQUFPLEVBQW1CLGdCQUFnQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7O0FBb0RyRSxNQUFNLE9BQU8sa0JBQWtCO0lBRC9CO1FBRVUsaUJBQVksR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDdEMsZ0JBQVcsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDcEMsbUJBQWMsR0FBRyxNQUFNLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUNoRCwyQkFBc0IsR0FBRyxNQUFNLENBQUMsd0JBQXdCLENBQUMs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S0FBSyxDQUFDLFdBQVc7UUFDdEIsTUFBTSxHQUFHLEdBQUcsTUFBTSxNQUFNLENBQUMsaUNBQWlDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO1FBQzdHLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ2hDLE1BQU0sRUFBRSxLQUFLO1lBQ2IsSUFBSSxFQUFFLE1BQU07WUFDWixXQUFXLEVBQUUsSUFBSTtZQUNqQixJQUFJLEVBQUU7Z0JBQ0osT0FBTyxFQUFFLE1BQU0sQ0FDYixJQUFJLENBQUMsc0JBQXNCLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLEtBQUssQ0FBQyxFQUNuRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FDZjthQUNGO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs4R0FyaUJVLGtCQUFrQjtrSEFBbEIsa0JBQWtCOzsyRkFBbEIsa0JBQWtCO2tCQUQ5QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhMb2FkaW5nRGlhbG9nQnV0dG9uSXRlbSwgQVhMb2FkaW5nRGlhbG9nU2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9sb2FkaW5nLWRpYWxvZyc7XG5pbXBvcnQgeyBBWFBvcHVwU2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9wb3B1cCc7XG5pbXBvcnQgeyBBWEZpbGVTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9jb3JlL2ZpbGUnO1xuaW1wb3J0IHtcbiAgQVhQV2lkZ2V0Q29tcG9uZW50LFxuICBBWFBXaWRnZXRDb25maWcsXG4gIEFYUFdpZGdldE5vZGUsXG4gIEFYUFdpZGdldFJlZ2lzdHJ5U2VydmljZSxcbiAgQVhQV2lkZ2V0c0NhdGFsb2csXG59IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2J1aWxkZXInO1xuaW1wb3J0IHsgY29tcHV0ZWQsIGluamVjdCwgSW5qZWN0YWJsZSwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjbG9uZURlZXAsIGdldCwgbWVyZ2UsIHNldCwgc29ydEJ5IH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFkZFdpZGdldENvbW1hbmQsIENvbW1hbmRNYW5hZ2VyLCBSZW1vdmVXaWRnZXRDb21tYW5kLCBVcGRhdGVXaWRnZXRDb21tYW5kIH0gZnJvbSAnLi9jb21tYW5kJztcbmltcG9ydCB7IEFYUERlc2lnbmVyTW9kZSwgQVhQRGVzaWduZXJNb2RlcyB9IGZyb20gJy4vZGVzaWduZXIudHlwZXMnO1xuXG5leHBvcnQgdHlwZSBBWFBEZXNpZ25lclByZXZpZXdTaXplID0gJ3NtJyB8ICdtZCcgfCAnbGcnIHwgJ3hsJyB8ICd4eGwnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFYUERlc2lnbmVyRm9jdXNDb21tYW5kIHtcbiAgd2lkZ2V0OiBBWFBXaWRnZXROb2RlIHwgbnVsbDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBWFBEZXNpZ25lclVwZGF0ZUNvbW1hbmQge1xuICB2YWx1ZXM6IGFueTtcbiAgd2lkZ2V0PzogQVhQV2lkZ2V0Tm9kZSB8IG51bGw7XG4gIG1vZGU6ICdpbml0JyB8ICd1cGRhdGUnO1xufVxuZXhwb3J0IGludGVyZmFjZSBBWFBEZXNpZ25lclVwZGF0ZUV2ZW50IHtcbiAgdmFsdWVzOiBhbnk7XG4gIHdpZGdldDogQVhQV2lkZ2V0Tm9kZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBWFBEZXNpZ25lclNlbGVjdENvbW1hbmQge1xuICB3aWRnZXQ6IEFYUFdpZGdldE5vZGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQRGVzaWduZXJSZWdpc3RlckNvbW1hbmQge1xuICBpZDogbnVtYmVyO1xuICB3aWRnZXQ6IEFYUFdpZGdldE5vZGU7XG4gIGNvbmZpZzogQVhQV2lkZ2V0Q29uZmlnO1xuICBpbnN0YW5jZTogQVhQV2lkZ2V0Q29tcG9uZW50O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYUERlc2lnbmVyU2VsZWN0RXZlbnQge1xuICB3aWRnZXQ6IEFYUFdpZGdldE5vZGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQRGVzaWduZXJSZWZyZXNoQ29tbWFuZCB7XG4gIHdpZGdldDogQVhQV2lkZ2V0Tm9kZTtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgQVhQRGVzaWduZXJSZWZyZXNoRXZlbnQge1xuICB3aWRnZXQ6IEFYUFdpZGdldE5vZGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQRGVzaWduZXJBZGROb2RlQ29tbWFuZCB7XG4gIHdpZGdldDogQVhQV2lkZ2V0Tm9kZTtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgQVhQRGVzaWduZXJBZGROb2RlRXZlbnQge1xuICB3aWRnZXQ6IEFYUFdpZGdldE5vZGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQRGVzaWduZXJGb2N1c0V2ZW50IHtcbiAgd2lkZ2V0OiBBWFBXaWRnZXROb2RlIHwgbnVsbDtcbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEFYUERlc2lnbmVyU2VydmljZSB7XG4gIHByaXZhdGUgcG9wdXBTZXJ2aWNlID0gaW5qZWN0KEFYUG9wdXBTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBmaWxlU2VydmljZSA9IGluamVjdChBWEZpbGVTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBsb2FkaW5nU2VydmljZSA9IGluamVjdChBWExvYWRpbmdEaWFsb2dTZXJ2aWNlKTtcbiAgcHJpdmF0ZSB3aWRnZXRSZWdpc3RlcnlTZXJ2aWNlID0gaW5qZWN0KEFYUFdpZGdldFJlZ2lzdHJ5U2VydmljZSk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGRvY3VtZW50ID0gc2lnbmFsKHRoaXMuY3JlYXRlRG9jKCkpO1xuICBwdWJsaWMgcmVhZG9ubHkgY3VycmVudFBhZ2VJbmRleCA9IHNpZ25hbCgwKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgY3VycmVudFBhZ2UgPSBzaWduYWwodGhpcy5kb2N1bWVudCgpLmNoaWxkcmVuPy5bMF0hKTtcblxuICBwcml2YXRlIGNvbW1hbmRNYW5hZ2VyID0gaW5qZWN0KENvbW1hbmRNYW5hZ2VyKTtcblxuICBwcml2YXRlIGNsaXBib2FyZCA9IHNpZ25hbDxBWFBXaWRnZXROb2RlIHwgbnVsbD4obnVsbCk7XG4gIHB1YmxpYyBjYW5DdXRDb3B5ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5zZWxlY3RlZE5vZGUoKSAhPSBudWxsICYmIHRoaXMuc2VsZWN0ZWROb2RlKCk/Lm5hbWUgIT0gJ3BhZ2UnKTtcbiAgcHVibGljIGNhblBhc3RlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5jbGlwYm9hcmQoKSAhPSBudWxsKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgaGlzdG9yeSA9IGNvbXB1dGVkKCgpID0+IHRoaXMuY29tbWFuZE1hbmFnZXIuaGlzdG9yeSgpKTtcbiAgcHVibGljIHJlYWRvbmx5IGNhblVuZG8gPSBjb21wdXRlZCgoKSA9PiB0aGlzLmNvbW1hbmRNYW5hZ2VyLmNhblVuZG8oKSk7XG4gIHB1YmxpYyByZWFkb25seSBjYW5SZWRvID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5jb21tYW5kTWFuYWdlci5jYW5SZWRvKCkpO1xuXG4gIHB1YmxpYyBicmVhZGNydW1icyA9IGNvbXB1dGVkPEFYUFdpZGdldE5vZGVbXT4oKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkTm9kZSgpID8gdGhpcy5maW5kQnJlYWRjcnVtYnModGhpcy5jdXJyZW50UGFnZSgpLCB0aGlzLnNlbGVjdGVkTm9kZSgpISkgPz8gW10gOiBbXTtcbiAgfSk7XG5cbiAgcHVibGljIHNlbGVjdGVkTm9kZSA9IHNpZ25hbDxBWFBXaWRnZXROb2RlIHwgbnVsbD4obnVsbCk7XG5cbiAgcHJpdmF0ZSBfZm9jdXNlZE5vZGU6IEFYUFdpZGdldE5vZGUgfCBudWxsID0gbnVsbDtcbiAgcHVibGljIGZvY3VzZWROb2RlID0gKCkgPT4gdGhpcy5fZm9jdXNlZE5vZGU7XG5cbiAgcHVibGljIHJlYWRvbmx5IG1vZGUgPSBzaWduYWw8QVhQRGVzaWduZXJNb2RlPihBWFBEZXNpZ25lck1vZGVzLkRlc2lnbik7XG4gIHB1YmxpYyByZWFkb25seSBzaXplID0gc2lnbmFsPEFYUERlc2lnbmVyUHJldmlld1NpemU+KCd4bCcpO1xuXG4gIHB1YmxpYyByZWFkb25seSBvblNlbGVjdGVkID0gbmV3IFN1YmplY3Q8QVhQRGVzaWduZXJTZWxlY3RFdmVudD4oKTtcbiAgcHVibGljIHJlYWRvbmx5IG9uUmVmcmVzaCA9IG5ldyBTdWJqZWN0PEFYUERlc2lnbmVyUmVmcmVzaEV2ZW50PigpO1xuICBwdWJsaWMgcmVhZG9ubHkgb25VcGRhdGUgPSBuZXcgU3ViamVjdDxBWFBEZXNpZ25lclVwZGF0ZUV2ZW50PigpO1xuICBwdWJsaWMgcmVhZG9ubHkgb25Gb2N1c2VkID0gbmV3IFN1YmplY3Q8QVhQRGVzaWduZXJGb2N1c0V2ZW50PigpO1xuXG4gIHB1YmxpYyByZWdpc3Rlcihjb21tYW5kOiBBWFBEZXNpZ25lclJlZ2lzdGVyQ29tbWFuZCk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0KHsgd2lkZ2V0OiBjb21tYW5kLndpZGdldCB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzZWxlY3QoY29tbWFuZDogQVhQRGVzaWduZXJTZWxlY3RDb21tYW5kKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZE5vZGUuc2V0KGNvbW1hbmQud2lkZ2V0KTtcbiAgICB0aGlzLm9uU2VsZWN0ZWQubmV4dChjb21tYW5kKTtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGUoY29tbWFuZDogQVhQRGVzaWduZXJVcGRhdGVDb21tYW5kKTogdm9pZCB7XG4gICAgY29uc3Qgbm9kZSA9IGNvbW1hbmQud2lkZ2V0ID8/IHRoaXMuc2VsZWN0ZWROb2RlKCk7XG5cbiAgICBpZiAoY29tbWFuZC5tb2RlID09ICd1cGRhdGUnICYmIG5vZGUpIHtcbiAgICAgIHRoaXMuY29tbWFuZE1hbmFnZXIuZXhlY3V0ZUNvbW1hbmQobmV3IFVwZGF0ZVdpZGdldENvbW1hbmQobm9kZSEsIGNvbW1hbmQudmFsdWVzLCBub2RlISkpO1xuICAgIH1cbiAgICB0aGlzLnNlbGVjdGVkTm9kZS51cGRhdGUoKGMpID0+IG1lcmdlKG5vZGUsIGNvbW1hbmQudmFsdWVzKSk7XG4gICAgdGhpcy5vblVwZGF0ZS5uZXh0KHsgd2lkZ2V0OiBub2RlISwgdmFsdWVzOiBjb21tYW5kLnZhbHVlcyB9KTtcbiAgfVxuXG4gIHB1YmxpYyBmb2N1cyhjb21tYW5kOiBBWFBEZXNpZ25lckZvY3VzQ29tbWFuZCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9mb2N1c2VkTm9kZSAhPSBjb21tYW5kLndpZGdldCkge1xuICAgICAgdGhpcy5fZm9jdXNlZE5vZGUgPSBjb21tYW5kLndpZGdldDtcbiAgICAgIHRoaXMub25Gb2N1c2VkLm5leHQoeyB3aWRnZXQ6IHRoaXMuX2ZvY3VzZWROb2RlIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyByZWZyZXNoKGNvbW1hbmQ6IEFYUERlc2lnbmVyUmVmcmVzaENvbW1hbmQpIHtcbiAgICB0aGlzLm9uUmVmcmVzaC5uZXh0KHsgd2lkZ2V0OiBjb21tYW5kLndpZGdldCB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZmluZEJyZWFkY3J1bWJzKFxuICAgIG5vZGU6IEFYUFdpZGdldE5vZGUsXG4gICAgdGFyZ2V0Tm9kZTogQVhQV2lkZ2V0Tm9kZSxcbiAgICBicmVhZGNydW1iOiBBWFBXaWRnZXROb2RlW10gPSBbXVxuICApOiBBWFBXaWRnZXROb2RlW10gfCB1bmRlZmluZWQge1xuICAgIC8vIEFkZCB0aGUgY3VycmVudCBub2RlIHRvIHRoZSBicmVhZGNydW1iIHBhdGhcbiAgICBjb25zdCBjdXJyZW50QnJlYWRjcnVtYiA9IFsuLi5icmVhZGNydW1iLCBub2RlXTtcblxuICAgIC8vIENoZWNrIGlmIHRoZSBjdXJyZW50IG5vZGUgaXMgdGhlIHRhcmdldCBub2RlXG4gICAgaWYgKG5vZGUgPT09IHRhcmdldE5vZGUpIHtcbiAgICAgIHJldHVybiBjdXJyZW50QnJlYWRjcnVtYjtcbiAgICB9XG5cbiAgICAvLyBJZiB0aGUgbm9kZSBoYXMgY2hpbGRyZW4sIHJlY3Vyc2l2ZWx5IHNlYXJjaCB0aGVtXG4gICAgaWYgKG5vZGUuY2hpbGRyZW4pIHtcbiAgICAgIGZvciAoY29uc3QgY2hpbGQgb2Ygbm9kZS5jaGlsZHJlbikge1xuICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLmZpbmRCcmVhZGNydW1icyhjaGlsZCwgdGFyZ2V0Tm9kZSwgY3VycmVudEJyZWFkY3J1bWIpO1xuICAgICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFJldHVybiB1bmRlZmluZWQgaWYgbm8gbWF0Y2ggaXMgZm91bmRcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgYXN5bmMgc2hvd1BpY2tlcihjdXJyZW50Tm9kZTogQVhQV2lkZ2V0Tm9kZSk6IFByb21pc2U8QVhQV2lkZ2V0Tm9kZVtdPiB7XG4gICAgY29uc3QgY29tID0gYXdhaXQgaW1wb3J0KCcuLi9jb21wb25lbnRzL3dpZGdldC1waWNrZXIvd2lkZ2V0LXBpY2tlci5jb21wb25lbnQnKS50aGVuKFxuICAgICAgKGMpID0+IGMuQVhQRGVzaWduZXJXaWRnZXRQaWNrZXJDb21wb25lbnRcbiAgICApO1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMucG9wdXBTZXJ2aWNlLm9wZW4oY29tLCB7XG4gICAgICB0aXRsZTogJ1dpZGdldCBHYWxsZXJ5JyxcbiAgICAgIHNpemU6ICdtZCcsXG4gICAgICBjbG9zZUJ1dHRvbjogdHJ1ZSxcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgd2lkZ2V0czogc29ydEJ5KFxuICAgICAgICAgIHRoaXMud2lkZ2V0UmVnaXN0ZXJ5U2VydmljZS5hbGwoKS5maWx0ZXIoKGMpID0+IGMudmlzaWJsZSAhPSBmYWxzZSksXG4gICAgICAgICAgKGMpID0+IGMudGl0bGVcbiAgICAgICAgKSxcbiAgICAgIH0sXG4gICAgfSk7XG4gICAgY29uc3Qgd2lkZ2V0czogQVhQV2lkZ2V0Tm9kZVtdID0gW107XG4gICAgaWYgKChyZXN1bHQuZGF0YT8ud2lkZ2V0cyA/PyBbXSkubGVuZ3RoKSB7XG4gICAgICBjb25zdCBzZWxlY3RlZCA9IHJlc3VsdC5kYXRhPy53aWRnZXRzIGFzIEFYUFdpZGdldENvbmZpZ1tdO1xuICAgICAgc2VsZWN0ZWQuZm9yRWFjaCgoYykgPT4ge1xuICAgICAgICB3aWRnZXRzLnB1c2godGhpcy5hZGRXaWRnZXQoY3VycmVudE5vZGUsIHsgdHlwZTogYy5uYW1lIH0pISk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHdpZGdldHM7XG4gIH1cblxuICBwdWJsaWMgbmV3KCkge1xuICAgIHRoaXMuY29tbWFuZE1hbmFnZXIuY2xlYXIoKTtcbiAgICB0aGlzLmRvY3VtZW50LnNldCh0aGlzLmNyZWF0ZURvYygpKTtcbiAgICB0aGlzLmN1cnJlbnRQYWdlLnNldCh0aGlzLmRvY3VtZW50KCkuY2hpbGRyZW4/LlswXSEpO1xuICAgIHRoaXMucmVSZW5kZXJQYWdlKCk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZURvYygpOiBBWFBXaWRnZXROb2RlIHtcbiAgICBjb25zdCBkb2M6IEFYUFdpZGdldE5vZGUgPSB7XG4gICAgICB0eXBlOiBBWFBXaWRnZXRzQ2F0YWxvZy5kb2N1bWVudCxcbiAgICAgIGNoaWxkcmVuOiBbdGhpcy5jcmVhdGVQYWdlKCldLFxuICAgICAgbmFtZTogJ2RvY3VtZW50JyxcbiAgICB9O1xuICAgIHNldChkb2MsICdfX21ldGFfXy5pZCcsIHRoaXMuZ2VuZXJhdGVVbmlxdWVJZCgpKTtcbiAgICByZXR1cm4gZG9jO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVQYWdlKCk6IEFYUFdpZGdldE5vZGUge1xuICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMud2lkZ2V0UmVnaXN0ZXJ5U2VydmljZS5yZXNvbHZlKCdwYWdlLWxheW91dCcpO1xuXG4gICAgY29uc3QgcGFnZTogQVhQV2lkZ2V0Tm9kZSA9IHtcbiAgICAgIHR5cGU6ICdwYWdlLWxheW91dCcsXG4gICAgICBjaGlsZHJlbjogW10sXG4gICAgICBuYW1lOiAncGFnZS1sYXlvdXQxJyxcbiAgICB9O1xuXG4gICAgc2V0KHBhZ2UsICdfX21ldGFfXy5pZCcsIHRoaXMuZ2VuZXJhdGVVbmlxdWVJZCgpKTtcbiAgICBzZXQocGFnZSwgJ19fbWV0YV9fLmNvbmZpZycsIGNvbmZpZyk7XG4gICAgcmV0dXJuIHBhZ2U7XG4gIH1cblxuICBwdWJsaWMgYWRkTmV3UGFnZSgpIHtcbiAgICB0aGlzLmFkZFdpZGdldCh0aGlzLmRvY3VtZW50KCksIHRoaXMuY3JlYXRlUGFnZSgpKTtcbiAgICB0aGlzLmdvVG9QYWdlKHRoaXMuY3VycmVudFBhZ2VJbmRleCgpICsgMSk7XG4gIH1cblxuICBwdWJsaWMgcmVtb3ZlUGFnZShpbmRleDogbnVtYmVyKSB7XG4gICAgY29uc3QgcGFnZSA9IHRoaXMuZG9jdW1lbnQoKS5jaGlsZHJlbj8uW2luZGV4XSE7XG4gICAgdGhpcy5yZW1vdmVXaWRnZXQocGFnZSk7XG4gICAgdGhpcy5nb1RvUGFnZShpbmRleCAtIDEpO1xuICB9XG5cbiAgcHVibGljIGNsb25lUGFnZShpbmRleDogbnVtYmVyKSB7XG4gICAgY29uc3QgcGFnZSA9IHRoaXMuZG9jdW1lbnQoKS5jaGlsZHJlbj8uW2luZGV4XSE7XG4gICAgdGhpcy5jbG9uZShwYWdlKTtcbiAgICB0aGlzLmdvVG9QYWdlKCh0aGlzLmRvY3VtZW50KCkuY2hpbGRyZW4/Lmxlbmd0aCA/PyAxKSAtIDEpO1xuICB9XG5cbiAgcHVibGljIGdvVG9QYWdlKGluZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLmN1cnJlbnRQYWdlSW5kZXguc2V0KGluZGV4KTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuY3VycmVudFBhZ2Uuc2V0KHRoaXMuZG9jdW1lbnQoKS5jaGlsZHJlbj8uW3RoaXMuY3VycmVudFBhZ2VJbmRleCgpXSEpO1xuICAgICAgdGhpcy5zZWxlY3QoeyB3aWRnZXQ6IHRoaXMuY3VycmVudFBhZ2UoKSB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVSZW5kZXJQYWdlKCkge1xuICAgIHRoaXMuY3VycmVudFBhZ2Uuc2V0KHsgLi4udGhpcy5jdXJyZW50UGFnZSgpIH0pO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5yZWZyZXNoKHsgd2lkZ2V0OiB0aGlzLmN1cnJlbnRQYWdlKCkgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZmluZFdpZGdldEJ5SWQocm9vdDogQVhQV2lkZ2V0Tm9kZSwgaWQ6IHN0cmluZyk6IEFYUFdpZGdldE5vZGUgfCBudWxsIHtcbiAgICBpZiAoZ2V0KHJvb3QsICdfX21ldGFfXy5pZCcpID09PSBpZCkge1xuICAgICAgcmV0dXJuIHJvb3Q7IC8vIFJldHVybiB0aGUgcm9vdCBpZiBpdCBtYXRjaGVzIHRoZSBJRFxuICAgIH1cbiAgICBpZiAoIXJvb3QuY2hpbGRyZW4pIHJldHVybiBudWxsO1xuXG4gICAgZm9yIChjb25zdCBjaGlsZCBvZiByb290LmNoaWxkcmVuKSB7XG4gICAgICBjb25zdCBmb3VuZCA9IHRoaXMuZmluZFdpZGdldEJ5SWQoY2hpbGQsIGlkKTtcbiAgICAgIGlmIChmb3VuZCkge1xuICAgICAgICByZXR1cm4gZm91bmQ7IC8vIFJldHVybiB0aGUgZm91bmQgY2hpbGRcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDsgLy8gTm9kZSBub3QgZm91bmRcbiAgfVxuXG4gIHByaXZhdGUgZmluZFBhcmVudChpZDogc3RyaW5nLCBwYXJlbnQ6IEFYUFdpZGdldE5vZGUgPSB0aGlzLmN1cnJlbnRQYWdlKCkpOiBBWFBXaWRnZXROb2RlIHwgbnVsbCB7XG4gICAgaWYgKCFwYXJlbnQuY2hpbGRyZW4pIHJldHVybiBudWxsO1xuXG4gICAgaWYgKHBhcmVudC5jaGlsZHJlbi5zb21lKChjaGlsZCkgPT4gZ2V0KGNoaWxkLCAnX19tZXRhX18uaWQnKSA9PT0gaWQpKSB7XG4gICAgICByZXR1cm4gcGFyZW50OyAvLyBSZXR1cm4gdGhpcyBub2RlIGFzIGl0J3MgdGhlIHBhcmVudCBvZiB0aGUgbm9kZSB3aXRoIHRoZSBnaXZlbiBJRFxuICAgIH1cblxuICAgIGZvciAoY29uc3QgY2hpbGQgb2YgcGFyZW50LmNoaWxkcmVuKSB7XG4gICAgICBjb25zdCBmb3VuZFBhcmVudCA9IHRoaXMuZmluZFBhcmVudChpZCwgY2hpbGQpO1xuICAgICAgaWYgKGZvdW5kUGFyZW50KSByZXR1cm4gZm91bmRQYXJlbnQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7IC8vIE5vIHBhcmVudCBmb3VuZFxuICB9XG5cbiAgcHJpdmF0ZSBmaW5kTmVhcmVzdENvbnRhaW5lcihub2RlOiBBWFBXaWRnZXROb2RlLCBzZWFyY2hVcHdhcmQ6IGJvb2xlYW4gPSB0cnVlKTogQVhQV2lkZ2V0Tm9kZSB8IG51bGwge1xuICAgIGlmIChzZWFyY2hVcHdhcmQpIHtcbiAgICAgIGxldCBjdXJyZW50OiBBWFBXaWRnZXROb2RlIHwgbnVsbCA9IG5vZGU7XG4gICAgICB3aGlsZSAoY3VycmVudCkge1xuICAgICAgICBjb25zdCBjb25maWcgPSB0aGlzLndpZGdldFJlZ2lzdGVyeVNlcnZpY2UucmVzb2x2ZShjdXJyZW50LnR5cGUpO1xuICAgICAgICBpZiAoY29uZmlnICYmIGNvbmZpZy50eXBlID09ICdjb250YWluZXInKSB7XG4gICAgICAgICAgcmV0dXJuIGN1cnJlbnQ7XG4gICAgICAgIH1cbiAgICAgICAgY3VycmVudCA9IHRoaXMuZmluZFBhcmVudChnZXQoY3VycmVudCwgJ19fbWV0YV9fLmlkJykhKTsgLy8gVXNlIGZpbmRQYXJlbnQgdG8gbmF2aWdhdGUgdXB3YXJkc1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBSZWN1cnNpdmUgc2VhcmNoIHRvIGZpbmQgdGhlIGZpcnN0IGNvbnRhaW5lciBhbW9uZyBjaGlsZHJlblxuICAgICAgaWYgKG5vZGUuY2hpbGRyZW4pIHtcbiAgICAgICAgZm9yIChjb25zdCBjaGlsZCBvZiBub2RlLmNoaWxkcmVuKSB7XG4gICAgICAgICAgY29uc3QgY29uZmlnID0gdGhpcy53aWRnZXRSZWdpc3RlcnlTZXJ2aWNlLnJlc29sdmUoY2hpbGQudHlwZSk7XG4gICAgICAgICAgaWYgKGNvbmZpZyAmJiBjb25maWcudHlwZSA9PSAnY29udGFpbmVyJykge1xuICAgICAgICAgICAgcmV0dXJuIGNoaWxkO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBmb3VuZENvbnRhaW5lciA9IHRoaXMuZmluZE5lYXJlc3RDb250YWluZXIoY2hpbGQsIGZhbHNlKTsgLy8gQ29udGludWUgc2VhcmNoaW5nIGRvd253YXJkc1xuICAgICAgICAgIGlmIChmb3VuZENvbnRhaW5lcikgcmV0dXJuIGZvdW5kQ29udGFpbmVyO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsOyAvLyBSZXR1cm4gbnVsbCBpZiBubyBjb250YWluZXIgZm91bmRcbiAgfVxuXG4gIGFkZFdpZGdldChjdXJyZW50Tm9kZTogQVhQV2lkZ2V0Tm9kZSwgbm9kZTogQVhQV2lkZ2V0Tm9kZSk6IEFYUFdpZGdldE5vZGUge1xuICAgIC8vXG4gICAgY29uc3QgY2xvbmVkID0gY2xvbmVEZWVwKG5vZGUpO1xuICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMud2lkZ2V0UmVnaXN0ZXJ5U2VydmljZS5yZXNvbHZlKG5vZGUudHlwZSk7XG5cbiAgICAvL1xuICAgIHRoaXMuY29tbWFuZE1hbmFnZXIuZXhlY3V0ZUNvbW1hbmQobmV3IEFkZFdpZGdldENvbW1hbmQoY2xvbmVkLCBjdXJyZW50Tm9kZSwgY3VycmVudE5vZGUpKTtcbiAgICAvL1xuICAgIGNsb25lZC5uYW1lID0gdGhpcy5nZW5lcmF0ZVVuaXF1ZU5hbWUobm9kZS50eXBlKTtcbiAgICBzZXQoY2xvbmVkLCAnX19tZXRhX18uaWQnLCB0aGlzLmdlbmVyYXRlVW5pcXVlSWQoKSk7XG4gICAgc2V0KGNsb25lZCwgJ19fbWV0YV9fLmNvbmZpZycsIGNvbmZpZyk7XG4gICAgLy9cbiAgICB0aGlzLnJlUmVuZGVyUGFnZSgpO1xuICAgIC8vXG4gICAgdGhpcy5yZWZyZXNoKHsgd2lkZ2V0OiBjdXJyZW50Tm9kZSB9KTtcbiAgICB0aGlzLnNlbGVjdCh7IHdpZGdldDogY2xvbmVkIH0pO1xuICAgIHJldHVybiBjbG9uZWQ7XG4gIH1cblxuICBwdWJsaWMgcmVtb3ZlV2lkZ2V0KG5vZGU6IEFYUFdpZGdldE5vZGUpOiB2b2lkIHtcbiAgICBpZiAoXG4gICAgICBub2RlLnR5cGUgPT09ICdkb2N1bWVudC1sYXlvdXQnIHx8XG4gICAgICAobm9kZS50eXBlID09PSAncGFnZS1sYXlvdXQnICYmICh0aGlzLmRvY3VtZW50KCkuY2hpbGRyZW4/Lmxlbmd0aCA/PyAxKSA9PSAxKVxuICAgICkge1xuICAgICAgY29uc29sZS5lcnJvcignQ2Fubm90IHJlbW92ZSB0aGUgcGFnZSBub2RlLicpO1xuICAgICAgcmV0dXJuOyAvLyBQcmV2ZW50IHJlbW92aW5nIHRoZSByb290IHBhZ2Ugbm9kZSBvciBkb2N1bWVudFxuICAgIH1cblxuICAgIGNvbnN0IG5vZGVJZFRvUmVtb3ZlID0gZ2V0KG5vZGUsICdfX21ldGFfXy5pZCcpO1xuICAgIGlmICghbm9kZUlkVG9SZW1vdmUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm9kZSBkb2VzIG5vdCBoYXZlIGEgdmFsaWQgX19tZXRhX18uaWQgdG8gaWRlbnRpZnkgaXQgZm9yIHJlbW92YWwuJyk7XG4gICAgfVxuXG4gICAgLy8gRmluZCB0aGUgcGFyZW50IG9mIHRoZSBub2RlIHRvIHJlbW92ZSBpdFxuICAgIGNvbnN0IHBhcmVudCA9IHRoaXMuZmluZFBhcmVudChub2RlSWRUb1JlbW92ZSwgdGhpcy5kb2N1bWVudCgpKTtcbiAgICBpZiAoIXBhcmVudCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdQYXJlbnQgbm9kZSBub3QgZm91bmQuIFRoZSBub2RlIG1pZ2h0IGJlIHRoZSByb290IG5vZGUgb3IgZG9lcyBub3QgZXhpc3QuJyk7XG4gICAgfVxuXG4gICAgY29uc3QgcHJldmlvdXNTZWxlY3Rpb24gPSB0aGlzLnNlbGVjdGVkTm9kZSgpOyAvLyBDYXB0dXJlIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgbm9kZSBiZWZvcmUgcmVtb3ZhbFxuICAgIGNvbnN0IGNvbW1hbmQgPSBuZXcgUmVtb3ZlV2lkZ2V0Q29tbWFuZChub2RlLCBwYXJlbnQsIHByZXZpb3VzU2VsZWN0aW9uISk7XG4gICAgdGhpcy5jb21tYW5kTWFuYWdlci5leGVjdXRlQ29tbWFuZChjb21tYW5kKTtcblxuICAgIHRoaXMucmVmcmVzaCh7IHdpZGdldDogcGFyZW50IH0pOyAvLyBSZWZyZXNoIHRoZSBVSSB0byByZWZsZWN0IGNoYW5nZXNcbiAgICB0aGlzLnNlbGVjdCh7IHdpZGdldDogcGFyZW50IH0pOyAvLyBTZWxlY3QgdGhlIHBhcmVudCBub2RlIGFmdGVyIHJlbW92YWxcbiAgfVxuXG4gIG5hdmlnYXRlVG8oaW5kZXg6IG51bWJlcikge1xuICAgIHRoaXMuY29tbWFuZE1hbmFnZXIuZ29Ub0NvbW1hbmQoaW5kZXgpO1xuICAgIHRoaXMucmVSZW5kZXJQYWdlKCk7XG4gICAgY29uc3QgY3VycmVudFNlbGVjdGlvbiA9IHRoaXMuY29tbWFuZE1hbmFnZXIuc2VsZWN0ZWROb2RlKCk7XG4gICAgdGhpcy5yZWZyZXNoKHsgd2lkZ2V0OiB0aGlzLmN1cnJlbnRQYWdlKCkgfSk7XG4gICAgdGhpcy5zZWxlY3QoeyB3aWRnZXQ6IGN1cnJlbnRTZWxlY3Rpb24hIH0pO1xuICB9XG5cbiAgcHVibGljIHJlZG8oKSB7XG4gICAgdGhpcy5jb21tYW5kTWFuYWdlci5yZWRvKCk7XG4gICAgdGhpcy5yZVJlbmRlclBhZ2UoKTtcbiAgICBjb25zdCBjdXJyZW50U2VsZWN0aW9uID0gdGhpcy5jb21tYW5kTWFuYWdlci5zZWxlY3RlZE5vZGUoKTtcbiAgICB0aGlzLnJlZnJlc2goeyB3aWRnZXQ6IHRoaXMuY3VycmVudFBhZ2UoKSB9KTtcbiAgICB0aGlzLnNlbGVjdCh7IHdpZGdldDogY3VycmVudFNlbGVjdGlvbiEgfSk7XG4gIH1cblxuICBwdWJsaWMgdW5kbygpIHtcbiAgICB0aGlzLmNvbW1hbmRNYW5hZ2VyLnVuZG8oKTtcbiAgICB0aGlzLnJlUmVuZGVyUGFnZSgpO1xuICAgIGNvbnN0IGN1cnJlbnRTZWxlY3Rpb24gPSB0aGlzLmNvbW1hbmRNYW5hZ2VyLnNlbGVjdGVkTm9kZSgpO1xuICAgIHRoaXMucmVmcmVzaCh7IHdpZGdldDogdGhpcy5jdXJyZW50UGFnZSgpIH0pO1xuICAgIHRoaXMuc2VsZWN0KHsgd2lkZ2V0OiBjdXJyZW50U2VsZWN0aW9uISB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjbGVhckhpc3RvcnkoKSB7XG4gICAgdGhpcy5jb21tYW5kTWFuYWdlci5jbGVhcigpO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVNZXRhUHJvcChvYmo6IGFueSk6IGFueSB7XG4gICAgY29uc3Qgbm9kZU5hbWUgPSAnX19tZXRhX18nO1xuICAgIC8vIENoZWNrIGlmIHRoZSBvYmplY3QgaXMgYW4gYXJyYXlcbiAgICBpZiAoQXJyYXkuaXNBcnJheShvYmopKSB7XG4gICAgICByZXR1cm4gb2JqLm1hcCgoaXRlbSkgPT4gdGhpcy5yZW1vdmVNZXRhUHJvcChpdGVtKSk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2Ygb2JqID09PSAnb2JqZWN0JyAmJiBvYmogIT09IG51bGwpIHtcbiAgICAgIC8vIENyZWF0ZSBhIG5ldyBvYmplY3QgdG8gc3RvcmUgdGhlIHJlc3VsdFxuICAgICAgbGV0IG5ld09iajogYW55ID0ge307XG4gICAgICBmb3IgKGxldCBrZXkgaW4gb2JqKSB7XG4gICAgICAgIC8vIE9ubHkgYWRkIHRoZSBrZXkgaWYgaXQncyBub3QgdGhlIG5vZGVOYW1lIHdlIHdhbnQgdG8gcmVtb3ZlXG4gICAgICAgIGlmIChrZXkgIT09IG5vZGVOYW1lKSB7XG4gICAgICAgICAgbmV3T2JqW2tleV0gPSB0aGlzLnJlbW92ZU1ldGFQcm9wKG9ialtrZXldKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIG5ld09iajtcbiAgICB9XG4gICAgLy8gSWYgdGhlIHZhbHVlIGlzIG5vdCBhbiBvYmplY3Qgb3IgYXJyYXksIHJldHVybiBpdCBhcyBpc1xuICAgIHJldHVybiBvYmo7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGFkZE1ldGFUb05vZGVzKFxuICAgIG5vZGU6IEFYUFdpZGdldE5vZGUsXG4gICAgcHJvY2Vzc2VkTm9kZXM6IHsgY291bnQ6IG51bWJlciB9LFxuICAgIHByb2dyZXNzQ2FsbGJhY2s6IChwcm9jZXNzZWQ6IG51bWJlcikgPT4gdm9pZFxuICApOiBQcm9taXNlPEFYUFdpZGdldE5vZGU+IHtcbiAgICAvLyBBcHBseSB5b3VyIG1ldGEgbG9naWMgaGVyZVxuICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMud2lkZ2V0UmVnaXN0ZXJ5U2VydmljZS5yZXNvbHZlKG5vZGUudHlwZSk7XG4gICAgLy9cbiAgICBzZXQobm9kZSwgJ19fbWV0YV9fLmlkJywgdGhpcy5nZW5lcmF0ZVVuaXF1ZUlkKCkpO1xuICAgIHNldChub2RlLCAnX19tZXRhX18uY29uZmlnJywgY29uZmlnKTtcbiAgICAvL1xuICAgIC8vIEluY3JlbWVudCB0aGUgcHJvY2Vzc2VkIG5vZGUgY291bnQgYW5kIHVwZGF0ZSB0aGUgcHJvZ3Jlc3MgZGlhbG9nXG4gICAgcHJvY2Vzc2VkTm9kZXMuY291bnQrKztcbiAgICBwcm9ncmVzc0NhbGxiYWNrKHByb2Nlc3NlZE5vZGVzLmNvdW50KTtcbiAgICAvLyBSZWN1cnNpdmVseSBwcm9jZXNzIGNoaWxkIG5vZGVzIHVzaW5nIFByb21pc2UuYWxsXG4gICAgaWYgKG5vZGUuY2hpbGRyZW4gJiYgbm9kZS5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICBub2RlLmNoaWxkcmVuID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgIG5vZGUuY2hpbGRyZW4ubWFwKGFzeW5jIChjaGlsZCkgPT4gYXdhaXQgdGhpcy5hZGRNZXRhVG9Ob2RlcyhjaGlsZCwgcHJvY2Vzc2VkTm9kZXMsIHByb2dyZXNzQ2FsbGJhY2spKVxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cblxuICBwdWJsaWMgY29weSh3aWRnZXQ6IEFYUFdpZGdldE5vZGUgfCBudWxsID0gdGhpcy5zZWxlY3RlZE5vZGUoKSk6IHZvaWQge1xuICAgIGlmICghd2lkZ2V0KSByZXR1cm47XG4gICAgdGhpcy5jbGlwYm9hcmQuc2V0KGNsb25lRGVlcCh3aWRnZXQpKTsgLy8gVXNlIGxvZGFzaCdzIGNsb25lRGVlcCB0byBlbnN1cmUgYSBkZWVwIGNvcHlcbiAgfVxuXG4gIHB1YmxpYyBjdXQod2lkZ2V0OiBBWFBXaWRnZXROb2RlIHwgbnVsbCA9IHRoaXMuc2VsZWN0ZWROb2RlKCkpOiB2b2lkIHtcbiAgICBpZiAoIXdpZGdldCkgcmV0dXJuO1xuICAgIHRoaXMuY29weSh3aWRnZXQpOyAvLyBDb3B5IHRoZSB3aWRnZXQgdG8gdGhlIGNsaXBib2FyZFxuICAgIHRoaXMucmVtb3ZlV2lkZ2V0KHdpZGdldCk7IC8vIFJldXNlIHRoZSByZW1vdmVXaWRnZXQgbWV0aG9kIHdoaWNoIHNob3VsZCBoYW5kbGUgdW5kbyBpbnRlcm5hbGx5XG4gIH1cblxuICBwdWJsaWMgY2xvbmUod2lkZ2V0OiBBWFBXaWRnZXROb2RlIHwgbnVsbCA9IHRoaXMuc2VsZWN0ZWROb2RlKCkpOiB2b2lkIHtcbiAgICBpZiAoIXdpZGdldCkgcmV0dXJuO1xuICAgIHRoaXMuY29weSh3aWRnZXQpOyAvLyBDb3B5IHRoZSB3aWRnZXQgdG8gdGhlIGNsaXBib2FyZFxuICAgIGlmICh3aWRnZXQudHlwZSA9PSAncGFnZS1sYXlvdXQnKSB7XG4gICAgICB0aGlzLnBhc3RlKHRoaXMuZG9jdW1lbnQoKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucGFzdGUod2lkZ2V0ISk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHBhc3RlKHBhcmVudE5vZGU6IEFYUFdpZGdldE5vZGUgPSB0aGlzLnNlbGVjdGVkTm9kZSgpID8/IHRoaXMuY3VycmVudFBhZ2UoKSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5jbGlwYm9hcmQoKSB8fCAhdGhpcy5zZWxlY3RlZE5vZGUoKSkge1xuICAgICAgY29uc29sZS5lcnJvcignQ2xpcGJvYXJkIGlzIGVtcHR5IG9yIG5vIG5vZGUgaXMgc2VsZWN0ZWQuJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IG5ld05vZGUgPSBjbG9uZURlZXAodGhpcy5jbGlwYm9hcmQoKSkhO1xuICAgIGNvbnN0IG5lYXJlc3RDb250YWluZXIgPSB0aGlzLmZpbmROZWFyZXN0Q29udGFpbmVyKHBhcmVudE5vZGUsIHRydWUpO1xuICAgIGlmICghbmVhcmVzdENvbnRhaW5lcikge1xuICAgICAgY29uc29sZS5lcnJvcignTm8gc3VpdGFibGUgY29udGFpbmVyIGZvdW5kLicpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAvL1xuICAgIGlmICghbmVhcmVzdENvbnRhaW5lci5jaGlsZHJlbikge1xuICAgICAgbmVhcmVzdENvbnRhaW5lci5jaGlsZHJlbiA9IFtdO1xuICAgIH1cbiAgICAvL1xuICAgIGNvbnN0IHNldE5hbWVJZCA9IChub2RlOiBBWFBXaWRnZXROb2RlKSA9PiB7XG4gICAgICBzZXQobm9kZSwgJ25hbWUnLCB0aGlzLmdlbmVyYXRlVW5pcXVlTmFtZShub2RlLnR5cGUpKTtcbiAgICAgIHNldChub2RlLCAnX19tZXRhX18uaWQnLCB0aGlzLmdlbmVyYXRlVW5pcXVlSWQoKSk7XG4gICAgICBub2RlLmNoaWxkcmVuPy5mb3JFYWNoKChuKSA9PiB7XG4gICAgICAgIHNldE5hbWVJZChuKTtcbiAgICAgIH0pO1xuICAgIH07XG4gICAgc2V0TmFtZUlkKG5ld05vZGUpO1xuICAgIC8vXG4gICAgdGhpcy5jb21tYW5kTWFuYWdlci5leGVjdXRlQ29tbWFuZChuZXcgQWRkV2lkZ2V0Q29tbWFuZChuZXdOb2RlLCBuZWFyZXN0Q29udGFpbmVyLCBuZWFyZXN0Q29udGFpbmVyKSk7XG4gICAgLy9cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMucmVmcmVzaCh7IHdpZGdldDogbmVhcmVzdENvbnRhaW5lciB9KTsgLy8gUmVmcmVzaCB0aGUgVUlcbiAgICAgIHRoaXMuc2VsZWN0KHsgd2lkZ2V0OiBuZXdOb2RlIH0pOyAvLyBTZWxlY3QgdGhlIG5ld2x5IHBhc3RlZCBub2RlXG4gICAgfSk7XG4gIH1cblxuICBleHBvcnQoKTogc3RyaW5nIHtcbiAgICBjb25zdCBqc29uID0gdGhpcy5yZW1vdmVNZXRhUHJvcCh0aGlzLmRvY3VtZW50KCkpO1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShqc29uKTtcbiAgfVxuXG4gIGRvd25sb2FkSnNvbigpIHtcbiAgICAvLyBDb252ZXJ0IHRoZSBvYmplY3QgdG8gYSBKU09OIHN0cmluZ1xuICAgIGNvbnN0IGpzb25TdHIgPSB0aGlzLmV4cG9ydCgpO1xuXG4gICAgLy8gQ3JlYXRlIGEgYmxvYiBvYmplY3QgZnJvbSB0aGUgSlNPTiBzdHJpbmdcbiAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW2pzb25TdHJdLCB7IHR5cGU6ICdhcHBsaWNhdGlvbi9qc29uJyB9KTtcblxuICAgIC8vIENyZWF0ZSBhIFVSTCBmb3IgdGhlIGJsb2Igb2JqZWN0XG4gICAgY29uc3QgdXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcblxuICAgIC8vIENyZWF0ZSBhIHRlbXBvcmFyeSA8YT4gZWxlbWVudCB0byB0cmlnZ2VyIHRoZSBkb3dubG9hZFxuICAgIGNvbnN0IGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgYS5ocmVmID0gdXJsO1xuICAgIGEuZG93bmxvYWQgPSAnZXhwb3J0Lmpzb24nO1xuXG4gICAgLy8gQXBwZW5kIHRoZSA8YT4gZWxlbWVudCB0byB0aGUgZG9jdW1lbnQgYm9keSAobmVjZXNzYXJ5IGZvciBzb21lIGJyb3dzZXJzKVxuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoYSk7XG5cbiAgICAvLyBUcmlnZ2VyIHRoZSBkb3dubG9hZCBieSBjbGlja2luZyB0aGUgPGE+IGVsZW1lbnRcbiAgICBhLmNsaWNrKCk7XG4gICAgLy8gQ2xlYW4gdXAgYnkgcmV2b2tpbmcgdGhlIG9iamVjdCBVUkwgYW5kIHJlbW92aW5nIHRoZSA8YT4gZWxlbWVudFxuICAgIFVSTC5yZXZva2VPYmplY3RVUkwodXJsKTtcbiAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGEpO1xuICB9XG5cbiAgYXN5bmMgaW1wb3J0SlNvbigpIHtcbiAgICBjb25zdCBmaWxlcyA9IGF3YWl0IHRoaXMuZmlsZVNlcnZpY2UuY2hvb3NlKHsgbXVsdGlwbGU6IGZhbHNlLCBhY2NlcHQ6ICdhcHBsaWNhdGlvbi9qc29uJyB9KTtcbiAgICBpZiAoZmlsZXMgJiYgZmlsZXMubGVuZ3RoKSB7XG4gICAgICBjb25zdCBmaWxlID0gZmlsZXNbMF07XG4gICAgICBjb25zdCBjb250ZW50ID0gYXdhaXQgZmlsZS50ZXh0KCk7XG4gICAgICBjb25zdCByb290Tm9kZSA9IEpTT04ucGFyc2UoY29udGVudCkgYXMgQVhQV2lkZ2V0Tm9kZTtcbiAgICAgIGNvbnN0IHRvdGFsTm9kZSA9IHRoaXMuY291bnRUb3RhbE5vZGVzKHJvb3ROb2RlKTtcbiAgICAgIGNvbnN0IHByb2Nlc3NlZE5vZGVzID0geyBjb3VudDogMCB9O1xuXG4gICAgICBjb25zdCBidXR0b246IEFYTG9hZGluZ0RpYWxvZ0J1dHRvbkl0ZW0gPSB7XG4gICAgICAgIHRleHQ6ICdDYW5jZWwnLFxuICAgICAgICBhdXRvZm9jdXM6IHRydWUsXG4gICAgICAgIGNvbG9yOiAncHJpbWFyeScsXG4gICAgICAgIG9uQ2xpY2s6IChlKSA9PiB7XG4gICAgICAgICAgZGlhbG9nLmNsb3NlKCk7XG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgICAgY29uc3QgZGlhbG9nID0gdGhpcy5sb2FkaW5nU2VydmljZS5zaG93KHtcbiAgICAgICAgbW9kZTogJ2RldGVybWluYXRlJyxcbiAgICAgICAgdGl0bGU6ICdJbXBvcnQgSnNvbiBGaWxlJyxcbiAgICAgICAgcHJvZ3Jlc3NDb2xvcjogJ3ByaW1hcnknLFxuICAgICAgICB0ZXh0OiAnUHJvY2Vzc2luZyBqc29uIGZpbGUnLFxuICAgICAgICBzdGF0dXM6IGAwIG9mICR7dG90YWxOb2RlfWAsXG4gICAgICAgIGJ1dHRvbnM6IFtidXR0b25dLFxuICAgICAgfSk7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJvb3QgPSBhd2FpdCB0aGlzLmFkZE1ldGFUb05vZGVzKHJvb3ROb2RlLCBwcm9jZXNzZWROb2RlcywgKGNvdW50KSA9PiB7XG4gICAgICAgICAgZGlhbG9nLnNldFByb2dyZXNzVmFsdWUoTWF0aC5jZWlsKChjb3VudCAvIHRvdGFsTm9kZSkgKiAxMDApKTtcbiAgICAgICAgICBkaWFsb2cuc2V0UHJvZ3Jlc3NTdGF0dXMoYCR7Y291bnR9IG9mICR7dG90YWxOb2RlfWApO1xuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgcGFnZSA9IHJvb3QuY2hpbGRyZW4/LlswXSE7XG4gICAgICAgIHRoaXMuZG9jdW1lbnQuc2V0KHJvb3QpO1xuICAgICAgICB0aGlzLmN1cnJlbnRQYWdlLnNldChwYWdlKTtcbiAgICAgICAgZGlhbG9nLnNldFByb2dyZXNzQ29sb3IoJ3N1Y2Nlc3MnKTtcbiAgICAgICAgZGlhbG9nLnNldFByb2dyZXNzVGV4dCgnSnNvbiBmaWxlIHByb2Nlc3NlZCBzdWNjZXNzZnVsbHknKTtcbiAgICAgICAgYnV0dG9uLnRleHQgPSAnT2theSc7XG4gICAgICAgIGJ1dHRvbi5jb2xvciA9ICdzdWNjZXNzJztcbiAgICAgICAgZGlhbG9nLnNldFByb2dyZXNzVmFsdWUoMTAwKTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5yZVJlbmRlclBhZ2UoKTtcbiAgICAgICAgICBkaWFsb2cuY2xvc2UoKTtcbiAgICAgICAgfSwgMTAwMCk7XG4gICAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgICAgIGRpYWxvZy5zZXRQcm9ncmVzc0NvbG9yKCdkYW5nZXInKTtcbiAgICAgICAgZGlhbG9nLnNldFByb2dyZXNzVGV4dChlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6ICdDYW5ub3QgcHJvY2VzcyBqc29uIGZpbGUnKTtcbiAgICAgICAgYnV0dG9uLnRleHQgPSAnQ2xvc2UnO1xuICAgICAgICBidXR0b24uY29sb3IgPSAnZGFuZ2VyJztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNvdW50VG90YWxOb2Rlcyhub2RlOiBBWFBXaWRnZXROb2RlKTogbnVtYmVyIHtcbiAgICBsZXQgY291bnQgPSAxOyAvLyBDb3VudCB0aGUgY3VycmVudCBub2RlXG4gICAgaWYgKG5vZGUuY2hpbGRyZW4gJiYgbm9kZS5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICBjb3VudCArPSBub2RlLmNoaWxkcmVuLnJlZHVjZSgoc3VtLCBjaGlsZCkgPT4gc3VtICsgdGhpcy5jb3VudFRvdGFsTm9kZXMoY2hpbGQpLCAwKTtcbiAgICB9XG4gICAgcmV0dXJuIGNvdW50O1xuICB9XG5cbiAgcHJpdmF0ZSBnZW5lcmF0ZVVuaXF1ZU5hbWUodHlwZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAvLyBOb3JtYWxpemUgdGhlIHR5cGUgdG8gZm9sbG93IGNhbWVsQ2FzZSBjb252ZW50aW9uXG4gICAgY29uc3QgYmFzZU5hbWUgPSB0eXBlLmNoYXJBdCgwKS50b0xvd2VyQ2FzZSgpICsgdHlwZS5zbGljZSgxKTtcbiAgICBsZXQgaW5kZXggPSAxO1xuICAgIGxldCB1bmlxdWVOYW1lID0gYCR7YmFzZU5hbWV9JHtpbmRleH1gO1xuXG4gICAgLy8gR2F0aGVyIGFsbCBleGlzdGluZyBuYW1lcyB0byBjaGVjayBhZ2FpbnN0XG4gICAgY29uc3QgZXhpc3RpbmdOYW1lcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgIHRoaXMuY29sbGVjdEFsbE5hbWVzKHRoaXMuZG9jdW1lbnQoKSwgZXhpc3RpbmdOYW1lcyk7XG5cbiAgICAvLyBJbmNyZW1lbnQgdGhlIGluZGV4IHVudGlsIGEgdW5pcXVlIG5hbWUgaXMgZm91bmRcbiAgICB3aGlsZSAoZXhpc3RpbmdOYW1lcy5oYXModW5pcXVlTmFtZSkpIHtcbiAgICAgIGluZGV4Kys7XG4gICAgICB1bmlxdWVOYW1lID0gYCR7YmFzZU5hbWV9JHtpbmRleH1gO1xuICAgIH1cblxuICAgIHJldHVybiB1bmlxdWVOYW1lO1xuICB9XG5cbiAgZ2VuZXJhdGVVbmlxdWVJZCgpOiBudW1iZXIge1xuICAgIHJldHVybiBNYXRoLnJhbmRvbSgpICogTWF0aC5wb3coMTAsIDE4KTtcbiAgfVxuXG4gIHByaXZhdGUgY29sbGVjdEFsbE5hbWVzKG5vZGU6IEFYUFdpZGdldE5vZGUsIG5hbWVzOiBTZXQ8c3RyaW5nPik6IHZvaWQge1xuICAgIGlmIChub2RlLm5hbWUpIHtcbiAgICAgIG5hbWVzLmFkZChub2RlLm5hbWUpO1xuICAgIH1cbiAgICBpZiAobm9kZS5jaGlsZHJlbikge1xuICAgICAgZm9yIChjb25zdCBjaGlsZCBvZiBub2RlLmNoaWxkcmVuKSB7XG4gICAgICAgIHRoaXMuY29sbGVjdEFsbE5hbWVzKGNoaWxkLCBuYW1lcyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFzeW5jIG9wZW5QcmV2aWV3KCkge1xuICAgIGNvbnN0IGNvbSA9IGF3YWl0IGltcG9ydCgnLi4vLi4vcHJldmlldy9wcmV2aWV3LmNvbXBvbmVudCcpLnRoZW4oKGMpID0+IGMuQVhQTGF5b3V0RGVzaWduZXJQcmV2aWV3Q29tcG9uZW50KTtcbiAgICBhd2FpdCB0aGlzLnBvcHVwU2VydmljZS5vcGVuKGNvbSwge1xuICAgICAgaGVhZGVyOiBmYWxzZSxcbiAgICAgIHNpemU6ICdmdWxsJyxcbiAgICAgIGNsb3NlQnV0dG9uOiB0cnVlLFxuICAgICAgZGF0YToge1xuICAgICAgICB3aWRnZXRzOiBzb3J0QnkoXG4gICAgICAgICAgdGhpcy53aWRnZXRSZWdpc3RlcnlTZXJ2aWNlLmFsbCgpLmZpbHRlcigoYykgPT4gYy52aXNpYmxlICE9IGZhbHNlKSxcbiAgICAgICAgICAoYykgPT4gYy50aXRsZVxuICAgICAgICApLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
507
|
+
}], ctorParameters: () => [] });
|
|
508
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzaWduZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vbGF5b3V0L2Rlc2lnbmVyL3NyYy9saWIvZGVzaWduZXIvc2hhcmVkL2Rlc2lnbmVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUE2QixzQkFBc0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3RHLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbEQsT0FBTyxFQUlMLHdCQUF3QixFQUN4QixpQkFBaUIsR0FDbEIsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGNBQWMsRUFBRSxtQkFBbUIsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN2RyxPQUFPLEVBQW1CLGdCQUFnQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7O0FBb0RyRSxNQUFNLE9BQU8sa0JBQWtCO0lBd0M3QjtRQXZDUSxpQkFBWSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN0QyxnQkFBVyxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNwQyxtQkFBYyxHQUFHLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBQ2hELDJCQUFzQixHQUFHLE1BQU0sQ0FBQyx3QkFBd0IsQ0FB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QUFJLEVBQUU7Z0JBQ3hCLGNBQWMsRUFBRSxJQUFJO2FBQ3JCO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLGlCQUFpQjtRQUN0QixNQUFNLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQzFDLENBQUM7OEdBdGpCVSxrQkFBa0I7a0hBQWxCLGtCQUFrQjs7MkZBQWxCLGtCQUFrQjtrQkFEOUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYTG9hZGluZ0RpYWxvZ0J1dHRvbkl0ZW0sIEFYTG9hZGluZ0RpYWxvZ1NlcnZpY2UgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvbG9hZGluZy1kaWFsb2cnO1xuaW1wb3J0IHsgQVhQb3B1cFNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvcG9wdXAnO1xuaW1wb3J0IHsgQVhGaWxlU2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29yZS9maWxlJztcbmltcG9ydCB7XG4gIEFYUFdpZGdldENvbXBvbmVudCxcbiAgQVhQV2lkZ2V0Q29uZmlnLFxuICBBWFBXaWRnZXROb2RlLFxuICBBWFBXaWRnZXRSZWdpc3RyeVNlcnZpY2UsXG4gIEFYUFdpZGdldHNDYXRhbG9nLFxufSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9idWlsZGVyJztcbmltcG9ydCB7IGNvbXB1dGVkLCBpbmplY3QsIEluamVjdGFibGUsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgY2xvbmVEZWVwLCBnZXQsIG1lcmdlLCBzZXQsIHNvcnRCeSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBZGRXaWRnZXRDb21tYW5kLCBDb21tYW5kTWFuYWdlciwgUmVtb3ZlV2lkZ2V0Q29tbWFuZCwgVXBkYXRlV2lkZ2V0Q29tbWFuZCB9IGZyb20gJy4vY29tbWFuZCc7XG5pbXBvcnQgeyBBWFBEZXNpZ25lck1vZGUsIEFYUERlc2lnbmVyTW9kZXMgfSBmcm9tICcuL2Rlc2lnbmVyLnR5cGVzJztcblxuZXhwb3J0IHR5cGUgQVhQRGVzaWduZXJQcmV2aWV3U2l6ZSA9ICdzbScgfCAnbWQnIHwgJ2xnJyB8ICd4bCcgfCAneHhsJztcblxuZXhwb3J0IGludGVyZmFjZSBBWFBEZXNpZ25lckZvY3VzQ29tbWFuZCB7XG4gIHdpZGdldDogQVhQV2lkZ2V0Tm9kZSB8IG51bGw7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQRGVzaWduZXJVcGRhdGVDb21tYW5kIHtcbiAgdmFsdWVzOiBhbnk7XG4gIHdpZGdldD86IEFYUFdpZGdldE5vZGUgfCBudWxsO1xuICBtb2RlOiAnaW5pdCcgfCAndXBkYXRlJztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgQVhQRGVzaWduZXJVcGRhdGVFdmVudCB7XG4gIHZhbHVlczogYW55O1xuICB3aWRnZXQ6IEFYUFdpZGdldE5vZGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQRGVzaWduZXJTZWxlY3RDb21tYW5kIHtcbiAgd2lkZ2V0OiBBWFBXaWRnZXROb2RlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYUERlc2lnbmVyUmVnaXN0ZXJDb21tYW5kIHtcbiAgaWQ6IG51bWJlcjtcbiAgd2lkZ2V0OiBBWFBXaWRnZXROb2RlO1xuICBjb25maWc6IEFYUFdpZGdldENvbmZpZztcbiAgaW5zdGFuY2U6IEFYUFdpZGdldENvbXBvbmVudDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBWFBEZXNpZ25lclNlbGVjdEV2ZW50IHtcbiAgd2lkZ2V0OiBBWFBXaWRnZXROb2RlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYUERlc2lnbmVyUmVmcmVzaENvbW1hbmQge1xuICB3aWRnZXQ6IEFYUFdpZGdldE5vZGU7XG59XG5leHBvcnQgaW50ZXJmYWNlIEFYUERlc2lnbmVyUmVmcmVzaEV2ZW50IHtcbiAgd2lkZ2V0OiBBWFBXaWRnZXROb2RlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYUERlc2lnbmVyQWRkTm9kZUNvbW1hbmQge1xuICB3aWRnZXQ6IEFYUFdpZGdldE5vZGU7XG59XG5leHBvcnQgaW50ZXJmYWNlIEFYUERlc2lnbmVyQWRkTm9kZUV2ZW50IHtcbiAgd2lkZ2V0OiBBWFBXaWRnZXROb2RlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYUERlc2lnbmVyRm9jdXNFdmVudCB7XG4gIHdpZGdldDogQVhQV2lkZ2V0Tm9kZSB8IG51bGw7XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBWFBEZXNpZ25lclNlcnZpY2Uge1xuICBwcml2YXRlIHBvcHVwU2VydmljZSA9IGluamVjdChBWFBvcHVwU2VydmljZSk7XG4gIHByaXZhdGUgZmlsZVNlcnZpY2UgPSBpbmplY3QoQVhGaWxlU2VydmljZSk7XG4gIHByaXZhdGUgbG9hZGluZ1NlcnZpY2UgPSBpbmplY3QoQVhMb2FkaW5nRGlhbG9nU2VydmljZSk7XG4gIHByaXZhdGUgd2lkZ2V0UmVnaXN0ZXJ5U2VydmljZSA9IGluamVjdChBWFBXaWRnZXRSZWdpc3RyeVNlcnZpY2UpO1xuXG4gIHByaXZhdGUgY2hhbm5lbCA9IG5ldyBCcm9hZGNhc3RDaGFubmVsKCdsaXZlUHJldmlld0NoYW5uZWwnKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgZG9jdW1lbnQgPSBzaWduYWwodGhpcy5jcmVhdGVEb2MoKSk7XG4gIHB1YmxpYyByZWFkb25seSBjdXJyZW50UGFnZUluZGV4ID0gc2lnbmFsKDApO1xuXG4gIHB1YmxpYyByZWFkb25seSBjdXJyZW50UGFnZSA9IHNpZ25hbCh0aGlzLmRvY3VtZW50KCkuY2hpbGRyZW4/LlswXSEpO1xuXG4gIHByaXZhdGUgY29tbWFuZE1hbmFnZXIgPSBpbmplY3QoQ29tbWFuZE1hbmFnZXIpO1xuXG4gIHByaXZhdGUgY2xpcGJvYXJkID0gc2lnbmFsPEFYUFdpZGdldE5vZGUgfCBudWxsPihudWxsKTtcbiAgcHVibGljIGNhbkN1dENvcHkgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnNlbGVjdGVkTm9kZSgpICE9IG51bGwgJiYgdGhpcy5zZWxlY3RlZE5vZGUoKT8ubmFtZSAhPSAncGFnZScpO1xuICBwdWJsaWMgY2FuUGFzdGUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmNsaXBib2FyZCgpICE9IG51bGwpO1xuXG4gIHB1YmxpYyByZWFkb25seSBoaXN0b3J5ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5jb21tYW5kTWFuYWdlci5oaXN0b3J5KCkpO1xuICBwdWJsaWMgcmVhZG9ubHkgY2FuVW5kbyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuY29tbWFuZE1hbmFnZXIuY2FuVW5kbygpKTtcbiAgcHVibGljIHJlYWRvbmx5IGNhblJlZG8gPSBjb21wdXRlZCgoKSA9PiB0aGlzLmNvbW1hbmRNYW5hZ2VyLmNhblJlZG8oKSk7XG5cbiAgcHVibGljIGJyZWFkY3J1bWJzID0gY29tcHV0ZWQ8QVhQV2lkZ2V0Tm9kZVtdPigoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWROb2RlKCkgPyB0aGlzLmZpbmRCcmVhZGNydW1icyh0aGlzLmN1cnJlbnRQYWdlKCksIHRoaXMuc2VsZWN0ZWROb2RlKCkhKSA/PyBbXSA6IFtdO1xuICB9KTtcblxuICBwdWJsaWMgc2VsZWN0ZWROb2RlID0gc2lnbmFsPEFYUFdpZGdldE5vZGUgfCBudWxsPihudWxsKTtcblxuICBwcml2YXRlIF9mb2N1c2VkTm9kZTogQVhQV2lkZ2V0Tm9kZSB8IG51bGwgPSBudWxsO1xuICBwdWJsaWMgZm9jdXNlZE5vZGUgPSAoKSA9PiB0aGlzLl9mb2N1c2VkTm9kZTtcblxuICBwdWJsaWMgcmVhZG9ubHkgbW9kZSA9IHNpZ25hbDxBWFBEZXNpZ25lck1vZGU+KEFYUERlc2lnbmVyTW9kZXMuRGVzaWduKTtcbiAgcHVibGljIHJlYWRvbmx5IHNpemUgPSBzaWduYWw8QVhQRGVzaWduZXJQcmV2aWV3U2l6ZT4oJ3hsJyk7XG5cbiAgcHVibGljIHJlYWRvbmx5IG9uU2VsZWN0ZWQgPSBuZXcgU3ViamVjdDxBWFBEZXNpZ25lclNlbGVjdEV2ZW50PigpO1xuICBwdWJsaWMgcmVhZG9ubHkgb25SZWZyZXNoID0gbmV3IFN1YmplY3Q8QVhQRGVzaWduZXJSZWZyZXNoRXZlbnQ+KCk7XG4gIHB1YmxpYyByZWFkb25seSBvblVwZGF0ZSA9IG5ldyBTdWJqZWN0PEFYUERlc2lnbmVyVXBkYXRlRXZlbnQ+KCk7XG4gIHB1YmxpYyByZWFkb25seSBvbkZvY3VzZWQgPSBuZXcgU3ViamVjdDxBWFBEZXNpZ25lckZvY3VzRXZlbnQ+KCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5jaGFubmVsLmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCB0aGlzLmNoYW5uZWxDYWxsYmFjayk7XG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXIoY29tbWFuZDogQVhQRGVzaWduZXJSZWdpc3RlckNvbW1hbmQpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdCh7IHdpZGdldDogY29tbWFuZC53aWRnZXQgfSk7XG4gIH1cblxuICBwdWJsaWMgc2VsZWN0KGNvbW1hbmQ6IEFYUERlc2lnbmVyU2VsZWN0Q29tbWFuZCk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWROb2RlLnNldChjb21tYW5kLndpZGdldCk7XG4gICAgdGhpcy5vblNlbGVjdGVkLm5leHQoY29tbWFuZCk7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlKGNvbW1hbmQ6IEFYUERlc2lnbmVyVXBkYXRlQ29tbWFuZCk6IHZvaWQge1xuICAgIGNvbnN0IG5vZGUgPSBjb21tYW5kLndpZGdldCA/PyB0aGlzLnNlbGVjdGVkTm9kZSgpO1xuXG4gICAgaWYgKGNvbW1hbmQubW9kZSA9PSAndXBkYXRlJyAmJiBub2RlKSB7XG4gICAgICB0aGlzLmNvbW1hbmRNYW5hZ2VyLmV4ZWN1dGVDb21tYW5kKG5ldyBVcGRhdGVXaWRnZXRDb21tYW5kKG5vZGUhLCBjb21tYW5kLnZhbHVlcywgbm9kZSEpKTtcbiAgICB9XG4gICAgdGhpcy5zZWxlY3RlZE5vZGUudXBkYXRlKChjKSA9PiBtZXJnZShub2RlLCBjb21tYW5kLnZhbHVlcykpO1xuICAgIHRoaXMub25VcGRhdGUubmV4dCh7IHdpZGdldDogbm9kZSEsIHZhbHVlczogY29tbWFuZC52YWx1ZXMgfSk7XG4gICAgdGhpcy51cGRhdGVQcmV2aWV3KCk7XG4gIH1cblxuICBwdWJsaWMgZm9jdXMoY29tbWFuZDogQVhQRGVzaWduZXJGb2N1c0NvbW1hbmQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fZm9jdXNlZE5vZGUgIT0gY29tbWFuZC53aWRnZXQpIHtcbiAgICAgIHRoaXMuX2ZvY3VzZWROb2RlID0gY29tbWFuZC53aWRnZXQ7XG4gICAgICB0aGlzLm9uRm9jdXNlZC5uZXh0KHsgd2lkZ2V0OiB0aGlzLl9mb2N1c2VkTm9kZSB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcmVmcmVzaChjb21tYW5kOiBBWFBEZXNpZ25lclJlZnJlc2hDb21tYW5kKSB7XG4gICAgdGhpcy5vblJlZnJlc2gubmV4dCh7IHdpZGdldDogY29tbWFuZC53aWRnZXQgfSk7XG4gICAgdGhpcy51cGRhdGVQcmV2aWV3KCk7XG4gIH1cblxuICBwcml2YXRlIGZpbmRCcmVhZGNydW1icyhcbiAgICBub2RlOiBBWFBXaWRnZXROb2RlLFxuICAgIHRhcmdldE5vZGU6IEFYUFdpZGdldE5vZGUsXG4gICAgYnJlYWRjcnVtYjogQVhQV2lkZ2V0Tm9kZVtdID0gW11cbiAgKTogQVhQV2lkZ2V0Tm9kZVtdIHwgdW5kZWZpbmVkIHtcbiAgICAvLyBBZGQgdGhlIGN1cnJlbnQgbm9kZSB0byB0aGUgYnJlYWRjcnVtYiBwYXRoXG4gICAgY29uc3QgY3VycmVudEJyZWFkY3J1bWIgPSBbLi4uYnJlYWRjcnVtYiwgbm9kZV07XG5cbiAgICAvLyBDaGVjayBpZiB0aGUgY3VycmVudCBub2RlIGlzIHRoZSB0YXJnZXQgbm9kZVxuICAgIGlmIChub2RlID09PSB0YXJnZXROb2RlKSB7XG4gICAgICByZXR1cm4gY3VycmVudEJyZWFkY3J1bWI7XG4gICAgfVxuXG4gICAgLy8gSWYgdGhlIG5vZGUgaGFzIGNoaWxkcmVuLCByZWN1cnNpdmVseSBzZWFyY2ggdGhlbVxuICAgIGlmIChub2RlLmNoaWxkcmVuKSB7XG4gICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIG5vZGUuY2hpbGRyZW4pIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5maW5kQnJlYWRjcnVtYnMoY2hpbGQsIHRhcmdldE5vZGUsIGN1cnJlbnRCcmVhZGNydW1iKTtcbiAgICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBSZXR1cm4gdW5kZWZpbmVkIGlmIG5vIG1hdGNoIGlzIGZvdW5kXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGFzeW5jIHNob3dQaWNrZXIoY3VycmVudE5vZGU6IEFYUFdpZGdldE5vZGUpOiBQcm9taXNlPEFYUFdpZGdldE5vZGVbXT4ge1xuICAgIGNvbnN0IGNvbSA9IGF3YWl0IGltcG9ydCgnLi4vY29tcG9uZW50cy93aWRnZXQtcGlja2VyL3dpZGdldC1waWNrZXIuY29tcG9uZW50JykudGhlbihcbiAgICAgIChjKSA9PiBjLkFYUERlc2lnbmVyV2lkZ2V0UGlja2VyQ29tcG9uZW50XG4gICAgKTtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnBvcHVwU2VydmljZS5vcGVuKGNvbSwge1xuICAgICAgdGl0bGU6ICdXaWRnZXQgR2FsbGVyeScsXG4gICAgICBzaXplOiAnbWQnLFxuICAgICAgY2xvc2VCdXR0b246IHRydWUsXG4gICAgICBkYXRhOiB7XG4gICAgICAgIHdpZGdldHM6IHNvcnRCeShcbiAgICAgICAgICB0aGlzLndpZGdldFJlZ2lzdGVyeVNlcnZpY2UuYWxsKCkuZmlsdGVyKChjKSA9PiBjLnZpc2libGUgIT0gZmFsc2UpLFxuICAgICAgICAgIChjKSA9PiBjLnRpdGxlXG4gICAgICAgICksXG4gICAgICB9LFxuICAgIH0pO1xuICAgIGNvbnN0IHdpZGdldHM6IEFYUFdpZGdldE5vZGVbXSA9IFtdO1xuICAgIGlmICgocmVzdWx0LmRhdGE/LndpZGdldHMgPz8gW10pLmxlbmd0aCkge1xuICAgICAgY29uc3Qgc2VsZWN0ZWQgPSByZXN1bHQuZGF0YT8ud2lkZ2V0cyBhcyBBWFBXaWRnZXRDb25maWdbXTtcbiAgICAgIHNlbGVjdGVkLmZvckVhY2goKGMpID0+IHtcbiAgICAgICAgd2lkZ2V0cy5wdXNoKHRoaXMuYWRkV2lkZ2V0KGN1cnJlbnROb2RlLCB7IHR5cGU6IGMubmFtZSB9KSEpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiB3aWRnZXRzO1xuICB9XG5cbiAgcHVibGljIG5ldygpIHtcbiAgICB0aGlzLmNvbW1hbmRNYW5hZ2VyLmNsZWFyKCk7XG4gICAgdGhpcy5kb2N1bWVudC5zZXQodGhpcy5jcmVhdGVEb2MoKSk7XG4gICAgdGhpcy5jdXJyZW50UGFnZS5zZXQodGhpcy5kb2N1bWVudCgpLmNoaWxkcmVuPy5bMF0hKTtcbiAgICB0aGlzLnJlUmVuZGVyUGFnZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVEb2MoKTogQVhQV2lkZ2V0Tm9kZSB7XG4gICAgY29uc3QgZG9jOiBBWFBXaWRnZXROb2RlID0ge1xuICAgICAgdHlwZTogQVhQV2lkZ2V0c0NhdGFsb2cuZG9jdW1lbnQsXG4gICAgICBjaGlsZHJlbjogW3RoaXMuY3JlYXRlUGFnZSgpXSxcbiAgICAgIG5hbWU6ICdkb2N1bWVudCcsXG4gICAgfTtcbiAgICBzZXQoZG9jLCAnX19tZXRhX18uaWQnLCB0aGlzLmdlbmVyYXRlVW5pcXVlSWQoKSk7XG4gICAgcmV0dXJuIGRvYztcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlUGFnZSgpOiBBWFBXaWRnZXROb2RlIHtcbiAgICBjb25zdCBjb25maWcgPSB0aGlzLndpZGdldFJlZ2lzdGVyeVNlcnZpY2UucmVzb2x2ZSgncGFnZS1sYXlvdXQnKTtcblxuICAgIGNvbnN0IHBhZ2U6IEFYUFdpZGdldE5vZGUgPSB7XG4gICAgICB0eXBlOiAncGFnZS1sYXlvdXQnLFxuICAgICAgY2hpbGRyZW46IFtdLFxuICAgICAgbmFtZTogJ3BhZ2UtbGF5b3V0MScsXG4gICAgfTtcblxuICAgIHNldChwYWdlLCAnX19tZXRhX18uaWQnLCB0aGlzLmdlbmVyYXRlVW5pcXVlSWQoKSk7XG4gICAgc2V0KHBhZ2UsICdfX21ldGFfXy5jb25maWcnLCBjb25maWcpO1xuICAgIHJldHVybiBwYWdlO1xuICB9XG5cbiAgcHVibGljIGFkZE5ld1BhZ2UoKSB7XG4gICAgdGhpcy5hZGRXaWRnZXQodGhpcy5kb2N1bWVudCgpLCB0aGlzLmNyZWF0ZVBhZ2UoKSk7XG4gICAgdGhpcy5nb1RvUGFnZSh0aGlzLmN1cnJlbnRQYWdlSW5kZXgoKSArIDEpO1xuICB9XG5cbiAgcHVibGljIHJlbW92ZVBhZ2UoaW5kZXg6IG51bWJlcikge1xuICAgIGNvbnN0IHBhZ2UgPSB0aGlzLmRvY3VtZW50KCkuY2hpbGRyZW4/LltpbmRleF0hO1xuICAgIHRoaXMucmVtb3ZlV2lkZ2V0KHBhZ2UpO1xuICAgIHRoaXMuZ29Ub1BhZ2UoaW5kZXggLSAxKTtcbiAgfVxuXG4gIHB1YmxpYyBjbG9uZVBhZ2UoaW5kZXg6IG51bWJlcikge1xuICAgIGNvbnN0IHBhZ2UgPSB0aGlzLmRvY3VtZW50KCkuY2hpbGRyZW4/LltpbmRleF0hO1xuICAgIHRoaXMuY2xvbmUocGFnZSk7XG4gICAgdGhpcy5nb1RvUGFnZSgodGhpcy5kb2N1bWVudCgpLmNoaWxkcmVuPy5sZW5ndGggPz8gMSkgLSAxKTtcbiAgfVxuXG4gIHB1YmxpYyBnb1RvUGFnZShpbmRleDogbnVtYmVyKSB7XG4gICAgdGhpcy5jdXJyZW50UGFnZUluZGV4LnNldChpbmRleCk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmN1cnJlbnRQYWdlLnNldCh0aGlzLmRvY3VtZW50KCkuY2hpbGRyZW4/Llt0aGlzLmN1cnJlbnRQYWdlSW5kZXgoKV0hKTtcbiAgICAgIHRoaXMuc2VsZWN0KHsgd2lkZ2V0OiB0aGlzLmN1cnJlbnRQYWdlKCkgfSk7XG4gICAgICB0aGlzLnVwZGF0ZVByZXZpZXcoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVSZW5kZXJQYWdlKCkge1xuICAgIHRoaXMuY3VycmVudFBhZ2Uuc2V0KHsgLi4udGhpcy5jdXJyZW50UGFnZSgpIH0pO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5yZWZyZXNoKHsgd2lkZ2V0OiB0aGlzLmN1cnJlbnRQYWdlKCkgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZmluZFdpZGdldEJ5SWQocm9vdDogQVhQV2lkZ2V0Tm9kZSwgaWQ6IHN0cmluZyk6IEFYUFdpZGdldE5vZGUgfCBudWxsIHtcbiAgICBpZiAoZ2V0KHJvb3QsICdfX21ldGFfXy5pZCcpID09PSBpZCkge1xuICAgICAgcmV0dXJuIHJvb3Q7IC8vIFJldHVybiB0aGUgcm9vdCBpZiBpdCBtYXRjaGVzIHRoZSBJRFxuICAgIH1cbiAgICBpZiAoIXJvb3QuY2hpbGRyZW4pIHJldHVybiBudWxsO1xuXG4gICAgZm9yIChjb25zdCBjaGlsZCBvZiByb290LmNoaWxkcmVuKSB7XG4gICAgICBjb25zdCBmb3VuZCA9IHRoaXMuZmluZFdpZGdldEJ5SWQoY2hpbGQsIGlkKTtcbiAgICAgIGlmIChmb3VuZCkge1xuICAgICAgICByZXR1cm4gZm91bmQ7IC8vIFJldHVybiB0aGUgZm91bmQgY2hpbGRcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDsgLy8gTm9kZSBub3QgZm91bmRcbiAgfVxuXG4gIHByaXZhdGUgZmluZFBhcmVudChpZDogc3RyaW5nLCBwYXJlbnQ6IEFYUFdpZGdldE5vZGUgPSB0aGlzLmN1cnJlbnRQYWdlKCkpOiBBWFBXaWRnZXROb2RlIHwgbnVsbCB7XG4gICAgaWYgKCFwYXJlbnQuY2hpbGRyZW4pIHJldHVybiBudWxsO1xuXG4gICAgaWYgKHBhcmVudC5jaGlsZHJlbi5zb21lKChjaGlsZCkgPT4gZ2V0KGNoaWxkLCAnX19tZXRhX18uaWQnKSA9PT0gaWQpKSB7XG4gICAgICByZXR1cm4gcGFyZW50OyAvLyBSZXR1cm4gdGhpcyBub2RlIGFzIGl0J3MgdGhlIHBhcmVudCBvZiB0aGUgbm9kZSB3aXRoIHRoZSBnaXZlbiBJRFxuICAgIH1cblxuICAgIGZvciAoY29uc3QgY2hpbGQgb2YgcGFyZW50LmNoaWxkcmVuKSB7XG4gICAgICBjb25zdCBmb3VuZFBhcmVudCA9IHRoaXMuZmluZFBhcmVudChpZCwgY2hpbGQpO1xuICAgICAgaWYgKGZvdW5kUGFyZW50KSByZXR1cm4gZm91bmRQYXJlbnQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7IC8vIE5vIHBhcmVudCBmb3VuZFxuICB9XG5cbiAgcHJpdmF0ZSBmaW5kTmVhcmVzdENvbnRhaW5lcihub2RlOiBBWFBXaWRnZXROb2RlLCBzZWFyY2hVcHdhcmQ6IGJvb2xlYW4gPSB0cnVlKTogQVhQV2lkZ2V0Tm9kZSB8IG51bGwge1xuICAgIGlmIChzZWFyY2hVcHdhcmQpIHtcbiAgICAgIGxldCBjdXJyZW50OiBBWFBXaWRnZXROb2RlIHwgbnVsbCA9IG5vZGU7XG4gICAgICB3aGlsZSAoY3VycmVudCkge1xuICAgICAgICBjb25zdCBjb25maWcgPSB0aGlzLndpZGdldFJlZ2lzdGVyeVNlcnZpY2UucmVzb2x2ZShjdXJyZW50LnR5cGUpO1xuICAgICAgICBpZiAoY29uZmlnICYmIGNvbmZpZy50eXBlID09ICdjb250YWluZXInKSB7XG4gICAgICAgICAgcmV0dXJuIGN1cnJlbnQ7XG4gICAgICAgIH1cbiAgICAgICAgY3VycmVudCA9IHRoaXMuZmluZFBhcmVudChnZXQoY3VycmVudCwgJ19fbWV0YV9fLmlkJykhKTsgLy8gVXNlIGZpbmRQYXJlbnQgdG8gbmF2aWdhdGUgdXB3YXJkc1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBSZWN1cnNpdmUgc2VhcmNoIHRvIGZpbmQgdGhlIGZpcnN0IGNvbnRhaW5lciBhbW9uZyBjaGlsZHJlblxuICAgICAgaWYgKG5vZGUuY2hpbGRyZW4pIHtcbiAgICAgICAgZm9yIChjb25zdCBjaGlsZCBvZiBub2RlLmNoaWxkcmVuKSB7XG4gICAgICAgICAgY29uc3QgY29uZmlnID0gdGhpcy53aWRnZXRSZWdpc3RlcnlTZXJ2aWNlLnJlc29sdmUoY2hpbGQudHlwZSk7XG4gICAgICAgICAgaWYgKGNvbmZpZyAmJiBjb25maWcudHlwZSA9PSAnY29udGFpbmVyJykge1xuICAgICAgICAgICAgcmV0dXJuIGNoaWxkO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBmb3VuZENvbnRhaW5lciA9IHRoaXMuZmluZE5lYXJlc3RDb250YWluZXIoY2hpbGQsIGZhbHNlKTsgLy8gQ29udGludWUgc2VhcmNoaW5nIGRvd253YXJkc1xuICAgICAgICAgIGlmIChmb3VuZENvbnRhaW5lcikgcmV0dXJuIGZvdW5kQ29udGFpbmVyO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsOyAvLyBSZXR1cm4gbnVsbCBpZiBubyBjb250YWluZXIgZm91bmRcbiAgfVxuXG4gIGFkZFdpZGdldChjdXJyZW50Tm9kZTogQVhQV2lkZ2V0Tm9kZSwgbm9kZTogQVhQV2lkZ2V0Tm9kZSk6IEFYUFdpZGdldE5vZGUge1xuICAgIC8vXG4gICAgY29uc3QgY2xvbmVkID0gY2xvbmVEZWVwKG5vZGUpO1xuICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMud2lkZ2V0UmVnaXN0ZXJ5U2VydmljZS5yZXNvbHZlKG5vZGUudHlwZSk7XG5cbiAgICAvL1xuICAgIHRoaXMuY29tbWFuZE1hbmFnZXIuZXhlY3V0ZUNvbW1hbmQobmV3IEFkZFdpZGdldENvbW1hbmQoY2xvbmVkLCBjdXJyZW50Tm9kZSwgY3VycmVudE5vZGUpKTtcbiAgICAvL1xuICAgIGNsb25lZC5uYW1lID0gdGhpcy5nZW5lcmF0ZVVuaXF1ZU5hbWUobm9kZS50eXBlKTtcbiAgICBzZXQoY2xvbmVkLCAnX19tZXRhX18uaWQnLCB0aGlzLmdlbmVyYXRlVW5pcXVlSWQoKSk7XG4gICAgc2V0KGNsb25lZCwgJ19fbWV0YV9fLmNvbmZpZycsIGNvbmZpZyk7XG4gICAgLy9cbiAgICB0aGlzLnJlUmVuZGVyUGFnZSgpO1xuICAgIC8vXG4gICAgdGhpcy5yZWZyZXNoKHsgd2lkZ2V0OiBjdXJyZW50Tm9kZSB9KTtcbiAgICB0aGlzLnNlbGVjdCh7IHdpZGdldDogY2xvbmVkIH0pO1xuICAgIHJldHVybiBjbG9uZWQ7XG4gIH1cblxuICBwdWJsaWMgcmVtb3ZlV2lkZ2V0KG5vZGU6IEFYUFdpZGdldE5vZGUpOiB2b2lkIHtcbiAgICBpZiAoXG4gICAgICBub2RlLnR5cGUgPT09ICdkb2N1bWVudC1sYXlvdXQnIHx8XG4gICAgICAobm9kZS50eXBlID09PSAncGFnZS1sYXlvdXQnICYmICh0aGlzLmRvY3VtZW50KCkuY2hpbGRyZW4/Lmxlbmd0aCA/PyAxKSA9PSAxKVxuICAgICkge1xuICAgICAgY29uc29sZS5lcnJvcignQ2Fubm90IHJlbW92ZSB0aGUgcGFnZSBub2RlLicpO1xuICAgICAgcmV0dXJuOyAvLyBQcmV2ZW50IHJlbW92aW5nIHRoZSByb290IHBhZ2Ugbm9kZSBvciBkb2N1bWVudFxuICAgIH1cblxuICAgIGNvbnN0IG5vZGVJZFRvUmVtb3ZlID0gZ2V0KG5vZGUsICdfX21ldGFfXy5pZCcpO1xuICAgIGlmICghbm9kZUlkVG9SZW1vdmUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm9kZSBkb2VzIG5vdCBoYXZlIGEgdmFsaWQgX19tZXRhX18uaWQgdG8gaWRlbnRpZnkgaXQgZm9yIHJlbW92YWwuJyk7XG4gICAgfVxuXG4gICAgLy8gRmluZCB0aGUgcGFyZW50IG9mIHRoZSBub2RlIHRvIHJlbW92ZSBpdFxuICAgIGNvbnN0IHBhcmVudCA9IHRoaXMuZmluZFBhcmVudChub2RlSWRUb1JlbW92ZSwgdGhpcy5kb2N1bWVudCgpKTtcbiAgICBpZiAoIXBhcmVudCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdQYXJlbnQgbm9kZSBub3QgZm91bmQuIFRoZSBub2RlIG1pZ2h0IGJlIHRoZSByb290IG5vZGUgb3IgZG9lcyBub3QgZXhpc3QuJyk7XG4gICAgfVxuXG4gICAgY29uc3QgcHJldmlvdXNTZWxlY3Rpb24gPSB0aGlzLnNlbGVjdGVkTm9kZSgpOyAvLyBDYXB0dXJlIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgbm9kZSBiZWZvcmUgcmVtb3ZhbFxuICAgIGNvbnN0IGNvbW1hbmQgPSBuZXcgUmVtb3ZlV2lkZ2V0Q29tbWFuZChub2RlLCBwYXJlbnQsIHByZXZpb3VzU2VsZWN0aW9uISk7XG4gICAgdGhpcy5jb21tYW5kTWFuYWdlci5leGVjdXRlQ29tbWFuZChjb21tYW5kKTtcblxuICAgIHRoaXMucmVmcmVzaCh7IHdpZGdldDogcGFyZW50IH0pOyAvLyBSZWZyZXNoIHRoZSBVSSB0byByZWZsZWN0IGNoYW5nZXNcbiAgICB0aGlzLnNlbGVjdCh7IHdpZGdldDogcGFyZW50IH0pOyAvLyBTZWxlY3QgdGhlIHBhcmVudCBub2RlIGFmdGVyIHJlbW92YWxcbiAgfVxuXG4gIG5hdmlnYXRlVG8oaW5kZXg6IG51bWJlcikge1xuICAgIHRoaXMuY29tbWFuZE1hbmFnZXIuZ29Ub0NvbW1hbmQoaW5kZXgpO1xuICAgIHRoaXMucmVSZW5kZXJQYWdlKCk7XG4gICAgY29uc3QgY3VycmVudFNlbGVjdGlvbiA9IHRoaXMuY29tbWFuZE1hbmFnZXIuc2VsZWN0ZWROb2RlKCk7XG4gICAgdGhpcy5yZWZyZXNoKHsgd2lkZ2V0OiB0aGlzLmN1cnJlbnRQYWdlKCkgfSk7XG4gICAgdGhpcy5zZWxlY3QoeyB3aWRnZXQ6IGN1cnJlbnRTZWxlY3Rpb24hIH0pO1xuICB9XG5cbiAgcHVibGljIHJlZG8oKSB7XG4gICAgdGhpcy5jb21tYW5kTWFuYWdlci5yZWRvKCk7XG4gICAgdGhpcy5yZVJlbmRlclBhZ2UoKTtcbiAgICBjb25zdCBjdXJyZW50U2VsZWN0aW9uID0gdGhpcy5jb21tYW5kTWFuYWdlci5zZWxlY3RlZE5vZGUoKTtcbiAgICB0aGlzLnJlZnJlc2goeyB3aWRnZXQ6IHRoaXMuY3VycmVudFBhZ2UoKSB9KTtcbiAgICB0aGlzLnNlbGVjdCh7IHdpZGdldDogY3VycmVudFNlbGVjdGlvbiEgfSk7XG4gIH1cblxuICBwdWJsaWMgdW5kbygpIHtcbiAgICB0aGlzLmNvbW1hbmRNYW5hZ2VyLnVuZG8oKTtcbiAgICB0aGlzLnJlUmVuZGVyUGFnZSgpO1xuICAgIGNvbnN0IGN1cnJlbnRTZWxlY3Rpb24gPSB0aGlzLmNvbW1hbmRNYW5hZ2VyLnNlbGVjdGVkTm9kZSgpO1xuICAgIHRoaXMucmVmcmVzaCh7IHdpZGdldDogdGhpcy5jdXJyZW50UGFnZSgpIH0pO1xuICAgIHRoaXMuc2VsZWN0KHsgd2lkZ2V0OiBjdXJyZW50U2VsZWN0aW9uISB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjbGVhckhpc3RvcnkoKSB7XG4gICAgdGhpcy5jb21tYW5kTWFuYWdlci5jbGVhcigpO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVNZXRhUHJvcChvYmo6IGFueSk6IGFueSB7XG4gICAgY29uc3Qgbm9kZU5hbWUgPSAnX19tZXRhX18nO1xuICAgIC8vIENoZWNrIGlmIHRoZSBvYmplY3QgaXMgYW4gYXJyYXlcbiAgICBpZiAoQXJyYXkuaXNBcnJheShvYmopKSB7XG4gICAgICByZXR1cm4gb2JqLm1hcCgoaXRlbSkgPT4gdGhpcy5yZW1vdmVNZXRhUHJvcChpdGVtKSk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2Ygb2JqID09PSAnb2JqZWN0JyAmJiBvYmogIT09IG51bGwpIHtcbiAgICAgIC8vIENyZWF0ZSBhIG5ldyBvYmplY3QgdG8gc3RvcmUgdGhlIHJlc3VsdFxuICAgICAgbGV0IG5ld09iajogYW55ID0ge307XG4gICAgICBmb3IgKGxldCBrZXkgaW4gb2JqKSB7XG4gICAgICAgIC8vIE9ubHkgYWRkIHRoZSBrZXkgaWYgaXQncyBub3QgdGhlIG5vZGVOYW1lIHdlIHdhbnQgdG8gcmVtb3ZlXG4gICAgICAgIGlmIChrZXkgIT09IG5vZGVOYW1lKSB7XG4gICAgICAgICAgbmV3T2JqW2tleV0gPSB0aGlzLnJlbW92ZU1ldGFQcm9wKG9ialtrZXldKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIG5ld09iajtcbiAgICB9XG4gICAgLy8gSWYgdGhlIHZhbHVlIGlzIG5vdCBhbiBvYmplY3Qgb3IgYXJyYXksIHJldHVybiBpdCBhcyBpc1xuICAgIHJldHVybiBvYmo7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGFkZE1ldGFUb05vZGVzKFxuICAgIG5vZGU6IEFYUFdpZGdldE5vZGUsXG4gICAgcHJvY2Vzc2VkTm9kZXM6IHsgY291bnQ6IG51bWJlciB9LFxuICAgIHByb2dyZXNzQ2FsbGJhY2s6IChwcm9jZXNzZWQ6IG51bWJlcikgPT4gdm9pZFxuICApOiBQcm9taXNlPEFYUFdpZGdldE5vZGU+IHtcbiAgICAvLyBBcHBseSB5b3VyIG1ldGEgbG9naWMgaGVyZVxuICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMud2lkZ2V0UmVnaXN0ZXJ5U2VydmljZS5yZXNvbHZlKG5vZGUudHlwZSk7XG4gICAgLy9cbiAgICBzZXQobm9kZSwgJ19fbWV0YV9fLmlkJywgdGhpcy5nZW5lcmF0ZVVuaXF1ZUlkKCkpO1xuICAgIHNldChub2RlLCAnX19tZXRhX18uY29uZmlnJywgY29uZmlnKTtcbiAgICAvL1xuICAgIC8vIEluY3JlbWVudCB0aGUgcHJvY2Vzc2VkIG5vZGUgY291bnQgYW5kIHVwZGF0ZSB0aGUgcHJvZ3Jlc3MgZGlhbG9nXG4gICAgcHJvY2Vzc2VkTm9kZXMuY291bnQrKztcbiAgICBwcm9ncmVzc0NhbGxiYWNrKHByb2Nlc3NlZE5vZGVzLmNvdW50KTtcbiAgICAvLyBSZWN1cnNpdmVseSBwcm9jZXNzIGNoaWxkIG5vZGVzIHVzaW5nIFByb21pc2UuYWxsXG4gICAgaWYgKG5vZGUuY2hpbGRyZW4gJiYgbm9kZS5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICBub2RlLmNoaWxkcmVuID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgIG5vZGUuY2hpbGRyZW4ubWFwKGFzeW5jIChjaGlsZCkgPT4gYXdhaXQgdGhpcy5hZGRNZXRhVG9Ob2RlcyhjaGlsZCwgcHJvY2Vzc2VkTm9kZXMsIHByb2dyZXNzQ2FsbGJhY2spKVxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cblxuICBwdWJsaWMgY29weSh3aWRnZXQ6IEFYUFdpZGdldE5vZGUgfCBudWxsID0gdGhpcy5zZWxlY3RlZE5vZGUoKSk6IHZvaWQge1xuICAgIGlmICghd2lkZ2V0KSByZXR1cm47XG4gICAgdGhpcy5jbGlwYm9hcmQuc2V0KGNsb25lRGVlcCh3aWRnZXQpKTsgLy8gVXNlIGxvZGFzaCdzIGNsb25lRGVlcCB0byBlbnN1cmUgYSBkZWVwIGNvcHlcbiAgfVxuXG4gIHB1YmxpYyBjdXQod2lkZ2V0OiBBWFBXaWRnZXROb2RlIHwgbnVsbCA9IHRoaXMuc2VsZWN0ZWROb2RlKCkpOiB2b2lkIHtcbiAgICBpZiAoIXdpZGdldCkgcmV0dXJuO1xuICAgIHRoaXMuY29weSh3aWRnZXQpOyAvLyBDb3B5IHRoZSB3aWRnZXQgdG8gdGhlIGNsaXBib2FyZFxuICAgIHRoaXMucmVtb3ZlV2lkZ2V0KHdpZGdldCk7IC8vIFJldXNlIHRoZSByZW1vdmVXaWRnZXQgbWV0aG9kIHdoaWNoIHNob3VsZCBoYW5kbGUgdW5kbyBpbnRlcm5hbGx5XG4gIH1cblxuICBwdWJsaWMgY2xvbmUod2lkZ2V0OiBBWFBXaWRnZXROb2RlIHwgbnVsbCA9IHRoaXMuc2VsZWN0ZWROb2RlKCkpOiB2b2lkIHtcbiAgICBpZiAoIXdpZGdldCkgcmV0dXJuO1xuICAgIHRoaXMuY29weSh3aWRnZXQpOyAvLyBDb3B5IHRoZSB3aWRnZXQgdG8gdGhlIGNsaXBib2FyZFxuICAgIGlmICh3aWRnZXQudHlwZSA9PSAncGFnZS1sYXlvdXQnKSB7XG4gICAgICB0aGlzLnBhc3RlKHRoaXMuZG9jdW1lbnQoKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucGFzdGUod2lkZ2V0ISk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHBhc3RlKHBhcmVudE5vZGU6IEFYUFdpZGdldE5vZGUgPSB0aGlzLnNlbGVjdGVkTm9kZSgpID8/IHRoaXMuY3VycmVudFBhZ2UoKSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5jbGlwYm9hcmQoKSB8fCAhdGhpcy5zZWxlY3RlZE5vZGUoKSkge1xuICAgICAgY29uc29sZS5lcnJvcignQ2xpcGJvYXJkIGlzIGVtcHR5IG9yIG5vIG5vZGUgaXMgc2VsZWN0ZWQuJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IG5ld05vZGUgPSBjbG9uZURlZXAodGhpcy5jbGlwYm9hcmQoKSkhO1xuICAgIGNvbnN0IG5lYXJlc3RDb250YWluZXIgPSB0aGlzLmZpbmROZWFyZXN0Q29udGFpbmVyKHBhcmVudE5vZGUsIHRydWUpO1xuICAgIGlmICghbmVhcmVzdENvbnRhaW5lcikge1xuICAgICAgY29uc29sZS5lcnJvcignTm8gc3VpdGFibGUgY29udGFpbmVyIGZvdW5kLicpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAvL1xuICAgIGlmICghbmVhcmVzdENvbnRhaW5lci5jaGlsZHJlbikge1xuICAgICAgbmVhcmVzdENvbnRhaW5lci5jaGlsZHJlbiA9IFtdO1xuICAgIH1cbiAgICAvL1xuICAgIGNvbnN0IHNldE5hbWVJZCA9IChub2RlOiBBWFBXaWRnZXROb2RlKSA9PiB7XG4gICAgICBzZXQobm9kZSwgJ25hbWUnLCB0aGlzLmdlbmVyYXRlVW5pcXVlTmFtZShub2RlLnR5cGUpKTtcbiAgICAgIHNldChub2RlLCAnX19tZXRhX18uaWQnLCB0aGlzLmdlbmVyYXRlVW5pcXVlSWQoKSk7XG4gICAgICBub2RlLmNoaWxkcmVuPy5mb3JFYWNoKChuKSA9PiB7XG4gICAgICAgIHNldE5hbWVJZChuKTtcbiAgICAgIH0pO1xuICAgIH07XG4gICAgc2V0TmFtZUlkKG5ld05vZGUpO1xuICAgIC8vXG4gICAgdGhpcy5jb21tYW5kTWFuYWdlci5leGVjdXRlQ29tbWFuZChuZXcgQWRkV2lkZ2V0Q29tbWFuZChuZXdOb2RlLCBuZWFyZXN0Q29udGFpbmVyLCBuZWFyZXN0Q29udGFpbmVyKSk7XG4gICAgLy9cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMucmVmcmVzaCh7IHdpZGdldDogbmVhcmVzdENvbnRhaW5lciB9KTsgLy8gUmVmcmVzaCB0aGUgVUlcbiAgICAgIHRoaXMuc2VsZWN0KHsgd2lkZ2V0OiBuZXdOb2RlIH0pOyAvLyBTZWxlY3QgdGhlIG5ld2x5IHBhc3RlZCBub2RlXG4gICAgfSk7XG4gIH1cblxuICBleHBvcnQoKTogc3RyaW5nIHtcbiAgICBjb25zdCBqc29uID0gdGhpcy5yZW1vdmVNZXRhUHJvcCh0aGlzLmRvY3VtZW50KCkpO1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShqc29uKTtcbiAgfVxuXG4gIGRvd25sb2FkSnNvbigpIHtcbiAgICAvLyBDb252ZXJ0IHRoZSBvYmplY3QgdG8gYSBKU09OIHN0cmluZ1xuICAgIGNvbnN0IGpzb25TdHIgPSB0aGlzLmV4cG9ydCgpO1xuXG4gICAgLy8gQ3JlYXRlIGEgYmxvYiBvYmplY3QgZnJvbSB0aGUgSlNPTiBzdHJpbmdcbiAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW2pzb25TdHJdLCB7IHR5cGU6ICdhcHBsaWNhdGlvbi9qc29uJyB9KTtcblxuICAgIC8vIENyZWF0ZSBhIFVSTCBmb3IgdGhlIGJsb2Igb2JqZWN0XG4gICAgY29uc3QgdXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcblxuICAgIC8vIENyZWF0ZSBhIHRlbXBvcmFyeSA8YT4gZWxlbWVudCB0byB0cmlnZ2VyIHRoZSBkb3dubG9hZFxuICAgIGNvbnN0IGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgYS5ocmVmID0gdXJsO1xuICAgIGEuZG93bmxvYWQgPSAnZXhwb3J0Lmpzb24nO1xuXG4gICAgLy8gQXBwZW5kIHRoZSA8YT4gZWxlbWVudCB0byB0aGUgZG9jdW1lbnQgYm9keSAobmVjZXNzYXJ5IGZvciBzb21lIGJyb3dzZXJzKVxuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoYSk7XG5cbiAgICAvLyBUcmlnZ2VyIHRoZSBkb3dubG9hZCBieSBjbGlja2luZyB0aGUgPGE+IGVsZW1lbnRcbiAgICBhLmNsaWNrKCk7XG4gICAgLy8gQ2xlYW4gdXAgYnkgcmV2b2tpbmcgdGhlIG9iamVjdCBVUkwgYW5kIHJlbW92aW5nIHRoZSA8YT4gZWxlbWVudFxuICAgIFVSTC5yZXZva2VPYmplY3RVUkwodXJsKTtcbiAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGEpO1xuICB9XG5cbiAgYXN5bmMgaW1wb3J0SlNvbigpIHtcbiAgICBjb25zdCBmaWxlcyA9IGF3YWl0IHRoaXMuZmlsZVNlcnZpY2UuY2hvb3NlKHsgbXVsdGlwbGU6IGZhbHNlLCBhY2NlcHQ6ICdhcHBsaWNhdGlvbi9qc29uJyB9KTtcbiAgICBpZiAoZmlsZXMgJiYgZmlsZXMubGVuZ3RoKSB7XG4gICAgICBjb25zdCBmaWxlID0gZmlsZXNbMF07XG4gICAgICBjb25zdCBjb250ZW50ID0gYXdhaXQgZmlsZS50ZXh0KCk7XG4gICAgICBjb25zdCByb290Tm9kZSA9IEpTT04ucGFyc2UoY29udGVudCkgYXMgQVhQV2lkZ2V0Tm9kZTtcbiAgICAgIGNvbnN0IHRvdGFsTm9kZSA9IHRoaXMuY291bnRUb3RhbE5vZGVzKHJvb3ROb2RlKTtcbiAgICAgIGNvbnN0IHByb2Nlc3NlZE5vZGVzID0geyBjb3VudDogMCB9O1xuXG4gICAgICBjb25zdCBidXR0b246IEFYTG9hZGluZ0RpYWxvZ0J1dHRvbkl0ZW0gPSB7XG4gICAgICAgIHRleHQ6ICdDYW5jZWwnLFxuICAgICAgICBhdXRvZm9jdXM6IHRydWUsXG4gICAgICAgIGNvbG9yOiAncHJpbWFyeScsXG4gICAgICAgIG9uQ2xpY2s6IChlKSA9PiB7XG4gICAgICAgICAgZGlhbG9nLmNsb3NlKCk7XG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgICAgY29uc3QgZGlhbG9nID0gdGhpcy5sb2FkaW5nU2VydmljZS5zaG93KHtcbiAgICAgICAgbW9kZTogJ2RldGVybWluYXRlJyxcbiAgICAgICAgdGl0bGU6ICdJbXBvcnQgSnNvbiBGaWxlJyxcbiAgICAgICAgcHJvZ3Jlc3NDb2xvcjogJ3ByaW1hcnknLFxuICAgICAgICB0ZXh0OiAnUHJvY2Vzc2luZyBqc29uIGZpbGUnLFxuICAgICAgICBzdGF0dXM6IGAwIG9mICR7dG90YWxOb2RlfWAsXG4gICAgICAgIGJ1dHRvbnM6IFtidXR0b25dLFxuICAgICAgfSk7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJvb3QgPSBhd2FpdCB0aGlzLmFkZE1ldGFUb05vZGVzKHJvb3ROb2RlLCBwcm9jZXNzZWROb2RlcywgKGNvdW50KSA9PiB7XG4gICAgICAgICAgZGlhbG9nLnNldFByb2dyZXNzVmFsdWUoTWF0aC5jZWlsKChjb3VudCAvIHRvdGFsTm9kZSkgKiAxMDApKTtcbiAgICAgICAgICBkaWFsb2cuc2V0UHJvZ3Jlc3NTdGF0dXMoYCR7Y291bnR9IG9mICR7dG90YWxOb2RlfWApO1xuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgcGFnZSA9IHJvb3QuY2hpbGRyZW4/LlswXSE7XG4gICAgICAgIHRoaXMuZG9jdW1lbnQuc2V0KHJvb3QpO1xuICAgICAgICB0aGlzLmN1cnJlbnRQYWdlLnNldChwYWdlKTtcbiAgICAgICAgZGlhbG9nLnNldFByb2dyZXNzQ29sb3IoJ3N1Y2Nlc3MnKTtcbiAgICAgICAgZGlhbG9nLnNldFByb2dyZXNzVGV4dCgnSnNvbiBmaWxlIHByb2Nlc3NlZCBzdWNjZXNzZnVsbHknKTtcbiAgICAgICAgYnV0dG9uLnRleHQgPSAnT2theSc7XG4gICAgICAgIGJ1dHRvbi5jb2xvciA9ICdzdWNjZXNzJztcbiAgICAgICAgZGlhbG9nLnNldFByb2dyZXNzVmFsdWUoMTAwKTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5yZVJlbmRlclBhZ2UoKTtcbiAgICAgICAgICBkaWFsb2cuY2xvc2UoKTtcbiAgICAgICAgfSwgMTAwMCk7XG4gICAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgICAgIGRpYWxvZy5zZXRQcm9ncmVzc0NvbG9yKCdkYW5nZXInKTtcbiAgICAgICAgZGlhbG9nLnNldFByb2dyZXNzVGV4dChlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6ICdDYW5ub3QgcHJvY2VzcyBqc29uIGZpbGUnKTtcbiAgICAgICAgYnV0dG9uLnRleHQgPSAnQ2xvc2UnO1xuICAgICAgICBidXR0b24uY29sb3IgPSAnZGFuZ2VyJztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNvdW50VG90YWxOb2Rlcyhub2RlOiBBWFBXaWRnZXROb2RlKTogbnVtYmVyIHtcbiAgICBsZXQgY291bnQgPSAxOyAvLyBDb3VudCB0aGUgY3VycmVudCBub2RlXG4gICAgaWYgKG5vZGUuY2hpbGRyZW4gJiYgbm9kZS5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICBjb3VudCArPSBub2RlLmNoaWxkcmVuLnJlZHVjZSgoc3VtLCBjaGlsZCkgPT4gc3VtICsgdGhpcy5jb3VudFRvdGFsTm9kZXMoY2hpbGQpLCAwKTtcbiAgICB9XG4gICAgcmV0dXJuIGNvdW50O1xuICB9XG5cbiAgcHJpdmF0ZSBnZW5lcmF0ZVVuaXF1ZU5hbWUodHlwZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAvLyBOb3JtYWxpemUgdGhlIHR5cGUgdG8gZm9sbG93IGNhbWVsQ2FzZSBjb252ZW50aW9uXG4gICAgY29uc3QgYmFzZU5hbWUgPSB0eXBlLmNoYXJBdCgwKS50b0xvd2VyQ2FzZSgpICsgdHlwZS5zbGljZSgxKTtcbiAgICBsZXQgaW5kZXggPSAxO1xuICAgIGxldCB1bmlxdWVOYW1lID0gYCR7YmFzZU5hbWV9JHtpbmRleH1gO1xuXG4gICAgLy8gR2F0aGVyIGFsbCBleGlzdGluZyBuYW1lcyB0byBjaGVjayBhZ2FpbnN0XG4gICAgY29uc3QgZXhpc3RpbmdOYW1lcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgIHRoaXMuY29sbGVjdEFsbE5hbWVzKHRoaXMuZG9jdW1lbnQoKSwgZXhpc3RpbmdOYW1lcyk7XG5cbiAgICAvLyBJbmNyZW1lbnQgdGhlIGluZGV4IHVudGlsIGEgdW5pcXVlIG5hbWUgaXMgZm91bmRcbiAgICB3aGlsZSAoZXhpc3RpbmdOYW1lcy5oYXModW5pcXVlTmFtZSkpIHtcbiAgICAgIGluZGV4Kys7XG4gICAgICB1bmlxdWVOYW1lID0gYCR7YmFzZU5hbWV9JHtpbmRleH1gO1xuICAgIH1cblxuICAgIHJldHVybiB1bmlxdWVOYW1lO1xuICB9XG5cbiAgZ2VuZXJhdGVVbmlxdWVJZCgpOiBudW1iZXIge1xuICAgIHJldHVybiBNYXRoLnJhbmRvbSgpICogTWF0aC5wb3coMTAsIDE4KTtcbiAgfVxuXG4gIHByaXZhdGUgY29sbGVjdEFsbE5hbWVzKG5vZGU6IEFYUFdpZGdldE5vZGUsIG5hbWVzOiBTZXQ8c3RyaW5nPik6IHZvaWQge1xuICAgIGlmIChub2RlLm5hbWUpIHtcbiAgICAgIG5hbWVzLmFkZChub2RlLm5hbWUpO1xuICAgIH1cbiAgICBpZiAobm9kZS5jaGlsZHJlbikge1xuICAgICAgZm9yIChjb25zdCBjaGlsZCBvZiBub2RlLmNoaWxkcmVuKSB7XG4gICAgICAgIHRoaXMuY29sbGVjdEFsbE5hbWVzKGNoaWxkLCBuYW1lcyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHVwZGF0ZVByZXZpZXcoKSB7XG4gICAgdGhpcy5jaGFubmVsLnBvc3RNZXNzYWdlKHtcbiAgICAgIGFjdGlvbjogJ2Rlc2lnbmVyLXByZXZpZXcnLFxuICAgICAgZG9jdW1lbnQ6IHRoaXMucmVtb3ZlTWV0YVByb3AodGhpcy5kb2N1bWVudCgpKSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBvcGVuUHJldmlld0RpYWxvZygpIHtcbiAgICBjb25zdCBjb20gPSBhd2FpdCBpbXBvcnQoJy4uLy4uL3ByZXZpZXcvcHJldmlldy5jb21wb25lbnQnKS50aGVuKChjKSA9PiBjLkFYUExheW91dERlc2lnbmVyUHJldmlld0NvbXBvbmVudCk7XG4gICAgYXdhaXQgdGhpcy5wb3B1cFNlcnZpY2Uub3Blbihjb20sIHtcbiAgICAgIGhlYWRlcjogZmFsc2UsXG4gICAgICBzaXplOiAnZnVsbCcsXG4gICAgICBkYXRhOiB7XG4gICAgICAgIGluaXRpYWxTaXplOiB0aGlzLnNpemUoKSxcbiAgICAgICAgaXNEaWFsb2dXaW5kb3c6IHRydWUsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG9wZW5QcmV2aWV3V2luZG93KCkge1xuICAgIHdpbmRvdy5vcGVuKCcvZm9ybXMvcHJldmlldycsICdfYmxhbmsnKTtcbiAgfVxuXG4gIHByaXZhdGUgY2hhbm5lbENhbGxiYWNrID0gKG1lc3NhZ2U6IE1lc3NhZ2VFdmVudDxhbnk+KSA9PiB7XG4gICAgaWYgKG1lc3NhZ2UuZGF0YS5hY3Rpb24gPT0gJ2Rlc2lnbmVyLXByZXZpZXctbG9hZGVkJykge1xuICAgICAgdGhpcy51cGRhdGVQcmV2aWV3KCk7XG4gICAgfVxuICAgIGlmIChtZXNzYWdlLmRhdGEuYWN0aW9uID09ICdvcGVuLXByZXZpZXctd2luZG93Jykge1xuICAgICAgdGhpcy5vcGVuUHJldmlld1dpbmRvdygpO1xuICAgIH1cbiAgfTtcbn1cbiJdfQ==
|
|
@@ -220,4 +220,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
|
|
|
220
220
|
type: HostListener,
|
|
221
221
|
args: ['document:keydown', ['$event']]
|
|
222
222
|
}] } });
|
|
223
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LWRlc2lnbmVyLXJlbmRlcmVyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vbGF5b3V0L2Rlc2lnbmVyL3NyYy9saWIvZGVzaWduZXIvc2hhcmVkL3dpZGdldC1kZXNpZ25lci1yZW5kZXJlci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3BELE9BQU8sRUFDTCxnQkFBZ0IsRUFLaEIsd0JBQXdCLEdBRXpCLE1BQU0saUNBQWlDLENBQUM7QUFDekMsT0FBTyxFQUNMLFNBQVMsRUFDVCxNQUFNLEVBQ04sWUFBWSxFQUNaLE1BQU0sRUFDTixRQUFRLEVBQ1IsS0FBSyxFQUNMLE1BQU0sRUFDTixNQUFNLEVBQ04sZ0JBQWdCLEdBRWpCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDdkQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7QUFXeEQsTUFBTSxPQUFPLGtDQUFrQztJQXlCN0M7O09BRUc7SUFDSDtRQTNCVSxrQkFBYSxHQUF3QixNQUFNLENBQU0sRUFBRSxDQUFDLENBQUM7UUFFdkQsYUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMxQixvQkFBZSxHQUFHLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBQ25ELGlCQUFZLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3RDLFNBQUksR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFdEIsY0FBUyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENB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LENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ3ZCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztnQkFDeEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7WUFDekMsQ0FBQztZQUNELEVBQUU7WUFDRixnQkFBZ0I7WUFDaEIsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksSUFBSSxXQUFXLElBQUksS0FBSyxDQUFDLEdBQUcsSUFBSSxRQUFRLEVBQUUsQ0FBQztnQkFDOUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7WUFDdkMsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDOzhHQXhOVSxrQ0FBa0M7a0dBQWxDLGtDQUFrQyx5b0JBTmxDO1lBQ1Q7Z0JBQ0UsT0FBTyxFQUFFLGNBQWM7YUFDeEI7U0FDRjs7MkZBRVUsa0NBQWtDO2tCQVQ5QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxnQ0FBZ0M7b0JBQzFDLFVBQVUsRUFBRSxJQUFJO29CQUNoQixTQUFTLEVBQUU7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGNBQWM7eUJBQ3hCO3FCQUNGO2lCQUNGO3dEQTJNTyxnQkFBZ0I7c0JBRHJCLFlBQVk7dUJBQUMsa0JBQWtCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWFVuc3Vic2NyaWJlciB9IGZyb20gJ0BhY29yZXgvY29yZS91dGlscyc7XG5pbXBvcnQge1xuICBBWFBfV0lER0VUX1RPS0VOLFxuICBBWFBXaWRnZXRDb21wb25lbnQsXG4gIEFYUFdpZGdldENvbmZpZyxcbiAgQVhQV2lkZ2V0Tm9kZSxcbiAgQVhQV2lkZ2V0Tm9kZVRva2VuLFxuICBBWFBXaWRnZXRSZWdpc3RyeVNlcnZpY2UsXG4gIEFYUFdpZGdldFJlbmRlck1vZGUsXG59IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2J1aWxkZXInO1xuaW1wb3J0IHtcbiAgRGlyZWN0aXZlLFxuICBlZmZlY3QsXG4gIEhvc3RMaXN0ZW5lcixcbiAgaW5qZWN0LFxuICBJbmplY3RvcixcbiAgaW5wdXQsXG4gIE5nWm9uZSxcbiAgc2lnbmFsLFxuICBWaWV3Q29udGFpbmVyUmVmLFxuICBXcml0YWJsZVNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjbG9uZURlZXAsIGdldCwgbWVyZ2UsIHNldCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBmaXJzdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQVhQRGVzaWduZXJTZXJ2aWNlIH0gZnJvbSAnLi9kZXNpZ25lci5zZXJ2aWNlJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2F4cC13aWRnZXQtZGVzaWduZXItcmVuZGVyZXJdJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogQVhVbnN1YnNjcmliZXIsXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhQV2lkZ2V0RGVzaWduZXJSZW5kZXJlckRpcmVjdGl2ZSB7XG4gIHByb3RlY3RlZCBtZXJnZWRPcHRpb25zOiBXcml0YWJsZVNpZ25hbDxhbnk+ID0gc2lnbmFsPGFueT4oe30pO1xuXG4gIHByaXZhdGUgaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuICBwcm90ZWN0ZWQgd2lkZ2V0UmVnaXN0ZXJ5ID0gaW5qZWN0KEFYUFdpZGdldFJlZ2lzdHJ5U2VydmljZSk7XG4gIHByb3RlY3RlZCB1bnN1YnNjcmliZXIgPSBpbmplY3QoQVhVbnN1YnNjcmliZXIpO1xuICBwcm90ZWN0ZWQgem9uZSA9IGluamVjdChOZ1pvbmUpO1xuXG4gIHByb3RlY3RlZCBpc0xvYWRpbmcgPSBzaWduYWwodHJ1ZSk7XG4gIHByaXZhdGUgaW5zdGFuY2UhOiBBWFBXaWRnZXRDb21wb25lbnQ7XG4gIHByaXZhdGUgY29uZmlnPzogQVhQV2lkZ2V0Q29uZmlnIHwgdW5kZWZpbmVkO1xuXG4gIHByaXZhdGUgc2VydmljZSA9IGluamVjdChBWFBEZXNpZ25lclNlcnZpY2UpO1xuICBwcml2YXRlIHZpZXdDb250YWluZXJSZWYgPSBpbmplY3QoVmlld0NvbnRhaW5lclJlZik7XG5cbiAgcGFyZW50Tm9kZSA9IGlucHV0PEFYUFdpZGdldENvbXBvbmVudCB8IG51bGw+KCk7XG5cbiAgaW5kZXggPSBpbnB1dDxudW1iZXIgfCBudWxsPigpO1xuXG4gIG1vZGUgPSBpbnB1dC5yZXF1aXJlZDxBWFBXaWRnZXRSZW5kZXJNb2RlPigpO1xuICBub2RlID0gaW5wdXQucmVxdWlyZWQ8QVhQV2lkZ2V0Tm9kZT4oKTtcblxuICBwcml2YXRlIGhvc3RFbGVtZW50ID0gKCkgPT4gdGhpcy5pbnN0YW5jZT8uaG9zdCBhcyBIVE1MRGl2RWxlbWVudDtcbiAgcHJpdmF0ZSBpc0N1cnJlbnRXaWRnZXQgPSAodzogQVhQV2lkZ2V0Tm9kZSkgPT4gZ2V0KHcsICdfX21ldGFfXy5pZCcpID09IGdldCh0aGlzLm5vZGUoKSwgJ19fbWV0YV9fLmlkJyk7XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuc2VydmljZS5vblVwZGF0ZS5waXBlKHRoaXMudW5zdWJzY3JpYmVyLnRha2VVbnRpbERlc3Ryb3kpLnN1YnNjcmliZSgoYykgPT4ge1xuICAgICAgaWYgKHRoaXMuaXNDdXJyZW50V2lkZ2V0KGMud2lkZ2V0KSkge1xuICAgICAgICB0aGlzLmFwcGx5T3B0aW9ucyhjLnZhbHVlcz8ub3B0aW9ucyk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgLy9cbiAgICB0aGlzLnNlcnZpY2Uub25TZWxlY3RlZC5waXBlKHRoaXMudW5zdWJzY3JpYmVyLnRha2VVbnRpbERlc3Ryb3kpLnN1YnNjcmliZSgoYykgPT4ge1xuICAgICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuaXNDdXJyZW50V2lkZ2V0KGMud2lkZ2V0KSkge1xuICAgICAgICAgIHRoaXMuc2VsZWN0KClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnVuc2VsZWN0KClcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gICAgLy9cbiAgICB0aGlzLnNlcnZpY2Uub25Gb2N1c2VkLnBpcGUodGhpcy51bnN1YnNjcmliZXIudGFrZVVudGlsRGVzdHJveSkuc3Vic2NyaWJlKChjKSA9PiB7XG4gICAgICBpZiAoYy53aWRnZXQgJiYgdGhpcy5pc0N1cnJlbnRXaWRnZXQoYy53aWRnZXQpKSB7XG4gICAgICAgIHRoaXMuYWRkT3ZlcmxheSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5yZW1vdmVPdmVybGF5KCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgLy9cbiAgICB0aGlzLnNlcnZpY2Uub25SZWZyZXNoLnBpcGUodGhpcy51bnN1YnNjcmliZXIudGFrZVVudGlsRGVzdHJveSkuc3Vic2NyaWJlKChjKSA9PiB7XG4gICAgICBpZiAodGhpcy5pc0N1cnJlbnRXaWRnZXQoYy53aWRnZXQpKSB7XG4gICAgICAgIHRoaXMuaW5zdGFuY2U/LnNldENoaWxkcmVuKHRoaXMubm9kZSgpLmNoaWxkcmVuID8/IFtdKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICAvL1xuICAgIGVmZmVjdChcbiAgICAgIGFzeW5jICgpID0+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5sb2FkQ29tcG9uZW50KCk7XG4gICAgICB9LFxuICAgICAgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9XG4gICAgKTtcbiAgfVxuXG5cbiAgcHJpdmF0ZSBhc3luYyBsb2FkQ29tcG9uZW50KCkge1xuICAgIHRoaXMudmlld0NvbnRhaW5lclJlZi5jbGVhcigpO1xuICAgIHRoaXMuaXNMb2FkaW5nLnNldCh0cnVlKTtcbiAgICB0aGlzLmNvbmZpZyA9IHRoaXMud2lkZ2V0UmVnaXN0ZXJ5LnJlc29sdmUodGhpcy5ub2RlKCkudHlwZSk7XG4gICAgLy9cbiAgICBjb25zdCBwcm9wcyA9IHRoaXMuY29uZmlnPy5jb21wb25lbnRzW3RoaXMubW9kZSgpXT8ucHJvcGVydGllc1xuICAgICAgPy5maWx0ZXIoKGMpID0+IGMuc2NoZW1hLmRlZmF1bHRWYWx1ZSlcbiAgICAgIC5tYXAoKGMpID0+ICh7IFtjLm5hbWVdOiBjLnNjaGVtYS5kZWZhdWx0VmFsdWUgfSkpXG4gICAgICAucmVkdWNlKChhY2MsIGN1cnIpID0+IHtcbiAgICAgICAgcmV0dXJuIHsgLi4uYWNjLCAuLi5jdXJyIH07XG4gICAgICB9LCB7fSk7XG4gICAgLy9cbiAgICB0aGlzLm1lcmdlZE9wdGlvbnMuc2V0KG1lcmdlKHByb3BzLCB0aGlzLm5vZGUoKS5vcHRpb25zKSB8fCB7fSk7XG4gICAgdGhpcy5wcmVwcm9jZXNzQW5kSW5pdGlhbE9wdGlvbnMoY2xvbmVEZWVwKHRoaXMubm9kZSgpLm9wdGlvbnMpKTtcblxuICAgIGNvbnN0IHRva2VuVmFsdWUgPSB7XG4gICAgICBub2RlOiB0aGlzLm5vZGUoKSxcbiAgICAgIG9wdGlvbnM6IHRoaXMubWVyZ2VkT3B0aW9ucygpLFxuICAgICAgY29uZmlnOiB0aGlzLmNvbmZpZyxcbiAgICAgIGRlZmF1bHRWYWx1ZTogdGhpcy5ub2RlKCkuZGVmYXVsdFZhbHVlLFxuICAgIH0gYXMgQVhQV2lkZ2V0Tm9kZVRva2VuO1xuXG4gICAgY29uc3QgdG9rZW4gPSBJbmplY3Rvci5jcmVhdGUoe1xuICAgICAgcGFyZW50OiB0aGlzLmluamVjdG9yLFxuICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBwcm92aWRlOiBBWFBfV0lER0VUX1RPS0VOLFxuICAgICAgICAgIHVzZVZhbHVlOiB0b2tlblZhbHVlLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KTtcbiAgICB2YXIgY29tID0gYXdhaXQgdGhpcy5jb25maWc/LmNvbXBvbmVudHNbdGhpcy5tb2RlKCldPy5jb21wb25lbnQoKTtcbiAgICB0aGlzLmluc3RhbmNlID0gdGhpcy52aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudDxBWFBXaWRnZXRDb21wb25lbnQ8YW55Pj4oY29tLCB7IGluamVjdG9yOiB0b2tlbiB9KS5pbnN0YW5jZTtcbiAgICB0aGlzLmluc3RhbmNlLnBhcmVudCA9IHRoaXMucGFyZW50Tm9kZSgpO1xuICAgIHRoaXMuaW5zdGFuY2UuaW5kZXggPSB0aGlzLmluZGV4KCk7XG4gICAgdGhpcy5pbnN0YW5jZS5tb2RlID0gdGhpcy5tb2RlKCk7XG4gICAgLy9cbiAgICB0aGlzLmluc3RhbmNlLm9uUmVhZHkucGlwZShmaXJzdCgpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgY29uc3QgaG9zdCA9IHRoaXMuaG9zdEVsZW1lbnQoKTtcbiAgICAgIGhvc3QuY2xhc3NMaXN0LmFkZChcImF4cC13aWRnZXQtaG9zdFwiKTtcbiAgICAgIGlmICh0aGlzLm1vZGUoKSA9PSAnZGVzaWduZXInKSB7XG4gICAgICAgIGhvc3QuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VvdmVyJywgKGUpID0+IHtcbiAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIHRoaXMuYWRkT3ZlcmxheSgpO1xuICAgICAgICAgIHRoaXMuc2VydmljZS5mb2N1cyh7IHdpZGdldDogdGhpcy5ub2RlKCkgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICBob3N0LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbGVhdmUnLCAoZSkgPT4ge1xuICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgdGhpcy5yZW1vdmVPdmVybGF5KCk7XG4gICAgICAgICAgdGhpcy5zZXJ2aWNlLmZvY3VzKHsgd2lkZ2V0OiBudWxsIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICBob3N0LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKGUpID0+IHtcbiAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIHRoaXMuc2VsZWN0KCk7XG4gICAgICAgICAgdGhpcy5zZXJ2aWNlLnNlbGVjdCh7IHdpZGdldDogdGhpcy5ub2RlKCkgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnNlcnZpY2UucmVnaXN0ZXIoe1xuICAgICAgICAgIGNvbmZpZzogdGhpcy5jb25maWchLFxuICAgICAgICAgIGlkOiBnZXQodGhpcy5ub2RlKCksICdfX21ldGFfXy5pZCcpIGFzIGFueSBhcyBudW1iZXIsXG4gICAgICAgICAgaW5zdGFuY2U6IHRoaXMuaW5zdGFuY2UsXG4gICAgICAgICAgd2lkZ2V0OiB0aGlzLm5vZGUoKSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIG92ZXJsYXk6IEhUTUxFbGVtZW50IHwgbnVsbDtcblxuICBwcml2YXRlIHNlbGVjdCgpIHtcbiAgICB0aGlzLmhvc3RFbGVtZW50KCk/LmNsYXNzTGlzdC5hZGQoJ2F4cC1zdGF0ZS1zZWxlY3RlZCcpO1xuICAgIHRoaXMuaG9zdEVsZW1lbnQoKT8uc2Nyb2xsSW50b1ZpZXcoeyBiZWhhdmlvcjogJ3Ntb290aCcsIGJsb2NrOiAnbmVhcmVzdCcgfSk7XG4gIH1cblxuICB1bnNlbGVjdCgpIHtcbiAgICB0aGlzLmhvc3RFbGVtZW50KCk/LmNsYXNzTGlzdC5yZW1vdmUoJ2F4cC1zdGF0ZS1zZWxlY3RlZCcpO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRPdmVybGF5KCkge1xuICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICBpZiAodGhpcy5ob3N0RWxlbWVudCgpKSB7XG4gICAgICAgIHRoaXMuaG9zdEVsZW1lbnQoKT8uY2xhc3NMaXN0LmFkZCgnYXhwLXN0YXRlLWhvdmVyJyk7XG4gICAgICAgIC8vXG4gICAgICAgIGlmICh0aGlzLmhvc3RFbGVtZW50KCkucXVlcnlTZWxlY3RvcignLmF4cC13aWRnZXQtb3ZlcmxheScpIHx8IHRoaXMuY29uZmlnPy50eXBlID09ICdjb250YWluZXInKSB7XG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMub3ZlcmxheSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICB0aGlzLm92ZXJsYXkuY2xhc3NMaXN0LmFkZCgnYXhwLXdpZGdldC1vdmVybGF5Jyk7XG4gICAgICAgIHRoaXMub3ZlcmxheS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIChlKSA9PiB7XG4gICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgdGhpcy5zZXJ2aWNlLnNlbGVjdCh7IHdpZGdldDogdGhpcy5ub2RlKCkgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLm92ZXJsYXkuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VsZWF2ZScsIChlKSA9PiB7XG4gICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgdGhpcy5zZXJ2aWNlLmZvY3VzKHsgd2lkZ2V0OiBudWxsIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5ob3N0RWxlbWVudCgpLmFwcGVuZENoaWxkKHRoaXMub3ZlcmxheSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZU92ZXJsYXkoKSB7XG4gICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmhvc3RFbGVtZW50KCkpIHtcbiAgICAgICAgdGhpcy5ob3N0RWxlbWVudCgpPy5jbGFzc0xpc3QucmVtb3ZlKCdheHAtc3RhdGUtaG92ZXInKTtcbiAgICAgICAgLy9cbiAgICAgICAgdGhpcy5vdmVybGF5Py5yZW1vdmUoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByZXByb2Nlc3NBbmRJbml0aWFsT3B0aW9ucyhvYmo6IGFueSwgcGF0aFByZWZpeDogc3RyaW5nID0gJycpOiB2b2lkIHtcbiAgICBpZiAoIW9iaikgcmV0dXJuO1xuICAgIE9iamVjdC5lbnRyaWVzKG9iaikuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICBjb25zdCBjdXJyZW50UGF0aCA9IHBhdGhQcmVmaXggPyBgJHtwYXRoUHJlZml4fS4ke2tleX1gIDoga2V5O1xuICAgICAgdGhpcy5tZXJnZWRPcHRpb25zLnVwZGF0ZSgoY3VycmVudE9wdGlvbnMpID0+IHtcbiAgICAgICAgcmV0dXJuIHNldChjdXJyZW50T3B0aW9ucywgY3VycmVudFBhdGgsIHZhbHVlKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhcHBseU9wdGlvbnModmFsdWVzOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pbnN0YW5jZSAmJiB0aGlzLm5vZGUoKS5kZWZhdWx0VmFsdWUgIT0gbnVsbCkge1xuICAgICAgdGhpcy5pbnN0YW5jZS5zZXRWYWx1ZSh0aGlzLm5vZGUoKS5kZWZhdWx0VmFsdWUpO1xuICAgIH1cbiAgICB0aGlzLm1lcmdlZE9wdGlvbnMudXBkYXRlKChjdXJyZW50T3B0aW9ucykgPT4ge1xuICAgICAgcmV0dXJuIG1lcmdlKGN1cnJlbnRPcHRpb25zLCB2YWx1ZXMpO1xuICAgIH0pO1xuICAgIHRoaXMuaW5zdGFuY2U/LnNldE9wdGlvbnModGhpcy5tZXJnZWRPcHRpb25zKCkpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bicsIFsnJGV2ZW50J10pXG4gIGFzeW5jIG9uS2V5ZG93bkhhbmRsZXIoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBpZiAodGhpcy5zZXJ2aWNlLnNlbGVjdGVkTm9kZSgpICYmIHRoaXMuaXNDdXJyZW50V2lkZ2V0KHRoaXMuc2VydmljZS5zZWxlY3RlZE5vZGUoKSEpICYmIGV2ZW50LnRhcmdldCA9PSBkb2N1bWVudC5ib2R5KSB7XG4gICAgICAvLyBoYW5kbGUgZGVsZXRlXG4gICAgICBpZiAoZXZlbnQua2V5ID09IFwiRGVsZXRlXCIpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIHRoaXMuc2VydmljZS5yZW1vdmVXaWRnZXQodGhpcy5ub2RlKCkpO1xuICAgICAgfVxuICAgICAgLy9cbiAgICAgIC8vIGhhbmRsZSBkZWxldGVcbiAgICAgIGlmICh0aGlzLmNvbmZpZz8udHlwZSA9PSAnY29udGFpbmVyJyAmJiBldmVudC5rZXkgPT0gXCJJbnNlcnRcIikge1xuICAgICAgICB0aGlzLnNlcnZpY2Uuc2hvd1BpY2tlcih0aGlzLm5vZGUoKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
223
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LWRlc2lnbmVyLXJlbmRlcmVyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vbGF5b3V0L2Rlc2lnbmVyL3NyYy9saWIvZGVzaWduZXIvc2hhcmVkL3dpZGdldC1kZXNpZ25lci1yZW5kZXJlci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3BELE9BQU8sRUFDTCxnQkFBZ0IsRUFLaEIsd0JBQXdCLEdBRXpCLE1BQU0saUNBQWlDLENBQUM7QUFDekMsT0FBTyxFQUNMLFNBQVMsRUFDVCxNQUFNLEVBQ04sWUFBWSxFQUNaLE1BQU0sRUFDTixRQUFRLEVBQ1IsS0FBSyxFQUNMLE1BQU0sRUFDTixNQUFNLEVBQ04sZ0JBQWdCLEdBRWpCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDdkQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7QUFXeEQsTUFBTSxPQUFPLGtDQUFrQztJQTBCN0M7O09BRUc7SUFDSDtRQTVCVSxrQkFBYSxHQUF3QixNQUFNLENBQU0sRUFBRSxDQUFDLENBQUM7UUFFdkQsYUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMxQixvQkFBZSxHQUFHLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBQ25ELGlCQUFZLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3RDLFNBQUksR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFdEIsY0FBUyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENB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LENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ3ZCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztnQkFDeEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7WUFDekMsQ0FBQztZQUNELEVBQUU7WUFDRixnQkFBZ0I7WUFDaEIsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksSUFBSSxXQUFXLElBQUksS0FBSyxDQUFDLEdBQUcsSUFBSSxRQUFRLEVBQUUsQ0FBQztnQkFDOUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7WUFDdkMsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDOzhHQXpOVSxrQ0FBa0M7a0dBQWxDLGtDQUFrQyx5b0JBTmxDO1lBQ1Q7Z0JBQ0UsT0FBTyxFQUFFLGNBQWM7YUFDeEI7U0FDRjs7MkZBRVUsa0NBQWtDO2tCQVQ5QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxnQ0FBZ0M7b0JBQzFDLFVBQVUsRUFBRSxJQUFJO29CQUNoQixTQUFTLEVBQUU7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGNBQWM7eUJBQ3hCO3FCQUNGO2lCQUNGO3dEQTRNTyxnQkFBZ0I7c0JBRHJCLFlBQVk7dUJBQUMsa0JBQWtCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWFVuc3Vic2NyaWJlciB9IGZyb20gJ0BhY29yZXgvY29yZS91dGlscyc7XG5pbXBvcnQge1xuICBBWFBfV0lER0VUX1RPS0VOLFxuICBBWFBXaWRnZXRDb21wb25lbnQsXG4gIEFYUFdpZGdldENvbmZpZyxcbiAgQVhQV2lkZ2V0Tm9kZSxcbiAgQVhQV2lkZ2V0Tm9kZVRva2VuLFxuICBBWFBXaWRnZXRSZWdpc3RyeVNlcnZpY2UsXG4gIEFYUFdpZGdldFJlbmRlck1vZGUsXG59IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2J1aWxkZXInO1xuaW1wb3J0IHtcbiAgRGlyZWN0aXZlLFxuICBlZmZlY3QsXG4gIEhvc3RMaXN0ZW5lcixcbiAgaW5qZWN0LFxuICBJbmplY3RvcixcbiAgaW5wdXQsXG4gIE5nWm9uZSxcbiAgc2lnbmFsLFxuICBWaWV3Q29udGFpbmVyUmVmLFxuICBXcml0YWJsZVNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjbG9uZURlZXAsIGdldCwgbWVyZ2UsIHNldCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBmaXJzdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQVhQRGVzaWduZXJTZXJ2aWNlIH0gZnJvbSAnLi9kZXNpZ25lci5zZXJ2aWNlJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2F4cC13aWRnZXQtZGVzaWduZXItcmVuZGVyZXJdJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogQVhVbnN1YnNjcmliZXIsXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhQV2lkZ2V0RGVzaWduZXJSZW5kZXJlckRpcmVjdGl2ZSB7XG4gIHByb3RlY3RlZCBtZXJnZWRPcHRpb25zOiBXcml0YWJsZVNpZ25hbDxhbnk+ID0gc2lnbmFsPGFueT4oe30pO1xuXG4gIHByaXZhdGUgaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuICBwcm90ZWN0ZWQgd2lkZ2V0UmVnaXN0ZXJ5ID0gaW5qZWN0KEFYUFdpZGdldFJlZ2lzdHJ5U2VydmljZSk7XG4gIHByb3RlY3RlZCB1bnN1YnNjcmliZXIgPSBpbmplY3QoQVhVbnN1YnNjcmliZXIpO1xuICBwcm90ZWN0ZWQgem9uZSA9IGluamVjdChOZ1pvbmUpO1xuXG4gIHByb3RlY3RlZCBpc0xvYWRpbmcgPSBzaWduYWwodHJ1ZSk7XG4gIFxuICBwcml2YXRlIGluc3RhbmNlITogQVhQV2lkZ2V0Q29tcG9uZW50O1xuICBwcml2YXRlIGNvbmZpZz86IEFYUFdpZGdldENvbmZpZyB8IHVuZGVmaW5lZDtcblxuICBwcml2YXRlIHNlcnZpY2UgPSBpbmplY3QoQVhQRGVzaWduZXJTZXJ2aWNlKTtcbiAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmID0gaW5qZWN0KFZpZXdDb250YWluZXJSZWYpO1xuXG4gIHBhcmVudE5vZGUgPSBpbnB1dDxBWFBXaWRnZXRDb21wb25lbnQgfCBudWxsPigpO1xuXG4gIGluZGV4ID0gaW5wdXQ8bnVtYmVyIHwgbnVsbD4oKTtcblxuICBtb2RlID0gaW5wdXQucmVxdWlyZWQ8QVhQV2lkZ2V0UmVuZGVyTW9kZT4oKTtcbiAgbm9kZSA9IGlucHV0LnJlcXVpcmVkPEFYUFdpZGdldE5vZGU+KCk7XG5cbiAgcHJpdmF0ZSBob3N0RWxlbWVudCA9ICgpID0+IHRoaXMuaW5zdGFuY2U/Lmhvc3QgYXMgSFRNTERpdkVsZW1lbnQ7XG4gIHByaXZhdGUgaXNDdXJyZW50V2lkZ2V0ID0gKHc6IEFYUFdpZGdldE5vZGUpID0+IGdldCh3LCAnX19tZXRhX18uaWQnKSA9PSBnZXQodGhpcy5ub2RlKCksICdfX21ldGFfXy5pZCcpO1xuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLnNlcnZpY2Uub25VcGRhdGUucGlwZSh0aGlzLnVuc3Vic2NyaWJlci50YWtlVW50aWxEZXN0cm95KS5zdWJzY3JpYmUoKGMpID0+IHtcbiAgICAgIGlmICh0aGlzLmlzQ3VycmVudFdpZGdldChjLndpZGdldCkpIHtcbiAgICAgICAgdGhpcy5hcHBseU9wdGlvbnMoYy52YWx1ZXM/Lm9wdGlvbnMpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIC8vXG4gICAgdGhpcy5zZXJ2aWNlLm9uU2VsZWN0ZWQucGlwZSh0aGlzLnVuc3Vic2NyaWJlci50YWtlVW50aWxEZXN0cm95KS5zdWJzY3JpYmUoKGMpID0+IHtcbiAgICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmlzQ3VycmVudFdpZGdldChjLndpZGdldCkpIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdCgpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy51bnNlbGVjdCgpXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIC8vXG4gICAgdGhpcy5zZXJ2aWNlLm9uRm9jdXNlZC5waXBlKHRoaXMudW5zdWJzY3JpYmVyLnRha2VVbnRpbERlc3Ryb3kpLnN1YnNjcmliZSgoYykgPT4ge1xuICAgICAgaWYgKGMud2lkZ2V0ICYmIHRoaXMuaXNDdXJyZW50V2lkZ2V0KGMud2lkZ2V0KSkge1xuICAgICAgICB0aGlzLmFkZE92ZXJsYXkoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucmVtb3ZlT3ZlcmxheSgpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIC8vXG4gICAgdGhpcy5zZXJ2aWNlLm9uUmVmcmVzaC5waXBlKHRoaXMudW5zdWJzY3JpYmVyLnRha2VVbnRpbERlc3Ryb3kpLnN1YnNjcmliZSgoYykgPT4ge1xuICAgICAgaWYgKHRoaXMuaXNDdXJyZW50V2lkZ2V0KGMud2lkZ2V0KSkge1xuICAgICAgICB0aGlzLmluc3RhbmNlPy5zZXRDaGlsZHJlbih0aGlzLm5vZGUoKS5jaGlsZHJlbiA/PyBbXSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgLy9cbiAgICBlZmZlY3QoXG4gICAgICBhc3luYyAoKSA9PiB7XG4gICAgICAgIGF3YWl0IHRoaXMubG9hZENvbXBvbmVudCgpO1xuICAgICAgfSxcbiAgICAgIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfVxuICAgICk7XG4gIH1cblxuXG4gIHByaXZhdGUgYXN5bmMgbG9hZENvbXBvbmVudCgpIHtcbiAgICB0aGlzLnZpZXdDb250YWluZXJSZWYuY2xlYXIoKTtcbiAgICB0aGlzLmlzTG9hZGluZy5zZXQodHJ1ZSk7XG4gICAgdGhpcy5jb25maWcgPSB0aGlzLndpZGdldFJlZ2lzdGVyeS5yZXNvbHZlKHRoaXMubm9kZSgpLnR5cGUpO1xuICAgIC8vXG4gICAgY29uc3QgcHJvcHMgPSB0aGlzLmNvbmZpZz8uY29tcG9uZW50c1t0aGlzLm1vZGUoKV0/LnByb3BlcnRpZXNcbiAgICAgID8uZmlsdGVyKChjKSA9PiBjLnNjaGVtYS5kZWZhdWx0VmFsdWUpXG4gICAgICAubWFwKChjKSA9PiAoeyBbYy5uYW1lXTogYy5zY2hlbWEuZGVmYXVsdFZhbHVlIH0pKVxuICAgICAgLnJlZHVjZSgoYWNjLCBjdXJyKSA9PiB7XG4gICAgICAgIHJldHVybiB7IC4uLmFjYywgLi4uY3VyciB9O1xuICAgICAgfSwge30pO1xuICAgIC8vXG4gICAgdGhpcy5tZXJnZWRPcHRpb25zLnNldChtZXJnZShwcm9wcywgdGhpcy5ub2RlKCkub3B0aW9ucykgfHwge30pO1xuICAgIHRoaXMucHJlcHJvY2Vzc0FuZEluaXRpYWxPcHRpb25zKGNsb25lRGVlcCh0aGlzLm5vZGUoKS5vcHRpb25zKSk7XG5cbiAgICBjb25zdCB0b2tlblZhbHVlID0ge1xuICAgICAgbm9kZTogdGhpcy5ub2RlKCksXG4gICAgICBvcHRpb25zOiB0aGlzLm1lcmdlZE9wdGlvbnMoKSxcbiAgICAgIGNvbmZpZzogdGhpcy5jb25maWcsXG4gICAgICBkZWZhdWx0VmFsdWU6IHRoaXMubm9kZSgpLmRlZmF1bHRWYWx1ZSxcbiAgICB9IGFzIEFYUFdpZGdldE5vZGVUb2tlbjtcblxuICAgIGNvbnN0IHRva2VuID0gSW5qZWN0b3IuY3JlYXRlKHtcbiAgICAgIHBhcmVudDogdGhpcy5pbmplY3RvcixcbiAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgcHJvdmlkZTogQVhQX1dJREdFVF9UT0tFTixcbiAgICAgICAgICB1c2VWYWx1ZTogdG9rZW5WYWx1ZSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG4gICAgdmFyIGNvbSA9IGF3YWl0IHRoaXMuY29uZmlnPy5jb21wb25lbnRzW3RoaXMubW9kZSgpXT8uY29tcG9uZW50KCk7XG4gICAgdGhpcy5pbnN0YW5jZSA9IHRoaXMudmlld0NvbnRhaW5lclJlZi5jcmVhdGVDb21wb25lbnQ8QVhQV2lkZ2V0Q29tcG9uZW50PGFueT4+KGNvbSwgeyBpbmplY3RvcjogdG9rZW4gfSkuaW5zdGFuY2U7XG4gICAgdGhpcy5pbnN0YW5jZS5wYXJlbnQgPSB0aGlzLnBhcmVudE5vZGUoKTtcbiAgICB0aGlzLmluc3RhbmNlLmluZGV4ID0gdGhpcy5pbmRleCgpO1xuICAgIHRoaXMuaW5zdGFuY2UubW9kZSA9IHRoaXMubW9kZSgpO1xuICAgIC8vXG4gICAgdGhpcy5pbnN0YW5jZS5vblJlYWR5LnBpcGUoZmlyc3QoKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIGNvbnN0IGhvc3QgPSB0aGlzLmhvc3RFbGVtZW50KCk7XG4gICAgICBob3N0LmNsYXNzTGlzdC5hZGQoXCJheHAtd2lkZ2V0LWhvc3RcIik7XG4gICAgICBpZiAodGhpcy5tb2RlKCkgPT0gJ2Rlc2lnbmVyJykge1xuICAgICAgICBob3N0LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlb3ZlcicsIChlKSA9PiB7XG4gICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICB0aGlzLmFkZE92ZXJsYXkoKTtcbiAgICAgICAgICB0aGlzLnNlcnZpY2UuZm9jdXMoeyB3aWRnZXQ6IHRoaXMubm9kZSgpIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgaG9zdC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWxlYXZlJywgKGUpID0+IHtcbiAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIHRoaXMucmVtb3ZlT3ZlcmxheSgpO1xuICAgICAgICAgIHRoaXMuc2VydmljZS5mb2N1cyh7IHdpZGdldDogbnVsbCB9KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaG9zdC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIChlKSA9PiB7XG4gICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICB0aGlzLnNlbGVjdCgpO1xuICAgICAgICAgIHRoaXMuc2VydmljZS5zZWxlY3QoeyB3aWRnZXQ6IHRoaXMubm9kZSgpIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5zZXJ2aWNlLnJlZ2lzdGVyKHtcbiAgICAgICAgICBjb25maWc6IHRoaXMuY29uZmlnISxcbiAgICAgICAgICBpZDogZ2V0KHRoaXMubm9kZSgpLCAnX19tZXRhX18uaWQnKSBhcyBhbnkgYXMgbnVtYmVyLFxuICAgICAgICAgIGluc3RhbmNlOiB0aGlzLmluc3RhbmNlLFxuICAgICAgICAgIHdpZGdldDogdGhpcy5ub2RlKCksXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBvdmVybGF5OiBIVE1MRWxlbWVudCB8IG51bGw7XG5cbiAgcHJpdmF0ZSBzZWxlY3QoKSB7XG4gICAgdGhpcy5ob3N0RWxlbWVudCgpPy5jbGFzc0xpc3QuYWRkKCdheHAtc3RhdGUtc2VsZWN0ZWQnKTtcbiAgICB0aGlzLmhvc3RFbGVtZW50KCk/LnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6ICdzbW9vdGgnLCBibG9jazogJ25lYXJlc3QnIH0pO1xuICB9XG5cbiAgdW5zZWxlY3QoKSB7XG4gICAgdGhpcy5ob3N0RWxlbWVudCgpPy5jbGFzc0xpc3QucmVtb3ZlKCdheHAtc3RhdGUtc2VsZWN0ZWQnKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkT3ZlcmxheSgpIHtcbiAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuaG9zdEVsZW1lbnQoKSkge1xuICAgICAgICB0aGlzLmhvc3RFbGVtZW50KCk/LmNsYXNzTGlzdC5hZGQoJ2F4cC1zdGF0ZS1ob3ZlcicpO1xuICAgICAgICAvL1xuICAgICAgICBpZiAodGhpcy5ob3N0RWxlbWVudCgpLnF1ZXJ5U2VsZWN0b3IoJy5heHAtd2lkZ2V0LW92ZXJsYXknKSB8fCB0aGlzLmNvbmZpZz8udHlwZSA9PSAnY29udGFpbmVyJykge1xuICAgICAgICAgIHJldHVyblxuICAgICAgICB9O1xuICAgICAgICB0aGlzLm92ZXJsYXkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgdGhpcy5vdmVybGF5LmNsYXNzTGlzdC5hZGQoJ2F4cC13aWRnZXQtb3ZlcmxheScpO1xuICAgICAgICB0aGlzLm92ZXJsYXkuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZSkgPT4ge1xuICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIHRoaXMuc2VydmljZS5zZWxlY3QoeyB3aWRnZXQ6IHRoaXMubm9kZSgpIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5vdmVybGF5LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbGVhdmUnLCAoZSkgPT4ge1xuICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIHRoaXMuc2VydmljZS5mb2N1cyh7IHdpZGdldDogbnVsbCB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuaG9zdEVsZW1lbnQoKS5hcHBlbmRDaGlsZCh0aGlzLm92ZXJsYXkpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVPdmVybGF5KCkge1xuICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICBpZiAodGhpcy5ob3N0RWxlbWVudCgpKSB7XG4gICAgICAgIHRoaXMuaG9zdEVsZW1lbnQoKT8uY2xhc3NMaXN0LnJlbW92ZSgnYXhwLXN0YXRlLWhvdmVyJyk7XG4gICAgICAgIC8vXG4gICAgICAgIHRoaXMub3ZlcmxheT8ucmVtb3ZlKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcmVwcm9jZXNzQW5kSW5pdGlhbE9wdGlvbnMob2JqOiBhbnksIHBhdGhQcmVmaXg6IHN0cmluZyA9ICcnKTogdm9pZCB7XG4gICAgaWYgKCFvYmopIHJldHVybjtcbiAgICBPYmplY3QuZW50cmllcyhvYmopLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgY29uc3QgY3VycmVudFBhdGggPSBwYXRoUHJlZml4ID8gYCR7cGF0aFByZWZpeH0uJHtrZXl9YCA6IGtleTtcbiAgICAgIHRoaXMubWVyZ2VkT3B0aW9ucy51cGRhdGUoKGN1cnJlbnRPcHRpb25zKSA9PiB7XG4gICAgICAgIHJldHVybiBzZXQoY3VycmVudE9wdGlvbnMsIGN1cnJlbnRQYXRoLCB2YWx1ZSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlPcHRpb25zKHZhbHVlczogYW55KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaW5zdGFuY2UgJiYgdGhpcy5ub2RlKCkuZGVmYXVsdFZhbHVlICE9IG51bGwpIHtcbiAgICAgIHRoaXMuaW5zdGFuY2Uuc2V0VmFsdWUodGhpcy5ub2RlKCkuZGVmYXVsdFZhbHVlKTtcbiAgICB9XG4gICAgdGhpcy5tZXJnZWRPcHRpb25zLnVwZGF0ZSgoY3VycmVudE9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBtZXJnZShjdXJyZW50T3B0aW9ucywgdmFsdWVzKTtcbiAgICB9KTtcbiAgICB0aGlzLmluc3RhbmNlPy5zZXRPcHRpb25zKHRoaXMubWVyZ2VkT3B0aW9ucygpKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24nLCBbJyRldmVudCddKVxuICBhc3luYyBvbktleWRvd25IYW5kbGVyKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgaWYgKHRoaXMuc2VydmljZS5zZWxlY3RlZE5vZGUoKSAmJiB0aGlzLmlzQ3VycmVudFdpZGdldCh0aGlzLnNlcnZpY2Uuc2VsZWN0ZWROb2RlKCkhKSAmJiBldmVudC50YXJnZXQgPT0gZG9jdW1lbnQuYm9keSkge1xuICAgICAgLy8gaGFuZGxlIGRlbGV0ZVxuICAgICAgaWYgKGV2ZW50LmtleSA9PSBcIkRlbGV0ZVwiKSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB0aGlzLnNlcnZpY2UucmVtb3ZlV2lkZ2V0KHRoaXMubm9kZSgpKTtcbiAgICAgIH1cbiAgICAgIC8vXG4gICAgICAvLyBoYW5kbGUgZGVsZXRlXG4gICAgICBpZiAodGhpcy5jb25maWc/LnR5cGUgPT0gJ2NvbnRhaW5lcicgJiYgZXZlbnQua2V5ID09IFwiSW5zZXJ0XCIpIHtcbiAgICAgICAgdGhpcy5zZXJ2aWNlLnNob3dQaWNrZXIodGhpcy5ub2RlKCkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { AXSafePipe } from '@acorex/core/pipes';
|
|
2
|
+
import { Component, computed, HostBinding, input, ViewEncapsulation } from '@angular/core';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class AXPLayoutDesignerPreviewFrameComponent {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.size = input('xl');
|
|
7
|
+
this.width = computed(() => {
|
|
8
|
+
;
|
|
9
|
+
switch (this.size()) {
|
|
10
|
+
case 'sm':
|
|
11
|
+
return '340px';
|
|
12
|
+
case 'md':
|
|
13
|
+
case 'lg':
|
|
14
|
+
return '768px';
|
|
15
|
+
default:
|
|
16
|
+
return '100%';
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
get __class() {
|
|
21
|
+
const cls = {};
|
|
22
|
+
cls['ax-flex'] = true;
|
|
23
|
+
cls['ax-flex-col'] = true;
|
|
24
|
+
cls['ax-h-full'] = true;
|
|
25
|
+
cls['ax-W-full'] = true;
|
|
26
|
+
cls['lg:ax-p-20'] = true;
|
|
27
|
+
cls['ax-bg-[#f3f3fe]'] = true;
|
|
28
|
+
cls['ax-w-full'] = true;
|
|
29
|
+
cls['ax-items-center'] = true;
|
|
30
|
+
cls['ax-overflow-auto'] = true;
|
|
31
|
+
return cls;
|
|
32
|
+
}
|
|
33
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPLayoutDesignerPreviewFrameComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
34
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.0", type: AXPLayoutDesignerPreviewFrameComponent, isStandalone: true, selector: "axp-layout-preview-frame", inputs: { size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "this.__class" } }, ngImport: i0, template: `
|
|
35
|
+
<div
|
|
36
|
+
class="ax-flex-1 lg:ax-rounded-lg ax-bg-white lg:ax-shadow-md ax-p-2"
|
|
37
|
+
[style.width]="width()"
|
|
38
|
+
style="max-width: 1280px;"
|
|
39
|
+
>
|
|
40
|
+
<iframe
|
|
41
|
+
class="ax-w-full ax-h-full ax-bg-transparent"
|
|
42
|
+
[frameBorder]="0"
|
|
43
|
+
[src]="'/forms/viewer' | safe : 'resourceUrl'"
|
|
44
|
+
>
|
|
45
|
+
</iframe>
|
|
46
|
+
</div>
|
|
47
|
+
`, isInline: true, dependencies: [{ kind: "pipe", type: AXSafePipe, name: "safe" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
48
|
+
}
|
|
49
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPLayoutDesignerPreviewFrameComponent, decorators: [{
|
|
50
|
+
type: Component,
|
|
51
|
+
args: [{
|
|
52
|
+
selector: 'axp-layout-preview-frame',
|
|
53
|
+
template: `
|
|
54
|
+
<div
|
|
55
|
+
class="ax-flex-1 lg:ax-rounded-lg ax-bg-white lg:ax-shadow-md ax-p-2"
|
|
56
|
+
[style.width]="width()"
|
|
57
|
+
style="max-width: 1280px;"
|
|
58
|
+
>
|
|
59
|
+
<iframe
|
|
60
|
+
class="ax-w-full ax-h-full ax-bg-transparent"
|
|
61
|
+
[frameBorder]="0"
|
|
62
|
+
[src]="'/forms/viewer' | safe : 'resourceUrl'"
|
|
63
|
+
>
|
|
64
|
+
</iframe>
|
|
65
|
+
</div>
|
|
66
|
+
`,
|
|
67
|
+
encapsulation: ViewEncapsulation.None,
|
|
68
|
+
standalone: true,
|
|
69
|
+
imports: [AXSafePipe],
|
|
70
|
+
}]
|
|
71
|
+
}], propDecorators: { __class: [{
|
|
72
|
+
type: HostBinding,
|
|
73
|
+
args: ['class']
|
|
74
|
+
}] } });
|
|
75
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJldmlldy1mcmFtZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2xheW91dC9kZXNpZ25lci9zcmMvbGliL3ByZXZpZXcvcHJldmlldy1mcmFtZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBc0IzRixNQUFNLE9BQU8sc0NBQXNDO0lBcEJuRDtRQXFCUyxTQUFJLEdBQUcsS0FBSyxDQUFTLElBQUksQ0FBQyxDQUFDO1FBRXhCLFVBQUssR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQzlCLENBQUM7WUFDRCxRQUFRLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO2dCQUNwQixLQUFLLElBQUk7b0JBQ1AsT0FBTyxPQUFPLENBQUM7Z0JBQ2pCLEtBQUssSUFBSSxDQUFDO2dCQUNWLEtBQUssSUFBSTtvQkFDUCxPQUFPLE9BQU8sQ0FBQztnQkFDakI7b0JBQ0UsT0FBTyxNQUFNLENBQUM7WUFDbEIsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0tBZ0JKO0lBZEMsSUFDWSxPQUFPO1FBQ2pCLE1BQU0sR0FBRyxHQUFRLEVBQUUsQ0FBQztRQUNwQixHQUFHLENBQUMsU0FBUyxDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLEdBQUcsQ0FBQyxhQUFhLENBQUMsR0FBRyxJQUFJLENBQUM7UUFDMUIsR0FBRyxDQUFDLFdBQVcsQ0FBQyxHQUFHLElBQUksQ0FBQztRQUN4QixHQUFHLENBQUMsV0FBVyxDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLEdBQUcsQ0FBQyxZQUFZLENBQUMsR0FBRyxJQUFJLENBQUM7UUFDekIsR0FBRyxDQUFDLGlCQUFpQixDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQzlCLEdBQUcsQ0FBQyxXQUFXLENBQUMsR0FBRyxJQUFJLENBQUM7UUFDeEIsR0FBRyxDQUFDLGlCQUFpQixDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQzlCLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLElBQUksQ0FBQztRQUMvQixPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7OEdBN0JVLHNDQUFzQztrR0FBdEMsc0NBQXNDLHdRQWxCdkM7Ozs7Ozs7Ozs7Ozs7R0FhVCx1REFHUyxVQUFVOzsyRkFFVCxzQ0FBc0M7a0JBcEJsRCxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSwwQkFBMEI7b0JBQ3BDLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7OztHQWFUO29CQUNELGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO29CQUNyQyxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsT0FBTyxFQUFFLENBQUMsVUFBVSxDQUFDO2lCQUN0Qjs4QkFrQmEsT0FBTztzQkFEbEIsV0FBVzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhTYWZlUGlwZSB9IGZyb20gJ0BhY29yZXgvY29yZS9waXBlcyc7XG5pbXBvcnQgeyBDb21wb25lbnQsIGNvbXB1dGVkLCBIb3N0QmluZGluZywgaW5wdXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4cC1sYXlvdXQtcHJldmlldy1mcmFtZScsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJheC1mbGV4LTEgbGc6YXgtcm91bmRlZC1sZyBheC1iZy13aGl0ZSBsZzpheC1zaGFkb3ctbWQgICBheC1wLTJcIlxuICAgICAgW3N0eWxlLndpZHRoXT1cIndpZHRoKClcIlxuICAgICAgc3R5bGU9XCJtYXgtd2lkdGg6IDEyODBweDtcIlxuICAgID5cbiAgICAgIDxpZnJhbWVcbiAgICAgICAgY2xhc3M9XCJheC13LWZ1bGwgYXgtaC1mdWxsIGF4LWJnLXRyYW5zcGFyZW50XCJcbiAgICAgICAgW2ZyYW1lQm9yZGVyXT1cIjBcIlxuICAgICAgICBbc3JjXT1cIicvZm9ybXMvdmlld2VyJyB8IHNhZmUgOiAncmVzb3VyY2VVcmwnXCJcbiAgICAgID5cbiAgICAgIDwvaWZyYW1lPlxuICAgIDwvZGl2PlxuICBgLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQVhTYWZlUGlwZV0sXG59KVxuZXhwb3J0IGNsYXNzIEFYUExheW91dERlc2lnbmVyUHJldmlld0ZyYW1lQ29tcG9uZW50IHtcbiAgcHVibGljIHNpemUgPSBpbnB1dDxzdHJpbmc+KCd4bCcpO1xuXG4gIHByb3RlY3RlZCB3aWR0aCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICA7XG4gICAgc3dpdGNoICh0aGlzLnNpemUoKSkge1xuICAgICAgY2FzZSAnc20nOlxuICAgICAgICByZXR1cm4gJzM0MHB4JztcbiAgICAgIGNhc2UgJ21kJzpcbiAgICAgIGNhc2UgJ2xnJzpcbiAgICAgICAgcmV0dXJuICc3NjhweCc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJzEwMCUnO1xuICAgIH1cbiAgfSk7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gIHByaXZhdGUgZ2V0IF9fY2xhc3MoKTogc3RyaW5nIHtcbiAgICBjb25zdCBjbHM6IGFueSA9IHt9O1xuICAgIGNsc1snYXgtZmxleCddID0gdHJ1ZTtcbiAgICBjbHNbJ2F4LWZsZXgtY29sJ10gPSB0cnVlO1xuICAgIGNsc1snYXgtaC1mdWxsJ10gPSB0cnVlO1xuICAgIGNsc1snYXgtVy1mdWxsJ10gPSB0cnVlO1xuICAgIGNsc1snbGc6YXgtcC0yMCddID0gdHJ1ZTtcbiAgICBjbHNbJ2F4LWJnLVsjZjNmM2ZlXSddID0gdHJ1ZTtcbiAgICBjbHNbJ2F4LXctZnVsbCddID0gdHJ1ZTtcbiAgICBjbHNbJ2F4LWl0ZW1zLWNlbnRlciddID0gdHJ1ZTtcbiAgICBjbHNbJ2F4LW92ZXJmbG93LWF1dG8nXSA9IHRydWU7XG4gICAgcmV0dXJuIGNscztcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { AXPLayoutBuilderModule, AXPWidgetsCatalog } from '@acorex/platform/layout/builder';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { Component, computed, signal, ViewEncapsulation } from '@angular/core';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@acorex/platform/layout/builder";
|
|
6
|
+
export class AXPLayoutDesignerPreviewViewerComponent {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.context = {};
|
|
9
|
+
this.document = signal({ type: AXPWidgetsCatalog.document });
|
|
10
|
+
this.currentPageIndex = signal(0);
|
|
11
|
+
this.currentPage = computed(() => {
|
|
12
|
+
return (this.document().children?.[this.currentPageIndex()] ?? { type: AXPWidgetsCatalog.pageLayout });
|
|
13
|
+
});
|
|
14
|
+
this.channel = new BroadcastChannel('livePreviewChannel');
|
|
15
|
+
this.channel.addEventListener('message', (message) => {
|
|
16
|
+
if (message.data.action == 'designer-preview') {
|
|
17
|
+
this.document.set(message.data.document);
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
if (document.body.parentElement) {
|
|
21
|
+
document.body.parentElement.classList.remove('ax-dark');
|
|
22
|
+
document.body.parentElement.style.backgroundColor = 'unset';
|
|
23
|
+
document.body.style.backgroundColor = 'unset';
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
ngAfterViewInit() {
|
|
27
|
+
this.channel.postMessage({
|
|
28
|
+
action: 'designer-preview-loaded',
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
handleContextChanged(e) {
|
|
32
|
+
this.channel.postMessage({
|
|
33
|
+
action: 'designer-preview-context',
|
|
34
|
+
context: this.context,
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPLayoutDesignerPreviewViewerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
38
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.0", type: AXPLayoutDesignerPreviewViewerComponent, isStandalone: true, selector: "axp-layout-builder-viewer", ngImport: i0, template: `
|
|
39
|
+
<axp-widgets-container [(context)]="context" (onChanged)="handleContextChanged($event)">
|
|
40
|
+
<ng-container axp-widget-renderer [node]="currentPage()" [mode]="'edit'"></ng-container>
|
|
41
|
+
</axp-widgets-container>
|
|
42
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXPLayoutBuilderModule }, { kind: "component", type: i1.AXPWidgetContainerComponent, selector: "axp-widgets-container", inputs: ["context", "variables", "functions"], outputs: ["onChanged", "contextChange"] }, { kind: "directive", type: i1.AXPWidgetRendererDirective, selector: "[axp-widget-renderer]", inputs: ["parentNode", "index", "mode", "node"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
43
|
+
}
|
|
44
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPLayoutDesignerPreviewViewerComponent, decorators: [{
|
|
45
|
+
type: Component,
|
|
46
|
+
args: [{
|
|
47
|
+
selector: 'axp-layout-builder-viewer',
|
|
48
|
+
template: `
|
|
49
|
+
<axp-widgets-container [(context)]="context" (onChanged)="handleContextChanged($event)">
|
|
50
|
+
<ng-container axp-widget-renderer [node]="currentPage()" [mode]="'edit'"></ng-container>
|
|
51
|
+
</axp-widgets-container>
|
|
52
|
+
`,
|
|
53
|
+
encapsulation: ViewEncapsulation.None,
|
|
54
|
+
standalone: true,
|
|
55
|
+
imports: [CommonModule, AXPLayoutBuilderModule],
|
|
56
|
+
}]
|
|
57
|
+
}], ctorParameters: () => [] });
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJldmlldy12aWV3ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9sYXlvdXQvZGVzaWduZXIvc3JjL2xpYi9wcmV2aWV3L3ByZXZpZXctdmlld2VyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsc0JBQXNCLEVBQWlCLGlCQUFpQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDM0csT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBYS9FLE1BQU0sT0FBTyx1Q0FBdUM7SUFjbEQ7UUFiVSxZQUFPLEdBQVEsRUFBRSxDQUFDO1FBRVQsYUFBUSxHQUFHLE1BQU0sQ0FBQyxFQUFFLElBQUksRUFBRSxpQkFBaUIsQ0FBQyxRQUFRLEVBQW1CLENBQUMsQ0FBQztRQUN6RSxxQkFBZ0IsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFN0IsZ0JBQVcsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQzdDLE9BQU8sQ0FDTCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsSUFBSyxFQUFFLElBQUksRUFBRSxpQkFBaUIsQ0FBQyxVQUFVLEVBQW9CLENBQ2pILENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztRQUVLLFlBQU8sR0FBRyxJQUFJLGdCQUFnQixDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFHM0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUNuRCxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLGtCQUFrQixFQUFFLENBQUM7Z0JBQzlDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDM0MsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ2hDLFFBQVEsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDeEQsUUFBUSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLGVBQWUsR0FBRyxPQUFPLENBQUM7WUFDNUQsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZSxHQUFHLE9BQU8sQ0FBQztRQUNoRCxDQUFDO0lBQ0gsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQztZQUN2QixNQUFNLEVBQUUseUJBQXlCO1NBQ2xDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFUyxvQkFBb0IsQ0FBQyxDQUFNO1FBQ25DLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDO1lBQ3ZCLE1BQU0sRUFBRSwwQkFBMEI7WUFDbEMsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO1NBQ3RCLENBQUMsQ0FBQztJQUNMLENBQUM7OEdBdENVLHVDQUF1QztrR0FBdkMsdUNBQXVDLHFGQVR4Qzs7OztHQUlULDJEQUdTLFlBQVksOEJBQUUsc0JBQXNCOzsyRkFFbkMsdUNBQXVDO2tCQVhuRCxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSwyQkFBMkI7b0JBQ3JDLFFBQVEsRUFBRTs7OztHQUlUO29CQUNELGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO29CQUNyQyxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLHNCQUFzQixDQUFDO2lCQUNoRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYUExheW91dEJ1aWxkZXJNb2R1bGUsIEFYUFdpZGdldE5vZGUsIEFYUFdpZGdldHNDYXRhbG9nIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvYnVpbGRlcic7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBjb21wdXRlZCwgc2lnbmFsLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdheHAtbGF5b3V0LWJ1aWxkZXItdmlld2VyJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8YXhwLXdpZGdldHMtY29udGFpbmVyIFsoY29udGV4dCldPVwiY29udGV4dFwiIChvbkNoYW5nZWQpPVwiaGFuZGxlQ29udGV4dENoYW5nZWQoJGV2ZW50KVwiPlxuICAgICAgPG5nLWNvbnRhaW5lciBheHAtd2lkZ2V0LXJlbmRlcmVyIFtub2RlXT1cImN1cnJlbnRQYWdlKClcIiBbbW9kZV09XCInZWRpdCdcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L2F4cC13aWRnZXRzLWNvbnRhaW5lcj5cbiAgYCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgQVhQTGF5b3V0QnVpbGRlck1vZHVsZV0sXG59KVxuZXhwb3J0IGNsYXNzIEFYUExheW91dERlc2lnbmVyUHJldmlld1ZpZXdlckNvbXBvbmVudCB7XG4gIHByb3RlY3RlZCBjb250ZXh0OiBhbnkgPSB7fTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZG9jdW1lbnQgPSBzaWduYWwoeyB0eXBlOiBBWFBXaWRnZXRzQ2F0YWxvZy5kb2N1bWVudCB9IGFzIEFYUFdpZGdldE5vZGUpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY3VycmVudFBhZ2VJbmRleCA9IHNpZ25hbCgwKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY3VycmVudFBhZ2UgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuZG9jdW1lbnQoKS5jaGlsZHJlbj8uW3RoaXMuY3VycmVudFBhZ2VJbmRleCgpXSA/PyAoeyB0eXBlOiBBWFBXaWRnZXRzQ2F0YWxvZy5wYWdlTGF5b3V0IH0gYXMgQVhQV2lkZ2V0Tm9kZSlcbiAgICApO1xuICB9KTtcblxuICBwcml2YXRlIGNoYW5uZWwgPSBuZXcgQnJvYWRjYXN0Q2hhbm5lbCgnbGl2ZVByZXZpZXdDaGFubmVsJyk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5jaGFubmVsLmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCAobWVzc2FnZSkgPT4ge1xuICAgICAgaWYgKG1lc3NhZ2UuZGF0YS5hY3Rpb24gPT0gJ2Rlc2lnbmVyLXByZXZpZXcnKSB7XG4gICAgICAgIHRoaXMuZG9jdW1lbnQuc2V0KG1lc3NhZ2UuZGF0YS5kb2N1bWVudCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaWYgKGRvY3VtZW50LmJvZHkucGFyZW50RWxlbWVudCkge1xuICAgICAgZG9jdW1lbnQuYm9keS5wYXJlbnRFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoJ2F4LWRhcmsnKTtcbiAgICAgIGRvY3VtZW50LmJvZHkucGFyZW50RWxlbWVudC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAndW5zZXQnO1xuICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAndW5zZXQnO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLmNoYW5uZWwucG9zdE1lc3NhZ2Uoe1xuICAgICAgYWN0aW9uOiAnZGVzaWduZXItcHJldmlldy1sb2FkZWQnLFxuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZUNvbnRleHRDaGFuZ2VkKGU6IGFueSkge1xuICAgIHRoaXMuY2hhbm5lbC5wb3N0TWVzc2FnZSh7XG4gICAgICBhY3Rpb246ICdkZXNpZ25lci1wcmV2aWV3LWNvbnRleHQnLFxuICAgICAgY29udGV4dDogdGhpcy5jb250ZXh0LFxuICAgIH0pO1xuICB9XG59XG4iXX0=
|