@wavemaker-ai/app-ng-runtime 1.0.0-rc.647469
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/build-task/.npmignore +2 -0
- package/build-task/advanced/carousel/carousel-template/carousel-template.build.d.ts +2 -0
- package/build-task/advanced/carousel/carousel.build.d.ts +2 -0
- package/build-task/advanced/custom-widget-container/custom-widget-container.build.d.ts +2 -0
- package/build-task/advanced/custom-widget-wrapper/custom-widget-wrapper.build.d.ts +2 -0
- package/build-task/advanced/login/login.build.d.ts +2 -0
- package/build-task/advanced/marquee/marquee.build.d.ts +2 -0
- package/build-task/basic/anchor/anchor.build.d.ts +2 -0
- package/build-task/basic/audio/audio.build.d.ts +2 -0
- package/build-task/basic/html/html.build.d.ts +2 -0
- package/build-task/basic/icon/icon.build.d.ts +2 -0
- package/build-task/basic/iframe/iframe.build.d.ts +2 -0
- package/build-task/basic/label/label.build.d.ts +2 -0
- package/build-task/basic/picture/picture.build.d.ts +2 -0
- package/build-task/basic/progress/progress-bar/progress-bar.build.d.ts +2 -0
- package/build-task/basic/progress/progress-circle/progress-circle.build.d.ts +2 -0
- package/build-task/basic/rich-text-editor/rich-text-editor.build.d.ts +2 -0
- package/build-task/basic/search/search.build.d.ts +2 -0
- package/build-task/basic/spinner/spinner.build.d.ts +2 -0
- package/build-task/basic/tree/tree.build.d.ts +1 -0
- package/build-task/basic/video/video.build.d.ts +2 -0
- package/build-task/bundles/index.umd.js +3106 -0
- package/build-task/chart/chart.build.d.ts +2 -0
- package/build-task/containers/accordion/accordion-pane/accordion-pane.build.d.ts +2 -0
- package/build-task/containers/accordion/accordion.build.d.ts +2 -0
- package/build-task/containers/container.build.d.ts +2 -0
- package/build-task/containers/layout-grid/layout-grid-column/layout-grid-column.build.d.ts +2 -0
- package/build-task/containers/layout-grid/layout-grid-row/layout-grid-row.build.d.ts +2 -0
- package/build-task/containers/layout-grid/layout-grid.build.d.ts +2 -0
- package/build-task/containers/linear-layout/linear-layout-item/linear-layout-item.build.d.ts +2 -0
- package/build-task/containers/linear-layout/linear-layout.build.d.ts +2 -0
- package/build-task/containers/panel/panel.build.d.ts +2 -0
- package/build-task/containers/repeat-template.build.d.ts +2 -0
- package/build-task/containers/segmented-control/segment-content/segment-content.build.d.ts +2 -0
- package/build-task/containers/segmented-control/segmented-control.build.d.ts +2 -0
- package/build-task/containers/tabs/tab-pane/tab-pane.build.d.ts +2 -0
- package/build-task/containers/tabs/tabs.build.d.ts +2 -0
- package/build-task/containers/tile/tile.build.d.ts +2 -0
- package/build-task/containers/wizard/wizard-action/wizard-action.build.d.ts +2 -0
- package/build-task/containers/wizard/wizard-step/wizard-step.build.d.ts +2 -0
- package/build-task/containers/wizard/wizard.build.d.ts +2 -0
- package/build-task/data/card/card-actions/card-actions.build.d.ts +2 -0
- package/build-task/data/card/card-content/card-content.build.d.ts +2 -0
- package/build-task/data/card/card-footer/card-footer.build.d.ts +2 -0
- package/build-task/data/card/card.build.d.ts +2 -0
- package/build-task/data/form/form-action/form-action.build.d.ts +2 -0
- package/build-task/data/form/form-field/form-field.build.d.ts +2 -0
- package/build-task/data/form/form.build.d.ts +2 -0
- package/build-task/data/list/list.build.d.ts +2 -0
- package/build-task/data/live-table/live-table.build.d.ts +2 -0
- package/build-task/data/media-list/media-list-item/media-list-item.build.d.ts +2 -0
- package/build-task/data/media-list/media-list.build.d.ts +2 -0
- package/build-task/data/pagination/pagination.build.d.ts +2 -0
- package/build-task/data/table/table-action/table-action.build.d.ts +2 -0
- package/build-task/data/table/table-column/table-column.build.d.ts +2 -0
- package/build-task/data/table/table-column-group/table-column-group.build.d.ts +2 -0
- package/build-task/data/table/table-row/table-row.build.d.ts +2 -0
- package/build-task/data/table/table-row-action/table-row-action.build.d.ts +2 -0
- package/build-task/data/table/table.build.d.ts +2 -0
- package/build-task/device/barcode-scanner/barcode-scanner.build.d.ts +2 -0
- package/build-task/device/camera/camera.build.d.ts +2 -0
- package/build-task/dialogs/alert-dialog/alert-dialog.build.d.ts +2 -0
- package/build-task/dialogs/base/dialog-footer/dialog-footer.build.d.ts +2 -0
- package/build-task/dialogs/confirm-dialog/confirm-dialog.build.d.ts +2 -0
- package/build-task/dialogs/design-dialog/dialog.build.d.ts +2 -0
- package/build-task/dialogs/iframe-dialog/iframe-dialog.build.d.ts +2 -0
- package/build-task/dialogs/login-dialog/login-dialog.build.d.ts +2 -0
- package/build-task/dialogs/partial-dialog/partial-dialog.build.d.ts +2 -0
- package/build-task/esm2022/advanced/carousel/carousel-template/carousel-template.build.mjs +31 -0
- package/build-task/esm2022/advanced/carousel/carousel.build.mjs +45 -0
- package/build-task/esm2022/advanced/custom-widget-container/custom-widget-container.build.mjs +15 -0
- package/build-task/esm2022/advanced/custom-widget-wrapper/custom-widget-wrapper.build.mjs +26 -0
- package/build-task/esm2022/advanced/login/login.build.mjs +15 -0
- package/build-task/esm2022/advanced/marquee/marquee.build.mjs +10 -0
- package/build-task/esm2022/basic/anchor/anchor.build.mjs +15 -0
- package/build-task/esm2022/basic/audio/audio.build.mjs +10 -0
- package/build-task/esm2022/basic/html/html.build.mjs +15 -0
- package/build-task/esm2022/basic/icon/icon.build.mjs +10 -0
- package/build-task/esm2022/basic/iframe/iframe.build.mjs +10 -0
- package/build-task/esm2022/basic/label/label.build.mjs +25 -0
- package/build-task/esm2022/basic/picture/picture.build.mjs +14 -0
- package/build-task/esm2022/basic/progress/progress-bar/progress-bar.build.mjs +35 -0
- package/build-task/esm2022/basic/progress/progress-circle/progress-circle.build.mjs +15 -0
- package/build-task/esm2022/basic/rich-text-editor/rich-text-editor.build.mjs +15 -0
- package/build-task/esm2022/basic/search/search.build.mjs +11 -0
- package/build-task/esm2022/basic/spinner/spinner.build.mjs +15 -0
- package/build-task/esm2022/basic/tree/tree.build.mjs +9 -0
- package/build-task/esm2022/basic/video/video.build.mjs +10 -0
- package/build-task/esm2022/chart/chart.build.mjs +10 -0
- package/build-task/esm2022/containers/accordion/accordion-pane/accordion-pane.build.mjs +15 -0
- package/build-task/esm2022/containers/accordion/accordion.build.mjs +40 -0
- package/build-task/esm2022/containers/container.build.mjs +10 -0
- package/build-task/esm2022/containers/layout-grid/layout-grid-column/layout-grid-column.build.mjs +10 -0
- package/build-task/esm2022/containers/layout-grid/layout-grid-row/layout-grid-row.build.mjs +10 -0
- package/build-task/esm2022/containers/layout-grid/layout-grid.build.mjs +10 -0
- package/build-task/esm2022/containers/linear-layout/linear-layout-item/linear-layout-item.build.mjs +10 -0
- package/build-task/esm2022/containers/linear-layout/linear-layout.build.mjs +21 -0
- package/build-task/esm2022/containers/panel/panel.build.mjs +21 -0
- package/build-task/esm2022/containers/repeat-template.build.mjs +26 -0
- package/build-task/esm2022/containers/segmented-control/segment-content/segment-content.build.mjs +10 -0
- package/build-task/esm2022/containers/segmented-control/segmented-control.build.mjs +10 -0
- package/build-task/esm2022/containers/tabs/tab-pane/tab-pane.build.mjs +10 -0
- package/build-task/esm2022/containers/tabs/tabs.build.mjs +40 -0
- package/build-task/esm2022/containers/tile/tile.build.mjs +10 -0
- package/build-task/esm2022/containers/wizard/wizard-action/wizard-action.build.mjs +10 -0
- package/build-task/esm2022/containers/wizard/wizard-step/wizard-step.build.mjs +16 -0
- package/build-task/esm2022/containers/wizard/wizard.build.mjs +39 -0
- package/build-task/esm2022/data/card/card-actions/card-actions.build.mjs +10 -0
- package/build-task/esm2022/data/card/card-content/card-content.build.mjs +10 -0
- package/build-task/esm2022/data/card/card-footer/card-footer.build.mjs +10 -0
- package/build-task/esm2022/data/card/card.build.mjs +10 -0
- package/build-task/esm2022/data/form/form-action/form-action.build.mjs +12 -0
- package/build-task/esm2022/data/form/form-field/form-field.build.mjs +173 -0
- package/build-task/esm2022/data/form/form.build.mjs +161 -0
- package/build-task/esm2022/data/list/list.build.mjs +89 -0
- package/build-task/esm2022/data/live-table/live-table.build.mjs +21 -0
- package/build-task/esm2022/data/media-list/media-list-item/media-list-item.build.mjs +10 -0
- package/build-task/esm2022/data/media-list/media-list.build.mjs +57 -0
- package/build-task/esm2022/data/pagination/pagination.build.mjs +10 -0
- package/build-task/esm2022/data/table/table-action/table-action.build.mjs +10 -0
- package/build-task/esm2022/data/table/table-column/table-column.build.mjs +294 -0
- package/build-task/esm2022/data/table/table-column-group/table-column-group.build.mjs +10 -0
- package/build-task/esm2022/data/table/table-row/table-row.build.mjs +34 -0
- package/build-task/esm2022/data/table/table-row-action/table-row-action.build.mjs +41 -0
- package/build-task/esm2022/data/table/table.build.mjs +86 -0
- package/build-task/esm2022/device/barcode-scanner/barcode-scanner.build.mjs +15 -0
- package/build-task/esm2022/device/camera/camera.build.mjs +15 -0
- package/build-task/esm2022/dialogs/alert-dialog/alert-dialog.build.mjs +10 -0
- package/build-task/esm2022/dialogs/base/dialog-footer/dialog-footer.build.mjs +10 -0
- package/build-task/esm2022/dialogs/confirm-dialog/confirm-dialog.build.mjs +10 -0
- package/build-task/esm2022/dialogs/design-dialog/dialog.build.mjs +17 -0
- package/build-task/esm2022/dialogs/iframe-dialog/iframe-dialog.build.mjs +10 -0
- package/build-task/esm2022/dialogs/login-dialog/login-dialog.build.mjs +10 -0
- package/build-task/esm2022/dialogs/partial-dialog/partial-dialog.build.mjs +40 -0
- package/build-task/esm2022/index.mjs +5 -0
- package/build-task/esm2022/input/calendar/calendar.build.mjs +13 -0
- package/build-task/esm2022/input/chips/chips.build.mjs +11 -0
- package/build-task/esm2022/input/color-picker/color-picker.build.mjs +11 -0
- package/build-task/esm2022/input/currency/currency.build.mjs +11 -0
- package/build-task/esm2022/input/default/button/button.build.mjs +15 -0
- package/build-task/esm2022/input/default/button-group/button-group.build.mjs +10 -0
- package/build-task/esm2022/input/default/checkbox/checkbox.build.mjs +18 -0
- package/build-task/esm2022/input/default/checkboxset/checkboxset.build.mjs +11 -0
- package/build-task/esm2022/input/default/composite/composite.build.mjs +10 -0
- package/build-task/esm2022/input/default/number/number.build.mjs +11 -0
- package/build-task/esm2022/input/default/radioset/radioset.build.mjs +15 -0
- package/build-task/esm2022/input/default/select/select.build.mjs +11 -0
- package/build-task/esm2022/input/default/switch/switch.build.mjs +15 -0
- package/build-task/esm2022/input/default/text/text.build.mjs +11 -0
- package/build-task/esm2022/input/default/textarea/textarea.build.mjs +11 -0
- package/build-task/esm2022/input/epoch/date/date.build.mjs +11 -0
- package/build-task/esm2022/input/epoch/date-time/date-time.build.mjs +11 -0
- package/build-task/esm2022/input/epoch/time/time.build.mjs +11 -0
- package/build-task/esm2022/input/file-upload/file-upload.build.mjs +20 -0
- package/build-task/esm2022/input/rating/rating.build.mjs +11 -0
- package/build-task/esm2022/input/slider/slider.build.mjs +11 -0
- package/build-task/esm2022/message/message.build.mjs +15 -0
- package/build-task/esm2022/navigation/breadcrumb/breadcrumb.build.mjs +10 -0
- package/build-task/esm2022/navigation/menu/menu.build.mjs +27 -0
- package/build-task/esm2022/navigation/nav/nav-item/nav-item.build.mjs +10 -0
- package/build-task/esm2022/navigation/nav/nav.build.mjs +10 -0
- package/build-task/esm2022/navigation/navbar/navbar.build.mjs +10 -0
- package/build-task/esm2022/navigation/popover/popover.build.mjs +41 -0
- package/build-task/esm2022/page/content/content.build.mjs +10 -0
- package/build-task/esm2022/page/footer/footer.build.mjs +15 -0
- package/build-task/esm2022/page/header/header.build.mjs +15 -0
- package/build-task/esm2022/page/layout.build.mjs +15 -0
- package/build-task/esm2022/page/left-panel/left-panel.build.mjs +15 -0
- package/build-task/esm2022/page/mobile-navbar/mobile-navbar.build.mjs +10 -0
- package/build-task/esm2022/page/page-content/page-content.build.mjs +36 -0
- package/build-task/esm2022/page/page.build.mjs +59 -0
- package/build-task/esm2022/page/right-panel/right-panel.build.mjs +15 -0
- package/build-task/esm2022/page/router-outlet/router-outlet.build.mjs +10 -0
- package/build-task/esm2022/page/tab-bar/tab-bar.build.mjs +10 -0
- package/build-task/esm2022/page/top-nav/top-nav.build.mjs +15 -0
- package/build-task/esm2022/partial/partial.build.mjs +25 -0
- package/build-task/esm2022/partial-param/partial-param.build.mjs +10 -0
- package/build-task/esm2022/prefab/prefab-container/prefab-container.build.mjs +25 -0
- package/build-task/esm2022/prefab/prefab.build.mjs +10 -0
- package/build-task/esm2022/public_api.mjs +113 -0
- package/build-task/esm2022/utils/utils.mjs +69 -0
- package/build-task/fesm2022/index.mjs +2998 -0
- package/build-task/fesm2022/index.mjs.map +1 -0
- package/build-task/index.d.ts +5 -0
- package/build-task/input/calendar/calendar.build.d.ts +2 -0
- package/build-task/input/chips/chips.build.d.ts +2 -0
- package/build-task/input/color-picker/color-picker.build.d.ts +2 -0
- package/build-task/input/currency/currency.build.d.ts +2 -0
- package/build-task/input/default/button/button.build.d.ts +2 -0
- package/build-task/input/default/button-group/button-group.build.d.ts +2 -0
- package/build-task/input/default/checkbox/checkbox.build.d.ts +2 -0
- package/build-task/input/default/checkboxset/checkboxset.build.d.ts +2 -0
- package/build-task/input/default/composite/composite.build.d.ts +2 -0
- package/build-task/input/default/number/number.build.d.ts +2 -0
- package/build-task/input/default/radioset/radioset.build.d.ts +2 -0
- package/build-task/input/default/select/select.build.d.ts +2 -0
- package/build-task/input/default/switch/switch.build.d.ts +2 -0
- package/build-task/input/default/text/text.build.d.ts +2 -0
- package/build-task/input/default/textarea/textarea.build.d.ts +2 -0
- package/build-task/input/epoch/date/date.build.d.ts +2 -0
- package/build-task/input/epoch/date-time/date-time.build.d.ts +2 -0
- package/build-task/input/epoch/time/time.build.d.ts +2 -0
- package/build-task/input/file-upload/file-upload.build.d.ts +2 -0
- package/build-task/input/rating/rating.build.d.ts +2 -0
- package/build-task/input/slider/slider.build.d.ts +2 -0
- package/build-task/message/message.build.d.ts +2 -0
- package/build-task/navigation/breadcrumb/breadcrumb.build.d.ts +2 -0
- package/build-task/navigation/menu/menu.build.d.ts +2 -0
- package/build-task/navigation/nav/nav-item/nav-item.build.d.ts +2 -0
- package/build-task/navigation/nav/nav.build.d.ts +2 -0
- package/build-task/navigation/navbar/navbar.build.d.ts +2 -0
- package/build-task/navigation/popover/popover.build.d.ts +2 -0
- package/build-task/package.json +25 -0
- package/build-task/page/content/content.build.d.ts +2 -0
- package/build-task/page/footer/footer.build.d.ts +2 -0
- package/build-task/page/header/header.build.d.ts +2 -0
- package/build-task/page/layout.build.d.ts +2 -0
- package/build-task/page/left-panel/left-panel.build.d.ts +2 -0
- package/build-task/page/mobile-navbar/mobile-navbar.build.d.ts +2 -0
- package/build-task/page/page-content/page-content.build.d.ts +2 -0
- package/build-task/page/page.build.d.ts +2 -0
- package/build-task/page/right-panel/right-panel.build.d.ts +2 -0
- package/build-task/page/router-outlet/router-outlet.build.d.ts +2 -0
- package/build-task/page/tab-bar/tab-bar.build.d.ts +2 -0
- package/build-task/page/top-nav/top-nav.build.d.ts +2 -0
- package/build-task/partial/partial.build.d.ts +2 -0
- package/build-task/partial-param/partial-param.build.d.ts +2 -0
- package/build-task/prefab/prefab-container/prefab-container.build.d.ts +2 -0
- package/build-task/prefab/prefab.build.d.ts +2 -0
- package/build-task/public_api.d.ts +112 -0
- package/build-task/utils/utils.d.ts +21 -0
- package/components/advanced/carousel/.npmignore +2 -0
- package/components/advanced/carousel/bundles/index.umd.js +352 -0
- package/components/advanced/carousel/carousel-template/carousel-template.directive.d.ts +9 -0
- package/components/advanced/carousel/carousel-template/carousel-template.props.d.ts +1 -0
- package/components/advanced/carousel/carousel.animator.d.ts +45 -0
- package/components/advanced/carousel/carousel.directive.d.ts +35 -0
- package/components/advanced/carousel/carousel.props.d.ts +1 -0
- package/components/advanced/carousel/esm2022/carousel-template/carousel-template.directive.mjs +32 -0
- package/components/advanced/carousel/esm2022/carousel-template/carousel-template.props.mjs +7 -0
- package/components/advanced/carousel/esm2022/carousel.animator.mjs +149 -0
- package/components/advanced/carousel/esm2022/carousel.directive.mjs +135 -0
- package/components/advanced/carousel/esm2022/carousel.props.mjs +13 -0
- package/components/advanced/carousel/esm2022/index.mjs +5 -0
- package/components/advanced/carousel/esm2022/public_api.mjs +4 -0
- package/components/advanced/carousel/fesm2022/index.mjs +335 -0
- package/components/advanced/carousel/fesm2022/index.mjs.map +1 -0
- package/components/advanced/carousel/index.d.ts +5 -0
- package/components/advanced/carousel/package.json +20 -0
- package/components/advanced/carousel/public_api.d.ts +3 -0
- package/components/advanced/custom/.npmignore +2 -0
- package/components/advanced/custom/bundles/index.umd.js +258 -0
- package/components/advanced/custom/custom-widget-container/custom-widget-container.directive.d.ts +29 -0
- package/components/advanced/custom/custom-widget-container/custom-widget.props.d.ts +2 -0
- package/components/advanced/custom/custom-widget-prop.d.ts +1 -0
- package/components/advanced/custom/custom-widget.directive.d.ts +19 -0
- package/components/advanced/custom/esm2022/custom-widget-container/custom-widget-container.directive.mjs +156 -0
- package/components/advanced/custom/esm2022/custom-widget-container/custom-widget.props.mjs +12 -0
- package/components/advanced/custom/esm2022/custom-widget-prop.mjs +8 -0
- package/components/advanced/custom/esm2022/custom-widget.directive.mjs +70 -0
- package/components/advanced/custom/esm2022/index.mjs +5 -0
- package/components/advanced/custom/esm2022/public_api.mjs +3 -0
- package/components/advanced/custom/fesm2022/index.mjs +244 -0
- package/components/advanced/custom/fesm2022/index.mjs.map +1 -0
- package/components/advanced/custom/index.d.ts +5 -0
- package/components/advanced/custom/package.json +20 -0
- package/components/advanced/custom/public_api.d.ts +2 -0
- package/components/advanced/login/.npmignore +2 -0
- package/components/advanced/login/bundles/index.umd.js +135 -0
- package/components/advanced/login/esm2022/index.mjs +5 -0
- package/components/advanced/login/esm2022/login.component.mjs +107 -0
- package/components/advanced/login/esm2022/login.props.mjs +8 -0
- package/components/advanced/login/esm2022/public_api.mjs +2 -0
- package/components/advanced/login/fesm2022/index.mjs +120 -0
- package/components/advanced/login/fesm2022/index.mjs.map +1 -0
- package/components/advanced/login/index.d.ts +5 -0
- package/components/advanced/login/login.component.d.ts +31 -0
- package/components/advanced/login/login.props.d.ts +1 -0
- package/components/advanced/login/package.json +20 -0
- package/components/advanced/login/public_api.d.ts +1 -0
- package/components/advanced/marquee/.npmignore +2 -0
- package/components/advanced/marquee/bundles/index.umd.js +71 -0
- package/components/advanced/marquee/esm2022/index.mjs +5 -0
- package/components/advanced/marquee/esm2022/marquee.directive.mjs +36 -0
- package/components/advanced/marquee/esm2022/marquee.props.mjs +12 -0
- package/components/advanced/marquee/esm2022/public_api.mjs +2 -0
- package/components/advanced/marquee/fesm2022/index.mjs +53 -0
- package/components/advanced/marquee/fesm2022/index.mjs.map +1 -0
- package/components/advanced/marquee/index.d.ts +5 -0
- package/components/advanced/marquee/marquee.directive.d.ts +9 -0
- package/components/advanced/marquee/marquee.props.d.ts +1 -0
- package/components/advanced/marquee/package.json +20 -0
- package/components/advanced/marquee/public_api.d.ts +1 -0
- package/components/base/.npmignore +2 -0
- package/components/base/bundles/index.umd.js +5982 -0
- package/components/base/decorators/autolayout.decorator.d.ts +4 -0
- package/components/base/decorators/autolayout.props.d.ts +1 -0
- package/components/base/directives/show-in-device.directive.d.ts +16 -0
- package/components/base/esm2022/decorators/autolayout.decorator.mjs +476 -0
- package/components/base/esm2022/decorators/autolayout.props.mjs +20 -0
- package/components/base/esm2022/directives/show-in-device.directive.mjs +90 -0
- package/components/base/esm2022/index.mjs +5 -0
- package/components/base/esm2022/pipes/custom-pipes.mjs +473 -0
- package/components/base/esm2022/pipes/image.pipe.mjs +19 -0
- package/components/base/esm2022/pipes/sanitize.pipe.mjs +44 -0
- package/components/base/esm2022/pipes/trust-as.pipe.mjs +41 -0
- package/components/base/esm2022/pipes/wm-pipe.mjs +18 -0
- package/components/base/esm2022/public_api.mjs +36 -0
- package/components/base/esm2022/utils/autolayout-utils.mjs +261 -0
- package/components/base/esm2022/utils/data-utils.mjs +581 -0
- package/components/base/esm2022/utils/form-utils.mjs +451 -0
- package/components/base/esm2022/utils/live-utils.mjs +216 -0
- package/components/base/esm2022/utils/widget-utils.mjs +495 -0
- package/components/base/esm2022/widgets/common/base/base-container.component.mjs +80 -0
- package/components/base/esm2022/widgets/common/base/base-field-validations.mjs +295 -0
- package/components/base/esm2022/widgets/common/base/base.component.mjs +713 -0
- package/components/base/esm2022/widgets/common/base/custom-widget-container.directive.mjs +48 -0
- package/components/base/esm2022/widgets/common/base/dataset-aware-nav.component.mjs +222 -0
- package/components/base/esm2022/widgets/common/base/partial-container.directive.mjs +115 -0
- package/components/base/esm2022/widgets/common/base/stylable.component.mjs +11 -0
- package/components/base/esm2022/widgets/common/base/text-content.directive.mjs +26 -0
- package/components/base/esm2022/widgets/common/container/container.directive.mjs +51 -0
- package/components/base/esm2022/widgets/common/container/container.props.mjs +15 -0
- package/components/base/esm2022/widgets/common/dialog/dialog.service.mjs +170 -0
- package/components/base/esm2022/widgets/common/item-template/item-template.directive.mjs +89 -0
- package/components/base/esm2022/widgets/common/item-template/item-template.props.mjs +7 -0
- package/components/base/esm2022/widgets/common/lazy-load/lazy-load.directive.mjs +84 -0
- package/components/base/esm2022/widgets/common/message/message.component.mjs +104 -0
- package/components/base/esm2022/widgets/common/message/message.props.mjs +13 -0
- package/components/base/esm2022/widgets/common/partial/partial.directive.mjs +53 -0
- package/components/base/esm2022/widgets/common/partial/partial.props.mjs +7 -0
- package/components/base/esm2022/widgets/common/partial-param/partial-param.directive.mjs +88 -0
- package/components/base/esm2022/widgets/common/pull-to-refresh/pull-to-refresh.mjs +261 -0
- package/components/base/esm2022/widgets/common/redraw/redrawable.directive.mjs +40 -0
- package/components/base/esm2022/widgets/common/repeat-template/repeat-template.directive.mjs +33 -0
- package/components/base/esm2022/widgets/common/repeat-template/repeat-template.props.mjs +7 -0
- package/components/base/esm2022/widgets/framework/constants.mjs +36 -0
- package/components/base/esm2022/widgets/framework/deviceview.mjs +126 -0
- package/components/base/esm2022/widgets/framework/property-change-handler.mjs +96 -0
- package/components/base/esm2022/widgets/framework/styler.mjs +123 -0
- package/components/base/esm2022/widgets/framework/types.mjs +8 -0
- package/components/base/esm2022/widgets/framework/widget-id-generator.mjs +3 -0
- package/components/base/esm2022/widgets/framework/widget-props.mjs +35 -0
- package/components/base/esm2022/widgets/framework/widget-proxy-provider.mjs +75 -0
- package/components/base/esm2022/widgets/framework/widget-registry.mjs +49 -0
- package/components/base/fesm2022/index.mjs +5858 -0
- package/components/base/fesm2022/index.mjs.map +1 -0
- package/components/base/index.d.ts +5 -0
- package/components/base/package.json +28 -0
- package/components/base/pipes/custom-pipes.d.ts +104 -0
- package/components/base/pipes/image.pipe.d.ts +7 -0
- package/components/base/pipes/sanitize.pipe.d.ts +10 -0
- package/components/base/pipes/trust-as.pipe.d.ts +10 -0
- package/components/base/pipes/wm-pipe.d.ts +9 -0
- package/components/base/public_api.d.ts +35 -0
- package/components/base/utils/autolayout-utils.d.ts +29 -0
- package/components/base/utils/data-utils.d.ts +181 -0
- package/components/base/utils/form-utils.d.ts +85 -0
- package/components/base/utils/live-utils.d.ts +65 -0
- package/components/base/utils/widget-utils.d.ts +120 -0
- package/components/base/widgets/common/base/base-container.component.d.ts +16 -0
- package/components/base/widgets/common/base/base-field-validations.d.ts +27 -0
- package/components/base/widgets/common/base/base.component.d.ts +276 -0
- package/components/base/widgets/common/base/custom-widget-container.directive.d.ts +15 -0
- package/components/base/widgets/common/base/dataset-aware-nav.component.d.ts +77 -0
- package/components/base/widgets/common/base/partial-container.directive.d.ts +22 -0
- package/components/base/widgets/common/base/stylable.component.d.ts +54 -0
- package/components/base/widgets/common/base/text-content.directive.d.ts +9 -0
- package/components/base/widgets/common/container/container.directive.d.ts +12 -0
- package/components/base/widgets/common/container/container.props.d.ts +1 -0
- package/components/base/widgets/common/dialog/dialog.service.d.ts +54 -0
- package/components/base/widgets/common/item-template/item-template.directive.d.ts +32 -0
- package/components/base/widgets/common/item-template/item-template.props.d.ts +1 -0
- package/components/base/widgets/common/lazy-load/lazy-load.directive.d.ts +15 -0
- package/components/base/widgets/common/message/message.component.d.ts +19 -0
- package/components/base/widgets/common/message/message.props.d.ts +1 -0
- package/components/base/widgets/common/partial/partial.directive.d.ts +15 -0
- package/components/base/widgets/common/partial/partial.props.d.ts +1 -0
- package/components/base/widgets/common/partial-param/partial-param.directive.d.ts +21 -0
- package/components/base/widgets/common/pull-to-refresh/pull-to-refresh.d.ts +48 -0
- package/components/base/widgets/common/redraw/redrawable.directive.d.ts +8 -0
- package/components/base/widgets/common/repeat-template/repeat-template.directive.d.ts +9 -0
- package/components/base/widgets/common/repeat-template/repeat-template.props.d.ts +1 -0
- package/components/base/widgets/framework/constants.d.ts +16 -0
- package/components/base/widgets/framework/deviceview.d.ts +1 -0
- package/components/base/widgets/framework/property-change-handler.d.ts +8 -0
- package/components/base/widgets/framework/styler.d.ts +59 -0
- package/components/base/widgets/framework/types.d.ts +23 -0
- package/components/base/widgets/framework/widget-id-generator.d.ts +2 -0
- package/components/base/widgets/framework/widget-props.d.ts +12 -0
- package/components/base/widgets/framework/widget-proxy-provider.d.ts +11 -0
- package/components/base/widgets/framework/widget-registry.d.ts +14 -0
- package/components/basic/anchor/.npmignore +2 -0
- package/components/basic/anchor/anchor.component.d.ts +37 -0
- package/components/basic/anchor/anchor.props.d.ts +1 -0
- package/components/basic/anchor/bundles/index.umd.js +204 -0
- package/components/basic/anchor/esm2022/anchor.component.mjs +155 -0
- package/components/basic/anchor/esm2022/anchor.props.mjs +27 -0
- package/components/basic/anchor/esm2022/index.mjs +5 -0
- package/components/basic/anchor/esm2022/public_api.mjs +2 -0
- package/components/basic/anchor/fesm2022/index.mjs +187 -0
- package/components/basic/anchor/fesm2022/index.mjs.map +1 -0
- package/components/basic/anchor/index.d.ts +5 -0
- package/components/basic/anchor/package.json +20 -0
- package/components/basic/anchor/public_api.d.ts +1 -0
- package/components/basic/audio/.npmignore +2 -0
- package/components/basic/audio/audio.component.d.ts +20 -0
- package/components/basic/audio/audio.props.d.ts +1 -0
- package/components/basic/audio/bundles/index.umd.js +83 -0
- package/components/basic/audio/esm2022/audio.component.mjs +41 -0
- package/components/basic/audio/esm2022/audio.props.mjs +19 -0
- package/components/basic/audio/esm2022/index.mjs +5 -0
- package/components/basic/audio/esm2022/public_api.mjs +2 -0
- package/components/basic/audio/fesm2022/index.mjs +65 -0
- package/components/basic/audio/fesm2022/index.mjs.map +1 -0
- package/components/basic/audio/index.d.ts +5 -0
- package/components/basic/audio/package.json +20 -0
- package/components/basic/audio/public_api.d.ts +1 -0
- package/components/basic/html/.npmignore +2 -0
- package/components/basic/html/bundles/index.umd.js +122 -0
- package/components/basic/html/esm2022/html.directive.mjs +88 -0
- package/components/basic/html/esm2022/html.props.mjs +12 -0
- package/components/basic/html/esm2022/index.mjs +5 -0
- package/components/basic/html/esm2022/public_api.mjs +2 -0
- package/components/basic/html/fesm2022/index.mjs +105 -0
- package/components/basic/html/fesm2022/index.mjs.map +1 -0
- package/components/basic/html/html.directive.d.ts +14 -0
- package/components/basic/html/html.props.d.ts +1 -0
- package/components/basic/html/index.d.ts +5 -0
- package/components/basic/html/package.json +20 -0
- package/components/basic/html/public_api.d.ts +1 -0
- package/components/basic/icon/.npmignore +2 -0
- package/components/basic/icon/bundles/index.umd.js +80 -0
- package/components/basic/icon/esm2022/icon.component.mjs +38 -0
- package/components/basic/icon/esm2022/icon.props.mjs +19 -0
- package/components/basic/icon/esm2022/index.mjs +5 -0
- package/components/basic/icon/esm2022/public_api.mjs +2 -0
- package/components/basic/icon/fesm2022/index.mjs +62 -0
- package/components/basic/icon/fesm2022/index.mjs.map +1 -0
- package/components/basic/icon/icon.component.d.ts +15 -0
- package/components/basic/icon/icon.props.d.ts +1 -0
- package/components/basic/icon/index.d.ts +5 -0
- package/components/basic/icon/package.json +20 -0
- package/components/basic/icon/public_api.d.ts +1 -0
- package/components/basic/iframe/.npmignore +2 -0
- package/components/basic/iframe/bundles/index.umd.js +101 -0
- package/components/basic/iframe/esm2022/iframe.component.mjs +65 -0
- package/components/basic/iframe/esm2022/iframe.props.mjs +15 -0
- package/components/basic/iframe/esm2022/index.mjs +5 -0
- package/components/basic/iframe/esm2022/public_api.mjs +2 -0
- package/components/basic/iframe/fesm2022/index.mjs +84 -0
- package/components/basic/iframe/fesm2022/index.mjs.map +1 -0
- package/components/basic/iframe/iframe.component.d.ts +26 -0
- package/components/basic/iframe/iframe.props.d.ts +1 -0
- package/components/basic/iframe/index.d.ts +5 -0
- package/components/basic/iframe/package.json +20 -0
- package/components/basic/iframe/public_api.d.ts +1 -0
- package/components/basic/label/.npmignore +2 -0
- package/components/basic/label/bundles/index.umd.js +129 -0
- package/components/basic/label/esm2022/index.mjs +5 -0
- package/components/basic/label/esm2022/label.directive.mjs +91 -0
- package/components/basic/label/esm2022/label.props.mjs +17 -0
- package/components/basic/label/esm2022/public_api.mjs +2 -0
- package/components/basic/label/fesm2022/index.mjs +113 -0
- package/components/basic/label/fesm2022/index.mjs.map +1 -0
- package/components/basic/label/index.d.ts +5 -0
- package/components/basic/label/label.directive.d.ts +12 -0
- package/components/basic/label/label.props.d.ts +1 -0
- package/components/basic/label/package.json +20 -0
- package/components/basic/label/public_api.d.ts +1 -0
- package/components/basic/picture/.npmignore +2 -0
- package/components/basic/picture/bundles/index.umd.js +138 -0
- package/components/basic/picture/esm2022/index.mjs +5 -0
- package/components/basic/picture/esm2022/picture.directive.mjs +93 -0
- package/components/basic/picture/esm2022/picture.props.mjs +23 -0
- package/components/basic/picture/esm2022/public_api.mjs +2 -0
- package/components/basic/picture/fesm2022/index.mjs +121 -0
- package/components/basic/picture/fesm2022/index.mjs.map +1 -0
- package/components/basic/picture/index.d.ts +5 -0
- package/components/basic/picture/package.json +20 -0
- package/components/basic/picture/picture.directive.d.ts +19 -0
- package/components/basic/picture/picture.props.d.ts +1 -0
- package/components/basic/picture/public_api.d.ts +1 -0
- package/components/basic/progress/progress-bar/.npmignore +2 -0
- package/components/basic/progress/progress-bar/bundles/index.umd.js +170 -0
- package/components/basic/progress/progress-bar/esm2022/index.mjs +5 -0
- package/components/basic/progress/progress-bar/esm2022/progress-bar.component.mjs +130 -0
- package/components/basic/progress/progress-bar/esm2022/progress-bar.props.mjs +19 -0
- package/components/basic/progress/progress-bar/esm2022/public_api.mjs +2 -0
- package/components/basic/progress/progress-bar/fesm2022/index.mjs +154 -0
- package/components/basic/progress/progress-bar/fesm2022/index.mjs.map +1 -0
- package/components/basic/progress/progress-bar/index.d.ts +5 -0
- package/components/basic/progress/progress-bar/package.json +20 -0
- package/components/basic/progress/progress-bar/progress-bar.component.d.ts +43 -0
- package/components/basic/progress/progress-bar/progress-bar.props.d.ts +1 -0
- package/components/basic/progress/progress-bar/public_api.d.ts +1 -0
- package/components/basic/progress/progress-circle/.npmignore +2 -0
- package/components/basic/progress/progress-circle/bundles/index.umd.js +171 -0
- package/components/basic/progress/progress-circle/esm2022/index.mjs +5 -0
- package/components/basic/progress/progress-circle/esm2022/progress-circle.component.mjs +130 -0
- package/components/basic/progress/progress-circle/esm2022/progress-circle.props.mjs +21 -0
- package/components/basic/progress/progress-circle/esm2022/public_api.mjs +2 -0
- package/components/basic/progress/progress-circle/fesm2022/index.mjs +155 -0
- package/components/basic/progress/progress-circle/fesm2022/index.mjs.map +1 -0
- package/components/basic/progress/progress-circle/index.d.ts +5 -0
- package/components/basic/progress/progress-circle/package.json +20 -0
- package/components/basic/progress/progress-circle/progress-circle.component.d.ts +40 -0
- package/components/basic/progress/progress-circle/progress-circle.props.d.ts +1 -0
- package/components/basic/progress/progress-circle/public_api.d.ts +1 -0
- package/components/basic/progress/progress-utils/.npmignore +2 -0
- package/components/basic/progress/progress-utils/bundles/index.umd.js +35 -0
- package/components/basic/progress/progress-utils/esm2022/index.mjs +5 -0
- package/components/basic/progress/progress-utils/esm2022/progress-utils.mjs +25 -0
- package/components/basic/progress/progress-utils/esm2022/public_api.mjs +2 -0
- package/components/basic/progress/progress-utils/fesm2022/index.mjs +32 -0
- package/components/basic/progress/progress-utils/fesm2022/index.mjs.map +1 -0
- package/components/basic/progress/progress-utils/index.d.ts +5 -0
- package/components/basic/progress/progress-utils/package.json +20 -0
- package/components/basic/progress/progress-utils/progress-utils.d.ts +3 -0
- package/components/basic/progress/progress-utils/public_api.d.ts +1 -0
- package/components/basic/rich-text-editor/.npmignore +2 -0
- package/components/basic/rich-text-editor/bundles/index.umd.js +236 -0
- package/components/basic/rich-text-editor/esm2022/index.mjs +5 -0
- package/components/basic/rich-text-editor/esm2022/public_api.mjs +2 -0
- package/components/basic/rich-text-editor/esm2022/rich-text-editor.component.mjs +197 -0
- package/components/basic/rich-text-editor/esm2022/rich-text-editor.props.mjs +21 -0
- package/components/basic/rich-text-editor/fesm2022/index.mjs +222 -0
- package/components/basic/rich-text-editor/fesm2022/index.mjs.map +1 -0
- package/components/basic/rich-text-editor/index.d.ts +5 -0
- package/components/basic/rich-text-editor/package.json +20 -0
- package/components/basic/rich-text-editor/public_api.d.ts +1 -0
- package/components/basic/rich-text-editor/rich-text-editor.component.d.ts +55 -0
- package/components/basic/rich-text-editor/rich-text-editor.props.d.ts +2 -0
- package/components/basic/search/.npmignore +2 -0
- package/components/basic/search/bundles/index.umd.js +1091 -0
- package/components/basic/search/data-provider/data-provider.d.ts +42 -0
- package/components/basic/search/data-provider/local-data-provider.d.ts +5 -0
- package/components/basic/search/data-provider/remote-data-provider.d.ts +10 -0
- package/components/basic/search/esm2022/data-provider/data-provider.mjs +34 -0
- package/components/basic/search/esm2022/data-provider/local-data-provider.mjs +77 -0
- package/components/basic/search/esm2022/data-provider/remote-data-provider.mjs +124 -0
- package/components/basic/search/esm2022/index.mjs +5 -0
- package/components/basic/search/esm2022/public_api.mjs +3 -0
- package/components/basic/search/esm2022/scrollable.directive.mjs +44 -0
- package/components/basic/search/esm2022/search.component.mjs +754 -0
- package/components/basic/search/esm2022/search.props.mjs +55 -0
- package/components/basic/search/fesm2022/index.mjs +1080 -0
- package/components/basic/search/fesm2022/index.mjs.map +1 -0
- package/components/basic/search/index.d.ts +5 -0
- package/components/basic/search/package.json +20 -0
- package/components/basic/search/public_api.d.ts +2 -0
- package/components/basic/search/scrollable.directive.d.ts +14 -0
- package/components/basic/search/search.component.d.ts +109 -0
- package/components/basic/search/search.props.d.ts +2 -0
- package/components/basic/spinner/.npmignore +2 -0
- package/components/basic/spinner/bundles/index.umd.js +126 -0
- package/components/basic/spinner/esm2022/index.mjs +5 -0
- package/components/basic/spinner/esm2022/public_api.mjs +2 -0
- package/components/basic/spinner/esm2022/spinner.component.mjs +87 -0
- package/components/basic/spinner/esm2022/spinner.props.mjs +20 -0
- package/components/basic/spinner/fesm2022/index.mjs +111 -0
- package/components/basic/spinner/fesm2022/index.mjs.map +1 -0
- package/components/basic/spinner/index.d.ts +5 -0
- package/components/basic/spinner/package.json +20 -0
- package/components/basic/spinner/public_api.d.ts +1 -0
- package/components/basic/spinner/spinner.component.d.ts +27 -0
- package/components/basic/spinner/spinner.props.d.ts +1 -0
- package/components/basic/tree/.npmignore +2 -0
- package/components/basic/tree/bundles/index.umd.js +566 -0
- package/components/basic/tree/esm2022/index.mjs +5 -0
- package/components/basic/tree/esm2022/public_api.mjs +2 -0
- package/components/basic/tree/esm2022/tree-node-template-host.component.mjs +33 -0
- package/components/basic/tree/esm2022/tree.component.mjs +494 -0
- package/components/basic/tree/esm2022/tree.props.mjs +22 -0
- package/components/basic/tree/fesm2022/index.mjs +550 -0
- package/components/basic/tree/fesm2022/index.mjs.map +1 -0
- package/components/basic/tree/index.d.ts +5 -0
- package/components/basic/tree/package.json +20 -0
- package/components/basic/tree/public_api.d.ts +1 -0
- package/components/basic/tree/tree-node-template-host.component.d.ts +7 -0
- package/components/basic/tree/tree.component.d.ts +66 -0
- package/components/basic/tree/tree.props.d.ts +1 -0
- package/components/basic/video/.npmignore +2 -0
- package/components/basic/video/bundles/index.umd.js +116 -0
- package/components/basic/video/esm2022/index.mjs +5 -0
- package/components/basic/video/esm2022/public_api.mjs +2 -0
- package/components/basic/video/esm2022/video.component.mjs +70 -0
- package/components/basic/video/esm2022/video.props.mjs +24 -0
- package/components/basic/video/fesm2022/index.mjs +99 -0
- package/components/basic/video/fesm2022/index.mjs.map +1 -0
- package/components/basic/video/index.d.ts +5 -0
- package/components/basic/video/package.json +20 -0
- package/components/basic/video/public_api.d.ts +1 -0
- package/components/basic/video/video.component.d.ts +27 -0
- package/components/basic/video/video.props.d.ts +1 -0
- package/components/chart/.npmignore +2 -0
- package/components/chart/bundles/index.umd.js +1747 -0
- package/components/chart/chart.component.d.ts +99 -0
- package/components/chart/chart.props.d.ts +1 -0
- package/components/chart/chart.utils.d.ts +40 -0
- package/components/chart/esm2022/chart.component.mjs +982 -0
- package/components/chart/esm2022/chart.props.mjs +67 -0
- package/components/chart/esm2022/chart.utils.mjs +723 -0
- package/components/chart/esm2022/index.mjs +5 -0
- package/components/chart/esm2022/public_api.mjs +2 -0
- package/components/chart/fesm2022/index.mjs +1774 -0
- package/components/chart/fesm2022/index.mjs.map +1 -0
- package/components/chart/index.d.ts +5 -0
- package/components/chart/package.json +20 -0
- package/components/chart/public_api.d.ts +1 -0
- package/components/containers/accordion/.npmignore +2 -0
- package/components/containers/accordion/accordion-pane/accordion-pane.component.d.ts +50 -0
- package/components/containers/accordion/accordion-pane/accordion-pane.props.d.ts +1 -0
- package/components/containers/accordion/accordion.directive.d.ts +66 -0
- package/components/containers/accordion/accordion.props.d.ts +1 -0
- package/components/containers/accordion/bundles/index.umd.js +500 -0
- package/components/containers/accordion/esm2022/accordion-pane/accordion-pane.component.mjs +145 -0
- package/components/containers/accordion/esm2022/accordion-pane/accordion-pane.props.mjs +22 -0
- package/components/containers/accordion/esm2022/accordion.directive.mjs +309 -0
- package/components/containers/accordion/esm2022/accordion.props.mjs +16 -0
- package/components/containers/accordion/esm2022/index.mjs +5 -0
- package/components/containers/accordion/esm2022/public_api.mjs +3 -0
- package/components/containers/accordion/fesm2022/index.mjs +486 -0
- package/components/containers/accordion/fesm2022/index.mjs.map +1 -0
- package/components/containers/accordion/index.d.ts +5 -0
- package/components/containers/accordion/package.json +20 -0
- package/components/containers/accordion/public_api.d.ts +2 -0
- package/components/containers/layout-grid/.npmignore +2 -0
- package/components/containers/layout-grid/bundles/index.umd.js +172 -0
- package/components/containers/layout-grid/esm2022/index.mjs +5 -0
- package/components/containers/layout-grid/esm2022/layout-grid-column/layout-grid-column.directive.mjs +57 -0
- package/components/containers/layout-grid/esm2022/layout-grid-column/layout-grid-column.props.mjs +11 -0
- package/components/containers/layout-grid/esm2022/layout-grid-row/layout-grid-row.directive.mjs +36 -0
- package/components/containers/layout-grid/esm2022/layout-grid-row/layout-grid-row.props.mjs +9 -0
- package/components/containers/layout-grid/esm2022/layout-grid.directive.mjs +36 -0
- package/components/containers/layout-grid/esm2022/layout-grid.props.mjs +9 -0
- package/components/containers/layout-grid/esm2022/public_api.mjs +4 -0
- package/components/containers/layout-grid/fesm2022/index.mjs +153 -0
- package/components/containers/layout-grid/fesm2022/index.mjs.map +1 -0
- package/components/containers/layout-grid/index.d.ts +5 -0
- package/components/containers/layout-grid/layout-grid-column/layout-grid-column.directive.d.ts +12 -0
- package/components/containers/layout-grid/layout-grid-column/layout-grid-column.props.d.ts +1 -0
- package/components/containers/layout-grid/layout-grid-row/layout-grid-row.directive.d.ts +9 -0
- package/components/containers/layout-grid/layout-grid-row/layout-grid-row.props.d.ts +1 -0
- package/components/containers/layout-grid/layout-grid.directive.d.ts +9 -0
- package/components/containers/layout-grid/layout-grid.props.d.ts +1 -0
- package/components/containers/layout-grid/package.json +20 -0
- package/components/containers/layout-grid/public_api.d.ts +3 -0
- package/components/containers/linear-layout/.npmignore +2 -0
- package/components/containers/linear-layout/bundles/index.umd.js +186 -0
- package/components/containers/linear-layout/esm2022/index.mjs +5 -0
- package/components/containers/linear-layout/esm2022/linear-layout-item/linear-layout-item.directive.mjs +44 -0
- package/components/containers/linear-layout/esm2022/linear-layout-item/linear-layout-item.props.mjs +10 -0
- package/components/containers/linear-layout/esm2022/linear-layout.directive.mjs +100 -0
- package/components/containers/linear-layout/esm2022/linear-layout.props.mjs +13 -0
- package/components/containers/linear-layout/esm2022/public_api.mjs +3 -0
- package/components/containers/linear-layout/fesm2022/index.mjs +167 -0
- package/components/containers/linear-layout/fesm2022/index.mjs.map +1 -0
- package/components/containers/linear-layout/index.d.ts +5 -0
- package/components/containers/linear-layout/linear-layout-item/linear-layout-item.directive.d.ts +10 -0
- package/components/containers/linear-layout/linear-layout-item/linear-layout-item.props.d.ts +1 -0
- package/components/containers/linear-layout/linear-layout.directive.d.ts +16 -0
- package/components/containers/linear-layout/linear-layout.props.d.ts +1 -0
- package/components/containers/linear-layout/package.json +20 -0
- package/components/containers/linear-layout/public_api.d.ts +2 -0
- package/components/containers/panel/.npmignore +2 -0
- package/components/containers/panel/bundles/index.umd.js +223 -0
- package/components/containers/panel/esm2022/index.mjs +5 -0
- package/components/containers/panel/esm2022/panel.component.mjs +168 -0
- package/components/containers/panel/esm2022/panel.props.mjs +38 -0
- package/components/containers/panel/esm2022/public_api.mjs +2 -0
- package/components/containers/panel/fesm2022/index.mjs +210 -0
- package/components/containers/panel/fesm2022/index.mjs.map +1 -0
- package/components/containers/panel/index.d.ts +5 -0
- package/components/containers/panel/package.json +20 -0
- package/components/containers/panel/panel.component.d.ts +43 -0
- package/components/containers/panel/panel.props.d.ts +1 -0
- package/components/containers/panel/public_api.d.ts +1 -0
- package/components/containers/tabs/.npmignore +2 -0
- package/components/containers/tabs/bundles/index.umd.js +788 -0
- package/components/containers/tabs/esm2022/index.mjs +5 -0
- package/components/containers/tabs/esm2022/public_api.mjs +3 -0
- package/components/containers/tabs/esm2022/tab-pane/tab-pane.component.mjs +179 -0
- package/components/containers/tabs/esm2022/tab-pane/tab-pane.props.mjs +22 -0
- package/components/containers/tabs/esm2022/tabs.animator.mjs +83 -0
- package/components/containers/tabs/esm2022/tabs.component.mjs +478 -0
- package/components/containers/tabs/esm2022/tabs.props.mjs +20 -0
- package/components/containers/tabs/fesm2022/index.mjs +775 -0
- package/components/containers/tabs/fesm2022/index.mjs.map +1 -0
- package/components/containers/tabs/index.d.ts +5 -0
- package/components/containers/tabs/package.json +20 -0
- package/components/containers/tabs/public_api.d.ts +2 -0
- package/components/containers/tabs/tab-pane/tab-pane.component.d.ts +41 -0
- package/components/containers/tabs/tab-pane/tab-pane.props.d.ts +1 -0
- package/components/containers/tabs/tabs.animator.d.ts +30 -0
- package/components/containers/tabs/tabs.component.d.ts +87 -0
- package/components/containers/tabs/tabs.props.d.ts +1 -0
- package/components/containers/tile/.npmignore +2 -0
- package/components/containers/tile/bundles/index.umd.js +68 -0
- package/components/containers/tile/esm2022/index.mjs +5 -0
- package/components/containers/tile/esm2022/public_api.mjs +2 -0
- package/components/containers/tile/esm2022/tile.directive.mjs +33 -0
- package/components/containers/tile/esm2022/tile.props.mjs +12 -0
- package/components/containers/tile/fesm2022/index.mjs +50 -0
- package/components/containers/tile/fesm2022/index.mjs.map +1 -0
- package/components/containers/tile/index.d.ts +5 -0
- package/components/containers/tile/package.json +20 -0
- package/components/containers/tile/public_api.d.ts +1 -0
- package/components/containers/tile/tile.directive.d.ts +9 -0
- package/components/containers/tile/tile.props.d.ts +1 -0
- package/components/containers/wizard/.npmignore +2 -0
- package/components/containers/wizard/bundles/index.umd.js +1074 -0
- package/components/containers/wizard/esm2022/index.mjs +5 -0
- package/components/containers/wizard/esm2022/public_api.mjs +4 -0
- package/components/containers/wizard/esm2022/wizard-action/wizard-action.directive.mjs +35 -0
- package/components/containers/wizard/esm2022/wizard-action/wizard-action.props.mjs +9 -0
- package/components/containers/wizard/esm2022/wizard-step/wizard-step.component.mjs +182 -0
- package/components/containers/wizard/esm2022/wizard-step/wizard-step.props.mjs +17 -0
- package/components/containers/wizard/esm2022/wizard.component.mjs +801 -0
- package/components/containers/wizard/esm2022/wizard.props.mjs +22 -0
- package/components/containers/wizard/fesm2022/index.mjs +1058 -0
- package/components/containers/wizard/fesm2022/index.mjs.map +1 -0
- package/components/containers/wizard/index.d.ts +5 -0
- package/components/containers/wizard/package.json +20 -0
- package/components/containers/wizard/public_api.d.ts +3 -0
- package/components/containers/wizard/wizard-action/wizard-action.directive.d.ts +9 -0
- package/components/containers/wizard/wizard-action/wizard-action.props.d.ts +1 -0
- package/components/containers/wizard/wizard-step/wizard-step.component.d.ts +59 -0
- package/components/containers/wizard/wizard-step/wizard-step.props.d.ts +1 -0
- package/components/containers/wizard/wizard.component.d.ts +192 -0
- package/components/containers/wizard/wizard.props.d.ts +1 -0
- package/components/data/card/.npmignore +2 -0
- package/components/data/card/bundles/index.umd.js +237 -0
- package/components/data/card/card-actions/card-actions.directive.d.ts +9 -0
- package/components/data/card/card-actions/card-actions.props.d.ts +1 -0
- package/components/data/card/card-content/card-content.component.d.ts +12 -0
- package/components/data/card/card-content/card-content.props.d.ts +1 -0
- package/components/data/card/card-footer/card-footer.directive.d.ts +9 -0
- package/components/data/card/card-footer/card-footer.props.d.ts +1 -0
- package/components/data/card/card.component.d.ts +23 -0
- package/components/data/card/card.props.d.ts +1 -0
- package/components/data/card/esm2022/card-actions/card-actions.directive.mjs +31 -0
- package/components/data/card/esm2022/card-actions/card-actions.props.mjs +9 -0
- package/components/data/card/esm2022/card-content/card-content.component.mjs +43 -0
- package/components/data/card/esm2022/card-content/card-content.props.mjs +10 -0
- package/components/data/card/esm2022/card-footer/card-footer.directive.mjs +31 -0
- package/components/data/card/esm2022/card-footer/card-footer.props.mjs +9 -0
- package/components/data/card/esm2022/card.component.mjs +75 -0
- package/components/data/card/esm2022/card.props.mjs +24 -0
- package/components/data/card/esm2022/index.mjs +5 -0
- package/components/data/card/esm2022/public_api.mjs +5 -0
- package/components/data/card/fesm2022/index.mjs +220 -0
- package/components/data/card/fesm2022/index.mjs.map +1 -0
- package/components/data/card/index.d.ts +5 -0
- package/components/data/card/package.json +20 -0
- package/components/data/card/public_api.d.ts +4 -0
- package/components/data/form/.npmignore +2 -0
- package/components/data/form/bundles/index.umd.js +3308 -0
- package/components/data/form/esm2022/form-action/form-action.directive.mjs +86 -0
- package/components/data/form/esm2022/form-action/form-action.props.mjs +25 -0
- package/components/data/form/esm2022/form-field/form-field.directive.mjs +611 -0
- package/components/data/form/esm2022/form-field/form-field.props.mjs +52 -0
- package/components/data/form/esm2022/form-widget.directive.mjs +83 -0
- package/components/data/form/esm2022/form.component.mjs +1247 -0
- package/components/data/form/esm2022/form.props.mjs +64 -0
- package/components/data/form/esm2022/index.mjs +5 -0
- package/components/data/form/esm2022/live-actions/dependson.directive.mjs +151 -0
- package/components/data/form/esm2022/live-actions/live-actions.directive.mjs +173 -0
- package/components/data/form/esm2022/live-filter/live-filter.directive.mjs +356 -0
- package/components/data/form/esm2022/live-form/live-form.directive.mjs +502 -0
- package/components/data/form/esm2022/public_api.mjs +9 -0
- package/components/data/form/fesm2022/index.mjs +3296 -0
- package/components/data/form/fesm2022/index.mjs.map +1 -0
- package/components/data/form/form-action/form-action.directive.d.ts +35 -0
- package/components/data/form/form-action/form-action.props.d.ts +1 -0
- package/components/data/form/form-field/form-field.directive.d.ts +116 -0
- package/components/data/form/form-field/form-field.props.d.ts +1 -0
- package/components/data/form/form-widget.directive.d.ts +19 -0
- package/components/data/form/form.component.d.ts +211 -0
- package/components/data/form/form.props.d.ts +3 -0
- package/components/data/form/index.d.ts +5 -0
- package/components/data/form/live-actions/dependson.directive.d.ts +27 -0
- package/components/data/form/live-actions/live-actions.directive.d.ts +24 -0
- package/components/data/form/live-filter/live-filter.directive.d.ts +24 -0
- package/components/data/form/live-form/live-form.directive.d.ts +44 -0
- package/components/data/form/package.json +20 -0
- package/components/data/form/public_api.d.ts +8 -0
- package/components/data/list/.npmignore +2 -0
- package/components/data/list/bundles/index.umd.js +1610 -0
- package/components/data/list/esm2022/index.mjs +5 -0
- package/components/data/list/esm2022/list-item.directive.mjs +260 -0
- package/components/data/list/esm2022/list-item.props.mjs +7 -0
- package/components/data/list/esm2022/list.animator.mjs +233 -0
- package/components/data/list/esm2022/list.component.mjs +1294 -0
- package/components/data/list/esm2022/list.props.mjs +48 -0
- package/components/data/list/esm2022/public_api.mjs +3 -0
- package/components/data/list/fesm2022/index.mjs +1602 -0
- package/components/data/list/fesm2022/index.mjs.map +1 -0
- package/components/data/list/index.d.ts +5 -0
- package/components/data/list/list-item.directive.d.ts +53 -0
- package/components/data/list/list-item.props.d.ts +1 -0
- package/components/data/list/list.animator.d.ts +32 -0
- package/components/data/list/list.component.d.ts +226 -0
- package/components/data/list/list.props.d.ts +1 -0
- package/components/data/list/package.json +20 -0
- package/components/data/list/public_api.d.ts +2 -0
- package/components/data/live-table/.npmignore +2 -0
- package/components/data/live-table/bundles/index.umd.js +273 -0
- package/components/data/live-table/esm2022/index.mjs +5 -0
- package/components/data/live-table/esm2022/live-table.component.mjs +243 -0
- package/components/data/live-table/esm2022/live-table.props.mjs +10 -0
- package/components/data/live-table/esm2022/public_api.mjs +2 -0
- package/components/data/live-table/fesm2022/index.mjs +258 -0
- package/components/data/live-table/fesm2022/index.mjs.map +1 -0
- package/components/data/live-table/index.d.ts +5 -0
- package/components/data/live-table/live-table.component.d.ts +36 -0
- package/components/data/live-table/live-table.props.d.ts +1 -0
- package/components/data/live-table/package.json +20 -0
- package/components/data/live-table/public_api.d.ts +1 -0
- package/components/data/pagination/.npmignore +2 -0
- package/components/data/pagination/bundles/index.umd.js +850 -0
- package/components/data/pagination/esm2022/index.mjs +5 -0
- package/components/data/pagination/esm2022/pagination.component.mjs +817 -0
- package/components/data/pagination/esm2022/pagination.props.mjs +23 -0
- package/components/data/pagination/esm2022/public_api.mjs +2 -0
- package/components/data/pagination/fesm2022/index.mjs +845 -0
- package/components/data/pagination/fesm2022/index.mjs.map +1 -0
- package/components/data/pagination/index.d.ts +5 -0
- package/components/data/pagination/package.json +20 -0
- package/components/data/pagination/pagination.component.d.ts +101 -0
- package/components/data/pagination/pagination.props.d.ts +1 -0
- package/components/data/pagination/public_api.d.ts +1 -0
- package/components/data/table/.npmignore +2 -0
- package/components/data/table/bundles/index.umd.js +4848 -0
- package/components/data/table/esm2022/index.mjs +5 -0
- package/components/data/table/esm2022/public_api.mjs +9 -0
- package/components/data/table/esm2022/table-action/table-action.directive.mjs +83 -0
- package/components/data/table/esm2022/table-action/table-action.props.mjs +25 -0
- package/components/data/table/esm2022/table-column/table-column.directive.mjs +744 -0
- package/components/data/table/esm2022/table-column/table-column.props.mjs +93 -0
- package/components/data/table/esm2022/table-column-group/table-column-group.directive.mjs +80 -0
- package/components/data/table/esm2022/table-column-group/table-column-group.props.mjs +11 -0
- package/components/data/table/esm2022/table-cud.directive.mjs +484 -0
- package/components/data/table/esm2022/table-filter.directive.mjs +706 -0
- package/components/data/table/esm2022/table-row/table-row.directive.mjs +68 -0
- package/components/data/table/esm2022/table-row/table-row.props.mjs +16 -0
- package/components/data/table/esm2022/table-row-action/table-row-action.directive.mjs +81 -0
- package/components/data/table/esm2022/table-row-action/table-row-action.props.mjs +20 -0
- package/components/data/table/esm2022/table.component.mjs +2406 -0
- package/components/data/table/esm2022/table.props.mjs +70 -0
- package/components/data/table/fesm2022/index.mjs +4835 -0
- package/components/data/table/fesm2022/index.mjs.map +1 -0
- package/components/data/table/index.d.ts +5 -0
- package/components/data/table/package.json +20 -0
- package/components/data/table/public_api.d.ts +8 -0
- package/components/data/table/table-action/table-action.directive.d.ts +35 -0
- package/components/data/table/table-action/table-action.props.d.ts +1 -0
- package/components/data/table/table-column/table-column.directive.d.ts +152 -0
- package/components/data/table/table-column/table-column.props.d.ts +1 -0
- package/components/data/table/table-column-group/table-column-group.directive.d.ts +23 -0
- package/components/data/table/table-column-group/table-column-group.props.d.ts +1 -0
- package/components/data/table/table-cud.directive.d.ts +34 -0
- package/components/data/table/table-filter.directive.d.ts +35 -0
- package/components/data/table/table-row/table-row.directive.d.ts +25 -0
- package/components/data/table/table-row/table-row.props.d.ts +1 -0
- package/components/data/table/table-row-action/table-row-action.directive.d.ts +31 -0
- package/components/data/table/table-row-action/table-row-action.props.d.ts +1 -0
- package/components/data/table/table.component.d.ts +419 -0
- package/components/data/table/table.props.d.ts +1 -0
- package/components/dialogs/alert-dialog/.npmignore +2 -0
- package/components/dialogs/alert-dialog/alert-dialog.component.d.ts +23 -0
- package/components/dialogs/alert-dialog/alert-dialog.props.d.ts +1 -0
- package/components/dialogs/alert-dialog/bundles/index.umd.js +126 -0
- package/components/dialogs/alert-dialog/esm2022/alert-dialog.component.mjs +87 -0
- package/components/dialogs/alert-dialog/esm2022/alert-dialog.props.mjs +22 -0
- package/components/dialogs/alert-dialog/esm2022/index.mjs +5 -0
- package/components/dialogs/alert-dialog/esm2022/public_api.mjs +2 -0
- package/components/dialogs/alert-dialog/fesm2022/index.mjs +114 -0
- package/components/dialogs/alert-dialog/fesm2022/index.mjs.map +1 -0
- package/components/dialogs/alert-dialog/index.d.ts +5 -0
- package/components/dialogs/alert-dialog/package.json +20 -0
- package/components/dialogs/alert-dialog/public_api.d.ts +1 -0
- package/components/dialogs/confirm-dialog/.npmignore +2 -0
- package/components/dialogs/confirm-dialog/bundles/index.umd.js +129 -0
- package/components/dialogs/confirm-dialog/confirm-dialog.component.d.ts +26 -0
- package/components/dialogs/confirm-dialog/confirm-dialog.props.d.ts +1 -0
- package/components/dialogs/confirm-dialog/esm2022/confirm-dialog.component.mjs +90 -0
- package/components/dialogs/confirm-dialog/esm2022/confirm-dialog.props.mjs +22 -0
- package/components/dialogs/confirm-dialog/esm2022/index.mjs +5 -0
- package/components/dialogs/confirm-dialog/esm2022/public_api.mjs +2 -0
- package/components/dialogs/confirm-dialog/fesm2022/index.mjs +117 -0
- package/components/dialogs/confirm-dialog/fesm2022/index.mjs.map +1 -0
- package/components/dialogs/confirm-dialog/index.d.ts +5 -0
- package/components/dialogs/confirm-dialog/package.json +20 -0
- package/components/dialogs/confirm-dialog/public_api.d.ts +1 -0
- package/components/dialogs/default/.npmignore +2 -0
- package/components/dialogs/default/base-dialog.d.ts +45 -0
- package/components/dialogs/default/bundles/index.umd.js +379 -0
- package/components/dialogs/default/dialog-body/dialog-body.directive.d.ts +13 -0
- package/components/dialogs/default/dialog-footer/dialog-footer.directive.d.ts +9 -0
- package/components/dialogs/default/dialog-footer/dialog-footer.props.d.ts +1 -0
- package/components/dialogs/default/dialog-header/dialog-header.component.d.ts +25 -0
- package/components/dialogs/default/esm2022/base-dialog.mjs +184 -0
- package/components/dialogs/default/esm2022/dialog-body/dialog-body.directive.mjs +86 -0
- package/components/dialogs/default/esm2022/dialog-footer/dialog-footer.directive.mjs +34 -0
- package/components/dialogs/default/esm2022/dialog-footer/dialog-footer.props.mjs +9 -0
- package/components/dialogs/default/esm2022/dialog-header/dialog-header.component.mjs +62 -0
- package/components/dialogs/default/esm2022/index.mjs +5 -0
- package/components/dialogs/default/esm2022/public_api.mjs +5 -0
- package/components/dialogs/default/fesm2022/index.mjs +364 -0
- package/components/dialogs/default/fesm2022/index.mjs.map +1 -0
- package/components/dialogs/default/index.d.ts +5 -0
- package/components/dialogs/default/package.json +20 -0
- package/components/dialogs/default/public_api.d.ts +4 -0
- package/components/dialogs/design-dialog/.npmignore +2 -0
- package/components/dialogs/design-dialog/bundles/index.umd.js +149 -0
- package/components/dialogs/design-dialog/dialog.component.d.ts +17 -0
- package/components/dialogs/design-dialog/dialog.props.d.ts +1 -0
- package/components/dialogs/design-dialog/esm2022/dialog.component.mjs +108 -0
- package/components/dialogs/design-dialog/esm2022/dialog.props.mjs +21 -0
- package/components/dialogs/design-dialog/esm2022/index.mjs +5 -0
- package/components/dialogs/design-dialog/esm2022/public_api.mjs +2 -0
- package/components/dialogs/design-dialog/fesm2022/index.mjs +134 -0
- package/components/dialogs/design-dialog/fesm2022/index.mjs.map +1 -0
- package/components/dialogs/design-dialog/index.d.ts +5 -0
- package/components/dialogs/design-dialog/package.json +20 -0
- package/components/dialogs/design-dialog/public_api.d.ts +1 -0
- package/components/dialogs/iframe-dialog/.npmignore +2 -0
- package/components/dialogs/iframe-dialog/bundles/index.umd.js +119 -0
- package/components/dialogs/iframe-dialog/esm2022/iframe-dialog.component.mjs +78 -0
- package/components/dialogs/iframe-dialog/esm2022/iframe-dialog.props.mjs +25 -0
- package/components/dialogs/iframe-dialog/esm2022/index.mjs +5 -0
- package/components/dialogs/iframe-dialog/esm2022/public_api.mjs +2 -0
- package/components/dialogs/iframe-dialog/fesm2022/index.mjs +108 -0
- package/components/dialogs/iframe-dialog/fesm2022/index.mjs.map +1 -0
- package/components/dialogs/iframe-dialog/iframe-dialog.component.d.ts +19 -0
- package/components/dialogs/iframe-dialog/iframe-dialog.props.d.ts +1 -0
- package/components/dialogs/iframe-dialog/index.d.ts +5 -0
- package/components/dialogs/iframe-dialog/package.json +20 -0
- package/components/dialogs/iframe-dialog/public_api.d.ts +1 -0
- package/components/dialogs/login-dialog/.npmignore +2 -0
- package/components/dialogs/login-dialog/bundles/index.umd.js +114 -0
- package/components/dialogs/login-dialog/esm2022/index.mjs +5 -0
- package/components/dialogs/login-dialog/esm2022/login-dialog.directive.mjs +91 -0
- package/components/dialogs/login-dialog/esm2022/public_api.mjs +2 -0
- package/components/dialogs/login-dialog/fesm2022/index.mjs +98 -0
- package/components/dialogs/login-dialog/fesm2022/index.mjs.map +1 -0
- package/components/dialogs/login-dialog/index.d.ts +5 -0
- package/components/dialogs/login-dialog/login-dialog.directive.d.ts +23 -0
- package/components/dialogs/login-dialog/package.json +20 -0
- package/components/dialogs/login-dialog/public_api.d.ts +1 -0
- package/components/dialogs/partial-dialog/.npmignore +2 -0
- package/components/dialogs/partial-dialog/bundles/index.umd.js +157 -0
- package/components/dialogs/partial-dialog/esm2022/index.mjs +5 -0
- package/components/dialogs/partial-dialog/esm2022/partial-dialog.component.mjs +119 -0
- package/components/dialogs/partial-dialog/esm2022/partial-dialog.props.mjs +22 -0
- package/components/dialogs/partial-dialog/esm2022/public_api.mjs +2 -0
- package/components/dialogs/partial-dialog/fesm2022/index.mjs +146 -0
- package/components/dialogs/partial-dialog/fesm2022/index.mjs.map +1 -0
- package/components/dialogs/partial-dialog/index.d.ts +5 -0
- package/components/dialogs/partial-dialog/package.json +20 -0
- package/components/dialogs/partial-dialog/partial-dialog.component.d.ts +29 -0
- package/components/dialogs/partial-dialog/partial-dialog.props.d.ts +1 -0
- package/components/dialogs/partial-dialog/public_api.d.ts +1 -0
- package/components/input/base-form/.npmignore +2 -0
- package/components/input/base-form/base-form.component.d.ts +26 -0
- package/components/input/base-form/bundles/index.umd.js +147 -0
- package/components/input/base-form/esm2022/base-form.component.mjs +124 -0
- package/components/input/base-form/esm2022/index.mjs +5 -0
- package/components/input/base-form/esm2022/public_api.mjs +2 -0
- package/components/input/base-form/fesm2022/index.mjs +131 -0
- package/components/input/base-form/fesm2022/index.mjs.map +1 -0
- package/components/input/base-form/index.d.ts +5 -0
- package/components/input/base-form/package.json +20 -0
- package/components/input/base-form/public_api.d.ts +1 -0
- package/components/input/base-form-custom/.npmignore +2 -0
- package/components/input/base-form-custom/base-form-custom.component.d.ts +23 -0
- package/components/input/base-form-custom/bundles/index.umd.js +129 -0
- package/components/input/base-form-custom/esm2022/base-form-custom.component.mjs +105 -0
- package/components/input/base-form-custom/esm2022/index.mjs +5 -0
- package/components/input/base-form-custom/esm2022/public_api.mjs +2 -0
- package/components/input/base-form-custom/fesm2022/index.mjs +112 -0
- package/components/input/base-form-custom/fesm2022/index.mjs.map +1 -0
- package/components/input/base-form-custom/index.d.ts +5 -0
- package/components/input/base-form-custom/package.json +20 -0
- package/components/input/base-form-custom/public_api.d.ts +1 -0
- package/components/input/button/.npmignore +2 -0
- package/components/input/button/bundles/index.umd.js +98 -0
- package/components/input/button/button.component.d.ts +19 -0
- package/components/input/button/button.props.d.ts +1 -0
- package/components/input/button/esm2022/button.component.mjs +50 -0
- package/components/input/button/esm2022/button.props.mjs +26 -0
- package/components/input/button/esm2022/index.mjs +5 -0
- package/components/input/button/esm2022/public_api.mjs +2 -0
- package/components/input/button/fesm2022/index.mjs +81 -0
- package/components/input/button/fesm2022/index.mjs.map +1 -0
- package/components/input/button/index.d.ts +5 -0
- package/components/input/button/package.json +20 -0
- package/components/input/button/public_api.d.ts +1 -0
- package/components/input/button-group/.npmignore +2 -0
- package/components/input/button-group/bundles/index.umd.js +80 -0
- package/components/input/button-group/button-group.directive.d.ts +11 -0
- package/components/input/button-group/button-group.props.d.ts +1 -0
- package/components/input/button-group/esm2022/button-group.directive.mjs +47 -0
- package/components/input/button-group/esm2022/button-group.props.mjs +10 -0
- package/components/input/button-group/esm2022/index.mjs +5 -0
- package/components/input/button-group/esm2022/public_api.mjs +2 -0
- package/components/input/button-group/fesm2022/index.mjs +62 -0
- package/components/input/button-group/fesm2022/index.mjs.map +1 -0
- package/components/input/button-group/index.d.ts +5 -0
- package/components/input/button-group/package.json +20 -0
- package/components/input/button-group/public_api.d.ts +1 -0
- package/components/input/calendar/.npmignore +2 -0
- package/components/input/calendar/bundles/index.umd.js +655 -0
- package/components/input/calendar/calendar.component.d.ts +128 -0
- package/components/input/calendar/calendar.props.d.ts +1 -0
- package/components/input/calendar/esm2022/calendar.component.mjs +637 -0
- package/components/input/calendar/esm2022/calendar.props.mjs +23 -0
- package/components/input/calendar/esm2022/index.mjs +5 -0
- package/components/input/calendar/esm2022/public_api.mjs +2 -0
- package/components/input/calendar/fesm2022/index.mjs +665 -0
- package/components/input/calendar/fesm2022/index.mjs.map +1 -0
- package/components/input/calendar/index.d.ts +5 -0
- package/components/input/calendar/package.json +20 -0
- package/components/input/calendar/public_api.d.ts +1 -0
- package/components/input/caption-position/.npmignore +2 -0
- package/components/input/caption-position/bundles/index.umd.js +196 -0
- package/components/input/caption-position/caption-position.directive.d.ts +31 -0
- package/components/input/caption-position/esm2022/caption-position.directive.mjs +172 -0
- package/components/input/caption-position/esm2022/index.mjs +5 -0
- package/components/input/caption-position/esm2022/public_api.mjs +2 -0
- package/components/input/caption-position/fesm2022/index.mjs +178 -0
- package/components/input/caption-position/fesm2022/index.mjs.map +1 -0
- package/components/input/caption-position/index.d.ts +5 -0
- package/components/input/caption-position/package.json +20 -0
- package/components/input/caption-position/public_api.d.ts +1 -0
- package/components/input/checkbox/.npmignore +2 -0
- package/components/input/checkbox/bundles/index.umd.js +206 -0
- package/components/input/checkbox/checkbox.component.d.ts +36 -0
- package/components/input/checkbox/checkbox.props.d.ts +2 -0
- package/components/input/checkbox/esm2022/checkbox.component.mjs +158 -0
- package/components/input/checkbox/esm2022/checkbox.props.mjs +30 -0
- package/components/input/checkbox/esm2022/index.mjs +5 -0
- package/components/input/checkbox/esm2022/public_api.mjs +2 -0
- package/components/input/checkbox/fesm2022/index.mjs +191 -0
- package/components/input/checkbox/fesm2022/index.mjs.map +1 -0
- package/components/input/checkbox/index.d.ts +5 -0
- package/components/input/checkbox/package.json +20 -0
- package/components/input/checkbox/public_api.d.ts +1 -0
- package/components/input/checkboxset/.npmignore +2 -0
- package/components/input/checkboxset/bundles/index.umd.js +178 -0
- package/components/input/checkboxset/checkboxset.component.d.ts +24 -0
- package/components/input/checkboxset/checkboxset.props.d.ts +2 -0
- package/components/input/checkboxset/esm2022/checkboxset.component.mjs +125 -0
- package/components/input/checkboxset/esm2022/checkboxset.props.mjs +36 -0
- package/components/input/checkboxset/esm2022/index.mjs +5 -0
- package/components/input/checkboxset/esm2022/public_api.mjs +2 -0
- package/components/input/checkboxset/fesm2022/index.mjs +165 -0
- package/components/input/checkboxset/fesm2022/index.mjs.map +1 -0
- package/components/input/checkboxset/index.d.ts +5 -0
- package/components/input/checkboxset/package.json +20 -0
- package/components/input/checkboxset/public_api.d.ts +1 -0
- package/components/input/chips/.npmignore +2 -0
- package/components/input/chips/bundles/index.umd.js +741 -0
- package/components/input/chips/chips.component.d.ts +87 -0
- package/components/input/chips/chips.props.d.ts +2 -0
- package/components/input/chips/esm2022/chips.component.mjs +676 -0
- package/components/input/chips/esm2022/chips.props.mjs +49 -0
- package/components/input/chips/esm2022/index.mjs +5 -0
- package/components/input/chips/esm2022/public_api.mjs +2 -0
- package/components/input/chips/fesm2022/index.mjs +729 -0
- package/components/input/chips/fesm2022/index.mjs.map +1 -0
- package/components/input/chips/index.d.ts +5 -0
- package/components/input/chips/package.json +20 -0
- package/components/input/chips/public_api.d.ts +1 -0
- package/components/input/color-picker/.npmignore +2 -0
- package/components/input/color-picker/bundles/index.umd.js +145 -0
- package/components/input/color-picker/color-picker.component.d.ts +33 -0
- package/components/input/color-picker/color-picker.props.d.ts +2 -0
- package/components/input/color-picker/esm2022/color-picker.component.mjs +107 -0
- package/components/input/color-picker/esm2022/color-picker.props.mjs +22 -0
- package/components/input/color-picker/esm2022/index.mjs +5 -0
- package/components/input/color-picker/esm2022/public_api.mjs +2 -0
- package/components/input/color-picker/fesm2022/index.mjs +132 -0
- package/components/input/color-picker/fesm2022/index.mjs.map +1 -0
- package/components/input/color-picker/index.d.ts +5 -0
- package/components/input/color-picker/package.json +20 -0
- package/components/input/color-picker/public_api.d.ts +1 -0
- package/components/input/composite/.npmignore +2 -0
- package/components/input/composite/bundles/index.umd.js +120 -0
- package/components/input/composite/composite.directive.d.ts +24 -0
- package/components/input/composite/composite.props.d.ts +1 -0
- package/components/input/composite/esm2022/composite.directive.mjs +88 -0
- package/components/input/composite/esm2022/composite.props.mjs +10 -0
- package/components/input/composite/esm2022/index.mjs +5 -0
- package/components/input/composite/esm2022/public_api.mjs +2 -0
- package/components/input/composite/fesm2022/index.mjs +103 -0
- package/components/input/composite/fesm2022/index.mjs.map +1 -0
- package/components/input/composite/index.d.ts +5 -0
- package/components/input/composite/package.json +20 -0
- package/components/input/composite/public_api.d.ts +1 -0
- package/components/input/currency/.npmignore +2 -0
- package/components/input/currency/bundles/index.umd.js +112 -0
- package/components/input/currency/currency.component.d.ts +28 -0
- package/components/input/currency/currency.props.d.ts +2 -0
- package/components/input/currency/esm2022/currency.component.mjs +67 -0
- package/components/input/currency/esm2022/currency.props.mjs +27 -0
- package/components/input/currency/esm2022/index.mjs +5 -0
- package/components/input/currency/esm2022/public_api.mjs +2 -0
- package/components/input/currency/fesm2022/index.mjs +97 -0
- package/components/input/currency/fesm2022/index.mjs.map +1 -0
- package/components/input/currency/index.d.ts +5 -0
- package/components/input/currency/package.json +20 -0
- package/components/input/currency/public_api.d.ts +1 -0
- package/components/input/dataset-aware-form/.npmignore +2 -0
- package/components/input/dataset-aware-form/bundles/index.umd.js +352 -0
- package/components/input/dataset-aware-form/dataset-aware-form.component.d.ts +76 -0
- package/components/input/dataset-aware-form/esm2022/dataset-aware-form.component.mjs +331 -0
- package/components/input/dataset-aware-form/esm2022/index.mjs +5 -0
- package/components/input/dataset-aware-form/esm2022/public_api.mjs +2 -0
- package/components/input/dataset-aware-form/fesm2022/index.mjs +338 -0
- package/components/input/dataset-aware-form/fesm2022/index.mjs.map +1 -0
- package/components/input/dataset-aware-form/index.d.ts +5 -0
- package/components/input/dataset-aware-form/package.json +20 -0
- package/components/input/dataset-aware-form/public_api.d.ts +1 -0
- package/components/input/epoch/base-date-time/.npmignore +2 -0
- package/components/input/epoch/base-date-time/base-date-time.component.d.ts +246 -0
- package/components/input/epoch/base-date-time/bundles/index.umd.js +1093 -0
- package/components/input/epoch/base-date-time/esm2022/base-date-time.component.mjs +1077 -0
- package/components/input/epoch/base-date-time/esm2022/index.mjs +5 -0
- package/components/input/epoch/base-date-time/esm2022/public_api.mjs +2 -0
- package/components/input/epoch/base-date-time/fesm2022/index.mjs +1084 -0
- package/components/input/epoch/base-date-time/fesm2022/index.mjs.map +1 -0
- package/components/input/epoch/base-date-time/index.d.ts +5 -0
- package/components/input/epoch/base-date-time/package.json +20 -0
- package/components/input/epoch/base-date-time/public_api.d.ts +1 -0
- package/components/input/epoch/date/.npmignore +2 -0
- package/components/input/epoch/date/bundles/index.umd.js +515 -0
- package/components/input/epoch/date/date.component.d.ts +61 -0
- package/components/input/epoch/date/date.props.d.ts +2 -0
- package/components/input/epoch/date/esm2022/date.component.mjs +345 -0
- package/components/input/epoch/date/esm2022/date.props.mjs +43 -0
- package/components/input/epoch/date/esm2022/imaskUtil.mjs +114 -0
- package/components/input/epoch/date/esm2022/index.mjs +5 -0
- package/components/input/epoch/date/esm2022/public_api.mjs +2 -0
- package/components/input/epoch/date/fesm2022/index.mjs +505 -0
- package/components/input/epoch/date/fesm2022/index.mjs.map +1 -0
- package/components/input/epoch/date/imaskUtil.d.ts +92 -0
- package/components/input/epoch/date/index.d.ts +5 -0
- package/components/input/epoch/date/package.json +20 -0
- package/components/input/epoch/date/public_api.d.ts +1 -0
- package/components/input/epoch/date-time/.npmignore +2 -0
- package/components/input/epoch/date-time/bundles/index.umd.js +519 -0
- package/components/input/epoch/date-time/date-time.component.d.ts +109 -0
- package/components/input/epoch/date-time/date-time.props.d.ts +2 -0
- package/components/input/epoch/date-time/esm2022/date-time.component.mjs +459 -0
- package/components/input/epoch/date-time/esm2022/date-time.props.mjs +47 -0
- package/components/input/epoch/date-time/esm2022/index.mjs +5 -0
- package/components/input/epoch/date-time/esm2022/public_api.mjs +2 -0
- package/components/input/epoch/date-time/fesm2022/index.mjs +510 -0
- package/components/input/epoch/date-time/fesm2022/index.mjs.map +1 -0
- package/components/input/epoch/date-time/index.d.ts +5 -0
- package/components/input/epoch/date-time/package.json +20 -0
- package/components/input/epoch/date-time/public_api.d.ts +1 -0
- package/components/input/epoch/date-time-picker/.npmignore +2 -0
- package/components/input/epoch/date-time-picker/bundles/index.umd.js +453 -0
- package/components/input/epoch/date-time-picker/date-time-picker.component.d.ts +80 -0
- package/components/input/epoch/date-time-picker/esm2022/date-time-picker.component.mjs +433 -0
- package/components/input/epoch/date-time-picker/esm2022/index.mjs +5 -0
- package/components/input/epoch/date-time-picker/esm2022/public_api.mjs +2 -0
- package/components/input/epoch/date-time-picker/fesm2022/index.mjs +439 -0
- package/components/input/epoch/date-time-picker/fesm2022/index.mjs.map +1 -0
- package/components/input/epoch/date-time-picker/index.d.ts +5 -0
- package/components/input/epoch/date-time-picker/package.json +20 -0
- package/components/input/epoch/date-time-picker/public_api.d.ts +1 -0
- package/components/input/epoch/picker/.npmignore +2 -0
- package/components/input/epoch/picker/bundles/index.umd.js +192 -0
- package/components/input/epoch/picker/esm2022/index.mjs +5 -0
- package/components/input/epoch/picker/esm2022/picker.component.mjs +165 -0
- package/components/input/epoch/picker/esm2022/public_api.mjs +3 -0
- package/components/input/epoch/picker/fesm2022/index.mjs +172 -0
- package/components/input/epoch/picker/fesm2022/index.mjs.map +1 -0
- package/components/input/epoch/picker/index.d.ts +5 -0
- package/components/input/epoch/picker/package.json +20 -0
- package/components/input/epoch/picker/picker.component.d.ts +36 -0
- package/components/input/epoch/picker/public_api.d.ts +2 -0
- package/components/input/epoch/time/.npmignore +2 -0
- package/components/input/epoch/time/bundles/index.umd.js +401 -0
- package/components/input/epoch/time/esm2022/index.mjs +5 -0
- package/components/input/epoch/time/esm2022/public_api.mjs +2 -0
- package/components/input/epoch/time/esm2022/time.component.mjs +352 -0
- package/components/input/epoch/time/esm2022/time.props.mjs +35 -0
- package/components/input/epoch/time/fesm2022/index.mjs +391 -0
- package/components/input/epoch/time/fesm2022/index.mjs.map +1 -0
- package/components/input/epoch/time/index.d.ts +5 -0
- package/components/input/epoch/time/package.json +20 -0
- package/components/input/epoch/time/public_api.d.ts +1 -0
- package/components/input/epoch/time/time.component.d.ts +105 -0
- package/components/input/epoch/time/time.props.d.ts +2 -0
- package/components/input/file-upload/.npmignore +2 -0
- package/components/input/file-upload/bundles/index.umd.js +483 -0
- package/components/input/file-upload/esm2022/file-upload.component.mjs +426 -0
- package/components/input/file-upload/esm2022/file-upload.props.mjs +39 -0
- package/components/input/file-upload/esm2022/index.mjs +5 -0
- package/components/input/file-upload/esm2022/public_api.mjs +2 -0
- package/components/input/file-upload/fesm2022/index.mjs +469 -0
- package/components/input/file-upload/fesm2022/index.mjs.map +1 -0
- package/components/input/file-upload/file-upload.component.d.ts +103 -0
- package/components/input/file-upload/file-upload.props.d.ts +1 -0
- package/components/input/file-upload/index.d.ts +5 -0
- package/components/input/file-upload/package.json +20 -0
- package/components/input/file-upload/public_api.d.ts +1 -0
- package/components/input/number/.npmignore +2 -0
- package/components/input/number/bundles/index.umd.js +109 -0
- package/components/input/number/esm2022/index.mjs +5 -0
- package/components/input/number/esm2022/number.component.mjs +57 -0
- package/components/input/number/esm2022/number.props.mjs +35 -0
- package/components/input/number/esm2022/public_api.mjs +2 -0
- package/components/input/number/fesm2022/index.mjs +95 -0
- package/components/input/number/fesm2022/index.mjs.map +1 -0
- package/components/input/number/index.d.ts +5 -0
- package/components/input/number/number.component.d.ts +26 -0
- package/components/input/number/number.props.d.ts +2 -0
- package/components/input/number/package.json +20 -0
- package/components/input/number/public_api.d.ts +1 -0
- package/components/input/radioset/.npmignore +2 -0
- package/components/input/radioset/bundles/index.umd.js +164 -0
- package/components/input/radioset/esm2022/index.mjs +5 -0
- package/components/input/radioset/esm2022/public_api.mjs +2 -0
- package/components/input/radioset/esm2022/radioset.component.mjs +110 -0
- package/components/input/radioset/esm2022/radioset.props.mjs +37 -0
- package/components/input/radioset/fesm2022/index.mjs +151 -0
- package/components/input/radioset/fesm2022/index.mjs.map +1 -0
- package/components/input/radioset/index.d.ts +5 -0
- package/components/input/radioset/package.json +20 -0
- package/components/input/radioset/public_api.d.ts +1 -0
- package/components/input/radioset/radioset.component.d.ts +23 -0
- package/components/input/radioset/radioset.props.d.ts +2 -0
- package/components/input/rating/.npmignore +2 -0
- package/components/input/rating/bundles/index.umd.js +270 -0
- package/components/input/rating/esm2022/index.mjs +5 -0
- package/components/input/rating/esm2022/public_api.mjs +2 -0
- package/components/input/rating/esm2022/rating.component.mjs +225 -0
- package/components/input/rating/esm2022/rating.props.mjs +29 -0
- package/components/input/rating/fesm2022/index.mjs +257 -0
- package/components/input/rating/fesm2022/index.mjs.map +1 -0
- package/components/input/rating/index.d.ts +5 -0
- package/components/input/rating/package.json +20 -0
- package/components/input/rating/public_api.d.ts +1 -0
- package/components/input/rating/rating.component.d.ts +44 -0
- package/components/input/rating/rating.props.d.ts +2 -0
- package/components/input/select/.npmignore +2 -0
- package/components/input/select/bundles/index.umd.js +225 -0
- package/components/input/select/esm2022/index.mjs +5 -0
- package/components/input/select/esm2022/public_api.mjs +2 -0
- package/components/input/select/esm2022/select.component.mjs +172 -0
- package/components/input/select/esm2022/select.props.mjs +36 -0
- package/components/input/select/fesm2022/index.mjs +211 -0
- package/components/input/select/fesm2022/index.mjs.map +1 -0
- package/components/input/select/index.d.ts +5 -0
- package/components/input/select/package.json +20 -0
- package/components/input/select/public_api.d.ts +1 -0
- package/components/input/select/select.component.d.ts +36 -0
- package/components/input/select/select.props.d.ts +2 -0
- package/components/input/slider/.npmignore +2 -0
- package/components/input/slider/bundles/index.umd.js +203 -0
- package/components/input/slider/esm2022/index.mjs +5 -0
- package/components/input/slider/esm2022/public_api.mjs +2 -0
- package/components/input/slider/esm2022/slider.component.mjs +157 -0
- package/components/input/slider/esm2022/slider.props.mjs +28 -0
- package/components/input/slider/fesm2022/index.mjs +189 -0
- package/components/input/slider/fesm2022/index.mjs.map +1 -0
- package/components/input/slider/index.d.ts +5 -0
- package/components/input/slider/package.json +20 -0
- package/components/input/slider/public_api.d.ts +1 -0
- package/components/input/slider/slider.component.d.ts +39 -0
- package/components/input/slider/slider.props.d.ts +2 -0
- package/components/input/switch/.npmignore +2 -0
- package/components/input/switch/bundles/index.umd.js +224 -0
- package/components/input/switch/esm2022/index.mjs +5 -0
- package/components/input/switch/esm2022/public_api.mjs +2 -0
- package/components/input/switch/esm2022/switch.component.mjs +179 -0
- package/components/input/switch/esm2022/switch.props.mjs +28 -0
- package/components/input/switch/fesm2022/index.mjs +211 -0
- package/components/input/switch/fesm2022/index.mjs.map +1 -0
- package/components/input/switch/index.d.ts +5 -0
- package/components/input/switch/package.json +20 -0
- package/components/input/switch/public_api.d.ts +1 -0
- package/components/input/switch/switch.component.d.ts +30 -0
- package/components/input/switch/switch.props.d.ts +2 -0
- package/components/input/text/.npmignore +2 -0
- package/components/input/text/base-input/base-input.d.ts +33 -0
- package/components/input/text/bundles/index.umd.js +1130 -0
- package/components/input/text/esm2022/base-input/base-input.mjs +93 -0
- package/components/input/text/esm2022/index.mjs +5 -0
- package/components/input/text/esm2022/input-calendar/input-calendar.component.mjs +53 -0
- package/components/input/text/esm2022/input-calendar/input-calendar.props.mjs +30 -0
- package/components/input/text/esm2022/input-color/input-color.component.mjs +53 -0
- package/components/input/text/esm2022/input-color/input-color.props.mjs +27 -0
- package/components/input/text/esm2022/input-email/input-email.component.mjs +53 -0
- package/components/input/text/esm2022/input-email/input-email.props.mjs +29 -0
- package/components/input/text/esm2022/input-number/input-number.component.mjs +63 -0
- package/components/input/text/esm2022/input-number/input-number.props.mjs +32 -0
- package/components/input/text/esm2022/input-text/input-text.component.mjs +136 -0
- package/components/input/text/esm2022/input-text/input-text.props.mjs +48 -0
- package/components/input/text/esm2022/number-locale/number-locale.mjs +554 -0
- package/components/input/text/esm2022/public_api.mjs +8 -0
- package/components/input/text/fesm2022/index.mjs +1114 -0
- package/components/input/text/fesm2022/index.mjs.map +1 -0
- package/components/input/text/index.d.ts +5 -0
- package/components/input/text/input-calendar/input-calendar.component.d.ts +30 -0
- package/components/input/text/input-calendar/input-calendar.props.d.ts +2 -0
- package/components/input/text/input-color/input-color.component.d.ts +27 -0
- package/components/input/text/input-color/input-color.props.d.ts +2 -0
- package/components/input/text/input-email/input-email.component.d.ts +29 -0
- package/components/input/text/input-email/input-email.props.d.ts +2 -0
- package/components/input/text/input-number/input-number.component.d.ts +33 -0
- package/components/input/text/input-number/input-number.props.d.ts +2 -0
- package/components/input/text/input-text/input-text.component.d.ts +52 -0
- package/components/input/text/input-text/input-text.props.d.ts +2 -0
- package/components/input/text/number-locale/number-locale.d.ts +127 -0
- package/components/input/text/package.json +20 -0
- package/components/input/text/public_api.d.ts +7 -0
- package/components/input/textarea/.npmignore +2 -0
- package/components/input/textarea/bundles/index.umd.js +108 -0
- package/components/input/textarea/esm2022/index.mjs +5 -0
- package/components/input/textarea/esm2022/public_api.mjs +2 -0
- package/components/input/textarea/esm2022/textarea.component.mjs +60 -0
- package/components/input/textarea/esm2022/textarea.props.mjs +30 -0
- package/components/input/textarea/fesm2022/index.mjs +94 -0
- package/components/input/textarea/fesm2022/index.mjs.map +1 -0
- package/components/input/textarea/index.d.ts +5 -0
- package/components/input/textarea/package.json +20 -0
- package/components/input/textarea/public_api.d.ts +1 -0
- package/components/input/textarea/textarea.component.d.ts +30 -0
- package/components/input/textarea/textarea.props.d.ts +2 -0
- package/components/navigation/breadcrumb/.npmignore +2 -0
- package/components/navigation/breadcrumb/breadcrumb.component.d.ts +25 -0
- package/components/navigation/breadcrumb/breadcrumb.props.d.ts +1 -0
- package/components/navigation/breadcrumb/bundles/index.umd.js +138 -0
- package/components/navigation/breadcrumb/esm2022/breadcrumb.component.mjs +101 -0
- package/components/navigation/breadcrumb/esm2022/breadcrumb.props.mjs +17 -0
- package/components/navigation/breadcrumb/esm2022/index.mjs +5 -0
- package/components/navigation/breadcrumb/esm2022/public_api.mjs +2 -0
- package/components/navigation/breadcrumb/fesm2022/index.mjs +121 -0
- package/components/navigation/breadcrumb/fesm2022/index.mjs.map +1 -0
- package/components/navigation/breadcrumb/index.d.ts +5 -0
- package/components/navigation/breadcrumb/package.json +20 -0
- package/components/navigation/breadcrumb/public_api.d.ts +1 -0
- package/components/navigation/menu/.npmignore +2 -0
- package/components/navigation/menu/bundles/index.umd.js +947 -0
- package/components/navigation/menu/esm2022/index.mjs +5 -0
- package/components/navigation/menu/esm2022/menu-adapator.component.mjs +80 -0
- package/components/navigation/menu/esm2022/menu-dropdown/menu-dropdown.component.mjs +105 -0
- package/components/navigation/menu/esm2022/menu-dropdown-item/menu-dropdown-item.component.mjs +191 -0
- package/components/navigation/menu/esm2022/menu.component.mjs +282 -0
- package/components/navigation/menu/esm2022/menu.props.mjs +37 -0
- package/components/navigation/menu/esm2022/nav/nav-item/nav-item.directive.mjs +66 -0
- package/components/navigation/menu/esm2022/nav/nav-item/nav-item.props.mjs +9 -0
- package/components/navigation/menu/esm2022/nav/nav.component.mjs +131 -0
- package/components/navigation/menu/esm2022/nav/nav.props.mjs +28 -0
- package/components/navigation/menu/esm2022/nav/navigation-control.directive.mjs +49 -0
- package/components/navigation/menu/esm2022/public_api.mjs +8 -0
- package/components/navigation/menu/fesm2022/index.mjs +929 -0
- package/components/navigation/menu/fesm2022/index.mjs.map +1 -0
- package/components/navigation/menu/index.d.ts +5 -0
- package/components/navigation/menu/menu-adapator.component.d.ts +23 -0
- package/components/navigation/menu/menu-dropdown/menu-dropdown.component.d.ts +15 -0
- package/components/navigation/menu/menu-dropdown-item/menu-dropdown-item.component.d.ts +35 -0
- package/components/navigation/menu/menu.component.d.ts +65 -0
- package/components/navigation/menu/menu.props.d.ts +1 -0
- package/components/navigation/menu/nav/nav-item/nav-item.directive.d.ts +14 -0
- package/components/navigation/menu/nav/nav-item/nav-item.props.d.ts +1 -0
- package/components/navigation/menu/nav/nav.component.d.ts +35 -0
- package/components/navigation/menu/nav/nav.props.d.ts +1 -0
- package/components/navigation/menu/nav/navigation-control.directive.d.ts +14 -0
- package/components/navigation/menu/package.json +20 -0
- package/components/navigation/menu/public_api.d.ts +7 -0
- package/components/navigation/navbar/.npmignore +2 -0
- package/components/navigation/navbar/bundles/index.umd.js +87 -0
- package/components/navigation/navbar/esm2022/index.mjs +5 -0
- package/components/navigation/navbar/esm2022/navbar.component.mjs +52 -0
- package/components/navigation/navbar/esm2022/navbar.props.mjs +13 -0
- package/components/navigation/navbar/esm2022/public_api.mjs +2 -0
- package/components/navigation/navbar/fesm2022/index.mjs +70 -0
- package/components/navigation/navbar/fesm2022/index.mjs.map +1 -0
- package/components/navigation/navbar/index.d.ts +5 -0
- package/components/navigation/navbar/navbar.component.d.ts +16 -0
- package/components/navigation/navbar/navbar.props.d.ts +1 -0
- package/components/navigation/navbar/package.json +20 -0
- package/components/navigation/navbar/public_api.d.ts +1 -0
- package/components/navigation/popover/.npmignore +2 -0
- package/components/navigation/popover/bundles/index.umd.js +514 -0
- package/components/navigation/popover/esm2022/index.mjs +5 -0
- package/components/navigation/popover/esm2022/popover.component.mjs +460 -0
- package/components/navigation/popover/esm2022/popover.props.mjs +35 -0
- package/components/navigation/popover/esm2022/public_api.mjs +2 -0
- package/components/navigation/popover/fesm2022/index.mjs +500 -0
- package/components/navigation/popover/fesm2022/index.mjs.map +1 -0
- package/components/navigation/popover/index.d.ts +5 -0
- package/components/navigation/popover/package.json +20 -0
- package/components/navigation/popover/popover.component.d.ts +83 -0
- package/components/navigation/popover/popover.props.d.ts +1 -0
- package/components/navigation/popover/public_api.d.ts +1 -0
- package/components/page/default/.npmignore +2 -0
- package/components/page/default/bundles/index.umd.js +458 -0
- package/components/page/default/content/content.component.d.ts +9 -0
- package/components/page/default/content/content.props.d.ts +1 -0
- package/components/page/default/esm2022/content/content.component.mjs +29 -0
- package/components/page/default/esm2022/content/content.props.mjs +8 -0
- package/components/page/default/esm2022/index.mjs +5 -0
- package/components/page/default/esm2022/layout.directive.mjs +58 -0
- package/components/page/default/esm2022/layout.props.mjs +5 -0
- package/components/page/default/esm2022/page-content/page-content.component.mjs +85 -0
- package/components/page/default/esm2022/page-content/page-content.props.mjs +14 -0
- package/components/page/default/esm2022/page.directive.mjs +97 -0
- package/components/page/default/esm2022/page.props.mjs +11 -0
- package/components/page/default/esm2022/public_api.mjs +7 -0
- package/components/page/default/esm2022/router-outlet.directive.mjs +47 -0
- package/components/page/default/esm2022/router-outlet.props.mjs +8 -0
- package/components/page/default/esm2022/spa-page.directive.mjs +97 -0
- package/components/page/default/esm2022/spa-page.props.mjs +10 -0
- package/components/page/default/fesm2022/index.mjs +438 -0
- package/components/page/default/fesm2022/index.mjs.map +1 -0
- package/components/page/default/index.d.ts +5 -0
- package/components/page/default/layout.directive.d.ts +20 -0
- package/components/page/default/layout.props.d.ts +1 -0
- package/components/page/default/package.json +20 -0
- package/components/page/default/page-content/page-content.component.d.ts +17 -0
- package/components/page/default/page-content/page-content.props.d.ts +1 -0
- package/components/page/default/page.directive.d.ts +38 -0
- package/components/page/default/page.props.d.ts +1 -0
- package/components/page/default/public_api.d.ts +6 -0
- package/components/page/default/router-outlet.directive.d.ts +13 -0
- package/components/page/default/router-outlet.props.d.ts +1 -0
- package/components/page/default/spa-page.directive.d.ts +38 -0
- package/components/page/default/spa-page.props.d.ts +1 -0
- package/components/page/footer/.npmignore +2 -0
- package/components/page/footer/bundles/index.umd.js +71 -0
- package/components/page/footer/esm2022/footer.directive.mjs +37 -0
- package/components/page/footer/esm2022/footer.props.mjs +11 -0
- package/components/page/footer/esm2022/index.mjs +5 -0
- package/components/page/footer/esm2022/public_api.mjs +2 -0
- package/components/page/footer/fesm2022/index.mjs +53 -0
- package/components/page/footer/fesm2022/index.mjs.map +1 -0
- package/components/page/footer/footer.directive.d.ts +9 -0
- package/components/page/footer/footer.props.d.ts +1 -0
- package/components/page/footer/index.d.ts +5 -0
- package/components/page/footer/package.json +20 -0
- package/components/page/footer/public_api.d.ts +1 -0
- package/components/page/header/.npmignore +2 -0
- package/components/page/header/bundles/index.umd.js +67 -0
- package/components/page/header/esm2022/header.component.mjs +33 -0
- package/components/page/header/esm2022/header.props.mjs +11 -0
- package/components/page/header/esm2022/index.mjs +5 -0
- package/components/page/header/esm2022/public_api.mjs +2 -0
- package/components/page/header/fesm2022/index.mjs +49 -0
- package/components/page/header/fesm2022/index.mjs.map +1 -0
- package/components/page/header/header.component.d.ts +10 -0
- package/components/page/header/header.props.d.ts +1 -0
- package/components/page/header/index.d.ts +5 -0
- package/components/page/header/package.json +20 -0
- package/components/page/header/public_api.d.ts +1 -0
- package/components/page/left-panel/.npmignore +2 -0
- package/components/page/left-panel/bundles/index.umd.js +415 -0
- package/components/page/left-panel/esm2022/index.mjs +5 -0
- package/components/page/left-panel/esm2022/left-panel.animator.mjs +133 -0
- package/components/page/left-panel/esm2022/left-panel.directive.mjs +251 -0
- package/components/page/left-panel/esm2022/left-panel.props.mjs +15 -0
- package/components/page/left-panel/esm2022/public_api.mjs +2 -0
- package/components/page/left-panel/fesm2022/index.mjs +400 -0
- package/components/page/left-panel/fesm2022/index.mjs.map +1 -0
- package/components/page/left-panel/index.d.ts +5 -0
- package/components/page/left-panel/left-panel.animator.d.ts +49 -0
- package/components/page/left-panel/left-panel.directive.d.ts +38 -0
- package/components/page/left-panel/left-panel.props.d.ts +1 -0
- package/components/page/left-panel/package.json +20 -0
- package/components/page/left-panel/public_api.d.ts +1 -0
- package/components/page/right-panel/.npmignore +2 -0
- package/components/page/right-panel/bundles/index.umd.js +86 -0
- package/components/page/right-panel/esm2022/index.mjs +5 -0
- package/components/page/right-panel/esm2022/public_api.mjs +2 -0
- package/components/page/right-panel/esm2022/right-panel.directive.mjs +52 -0
- package/components/page/right-panel/esm2022/right-panel.props.mjs +12 -0
- package/components/page/right-panel/fesm2022/index.mjs +69 -0
- package/components/page/right-panel/fesm2022/index.mjs.map +1 -0
- package/components/page/right-panel/index.d.ts +5 -0
- package/components/page/right-panel/package.json +20 -0
- package/components/page/right-panel/public_api.d.ts +1 -0
- package/components/page/right-panel/right-panel.directive.d.ts +10 -0
- package/components/page/right-panel/right-panel.props.d.ts +1 -0
- package/components/page/top-nav/.npmignore +2 -0
- package/components/page/top-nav/bundles/index.umd.js +68 -0
- package/components/page/top-nav/esm2022/index.mjs +5 -0
- package/components/page/top-nav/esm2022/public_api.mjs +2 -0
- package/components/page/top-nav/esm2022/top-nav.directive.mjs +34 -0
- package/components/page/top-nav/esm2022/top-nav.props.mjs +11 -0
- package/components/page/top-nav/fesm2022/index.mjs +50 -0
- package/components/page/top-nav/fesm2022/index.mjs.map +1 -0
- package/components/page/top-nav/index.d.ts +5 -0
- package/components/page/top-nav/package.json +20 -0
- package/components/page/top-nav/public_api.d.ts +1 -0
- package/components/page/top-nav/top-nav.directive.d.ts +9 -0
- package/components/page/top-nav/top-nav.props.d.ts +1 -0
- package/components/prefab/.npmignore +2 -0
- package/components/prefab/bundles/index.umd.js +176 -0
- package/components/prefab/esm2022/index.mjs +5 -0
- package/components/prefab/esm2022/prefab-container/prefab-container.directive.mjs +56 -0
- package/components/prefab/esm2022/prefab-container/prefab-container.props.mjs +9 -0
- package/components/prefab/esm2022/prefab.directive.mjs +88 -0
- package/components/prefab/esm2022/prefab.props.mjs +8 -0
- package/components/prefab/esm2022/public_api.mjs +3 -0
- package/components/prefab/fesm2022/index.mjs +159 -0
- package/components/prefab/fesm2022/index.mjs.map +1 -0
- package/components/prefab/index.d.ts +5 -0
- package/components/prefab/package.json +20 -0
- package/components/prefab/prefab-container/prefab-container.directive.d.ts +15 -0
- package/components/prefab/prefab-container/prefab-container.props.d.ts +1 -0
- package/components/prefab/prefab.directive.d.ts +17 -0
- package/components/prefab/prefab.props.d.ts +1 -0
- package/components/prefab/public_api.d.ts +2 -0
- package/core/.npmignore +2 -0
- package/core/bundles/index.umd.js +5608 -0
- package/core/constants/currency-constants.d.ts +1064 -0
- package/core/enums/enums.d.ts +67 -0
- package/core/esm2022/constants/currency-constants.mjs +1065 -0
- package/core/esm2022/enums/enums.mjs +72 -0
- package/core/esm2022/index.mjs +5 -0
- package/core/esm2022/public_api.mjs +26 -0
- package/core/esm2022/services/constant.service.mjs +25 -0
- package/core/esm2022/services/custom-icons-loader.service.mjs +20 -0
- package/core/esm2022/services/field-type.service.mjs +35 -0
- package/core/esm2022/services/field-widget.service.mjs +37 -0
- package/core/esm2022/services/pagination.service.mjs +336 -0
- package/core/esm2022/services/script-loader.service.mjs +75 -0
- package/core/esm2022/services/state-persistence.service.mjs +500 -0
- package/core/esm2022/services/user-custom-pipe-manager.service.mjs +23 -0
- package/core/esm2022/services/utils.service.mjs +16 -0
- package/core/esm2022/services/viewport.service.mjs +121 -0
- package/core/esm2022/types/types.mjs +81 -0
- package/core/esm2022/utils/build-utils.mjs +296 -0
- package/core/esm2022/utils/dom.mjs +123 -0
- package/core/esm2022/utils/event-notifier.mjs +70 -0
- package/core/esm2022/utils/expression-parser.mjs +593 -0
- package/core/esm2022/utils/id-generator.mjs +15 -0
- package/core/esm2022/utils/lru-cache.mjs +95 -0
- package/core/esm2022/utils/utils.mjs +1476 -0
- package/core/esm2022/utils/watcher.mjs +276 -0
- package/core/esm2022/utils/wm-project-properties.mjs +30 -0
- package/core/fesm2022/index.mjs +5455 -0
- package/core/fesm2022/index.mjs.map +1 -0
- package/core/index.d.ts +5 -0
- package/core/package.json +26 -0
- package/core/public_api.d.ts +22 -0
- package/core/services/constant.service.d.ts +28 -0
- package/core/services/custom-icons-loader.service.d.ts +6 -0
- package/core/services/field-type.service.d.ts +6 -0
- package/core/services/field-widget.service.d.ts +6 -0
- package/core/services/pagination.service.d.ts +59 -0
- package/core/services/script-loader.service.d.ts +17 -0
- package/core/services/state-persistence.service.d.ts +231 -0
- package/core/services/user-custom-pipe-manager.service.d.ts +9 -0
- package/core/services/utils.service.d.ts +6 -0
- package/core/services/viewport.service.d.ts +37 -0
- package/core/types/types.d.ts +208 -0
- package/core/utils/build-utils.d.ts +14 -0
- package/core/utils/dom.d.ts +16 -0
- package/core/utils/event-notifier.d.ts +26 -0
- package/core/utils/expression-parser.d.ts +8 -0
- package/core/utils/id-generator.d.ts +5 -0
- package/core/utils/lru-cache.d.ts +23 -0
- package/core/utils/utils.d.ts +279 -0
- package/core/utils/watcher.d.ts +13 -0
- package/core/utils/wm-project-properties.d.ts +4 -0
- package/http/.npmignore +2 -0
- package/http/bundles/index.umd.js +421 -0
- package/http/esm2022/http.service.mjs +301 -0
- package/http/esm2022/index.mjs +5 -0
- package/http/esm2022/public_api.mjs +4 -0
- package/http/esm2022/wm-http-request.mjs +48 -0
- package/http/esm2022/wm-http-response.mjs +52 -0
- package/http/fesm2022/index.mjs +405 -0
- package/http/fesm2022/index.mjs.map +1 -0
- package/http/http.service.d.ts +70 -0
- package/http/index.d.ts +5 -0
- package/http/package.json +25 -0
- package/http/public_api.d.ts +3 -0
- package/http/wm-http-request.d.ts +24 -0
- package/http/wm-http-response.d.ts +22 -0
- package/locales/angular/global/af-na.js +24 -0
- package/locales/angular/global/af.js +24 -0
- package/locales/angular/global/agq.js +22 -0
- package/locales/angular/global/ak.js +24 -0
- package/locales/angular/global/am.js +24 -0
- package/locales/angular/global/ar-ae.js +32 -0
- package/locales/angular/global/ar-bh.js +32 -0
- package/locales/angular/global/ar-dj.js +32 -0
- package/locales/angular/global/ar-dz.js +32 -0
- package/locales/angular/global/ar-eg.js +32 -0
- package/locales/angular/global/ar-eh.js +32 -0
- package/locales/angular/global/ar-er.js +32 -0
- package/locales/angular/global/ar-il.js +32 -0
- package/locales/angular/global/ar-iq.js +32 -0
- package/locales/angular/global/ar-jo.js +32 -0
- package/locales/angular/global/ar-km.js +32 -0
- package/locales/angular/global/ar-kw.js +32 -0
- package/locales/angular/global/ar-lb.js +32 -0
- package/locales/angular/global/ar-ly.js +32 -0
- package/locales/angular/global/ar-ma.js +32 -0
- package/locales/angular/global/ar-mr.js +32 -0
- package/locales/angular/global/ar-om.js +32 -0
- package/locales/angular/global/ar-ps.js +32 -0
- package/locales/angular/global/ar-qa.js +32 -0
- package/locales/angular/global/ar-sa.js +32 -0
- package/locales/angular/global/ar-sd.js +32 -0
- package/locales/angular/global/ar-so.js +32 -0
- package/locales/angular/global/ar-ss.js +32 -0
- package/locales/angular/global/ar-sy.js +32 -0
- package/locales/angular/global/ar-td.js +32 -0
- package/locales/angular/global/ar-tn.js +32 -0
- package/locales/angular/global/ar-ye.js +32 -0
- package/locales/angular/global/ar.js +32 -0
- package/locales/angular/global/as.js +24 -0
- package/locales/angular/global/asa.js +24 -0
- package/locales/angular/global/ast.js +24 -0
- package/locales/angular/global/az-cyrl.js +22 -0
- package/locales/angular/global/az-latn.js +24 -0
- package/locales/angular/global/az.js +24 -0
- package/locales/angular/global/bas.js +22 -0
- package/locales/angular/global/be-tarask.js +28 -0
- package/locales/angular/global/be.js +28 -0
- package/locales/angular/global/bem.js +24 -0
- package/locales/angular/global/bez.js +24 -0
- package/locales/angular/global/bg.js +24 -0
- package/locales/angular/global/bm.js +22 -0
- package/locales/angular/global/bn-in.js +24 -0
- package/locales/angular/global/bn.js +24 -0
- package/locales/angular/global/bo-in.js +22 -0
- package/locales/angular/global/bo.js +22 -0
- package/locales/angular/global/br.js +30 -0
- package/locales/angular/global/brx.js +24 -0
- package/locales/angular/global/bs-cyrl.js +22 -0
- package/locales/angular/global/bs-latn.js +26 -0
- package/locales/angular/global/bs.js +26 -0
- package/locales/angular/global/ca-ad.js +24 -0
- package/locales/angular/global/ca-es-valencia.js +24 -0
- package/locales/angular/global/ca-fr.js +24 -0
- package/locales/angular/global/ca-it.js +24 -0
- package/locales/angular/global/ca.js +24 -0
- package/locales/angular/global/ccp-in.js +22 -0
- package/locales/angular/global/ccp.js +22 -0
- package/locales/angular/global/ce.js +24 -0
- package/locales/angular/global/ceb.js +24 -0
- package/locales/angular/global/cgg.js +24 -0
- package/locales/angular/global/chr.js +24 -0
- package/locales/angular/global/ckb-ir.js +24 -0
- package/locales/angular/global/ckb.js +24 -0
- package/locales/angular/global/cs.js +28 -0
- package/locales/angular/global/cy.js +32 -0
- package/locales/angular/global/da-gl.js +24 -0
- package/locales/angular/global/da.js +24 -0
- package/locales/angular/global/dav.js +22 -0
- package/locales/angular/global/de-at.js +24 -0
- package/locales/angular/global/de-be.js +24 -0
- package/locales/angular/global/de-ch.js +24 -0
- package/locales/angular/global/de-it.js +24 -0
- package/locales/angular/global/de-li.js +24 -0
- package/locales/angular/global/de-lu.js +24 -0
- package/locales/angular/global/de.js +24 -0
- package/locales/angular/global/dje.js +22 -0
- package/locales/angular/global/doi.js +24 -0
- package/locales/angular/global/dsb.js +28 -0
- package/locales/angular/global/dua.js +22 -0
- package/locales/angular/global/dyo.js +22 -0
- package/locales/angular/global/dz.js +22 -0
- package/locales/angular/global/ebu.js +22 -0
- package/locales/angular/global/ee-tg.js +24 -0
- package/locales/angular/global/ee.js +24 -0
- package/locales/angular/global/el-cy.js +24 -0
- package/locales/angular/global/el.js +24 -0
- package/locales/angular/global/en-001.js +24 -0
- package/locales/angular/global/en-150.js +24 -0
- package/locales/angular/global/en-ae.js +24 -0
- package/locales/angular/global/en-ag.js +24 -0
- package/locales/angular/global/en-ai.js +24 -0
- package/locales/angular/global/en-as.js +24 -0
- package/locales/angular/global/en-at.js +24 -0
- package/locales/angular/global/en-au.js +24 -0
- package/locales/angular/global/en-bb.js +24 -0
- package/locales/angular/global/en-be.js +24 -0
- package/locales/angular/global/en-bi.js +24 -0
- package/locales/angular/global/en-bm.js +24 -0
- package/locales/angular/global/en-bs.js +24 -0
- package/locales/angular/global/en-bw.js +24 -0
- package/locales/angular/global/en-bz.js +24 -0
- package/locales/angular/global/en-ca.js +24 -0
- package/locales/angular/global/en-cc.js +24 -0
- package/locales/angular/global/en-ch.js +24 -0
- package/locales/angular/global/en-ck.js +24 -0
- package/locales/angular/global/en-cm.js +24 -0
- package/locales/angular/global/en-cx.js +24 -0
- package/locales/angular/global/en-cy.js +24 -0
- package/locales/angular/global/en-de.js +24 -0
- package/locales/angular/global/en-dg.js +24 -0
- package/locales/angular/global/en-dk.js +24 -0
- package/locales/angular/global/en-dm.js +24 -0
- package/locales/angular/global/en-er.js +24 -0
- package/locales/angular/global/en-fi.js +24 -0
- package/locales/angular/global/en-fj.js +24 -0
- package/locales/angular/global/en-fk.js +24 -0
- package/locales/angular/global/en-fm.js +24 -0
- package/locales/angular/global/en-gb.js +24 -0
- package/locales/angular/global/en-gd.js +24 -0
- package/locales/angular/global/en-gg.js +24 -0
- package/locales/angular/global/en-gh.js +24 -0
- package/locales/angular/global/en-gi.js +24 -0
- package/locales/angular/global/en-gm.js +24 -0
- package/locales/angular/global/en-gu.js +24 -0
- package/locales/angular/global/en-gy.js +24 -0
- package/locales/angular/global/en-hk.js +24 -0
- package/locales/angular/global/en-ie.js +24 -0
- package/locales/angular/global/en-il.js +24 -0
- package/locales/angular/global/en-im.js +24 -0
- package/locales/angular/global/en-in.js +24 -0
- package/locales/angular/global/en-io.js +24 -0
- package/locales/angular/global/en-je.js +24 -0
- package/locales/angular/global/en-jm.js +24 -0
- package/locales/angular/global/en-ke.js +24 -0
- package/locales/angular/global/en-ki.js +24 -0
- package/locales/angular/global/en-kn.js +24 -0
- package/locales/angular/global/en-ky.js +24 -0
- package/locales/angular/global/en-lc.js +24 -0
- package/locales/angular/global/en-lr.js +24 -0
- package/locales/angular/global/en-ls.js +24 -0
- package/locales/angular/global/en-mg.js +24 -0
- package/locales/angular/global/en-mh.js +24 -0
- package/locales/angular/global/en-mo.js +24 -0
- package/locales/angular/global/en-mp.js +24 -0
- package/locales/angular/global/en-ms.js +24 -0
- package/locales/angular/global/en-mt.js +24 -0
- package/locales/angular/global/en-mu.js +24 -0
- package/locales/angular/global/en-mv.js +24 -0
- package/locales/angular/global/en-mw.js +24 -0
- package/locales/angular/global/en-my.js +24 -0
- package/locales/angular/global/en-na.js +24 -0
- package/locales/angular/global/en-nf.js +24 -0
- package/locales/angular/global/en-ng.js +24 -0
- package/locales/angular/global/en-nl.js +24 -0
- package/locales/angular/global/en-nr.js +24 -0
- package/locales/angular/global/en-nu.js +24 -0
- package/locales/angular/global/en-nz.js +24 -0
- package/locales/angular/global/en-pg.js +24 -0
- package/locales/angular/global/en-ph.js +24 -0
- package/locales/angular/global/en-pk.js +24 -0
- package/locales/angular/global/en-pn.js +24 -0
- package/locales/angular/global/en-pr.js +24 -0
- package/locales/angular/global/en-pw.js +24 -0
- package/locales/angular/global/en-rw.js +24 -0
- package/locales/angular/global/en-sb.js +24 -0
- package/locales/angular/global/en-sc.js +24 -0
- package/locales/angular/global/en-sd.js +24 -0
- package/locales/angular/global/en-se.js +24 -0
- package/locales/angular/global/en-sg.js +24 -0
- package/locales/angular/global/en-sh.js +24 -0
- package/locales/angular/global/en-si.js +24 -0
- package/locales/angular/global/en-sl.js +24 -0
- package/locales/angular/global/en-ss.js +24 -0
- package/locales/angular/global/en-sx.js +24 -0
- package/locales/angular/global/en-sz.js +24 -0
- package/locales/angular/global/en-tc.js +24 -0
- package/locales/angular/global/en-tk.js +24 -0
- package/locales/angular/global/en-to.js +24 -0
- package/locales/angular/global/en-tt.js +24 -0
- package/locales/angular/global/en-tv.js +24 -0
- package/locales/angular/global/en-tz.js +24 -0
- package/locales/angular/global/en-ug.js +24 -0
- package/locales/angular/global/en-um.js +24 -0
- package/locales/angular/global/en-vc.js +24 -0
- package/locales/angular/global/en-vg.js +24 -0
- package/locales/angular/global/en-vi.js +24 -0
- package/locales/angular/global/en-vu.js +24 -0
- package/locales/angular/global/en-ws.js +24 -0
- package/locales/angular/global/en-za.js +24 -0
- package/locales/angular/global/en-zm.js +24 -0
- package/locales/angular/global/en-zw.js +24 -0
- package/locales/angular/global/en.js +24 -0
- package/locales/angular/global/eo.js +24 -0
- package/locales/angular/global/es-419.js +26 -0
- package/locales/angular/global/es-ar.js +26 -0
- package/locales/angular/global/es-bo.js +26 -0
- package/locales/angular/global/es-br.js +26 -0
- package/locales/angular/global/es-bz.js +26 -0
- package/locales/angular/global/es-cl.js +26 -0
- package/locales/angular/global/es-co.js +26 -0
- package/locales/angular/global/es-cr.js +26 -0
- package/locales/angular/global/es-cu.js +26 -0
- package/locales/angular/global/es-do.js +26 -0
- package/locales/angular/global/es-ea.js +26 -0
- package/locales/angular/global/es-ec.js +26 -0
- package/locales/angular/global/es-gq.js +26 -0
- package/locales/angular/global/es-gt.js +26 -0
- package/locales/angular/global/es-hn.js +26 -0
- package/locales/angular/global/es-ic.js +26 -0
- package/locales/angular/global/es-mx.js +26 -0
- package/locales/angular/global/es-ni.js +26 -0
- package/locales/angular/global/es-pa.js +26 -0
- package/locales/angular/global/es-pe.js +26 -0
- package/locales/angular/global/es-ph.js +26 -0
- package/locales/angular/global/es-pr.js +26 -0
- package/locales/angular/global/es-py.js +26 -0
- package/locales/angular/global/es-sv.js +26 -0
- package/locales/angular/global/es-us.js +26 -0
- package/locales/angular/global/es-uy.js +26 -0
- package/locales/angular/global/es-ve.js +26 -0
- package/locales/angular/global/es.js +26 -0
- package/locales/angular/global/et.js +24 -0
- package/locales/angular/global/eu.js +24 -0
- package/locales/angular/global/ewo.js +22 -0
- package/locales/angular/global/fa-af.js +24 -0
- package/locales/angular/global/fa.js +24 -0
- package/locales/angular/global/ff-adlm-bf.js +22 -0
- package/locales/angular/global/ff-adlm-cm.js +22 -0
- package/locales/angular/global/ff-adlm-gh.js +22 -0
- package/locales/angular/global/ff-adlm-gm.js +22 -0
- package/locales/angular/global/ff-adlm-gw.js +22 -0
- package/locales/angular/global/ff-adlm-lr.js +22 -0
- package/locales/angular/global/ff-adlm-mr.js +22 -0
- package/locales/angular/global/ff-adlm-ne.js +22 -0
- package/locales/angular/global/ff-adlm-ng.js +22 -0
- package/locales/angular/global/ff-adlm-sl.js +22 -0
- package/locales/angular/global/ff-adlm-sn.js +22 -0
- package/locales/angular/global/ff-adlm.js +22 -0
- package/locales/angular/global/ff-cm.js +74 -0
- package/locales/angular/global/ff-gn.js +74 -0
- package/locales/angular/global/ff-latn-bf.js +24 -0
- package/locales/angular/global/ff-latn-cm.js +24 -0
- package/locales/angular/global/ff-latn-gh.js +24 -0
- package/locales/angular/global/ff-latn-gm.js +24 -0
- package/locales/angular/global/ff-latn-gn.js +24 -0
- package/locales/angular/global/ff-latn-gw.js +24 -0
- package/locales/angular/global/ff-latn-lr.js +24 -0
- package/locales/angular/global/ff-latn-mr.js +24 -0
- package/locales/angular/global/ff-latn-ne.js +24 -0
- package/locales/angular/global/ff-latn-ng.js +24 -0
- package/locales/angular/global/ff-latn-sl.js +24 -0
- package/locales/angular/global/ff-latn.js +24 -0
- package/locales/angular/global/ff-mr.js +74 -0
- package/locales/angular/global/ff.js +24 -0
- package/locales/angular/global/fi.js +24 -0
- package/locales/angular/global/fil.js +24 -0
- package/locales/angular/global/fo-dk.js +24 -0
- package/locales/angular/global/fo.js +24 -0
- package/locales/angular/global/fr-be.js +26 -0
- package/locales/angular/global/fr-bf.js +26 -0
- package/locales/angular/global/fr-bi.js +26 -0
- package/locales/angular/global/fr-bj.js +26 -0
- package/locales/angular/global/fr-bl.js +26 -0
- package/locales/angular/global/fr-ca.js +26 -0
- package/locales/angular/global/fr-cd.js +26 -0
- package/locales/angular/global/fr-cf.js +26 -0
- package/locales/angular/global/fr-cg.js +26 -0
- package/locales/angular/global/fr-ch.js +26 -0
- package/locales/angular/global/fr-ci.js +26 -0
- package/locales/angular/global/fr-cm.js +26 -0
- package/locales/angular/global/fr-dj.js +26 -0
- package/locales/angular/global/fr-dz.js +26 -0
- package/locales/angular/global/fr-ga.js +26 -0
- package/locales/angular/global/fr-gf.js +26 -0
- package/locales/angular/global/fr-gn.js +26 -0
- package/locales/angular/global/fr-gp.js +26 -0
- package/locales/angular/global/fr-gq.js +26 -0
- package/locales/angular/global/fr-ht.js +26 -0
- package/locales/angular/global/fr-km.js +26 -0
- package/locales/angular/global/fr-lu.js +26 -0
- package/locales/angular/global/fr-ma.js +26 -0
- package/locales/angular/global/fr-mc.js +26 -0
- package/locales/angular/global/fr-mf.js +26 -0
- package/locales/angular/global/fr-mg.js +26 -0
- package/locales/angular/global/fr-ml.js +26 -0
- package/locales/angular/global/fr-mq.js +26 -0
- package/locales/angular/global/fr-mr.js +26 -0
- package/locales/angular/global/fr-mu.js +26 -0
- package/locales/angular/global/fr-nc.js +26 -0
- package/locales/angular/global/fr-ne.js +26 -0
- package/locales/angular/global/fr-pf.js +26 -0
- package/locales/angular/global/fr-pm.js +26 -0
- package/locales/angular/global/fr-re.js +26 -0
- package/locales/angular/global/fr-rw.js +26 -0
- package/locales/angular/global/fr-sc.js +26 -0
- package/locales/angular/global/fr-sn.js +26 -0
- package/locales/angular/global/fr-sy.js +26 -0
- package/locales/angular/global/fr-td.js +26 -0
- package/locales/angular/global/fr-tg.js +26 -0
- package/locales/angular/global/fr-tn.js +26 -0
- package/locales/angular/global/fr-vu.js +26 -0
- package/locales/angular/global/fr-wf.js +26 -0
- package/locales/angular/global/fr-yt.js +26 -0
- package/locales/angular/global/fr.js +26 -0
- package/locales/angular/global/fur.js +24 -0
- package/locales/angular/global/fy.js +24 -0
- package/locales/angular/global/ga-gb.js +30 -0
- package/locales/angular/global/ga.js +30 -0
- package/locales/angular/global/gd.js +28 -0
- package/locales/angular/global/gl.js +24 -0
- package/locales/angular/global/gsw-fr.js +24 -0
- package/locales/angular/global/gsw-li.js +24 -0
- package/locales/angular/global/gsw.js +24 -0
- package/locales/angular/global/gu.js +24 -0
- package/locales/angular/global/guz.js +22 -0
- package/locales/angular/global/gv.js +30 -0
- package/locales/angular/global/ha-gh.js +24 -0
- package/locales/angular/global/ha-ne.js +24 -0
- package/locales/angular/global/ha.js +24 -0
- package/locales/angular/global/haw.js +24 -0
- package/locales/angular/global/he.js +28 -0
- package/locales/angular/global/hi-latn.js +24 -0
- package/locales/angular/global/hi.js +24 -0
- package/locales/angular/global/hr-ba.js +26 -0
- package/locales/angular/global/hr.js +26 -0
- package/locales/angular/global/hsb.js +28 -0
- package/locales/angular/global/hu.js +24 -0
- package/locales/angular/global/hy.js +24 -0
- package/locales/angular/global/ia.js +24 -0
- package/locales/angular/global/id.js +22 -0
- package/locales/angular/global/ig.js +22 -0
- package/locales/angular/global/ii.js +22 -0
- package/locales/angular/global/is.js +24 -0
- package/locales/angular/global/it-ch.js +26 -0
- package/locales/angular/global/it-sm.js +26 -0
- package/locales/angular/global/it-va.js +26 -0
- package/locales/angular/global/it.js +26 -0
- package/locales/angular/global/ja.js +22 -0
- package/locales/angular/global/jgo.js +24 -0
- package/locales/angular/global/jmc.js +24 -0
- package/locales/angular/global/jv.js +22 -0
- package/locales/angular/global/ka.js +24 -0
- package/locales/angular/global/kab.js +24 -0
- package/locales/angular/global/kam.js +22 -0
- package/locales/angular/global/kde.js +22 -0
- package/locales/angular/global/kea.js +22 -0
- package/locales/angular/global/kgp.js +22 -0
- package/locales/angular/global/khq.js +22 -0
- package/locales/angular/global/ki.js +22 -0
- package/locales/angular/global/kk.js +24 -0
- package/locales/angular/global/kkj.js +24 -0
- package/locales/angular/global/kl.js +24 -0
- package/locales/angular/global/kln.js +22 -0
- package/locales/angular/global/km.js +22 -0
- package/locales/angular/global/kn.js +24 -0
- package/locales/angular/global/ko-kp.js +22 -0
- package/locales/angular/global/ko.js +22 -0
- package/locales/angular/global/kok.js +22 -0
- package/locales/angular/global/ks-arab.js +24 -0
- package/locales/angular/global/ks-deva.js +22 -0
- package/locales/angular/global/ks.js +24 -0
- package/locales/angular/global/ksb.js +24 -0
- package/locales/angular/global/ksf.js +22 -0
- package/locales/angular/global/ksh.js +26 -0
- package/locales/angular/global/ku.js +24 -0
- package/locales/angular/global/kw.js +32 -0
- package/locales/angular/global/ky.js +24 -0
- package/locales/angular/global/lag.js +26 -0
- package/locales/angular/global/lb.js +24 -0
- package/locales/angular/global/lg.js +24 -0
- package/locales/angular/global/lkt.js +22 -0
- package/locales/angular/global/ln-ao.js +24 -0
- package/locales/angular/global/ln-cf.js +24 -0
- package/locales/angular/global/ln-cg.js +24 -0
- package/locales/angular/global/ln.js +24 -0
- package/locales/angular/global/lo.js +22 -0
- package/locales/angular/global/lrc-iq.js +22 -0
- package/locales/angular/global/lrc.js +22 -0
- package/locales/angular/global/lt.js +28 -0
- package/locales/angular/global/lu.js +22 -0
- package/locales/angular/global/luo.js +22 -0
- package/locales/angular/global/luy.js +22 -0
- package/locales/angular/global/lv.js +26 -0
- package/locales/angular/global/mai.js +22 -0
- package/locales/angular/global/mas-tz.js +24 -0
- package/locales/angular/global/mas.js +24 -0
- package/locales/angular/global/mer.js +22 -0
- package/locales/angular/global/mfe.js +22 -0
- package/locales/angular/global/mg.js +24 -0
- package/locales/angular/global/mgh.js +22 -0
- package/locales/angular/global/mgo.js +24 -0
- package/locales/angular/global/mi.js +22 -0
- package/locales/angular/global/mk.js +24 -0
- package/locales/angular/global/ml.js +24 -0
- package/locales/angular/global/mn.js +24 -0
- package/locales/angular/global/mni-beng.js +22 -0
- package/locales/angular/global/mni.js +22 -0
- package/locales/angular/global/mr.js +24 -0
- package/locales/angular/global/ms-bn.js +22 -0
- package/locales/angular/global/ms-id.js +22 -0
- package/locales/angular/global/ms-sg.js +22 -0
- package/locales/angular/global/ms.js +22 -0
- package/locales/angular/global/mt.js +28 -0
- package/locales/angular/global/mua.js +22 -0
- package/locales/angular/global/my.js +22 -0
- package/locales/angular/global/mzn.js +22 -0
- package/locales/angular/global/naq.js +26 -0
- package/locales/angular/global/nb-sj.js +24 -0
- package/locales/angular/global/nb.js +24 -0
- package/locales/angular/global/nd.js +24 -0
- package/locales/angular/global/nds-nl.js +22 -0
- package/locales/angular/global/nds.js +22 -0
- package/locales/angular/global/ne-in.js +24 -0
- package/locales/angular/global/ne.js +24 -0
- package/locales/angular/global/nl-aw.js +24 -0
- package/locales/angular/global/nl-be.js +24 -0
- package/locales/angular/global/nl-bq.js +24 -0
- package/locales/angular/global/nl-cw.js +24 -0
- package/locales/angular/global/nl-sr.js +24 -0
- package/locales/angular/global/nl-sx.js +24 -0
- package/locales/angular/global/nl.js +24 -0
- package/locales/angular/global/nmg.js +22 -0
- package/locales/angular/global/nn.js +24 -0
- package/locales/angular/global/nnh.js +24 -0
- package/locales/angular/global/no.js +24 -0
- package/locales/angular/global/nus.js +22 -0
- package/locales/angular/global/nyn.js +24 -0
- package/locales/angular/global/om-ke.js +24 -0
- package/locales/angular/global/om.js +24 -0
- package/locales/angular/global/or.js +24 -0
- package/locales/angular/global/os-ru.js +24 -0
- package/locales/angular/global/os.js +24 -0
- package/locales/angular/global/pa-arab.js +22 -0
- package/locales/angular/global/pa-guru.js +24 -0
- package/locales/angular/global/pa.js +24 -0
- package/locales/angular/global/pcm.js +24 -0
- package/locales/angular/global/pl.js +28 -0
- package/locales/angular/global/ps-pk.js +24 -0
- package/locales/angular/global/ps.js +24 -0
- package/locales/angular/global/pt-ao.js +26 -0
- package/locales/angular/global/pt-ch.js +26 -0
- package/locales/angular/global/pt-cv.js +26 -0
- package/locales/angular/global/pt-gq.js +26 -0
- package/locales/angular/global/pt-gw.js +26 -0
- package/locales/angular/global/pt-lu.js +26 -0
- package/locales/angular/global/pt-mo.js +26 -0
- package/locales/angular/global/pt-mz.js +26 -0
- package/locales/angular/global/pt-pt.js +26 -0
- package/locales/angular/global/pt-st.js +26 -0
- package/locales/angular/global/pt-tl.js +26 -0
- package/locales/angular/global/pt.js +26 -0
- package/locales/angular/global/qu-bo.js +22 -0
- package/locales/angular/global/qu-ec.js +22 -0
- package/locales/angular/global/qu.js +22 -0
- package/locales/angular/global/rm.js +24 -0
- package/locales/angular/global/rn.js +22 -0
- package/locales/angular/global/ro-md.js +26 -0
- package/locales/angular/global/ro.js +26 -0
- package/locales/angular/global/rof.js +24 -0
- package/locales/angular/global/ru-by.js +28 -0
- package/locales/angular/global/ru-kg.js +28 -0
- package/locales/angular/global/ru-kz.js +28 -0
- package/locales/angular/global/ru-md.js +28 -0
- package/locales/angular/global/ru-ua.js +28 -0
- package/locales/angular/global/ru.js +28 -0
- package/locales/angular/global/rw.js +22 -0
- package/locales/angular/global/rwk.js +24 -0
- package/locales/angular/global/sa.js +22 -0
- package/locales/angular/global/sah.js +22 -0
- package/locales/angular/global/saq.js +24 -0
- package/locales/angular/global/sat-olck.js +26 -0
- package/locales/angular/global/sat.js +26 -0
- package/locales/angular/global/sbp.js +22 -0
- package/locales/angular/global/sc.js +24 -0
- package/locales/angular/global/sd-arab.js +24 -0
- package/locales/angular/global/sd-deva.js +22 -0
- package/locales/angular/global/sd.js +24 -0
- package/locales/angular/global/se-fi.js +26 -0
- package/locales/angular/global/se-se.js +26 -0
- package/locales/angular/global/se.js +26 -0
- package/locales/angular/global/seh.js +24 -0
- package/locales/angular/global/ses.js +22 -0
- package/locales/angular/global/sg.js +22 -0
- package/locales/angular/global/shi-latn.js +22 -0
- package/locales/angular/global/shi-tfng.js +26 -0
- package/locales/angular/global/shi.js +26 -0
- package/locales/angular/global/si.js +24 -0
- package/locales/angular/global/sk.js +28 -0
- package/locales/angular/global/sl.js +28 -0
- package/locales/angular/global/smn.js +26 -0
- package/locales/angular/global/sn.js +24 -0
- package/locales/angular/global/so-dj.js +24 -0
- package/locales/angular/global/so-et.js +24 -0
- package/locales/angular/global/so-ke.js +24 -0
- package/locales/angular/global/so.js +24 -0
- package/locales/angular/global/sq-mk.js +24 -0
- package/locales/angular/global/sq-xk.js +24 -0
- package/locales/angular/global/sq.js +24 -0
- package/locales/angular/global/sr-cyrl-ba.js +26 -0
- package/locales/angular/global/sr-cyrl-me.js +26 -0
- package/locales/angular/global/sr-cyrl-xk.js +26 -0
- package/locales/angular/global/sr-cyrl.js +26 -0
- package/locales/angular/global/sr-latn-ba.js +22 -0
- package/locales/angular/global/sr-latn-me.js +22 -0
- package/locales/angular/global/sr-latn-xk.js +22 -0
- package/locales/angular/global/sr-latn.js +22 -0
- package/locales/angular/global/sr.js +26 -0
- package/locales/angular/global/su-latn.js +22 -0
- package/locales/angular/global/su.js +22 -0
- package/locales/angular/global/sv-ax.js +24 -0
- package/locales/angular/global/sv-fi.js +24 -0
- package/locales/angular/global/sv.js +24 -0
- package/locales/angular/global/sw-cd.js +24 -0
- package/locales/angular/global/sw-ke.js +24 -0
- package/locales/angular/global/sw-ug.js +24 -0
- package/locales/angular/global/sw.js +24 -0
- package/locales/angular/global/ta-lk.js +24 -0
- package/locales/angular/global/ta-my.js +24 -0
- package/locales/angular/global/ta-sg.js +24 -0
- package/locales/angular/global/ta.js +24 -0
- package/locales/angular/global/te.js +24 -0
- package/locales/angular/global/teo-ke.js +24 -0
- package/locales/angular/global/teo.js +24 -0
- package/locales/angular/global/tg.js +22 -0
- package/locales/angular/global/th.js +22 -0
- package/locales/angular/global/ti-er.js +24 -0
- package/locales/angular/global/ti.js +24 -0
- package/locales/angular/global/tk.js +24 -0
- package/locales/angular/global/to.js +22 -0
- package/locales/angular/global/tr-cy.js +24 -0
- package/locales/angular/global/tr.js +24 -0
- package/locales/angular/global/tt.js +22 -0
- package/locales/angular/global/twq.js +22 -0
- package/locales/angular/global/tzm.js +24 -0
- package/locales/angular/global/ug.js +24 -0
- package/locales/angular/global/uk.js +28 -0
- package/locales/angular/global/und.js +24 -0
- package/locales/angular/global/ur-in.js +24 -0
- package/locales/angular/global/ur.js +24 -0
- package/locales/angular/global/uz-arab.js +22 -0
- package/locales/angular/global/uz-cyrl.js +22 -0
- package/locales/angular/global/uz-latn.js +24 -0
- package/locales/angular/global/uz.js +24 -0
- package/locales/angular/global/vai-latn.js +22 -0
- package/locales/angular/global/vai-vaii.js +22 -0
- package/locales/angular/global/vai.js +22 -0
- package/locales/angular/global/vi.js +22 -0
- package/locales/angular/global/vun.js +24 -0
- package/locales/angular/global/wae.js +24 -0
- package/locales/angular/global/wo.js +22 -0
- package/locales/angular/global/xh.js +24 -0
- package/locales/angular/global/xog.js +24 -0
- package/locales/angular/global/yav.js +22 -0
- package/locales/angular/global/yi.js +24 -0
- package/locales/angular/global/yo-bj.js +22 -0
- package/locales/angular/global/yo.js +22 -0
- package/locales/angular/global/yrl-co.js +22 -0
- package/locales/angular/global/yrl-ve.js +22 -0
- package/locales/angular/global/yrl.js +22 -0
- package/locales/angular/global/yue-hans.js +22 -0
- package/locales/angular/global/yue-hant.js +22 -0
- package/locales/angular/global/yue.js +22 -0
- package/locales/angular/global/zgh.js +22 -0
- package/locales/angular/global/zh-hans-hk.js +22 -0
- package/locales/angular/global/zh-hans-mo.js +22 -0
- package/locales/angular/global/zh-hans-sg.js +22 -0
- package/locales/angular/global/zh-hans.js +22 -0
- package/locales/angular/global/zh-hant-hk.js +22 -0
- package/locales/angular/global/zh-hant-mo.js +22 -0
- package/locales/angular/global/zh-hant.js +22 -0
- package/locales/angular/global/zh.js +22 -0
- package/locales/angular/global/zu.js +24 -0
- package/locales/moment/af.js +82 -0
- package/locales/moment/ar-dz.js +167 -0
- package/locales/moment/ar-kw.js +66 -0
- package/locales/moment/ar-ly.js +182 -0
- package/locales/moment/ar-ma.js +67 -0
- package/locales/moment/ar-ps.js +123 -0
- package/locales/moment/ar-sa.js +116 -0
- package/locales/moment/ar-tn.js +66 -0
- package/locales/moment/ar.js +200 -0
- package/locales/moment/az.js +113 -0
- package/locales/moment/be.js +153 -0
- package/locales/moment/bg.js +98 -0
- package/locales/moment/bm.js +62 -0
- package/locales/moment/bn-bd.js +140 -0
- package/locales/moment/bn.js +130 -0
- package/locales/moment/bo.js +135 -0
- package/locales/moment/br.js +179 -0
- package/locales/moment/bs.js +171 -0
- package/locales/moment/ca.js +111 -0
- package/locales/moment/cs.js +192 -0
- package/locales/moment/cv.js +74 -0
- package/locales/moment/cy.js +109 -0
- package/locales/moment/da.js +64 -0
- package/locales/moment/de-at.js +90 -0
- package/locales/moment/de-ch.js +87 -0
- package/locales/moment/de.js +89 -0
- package/locales/moment/dv.js +101 -0
- package/locales/moment/el.js +117 -0
- package/locales/moment/en-au.js +79 -0
- package/locales/moment/en-ca.js +75 -0
- package/locales/moment/en-gb.js +79 -0
- package/locales/moment/en-ie.js +79 -0
- package/locales/moment/en-il.js +75 -0
- package/locales/moment/en-in.js +79 -0
- package/locales/moment/en-nz.js +79 -0
- package/locales/moment/en-sg.js +79 -0
- package/locales/moment/eo.js +79 -0
- package/locales/moment/es-do.js +119 -0
- package/locales/moment/es-mx.js +121 -0
- package/locales/moment/es-us.js +121 -0
- package/locales/moment/es.js +121 -0
- package/locales/moment/et.js +89 -0
- package/locales/moment/eu.js +76 -0
- package/locales/moment/fa.js +124 -0
- package/locales/moment/fi.js +135 -0
- package/locales/moment/fil.js +69 -0
- package/locales/moment/fo.js +68 -0
- package/locales/moment/fr-ca.js +81 -0
- package/locales/moment/fr-ch.js +85 -0
- package/locales/moment/fr.js +119 -0
- package/locales/moment/fy.js +86 -0
- package/locales/moment/ga.js +106 -0
- package/locales/moment/gd.js +106 -0
- package/locales/moment/gl.js +86 -0
- package/locales/moment/gom-deva.js +137 -0
- package/locales/moment/gom-latn.js +135 -0
- package/locales/moment/gu.js +133 -0
- package/locales/moment/he.js +105 -0
- package/locales/moment/hi.js +179 -0
- package/locales/moment/hr.js +167 -0
- package/locales/moment/hu.js +129 -0
- package/locales/moment/hy-am.js +105 -0
- package/locales/moment/id.js +87 -0
- package/locales/moment/is.js +151 -0
- package/locales/moment/it-ch.js +75 -0
- package/locales/moment/it.js +117 -0
- package/locales/moment/ja.js +159 -0
- package/locales/moment/jv.js +87 -0
- package/locales/moment/ka.js +103 -0
- package/locales/moment/kk.js +93 -0
- package/locales/moment/km.js +114 -0
- package/locales/moment/kn.js +135 -0
- package/locales/moment/ko.js +86 -0
- package/locales/moment/ku-kmr.js +125 -0
- package/locales/moment/ku.js +129 -0
- package/locales/moment/ky.js +95 -0
- package/locales/moment/lb.js +148 -0
- package/locales/moment/lo.js +77 -0
- package/locales/moment/lt.js +136 -0
- package/locales/moment/lv.js +105 -0
- package/locales/moment/me.js +128 -0
- package/locales/moment/mi.js +71 -0
- package/locales/moment/mk.js +97 -0
- package/locales/moment/ml.js +93 -0
- package/locales/moment/mn.js +111 -0
- package/locales/moment/mr.js +214 -0
- package/locales/moment/ms-my.js +87 -0
- package/locales/moment/ms.js +86 -0
- package/locales/moment/mt.js +67 -0
- package/locales/moment/my.js +102 -0
- package/locales/moment/nb.js +71 -0
- package/locales/moment/ne.js +132 -0
- package/locales/moment/nl-be.js +113 -0
- package/locales/moment/nl.js +115 -0
- package/locales/moment/nn.js +70 -0
- package/locales/moment/oc-lnc.js +96 -0
- package/locales/moment/pa-in.js +133 -0
- package/locales/moment/pl.js +151 -0
- package/locales/moment/pt-br.js +69 -0
- package/locales/moment/pt.js +74 -0
- package/locales/moment/ro.js +87 -0
- package/locales/moment/ru.js +224 -0
- package/locales/moment/sd.js +92 -0
- package/locales/moment/se.js +68 -0
- package/locales/moment/si.js +80 -0
- package/locales/moment/sk.js +156 -0
- package/locales/moment/sl.js +182 -0
- package/locales/moment/sq.js +76 -0
- package/locales/moment/sr-cyrl.js +138 -0
- package/locales/moment/sr.js +140 -0
- package/locales/moment/ss.js +95 -0
- package/locales/moment/sv.js +79 -0
- package/locales/moment/sw.js +66 -0
- package/locales/moment/ta.js +142 -0
- package/locales/moment/te.js +99 -0
- package/locales/moment/tet.js +79 -0
- package/locales/moment/tg.js +128 -0
- package/locales/moment/th.js +76 -0
- package/locales/moment/tk.js +102 -0
- package/locales/moment/tl-ph.js +68 -0
- package/locales/moment/tlh.js +135 -0
- package/locales/moment/tr.js +117 -0
- package/locales/moment/tzl.js +100 -0
- package/locales/moment/tzm-latn.js +65 -0
- package/locales/moment/tzm.js +65 -0
- package/locales/moment/ug-cn.js +122 -0
- package/locales/moment/uk.js +178 -0
- package/locales/moment/ur.js +93 -0
- package/locales/moment/uz-latn.js +65 -0
- package/locales/moment/uz.js +62 -0
- package/locales/moment/vi.js +91 -0
- package/locales/moment/x-pseudo.js +84 -0
- package/locales/moment/yo.js +64 -0
- package/locales/moment/zh-cn.js +131 -0
- package/locales/moment/zh-hk.js +112 -0
- package/locales/moment/zh-mo.js +111 -0
- package/locales/moment/zh-tw.js +110 -0
- package/locales/moment-timezone/moment-timezone-with-data.js +1582 -0
- package/npm-shrinkwrap.json +17 -0
- package/oAuth/.npmignore +2 -0
- package/oAuth/bundles/index.umd.js +495 -0
- package/oAuth/esm2022/index.mjs +5 -0
- package/oAuth/esm2022/oAuth.service.mjs +51 -0
- package/oAuth/esm2022/oAuth.utils.mjs +423 -0
- package/oAuth/esm2022/public_api.mjs +3 -0
- package/oAuth/fesm2022/index.mjs +478 -0
- package/oAuth/fesm2022/index.mjs.map +1 -0
- package/oAuth/index.d.ts +5 -0
- package/oAuth/oAuth.service.d.ts +19 -0
- package/oAuth/oAuth.utils.d.ts +20 -0
- package/oAuth/package.json +25 -0
- package/oAuth/public_api.d.ts +2 -0
- package/package-lock.json +17 -0
- package/package.json +16 -0
- package/runtime/base/.npmignore +2 -0
- package/runtime/base/bundles/index.umd.js +6031 -0
- package/runtime/base/components/app-component/app.component.d.ts +46 -0
- package/runtime/base/components/app-spinner.component.d.ts +10 -0
- package/runtime/base/components/base-custom-widget.component.d.ts +75 -0
- package/runtime/base/components/base-layout.component.d.ts +30 -0
- package/runtime/base/components/base-page.component.d.ts +83 -0
- package/runtime/base/components/base-partial.component.d.ts +65 -0
- package/runtime/base/components/base-prefab.component.d.ts +61 -0
- package/runtime/base/components/base-spa-page.component.d.ts +85 -0
- package/runtime/base/components/custom-toaster.component.d.ts +19 -0
- package/runtime/base/components/empty-component/empty-page.component.d.ts +18 -0
- package/runtime/base/components/prefab-preview.component.d.ts +23 -0
- package/runtime/base/directives/accessroles.directive.d.ts +40 -0
- package/runtime/base/directives/prefab.directive.d.ts +17 -0
- package/runtime/base/esm2022/components/app-component/app.component.mjs +201 -0
- package/runtime/base/esm2022/components/app-spinner.component.mjs +54 -0
- package/runtime/base/esm2022/components/base-custom-widget.component.mjs +339 -0
- package/runtime/base/esm2022/components/base-layout.component.mjs +76 -0
- package/runtime/base/esm2022/components/base-page.component.mjs +378 -0
- package/runtime/base/esm2022/components/base-partial.component.mjs +221 -0
- package/runtime/base/esm2022/components/base-prefab.component.mjs +253 -0
- package/runtime/base/esm2022/components/base-spa-page.component.mjs +353 -0
- package/runtime/base/esm2022/components/custom-toaster.component.mjs +87 -0
- package/runtime/base/esm2022/components/empty-component/empty-page.component.mjs +66 -0
- package/runtime/base/esm2022/components/prefab-preview.component.mjs +123 -0
- package/runtime/base/esm2022/directives/accessroles.directive.mjs +118 -0
- package/runtime/base/esm2022/directives/prefab.directive.mjs +50 -0
- package/runtime/base/esm2022/guards/auth.guard.mjs +43 -0
- package/runtime/base/esm2022/guards/can-deactivate-page.guard.mjs +44 -0
- package/runtime/base/esm2022/guards/page-not-found.guard.mjs +22 -0
- package/runtime/base/esm2022/guards/role.guard.mjs +47 -0
- package/runtime/base/esm2022/index.mjs +5 -0
- package/runtime/base/esm2022/overrides/wm_dom_renderer.mjs +363 -0
- package/runtime/base/esm2022/overrides/wm_shared_styles_host.mjs +85 -0
- package/runtime/base/esm2022/public_api.mjs +49 -0
- package/runtime/base/esm2022/resolves/app-before-load.resolve.mjs +22 -0
- package/runtime/base/esm2022/resolves/app-extension.resolve.mjs +48 -0
- package/runtime/base/esm2022/resolves/app-js.resolve.mjs +39 -0
- package/runtime/base/esm2022/resolves/app-variables.resolve.mjs +31 -0
- package/runtime/base/esm2022/resolves/i18n.resolve.mjs +18 -0
- package/runtime/base/esm2022/resolves/metadata.resolve.mjs +22 -0
- package/runtime/base/esm2022/resolves/security-config.resolve.mjs +26 -0
- package/runtime/base/esm2022/runtime-base.module.mjs +942 -0
- package/runtime/base/esm2022/services/app-defaults.service.mjs +22 -0
- package/runtime/base/esm2022/services/app.manager.service.mjs +522 -0
- package/runtime/base/esm2022/services/app.service.mjs +232 -0
- package/runtime/base/esm2022/services/dynamic-component-ref-provider.service.mjs +86 -0
- package/runtime/base/esm2022/services/http-interceptor.services.mjs +83 -0
- package/runtime/base/esm2022/services/i18n.service.mjs +305 -0
- package/runtime/base/esm2022/services/navigation.service.mjs +307 -0
- package/runtime/base/esm2022/services/pipe-provider.service.mjs +127 -0
- package/runtime/base/esm2022/services/pipe.service.mjs +33 -0
- package/runtime/base/esm2022/services/prefab-manager.service.mjs +95 -0
- package/runtime/base/esm2022/services/spinner.service.mjs +144 -0
- package/runtime/base/esm2022/services/toaster.service.mjs +90 -0
- package/runtime/base/esm2022/types/types.mjs +22 -0
- package/runtime/base/esm2022/util/fragment-monitor.mjs +59 -0
- package/runtime/base/esm2022/util/utils.mjs +24 -0
- package/runtime/base/esm2022/util/wm-route-reuse-strategy.mjs +176 -0
- package/runtime/base/fesm2022/index.mjs +6068 -0
- package/runtime/base/fesm2022/index.mjs.map +1 -0
- package/runtime/base/guards/auth.guard.d.ts +14 -0
- package/runtime/base/guards/can-deactivate-page.guard.d.ts +16 -0
- package/runtime/base/guards/page-not-found.guard.d.ts +12 -0
- package/runtime/base/guards/role.guard.d.ts +17 -0
- package/runtime/base/index.d.ts +5 -0
- package/runtime/base/overrides/wm_dom_renderer.d.ts +33 -0
- package/runtime/base/overrides/wm_shared_styles_host.d.ts +23 -0
- package/runtime/base/package.json +25 -0
- package/runtime/base/public_api.d.ts +48 -0
- package/runtime/base/resolves/app-before-load.resolve.d.ts +11 -0
- package/runtime/base/resolves/app-extension.resolve.d.ts +14 -0
- package/runtime/base/resolves/app-js.resolve.d.ts +15 -0
- package/runtime/base/resolves/app-variables.resolve.d.ts +11 -0
- package/runtime/base/resolves/i18n.resolve.d.ts +9 -0
- package/runtime/base/resolves/metadata.resolve.d.ts +9 -0
- package/runtime/base/resolves/security-config.resolve.d.ts +10 -0
- package/runtime/base/runtime-base.module.d.ts +171 -0
- package/runtime/base/services/app-defaults.service.d.ts +12 -0
- package/runtime/base/services/app.manager.service.d.ts +142 -0
- package/runtime/base/services/app.service.d.ts +70 -0
- package/runtime/base/services/dynamic-component-ref-provider.service.d.ts +26 -0
- package/runtime/base/services/http-interceptor.services.d.ts +17 -0
- package/runtime/base/services/i18n.service.d.ts +58 -0
- package/runtime/base/services/navigation.service.d.ts +45 -0
- package/runtime/base/services/pipe-provider.service.d.ts +31 -0
- package/runtime/base/services/pipe.service.d.ts +12 -0
- package/runtime/base/services/prefab-manager.service.d.ts +25 -0
- package/runtime/base/services/spinner.service.d.ts +49 -0
- package/runtime/base/services/toaster.service.d.ts +23 -0
- package/runtime/base/types/types.d.ts +25 -0
- package/runtime/base/util/fragment-monitor.d.ts +22 -0
- package/runtime/base/util/utils.d.ts +6 -0
- package/runtime/base/util/wm-route-reuse-strategy.d.ts +29 -0
- package/runtime/dynamic/.npmignore +2 -0
- package/runtime/dynamic/app/app.config.d.ts +5 -0
- package/runtime/dynamic/app/app.module.d.ts +37 -0
- package/runtime/dynamic/app/app.routes.d.ts +2 -0
- package/runtime/dynamic/app/components/page-wrapper.component.d.ts +37 -0
- package/runtime/dynamic/app/services/app-extension.service.d.ts +7 -0
- package/runtime/dynamic/app/services/app-js-provider.service.d.ts +10 -0
- package/runtime/dynamic/app/services/app-resource-manager.service.d.ts +10 -0
- package/runtime/dynamic/app/services/app-variables-provider.service.d.ts +12 -0
- package/runtime/dynamic/app/services/component-ref-provider.service.d.ts +17 -0
- package/runtime/dynamic/app/services/customwidget-config-provider.service.d.ts +8 -0
- package/runtime/dynamic/app/services/prefab-config-provider.service.d.ts +10 -0
- package/runtime/dynamic/bundles/index.umd.js +887 -0
- package/runtime/dynamic/esm2022/app/app.config.mjs +141 -0
- package/runtime/dynamic/esm2022/app/app.module.mjs +314 -0
- package/runtime/dynamic/esm2022/app/app.routes.mjs +21 -0
- package/runtime/dynamic/esm2022/app/components/page-wrapper.component.mjs +106 -0
- package/runtime/dynamic/esm2022/app/services/app-extension.service.mjs +24 -0
- package/runtime/dynamic/esm2022/app/services/app-js-provider.service.mjs +25 -0
- package/runtime/dynamic/esm2022/app/services/app-resource-manager.service.mjs +31 -0
- package/runtime/dynamic/esm2022/app/services/app-variables-provider.service.mjs +27 -0
- package/runtime/dynamic/esm2022/app/services/component-ref-provider.service.mjs +266 -0
- package/runtime/dynamic/esm2022/app/services/customwidget-config-provider.service.mjs +22 -0
- package/runtime/dynamic/esm2022/app/services/prefab-config-provider.service.mjs +29 -0
- package/runtime/dynamic/esm2022/index.mjs +5 -0
- package/runtime/dynamic/esm2022/main.mjs +42 -0
- package/runtime/dynamic/esm2022/public_api.mjs +10 -0
- package/runtime/dynamic/fesm2022/index.mjs +950 -0
- package/runtime/dynamic/fesm2022/index.mjs.map +1 -0
- package/runtime/dynamic/index.d.ts +5 -0
- package/runtime/dynamic/main.d.ts +2 -0
- package/runtime/dynamic/package.json +25 -0
- package/runtime/dynamic/public_api.d.ts +9 -0
- package/scripts/@wavemaker/nvd3/build/nv.d3.min.js +1 -0
- package/scripts/d3/d3.min.js +2 -0
- package/scripts/datatable/datatable.js +3769 -0
- package/scripts/iscroll/build/iscroll.js +2091 -0
- package/scripts/jquery-ui/ui/widgets/droppable.js +503 -0
- package/scripts/jquery-ui/ui/widgets/resizable.js +1275 -0
- package/scripts/jquery-ui/ui/widgets/sortable.js +1608 -0
- package/scripts/jquery.ui.touch-punch/jquery.ui.touch-punch.min.js +11 -0
- package/scripts/summernote/dist/summernote-lite.min.js +2 -0
- package/scripts/swipey/swipey.jquery.plugin.js +769 -0
- package/scripts/tree-keyboard-navigation/keyboard-navigation.js +251 -0
- package/security/.npmignore +2 -0
- package/security/bundles/index.umd.js +446 -0
- package/security/esm2022/index.mjs +5 -0
- package/security/esm2022/public_api.mjs +2 -0
- package/security/esm2022/security.service.mjs +439 -0
- package/security/fesm2022/index.mjs +444 -0
- package/security/fesm2022/index.mjs.map +1 -0
- package/security/index.d.ts +5 -0
- package/security/package.json +25 -0
- package/security/public_api.d.ts +1 -0
- package/security/security.service.d.ts +127 -0
- package/swipey/.npmignore +2 -0
- package/swipey/bundles/index.umd.js +54 -0
- package/swipey/esm2022/index.mjs +5 -0
- package/swipey/esm2022/public_api.mjs +2 -0
- package/swipey/esm2022/swipe.animation.mjs +45 -0
- package/swipey/fesm2022/index.mjs +51 -0
- package/swipey/fesm2022/index.mjs.map +1 -0
- package/swipey/index.d.ts +5 -0
- package/swipey/package.json +25 -0
- package/swipey/public_api.d.ts +1 -0
- package/swipey/swipe.animation.d.ts +19 -0
- package/transpiler/.npmignore +2 -0
- package/transpiler/build.d.ts +35 -0
- package/transpiler/bundles/index.umd.js +804 -0
- package/transpiler/esm2022/build.mjs +475 -0
- package/transpiler/esm2022/imports.mjs +318 -0
- package/transpiler/esm2022/index.mjs +5 -0
- package/transpiler/esm2022/public_api.mjs +3 -0
- package/transpiler/fesm2022/index.mjs +799 -0
- package/transpiler/fesm2022/index.mjs.map +1 -0
- package/transpiler/imports.d.ts +2 -0
- package/transpiler/index.d.ts +5 -0
- package/transpiler/package.json +26 -0
- package/transpiler/public_api.d.ts +2 -0
- package/variables/.npmignore +2 -0
- package/variables/advanced-options.d.ts +4 -0
- package/variables/bundles/index.umd.js +3174 -0
- package/variables/constants/variables.constants.d.ts +315 -0
- package/variables/esm2022/advanced-options.mjs +2 -0
- package/variables/esm2022/constants/variables.constants.mjs +333 -0
- package/variables/esm2022/factory/variable-manager.factory.mjs +24 -0
- package/variables/esm2022/factory/variable.factory.mjs +46 -0
- package/variables/esm2022/index.mjs +5 -0
- package/variables/esm2022/manager/action/base-action.manager.mjs +14 -0
- package/variables/esm2022/manager/action/login-action.manager.mjs +180 -0
- package/variables/esm2022/manager/action/logout-action.manager.mjs +77 -0
- package/variables/esm2022/manager/action/navigation-action.manager.mjs +8 -0
- package/variables/esm2022/manager/action/notification-action.manager.mjs +152 -0
- package/variables/esm2022/manager/variable/base-variable.manager.mjs +81 -0
- package/variables/esm2022/manager/variable/web-socket-variable.manager.mjs +289 -0
- package/variables/esm2022/model/action/login-action.mjs +25 -0
- package/variables/esm2022/model/action/logout-action.mjs +22 -0
- package/variables/esm2022/model/action/navigation-action.mjs +26 -0
- package/variables/esm2022/model/action/notification-action.mjs +91 -0
- package/variables/esm2022/model/variable/web-socket-variable.mjs +34 -0
- package/variables/esm2022/public_api.mjs +6 -0
- package/variables/esm2022/service/metadata-service/metadata.service.mjs +60 -0
- package/variables/esm2022/service/variables.service.mjs +199 -0
- package/variables/esm2022/util/action/navigation-action.utils.mjs +52 -0
- package/variables/esm2022/util/oAuth.utils.mjs +11 -0
- package/variables/esm2022/util/variable/pagination.utils.mjs +402 -0
- package/variables/esm2022/util/variable/service-variable.utils.mjs +376 -0
- package/variables/esm2022/util/variable/variables.utils.mjs +809 -0
- package/variables/factory/variable-manager.factory.d.ts +3 -0
- package/variables/factory/variable.factory.d.ts +3 -0
- package/variables/fesm2022/index.mjs +3236 -0
- package/variables/fesm2022/index.mjs.map +1 -0
- package/variables/index.d.ts +5 -0
- package/variables/manager/action/base-action.manager.d.ts +4 -0
- package/variables/manager/action/login-action.manager.d.ts +7 -0
- package/variables/manager/action/logout-action.manager.d.ts +4 -0
- package/variables/manager/action/navigation-action.manager.d.ts +4 -0
- package/variables/manager/action/notification-action.manager.d.ts +23 -0
- package/variables/manager/variable/base-variable.manager.d.ts +24 -0
- package/variables/manager/variable/web-socket-variable.manager.d.ts +124 -0
- package/variables/model/action/login-action.d.ts +11 -0
- package/variables/model/action/logout-action.d.ts +10 -0
- package/variables/model/action/navigation-action.d.ts +9 -0
- package/variables/model/action/notification-action.d.ts +25 -0
- package/variables/model/variable/web-socket-variable.d.ts +11 -0
- package/variables/package.json +25 -0
- package/variables/public_api.d.ts +5 -0
- package/variables/service/metadata-service/metadata.service.d.ts +16 -0
- package/variables/service/variables.service.d.ts +57 -0
- package/variables/util/action/navigation-action.utils.d.ts +6 -0
- package/variables/util/oAuth.utils.d.ts +3 -0
- package/variables/util/variable/pagination.utils.d.ts +82 -0
- package/variables/util/variable/service-variable.utils.d.ts +16 -0
- package/variables/util/variable/variables.utils.d.ts +80 -0
|
@@ -0,0 +1,982 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import { SpinnerComponent } from '@wm/components/basic/spinner';
|
|
3
|
+
import { Component, HostBinding, Injector, ViewEncapsulation, Optional, Inject } from '@angular/core';
|
|
4
|
+
import { App, DataSource, getClonedObject, isDataSourceEqual, isEmptyObject, isNumberType, prettifyLabels, removeAttr, triggerFn, } from '@wm/core';
|
|
5
|
+
import { APPLY_STYLES_TYPE, provideAsWidgetRef, StylableComponent, styler, } from '@wm/components/base';
|
|
6
|
+
import { registerProps } from './chart.props';
|
|
7
|
+
import { allShapes, getDateList, getSampleData, initChart, isAreaChart, isAxisDomainValid, isBarChart, isBubbleChart, isChartDataArray, isChartDataJSON, isLineTypeChart, isPieType, postPlotChartProcess } from './chart.utils';
|
|
8
|
+
import { concat, debounce, fill, first, forEach, forEachRight, get, groupBy, includes, intersection, isArray, isEmpty, isObject, keys, map, max, maxBy, minBy, orderBy, replace, split, uniq } from "lodash-es";
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
import * as i1 from "@wm/core";
|
|
11
|
+
import * as i2 from "@angular/common";
|
|
12
|
+
const WIDGET_CONFIG = { widgetType: 'wm-chart', hostClass: 'app-chart' };
|
|
13
|
+
const options = {
|
|
14
|
+
'Bubble': ['bubblesize', 'shape']
|
|
15
|
+
}, NONE = 'none', advanceDataProps = ['aggregation', 'aggregationcolumn', 'groupby', 'orderby'],
|
|
16
|
+
// XPaths to get actual data of data points in charts
|
|
17
|
+
chartDataPointXpath = {
|
|
18
|
+
'Column': 'rect.nv-bar',
|
|
19
|
+
'Bar': 'g.nv-bar',
|
|
20
|
+
'Area': '.nv-stackedarea .nv-point',
|
|
21
|
+
'Cumulative Line': '.nv-cumulativeLine .nv-scatterWrap path.nv-point',
|
|
22
|
+
'Line': '.nv-lineChart .nv-scatterWrap path.nv-point',
|
|
23
|
+
'Pie': '.nv-pieChart .nv-slice path',
|
|
24
|
+
'Donut': '.nv-pieChart .nv-slice path',
|
|
25
|
+
'Bubble': '.nv-scatterChart .nv-point-paths path'
|
|
26
|
+
},
|
|
27
|
+
// all properties of the chart
|
|
28
|
+
allOptions = ['bubblesize', 'shape'], styleProps = {
|
|
29
|
+
'fontunit': 'font-size',
|
|
30
|
+
'fontsize': 'font-size',
|
|
31
|
+
'color': 'fill',
|
|
32
|
+
'fontfamily': 'font-family',
|
|
33
|
+
'fontweight': 'font-weight',
|
|
34
|
+
'fontstyle': 'font-style',
|
|
35
|
+
'textdecoration': 'text-decoration'
|
|
36
|
+
},
|
|
37
|
+
// Getting the relevant aggregation function based on the selected option
|
|
38
|
+
aggregationFnMap = {
|
|
39
|
+
'average': 'AVG',
|
|
40
|
+
'count': 'COUNT',
|
|
41
|
+
'maximum': 'MAX',
|
|
42
|
+
'minimum': 'MIN',
|
|
43
|
+
'sum': 'SUM'
|
|
44
|
+
};
|
|
45
|
+
const getBooleanValue = val => {
|
|
46
|
+
if (val === true || val === 'true') {
|
|
47
|
+
return true;
|
|
48
|
+
}
|
|
49
|
+
if (val === false || val === 'false') {
|
|
50
|
+
return false;
|
|
51
|
+
}
|
|
52
|
+
return val;
|
|
53
|
+
};
|
|
54
|
+
// returns orderby columns and their orders in two separate arrays
|
|
55
|
+
const getLodashOrderByFormat = orderby => {
|
|
56
|
+
let columns;
|
|
57
|
+
const orderByColumns = [], orders = [];
|
|
58
|
+
forEach(split(orderby, ','), function (col) {
|
|
59
|
+
columns = split(col, ':');
|
|
60
|
+
orderByColumns.push(columns[0]);
|
|
61
|
+
orders.push(columns[1]);
|
|
62
|
+
});
|
|
63
|
+
return {
|
|
64
|
+
'columns': orderByColumns,
|
|
65
|
+
'orders': orders
|
|
66
|
+
};
|
|
67
|
+
};
|
|
68
|
+
// Replacing the '.' by the '$' because '.' is not supported in the alias names
|
|
69
|
+
const getValidAliasName = aliasName => aliasName ? aliasName.replace(/\./g, '$') : null;
|
|
70
|
+
// Applying the font related styles for the chart
|
|
71
|
+
const setTextStyle = (properties, id) => {
|
|
72
|
+
const charttext = d3.select('#wmChart' + id + ' svg').selectAll('text');
|
|
73
|
+
if (!charttext.empty()) {
|
|
74
|
+
charttext.style(properties);
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
const angle = d => {
|
|
78
|
+
const a = (d.startAngle + d.endAngle) * 90 / Math.PI - 90;
|
|
79
|
+
return a > 90 ? a - 180 : a;
|
|
80
|
+
};
|
|
81
|
+
export class ChartComponent extends StylableComponent {
|
|
82
|
+
static { this.initializeProps = registerProps(); }
|
|
83
|
+
isGroupByEnabled() {
|
|
84
|
+
return !!(this.groupby && this.groupby !== NONE);
|
|
85
|
+
}
|
|
86
|
+
// Check if x and y axis that are chosen are valid to plot chart
|
|
87
|
+
isValidAxis() {
|
|
88
|
+
// Check if x axis and y axis are chosen and are not equal
|
|
89
|
+
return this.binddataset ? (this.xaxisdatakey && this.yaxisdatakey) : true;
|
|
90
|
+
}
|
|
91
|
+
// Check if aggregation is chosen
|
|
92
|
+
isAggregationEnabled() {
|
|
93
|
+
return !!((this.isGroupByEnabled() && this.aggregation !== NONE && this.aggregationcolumn));
|
|
94
|
+
}
|
|
95
|
+
// Check if either groupby, aggregation or orderby is chosen
|
|
96
|
+
isDataFilteringEnabled() {
|
|
97
|
+
/*Query need to be triggered if any of the following cases satisfy
|
|
98
|
+
* 1. Group By and aggregation both chosen
|
|
99
|
+
* 2. Only Order By is chosen
|
|
100
|
+
* */
|
|
101
|
+
return this.isAggregationEnabled() || (!this.isVisuallyGrouped && this.orderby);
|
|
102
|
+
}
|
|
103
|
+
/*Charts like Line,Area,Cumulative Line does not support any other datatype
|
|
104
|
+
other than integer unlike the column and bar.It is a nvd3 issue. Inorder to
|
|
105
|
+
support that this is a fix*/
|
|
106
|
+
getxAxisVal(dataObj, xKey, index) {
|
|
107
|
+
const value = get(dataObj, xKey);
|
|
108
|
+
// If x axis is other than number type then add indexes
|
|
109
|
+
if (isLineTypeChart(this.type) && !isNumberType(this.xAxisDataType)) {
|
|
110
|
+
// Verification to get the unique data keys
|
|
111
|
+
this.xDataKeyArr.push(value);
|
|
112
|
+
// Check if it is of type Date
|
|
113
|
+
if (value instanceof Date) {
|
|
114
|
+
return value;
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
return index;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
return value;
|
|
121
|
+
}
|
|
122
|
+
// Getting the min and max values among all the x values
|
|
123
|
+
getXMinMaxValues(datum) {
|
|
124
|
+
if (!datum) {
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
const xValues = {};
|
|
128
|
+
/*
|
|
129
|
+
compute the min x value
|
|
130
|
+
eg: When data has objects
|
|
131
|
+
input: [{x:1, y:2}, {x:2, y:3}, {x:3, y:4}]
|
|
132
|
+
min x: 1
|
|
133
|
+
eg: When data has arrays
|
|
134
|
+
input: [[10, 20], [20, 30], [30, 40]];
|
|
135
|
+
min x: 10
|
|
136
|
+
*/
|
|
137
|
+
xValues.min = minBy(datum.values, dataObject => dataObject.x || dataObject[0]);
|
|
138
|
+
/*
|
|
139
|
+
compute the max x value
|
|
140
|
+
eg: When data has objects
|
|
141
|
+
input: [{x:1, y:2}, {x:2, y:3}, {x:3, y:4}]
|
|
142
|
+
max x: 3
|
|
143
|
+
eg: When data has arrays
|
|
144
|
+
input: [[10, 20], [20, 30], [30, 40]];
|
|
145
|
+
max x: 30
|
|
146
|
+
*/
|
|
147
|
+
xValues.max = maxBy(datum.values, dataObject => dataObject.x || dataObject[0]);
|
|
148
|
+
return xValues;
|
|
149
|
+
}
|
|
150
|
+
// Getting the min and max values among all the y values
|
|
151
|
+
getYMinMaxValues(datum) {
|
|
152
|
+
const yValues = {}, minValues = [], maxValues = [];
|
|
153
|
+
if (!datum) {
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
156
|
+
/*
|
|
157
|
+
Getting the min and max y values among all the series of data
|
|
158
|
+
compute the min y value
|
|
159
|
+
eg: When data has objects
|
|
160
|
+
input: [[{x:1, y:2}, {x:2, y:3}, {x:3, y:4}], [{x:2, y:3}, {x:3, y:4}, {x:4, y:5}]]
|
|
161
|
+
min y values : '2'(among first set) & '3'(among second set)
|
|
162
|
+
max y values : '4'(among first set) & '5'(among second set)
|
|
163
|
+
|
|
164
|
+
eg: When data has arrays
|
|
165
|
+
input: [[[10, 20], [20, 30], [30, 40]], [[20, 30], [30, 40], [40, 50]]]
|
|
166
|
+
min y values : '20'(among first set) & '30'(among second set)
|
|
167
|
+
max y values : '40'(among first set) & '50'(among second set)
|
|
168
|
+
*/
|
|
169
|
+
forEach(datum, data => {
|
|
170
|
+
minValues.push(minBy(data.values, function (dataObject) {
|
|
171
|
+
return dataObject.y || dataObject[1];
|
|
172
|
+
}));
|
|
173
|
+
maxValues.push(maxBy(data.values, function (dataObject) {
|
|
174
|
+
return dataObject.y || dataObject[1];
|
|
175
|
+
}));
|
|
176
|
+
});
|
|
177
|
+
// Gets the least and highest values among all the min and max values of respective series of data
|
|
178
|
+
yValues.min = minBy(minValues, dataObject => dataObject.y || dataObject[1]);
|
|
179
|
+
yValues.max = maxBy(maxValues, dataObject => dataObject.y || dataObject[1]);
|
|
180
|
+
return yValues;
|
|
181
|
+
}
|
|
182
|
+
// If the x-axis values are undefined, we return empty array else we return the values
|
|
183
|
+
getValidData(values) {
|
|
184
|
+
return (values.length === 1 && values[0] === undefined) ? [] : values;
|
|
185
|
+
}
|
|
186
|
+
// Returns the single data point based on the type of the data chart accepts
|
|
187
|
+
valueFinder(dataObj, xKey, yKey, index, shape) {
|
|
188
|
+
const xVal = this.getxAxisVal(dataObj, xKey, index), value = get(dataObj, yKey), yVal = parseFloat(value) || value, size = parseFloat(dataObj[this.bubblesize]) || 2;
|
|
189
|
+
let dataPoint = {};
|
|
190
|
+
if (isChartDataJSON(this.type)) {
|
|
191
|
+
dataPoint.x = xVal;
|
|
192
|
+
dataPoint.y = yVal;
|
|
193
|
+
// only Bubble chart has the third dimension
|
|
194
|
+
if (isBubbleChart(this.type)) {
|
|
195
|
+
dataPoint.size = size;
|
|
196
|
+
dataPoint.shape = shape || 'circle';
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
else if (isChartDataArray(this.type)) {
|
|
200
|
+
dataPoint = [xVal, yVal];
|
|
201
|
+
}
|
|
202
|
+
// Adding actual unwrapped data to chart data to use at the time of selected data point of chart event
|
|
203
|
+
dataPoint._dataObj = dataObj;
|
|
204
|
+
return dataPoint;
|
|
205
|
+
}
|
|
206
|
+
// Setting appropriate error messages
|
|
207
|
+
setErrMsg(message) {
|
|
208
|
+
if (this.showNoDataMsg) {
|
|
209
|
+
this.showContentLoadError = true;
|
|
210
|
+
this.invalidConfig = true;
|
|
211
|
+
// TODO: Set the locale from the message
|
|
212
|
+
this.errMsg = ''; // $rootScope.locale[message];
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
processChartData() {
|
|
216
|
+
this.sampleData = getSampleData(this);
|
|
217
|
+
// scope variables used to keep the actual key values for x-axis
|
|
218
|
+
this.xDataKeyArr = [];
|
|
219
|
+
// Plotting the chart with sample data when the chart dataset is not bound
|
|
220
|
+
if (!this.binddataset) {
|
|
221
|
+
this.xDataKeyArr = getDateList();
|
|
222
|
+
return this.sampleData;
|
|
223
|
+
}
|
|
224
|
+
if (!this.chartData || !this.chartData.length) {
|
|
225
|
+
return [];
|
|
226
|
+
}
|
|
227
|
+
let datum = [], yAxisKey, shapes = [], values = [];
|
|
228
|
+
const xAxisKey = this.xaxisdatakey, yAxisKeys = this.yaxisdatakey ? this.yaxisdatakey.split(',') : [], dataSet = this.chartData;
|
|
229
|
+
if (isArray(dataSet)) {
|
|
230
|
+
if (isPieType(this.type)) {
|
|
231
|
+
yAxisKey = yAxisKeys[0];
|
|
232
|
+
datum = map(dataSet, (dataObj, index) => {
|
|
233
|
+
if (!isEmptyObject(dataSet[index])) {
|
|
234
|
+
return this.valueFinder(dataSet[index], xAxisKey, yAxisKey);
|
|
235
|
+
}
|
|
236
|
+
});
|
|
237
|
+
datum = this.getValidData(datum);
|
|
238
|
+
}
|
|
239
|
+
else {
|
|
240
|
+
if (isBubbleChart(this.type)) {
|
|
241
|
+
shapes = this.shape === 'random' ? allShapes : this.shape;
|
|
242
|
+
}
|
|
243
|
+
yAxisKeys.forEach((yAxisKey, series) => {
|
|
244
|
+
values = map(dataSet, (dataObj, index) => {
|
|
245
|
+
if (!isEmptyObject(dataSet[index])) {
|
|
246
|
+
return this.valueFinder(dataSet[index], xAxisKey, yAxisKey, index, (isArray(shapes) && shapes[series]) || this.shape);
|
|
247
|
+
}
|
|
248
|
+
});
|
|
249
|
+
values = this.getValidData(values);
|
|
250
|
+
datum.push({
|
|
251
|
+
values: values,
|
|
252
|
+
key: prettifyLabels(yAxisKey)
|
|
253
|
+
});
|
|
254
|
+
});
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
return datum;
|
|
258
|
+
}
|
|
259
|
+
setChartData(data) {
|
|
260
|
+
if (data) {
|
|
261
|
+
this._processedData = data;
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
getChartData() {
|
|
265
|
+
return this._processedData;
|
|
266
|
+
}
|
|
267
|
+
// constructing the grouped data based on the selection of orderby, x & y axis
|
|
268
|
+
getVisuallyGroupedData(queryResponse, groupingColumn) {
|
|
269
|
+
let groupData = {}, groupValues = [], orderByDetails, maxLength;
|
|
270
|
+
const chartData = [], _isAreaChart = isAreaChart(this.type), yAxisKey = first(split(this.yaxisdatakey, ','));
|
|
271
|
+
this.xDataKeyArr = [];
|
|
272
|
+
queryResponse = orderBy(queryResponse, split(this.groupby, ','));
|
|
273
|
+
if (this.orderby) {
|
|
274
|
+
orderByDetails = getLodashOrderByFormat(this.orderby);
|
|
275
|
+
queryResponse = orderBy(queryResponse, orderByDetails.columns, orderByDetails.orders);
|
|
276
|
+
}
|
|
277
|
+
queryResponse = groupBy(queryResponse, groupingColumn);
|
|
278
|
+
// In case of area chart all the series data should be of same length
|
|
279
|
+
if (_isAreaChart) {
|
|
280
|
+
maxLength = max(map(queryResponse, obj => obj.length));
|
|
281
|
+
}
|
|
282
|
+
forEach(queryResponse, (values, groupKey) => {
|
|
283
|
+
groupValues = isAreaChart ? fill(new Array(maxLength), [0, 0]) : [];
|
|
284
|
+
forEachRight(values, (value, index) => {
|
|
285
|
+
groupValues[index] = this.valueFinder(value, this.xaxisdatakey, yAxisKey, index);
|
|
286
|
+
});
|
|
287
|
+
groupData = {
|
|
288
|
+
key: groupKey,
|
|
289
|
+
values: groupValues
|
|
290
|
+
};
|
|
291
|
+
chartData.push(groupData);
|
|
292
|
+
});
|
|
293
|
+
return chartData;
|
|
294
|
+
}
|
|
295
|
+
/*Decides whether the data should be visually grouped or not
|
|
296
|
+
Visually grouped when a different column is choosen in the group by other than x and y axis and aggregation is not chosen*/
|
|
297
|
+
getGroupingDetails() {
|
|
298
|
+
if (this.isGroupByEnabled() && !this.isAggregationEnabled()) {
|
|
299
|
+
let isVisuallyGrouped = false, visualGroupingColumn, groupingExpression, columns = [], groupingColumnIndex;
|
|
300
|
+
const groupbyColumns = this.groupby && this.groupby !== NONE ? this.groupby.split(',') : [], yAxisKeys = this.yaxisdatakey ? this.yaxisdatakey.split(',') : [];
|
|
301
|
+
if (groupbyColumns.length > 1) {
|
|
302
|
+
/*Getting the group by column which is not selected either in x or y axis*/
|
|
303
|
+
groupbyColumns.every((column, index) => {
|
|
304
|
+
if (this.xaxisdatakey !== column && $.inArray(column, yAxisKeys) === -1) {
|
|
305
|
+
isVisuallyGrouped = true;
|
|
306
|
+
visualGroupingColumn = column;
|
|
307
|
+
groupingColumnIndex = index;
|
|
308
|
+
groupbyColumns.splice(groupingColumnIndex, 1);
|
|
309
|
+
return false;
|
|
310
|
+
}
|
|
311
|
+
return true;
|
|
312
|
+
});
|
|
313
|
+
// Constructing the groupby expression
|
|
314
|
+
if (visualGroupingColumn) {
|
|
315
|
+
columns.push(visualGroupingColumn);
|
|
316
|
+
}
|
|
317
|
+
if (groupbyColumns.length) {
|
|
318
|
+
columns = concat(columns, groupbyColumns);
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
// If x and y axis are not included in aggregation need to be included in groupby
|
|
322
|
+
if (this.xaxisdatakey !== this.aggregationcolumn) {
|
|
323
|
+
columns.push(this.xaxisdatakey);
|
|
324
|
+
}
|
|
325
|
+
forEach(yAxisKeys, key => {
|
|
326
|
+
if (key !== this.aggregationcolumn) {
|
|
327
|
+
columns.push(key);
|
|
328
|
+
}
|
|
329
|
+
});
|
|
330
|
+
groupingExpression = columns.join(',');
|
|
331
|
+
// set isVisuallyGrouped flag in scope for later use
|
|
332
|
+
this.isVisuallyGrouped = isVisuallyGrouped;
|
|
333
|
+
return {
|
|
334
|
+
expression: groupingExpression,
|
|
335
|
+
isVisuallyGrouped: isVisuallyGrouped,
|
|
336
|
+
visualGroupingColumn: visualGroupingColumn
|
|
337
|
+
};
|
|
338
|
+
}
|
|
339
|
+
return {
|
|
340
|
+
expression: '',
|
|
341
|
+
isVisuallyGrouped: false,
|
|
342
|
+
visualGroupingColumn: ''
|
|
343
|
+
};
|
|
344
|
+
}
|
|
345
|
+
// Function to get the aggregated data after applying the aggregation & group by or order by operations.
|
|
346
|
+
getAggregatedData(callback) {
|
|
347
|
+
const variable = this.datasource, yAxisKeys = this.yaxisdatakey ? this.yaxisdatakey.split(',') : [], data = {};
|
|
348
|
+
let sortExpr, columns = [], colAlias, orderByColumns, groupByFields = [];
|
|
349
|
+
if (!variable) {
|
|
350
|
+
return;
|
|
351
|
+
}
|
|
352
|
+
if (this.isGroupByEnabled()) {
|
|
353
|
+
groupByFields = split(this.groupby, ',');
|
|
354
|
+
}
|
|
355
|
+
if (this.orderby) {
|
|
356
|
+
sortExpr = replace(this.orderby, /:/g, ' ');
|
|
357
|
+
columns = uniq(concat(columns, groupByFields, [this.aggregationcolumn]));
|
|
358
|
+
orderByColumns = getLodashOrderByFormat(this.orderby).columns;
|
|
359
|
+
// If the orderby column is chosen either in groupby or orderby then replace . with $ for that column
|
|
360
|
+
forEach(intersection(columns, orderByColumns), col => {
|
|
361
|
+
colAlias = getValidAliasName(col);
|
|
362
|
+
// @ts-ignore
|
|
363
|
+
sortExpr = replace(sortExpr, col, colAlias);
|
|
364
|
+
});
|
|
365
|
+
}
|
|
366
|
+
if (this.isAggregationEnabled()) {
|
|
367
|
+
// Send the group by in the aggregations api only if aggregation is also chosen
|
|
368
|
+
data.groupByFields = groupByFields;
|
|
369
|
+
data.aggregations = [
|
|
370
|
+
{
|
|
371
|
+
'field': this.aggregationcolumn,
|
|
372
|
+
'type': aggregationFnMap[this.aggregation],
|
|
373
|
+
'alias': getValidAliasName(this.aggregationcolumn)
|
|
374
|
+
}
|
|
375
|
+
];
|
|
376
|
+
}
|
|
377
|
+
// Execute the query.
|
|
378
|
+
variable.execute('getAggregatedData', {
|
|
379
|
+
'aggregations': data,
|
|
380
|
+
'sort': sortExpr
|
|
381
|
+
}).then(response => {
|
|
382
|
+
// Transform the result into a format supported by the chart.
|
|
383
|
+
const chartData = [], aggregationAlias = getValidAliasName(this.aggregationcolumn), xAxisAliasKey = getValidAliasName(this.xaxisdatakey), yAxisAliasKeys = [];
|
|
384
|
+
yAxisKeys.forEach(yAxisKey => yAxisAliasKeys.push(getValidAliasName(yAxisKey)));
|
|
385
|
+
forEach(response.body.content, (responseContent) => {
|
|
386
|
+
const obj = {};
|
|
387
|
+
// Set the response in the chartData based on 'aggregationColumn', 'xAxisDataKey' & 'yAxisDataKey'.
|
|
388
|
+
if (this.isAggregationEnabled()) {
|
|
389
|
+
obj[this.aggregationcolumn] = responseContent[aggregationAlias];
|
|
390
|
+
obj[this.aggregationcolumn] = get(responseContent, aggregationAlias) || get(responseContent, this.aggregationcolumn);
|
|
391
|
+
}
|
|
392
|
+
obj[this.xaxisdatakey] = get(responseContent, xAxisAliasKey) || get(responseContent, this.xaxisdatakey);
|
|
393
|
+
yAxisKeys.forEach((yAxisKey, index) => {
|
|
394
|
+
obj[yAxisKey] = responseContent[yAxisAliasKeys[index]];
|
|
395
|
+
obj[yAxisKey] = get(responseContent, yAxisAliasKeys[index]) || get(responseContent, yAxisKey);
|
|
396
|
+
});
|
|
397
|
+
chartData.push(obj);
|
|
398
|
+
});
|
|
399
|
+
this.chartData = chartData;
|
|
400
|
+
triggerFn(callback);
|
|
401
|
+
}, () => {
|
|
402
|
+
this.chartData = [];
|
|
403
|
+
this.setErrMsg('MESSAGE_ERROR_FETCH_DATA');
|
|
404
|
+
triggerFn(callback);
|
|
405
|
+
});
|
|
406
|
+
}
|
|
407
|
+
// This function sets maximum width for the labels that can be displayed.This will helpful when they are overlapping
|
|
408
|
+
setLabelsMaxWidth() {
|
|
409
|
+
let xTicks, tickWidth, maxLength, xDist, yDist, totalHeight, maxNoLabels, nthElement, labelsAvailableWidth, barWrapper, yAxisWrapper, svgWrapper;
|
|
410
|
+
const fontsize = parseInt(this.fontsize, 10) || 12, isBarchart = isBarChart(this.type);
|
|
411
|
+
// getting the x ticks in the chart
|
|
412
|
+
xTicks = $('#wmChart' + this.$id + ' svg').find('g.nv-x').find('g.tick').find('text');
|
|
413
|
+
// getting the distance between the two visible ticks associated with visible text
|
|
414
|
+
xTicks.each(function () {
|
|
415
|
+
const xTick = $(this);
|
|
416
|
+
let xTransform, tickDist;
|
|
417
|
+
if (xTick.text() && xTick.css('opacity') === '1') {
|
|
418
|
+
xTransform = xTick.parent().attr('transform').split(',');
|
|
419
|
+
xDist = parseFloat(xTransform[0].substr(10));
|
|
420
|
+
yDist = parseFloat(xTransform[1] || '0');
|
|
421
|
+
if (!isBarchart && xDist > 0) {
|
|
422
|
+
tickDist = xDist;
|
|
423
|
+
}
|
|
424
|
+
else if (yDist > 0) {
|
|
425
|
+
tickDist = yDist;
|
|
426
|
+
}
|
|
427
|
+
if (tickWidth) {
|
|
428
|
+
tickWidth = tickDist - tickWidth;
|
|
429
|
+
return false;
|
|
430
|
+
}
|
|
431
|
+
tickWidth = tickDist;
|
|
432
|
+
return true;
|
|
433
|
+
}
|
|
434
|
+
});
|
|
435
|
+
// In case of bar chart getting the available space for the labels to be displayed
|
|
436
|
+
if (isBarchart) {
|
|
437
|
+
barWrapper = $('#wmChart' + this.$id + ' svg>g.nv-wrap>g>g.nv-barsWrap')[0];
|
|
438
|
+
yAxisWrapper = $('#wmChart' + this.$id + ' svg>g.nv-wrap>g>g.nv-y')[0];
|
|
439
|
+
svgWrapper = $('#wmChart' + this.$id + ' svg')[0];
|
|
440
|
+
// getting the total height of the chart
|
|
441
|
+
totalHeight = barWrapper ? barWrapper.getBoundingClientRect().height : 0;
|
|
442
|
+
// getting the labels available space
|
|
443
|
+
labelsAvailableWidth = yAxisWrapper ? svgWrapper.getBoundingClientRect().width - yAxisWrapper.getBoundingClientRect().width : svgWrapper.getBoundingClientRect().width;
|
|
444
|
+
// Setting the max length for the label
|
|
445
|
+
maxLength = Math.round(labelsAvailableWidth / fontsize);
|
|
446
|
+
// if available space for each label is less than the font-size
|
|
447
|
+
// then limiting the labels to be displayed
|
|
448
|
+
if (tickWidth < fontsize) {
|
|
449
|
+
// calculate the maximum no of labels to be fitted
|
|
450
|
+
maxNoLabels = totalHeight / fontsize;
|
|
451
|
+
// showing only the nth element
|
|
452
|
+
nthElement = Math.ceil(this.chartData.length / maxNoLabels);
|
|
453
|
+
// showing up only some labels
|
|
454
|
+
d3.select('#wmChart' + this.$id + ' svg').select('g.nv-x').selectAll('g.tick').select('text').each(function (text, i) {
|
|
455
|
+
// hiding every non nth element
|
|
456
|
+
if (i % nthElement !== 0) {
|
|
457
|
+
d3.select(this).attr('opacity', 0);
|
|
458
|
+
}
|
|
459
|
+
});
|
|
460
|
+
}
|
|
461
|
+
}
|
|
462
|
+
else {
|
|
463
|
+
// Setting the max length for the label
|
|
464
|
+
maxLength = Math.round(tickWidth / fontsize);
|
|
465
|
+
}
|
|
466
|
+
// maxLength should always be a positive number
|
|
467
|
+
maxLength = Math.abs(maxLength);
|
|
468
|
+
// Validating if every label exceeds the max length and if so limiting the length and adding ellipsis
|
|
469
|
+
xTicks.each(function () {
|
|
470
|
+
if (this.textContent.length > maxLength) {
|
|
471
|
+
this.textContent = this.textContent.substr(0, maxLength) + '...';
|
|
472
|
+
}
|
|
473
|
+
});
|
|
474
|
+
}
|
|
475
|
+
// Returns the columns of that can be choosen in the x and y axis
|
|
476
|
+
getDefaultColumns() {
|
|
477
|
+
let type, stringColumn, i, temp;
|
|
478
|
+
const defaultColumns = [], columns = this.datasource.execute(DataSource.Operation.GET_PROPERTIES_MAP) || [];
|
|
479
|
+
for (i = 0; i < columns.length && defaultColumns.length <= 2; i += 1) {
|
|
480
|
+
type = columns[i].type;
|
|
481
|
+
if (!columns[i].isRelated && (isNumberType(type))) {
|
|
482
|
+
defaultColumns.push(columns[i].fieldName);
|
|
483
|
+
}
|
|
484
|
+
else if (type === 'string' && !stringColumn) {
|
|
485
|
+
stringColumn = columns[i].fieldName;
|
|
486
|
+
}
|
|
487
|
+
}
|
|
488
|
+
// Other than bubble chart x: string type y: number type
|
|
489
|
+
// Bubble chart x: number type y: number type
|
|
490
|
+
if (stringColumn && defaultColumns.length > 0 && !isBubbleChart(this.type)) {
|
|
491
|
+
temp = defaultColumns[0];
|
|
492
|
+
defaultColumns[0] = stringColumn;
|
|
493
|
+
defaultColumns[1] = temp;
|
|
494
|
+
}
|
|
495
|
+
return defaultColumns;
|
|
496
|
+
}
|
|
497
|
+
// Call user defined javascript function when user links it to click event of the widget.
|
|
498
|
+
attachClickEvent() {
|
|
499
|
+
let dataObj;
|
|
500
|
+
d3.select('#wmChart' + this.$id + ' svg').selectAll(chartDataPointXpath[this.type]).style('pointer-events', 'all')
|
|
501
|
+
.on('click', (event, data, index) => {
|
|
502
|
+
switch (this.type) {
|
|
503
|
+
case 'Column':
|
|
504
|
+
case 'Bar':
|
|
505
|
+
dataObj = data._dataObj;
|
|
506
|
+
break;
|
|
507
|
+
case 'Pie':
|
|
508
|
+
case 'Donut':
|
|
509
|
+
dataObj = data.data._dataObj;
|
|
510
|
+
break;
|
|
511
|
+
case 'Area':
|
|
512
|
+
case 'Cumulative Line':
|
|
513
|
+
case 'Line':
|
|
514
|
+
dataObj = data[0]._dataObj;
|
|
515
|
+
break;
|
|
516
|
+
case 'Bubble':
|
|
517
|
+
dataObj = data;
|
|
518
|
+
break;
|
|
519
|
+
}
|
|
520
|
+
this.selecteditem = dataObj;
|
|
521
|
+
this.invokeEventCallback('select', {
|
|
522
|
+
$event: event,
|
|
523
|
+
selectedChartItem: data,
|
|
524
|
+
selectedItem: this.selecteditem
|
|
525
|
+
});
|
|
526
|
+
});
|
|
527
|
+
}
|
|
528
|
+
/* Returns Y Scale min value
|
|
529
|
+
Ex: Input : 8.97
|
|
530
|
+
Output : 8.87
|
|
531
|
+
|
|
532
|
+
Input : 8
|
|
533
|
+
Output : 7
|
|
534
|
+
*/
|
|
535
|
+
postPlotProcess(chart) {
|
|
536
|
+
let chartSvg, pieLabels, pieGroups, angleArray;
|
|
537
|
+
const styleObj = {};
|
|
538
|
+
const element = this.$element;
|
|
539
|
+
postPlotChartProcess(this);
|
|
540
|
+
if (!isPieType(this.type)) {
|
|
541
|
+
this.setLabelsMaxWidth();
|
|
542
|
+
}
|
|
543
|
+
else if (!this.showlabelsoutside) {
|
|
544
|
+
/** Nvd3 has a issue in rotating text. So we will use this as a temp fix.
|
|
545
|
+
* If the issue is resolved there, we can remove this.*/
|
|
546
|
+
/* If it is a donut chart, then rotate the text and position them*/
|
|
547
|
+
chartSvg = d3.select('#wmChart' + this.$id + ' svg');
|
|
548
|
+
pieLabels = chartSvg.select('.nv-pieLabels').selectAll('.nv-label');
|
|
549
|
+
pieGroups = chartSvg.select('.nv-pie').selectAll('.nv-slice');
|
|
550
|
+
angleArray = [];
|
|
551
|
+
if (pieGroups && pieGroups.length) {
|
|
552
|
+
pieGroups.each(function () {
|
|
553
|
+
d3.select(this).attr('transform', function (d) {
|
|
554
|
+
angleArray.push(angle(d));
|
|
555
|
+
});
|
|
556
|
+
});
|
|
557
|
+
pieLabels.each(function (d, i) {
|
|
558
|
+
const group = d3.select(this);
|
|
559
|
+
$(group[0][0]).find('text').attr('transform', 'rotate(' + angleArray[i] + ')');
|
|
560
|
+
});
|
|
561
|
+
}
|
|
562
|
+
}
|
|
563
|
+
// prepare text style props object and set
|
|
564
|
+
forEach(styleProps, (value, key) => {
|
|
565
|
+
if (key === 'fontsize' || key === 'fontunit') {
|
|
566
|
+
styleObj[value] = this.fontsize + this.fontunit;
|
|
567
|
+
}
|
|
568
|
+
else {
|
|
569
|
+
styleObj[value] = this[key];
|
|
570
|
+
}
|
|
571
|
+
});
|
|
572
|
+
setTextStyle(styleObj, this.$id);
|
|
573
|
+
/*
|
|
574
|
+
* allow window-resize functionality, for only-run mode as
|
|
575
|
+
* updating chart is being handled by watchers of height & width in studio-mode
|
|
576
|
+
* */
|
|
577
|
+
triggerFn(this._resizeFn && this._resizeFn.clear);
|
|
578
|
+
this._resizeFn = nv.utils.windowResize(() => {
|
|
579
|
+
if (element[0].getBoundingClientRect().height) {
|
|
580
|
+
chart.update();
|
|
581
|
+
postPlotChartProcess(this);
|
|
582
|
+
if (!isPieType(this.type)) {
|
|
583
|
+
this.setLabelsMaxWidth();
|
|
584
|
+
}
|
|
585
|
+
}
|
|
586
|
+
else {
|
|
587
|
+
// TODO: get parents of accordion type
|
|
588
|
+
/*let parent = element.closest('.app-accordion-panel, .tab-pane').isolateScope();
|
|
589
|
+
if (parent) {
|
|
590
|
+
parent.initialized = false;
|
|
591
|
+
}*/
|
|
592
|
+
}
|
|
593
|
+
});
|
|
594
|
+
}
|
|
595
|
+
// prepares and configures the chart properties
|
|
596
|
+
configureChart() {
|
|
597
|
+
// Copy the data only in case of pie chart with default data
|
|
598
|
+
// Reason : when multiple pie charts are bound to same data, first chart theme will be applied to all charts
|
|
599
|
+
let xDomainValues;
|
|
600
|
+
let yDomainValues;
|
|
601
|
+
let chart;
|
|
602
|
+
let beforeRenderVal;
|
|
603
|
+
const yformatOptions = {};
|
|
604
|
+
if (this._processedData.length > 0) {
|
|
605
|
+
if (isAxisDomainValid(this, 'x')) {
|
|
606
|
+
xDomainValues = this.binddataset ? this.getXMinMaxValues(this._processedData[0]) : { 'min': { 'x': 1 }, 'max': { 'x': 5 } };
|
|
607
|
+
}
|
|
608
|
+
if (isAxisDomainValid(this, 'y')) {
|
|
609
|
+
yDomainValues = this.binddataset ? this.getYMinMaxValues(this._processedData) : { 'min': { 'y': 1 }, 'max': { 'y': 5 } };
|
|
610
|
+
}
|
|
611
|
+
}
|
|
612
|
+
if (isPieType(this.type) && (!this.binddataset || !this.scopedataset)) {
|
|
613
|
+
this._processedData = getClonedObject(this.scopedataset || this._processedData);
|
|
614
|
+
}
|
|
615
|
+
// get the chart object
|
|
616
|
+
chart = initChart(this, xDomainValues, yDomainValues, null, !this.binddataset);
|
|
617
|
+
if (isArray(this._processedData)) {
|
|
618
|
+
// WMS-19499: To remove chart X-axis old ticks when chart data loaded dynamically.
|
|
619
|
+
const oldgTicks = $('#wmChart' + this.$id + ' svg').find('g.nv-x').find('g.tick');
|
|
620
|
+
if (oldgTicks && oldgTicks.length) {
|
|
621
|
+
oldgTicks.remove();
|
|
622
|
+
}
|
|
623
|
+
beforeRenderVal = this.invokeEventCallback('beforerender', { 'chartInstance': chart });
|
|
624
|
+
if (beforeRenderVal) {
|
|
625
|
+
chart = beforeRenderVal;
|
|
626
|
+
}
|
|
627
|
+
this.chart = chart;
|
|
628
|
+
// changing the default no data message
|
|
629
|
+
d3.select('#wmChart' + this.$id + ' svg')
|
|
630
|
+
.datum(this._processedData)
|
|
631
|
+
.call(this.chart);
|
|
632
|
+
this.postPlotProcess(chart);
|
|
633
|
+
return chart;
|
|
634
|
+
}
|
|
635
|
+
}
|
|
636
|
+
// Plotting the chart with set of the properties set to it
|
|
637
|
+
plotChart() {
|
|
638
|
+
const element = this.$element;
|
|
639
|
+
// call user-transformed function
|
|
640
|
+
this.chartData = (this.invokeEventCallback('transform')) || this.chartData;
|
|
641
|
+
// Getting the order by data only in run mode. The order by applies for all the charts other than pie and donut charts
|
|
642
|
+
if (this.isVisuallyGrouped && !isPieType(this.type)) {
|
|
643
|
+
this._processedData = this.chartData;
|
|
644
|
+
}
|
|
645
|
+
else {
|
|
646
|
+
this._processedData = this.processChartData();
|
|
647
|
+
}
|
|
648
|
+
// checking the parent container before plotting the chart
|
|
649
|
+
if (!element[0].getBoundingClientRect().height) {
|
|
650
|
+
return;
|
|
651
|
+
}
|
|
652
|
+
if (this.clearCanvas) {
|
|
653
|
+
// empty svg to add-new chart
|
|
654
|
+
element.find('svg').replaceWith('<svg></svg>');
|
|
655
|
+
this.clearCanvas = false;
|
|
656
|
+
}
|
|
657
|
+
// In case of invalid axis show no data available message
|
|
658
|
+
if (!this.isValidAxis()) {
|
|
659
|
+
this._processedData = [];
|
|
660
|
+
}
|
|
661
|
+
nv.addGraph(() => this.configureChart(), () => {
|
|
662
|
+
/*Bubble chart has an time out delay of 300ms in their implementation due to which we
|
|
663
|
+
* won't be getting required data points on attaching events
|
|
664
|
+
* hence delaying it 600ms*/
|
|
665
|
+
setTimeout(() => {
|
|
666
|
+
this.attachClickEvent();
|
|
667
|
+
}, 600);
|
|
668
|
+
});
|
|
669
|
+
this.isLoadInProgress = false;
|
|
670
|
+
}
|
|
671
|
+
// TODO: Need way to figure out if the datasource is a live source
|
|
672
|
+
get isLiveVariable() {
|
|
673
|
+
// setting the flag for the live variable in the scope for the checks
|
|
674
|
+
const variableObj = this.datasource;
|
|
675
|
+
return variableObj && variableObj.category === 'wm.LiveVariable';
|
|
676
|
+
}
|
|
677
|
+
plotChartProxy() {
|
|
678
|
+
this.showContentLoadError = false;
|
|
679
|
+
this.invalidConfig = false;
|
|
680
|
+
// Checking if x and y axis are chosen
|
|
681
|
+
this.isLoadInProgress = true;
|
|
682
|
+
const groupingDetails = this.getGroupingDetails();
|
|
683
|
+
// If aggregation/group by/order by properties have been set, then get the aggregated data and plot the result in the chart.
|
|
684
|
+
// TODO: datasource for live variable detection
|
|
685
|
+
if (this.binddataset && this.isLiveVariable && (this.filterFields || this.isDataFilteringEnabled())) {
|
|
686
|
+
this.getAggregatedData(() => this.plotChart());
|
|
687
|
+
}
|
|
688
|
+
else { // Else, simply plot the chart.
|
|
689
|
+
// In case of live variable resetting the aggregated data to the normal dataset when the aggregation has been removed
|
|
690
|
+
if (this.dataset && this.isLiveVariable) {
|
|
691
|
+
this.chartData = this.dataset;
|
|
692
|
+
if (this.isGroupByEnabled() && groupingDetails.isVisuallyGrouped) {
|
|
693
|
+
this.chartData = this.getVisuallyGroupedData(this.chartData, groupingDetails.visualGroupingColumn);
|
|
694
|
+
}
|
|
695
|
+
}
|
|
696
|
+
this.plotChart();
|
|
697
|
+
}
|
|
698
|
+
}
|
|
699
|
+
// sets the default x and y axis options
|
|
700
|
+
setDefaultAxisOptions() {
|
|
701
|
+
const defaultColumns = this.getDefaultColumns();
|
|
702
|
+
// If we get the valid default columns then assign them as the x and y axis
|
|
703
|
+
// In case of service variable we may not get the valid columns because we cannot know the datatypes
|
|
704
|
+
this.xaxisdatakey = defaultColumns[0] || null;
|
|
705
|
+
this.yaxisdatakey = defaultColumns[1] || null;
|
|
706
|
+
}
|
|
707
|
+
getCutomizedOptions(prop, fields) {
|
|
708
|
+
const groupByColumns = split(this.groupby, ','), aggColumns = split(this.aggregationcolumn, ',');
|
|
709
|
+
if (!this.binddataset) {
|
|
710
|
+
return fields;
|
|
711
|
+
}
|
|
712
|
+
if (!this.axisoptions) {
|
|
713
|
+
this.axisoptions = fields;
|
|
714
|
+
}
|
|
715
|
+
let newOptions;
|
|
716
|
+
switch (prop) {
|
|
717
|
+
case 'xaxisdatakey':
|
|
718
|
+
// If group by enabled, columns chosen in groupby will be populated in x axis options
|
|
719
|
+
if (this.isGroupByEnabled()) {
|
|
720
|
+
newOptions = groupByColumns;
|
|
721
|
+
}
|
|
722
|
+
break;
|
|
723
|
+
case 'yaxisdatakey':
|
|
724
|
+
// If aggregation by enabled, columns chosen in aggregation will be populated in y axis options
|
|
725
|
+
if (this.isAggregationEnabled()) {
|
|
726
|
+
newOptions = aggColumns;
|
|
727
|
+
}
|
|
728
|
+
else if (this.isLiveVariable) {
|
|
729
|
+
// In case of live variable populating only numeric columns
|
|
730
|
+
newOptions = this.numericColumns;
|
|
731
|
+
}
|
|
732
|
+
break;
|
|
733
|
+
case 'groupby':
|
|
734
|
+
// Filtering only non primary key columns
|
|
735
|
+
if (this.isLiveVariable && this.nonPrimaryColumns && this.nonPrimaryColumns.length) {
|
|
736
|
+
newOptions = this.nonPrimaryColumns;
|
|
737
|
+
}
|
|
738
|
+
break;
|
|
739
|
+
case 'aggregationcolumn':
|
|
740
|
+
// Set the 'aggregationColumn' to show all keys in case of aggregation function is count or to numeric keys in all other cases.
|
|
741
|
+
if (this.isLiveVariable && this.isAggregationEnabled() && this.aggregation !== 'count') {
|
|
742
|
+
newOptions = this.numericColumns;
|
|
743
|
+
}
|
|
744
|
+
break;
|
|
745
|
+
case 'orderby':
|
|
746
|
+
// Set the 'aggregationColumn' to show all keys in case of aggregation function is count or to numeric keys in all other cases.
|
|
747
|
+
if (this.isLiveVariable && this.isAggregationEnabled()) {
|
|
748
|
+
newOptions = uniq(concat(groupByColumns, aggColumns));
|
|
749
|
+
}
|
|
750
|
+
break;
|
|
751
|
+
case 'bubblesize':
|
|
752
|
+
if (this.numericColumns && this.numericColumns.length) {
|
|
753
|
+
newOptions = this.numericColumns;
|
|
754
|
+
}
|
|
755
|
+
break;
|
|
756
|
+
}
|
|
757
|
+
return newOptions || fields || this.axisoptions;
|
|
758
|
+
}
|
|
759
|
+
// Function that iterates through all the columns and then fetching the numeric and non primary columns among them
|
|
760
|
+
setNumericandNonPrimaryColumns() {
|
|
761
|
+
let columns, type;
|
|
762
|
+
const propertiesMap = this.datasource.execute(DataSource.Operation.GET_PROPERTIES_MAP);
|
|
763
|
+
this.numericColumns = [];
|
|
764
|
+
this.nonPrimaryColumns = [];
|
|
765
|
+
// Fetching all the columns
|
|
766
|
+
if (this.dataset && !isEmpty(propertiesMap)) {
|
|
767
|
+
columns = []; // TODO: fetchPropertiesMapColumns(propertiesMap);
|
|
768
|
+
}
|
|
769
|
+
if (columns) {
|
|
770
|
+
// Iterating through all the columns and fetching the numeric and non primary key columns
|
|
771
|
+
forEach(Object.keys(columns), (key) => {
|
|
772
|
+
type = columns[key].type;
|
|
773
|
+
if (isNumberType(type)) {
|
|
774
|
+
this.numericColumns.push(key);
|
|
775
|
+
}
|
|
776
|
+
// Hiding only table's primary key
|
|
777
|
+
if (columns[key].isRelatedPk === 'true' || !columns[key].isPrimaryKey) {
|
|
778
|
+
this.nonPrimaryColumns.push(key);
|
|
779
|
+
}
|
|
780
|
+
});
|
|
781
|
+
this.numericColumns = this.numericColumns.sort();
|
|
782
|
+
this.nonPrimaryColumns = this.nonPrimaryColumns.sort();
|
|
783
|
+
}
|
|
784
|
+
}
|
|
785
|
+
// plot the chart
|
|
786
|
+
handleDataSet(newVal) {
|
|
787
|
+
this.errMsg = '';
|
|
788
|
+
// Resetting the flag to false when the binding was removed
|
|
789
|
+
if (!newVal && !this.binddataset) {
|
|
790
|
+
this.isVisuallyGrouped = false;
|
|
791
|
+
this.axisoptions = null;
|
|
792
|
+
}
|
|
793
|
+
// liveVariables contain data in 'data' property' of the variable
|
|
794
|
+
this.chartData = this.isLiveVariable ? newVal || '' : (newVal && newVal.dataValue === '' && keys(newVal).length === 1) ? '' : newVal;
|
|
795
|
+
// if the data returned is an object make it an array of object
|
|
796
|
+
if (!isArray(this.chartData) && isObject(this.chartData)) {
|
|
797
|
+
this.chartData = [this.chartData];
|
|
798
|
+
}
|
|
799
|
+
if (newVal && newVal.filterFields) {
|
|
800
|
+
this.filterFields = newVal.filterFields;
|
|
801
|
+
}
|
|
802
|
+
// plotchart for only valid data and only after bound variable returns data
|
|
803
|
+
if (this.chartData) {
|
|
804
|
+
this._plotChartProxy();
|
|
805
|
+
}
|
|
806
|
+
}
|
|
807
|
+
// sets the center label for donut chart type
|
|
808
|
+
setDonutCenterLabel(labelValue) {
|
|
809
|
+
let chartSvg, pieGroups;
|
|
810
|
+
chartSvg = d3.select('#wmChart' + this.$id + ' svg');
|
|
811
|
+
pieGroups = chartSvg.select('.nv-wrap.nv-pie').select('.nv-pie');
|
|
812
|
+
pieGroups.text('');
|
|
813
|
+
pieGroups.append('text')
|
|
814
|
+
.attr('dy', '.35em')
|
|
815
|
+
.attr('text-anchor', 'middle')
|
|
816
|
+
.attr('class', 'nv-pie-title')
|
|
817
|
+
.text(labelValue)
|
|
818
|
+
.each(function (d) {
|
|
819
|
+
var d3text = d3.select(this), circ = d3.select(this.parentElement), totalWidth = Number(circ.node().getBoundingClientRect().width),
|
|
820
|
+
// minus the ring width from total width
|
|
821
|
+
availWidth = totalWidth - 30, textWidth = this.getComputedTextLength();
|
|
822
|
+
d3text.attr("data-scale", availWidth / textWidth);
|
|
823
|
+
}).style("font-size", function () {
|
|
824
|
+
// 16 is the default font size to multiply with the scaled value and 24 is the maximum font size that can be applied
|
|
825
|
+
var fontSize = 16 * d3.select(this).attr("data-scale");
|
|
826
|
+
return fontSize > 24 ? 24 : fontSize + "px";
|
|
827
|
+
});
|
|
828
|
+
}
|
|
829
|
+
onPropertyChange(key, newVal, oldVal) {
|
|
830
|
+
super.onPropertyChange(key, newVal, oldVal);
|
|
831
|
+
switch (key) {
|
|
832
|
+
case 'dataset':
|
|
833
|
+
this.handleDataSet(newVal);
|
|
834
|
+
break;
|
|
835
|
+
case 'centerlabel':
|
|
836
|
+
if (this.chart) {
|
|
837
|
+
this.chart.title(newVal);
|
|
838
|
+
this.setDonutCenterLabel(newVal);
|
|
839
|
+
}
|
|
840
|
+
break;
|
|
841
|
+
case 'type':
|
|
842
|
+
// Based on the change in type deciding the default margins
|
|
843
|
+
if (isPieType(this.type)) {
|
|
844
|
+
this.offsettop = 20;
|
|
845
|
+
this.offsetright = 0;
|
|
846
|
+
this.offsetbottom = 0;
|
|
847
|
+
this.offsetleft = 0;
|
|
848
|
+
}
|
|
849
|
+
else if (oldVal === 'Pie' || oldVal === 'Donut') {
|
|
850
|
+
this.offsettop = 25;
|
|
851
|
+
this.offsetright = 25;
|
|
852
|
+
this.offsetbottom = 55;
|
|
853
|
+
this.offsetleft = 75;
|
|
854
|
+
}
|
|
855
|
+
if (oldVal !== newVal) {
|
|
856
|
+
this.clearCanvas = true;
|
|
857
|
+
}
|
|
858
|
+
// In studio mode, configure properties dependent on chart type
|
|
859
|
+
this._plotChartProxy();
|
|
860
|
+
break;
|
|
861
|
+
default:
|
|
862
|
+
// In RunMode, the plotchart method will not be called for all property change
|
|
863
|
+
this._plotChartProxy();
|
|
864
|
+
break;
|
|
865
|
+
}
|
|
866
|
+
if (includes(advanceDataProps, key)) {
|
|
867
|
+
this._plotChartProxy();
|
|
868
|
+
}
|
|
869
|
+
}
|
|
870
|
+
handleLoading(data) {
|
|
871
|
+
const dataSource = this.datasource;
|
|
872
|
+
if (dataSource && dataSource.execute(DataSource.Operation.IS_API_AWARE) && isDataSourceEqual(data.variable, dataSource)) {
|
|
873
|
+
this.variableInflight = data.active;
|
|
874
|
+
this.isLoadInProgress = data.active;
|
|
875
|
+
}
|
|
876
|
+
}
|
|
877
|
+
hideTooltip() {
|
|
878
|
+
d3.selectAll('.nvtooltip').style('opacity', 0);
|
|
879
|
+
}
|
|
880
|
+
onStyleChange(key, newVal, oldVal) {
|
|
881
|
+
const styleObj = {};
|
|
882
|
+
super.onStyleChange(key, newVal, oldVal);
|
|
883
|
+
switch (key) {
|
|
884
|
+
case 'fontsize':
|
|
885
|
+
case 'fontunit':
|
|
886
|
+
case 'color':
|
|
887
|
+
case 'fontfamily':
|
|
888
|
+
case 'fontweight':
|
|
889
|
+
case 'fontstyle':
|
|
890
|
+
case 'textdecoration':
|
|
891
|
+
styleObj[styleProps[key]] = (key === 'fontsize' || key === 'fontunit') ? this.fontsize + this.fontunit : newVal;
|
|
892
|
+
setTextStyle(styleObj, this.$id);
|
|
893
|
+
break;
|
|
894
|
+
}
|
|
895
|
+
}
|
|
896
|
+
constructor(inj, app, explicitContext) {
|
|
897
|
+
super(inj, WIDGET_CONFIG, explicitContext);
|
|
898
|
+
this.app = app;
|
|
899
|
+
this.iconclass = '';
|
|
900
|
+
this.nonPrimaryColumns = [];
|
|
901
|
+
this.xDataKeyArr = [];
|
|
902
|
+
this.chartData = [];
|
|
903
|
+
this._processedData = [];
|
|
904
|
+
this._subsciptions = [];
|
|
905
|
+
this._plotChartProxy = debounce(this.plotChartProxy.bind(this), 100);
|
|
906
|
+
this.redraw = this._plotChartProxy.bind(this);
|
|
907
|
+
styler(this.nativeElement, this, APPLY_STYLES_TYPE.CONTAINER, ['fontsize', 'fontunit', 'color', 'fontfamily', 'fontweight', 'fontstyle', 'textdecoration']);
|
|
908
|
+
// generate unique id for the component
|
|
909
|
+
this.$id = this.widgetId || Math.random();
|
|
910
|
+
// remove title attribute as the element on hover shows you the hint through-out the element
|
|
911
|
+
removeAttr(this.nativeElement, 'title');
|
|
912
|
+
this.chartReady = false;
|
|
913
|
+
this.binddataset = this.nativeElement.getAttribute('dataset.bind');
|
|
914
|
+
// Show loading status based on the variable life cycle
|
|
915
|
+
this._subsciptions.push(this.app.subscribe('toggle-variable-state', this.handleLoading.bind(this)));
|
|
916
|
+
// Will hide tolltip of a chart in mobile when the user scrolls.
|
|
917
|
+
this._subsciptions.push(this.app.subscribe('iscroll-start', () => { this.hideTooltip(); }));
|
|
918
|
+
}
|
|
919
|
+
ngAfterViewInit() {
|
|
920
|
+
super.ngAfterViewInit();
|
|
921
|
+
// For old projects
|
|
922
|
+
if (!includes(['outside', 'inside', 'hide'], this.showlabels)) {
|
|
923
|
+
this.showlabels = getBooleanValue(this.showlabels);
|
|
924
|
+
this.showlabelsoutside = getBooleanValue(this.showlabelsoutside);
|
|
925
|
+
this.showlabels = this.showlabels ? (this.showlabelsoutside ? 'outside' : 'inside') : 'hide';
|
|
926
|
+
}
|
|
927
|
+
if (!this.theme) {
|
|
928
|
+
// Default theme for pie/donut is Azure and for other it is Terrestrial
|
|
929
|
+
this.theme = isPieType(this.type) ? 'Azure' : 'Terrestrial';
|
|
930
|
+
}
|
|
931
|
+
this.nativeElement.setAttribute('id', 'wmChart' + this.$id);
|
|
932
|
+
// When there is not value binding, then plot the chart with sample data
|
|
933
|
+
if (!this.binddataset && !this.nativeElement.getAttribute('scopedataset')) {
|
|
934
|
+
this._plotChartProxy();
|
|
935
|
+
}
|
|
936
|
+
}
|
|
937
|
+
ngOnDestroy() {
|
|
938
|
+
// destroy all subscriptions to prevent memory leak.
|
|
939
|
+
this.hideTooltip();
|
|
940
|
+
// MEMORY LEAK FIX: Unsubscribe from all subscriptions
|
|
941
|
+
if (this._subsciptions) {
|
|
942
|
+
this._subsciptions.forEach((subscription) => {
|
|
943
|
+
subscription();
|
|
944
|
+
});
|
|
945
|
+
this._subsciptions = [];
|
|
946
|
+
}
|
|
947
|
+
// MEMORY LEAK FIX: Clear chart instance
|
|
948
|
+
if (this.chart) {
|
|
949
|
+
this.chart = null;
|
|
950
|
+
}
|
|
951
|
+
// MEMORY LEAK FIX: Remove resize handler if exists
|
|
952
|
+
if (this._resizeFn) {
|
|
953
|
+
this._resizeFn = null;
|
|
954
|
+
}
|
|
955
|
+
// MEMORY LEAK FIX: Clear array references
|
|
956
|
+
this.chartData = [];
|
|
957
|
+
this._processedData = [];
|
|
958
|
+
this.sampleData = [];
|
|
959
|
+
this.xDataKeyArr = [];
|
|
960
|
+
this.nonPrimaryColumns = [];
|
|
961
|
+
super.ngOnDestroy();
|
|
962
|
+
}
|
|
963
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ChartComponent, deps: [{ token: i0.Injector }, { token: i1.App }, { token: 'EXPLICIT_CONTEXT', optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
964
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ChartComponent, isStandalone: true, selector: "div[wmChart]", host: { properties: { "class.panel": "this.title" } }, providers: [
|
|
965
|
+
provideAsWidgetRef(ChartComponent)
|
|
966
|
+
], usesInheritance: true, ngImport: i0, template: "@if (title) {\n <div class=\"panel-heading\">\n <h3 class=\"panel-title\">\n <div class=\"pull-left\"><i class=\"app-icon panel-icon {{iconclass}}\" [class.ng-hide]=\"!iconclass\"></i></div>\n <div class=\"heading\" [innerHTML]=\"title\"></div>\n @if (subheading) {\n <div class=\"description\" [innerHTML]=\"subheading\"></div>\n }\n </h3>\n </div>\n}\n<div class=\"app-chart-inner\" [ngClass]=\"{'loading':isLoadInProgress, 'panel-body': title}\">\n <svg></svg>\n @if (showContentLoadError && showNoDataMsg) {\n <div class=\"wm-content-info readonly-wrapper\">\n <p class=\"wm-message\" [title]=\"hintMsg\" [ngClass]=\"{'error': invalidConfig}\" [innerText]=\"errMsg\"></p>\n </div>\n }\n <div wmSpinner show.bind=\"isLoadInProgress\" caption.bind=\"loadingdatamsg\"></div>\n</div>\n", styles: [".nvtooltip h3,.nvtooltip p{margin:0;text-align:center}.nv-distx,.nv-disty,.nv-noninteractive,.nvd3 .nv-axis,.nvd3 .nv-interactiveGuideLine,.nvd3.nv-pie .nv-label,.nvd3.nv-sparklineplus g.nv-hoverValue,.nvtooltip{pointer-events:none}.nvd3 .nv-axis{opacity:1}.nvd3 .nv-axis path{fill:none;stroke:#000;stroke-opacity:.75;shape-rendering:crispEdges}.nvd3 .nv-axis .zero line,.nvd3 .nv-axis line.zero,.nvd3 .nv-axis path.domain{stroke-opacity:.75}.nvd3 .nv-axis.nv-x path.domain{stroke-opacity:0}.nvd3 .nv-axis line{fill:none;stroke:#e5e5e5;shape-rendering:crispEdges}.nvd3 .nv-axis .nv-axisMaxMin text,.nvtooltip table td.key.total{font-weight:700}.nvd3 .x .nv-axis .nv-axisMaxMin text,.nvd3 .x2 .nv-axis .nv-axisMaxMin text,.nvd3 .x3 .nv-axis .nv-axisMaxMin text{text-anchor:middle}.nvd3 .nv-axis.nv-disabled,.nvd3 .nv-controlsWrap .nv-legend .nv-check-box .nv-check{opacity:0}.nvd3 .nv-bars rect{fill-opacity:.75;-webkit-transition:fill-opacity .25s linear;transition:fill-opacity .25s linear}.nvd3 .nv-bars rect.hover,.nvd3 .nv-boxplot circle:hover,.nvd3 .nv-boxplot rect:hover,.nvd3 .nv-candlestickBar .nv-ticks rect:hover,.nvd3 .nv-discretebar .nv-groups rect:hover,.nvd3 .nv-multibar .nv-groups rect:hover,.nvd3 .nv-multibarHorizontal .nv-groups rect:hover,.nvd3 .nv-scatter .nv-point.hover,.nvd3.nv-bullet .nv-measure:hover,.nvd3.nv-linePlusBar .nv-bar rect:hover,.nvd3.nv-pie .hover path{fill-opacity:1}.nvd3 .nv-bars .hover rect{fill:#add8e6}.nvd3 .nv-bars text{fill:#0000}.nvd3 .nv-bars .hover text{fill:#000}.nvd3 .nv-discretebar .nv-groups rect,.nvd3 .nv-multibar .nv-groups rect,.nvd3 .nv-multibarHorizontal .nv-groups rect{stroke-opacity:0;-webkit-transition:fill-opacity .25s linear;transition:fill-opacity .25s linear}.nvd3 .nv-discretebar .nv-groups text,.nvd3 .nv-multibarHorizontal .nv-groups text{font-weight:700;fill:#000;stroke:#0000}.nvd3 .nv-boxplot circle{fill-opacity:.5}.nvd3 line.nv-boxplot-median{stroke:#000}.nv-boxplot-tick:hover{stroke-width:2.5px}.nvd3.nv-bullet{font:10px sans-serif}.nvd3.nv-bullet .nv-measure{fill-opacity:.8}.nvd3.nv-bullet .nv-marker{stroke:#000;stroke-width:2px}.nvd3.nv-bullet .nv-markerTriangle{stroke:#000;fill:#fff;stroke-width:1.5px}.nvd3.nv-bullet .nv-markerLine{stroke:#000;stroke-width:1.5px}.nvd3.nv-bullet .nv-tick line{stroke:#666;stroke-width:.5px}.nvd3.nv-bullet .nv-range.nv-s0{fill:#eee}.nvd3.nv-bullet .nv-range.nv-s1{fill:#ddd}.nvd3.nv-bullet .nv-range.nv-s2{fill:#ccc}.nvd3.nv-bullet .nv-title{font-size:14px;font-weight:700}.nvd3.nv-bullet .nv-subtitle{fill:#999}.nvd3.nv-bullet .nv-range{fill:#bababa;fill-opacity:.4}.nvd3.nv-bullet .nv-range:hover{fill-opacity:.7}.nvd3.nv-candlestickBar .nv-ticks .nv-tick,.nvd3.nv-ohlcBar .nv-ticks .nv-tick{stroke-width:1px}.nvd3.nv-candlestickBar .nv-ticks .nv-tick.hover,.nvd3.nv-ohlcBar .nv-ticks .nv-tick.hover{stroke-width:2px}.nvd3.nv-candlestickBar .nv-ticks .nv-tick.positive rect,.nvd3.nv-sparklineplus .nv-maxValue{stroke:#2ca02c;fill:#2ca02c}.nvd3.nv-candlestickBar .nv-ticks .nv-tick.negative rect,.nvd3.nv-sparklineplus .nv-minValue{stroke:#d62728;fill:#d62728}.with-transitions .nv-candlestickBar .nv-ticks .nv-tick,.with-transitions .nvd3 .nv-groups .nv-point{-webkit-transition:stroke-width .25s linear,stroke-opacity .25s linear;transition:stroke-width .25s linear,stroke-opacity .25s linear}.nvd3.nv-candlestickBar .nv-ticks line{stroke:#333}.nv-force-node{stroke:#fff;stroke-width:1.5px}.nv-force-link{stroke:#999;stroke-opacity:.6}.nv-force-node text{stroke-width:0}.nvd3 .nv-check-box .nv-box{fill-opacity:0;stroke-width:2}.nvd3 .nv-check-box .nv-check{fill-opacity:0;stroke-width:4}.nvd3 .nv-hoverArea,.nvd3 .nv-series.nv-disabled .nv-check-box .nv-check,.nvd3.nv-line .nvd3.nv-scatter .nv-groups .nv-point,.nvd3.nv-pie .nv-label rect{fill-opacity:0;stroke-opacity:0}.nvd3.nv-linePlusBar .nv-bar rect{fill-opacity:.75}.nvd3 .nv-groups path.nv-line,.nvd3.nv-sparkline path{fill:none}.nvd3 .nv-groups path.nv-area{stroke:none}.nvd3.nv-scatter.nv-single-point .nv-groups .nv-point{fill-opacity:.5!important;stroke-opacity:.5!important}.nvd3 .nv-groups .nv-point.hover,.nvd3.nv-scatter .nv-groups .nv-point.hover{stroke-width:7px;fill-opacity:.95!important;stroke-opacity:.95!important}.nvd3 .nv-point-paths path{stroke:#aaa;stroke-opacity:0;fill:#eee;fill-opacity:0}.nvd3 .nv-indexLine{cursor:ew-resize}svg.nvd3-svg{-webkit-user-select:none;-ms-user-select:none;user-select:none;display:block;width:100%;height:100%}.nvtooltip.with-3d-shadow,.with-3d-shadow .nvtooltip{-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px #0003;border-radius:5px}.nvd3 text{font:12px Arial,sans-serif}.nvtooltip h3,.nvtooltip table td.key{font-weight:400}.nvd3 .title{font:700 14px Arial,sans-serif}.nvd3 .nv-background{fill:#fff;fill-opacity:0}.nvd3.nv-noData{font-size:18px;font-weight:700}.nv-brush .selection{fill-opacity:.125;shape-rendering:crispEdges}.nv-brush .handle path{fill:#eee;stroke:#666}.nvd3 .nv-legend .nv-series{cursor:pointer}.nvd3 .nv-legend .nv-disabled circle{fill-opacity:0}.nvd3 .nv-brush .selection{fill-opacity:0!important}.nvd3 .nv-brushBackground rect{stroke:#000;stroke-width:.4;fill:#fff;fill-opacity:.7}@media print{.nvd3 text{stroke-width:0;fill-opacity:1}}.nvd3.nv-ohlcBar .nv-ticks .nv-tick.positive{stroke:#2ca02c}.nvd3.nv-ohlcBar .nv-ticks .nv-tick.negative{stroke:#d62728}.nvd3 .background path{fill:none;stroke:#eee;stroke-opacity:.4;shape-rendering:crispEdges}.nvd3 .foreground path{fill:none;stroke-opacity:.7}.nvd3 .nv-parallelCoordinates-brush .selection{fill:#fff;fill-opacity:.6;stroke:gray;shape-rendering:crispEdges}.nvd3 .nv-parallelCoordinates .hover{fill-opacity:1;stroke-width:3px}.nvd3 .missingValuesline line{fill:none;stroke:#000;stroke-width:1;stroke-opacity:1;stroke-dasharray:5,5}.nvd3.nv-pie path{stroke-opacity:0;-webkit-transition:fill-opacity .25s linear,stroke-width .25s linear,stroke-opacity .25s linear;transition:fill-opacity .25s linear,stroke-width .25s linear,stroke-opacity .25s linear;stroke:#fff;stroke-width:1px;stroke-opacity:1;fill-opacity:.7}.nvd3.nv-pie .nv-pie-title{font-size:24px;fill:#13c4f996}.nvd3.nv-pie .nv-slice text{stroke:#000;stroke-width:0}.nvd3 .nv-groups .nv-point.hover{stroke-width:20px;stroke-opacity:.5}.nvd3.nv-sparklineplus .nv-hoverValue line{stroke:#333;stroke-width:1.5px}.nvd3.nv-sparklineplus,.nvd3.nv-sparklineplus g{pointer-events:all}.nvd3.nv-sparklineplus .nv-xValue,.nvd3.nv-sparklineplus .nv-yValue{stroke-width:0;font-size:.9em;font-weight:400}.nvd3.nv-sparklineplus .nv-yValue{stroke:#f66}.nvd3.nv-sparklineplus .nv-currentValue{font-weight:700;font-size:1.1em}.nvd3.nv-stackedarea path.nv-area{fill-opacity:.7;stroke-opacity:0;-webkit-transition:fill-opacity .25s linear,stroke-opacity .25s linear;transition:fill-opacity .25s linear,stroke-opacity .25s linear}.nvd3.nv-stackedarea path.nv-area.hover{fill-opacity:.9}.nvd3.nv-stackedarea .nv-groups .nv-point{stroke-opacity:0;fill-opacity:0}.nvtooltip{position:absolute;background-color:#fff;color:#000;padding:1px;border:1px solid rgba(0,0,0,.5);z-index:10000;display:block;font-family:Arial,sans-serif;font-size:13px;text-align:left;white-space:nowrap;-webkit-user-select:none;-ms-user-select:none;user-select:none;background:#fffc;border-radius:4px}.nvtooltip.with-transitions,.with-transitions .nvtooltip{-webkit-transition:opacity 50ms linear .2s;transition:opacity 50ms linear .2s}.nvtooltip.x-nvtooltip,.nvtooltip.y-nvtooltip{padding:8px}.nvtooltip h3{padding:4px 14px;line-height:18px;background-color:#f7f7f7bf;color:#000;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.nvtooltip p{padding:5px 14px}.nvtooltip span{display:inline-block;margin:2px 0}.nvtooltip table{margin:6px;border-spacing:0}.nvtooltip table td{padding:2px 9px 2px 0;vertical-align:middle}.nvtooltip table td.value{text-align:right;font-weight:700}.nvtooltip table td.percent{color:#a9a9a9}.nvtooltip table tr.highlight td{padding:1px 9px 1px 0;border-bottom-style:solid;border-bottom-width:1px;border-top-style:solid;border-top-width:1px}.nvtooltip table td.legend-color-guide div{vertical-align:middle;width:12px;height:12px;border:1px solid #999}.nvtooltip .footer{padding:3px;text-align:center}.nvtooltip-pending-removal{pointer-events:none;display:none}.nvd3 line.nv-guideline{stroke:#ccc}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: SpinnerComponent, selector: "[wmSpinner]", exportAs: ["wmSpinner"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
967
|
+
}
|
|
968
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ChartComponent, decorators: [{
|
|
969
|
+
type: Component,
|
|
970
|
+
args: [{ standalone: true, imports: [CommonModule, SpinnerComponent], selector: 'div[wmChart]', providers: [
|
|
971
|
+
provideAsWidgetRef(ChartComponent)
|
|
972
|
+
], encapsulation: ViewEncapsulation.None, template: "@if (title) {\n <div class=\"panel-heading\">\n <h3 class=\"panel-title\">\n <div class=\"pull-left\"><i class=\"app-icon panel-icon {{iconclass}}\" [class.ng-hide]=\"!iconclass\"></i></div>\n <div class=\"heading\" [innerHTML]=\"title\"></div>\n @if (subheading) {\n <div class=\"description\" [innerHTML]=\"subheading\"></div>\n }\n </h3>\n </div>\n}\n<div class=\"app-chart-inner\" [ngClass]=\"{'loading':isLoadInProgress, 'panel-body': title}\">\n <svg></svg>\n @if (showContentLoadError && showNoDataMsg) {\n <div class=\"wm-content-info readonly-wrapper\">\n <p class=\"wm-message\" [title]=\"hintMsg\" [ngClass]=\"{'error': invalidConfig}\" [innerText]=\"errMsg\"></p>\n </div>\n }\n <div wmSpinner show.bind=\"isLoadInProgress\" caption.bind=\"loadingdatamsg\"></div>\n</div>\n", styles: [".nvtooltip h3,.nvtooltip p{margin:0;text-align:center}.nv-distx,.nv-disty,.nv-noninteractive,.nvd3 .nv-axis,.nvd3 .nv-interactiveGuideLine,.nvd3.nv-pie .nv-label,.nvd3.nv-sparklineplus g.nv-hoverValue,.nvtooltip{pointer-events:none}.nvd3 .nv-axis{opacity:1}.nvd3 .nv-axis path{fill:none;stroke:#000;stroke-opacity:.75;shape-rendering:crispEdges}.nvd3 .nv-axis .zero line,.nvd3 .nv-axis line.zero,.nvd3 .nv-axis path.domain{stroke-opacity:.75}.nvd3 .nv-axis.nv-x path.domain{stroke-opacity:0}.nvd3 .nv-axis line{fill:none;stroke:#e5e5e5;shape-rendering:crispEdges}.nvd3 .nv-axis .nv-axisMaxMin text,.nvtooltip table td.key.total{font-weight:700}.nvd3 .x .nv-axis .nv-axisMaxMin text,.nvd3 .x2 .nv-axis .nv-axisMaxMin text,.nvd3 .x3 .nv-axis .nv-axisMaxMin text{text-anchor:middle}.nvd3 .nv-axis.nv-disabled,.nvd3 .nv-controlsWrap .nv-legend .nv-check-box .nv-check{opacity:0}.nvd3 .nv-bars rect{fill-opacity:.75;-webkit-transition:fill-opacity .25s linear;transition:fill-opacity .25s linear}.nvd3 .nv-bars rect.hover,.nvd3 .nv-boxplot circle:hover,.nvd3 .nv-boxplot rect:hover,.nvd3 .nv-candlestickBar .nv-ticks rect:hover,.nvd3 .nv-discretebar .nv-groups rect:hover,.nvd3 .nv-multibar .nv-groups rect:hover,.nvd3 .nv-multibarHorizontal .nv-groups rect:hover,.nvd3 .nv-scatter .nv-point.hover,.nvd3.nv-bullet .nv-measure:hover,.nvd3.nv-linePlusBar .nv-bar rect:hover,.nvd3.nv-pie .hover path{fill-opacity:1}.nvd3 .nv-bars .hover rect{fill:#add8e6}.nvd3 .nv-bars text{fill:#0000}.nvd3 .nv-bars .hover text{fill:#000}.nvd3 .nv-discretebar .nv-groups rect,.nvd3 .nv-multibar .nv-groups rect,.nvd3 .nv-multibarHorizontal .nv-groups rect{stroke-opacity:0;-webkit-transition:fill-opacity .25s linear;transition:fill-opacity .25s linear}.nvd3 .nv-discretebar .nv-groups text,.nvd3 .nv-multibarHorizontal .nv-groups text{font-weight:700;fill:#000;stroke:#0000}.nvd3 .nv-boxplot circle{fill-opacity:.5}.nvd3 line.nv-boxplot-median{stroke:#000}.nv-boxplot-tick:hover{stroke-width:2.5px}.nvd3.nv-bullet{font:10px sans-serif}.nvd3.nv-bullet .nv-measure{fill-opacity:.8}.nvd3.nv-bullet .nv-marker{stroke:#000;stroke-width:2px}.nvd3.nv-bullet .nv-markerTriangle{stroke:#000;fill:#fff;stroke-width:1.5px}.nvd3.nv-bullet .nv-markerLine{stroke:#000;stroke-width:1.5px}.nvd3.nv-bullet .nv-tick line{stroke:#666;stroke-width:.5px}.nvd3.nv-bullet .nv-range.nv-s0{fill:#eee}.nvd3.nv-bullet .nv-range.nv-s1{fill:#ddd}.nvd3.nv-bullet .nv-range.nv-s2{fill:#ccc}.nvd3.nv-bullet .nv-title{font-size:14px;font-weight:700}.nvd3.nv-bullet .nv-subtitle{fill:#999}.nvd3.nv-bullet .nv-range{fill:#bababa;fill-opacity:.4}.nvd3.nv-bullet .nv-range:hover{fill-opacity:.7}.nvd3.nv-candlestickBar .nv-ticks .nv-tick,.nvd3.nv-ohlcBar .nv-ticks .nv-tick{stroke-width:1px}.nvd3.nv-candlestickBar .nv-ticks .nv-tick.hover,.nvd3.nv-ohlcBar .nv-ticks .nv-tick.hover{stroke-width:2px}.nvd3.nv-candlestickBar .nv-ticks .nv-tick.positive rect,.nvd3.nv-sparklineplus .nv-maxValue{stroke:#2ca02c;fill:#2ca02c}.nvd3.nv-candlestickBar .nv-ticks .nv-tick.negative rect,.nvd3.nv-sparklineplus .nv-minValue{stroke:#d62728;fill:#d62728}.with-transitions .nv-candlestickBar .nv-ticks .nv-tick,.with-transitions .nvd3 .nv-groups .nv-point{-webkit-transition:stroke-width .25s linear,stroke-opacity .25s linear;transition:stroke-width .25s linear,stroke-opacity .25s linear}.nvd3.nv-candlestickBar .nv-ticks line{stroke:#333}.nv-force-node{stroke:#fff;stroke-width:1.5px}.nv-force-link{stroke:#999;stroke-opacity:.6}.nv-force-node text{stroke-width:0}.nvd3 .nv-check-box .nv-box{fill-opacity:0;stroke-width:2}.nvd3 .nv-check-box .nv-check{fill-opacity:0;stroke-width:4}.nvd3 .nv-hoverArea,.nvd3 .nv-series.nv-disabled .nv-check-box .nv-check,.nvd3.nv-line .nvd3.nv-scatter .nv-groups .nv-point,.nvd3.nv-pie .nv-label rect{fill-opacity:0;stroke-opacity:0}.nvd3.nv-linePlusBar .nv-bar rect{fill-opacity:.75}.nvd3 .nv-groups path.nv-line,.nvd3.nv-sparkline path{fill:none}.nvd3 .nv-groups path.nv-area{stroke:none}.nvd3.nv-scatter.nv-single-point .nv-groups .nv-point{fill-opacity:.5!important;stroke-opacity:.5!important}.nvd3 .nv-groups .nv-point.hover,.nvd3.nv-scatter .nv-groups .nv-point.hover{stroke-width:7px;fill-opacity:.95!important;stroke-opacity:.95!important}.nvd3 .nv-point-paths path{stroke:#aaa;stroke-opacity:0;fill:#eee;fill-opacity:0}.nvd3 .nv-indexLine{cursor:ew-resize}svg.nvd3-svg{-webkit-user-select:none;-ms-user-select:none;user-select:none;display:block;width:100%;height:100%}.nvtooltip.with-3d-shadow,.with-3d-shadow .nvtooltip{-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px #0003;border-radius:5px}.nvd3 text{font:12px Arial,sans-serif}.nvtooltip h3,.nvtooltip table td.key{font-weight:400}.nvd3 .title{font:700 14px Arial,sans-serif}.nvd3 .nv-background{fill:#fff;fill-opacity:0}.nvd3.nv-noData{font-size:18px;font-weight:700}.nv-brush .selection{fill-opacity:.125;shape-rendering:crispEdges}.nv-brush .handle path{fill:#eee;stroke:#666}.nvd3 .nv-legend .nv-series{cursor:pointer}.nvd3 .nv-legend .nv-disabled circle{fill-opacity:0}.nvd3 .nv-brush .selection{fill-opacity:0!important}.nvd3 .nv-brushBackground rect{stroke:#000;stroke-width:.4;fill:#fff;fill-opacity:.7}@media print{.nvd3 text{stroke-width:0;fill-opacity:1}}.nvd3.nv-ohlcBar .nv-ticks .nv-tick.positive{stroke:#2ca02c}.nvd3.nv-ohlcBar .nv-ticks .nv-tick.negative{stroke:#d62728}.nvd3 .background path{fill:none;stroke:#eee;stroke-opacity:.4;shape-rendering:crispEdges}.nvd3 .foreground path{fill:none;stroke-opacity:.7}.nvd3 .nv-parallelCoordinates-brush .selection{fill:#fff;fill-opacity:.6;stroke:gray;shape-rendering:crispEdges}.nvd3 .nv-parallelCoordinates .hover{fill-opacity:1;stroke-width:3px}.nvd3 .missingValuesline line{fill:none;stroke:#000;stroke-width:1;stroke-opacity:1;stroke-dasharray:5,5}.nvd3.nv-pie path{stroke-opacity:0;-webkit-transition:fill-opacity .25s linear,stroke-width .25s linear,stroke-opacity .25s linear;transition:fill-opacity .25s linear,stroke-width .25s linear,stroke-opacity .25s linear;stroke:#fff;stroke-width:1px;stroke-opacity:1;fill-opacity:.7}.nvd3.nv-pie .nv-pie-title{font-size:24px;fill:#13c4f996}.nvd3.nv-pie .nv-slice text{stroke:#000;stroke-width:0}.nvd3 .nv-groups .nv-point.hover{stroke-width:20px;stroke-opacity:.5}.nvd3.nv-sparklineplus .nv-hoverValue line{stroke:#333;stroke-width:1.5px}.nvd3.nv-sparklineplus,.nvd3.nv-sparklineplus g{pointer-events:all}.nvd3.nv-sparklineplus .nv-xValue,.nvd3.nv-sparklineplus .nv-yValue{stroke-width:0;font-size:.9em;font-weight:400}.nvd3.nv-sparklineplus .nv-yValue{stroke:#f66}.nvd3.nv-sparklineplus .nv-currentValue{font-weight:700;font-size:1.1em}.nvd3.nv-stackedarea path.nv-area{fill-opacity:.7;stroke-opacity:0;-webkit-transition:fill-opacity .25s linear,stroke-opacity .25s linear;transition:fill-opacity .25s linear,stroke-opacity .25s linear}.nvd3.nv-stackedarea path.nv-area.hover{fill-opacity:.9}.nvd3.nv-stackedarea .nv-groups .nv-point{stroke-opacity:0;fill-opacity:0}.nvtooltip{position:absolute;background-color:#fff;color:#000;padding:1px;border:1px solid rgba(0,0,0,.5);z-index:10000;display:block;font-family:Arial,sans-serif;font-size:13px;text-align:left;white-space:nowrap;-webkit-user-select:none;-ms-user-select:none;user-select:none;background:#fffc;border-radius:4px}.nvtooltip.with-transitions,.with-transitions .nvtooltip{-webkit-transition:opacity 50ms linear .2s;transition:opacity 50ms linear .2s}.nvtooltip.x-nvtooltip,.nvtooltip.y-nvtooltip{padding:8px}.nvtooltip h3{padding:4px 14px;line-height:18px;background-color:#f7f7f7bf;color:#000;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.nvtooltip p{padding:5px 14px}.nvtooltip span{display:inline-block;margin:2px 0}.nvtooltip table{margin:6px;border-spacing:0}.nvtooltip table td{padding:2px 9px 2px 0;vertical-align:middle}.nvtooltip table td.value{text-align:right;font-weight:700}.nvtooltip table td.percent{color:#a9a9a9}.nvtooltip table tr.highlight td{padding:1px 9px 1px 0;border-bottom-style:solid;border-bottom-width:1px;border-top-style:solid;border-top-width:1px}.nvtooltip table td.legend-color-guide div{vertical-align:middle;width:12px;height:12px;border:1px solid #999}.nvtooltip .footer{padding:3px;text-align:center}.nvtooltip-pending-removal{pointer-events:none;display:none}.nvd3 line.nv-guideline{stroke:#ccc}\n"] }]
|
|
973
|
+
}], ctorParameters: () => [{ type: i0.Injector }, { type: i1.App }, { type: undefined, decorators: [{
|
|
974
|
+
type: Inject,
|
|
975
|
+
args: ['EXPLICIT_CONTEXT']
|
|
976
|
+
}, {
|
|
977
|
+
type: Optional
|
|
978
|
+
}] }], propDecorators: { title: [{
|
|
979
|
+
type: HostBinding,
|
|
980
|
+
args: ['class.panel']
|
|
981
|
+
}] } });
|
|
982
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy93aWRnZXRzL2NoYXJ0L3NyYy9jaGFydC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3dpZGdldHMvY2hhcnQvc3JjL2NoYXJ0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRSxPQUFPLEVBR0gsU0FBUyxFQUNULFdBQVcsRUFDWCxRQUFRLEVBQ1IsaUJBQWlCLEVBQ2pCLFFBQVEsRUFDUixNQUFNLEVBQ1QsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUNILEdBQUcsRUFDSCxVQUFVLEVBQ1YsZUFBZSxFQUNmLGlCQUFpQixFQUNqQixhQUFhLEVBQ2IsWUFBWSxFQUNaLGNBQWMsRUFDZCxVQUFVLEVBQ1YsU0FBUyxHQUNaLE1BQU0sVUFBVSxDQUFDO0FBQ2xCLE9BQU8sRUFBRSxpQkFBaUIsRUFBd0Isa0JBQWtCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxHQUFJLE1BQU0scUJBQXFCLENBQUM7QUFFL0gsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5QyxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pPLE9BQU8sRUFDSCxNQUFNLEVBQUUsUUFBUSxFQUFFLElBQUksRUFDdEIsS0FBSyxFQUNMLE9BQU8sRUFBRSxZQUFZLEVBQ3JCLEdBQUcsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUN0QixZQUFZLEVBQ1osT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUNoQyxHQUFHLEVBQUUsR0FBRyxFQUNSLEtBQUssRUFDTCxLQUFLLEVBQ0wsT0FBTyxFQUNQLE9BQU8sRUFDUCxLQUFLLEVBQ0wsSUFBSSxFQUNQLE1BQU0sV0FBVyxDQUFDOzs7O0FBTW5CLE1BQU0sYUFBYSxHQUFHLEVBQUMsVUFBVSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFDLENBQUM7QUFFdkUsTUFBTSxPQUFPLEdBQUc7SUFDUixRQUFRLEVBQUcsQ0FBQyxZQUFZLEVBQUUsT0FBTyxDQUFDO0NBQ3JDLEVBQ0QsSUFBSSxHQUFHLE1BQU0sRUFDYixnQkFBZ0IsR0FBRyxDQUFDLGFBQWEsRUFBRSxtQkFBbUIsRUFBRSxTQUFTLEVBQUUsU0FBUyxDQUFDO0FBQzdFLHFEQUFxRDtBQUNyRCxtQkFBbUIsR0FBRztJQUNsQixRQUFRLEVBQVcsYUFBYTtJQUNoQyxLQUFLLEVBQWMsVUFBVTtJQUM3QixNQUFNLEVBQWEsMkJBQTJCO0lBQzlDLGlCQUFpQixFQUFFLGtEQUFrRDtJQUNyRSxNQUFNLEVBQWEsNkNBQTZDO0lBQ2hFLEtBQUssRUFBYyw2QkFBNkI7SUFDaEQsT0FBTyxFQUFZLDZCQUE2QjtJQUNoRCxRQUFRLEVBQVcsdUNBQXVDO0NBQzdEO0FBQ0QsOEJBQThCO0FBQzlCLFVBQVUsR0FBRyxDQUFDLFlBQVksRUFBRSxPQUFPLENBQUMsRUFDcEMsVUFBVSxHQUFHO0lBQ1QsVUFBVSxFQUFRLFdBQVc7SUFDN0IsVUFBVSxFQUFRLFdBQVc7SUFDN0IsT0FBTyxFQUFXLE1BQU07SUFDeEIsWUFBWSxFQUFNLGFBQWE7SUFDL0IsWUFBWSxFQUFNLGFBQWE7SUFDL0IsV0FBVyxFQUFPLFlBQVk7SUFDOUIsZ0JBQWdCLEVBQUUsaUJBQWlCO0NBQ3RDO0FBQ0QseUVBQXlFO0FBQ3pFLGdCQUFnQixHQUFHO0lBQ2YsU0FBUyxFQUFHLEtBQUs7SUFDakIsT0FBTyxFQUFLLE9BQU87SUFDbkIsU0FBUyxFQUFHLEtBQUs7SUFDakIsU0FBUyxFQUFHLEtBQUs7SUFDakIsS0FBSyxFQUFPLEtBQUs7Q0FDcEIsQ0FBQztBQUVOLE1BQU0sZUFBZSxHQUFHLEdBQUcsQ0FBQyxFQUFFO0lBQzFCLElBQUksR0FBRyxLQUFLLElBQUksSUFBSSxHQUFHLEtBQUssTUFBTSxFQUFFLENBQUM7UUFDakMsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUNELElBQUksR0FBRyxLQUFLLEtBQUssSUFBSSxHQUFHLEtBQUssT0FBTyxFQUFFLENBQUM7UUFDbkMsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUNELE9BQU8sR0FBRyxDQUFDO0FBQ2YsQ0FBQyxDQUFDO0FBRUYsa0VBQWtFO0FBQ2xFLE1BQU0sc0JBQXNCLEdBQUcsT0FBTyxDQUFDLEVBQUU7SUFDckMsSUFBSSxPQUFPLENBQUM7SUFDWixNQUFNLGNBQWMsR0FBRyxFQUFFLEVBQ3JCLE1BQU0sR0FBRyxFQUFFLENBQUM7SUFFaEIsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLEVBQUUsVUFBVSxHQUFHO1FBQ3RDLE9BQU8sR0FBRyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQzFCLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1QixDQUFDLENBQUMsQ0FBQztJQUNILE9BQU87UUFDSCxTQUFTLEVBQUcsY0FBYztRQUMxQixRQUFRLEVBQUksTUFBTTtLQUNyQixDQUFDO0FBQ04sQ0FBQyxDQUFDO0FBRUYsK0VBQStFO0FBQy9FLE1BQU0saUJBQWlCLEdBQUcsU0FBUyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFFeEYsaURBQWlEO0FBQ2pELE1BQU0sWUFBWSxHQUFHLENBQUMsVUFBVSxFQUFFLEVBQUUsRUFBRSxFQUFFO0lBQ3BDLE1BQU0sU0FBUyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsVUFBVSxHQUFHLEVBQUUsR0FBRyxNQUFNLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDeEUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDO1FBQ3JCLFNBQVMsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDaEMsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUVGLE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQyxFQUFFO0lBQ2QsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFDMUQsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDaEMsQ0FBQyxDQUFDO0FBYUYsTUFBTSxPQUFPLGNBQWUsU0FBUSxpQkFBaUI7YUFDMUMsb0JBQWUsR0FBRyxhQUFhLEVBQUUsQUFBbEIsQ0FBbUI7SUFvRHpDLGdCQUFnQjtRQUNaLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLElBQUksQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRCxnRUFBZ0U7SUFDaEUsV0FBVztRQUNQLDBEQUEwRDtRQUMxRCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUM5RSxDQUFDO0lBRUQsaUNBQWlDO0lBQ2pDLG9CQUFvQjtRQUNoQixPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLElBQUksSUFBSSxDQUFDLFdBQVcsS0FBSyxJQUFJLElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQztJQUNoRyxDQUFDO0lBRUQsNERBQTREO0lBQzVELHNCQUFzQjtRQUNsQjs7O1lBR0k7UUFFSixPQUFPLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3BGLENBQUM7SUFFRDs7b0NBRWdDO0lBQ2hDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUs7UUFDNUIsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNqQyx1REFBdUQ7UUFDdkQsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDO1lBQ2xFLDJDQUEyQztZQUMzQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM3Qiw4QkFBOEI7WUFDOUIsSUFBSSxLQUFLLFlBQVksSUFBSSxFQUFFLENBQUM7Z0JBQ3hCLE9BQU8sS0FBSyxDQUFDO1lBQ2pCLENBQUM7aUJBQU0sQ0FBQztnQkFDSixPQUFPLEtBQUssQ0FBQztZQUNqQixDQUFDO1FBQ0wsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFRCx3REFBd0Q7SUFDeEQsZ0JBQWdCLENBQUMsS0FBSztRQUNsQixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDVCxPQUFPO1FBQ1gsQ0FBQztRQUNELE1BQU0sT0FBTyxHQUFRLEVBQUUsQ0FBQztRQUN4Qjs7Ozs7Ozs7VUFRRTtRQUNGLE9BQU8sQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQy9FOzs7Ozs7OztXQVFHO1FBQ0gsT0FBTyxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDL0UsT0FBTyxPQUFPLENBQUM7SUFDbkIsQ0FBQztJQUVELHdEQUF3RDtJQUN4RCxnQkFBZ0IsQ0FBQyxLQUFLO1FBQ2xCLE1BQU0sT0FBTyxHQUFRLEVBQUUsRUFDbkIsU0FBUyxHQUFHLEVBQUUsRUFDZCxTQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNULE9BQU87UUFDWCxDQUFDO1FBRUQ7Ozs7Ozs7Ozs7OztXQVlHO1FBRUgsT0FBTyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsRUFBRTtZQUNsQixTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFVBQVUsVUFBVTtnQkFDbEQsT0FBTyxVQUFVLENBQUMsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN6QyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ0osU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxVQUFVLFVBQVU7Z0JBQ2xELE9BQU8sVUFBVSxDQUFDLENBQUMsSUFBSSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDekMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNSLENBQUMsQ0FBQyxDQUFDO1FBQ0gsa0dBQWtHO1FBQ2xHLE9BQU8sQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDLFNBQVMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUUsT0FBTyxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUMsU0FBUyxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM1RSxPQUFPLE9BQU8sQ0FBQztJQUNuQixDQUFDO0lBRUQsc0ZBQXNGO0lBQ3RGLFlBQVksQ0FBQyxNQUFNO1FBQ2YsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDMUUsQ0FBQztJQUVELDRFQUE0RTtJQUM1RSxXQUFXLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBTSxFQUFFLEtBQU07UUFDM0MsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxFQUMvQyxLQUFLLEdBQUcsR0FBRyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsRUFDMUIsSUFBSSxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLEVBQ2pDLElBQUksR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyRCxJQUFJLFNBQVMsR0FBUSxFQUFFLENBQUM7UUFFeEIsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDN0IsU0FBUyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7WUFDbkIsU0FBUyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7WUFDbkIsNENBQTRDO1lBQzVDLElBQUksYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUMzQixTQUFTLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztnQkFDdEIsU0FBUyxDQUFDLEtBQUssR0FBRyxLQUFLLElBQUksUUFBUSxDQUFDO1lBQ3hDLENBQUM7UUFDTCxDQUFDO2FBQU0sSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNyQyxTQUFTLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDN0IsQ0FBQztRQUNELHNHQUFzRztRQUN0RyxTQUFTLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQztRQUM3QixPQUFPLFNBQVMsQ0FBQztJQUNyQixDQUFDO0lBRUQscUNBQXFDO0lBQ3JDLFNBQVMsQ0FBQyxPQUFPO1FBQ2IsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQztZQUNqQyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztZQUMxQix3Q0FBd0M7WUFDeEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsQ0FBQyw4QkFBOEI7UUFDcEQsQ0FBQztJQUNMLENBQUM7SUFFRCxnQkFBZ0I7UUFDWixJQUFJLENBQUMsVUFBVSxHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN0QyxnRUFBZ0U7UUFDaEUsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7UUFDdEIsMEVBQTBFO1FBQzFFLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLEVBQUUsQ0FBQztZQUNqQyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7UUFDM0IsQ0FBQztRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUM1QyxPQUFPLEVBQUUsQ0FBQztRQUNkLENBQUM7UUFFRCxJQUFJLEtBQUssR0FBRyxFQUFFLEVBQ1YsUUFBUSxFQUNSLE1BQU0sR0FBUSxFQUFFLEVBQ2hCLE1BQU0sR0FBUSxFQUFFLENBQUM7UUFDckIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFDOUIsU0FBUyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQ2pFLE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBRTdCLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDbkIsSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQ3ZCLFFBQVEsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3hCLEtBQUssR0FBRyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFO29CQUNwQyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7d0JBQ2pDLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDO29CQUNoRSxDQUFDO2dCQUNMLENBQUMsQ0FBQyxDQUFDO2dCQUNILEtBQUssR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3JDLENBQUM7aUJBQU0sQ0FBQztnQkFDSixJQUFJLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztvQkFDM0IsTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7Z0JBQzlELENBQUM7Z0JBQ0QsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsRUFBRTtvQkFDbkMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLEVBQUU7d0JBQ3JDLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQzs0QkFDakMsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7d0JBQzFILENBQUM7b0JBQ0wsQ0FBQyxDQUFDLENBQUM7b0JBQ0gsTUFBTSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQ25DLEtBQUssQ0FBQyxJQUFJLENBQUM7d0JBQ1AsTUFBTSxFQUFFLE1BQU07d0JBQ2QsR0FBRyxFQUFFLGNBQWMsQ0FBQyxRQUFRLENBQUM7cUJBQ2hDLENBQUMsQ0FBQztnQkFDUCxDQUFDLENBQUMsQ0FBQztZQUNQLENBQUM7UUFDTCxDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVELFlBQVksQ0FBQyxJQUFJO1FBQ2IsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNQLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO1FBQy9CLENBQUM7SUFDTCxDQUFDO0lBRUQsWUFBWTtRQUNSLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUMvQixDQUFDO0lBRUQsOEVBQThFO0lBQzlFLHNCQUFzQixDQUFDLGFBQWEsRUFBRSxjQUFjO1FBQ2hELElBQUksU0FBUyxHQUFRLEVBQUUsRUFDbkIsV0FBVyxHQUFRLEVBQUUsRUFDckIsY0FBYyxFQUNkLFNBQVMsQ0FBQztRQUNkLE1BQU0sU0FBUyxHQUFRLEVBQUUsRUFDckIsWUFBWSxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQ3JDLFFBQVEsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNwRCxJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztRQUN0QixhQUFhLEdBQUcsT0FBTyxDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ2pFLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2YsY0FBYyxHQUFHLHNCQUFzQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN0RCxhQUFhLEdBQUcsT0FBTyxDQUFDLGFBQWEsRUFBRSxjQUFjLENBQUMsT0FBTyxFQUFFLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMxRixDQUFDO1FBQ0QsYUFBYSxHQUFHLE9BQU8sQ0FBQyxhQUFhLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFDdkQscUVBQXFFO1FBQ3JFLElBQUksWUFBWSxFQUFFLENBQUM7WUFDZixTQUFTLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUMzRCxDQUFDO1FBQ0QsT0FBTyxDQUFDLGFBQWEsRUFBRSxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsRUFBRTtZQUN4QyxXQUFXLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3BFLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUU7Z0JBQ2xDLFdBQVcsQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUNyRixDQUFDLENBQUMsQ0FBQztZQUNILFNBQVMsR0FBRztnQkFDUixHQUFHLEVBQUcsUUFBUTtnQkFDZCxNQUFNLEVBQUcsV0FBVzthQUN2QixDQUFDO1lBQ0YsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM5QixDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sU0FBUyxDQUFDO0lBQ3JCLENBQUM7SUFFRDt1SUFDbUk7SUFDbkksa0JBQWtCO1FBQ2QsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxFQUFFLENBQUM7WUFDMUQsSUFBSSxpQkFBaUIsR0FBRyxLQUFLLEVBQ3pCLG9CQUFvQixFQUNwQixrQkFBa0IsRUFDbEIsT0FBTyxHQUFRLEVBQUUsRUFDakIsbUJBQW1CLENBQUM7WUFDeEIsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFDdkYsU0FBUyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFFdEUsSUFBSSxjQUFjLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUM1QiwyRUFBMkU7Z0JBQzNFLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUU7b0JBQ25DLElBQUksSUFBSSxDQUFDLFlBQVksS0FBSyxNQUFNLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQzt3QkFDdEUsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO3dCQUN6QixvQkFBb0IsR0FBRyxNQUFNLENBQUM7d0JBQzlCLG1CQUFtQixHQUFHLEtBQUssQ0FBQzt3QkFDNUIsY0FBYyxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLENBQUMsQ0FBQzt3QkFDOUMsT0FBTyxLQUFLLENBQUM7b0JBQ2pCLENBQUM7b0JBQ0QsT0FBTyxJQUFJLENBQUM7Z0JBQ2hCLENBQUMsQ0FBQyxDQUFDO2dCQUNILHNDQUFzQztnQkFDdEMsSUFBSSxvQkFBb0IsRUFBRSxDQUFDO29CQUN2QixPQUFPLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7Z0JBQ3ZDLENBQUM7Z0JBRUQsSUFBSSxjQUFjLENBQUMsTUFBTSxFQUFFLENBQUM7b0JBQ3hCLE9BQU8sR0FBRyxNQUFNLENBQUMsT0FBTyxFQUFFLGNBQWMsQ0FBQyxDQUFDO2dCQUM5QyxDQUFDO1lBQ0wsQ0FBQztZQUNELGlGQUFpRjtZQUNqRixJQUFJLElBQUksQ0FBQyxZQUFZLEtBQUssSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7Z0JBQy9DLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ3BDLENBQUM7WUFDRCxPQUFPLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxFQUFFO2dCQUNyQixJQUFJLEdBQUcsS0FBSyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztvQkFDakMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDdEIsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1lBQ0gsa0JBQWtCLEdBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN4QyxvREFBb0Q7WUFDcEQsSUFBSSxDQUFDLGlCQUFpQixHQUFHLGlCQUFpQixDQUFDO1lBRTNDLE9BQU87Z0JBQ0gsVUFBVSxFQUFFLGtCQUFrQjtnQkFDOUIsaUJBQWlCLEVBQUUsaUJBQWlCO2dCQUNwQyxvQkFBb0IsRUFBRSxvQkFBb0I7YUFDN0MsQ0FBQztRQUNOLENBQUM7UUFDRCxPQUFPO1lBQ0gsVUFBVSxFQUFFLEVBQUU7WUFDZCxpQkFBaUIsRUFBRSxLQUFLO1lBQ3hCLG9CQUFvQixFQUFFLEVBQUU7U0FDM0IsQ0FBQztJQUNOLENBQUM7SUFFRCx3R0FBd0c7SUFDeEcsaUJBQWlCLENBQUMsUUFBUTtRQUN0QixNQUFNLFFBQVEsR0FBUSxJQUFJLENBQUMsVUFBVSxFQUNqQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFDakUsSUFBSSxHQUFRLEVBQUUsQ0FBQztRQUNuQixJQUFJLFFBQVEsRUFDUixPQUFPLEdBQVEsRUFBRSxFQUNqQixRQUFRLEVBQ1IsY0FBYyxFQUNkLGFBQWEsR0FBUSxFQUFFLENBQUM7UUFFNUIsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ1osT0FBTztRQUNYLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLENBQUM7WUFDMUIsYUFBYSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQzdDLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNmLFFBQVEsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDNUMsT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN6RSxjQUFjLEdBQUcsc0JBQXNCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQztZQUM5RCxxR0FBcUc7WUFDckcsT0FBTyxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsY0FBYyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUU7Z0JBQ2pELFFBQVEsR0FBRyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDbEMsYUFBYTtnQkFDYixRQUFRLEdBQUcsT0FBTyxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDaEQsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsb0JBQW9CLEVBQUUsRUFBRSxDQUFDO1lBQzlCLCtFQUErRTtZQUMvRSxJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztZQUNuQyxJQUFJLENBQUMsWUFBWSxHQUFJO2dCQUNqQjtvQkFDSSxPQUFPLEVBQUUsSUFBSSxDQUFDLGlCQUFpQjtvQkFDL0IsTUFBTSxFQUFHLGdCQUFnQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7b0JBQzNDLE9BQU8sRUFBRSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUM7aUJBQ3JEO2FBQ0osQ0FBQztRQUNOLENBQUM7UUFDRCxxQkFBcUI7UUFDckIsUUFBUSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsRUFBRTtZQUNsQyxjQUFjLEVBQUcsSUFBSTtZQUNyQixNQUFNLEVBQVcsUUFBUTtTQUM1QixDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ2YsNkRBQTZEO1lBQzdELE1BQU0sU0FBUyxHQUFRLEVBQUUsRUFDckIsZ0JBQWdCLEdBQVEsaUJBQWlCLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEVBQ2pFLGFBQWEsR0FBRyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQ3BELGNBQWMsR0FBRyxFQUFFLENBQUM7WUFFeEIsU0FBUyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRWhGLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLGVBQWUsRUFBRSxFQUFFO2dCQUMvQyxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUM7Z0JBQ2YsbUdBQW1HO2dCQUNuRyxJQUFJLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxFQUFFLENBQUM7b0JBQzlCLEdBQUcsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxlQUFlLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztvQkFDaEUsR0FBRyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxlQUFlLEVBQUUsZ0JBQWdCLENBQUMsSUFBSSxHQUFHLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO2dCQUN6SCxDQUFDO2dCQUVELEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsR0FBRyxDQUFDLGVBQWUsRUFBRSxhQUFhLENBQUMsSUFBSSxHQUFHLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztnQkFFeEcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsRUFBRTtvQkFDbEMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxHQUFHLGVBQWUsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztvQkFDdkQsR0FBRyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxlQUFlLEVBQUUsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLGVBQWUsRUFBRSxRQUFRLENBQUMsQ0FBQztnQkFDbEcsQ0FBQyxDQUFDLENBQUM7Z0JBRUgsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN4QixDQUFDLENBQUMsQ0FBQztZQUVILElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1lBRTNCLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN4QixDQUFDLEVBQUUsR0FBRyxFQUFFO1lBQ0osSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDLFNBQVMsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1lBQzNDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN4QixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxvSEFBb0g7SUFDcEgsaUJBQWlCO1FBQ2IsSUFBSSxNQUFNLEVBQ04sU0FBUyxFQUNULFNBQVMsRUFDVCxLQUFLLEVBQ0wsS0FBSyxFQUNMLFdBQVcsRUFDWCxXQUFXLEVBQ1gsVUFBVSxFQUNWLG9CQUFvQixFQUNwQixVQUFVLEVBQ1YsWUFBWSxFQUNaLFVBQVUsQ0FBQztRQUNmLE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFDOUMsVUFBVSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkMsbUNBQW1DO1FBQ25DLE1BQU0sR0FBRyxDQUFDLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFdEYsa0ZBQWtGO1FBQ2xGLE1BQU0sQ0FBQyxJQUFJLENBQUM7WUFDUixNQUFNLEtBQUssR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDdEIsSUFBSSxVQUFVLEVBQ1YsUUFBUSxDQUFDO1lBQ2IsSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztnQkFDL0MsVUFBVSxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUN6RCxLQUFLLEdBQUcsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDN0MsS0FBSyxHQUFHLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7Z0JBQ3pDLElBQUksQ0FBQyxVQUFVLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxDQUFDO29CQUMzQixRQUFRLEdBQUcsS0FBSyxDQUFDO2dCQUNyQixDQUFDO3FCQUFNLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxDQUFDO29CQUNuQixRQUFRLEdBQUcsS0FBSyxDQUFDO2dCQUNyQixDQUFDO2dCQUNELElBQUksU0FBUyxFQUFFLENBQUM7b0JBQ1osU0FBUyxHQUFHLFFBQVEsR0FBRyxTQUFTLENBQUM7b0JBQ2pDLE9BQU8sS0FBSyxDQUFDO2dCQUNqQixDQUFDO2dCQUNELFNBQVMsR0FBRyxRQUFRLENBQUM7Z0JBQ3JCLE9BQU8sSUFBSSxDQUFDO1lBQ2hCLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILGtGQUFrRjtRQUNsRixJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ2IsVUFBVSxHQUFHLENBQUMsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEdBQUcsR0FBRyxnQ0FBZ0MsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzVFLFlBQVksR0FBRyxDQUFDLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcseUJBQXlCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN2RSxVQUFVLEdBQUcsQ0FBQyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2xELHdDQUF3QztZQUN4QyxXQUFXLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN6RSxxQ0FBcUM7WUFDckMsb0JBQW9CLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxLQUFLLEdBQUcsWUFBWSxDQUFDLHFCQUFxQixFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxLQUFLLENBQUM7WUFDdkssdUNBQXVDO1lBQ3ZDLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLG9CQUFvQixHQUFHLFFBQVEsQ0FBQyxDQUFDO1lBQ3hELCtEQUErRDtZQUMvRCwyQ0FBMkM7WUFDM0MsSUFBSSxTQUFTLEdBQUcsUUFBUSxFQUFFLENBQUM7Z0JBQ3ZCLGtEQUFrRDtnQkFDbEQsV0FBVyxHQUFHLFdBQVcsR0FBRyxRQUFRLENBQUM7Z0JBQ3JDLCtCQUErQjtnQkFDL0IsVUFBVSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsV0FBVyxDQUFDLENBQUM7Z0JBQzVELDhCQUE4QjtnQkFDOUIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEdBQUcsR0FBRyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQztvQkFDaEgsK0JBQStCO29CQUMvQixJQUFJLENBQUMsR0FBRyxVQUFVLEtBQUssQ0FBQyxFQUFFLENBQUM7d0JBQ3ZCLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztvQkFDdkMsQ0FBQztnQkFDTCxDQUFDLENBQUMsQ0FBQztZQUNQLENBQUM7UUFDTCxDQUFDO2FBQU0sQ0FBQztZQUNKLHVDQUF1QztZQUN2QyxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDLENBQUM7UUFDakQsQ0FBQztRQUVELCtDQUErQztRQUMvQyxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNoQyxxR0FBcUc7UUFDckcsTUFBTSxDQUFDLElBQUksQ0FBQztZQUNSLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsU0FBUyxFQUFFLENBQUM7Z0JBQ3RDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxHQUFHLEtBQUssQ0FBQztZQUNyRSxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsaUVBQWlFO0lBQ2pFLGlCQUFpQjtRQUNiLElBQUksSUFBSSxFQUNKLFlBQVksRUFDWixDQUFDLEVBQ0QsSUFBSSxDQUFDO1FBQ1QsTUFBTSxjQUFjLEdBQUcsRUFBRSxFQUNyQixPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUVyRixLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxNQUFNLElBQUksY0FBYyxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ25FLElBQUksR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDaEQsY0FBYyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDOUMsQ0FBQztpQkFBTSxJQUFJLElBQUksS0FBSyxRQUFRLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDNUMsWUFBWSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFDeEMsQ0FBQztRQUNMLENBQUM7UUFDRCx3REFBd0Q7UUFDeEQsNkNBQTZDO1FBQzdDLElBQUksWUFBWSxJQUFJLGNBQWMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3pFLElBQUksR0FBRyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDekIsY0FBYyxDQUFDLENBQUMsQ0FBQyxHQUFHLFlBQVksQ0FBQztZQUNqQyxjQUFjLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQzdCLENBQUM7UUFFRCxPQUFPLGNBQWMsQ0FBQztJQUMxQixDQUFDO0lBRUQseUZBQXlGO0lBQ3pGLGdCQUFnQjtRQUNaLElBQUksT0FBTyxDQUFDO1FBQ1osRUFBRSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEdBQUcsR0FBRyxNQUFNLENBQUMsQ0FBQyxTQUFTLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLGdCQUFnQixFQUFFLEtBQUssQ0FBQzthQUM3RyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUNoQyxRQUFRLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDaEIsS0FBSyxRQUFRLENBQUM7Z0JBQ2QsS0FBSyxLQUFLO29CQUNOLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO29CQUN4QixNQUFNO2dCQUNWLEtBQUssS0FBSyxDQUFDO2dCQUNYLEtBQUssT0FBTztvQkFDUixPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7b0JBQzdCLE1BQU07Z0JBQ1YsS0FBSyxNQUFNLENBQUM7Z0JBQ1osS0FBSyxpQkFBaUIsQ0FBQztnQkFDdkIsS0FBSyxNQUFNO29CQUNQLE9BQU8sR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO29CQUMzQixNQUFNO2dCQUNWLEtBQUssUUFBUTtvQkFDVCxPQUFPLEdBQUcsSUFBSSxDQUFDO29CQUNmLE1BQU07WUFDZCxDQUFDO1lBQ0QsSUFBSSxDQUFDLFlBQVksR0FBRyxPQUFPLENBQUM7WUFDNUIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsRUFBRTtnQkFDL0IsTUFBTSxFQUFFLEtBQUs7Z0JBQ2IsaUJBQWlCLEVBQUUsSUFBSTtnQkFDdkIsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZO2FBQ2xDLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQyxDQUFDO0lBRVgsQ0FBQztJQUVEOzs7Ozs7U0FNSztJQUVMLGVBQWUsQ0FBQyxLQUFLO1FBQ2pCLElBQUksUUFBUSxFQUNSLFNBQVMsRUFDVCxTQUFTLEVBQ1QsVUFBVSxDQUFDO1FBQ2YsTUFBTSxRQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFFOUIsb0JBQW9CLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFM0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUM3QixDQUFDO2FBQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ2pDO29FQUN3RDtZQUN4RCxtRUFBbUU7WUFDbkUsUUFBUSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDLENBQUM7WUFDckQsU0FBUyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ3BFLFNBQVMsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUM5RCxVQUFVLEdBQUcsRUFBRSxDQUFDO1lBQ2hCLElBQUksU0FBUyxJQUFJLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDaEMsU0FBUyxDQUFDLElBQUksQ0FBQztvQkFDWCxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsVUFBVSxDQUFDO3dCQUN6QyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUM5QixDQUFDLENBQUMsQ0FBQztnQkFDUCxDQUFDLENBQUMsQ0FBQztnQkFDSCxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7b0JBQ3pCLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQzlCLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxTQUFTLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO2dCQUNuRixDQUFDLENBQUMsQ0FBQztZQUNQLENBQUM7UUFDTCxDQUFDO1FBRUQsMENBQTBDO1FBQzFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLEVBQUU7WUFDL0IsSUFBSSxHQUFHLEtBQUssVUFBVSxJQUFJLEdBQUcsS0FBSyxVQUFVLEVBQUUsQ0FBQztnQkFDM0MsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUNwRCxDQUFDO2lCQUFNLENBQUM7Z0JBQ0osUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNoQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDSCxZQUFZLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUVqQzs7O2FBR0s7UUFDTCxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2xELElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFO1lBQ3hDLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixFQUFFLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQzVDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDZixvQkFBb0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztvQkFDeEIsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7Z0JBQzdCLENBQUM7WUFDTCxDQUFDO2lCQUFNLENBQUM7Z0JBQ0osc0NBQXNDO2dCQUN0Qzs7O21CQUdHO1lBQ1AsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELCtDQUErQztJQUMvQyxjQUFjO1FBQ1YsNERBQTREO1FBQzVELDRHQUE0RztRQUM1RyxJQUFJLGFBQWEsQ0FBQztRQUNsQixJQUFJLGFBQWEsQ0FBQztRQUNsQixJQUFJLEtBQUssQ0FBQztRQUNWLElBQUksZUFBZSxDQUFDO1FBQ3BCLE1BQU0sY0FBYyxHQUFRLEVBQUUsQ0FBQztRQUUvQixJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ2pDLElBQUksaUJBQWlCLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQy9CLGFBQWEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRyxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUMsRUFBRyxLQUFLLEVBQUcsRUFBQyxHQUFHLEVBQUcsQ0FBQyxFQUFDLEVBQUMsQ0FBQztZQUMvSCxDQUFDO1lBQ0QsSUFBSSxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDL0IsYUFBYSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFHLEVBQUMsR0FBRyxFQUFHLENBQUMsRUFBQyxFQUFFLEtBQUssRUFBRyxFQUFDLEdBQUcsRUFBRyxDQUFDLEVBQUMsRUFBQyxDQUFDO1lBQzVILENBQUM7UUFDTCxDQUFDO1FBRUQsSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7WUFDcEUsSUFBSSxDQUFDLGNBQWMsR0FBRyxlQUFlLENBQUMsSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDcEYsQ0FBQztRQUVELHVCQUF1QjtRQUN2QixLQUFLLEdBQUcsU0FBUyxDQUFDLElBQUksRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUUvRSxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQztZQUMvQixtRkFBbUY7WUFDbkYsTUFBTSxTQUFTLEdBQUksQ0FBQyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDbkYsSUFBSSxTQUFTLElBQUksU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNoQyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDdkIsQ0FBQztZQUNELGVBQWUsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsY0FBYyxFQUFFLEVBQUUsZUFBZSxFQUFHLEtBQUssRUFBQyxDQUFDLENBQUM7WUFDdkYsSUFBSSxlQUFlLEVBQUUsQ0FBQztnQkFDbEIsS0FBSyxHQUFHLGVBQWUsQ0FBQztZQUM1QixDQUFDO1lBQ0QsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7WUFDbkIsdUNBQXVDO1lBQ3ZDLEVBQUUsQ0FBQyxNQUFNLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDO2lCQUNwQyxLQUFLLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQztpQkFDMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN0QixJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzVCLE9BQU8sS0FBSyxDQUFDO1FBQ2pCLENBQUM7SUFDTCxDQUFDO0lBRUQsMERBQTBEO0lBQzFELFNBQVM7UUFDTCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQzlCLGlDQUFpQztRQUNqQyxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFdBQVcsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUUzRSxzSEFBc0g7UUFDdEgsSUFBSSxJQUFJLENBQUMsaUJBQWlCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDbEQsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQ3pDLENBQUM7YUFBTSxDQUFDO1lBQ0osSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUNsRCxDQUFDO1FBQ0QsMERBQTBEO1FBQzFELElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUM3QyxPQUFPO1FBQ1gsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ25CLDZCQUE2QjtZQUM3QixPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUMvQyxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztRQUM3QixDQUFDO1FBRUQseURBQXlEO1FBQ3pELElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQztZQUN0QixJQUFJLENBQUMsY0FBYyxHQUFHLEVBQUUsQ0FBQztRQUM3QixDQUFDO1FBQ0QsRUFBRSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLEVBQUcsR0FBRyxFQUFFO1lBQzNDOzt1Q0FFMkI7WUFDM0IsVUFBVSxDQUFFLEdBQUcsRUFBRTtnQkFDYixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUM1QixDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDWixDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7SUFDbEMsQ0FBQztJQUNELGtFQUFrRTtJQUNsRSxJQUFJLGNBQWM7UUFDZCxxRUFBcUU7UUFDckUsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztRQUNwQyxPQUFPLFdBQVcsSUFBSSxXQUFXLENBQUMsUUFBUSxLQUFLLGlCQUFpQixDQUFDO0lBQ3JFLENBQUM7SUFFRCxjQUFjO1FBQ1YsSUFBSSxDQUFDLG9CQUFvQixHQUFHLEtBQUssQ0FBQztRQUNsQyxJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztRQUMzQixzQ0FBc0M7UUFDdEMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztRQUM3QixNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUNsRCw0SEFBNEg7UUFDNUgsK0NBQStDO1FBQy9DLElBQUksSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsY0FBYyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDbEcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQ25ELENBQUM7YUFBTSxDQUFDLENBQUMsK0JBQStCO1lBQ3BDLHFIQUFxSDtZQUNySCxJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUN0QyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7Z0JBQzlCLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFLElBQUksZUFBZSxDQUFDLGlCQUFpQixFQUFFLENBQUM7b0JBQy9ELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsZUFBZSxDQUFDLG9CQUFvQixDQUFDLENBQUM7Z0JBQ3ZHLENBQUM7WUFFTCxDQUFDO1lBQ0QsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3JCLENBQUM7SUFDTCxDQUFDO0lBRUQsd0NBQXdDO0lBQ3hDLHFCQUFxQjtRQUNqQixNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUNoRCwyRUFBMkU7UUFDM0Usb0dBQW9HO1FBQ3BHLElBQUksQ0FBQyxZQUFZLEdBQUcsY0FBYyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQztRQUM5QyxJQUFJLENBQUMsWUFBWSxHQUFHLGNBQWMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUM7SUFDbEQsQ0FBQztJQUVELG1CQUFtQixDQUFDLElBQUksRUFBRSxNQUFNO1FBQzVCLE1BQU0sY0FBYyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxFQUMzQyxVQUFVLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNwRCxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3BCLE9BQU8sTUFBTSxDQUFDO1FBQ2xCLENBQUM7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDO1FBQzlCLENBQUM7UUFDRCxJQUFJLFVBQVUsQ0FBQztRQUNmLFFBQVEsSUFBSSxFQUFFLENBQUM7WUFDWCxLQUFLLGNBQWM7Z0JBQ2YscUZBQXFGO2dCQUNyRixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLENBQUM7b0JBQzFCLFVBQVUsR0FBRyxjQUFjLENBQUM7Z0JBQ2hDLENBQUM7Z0JBQ0QsTUFBTTtZQUNWLEtBQUssY0FBYztnQkFDZiwrRkFBK0Y7Z0JBQy9GLElBQUksSUFBSSxDQUFDLG9CQUFvQixFQUFFLEVBQUUsQ0FBQztvQkFDOUIsVUFBVSxHQUFHLFVBQVUsQ0FBQztnQkFDNUIsQ0FBQztxQkFBTSxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztvQkFDN0IsMkRBQTJEO29CQUMzRCxVQUFVLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztnQkFDckMsQ0FBQztnQkFDRCxNQUFNO1lBQ1YsS0FBSyxTQUFTO2dCQUNWLHlDQUF5QztnQkFDekMsSUFBSSxJQUFJLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQyxpQkFBaUIsSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxFQUFFLENBQUM7b0JBQ2pGLFVBQVUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUM7Z0JBQ3hDLENBQUM7Z0JBQ0QsTUFBTTtZQUNWLEtBQUssbUJBQW1CO2dCQUNwQiwrSEFBK0g7Z0JBQy9ILElBQUksSUFBSSxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsb0JBQW9CLEVBQUUsSUFBSSxJQUFJLENBQUMsV0FBVyxLQUFLLE9BQU8sRUFBRSxDQUFDO29CQUNyRixVQUFVLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztnQkFDckMsQ0FBQztnQkFDRCxNQUFNO1lBQ1YsS0FBSyxTQUFTO2dCQUNWLCtIQUErSDtnQkFDL0gsSUFBSSxJQUFJLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxFQUFFLENBQUM7b0JBQ3JELFVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDO2dCQUMxRCxDQUFDO2dCQUNELE1BQU07WUFDVixLQUFLLFlBQVk7Z0JBQ2IsSUFBSSxJQUFJLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLENBQUM7b0JBQ3BELFVBQVUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO2dCQUNyQyxDQUFDO2dCQUNELE1BQU07UUFDZCxDQUFDO1FBRUQsT0FBTyxVQUFVLElBQUksTUFBTSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDcEQsQ0FBQztJQUVELGtIQUFrSDtJQUNsSCw4QkFBOEI7UUFDMUIsSUFBSSxPQUFPLEVBQ1AsSUFBSSxDQUFDO1FBQ1QsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3ZGLElBQUksQ0FBQyxjQUFjLEdBQUcsRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxFQUFFLENBQUM7UUFDNUIsMkJBQTJCO1FBQzNCLElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDO1lBQzFDLE9BQU8sR0FBRyxFQUFFLENBQUMsQ0FBQyxrREFBa0Q7UUFDcEUsQ0FBQztRQUVELElBQUksT0FBTyxFQUFFLENBQUM7WUFDVix5RkFBeUY7WUFDekYsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDbEMsSUFBSSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7Z0JBQ3pCLElBQUksWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7b0JBQ3JCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNsQyxDQUFDO2dCQUNELGtDQUFrQztnQkFDbEMsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsV0FBVyxLQUFLLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztvQkFDcEUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDckMsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2pELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDM0QsQ0FBQztJQUNMLENBQUM7SUFFRCxpQkFBaUI7SUFDakIsYUFBYSxDQUFDLE1BQU07UUFDaEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDakIsMkRBQTJEO1FBQzNELElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDL0IsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQztZQUMvQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUM1QixDQUFDO1FBRUQsaUVBQWlFO1FBQ2pFLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLFNBQVMsS0FBSyxFQUFFLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFFckksK0RBQStEO1FBQy9ELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUN2RCxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3RDLENBQUM7UUFFRCxJQUFJLE1BQU0sSUFBSSxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDaEMsSUFBSSxDQUFDLFlBQVksR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDO1FBQzVDLENBQUM7UUFFRCwyRUFBMkU7UUFDM0UsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQzNCLENBQUM7SUFDTCxDQUFDO0lBSUQsNkNBQTZDO0lBQzdDLG1CQUFtQixDQUFDLFVBQVU7UUFDMUIsSUFBSSxRQUFRLEVBQUUsU0FBUyxDQUFDO1FBQ3hCLFFBQVEsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxDQUFDO1FBRXJELFNBQVMsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2pFLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDbkIsU0FBUyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7YUFDbkIsSUFBSSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUM7YUFDbkIsSUFBSSxDQUFDLGFBQWEsRUFBRSxRQUFRLENBQUM7YUFDN0IsSUFBSSxDQUFDLE9BQU8sRUFBRSxjQUFjLENBQUM7YUFDN0IsSUFBSSxDQUFDLFVBQVUsQ0FBQzthQUNoQixJQUFJLENBQUMsVUFBVSxDQUFDO1lBQ2IsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFDNUIsSUFBSSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUNwQyxVQUFVLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLEtBQUssQ0FBQztZQUM5RCx3Q0FBd0M7WUFDeEMsVUFBVSxHQUFHLFVBQVUsR0FBRyxFQUFFLEVBQzVCLFNBQVMsR0FBRyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztZQUN6QyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxVQUFVLEdBQUcsU0FBUyxDQUFDLENBQUM7UUFDcEQsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRTtZQUNwQixvSEFBb0g7WUFDcEgsSUFBSSxRQUFRLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ3ZELE9BQU8sUUFBUSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBQzlDLENBQUMsQ0FBQyxDQUFDO0lBQ2IsQ0FBQztJQUVELGdCQUFnQixDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTztRQUNqQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUM1QyxRQUFRLEdBQUcsRUFBRSxDQUFDO1lBQ1YsS0FBSyxTQUFTO2dCQUNWLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQzNCLE1BQU07WUFDVixLQUFLLGFBQWE7Z0JBQ2QsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7b0JBQ2IsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQ3pCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDckMsQ0FBQztnQkFDRCxNQUFNO1lBQ1YsS0FBSyxNQUFNO2dCQUNQLDJEQUEyRDtnQkFDM0QsSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7b0JBQ3ZCLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO29CQUNwQixJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQztvQkFDckIsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUM7b0JBQ3RCLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDO2dCQUN4QixDQUFDO3FCQUFNLElBQUksTUFBTSxLQUFLLEtBQUssSUFBSSxNQUFNLEtBQUssT0FBTyxFQUFFLENBQUM7b0JBQ2hELElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO29CQUNwQixJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztvQkFDdEIsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7b0JBQ3ZCLElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO2dCQUN6QixDQUFDO2dCQUVELElBQUksTUFBTSxLQUFLLE1BQU0sRUFBRSxDQUFDO29CQUNwQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztnQkFDNUIsQ0FBQztnQkFDRCwrREFBK0Q7Z0JBQy9ELElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztnQkFDdkIsTUFBTTtZQUNWO2dCQUNJLDhFQUE4RTtnQkFDOUUsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO2dCQUN2QixNQUFNO1FBQ2QsQ0FBQztRQUNELElBQUksUUFBUSxDQUFDLGdCQUFnQixFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDbEMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQzNCLENBQUM7SUFDTCxDQUFDO0lBRUQsYUFBYSxDQUFDLElBQUk7UUFDZCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1FBQ25DLElBQUksVUFBVSxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsSUFBSSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDdEgsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7WUFDcEMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDeEMsQ0FBQztJQUNMLENBQUM7SUFFRCxXQUFXO1FBQ1AsRUFBRSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRCxhQUFhLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNO1FBQzdCLE1BQU0sUUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNwQixLQUFLLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDekMsUUFBUSxHQUFHLEVBQUUsQ0FBQztZQUNWLEtBQUssVUFBVSxDQUFDO1lBQ2hCLEtBQUssVUFBVSxDQUFDO1lBQ2hCLEtBQUssT0FBTyxDQUFDO1lBQ2IsS0FBSyxZQUFZLENBQUM7WUFDbEIsS0FBSyxZQUFZLENBQUM7WUFDbEIsS0FBSyxXQUFXLENBQUM7WUFDakIsS0FBSyxnQkFBZ0I7Z0JBQ2pCLFFBQVEsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxVQUFVLElBQUksR0FBRyxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztnQkFDaEgsWUFBWSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ2pDLE1BQU07UUFDZCxDQUFDO0lBQ0wsQ0FBQztJQUVELFlBQVksR0FBYSxFQUFVLEdBQVEsRUFBMEMsZUFBb0I7UUFDckcsS0FBSyxDQUFDLEdBQUcsRUFBRSxhQUFhLEVBQUUsZUFBZSxDQUFDLENBQUM7UUFEWixRQUFHLEdBQUgsR0FBRyxDQUFLO1FBLzhCM0MsY0FBUyxHQUFHLEVBQUUsQ0FBQztRQTZCUCxzQkFBaUIsR0FBUSxFQUFFLENBQUM7UUFHNUIsZ0JBQVcsR0FBUSxFQUFFLENBQUM7UUFLdEIsY0FBUyxHQUFVLEVBQUUsQ0FBQztRQUN0QixtQkFBYyxHQUFVLEVBQUUsQ0FBQztRQUMzQixrQkFBYSxHQUFRLEVBQUUsQ0FBQztRQW8wQmhDLG9CQUFlLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBd0toRSxXQUFNLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFsRXJDLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLElBQUksRUFBRSxpQkFBaUIsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxVQUFVLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7UUFFNUosdUNBQXVDO1FBQ3ZDLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDMUMsNEZBQTRGO1FBQzVGLFVBQVUsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDbkUsdURBQXVEO1FBQ3ZELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLHVCQUF1QixFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwRyxnRUFBZ0U7UUFDaEUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsZUFBZSxFQUFFLEdBQUcsRUFBRSxHQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFBLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUYsQ0FBQztJQUVELGVBQWU7UUFDWCxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsbUJBQW1CO1FBQ25CLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQzVELElBQUksQ0FBQyxVQUFVLEdBQVUsZUFBZSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUMxRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsZUFBZSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1lBQ2pFLElBQUksQ0FBQyxVQUFVLEdBQVUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztRQUN4RyxDQUFDO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNkLHVFQUF1RTtZQUN2RSxJQUFJLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDO1FBQ2hFLENBQUM7UUFFRCxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM1RCx3RUFBd0U7UUFDeEUsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDO1lBQ3hFLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUMzQixDQUFDO0lBQ0wsQ0FBQztJQUVELFdBQVc7UUFDUCxvREFBb0Q7UUFDcEQsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRW5CLHNEQUFzRDtRQUN0RCxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFlBQVksRUFBQyxFQUFFO2dCQUN2QyxZQUFZLEVBQUUsQ0FBQztZQUNuQixDQUFDLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDO1FBQzVCLENBQUM7UUFFRCx3Q0FBd0M7UUFDeEMsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDYixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUN0QixDQUFDO1FBRUQsbURBQW1EO1FBQ25ELElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBQzFCLENBQUM7UUFFRCwwQ0FBMEM7UUFDMUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLGNBQWMsR0FBRyxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEVBQUUsQ0FBQztRQUU1QixLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDeEIsQ0FBQzsrR0E1aENRLGNBQWMsNkRBeTlCOEIsa0JBQWtCO21HQXo5QjlELGNBQWMsa0hBTFo7WUFDUCxrQkFBa0IsQ0FBQyxjQUFjLENBQUM7U0FDckMsaURDeklMLHEwQkFvQkEsd29RRCtHYyxZQUFZLDZIQUFFLGdCQUFnQjs7NEZBUy9CLGNBQWM7a0JBWDFCLFNBQVM7aUNBQ00sSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGdCQUFnQixDQUFDLFlBQy9CLGNBQWMsYUFHYjt3QkFDUCxrQkFBa0IsZ0JBQWdCO3FCQUNyQyxpQkFDYyxpQkFBaUIsQ0FBQyxJQUFJOzswQkEyOUJTLE1BQU07MkJBQUMsa0JBQWtCOzswQkFBRyxRQUFRO3lDQXQ2QnRELEtBQUs7c0JBQWhDLFdBQVc7dUJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBTcGlubmVyQ29tcG9uZW50IH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvYmFzaWMvc3Bpbm5lcic7XG5pbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgT25EZXN0cm95LFxuICAgIENvbXBvbmVudCxcbiAgICBIb3N0QmluZGluZyxcbiAgICBJbmplY3RvcixcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgICBPcHRpb25hbCxcbiAgICBJbmplY3Rcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7XG4gICAgQXBwLFxuICAgIERhdGFTb3VyY2UsXG4gICAgZ2V0Q2xvbmVkT2JqZWN0LFxuICAgIGlzRGF0YVNvdXJjZUVxdWFsLFxuICAgIGlzRW1wdHlPYmplY3QsXG4gICAgaXNOdW1iZXJUeXBlLFxuICAgIHByZXR0aWZ5TGFiZWxzLFxuICAgIHJlbW92ZUF0dHIsXG4gICAgdHJpZ2dlckZuLFxufSBmcm9tICdAd20vY29yZSc7XG5pbXBvcnQgeyBBUFBMWV9TVFlMRVNfVFlQRSwgSVJlZHJhd2FibGVDb21wb25lbnQsIHByb3ZpZGVBc1dpZGdldFJlZiwgU3R5bGFibGVDb21wb25lbnQsIHN0eWxlciwgIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvYmFzZSc7XG5cbmltcG9ydCB7IHJlZ2lzdGVyUHJvcHMgfSBmcm9tICcuL2NoYXJ0LnByb3BzJztcbmltcG9ydCB7IGFsbFNoYXBlcywgZ2V0RGF0ZUxpc3QsIGdldFNhbXBsZURhdGEsIGluaXRDaGFydCwgaXNBcmVhQ2hhcnQsIGlzQXhpc0RvbWFpblZhbGlkLCBpc0JhckNoYXJ0LCBpc0J1YmJsZUNoYXJ0LCBpc0NoYXJ0RGF0YUFycmF5LCBpc0NoYXJ0RGF0YUpTT04sIGlzTGluZVR5cGVDaGFydCwgaXNQaWVUeXBlLCBwb3N0UGxvdENoYXJ0UHJvY2VzcyB9IGZyb20gJy4vY2hhcnQudXRpbHMnO1xuaW1wb3J0IHtcbiAgICBjb25jYXQsIGRlYm91bmNlLCBmaWxsLFxuICAgIGZpcnN0LFxuICAgIGZvckVhY2gsIGZvckVhY2hSaWdodCxcbiAgICBnZXQsIGdyb3VwQnksIGluY2x1ZGVzLFxuICAgIGludGVyc2VjdGlvbixcbiAgICBpc0FycmF5LCBpc0VtcHR5LCBpc09iamVjdCwga2V5cyxcbiAgICBtYXAsIG1heCxcbiAgICBtYXhCeSxcbiAgICBtaW5CeSxcbiAgICBvcmRlckJ5LFxuICAgIHJlcGxhY2UsXG4gICAgc3BsaXQsXG4gICAgdW5pcVxufSBmcm9tIFwibG9kYXNoLWVzXCI7XG5cbmRlY2xhcmUgY29uc3QgJDtcblxuZGVjbGFyZSBjb25zdCBkMywgbnY7XG5cbmNvbnN0IFdJREdFVF9DT05GSUcgPSB7d2lkZ2V0VHlwZTogJ3dtLWNoYXJ0JywgaG9zdENsYXNzOiAnYXBwLWNoYXJ0J307XG5cbmNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICAgICdCdWJibGUnIDogWydidWJibGVzaXplJywgJ3NoYXBlJ11cbiAgICB9LFxuICAgIE5PTkUgPSAnbm9uZScsXG4gICAgYWR2YW5jZURhdGFQcm9wcyA9IFsnYWdncmVnYXRpb24nLCAnYWdncmVnYXRpb25jb2x1bW4nLCAnZ3JvdXBieScsICdvcmRlcmJ5J10sXG4gICAgLy8gWFBhdGhzIHRvIGdldCBhY3R1YWwgZGF0YSBvZiBkYXRhIHBvaW50cyBpbiBjaGFydHNcbiAgICBjaGFydERhdGFQb2ludFhwYXRoID0ge1xuICAgICAgICAnQ29sdW1uJyAgICAgICAgIDogJ3JlY3QubnYtYmFyJyxcbiAgICAgICAgJ0JhcicgICAgICAgICAgICA6ICdnLm52LWJhcicsXG4gICAgICAgICdBcmVhJyAgICAgICAgICAgOiAnLm52LXN0YWNrZWRhcmVhIC5udi1wb2ludCcsXG4gICAgICAgICdDdW11bGF0aXZlIExpbmUnOiAnLm52LWN1bXVsYXRpdmVMaW5lIC5udi1zY2F0dGVyV3JhcCBwYXRoLm52LXBvaW50JyxcbiAgICAgICAgJ0xpbmUnICAgICAgICAgICA6ICcubnYtbGluZUNoYXJ0IC5udi1zY2F0dGVyV3JhcCBwYXRoLm52LXBvaW50JyxcbiAgICAgICAgJ1BpZScgICAgICAgICAgICA6ICcubnYtcGllQ2hhcnQgLm52LXNsaWNlIHBhdGgnLFxuICAgICAgICAnRG9udXQnICAgICAgICAgIDogJy5udi1waWVDaGFydCAubnYtc2xpY2UgcGF0aCcsXG4gICAgICAgICdCdWJibGUnICAgICAgICAgOiAnLm52LXNjYXR0ZXJDaGFydCAubnYtcG9pbnQtcGF0aHMgcGF0aCdcbiAgICB9LFxuICAgIC8vIGFsbCBwcm9wZXJ0aWVzIG9mIHRoZSBjaGFydFxuICAgIGFsbE9wdGlvbnMgPSBbJ2J1YmJsZXNpemUnLCAnc2hhcGUnXSxcbiAgICBzdHlsZVByb3BzID0ge1xuICAgICAgICAnZm9udHVuaXQnICAgICAgOiAnZm9udC1zaXplJyxcbiAgICAgICAgJ2ZvbnRzaXplJyAgICAgIDogJ2ZvbnQtc2l6ZScsXG4gICAgICAgICdjb2xvcicgICAgICAgICA6ICdmaWxsJyxcbiAgICAgICAgJ2ZvbnRmYW1pbHknICAgIDogJ2ZvbnQtZmFtaWx5JyxcbiAgICAgICAgJ2ZvbnR3ZWlnaHQnICAgIDogJ2ZvbnQtd2VpZ2h0JyxcbiAgICAgICAgJ2ZvbnRzdHlsZScgICAgIDogJ2ZvbnQtc3R5bGUnLFxuICAgICAgICAndGV4dGRlY29yYXRpb24nOiAndGV4dC1kZWNvcmF0aW9uJ1xuICAgIH0sXG4gICAgLy8gR2V0dGluZyB0aGUgcmVsZXZhbnQgYWdncmVnYXRpb24gZnVuY3Rpb24gYmFzZWQgb24gdGhlIHNlbGVjdGVkIG9wdGlvblxuICAgIGFnZ3JlZ2F0aW9uRm5NYXAgPSB7XG4gICAgICAgICdhdmVyYWdlJyA6ICdBVkcnLFxuICAgICAgICAnY291bnQnICAgOiAnQ09VTlQnLFxuICAgICAgICAnbWF4aW11bScgOiAnTUFYJyxcbiAgICAgICAgJ21pbmltdW0nIDogJ01JTicsXG4gICAgICAgICdzdW0nICAgICA6ICdTVU0nXG4gICAgfTtcblxuY29uc3QgZ2V0Qm9vbGVhblZhbHVlID0gdmFsID0+IHtcbiAgICBpZiAodmFsID09PSB0cnVlIHx8IHZhbCA9PT0gJ3RydWUnKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAodmFsID09PSBmYWxzZSB8fCB2YWwgPT09ICdmYWxzZScpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdmFsO1xufTtcblxuLy8gcmV0dXJucyBvcmRlcmJ5IGNvbHVtbnMgYW5kIHRoZWlyIG9yZGVycyBpbiB0d28gc2VwYXJhdGUgYXJyYXlzXG5jb25zdCBnZXRMb2Rhc2hPcmRlckJ5Rm9ybWF0ID0gb3JkZXJieSA9PiB7XG4gICAgbGV0IGNvbHVtbnM7XG4gICAgY29uc3Qgb3JkZXJCeUNvbHVtbnMgPSBbXSxcbiAgICAgICAgb3JkZXJzID0gW107XG5cbiAgICBmb3JFYWNoKHNwbGl0KG9yZGVyYnksICcsJyksIGZ1bmN0aW9uIChjb2wpIHtcbiAgICAgICAgY29sdW1ucyA9IHNwbGl0KGNvbCwgJzonKTtcbiAgICAgICAgb3JkZXJCeUNvbHVtbnMucHVzaChjb2x1bW5zWzBdKTtcbiAgICAgICAgb3JkZXJzLnB1c2goY29sdW1uc1sxXSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgJ2NvbHVtbnMnIDogb3JkZXJCeUNvbHVtbnMsXG4gICAgICAgICdvcmRlcnMnICA6IG9yZGVyc1xuICAgIH07XG59O1xuXG4vLyBSZXBsYWNpbmcgdGhlICcuJyBieSB0aGUgJyQnIGJlY2F1c2UgJy4nIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhlIGFsaWFzIG5hbWVzXG5jb25zdCBnZXRWYWxpZEFsaWFzTmFtZSA9IGFsaWFzTmFtZSA9PiBhbGlhc05hbWUgPyBhbGlhc05hbWUucmVwbGFjZSgvXFwuL2csICckJykgOiBudWxsO1xuXG4vLyBBcHBseWluZyB0aGUgZm9udCByZWxhdGVkIHN0eWxlcyBmb3IgdGhlIGNoYXJ0XG5jb25zdCBzZXRUZXh0U3R5bGUgPSAocHJvcGVydGllcywgaWQpID0+IHtcbiAgICBjb25zdCBjaGFydHRleHQgPSBkMy5zZWxlY3QoJyN3bUNoYXJ0JyArIGlkICsgJyBzdmcnKS5zZWxlY3RBbGwoJ3RleHQnKTtcbiAgICBpZiAoIWNoYXJ0dGV4dC5lbXB0eSgpKSB7XG4gICAgICAgIGNoYXJ0dGV4dC5zdHlsZShwcm9wZXJ0aWVzKTtcbiAgICB9XG59O1xuXG5jb25zdCBhbmdsZSA9IGQgPT4ge1xuICAgIGNvbnN0IGEgPSAoZC5zdGFydEFuZ2xlICsgZC5lbmRBbmdsZSkgKiA5MCAvIE1hdGguUEkgLSA5MDtcbiAgICByZXR1cm4gYSA+IDkwID8gYSAtIDE4MCA6IGE7XG59O1xuXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFNwaW5uZXJDb21wb25lbnRdLFxuICAgIHNlbGVjdG9yOiAnZGl2W3dtQ2hhcnRdJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY2hhcnQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQHdhdmVtYWtlci9udmQzL2J1aWxkL252LmQzLm1pbi5jc3MnXSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgcHJvdmlkZUFzV2lkZ2V0UmVmKENoYXJ0Q29tcG9uZW50KVxuICAgIF0sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBDaGFydENvbXBvbmVudCBleHRlbmRzIFN0eWxhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95LCBJUmVkcmF3YWJsZUNvbXBvbmVudCB7XG4gICAgc3RhdGljIGluaXRpYWxpemVQcm9wcyA9IHJlZ2lzdGVyUHJvcHMoKTtcblxuICAgIHhheGlzZGF0YWtleTtcbiAgICB5YXhpc2RhdGFrZXk7XG4gICAgZ3JvdXBieTtcbiAgICBhZ2dyZWdhdGlvbjtcbiAgICBhZ2dyZWdhdGlvbmNvbHVtbjtcbiAgICBpc1Zpc3VhbGx5R3JvdXBlZDtcbiAgICBvcmRlcmJ5O1xuICAgIGljb25jbGFzcyA9ICcnO1xuICAgIHR5cGU6IHN0cmluZztcbiAgICBzaG93Q29udGVudExvYWRFcnJvcjtcbiAgICBpbnZhbGlkQ29uZmlnO1xuICAgIGVyck1zZztcbiAgICBzaGFwZTogc3RyaW5nO1xuICAgIGRhdGFzb3VyY2U6IGFueTtcbiAgICBmb250c2l6ZTogc3RyaW5nO1xuICAgIHNlbGVjdGVkaXRlbTogYW55O1xuICAgIGZvbnR1bml0OiBzdHJpbmc7XG4gICAgb2Zmc2V0dG9wOiBudW1iZXI7XG4gICAgb2Zmc2V0bGVmdDogbnVtYmVyO1xuICAgIG9mZnNldHJpZ2h0OiBudW1iZXI7XG4gICAgb2Zmc2V0Ym90dG9tOiBudW1iZXI7XG4gICAgc2hvd2xhYmVsczogYW55O1xuICAgIHRoZW1lOiBzdHJpbmc7XG5cbiAgICBwcml2YXRlICRpZDtcbiAgICBwcml2YXRlIHNjb3BlZGF0YXNldDogYW55O1xuICAgIHByaXZhdGUgYmluZGRhdGFzZXQ6IGFueTtcbiAgICBwcml2YXRlIHNob3dsYWJlbHNvdXRzaWRlOiBhbnk7XG4gICAgcHJpdmF0ZSBfcmVzaXplRm46IGFueTtcbiAgICBwcml2YXRlIGNoYXJ0OiBhbnk7XG4gICAgcHJpdmF0ZSBjbGVhckNhbnZhczogYm9vbGVhbjtcbiAgICBwdWJsaWMgaXNMb2FkSW5Qcm9ncmVzczogYm9vbGVhbjtcbiAgICBwcml2YXRlIGZpbHRlckZpZWxkczogYm9vbGVhbiB8IGFueTtcbiAgICBwcml2YXRlIGRhdGFzZXQ6IGFueTtcbiAgICBwcml2YXRlIGF4aXNvcHRpb25zOiBhbnk7XG4gICAgcHJpdmF0ZSBudW1lcmljQ29sdW1uczogYW55O1xuICAgIHByaXZhdGUgbm9uUHJpbWFyeUNvbHVtbnM6IGFueSA9IFtdO1xuICAgIHByaXZhdGUgdmFyaWFibGVJbmZsaWdodDogYW55O1xuICAgIHByaXZhdGUgY2hhcnRSZWFkeTogYm9vbGVhbjtcbiAgICBwcml2YXRlIHhEYXRhS2V5QXJyOiBhbnkgPSBbXTtcbiAgICBwcml2YXRlIHhBeGlzRGF0YVR5cGU6IHN0cmluZztcbiAgICBwcml2YXRlIGJ1YmJsZXNpemU6IGFueTtcbiAgICBwdWJsaWMgc2hvd05vRGF0YU1zZzogYW55O1xuICAgIHByaXZhdGUgc2FtcGxlRGF0YTogYW55W107XG4gICAgcHJpdmF0ZSBjaGFydERhdGE6IGFueVtdID0gW107XG4gICAgcHJpdmF0ZSBfcHJvY2Vzc2VkRGF0YTogYW55W10gPSBbXTtcbiAgICBwcml2YXRlIF9zdWJzY2lwdGlvbnM6IGFueSA9IFtdO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5wYW5lbCcpIHRpdGxlO1xuXG4gICAgaXNHcm91cEJ5RW5hYmxlZCgpIHtcbiAgICAgICAgcmV0dXJuICEhKHRoaXMuZ3JvdXBieSAmJiB0aGlzLmdyb3VwYnkgIT09IE5PTkUpO1xuICAgIH1cblxuICAgIC8vIENoZWNrIGlmIHggYW5kIHkgYXhpcyB0aGF0IGFyZSBjaG9zZW4gYXJlIHZhbGlkIHRvIHBsb3QgY2hhcnRcbiAgICBpc1ZhbGlkQXhpcygpIHtcbiAgICAgICAgLy8gQ2hlY2sgaWYgeCBheGlzIGFuZCB5IGF4aXMgYXJlIGNob3NlbiBhbmQgYXJlIG5vdCBlcXVhbFxuICAgICAgICByZXR1cm4gdGhpcy5iaW5kZGF0YXNldCA/ICh0aGlzLnhheGlzZGF0YWtleSAmJiB0aGlzLnlheGlzZGF0YWtleSkgOiB0cnVlO1xuICAgIH1cblxuICAgIC8vIENoZWNrIGlmIGFnZ3JlZ2F0aW9uIGlzIGNob3NlblxuICAgIGlzQWdncmVnYXRpb25FbmFibGVkKCkge1xuICAgICAgICByZXR1cm4gISEoKHRoaXMuaXNHcm91cEJ5RW5hYmxlZCgpICYmIHRoaXMuYWdncmVnYXRpb24gIT09IE5PTkUgJiYgdGhpcy5hZ2dyZWdhdGlvbmNvbHVtbikpO1xuICAgIH1cblxuICAgIC8vIENoZWNrIGlmIGVpdGhlciBncm91cGJ5LCBhZ2dyZWdhdGlvbiBvciBvcmRlcmJ5IGlzIGNob3NlblxuICAgIGlzRGF0YUZpbHRlcmluZ0VuYWJsZWQoKSB7XG4gICAgICAgIC8qUXVlcnkgbmVlZCB0byBiZSB0cmlnZ2VyZWQgaWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgY2FzZXMgc2F0aXNmeVxuICAgICAgICAqIDEuIEdyb3VwIEJ5IGFuZCBhZ2dyZWdhdGlvbiBib3RoIGNob3NlblxuICAgICAgICAqIDIuIE9ubHkgT3JkZXIgQnkgaXMgY2hvc2VuXG4gICAgICAgICogKi9cblxuICAgICAgICByZXR1cm4gdGhpcy5pc0FnZ3JlZ2F0aW9uRW5hYmxlZCgpIHx8ICghdGhpcy5pc1Zpc3VhbGx5R3JvdXBlZCAmJiB0aGlzLm9yZGVyYnkpO1xuICAgIH1cblxuICAgIC8qQ2hhcnRzIGxpa2UgTGluZSxBcmVhLEN1bXVsYXRpdmUgTGluZSBkb2VzIG5vdCBzdXBwb3J0IGFueSBvdGhlciBkYXRhdHlwZVxuICAgICAgICBvdGhlciB0aGFuIGludGVnZXIgdW5saWtlIHRoZSBjb2x1bW4gYW5kIGJhci5JdCBpcyBhIG52ZDMgaXNzdWUuIElub3JkZXIgdG9cbiAgICAgICAgc3VwcG9ydCB0aGF0IHRoaXMgaXMgYSBmaXgqL1xuICAgIGdldHhBeGlzVmFsKGRhdGFPYmosIHhLZXksIGluZGV4KSB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gZ2V0KGRhdGFPYmosIHhLZXkpO1xuICAgICAgICAvLyBJZiB4IGF4aXMgaXMgb3RoZXIgdGhhbiBudW1iZXIgdHlwZSB0aGVuIGFkZCBpbmRleGVzXG4gICAgICAgIGlmIChpc0xpbmVUeXBlQ2hhcnQodGhpcy50eXBlKSAmJiAhaXNOdW1iZXJUeXBlKHRoaXMueEF4aXNEYXRhVHlwZSkpIHtcbiAgICAgICAgICAgIC8vIFZlcmlmaWNhdGlvbiB0byBnZXQgdGhlIHVuaXF1ZSBkYXRhIGtleXNcbiAgICAgICAgICAgIHRoaXMueERhdGFLZXlBcnIucHVzaCh2YWx1ZSk7XG4gICAgICAgICAgICAvLyBDaGVjayBpZiBpdCBpcyBvZiB0eXBlIERhdGVcbiAgICAgICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBpbmRleDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgLy8gR2V0dGluZyB0aGUgbWluIGFuZCBtYXggdmFsdWVzIGFtb25nIGFsbCB0aGUgeCB2YWx1ZXNcbiAgICBnZXRYTWluTWF4VmFsdWVzKGRhdHVtKSB7XG4gICAgICAgIGlmICghZGF0dW0pIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB4VmFsdWVzOiBhbnkgPSB7fTtcbiAgICAgICAgLypcbiAgICAgICAgIGNvbXB1dGUgdGhlIG1pbiB4IHZhbHVlXG4gICAgICAgICBlZzogV2hlbiBkYXRhIGhhcyBvYmplY3RzXG4gICAgICAgICAgICBpbnB1dDogW3t4OjEsIHk6Mn0sIHt4OjIsIHk6M30sIHt4OjMsIHk6NH1dXG4gICAgICAgICAgICBtaW4geDogMVxuICAgICAgICAgZWc6IFdoZW4gZGF0YSBoYXMgYXJyYXlzXG4gICAgICAgICAgICBpbnB1dDogW1sxMCwgMjBdLCBbMjAsIDMwXSwgWzMwLCA0MF1dO1xuICAgICAgICAgICAgbWluIHg6IDEwXG4gICAgICAgICovXG4gICAgICAgIHhWYWx1ZXMubWluID0gbWluQnkoZGF0dW0udmFsdWVzLCBkYXRhT2JqZWN0ID0+IGRhdGFPYmplY3QueCB8fCBkYXRhT2JqZWN0WzBdKTtcbiAgICAgICAgLypcbiAgICAgICAgIGNvbXB1dGUgdGhlIG1heCB4IHZhbHVlXG4gICAgICAgICBlZzogV2hlbiBkYXRhIGhhcyBvYmplY3RzXG4gICAgICAgICAgICBpbnB1dDogW3t4OjEsIHk6Mn0sIHt4OjIsIHk6M30sIHt4OjMsIHk6NH1dXG4gICAgICAgICAgICBtYXggeDogM1xuICAgICAgICAgZWc6IFdoZW4gZGF0YSBoYXMgYXJyYXlzXG4gICAgICAgICAgICBpbnB1dDogW1sxMCwgMjBdLCBbMjAsIDMwXSwgWzMwLCA0MF1dO1xuICAgICAgICAgICAgbWF4IHg6IDMwXG4gICAgICAgICAqL1xuICAgICAgICB4VmFsdWVzLm1heCA9IG1heEJ5KGRhdHVtLnZhbHVlcywgZGF0YU9iamVjdCA9PiBkYXRhT2JqZWN0LnggfHwgZGF0YU9iamVjdFswXSk7XG4gICAgICAgIHJldHVybiB4VmFsdWVzO1xuICAgIH1cblxuICAgIC8vIEdldHRpbmcgdGhlIG1pbiBhbmQgbWF4IHZhbHVlcyBhbW9uZyBhbGwgdGhlIHkgdmFsdWVzXG4gICAgZ2V0WU1pbk1heFZhbHVlcyhkYXR1bSkge1xuICAgICAgICBjb25zdCB5VmFsdWVzOiBhbnkgPSB7fSxcbiAgICAgICAgICAgIG1pblZhbHVlcyA9IFtdLFxuICAgICAgICAgICAgbWF4VmFsdWVzID0gW107XG4gICAgICAgIGlmICghZGF0dW0pIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8qXG4gICAgICAgICBHZXR0aW5nIHRoZSBtaW4gYW5kIG1heCB5IHZhbHVlcyBhbW9uZyBhbGwgdGhlIHNlcmllcyBvZiBkYXRhXG4gICAgICAgICBjb21wdXRlIHRoZSBtaW4geSB2YWx1ZVxuICAgICAgICAgZWc6IFdoZW4gZGF0YSBoYXMgb2JqZWN0c1xuICAgICAgICAgICAgaW5wdXQ6IFtbe3g6MSwgeToyfSwge3g6MiwgeTozfSwge3g6MywgeTo0fV0sIFt7eDoyLCB5OjN9LCB7eDozLCB5OjR9LCB7eDo0LCB5OjV9XV1cbiAgICAgICAgICAgIG1pbiB5IHZhbHVlcyA6ICcyJyhhbW9uZyBmaXJzdCBzZXQpICYgJzMnKGFtb25nIHNlY29uZCBzZXQpXG4gICAgICAgICAgICBtYXggeSB2YWx1ZXMgOiAnNCcoYW1vbmcgZmlyc3Qgc2V0KSAmICc1JyhhbW9uZyBzZWNvbmQgc2V0KVxuXG4gICAgICAgICBlZzogV2hlbiBkYXRhIGhhcyBhcnJheXNcbiAgICAgICAgICAgIGlucHV0OiBbW1sxMCwgMjBdLCBbMjAsIDMwXSwgWzMwLCA0MF1dLCBbWzIwLCAzMF0sIFszMCwgNDBdLCBbNDAsIDUwXV1dXG4gICAgICAgICAgICBtaW4geSB2YWx1ZXMgOiAnMjAnKGFtb25nIGZpcnN0IHNldCkgJiAnMzAnKGFtb25nIHNlY29uZCBzZXQpXG4gICAgICAgICAgICBtYXggeSB2YWx1ZXMgOiAnNDAnKGFtb25nIGZpcnN0IHNldCkgJiAnNTAnKGFtb25nIHNlY29uZCBzZXQpXG4gICAgICAgICAqL1xuXG4gICAgICAgIGZvckVhY2goZGF0dW0sIGRhdGEgPT4ge1xuICAgICAgICAgICAgbWluVmFsdWVzLnB1c2gobWluQnkoZGF0YS52YWx1ZXMsIGZ1bmN0aW9uIChkYXRhT2JqZWN0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRhdGFPYmplY3QueSB8fCBkYXRhT2JqZWN0WzFdO1xuICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgbWF4VmFsdWVzLnB1c2gobWF4QnkoZGF0YS52YWx1ZXMsIGZ1bmN0aW9uIChkYXRhT2JqZWN0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRhdGFPYmplY3QueSB8fCBkYXRhT2JqZWN0WzFdO1xuICAgICAgICAgICAgfSkpO1xuICAgICAgICB9KTtcbiAgICAgICAgLy8gR2V0cyB0aGUgbGVhc3QgYW5kIGhpZ2hlc3QgdmFsdWVzIGFtb25nIGFsbCB0aGUgbWluIGFuZCBtYXggdmFsdWVzIG9mIHJlc3BlY3RpdmUgc2VyaWVzIG9mIGRhdGFcbiAgICAgICAgeVZhbHVlcy5taW4gPSBtaW5CeShtaW5WYWx1ZXMsIGRhdGFPYmplY3QgPT4gZGF0YU9iamVjdC55IHx8IGRhdGFPYmplY3RbMV0pO1xuICAgICAgICB5VmFsdWVzLm1heCA9IG1heEJ5KG1heFZhbHVlcywgZGF0YU9iamVjdCA9PiBkYXRhT2JqZWN0LnkgfHwgZGF0YU9iamVjdFsxXSk7XG4gICAgICAgIHJldHVybiB5VmFsdWVzO1xuICAgIH1cblxuICAgIC8vIElmIHRoZSB4LWF4aXMgdmFsdWVzIGFyZSB1bmRlZmluZWQsIHdlIHJldHVybiBlbXB0eSBhcnJheSBlbHNlIHdlIHJldHVybiB0aGUgdmFsdWVzXG4gICAgZ2V0VmFsaWREYXRhKHZhbHVlcykge1xuICAgICAgICByZXR1cm4gKHZhbHVlcy5sZW5ndGggPT09IDEgJiYgdmFsdWVzWzBdID09PSB1bmRlZmluZWQpID8gW10gOiB2YWx1ZXM7XG4gICAgfVxuXG4gICAgLy8gUmV0dXJucyB0aGUgc2luZ2xlIGRhdGEgcG9pbnQgYmFzZWQgb24gdGhlIHR5cGUgb2YgdGhlIGRhdGEgY2hhcnQgYWNjZXB0c1xuICAgIHZhbHVlRmluZGVyKGRhdGFPYmosIHhLZXksIHlLZXksIGluZGV4Pywgc2hhcGU/KSB7XG4gICAgICAgIGNvbnN0IHhWYWwgPSB0aGlzLmdldHhBeGlzVmFsKGRhdGFPYmosIHhLZXksIGluZGV4KSxcbiAgICAgICAgICAgIHZhbHVlID0gZ2V0KGRhdGFPYmosIHlLZXkpLFxuICAgICAgICAgICAgeVZhbCA9IHBhcnNlRmxvYXQodmFsdWUpIHx8IHZhbHVlLFxuICAgICAgICAgICAgc2l6ZSA9IHBhcnNlRmxvYXQoZGF0YU9ialt0aGlzLmJ1YmJsZXNpemVdKSB8fCAyO1xuICAgICAgICBsZXQgZGF0YVBvaW50OiBhbnkgPSB7fTtcblxuICAgICAgICBpZiAoaXNDaGFydERhdGFKU09OKHRoaXMudHlwZSkpIHtcbiAgICAgICAgICAgIGRhdGFQb2ludC54ID0geFZhbDtcbiAgICAgICAgICAgIGRhdGFQb2ludC55ID0geVZhbDtcbiAgICAgICAgICAgIC8vIG9ubHkgQnViYmxlIGNoYXJ0IGhhcyB0aGUgdGhpcmQgZGltZW5zaW9uXG4gICAgICAgICAgICBpZiAoaXNCdWJibGVDaGFydCh0aGlzLnR5cGUpKSB7XG4gICAgICAgICAgICAgICAgZGF0YVBvaW50LnNpemUgPSBzaXplO1xuICAgICAgICAgICAgICAgIGRhdGFQb2ludC5zaGFwZSA9IHNoYXBlIHx8ICdjaXJjbGUnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGlzQ2hhcnREYXRhQXJyYXkodGhpcy50eXBlKSkge1xuICAgICAgICAgICAgZGF0YVBvaW50ID0gW3hWYWwsIHlWYWxdO1xuICAgICAgICB9XG4gICAgICAgIC8vIEFkZGluZyBhY3R1YWwgdW53cmFwcGVkIGRhdGEgdG8gY2hhcnQgZGF0YSB0byB1c2UgYXQgdGhlIHRpbWUgb2Ygc2VsZWN0ZWQgZGF0YSBwb2ludCBvZiBjaGFydCBldmVudFxuICAgICAgICBkYXRhUG9pbnQuX2RhdGFPYmogPSBkYXRhT2JqO1xuICAgICAgICByZXR1cm4gZGF0YVBvaW50O1xuICAgIH1cblxuICAgIC8vIFNldHRpbmcgYXBwcm9wcmlhdGUgZXJyb3IgbWVzc2FnZXNcbiAgICBzZXRFcnJNc2cobWVzc2FnZSkge1xuICAgICAgICBpZiAodGhpcy5zaG93Tm9EYXRhTXNnKSB7XG4gICAgICAgICAgICB0aGlzLnNob3dDb250ZW50TG9hZEVycm9yID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuaW52YWxpZENvbmZpZyA9IHRydWU7XG4gICAgICAgICAgICAvLyBUT0RPOiBTZXQgdGhlIGxvY2FsZSBmcm9tIHRoZSBtZXNzYWdlXG4gICAgICAgICAgICB0aGlzLmVyck1zZyA9ICcnOyAvLyAkcm9vdFNjb3BlLmxvY2FsZVttZXNzYWdlXTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb2Nlc3NDaGFydERhdGEoKSB7XG4gICAgICAgIHRoaXMuc2FtcGxlRGF0YSA9IGdldFNhbXBsZURhdGEodGhpcyk7XG4gICAgICAgIC8vIHNjb3BlIHZhcmlhYmxlcyB1c2VkIHRvIGtlZXAgdGhlIGFjdHVhbCBrZXkgdmFsdWVzIGZvciB4LWF4aXNcbiAgICAgICAgdGhpcy54RGF0YUtleUFyciA9IFtdO1xuICAgICAgICAvLyBQbG90dGluZyB0aGUgY2hhcnQgd2l0aCBzYW1wbGUgZGF0YSB3aGVuIHRoZSBjaGFydCBkYXRhc2V0IGlzIG5vdCBib3VuZFxuICAgICAgICBpZiAoIXRoaXMuYmluZGRhdGFzZXQpIHtcbiAgICAgICAgICAgIHRoaXMueERhdGFLZXlBcnIgPSBnZXREYXRlTGlzdCgpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2FtcGxlRGF0YTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5jaGFydERhdGEgfHwgIXRoaXMuY2hhcnREYXRhLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGRhdHVtID0gW10sXG4gICAgICAgICAgICB5QXhpc0tleSxcbiAgICAgICAgICAgIHNoYXBlczogYW55ID0gW10sXG4gICAgICAgICAgICB2YWx1ZXM6IGFueSA9IFtdO1xuICAgICAgICBjb25zdCB4QXhpc0tleSA9IHRoaXMueGF4aXNkYXRha2V5LFxuICAgICAgICAgICAgeUF4aXNLZXlzID0gdGhpcy55YXhpc2RhdGFrZXkgPyB0aGlzLnlheGlzZGF0YWtleS5zcGxpdCgnLCcpIDogW10sXG4gICAgICAgICAgICBkYXRhU2V0ID0gdGhpcy5jaGFydERhdGE7XG5cbiAgICAgICAgaWYgKGlzQXJyYXkoZGF0YVNldCkpIHtcbiAgICAgICAgICAgIGlmIChpc1BpZVR5cGUodGhpcy50eXBlKSkge1xuICAgICAgICAgICAgICAgIHlBeGlzS2V5ID0geUF4aXNLZXlzWzBdO1xuICAgICAgICAgICAgICAgIGRhdHVtID0gbWFwKGRhdGFTZXQsIChkYXRhT2JqLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWlzRW1wdHlPYmplY3QoZGF0YVNldFtpbmRleF0pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy52YWx1ZUZpbmRlcihkYXRhU2V0W2luZGV4XSwgeEF4aXNLZXksIHlBeGlzS2V5KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGRhdHVtID0gdGhpcy5nZXRWYWxpZERhdGEoZGF0dW0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoaXNCdWJibGVDaGFydCh0aGlzLnR5cGUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHNoYXBlcyA9IHRoaXMuc2hhcGUgPT09ICdyYW5kb20nID8gYWxsU2hhcGVzIDogdGhpcy5zaGFwZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgeUF4aXNLZXlzLmZvckVhY2goKHlBeGlzS2V5LCBzZXJpZXMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVzID0gbWFwKGRhdGFTZXQsIChkYXRhT2JqLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc0VtcHR5T2JqZWN0KGRhdGFTZXRbaW5kZXhdKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnZhbHVlRmluZGVyKGRhdGFTZXRbaW5kZXhdLCB4QXhpc0tleSwgeUF4aXNLZXksIGluZGV4LCAoaXNBcnJheShzaGFwZXMpICYmIHNoYXBlc1tzZXJpZXNdKSB8fCB0aGlzLnNoYXBlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlcyA9IHRoaXMuZ2V0VmFsaWREYXRhKHZhbHVlcyk7XG4gICAgICAgICAgICAgICAgICAgIGRhdHVtLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiB2YWx1ZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IHByZXR0aWZ5TGFiZWxzKHlBeGlzS2V5KVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZGF0dW07XG4gICAgfVxuXG4gICAgc2V0Q2hhcnREYXRhKGRhdGEpIHtcbiAgICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgICAgIHRoaXMuX3Byb2Nlc3NlZERhdGEgPSBkYXRhO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0Q2hhcnREYXRhKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcHJvY2Vzc2VkRGF0YTtcbiAgICB9XG5cbiAgICAvLyBjb25zdHJ1Y3RpbmcgdGhlIGdyb3VwZWQgZGF0YSBiYXNlZCBvbiB0aGUgc2VsZWN0aW9uIG9mIG9yZGVyYnksIHggJiB5IGF4aXNcbiAgICBnZXRWaXN1YWxseUdyb3VwZWREYXRhKHF1ZXJ5UmVzcG9uc2UsIGdyb3VwaW5nQ29sdW1uKSB7XG4gICAgICAgIGxldCBncm91cERhdGE6IGFueSA9IHt9LFxuICAgICAgICAgICAgZ3JvdXBWYWx1ZXM6IGFueSA9IFtdLFxuICAgICAgICAgICAgb3JkZXJCeURldGFpbHMsXG4gICAgICAgICAgICBtYXhMZW5ndGg7XG4gICAgICAgIGNvbnN0IGNoYXJ0RGF0YTogYW55ID0gW10sXG4gICAgICAgICAgICBfaXNBcmVhQ2hhcnQgPSBpc0FyZWFDaGFydCh0aGlzLnR5cGUpLFxuICAgICAgICAgICAgeUF4aXNLZXkgPSBmaXJzdChzcGxpdCh0aGlzLnlheGlzZGF0YWtleSwgJywnKSk7XG4gICAgICAgIHRoaXMueERhdGFLZXlBcnIgPSBbXTtcbiAgICAgICAgcXVlcnlSZXNwb25zZSA9IG9yZGVyQnkocXVlcnlSZXNwb25zZSwgc3BsaXQodGhpcy5ncm91cGJ5LCAnLCcpKTtcbiAgICAgICAgaWYgKHRoaXMub3JkZXJieSkge1xuICAgICAgICAgICAgb3JkZXJCeURldGFpbHMgPSBnZXRMb2Rhc2hPcmRlckJ5Rm9ybWF0KHRoaXMub3JkZXJieSk7XG4gICAgICAgICAgICBxdWVyeVJlc3BvbnNlID0gb3JkZXJCeShxdWVyeVJlc3BvbnNlLCBvcmRlckJ5RGV0YWlscy5jb2x1bW5zLCBvcmRlckJ5RGV0YWlscy5vcmRlcnMpO1xuICAgICAgICB9XG4gICAgICAgIHF1ZXJ5UmVzcG9uc2UgPSBncm91cEJ5KHF1ZXJ5UmVzcG9uc2UsIGdyb3VwaW5nQ29sdW1uKTtcbiAgICAgICAgLy8gSW4gY2FzZSBvZiBhcmVhIGNoYXJ0IGFsbCB0aGUgc2VyaWVzIGRhdGEgc2hvdWxkIGJlIG9mIHNhbWUgbGVuZ3RoXG4gICAgICAgIGlmIChfaXNBcmVhQ2hhcnQpIHtcbiAgICAgICAgICAgIG1heExlbmd0aCA9IG1heChtYXAocXVlcnlSZXNwb25zZSwgb2JqID0+IG9iai5sZW5ndGgpKTtcbiAgICAgICAgfVxuICAgICAgICBmb3JFYWNoKHF1ZXJ5UmVzcG9uc2UsICh2YWx1ZXMsIGdyb3VwS2V5KSA9PiB7XG4gICAgICAgICAgICBncm91cFZhbHVlcyA9IGlzQXJlYUNoYXJ0ID8gZmlsbChuZXcgQXJyYXkobWF4TGVuZ3RoKSwgWzAsIDBdKSA6IFtdO1xuICAgICAgICAgICAgZm9yRWFjaFJpZ2h0KHZhbHVlcywgKHZhbHVlLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgIGdyb3VwVmFsdWVzW2luZGV4XSA9IHRoaXMudmFsdWVGaW5kZXIodmFsdWUsIHRoaXMueGF4aXNkYXRha2V5LCB5QXhpc0tleSwgaW5kZXgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBncm91cERhdGEgPSB7XG4gICAgICAgICAgICAgICAga2V5IDogZ3JvdXBLZXksXG4gICAgICAgICAgICAgICAgdmFsdWVzIDogZ3JvdXBWYWx1ZXNcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBjaGFydERhdGEucHVzaChncm91cERhdGEpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGNoYXJ0RGF0YTtcbiAgICB9XG5cbiAgICAvKkRlY2lkZXMgd2hldGhlciB0aGUgZGF0YSBzaG91bGQgYmUgdmlzdWFsbHkgZ3JvdXBlZCBvciBub3RcbiAgICAgICAgICAgIFZpc3VhbGx5IGdyb3VwZWQgd2hlbiBhIGRpZmZlcmVudCBjb2x1bW4gaXMgY2hvb3NlbiBpbiB0aGUgZ3JvdXAgYnkgb3RoZXIgdGhhbiB4IGFuZCB5IGF4aXMgYW5kIGFnZ3JlZ2F0aW9uIGlzIG5vdCBjaG9zZW4qL1xuICAgIGdldEdyb3VwaW5nRGV0YWlscygpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNHcm91cEJ5RW5hYmxlZCgpICYmICF0aGlzLmlzQWdncmVnYXRpb25FbmFibGVkKCkpIHtcbiAgICAgICAgICAgIGxldCBpc1Zpc3VhbGx5R3JvdXBlZCA9IGZhbHNlLFxuICAgICAgICAgICAgICAgIHZpc3VhbEdyb3VwaW5nQ29sdW1uLFxuICAgICAgICAgICAgICAgIGdyb3VwaW5nRXhwcmVzc2lvbixcbiAgICAgICAgICAgICAgICBjb2x1bW5zOiBhbnkgPSBbXSxcbiAgICAgICAgICAgICAgICBncm91cGluZ0NvbHVtbkluZGV4O1xuICAgICAgICAgICAgY29uc3QgZ3JvdXBieUNvbHVtbnMgPSB0aGlzLmdyb3VwYnkgJiYgdGhpcy5ncm91cGJ5ICE9PSBOT05FID8gdGhpcy5ncm91cGJ5LnNwbGl0KCcsJykgOiBbXSxcbiAgICAgICAgICAgICAgICB5QXhpc0tleXMgPSB0aGlzLnlheGlzZGF0YWtleSA/IHRoaXMueWF4aXNkYXRha2V5LnNwbGl0KCcsJykgOiBbXTtcblxuICAgICAgICAgICAgaWYgKGdyb3VwYnlDb2x1bW5zLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICAvKkdldHRpbmcgdGhlIGdyb3VwIGJ5IGNvbHVtbiB3aGljaCBpcyBub3Qgc2VsZWN0ZWQgZWl0aGVyIGluIHggb3IgeSBheGlzKi9cbiAgICAgICAgICAgICAgICBncm91cGJ5Q29sdW1ucy5ldmVyeSgoY29sdW1uLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy54YXhpc2RhdGFrZXkgIT09IGNvbHVtbiAmJiAkLmluQXJyYXkoY29sdW1uLCB5QXhpc0tleXMpID09PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaXNWaXN1YWxseUdyb3VwZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmlzdWFsR3JvdXBpbmdDb2x1bW4gPSBjb2x1bW47XG4gICAgICAgICAgICAgICAgICAgICAgICBncm91cGluZ0NvbHVtbkluZGV4ID0gaW5kZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICBncm91cGJ5Q29sdW1ucy5zcGxpY2UoZ3JvdXBpbmdDb2x1bW5JbmRleCwgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgLy8gQ29uc3RydWN0aW5nIHRoZSBncm91cGJ5IGV4cHJlc3Npb25cbiAgICAgICAgICAgICAgICBpZiAodmlzdWFsR3JvdXBpbmdDb2x1bW4pIHtcbiAgICAgICAgICAgICAgICAgICAgY29sdW1ucy5wdXNoKHZpc3VhbEdyb3VwaW5nQ29sdW1uKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoZ3JvdXBieUNvbHVtbnMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbnMgPSBjb25jYXQoY29sdW1ucywgZ3JvdXBieUNvbHVtbnMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIElmIHggYW5kIHkgYXhpcyBhcmUgbm90IGluY2x1ZGVkIGluIGFnZ3JlZ2F0aW9uIG5lZWQgdG8gYmUgaW5jbHVkZWQgaW4gZ3JvdXBieVxuICAgICAgICAgICAgaWYgKHRoaXMueGF4aXNkYXRha2V5ICE9PSB0aGlzLmFnZ3JlZ2F0aW9uY29sdW1uKSB7XG4gICAgICAgICAgICAgICAgY29sdW1ucy5wdXNoKHRoaXMueGF4aXNkYXRha2V5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZvckVhY2goeUF4aXNLZXlzLCBrZXkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChrZXkgIT09IHRoaXMuYWdncmVnYXRpb25jb2x1bW4pIHtcbiAgICAgICAgICAgICAgICAgICAgY29sdW1ucy5wdXNoKGtleSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBncm91cGluZ0V4cHJlc3Npb24gPSAgY29sdW1ucy5qb2luKCcsJyk7XG4gICAgICAgICAgICAvLyBzZXQgaXNWaXN1YWxseUdyb3VwZWQgZmxhZyBpbiBzY29wZSBmb3IgbGF0ZXIgdXNlXG4gICAgICAgICAgICB0aGlzLmlzVmlzdWFsbHlHcm91cGVkID0gaXNWaXN1YWxseUdyb3VwZWQ7XG5cbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogZ3JvdXBpbmdFeHByZXNzaW9uLFxuICAgICAgICAgICAgICAgIGlzVmlzdWFsbHlHcm91cGVkOiBpc1Zpc3VhbGx5R3JvdXBlZCxcbiAgICAgICAgICAgICAgICB2aXN1YWxHcm91cGluZ0NvbHVtbjogdmlzdWFsR3JvdXBpbmdDb2x1bW5cbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGV4cHJlc3Npb246ICcnLFxuICAgICAgICAgICAgaXNWaXN1YWxseUdyb3VwZWQ6IGZhbHNlLFxuICAgICAgICAgICAgdmlzdWFsR3JvdXBpbmdDb2x1bW46ICcnXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gRnVuY3Rpb24gdG8gZ2V0IHRoZSBhZ2dyZWdhdGVkIGRhdGEgYWZ0ZXIgYXBwbHlpbmcgdGhlIGFnZ3JlZ2F0aW9uICYgZ3JvdXAgYnkgb3Igb3JkZXIgYnkgb3BlcmF0aW9ucy5cbiAgICBnZXRBZ2dyZWdhdGVkRGF0YShjYWxsYmFjaykge1xuICAgICAgICBjb25zdCB2YXJpYWJsZTogYW55ID0gdGhpcy5kYXRhc291cmNlLFxuICAgICAgICAgICAgeUF4aXNLZXlzID0gdGhpcy55YXhpc2RhdGFrZXkgPyB0aGlzLnlheGlzZGF0YWtleS5zcGxpdCgnLCcpIDogW10sXG4gICAgICAgICAgICBkYXRhOiBhbnkgPSB7fTtcbiAgICAgICAgbGV0IHNvcnRFeHByLFxuICAgICAgICAgICAgY29sdW1uczogYW55ID0gW10sXG4gICAgICAgICAgICBjb2xBbGlhcyxcbiAgICAgICAgICAgIG9yZGVyQnlDb2x1bW5zLFxuICAgICAgICAgICAgZ3JvdXBCeUZpZWxkczogYW55ID0gW107XG5cbiAgICAgICAgaWYgKCF2YXJpYWJsZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmlzR3JvdXBCeUVuYWJsZWQoKSkge1xuICAgICAgICAgICAgZ3JvdXBCeUZpZWxkcyA9IHNwbGl0KHRoaXMuZ3JvdXBieSwgJywnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5vcmRlcmJ5KSB7XG4gICAgICAgICAgICBzb3J0RXhwciA9IHJlcGxhY2UodGhpcy5vcmRlcmJ5LCAvOi9nLCAnICcpO1xuICAgICAgICAgICAgY29sdW1ucyA9IHVuaXEoY29uY2F0KGNvbHVtbnMsIGdyb3VwQnlGaWVsZHMsIFt0aGlzLmFnZ3JlZ2F0aW9uY29sdW1uXSkpO1xuICAgICAgICAgICAgb3JkZXJCeUNvbHVtbnMgPSBnZXRMb2Rhc2hPcmRlckJ5Rm9ybWF0KHRoaXMub3JkZXJieSkuY29sdW1ucztcbiAgICAgICAgICAgIC8vIElmIHRoZSBvcmRlcmJ5IGNvbHVtbiBpcyBjaG9zZW4gZWl0aGVyIGluIGdyb3VwYnkgb3Igb3JkZXJieSB0aGVuIHJlcGxhY2UgLiB3aXRoICQgZm9yIHRoYXQgY29sdW1uXG4gICAgICAgICAgICBmb3JFYWNoKGludGVyc2VjdGlvbihjb2x1bW5zLCBvcmRlckJ5Q29sdW1ucyksIGNvbCA9PiB7XG4gICAgICAgICAgICAgICAgY29sQWxpYXMgPSBnZXRWYWxpZEFsaWFzTmFtZShjb2wpO1xuICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICBzb3J0RXhwciA9IHJlcGxhY2Uoc29ydEV4cHIsIGNvbCwgY29sQWxpYXMpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaXNBZ2dyZWdhdGlvbkVuYWJsZWQoKSkge1xuICAgICAgICAgICAgLy8gU2VuZCB0aGUgZ3JvdXAgYnkgaW4gdGhlIGFnZ3JlZ2F0aW9ucyBhcGkgb25seSBpZiBhZ2dyZWdhdGlvbiBpcyBhbHNvIGNob3NlblxuICAgICAgICAgICAgZGF0YS5ncm91cEJ5RmllbGRzID0gZ3JvdXBCeUZpZWxkcztcbiAgICAgICAgICAgIGRhdGEuYWdncmVnYXRpb25zID0gIFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICdmaWVsZCc6IHRoaXMuYWdncmVnYXRpb25jb2x1bW4sXG4gICAgICAgICAgICAgICAgICAgICd0eXBlJzogIGFnZ3JlZ2F0aW9uRm5NYXBbdGhpcy5hZ2dyZWdhdGlvbl0sXG4gICAgICAgICAgICAgICAgICAgICdhbGlhcyc6IGdldFZhbGlkQWxpYXNOYW1lKHRoaXMuYWdncmVnYXRpb25jb2x1bW4pXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXTtcbiAgICAgICAgfVxuICAgICAgICAvLyBFeGVjdXRlIHRoZSBxdWVyeS5cbiAgICAgICAgdmFyaWFibGUuZXhlY3V0ZSgnZ2V0QWdncmVnYXRlZERhdGEnLCB7XG4gICAgICAgICAgICAnYWdncmVnYXRpb25zJyA6IGRhdGEsXG4gICAgICAgICAgICAnc29ydCcgICAgICAgICA6IHNvcnRFeHByXG4gICAgICAgIH0pLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgLy8gVHJhbnNmb3JtIHRoZSByZXN1bHQgaW50byBhIGZvcm1hdCBzdXBwb3J0ZWQgYnkgdGhlIGNoYXJ0LlxuICAgICAgICAgICAgY29uc3QgY2hhcnREYXRhOiBhbnkgPSBbXSxcbiAgICAgICAgICAgICAgICBhZ2dyZWdhdGlvbkFsaWFzOiBhbnkgPSBnZXRWYWxpZEFsaWFzTmFtZSh0aGlzLmFnZ3JlZ2F0aW9uY29sdW1uKSxcbiAgICAgICAgICAgICAgICB4QXhpc0FsaWFzS2V5ID0gZ2V0VmFsaWRBbGlhc05hbWUodGhpcy54YXhpc2RhdGFrZXkpLFxuICAgICAgICAgICAgICAgIHlBeGlzQWxpYXNLZXlzID0gW107XG5cbiAgICAgICAgICAgIHlBeGlzS2V5cy5mb3JFYWNoKHlBeGlzS2V5ID0+IHlBeGlzQWxpYXNLZXlzLnB1c2goZ2V0VmFsaWRBbGlhc05hbWUoeUF4aXNLZXkpKSk7XG5cbiAgICAgICAgICAgIGZvckVhY2gocmVzcG9uc2UuYm9keS5jb250ZW50LCAocmVzcG9uc2VDb250ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qgb2JqID0ge307XG4gICAgICAgICAgICAgICAgLy8gU2V0IHRoZSByZXNwb25zZSBpbiB0aGUgY2hhcnREYXRhIGJhc2VkIG9uICdhZ2dyZWdhdGlvbkNvbHVtbicsICd4QXhpc0RhdGFLZXknICYgJ3lBeGlzRGF0YUtleScuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNBZ2dyZWdhdGlvbkVuYWJsZWQoKSkge1xuICAgICAgICAgICAgICAgICAgICBvYmpbdGhpcy5hZ2dyZWdhdGlvbmNvbHVtbl0gPSByZXNwb25zZUNvbnRlbnRbYWdncmVnYXRpb25BbGlhc107XG4gICAgICAgICAgICAgICAgICAgIG9ialt0aGlzLmFnZ3JlZ2F0aW9uY29sdW1uXSA9IGdldChyZXNwb25zZUNvbnRlbnQsIGFnZ3JlZ2F0aW9uQWxpYXMpIHx8IGdldChyZXNwb25zZUNvbnRlbnQsIHRoaXMuYWdncmVnYXRpb25jb2x1bW4pO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIG9ialt0aGlzLnhheGlzZGF0YWtleV0gPSBnZXQocmVzcG9uc2VDb250ZW50LCB4QXhpc0FsaWFzS2V5KSB8fCBnZXQocmVzcG9uc2VDb250ZW50LCB0aGlzLnhheGlzZGF0YWtleSk7XG5cbiAgICAgICAgICAgICAgICB5QXhpc0tleXMuZm9yRWFjaCgoeUF4aXNLZXksIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIG9ialt5QXhpc0tleV0gPSByZXNwb25zZUNvbnRlbnRbeUF4aXNBbGlhc0tleXNbaW5kZXhdXTtcbiAgICAgICAgICAgICAgICAgICAgb2JqW3lBeGlzS2V5XSA9IGdldChyZXNwb25zZUNvbnRlbnQsIHlBeGlzQWxpYXNLZXlzW2luZGV4XSkgfHwgZ2V0KHJlc3BvbnNlQ29udGVudCwgeUF4aXNLZXkpO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgY2hhcnREYXRhLnB1c2gob2JqKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB0aGlzLmNoYXJ0RGF0YSA9IGNoYXJ0RGF0YTtcblxuICAgICAgICAgICAgdHJpZ2dlckZuKGNhbGxiYWNrKTtcbiAgICAgICAgfSwgKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jaGFydERhdGEgPSBbXTtcbiAgICAgICAgICAgIHRoaXMuc2V0RXJyTXNnKCdNRVNTQUdFX0VSUk9SX0ZFVENIX0RBVEEnKTtcbiAgICAgICAgICAgIHRyaWdnZXJGbihjYWxsYmFjayk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIFRoaXMgZnVuY3Rpb24gc2V0cyBtYXhpbXVtIHdpZHRoIGZvciB0aGUgbGFiZWxzIHRoYXQgY2FuIGJlIGRpc3BsYXllZC5UaGlzIHdpbGwgaGVscGZ1bCB3aGVuIHRoZXkgYXJlIG92ZXJsYXBwaW5nXG4gICAgc2V0TGFiZWxzTWF4V2lkdGgoKSB7XG4gICAgICAgIGxldCB4VGlja3MsXG4gICAgICAgICAgICB0aWNrV2lkdGgsXG4gICAgICAgICAgICBtYXhMZW5ndGgsXG4gICAgICAgICAgICB4RGlzdCxcbiAgICAgICAgICAgIHlEaXN0LFxuICAgICAgICAgICAgdG90YWxIZWlnaHQsXG4gICAgICAgICAgICBtYXhOb0xhYmVscyxcbiAgICAgICAgICAgIG50aEVsZW1lbnQsXG4gICAgICAgICAgICBsYWJlbHNBdmFpbGFibGVXaWR0aCxcbiAgICAgICAgICAgIGJhcldyYXBwZXIsXG4gICAgICAgICAgICB5QXhpc1dyYXBwZXIsXG4gICAgICAgICAgICBzdmdXcmFwcGVyO1xuICAgICAgICBjb25zdCBmb250c2l6ZSA9IHBhcnNlSW50KHRoaXMuZm9udHNpemUsIDEwKSB8fCAxMixcbiAgICAgICAgICAgIGlzQmFyY2hhcnQgPSBpc0JhckNoYXJ0KHRoaXMudHlwZSk7XG4gICAgICAgIC8vIGdldHRpbmcgdGhlIHggdGlja3MgaW4gdGhlIGNoYXJ0XG4gICAgICAgIHhUaWNrcyA9ICQoJyN3bUNoYXJ0JyArIHRoaXMuJGlkICsgJyBzdmcnKS5maW5kKCdnLm52LXgnKS5maW5kKCdnLnRpY2snKS5maW5kKCd0ZXh0Jyk7XG5cbiAgICAgICAgLy8gZ2V0dGluZyB0aGUgZGlzdGFuY2UgYmV0d2VlbiB0aGUgdHdvIHZpc2libGUgdGlja3MgYXNzb2NpYXRlZCB3aXRoIHZpc2libGUgdGV4dFxuICAgICAgICB4VGlja3MuZWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBjb25zdCB4VGljayA9ICQodGhpcyk7XG4gICAgICAgICAgICBsZXQgeFRyYW5zZm9ybSxcbiAgICAgICAgICAgICAgICB0aWNrRGlzdDtcbiAgICAgICAgICAgIGlmICh4VGljay50ZXh0KCkgJiYgeFRpY2suY3NzKCdvcGFjaXR5JykgPT09ICcxJykge1xuICAgICAgICAgICAgICAgIHhUcmFuc2Zvcm0gPSB4VGljay5wYXJlbnQoKS5hdHRyKCd0cmFuc2Zvcm0nKS5zcGxpdCgnLCcpO1xuICAgICAgICAgICAgICAgIHhEaXN0ID0gcGFyc2VGbG9hdCh4VHJhbnNmb3JtWzBdLnN1YnN0cigxMCkpO1xuICAgICAgICAgICAgICAgIHlEaXN0ID0gcGFyc2VGbG9hdCh4VHJhbnNmb3JtWzFdIHx8ICcwJyk7XG4gICAgICAgICAgICAgICAgaWYgKCFpc0JhcmNoYXJ0ICYmIHhEaXN0ID4gMCkge1xuICAgICAgICAgICAgICAgICAgICB0aWNrRGlzdCA9IHhEaXN0O1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoeURpc3QgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHRpY2tEaXN0ID0geURpc3Q7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh0aWNrV2lkdGgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGlja1dpZHRoID0gdGlja0Rpc3QgLSB0aWNrV2lkdGg7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGlja1dpZHRoID0gdGlja0Rpc3Q7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIEluIGNhc2Ugb2YgYmFyIGNoYXJ0IGdldHRpbmcgdGhlIGF2YWlsYWJsZSBzcGFjZSBmb3IgdGhlIGxhYmVscyB0byBiZSBkaXNwbGF5ZWRcbiAgICAgICAgaWYgKGlzQmFyY2hhcnQpIHtcbiAgICAgICAgICAgIGJhcldyYXBwZXIgPSAkKCcjd21DaGFydCcgKyB0aGlzLiRpZCArICcgc3ZnPmcubnYtd3JhcD5nPmcubnYtYmFyc1dyYXAnKVswXTtcbiAgICAgICAgICAgIHlBeGlzV3JhcHBlciA9ICQoJyN3bUNoYXJ0JyArIHRoaXMuJGlkICsgJyBzdmc+Zy5udi13cmFwPmc+Zy5udi15JylbMF07XG4gICAgICAgICAgICBzdmdXcmFwcGVyID0gJCgnI3dtQ2hhcnQnICsgdGhpcy4kaWQgKyAnIHN2ZycpWzBdO1xuICAgICAgICAgICAgLy8gZ2V0dGluZyB0aGUgdG90YWwgaGVpZ2h0IG9mIHRoZSBjaGFydFxuICAgICAgICAgICAgdG90YWxIZWlnaHQgPSBiYXJXcmFwcGVyID8gYmFyV3JhcHBlci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQgOiAwO1xuICAgICAgICAgICAgLy8gZ2V0dGluZyB0aGUgbGFiZWxzIGF2YWlsYWJsZSBzcGFjZVxuICAgICAgICAgICAgbGFiZWxzQXZhaWxhYmxlV2lkdGggPSB5QXhpc1dyYXBwZXIgPyBzdmdXcmFwcGVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoIC0geUF4aXNXcmFwcGVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoIDogc3ZnV3JhcHBlci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aDtcbiAgICAgICAgICAgIC8vIFNldHRpbmcgdGhlIG1heCBsZW5ndGggZm9yIHRoZSBsYWJlbFxuICAgICAgICAgICAgbWF4TGVuZ3RoID0gTWF0aC5yb3VuZChsYWJlbHNBdmFpbGFibGVXaWR0aCAvIGZvbnRzaXplKTtcbiAgICAgICAgICAgIC8vIGlmIGF2YWlsYWJsZSBzcGFjZSBmb3IgZWFjaCBsYWJlbCBpcyBsZXNzIHRoYW4gdGhlIGZvbnQtc2l6ZVxuICAgICAgICAgICAgLy8gdGhlbiBsaW1pdGluZyB0aGUgbGFiZWxzIHRvIGJlIGRpc3BsYXllZFxuICAgICAgICAgICAgaWYgKHRpY2tXaWR0aCA8IGZvbnRzaXplKSB7XG4gICAgICAgICAgICAgICAgLy8gY2FsY3VsYXRlIHRoZSBtYXhpbXVtIG5vIG9mIGxhYmVscyB0byBiZSBmaXR0ZWRcbiAgICAgICAgICAgICAgICBtYXhOb0xhYmVscyA9IHRvdGFsSGVpZ2h0IC8gZm9udHNpemU7XG4gICAgICAgICAgICAgICAgLy8gc2hvd2luZyBvbmx5IHRoZSBudGggZWxlbWVudFxuICAgICAgICAgICAgICAgIG50aEVsZW1lbnQgPSBNYXRoLmNlaWwodGhpcy5jaGFydERhdGEubGVuZ3RoIC8gbWF4Tm9MYWJlbHMpO1xuICAgICAgICAgICAgICAgIC8vIHNob3dpbmcgdXAgb25seSBzb21lIGxhYmVsc1xuICAgICAgICAgICAgICAgIGQzLnNlbGVjdCgnI3dtQ2hhcnQnICsgdGhpcy4kaWQgKyAnIHN2ZycpLnNlbGVjdCgnZy5udi14Jykuc2VsZWN0QWxsKCdnLnRpY2snKS5zZWxlY3QoJ3RleHQnKS5lYWNoKGZ1bmN0aW9uICh0ZXh0LCBpKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGhpZGluZyBldmVyeSBub24gbnRoIGVsZW1lbnRcbiAgICAgICAgICAgICAgICAgICAgaWYgKGkgJSBudGhFbGVtZW50ICE9PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkMy5zZWxlY3QodGhpcykuYXR0cignb3BhY2l0eScsIDApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBTZXR0aW5nIHRoZSBtYXggbGVuZ3RoIGZvciB0aGUgbGFiZWxcbiAgICAgICAgICAgIG1heExlbmd0aCA9IE1hdGgucm91bmQodGlja1dpZHRoIC8gZm9udHNpemUpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gbWF4TGVuZ3RoIHNob3VsZCBhbHdheXMgYmUgYSBwb3NpdGl2ZSBudW1iZXJcbiAgICAgICAgbWF4TGVuZ3RoID0gTWF0aC5hYnMobWF4TGVuZ3RoKTtcbiAgICAgICAgLy8gVmFsaWRhdGluZyBpZiBldmVyeSBsYWJlbCBleGNlZWRzIHRoZSBtYXggbGVuZ3RoIGFuZCBpZiBzbyBsaW1pdGluZyB0aGUgbGVuZ3RoIGFuZCBhZGRpbmcgZWxsaXBzaXNcbiAgICAgICAgeFRpY2tzLmVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKHRoaXMudGV4dENvbnRlbnQubGVuZ3RoID4gbWF4TGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy50ZXh0Q29udGVudCA9IHRoaXMudGV4dENvbnRlbnQuc3Vic3RyKDAsIG1heExlbmd0aCkgKyAnLi4uJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gUmV0dXJucyB0aGUgY29sdW1ucyBvZiB0aGF0IGNhbiBiZSBjaG9vc2VuIGluIHRoZSB4IGFuZCB5IGF4aXNcbiAgICBnZXREZWZhdWx0Q29sdW1ucygpIHtcbiAgICAgICAgbGV0IHR5cGUsXG4gICAgICAgICAgICBzdHJpbmdDb2x1bW4sXG4gICAgICAgICAgICBpLFxuICAgICAgICAgICAgdGVtcDtcbiAgICAgICAgY29uc3QgZGVmYXVsdENvbHVtbnMgPSBbXSxcbiAgICAgICAgICAgIGNvbHVtbnMgPSB0aGlzLmRhdGFzb3VyY2UuZXhlY3V0ZShEYXRhU291cmNlLk9wZXJhdGlvbi5HRVRfUFJPUEVSVElFU19NQVApIHx8IFtdO1xuXG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBjb2x1bW5zLmxlbmd0aCAmJiBkZWZhdWx0Q29sdW1ucy5sZW5ndGggPD0gMjsgaSArPSAxKSB7XG4gICAgICAgICAgICB0eXBlID0gY29sdW1uc1tpXS50eXBlO1xuICAgICAgICAgICAgaWYgKCFjb2x1bW5zW2ldLmlzUmVsYXRlZCAmJiAoaXNOdW1iZXJUeXBlKHR5cGUpKSkge1xuICAgICAgICAgICAgICAgIGRlZmF1bHRDb2x1bW5zLnB1c2goY29sdW1uc1tpXS5maWVsZE5hbWUpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAnc3RyaW5nJyAmJiAhc3RyaW5nQ29sdW1uKSB7XG4gICAgICAgICAgICAgICAgc3RyaW5nQ29sdW1uID0gY29sdW1uc1tpXS5maWVsZE5hbWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gT3RoZXIgdGhhbiBidWJibGUgY2hhcnQgeDogc3RyaW5nIHR5cGUgeTogbnVtYmVyIHR5cGVcbiAgICAgICAgLy8gQnViYmxlIGNoYXJ0IHg6IG51bWJlciB0eXBlIHk6IG51bWJlciB0eXBlXG4gICAgICAgIGlmIChzdHJpbmdDb2x1bW4gJiYgZGVmYXVsdENvbHVtbnMubGVuZ3RoID4gMCAmJiAhaXNCdWJibGVDaGFydCh0aGlzLnR5cGUpKSB7XG4gICAgICAgICAgICB0ZW1wID0gZGVmYXVsdENvbHVtbnNbMF07XG4gICAgICAgICAgICBkZWZhdWx0Q29sdW1uc1swXSA9IHN0cmluZ0NvbHVtbjtcbiAgICAgICAgICAgIGRlZmF1bHRDb2x1bW5zWzFdID0gdGVtcDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBkZWZhdWx0Q29sdW1ucztcbiAgICB9XG5cbiAgICAvLyBDYWxsIHVzZXIgZGVmaW5lZCBqYXZhc2NyaXB0IGZ1bmN0aW9uIHdoZW4gdXNlciBsaW5rcyBpdCB0byBjbGljayBldmVudCBvZiB0aGUgd2lkZ2V0LlxuICAgIGF0dGFjaENsaWNrRXZlbnQoKSB7XG4gICAgICAgIGxldCBkYXRhT2JqO1xuICAgICAgICBkMy5zZWxlY3QoJyN3bUNoYXJ0JyArIHRoaXMuJGlkICsgJyBzdmcnKS5zZWxlY3RBbGwoY2hhcnREYXRhUG9pbnRYcGF0aFt0aGlzLnR5cGVdKS5zdHlsZSgncG9pbnRlci1ldmVudHMnLCAnYWxsJylcbiAgICAgICAgICAgIC5vbignY2xpY2snLCAoZXZlbnQsIGRhdGEsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLnR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnQ29sdW1uJzpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnQmFyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFPYmogPSBkYXRhLl9kYXRhT2JqO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ1BpZSc6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ0RvbnV0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFPYmogPSBkYXRhLmRhdGEuX2RhdGFPYmo7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnQXJlYSc6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ0N1bXVsYXRpdmUgTGluZSc6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ0xpbmUnOlxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YU9iaiA9IGRhdGFbMF0uX2RhdGFPYmo7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnQnViYmxlJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFPYmogPSBkYXRhO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRpdGVtID0gZGF0YU9iajtcbiAgICAgICAgICAgICAgICB0aGlzLmludm9rZUV2ZW50Q2FsbGJhY2soJ3NlbGVjdCcsIHtcbiAgICAgICAgICAgICAgICAgICAgJGV2ZW50OiBldmVudCxcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRDaGFydEl0ZW06IGRhdGEsXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkSXRlbTogdGhpcy5zZWxlY3RlZGl0ZW1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgfVxuXG4gICAgLyogIFJldHVybnMgWSBTY2FsZSBtaW4gdmFsdWVcbiAgICAgICAgICAgRXg6IElucHV0ICAgOiA4Ljk3XG4gICAgICAgICAgICAgICBPdXRwdXQgIDogOC44N1xuXG4gICAgICAgICAgICAgICBJbnB1dCAgIDogOFxuICAgICAgICAgICAgICAgT3V0cHV0ICA6IDdcbiAgICAgICAqL1xuXG4gICAgcG9zdFBsb3RQcm9jZXNzKGNoYXJ0KSB7XG4gICAgICAgIGxldCBjaGFydFN2ZyxcbiAgICAgICAgICAgIHBpZUxhYmVscyxcbiAgICAgICAgICAgIHBpZUdyb3VwcyxcbiAgICAgICAgICAgIGFuZ2xlQXJyYXk7XG4gICAgICAgIGNvbnN0IHN0eWxlT2JqID0ge307XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLiRlbGVtZW50O1xuXG4gICAgICAgIHBvc3RQbG90Q2hhcnRQcm9jZXNzKHRoaXMpO1xuXG4gICAgICAgIGlmICghaXNQaWVUeXBlKHRoaXMudHlwZSkpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0TGFiZWxzTWF4V2lkdGgoKTtcbiAgICAgICAgfSBlbHNlIGlmICghdGhpcy5zaG93bGFiZWxzb3V0c2lkZSkge1xuICAgICAgICAgICAgLyoqIE52ZDMgaGFzIGEgaXNzdWUgaW4gcm90YXRpbmcgdGV4dC4gU28gd2Ugd2lsbCB1c2UgdGhpcyBhcyBhIHRlbXAgZml4LlxuICAgICAgICAgICAgICogSWYgdGhlIGlzc3VlIGlzIHJlc29sdmVkIHRoZXJlLCB3ZSBjYW4gcmVtb3ZlIHRoaXMuKi9cbiAgICAgICAgICAgIC8qIElmIGl0IGlzIGEgZG9udXQgY2hhcnQsIHRoZW4gcm90YXRlIHRoZSB0ZXh0IGFuZCBwb3NpdGlvbiB0aGVtKi9cbiAgICAgICAgICAgIGNoYXJ0U3ZnID0gZDMuc2VsZWN0KCcjd21DaGFydCcgKyB0aGlzLiRpZCArICcgc3ZnJyk7XG4gICAgICAgICAgICBwaWVMYWJlbHMgPSBjaGFydFN2Zy5zZWxlY3QoJy5udi1waWVMYWJlbHMnKS5zZWxlY3RBbGwoJy5udi1sYWJlbCcpO1xuICAgICAgICAgICAgcGllR3JvdXBzID0gY2hhcnRTdmcuc2VsZWN0KCcubnYtcGllJykuc2VsZWN0QWxsKCcubnYtc2xpY2UnKTtcbiAgICAgICAgICAgIGFuZ2xlQXJyYXkgPSBbXTtcbiAgICAgICAgICAgIGlmIChwaWVHcm91cHMgJiYgcGllR3JvdXBzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHBpZUdyb3Vwcy5lYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgZDMuc2VsZWN0KHRoaXMpLmF0dHIoJ3RyYW5zZm9ybScsIGZ1bmN0aW9uIChkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhbmdsZUFycmF5LnB1c2goYW5nbGUoZCkpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBwaWVMYWJlbHMuZWFjaChmdW5jdGlvbiAoZCwgaSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBncm91cCA9IGQzLnNlbGVjdCh0aGlzKTtcbiAgICAgICAgICAgICAgICAgICAgJChncm91cFswXVswXSkuZmluZCgndGV4dCcpLmF0dHIoJ3RyYW5zZm9ybScsICdyb3RhdGUoJyArIGFuZ2xlQXJyYXlbaV0gKyAnKScpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gcHJlcGFyZSB0ZXh0IHN0eWxlIHByb3BzIG9iamVjdCBhbmQgc2V0XG4gICAgICAgIGZvckVhY2goc3R5bGVQcm9wcywgKHZhbHVlLCBrZXkpID0+IHtcbiAgICAgICAgICAgIGlmIChrZXkgPT09ICdmb250c2l6ZScgfHwga2V5ID09PSAnZm9udHVuaXQnKSB7XG4gICAgICAgICAgICAgICAgc3R5bGVPYmpbdmFsdWVdID0gdGhpcy5mb250c2l6ZSArIHRoaXMuZm9udHVuaXQ7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHN0eWxlT2JqW3ZhbHVlXSA9IHRoaXNba2V5XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHNldFRleHRTdHlsZShzdHlsZU9iaiwgdGhpcy4kaWQpO1xuXG4gICAgICAgIC8qXG4gICAgICAgICAqIGFsbG93IHdpbmRvdy1yZXNpemUgZnVuY3Rpb25hbGl0eSwgZm9yIG9ubHktcnVuIG1vZGUgYXNcbiAgICAgICAgICogdXBkYXRpbmcgY2hhcnQgaXMgYmVpbmcgaGFuZGxlZCBieSB3YXRjaGVycyBvZiBoZWlnaHQgJiB3aWR0aCBpbiBzdHVkaW8tbW9kZVxuICAgICAgICAgKiAqL1xuICAgICAgICB0cmlnZ2VyRm4odGhpcy5fcmVzaXplRm4gJiYgdGhpcy5fcmVzaXplRm4uY2xlYXIpO1xuICAgICAgICB0aGlzLl9yZXNpemVGbiA9IG52LnV0aWxzLndpbmRvd1Jlc2l6ZSgoKSA9PiB7XG4gICAgICAgICAgICBpZiAoZWxlbWVudFswXS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQpIHtcbiAgICAgICAgICAgICAgICBjaGFydC51cGRhdGUoKTtcbiAgICAgICAgICAgICAgICBwb3N0UGxvdENoYXJ0UHJvY2Vzcyh0aGlzKTtcbiAgICAgICAgICAgICAgICBpZiAoIWlzUGllVHlwZSh0aGlzLnR5cGUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0TGFiZWxzTWF4V2lkdGgoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIFRPRE86IGdldCBwYXJlbnRzIG9mIGFjY29yZGlvbiB0eXBlXG4gICAgICAgICAgICAgICAgLypsZXQgcGFyZW50ID0gZWxlbWVudC5jbG9zZXN0KCcuYXBwLWFjY29yZGlvbi1wYW5lbCwgLnRhYi1wYW5lJykuaXNvbGF0ZVNjb3BlKCk7XG4gICAgICAgICAgICAgICAgaWYgKHBhcmVudCkge1xuICAgICAgICAgICAgICAgICAgICBwYXJlbnQuaW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9Ki9cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gcHJlcGFyZXMgYW5kIGNvbmZpZ3VyZXMgdGhlIGNoYXJ0IHByb3BlcnRpZXNcbiAgICBjb25maWd1cmVDaGFydCgpIHtcbiAgICAgICAgLy8gQ29weSB0aGUgZGF0YSBvbmx5IGluIGNhc2Ugb2YgcGllIGNoYXJ0IHdpdGggZGVmYXVsdCBkYXRhXG4gICAgICAgIC8vIFJlYXNvbiA6IHdoZW4gbXVsdGlwbGUgcGllIGNoYXJ0cyBhcmUgYm91bmQgdG8gc2FtZSBkYXRhLCBmaXJzdCBjaGFydCB0aGVtZSB3aWxsIGJlIGFwcGxpZWQgdG8gYWxsIGNoYXJ0c1xuICAgICAgICBsZXQgeERvbWFpblZhbHVlcztcbiAgICAgICAgbGV0IHlEb21haW5WYWx1ZXM7XG4gICAgICAgIGxldCBjaGFydDtcbiAgICAgICAgbGV0IGJlZm9yZVJlbmRlclZhbDtcbiAgICAgICAgY29uc3QgeWZvcm1hdE9wdGlvbnM6IGFueSA9IHt9O1xuXG4gICAgICAgIGlmICh0aGlzLl9wcm9jZXNzZWREYXRhLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGlmIChpc0F4aXNEb21haW5WYWxpZCh0aGlzLCAneCcpKSB7XG4gICAgICAgICAgICAgICAgeERvbWFpblZhbHVlcyA9IHRoaXMuYmluZGRhdGFzZXQgPyB0aGlzLmdldFhNaW5NYXhWYWx1ZXModGhpcy5fcHJvY2Vzc2VkRGF0YVswXSkgOiB7ICdtaW4nIDogeyd4JzogMX0sICAnbWF4JyA6IHsneCcgOiA1fX07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNBeGlzRG9tYWluVmFsaWQodGhpcywgJ3knKSkge1xuICAgICAgICAgICAgICAgIHlEb21haW5WYWx1ZXMgPSB0aGlzLmJpbmRkYXRhc2V0ID8gdGhpcy5nZXRZTWluTWF4VmFsdWVzKHRoaXMuX3Byb2Nlc3NlZERhdGEpIDogeyAnbWluJyA6IHsneScgOiAxfSwgJ21heCcgOiB7J3knIDogNX19O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzUGllVHlwZSh0aGlzLnR5cGUpICYmICghdGhpcy5iaW5kZGF0YXNldCB8fCAhdGhpcy5zY29wZWRhdGFzZXQpKSB7XG4gICAgICAgICAgICB0aGlzLl9wcm9jZXNzZWREYXRhID0gZ2V0Q2xvbmVkT2JqZWN0KHRoaXMuc2NvcGVkYXRhc2V0IHx8IHRoaXMuX3Byb2Nlc3NlZERhdGEpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gZ2V0IHRoZSBjaGFydCBvYmplY3RcbiAgICAgICAgY2hhcnQgPSBpbml0Q2hhcnQodGhpcywgeERvbWFpblZhbHVlcywgeURvbWFpblZhbHVlcywgbnVsbCwgIXRoaXMuYmluZGRhdGFzZXQpO1xuXG4gICAgICAgIGlmIChpc0FycmF5KHRoaXMuX3Byb2Nlc3NlZERhdGEpKSB7XG4gICAgICAgICAgICAvLyBXTVMtMTk0OTk6ICBUbyByZW1vdmUgY2hhcnQgWC1heGlzIG9sZCB0aWNrcyB3aGVuIGNoYXJ0IGRhdGEgbG9hZGVkIGR5bmFtaWNhbGx5LlxuICAgICAgICAgICAgY29uc3Qgb2xkZ1RpY2tzID0gICQoJyN3bUNoYXJ0JyArIHRoaXMuJGlkICsgJyBzdmcnKS5maW5kKCdnLm52LXgnKS5maW5kKCdnLnRpY2snKTtcbiAgICAgICAgICAgIGlmIChvbGRnVGlja3MgJiYgb2xkZ1RpY2tzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIG9sZGdUaWNrcy5yZW1vdmUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJlZm9yZVJlbmRlclZhbCA9IHRoaXMuaW52b2tlRXZlbnRDYWxsYmFjaygnYmVmb3JlcmVuZGVyJywgeyAnY2hhcnRJbnN0YW5jZScgOiBjaGFydH0pO1xuICAgICAgICAgICAgaWYgKGJlZm9yZVJlbmRlclZhbCkge1xuICAgICAgICAgICAgICAgIGNoYXJ0ID0gYmVmb3JlUmVuZGVyVmFsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5jaGFydCA9IGNoYXJ0O1xuICAgICAgICAgICAgLy8gY2hhbmdpbmcgdGhlIGRlZmF1bHQgbm8gZGF0YSBtZXNzYWdlXG4gICAgICAgICAgICBkMy5zZWxlY3QoJyN3bUNoYXJ0JyArIHRoaXMuJGlkICsgJyBzdmcnKVxuICAgICAgICAgICAgICAgIC5kYXR1bSh0aGlzLl9wcm9jZXNzZWREYXRhKVxuICAgICAgICAgICAgICAgIC5jYWxsKHRoaXMuY2hhcnQpO1xuICAgICAgICAgICAgdGhpcy5wb3N0UGxvdFByb2Nlc3MoY2hhcnQpO1xuICAgICAgICAgICAgcmV0dXJuIGNoYXJ0O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gUGxvdHRpbmcgdGhlIGNoYXJ0IHdpdGggc2V0IG9mIHRoZSBwcm9wZXJ0aWVzIHNldCB0byBpdFxuICAgIHBsb3RDaGFydCgpIHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IHRoaXMuJGVsZW1lbnQ7XG4gICAgICAgIC8vIGNhbGwgdXNlci10cmFuc2Zvcm1lZCBmdW5jdGlvblxuICAgICAgICB0aGlzLmNoYXJ0RGF0YSA9ICh0aGlzLmludm9rZUV2ZW50Q2FsbGJhY2soJ3RyYW5zZm9ybScpKSB8fCB0aGlzLmNoYXJ0RGF0YTtcblxuICAgICAgICAvLyBHZXR0aW5nIHRoZSBvcmRlciBieSBkYXRhIG9ubHkgaW4gcnVuIG1vZGUuIFRoZSBvcmRlciBieSBhcHBsaWVzIGZvciBhbGwgdGhlIGNoYXJ0cyBvdGhlciB0aGFuIHBpZSBhbmQgZG9udXQgY2hhcnRzXG4gICAgICAgIGlmICh0aGlzLmlzVmlzdWFsbHlHcm91cGVkICYmICFpc1BpZVR5cGUodGhpcy50eXBlKSkge1xuICAgICAgICAgICAgdGhpcy5fcHJvY2Vzc2VkRGF0YSA9IHRoaXMuY2hhcnREYXRhO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fcHJvY2Vzc2VkRGF0YSA9IHRoaXMucHJvY2Vzc0NoYXJ0RGF0YSgpO1xuICAgICAgICB9XG4gICAgICAgIC8vIGNoZWNraW5nIHRoZSBwYXJlbnQgY29udGFpbmVyIGJlZm9yZSBwbG90dGluZyB0aGUgY2hhcnRcbiAgICAgICAgaWYgKCFlbGVtZW50WzBdLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmNsZWFyQ2FudmFzKSB7XG4gICAgICAgICAgICAvLyBlbXB0eSBzdmcgdG8gYWRkLW5ldyBjaGFydFxuICAgICAgICAgICAgZWxlbWVudC5maW5kKCdzdmcnKS5yZXBsYWNlV2l0aCgnPHN2Zz48L3N2Zz4nKTtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJDYW52YXMgPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEluIGNhc2Ugb2YgaW52YWxpZCBheGlzIHNob3cgbm8gZGF0YSBhdmFpbGFibGUgbWVzc2FnZVxuICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZEF4aXMoKSkge1xuICAgICAgICAgICAgdGhpcy5fcHJvY2Vzc2VkRGF0YSA9IFtdO1xuICAgICAgICB9XG4gICAgICAgIG52LmFkZEdyYXBoKCgpID0+IHRoaXMuY29uZmlndXJlQ2hhcnQoKSwgICgpID0+IHtcbiAgICAgICAgICAgIC8qQnViYmxlIGNoYXJ0IGhhcyBhbiB0aW1lIG91dCBkZWxheSBvZiAzMDBtcyBpbiB0aGVpciBpbXBsZW1lbnRhdGlvbiBkdWUgdG8gd2hpY2ggd2VcbiAgICAgICAgICAgICogd29uJ3QgYmUgZ2V0dGluZyByZXF1aXJlZCBkYXRhIHBvaW50cyBvbiBhdHRhY2hpbmcgZXZlbnRzXG4gICAgICAgICAgICAqIGhlbmNlIGRlbGF5aW5nIGl0IDYwMG1zKi9cbiAgICAgICAgICAgIHNldFRpbWVvdXQoICgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmF0dGFjaENsaWNrRXZlbnQoKTtcbiAgICAgICAgICAgIH0sIDYwMCk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmlzTG9hZEluUHJvZ3Jlc3MgPSBmYWxzZTtcbiAgICB9XG4gICAgLy8gVE9ETzogTmVlZCB3YXkgdG8gZmlndXJlIG91dCBpZiB0aGUgZGF0YXNvdXJjZSBpcyBhIGxpdmUgc291cmNlXG4gICAgZ2V0IGlzTGl2ZVZhcmlhYmxlKCkge1xuICAgICAgICAvLyBzZXR0aW5nIHRoZSBmbGFnIGZvciB0aGUgbGl2ZSB2YXJpYWJsZSBpbiB0aGUgc2NvcGUgZm9yIHRoZSBjaGVja3NcbiAgICAgICAgY29uc3QgdmFyaWFibGVPYmogPSB0aGlzLmRhdGFzb3VyY2U7XG4gICAgICAgIHJldHVybiB2YXJpYWJsZU9iaiAmJiB2YXJpYWJsZU9iai5jYXRlZ29yeSA9PT0gJ3dtLkxpdmVWYXJpYWJsZSc7XG4gICAgfVxuXG4gICAgcGxvdENoYXJ0UHJveHkoKSB7XG4gICAgICAgIHRoaXMuc2hvd0NvbnRlbnRMb2FkRXJyb3IgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5pbnZhbGlkQ29uZmlnID0gZmFsc2U7XG4gICAgICAgIC8vIENoZWNraW5nIGlmIHggYW5kIHkgYXhpcyBhcmUgY2hvc2VuXG4gICAgICAgIHRoaXMuaXNMb2FkSW5Qcm9ncmVzcyA9IHRydWU7XG4gICAgICAgIGNvbnN0IGdyb3VwaW5nRGV0YWlscyA9IHRoaXMuZ2V0R3JvdXBpbmdEZXRhaWxzKCk7XG4gICAgICAgIC8vIElmIGFnZ3JlZ2F0aW9uL2dyb3VwIGJ5L29yZGVyIGJ5IHByb3BlcnRpZXMgaGF2ZSBiZWVuIHNldCwgdGhlbiBnZXQgdGhlIGFnZ3JlZ2F0ZWQgZGF0YSBhbmQgcGxvdCB0aGUgcmVzdWx0IGluIHRoZSBjaGFydC5cbiAgICAgICAgLy8gVE9ETzogZGF0YXNvdXJjZSBmb3IgbGl2ZSB2YXJpYWJsZSBkZXRlY3Rpb25cbiAgICAgICAgaWYgKHRoaXMuYmluZGRhdGFzZXQgJiYgdGhpcy5pc0xpdmVWYXJpYWJsZSAmJiAodGhpcy5maWx0ZXJGaWVsZHMgfHwgdGhpcy5pc0RhdGFGaWx0ZXJpbmdFbmFibGVkKCkpKSB7XG4gICAgICAgICAgICB0aGlzLmdldEFnZ3JlZ2F0ZWREYXRhKCgpID0+IHRoaXMucGxvdENoYXJ0KCkpO1xuICAgICAgICB9IGVsc2UgeyAvLyBFbHNlLCBzaW1wbHkgcGxvdCB0aGUgY2hhcnQuXG4gICAgICAgICAgICAvLyBJbiBjYXNlIG9mIGxpdmUgdmFyaWFibGUgcmVzZXR0aW5nIHRoZSBhZ2dyZWdhdGVkIGRhdGEgdG8gdGhlIG5vcm1hbCBkYXRhc2V0IHdoZW4gdGhlIGFnZ3JlZ2F0aW9uIGhhcyBiZWVuIHJlbW92ZWRcbiAgICAgICAgICAgIGlmICh0aGlzLmRhdGFzZXQgJiYgdGhpcy5pc0xpdmVWYXJpYWJsZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuY2hhcnREYXRhID0gdGhpcy5kYXRhc2V0O1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzR3JvdXBCeUVuYWJsZWQoKSAmJiBncm91cGluZ0RldGFpbHMuaXNWaXN1YWxseUdyb3VwZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFydERhdGEgPSB0aGlzLmdldFZpc3VhbGx5R3JvdXBlZERhdGEodGhpcy5jaGFydERhdGEsIGdyb3VwaW5nRGV0YWlscy52aXN1YWxHcm91cGluZ0NvbHVtbik7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnBsb3RDaGFydCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gc2V0cyB0aGUgZGVmYXVsdCB4IGFuZCB5IGF4aXMgb3B0aW9uc1xuICAgIHNldERlZmF1bHRBeGlzT3B0aW9ucygpIHtcbiAgICAgICAgY29uc3QgZGVmYXVsdENvbHVtbnMgPSB0aGlzLmdldERlZmF1bHRDb2x1bW5zKCk7XG4gICAgICAgIC8vIElmIHdlIGdldCB0aGUgdmFsaWQgZGVmYXVsdCBjb2x1bW5zIHRoZW4gYXNzaWduIHRoZW0gYXMgdGhlIHggYW5kIHkgYXhpc1xuICAgICAgICAvLyBJbiBjYXNlIG9mIHNlcnZpY2UgdmFyaWFibGUgd2UgbWF5IG5vdCBnZXQgdGhlIHZhbGlkIGNvbHVtbnMgYmVjYXVzZSB3ZSBjYW5ub3Qga25vdyB0aGUgZGF0YXR5cGVzXG4gICAgICAgIHRoaXMueGF4aXNkYXRha2V5ID0gZGVmYXVsdENvbHVtbnNbMF0gfHwgbnVsbDtcbiAgICAgICAgdGhpcy55YXhpc2RhdGFrZXkgPSBkZWZhdWx0Q29sdW1uc1sxXSB8fCBudWxsO1xuICAgIH1cblxuICAgIGdldEN1dG9taXplZE9wdGlvbnMocHJvcCwgZmllbGRzKSB7XG4gICAgICAgIGNvbnN0IGdyb3VwQnlDb2x1bW5zID0gc3BsaXQodGhpcy5ncm91cGJ5LCAnLCcpLFxuICAgICAgICAgICAgYWdnQ29sdW1ucyA9IHNwbGl0KHRoaXMuYWdncmVnYXRpb25jb2x1bW4sICcsJyk7XG4gICAgICAgIGlmICghdGhpcy5iaW5kZGF0YXNldCkge1xuICAgICAgICAgICAgcmV0dXJuIGZpZWxkcztcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuYXhpc29wdGlvbnMpIHtcbiAgICAgICAgICAgIHRoaXMuYXhpc29wdGlvbnMgPSBmaWVsZHM7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IG5ld09wdGlvbnM7XG4gICAgICAgIHN3aXRjaCAocHJvcCkge1xuICAgICAgICAgICAgY2FzZSAneGF4aXNkYXRha2V5JzpcbiAgICAgICAgICAgICAgICAvLyBJZiBncm91cCBieSBlbmFibGVkLCBjb2x1bW5zIGNob3NlbiBpbiBncm91cGJ5IHdpbGwgYmUgcG9wdWxhdGVkIGluIHggYXhpcyBvcHRpb25zXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNHcm91cEJ5RW5hYmxlZCgpKSB7XG4gICAgICAgICAgICAgICAgICAgIG5ld09wdGlvbnMgPSBncm91cEJ5Q29sdW1ucztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICd5YXhpc2RhdGFrZXknOlxuICAgICAgICAgICAgICAgIC8vIElmIGFnZ3JlZ2F0aW9uIGJ5IGVuYWJsZWQsIGNvbHVtbnMgY2hvc2VuIGluIGFnZ3JlZ2F0aW9uIHdpbGwgYmUgcG9wdWxhdGVkIGluIHkgYXhpcyBvcHRpb25zXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNBZ2dyZWdhdGlvbkVuYWJsZWQoKSkge1xuICAgICAgICAgICAgICAgICAgICBuZXdPcHRpb25zID0gYWdnQ29sdW1ucztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaXNMaXZlVmFyaWFibGUpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gSW4gY2FzZSBvZiBsaXZlIHZhcmlhYmxlIHBvcHVsYXRpbmcgb25seSBudW1lcmljIGNvbHVtbnNcbiAgICAgICAgICAgICAgICAgICAgbmV3T3B0aW9ucyA9IHRoaXMubnVtZXJpY0NvbHVtbnM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnZ3JvdXBieSc6XG4gICAgICAgICAgICAgICAgLy8gRmlsdGVyaW5nIG9ubHkgbm9uIHByaW1hcnkga2V5IGNvbHVtbnNcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc0xpdmVWYXJpYWJsZSAmJiB0aGlzLm5vblByaW1hcnlDb2x1bW5zICYmIHRoaXMubm9uUHJpbWFyeUNvbHVtbnMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIG5ld09wdGlvbnMgPSB0aGlzLm5vblByaW1hcnlDb2x1bW5zO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2FnZ3JlZ2F0aW9uY29sdW1uJzpcbiAgICAgICAgICAgICAgICAvLyBTZXQgdGhlICdhZ2dyZWdhdGlvbkNvbHVtbicgdG8gc2hvdyBhbGwga2V5cyBpbiBjYXNlIG9mIGFnZ3JlZ2F0aW9uIGZ1bmN0aW9uIGlzIGNvdW50IG9yIHRvIG51bWVyaWMga2V5cyBpbiBhbGwgb3RoZXIgY2FzZXMuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNMaXZlVmFyaWFibGUgJiYgdGhpcy5pc0FnZ3JlZ2F0aW9uRW5hYmxlZCgpICYmIHRoaXMuYWdncmVnYXRpb24gIT09ICdjb3VudCcpIHtcbiAgICAgICAgICAgICAgICAgICAgbmV3T3B0aW9ucyA9IHRoaXMubnVtZXJpY0NvbHVtbnM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnb3JkZXJieSc6XG4gICAgICAgICAgICAgICAgLy8gU2V0IHRoZSAnYWdncmVnYXRpb25Db2x1bW4nIHRvIHNob3cgYWxsIGtleXMgaW4gY2FzZSBvZiBhZ2dyZWdhdGlvbiBmdW5jdGlvbiBpcyBjb3VudCBvciB0byBudW1lcmljIGtleXMgaW4gYWxsIG90aGVyIGNhc2VzLlxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzTGl2ZVZhcmlhYmxlICYmIHRoaXMuaXNBZ2dyZWdhdGlvbkVuYWJsZWQoKSkge1xuICAgICAgICAgICAgICAgICAgICBuZXdPcHRpb25zID0gdW5pcShjb25jYXQoZ3JvdXBCeUNvbHVtbnMsIGFnZ0NvbHVtbnMpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdidWJibGVzaXplJzpcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5udW1lcmljQ29sdW1ucyAmJiB0aGlzLm51bWVyaWNDb2x1bW5zLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICBuZXdPcHRpb25zID0gdGhpcy5udW1lcmljQ29sdW1ucztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbmV3T3B0aW9ucyB8fCBmaWVsZHMgfHwgdGhpcy5heGlzb3B0aW9ucztcbiAgICB9XG5cbiAgICAvLyBGdW5jdGlvbiB0aGF0IGl0ZXJhdGVzIHRocm91Z2ggYWxsIHRoZSBjb2x1bW5zIGFuZCB0aGVuIGZldGNoaW5nIHRoZSBudW1lcmljIGFuZCBub24gcHJpbWFyeSBjb2x1bW5zIGFtb25nIHRoZW1cbiAgICBzZXROdW1lcmljYW5kTm9uUHJpbWFyeUNvbHVtbnMoKSB7XG4gICAgICAgIGxldCBjb2x1bW5zLFxuICAgICAgICAgICAgdHlwZTtcbiAgICAgICAgY29uc3QgcHJvcGVydGllc01hcCA9IHRoaXMuZGF0YXNvdXJjZS5leGVjdXRlKERhdGFTb3VyY2UuT3BlcmF0aW9uLkdFVF9QUk9QRVJUSUVTX01BUCk7XG4gICAgICAgIHRoaXMubnVtZXJpY0NvbHVtbnMgPSBbXTtcbiAgICAgICAgdGhpcy5ub25QcmltYXJ5Q29sdW1ucyA9IFtdO1xuICAgICAgICAvLyBGZXRjaGluZyBhbGwgdGhlIGNvbHVtbnNcbiAgICAgICAgaWYgKHRoaXMuZGF0YXNldCAmJiAhaXNFbXB0eShwcm9wZXJ0aWVzTWFwKSkge1xuICAgICAgICAgICAgY29sdW1ucyA9IFtdOyAvLyBUT0RPOiBmZXRjaFByb3BlcnRpZXNNYXBDb2x1bW5zKHByb3BlcnRpZXNNYXApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNvbHVtbnMpIHtcbiAgICAgICAgICAgIC8vIEl0ZXJhdGluZyB0aHJvdWdoIGFsbCB0aGUgY29sdW1ucyBhbmQgZmV0Y2hpbmcgdGhlIG51bWVyaWMgYW5kIG5vbiBwcmltYXJ5IGtleSBjb2x1bW5zXG4gICAgICAgICAgICBmb3JFYWNoKE9iamVjdC5rZXlzKGNvbHVtbnMpLCAoa2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgdHlwZSA9IGNvbHVtbnNba2V5XS50eXBlO1xuICAgICAgICAgICAgICAgIGlmIChpc051bWJlclR5cGUodHlwZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5udW1lcmljQ29sdW1ucy5wdXNoKGtleSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIEhpZGluZyBvbmx5IHRhYmxlJ3MgcHJpbWFyeSBrZXlcbiAgICAgICAgICAgICAgICBpZiAoY29sdW1uc1trZXldLmlzUmVsYXRlZFBrID09PSAndHJ1ZScgfHwgIWNvbHVtbnNba2V5XS5pc1ByaW1hcnlLZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ub25QcmltYXJ5Q29sdW1ucy5wdXNoKGtleSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLm51bWVyaWNDb2x1bW5zID0gdGhpcy5udW1lcmljQ29sdW1ucy5zb3J0KCk7XG4gICAgICAgICAgICB0aGlzLm5vblByaW1hcnlDb2x1bW5zID0gdGhpcy5ub25QcmltYXJ5Q29sdW1ucy5zb3J0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBwbG90IHRoZSBjaGFydFxuICAgIGhhbmRsZURhdGFTZXQobmV3VmFsKSB7XG4gICAgICAgIHRoaXMuZXJyTXNnID0gJyc7XG4gICAgICAgIC8vIFJlc2V0dGluZyB0aGUgZmxhZyB0byBmYWxzZSB3aGVuIHRoZSBiaW5kaW5nIHdhcyByZW1vdmVkXG4gICAgICAgIGlmICghbmV3VmFsICYmICF0aGlzLmJpbmRkYXRhc2V0KSB7XG4gICAgICAgICAgICB0aGlzLmlzVmlzdWFsbHlHcm91cGVkID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmF4aXNvcHRpb25zID0gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGxpdmVWYXJpYWJsZXMgY29udGFpbiBkYXRhIGluICdkYXRhJyBwcm9wZXJ0eScgb2YgdGhlIHZhcmlhYmxlXG4gICAgICAgIHRoaXMuY2hhcnREYXRhID0gdGhpcy5pc0xpdmVWYXJpYWJsZSA/IG5ld1ZhbCB8fCAnJyA6IChuZXdWYWwgJiYgbmV3VmFsLmRhdGFWYWx1ZSA9PT0gJycgJiYga2V5cyhuZXdWYWwpLmxlbmd0aCA9PT0gMSkgPyAnJyA6IG5ld1ZhbDtcblxuICAgICAgICAvLyBpZiB0aGUgZGF0YSByZXR1cm5lZCBpcyBhbiBvYmplY3QgbWFrZSBpdCBhbiBhcnJheSBvZiBvYmplY3RcbiAgICAgICAgaWYgKCFpc0FycmF5KHRoaXMuY2hhcnREYXRhKSAmJiBpc09iamVjdCh0aGlzLmNoYXJ0RGF0YSkpIHtcbiAgICAgICAgICAgIHRoaXMuY2hhcnREYXRhID0gW3RoaXMuY2hhcnREYXRhXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChuZXdWYWwgJiYgbmV3VmFsLmZpbHRlckZpZWxkcykge1xuICAgICAgICAgICAgdGhpcy5maWx0ZXJGaWVsZHMgPSBuZXdWYWwuZmlsdGVyRmllbGRzO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gcGxvdGNoYXJ0IGZvciBvbmx5IHZhbGlkIGRhdGEgYW5kIG9ubHkgYWZ0ZXIgYm91bmQgdmFyaWFibGUgcmV0dXJucyBkYXRhXG4gICAgICAgIGlmICh0aGlzLmNoYXJ0RGF0YSkge1xuICAgICAgICAgICAgdGhpcy5fcGxvdENoYXJ0UHJveHkoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIF9wbG90Q2hhcnRQcm94eSA9IGRlYm91bmNlKHRoaXMucGxvdENoYXJ0UHJveHkuYmluZCh0aGlzKSwgMTAwKTtcblxuICAgIC8vIHNldHMgdGhlIGNlbnRlciBsYWJlbCBmb3IgZG9udXQgY2hhcnQgdHlwZVxuICAgIHNldERvbnV0Q2VudGVyTGFiZWwobGFiZWxWYWx1ZSkge1xuICAgICAgICBsZXQgY2hhcnRTdmcsIHBpZUdyb3VwcztcbiAgICAgICAgY2hhcnRTdmcgPSBkMy5zZWxlY3QoJyN3bUNoYXJ0JyArIHRoaXMuJGlkICsgJyBzdmcnKTtcblxuICAgICAgICBwaWVHcm91cHMgPSBjaGFydFN2Zy5zZWxlY3QoJy5udi13cmFwLm52LXBpZScpLnNlbGVjdCgnLm52LXBpZScpO1xuICAgICAgICBwaWVHcm91cHMudGV4dCgnJyk7XG4gICAgICAgIHBpZUdyb3Vwcy5hcHBlbmQoJ3RleHQnKVxuICAgICAgICAgICAgLmF0dHIoJ2R5JywgJy4zNWVtJylcbiAgICAgICAgICAgIC5hdHRyKCd0ZXh0LWFuY2hvcicsICdtaWRkbGUnKVxuICAgICAgICAgICAgLmF0dHIoJ2NsYXNzJywgJ252LXBpZS10aXRsZScpXG4gICAgICAgICAgICAudGV4dChsYWJlbFZhbHVlKVxuICAgICAgICAgICAgLmVhY2goZnVuY3Rpb24gKGQpIHtcbiAgICAgICAgICAgICAgICB2YXIgZDN0ZXh0ID0gZDMuc2VsZWN0KHRoaXMpLFxuICAgICAgICAgICAgICAgIGNpcmMgPSBkMy5zZWxlY3QodGhpcy5wYXJlbnRFbGVtZW50KSxcbiAgICAgICAgICAgICAgICB0b3RhbFdpZHRoID0gTnVtYmVyKGNpcmMubm9kZSgpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoKSxcbiAgICAgICAgICAgICAgICAvLyBtaW51cyB0aGUgcmluZyB3aWR0aCBmcm9tIHRvdGFsIHdpZHRoXG4gICAgICAgICAgICAgICAgYXZhaWxXaWR0aCA9IHRvdGFsV2lkdGggLSAzMCxcbiAgICAgICAgICAgICAgICB0ZXh0V2lkdGggPSB0aGlzLmdldENvbXB1dGVkVGV4dExlbmd0aCgpO1xuICAgICAgICAgICAgICAgIGQzdGV4dC5hdHRyKFwiZGF0YS1zY2FsZVwiLCBhdmFpbFdpZHRoIC8gdGV4dFdpZHRoKTtcbiAgICAgICAgICAgICAgfSkuc3R5bGUoXCJmb250LXNpemVcIiwgZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgLy8gMTYgaXMgdGhlIGRlZmF1bHQgZm9udCBzaXplIHRvIG11bHRpcGx5IHdpdGggdGhlIHNjYWxlZCB2YWx1ZSBhbmQgMjQgaXMgdGhlIG1heGltdW0gZm9udCBzaXplIHRoYXQgY2FuIGJlIGFwcGxpZWRcbiAgICAgICAgICAgICAgICB2YXIgZm9udFNpemUgPSAxNiAqIGQzLnNlbGVjdCh0aGlzKS5hdHRyKFwiZGF0YS1zY2FsZVwiKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZm9udFNpemUgPiAyNCA/IDI0IDogZm9udFNpemUgKyBcInB4XCI7XG4gICAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9uUHJvcGVydHlDaGFuZ2Uoa2V5LCBuZXdWYWwsIG9sZFZhbD8pIHtcbiAgICAgICAgc3VwZXIub25Qcm9wZXJ0eUNoYW5nZShrZXksIG5ld1ZhbCwgb2xkVmFsKTtcbiAgICAgICAgc3dpdGNoIChrZXkpIHtcbiAgICAgICAgICAgIGNhc2UgJ2RhdGFzZXQnOlxuICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlRGF0YVNldChuZXdWYWwpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnY2VudGVybGFiZWwnOlxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNoYXJ0KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2hhcnQudGl0bGUobmV3VmFsKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXREb251dENlbnRlckxhYmVsKG5ld1ZhbCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAndHlwZSc6XG4gICAgICAgICAgICAgICAgLy8gQmFzZWQgb24gdGhlIGNoYW5nZSBpbiB0eXBlIGRlY2lkaW5nIHRoZSBkZWZhdWx0IG1hcmdpbnNcbiAgICAgICAgICAgICAgICBpZiAoaXNQaWVUeXBlKHRoaXMudHlwZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vZmZzZXR0b3AgPSAyMDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vZmZzZXRyaWdodCA9IDA7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub2Zmc2V0Ym90dG9tID0gMDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vZmZzZXRsZWZ0ID0gMDtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG9sZFZhbCA9PT0gJ1BpZScgfHwgb2xkVmFsID09PSAnRG9udXQnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub2Zmc2V0dG9wID0gMjU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub2Zmc2V0cmlnaHQgPSAyNTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vZmZzZXRib3R0b20gPSA1NTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vZmZzZXRsZWZ0ID0gNzU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKG9sZFZhbCAhPT0gbmV3VmFsKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2xlYXJDYW52YXMgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBJbiBzdHVkaW8gbW9kZSwgY29uZmlndXJlIHByb3BlcnRpZXMgZGVwZW5kZW50IG9uIGNoYXJ0IHR5cGVcbiAgICAgICAgICAgICAgICB0aGlzLl9wbG90Q2hhcnRQcm94eSgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAvLyBJbiBSdW5Nb2RlLCB0aGUgcGxvdGNoYXJ0IG1ldGhvZCB3aWxsIG5vdCBiZSBjYWxsZWQgZm9yIGFsbCBwcm9wZXJ0eSBjaGFuZ2VcbiAgICAgICAgICAgICAgICB0aGlzLl9wbG90Q2hhcnRQcm94eSgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpbmNsdWRlcyhhZHZhbmNlRGF0YVByb3BzLCBrZXkpKSB7XG4gICAgICAgICAgICB0aGlzLl9wbG90Q2hhcnRQcm94eSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaGFuZGxlTG9hZGluZyhkYXRhKSB7XG4gICAgICAgIGNvbnN0IGRhdGFTb3VyY2UgPSB0aGlzLmRhdGFzb3VyY2U7XG4gICAgICAgIGlmIChkYXRhU291cmNlICYmIGRhdGFTb3VyY2UuZXhlY3V0ZShEYXRhU291cmNlLk9wZXJhdGlvbi5JU19BUElfQVdBUkUpICYmIGlzRGF0YVNvdXJjZUVxdWFsKGRhdGEudmFyaWFibGUsIGRhdGFTb3VyY2UpKSB7XG4gICAgICAgICAgICB0aGlzLnZhcmlhYmxlSW5mbGlnaHQgPSBkYXRhLmFjdGl2ZTtcbiAgICAgICAgICAgIHRoaXMuaXNMb2FkSW5Qcm9ncmVzcyA9IGRhdGEuYWN0aXZlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaGlkZVRvb2x0aXAoKSB7XG4gICAgICAgIGQzLnNlbGVjdEFsbCgnLm52dG9vbHRpcCcpLnN0eWxlKCdvcGFjaXR5JywgMCk7XG4gICAgfVxuXG4gICAgb25TdHlsZUNoYW5nZShrZXksIG5ld1ZhbCwgb2xkVmFsKSB7XG4gICAgICAgIGNvbnN0IHN0eWxlT2JqID0ge307XG4gICAgICAgIHN1cGVyLm9uU3R5bGVDaGFuZ2Uoa2V5LCBuZXdWYWwsIG9sZFZhbCk7XG4gICAgICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgICAgICAgICBjYXNlICdmb250c2l6ZSc6XG4gICAgICAgICAgICBjYXNlICdmb250dW5pdCc6XG4gICAgICAgICAgICBjYXNlICdjb2xvcic6XG4gICAgICAgICAgICBjYXNlICdmb250ZmFtaWx5JzpcbiAgICAgICAgICAgIGNhc2UgJ2ZvbnR3ZWlnaHQnOlxuICAgICAgICAgICAgY2FzZSAnZm9udHN0eWxlJzpcbiAgICAgICAgICAgIGNhc2UgJ3RleHRkZWNvcmF0aW9uJzpcbiAgICAgICAgICAgICAgICBzdHlsZU9ialtzdHlsZVByb3BzW2tleV1dID0gKGtleSA9PT0gJ2ZvbnRzaXplJyB8fCBrZXkgPT09ICdmb250dW5pdCcpID8gdGhpcy5mb250c2l6ZSArIHRoaXMuZm9udHVuaXQgOiBuZXdWYWw7XG4gICAgICAgICAgICAgICAgc2V0VGV4dFN0eWxlKHN0eWxlT2JqLCB0aGlzLiRpZCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihpbmo6IEluamVjdG9yLCBwcml2YXRlIGFwcDogQXBwLCBASW5qZWN0KCdFWFBMSUNJVF9DT05URVhUJykgQE9wdGlvbmFsKCkgZXhwbGljaXRDb250ZXh0OiBhbnkpIHtcbiAgICAgICAgc3VwZXIoaW5qLCBXSURHRVRfQ09ORklHLCBleHBsaWNpdENvbnRleHQpO1xuICAgICAgICBzdHlsZXIodGhpcy5uYXRpdmVFbGVtZW50LCB0aGlzLCBBUFBMWV9TVFlMRVNfVFlQRS5DT05UQUlORVIsIFsnZm9udHNpemUnLCAnZm9udHVuaXQnLCAnY29sb3InLCAnZm9udGZhbWlseScsICdmb250d2VpZ2h0JywgJ2ZvbnRzdHlsZScsICd0ZXh0ZGVjb3JhdGlvbiddKTtcblxuICAgICAgICAvLyBnZW5lcmF0ZSB1bmlxdWUgaWQgZm9yIHRoZSBjb21wb25lbnRcbiAgICAgICAgdGhpcy4kaWQgPSB0aGlzLndpZGdldElkIHx8IE1hdGgucmFuZG9tKCk7XG4gICAgICAgIC8vIHJlbW92ZSB0aXRsZSBhdHRyaWJ1dGUgYXMgdGhlIGVsZW1lbnQgb24gaG92ZXIgc2hvd3MgeW91IHRoZSBoaW50IHRocm91Z2gtb3V0IHRoZSBlbGVtZW50XG4gICAgICAgIHJlbW92ZUF0dHIodGhpcy5uYXRpdmVFbGVtZW50LCAndGl0bGUnKTtcbiAgICAgICAgdGhpcy5jaGFydFJlYWR5ID0gZmFsc2U7XG4gICAgICAgIHRoaXMuYmluZGRhdGFzZXQgPSB0aGlzLm5hdGl2ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKCdkYXRhc2V0LmJpbmQnKTtcbiAgICAgICAgLy8gU2hvdyBsb2FkaW5nIHN0YXR1cyBiYXNlZCBvbiB0aGUgdmFyaWFibGUgbGlmZSBjeWNsZVxuICAgICAgICB0aGlzLl9zdWJzY2lwdGlvbnMucHVzaCh0aGlzLmFwcC5zdWJzY3JpYmUoJ3RvZ2dsZS12YXJpYWJsZS1zdGF0ZScsIHRoaXMuaGFuZGxlTG9hZGluZy5iaW5kKHRoaXMpKSk7XG4gICAgICAgIC8vIFdpbGwgaGlkZSB0b2xsdGlwIG9mIGEgY2hhcnQgaW4gbW9iaWxlIHdoZW4gdGhlIHVzZXIgc2Nyb2xscy5cbiAgICAgICAgdGhpcy5fc3Vic2NpcHRpb25zLnB1c2godGhpcy5hcHAuc3Vic2NyaWJlKCdpc2Nyb2xsLXN0YXJ0JywgKCkgPT4ge3RoaXMuaGlkZVRvb2x0aXAoKTt9KSk7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICBzdXBlci5uZ0FmdGVyVmlld0luaXQoKTtcbiAgICAgICAgLy8gRm9yIG9sZCBwcm9qZWN0c1xuICAgICAgICBpZiAoIWluY2x1ZGVzKFsnb3V0c2lkZScsICdpbnNpZGUnLCAnaGlkZSddLCB0aGlzLnNob3dsYWJlbHMpKSB7XG4gICAgICAgICAgICB0aGlzLnNob3dsYWJlbHMgICAgICAgID0gZ2V0Qm9vbGVhblZhbHVlKHRoaXMuc2hvd2xhYmVscyk7XG4gICAgICAgICAgICB0aGlzLnNob3dsYWJlbHNvdXRzaWRlID0gZ2V0Qm9vbGVhblZhbHVlKHRoaXMuc2hvd2xhYmVsc291dHNpZGUpO1xuICAgICAgICAgICAgdGhpcy5zaG93bGFiZWxzICAgICAgICA9IHRoaXMuc2hvd2xhYmVscyA/ICh0aGlzLnNob3dsYWJlbHNvdXRzaWRlID8gJ291dHNpZGUnIDogJ2luc2lkZScpIDogJ2hpZGUnO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLnRoZW1lKSB7XG4gICAgICAgICAgICAvLyBEZWZhdWx0IHRoZW1lIGZvciBwaWUvZG9udXQgaXMgQXp1cmUgYW5kIGZvciBvdGhlciBpdCBpcyBUZXJyZXN0cmlhbFxuICAgICAgICAgICAgdGhpcy50aGVtZSA9IGlzUGllVHlwZSh0aGlzLnR5cGUpID8gJ0F6dXJlJyA6ICdUZXJyZXN0cmlhbCc7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm5hdGl2ZUVsZW1lbnQuc2V0QXR0cmlidXRlKCdpZCcsICd3bUNoYXJ0JyArIHRoaXMuJGlkKTtcbiAgICAgICAgLy8gV2hlbiB0aGVyZSBpcyBub3QgdmFsdWUgYmluZGluZywgdGhlbiBwbG90IHRoZSBjaGFydCB3aXRoIHNhbXBsZSBkYXRhXG4gICAgICAgIGlmICghdGhpcy5iaW5kZGF0YXNldCAmJiAhdGhpcy5uYXRpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgnc2NvcGVkYXRhc2V0JykpIHtcbiAgICAgICAgICAgIHRoaXMuX3Bsb3RDaGFydFByb3h5KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgLy8gZGVzdHJveSBhbGwgc3Vic2NyaXB0aW9ucyB0byBwcmV2ZW50IG1lbW9yeSBsZWFrLlxuICAgICAgICB0aGlzLmhpZGVUb29sdGlwKCk7XG5cbiAgICAgICAgLy8gTUVNT1JZIExFQUsgRklYOiBVbnN1YnNjcmliZSBmcm9tIGFsbCBzdWJzY3JpcHRpb25zXG4gICAgICAgIGlmICh0aGlzLl9zdWJzY2lwdGlvbnMpIHtcbiAgICAgICAgICAgIHRoaXMuX3N1YnNjaXB0aW9ucy5mb3JFYWNoKChzdWJzY3JpcHRpb24pPT57XG4gICAgICAgICAgICAgICAgc3Vic2NyaXB0aW9uKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuX3N1YnNjaXB0aW9ucyA9IFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gTUVNT1JZIExFQUsgRklYOiBDbGVhciBjaGFydCBpbnN0YW5jZVxuICAgICAgICBpZiAodGhpcy5jaGFydCkge1xuICAgICAgICAgICAgdGhpcy5jaGFydCA9IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBNRU1PUlkgTEVBSyBGSVg6IFJlbW92ZSByZXNpemUgaGFuZGxlciBpZiBleGlzdHNcbiAgICAgICAgaWYgKHRoaXMuX3Jlc2l6ZUZuKSB7XG4gICAgICAgICAgICB0aGlzLl9yZXNpemVGbiA9IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBNRU1PUlkgTEVBSyBGSVg6IENsZWFyIGFycmF5IHJlZmVyZW5jZXNcbiAgICAgICAgdGhpcy5jaGFydERhdGEgPSBbXTtcbiAgICAgICAgdGhpcy5fcHJvY2Vzc2VkRGF0YSA9IFtdO1xuICAgICAgICB0aGlzLnNhbXBsZURhdGEgPSBbXTtcbiAgICAgICAgdGhpcy54RGF0YUtleUFyciA9IFtdO1xuICAgICAgICB0aGlzLm5vblByaW1hcnlDb2x1bW5zID0gW107XG5cbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICB9XG4gICAgcmVkcmF3ID0gdGhpcy5fcGxvdENoYXJ0UHJveHkuYmluZCh0aGlzKTtcbn1cbiIsIkBpZiAodGl0bGUpIHtcbiAgPGRpdiBjbGFzcz1cInBhbmVsLWhlYWRpbmdcIj5cbiAgICA8aDMgY2xhc3M9XCJwYW5lbC10aXRsZVwiPlxuICAgICAgPGRpdiBjbGFzcz1cInB1bGwtbGVmdFwiPjxpIGNsYXNzPVwiYXBwLWljb24gcGFuZWwtaWNvbiB7e2ljb25jbGFzc319XCIgW2NsYXNzLm5nLWhpZGVdPVwiIWljb25jbGFzc1wiPjwvaT48L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJoZWFkaW5nXCIgW2lubmVySFRNTF09XCJ0aXRsZVwiPjwvZGl2PlxuICAgICAgQGlmIChzdWJoZWFkaW5nKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkZXNjcmlwdGlvblwiIFtpbm5lckhUTUxdPVwic3ViaGVhZGluZ1wiPjwvZGl2PlxuICAgICAgfVxuICAgIDwvaDM+XG4gIDwvZGl2PlxufVxuPGRpdiBjbGFzcz1cImFwcC1jaGFydC1pbm5lclwiIFtuZ0NsYXNzXT1cInsnbG9hZGluZyc6aXNMb2FkSW5Qcm9ncmVzcywgJ3BhbmVsLWJvZHknOiB0aXRsZX1cIj5cbiAgPHN2Zz48L3N2Zz5cbiAgQGlmIChzaG93Q29udGVudExvYWRFcnJvciAmJiBzaG93Tm9EYXRhTXNnKSB7XG4gICAgPGRpdiBjbGFzcz1cIndtLWNvbnRlbnQtaW5mbyByZWFkb25seS13cmFwcGVyXCI+XG4gICAgICA8cCBjbGFzcz1cIndtLW1lc3NhZ2VcIiBbdGl0bGVdPVwiaGludE1zZ1wiIFtuZ0NsYXNzXT1cInsnZXJyb3InOiBpbnZhbGlkQ29uZmlnfVwiIFtpbm5lclRleHRdPVwiZXJyTXNnXCI+PC9wPlxuICAgIDwvZGl2PlxuICB9XG4gIDxkaXYgd21TcGlubmVyIHNob3cuYmluZD1cImlzTG9hZEluUHJvZ3Jlc3NcIiBjYXB0aW9uLmJpbmQ9XCJsb2FkaW5nZGF0YW1zZ1wiPjwvZGl2PlxuPC9kaXY+XG4iXX0=
|