@wavemaker/app-ng-runtime 11.9.4-rc.5964 → 11.10.0-next.142020
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.
- app-ng-runtime/build-task/fesm2022/index.mjs +1 -1
- app-ng-runtime/build-task/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/advanced/carousel/bundles/index.umd.js +3 -3
- app-ng-runtime/components/advanced/carousel/esm2022/carousel-template/carousel-template.directive.mjs +2 -2
- app-ng-runtime/components/advanced/carousel/esm2022/carousel.directive.mjs +2 -2
- app-ng-runtime/components/advanced/carousel/esm2022/carousel.module.mjs +2 -2
- app-ng-runtime/components/advanced/carousel/fesm2022/index.mjs +4 -4
- app-ng-runtime/components/advanced/carousel/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/advanced/login/bundles/index.umd.js +2 -2
- app-ng-runtime/components/advanced/login/esm2022/login.component.mjs +2 -2
- app-ng-runtime/components/advanced/login/esm2022/login.module.mjs +2 -2
- app-ng-runtime/components/advanced/login/fesm2022/index.mjs +3 -3
- app-ng-runtime/components/advanced/login/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/advanced/marquee/bundles/index.umd.js +2 -2
- app-ng-runtime/components/advanced/marquee/esm2022/marquee.directive.mjs +2 -2
- app-ng-runtime/components/advanced/marquee/esm2022/marquee.module.mjs +2 -2
- app-ng-runtime/components/advanced/marquee/fesm2022/index.mjs +3 -3
- app-ng-runtime/components/advanced/marquee/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/base/bundles/index.umd.js +36 -36
- app-ng-runtime/components/base/esm2022/components.module.mjs +2 -2
- app-ng-runtime/components/base/esm2022/directives/show-in-device.directive.mjs +2 -2
- app-ng-runtime/components/base/esm2022/pipes/custom-pipes.mjs +16 -16
- app-ng-runtime/components/base/esm2022/pipes/image.pipe.mjs +2 -2
- app-ng-runtime/components/base/esm2022/pipes/sanitize.pipe.mjs +2 -2
- app-ng-runtime/components/base/esm2022/pipes/trust-as.pipe.mjs +2 -2
- app-ng-runtime/components/base/esm2022/widgets/common/base/base-container.component.mjs +1 -1
- app-ng-runtime/components/base/esm2022/widgets/common/base/base.component.mjs +2 -2
- app-ng-runtime/components/base/esm2022/widgets/common/base/partial-container.directive.mjs +2 -2
- app-ng-runtime/components/base/esm2022/widgets/common/base/stylable.component.mjs +2 -2
- app-ng-runtime/components/base/esm2022/widgets/common/base/text-content.directive.mjs +2 -2
- app-ng-runtime/components/base/esm2022/widgets/common/container/container.directive.mjs +2 -2
- app-ng-runtime/components/base/esm2022/widgets/common/dialog/dialog.service.mjs +2 -2
- app-ng-runtime/components/base/esm2022/widgets/common/item-template/item-template.directive.mjs +2 -2
- app-ng-runtime/components/base/esm2022/widgets/common/lazy-load/lazy-load.directive.mjs +2 -2
- app-ng-runtime/components/base/esm2022/widgets/common/message/message.component.mjs +2 -2
- app-ng-runtime/components/base/esm2022/widgets/common/partial/partial.directive.mjs +2 -2
- app-ng-runtime/components/base/esm2022/widgets/common/partial-param/partial-param.directive.mjs +3 -3
- app-ng-runtime/components/base/esm2022/widgets/common/redraw/redrawable.directive.mjs +2 -2
- app-ng-runtime/components/base/esm2022/widgets/common/repeat-template/repeat-template.directive.mjs +2 -2
- app-ng-runtime/components/base/esm2022/widgets/common/smooth-scroll/smooth-scroll.directive.mjs +2 -2
- app-ng-runtime/components/base/fesm2022/index.mjs +38 -38
- app-ng-runtime/components/base/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/base/widgets/common/base/base-field-validations.d.ts +1 -1
- app-ng-runtime/components/basic/default/bundles/index.umd.js +10 -10
- app-ng-runtime/components/basic/default/esm2022/anchor/anchor.component.mjs +2 -2
- app-ng-runtime/components/basic/default/esm2022/audio/audio.component.mjs +2 -2
- app-ng-runtime/components/basic/default/esm2022/basic.module.mjs +2 -2
- app-ng-runtime/components/basic/default/esm2022/html/html.directive.mjs +2 -2
- app-ng-runtime/components/basic/default/esm2022/icon/icon.component.mjs +2 -2
- app-ng-runtime/components/basic/default/esm2022/iframe/iframe.component.mjs +2 -2
- app-ng-runtime/components/basic/default/esm2022/label/label.directive.mjs +2 -2
- app-ng-runtime/components/basic/default/esm2022/picture/picture.directive.mjs +2 -2
- app-ng-runtime/components/basic/default/esm2022/spinner/spinner.component.mjs +2 -2
- app-ng-runtime/components/basic/default/esm2022/video/video.component.mjs +2 -2
- app-ng-runtime/components/basic/default/fesm2022/index.mjs +11 -11
- app-ng-runtime/components/basic/default/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/basic/progress/bundles/index.umd.js +4 -4
- app-ng-runtime/components/basic/progress/esm2022/progress-bar/progress-bar.component.mjs +2 -2
- app-ng-runtime/components/basic/progress/esm2022/progress-circle/progress-circle.component.mjs +2 -2
- app-ng-runtime/components/basic/progress/esm2022/progress.module.mjs +2 -2
- app-ng-runtime/components/basic/progress/fesm2022/index.mjs +4 -4
- app-ng-runtime/components/basic/progress/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/basic/rich-text-editor/bundles/index.umd.js +2 -2
- app-ng-runtime/components/basic/rich-text-editor/esm2022/rich-text-editor.component.mjs +2 -2
- app-ng-runtime/components/basic/rich-text-editor/esm2022/rich-text-editor.module.mjs +2 -2
- app-ng-runtime/components/basic/rich-text-editor/fesm2022/index.mjs +3 -3
- app-ng-runtime/components/basic/rich-text-editor/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/basic/search/bundles/index.umd.js +3 -3
- app-ng-runtime/components/basic/search/esm2022/scrollable.directive.mjs +2 -2
- app-ng-runtime/components/basic/search/esm2022/search.component.mjs +2 -2
- app-ng-runtime/components/basic/search/esm2022/search.module.mjs +2 -2
- app-ng-runtime/components/basic/search/fesm2022/index.mjs +4 -4
- app-ng-runtime/components/basic/search/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/basic/tree/bundles/index.umd.js +2 -2
- app-ng-runtime/components/basic/tree/esm2022/tree.component.mjs +2 -2
- app-ng-runtime/components/basic/tree/esm2022/tree.module.mjs +2 -2
- app-ng-runtime/components/basic/tree/fesm2022/index.mjs +3 -3
- app-ng-runtime/components/basic/tree/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/chart/bundles/index.umd.js +3 -3
- app-ng-runtime/components/chart/esm2022/chart.component.mjs +2 -2
- app-ng-runtime/components/chart/esm2022/chart.module.mjs +2 -2
- app-ng-runtime/components/chart/fesm2022/index.mjs +4 -4
- app-ng-runtime/components/chart/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/containers/accordion/bundles/index.umd.js +3 -3
- app-ng-runtime/components/containers/accordion/esm2022/accordion-pane/accordion-pane.component.mjs +2 -2
- app-ng-runtime/components/containers/accordion/esm2022/accordion.directive.mjs +2 -2
- app-ng-runtime/components/containers/accordion/esm2022/accordion.module.mjs +2 -2
- app-ng-runtime/components/containers/accordion/fesm2022/index.mjs +5 -5
- app-ng-runtime/components/containers/accordion/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/containers/layout-grid/bundles/index.umd.js +4 -4
- app-ng-runtime/components/containers/layout-grid/esm2022/layout-grid-column/layout-grid-column.directive.mjs +2 -2
- app-ng-runtime/components/containers/layout-grid/esm2022/layout-grid-row/layout-grid-row.directive.mjs +2 -2
- app-ng-runtime/components/containers/layout-grid/esm2022/layout-grid.directive.mjs +2 -2
- app-ng-runtime/components/containers/layout-grid/esm2022/layout-grid.module.mjs +2 -2
- app-ng-runtime/components/containers/layout-grid/fesm2022/index.mjs +5 -5
- app-ng-runtime/components/containers/layout-grid/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/containers/linear-layout/bundles/index.umd.js +3 -3
- app-ng-runtime/components/containers/linear-layout/esm2022/linear-layout-item/linear-layout-item.directive.mjs +2 -2
- app-ng-runtime/components/containers/linear-layout/esm2022/linear-layout.directive.mjs +2 -2
- app-ng-runtime/components/containers/linear-layout/esm2022/linear-layout.module.mjs +2 -2
- app-ng-runtime/components/containers/linear-layout/fesm2022/index.mjs +4 -4
- app-ng-runtime/components/containers/linear-layout/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/containers/panel/bundles/index.umd.js +2 -2
- app-ng-runtime/components/containers/panel/esm2022/panel.component.mjs +2 -2
- app-ng-runtime/components/containers/panel/esm2022/panel.module.mjs +2 -2
- app-ng-runtime/components/containers/panel/fesm2022/index.mjs +3 -3
- app-ng-runtime/components/containers/panel/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/containers/tabs/bundles/index.umd.js +3 -3
- app-ng-runtime/components/containers/tabs/esm2022/tab-pane/tab-pane.component.mjs +2 -2
- app-ng-runtime/components/containers/tabs/esm2022/tabs.component.mjs +2 -2
- app-ng-runtime/components/containers/tabs/esm2022/tabs.module.mjs +2 -2
- app-ng-runtime/components/containers/tabs/fesm2022/index.mjs +5 -5
- app-ng-runtime/components/containers/tabs/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/containers/tile/bundles/index.umd.js +2 -2
- app-ng-runtime/components/containers/tile/esm2022/tile.directive.mjs +2 -2
- app-ng-runtime/components/containers/tile/esm2022/tile.module.mjs +2 -2
- app-ng-runtime/components/containers/tile/fesm2022/index.mjs +3 -3
- app-ng-runtime/components/containers/tile/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/containers/wizard/bundles/index.umd.js +3 -3
- app-ng-runtime/components/containers/wizard/esm2022/wizard-step/wizard-step.directive.mjs +2 -2
- app-ng-runtime/components/containers/wizard/esm2022/wizard.component.mjs +2 -2
- app-ng-runtime/components/containers/wizard/esm2022/wizard.module.mjs +2 -2
- app-ng-runtime/components/containers/wizard/fesm2022/index.mjs +4 -4
- app-ng-runtime/components/containers/wizard/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/data/card/bundles/index.umd.js +5 -5
- app-ng-runtime/components/data/card/esm2022/card-actions/card-actions.directive.mjs +2 -2
- app-ng-runtime/components/data/card/esm2022/card-content/card-content.component.mjs +2 -2
- app-ng-runtime/components/data/card/esm2022/card-footer/card-footer.directive.mjs +2 -2
- app-ng-runtime/components/data/card/esm2022/card.component.mjs +2 -2
- app-ng-runtime/components/data/card/esm2022/card.module.mjs +2 -2
- app-ng-runtime/components/data/card/fesm2022/index.mjs +6 -6
- app-ng-runtime/components/data/card/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/data/form/bundles/index.umd.js +9 -9
- app-ng-runtime/components/data/form/esm2022/form-action/form-action.directive.mjs +2 -2
- app-ng-runtime/components/data/form/esm2022/form-field/form-field.directive.mjs +2 -2
- app-ng-runtime/components/data/form/esm2022/form-widget.directive.mjs +2 -2
- app-ng-runtime/components/data/form/esm2022/form.component.mjs +2 -2
- app-ng-runtime/components/data/form/esm2022/form.module.mjs +2 -2
- app-ng-runtime/components/data/form/esm2022/live-actions/dependson.directive.mjs +2 -2
- app-ng-runtime/components/data/form/esm2022/live-actions/live-actions.directive.mjs +2 -2
- app-ng-runtime/components/data/form/esm2022/live-filter/live-filter.directive.mjs +2 -2
- app-ng-runtime/components/data/form/esm2022/live-form/live-form.directive.mjs +2 -2
- app-ng-runtime/components/data/form/fesm2022/index.mjs +11 -11
- app-ng-runtime/components/data/form/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/data/list/bundles/index.umd.js +3 -3
- app-ng-runtime/components/data/list/esm2022/list-item.directive.mjs +2 -2
- app-ng-runtime/components/data/list/esm2022/list.component.mjs +2 -2
- app-ng-runtime/components/data/list/esm2022/list.module.mjs +2 -2
- app-ng-runtime/components/data/list/fesm2022/index.mjs +4 -4
- app-ng-runtime/components/data/list/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/data/live-table/bundles/index.umd.js +2 -2
- app-ng-runtime/components/data/live-table/esm2022/live-table.component.mjs +2 -2
- app-ng-runtime/components/data/live-table/esm2022/live-table.module.mjs +2 -2
- app-ng-runtime/components/data/live-table/fesm2022/index.mjs +3 -3
- app-ng-runtime/components/data/live-table/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/data/pagination/bundles/index.umd.js +2 -2
- app-ng-runtime/components/data/pagination/esm2022/pagination.component.mjs +2 -2
- app-ng-runtime/components/data/pagination/esm2022/pagination.module.mjs +2 -2
- app-ng-runtime/components/data/pagination/fesm2022/index.mjs +3 -3
- app-ng-runtime/components/data/pagination/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/data/table/bundles/index.umd.js +9 -9
- app-ng-runtime/components/data/table/esm2022/table-action/table-action.directive.mjs +2 -2
- app-ng-runtime/components/data/table/esm2022/table-column/table-column.directive.mjs +2 -2
- app-ng-runtime/components/data/table/esm2022/table-column-group/table-column-group.directive.mjs +2 -2
- app-ng-runtime/components/data/table/esm2022/table-cud.directive.mjs +2 -2
- app-ng-runtime/components/data/table/esm2022/table-filter.directive.mjs +2 -2
- app-ng-runtime/components/data/table/esm2022/table-row/table-row.directive.mjs +2 -2
- app-ng-runtime/components/data/table/esm2022/table-row-action/table-row-action.directive.mjs +2 -2
- app-ng-runtime/components/data/table/esm2022/table.component.mjs +2 -2
- app-ng-runtime/components/data/table/esm2022/table.module.mjs +2 -2
- app-ng-runtime/components/data/table/fesm2022/index.mjs +11 -11
- app-ng-runtime/components/data/table/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/dialogs/alert-dialog/bundles/index.umd.js +2 -2
- app-ng-runtime/components/dialogs/alert-dialog/esm2022/alert-dialog.component.mjs +2 -2
- app-ng-runtime/components/dialogs/alert-dialog/esm2022/alert-dialog.module.mjs +2 -2
- app-ng-runtime/components/dialogs/alert-dialog/fesm2022/index.mjs +3 -3
- app-ng-runtime/components/dialogs/alert-dialog/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/dialogs/confirm-dialog/bundles/index.umd.js +2 -2
- app-ng-runtime/components/dialogs/confirm-dialog/esm2022/confirm-dialog.component.mjs +2 -2
- app-ng-runtime/components/dialogs/confirm-dialog/esm2022/confirm-dialog.module.mjs +2 -2
- app-ng-runtime/components/dialogs/confirm-dialog/fesm2022/index.mjs +3 -3
- app-ng-runtime/components/dialogs/confirm-dialog/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/dialogs/default/bundles/index.umd.js +5 -5
- app-ng-runtime/components/dialogs/default/esm2022/base-dialog.mjs +2 -2
- app-ng-runtime/components/dialogs/default/esm2022/dialog-body/dialog-body.directive.mjs +2 -2
- app-ng-runtime/components/dialogs/default/esm2022/dialog-footer/dialog-footer.directive.mjs +2 -2
- app-ng-runtime/components/dialogs/default/esm2022/dialog-header/dialog-header.component.mjs +2 -2
- app-ng-runtime/components/dialogs/default/esm2022/dialog.module.mjs +2 -2
- app-ng-runtime/components/dialogs/default/fesm2022/index.mjs +6 -6
- app-ng-runtime/components/dialogs/default/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/dialogs/design-dialog/bundles/index.umd.js +2 -2
- app-ng-runtime/components/dialogs/design-dialog/esm2022/design-dialog.module.mjs +2 -2
- app-ng-runtime/components/dialogs/design-dialog/esm2022/dialog.component.mjs +2 -2
- app-ng-runtime/components/dialogs/design-dialog/fesm2022/index.mjs +3 -3
- app-ng-runtime/components/dialogs/design-dialog/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/dialogs/iframe-dialog/bundles/index.umd.js +2 -2
- app-ng-runtime/components/dialogs/iframe-dialog/esm2022/iframe-dialog.component.mjs +2 -2
- app-ng-runtime/components/dialogs/iframe-dialog/esm2022/iframe-dialog.module.mjs +2 -2
- app-ng-runtime/components/dialogs/iframe-dialog/fesm2022/index.mjs +3 -3
- app-ng-runtime/components/dialogs/iframe-dialog/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/dialogs/login-dialog/bundles/index.umd.js +2 -2
- app-ng-runtime/components/dialogs/login-dialog/esm2022/login-dialog.directive.mjs +2 -2
- app-ng-runtime/components/dialogs/login-dialog/esm2022/login-dialog.module.mjs +2 -2
- app-ng-runtime/components/dialogs/login-dialog/fesm2022/index.mjs +2 -2
- app-ng-runtime/components/dialogs/login-dialog/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/dialogs/partial-dialog/bundles/index.umd.js +2 -2
- app-ng-runtime/components/dialogs/partial-dialog/esm2022/partial-dialog.component.mjs +2 -2
- app-ng-runtime/components/dialogs/partial-dialog/esm2022/partial-dialog.module.mjs +2 -2
- app-ng-runtime/components/dialogs/partial-dialog/fesm2022/index.mjs +3 -3
- app-ng-runtime/components/dialogs/partial-dialog/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/calendar/bundles/index.umd.js +2 -2
- app-ng-runtime/components/input/calendar/esm2022/calendar.component.mjs +2 -2
- app-ng-runtime/components/input/calendar/esm2022/calendar.module.mjs +2 -2
- app-ng-runtime/components/input/calendar/fesm2022/index.mjs +4 -4
- app-ng-runtime/components/input/calendar/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/chips/bundles/index.umd.js +2 -2
- app-ng-runtime/components/input/chips/esm2022/chips.component.mjs +2 -2
- app-ng-runtime/components/input/chips/esm2022/chips.module.mjs +2 -2
- app-ng-runtime/components/input/chips/fesm2022/index.mjs +3 -3
- app-ng-runtime/components/input/chips/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/color-picker/bundles/index.umd.js +2 -2
- app-ng-runtime/components/input/color-picker/esm2022/color-picker.component.mjs +2 -2
- app-ng-runtime/components/input/color-picker/esm2022/color-picker.module.mjs +2 -2
- app-ng-runtime/components/input/color-picker/fesm2022/index.mjs +2 -2
- app-ng-runtime/components/input/color-picker/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/currency/bundles/index.umd.js +2 -2
- app-ng-runtime/components/input/currency/esm2022/currency.component.mjs +2 -2
- app-ng-runtime/components/input/currency/esm2022/currency.module.mjs +2 -2
- app-ng-runtime/components/input/currency/fesm2022/index.mjs +2 -2
- app-ng-runtime/components/input/currency/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/default/bundles/index.umd.js +21 -21
- app-ng-runtime/components/input/default/esm2022/base-form-custom.component.mjs +2 -2
- app-ng-runtime/components/input/default/esm2022/base-form.component.mjs +2 -2
- app-ng-runtime/components/input/default/esm2022/button/button.component.mjs +2 -2
- app-ng-runtime/components/input/default/esm2022/button-group/button-group.directive.mjs +2 -2
- app-ng-runtime/components/input/default/esm2022/caption-position.directive.mjs +2 -2
- app-ng-runtime/components/input/default/esm2022/checkbox/checkbox.component.mjs +2 -2
- app-ng-runtime/components/input/default/esm2022/checkboxset/checkboxset.component.mjs +2 -2
- app-ng-runtime/components/input/default/esm2022/composite/composite.directive.mjs +2 -2
- app-ng-runtime/components/input/default/esm2022/dataset-aware-form.component.mjs +2 -2
- app-ng-runtime/components/input/default/esm2022/input.module.mjs +2 -2
- app-ng-runtime/components/input/default/esm2022/number/number.component.mjs +2 -2
- app-ng-runtime/components/input/default/esm2022/radioset/radioset.component.mjs +2 -2
- app-ng-runtime/components/input/default/esm2022/select/select.component.mjs +2 -2
- app-ng-runtime/components/input/default/esm2022/switch/switch.component.mjs +2 -2
- app-ng-runtime/components/input/default/esm2022/text/base/base-input.mjs +2 -2
- app-ng-runtime/components/input/default/esm2022/text/calendar/input-calendar.component.mjs +2 -2
- app-ng-runtime/components/input/default/esm2022/text/color/input-color.component.mjs +2 -2
- app-ng-runtime/components/input/default/esm2022/text/email/input-email.component.mjs +2 -2
- app-ng-runtime/components/input/default/esm2022/text/number/input-number.component.mjs +2 -2
- app-ng-runtime/components/input/default/esm2022/text/text/input-text.component.mjs +2 -2
- app-ng-runtime/components/input/default/esm2022/textarea/textarea.component.mjs +2 -2
- app-ng-runtime/components/input/default/fesm2022/index.mjs +26 -26
- app-ng-runtime/components/input/default/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/epoch/bundles/index.umd.js +10 -10
- app-ng-runtime/components/input/epoch/esm2022/base-date-time.component.mjs +1 -1
- app-ng-runtime/components/input/epoch/esm2022/date/date.component.mjs +2 -2
- app-ng-runtime/components/input/epoch/esm2022/date-time/date-time-picker.component.mjs +4 -4
- app-ng-runtime/components/input/epoch/esm2022/date-time/date-time.component.mjs +2 -2
- app-ng-runtime/components/input/epoch/esm2022/epoch.module.mjs +2 -2
- app-ng-runtime/components/input/epoch/esm2022/picker/picker.component.mjs +3 -3
- app-ng-runtime/components/input/epoch/esm2022/time/time.component.mjs +2 -2
- app-ng-runtime/components/input/epoch/fesm2022/index.mjs +11 -11
- app-ng-runtime/components/input/epoch/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/file-upload/bundles/index.umd.js +2 -2
- app-ng-runtime/components/input/file-upload/esm2022/file-upload.component.mjs +2 -2
- app-ng-runtime/components/input/file-upload/esm2022/file-upload.module.mjs +2 -2
- app-ng-runtime/components/input/file-upload/fesm2022/index.mjs +3 -3
- app-ng-runtime/components/input/file-upload/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/rating/bundles/index.umd.js +2 -2
- app-ng-runtime/components/input/rating/esm2022/rating.component.mjs +2 -2
- app-ng-runtime/components/input/rating/esm2022/rating.module.mjs +2 -2
- app-ng-runtime/components/input/rating/fesm2022/index.mjs +2 -2
- app-ng-runtime/components/input/rating/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/slider/bundles/index.umd.js +2 -2
- app-ng-runtime/components/input/slider/esm2022/slider.component.mjs +2 -2
- app-ng-runtime/components/input/slider/esm2022/slider.module.mjs +2 -2
- app-ng-runtime/components/input/slider/fesm2022/index.mjs +2 -2
- app-ng-runtime/components/input/slider/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/navigation/breadcrumb/bundles/index.umd.js +2 -2
- app-ng-runtime/components/navigation/breadcrumb/esm2022/breadcrumb.component.mjs +2 -2
- app-ng-runtime/components/navigation/breadcrumb/esm2022/breadcrumb.module.mjs +2 -2
- app-ng-runtime/components/navigation/breadcrumb/fesm2022/index.mjs +3 -3
- app-ng-runtime/components/navigation/breadcrumb/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/navigation/menu/bundles/index.umd.js +8 -8
- app-ng-runtime/components/navigation/menu/esm2022/menu-adapator.component.mjs +1 -1
- app-ng-runtime/components/navigation/menu/esm2022/menu-dropdown/menu-dropdown.component.mjs +2 -2
- app-ng-runtime/components/navigation/menu/esm2022/menu-dropdown-item/menu-dropdown-item.component.mjs +2 -2
- app-ng-runtime/components/navigation/menu/esm2022/menu.component.mjs +2 -2
- app-ng-runtime/components/navigation/menu/esm2022/menu.module.mjs +2 -2
- app-ng-runtime/components/navigation/menu/esm2022/nav/nav-item/nav-item.directive.mjs +2 -2
- app-ng-runtime/components/navigation/menu/esm2022/nav/nav.component.mjs +2 -2
- app-ng-runtime/components/navigation/menu/esm2022/nav/navigation-control.directive.mjs +2 -2
- app-ng-runtime/components/navigation/menu/fesm2022/index.mjs +10 -10
- app-ng-runtime/components/navigation/menu/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/navigation/navbar/bundles/index.umd.js +2 -2
- app-ng-runtime/components/navigation/navbar/esm2022/navbar.component.mjs +2 -2
- app-ng-runtime/components/navigation/navbar/esm2022/navbar.module.mjs +2 -2
- app-ng-runtime/components/navigation/navbar/fesm2022/index.mjs +3 -3
- app-ng-runtime/components/navigation/navbar/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/navigation/popover/bundles/index.umd.js +2 -2
- app-ng-runtime/components/navigation/popover/esm2022/popover.component.mjs +2 -2
- app-ng-runtime/components/navigation/popover/esm2022/popover.module.mjs +2 -2
- app-ng-runtime/components/navigation/popover/fesm2022/index.mjs +3 -3
- app-ng-runtime/components/navigation/popover/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/page/default/bundles/index.umd.js +7 -7
- app-ng-runtime/components/page/default/esm2022/content/content.component.mjs +2 -2
- app-ng-runtime/components/page/default/esm2022/layout.directive.mjs +2 -2
- app-ng-runtime/components/page/default/esm2022/page-content/page-content.component.mjs +2 -2
- app-ng-runtime/components/page/default/esm2022/page.directive.mjs +2 -2
- app-ng-runtime/components/page/default/esm2022/page.module.mjs +2 -2
- app-ng-runtime/components/page/default/esm2022/router-outlet.directive.mjs +2 -2
- app-ng-runtime/components/page/default/esm2022/spa-page.directive.mjs +2 -2
- app-ng-runtime/components/page/default/fesm2022/index.mjs +8 -8
- app-ng-runtime/components/page/default/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/page/footer/bundles/index.umd.js +2 -2
- app-ng-runtime/components/page/footer/esm2022/footer.directive.mjs +2 -2
- app-ng-runtime/components/page/footer/esm2022/footer.module.mjs +2 -2
- app-ng-runtime/components/page/footer/fesm2022/index.mjs +3 -3
- app-ng-runtime/components/page/footer/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/page/header/bundles/index.umd.js +2 -2
- app-ng-runtime/components/page/header/esm2022/header.component.mjs +2 -2
- app-ng-runtime/components/page/header/esm2022/header.module.mjs +2 -2
- app-ng-runtime/components/page/header/fesm2022/index.mjs +3 -3
- app-ng-runtime/components/page/header/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/page/left-panel/bundles/index.umd.js +2 -2
- app-ng-runtime/components/page/left-panel/esm2022/left-panel.directive.mjs +2 -2
- app-ng-runtime/components/page/left-panel/esm2022/left-panel.module.mjs +2 -2
- app-ng-runtime/components/page/left-panel/fesm2022/index.mjs +3 -3
- app-ng-runtime/components/page/left-panel/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/page/right-panel/bundles/index.umd.js +2 -2
- app-ng-runtime/components/page/right-panel/esm2022/right-panel.directive.mjs +2 -2
- app-ng-runtime/components/page/right-panel/esm2022/right-panel.module.mjs +2 -2
- app-ng-runtime/components/page/right-panel/fesm2022/index.mjs +3 -3
- app-ng-runtime/components/page/right-panel/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/page/top-nav/bundles/index.umd.js +2 -2
- app-ng-runtime/components/page/top-nav/esm2022/top-nav.directive.mjs +2 -2
- app-ng-runtime/components/page/top-nav/esm2022/top-nav.module.mjs +2 -2
- app-ng-runtime/components/page/top-nav/fesm2022/index.mjs +3 -3
- app-ng-runtime/components/page/top-nav/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/prefab/bundles/index.umd.js +3 -3
- app-ng-runtime/components/prefab/esm2022/prefab-container/prefab-container.directive.mjs +2 -2
- app-ng-runtime/components/prefab/esm2022/prefab.directive.mjs +2 -2
- app-ng-runtime/components/prefab/esm2022/prefab.module.mjs +2 -2
- app-ng-runtime/components/prefab/fesm2022/index.mjs +3 -3
- app-ng-runtime/components/prefab/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/core/bundles/index.umd.js +11 -11
- app-ng-runtime/core/esm2022/core.module.mjs +2 -2
- app-ng-runtime/core/esm2022/services/constant.service.mjs +2 -2
- app-ng-runtime/core/esm2022/services/custom-icons-loader.service.mjs +2 -2
- app-ng-runtime/core/esm2022/services/field-type.service.mjs +2 -2
- app-ng-runtime/core/esm2022/services/field-widget.service.mjs +2 -2
- app-ng-runtime/core/esm2022/services/pagination.service.mjs +2 -2
- app-ng-runtime/core/esm2022/services/script-loader.service.mjs +2 -2
- app-ng-runtime/core/esm2022/services/state-persistence.service.mjs +2 -2
- app-ng-runtime/core/esm2022/services/user-custom-pipe-manager.service.mjs +2 -2
- app-ng-runtime/core/esm2022/services/utils.service.mjs +2 -2
- app-ng-runtime/core/esm2022/services/viewport.service.mjs +2 -2
- app-ng-runtime/core/fesm2022/index.mjs +13 -13
- app-ng-runtime/core/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/http/bundles/index.umd.js +2 -2
- app-ng-runtime/http/esm2022/http-service.module.mjs +2 -2
- app-ng-runtime/http/esm2022/http.service.mjs +2 -2
- app-ng-runtime/http/fesm2022/index.mjs +2 -2
- app-ng-runtime/http/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/locales/angular/global/af-na.js +1 -1
- app-ng-runtime/locales/angular/global/af.js +1 -1
- app-ng-runtime/locales/angular/global/agq.js +1 -1
- app-ng-runtime/locales/angular/global/ak.js +1 -1
- app-ng-runtime/locales/angular/global/am.js +1 -1
- app-ng-runtime/locales/angular/global/ar-ae.js +1 -1
- app-ng-runtime/locales/angular/global/ar-bh.js +1 -1
- app-ng-runtime/locales/angular/global/ar-dj.js +1 -1
- app-ng-runtime/locales/angular/global/ar-dz.js +1 -1
- app-ng-runtime/locales/angular/global/ar-eg.js +1 -1
- app-ng-runtime/locales/angular/global/ar-eh.js +1 -1
- app-ng-runtime/locales/angular/global/ar-er.js +1 -1
- app-ng-runtime/locales/angular/global/ar-il.js +1 -1
- app-ng-runtime/locales/angular/global/ar-iq.js +1 -1
- app-ng-runtime/locales/angular/global/ar-jo.js +1 -1
- app-ng-runtime/locales/angular/global/ar-km.js +1 -1
- app-ng-runtime/locales/angular/global/ar-kw.js +1 -1
- app-ng-runtime/locales/angular/global/ar-lb.js +1 -1
- app-ng-runtime/locales/angular/global/ar-ly.js +1 -1
- app-ng-runtime/locales/angular/global/ar-ma.js +1 -1
- app-ng-runtime/locales/angular/global/ar-mr.js +1 -1
- app-ng-runtime/locales/angular/global/ar-om.js +1 -1
- app-ng-runtime/locales/angular/global/ar-ps.js +1 -1
- app-ng-runtime/locales/angular/global/ar-qa.js +1 -1
- app-ng-runtime/locales/angular/global/ar-sa.js +1 -1
- app-ng-runtime/locales/angular/global/ar-sd.js +1 -1
- app-ng-runtime/locales/angular/global/ar-so.js +1 -1
- app-ng-runtime/locales/angular/global/ar-ss.js +1 -1
- app-ng-runtime/locales/angular/global/ar-sy.js +1 -1
- app-ng-runtime/locales/angular/global/ar-td.js +1 -1
- app-ng-runtime/locales/angular/global/ar-tn.js +1 -1
- app-ng-runtime/locales/angular/global/ar-ye.js +1 -1
- app-ng-runtime/locales/angular/global/ar.js +1 -1
- app-ng-runtime/locales/angular/global/as.js +1 -1
- app-ng-runtime/locales/angular/global/asa.js +1 -1
- app-ng-runtime/locales/angular/global/ast.js +1 -1
- app-ng-runtime/locales/angular/global/az-cyrl.js +1 -1
- app-ng-runtime/locales/angular/global/az-latn.js +1 -1
- app-ng-runtime/locales/angular/global/az.js +1 -1
- app-ng-runtime/locales/angular/global/bas.js +1 -1
- app-ng-runtime/locales/angular/global/be-tarask.js +1 -1
- app-ng-runtime/locales/angular/global/be.js +1 -1
- app-ng-runtime/locales/angular/global/bem.js +1 -1
- app-ng-runtime/locales/angular/global/bez.js +1 -1
- app-ng-runtime/locales/angular/global/bg.js +1 -1
- app-ng-runtime/locales/angular/global/bm.js +1 -1
- app-ng-runtime/locales/angular/global/bn-in.js +1 -1
- app-ng-runtime/locales/angular/global/bn.js +1 -1
- app-ng-runtime/locales/angular/global/bo-in.js +1 -1
- app-ng-runtime/locales/angular/global/bo.js +1 -1
- app-ng-runtime/locales/angular/global/br.js +1 -1
- app-ng-runtime/locales/angular/global/brx.js +1 -1
- app-ng-runtime/locales/angular/global/bs-cyrl.js +1 -1
- app-ng-runtime/locales/angular/global/bs-latn.js +1 -1
- app-ng-runtime/locales/angular/global/bs.js +1 -1
- app-ng-runtime/locales/angular/global/ca-ad.js +1 -1
- app-ng-runtime/locales/angular/global/ca-es-valencia.js +1 -1
- app-ng-runtime/locales/angular/global/ca-fr.js +1 -1
- app-ng-runtime/locales/angular/global/ca-it.js +1 -1
- app-ng-runtime/locales/angular/global/ca.js +1 -1
- app-ng-runtime/locales/angular/global/ccp-in.js +1 -1
- app-ng-runtime/locales/angular/global/ccp.js +1 -1
- app-ng-runtime/locales/angular/global/ce.js +1 -1
- app-ng-runtime/locales/angular/global/ceb.js +1 -1
- app-ng-runtime/locales/angular/global/cgg.js +1 -1
- app-ng-runtime/locales/angular/global/chr.js +1 -1
- app-ng-runtime/locales/angular/global/ckb-ir.js +1 -1
- app-ng-runtime/locales/angular/global/ckb.js +1 -1
- app-ng-runtime/locales/angular/global/cs.js +1 -1
- app-ng-runtime/locales/angular/global/cy.js +1 -1
- app-ng-runtime/locales/angular/global/da-gl.js +1 -1
- app-ng-runtime/locales/angular/global/da.js +1 -1
- app-ng-runtime/locales/angular/global/dav.js +1 -1
- app-ng-runtime/locales/angular/global/de-at.js +1 -1
- app-ng-runtime/locales/angular/global/de-be.js +1 -1
- app-ng-runtime/locales/angular/global/de-ch.js +1 -1
- app-ng-runtime/locales/angular/global/de-it.js +1 -1
- app-ng-runtime/locales/angular/global/de-li.js +1 -1
- app-ng-runtime/locales/angular/global/de-lu.js +1 -1
- app-ng-runtime/locales/angular/global/de.js +1 -1
- app-ng-runtime/locales/angular/global/dje.js +1 -1
- app-ng-runtime/locales/angular/global/doi.js +1 -1
- app-ng-runtime/locales/angular/global/dsb.js +1 -1
- app-ng-runtime/locales/angular/global/dua.js +1 -1
- app-ng-runtime/locales/angular/global/dyo.js +1 -1
- app-ng-runtime/locales/angular/global/dz.js +1 -1
- app-ng-runtime/locales/angular/global/ebu.js +1 -1
- app-ng-runtime/locales/angular/global/ee-tg.js +1 -1
- app-ng-runtime/locales/angular/global/ee.js +1 -1
- app-ng-runtime/locales/angular/global/el-cy.js +1 -1
- app-ng-runtime/locales/angular/global/el.js +1 -1
- app-ng-runtime/locales/angular/global/en-001.js +1 -1
- app-ng-runtime/locales/angular/global/en-150.js +1 -1
- app-ng-runtime/locales/angular/global/en-ae.js +1 -1
- app-ng-runtime/locales/angular/global/en-ag.js +1 -1
- app-ng-runtime/locales/angular/global/en-ai.js +1 -1
- app-ng-runtime/locales/angular/global/en-as.js +1 -1
- app-ng-runtime/locales/angular/global/en-at.js +1 -1
- app-ng-runtime/locales/angular/global/en-au.js +1 -1
- app-ng-runtime/locales/angular/global/en-bb.js +1 -1
- app-ng-runtime/locales/angular/global/en-be.js +1 -1
- app-ng-runtime/locales/angular/global/en-bi.js +1 -1
- app-ng-runtime/locales/angular/global/en-bm.js +1 -1
- app-ng-runtime/locales/angular/global/en-bs.js +1 -1
- app-ng-runtime/locales/angular/global/en-bw.js +1 -1
- app-ng-runtime/locales/angular/global/en-bz.js +1 -1
- app-ng-runtime/locales/angular/global/en-ca.js +1 -1
- app-ng-runtime/locales/angular/global/en-cc.js +1 -1
- app-ng-runtime/locales/angular/global/en-ch.js +1 -1
- app-ng-runtime/locales/angular/global/en-ck.js +1 -1
- app-ng-runtime/locales/angular/global/en-cm.js +1 -1
- app-ng-runtime/locales/angular/global/en-cx.js +1 -1
- app-ng-runtime/locales/angular/global/en-cy.js +1 -1
- app-ng-runtime/locales/angular/global/en-de.js +1 -1
- app-ng-runtime/locales/angular/global/en-dg.js +1 -1
- app-ng-runtime/locales/angular/global/en-dk.js +1 -1
- app-ng-runtime/locales/angular/global/en-dm.js +1 -1
- app-ng-runtime/locales/angular/global/en-er.js +1 -1
- app-ng-runtime/locales/angular/global/en-fi.js +1 -1
- app-ng-runtime/locales/angular/global/en-fj.js +1 -1
- app-ng-runtime/locales/angular/global/en-fk.js +1 -1
- app-ng-runtime/locales/angular/global/en-fm.js +1 -1
- app-ng-runtime/locales/angular/global/en-gb.js +1 -1
- app-ng-runtime/locales/angular/global/en-gd.js +1 -1
- app-ng-runtime/locales/angular/global/en-gg.js +1 -1
- app-ng-runtime/locales/angular/global/en-gh.js +1 -1
- app-ng-runtime/locales/angular/global/en-gi.js +1 -1
- app-ng-runtime/locales/angular/global/en-gm.js +1 -1
- app-ng-runtime/locales/angular/global/en-gu.js +1 -1
- app-ng-runtime/locales/angular/global/en-gy.js +1 -1
- app-ng-runtime/locales/angular/global/en-hk.js +1 -1
- app-ng-runtime/locales/angular/global/en-ie.js +1 -1
- app-ng-runtime/locales/angular/global/en-il.js +1 -1
- app-ng-runtime/locales/angular/global/en-im.js +1 -1
- app-ng-runtime/locales/angular/global/en-in.js +1 -1
- app-ng-runtime/locales/angular/global/en-io.js +1 -1
- app-ng-runtime/locales/angular/global/en-je.js +1 -1
- app-ng-runtime/locales/angular/global/en-jm.js +1 -1
- app-ng-runtime/locales/angular/global/en-ke.js +1 -1
- app-ng-runtime/locales/angular/global/en-ki.js +1 -1
- app-ng-runtime/locales/angular/global/en-kn.js +1 -1
- app-ng-runtime/locales/angular/global/en-ky.js +1 -1
- app-ng-runtime/locales/angular/global/en-lc.js +1 -1
- app-ng-runtime/locales/angular/global/en-lr.js +1 -1
- app-ng-runtime/locales/angular/global/en-ls.js +1 -1
- app-ng-runtime/locales/angular/global/en-mg.js +1 -1
- app-ng-runtime/locales/angular/global/en-mh.js +1 -1
- app-ng-runtime/locales/angular/global/en-mo.js +1 -1
- app-ng-runtime/locales/angular/global/en-mp.js +1 -1
- app-ng-runtime/locales/angular/global/en-ms.js +1 -1
- app-ng-runtime/locales/angular/global/en-mt.js +1 -1
- app-ng-runtime/locales/angular/global/en-mu.js +1 -1
- app-ng-runtime/locales/angular/global/en-mv.js +1 -1
- app-ng-runtime/locales/angular/global/en-mw.js +1 -1
- app-ng-runtime/locales/angular/global/en-my.js +1 -1
- app-ng-runtime/locales/angular/global/en-na.js +1 -1
- app-ng-runtime/locales/angular/global/en-nf.js +1 -1
- app-ng-runtime/locales/angular/global/en-ng.js +1 -1
- app-ng-runtime/locales/angular/global/en-nl.js +1 -1
- app-ng-runtime/locales/angular/global/en-nr.js +1 -1
- app-ng-runtime/locales/angular/global/en-nu.js +1 -1
- app-ng-runtime/locales/angular/global/en-nz.js +1 -1
- app-ng-runtime/locales/angular/global/en-pg.js +1 -1
- app-ng-runtime/locales/angular/global/en-ph.js +1 -1
- app-ng-runtime/locales/angular/global/en-pk.js +1 -1
- app-ng-runtime/locales/angular/global/en-pn.js +1 -1
- app-ng-runtime/locales/angular/global/en-pr.js +1 -1
- app-ng-runtime/locales/angular/global/en-pw.js +1 -1
- app-ng-runtime/locales/angular/global/en-rw.js +1 -1
- app-ng-runtime/locales/angular/global/en-sb.js +1 -1
- app-ng-runtime/locales/angular/global/en-sc.js +1 -1
- app-ng-runtime/locales/angular/global/en-sd.js +1 -1
- app-ng-runtime/locales/angular/global/en-se.js +1 -1
- app-ng-runtime/locales/angular/global/en-sg.js +1 -1
- app-ng-runtime/locales/angular/global/en-sh.js +1 -1
- app-ng-runtime/locales/angular/global/en-si.js +1 -1
- app-ng-runtime/locales/angular/global/en-sl.js +1 -1
- app-ng-runtime/locales/angular/global/en-ss.js +1 -1
- app-ng-runtime/locales/angular/global/en-sx.js +1 -1
- app-ng-runtime/locales/angular/global/en-sz.js +1 -1
- app-ng-runtime/locales/angular/global/en-tc.js +1 -1
- app-ng-runtime/locales/angular/global/en-tk.js +1 -1
- app-ng-runtime/locales/angular/global/en-to.js +1 -1
- app-ng-runtime/locales/angular/global/en-tt.js +1 -1
- app-ng-runtime/locales/angular/global/en-tv.js +1 -1
- app-ng-runtime/locales/angular/global/en-tz.js +1 -1
- app-ng-runtime/locales/angular/global/en-ug.js +1 -1
- app-ng-runtime/locales/angular/global/en-um.js +1 -1
- app-ng-runtime/locales/angular/global/en-vc.js +1 -1
- app-ng-runtime/locales/angular/global/en-vg.js +1 -1
- app-ng-runtime/locales/angular/global/en-vi.js +1 -1
- app-ng-runtime/locales/angular/global/en-vu.js +1 -1
- app-ng-runtime/locales/angular/global/en-ws.js +1 -1
- app-ng-runtime/locales/angular/global/en-za.js +1 -1
- app-ng-runtime/locales/angular/global/en-zm.js +1 -1
- app-ng-runtime/locales/angular/global/en-zw.js +1 -1
- app-ng-runtime/locales/angular/global/en.js +1 -1
- app-ng-runtime/locales/angular/global/eo.js +1 -1
- app-ng-runtime/locales/angular/global/es-419.js +1 -1
- app-ng-runtime/locales/angular/global/es-ar.js +1 -1
- app-ng-runtime/locales/angular/global/es-bo.js +1 -1
- app-ng-runtime/locales/angular/global/es-br.js +1 -1
- app-ng-runtime/locales/angular/global/es-bz.js +1 -1
- app-ng-runtime/locales/angular/global/es-cl.js +1 -1
- app-ng-runtime/locales/angular/global/es-co.js +1 -1
- app-ng-runtime/locales/angular/global/es-cr.js +1 -1
- app-ng-runtime/locales/angular/global/es-cu.js +1 -1
- app-ng-runtime/locales/angular/global/es-do.js +1 -1
- app-ng-runtime/locales/angular/global/es-ea.js +1 -1
- app-ng-runtime/locales/angular/global/es-ec.js +1 -1
- app-ng-runtime/locales/angular/global/es-gq.js +1 -1
- app-ng-runtime/locales/angular/global/es-gt.js +1 -1
- app-ng-runtime/locales/angular/global/es-hn.js +1 -1
- app-ng-runtime/locales/angular/global/es-ic.js +1 -1
- app-ng-runtime/locales/angular/global/es-mx.js +1 -1
- app-ng-runtime/locales/angular/global/es-ni.js +1 -1
- app-ng-runtime/locales/angular/global/es-pa.js +1 -1
- app-ng-runtime/locales/angular/global/es-pe.js +1 -1
- app-ng-runtime/locales/angular/global/es-ph.js +1 -1
- app-ng-runtime/locales/angular/global/es-pr.js +1 -1
- app-ng-runtime/locales/angular/global/es-py.js +1 -1
- app-ng-runtime/locales/angular/global/es-sv.js +1 -1
- app-ng-runtime/locales/angular/global/es-us.js +1 -1
- app-ng-runtime/locales/angular/global/es-uy.js +1 -1
- app-ng-runtime/locales/angular/global/es-ve.js +1 -1
- app-ng-runtime/locales/angular/global/es.js +1 -1
- app-ng-runtime/locales/angular/global/et.js +1 -1
- app-ng-runtime/locales/angular/global/eu.js +1 -1
- app-ng-runtime/locales/angular/global/ewo.js +1 -1
- app-ng-runtime/locales/angular/global/fa-af.js +1 -1
- app-ng-runtime/locales/angular/global/fa.js +1 -1
- app-ng-runtime/locales/angular/global/ff-adlm-bf.js +1 -1
- app-ng-runtime/locales/angular/global/ff-adlm-cm.js +1 -1
- app-ng-runtime/locales/angular/global/ff-adlm-gh.js +1 -1
- app-ng-runtime/locales/angular/global/ff-adlm-gm.js +1 -1
- app-ng-runtime/locales/angular/global/ff-adlm-gw.js +1 -1
- app-ng-runtime/locales/angular/global/ff-adlm-lr.js +1 -1
- app-ng-runtime/locales/angular/global/ff-adlm-mr.js +1 -1
- app-ng-runtime/locales/angular/global/ff-adlm-ne.js +1 -1
- app-ng-runtime/locales/angular/global/ff-adlm-ng.js +1 -1
- app-ng-runtime/locales/angular/global/ff-adlm-sl.js +1 -1
- app-ng-runtime/locales/angular/global/ff-adlm-sn.js +1 -1
- app-ng-runtime/locales/angular/global/ff-adlm.js +1 -1
- app-ng-runtime/locales/angular/global/ff-cm.js +1 -1
- app-ng-runtime/locales/angular/global/ff-gn.js +1 -1
- app-ng-runtime/locales/angular/global/ff-latn-bf.js +1 -1
- app-ng-runtime/locales/angular/global/ff-latn-cm.js +1 -1
- app-ng-runtime/locales/angular/global/ff-latn-gh.js +1 -1
- app-ng-runtime/locales/angular/global/ff-latn-gm.js +1 -1
- app-ng-runtime/locales/angular/global/ff-latn-gn.js +1 -1
- app-ng-runtime/locales/angular/global/ff-latn-gw.js +1 -1
- app-ng-runtime/locales/angular/global/ff-latn-lr.js +1 -1
- app-ng-runtime/locales/angular/global/ff-latn-mr.js +1 -1
- app-ng-runtime/locales/angular/global/ff-latn-ne.js +1 -1
- app-ng-runtime/locales/angular/global/ff-latn-ng.js +1 -1
- app-ng-runtime/locales/angular/global/ff-latn-sl.js +1 -1
- app-ng-runtime/locales/angular/global/ff-latn.js +1 -1
- app-ng-runtime/locales/angular/global/ff-mr.js +1 -1
- app-ng-runtime/locales/angular/global/ff.js +1 -1
- app-ng-runtime/locales/angular/global/fi.js +1 -1
- app-ng-runtime/locales/angular/global/fil.js +1 -1
- app-ng-runtime/locales/angular/global/fo-dk.js +1 -1
- app-ng-runtime/locales/angular/global/fo.js +1 -1
- app-ng-runtime/locales/angular/global/fr-be.js +1 -1
- app-ng-runtime/locales/angular/global/fr-bf.js +1 -1
- app-ng-runtime/locales/angular/global/fr-bi.js +1 -1
- app-ng-runtime/locales/angular/global/fr-bj.js +1 -1
- app-ng-runtime/locales/angular/global/fr-bl.js +1 -1
- app-ng-runtime/locales/angular/global/fr-ca.js +1 -1
- app-ng-runtime/locales/angular/global/fr-cd.js +1 -1
- app-ng-runtime/locales/angular/global/fr-cf.js +1 -1
- app-ng-runtime/locales/angular/global/fr-cg.js +1 -1
- app-ng-runtime/locales/angular/global/fr-ch.js +1 -1
- app-ng-runtime/locales/angular/global/fr-ci.js +1 -1
- app-ng-runtime/locales/angular/global/fr-cm.js +1 -1
- app-ng-runtime/locales/angular/global/fr-dj.js +1 -1
- app-ng-runtime/locales/angular/global/fr-dz.js +1 -1
- app-ng-runtime/locales/angular/global/fr-ga.js +1 -1
- app-ng-runtime/locales/angular/global/fr-gf.js +1 -1
- app-ng-runtime/locales/angular/global/fr-gn.js +1 -1
- app-ng-runtime/locales/angular/global/fr-gp.js +1 -1
- app-ng-runtime/locales/angular/global/fr-gq.js +1 -1
- app-ng-runtime/locales/angular/global/fr-ht.js +1 -1
- app-ng-runtime/locales/angular/global/fr-km.js +1 -1
- app-ng-runtime/locales/angular/global/fr-lu.js +1 -1
- app-ng-runtime/locales/angular/global/fr-ma.js +1 -1
- app-ng-runtime/locales/angular/global/fr-mc.js +1 -1
- app-ng-runtime/locales/angular/global/fr-mf.js +1 -1
- app-ng-runtime/locales/angular/global/fr-mg.js +1 -1
- app-ng-runtime/locales/angular/global/fr-ml.js +1 -1
- app-ng-runtime/locales/angular/global/fr-mq.js +1 -1
- app-ng-runtime/locales/angular/global/fr-mr.js +1 -1
- app-ng-runtime/locales/angular/global/fr-mu.js +1 -1
- app-ng-runtime/locales/angular/global/fr-nc.js +1 -1
- app-ng-runtime/locales/angular/global/fr-ne.js +1 -1
- app-ng-runtime/locales/angular/global/fr-pf.js +1 -1
- app-ng-runtime/locales/angular/global/fr-pm.js +1 -1
- app-ng-runtime/locales/angular/global/fr-re.js +1 -1
- app-ng-runtime/locales/angular/global/fr-rw.js +1 -1
- app-ng-runtime/locales/angular/global/fr-sc.js +1 -1
- app-ng-runtime/locales/angular/global/fr-sn.js +1 -1
- app-ng-runtime/locales/angular/global/fr-sy.js +1 -1
- app-ng-runtime/locales/angular/global/fr-td.js +1 -1
- app-ng-runtime/locales/angular/global/fr-tg.js +1 -1
- app-ng-runtime/locales/angular/global/fr-tn.js +1 -1
- app-ng-runtime/locales/angular/global/fr-vu.js +1 -1
- app-ng-runtime/locales/angular/global/fr-wf.js +1 -1
- app-ng-runtime/locales/angular/global/fr-yt.js +1 -1
- app-ng-runtime/locales/angular/global/fr.js +1 -1
- app-ng-runtime/locales/angular/global/fur.js +1 -1
- app-ng-runtime/locales/angular/global/fy.js +1 -1
- app-ng-runtime/locales/angular/global/ga-gb.js +1 -1
- app-ng-runtime/locales/angular/global/ga.js +1 -1
- app-ng-runtime/locales/angular/global/gd.js +1 -1
- app-ng-runtime/locales/angular/global/gl.js +1 -1
- app-ng-runtime/locales/angular/global/gsw-fr.js +1 -1
- app-ng-runtime/locales/angular/global/gsw-li.js +1 -1
- app-ng-runtime/locales/angular/global/gsw.js +1 -1
- app-ng-runtime/locales/angular/global/gu.js +1 -1
- app-ng-runtime/locales/angular/global/guz.js +1 -1
- app-ng-runtime/locales/angular/global/gv.js +1 -1
- app-ng-runtime/locales/angular/global/ha-gh.js +1 -1
- app-ng-runtime/locales/angular/global/ha-ne.js +1 -1
- app-ng-runtime/locales/angular/global/ha.js +1 -1
- app-ng-runtime/locales/angular/global/haw.js +1 -1
- app-ng-runtime/locales/angular/global/he.js +1 -1
- app-ng-runtime/locales/angular/global/hi-latn.js +1 -1
- app-ng-runtime/locales/angular/global/hi.js +1 -1
- app-ng-runtime/locales/angular/global/hr-ba.js +1 -1
- app-ng-runtime/locales/angular/global/hr.js +1 -1
- app-ng-runtime/locales/angular/global/hsb.js +1 -1
- app-ng-runtime/locales/angular/global/hu.js +1 -1
- app-ng-runtime/locales/angular/global/hy.js +1 -1
- app-ng-runtime/locales/angular/global/ia.js +1 -1
- app-ng-runtime/locales/angular/global/id.js +1 -1
- app-ng-runtime/locales/angular/global/ig.js +1 -1
- app-ng-runtime/locales/angular/global/ii.js +1 -1
- app-ng-runtime/locales/angular/global/is.js +1 -1
- app-ng-runtime/locales/angular/global/it-ch.js +1 -1
- app-ng-runtime/locales/angular/global/it-sm.js +1 -1
- app-ng-runtime/locales/angular/global/it-va.js +1 -1
- app-ng-runtime/locales/angular/global/it.js +1 -1
- app-ng-runtime/locales/angular/global/ja.js +1 -1
- app-ng-runtime/locales/angular/global/jgo.js +1 -1
- app-ng-runtime/locales/angular/global/jmc.js +1 -1
- app-ng-runtime/locales/angular/global/jv.js +1 -1
- app-ng-runtime/locales/angular/global/ka.js +1 -1
- app-ng-runtime/locales/angular/global/kab.js +1 -1
- app-ng-runtime/locales/angular/global/kam.js +1 -1
- app-ng-runtime/locales/angular/global/kde.js +1 -1
- app-ng-runtime/locales/angular/global/kea.js +1 -1
- app-ng-runtime/locales/angular/global/kgp.js +1 -1
- app-ng-runtime/locales/angular/global/khq.js +1 -1
- app-ng-runtime/locales/angular/global/ki.js +1 -1
- app-ng-runtime/locales/angular/global/kk.js +1 -1
- app-ng-runtime/locales/angular/global/kkj.js +1 -1
- app-ng-runtime/locales/angular/global/kl.js +1 -1
- app-ng-runtime/locales/angular/global/kln.js +1 -1
- app-ng-runtime/locales/angular/global/km.js +1 -1
- app-ng-runtime/locales/angular/global/kn.js +1 -1
- app-ng-runtime/locales/angular/global/ko-kp.js +1 -1
- app-ng-runtime/locales/angular/global/ko.js +1 -1
- app-ng-runtime/locales/angular/global/kok.js +1 -1
- app-ng-runtime/locales/angular/global/ks-arab.js +1 -1
- app-ng-runtime/locales/angular/global/ks-deva.js +1 -1
- app-ng-runtime/locales/angular/global/ks.js +1 -1
- app-ng-runtime/locales/angular/global/ksb.js +1 -1
- app-ng-runtime/locales/angular/global/ksf.js +1 -1
- app-ng-runtime/locales/angular/global/ksh.js +1 -1
- app-ng-runtime/locales/angular/global/ku.js +1 -1
- app-ng-runtime/locales/angular/global/kw.js +1 -1
- app-ng-runtime/locales/angular/global/ky.js +1 -1
- app-ng-runtime/locales/angular/global/lag.js +1 -1
- app-ng-runtime/locales/angular/global/lb.js +1 -1
- app-ng-runtime/locales/angular/global/lg.js +1 -1
- app-ng-runtime/locales/angular/global/lkt.js +1 -1
- app-ng-runtime/locales/angular/global/ln-ao.js +1 -1
- app-ng-runtime/locales/angular/global/ln-cf.js +1 -1
- app-ng-runtime/locales/angular/global/ln-cg.js +1 -1
- app-ng-runtime/locales/angular/global/ln.js +1 -1
- app-ng-runtime/locales/angular/global/lo.js +1 -1
- app-ng-runtime/locales/angular/global/lrc-iq.js +1 -1
- app-ng-runtime/locales/angular/global/lrc.js +1 -1
- app-ng-runtime/locales/angular/global/lt.js +1 -1
- app-ng-runtime/locales/angular/global/lu.js +1 -1
- app-ng-runtime/locales/angular/global/luo.js +1 -1
- app-ng-runtime/locales/angular/global/luy.js +1 -1
- app-ng-runtime/locales/angular/global/lv.js +1 -1
- app-ng-runtime/locales/angular/global/mai.js +1 -1
- app-ng-runtime/locales/angular/global/mas-tz.js +1 -1
- app-ng-runtime/locales/angular/global/mas.js +1 -1
- app-ng-runtime/locales/angular/global/mer.js +1 -1
- app-ng-runtime/locales/angular/global/mfe.js +1 -1
- app-ng-runtime/locales/angular/global/mg.js +1 -1
- app-ng-runtime/locales/angular/global/mgh.js +1 -1
- app-ng-runtime/locales/angular/global/mgo.js +1 -1
- app-ng-runtime/locales/angular/global/mi.js +1 -1
- app-ng-runtime/locales/angular/global/mk.js +1 -1
- app-ng-runtime/locales/angular/global/ml.js +1 -1
- app-ng-runtime/locales/angular/global/mn.js +1 -1
- app-ng-runtime/locales/angular/global/mni-beng.js +1 -1
- app-ng-runtime/locales/angular/global/mni.js +1 -1
- app-ng-runtime/locales/angular/global/mr.js +1 -1
- app-ng-runtime/locales/angular/global/ms-bn.js +1 -1
- app-ng-runtime/locales/angular/global/ms-id.js +1 -1
- app-ng-runtime/locales/angular/global/ms-sg.js +1 -1
- app-ng-runtime/locales/angular/global/ms.js +1 -1
- app-ng-runtime/locales/angular/global/mt.js +1 -1
- app-ng-runtime/locales/angular/global/mua.js +1 -1
- app-ng-runtime/locales/angular/global/my.js +1 -1
- app-ng-runtime/locales/angular/global/mzn.js +1 -1
- app-ng-runtime/locales/angular/global/naq.js +1 -1
- app-ng-runtime/locales/angular/global/nb-sj.js +1 -1
- app-ng-runtime/locales/angular/global/nb.js +1 -1
- app-ng-runtime/locales/angular/global/nd.js +1 -1
- app-ng-runtime/locales/angular/global/nds-nl.js +1 -1
- app-ng-runtime/locales/angular/global/nds.js +1 -1
- app-ng-runtime/locales/angular/global/ne-in.js +1 -1
- app-ng-runtime/locales/angular/global/ne.js +1 -1
- app-ng-runtime/locales/angular/global/nl-aw.js +1 -1
- app-ng-runtime/locales/angular/global/nl-be.js +1 -1
- app-ng-runtime/locales/angular/global/nl-bq.js +1 -1
- app-ng-runtime/locales/angular/global/nl-cw.js +1 -1
- app-ng-runtime/locales/angular/global/nl-sr.js +1 -1
- app-ng-runtime/locales/angular/global/nl-sx.js +1 -1
- app-ng-runtime/locales/angular/global/nl.js +1 -1
- app-ng-runtime/locales/angular/global/nmg.js +1 -1
- app-ng-runtime/locales/angular/global/nn.js +1 -1
- app-ng-runtime/locales/angular/global/nnh.js +1 -1
- app-ng-runtime/locales/angular/global/no.js +1 -1
- app-ng-runtime/locales/angular/global/nus.js +1 -1
- app-ng-runtime/locales/angular/global/nyn.js +1 -1
- app-ng-runtime/locales/angular/global/om-ke.js +1 -1
- app-ng-runtime/locales/angular/global/om.js +1 -1
- app-ng-runtime/locales/angular/global/or.js +1 -1
- app-ng-runtime/locales/angular/global/os-ru.js +1 -1
- app-ng-runtime/locales/angular/global/os.js +1 -1
- app-ng-runtime/locales/angular/global/pa-arab.js +1 -1
- app-ng-runtime/locales/angular/global/pa-guru.js +1 -1
- app-ng-runtime/locales/angular/global/pa.js +1 -1
- app-ng-runtime/locales/angular/global/pcm.js +1 -1
- app-ng-runtime/locales/angular/global/pl.js +1 -1
- app-ng-runtime/locales/angular/global/ps-pk.js +1 -1
- app-ng-runtime/locales/angular/global/ps.js +1 -1
- app-ng-runtime/locales/angular/global/pt-ao.js +1 -1
- app-ng-runtime/locales/angular/global/pt-ch.js +1 -1
- app-ng-runtime/locales/angular/global/pt-cv.js +1 -1
- app-ng-runtime/locales/angular/global/pt-gq.js +1 -1
- app-ng-runtime/locales/angular/global/pt-gw.js +1 -1
- app-ng-runtime/locales/angular/global/pt-lu.js +1 -1
- app-ng-runtime/locales/angular/global/pt-mo.js +1 -1
- app-ng-runtime/locales/angular/global/pt-mz.js +1 -1
- app-ng-runtime/locales/angular/global/pt-pt.js +1 -1
- app-ng-runtime/locales/angular/global/pt-st.js +1 -1
- app-ng-runtime/locales/angular/global/pt-tl.js +1 -1
- app-ng-runtime/locales/angular/global/pt.js +1 -1
- app-ng-runtime/locales/angular/global/qu-bo.js +1 -1
- app-ng-runtime/locales/angular/global/qu-ec.js +1 -1
- app-ng-runtime/locales/angular/global/qu.js +1 -1
- app-ng-runtime/locales/angular/global/rm.js +1 -1
- app-ng-runtime/locales/angular/global/rn.js +1 -1
- app-ng-runtime/locales/angular/global/ro-md.js +1 -1
- app-ng-runtime/locales/angular/global/ro.js +1 -1
- app-ng-runtime/locales/angular/global/rof.js +1 -1
- app-ng-runtime/locales/angular/global/ru-by.js +1 -1
- app-ng-runtime/locales/angular/global/ru-kg.js +1 -1
- app-ng-runtime/locales/angular/global/ru-kz.js +1 -1
- app-ng-runtime/locales/angular/global/ru-md.js +1 -1
- app-ng-runtime/locales/angular/global/ru-ua.js +1 -1
- app-ng-runtime/locales/angular/global/ru.js +1 -1
- app-ng-runtime/locales/angular/global/rw.js +1 -1
- app-ng-runtime/locales/angular/global/rwk.js +1 -1
- app-ng-runtime/locales/angular/global/sa.js +1 -1
- app-ng-runtime/locales/angular/global/sah.js +1 -1
- app-ng-runtime/locales/angular/global/saq.js +1 -1
- app-ng-runtime/locales/angular/global/sat-olck.js +1 -1
- app-ng-runtime/locales/angular/global/sat.js +1 -1
- app-ng-runtime/locales/angular/global/sbp.js +1 -1
- app-ng-runtime/locales/angular/global/sc.js +1 -1
- app-ng-runtime/locales/angular/global/sd-arab.js +1 -1
- app-ng-runtime/locales/angular/global/sd-deva.js +1 -1
- app-ng-runtime/locales/angular/global/sd.js +1 -1
- app-ng-runtime/locales/angular/global/se-fi.js +1 -1
- app-ng-runtime/locales/angular/global/se-se.js +1 -1
- app-ng-runtime/locales/angular/global/se.js +1 -1
- app-ng-runtime/locales/angular/global/seh.js +1 -1
- app-ng-runtime/locales/angular/global/ses.js +1 -1
- app-ng-runtime/locales/angular/global/sg.js +1 -1
- app-ng-runtime/locales/angular/global/shi-latn.js +1 -1
- app-ng-runtime/locales/angular/global/shi-tfng.js +1 -1
- app-ng-runtime/locales/angular/global/shi.js +1 -1
- app-ng-runtime/locales/angular/global/si.js +1 -1
- app-ng-runtime/locales/angular/global/sk.js +1 -1
- app-ng-runtime/locales/angular/global/sl.js +1 -1
- app-ng-runtime/locales/angular/global/smn.js +1 -1
- app-ng-runtime/locales/angular/global/sn.js +1 -1
- app-ng-runtime/locales/angular/global/so-dj.js +1 -1
- app-ng-runtime/locales/angular/global/so-et.js +1 -1
- app-ng-runtime/locales/angular/global/so-ke.js +1 -1
- app-ng-runtime/locales/angular/global/so.js +1 -1
- app-ng-runtime/locales/angular/global/sq-mk.js +1 -1
- app-ng-runtime/locales/angular/global/sq-xk.js +1 -1
- app-ng-runtime/locales/angular/global/sq.js +1 -1
- app-ng-runtime/locales/angular/global/sr-cyrl-ba.js +1 -1
- app-ng-runtime/locales/angular/global/sr-cyrl-me.js +1 -1
- app-ng-runtime/locales/angular/global/sr-cyrl-xk.js +1 -1
- app-ng-runtime/locales/angular/global/sr-cyrl.js +1 -1
- app-ng-runtime/locales/angular/global/sr-latn-ba.js +1 -1
- app-ng-runtime/locales/angular/global/sr-latn-me.js +1 -1
- app-ng-runtime/locales/angular/global/sr-latn-xk.js +1 -1
- app-ng-runtime/locales/angular/global/sr-latn.js +1 -1
- app-ng-runtime/locales/angular/global/sr.js +1 -1
- app-ng-runtime/locales/angular/global/su-latn.js +1 -1
- app-ng-runtime/locales/angular/global/su.js +1 -1
- app-ng-runtime/locales/angular/global/sv-ax.js +1 -1
- app-ng-runtime/locales/angular/global/sv-fi.js +1 -1
- app-ng-runtime/locales/angular/global/sv.js +1 -1
- app-ng-runtime/locales/angular/global/sw-cd.js +1 -1
- app-ng-runtime/locales/angular/global/sw-ke.js +1 -1
- app-ng-runtime/locales/angular/global/sw-ug.js +1 -1
- app-ng-runtime/locales/angular/global/sw.js +1 -1
- app-ng-runtime/locales/angular/global/ta-lk.js +1 -1
- app-ng-runtime/locales/angular/global/ta-my.js +1 -1
- app-ng-runtime/locales/angular/global/ta-sg.js +1 -1
- app-ng-runtime/locales/angular/global/ta.js +1 -1
- app-ng-runtime/locales/angular/global/te.js +1 -1
- app-ng-runtime/locales/angular/global/teo-ke.js +1 -1
- app-ng-runtime/locales/angular/global/teo.js +1 -1
- app-ng-runtime/locales/angular/global/tg.js +1 -1
- app-ng-runtime/locales/angular/global/th.js +1 -1
- app-ng-runtime/locales/angular/global/ti-er.js +1 -1
- app-ng-runtime/locales/angular/global/ti.js +1 -1
- app-ng-runtime/locales/angular/global/tk.js +1 -1
- app-ng-runtime/locales/angular/global/to.js +1 -1
- app-ng-runtime/locales/angular/global/tr-cy.js +1 -1
- app-ng-runtime/locales/angular/global/tr.js +1 -1
- app-ng-runtime/locales/angular/global/tt.js +1 -1
- app-ng-runtime/locales/angular/global/twq.js +1 -1
- app-ng-runtime/locales/angular/global/tzm.js +1 -1
- app-ng-runtime/locales/angular/global/ug.js +1 -1
- app-ng-runtime/locales/angular/global/uk.js +1 -1
- app-ng-runtime/locales/angular/global/und.js +1 -1
- app-ng-runtime/locales/angular/global/ur-in.js +1 -1
- app-ng-runtime/locales/angular/global/ur.js +1 -1
- app-ng-runtime/locales/angular/global/uz-arab.js +1 -1
- app-ng-runtime/locales/angular/global/uz-cyrl.js +1 -1
- app-ng-runtime/locales/angular/global/uz-latn.js +1 -1
- app-ng-runtime/locales/angular/global/uz.js +1 -1
- app-ng-runtime/locales/angular/global/vai-latn.js +1 -1
- app-ng-runtime/locales/angular/global/vai-vaii.js +1 -1
- app-ng-runtime/locales/angular/global/vai.js +1 -1
- app-ng-runtime/locales/angular/global/vi.js +1 -1
- app-ng-runtime/locales/angular/global/vun.js +1 -1
- app-ng-runtime/locales/angular/global/wae.js +1 -1
- app-ng-runtime/locales/angular/global/wo.js +1 -1
- app-ng-runtime/locales/angular/global/xh.js +1 -1
- app-ng-runtime/locales/angular/global/xog.js +1 -1
- app-ng-runtime/locales/angular/global/yav.js +1 -1
- app-ng-runtime/locales/angular/global/yi.js +1 -1
- app-ng-runtime/locales/angular/global/yo-bj.js +1 -1
- app-ng-runtime/locales/angular/global/yo.js +1 -1
- app-ng-runtime/locales/angular/global/yrl-co.js +1 -1
- app-ng-runtime/locales/angular/global/yrl-ve.js +1 -1
- app-ng-runtime/locales/angular/global/yrl.js +1 -1
- app-ng-runtime/locales/angular/global/yue-hans.js +1 -1
- app-ng-runtime/locales/angular/global/yue-hant.js +1 -1
- app-ng-runtime/locales/angular/global/yue.js +1 -1
- app-ng-runtime/locales/angular/global/zgh.js +1 -1
- app-ng-runtime/locales/angular/global/zh-hans-hk.js +1 -1
- app-ng-runtime/locales/angular/global/zh-hans-mo.js +1 -1
- app-ng-runtime/locales/angular/global/zh-hans-sg.js +1 -1
- app-ng-runtime/locales/angular/global/zh-hans.js +1 -1
- app-ng-runtime/locales/angular/global/zh-hant-hk.js +1 -1
- app-ng-runtime/locales/angular/global/zh-hant-mo.js +1 -1
- app-ng-runtime/locales/angular/global/zh-hant.js +1 -1
- app-ng-runtime/locales/angular/global/zh.js +1 -1
- app-ng-runtime/locales/angular/global/zu.js +1 -1
- app-ng-runtime/locales/moment-timezone/moment-timezone-with-data.js +37 -37
- app-ng-runtime/mobile/components/basic/default/bundles/index.umd.js +9 -9
- app-ng-runtime/mobile/components/basic/default/esm2022/anchor/anchor.directive.mjs +2 -2
- app-ng-runtime/mobile/components/basic/default/esm2022/app-update/app-update.component.mjs +2 -2
- app-ng-runtime/mobile/components/basic/default/esm2022/basic.module.mjs +2 -2
- app-ng-runtime/mobile/components/basic/default/esm2022/file-browser/file-browser.component.mjs +2 -2
- app-ng-runtime/mobile/components/basic/default/esm2022/file-browser/file-selector.service.mjs +2 -2
- app-ng-runtime/mobile/components/basic/default/esm2022/image-cache/image-cache.directive.mjs +2 -2
- app-ng-runtime/mobile/components/basic/default/esm2022/network-info-toaster/network-info-toaster.component.mjs +2 -2
- app-ng-runtime/mobile/components/basic/default/esm2022/process-manager/process-management.service.mjs +2 -2
- app-ng-runtime/mobile/components/basic/default/esm2022/process-manager/process-manager.component.mjs +2 -2
- app-ng-runtime/mobile/components/basic/default/fesm2022/index.mjs +10 -10
- app-ng-runtime/mobile/components/basic/default/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/components/basic/search/bundles/index.umd.js +2 -2
- app-ng-runtime/mobile/components/basic/search/esm2022/search.directive.mjs +2 -2
- app-ng-runtime/mobile/components/basic/search/esm2022/search.module.mjs +2 -2
- app-ng-runtime/mobile/components/basic/search/fesm2022/index.mjs +2 -2
- app-ng-runtime/mobile/components/basic/search/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/components/containers/segmented-control/bundles/index.umd.js +3 -3
- app-ng-runtime/mobile/components/containers/segmented-control/esm2022/segment-content/segment-content.component.mjs +2 -2
- app-ng-runtime/mobile/components/containers/segmented-control/esm2022/segmented-control.component.mjs +2 -2
- app-ng-runtime/mobile/components/containers/segmented-control/esm2022/segmented-control.module.mjs +2 -2
- app-ng-runtime/mobile/components/containers/segmented-control/fesm2022/index.mjs +4 -4
- app-ng-runtime/mobile/components/containers/segmented-control/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/components/data/media-list/bundles/index.umd.js +3 -3
- app-ng-runtime/mobile/components/data/media-list/esm2022/media-list-item/media-list-item.directive.mjs +2 -2
- app-ng-runtime/mobile/components/data/media-list/esm2022/media-list.component.mjs +2 -2
- app-ng-runtime/mobile/components/data/media-list/esm2022/media-list.module.mjs +2 -2
- app-ng-runtime/mobile/components/data/media-list/fesm2022/index.mjs +4 -4
- app-ng-runtime/mobile/components/data/media-list/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/components/device/barcode-scanner/bundles/index.umd.js +2 -2
- app-ng-runtime/mobile/components/device/barcode-scanner/esm2022/barcode-scanner.component.mjs +2 -2
- app-ng-runtime/mobile/components/device/barcode-scanner/esm2022/barcode-scanner.module.mjs +2 -2
- app-ng-runtime/mobile/components/device/barcode-scanner/fesm2022/index.mjs +3 -3
- app-ng-runtime/mobile/components/device/barcode-scanner/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/components/device/camera/bundles/index.umd.js +2 -2
- app-ng-runtime/mobile/components/device/camera/esm2022/camera.component.mjs +2 -2
- app-ng-runtime/mobile/components/device/camera/esm2022/camera.module.mjs +2 -2
- app-ng-runtime/mobile/components/device/camera/fesm2022/index.mjs +3 -3
- app-ng-runtime/mobile/components/device/camera/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/components/input/file-upload/bundles/index.umd.js +2 -2
- app-ng-runtime/mobile/components/input/file-upload/esm2022/file-upload.directive.mjs +2 -2
- app-ng-runtime/mobile/components/input/file-upload/esm2022/file-upload.module.mjs +2 -2
- app-ng-runtime/mobile/components/input/file-upload/fesm2022/index.mjs +2 -2
- app-ng-runtime/mobile/components/input/file-upload/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/components/page/default/bundles/index.umd.js +3 -3
- app-ng-runtime/mobile/components/page/default/esm2022/page-content-loader/page-content-loader.component.mjs +2 -2
- app-ng-runtime/mobile/components/page/default/esm2022/page.directive.mjs +2 -2
- app-ng-runtime/mobile/components/page/default/esm2022/page.module.mjs +2 -2
- app-ng-runtime/mobile/components/page/default/fesm2022/index.mjs +3 -3
- app-ng-runtime/mobile/components/page/default/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/components/page/left-panel/bundles/index.umd.js +2 -2
- app-ng-runtime/mobile/components/page/left-panel/esm2022/left-panel.directive.mjs +2 -2
- app-ng-runtime/mobile/components/page/left-panel/esm2022/left-panel.module.mjs +2 -2
- app-ng-runtime/mobile/components/page/left-panel/fesm2022/index.mjs +2 -2
- app-ng-runtime/mobile/components/page/left-panel/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/components/page/mobile-navbar/bundles/index.umd.js +2 -2
- app-ng-runtime/mobile/components/page/mobile-navbar/esm2022/mobile-navbar.component.mjs +2 -2
- app-ng-runtime/mobile/components/page/mobile-navbar/esm2022/mobile-navbar.module.mjs +2 -2
- app-ng-runtime/mobile/components/page/mobile-navbar/fesm2022/index.mjs +2 -2
- app-ng-runtime/mobile/components/page/mobile-navbar/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/components/page/tab-bar/bundles/index.umd.js +2 -2
- app-ng-runtime/mobile/components/page/tab-bar/esm2022/tab-bar.module.mjs +2 -2
- app-ng-runtime/mobile/components/page/tab-bar/esm2022/tabbar.component.mjs +2 -2
- app-ng-runtime/mobile/components/page/tab-bar/fesm2022/index.mjs +3 -3
- app-ng-runtime/mobile/components/page/tab-bar/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/core/bundles/index.umd.js +9 -9
- app-ng-runtime/mobile/core/esm2022/core.module.mjs +2 -2
- app-ng-runtime/mobile/core/esm2022/services/device-file-cache.service.mjs +2 -2
- app-ng-runtime/mobile/core/esm2022/services/device-file-download.service.mjs +2 -2
- app-ng-runtime/mobile/core/esm2022/services/device-file-opener.service.mjs +2 -2
- app-ng-runtime/mobile/core/esm2022/services/device-file-upload.service.mjs +2 -2
- app-ng-runtime/mobile/core/esm2022/services/device-file.service.mjs +2 -2
- app-ng-runtime/mobile/core/esm2022/services/device.service.mjs +2 -2
- app-ng-runtime/mobile/core/esm2022/services/ext-app-message.service.mjs +2 -2
- app-ng-runtime/mobile/core/esm2022/services/network.service.mjs +2 -2
- app-ng-runtime/mobile/core/fesm2022/index.mjs +10 -10
- app-ng-runtime/mobile/core/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/offline/bundles/index.umd.js +8 -8
- app-ng-runtime/mobile/offline/esm2022/offline.module.mjs +2 -2
- app-ng-runtime/mobile/offline/esm2022/services/change-log.service.mjs +2 -2
- app-ng-runtime/mobile/offline/esm2022/services/local-db-data-pull.service.mjs +2 -2
- app-ng-runtime/mobile/offline/esm2022/services/local-db-management.service.mjs +2 -2
- app-ng-runtime/mobile/offline/esm2022/services/local-db.service.mjs +2 -2
- app-ng-runtime/mobile/offline/esm2022/services/local-key-value.service.mjs +2 -2
- app-ng-runtime/mobile/offline/esm2022/services/push.service.mjs +2 -2
- app-ng-runtime/mobile/offline/esm2022/services/workers/id-resolver.mjs +2 -2
- app-ng-runtime/mobile/offline/fesm2022/index.mjs +10 -10
- app-ng-runtime/mobile/offline/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/placeholder/runtime/bundles/index.umd.js +2 -2
- app-ng-runtime/mobile/placeholder/runtime/esm2022/components/app-ext.component.mjs +2 -2
- app-ng-runtime/mobile/placeholder/runtime/esm2022/mobile-runtime.module.mjs +2 -2
- app-ng-runtime/mobile/placeholder/runtime/fesm2022/index.mjs +2 -2
- app-ng-runtime/mobile/placeholder/runtime/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/placeholder/runtime-dynamic/bundles/index.umd.js +1 -1
- app-ng-runtime/mobile/placeholder/runtime-dynamic/esm2022/mobile-runtime-dynamic.module.mjs +2 -2
- app-ng-runtime/mobile/placeholder/runtime-dynamic/fesm2022/index.mjs +1 -1
- app-ng-runtime/mobile/placeholder/runtime-dynamic/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/runtime/bundles/index.umd.js +5 -5
- app-ng-runtime/mobile/runtime/esm2022/components/app-ext.component.mjs +2 -2
- app-ng-runtime/mobile/runtime/esm2022/mobile-runtime.module.mjs +2 -2
- app-ng-runtime/mobile/runtime/esm2022/services/cookie.service.mjs +2 -2
- app-ng-runtime/mobile/runtime/esm2022/services/http-interceptor.service.mjs +2 -2
- app-ng-runtime/mobile/runtime/esm2022/services/webprocess.service.mjs +2 -2
- app-ng-runtime/mobile/runtime/fesm2022/index.mjs +5 -5
- app-ng-runtime/mobile/runtime/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/runtime-dynamic/bundles/index.umd.js +2 -2
- app-ng-runtime/mobile/runtime-dynamic/esm2022/mobile-runtime-dynamic.module.mjs +2 -2
- app-ng-runtime/mobile/runtime-dynamic/esm2022/services/live-sync.service.mjs +2 -2
- app-ng-runtime/mobile/runtime-dynamic/fesm2022/index.mjs +2 -2
- app-ng-runtime/mobile/runtime-dynamic/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/variables/bundles/index.umd.js +1 -1
- app-ng-runtime/mobile/variables/esm2022/variables.module.mjs +2 -2
- app-ng-runtime/mobile/variables/fesm2022/index.mjs +1 -1
- app-ng-runtime/mobile/variables/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/oAuth/bundles/index.umd.js +2 -2
- app-ng-runtime/oAuth/esm2022/oAuth.module.mjs +2 -2
- app-ng-runtime/oAuth/esm2022/oAuth.service.mjs +2 -2
- app-ng-runtime/oAuth/fesm2022/index.mjs +2 -2
- app-ng-runtime/oAuth/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/package.json +1 -1
- app-ng-runtime/runtime/base/bundles/index.umd.js +44 -46
- app-ng-runtime/runtime/base/esm2022/components/app-component/app.component.mjs +2 -2
- app-ng-runtime/runtime/base/esm2022/components/app-spinner.component.mjs +2 -2
- app-ng-runtime/runtime/base/esm2022/components/base-layout.component.mjs +2 -2
- app-ng-runtime/runtime/base/esm2022/components/base-page.component.mjs +2 -2
- app-ng-runtime/runtime/base/esm2022/components/base-partial.component.mjs +2 -2
- app-ng-runtime/runtime/base/esm2022/components/base-prefab.component.mjs +2 -2
- app-ng-runtime/runtime/base/esm2022/components/base-spa-page.component.mjs +2 -2
- app-ng-runtime/runtime/base/esm2022/components/custom-toaster.component.mjs +2 -2
- app-ng-runtime/runtime/base/esm2022/components/empty-component/empty-page.component.mjs +2 -2
- app-ng-runtime/runtime/base/esm2022/components/prefab-preview.component.mjs +2 -2
- app-ng-runtime/runtime/base/esm2022/directives/accessroles.directive.mjs +2 -2
- app-ng-runtime/runtime/base/esm2022/directives/prefab.directive.mjs +2 -2
- app-ng-runtime/runtime/base/esm2022/guards/auth.guard.mjs +2 -2
- app-ng-runtime/runtime/base/esm2022/guards/can-deactivate-page.guard.mjs +3 -3
- app-ng-runtime/runtime/base/esm2022/guards/page-not-found.guard.mjs +2 -2
- app-ng-runtime/runtime/base/esm2022/guards/role.guard.mjs +2 -2
- app-ng-runtime/runtime/base/esm2022/overrides/wm_dom_renderer.mjs +6 -8
- app-ng-runtime/runtime/base/esm2022/overrides/wm_shared_styles_host.mjs +3 -3
- app-ng-runtime/runtime/base/esm2022/resolves/app-extension.resolve.mjs +2 -2
- app-ng-runtime/runtime/base/esm2022/resolves/app-js.resolve.mjs +2 -2
- app-ng-runtime/runtime/base/esm2022/resolves/app-variables.resolve.mjs +2 -2
- app-ng-runtime/runtime/base/esm2022/resolves/i18n.resolve.mjs +2 -2
- app-ng-runtime/runtime/base/esm2022/resolves/metadata.resolve.mjs +2 -2
- app-ng-runtime/runtime/base/esm2022/resolves/security-config.resolve.mjs +2 -2
- app-ng-runtime/runtime/base/esm2022/runtime-base.module.mjs +2 -2
- app-ng-runtime/runtime/base/esm2022/services/app-defaults.service.mjs +2 -2
- app-ng-runtime/runtime/base/esm2022/services/app.manager.service.mjs +2 -2
- app-ng-runtime/runtime/base/esm2022/services/app.service.mjs +2 -2
- app-ng-runtime/runtime/base/esm2022/services/dynamic-component-ref-provider.service.mjs +2 -2
- app-ng-runtime/runtime/base/esm2022/services/http-interceptor.services.mjs +2 -2
- app-ng-runtime/runtime/base/esm2022/services/i18n.service.mjs +2 -2
- app-ng-runtime/runtime/base/esm2022/services/navigation.service.mjs +2 -2
- app-ng-runtime/runtime/base/esm2022/services/pipe-provider.service.mjs +2 -2
- app-ng-runtime/runtime/base/esm2022/services/pipe.service.mjs +2 -2
- app-ng-runtime/runtime/base/esm2022/services/prefab-manager.service.mjs +2 -2
- app-ng-runtime/runtime/base/esm2022/services/spinner.service.mjs +2 -2
- app-ng-runtime/runtime/base/esm2022/services/toaster.service.mjs +2 -2
- app-ng-runtime/runtime/base/esm2022/util/fragment-monitor.mjs +2 -2
- app-ng-runtime/runtime/base/fesm2022/index.mjs +47 -49
- app-ng-runtime/runtime/base/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/runtime/base/services/i18n.service.d.ts +1 -1
- app-ng-runtime/runtime/dynamic/bundles/index.umd.js +7 -7
- app-ng-runtime/runtime/dynamic/esm2022/app/components/page-wrapper.component.mjs +2 -2
- app-ng-runtime/runtime/dynamic/esm2022/app/services/app-extension.service.mjs +2 -2
- app-ng-runtime/runtime/dynamic/esm2022/app/services/app-js-provider.service.mjs +2 -2
- app-ng-runtime/runtime/dynamic/esm2022/app/services/app-resource-manager.service.mjs +2 -2
- app-ng-runtime/runtime/dynamic/esm2022/app/services/app-variables-provider.service.mjs +2 -2
- app-ng-runtime/runtime/dynamic/esm2022/app/services/component-ref-provider.service.mjs +2 -2
- app-ng-runtime/runtime/dynamic/esm2022/app/services/prefab-config-provider.service.mjs +2 -2
- app-ng-runtime/runtime/dynamic/fesm2022/index.mjs +9 -9
- app-ng-runtime/runtime/dynamic/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/scripts/summernote/dist/summernote-lite.min.js +2 -2
- app-ng-runtime/security/bundles/index.umd.js +2 -2
- app-ng-runtime/security/esm2022/security.module.mjs +2 -2
- app-ng-runtime/security/esm2022/security.service.mjs +2 -2
- app-ng-runtime/security/fesm2022/index.mjs +2 -2
- app-ng-runtime/security/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/swipey/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/transpiler/fesm2022/index.mjs +1 -1
- app-ng-runtime/transpiler/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/variables/bundles/index.umd.js +3 -3
- app-ng-runtime/variables/esm2022/service/metadata-service/metadata.service.mjs +2 -2
- app-ng-runtime/variables/esm2022/service/variables.service.mjs +2 -2
- app-ng-runtime/variables/esm2022/variables.module.mjs +2 -2
- app-ng-runtime/variables/fesm2022/index.mjs +4 -4
- app-ng-runtime/variables/fesm2022/index.mjs.map +1 -1
|
@@ -874,7 +874,7 @@ export class SearchComponent extends DatasetAwareFormComponent {
|
|
|
874
874
|
}
|
|
875
875
|
super.onPropertyChange(key, nv, ov);
|
|
876
876
|
}
|
|
877
|
-
static { this.ɵfac = function SearchComponent_Factory(
|
|
877
|
+
static { this.ɵfac = function SearchComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || SearchComponent)(i0.ɵɵdirectiveInject(i0.Injector), i0.ɵɵdirectiveInject(i1.App), i0.ɵɵinjectAttribute('datavalue.bind'), i0.ɵɵinjectAttribute('dataset.bind'), i0.ɵɵdirectiveInject('EXPLICIT_CONTEXT', 8)); }; }
|
|
878
878
|
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SearchComponent, selectors: [["", "wmSearch", ""]], viewQuery: function SearchComponent_Query(rf, ctx) { if (rf & 1) {
|
|
879
879
|
i0.ɵɵviewQuery(TypeaheadDirective, 5);
|
|
880
880
|
i0.ɵɵviewQuery(_c0, 5);
|
|
@@ -925,4 +925,4 @@ export class SearchComponent extends DatasetAwareFormComponent {
|
|
|
925
925
|
args: ['liElements']
|
|
926
926
|
}] }); })();
|
|
927
927
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SearchComponent, { className: "SearchComponent", filePath: "search.component.ts", lineNumber: 66 }); })();
|
|
928
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvd2lkZ2V0cy9iYXNpYy9zZWFyY2gvc3JjL3NlYXJjaC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3dpZGdldHMvYmFzaWMvc2VhcmNoL3NyYy9zZWFyY2guY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdILFNBQVMsRUFDVCxTQUFTLEVBQ1QsVUFBVSxFQUNWLE1BQU0sRUFDTixRQUFRLEVBRVIsUUFBUSxFQUNSLFNBQVMsRUFDVCxTQUFTLEVBQ1QsWUFBWSxFQUNmLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxhQUFhLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUVoRSxPQUFPLEVBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDMUMsT0FBTyxFQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUVoRCxPQUFPLEVBQThCLGtCQUFrQixFQUFpQixNQUFNLHlCQUF5QixDQUFDO0FBRXhHLE9BQU8sRUFBQyxRQUFRLEVBQUUsdUJBQXVCLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUM1RyxPQUFPLEVBQ0gsU0FBUyxFQUNULG1CQUFtQixFQUVuQixrQkFBa0IsRUFDbEIsdUJBQXVCLEVBQ3ZCLHNCQUFzQixFQUN0QixTQUFTLEVBQ1Qsa0JBQWtCLEVBQ2xCLE1BQU0sRUFDTixpQkFBaUIsRUFDcEIsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUUvRCxPQUFPLEVBQUMs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QyxzRUFzQmpELHNHQXVDM0I7OztZQXZDZCxlQUFvQjtZQUFBLEFBQXBCLHVDQUFvQixnQ0FBbUI7OztpRkQrQnpDLGVBQWU7Y0FUM0IsU0FBUzsyQkFDSSxZQUFZLGFBRVg7b0JBQ1AsU0FBUyxrQkFBa0IsaUJBQWlCLEVBQUUsSUFBSSxDQUFDO29CQUNuRCxTQUFTLGtCQUFrQixhQUFhLEVBQUUsSUFBSSxDQUFDO29CQUMvQyxrQkFBa0IsaUJBQWlCO2lCQUN0Qzs7c0JBNEVJLFNBQVM7dUJBQUMsZ0JBQWdCOztzQkFDMUIsU0FBUzt1QkFBQyxjQUFjOztzQkFDeEIsTUFBTTt1QkFBQyxrQkFBa0I7O3NCQUFHLFFBQVE7cUJBNUNWLFNBQVM7a0JBQXZDLFNBQVM7bUJBQUMsa0JBQWtCO1lBQ0wsU0FBUztrQkFBaEMsU0FBUzttQkFBQyxXQUFXO1lBQ00sVUFBVTtrQkFBckMsWUFBWTttQkFBQyxZQUFZOztrRkFsQ2pCLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyVmlld0NoZWNrZWQsXG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBBdHRyaWJ1dGUsXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgSW5qZWN0LFxuICAgIEluamVjdG9yLFxuICAgIE9uSW5pdCxcbiAgICBPcHRpb25hbCxcbiAgICBRdWVyeUxpc3QsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdDaGlsZHJlblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TkdfVkFMSURBVE9SUywgTkdfVkFMVUVfQUNDRVNTT1J9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHtmcm9tLCBPYnNlcnZhYmxlLCBvZn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge2ZpbHRlciwgbWVyZ2VNYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtUeXBlYWhlYWRDb250YWluZXJDb21wb25lbnQsIFR5cGVhaGVhZERpcmVjdGl2ZSwgVHlwZWFoZWFkTWF0Y2h9IGZyb20gJ25neC1ib290c3RyYXAvdHlwZWFoZWFkJztcblxuaW1wb3J0IHthZGRDbGFzcywgYWRqdXN0Q29udGFpbmVyUG9zaXRpb24sIEFwcCwgRGF0YVNvdXJjZSwgaXNEZWZpbmVkLCBpc01vYmlsZSwgdG9Cb29sZWFufSBmcm9tICdAd20vY29yZSc7XG5pbXBvcnQge1xuICAgIEFMTEZJRUxEUyxcbiAgICBjb252ZXJ0RGF0YVRvT2JqZWN0LFxuICAgIERhdGFTZXRJdGVtLFxuICAgIGV4dHJhY3REYXRhQXNBcnJheSxcbiAgICBnZXRDb250YWluZXJUYXJnZXRDbGFzcyxcbiAgICBnZXRVbmlxT2Jqc0J5RGF0YUZpZWxkLFxuICAgIHByb3ZpZGVBcyxcbiAgICBwcm92aWRlQXNXaWRnZXRSZWYsXG4gICAgc3R5bGVyLFxuICAgIHRyYW5zZm9ybUZvcm1EYXRhXG59IGZyb20gJ0B3bS9jb21wb25lbnRzL2Jhc2UnO1xuaW1wb3J0IHtEYXRhc2V0QXdhcmVGb3JtQ29tcG9uZW50fSBmcm9tICdAd20vY29tcG9uZW50cy9pbnB1dCc7XG5cbmltcG9ydCB7cmVnaXN0ZXJQcm9wc30gZnJvbSAnLi9zZWFyY2gucHJvcHMnO1xuaW1wb3J0IHtEYXRhUHJvdmlkZXIsIElEYXRhUHJvdmlkZXIsIElEYXRhUHJvdmlkZXJDb25maWd9IGZyb20gJy4vZGF0YS1wcm92aWRlci9kYXRhLXByb3ZpZGVyJztcbmltcG9ydCB7XG4gICAgZGVib3VuY2UsXG4gICAgZmluZCxcbiAgICBnZXQsXG4gICAgaW5jbHVkZXMsXG4gICAgaXNBcnJheSxcbiAgICBpc0VtcHR5LFxuICAgIGlzRXF1YWwsXG4gICAgaXNPYmplY3QsXG4gICAgaXNVbmRlZmluZWQsXG4gICAgbWFwLFxuICAgIHNwbGl0LFxuICAgIHRvU3RyaW5nLFxuICAgIHRyaW1cbn0gZnJvbSBcImxvZGFzaC1lc1wiO1xuXG5jb25zdCBXSURHRVRfQ09ORklHID0geyB3aWRnZXRUeXBlOiAnd20tc2VhcmNoJywgaG9zdENsYXNzOiAnaW5wdXQtZ3JvdXAnIH07XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnW3dtU2VhcmNoXScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NlYXJjaC5jb21wb25lbnQuaHRtbCcsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHByb3ZpZGVBcyhTZWFyY2hDb21wb25lbnQsIE5HX1ZBTFVFX0FDQ0VTU09SLCB0cnVlKSxcbiAgICAgICAgcHJvdmlkZUFzKFNlYXJjaENvbXBvbmVudCwgTkdfVkFMSURBVE9SUywgdHJ1ZSksXG4gICAgICAgIHByb3ZpZGVBc1dpZGdldFJlZihTZWFyY2hDb21wb25lbnQpXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBTZWFyY2hDb21wb25lbnQgZXh0ZW5kcyBEYXRhc2V0QXdhcmVGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBBZnRlclZpZXdDaGVja2VkIHtcbiAgICBzdGF0aWMgaW5pdGlhbGl6ZVByb3BzID0gcmVnaXN0ZXJQcm9wcygpO1xuICAgIHB1YmxpYyBjYXNlc2Vuc2l0aXZlOiBib29sZWFuO1xuICAgIHB1YmxpYyBzZWFyY2hrZXk6IHN0cmluZztcbiAgICBwdWJsaWMgcXVlcnlNb2RlbDogQXJyYXk8RGF0YVNldEl0ZW0+IHwgc3RyaW5nO1xuICAgIHB1YmxpYyBxdWVyeSA9ICcnO1xuICAgIHB1YmxpYyBsaW1pdDogYW55O1xuICAgIHB1YmxpYyBzaG93c2VhcmNoaWNvbjogYm9vbGVhbjtcbiAgICBwdWJsaWMgbWluY2hhcnM6IG51bWJlcjtcbiAgICBwdWJsaWMgdHlwZTogc3RyaW5nO1xuICAgIHB1YmxpYyBuYXZzZWFyY2hiYXI6IGFueTtcbiAgICBwdWJsaWMgZGVib3VuY2V0aW1lOiBudW1iZXI7XG4gICAgcHVibGljIGhpbnQ6IHN0cmluZztcbiAgICBwdWJsaWMgYXJpYWxhYmVsOiBzdHJpbmc7XG5cbiAgICBwcml2YXRlIGFwcDogQXBwO1xuICAgIHByaXZhdGUgdHlwZWFoZWFkRGF0YVNvdXJjZTogT2JzZXJ2YWJsZTxhbnk+O1xuICAgIHByaXZhdGUgcGFnZXNpemU6IGFueTtcbiAgICBwcml2YXRlIHBhZ2UgPSAxO1xuICAgIHB1YmxpYyBfbG9hZGluZ0l0ZW1zOiBib29sZWFuO1xuICAgIHByaXZhdGUgZGF0YVByb3ZpZGVyOiBJRGF0YVByb3ZpZGVyO1xuICAgIHByaXZhdGUgcmVzdWx0OiBBcnJheTxhbnk+OyAvLyBjb250YWlucyB0aGUgc2VhcmNoIHJlc3VsdCBpLmUuIG1hdGNoZXNcbiAgICBwcml2YXRlIGZvcm1hdHRlZERhdGFzZXQ6IGFueTtcbiAgICBwcml2YXRlIGlzZm9ybWZpZWxkOiBib29sZWFuO1xuICAgIHByaXZhdGUgJHR5cGVhaGVhZEV2ZW50OiBFdmVudDtcblxuICAgIHB1YmxpYyB0YWJpbmRleDogbnVtYmVyO1xuICAgIHB1YmxpYyBzdGFydEluZGV4OiBudW1iZXI7XG4gICAgcHVibGljIGJpbmRkaXNwbGF5bGFiZWw6IHN0cmluZztcbiAgICBwdWJsaWMgdHlwZWFoZWFkQ29udGFpbmVyOiBUeXBlYWhlYWRDb250YWluZXJDb21wb25lbnQ7XG4gICAgcHVibGljIGNvbnRhaW5lclRhcmdldDogc3RyaW5nO1xuXG4gICAgQFZpZXdDaGlsZChUeXBlYWhlYWREaXJlY3RpdmUpIHR5cGVhaGVhZDogVHlwZWFoZWFkRGlyZWN0aXZlO1xuICAgIEBWaWV3Q2hpbGQoJ3VsRWxlbWVudCcpIHVsRWxlbWVudDogRWxlbWVudFJlZjtcbiAgICBAVmlld0NoaWxkcmVuKCdsaUVsZW1lbnRzJykgbGlFbGVtZW50czogUXVlcnlMaXN0PEVsZW1lbnRSZWY+O1xuXG4gICAgcHJpdmF0ZSBhbGxvd29ubHlzZWxlY3Q6IGJvb2xlYW47XG4gICAgcHJpdmF0ZSBjbGFzczogc3RyaW5nO1xuXG4gICAgcHJpdmF0ZSBsYXN0U2VsZWN0ZWRJbmRleDogbnVtYmVyO1xuICAgIHByaXZhdGUgZGF0YW9wdGlvbnM6IGFueTtcbiAgICBwdWJsaWMgZHJvcGRvd25FbDogYW55O1xuICAgIHByaXZhdGUgX2xhc3RRdWVyeTogc3RyaW5nO1xuICAgIHByaXZhdGUgX2xhc3RSZXN1bHQ6IGFueTtcbiAgICBwcml2YXRlIF9pc09wZW46IGJvb2xlYW47IC8vIHNldCB0byB0cnVlIHdoZW4gZHJvcGRvd24gaXMgb3BlblxuICAgIHByaXZhdGUgc2hvd0Nsb3NlYnRuOiBib29sZWFuO1xuICAgIHByaXZhdGUgX3Vuc3Vic2NyaWJlRHY6IGJvb2xlYW47XG4gICAgcHJpdmF0ZSBfZGF0YXNvdXJjZTogYW55O1xuICAgIHByaXZhdGUgaXNTY3JvbGxlZDogYm9vbGVhbjtcbiAgICBwcml2YXRlIHBhcmVudEVsOiBhbnk7XG4gICAgcHJpdmF0ZSBwb3NpdGlvbjogc3RyaW5nO1xuICAgIHByaXZhdGUgZWxJbmRleDogbnVtYmVyO1xuICAgIHByaXZhdGUgbGlzdGVuUXVlcnk6IGJvb2xlYW47XG4gICAgcHJpdmF0ZSBfZG9tVXBkYXRlZDogYm9vbGVhbjtcbiAgICBwcml2YXRlIHNlYXJjaG9uOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBzaG93Y2xlYXI6IGJvb2xlYW47XG4gICAgcHVibGljIG1hdGNobW9kZTogc3RyaW5nO1xuICAgIHByaXZhdGUgY2xlYXJEYXRhOiBib29sZWFuO1xuXG5cbiAgICAvLyBnZXR0ZXIgc2V0dGVyIGlzIGFkZGVkIHRvIHBhc3MgdGhlIGRhdGFzb3VyY2UgdG8gc2VhcmNoY29tcG9uZW50LlxuICAgIGdldCBkYXRhc291cmNlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGF0YXNvdXJjZTtcbiAgICB9XG5cbiAgICBzZXQgZGF0YXNvdXJjZShudikge1xuICAgICAgICB0aGlzLl9kYXRhc291cmNlID0gbnY7XG4gICAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLmRhdGF2YWx1ZSB8fCB0aGlzLnRvQmVQcm9jZXNzZWREYXRhdmFsdWU7XG4gICAgICAgIHRoaXMudXBkYXRlQnlEYXRhdmFsdWUoZGF0YSk7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIGluajogSW5qZWN0b3IsXG4gICAgICAgIGFwcDogQXBwLFxuICAgICAgICBAQXR0cmlidXRlKCdkYXRhdmFsdWUuYmluZCcpIHB1YmxpYyBiaW5kZGF0YXZhbHVlLFxuICAgICAgICBAQXR0cmlidXRlKCdkYXRhc2V0LmJpbmQnKSBwdWJsaWMgYmluZGRhdGFzZXQsXG4gICAgICAgIEBJbmplY3QoJ0VYUExJQ0lUX0NPTlRFWFQnKSBAT3B0aW9uYWwoKSBleHBsaWNpdENvbnRleHQ6IGFueVxuICAgICkge1xuICAgICAgICBzdXBlcihpbmosIFdJREdFVF9DT05GSUcsIGV4cGxpY2l0Q29udGV4dCk7XG4gICAgICAgIC8vIHRoaXMgZmxhZyB3aWxsIG5vdCBhbGxvdyB0aGUgZW1wdHkgZGF0YWZpZWxkIHZhbHVlcy5cbiAgICAgICAgdGhpcy5hbGxvd2VtcHR5ID0gZmFsc2U7XG4gICAgICAgIHRoaXMuYXBwID0gYXBwO1xuICAgICAgICBhZGRDbGFzcyh0aGlzLm5hdGl2ZUVsZW1lbnQsICdhcHAtc2VhcmNoJywgdHJ1ZSk7XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIExpc3RlbnMgZm9yIHRoZSBjaGFuZ2UgaW4gdGhlIG5nTW9kZWwgb24gZXZlcnkgc2VhcmNoIGFuZCByZXRyaWV2ZXMgdGhlIGRhdGEgYXMgb2JzZXJ2YWJsZS5cbiAgICAgICAgICogVGhpcyBvYnNlcnZhYmxlIGRhdGEgaXMgcGFzc2VkIHRvIHRoZSB0eXBlYWhlYWQuXG4gICAgICAgICAqIEB0eXBlIHtPYnNlcnZhYmxlPGFueT59XG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLnR5cGVhaGVhZERhdGFTb3VyY2UgPSBPYnNlcnZhYmxlXG4gICAgICAgICAgICAuY3JlYXRlKChvYnNlcnZlcjogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gUnVucyBvbiBldmVyeSBzZWFyY2hcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5saXN0ZW5RdWVyeSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9kZWZhdWx0UXVlcnlJbnZva2VkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvYWRpbmdJdGVtcyA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIG9ic2VydmVyLm5leHQodGhpcy5xdWVyeSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIG9uIGtleWRvd24sIHdoaWxlIHNjcm9sbGluZyB0aGUgZHJvcGRvd24gaXRlbXMsIHdoZW4gbGFzdCBpdGVtIGlzIHJlYWNoZWQgbmV4dCBjYWxsIGlzIHRyaWdnZXJlZFxuICAgICAgICAgICAgICAgIC8vIHVubGVzcyB0aGUgY2FsbCBpcyByZXNvbHZlZCwgd2UgYXJlIGFibGUgdG8gc2Nyb2xsIG5leHQgdG8gZmlyc3QgaXRlbSBhbmQgc29vblxuICAgICAgICAgICAgICAgIC8vIFRoaXMgc2hvd3MgZmxpY2tlcmluZyBmcm9tIGZpcnN0IGl0ZW0gdG8gbmV4dCBuZXcgaXRlbXMgYXBwZW5kZWQuXG4gICAgICAgICAgICAgICAgLy8gQnkgc2V0dGluZyBjb250YWluZXIgdG8gdW5kZWZpbmVkLCBrZXkgZXZlbnRzIGNoYW5nZXMgd2lsbCBiZSBzdG9wcGVkIHdoaWxlIGxvYWRpbmcgaXRlbXNcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5sYXN0U2VsZWN0ZWRJbmRleCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnR5cGVhaGVhZC5fY29udGFpbmVyID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLnBpcGUoXG4gICAgICAgICAgICAgICAgZmlsdGVyKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbG9hZGluZ0l0ZW1zID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAodGhpcy5taW5jaGFycyA9PT0gMCB8fCAodGhpcy5xdWVyeSAmJiB0aGlzLnF1ZXJ5Lmxlbmd0aCA+PSB0aGlzLm1pbmNoYXJzKSk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgbWVyZ2VNYXAoKHRva2VuOiBzdHJpbmcpID0+IHRoaXMuZ2V0RGF0YVNvdXJjZUFzT2JzZXJ2YWJsZSh0b2tlbikpXG4gICAgICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuZGF0YVByb3ZpZGVyID0gbmV3IERhdGFQcm92aWRlcigpO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBXaGVuIGRlZmF1bHQgZGF0YXZhbHVlIGlzIG5vdCBmb3VuZCB3aXRoaW4gdGhlIGRhdGFzZXQsIGEgZmlsdGVyIGNhbGwgaXMgbWFkZSB0byBnZXQgdGhlIHJlY29yZCB1c2luZyBmZXRjaERlZmF1bHRNb2RlbC5cbiAgICAgICAgICogYWZ0ZXIgZ2V0dGluZyB0aGUgcmVzcG9uc2UsIHNldCB0aGUgcXVlcnlNb2RlbCBhbmQgcXVlcnkuXG4gICAgICAgICAqL1xuICAgICAgICBjb25zdCBkYXRhdmFsdWVTdWJzY3JpcHRpb24gPSB0aGlzLmRhdGF2YWx1ZSQuc3Vic2NyaWJlKCh2YWw6IEFycmF5PHN0cmluZz4gfCBzdHJpbmcpID0+IHtcblxuICAgICAgICAgICAgY29uc3QgcXVlcnkgPSAoaXNBcnJheSh2YWwpID8gdmFsWzBdIDogdmFsKSBhcyBzdHJpbmc7XG5cbiAgICAgICAgICAgIGlmIChxdWVyeSA9PT0gbnVsbCB8fCBxdWVyeSA9PT0gJycpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9tb2RlbEJ5VmFsdWUgPSAnJztcbiAgICAgICAgICAgICAgICAvLyByZXNldCB0aGUgcXVlcnkuXG4gICAgICAgICAgICAgICAgdGhpcy5xdWVyeSA9IHRoaXMucXVlcnlNb2RlbCA9ICcnO1xuICAgICAgICAgICAgICAgIC8vIG9uIGNsZWFyIG9yIHJlc2V0IGZpbHRlciwgZW1wdHkgdGhlIGxhc3RSZXN1bHRzIHRvIGZldGNoIG5ldyByZWNvcmRzLlxuICAgICAgICAgICAgICAgIHRoaXMuX2xhc3RSZXN1bHQgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIXRoaXMuX3Vuc3Vic2NyaWJlRHYpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9kZWZhdWx0UXVlcnlJbnZva2VkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgLy8gaWYgcHJldiBkYXRhdmFsdWUgaXMgbm90IGVxdWFsIHRvIGN1cnJlbnQgZGF0YXZhbHVlIHRoZW4gY2xlYXIgdGhlIG1vZGVsQnlLZXkgYW5kIHF1ZXJ5TW9kZWxcbiAgICAgICAgICAgICAgICBpZiAoIWlzT2JqZWN0KHZhbCkgJiYgKHRoaXMgYXMgYW55KS5wcmV2RGF0YXZhbHVlICE9PSB2YWwpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbW9kZWxCeUtleSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5xdWVyeSA9IHRoaXMucXVlcnlNb2RlbCA9ICcnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBpZiB0aGUgZGF0YWZpZWxkIGlzIEFMTEZJTEVEUyBkbyBub3QgZmV0Y2ggdGhlIHJlY29yZHNcbiAgICAgICAgICAgICAgICAvLyB1cGRhdGUgdGhlIHF1ZXJ5IG1vZGVsIHdpdGggdGhlIHZhbHVlcyB3ZSBoYXZlXG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVCeURhdGF2YWx1ZSh2YWwpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyB0dXJuIG9uIHNob3dDbG9zZUJ0biB3aGVuIGEgZGVmYXVsdCB2YWx1ZSBpcyBnaXZlblxuICAgICAgICAgICAgdGhpcy5zaG93Q2xvc2VidG4gPSAodGhpcy5xdWVyeSAhPT0gJycpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5yZWdpc3RlckRlc3Ryb3lMaXN0ZW5lcigoKSA9PiBkYXRhdmFsdWVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSk7XG5cbiAgICAgICAgY29uc3QgZGF0YXNldFN1YnNjcmlwdGlvbiA9IHRoaXMuZGF0YXNldCQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIC8vIHNldCB0aGUgbmV4dCBpdGVtIGluZGV4LlxuICAgICAgICAgICAgdGhpcy5zdGFydEluZGV4ID0gdGhpcy5kYXRhc2V0SXRlbXMubGVuZ3RoO1xuICAgICAgICAgICAgdGhpcy5fbGFzdFJlc3VsdCA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGNvbnN0IGRlZmF1bHRWYWx1ZSA9IHRoaXMuZGF0YXZhbHVlIHx8IHRoaXMudG9CZVByb2Nlc3NlZERhdGF2YWx1ZTtcbiAgICAgICAgICAgIC8vIGludm9raW5nIHVwZGF0ZUJ5RGF0YXNldCBvbmx5IHdoZW4gZGF0YXZhbHVlIGlzIHByZXNlbnQsIGFzIGVudGVyZWQgdmFsdWUgaS5lLiBxdWVyeSBpcyBzZXR0aW5nIGJhY2sgdG8gJydcbiAgICAgICAgICAgIGlmIChpc0RlZmluZWQoZGVmYXVsdFZhbHVlKSkge1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlQnlEYXRhc2V0KGRlZmF1bHRWYWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnJlZ2lzdGVyRGVzdHJveUxpc3RlbmVyKCgpID0+IGRhdGFzZXRTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSk7XG4gICAgfVxuXG4gICAgLy8gb24gY2xlYXIsIHRyaWdnZXIgc2VhcmNoIHdpdGggcGFnZSBzaXplIDFcbiAgICBwcml2YXRlIGNsZWFyU2VhcmNoKCRldmVudCwgbG9hZE9uQ2xlYXIpIHtcbiAgICAgICAgdGhpcy5xdWVyeSA9ICcnO1xuICAgICAgICB0aGlzLm9uSW5wdXRDaGFuZ2UoJGV2ZW50KTtcbiAgICAgICAgdGhpcy5kYXRhUHJvdmlkZXIuaXNMYXN0UGFnZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLmxpc3RlblF1ZXJ5ID0gZmFsc2U7XG4gICAgICAgIGlmIChsb2FkT25DbGVhcikge1xuICAgICAgICAgICAgdGhpcy5saXN0ZW5RdWVyeSA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLl91bnN1YnNjcmliZUR2ID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmxvYWRNb3JlRGF0YSgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaW52b2tlRXZlbnRDYWxsYmFjaygnY2xlYXJzZWFyY2gnKTtcbiAgICAgICAgdGhpcy5fbG9hZGluZ0l0ZW1zID0gZmFsc2U7XG4gICAgICAgIC8vIHdoZW4gc2VhcmNoIGlucHV0IGlzIGNsZWFyZWQsIGZvY3VzIG9uIHRoZSBpbnB1dCBmaWVsZFxuICAgICAgICBpZiAoJGV2ZW50KSB7XG4gICAgICAgICAgICB0aGlzLiRlbGVtZW50LmZpbmQoJy5hcHAtc2VhcmNoLWlucHV0JykuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIGZ1bmN0aW9uIHRvICBjbGVhciB0aGUgaW5wdXQgdmFsdWVcbiAgICBwdWJsaWMgY2xlYXJUZXh0KCkge1xuICAgICAgICB0aGlzLnF1ZXJ5ID0gJyc7XG4gICAgICAgIHRoaXMuc2hvd0Nsb3NlYnRuID0gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gQ2xvc2UgdGhlIGZ1bGwgc2NyZWVuIG1vZGUgaW4gbW9iaWxlIHZpZXcgb2YgYXV0byBjb21wbGV0ZVxuICAgIHByaXZhdGUgY2xvc2VTZWFyY2goKSB7XG4gICAgICAgIHRoaXMuX2xvYWRpbmdJdGVtcyA9IGZhbHNlO1xuICAgICAgICB0aGlzLnBhZ2UgPSAxO1xuICAgICAgICAvLyBhZnRlciBjbG9zaW5nIHRoZSBzZWFyY2gsIGluc2VydCB0aGUgZWxlbWVudCBhdCBpdHMgcHJldmlvdXMgcG9zaXRpb24gKGVsSW5kZXgpXG4gICAgICAgIHRoaXMuaW5zZXJ0QXRJbmRleCh0aGlzLmVsSW5kZXgpO1xuICAgICAgICB0aGlzLmVsSW5kZXggPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMucGFyZW50RWwgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuJGVsZW1lbnQucmVtb3ZlQ2xhc3MoJ2Z1bGwtc2NyZWVuJyk7XG4gICAgICAgIGlmICh0aGlzLl9kb21VcGRhdGVkKSB7XG4gICAgICAgICAgICB0aGlzLl9kb21VcGRhdGVkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5saXN0ZW5RdWVyeSA9IGZhbHNlO1xuICAgICAgICB0aGlzLl91bnN1YnNjcmliZUR2ID0gdHJ1ZTtcbiAgICAgICAgdGhpcy50eXBlYWhlYWQuaGlkZSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVuZGVyTW9iaWxlQXV0b0NvbXBsZXRlKCkge1xuICAgICAgICAvLyBHZXQgdGhlIHBhcmVudCBlbGVtZW50IG9mIHRoZSBzZWFyY2ggZWxlbWVudCB3aGljaCBjYW4gYmUgbmV4dCBvciBwcmV2IGVsZW1lbnQsIGlmIGJvdGggYXJlIGVtcHR5IHRoZW4gZ2V0IHRoZSBwYXJlbnQgb2YgZWxlbWVudC5cbiAgICAgICAgaWYgKCFpc0RlZmluZWQodGhpcy5lbEluZGV4KSkge1xuICAgICAgICAgICAgdGhpcy5wYXJlbnRFbCA9IHRoaXMuJGVsZW1lbnQucGFyZW50KCk7XG4gICAgICAgICAgICB0aGlzLmVsSW5kZXggPSB0aGlzLnBhcmVudEVsLmNoaWxkcmVuKCkuaW5kZXgodGhpcy4kZWxlbWVudCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLiRlbGVtZW50Lmhhc0NsYXNzKCdmdWxsLXNjcmVlbicpKSB7XG4gICAgICAgICAgICAvLyB0aGlzIGZsYWcgaXMgc2V0IHRvIG5vdGlmeSB0aGF0IHRoZSB0eXBlYWhlYWQtY29udGFpbmVyIGRvbSBoYXMgY2hhbmdlZCBpdHMgcG9zaXRpb25cbiAgICAgICAgICAgIHRoaXMuX2RvbVVwZGF0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgLy8gQWRkIGZ1bGwgc2NyZWVuIGNsYXNzIG9uIGZvY3VzIG9mIHRoZSBpbnB1dCBlbGVtZW50LlxuICAgICAgICAgICAgdGhpcy4kZWxlbWVudC5hZGRDbGFzcygnZnVsbC1zY3JlZW4nKTtcblxuICAgICAgICAgICAgLy8gQWRkIHBvc2l0aW9uIHRvIHNldCB0aGUgaGVpZ2h0IHRvIGF1dG9cbiAgICAgICAgICAgIGlmICh0aGlzLnBvc2l0aW9uID09PSAnaW5saW5lJykge1xuICAgICAgICAgICAgICAgIHRoaXMuJGVsZW1lbnQuYWRkQ2xhc3ModGhpcy5wb3NpdGlvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gZm9jdXMgaXMgbG9zdCB3aGVuIGVsZW1lbnQgaXMgY2hhbmdlZCB0byBmdWxsLXNjcmVlbiwga2V5ZG93biB0byBzZWxlY3QgbmV4dCBpdGVtcyB3aWxsIG5vdCB3b3JrXG4gICAgICAgIC8vIEhlbmNlIGV4cGxpY2l0bHkgZm9jdXNpbmcgdGhlIGlucHV0XG4gICAgICAgIGlmICh0aGlzLiRlbGVtZW50Lmhhc0NsYXNzKCdmdWxsLXNjcmVlbicpKSB7XG4gICAgICAgICAgICB0aGlzLiRlbGVtZW50LmZpbmQoJy5hcHAtc2VhcmNoLWlucHV0JykuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0RGF0YVNvdXJjZUFzT2JzZXJ2YWJsZShxdWVyeTogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgLy8gc2hvdyBkcm9wZG93biBvbmx5IHdoZW4gdGhlcmUgaXMgY2hhbmdlIGluIHF1ZXJ5LiBUaGlzIHNob3VsZCBub3QgYXBwbHkgd2hlbiBkYXRhb3B0aW9ucyB3aXRoIGZpbHRlckZpZWxkcyBhcmUgdXBkYXRlZC5cbiAgICAgICAgLy8gd2hlbiBsYXN0UmVzdWx0IGlzIG5vdCBhdmFpbGFibGUgaS5lLiBzdGlsbCB0aGUgZmlyc3QgY2FsbCBpcyBwZW5kaW5nIGFuZCBzZWNvbmQgcXVlcnkgaXMgaW52b2tlZCB0aGVuIGRvIG5vdCByZXR1cm4uXG4gICAgICAgIGlmICh0aGlzLl9sYXN0UXVlcnkgPT09IHF1ZXJ5ICYmICFnZXQodGhpcy5kYXRhb3B0aW9ucywgJ2ZpbHRlckZpZWxkcycpICYmIGlzRGVmaW5lZCh0aGlzLl9sYXN0UmVzdWx0KSkge1xuICAgICAgICAgICAgdGhpcy5fbG9hZGluZ0l0ZW1zID0gZmFsc2U7XG4gICAgICAgICAgICByZXR1cm4gb2YodGhpcy5fbGFzdFJlc3VsdCk7XG4gICAgICAgIH1cblxuICAgICAgICAvKlxuICAgICAgICAgICAgIFdNUy0xOTE3NzogT24gZm9jdXMgb2YgaW5wdXQgZmllbGQgZm9yIGF1dG9jb21wbGV0ZSB0eXBlLCBkbyBub3QgdHJpZ2dlciBhcGkgY2FsbCB3aGVuXG4gICAgICAgICAgICAgICAgIGEpIHNlYXJjaGtleSBhbmQgZGlzcGxheWV4cHJlc3Npb24gYXJlIGRpZmZlcmVudFxuICAgICAgICAgICAgICAgICBiKSBiaW5kZGlzcGxheWxhYmVsIGNvbnRhaW5zIG11bHRpcGxlIHZhbHVlc1xuICAgICAgICAgICAgICAgICBjKSBiaW5kZGlzcGxheWxhYmVsIGNvbnRhaW5zIHNpbmdsZSB2YWx1ZSB3aGljaCBkb2VzIG5vdCBtYXRjaCB3aXRoIHNlYXJjaGtleVxuICAgICAgICAqL1xuICAgICAgICBpZiAodGhpcy50eXBlID09PSAnYXV0b2NvbXBsZXRlJyAmJiB0aGlzLnNlYXJjaGtleSAmJiB0aGlzLnF1ZXJ5ICYmIHRoaXMuZGF0YXZhbHVlKSB7XG4gICAgICAgICAgICBsZXQgYmluZERpc3BsYXlMYWJlbEFycmF5ID0gW107XG4gICAgICAgICAgICBjb25zdCBzZWFyY2hLZXlBcnJheSA9IHNwbGl0KHRoaXMuc2VhcmNoa2V5LCAnLCcpO1xuICAgICAgICAgICAgbGV0IGRpc3BsYXlsYWJlbDtcbiAgICAgICAgICAgIGlmICh0aGlzLmJpbmRkaXNwbGF5bGFiZWwpIHtcbiAgICAgICAgICAgICAgICBiaW5kRGlzcGxheUxhYmVsQXJyYXkgPSBzcGxpdCh0aGlzLmJpbmRkaXNwbGF5bGFiZWwsICcrJyk7XG4gICAgICAgICAgICAgICAgaWYgKGJpbmREaXNwbGF5TGFiZWxBcnJheS5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFpbmNsdWRlcyhiaW5kRGlzcGxheUxhYmVsQXJyYXlbMF0sICd8JykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlZ2V4ID0gL1xcWyguKj8pXFxdLztcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlsYWJlbCA9IHJlZ2V4LmV4ZWMoYmluZERpc3BsYXlMYWJlbEFycmF5WzBdKVsxXTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlsYWJlbCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoKGJpbmREaXNwbGF5TGFiZWxBcnJheS5sZW5ndGggPiAxIHx8IChkaXNwbGF5bGFiZWwgJiYgIWluY2x1ZGVzKHNlYXJjaEtleUFycmF5LCBkaXNwbGF5bGFiZWwpKVxuICAgICAgICAgICAgICAgIHx8ICh0aGlzLmRpc3BsYXlleHByZXNzaW9uICYmICFpbmNsdWRlcyhzZWFyY2hLZXlBcnJheSwgdGhpcy5kaXNwbGF5ZXhwcmVzc2lvbikpKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2xvYWRpbmdJdGVtcyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHJldHVybiBvZihbXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fbGFzdFF1ZXJ5ID0gdGhpcy5xdWVyeTtcbiAgICAgICAgcmV0dXJuIGZyb20odGhpcy5nZXREYXRhU291cmNlKHF1ZXJ5KSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGhhbmRsZUV2ZW50KG5vZGU6IEhUTUxFbGVtZW50LCBldmVudE5hbWU6IHN0cmluZywgZXZlbnRDYWxsYmFjazogRnVuY3Rpb24sIGxvY2FsczogYW55KSB7XG4gICAgICAgIGlmICghaW5jbHVkZXMoWydibHVyJywgJ2ZvY3VzJywgJ3NlbGVjdCcsICdzdWJtaXQnLCAnY2hhbmdlJ10sIGV2ZW50TmFtZSkpIHtcbiAgICAgICAgICAgIHN1cGVyLmhhbmRsZUV2ZW50KG5vZGUsIGV2ZW50TmFtZSwgZXZlbnRDYWxsYmFjaywgbG9jYWxzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIGhpZ2hsaWdodCB0aGUgY2hhcmFjdGVycyBpbiB0aGUgZHJvcGRvd24gbWF0Y2hpbmcgdGhlIHF1ZXJ5LlxuICAgIHByaXZhdGUgaGlnaGxpZ2h0KG1hdGNoOiBUeXBlYWhlYWRNYXRjaCwgcXVlcnk6IHN0cmluZykge1xuICAgICAgICBpZiAodGhpcy50eXBlYWhlYWRDb250YWluZXIpIHtcbiAgICAgICAgICAgIC8vIGhpZ2hsaWdodCBvZiBjaGFycyB3aWxsIHdvcmsgb25seSB3aGVuIGxhYmVsIGFyZSBzdHJpbmdzLlxuICAgICAgICAgICAgKG1hdGNoIGFzIGFueSkudmFsdWUgPSBtYXRjaC5pdGVtLmxhYmVsLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy50eXBlYWhlYWRDb250YWluZXIuaGlnaGxpZ2h0KG1hdGNoLCBxdWVyeSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBpbnNlcnRzIHRoZSBlbGVtZW50IGF0IHRoZSBpbmRleCBwb3NpdGlvblxuICAgIHByaXZhdGUgaW5zZXJ0QXRJbmRleChpKSB7XG4gICAgICAgIGlmIChpID09PSAwKSB7XG4gICAgICAgICAgICB0aGlzLnBhcmVudEVsLnByZXBlbmQodGhpcy4kZWxlbWVudCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCAkZWxBdEluZGV4ID0gdGhpcy5wYXJlbnRFbC5jaGlsZHJlbigpLmVxKGkpO1xuICAgICAgICAgICAgaWYgKCRlbEF0SW5kZXgubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy4kZWxlbWVudC5pbnNlcnRCZWZvcmUodGhpcy5wYXJlbnRFbC5jaGlsZHJlbigpLmVxKGkpKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy4kZWxlbWVudC5pbnNlcnRBZnRlcih0aGlzLnBhcmVudEVsLmNoaWxkcmVuKCkuZXEoaSAtIDEpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIENoZWNrIGlmIHRoZSB3aWRnZXQgaXMgb2YgdHlwZSBhdXRvY29tcGxldGUgaW4gbW9iaWxlIHZpZXcvIGFwcFxuICAgIHB1YmxpYyBpc01vYmlsZUF1dG9Db21wbGV0ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHlwZSA9PT0gJ2F1dG9jb21wbGV0ZScgJiYgaXNNb2JpbGUoKTtcbiAgICB9XG5cbiAgICAvLyBDaGVjayBpZiB0aGUgcXVlcnkgaXMgZW50ZXJlZCBpbiB0aGUgaW5wdXQgYW5kIHRoZSB2aWV3IGlzIG5vdCBtb2JpbGVcbiAgICBwdWJsaWMgaXNRdWVyeUVudGVyZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNob3djbGVhciAmJiB0aGlzLnNob3dDbG9zZWJ0bjtcbiAgICB9XG5cbiAgICBwcml2YXRlIGxvYWRNb3JlRGF0YShpbmNyZW1lbnRQYWdlPzogYm9vbGVhbikge1xuICAgICAgICBpZiAodGhpcy5kYXRhUHJvdmlkZXIuaXNMYXN0UGFnZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIEluY3JlYXNlIHRoZSBwYWdlIG51bWJlciBhbmQgdHJpZ2dlciBmb3JjZSBxdWVyeSB1cGRhdGVcbiAgICAgICAgdGhpcy5wYWdlID0gaW5jcmVtZW50UGFnZSA/IHRoaXMucGFnZSArIDEgOiB0aGlzLnBhZ2U7XG5cbiAgICAgICAgdGhpcy5pc1Njcm9sbGVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5fbG9hZGluZ0l0ZW1zID0gdHJ1ZTtcblxuICAgICAgICAvLyB3aGVuIGludm9raW5nIG5ldyBzZXQgb2YgcmVzdWx0cywgcmVzZXQgdGhlIGxhc3RRdWVyeS5cbiAgICAgICAgaWYgKGluY3JlbWVudFBhZ2UpIHtcbiAgICAgICAgICAgIHRoaXMuX2xhc3RRdWVyeSA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHRyaWdnZXIgdGhlIHR5cGVhaGVhZCBjaGFuZ2UgbWFudWFsbHkgdG8gZmV0Y2ggdGhlIG5leHQgc2V0IG9mIHJlc3VsdHMuXG4gICAgICAgIHRoaXMudHlwZWFoZWFkLm9uSW5wdXQoe1xuICAgICAgICAgICAgdGFyZ2V0OiB7XG4gICAgICAgICAgICAgICAgdmFsdWU6IHRyaW0odGhpcy5xdWVyeSkgfHwgJzAnIC8vIGR1bW15IGRhdGEgdG8gbm90aWZ5IHRoZSBvYnNlcnZhYmxlc1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBvbiBmb2N1c291dCwgc3Vic2NyaWJlIHRvIHRoZSBkYXRhdmFsdWUgY2hhbmdlcyBhZ2FpblxuICAgIHByaXZhdGUgb25Gb2N1c091dCgpIHtcbiAgICAgICAgdGhpcy5fdW5zdWJzY3JpYmVEdiA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9sb2FkaW5nSXRlbXMgPSBmYWxzZTtcbiAgICAgICAgLy8gcmVzZXQgdGhlIHBhZ2UgdmFsdWUgb24gZm9jdXNvdXQuXG4gICAgICAgIHRoaXMucGFnZSA9IDE7XG4gICAgICAgIC8vIGlmIGRvbVVwZGF0ZWQgaXMgdHJ1ZSB0aGVuIGRvIG5vdCBoaWRlIHRoZSBkcm9wZG93biBpbiB0aGUgZnVsbHNjcmVlblxuICAgICAgICBpZiAoIXRoaXMuX2RvbVVwZGF0ZWQgJiYgdGhpcy5faXNPcGVuKSB7XG4gICAgICAgICAgICB0aGlzLmxpc3RlblF1ZXJ5ID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5faXNPcGVuID0gZmFsc2U7XG4gICAgICAgIC8vIG9uIG91dHNpZGUgY2xpY2ssIHR5cGVhaGVhZCBpcyBoaWRkZW4uIFRvIGF2b2lkIHRoaXMsIHdoZW4gZnVsbHNjcmVlbiBpcyBzZXQsIG92ZXJyaWRkaW5nIGlzRm9jdXNlZCBmbGFnIG9uIHRoZSB0eXBlYWhlYWQgY29udGFpbmVyXG4gICAgICAgIGlmICh0aGlzLl9kb21VcGRhdGVkICYmIHRoaXMudHlwZWFoZWFkICYmICh0aGlzLnR5cGVhaGVhZCBhcyBhbnkpLl9jb250YWluZXIpIHtcbiAgICAgICAgICAgICh0aGlzLnR5cGVhaGVhZCBhcyBhbnkpLl9jb250YWluZXIuaXNGb2N1c2VkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgb25JbnB1dENoYW5nZSgkZXZlbnQpIHtcbiAgICAgICAgLy8gcmVzZXQgYWxsIHRoZSBwcmV2aW91cyBwYWdlIGRldGFpbHMgaW4gb3JkZXIgdG8gZmV0Y2ggbmV3IHNldCBvZiByZXN1bHQuXG4gICAgICAgIHRoaXMucmVzdWx0ID0gW107XG4gICAgICAgIHRoaXMucGFnZSA9IDE7XG4gICAgICAgIHRoaXMubGlzdGVuUXVlcnkgPSB0aGlzLmlzVXBkYXRlT25LZXlQcmVzcygpO1xuICAgICAgICB0aGlzLl9tb2RlbEJ5VmFsdWUgPSB1bmRlZmluZWQ7XG5cbiAgICAgICAgLy8gd2hlbiBpbnB1dCBpcyBjbGVhcmVkLCByZXNldCB0aGUgZGF0YXZhbHVlXG4gICAgICAgIGlmICh0aGlzLnF1ZXJ5ID09PSAnJykge1xuICAgICAgICAgICAgdGhpcy5xdWVyeU1vZGVsID0gJyc7XG4gICAgICAgICAgICB0aGlzLl9tb2RlbEJ5VmFsdWUgPSAnJztcbiAgICAgICAgICAgIHRoaXMudXBkYXRlUHJldkRhdGF2YWx1ZSh0aGlzLl9sYXN0UXVlcnkpO1xuICAgICAgICAgICAgdGhpcy5pbnZva2VPbkNoYW5nZSh0aGlzLl9tb2RlbEJ5VmFsdWUsIHt9LCB0cnVlKTtcblxuICAgICAgICAgICAgdGhpcy5pbnZva2VFdmVudENhbGxiYWNrKCdjbGVhcicsIHsgJGV2ZW50IH0pO1xuXG4gICAgICAgICAgICAvLyB0cmlnZ2VyIG9uU3VibWl0IG9ubHkgd2hlbiB0aGUgc2VhcmNoIGlucHV0IGlzIGNsZWFyZWQgb2ZmIGFuZCBkbyBub3QgdHJpZ2dlciB3aGVuIHRhYiBpcyBwcmVzc2VkLlxuICAgICAgICAgICAgaWYgKCRldmVudCAmJiAkZXZlbnQud2hpY2ggIT09IDkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmludm9rZUV2ZW50Q2FsbGJhY2soJ3N1Ym1pdCcsIHsgJGV2ZW50IH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gaW52b2tpbmcgY2hhbmdlIGV2ZW50IG9uIGV2ZXJ5IGlucHV0IHZhbHVlIGNoYW5nZS5cbiAgICAgICAgICAgIHRoaXMuaW52b2tlRXZlbnRDYWxsYmFjaygnY2hhbmdlJywge1xuICAgICAgICAgICAgICAgICRldmVudDogJGV2ZW50LFxuICAgICAgICAgICAgICAgIG5ld1ZhbDogdGhpcy5fbW9kZWxCeVZhbHVlIHx8IHRoaXMucXVlcnksXG4gICAgICAgICAgICAgICAgb2xkVmFsOiAodGhpcyBhcyBhbnkpLnByZXZEYXRhdmFsdWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2hvd0Nsb3NlYnRuID0gKHRoaXMucXVlcnkgIT09ICcnKTtcbiAgICB9XG5cbiAgICAvLyBUcmlnZ2VyZWQgZm9yIGVudGVyIGV2ZW50XG4gICAgcHJpdmF0ZSBoYW5kbGVFbnRlckV2ZW50KCRldmVudCkge1xuICAgICAgICAvLyBzdWJtaXQgZXZlbnQgdHJpZ2dlcmVkIHdoZW4gdGhlcmUgaXMgbm8gc2VhcmNoIHJlc3VsdHNcbiAgICAgICAgaWYgKCFnZXQodGhpcy50eXBlYWhlYWQsICdtYXRjaGVzLmxlbmd0aCcpKSB7XG4gICAgICAgICAgICB0aGlzLm9uU2VhcmNoU2VsZWN0KCRldmVudCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gVHJpZ2dlcnJlZCB3aGVuIHR5cGVhaGVhZCBvcHRpb24gaXMgc2VsZWN0ZWQuXG4gICAgcHJpdmF0ZSBvblNlYXJjaFNlbGVjdCgkZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIGxldCBpdGVtO1xuICAgICAgICAvLyBXTVMtMjI1MzM6IEJlZm9yZSBhZGRpbmcgYWN0aXZlIHR5cGVhaGVhZCBlbCwgY2hlY2sgaWYgdGhlIGVudGVyZWQgcXVlcnkgbWF0Y2hlcyB3aXRoIHRoZSBhY3RpdmUgZWwgb3Igbm90XG4gICAgICAgIGNvbnN0IGlzUXVlcnlNYXRjaCA9IHRoaXMudHlwZWFoZWFkQ29udGFpbmVyPy5hY3RpdmU/LnZhbHVlID09PSB0aGlzLnF1ZXJ5O1xuXG4gICAgICAgIGlmICh0aGlzLnR5cGVhaGVhZENvbnRhaW5lciAmJiB0aGlzLnR5cGVhaGVhZENvbnRhaW5lci5hY3RpdmUgJiYgaXNRdWVyeU1hdGNoKSB7XG4gICAgICAgICAgICBpdGVtID0gdGhpcy50eXBlYWhlYWRDb250YWluZXIuYWN0aXZlLml0ZW07XG4gICAgICAgIH1cbiAgICAgICAgJGV2ZW50ID0gdGhpcy5ldmVudERhdGEoJGV2ZW50LCBpdGVtIHx8IHt9KTtcblxuICAgICAgICAvLyBzZWFyY2hPbiBpcyBzZXQgYXMgb25CdG5DbGljaywgdGhlbiBpbnZva2UgdGhlIHNlYXJjaCBhcGkgY2FsbCBtYW51YWxseS5cbiAgICAgICAgaWYgKCF0aGlzLmlzVXBkYXRlT25LZXlQcmVzcygpKSB7XG4gICAgICAgICAgICB0aGlzLmxpc3RlblF1ZXJ5ID0gdHJ1ZTtcbiAgICAgICAgICAgIC8vIHRyaWdnZXIgdGhlIHR5cGVhaGVhZCBjaGFuZ2UgbWFudWFsbHkgdG8gZmV0Y2ggdGhlIG5leHQgc2V0IG9mIHJlc3VsdHMuXG4gICAgICAgICAgICB0aGlzLnR5cGVhaGVhZC5vbklucHV0KHtcbiAgICAgICAgICAgICAgICB0YXJnZXQ6IHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHRoaXMucXVlcnkgLy8gZHVtbXkgZGF0YSB0byBub3RpZnkgdGhlIG9ic2VydmFibGVzXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gd2hlbiBtYXRjaGVzIGFyZSBhdmFpbGFibGUuXG4gICAgICAgIGlmICh0aGlzLnR5cGVhaGVhZENvbnRhaW5lciAmJiB0aGlzLmxpRWxlbWVudHMubGVuZ3RoICYmIGlzUXVlcnlNYXRjaCkge1xuICAgICAgICAgICAgdGhpcy50eXBlYWhlYWRDb250YWluZXIuc2VsZWN0QWN0aXZlTWF0Y2goKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucXVlcnlNb2RlbCA9IHRoaXMucXVlcnk7XG4gICAgICAgICAgICB0aGlzLmludm9rZUV2ZW50Q2FsbGJhY2soJ3N1Ym1pdCcsIHsgJGV2ZW50IH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbnZva2VPbkJlZm9yZVNlcnZpY2VDYWxsKGlucHV0RGF0YSkge1xuICAgICAgICB0aGlzLmludm9rZUV2ZW50Q2FsbGJhY2soJ2JlZm9yZXNlcnZpY2VjYWxsJywgeyBpbnB1dERhdGEgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvbkRyb3Bkb3duT3BlbigpIHtcbiAgICAgICAgaWYgKHRoaXMuY2xlYXJEYXRhKSB7XG4gICAgICAgICAgICB0aGlzLnR5cGVhaGVhZC5oaWRlKCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gc2V0dGluZyB0aGUgdWxFbGVtZW50cywgbGlFbGVtZW50IG9uIHR5cGVhaGVhZENvbnRhaW5lci5cbiAgICAgICAgLy8gYXMgd2UgYXJlIHVzaW5nIGN1c3RvbU9wdGlvbiB0ZW1wbGF0ZSwgbGlFbGVtZW50cyBhcmUgbm90IGF2YWlsYWJsZSBvbiB0eXBlYWhlYWRDb250YWluZXIgc28gYXBwZW5kIHRoZW0gZXhwbGljaXRseS5cbiAgICAgICAgY29uc3QgZm4gPSBkZWJvdW5jZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9pc09wZW4gPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy50eXBlYWhlYWRDb250YWluZXIgPSB0aGlzLnR5cGVhaGVhZC5fY29udGFpbmVyIHx8ICh0aGlzLnR5cGVhaGVhZCBhcyBhbnkpLl90eXBlYWhlYWQuaW5zdGFuY2U7XG4gICAgICAgICAgICAodGhpcy50eXBlYWhlYWRDb250YWluZXIgYXMgYW55KS5saUVsZW1lbnRzID0gdGhpcy5saUVsZW1lbnRzO1xuICAgICAgICAgICAgKHRoaXMudHlwZWFoZWFkQ29udGFpbmVyIGFzIGFueSkudWxFbGVtZW50ID0gdGhpcy51bEVsZW1lbnQ7XG4gICAgICAgICAgICBhZGp1c3RDb250YWluZXJQb3NpdGlvbigkKCd0eXBlYWhlYWQtY29udGFpbmVyJyksIHRoaXMubmF0aXZlRWxlbWVudCwgKHRoaXMudHlwZWFoZWFkIGFzIGFueSkuX3R5cGVhaGVhZCwgJCgndHlwZWFoZWFkLWNvbnRhaW5lciAuZHJvcGRvd24tbWVudScpKTtcblxuICAgICAgICB9KTtcblxuICAgICAgICBmbigpO1xuXG4gICAgICAgIC8vIG9wZW4gZnVsbC1zY3JlZW4gc2VhcmNoIHZpZXdcbiAgICAgICAgaWYgKHRoaXMuaXNNb2JpbGVBdXRvQ29tcGxldGUoKSkge1xuICAgICAgICAgICAgaWYgKCF0aGlzLiRlbGVtZW50Lmhhc0NsYXNzKCdmdWxsLXNjcmVlbicpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJNb2JpbGVBdXRvQ29tcGxldGUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGRyb3Bkb3duRWwgPSB0aGlzLmRyb3Bkb3duRWwuY2xvc2VzdCgndHlwZWFoZWFkLWNvbnRhaW5lcicpO1xuXG4gICAgICAgICAgICBkcm9wZG93bkVsLmluc2VydEFmdGVyKHRoaXMuJGVsZW1lbnQuZmluZCgnaW5wdXQnKS5maXJzdCgpKTtcbiAgICAgICAgICAgIGNvbnN0IHNjcmVlbkhlaWdodCA9IHRoaXMuJGVsZW1lbnQuY2xvc2VzdCgnLmFwcC1jb250ZW50JykuaGVpZ2h0KCk7XG4gICAgICAgICAgICBkcm9wZG93bkVsLmNzcyh7IHBvc2l0aW9uOiAncmVsYXRpdmUnLCB0b3A6IDAsIGhlaWdodDogc2NyZWVuSGVpZ2h0ICsgJ3B4JyB9KTtcbiAgICAgICAgICAgIHRoaXMuc2hvd0Nsb3NlYnRuID0gdGhpcy5xdWVyeSAmJiB0aGlzLnF1ZXJ5ICE9PSAnJztcblxuICAgICAgICAgICAgaWYgKCFpc1VuZGVmaW5lZCh0aGlzLmRhdGFQcm92aWRlci5pc0xhc3RQYWdlKSAmJiAhdGhpcy5kYXRhUHJvdmlkZXIuaXNMYXN0UGFnZSkge1xuICAgICAgICAgICAgICAgIHRoaXMudHJpZ2dlclNlYXJjaCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZWxlY3ROZXh0KCkge1xuICAgICAgICBjb25zdCBtYXRjaGVzID0gdGhpcy50eXBlYWhlYWRDb250YWluZXIubWF0Y2hlcztcblxuICAgICAgICBpZiAoIW1hdGNoZXMpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBpbmRleCA9IG1hdGNoZXMuaW5kZXhPZih0aGlzLnR5cGVhaGVhZENvbnRhaW5lci5hY3RpdmUpO1xuXG4gICAgICAgIC8vIG9uIGtleWRvd24sIGlmIHNjcm9sbCBpcyBhdCB0aGUgYm90dG9tIGFuZCBuZXh0IHBhZ2UgcmVjb3JkcyBhcmUgYXZhaWxhYmxlLCBmZXRjaCBuZXh0IHBhZ2UgaXRlbXMuXG4gICAgICAgIGlmICghdGhpcy5fbG9hZGluZ0l0ZW1zICYmICF0aGlzLmRhdGFQcm92aWRlci5pc0xhc3RQYWdlICYmIGluZGV4ICsgMSA+IG1hdGNoZXMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgLy8gaW5kZXggaXMgc2F2ZWQgaW4gb3JkZXIgdG8gc2VsZWN0IHRoZSBsYXN0U2VsZWN0ZWQgaXRlbSBpbiB0aGUgZHJvcGRvd24gYWZ0ZXIgZmV0Y2hpbmcgbmV4dCBwYWdlIGl0ZW1zLlxuICAgICAgICAgICAgdGhpcy5sYXN0U2VsZWN0ZWRJbmRleCA9IGluZGV4O1xuICAgICAgICAgICAgdGhpcy5sb2FkTW9yZURhdGEodHJ1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNldExhc3RBY3RpdmVNYXRjaEFzU2VsZWN0ZWQoKSB7XG4gICAgICAgIGlmICh0aGlzLmxhc3RTZWxlY3RlZEluZGV4KSB7XG4gICAgICAgICAgICAodGhpcy50eXBlYWhlYWRDb250YWluZXIgYXMgYW55KS5fYWN0aXZlID0gdGhpcy50eXBlYWhlYWRDb250YWluZXIubWF0Y2hlc1t0aGlzLmxhc3RTZWxlY3RlZEluZGV4XTtcbiAgICAgICAgICAgIHRoaXMudHlwZWFoZWFkQ29udGFpbmVyLm5leHRBY3RpdmVNYXRjaCgpO1xuICAgICAgICAgICAgdGhpcy5sYXN0U2VsZWN0ZWRJbmRleCA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgdHJpZ2dlclNlYXJjaCgpIHtcbiAgICAgICAgaWYgKHRoaXMuZGF0YVByb3ZpZGVyLmlzTGFzdFBhZ2UgfHwgIXRoaXMuJGVsZW1lbnQuaGFzQ2xhc3MoJ2Z1bGwtc2NyZWVuJykpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB0eXBlQWhlYWREcm9wRG93biA9IHRoaXMuZHJvcGRvd25FbDtcbiAgICAgICAgY29uc3QgJGxhc3RJdGVtID0gdHlwZUFoZWFkRHJvcERvd24uZmluZCgnbGknKS5sYXN0KCk7XG5cbiAgICAgICAgLy8gQ2hlY2sgaWYgbGFzdCBpdGVtIGlzIG5vdCBiZWxvdyB0aGUgZnVsbCBzY3JlZW5cbiAgICAgICAgaWYgKCRsYXN0SXRlbS5sZW5ndGggJiYgdHlwZUFoZWFkRHJvcERvd24ubGVuZ3RoICYmICh0eXBlQWhlYWREcm9wRG93bi5oZWlnaHQoKSArIHR5cGVBaGVhZERyb3BEb3duLnBvc2l0aW9uKCkudG9wID4gJGxhc3RJdGVtLmhlaWdodCgpICsgJGxhc3RJdGVtLnBvc2l0aW9uKCkudG9wKSkge1xuICAgICAgICAgICAgdGhpcy5sb2FkTW9yZURhdGEodHJ1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGlzVXBkYXRlT25LZXlQcmVzcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VhcmNob24gPT09ICd0eXBpbmcnO1xuICAgIH1cblxuICAgIHByaXZhdGUgZGVib3VuY2VEZWZhdWx0UXVlcnkoZGF0YSkge1xuICAgICAgICB0aGlzLl9kZWZhdWx0UXVlcnlJbnZva2VkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5nZXREYXRhU291cmNlKGRhdGEsIHRydWUpLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICBpZiAocmVzcG9uc2UubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5xdWVyeU1vZGVsID0gcmVzcG9uc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5fbGFzdFF1ZXJ5ID0gdGhpcy5xdWVyeSA9IHRoaXMucXVlcnlNb2RlbFswXS5sYWJlbCB8fCAnJztcbiAgICAgICAgICAgICAgICB0aGlzLl9tb2RlbEJ5VmFsdWUgPSB0aGlzLnF1ZXJ5TW9kZWxbMF0udmFsdWU7XG4gICAgICAgICAgICAgICAgdGhpcy5fbW9kZWxCeUtleSA9IHRoaXMucXVlcnlNb2RlbFswXS5rZXk7XG4gICAgICAgICAgICAgICAgdGhpcy5zaG93Q2xvc2VidG4gPSAodGhpcy5xdWVyeSAhPT0gJycpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9tb2RlbEJ5VmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgdGhpcy5xdWVyeU1vZGVsID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIHRoaXMucXVlcnkgPSAnJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLmNsZWFyRGF0YSkge1xuICAgICAgICAgICAgICAgIGlmIChnZXQoKHRoaXMudHlwZWFoZWFkIGFzIGFueSksICdfdHlwZWFoZWFkLmlzU2hvd24nKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnR5cGVhaGVhZC5oaWRlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZUJ5RGF0YXZhbHVlKGRhdGEpIHtcbiAgICAgICAgdGhpcy51cGRhdGVCeURhdGFzZXQoZGF0YSk7XG4gICAgICAgIHRoaXMudXBkYXRlQnlEYXRhU291cmNlKGRhdGEpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlQnlEYXRhU291cmNlKGRhdGEpIHtcbiAgICAgICAgLy8gdmFsdWUgaXMgcHJlc2VudCBidXQgdGhlIGNvcnJlc3BvbmRpbmcga2V5IGlzIG5vdCBmb3VuZCB0aGVuIGZldGNoIG5leHQgc2V0XG4gICAgICAgIC8vIG1vZGVsQnlLZXkgd2lsbCBiZSBzZXQgb25seSB3aGVuIGRhdGF2YWx1ZSBpcyBhdmFpbGFibGUgaW5zaWRlIHRoZSBsb2NhbERhdGEgb3RoZXJ3aXNlIG1ha2UgYSBOL3cgY2FsbC5cbiAgICAgICAgaWYgKGlzRGVmaW5lZChkYXRhKSAmJiAhaXNPYmplY3QoZGF0YSkgJiYgdGhpcy5kYXRhc291cmNlICYmICFpc0RlZmluZWQodGhpcy5fbW9kZWxCeUtleSkgJiYgdGhpcy5kYXRhZmllbGQgIT09IEFMTEZJRUxEUykge1xuICAgICAgICAgICAgLy8gQXZvaWQgbWFraW5nIGRlZmF1bHQgcXVlcnkgaWYgcXVlcnlNb2RlbCBhbHJlYWR5IGV4aXN0cy5cbiAgICAgICAgICAgIGlmIChpc0RlZmluZWQodGhpcy5xdWVyeU1vZGVsKSAmJiAhaXNFbXB0eSh0aGlzLnF1ZXJ5TW9kZWwpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVEYXRhdmFsdWVGcm9tUXVlcnlNb2RlbCgpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gTWFrZSBkZWZhdWx0IHF1ZXJ5IGNhbGwgb25seSB3aGVuIGRhdGFzb3VyY2Ugc3VwcG9ydHMgQ1JVRCAobGl2ZSB2YXJpYWJsZSkuXG4gICAgICAgICAgICBpZiAoIXRoaXMuX2RlZmF1bHRRdWVyeUludm9rZWQgJiYgdGhpcy5kYXRhc291cmNlLmV4ZWN1dGUoRGF0YVNvdXJjZS5PcGVyYXRpb24uU1VQUE9SVFNfQ1JVRCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRlYm91bmNlRGVmYXVsdFF1ZXJ5KGRhdGEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gdXBkYXRlcyB0aGUgbW9kZWwgdmFsdWUgdXNpbmcgcXVlcnlNb2RlbFxuICAgIHByaXZhdGUgdXBkYXRlRGF0YXZhbHVlRnJvbVF1ZXJ5TW9kZWwoKSB7XG4gICAgICAgIGlmIChpc0RlZmluZWQodGhpcy5xdWVyeU1vZGVsKSkge1xuICAgICAgICAgICAgdGhpcy5fbW9kZWxCeVZhbHVlID0gaXNBcnJheSh0aGlzLnF1ZXJ5TW9kZWwpID8gKHRoaXMucXVlcnlNb2RlbFswXSBhcyBEYXRhU2V0SXRlbSkudmFsdWUgOiB0aGlzLnF1ZXJ5TW9kZWw7XG4gICAgICAgICAgICB0aGlzLl9tb2RlbEJ5S2V5ID0gaXNBcnJheSh0aGlzLnF1ZXJ5TW9kZWwpID8gKHRoaXMucXVlcnlNb2RlbFswXSBhcyBEYXRhU2V0SXRlbSkua2V5IDogdGhpcy5xdWVyeU1vZGVsO1xuICAgICAgICAgICAgdGhpcy50b0JlUHJvY2Vzc2VkRGF0YXZhbHVlID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVCeURhdGFzZXQoZGF0YTogYW55KSB7XG4gICAgICAgIC8vIGRlZmF1bHQgcXVlcnkgaXMgYWxyZWFkeSBpbnZva2VkIHRoZW4gZG8gbm90IG1ha2Ugb3RoZXIgZGVmYXVsdCBxdWVyeSBjYWxsLlxuICAgICAgICAvLyBGb3IgbG9jYWwgc2VhcmNoIGkuZS4gc2VhcmNoa2V5IGlzIHVuZGVmaW5lZCwgZG8gbm90IHJldHVybiwgdmVyaWZ5IHRoZSBkYXRhdmFsdWUgYWdhaW5zdCB0aGUgZGF0YXNldEl0ZW1zIC5cbiAgICAgICAgaWYgKHRoaXMuX2RlZmF1bHRRdWVyeUludm9rZWQgJiYgdGhpcy5zZWFyY2hrZXkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzZWxlY3RlZEl0ZW0gPSBmaW5kKHRoaXMuZGF0YXNldEl0ZW1zLCAoaXRlbSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIChpc09iamVjdChpdGVtLnZhbHVlKSA/IGlzRXF1YWwoaXRlbS52YWx1ZSwgZGF0YSkgOiAodG9TdHJpbmcoaXRlbS52YWx1ZSkpLnRvTG93ZXJDYXNlKCkgPT09ICh0b1N0cmluZyhkYXRhKSkudG9Mb3dlckNhc2UoKSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIHNldCB0aGUgZGVmYXVsdCBvbmx5IHdoZW4gaXQgaXMgYXZhaWxhYmxlIGluIGRhdGFzZXQuXG4gICAgICAgIGlmIChzZWxlY3RlZEl0ZW0pIHtcbiAgICAgICAgICAgIHRoaXMucXVlcnlNb2RlbCA9IFtzZWxlY3RlZEl0ZW1dO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZGF0YWZpZWxkID09PSBBTExGSUVMRFMgJiYgaXNPYmplY3QoZGF0YSkpIHtcbiAgICAgICAgICAgIHRoaXMucXVlcnlNb2RlbCA9IHRoaXMuZ2V0VHJhbnNmb3JtZWREYXRhKGV4dHJhY3REYXRhQXNBcnJheShkYXRhKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyByZXNldHRpbmcgdGhlIHF1ZXJ5TW9kZWwgb25seSB3aGVuIHByZXZEYXRhdmFsdWUgaXMgZXF1YWwgdG8gZGF0YVxuICAgICAgICAgICAgaWYgKCh0aGlzIGFzIGFueSkucHJldkRhdGF2YWx1ZSAhPT0gZGF0YSkge1xuICAgICAgICAgICAgICAgIHRoaXMucXVlcnlNb2RlbCA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB0aGlzLnF1ZXJ5ID0gJyc7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMudXBkYXRlRGF0YXZhbHVlRnJvbVF1ZXJ5TW9kZWwoKTtcblxuICAgICAgICAvLyBTaG93IHRoZSBsYWJlbCB2YWx1ZSBvbiBpbnB1dC5cbiAgICAgICAgdGhpcy5fbGFzdFF1ZXJ5ID0gdGhpcy5xdWVyeSA9IGlzRGVmaW5lZCh0aGlzLnF1ZXJ5TW9kZWwpICYmIHRoaXMucXVlcnlNb2RlbC5sZW5ndGggPyBnZXQodGhpcy5xdWVyeU1vZGVsWzBdLCAnbGFiZWwnKSA6ICcnO1xuICAgICAgICB0aGlzLnNob3dDbG9zZWJ0biA9ICh0aGlzLnF1ZXJ5ICE9PSAnJyk7XG4gICAgfVxuXG4gICAgLy8gSWYgd2UgaGF2ZSBsYXN0IHNlYXJjaCByZXN1bHRzIHRoZW4gb3BlbiBkcm9wZG93biBvbiBmb2N1c1xuICAgIHByaXZhdGUgaGFuZGxlRm9jdXMoJGV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLnR5cGUgPT09ICdzZWFyY2gnICYmIHRoaXMucXVlcnkgPT09IHRoaXMuX2xhc3RRdWVyeSAmJiB0aGlzLl9sYXN0UmVzdWx0KSB7XG4gICAgICAgICAgICAodGhpcy50eXBlYWhlYWQgYXMgYW55KS5rZXlVcEV2ZW50RW1pdHRlci5lbWl0KHRoaXMucXVlcnkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG5vdGlmeVN1YnNjcmliZXIoKSB7XG4gICAgICAgIGNvbnN0IHBhcmVudEVsID0gJCh0aGlzLm5hdGl2ZUVsZW1lbnQpLmNsb3Nlc3QoJy5hcHAtY29tcG9zaXRlLXdpZGdldC5jYXB0aW9uLWZsb2F0aW5nJyk7XG4gICAgICAgIGlmIChwYXJlbnRFbC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLmFwcC5ub3RpZnkoJ2NhcHRpb25Qb3NpdGlvbkFuaW1hdGUnLCB7ZGlzcGxheVZhbDogdHJ1ZSwgbmF0aXZlRWw6IHBhcmVudEVsfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBUaGlzIG1ldGhvZCByZXR1cm5zIGEgcHJvbWlzZSB0aGF0IHByb3ZpZGVzIHRoZSBmaWx0ZXJlZCBkYXRhIGZyb20gdGhlIGRhdGFzb3VyY2UuXG4gICAgcHVibGljIGdldERhdGFTb3VyY2UocXVlcnk6IEFycmF5PHN0cmluZz4gfCBzdHJpbmcsIHNlYXJjaE9uRGF0YUZpZWxkPzogYm9vbGVhbiwgbmV4dEl0ZW1JbmRleD86IG51bWJlcik6IFByb21pc2U8RGF0YVNldEl0ZW1bXT4ge1xuICAgICAgICAvLyBGb3IgZGVmYXVsdCBxdWVyeSwgc2VhcmNoT25EYXRhRmllbGQgaXMgc2V0IHRvIHRydWUsIHRoZW4gZG8gbm90IG1ha2UgYSBuL3cgY2FsbCB3aGVuIGRhdGFmaWVsZCBpcyBBTExGSUVMRFNcbiAgICAgICAgaWYgKHNlYXJjaE9uRGF0YUZpZWxkICYmIHRoaXMuZGF0YWZpZWxkID09PSBBTExGSUVMRFMpIHtcbiAgICAgICAgICAgIHRoaXMuX2xvYWRpbmdJdGVtcyA9IGZhbHNlO1xuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShbXSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBGb3IgZGVmYXVsdCBkYXRhdmFsdWUsIHNlYXJjaCBrZXkgYXMgdG8gYmUgb24gZGF0YWZpZWxkIHRvIGdldCB0aGUgZGVmYXVsdCBkYXRhIGZyb20gdGhlIGZpbHRlciBjYWxsLlxuICAgICAgICBjb25zdCBkYXRhQ29uZmlnOiBJRGF0YVByb3ZpZGVyQ29uZmlnID0ge1xuICAgICAgICAgICAgZGF0YXNldDogdGhpcy5kYXRhc2V0ID8gY29udmVydERhdGFUb09iamVjdCh0aGlzLmRhdGFzZXQpIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgYmluZGRhdGFzZXQ6IHRoaXMuYmluZGRhdGFzZXQsXG4gICAgICAgICAgICBkYXRhc291cmNlOiB0aGlzLmRhdGFzb3VyY2UsXG4gICAgICAgICAgICBkYXRhZmllbGQ6IHRoaXMuZGF0YWZpZWxkLFxuICAgICAgICAgICAgaGFzRGF0YTogdGhpcy5kYXRhc2V0ICYmIHRoaXMuZGF0YXNldC5sZW5ndGgsXG4gICAgICAgICAgICBxdWVyeTogcXVlcnksXG4gICAgICAgICAgICBpc0xvY2FsRmlsdGVyOiAhdGhpcy5zZWFyY2hrZXksXG4gICAgICAgICAgICBzZWFyY2hLZXk6IHNlYXJjaE9uRGF0YUZpZWxkID8gdGhpcy5kYXRhZmllbGQgOiB0aGlzLnNlYXJjaGtleSxcbiAgICAgICAgICAgIC8vIGRlZmF1bHQgc2VhcmNoIGNhbGwgbWF0Y2ggbW9kZSBzaG91bGQgYmUgc3RhcnRpZ25vcmVjYXNlXG4gICAgICAgICAgICBtYXRjaE1vZGU6IHNlYXJjaE9uRGF0YUZpZWxkID8gJ3N0YXJ0aWdub3JlY2FzZScgOiB0aGlzLm1hdGNobW9kZSxcbiAgICAgICAgICAgIGNhc2VzZW5zaXRpdmU6IHRoaXMuY2FzZXNlbnNpdGl2ZSxcbiAgICAgICAgICAgIGlzZm9ybWZpZWxkOiB0aGlzLmlzZm9ybWZpZWxkLFxuICAgICAgICAgICAgb3JkZXJieTogdGhpcy5vcmRlcmJ5LFxuICAgICAgICAgICAgbGltaXQ6IHRoaXMubGltaXQsXG4gICAgICAgICAgICBwYWdlc2l6ZTogdGhpcy5wYWdlc2l6ZSxcbiAgICAgICAgICAgIHBhZ2U6IHRoaXMucGFnZSxcbiAgICAgICAgICAgIG9uQmVmb3Jlc2VydmljZWNhbGw6IHRoaXMuaW52b2tlT25CZWZvcmVTZXJ2aWNlQ2FsbC5iaW5kKHRoaXMpXG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKHRoaXMuZGF0YW9wdGlvbnMpIHtcbiAgICAgICAgICAgIGRhdGFDb25maWcuZGF0YW9wdGlvbnMgPSB0aGlzLmRhdGFvcHRpb25zO1xuICAgICAgICAgICAgZGF0YUNvbmZpZy52aWV3UGFyZW50ID0gdGhpcy52aWV3UGFyZW50O1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fbG9hZGluZ0l0ZW1zID0gdHJ1ZTtcblxuICAgICAgICByZXR1cm4gdGhpcy5kYXRhUHJvdmlkZXIuZmlsdGVyKGRhdGFDb25maWcpXG4gICAgICAgICAgICAudGhlbigocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIC8vIHJlc3BvbnNlIGZyb20gZGF0YVByb3ZpZGVyIHJldHVybnMgYWx3YXlzIGRhdGEgb2JqZWN0LlxuICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gcmVzcG9uc2UuZGF0YSB8fCByZXNwb25zZTtcbiAgICAgICAgICAgICAgICAvLyBmb3Igc2VydmljZSB2YXJpYWJsZSwgdXBkYXRpbmcgdGhlIGRhdGFzZXQgb25seSBpZiBpdCBpcyBub3QgZGVmaW5lZCBvciBlbXB0eVxuICAgICAgICAgICAgICAgIGlmICgoIWlzRGVmaW5lZCh0aGlzLmRhdGFzZXQpIHx8ICF0aGlzLmRhdGFzZXQubGVuZ3RoKSAmJiB0aGlzLmRhdGFQcm92aWRlci51cGRhdGVEYXRhc2V0KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YXNldCA9IHJlc3BvbnNlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmRhdGFQcm92aWRlci5oYXNNb3JlRGF0YSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1hdHRlZERhdGFzZXQgPSB0aGlzLmZvcm1hdHRlZERhdGFzZXQuY29uY2F0KHJlc3BvbnNlKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1hdHRlZERhdGFzZXQgPSByZXNwb25zZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyBleHBsaWNpdGx5IHNldHRpbmcgdGhlIG9wdGlvbnNsaW1pdCBhcyB0aGUgbWF0Y2hlcyBtb3JlIHRoYW4gMjAgd2lsbCBiZSBpZ25vcmVkIGlmIG9wdGlvbnNsaW1pdCBpcyBub3Qgc3BlY2lmaWVkLlxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmZvcm1hdHRlZERhdGFzZXQubGVuZ3RoID4gMjAgJiYgIWlzRGVmaW5lZCh0aGlzLmxpbWl0KSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnR5cGVhaGVhZC50eXBlYWhlYWRPcHRpb25zTGltaXQgPSB0aGlzLmZvcm1hdHRlZERhdGFzZXQubGVuZ3RoO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8vIEluIG1vYmlsZSwgdHJpZ2dlciB0aGUgc2VhcmNoIGJ5IGRlZmF1bHQgdW50aWwgdGhlIHJlc3VsdHMgaGF2ZSBoZWlnaHQgdXB0byBwYWdlIGhlaWdodC4gT3RoZXIgcmVzdWx0cyBjYW4gYmUgZmV0Y2hlZCBieSBzY3JvbGxpbmdcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2lzT3BlbiAmJiB0aGlzLmlzTW9iaWxlQXV0b0NvbXBsZXRlKCkgJiYgIWlzVW5kZWZpbmVkKHRoaXMuZGF0YVByb3ZpZGVyLmlzTGFzdFBhZ2UpICYmICF0aGlzLmRhdGFQcm92aWRlci5pc0xhc3RQYWdlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudHJpZ2dlclNlYXJjaCgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IHRyYW5zZm9ybWVkRGF0YSA9IHRoaXMuZ2V0VHJhbnNmb3JtZWREYXRhKHRoaXMuZm9ybWF0dGVkRGF0YXNldCwgbmV4dEl0ZW1JbmRleCk7XG5cbiAgICAgICAgICAgICAgICAvLyByZXN1bHQgY29udGFpbnMgdGhlIGRhdGFmaWVsZCB2YWx1ZXMuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVzdWx0ID0gbWFwKHRyYW5zZm9ybWVkRGF0YSwgJ3ZhbHVlJyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRyYW5zZm9ybWVkRGF0YTtcbiAgICAgICAgICAgIH0sIChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX2xvYWRpbmdJdGVtcyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICkudGhlbihyZXN1bHQgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzU2Nyb2xsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgKGRlYm91bmNlKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0TGFzdEFjdGl2ZU1hdGNoQXNTZWxlY3RlZCgpO1xuICAgICAgICAgICAgICAgICAgICB9LCAzMCkpKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNTY3JvbGxlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBXaGVuIG5vIHJlc3VsdCBpcyBmb3VuZCwgc2V0IHRoZSBkYXRhdmFsdWUgdG8gdW5kZWZpbmVkLlxuICAgICAgICAgICAgICAgIGlmICghcmVzdWx0Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9tb2RlbEJ5VmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucXVlcnlNb2RlbCA9IChxdWVyeSBhcyBzdHJpbmcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBvbiBmb2N1c291dCBpLmUuIG9uIG90aGVyIHdpZGdldCBmb2N1cywgaWYgbi93IGlzIHBlbmRpbmcgbG9hZGluZyBpY29uIGlzIHNob3duLCB3aGVuIGRhdGEgaXMgYXZhaWxhYmxlIHRoZW4gZHJvcGRvd24gaXMgc2hvd24gYWdhaW4uXG4gICAgICAgICAgICAgICAgLy8gb24gdW5zdWJzY3JpYmluZyBkbyBub3Qgc2hvdyB0aGUgcmVzdWx0cy5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fdW5zdWJzY3JpYmVEdikge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBbXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5fbG9hZGluZ0l0ZW1zID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5fbGFzdFJlc3VsdCA9IHJlc3VsdDtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gdGhpcyBtZXRob2QgcmV0dXJucyB0aGUgcGFyZW50IGNvbnRleHQgaS5lLiBQYWdlIGNvbnRleHQgYW5kIG5vdCBwYXJlbnQgY29tcG9uZW50J3MgY29udGV4dC5cbiAgICBwcml2YXRlIGdldENvbnRleHQoY29udGV4dCkge1xuICAgICAgICBpZiAoY29udGV4dCAmJiBnZXQoY29udGV4dCwgJ3dpZGdldCcpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRDb250ZXh0KGNvbnRleHQudmlld1BhcmVudCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNvbnRleHQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFRyYW5zZm9ybWVkRGF0YShkYXRhOiBhbnksIGl0ZW1JbmRleD86IG51bWJlciwgaXNjdXN0b20/OiBib29sZWFuKTogRGF0YVNldEl0ZW1bXSB7XG4gICAgICAgIGlmIChpc0RlZmluZWQoaXRlbUluZGV4KSkge1xuICAgICAgICAgICAgaXRlbUluZGV4Kys7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB0cmFuc2Zvcm1lZERhdGEgPSB0cmFuc2Zvcm1Gb3JtRGF0YShcbiAgICAgICAgICAgIHRoaXMuZ2V0Q29udGV4dCh0aGlzLnZpZXdQYXJlbnQpLFxuICAgICAgICAgICAgZGF0YSxcbiAgICAgICAgICAgIHRoaXMuZGF0YWZpZWxkLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGRpc3BsYXlGaWVsZDogdGhpcy5kaXNwbGF5bGFiZWwgfHwgdGhpcy5kaXNwbGF5ZmllbGQsXG4gICAgICAgICAgICAgICAgZGlzcGxheUV4cHI6IGlzY3VzdG9tID8gJycgOiB0aGlzLmRpc3BsYXlleHByZXNzaW9uLFxuICAgICAgICAgICAgICAgIGJpbmREaXNwbGF5RXhwcjogaXNjdXN0b20gPyAnJyA6IHRoaXMuYmluZGRpc3BsYXlsYWJlbCxcbiAgICAgICAgICAgICAgICBiaW5kRGlzcGxheUltZ1NyYzogdGhpcy5iaW5kZGlzcGxheWltYWdlc3JjLFxuICAgICAgICAgICAgICAgIGRpc3BsYXlJbWdTcmM6IHRoaXMuZGlzcGxheWltYWdlc3JjXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaXRlbUluZGV4LFxuICAgICAgICAgICAgdGhpc1xuICAgICAgICApO1xuICAgICAgICByZXR1cm4gZ2V0VW5pcU9ianNCeURhdGFGaWVsZCh0cmFuc2Zvcm1lZERhdGEsIHRoaXMuZGF0YWZpZWxkLCB0aGlzLmRpc3BsYXlmaWVsZCB8fCB0aGlzLmRpc3BsYXlsYWJlbCwgdG9Cb29sZWFuKHRoaXMuYWxsb3dlbXB0eSkpO1xuICAgIH1cblxuICAgIC8vIE9wdGlvbnNMaXN0VGVtcGxhdGUgbGlzdGVucyB0byB0aGUgc2Nyb2xsIGV2ZW50IGFuZCB0cmlnZ2VycyB0aGlzIGZ1bmN0aW9uLlxuICAgIHB1YmxpYyBvblNjcm9sbCgkc2Nyb2xsRWw6IEVsZW1lbnQsIGV2dDogRXZlbnQpIHtcbiAgICAgICAgY29uc3QgdG90YWxIZWlnaHQgPSAkc2Nyb2xsRWwuc2Nyb2xsSGVpZ2h0LFxuICAgICAgICAgICAgY2xpZW50SGVpZ2h0ID0gJHNjcm9sbEVsLmNsaWVudEhlaWdodDtcblxuICAgICAgICAvLyBJZiBzY3JvbGwgaXMgYXQgdGhlIGJvdHRvbSBhbmQgbm8gcmVxdWVzdCBpcyBpbiBwcm9ncmVzcyBhbmQgbmV4dCBwYWdlIHJlY29yZHMgYXJlIGF2YWlsYWJsZSwgZmV0Y2ggbmV4dCBwYWdlIGl0ZW1zLlxuICAgICAgICBpZiAoIXRoaXMuX2xvYWRpbmdJdGVtcyAmJiAhdGhpcy5kYXRhUHJvdmlkZXIuaXNMYXN0UGFnZSAmJiAoJHNjcm9sbEVsLnNjcm9sbFRvcCArIGNsaWVudEhlaWdodCA+PSB0b3RhbEhlaWdodCkpIHtcbiAgICAgICAgICAgIHRoaXMubG9hZE1vcmVEYXRhKHRydWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25Jbml0KCkge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuXG4gICAgICAgIGlmICghaXNEZWZpbmVkKHRoaXMubWluY2hhcnMpKSB7XG4gICAgICAgICAgICAvLyBmb3IgYXV0b2NvbXBsZXRlIHNldCB0aGUgbWluY2hhcnMgdG8gMFxuICAgICAgICAgICAgaWYgKHRoaXMudHlwZSA9PT0gJ2F1dG9jb21wbGV0ZScpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm1pbmNoYXJzID0gMDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5taW5jaGFycyA9IDE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmxpc3RlblF1ZXJ5ID0gdGhpcy5pc1VwZGF0ZU9uS2V5UHJlc3MoKTtcblxuICAgICAgICAvLyBieSBkZWZhdWx0IGZvciBhdXRvY29tcGxldGUgZG8gbm90IHNob3cgdGhlIHNlYXJjaCBpY29uXG4gICAgICAgIC8vIGJ5IGRlZmF1bHQgc2hvdyB0aGUgc2VhcmNoaWNvbiBmb3IgdHlwZSA9IHNlYXJjaFxuICAgICAgICB0aGlzLnNob3dzZWFyY2hpY29uID0gaXNEZWZpbmVkKHRoaXMuc2hvd3NlYXJjaGljb24pID8gdGhpcy5zaG93c2VhcmNoaWNvbiA6ICh0aGlzLnR5cGUgPT09ICdzZWFyY2gnKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICBzdXBlci5uZ0FmdGVyVmlld0luaXQoKTtcblxuICAgICAgICBzdHlsZXIodGhpcy5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50LCB0aGlzKTtcbiAgICAgICAgdGhpcy5jb250YWluZXJUYXJnZXQgPSBnZXRDb250YWluZXJUYXJnZXRDbGFzcyh0aGlzLm5hdGl2ZUVsZW1lbnQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ0FmdGVyVmlld0NoZWNrZWQoKSB7XG4gICAgICAgIGNvbnN0IHNlYXJjaElucHV0RWwgPSAkKCcuYXBwLXNlYXJjaC1pbnB1dCcpO1xuICAgICAgICBpZiAoc2VhcmNoSW5wdXRFbCkge1xuICAgICAgICAgICAgc2VhcmNoSW5wdXRFbC5yZW1vdmVBdHRyKCdhcmlhLWV4cGFuZGVkJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGV2ZW50RGF0YSgkZXZlbnQsIGl0ZW0pIHtcbiAgICAgICAgaWYgKCRldmVudCkge1xuICAgICAgICAgICAgJGV2ZW50WydkYXRhJ10gPSB7XG4gICAgICAgICAgICAgICAgaXRlbSAgOiBpdGVtLmRhdGFPYmplY3QsXG4gICAgICAgICAgICAgICAgbW9kZWwgOiBpdGVtLnZhbHVlLFxuICAgICAgICAgICAgICAgIGxhYmVsIDogaXRlbS5sYWJlbCxcbiAgICAgICAgICAgICAgICBxdWVyeSA6IHRoaXMucXVlcnlcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gJGV2ZW50O1xuICAgIH1cblxuICAgIC8vIHRyaWdnZXJlZCBvbiBzZWxlY3Qgb24gb3B0aW9uIGZyb20gdGhlIGxpc3QuIFNldCB0aGUgcXVlcnlNb2RlbCwgcXVlcnkgYW5kIG1vZGVsQnlLZXkgZnJvbSB0aGUgbWF0Y2hlZCBpdGVtLlxuICAgIHB1YmxpYyB0eXBlYWhlYWRPblNlbGVjdChtYXRjaDogVHlwZWFoZWFkTWF0Y2gsICRldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaXRlbSA9IG1hdGNoLml0ZW07XG4gICAgICAgIHRoaXMucXVlcnlNb2RlbCA9IGl0ZW07XG4gICAgICAgIGl0ZW0uc2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLnF1ZXJ5ID0gaXRlbS5sYWJlbDtcbiAgICAgICAgdGhpcy5zaG93Q2xvc2VidG4gPSAodGhpcy5xdWVyeSAhPT0gJycpO1xuICAgICAgICAkZXZlbnQgPSAkZXZlbnQgfHwgdGhpcy4kdHlwZWFoZWFkRXZlbnQ7XG5cbiAgICAgICAgLy8gQXMgaXRlbS5rZXkgY2FuIHZhcnkgZnJvbSBrZXkgaW4gdGhlIGRhdGFzZXRJdGVtc1xuICAgICAgICB0aGlzLl9tb2RlbEJ5S2V5ID0gaXRlbS5rZXk7XG4gICAgICAgIHRoaXMuX21vZGVsQnlWYWx1ZSA9IGl0ZW0udmFsdWU7XG5cbiAgICAgICAgJGV2ZW50ID0gdGhpcy5ldmVudERhdGEoJGV2ZW50LCBpdGVtKTtcblxuICAgICAgICB0aGlzLmludm9rZU9uVG91Y2hlZCgpO1xuICAgICAgICB0aGlzLmludm9rZU9uQ2hhbmdlKHRoaXMuZGF0YXZhbHVlLCAkZXZlbnQgfHwge30pO1xuICAgICAgICAvLyB1cGRhdGluZyB0aGUgdmFyaWFibGUgYm91bmQgdG8gZGVmYXVsdCB2YWx1ZSBhcyBpbnZva2VPbkNoYW5nZSBpcyBub3QgdXBkYXRpbmcgdGhlIHZhcmlhYmxlLlxuICAgICAgICBpZiAodGhpcy5kYXRhdmFsdWUgIT09ICh0aGlzIGFzIGFueSkucHJldkRhdGF2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVCb3VuZFZhcmlhYmxlKHRoaXMuZGF0YXZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy4kZWxlbWVudC5oYXNDbGFzcygnZnVsbC1zY3JlZW4nKSkge1xuICAgICAgICAgICAgdGhpcy5jbG9zZVNlYXJjaCgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaW52b2tlRXZlbnRDYWxsYmFjaygnc2VsZWN0JywgeyAkZXZlbnQsIHNlbGVjdGVkVmFsdWU6IHRoaXMuZGF0YXZhbHVlIH0pO1xuICAgICAgICB0aGlzLmludm9rZUV2ZW50Q2FsbGJhY2soJ3N1Ym1pdCcsIHsgJGV2ZW50IH0pO1xuXG4gICAgICAgIHRoaXMudXBkYXRlUHJldkRhdGF2YWx1ZSh0aGlzLmRhdGF2YWx1ZSk7XG4gICAgfVxuXG4gICAgb25Qcm9wZXJ0eUNoYW5nZShrZXk6IHN0cmluZywgbnY6IGFueSwgb3Y6IGFueSkge1xuICAgICAgICBpZiAoa2V5ID09PSAndGFiaW5kZXgnKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBCYWNrd2FyZCBjb21wYXRhYmlsaXR5IGZyb20gMTAuMy4xIHRvIDEwLjMuMlxuICAgICAgICAvLyAxMC4zLjEgd2UgaGFkIGRpc3BsYXlsYWJlbCBhcyBtb2RhbCB2YWx1ZVxuICAgICAgICAvLyBGcm9tIDEwLjMuMiBvbndvcmRzIHdlIHdpbGwgYmUgaGF2aW5nIGRpc3BsYXlleHByZXNpb24gYXMgbW9kYWwgdmFsdWVcbiAgICAgICAgaWYgKHRoaXMudHlwZSA9PT0gJ2F1dG9jb21wbGV0ZScgJiYga2V5ID09PSAnZGlzcGxheWxhYmVsJyAmJiB0aGlzLmRpc3BsYXlsYWJlbCAmJiAoIXRoaXMuZGlzcGxheWV4cHJlc3Npb24gfHwgKHRoaXMuZGlzcGxheWV4cHJlc3Npb24gJiYgIXRoaXMuZGF0YXNvdXJjZSkpKSAge1xuICAgICAgICAgICAgdGhpcy5kaXNwbGF5ZXhwcmVzc2lvbiA9IHRoaXMuZGlzcGxheWxhYmVsO1xuICAgICAgICAgICAgdGhpcy5kaXNwbGF5bGFiZWwgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cblxuICAgICAgICAvLyB3aGVuIGRhdGFvcHRpb25zIGFyZSBwcm92aWRlZCBhbmQgdGhlcmUgaXMgbm8gZGlzcGxheWxhYmVsIGdpdmVuIHRoZW4gZGlzcGxheWxhYmVsIGlzIHNldCBhcyB0aGUgcmVsYXRlZGZpZWxkXG4gICAgICAgIGlmIChrZXkgPT09ICdkaXNwbGF5bGFiZWwnICYmIHRoaXMuZGF0YW9wdGlvbnMgJiYgdGhpcy5iaW5kZGlzcGxheWxhYmVsID09PSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLnF1ZXJ5ID0gZ2V0KHRoaXMuX21vZGVsQnlWYWx1ZSwgbnYpIHx8IHRoaXMuX21vZGVsQnlWYWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHdoZW4gc2VhcmNoIGlzIGRpc2FibGVkLCBkbyBub3QgbG9hZCBhbnkgbW9yZSBkYXRhIG9yIGp1c3QgY2xlYXIgdGhlIGRhdGEgdGhhdCBpcyBhbHJlYWR5IGluIHByb2Nlc3Mgb3IgbG9hZGVkLlxuICAgICAgICBpZiAoa2V5ID09PSAnZGlzYWJsZWQnKSB7XG4gICAgICAgICAgICBpZiAobnYgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jbGVhckRhdGEgPSBmYWxzZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jbGVhckRhdGEgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGlmIChnZXQoKHRoaXMudHlwZWFoZWFkIGFzIGFueSksICdfdHlwZWFoZWFkLmlzU2hvd24nKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnR5cGVhaGVhZC5oaWRlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgc3VwZXIub25Qcm9wZXJ0eUNoYW5nZShrZXksIG52LCBvdik7XG4gICAgfVxufVxuIiwiPG5nLXRlbXBsYXRlICNjdXN0b21JdGVtVGVtcGxhdGUgbGV0LW1vZGVsPVwiaXRlbVwiIGxldC1pbmRleD1cImluZGV4XCIgbGV0LXF1ZXJ5PVwicXVlcnlcIiBsZXQtbWF0Y2g9XCJtYXRjaFwiPlxuICAgIDwhLS0gRGVmYXVsdCBpdGVtIHRlbXBsYXRlIC0tPlxuICAgIDxhICpuZ0lmPVwiIWNvbnRlbnRcIj5cbiAgICAgICAgPGltZyAqbmdJZj1cIm1vZGVsLmltZ1NyY1wiIFtzcmNdPVwibW9kZWwuaW1nU3JjXCIgYWx0PVwiU2VhcmNoXCIgW3N0eWxlLndpZHRoXT1cImltYWdld2lkdGhcIj5cbiAgICAgICAgPHNwYW4gW3RpdGxlXT1cIm1vZGVsLmxhYmVsXCIgW2lubmVySHRtbF09XCJoaWdobGlnaHQobWF0Y2gsIHF1ZXJ5KSB8fCBtb2RlbC5sYWJlbFwiPjwvc3Bhbj5cbiAgICA8L2E+XG4gICAgPCEtLSBDdXN0b20gcGFydGlhbCB0ZW1wbGF0ZSAtLT5cbiAgICA8YSAqbmdJZj1cImNvbnRlbnRcIiBbbmdDbGFzc109XCJ7Y3VzdG9tVGVtcGxhdGU6IGNvbnRlbnR9XCIgcGFydGlhbENvbnRhaW5lciBbd21JdGVtVGVtcGxhdGVdPVwiY29udGVudFwiIFt1c2VyQ29tcG9uZW50UGFyYW1zXT1cIm1hdGNoLml0ZW1cIj5cbiAgICAgICAgPGRpdiBwYXJ0aWFsLWNvbnRhaW5lci10YXJnZXQ+PC9kaXY+XG4gICAgPC9hPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNjdXN0b21MaXN0VGVtcGxhdGUgbGV0LW1hdGNoZXM9XCJtYXRjaGVzXCIgbGV0LWl0ZW1UZW1wbGF0ZT1cIml0ZW1UZW1wbGF0ZVwiIGxldC1xdWVyeT1cInF1ZXJ5XCI+XG4gICAgPHVsICN1bEVsZW1lbnQgY2xhc3M9XCJhcHAtc2VhcmNoIGRyb3Bkb3duLW1lbnVcIiBzY3JvbGxhYmxlPlxuICAgICAgICA8bGkgI2xpRWxlbWVudHMgKm5nRm9yPVwibGV0IG1hdGNoIG9mIG1hdGNoZXM7IGxldCBpID0gaW5kZXg7XCIgW25nQ2xhc3NdPVwie2FjdGl2ZTogdHlwZWFoZWFkQ29udGFpbmVyICYmIHR5cGVhaGVhZENvbnRhaW5lci5pc0FjdGl2ZShtYXRjaCksICdsaXN0LWdyb3VwLWhlYWRlcic6IG1hdGNoICYmIG1hdGNoLmlzSGVhZGVyKCl9XCJcbiAgICAgICAgICAgIChtb3VzZWVudGVyKT1cInR5cGVhaGVhZENvbnRhaW5lci5zZWxlY3RBY3RpdmUobWF0Y2gpO1wiXG4gICAgICAgICAgICAoY2xpY2spPVwibWF0Y2ggJiYgIW1hdGNoLmlzSGVhZGVyKCkgJiYgdHlwZWFoZWFkQ29udGFpbmVyLnNlbGVjdE1hdGNoKG1hdGNoLCAkZXZlbnQpOyAkdHlwZWFoZWFkRXZlbnQgPSAkZXZlbnQ7IG5vdGlmeVN1YnNjcmliZXIoKTtcIj5cbiAgICAgICAgICAgIDwhLS0gaXRlbVRlbXBsYXRlIGNvbWVzIGZyb20gdGhlIDxpbnB1dD4gLS0+XG4gICAgICAgICAgICA8aDQgKm5nSWY9XCJtYXRjaC5pc0hlYWRlcigpXCIgY2xhc3M9XCJncm91cC10aXRsZVwiPnt7bWF0Y2gudmFsdWV9fTwvaDQ+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIW1hdGNoLmlzSGVhZGVyKClcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJpdGVtVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie2l0ZW06IG1hdGNoLml0ZW0sIGluZGV4OiBpLCBtYXRjaDogbWF0Y2gsIHF1ZXJ5OiBxdWVyeX1cIj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2xpPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic3RhdHVzXCIgW2hpZGRlbl09XCJfbG9hZGluZ0l0ZW1zIHx8ICEoZGF0YWNvbXBsZXRlbXNnICYmIGRhdGFQcm92aWRlci5pc0xhc3RQYWdlKVwiPlxuICAgICAgICAgICAgPHNwYW4gW3RleHRDb250ZW50XT1cImRhdGFjb21wbGV0ZW1zZ1wiPjwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdGF0dXNcIiBbaGlkZGVuXT1cIiFfbG9hZGluZ0l0ZW1zXCI+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWNpcmNsZS1vLW5vdGNoIGZhLXNwaW5cIj48L2k+XG4gICAgICAgICAgICA8c3BhbiBbdGV4dENvbnRlbnRdPVwibG9hZGluZ2RhdGFtc2dcIj48L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvdWw+XG48L25nLXRlbXBsYXRlPlxuXG48IS0tVGhpcyB0ZW1wbGF0ZSBpcyBmb3Igc2VhcmNoIGluc2lkZSBtb2JpbGUgbmF2YmFyLi0tPlxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIm5hdnNlYXJjaGJhcjsgZWxzZSBzZWFyY2hUZW1wbGF0ZVwiPlxuICAgIDxpbnB1dCBbdGl0bGVdPVwicXVlcnkgfHwgJydcIiB0eXBlPVwidGV4dFwiIGNsYXNzPVwiYXBwLXRleHRib3ggZm9ybS1jb250cm9sIGxpc3Qtb2Ytb2JqcyBhcHAtc2VhcmNoLWlucHV0XCIgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyIHx8ICcnXCJcbiAgICAgICAgICAgZm9jdXMtdGFyZ2V0XG4gICAgICAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxuICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICBbYXR0ci5hY2Nlc3NrZXldPVwic2hvcnRjdXRrZXlcIlxuICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgICAgICBbKG5nTW9kZWwpXT1cInF1ZXJ5XCJcbiAgICAgICAgICAgW25nTW9kZWxPcHRpb25zXT1cIntzdGFuZGFsb25lOiB0cnVlfVwiXG4gICAgICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXG4gICAgICAgICAgIFt0eXBlYWhlYWRdPVwidHlwZWFoZWFkRGF0YVNvdXJjZVwiXG4gICAgICAgICAgIFt0eXBlYWhlYWRXYWl0TXNdPVwiZGVib3VuY2V0aW1lXCJcbiAgICAgICAgICAgW3R5cGVhaGVhZEl0ZW1UZW1wbGF0ZV09XCJjdXN0b21JdGVtVGVtcGxhdGVcIlxuICAgICAgICAgICBbb3B0aW9uc0xpc3RUZW1wbGF0ZV09XCJjdXN0b21MaXN0VGVtcGxhdGVcIlxuICAgICAgICAgICAoaW5wdXQpPVwib25JbnB1dENoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgKGtleWRvd24pPVwibGlzdGVuUXVlcnkgPSB0cnVlXCJcbiAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwiJHR5cGVhaGVhZEV2ZW50ID0gJGV2ZW50O2hhbmRsZUVudGVyRXZlbnQoJGV2ZW50KVwiXG4gICAgICAgICAgIChrZXlkb3duLmFycm93ZG93bik9XCJzZWxlY3ROZXh0KCRldmVudClcIlxuICAgICAgICAgICAoYmx1cik9XCJpbnZva2VPblRvdWNoZWQoJGV2ZW50KVwiXG4gICAgICAgICAgIChjbGljayk9XCJoYW5kbGVGb2N1cygkZXZlbnQpO1wiXG4gICAgICAgICAgIChmb2N1cyk9XCJfdW5zdWJzY3JpYmVEdiA9IGZhbHNlOyBsaXN0ZW5RdWVyeSA9IHRydWU7IGhhbmRsZUZvY3VzKCRldmVudCk7IGludm9rZU9uRm9jdXMoJGV2ZW50KTtcIlxuICAgICAgICAgICAoZm9jdXNvdXQpPVwib25Gb2N1c091dCgpXCJcbiAgICAgICAgICAgW3R5cGVhaGVhZE1pbkxlbmd0aF09XCJtaW5jaGFyc1wiXG4gICAgICAgICAgIFt0eXBlYWhlYWRPcHRpb25zTGltaXRdPVwibGltaXRcIlxuICAgICAgICAgICAodHlwZWFoZWFkTG9hZGluZyk9XCJfbG9hZGluZ0l0ZW1zXCJcbiAgICAgICAgICAgKHR5cGVhaGVhZE9uU2VsZWN0KT1cInR5cGVhaGVhZE9uU2VsZWN0KCRldmVudClcIlxuICAgICAgICAgICB0eXBlYWhlYWRPcHRpb25GaWVsZD1cImxhYmVsXCJcbiAgICAgICAgICAgW3R5cGVhaGVhZEdyb3VwRmllbGRdPVwiZ3JvdXBieSA/ICdncm91cGJ5JyA6IG51bGxcIlxuICAgICAgICAgICBbdHlwZWFoZWFkQXN5bmNdPVwidHJ1ZVwiXG4gICAgICAgICAgIFt0eXBlYWhlYWRTY3JvbGxhYmxlXT1cInRydWVcIlxuICAgICAgICAgICBbYWRhcHRpdmVQb3NpdGlvbl09XCJ0cnVlXCJcbiAgICAgICAgICAgW3R5cGVhaGVhZE9wdGlvbnNJblNjcm9sbGFibGVWaWV3XT1cIm9wdGlvbnNsaW1pdGluc2Nyb2xsYWJsZXZpZXdcIlxuICAgICAgICAgICBbZHJvcHVwXT1cImRyb3B1cFwiXG4gICAgICAgICAgIFt0YWJpbmRleF09XCJ0YWJpbmRleFwiXG4gICAgICAgICAgIFthdHRyLm5hbWVdPVwibmFtZVwiXG4gICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYWxhYmVsIHx8ICdTZWFyY2ggZmllbGQnXCIvPlxuICAgIDxpIGNsYXNzPVwiYnRuLWNsb3NlIHdpIHdpLWNhbmNlbFwiIFtoaWRkZW5dPVwiIXNob3dDbG9zZWJ0blwiIChjbGljayk9XCJjbGVhclNlYXJjaCgkZXZlbnQpO1wiPjwvaT5cbjwvbmctY29udGFpbmVyPlxuPCEtLVRoaXMgdGVtcGxhdGUgaXMgZm9yIGJvdGggd2ViIGFuZCBmdWxsc2NyZWVuIG1vZGUgaW4gbW9iaWxlLi0tPlxuPG5nLXRlbXBsYXRlICNzZWFyY2hUZW1wbGF0ZT5cbiAgICA8c3BhbiBjbGFzcz1cIndpIHdpLWFycm93LWxlZnQgZm9ybS1jb250cm9sLWZlZWRiYWNrIGJhY2stYnRuXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgKGNsaWNrKT1cImNsb3NlU2VhcmNoKClcIj48L3NwYW4+XG4gICAgPHNwYW4gY2xhc3M9XCJzci1vbmx5XCI+QmFjayBidXR0b248L3NwYW4+XG4gICAgPGlucHV0IFt0aXRsZV09XCJxdWVyeSB8fCAnJ1wiIHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJhcHAtdGV4dGJveCBmb3JtLWNvbnRyb2wgbGlzdC1vZi1vYmpzIGFwcC1zZWFyY2gtaW5wdXRcIiBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXIgfHwgJydcIlxuICAgICAgICAgICBmb2N1cy10YXJnZXRcbiAgICAgICAgICAgW2NvbnRhaW5lcl09XCJjb250YWluZXJUYXJnZXQgfHwgJy53bS1hcHAnXCJcbiAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgW2F0dHIuYWNjZXNza2V5XT1cInNob3J0Y3V0a2V5XCJcbiAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgWyhuZ01vZGVsKV09XCJxdWVyeVwiXG4gICAgICAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJ7c3RhbmRhbG9uZTogdHJ1ZX1cIlxuICAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICAgICAgICAgICBbdHlwZWFoZWFkXT1cInR5cGVhaGVhZERhdGFTb3VyY2VcIlxuICAgICAgICAgICBbdHlwZWFoZWFkV2FpdE1zXT1cImRlYm91bmNldGltZVwiXG4gICAgICAgICAgIFt0eXBlYWhlYWRJdGVtVGVtcGxhdGVdPVwiY3VzdG9tSXRlbVRlbXBsYXRlXCJcbiAgICAgICAgICAgW29wdGlvbnNMaXN0VGVtcGxhdGVdPVwiY3VzdG9tTGlzdFRlbXBsYXRlXCJcbiAgICAgICAgICAgKGlucHV0KT1cIm9uSW5wdXRDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgIChrZXlkb3duKT1cImxpc3RlblF1ZXJ5ID0gdHJ1ZVwiXG4gICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cIiR0eXBlYWhlYWRFdmVudCA9ICRldmVudDtoYW5kbGVFbnRlckV2ZW50KCRldmVudClcIlxuICAgICAgICAgICAoa2V5ZG93bi5hcnJvd2Rvd24pPVwic2VsZWN0TmV4dCgkZXZlbnQpXCJcbiAgICAgICAgICAgKGJsdXIpPVwiaW52b2tlT25Ub3VjaGVkKCRldmVudCk7IG9uRm9jdXNPdXQoKVwiXG4gICAgICAgICAgIChjbGljayk9XCJoYW5kbGVGb2N1cygkZXZlbnQpO1wiXG4gICAgICAgICAgIChmb2N1cyk9XCJfdW5zdWJzY3JpYmVEdiA9IGZhbHNlOyBsaXN0ZW5RdWVyeSA9IHRydWU7IGhhbmRsZUZvY3VzKCRldmVudCk7IGludm9rZU9uRm9jdXMoJGV2ZW50KVwiXG4gICAgICAgICAgIFt0eXBlYWhlYWRNaW5MZW5ndGhdPVwibWluY2hhcnNcIlxuICAgICAgICAgICBbdHlwZWFoZWFkT3B0aW9uc0xpbWl0XT1cImxpbWl0XCJcbiAgICAgICAgICAgKHR5cGVhaGVhZExvYWRpbmcpPVwiX2xvYWRpbmdJdGVtc1wiXG4gICAgICAgICAgICh0eXBlYWhlYWRPblNlbGVjdCk9XCJ0eXBlYWhlYWRPblNlbGVjdCgkZXZlbnQpXCJcbiAgICAgICAgICAgdHlwZWFoZWFkT3B0aW9uRmllbGQ9XCJsYWJlbFwiXG4gICAgICAgICAgIFt0eXBlYWhlYWRHcm91cEZpZWxkXT1cImdyb3VwYnkgPyAnZ3JvdXBieScgOiBudWxsXCJcbiAgICAgICAgICAgW3R5cGVhaGVhZEFzeW5jXT1cInRydWVcIlxuICAgICAgICAgICBbdHlwZWFoZWFkU2Nyb2xsYWJsZV09XCJ0cnVlXCJcbiAgICAgICAgICAgW2FkYXB0aXZlUG9zaXRpb25dPVwidHJ1ZVwiXG4gICAgICAgICAgIFt0eXBlYWhlYWRPcHRpb25zSW5TY3JvbGxhYmxlVmlld109XCJvcHRpb25zbGltaXRpbnNjcm9sbGFibGV2aWV3XCJcbiAgICAgICAgICAgW3RhYmluZGV4XT1cInRhYmluZGV4XCJcbiAgICAgICAgICAgW2Ryb3B1cF09XCJkcm9wdXBcIlxuICAgICAgICAgICBbYXR0ci5uYW1lXT1cIm5hbWVcIlxuICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFsYWJlbCB8fCAnU2VhcmNoIGZpZWxkJ1wiPlxuICAgIDxpbnB1dCBjbGFzcz1cIm1vZGVsLWhvbGRlclwiIG5nLW1vZGVsPVwicHJveHlNb2RlbFwiIG5nLXJlcXVpcmVkPVwicmVxdWlyZWRcIiB0YWJpbmRleD1cIi0xXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgPHNwYW4gKm5nSWY9XCJfbG9hZGluZ0l0ZW1zXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgY2xhc3M9XCJmYSBmYS1jaXJjbGUtby1ub3RjaCBmYS1zcGluIGZvcm0tY29udHJvbC1mZWVkYmFja1wiPjwvc3Bhbj5cbiAgICA8c3BhbiBjbGFzcz1cIndpIHdpLWNsb3NlIGZvcm0tY29udHJvbC1mZWVkYmFjayBjbGVhci1idG5cIiBbbmdDbGFzc109XCJ7J3Nob3ctYnRuJzogaXNRdWVyeUVudGVyZWQoKX1cIiAoY2xpY2spPVwiY2xlYXJTZWFyY2goJGV2ZW50LCB0cnVlKVwiPjwvc3Bhbj5cbiAgICA8c3BhbiBjbGFzcz1cInNyLW9ubHlcIj5DbGVhciBidXR0b248L3NwYW4+XG4gICAgPHNwYW4gKm5nSWY9XCJzaG93c2VhcmNoaWNvblwiIFtuZ0NsYXNzXT1cInsnZGlzYWJsZWQnOiBkaXNhYmxlZH1cIiBjbGFzcz1cImlucHV0LWdyb3VwLWFkZG9uXCI+XG4gICAgICAgIDxmb3JtPlxuICAgICAgICAgICAgPGJ1dHRvbiB0aXRsZT1cIlNlYXJjaFwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIGNsYXNzPVwiYXBwLXNlYXJjaC1idXR0b24gd20tc2wtbCBzbC1zZWFyY2hcIiB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uU2VhcmNoU2VsZWN0KCRldmVudClcIj48L2J1dHRvbj5cbiAgICAgICAgPC9mb3JtPlxuICAgIDwvc3Bhbj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
928
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvd2lkZ2V0cy9iYXNpYy9zZWFyY2gvc3JjL3NlYXJjaC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3dpZGdldHMvYmFzaWMvc2VhcmNoL3NyYy9zZWFyY2guY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdILFNBQVMsRUFDVCxTQUFTLEVBQ1QsVUFBVSxFQUNWLE1BQU0sRUFDTixRQUFRLEVBRVIsUUFBUSxFQUNSLFNBQVMsRUFDVCxTQUFTLEVBQ1QsWUFBWSxFQUNmLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxhQUFhLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUVoRSxPQUFPLEVBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDMUMsT0FBTyxFQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUVoRCxPQUFPLEVBQThCLGtCQUFrQixFQUFpQixNQUFNLHlCQUF5QixDQUFDO0FBRXhHLE9BQU8sRUFBQyxRQUFRLEVBQUUsdUJBQXVCLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUM1RyxPQUFPLEVBQ0gsU0FBUyxFQUNULG1CQUFtQixFQUVuQixrQkFBa0IsRUFDbEIsdUJBQXVCLEVBQ3ZCLHNCQUFzQixFQUN0QixTQUFTLEVBQ1Qsa0JBQWtCLEVBQ2xCLE1BQU0sRUFDTixpQkFBaUIsRUFDcEIsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUUvRCxPQUFPLEVBQUMs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QyxzRUFzQmpELHNHQXVDM0I7OztZQXZDZCxlQUFvQjtZQUFBLEFBQXBCLHVDQUFvQixnQ0FBbUI7OztpRkQrQnpDLGVBQWU7Y0FUM0IsU0FBUzsyQkFDSSxZQUFZLGFBRVg7b0JBQ1AsU0FBUyxrQkFBa0IsaUJBQWlCLEVBQUUsSUFBSSxDQUFDO29CQUNuRCxTQUFTLGtCQUFrQixhQUFhLEVBQUUsSUFBSSxDQUFDO29CQUMvQyxrQkFBa0IsaUJBQWlCO2lCQUN0Qzs7c0JBNEVJLFNBQVM7dUJBQUMsZ0JBQWdCOztzQkFDMUIsU0FBUzt1QkFBQyxjQUFjOztzQkFDeEIsTUFBTTt1QkFBQyxrQkFBa0I7O3NCQUFHLFFBQVE7cUJBNUNWLFNBQVM7a0JBQXZDLFNBQVM7bUJBQUMsa0JBQWtCO1lBQ0wsU0FBUztrQkFBaEMsU0FBUzttQkFBQyxXQUFXO1lBQ00sVUFBVTtrQkFBckMsWUFBWTttQkFBQyxZQUFZOztrRkFsQ2pCLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyVmlld0NoZWNrZWQsXG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBBdHRyaWJ1dGUsXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgSW5qZWN0LFxuICAgIEluamVjdG9yLFxuICAgIE9uSW5pdCxcbiAgICBPcHRpb25hbCxcbiAgICBRdWVyeUxpc3QsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdDaGlsZHJlblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TkdfVkFMSURBVE9SUywgTkdfVkFMVUVfQUNDRVNTT1J9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHtmcm9tLCBPYnNlcnZhYmxlLCBvZn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge2ZpbHRlciwgbWVyZ2VNYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtUeXBlYWhlYWRDb250YWluZXJDb21wb25lbnQsIFR5cGVhaGVhZERpcmVjdGl2ZSwgVHlwZWFoZWFkTWF0Y2h9IGZyb20gJ25neC1ib290c3RyYXAvdHlwZWFoZWFkJztcblxuaW1wb3J0IHthZGRDbGFzcywgYWRqdXN0Q29udGFpbmVyUG9zaXRpb24sIEFwcCwgRGF0YVNvdXJjZSwgaXNEZWZpbmVkLCBpc01vYmlsZSwgdG9Cb29sZWFufSBmcm9tICdAd20vY29yZSc7XG5pbXBvcnQge1xuICAgIEFMTEZJRUxEUyxcbiAgICBjb252ZXJ0RGF0YVRvT2JqZWN0LFxuICAgIERhdGFTZXRJdGVtLFxuICAgIGV4dHJhY3REYXRhQXNBcnJheSxcbiAgICBnZXRDb250YWluZXJUYXJnZXRDbGFzcyxcbiAgICBnZXRVbmlxT2Jqc0J5RGF0YUZpZWxkLFxuICAgIHByb3ZpZGVBcyxcbiAgICBwcm92aWRlQXNXaWRnZXRSZWYsXG4gICAgc3R5bGVyLFxuICAgIHRyYW5zZm9ybUZvcm1EYXRhXG59IGZyb20gJ0B3bS9jb21wb25lbnRzL2Jhc2UnO1xuaW1wb3J0IHtEYXRhc2V0QXdhcmVGb3JtQ29tcG9uZW50fSBmcm9tICdAd20vY29tcG9uZW50cy9pbnB1dCc7XG5cbmltcG9ydCB7cmVnaXN0ZXJQcm9wc30gZnJvbSAnLi9zZWFyY2gucHJvcHMnO1xuaW1wb3J0IHtEYXRhUHJvdmlkZXIsIElEYXRhUHJvdmlkZXIsIElEYXRhUHJvdmlkZXJDb25maWd9IGZyb20gJy4vZGF0YS1wcm92aWRlci9kYXRhLXByb3ZpZGVyJztcbmltcG9ydCB7XG4gICAgZGVib3VuY2UsXG4gICAgZmluZCxcbiAgICBnZXQsXG4gICAgaW5jbHVkZXMsXG4gICAgaXNBcnJheSxcbiAgICBpc0VtcHR5LFxuICAgIGlzRXF1YWwsXG4gICAgaXNPYmplY3QsXG4gICAgaXNVbmRlZmluZWQsXG4gICAgbWFwLFxuICAgIHNwbGl0LFxuICAgIHRvU3RyaW5nLFxuICAgIHRyaW1cbn0gZnJvbSBcImxvZGFzaC1lc1wiO1xuXG5jb25zdCBXSURHRVRfQ09ORklHID0geyB3aWRnZXRUeXBlOiAnd20tc2VhcmNoJywgaG9zdENsYXNzOiAnaW5wdXQtZ3JvdXAnIH07XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnW3dtU2VhcmNoXScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NlYXJjaC5jb21wb25lbnQuaHRtbCcsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHByb3ZpZGVBcyhTZWFyY2hDb21wb25lbnQsIE5HX1ZBTFVFX0FDQ0VTU09SLCB0cnVlKSxcbiAgICAgICAgcHJvdmlkZUFzKFNlYXJjaENvbXBvbmVudCwgTkdfVkFMSURBVE9SUywgdHJ1ZSksXG4gICAgICAgIHByb3ZpZGVBc1dpZGdldFJlZihTZWFyY2hDb21wb25lbnQpXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBTZWFyY2hDb21wb25lbnQgZXh0ZW5kcyBEYXRhc2V0QXdhcmVGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBBZnRlclZpZXdDaGVja2VkIHtcbiAgICBzdGF0aWMgaW5pdGlhbGl6ZVByb3BzID0gcmVnaXN0ZXJQcm9wcygpO1xuICAgIHB1YmxpYyBjYXNlc2Vuc2l0aXZlOiBib29sZWFuO1xuICAgIHB1YmxpYyBzZWFyY2hrZXk6IHN0cmluZztcbiAgICBwdWJsaWMgcXVlcnlNb2RlbDogQXJyYXk8RGF0YVNldEl0ZW0+IHwgc3RyaW5nO1xuICAgIHB1YmxpYyBxdWVyeSA9ICcnO1xuICAgIHB1YmxpYyBsaW1pdDogYW55O1xuICAgIHB1YmxpYyBzaG93c2VhcmNoaWNvbjogYm9vbGVhbjtcbiAgICBwdWJsaWMgbWluY2hhcnM6IG51bWJlcjtcbiAgICBwdWJsaWMgdHlwZTogc3RyaW5nO1xuICAgIHB1YmxpYyBuYXZzZWFyY2hiYXI6IGFueTtcbiAgICBwdWJsaWMgZGVib3VuY2V0aW1lOiBudW1iZXI7XG4gICAgcHVibGljIGhpbnQ6IHN0cmluZztcbiAgICBwdWJsaWMgYXJpYWxhYmVsOiBzdHJpbmc7XG5cbiAgICBwcml2YXRlIGFwcDogQXBwO1xuICAgIHByaXZhdGUgdHlwZWFoZWFkRGF0YVNvdXJjZTogT2JzZXJ2YWJsZTxhbnk+O1xuICAgIHByaXZhdGUgcGFnZXNpemU6IGFueTtcbiAgICBwcml2YXRlIHBhZ2UgPSAxO1xuICAgIHB1YmxpYyBfbG9hZGluZ0l0ZW1zOiBib29sZWFuO1xuICAgIHByaXZhdGUgZGF0YVByb3ZpZGVyOiBJRGF0YVByb3ZpZGVyO1xuICAgIHByaXZhdGUgcmVzdWx0OiBBcnJheTxhbnk+OyAvLyBjb250YWlucyB0aGUgc2VhcmNoIHJlc3VsdCBpLmUuIG1hdGNoZXNcbiAgICBwcml2YXRlIGZvcm1hdHRlZERhdGFzZXQ6IGFueTtcbiAgICBwcml2YXRlIGlzZm9ybWZpZWxkOiBib29sZWFuO1xuICAgIHByaXZhdGUgJHR5cGVhaGVhZEV2ZW50OiBFdmVudDtcblxuICAgIHB1YmxpYyB0YWJpbmRleDogbnVtYmVyO1xuICAgIHB1YmxpYyBzdGFydEluZGV4OiBudW1iZXI7XG4gICAgcHVibGljIGJpbmRkaXNwbGF5bGFiZWw6IHN0cmluZztcbiAgICBwdWJsaWMgdHlwZWFoZWFkQ29udGFpbmVyOiBUeXBlYWhlYWRDb250YWluZXJDb21wb25lbnQ7XG4gICAgcHVibGljIGNvbnRhaW5lclRhcmdldDogc3RyaW5nO1xuXG4gICAgQFZpZXdDaGlsZChUeXBlYWhlYWREaXJlY3RpdmUpIHR5cGVhaGVhZDogVHlwZWFoZWFkRGlyZWN0aXZlO1xuICAgIEBWaWV3Q2hpbGQoJ3VsRWxlbWVudCcpIHVsRWxlbWVudDogRWxlbWVudFJlZjtcbiAgICBAVmlld0NoaWxkcmVuKCdsaUVsZW1lbnRzJykgbGlFbGVtZW50czogUXVlcnlMaXN0PEVsZW1lbnRSZWY+O1xuXG4gICAgcHJpdmF0ZSBhbGxvd29ubHlzZWxlY3Q6IGJvb2xlYW47XG4gICAgcHJpdmF0ZSBjbGFzczogc3RyaW5nO1xuXG4gICAgcHJpdmF0ZSBsYXN0U2VsZWN0ZWRJbmRleDogbnVtYmVyO1xuICAgIHByaXZhdGUgZGF0YW9wdGlvbnM6IGFueTtcbiAgICBwdWJsaWMgZHJvcGRvd25FbDogYW55O1xuICAgIHByaXZhdGUgX2xhc3RRdWVyeTogc3RyaW5nO1xuICAgIHByaXZhdGUgX2xhc3RSZXN1bHQ6IGFueTtcbiAgICBwcml2YXRlIF9pc09wZW46IGJvb2xlYW47IC8vIHNldCB0byB0cnVlIHdoZW4gZHJvcGRvd24gaXMgb3BlblxuICAgIHByaXZhdGUgc2hvd0Nsb3NlYnRuOiBib29sZWFuO1xuICAgIHByaXZhdGUgX3Vuc3Vic2NyaWJlRHY6IGJvb2xlYW47XG4gICAgcHJpdmF0ZSBfZGF0YXNvdXJjZTogYW55O1xuICAgIHByaXZhdGUgaXNTY3JvbGxlZDogYm9vbGVhbjtcbiAgICBwcml2YXRlIHBhcmVudEVsOiBhbnk7XG4gICAgcHJpdmF0ZSBwb3NpdGlvbjogc3RyaW5nO1xuICAgIHByaXZhdGUgZWxJbmRleDogbnVtYmVyO1xuICAgIHByaXZhdGUgbGlzdGVuUXVlcnk6IGJvb2xlYW47XG4gICAgcHJpdmF0ZSBfZG9tVXBkYXRlZDogYm9vbGVhbjtcbiAgICBwcml2YXRlIHNlYXJjaG9uOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBzaG93Y2xlYXI6IGJvb2xlYW47XG4gICAgcHVibGljIG1hdGNobW9kZTogc3RyaW5nO1xuICAgIHByaXZhdGUgY2xlYXJEYXRhOiBib29sZWFuO1xuXG5cbiAgICAvLyBnZXR0ZXIgc2V0dGVyIGlzIGFkZGVkIHRvIHBhc3MgdGhlIGRhdGFzb3VyY2UgdG8gc2VhcmNoY29tcG9uZW50LlxuICAgIGdldCBkYXRhc291cmNlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGF0YXNvdXJjZTtcbiAgICB9XG5cbiAgICBzZXQgZGF0YXNvdXJjZShudikge1xuICAgICAgICB0aGlzLl9kYXRhc291cmNlID0gbnY7XG4gICAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLmRhdGF2YWx1ZSB8fCB0aGlzLnRvQmVQcm9jZXNzZWREYXRhdmFsdWU7XG4gICAgICAgIHRoaXMudXBkYXRlQnlEYXRhdmFsdWUoZGF0YSk7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIGluajogSW5qZWN0b3IsXG4gICAgICAgIGFwcDogQXBwLFxuICAgICAgICBAQXR0cmlidXRlKCdkYXRhdmFsdWUuYmluZCcpIHB1YmxpYyBiaW5kZGF0YXZhbHVlLFxuICAgICAgICBAQXR0cmlidXRlKCdkYXRhc2V0LmJpbmQnKSBwdWJsaWMgYmluZGRhdGFzZXQsXG4gICAgICAgIEBJbmplY3QoJ0VYUExJQ0lUX0NPTlRFWFQnKSBAT3B0aW9uYWwoKSBleHBsaWNpdENvbnRleHQ6IGFueVxuICAgICkge1xuICAgICAgICBzdXBlcihpbmosIFdJREdFVF9DT05GSUcsIGV4cGxpY2l0Q29udGV4dCk7XG4gICAgICAgIC8vIHRoaXMgZmxhZyB3aWxsIG5vdCBhbGxvdyB0aGUgZW1wdHkgZGF0YWZpZWxkIHZhbHVlcy5cbiAgICAgICAgdGhpcy5hbGxvd2VtcHR5ID0gZmFsc2U7XG4gICAgICAgIHRoaXMuYXBwID0gYXBwO1xuICAgICAgICBhZGRDbGFzcyh0aGlzLm5hdGl2ZUVsZW1lbnQsICdhcHAtc2VhcmNoJywgdHJ1ZSk7XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIExpc3RlbnMgZm9yIHRoZSBjaGFuZ2UgaW4gdGhlIG5nTW9kZWwgb24gZXZlcnkgc2VhcmNoIGFuZCByZXRyaWV2ZXMgdGhlIGRhdGEgYXMgb2JzZXJ2YWJsZS5cbiAgICAgICAgICogVGhpcyBvYnNlcnZhYmxlIGRhdGEgaXMgcGFzc2VkIHRvIHRoZSB0eXBlYWhlYWQuXG4gICAgICAgICAqIEB0eXBlIHtPYnNlcnZhYmxlPGFueT59XG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLnR5cGVhaGVhZERhdGFTb3VyY2UgPSBPYnNlcnZhYmxlXG4gICAgICAgICAgICAuY3JlYXRlKChvYnNlcnZlcjogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gUnVucyBvbiBldmVyeSBzZWFyY2hcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5saXN0ZW5RdWVyeSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9kZWZhdWx0UXVlcnlJbnZva2VkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvYWRpbmdJdGVtcyA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIG9ic2VydmVyLm5leHQodGhpcy5xdWVyeSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIG9uIGtleWRvd24sIHdoaWxlIHNjcm9sbGluZyB0aGUgZHJvcGRvd24gaXRlbXMsIHdoZW4gbGFzdCBpdGVtIGlzIHJlYWNoZWQgbmV4dCBjYWxsIGlzIHRyaWdnZXJlZFxuICAgICAgICAgICAgICAgIC8vIHVubGVzcyB0aGUgY2FsbCBpcyByZXNvbHZlZCwgd2UgYXJlIGFibGUgdG8gc2Nyb2xsIG5leHQgdG8gZmlyc3QgaXRlbSBhbmQgc29vblxuICAgICAgICAgICAgICAgIC8vIFRoaXMgc2hvd3MgZmxpY2tlcmluZyBmcm9tIGZpcnN0IGl0ZW0gdG8gbmV4dCBuZXcgaXRlbXMgYXBwZW5kZWQuXG4gICAgICAgICAgICAgICAgLy8gQnkgc2V0dGluZyBjb250YWluZXIgdG8gdW5kZWZpbmVkLCBrZXkgZXZlbnRzIGNoYW5nZXMgd2lsbCBiZSBzdG9wcGVkIHdoaWxlIGxvYWRpbmcgaXRlbXNcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5sYXN0U2VsZWN0ZWRJbmRleCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnR5cGVhaGVhZC5fY29udGFpbmVyID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLnBpcGUoXG4gICAgICAgICAgICAgICAgZmlsdGVyKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbG9hZGluZ0l0ZW1zID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAodGhpcy5taW5jaGFycyA9PT0gMCB8fCAodGhpcy5xdWVyeSAmJiB0aGlzLnF1ZXJ5Lmxlbmd0aCA+PSB0aGlzLm1pbmNoYXJzKSk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgbWVyZ2VNYXAoKHRva2VuOiBzdHJpbmcpID0+IHRoaXMuZ2V0RGF0YVNvdXJjZUFzT2JzZXJ2YWJsZSh0b2tlbikpXG4gICAgICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuZGF0YVByb3ZpZGVyID0gbmV3IERhdGFQcm92aWRlcigpO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBXaGVuIGRlZmF1bHQgZGF0YXZhbHVlIGlzIG5vdCBmb3VuZCB3aXRoaW4gdGhlIGRhdGFzZXQsIGEgZmlsdGVyIGNhbGwgaXMgbWFkZSB0byBnZXQgdGhlIHJlY29yZCB1c2luZyBmZXRjaERlZmF1bHRNb2RlbC5cbiAgICAgICAgICogYWZ0ZXIgZ2V0dGluZyB0aGUgcmVzcG9uc2UsIHNldCB0aGUgcXVlcnlNb2RlbCBhbmQgcXVlcnkuXG4gICAgICAgICAqL1xuICAgICAgICBjb25zdCBkYXRhdmFsdWVTdWJzY3JpcHRpb24gPSB0aGlzLmRhdGF2YWx1ZSQuc3Vic2NyaWJlKCh2YWw6IEFycmF5PHN0cmluZz4gfCBzdHJpbmcpID0+IHtcblxuICAgICAgICAgICAgY29uc3QgcXVlcnkgPSAoaXNBcnJheSh2YWwpID8gdmFsWzBdIDogdmFsKSBhcyBzdHJpbmc7XG5cbiAgICAgICAgICAgIGlmIChxdWVyeSA9PT0gbnVsbCB8fCBxdWVyeSA9PT0gJycpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9tb2RlbEJ5VmFsdWUgPSAnJztcbiAgICAgICAgICAgICAgICAvLyByZXNldCB0aGUgcXVlcnkuXG4gICAgICAgICAgICAgICAgdGhpcy5xdWVyeSA9IHRoaXMucXVlcnlNb2RlbCA9ICcnO1xuICAgICAgICAgICAgICAgIC8vIG9uIGNsZWFyIG9yIHJlc2V0IGZpbHRlciwgZW1wdHkgdGhlIGxhc3RSZXN1bHRzIHRvIGZldGNoIG5ldyByZWNvcmRzLlxuICAgICAgICAgICAgICAgIHRoaXMuX2xhc3RSZXN1bHQgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIXRoaXMuX3Vuc3Vic2NyaWJlRHYpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9kZWZhdWx0UXVlcnlJbnZva2VkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgLy8gaWYgcHJldiBkYXRhdmFsdWUgaXMgbm90IGVxdWFsIHRvIGN1cnJlbnQgZGF0YXZhbHVlIHRoZW4gY2xlYXIgdGhlIG1vZGVsQnlLZXkgYW5kIHF1ZXJ5TW9kZWxcbiAgICAgICAgICAgICAgICBpZiAoIWlzT2JqZWN0KHZhbCkgJiYgKHRoaXMgYXMgYW55KS5wcmV2RGF0YXZhbHVlICE9PSB2YWwpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbW9kZWxCeUtleSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5xdWVyeSA9IHRoaXMucXVlcnlNb2RlbCA9ICcnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBpZiB0aGUgZGF0YWZpZWxkIGlzIEFMTEZJTEVEUyBkbyBub3QgZmV0Y2ggdGhlIHJlY29yZHNcbiAgICAgICAgICAgICAgICAvLyB1cGRhdGUgdGhlIHF1ZXJ5IG1vZGVsIHdpdGggdGhlIHZhbHVlcyB3ZSBoYXZlXG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVCeURhdGF2YWx1ZSh2YWwpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyB0dXJuIG9uIHNob3dDbG9zZUJ0biB3aGVuIGEgZGVmYXVsdCB2YWx1ZSBpcyBnaXZlblxuICAgICAgICAgICAgdGhpcy5zaG93Q2xvc2VidG4gPSAodGhpcy5xdWVyeSAhPT0gJycpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5yZWdpc3RlckRlc3Ryb3lMaXN0ZW5lcigoKSA9PiBkYXRhdmFsdWVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSk7XG5cbiAgICAgICAgY29uc3QgZGF0YXNldFN1YnNjcmlwdGlvbiA9IHRoaXMuZGF0YXNldCQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIC8vIHNldCB0aGUgbmV4dCBpdGVtIGluZGV4LlxuICAgICAgICAgICAgdGhpcy5zdGFydEluZGV4ID0gdGhpcy5kYXRhc2V0SXRlbXMubGVuZ3RoO1xuICAgICAgICAgICAgdGhpcy5fbGFzdFJlc3VsdCA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGNvbnN0IGRlZmF1bHRWYWx1ZSA9IHRoaXMuZGF0YXZhbHVlIHx8IHRoaXMudG9CZVByb2Nlc3NlZERhdGF2YWx1ZTtcbiAgICAgICAgICAgIC8vIGludm9raW5nIHVwZGF0ZUJ5RGF0YXNldCBvbmx5IHdoZW4gZGF0YXZhbHVlIGlzIHByZXNlbnQsIGFzIGVudGVyZWQgdmFsdWUgaS5lLiBxdWVyeSBpcyBzZXR0aW5nIGJhY2sgdG8gJydcbiAgICAgICAgICAgIGlmIChpc0RlZmluZWQoZGVmYXVsdFZhbHVlKSkge1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlQnlEYXRhc2V0KGRlZmF1bHRWYWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnJlZ2lzdGVyRGVzdHJveUxpc3RlbmVyKCgpID0+IGRhdGFzZXRTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSk7XG4gICAgfVxuXG4gICAgLy8gb24gY2xlYXIsIHRyaWdnZXIgc2VhcmNoIHdpdGggcGFnZSBzaXplIDFcbiAgICBwcml2YXRlIGNsZWFyU2VhcmNoKCRldmVudCwgbG9hZE9uQ2xlYXIpIHtcbiAgICAgICAgdGhpcy5xdWVyeSA9ICcnO1xuICAgICAgICB0aGlzLm9uSW5wdXRDaGFuZ2UoJGV2ZW50KTtcbiAgICAgICAgdGhpcy5kYXRhUHJvdmlkZXIuaXNMYXN0UGFnZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLmxpc3RlblF1ZXJ5ID0gZmFsc2U7XG4gICAgICAgIGlmIChsb2FkT25DbGVhcikge1xuICAgICAgICAgICAgdGhpcy5saXN0ZW5RdWVyeSA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLl91bnN1YnNjcmliZUR2ID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmxvYWRNb3JlRGF0YSgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaW52b2tlRXZlbnRDYWxsYmFjaygnY2xlYXJzZWFyY2gnKTtcbiAgICAgICAgdGhpcy5fbG9hZGluZ0l0ZW1zID0gZmFsc2U7XG4gICAgICAgIC8vIHdoZW4gc2VhcmNoIGlucHV0IGlzIGNsZWFyZWQsIGZvY3VzIG9uIHRoZSBpbnB1dCBmaWVsZFxuICAgICAgICBpZiAoJGV2ZW50KSB7XG4gICAgICAgICAgICB0aGlzLiRlbGVtZW50LmZpbmQoJy5hcHAtc2VhcmNoLWlucHV0JykuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIGZ1bmN0aW9uIHRvICBjbGVhciB0aGUgaW5wdXQgdmFsdWVcbiAgICBwdWJsaWMgY2xlYXJUZXh0KCkge1xuICAgICAgICB0aGlzLnF1ZXJ5ID0gJyc7XG4gICAgICAgIHRoaXMuc2hvd0Nsb3NlYnRuID0gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gQ2xvc2UgdGhlIGZ1bGwgc2NyZWVuIG1vZGUgaW4gbW9iaWxlIHZpZXcgb2YgYXV0byBjb21wbGV0ZVxuICAgIHByaXZhdGUgY2xvc2VTZWFyY2goKSB7XG4gICAgICAgIHRoaXMuX2xvYWRpbmdJdGVtcyA9IGZhbHNlO1xuICAgICAgICB0aGlzLnBhZ2UgPSAxO1xuICAgICAgICAvLyBhZnRlciBjbG9zaW5nIHRoZSBzZWFyY2gsIGluc2VydCB0aGUgZWxlbWVudCBhdCBpdHMgcHJldmlvdXMgcG9zaXRpb24gKGVsSW5kZXgpXG4gICAgICAgIHRoaXMuaW5zZXJ0QXRJbmRleCh0aGlzLmVsSW5kZXgpO1xuICAgICAgICB0aGlzLmVsSW5kZXggPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMucGFyZW50RWwgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuJGVsZW1lbnQucmVtb3ZlQ2xhc3MoJ2Z1bGwtc2NyZWVuJyk7XG4gICAgICAgIGlmICh0aGlzLl9kb21VcGRhdGVkKSB7XG4gICAgICAgICAgICB0aGlzLl9kb21VcGRhdGVkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5saXN0ZW5RdWVyeSA9IGZhbHNlO1xuICAgICAgICB0aGlzLl91bnN1YnNjcmliZUR2ID0gdHJ1ZTtcbiAgICAgICAgdGhpcy50eXBlYWhlYWQuaGlkZSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVuZGVyTW9iaWxlQXV0b0NvbXBsZXRlKCkge1xuICAgICAgICAvLyBHZXQgdGhlIHBhcmVudCBlbGVtZW50IG9mIHRoZSBzZWFyY2ggZWxlbWVudCB3aGljaCBjYW4gYmUgbmV4dCBvciBwcmV2IGVsZW1lbnQsIGlmIGJvdGggYXJlIGVtcHR5IHRoZW4gZ2V0IHRoZSBwYXJlbnQgb2YgZWxlbWVudC5cbiAgICAgICAgaWYgKCFpc0RlZmluZWQodGhpcy5lbEluZGV4KSkge1xuICAgICAgICAgICAgdGhpcy5wYXJlbnRFbCA9IHRoaXMuJGVsZW1lbnQucGFyZW50KCk7XG4gICAgICAgICAgICB0aGlzLmVsSW5kZXggPSB0aGlzLnBhcmVudEVsLmNoaWxkcmVuKCkuaW5kZXgodGhpcy4kZWxlbWVudCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLiRlbGVtZW50Lmhhc0NsYXNzKCdmdWxsLXNjcmVlbicpKSB7XG4gICAgICAgICAgICAvLyB0aGlzIGZsYWcgaXMgc2V0IHRvIG5vdGlmeSB0aGF0IHRoZSB0eXBlYWhlYWQtY29udGFpbmVyIGRvbSBoYXMgY2hhbmdlZCBpdHMgcG9zaXRpb25cbiAgICAgICAgICAgIHRoaXMuX2RvbVVwZGF0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgLy8gQWRkIGZ1bGwgc2NyZWVuIGNsYXNzIG9uIGZvY3VzIG9mIHRoZSBpbnB1dCBlbGVtZW50LlxuICAgICAgICAgICAgdGhpcy4kZWxlbWVudC5hZGRDbGFzcygnZnVsbC1zY3JlZW4nKTtcblxuICAgICAgICAgICAgLy8gQWRkIHBvc2l0aW9uIHRvIHNldCB0aGUgaGVpZ2h0IHRvIGF1dG9cbiAgICAgICAgICAgIGlmICh0aGlzLnBvc2l0aW9uID09PSAnaW5saW5lJykge1xuICAgICAgICAgICAgICAgIHRoaXMuJGVsZW1lbnQuYWRkQ2xhc3ModGhpcy5wb3NpdGlvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gZm9jdXMgaXMgbG9zdCB3aGVuIGVsZW1lbnQgaXMgY2hhbmdlZCB0byBmdWxsLXNjcmVlbiwga2V5ZG93biB0byBzZWxlY3QgbmV4dCBpdGVtcyB3aWxsIG5vdCB3b3JrXG4gICAgICAgIC8vIEhlbmNlIGV4cGxpY2l0bHkgZm9jdXNpbmcgdGhlIGlucHV0XG4gICAgICAgIGlmICh0aGlzLiRlbGVtZW50Lmhhc0NsYXNzKCdmdWxsLXNjcmVlbicpKSB7XG4gICAgICAgICAgICB0aGlzLiRlbGVtZW50LmZpbmQoJy5hcHAtc2VhcmNoLWlucHV0JykuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0RGF0YVNvdXJjZUFzT2JzZXJ2YWJsZShxdWVyeTogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgLy8gc2hvdyBkcm9wZG93biBvbmx5IHdoZW4gdGhlcmUgaXMgY2hhbmdlIGluIHF1ZXJ5LiBUaGlzIHNob3VsZCBub3QgYXBwbHkgd2hlbiBkYXRhb3B0aW9ucyB3aXRoIGZpbHRlckZpZWxkcyBhcmUgdXBkYXRlZC5cbiAgICAgICAgLy8gd2hlbiBsYXN0UmVzdWx0IGlzIG5vdCBhdmFpbGFibGUgaS5lLiBzdGlsbCB0aGUgZmlyc3QgY2FsbCBpcyBwZW5kaW5nIGFuZCBzZWNvbmQgcXVlcnkgaXMgaW52b2tlZCB0aGVuIGRvIG5vdCByZXR1cm4uXG4gICAgICAgIGlmICh0aGlzLl9sYXN0UXVlcnkgPT09IHF1ZXJ5ICYmICFnZXQodGhpcy5kYXRhb3B0aW9ucywgJ2ZpbHRlckZpZWxkcycpICYmIGlzRGVmaW5lZCh0aGlzLl9sYXN0UmVzdWx0KSkge1xuICAgICAgICAgICAgdGhpcy5fbG9hZGluZ0l0ZW1zID0gZmFsc2U7XG4gICAgICAgICAgICByZXR1cm4gb2YodGhpcy5fbGFzdFJlc3VsdCk7XG4gICAgICAgIH1cblxuICAgICAgICAvKlxuICAgICAgICAgICAgIFdNUy0xOTE3NzogT24gZm9jdXMgb2YgaW5wdXQgZmllbGQgZm9yIGF1dG9jb21wbGV0ZSB0eXBlLCBkbyBub3QgdHJpZ2dlciBhcGkgY2FsbCB3aGVuXG4gICAgICAgICAgICAgICAgIGEpIHNlYXJjaGtleSBhbmQgZGlzcGxheWV4cHJlc3Npb24gYXJlIGRpZmZlcmVudFxuICAgICAgICAgICAgICAgICBiKSBiaW5kZGlzcGxheWxhYmVsIGNvbnRhaW5zIG11bHRpcGxlIHZhbHVlc1xuICAgICAgICAgICAgICAgICBjKSBiaW5kZGlzcGxheWxhYmVsIGNvbnRhaW5zIHNpbmdsZSB2YWx1ZSB3aGljaCBkb2VzIG5vdCBtYXRjaCB3aXRoIHNlYXJjaGtleVxuICAgICAgICAqL1xuICAgICAgICBpZiAodGhpcy50eXBlID09PSAnYXV0b2NvbXBsZXRlJyAmJiB0aGlzLnNlYXJjaGtleSAmJiB0aGlzLnF1ZXJ5ICYmIHRoaXMuZGF0YXZhbHVlKSB7XG4gICAgICAgICAgICBsZXQgYmluZERpc3BsYXlMYWJlbEFycmF5ID0gW107XG4gICAgICAgICAgICBjb25zdCBzZWFyY2hLZXlBcnJheSA9IHNwbGl0KHRoaXMuc2VhcmNoa2V5LCAnLCcpO1xuICAgICAgICAgICAgbGV0IGRpc3BsYXlsYWJlbDtcbiAgICAgICAgICAgIGlmICh0aGlzLmJpbmRkaXNwbGF5bGFiZWwpIHtcbiAgICAgICAgICAgICAgICBiaW5kRGlzcGxheUxhYmVsQXJyYXkgPSBzcGxpdCh0aGlzLmJpbmRkaXNwbGF5bGFiZWwsICcrJyk7XG4gICAgICAgICAgICAgICAgaWYgKGJpbmREaXNwbGF5TGFiZWxBcnJheS5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFpbmNsdWRlcyhiaW5kRGlzcGxheUxhYmVsQXJyYXlbMF0sICd8JykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlZ2V4ID0gL1xcWyguKj8pXFxdLztcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlsYWJlbCA9IHJlZ2V4LmV4ZWMoYmluZERpc3BsYXlMYWJlbEFycmF5WzBdKVsxXTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlsYWJlbCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoKGJpbmREaXNwbGF5TGFiZWxBcnJheS5sZW5ndGggPiAxIHx8IChkaXNwbGF5bGFiZWwgJiYgIWluY2x1ZGVzKHNlYXJjaEtleUFycmF5LCBkaXNwbGF5bGFiZWwpKVxuICAgICAgICAgICAgICAgIHx8ICh0aGlzLmRpc3BsYXlleHByZXNzaW9uICYmICFpbmNsdWRlcyhzZWFyY2hLZXlBcnJheSwgdGhpcy5kaXNwbGF5ZXhwcmVzc2lvbikpKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2xvYWRpbmdJdGVtcyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHJldHVybiBvZihbXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fbGFzdFF1ZXJ5ID0gdGhpcy5xdWVyeTtcbiAgICAgICAgcmV0dXJuIGZyb20odGhpcy5nZXREYXRhU291cmNlKHF1ZXJ5KSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGhhbmRsZUV2ZW50KG5vZGU6IEhUTUxFbGVtZW50LCBldmVudE5hbWU6IHN0cmluZywgZXZlbnRDYWxsYmFjazogRnVuY3Rpb24sIGxvY2FsczogYW55KSB7XG4gICAgICAgIGlmICghaW5jbHVkZXMoWydibHVyJywgJ2ZvY3VzJywgJ3NlbGVjdCcsICdzdWJtaXQnLCAnY2hhbmdlJ10sIGV2ZW50TmFtZSkpIHtcbiAgICAgICAgICAgIHN1cGVyLmhhbmRsZUV2ZW50KG5vZGUsIGV2ZW50TmFtZSwgZXZlbnRDYWxsYmFjaywgbG9jYWxzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIGhpZ2hsaWdodCB0aGUgY2hhcmFjdGVycyBpbiB0aGUgZHJvcGRvd24gbWF0Y2hpbmcgdGhlIHF1ZXJ5LlxuICAgIHByaXZhdGUgaGlnaGxpZ2h0KG1hdGNoOiBUeXBlYWhlYWRNYXRjaCwgcXVlcnk6IHN0cmluZykge1xuICAgICAgICBpZiAodGhpcy50eXBlYWhlYWRDb250YWluZXIpIHtcbiAgICAgICAgICAgIC8vIGhpZ2hsaWdodCBvZiBjaGFycyB3aWxsIHdvcmsgb25seSB3aGVuIGxhYmVsIGFyZSBzdHJpbmdzLlxuICAgICAgICAgICAgKG1hdGNoIGFzIGFueSkudmFsdWUgPSBtYXRjaC5pdGVtLmxhYmVsLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy50eXBlYWhlYWRDb250YWluZXIuaGlnaGxpZ2h0KG1hdGNoLCBxdWVyeSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBpbnNlcnRzIHRoZSBlbGVtZW50IGF0IHRoZSBpbmRleCBwb3NpdGlvblxuICAgIHByaXZhdGUgaW5zZXJ0QXRJbmRleChpKSB7XG4gICAgICAgIGlmIChpID09PSAwKSB7XG4gICAgICAgICAgICB0aGlzLnBhcmVudEVsLnByZXBlbmQodGhpcy4kZWxlbWVudCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCAkZWxBdEluZGV4ID0gdGhpcy5wYXJlbnRFbC5jaGlsZHJlbigpLmVxKGkpO1xuICAgICAgICAgICAgaWYgKCRlbEF0SW5kZXgubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy4kZWxlbWVudC5pbnNlcnRCZWZvcmUodGhpcy5wYXJlbnRFbC5jaGlsZHJlbigpLmVxKGkpKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy4kZWxlbWVudC5pbnNlcnRBZnRlcih0aGlzLnBhcmVudEVsLmNoaWxkcmVuKCkuZXEoaSAtIDEpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIENoZWNrIGlmIHRoZSB3aWRnZXQgaXMgb2YgdHlwZSBhdXRvY29tcGxldGUgaW4gbW9iaWxlIHZpZXcvIGFwcFxuICAgIHB1YmxpYyBpc01vYmlsZUF1dG9Db21wbGV0ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHlwZSA9PT0gJ2F1dG9jb21wbGV0ZScgJiYgaXNNb2JpbGUoKTtcbiAgICB9XG5cbiAgICAvLyBDaGVjayBpZiB0aGUgcXVlcnkgaXMgZW50ZXJlZCBpbiB0aGUgaW5wdXQgYW5kIHRoZSB2aWV3IGlzIG5vdCBtb2JpbGVcbiAgICBwdWJsaWMgaXNRdWVyeUVudGVyZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNob3djbGVhciAmJiB0aGlzLnNob3dDbG9zZWJ0bjtcbiAgICB9XG5cbiAgICBwcml2YXRlIGxvYWRNb3JlRGF0YShpbmNyZW1lbnRQYWdlPzogYm9vbGVhbikge1xuICAgICAgICBpZiAodGhpcy5kYXRhUHJvdmlkZXIuaXNMYXN0UGFnZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIEluY3JlYXNlIHRoZSBwYWdlIG51bWJlciBhbmQgdHJpZ2dlciBmb3JjZSBxdWVyeSB1cGRhdGVcbiAgICAgICAgdGhpcy5wYWdlID0gaW5jcmVtZW50UGFnZSA/IHRoaXMucGFnZSArIDEgOiB0aGlzLnBhZ2U7XG5cbiAgICAgICAgdGhpcy5pc1Njcm9sbGVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5fbG9hZGluZ0l0ZW1zID0gdHJ1ZTtcblxuICAgICAgICAvLyB3aGVuIGludm9raW5nIG5ldyBzZXQgb2YgcmVzdWx0cywgcmVzZXQgdGhlIGxhc3RRdWVyeS5cbiAgICAgICAgaWYgKGluY3JlbWVudFBhZ2UpIHtcbiAgICAgICAgICAgIHRoaXMuX2xhc3RRdWVyeSA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHRyaWdnZXIgdGhlIHR5cGVhaGVhZCBjaGFuZ2UgbWFudWFsbHkgdG8gZmV0Y2ggdGhlIG5leHQgc2V0IG9mIHJlc3VsdHMuXG4gICAgICAgIHRoaXMudHlwZWFoZWFkLm9uSW5wdXQoe1xuICAgICAgICAgICAgdGFyZ2V0OiB7XG4gICAgICAgICAgICAgICAgdmFsdWU6IHRyaW0odGhpcy5xdWVyeSkgfHwgJzAnIC8vIGR1bW15IGRhdGEgdG8gbm90aWZ5IHRoZSBvYnNlcnZhYmxlc1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBvbiBmb2N1c291dCwgc3Vic2NyaWJlIHRvIHRoZSBkYXRhdmFsdWUgY2hhbmdlcyBhZ2FpblxuICAgIHByaXZhdGUgb25Gb2N1c091dCgpIHtcbiAgICAgICAgdGhpcy5fdW5zdWJzY3JpYmVEdiA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9sb2FkaW5nSXRlbXMgPSBmYWxzZTtcbiAgICAgICAgLy8gcmVzZXQgdGhlIHBhZ2UgdmFsdWUgb24gZm9jdXNvdXQuXG4gICAgICAgIHRoaXMucGFnZSA9IDE7XG4gICAgICAgIC8vIGlmIGRvbVVwZGF0ZWQgaXMgdHJ1ZSB0aGVuIGRvIG5vdCBoaWRlIHRoZSBkcm9wZG93biBpbiB0aGUgZnVsbHNjcmVlblxuICAgICAgICBpZiAoIXRoaXMuX2RvbVVwZGF0ZWQgJiYgdGhpcy5faXNPcGVuKSB7XG4gICAgICAgICAgICB0aGlzLmxpc3RlblF1ZXJ5ID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5faXNPcGVuID0gZmFsc2U7XG4gICAgICAgIC8vIG9uIG91dHNpZGUgY2xpY2ssIHR5cGVhaGVhZCBpcyBoaWRkZW4uIFRvIGF2b2lkIHRoaXMsIHdoZW4gZnVsbHNjcmVlbiBpcyBzZXQsIG92ZXJyaWRkaW5nIGlzRm9jdXNlZCBmbGFnIG9uIHRoZSB0eXBlYWhlYWQgY29udGFpbmVyXG4gICAgICAgIGlmICh0aGlzLl9kb21VcGRhdGVkICYmIHRoaXMudHlwZWFoZWFkICYmICh0aGlzLnR5cGVhaGVhZCBhcyBhbnkpLl9jb250YWluZXIpIHtcbiAgICAgICAgICAgICh0aGlzLnR5cGVhaGVhZCBhcyBhbnkpLl9jb250YWluZXIuaXNGb2N1c2VkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgb25JbnB1dENoYW5nZSgkZXZlbnQpIHtcbiAgICAgICAgLy8gcmVzZXQgYWxsIHRoZSBwcmV2aW91cyBwYWdlIGRldGFpbHMgaW4gb3JkZXIgdG8gZmV0Y2ggbmV3IHNldCBvZiByZXN1bHQuXG4gICAgICAgIHRoaXMucmVzdWx0ID0gW107XG4gICAgICAgIHRoaXMucGFnZSA9IDE7XG4gICAgICAgIHRoaXMubGlzdGVuUXVlcnkgPSB0aGlzLmlzVXBkYXRlT25LZXlQcmVzcygpO1xuICAgICAgICB0aGlzLl9tb2RlbEJ5VmFsdWUgPSB1bmRlZmluZWQ7XG5cbiAgICAgICAgLy8gd2hlbiBpbnB1dCBpcyBjbGVhcmVkLCByZXNldCB0aGUgZGF0YXZhbHVlXG4gICAgICAgIGlmICh0aGlzLnF1ZXJ5ID09PSAnJykge1xuICAgICAgICAgICAgdGhpcy5xdWVyeU1vZGVsID0gJyc7XG4gICAgICAgICAgICB0aGlzLl9tb2RlbEJ5VmFsdWUgPSAnJztcbiAgICAgICAgICAgIHRoaXMudXBkYXRlUHJldkRhdGF2YWx1ZSh0aGlzLl9sYXN0UXVlcnkpO1xuICAgICAgICAgICAgdGhpcy5pbnZva2VPbkNoYW5nZSh0aGlzLl9tb2RlbEJ5VmFsdWUsIHt9LCB0cnVlKTtcblxuICAgICAgICAgICAgdGhpcy5pbnZva2VFdmVudENhbGxiYWNrKCdjbGVhcicsIHsgJGV2ZW50IH0pO1xuXG4gICAgICAgICAgICAvLyB0cmlnZ2VyIG9uU3VibWl0IG9ubHkgd2hlbiB0aGUgc2VhcmNoIGlucHV0IGlzIGNsZWFyZWQgb2ZmIGFuZCBkbyBub3QgdHJpZ2dlciB3aGVuIHRhYiBpcyBwcmVzc2VkLlxuICAgICAgICAgICAgaWYgKCRldmVudCAmJiAkZXZlbnQud2hpY2ggIT09IDkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmludm9rZUV2ZW50Q2FsbGJhY2soJ3N1Ym1pdCcsIHsgJGV2ZW50IH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gaW52b2tpbmcgY2hhbmdlIGV2ZW50IG9uIGV2ZXJ5IGlucHV0IHZhbHVlIGNoYW5nZS5cbiAgICAgICAgICAgIHRoaXMuaW52b2tlRXZlbnRDYWxsYmFjaygnY2hhbmdlJywge1xuICAgICAgICAgICAgICAgICRldmVudDogJGV2ZW50LFxuICAgICAgICAgICAgICAgIG5ld1ZhbDogdGhpcy5fbW9kZWxCeVZhbHVlIHx8IHRoaXMucXVlcnksXG4gICAgICAgICAgICAgICAgb2xkVmFsOiAodGhpcyBhcyBhbnkpLnByZXZEYXRhdmFsdWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2hvd0Nsb3NlYnRuID0gKHRoaXMucXVlcnkgIT09ICcnKTtcbiAgICB9XG5cbiAgICAvLyBUcmlnZ2VyZWQgZm9yIGVudGVyIGV2ZW50XG4gICAgcHJpdmF0ZSBoYW5kbGVFbnRlckV2ZW50KCRldmVudCkge1xuICAgICAgICAvLyBzdWJtaXQgZXZlbnQgdHJpZ2dlcmVkIHdoZW4gdGhlcmUgaXMgbm8gc2VhcmNoIHJlc3VsdHNcbiAgICAgICAgaWYgKCFnZXQodGhpcy50eXBlYWhlYWQsICdtYXRjaGVzLmxlbmd0aCcpKSB7XG4gICAgICAgICAgICB0aGlzLm9uU2VhcmNoU2VsZWN0KCRldmVudCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gVHJpZ2dlcnJlZCB3aGVuIHR5cGVhaGVhZCBvcHRpb24gaXMgc2VsZWN0ZWQuXG4gICAgcHJpdmF0ZSBvblNlYXJjaFNlbGVjdCgkZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIGxldCBpdGVtO1xuICAgICAgICAvLyBXTVMtMjI1MzM6IEJlZm9yZSBhZGRpbmcgYWN0aXZlIHR5cGVhaGVhZCBlbCwgY2hlY2sgaWYgdGhlIGVudGVyZWQgcXVlcnkgbWF0Y2hlcyB3aXRoIHRoZSBhY3RpdmUgZWwgb3Igbm90XG4gICAgICAgIGNvbnN0IGlzUXVlcnlNYXRjaCA9IHRoaXMudHlwZWFoZWFkQ29udGFpbmVyPy5hY3RpdmU/LnZhbHVlID09PSB0aGlzLnF1ZXJ5O1xuXG4gICAgICAgIGlmICh0aGlzLnR5cGVhaGVhZENvbnRhaW5lciAmJiB0aGlzLnR5cGVhaGVhZENvbnRhaW5lci5hY3RpdmUgJiYgaXNRdWVyeU1hdGNoKSB7XG4gICAgICAgICAgICBpdGVtID0gdGhpcy50eXBlYWhlYWRDb250YWluZXIuYWN0aXZlLml0ZW07XG4gICAgICAgIH1cbiAgICAgICAgJGV2ZW50ID0gdGhpcy5ldmVudERhdGEoJGV2ZW50LCBpdGVtIHx8IHt9KTtcblxuICAgICAgICAvLyBzZWFyY2hPbiBpcyBzZXQgYXMgb25CdG5DbGljaywgdGhlbiBpbnZva2UgdGhlIHNlYXJjaCBhcGkgY2FsbCBtYW51YWxseS5cbiAgICAgICAgaWYgKCF0aGlzLmlzVXBkYXRlT25LZXlQcmVzcygpKSB7XG4gICAgICAgICAgICB0aGlzLmxpc3RlblF1ZXJ5ID0gdHJ1ZTtcbiAgICAgICAgICAgIC8vIHRyaWdnZXIgdGhlIHR5cGVhaGVhZCBjaGFuZ2UgbWFudWFsbHkgdG8gZmV0Y2ggdGhlIG5leHQgc2V0IG9mIHJlc3VsdHMuXG4gICAgICAgICAgICB0aGlzLnR5cGVhaGVhZC5vbklucHV0KHtcbiAgICAgICAgICAgICAgICB0YXJnZXQ6IHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHRoaXMucXVlcnkgLy8gZHVtbXkgZGF0YSB0byBub3RpZnkgdGhlIG9ic2VydmFibGVzXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gd2hlbiBtYXRjaGVzIGFyZSBhdmFpbGFibGUuXG4gICAgICAgIGlmICh0aGlzLnR5cGVhaGVhZENvbnRhaW5lciAmJiB0aGlzLmxpRWxlbWVudHMubGVuZ3RoICYmIGlzUXVlcnlNYXRjaCkge1xuICAgICAgICAgICAgdGhpcy50eXBlYWhlYWRDb250YWluZXIuc2VsZWN0QWN0aXZlTWF0Y2goKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucXVlcnlNb2RlbCA9IHRoaXMucXVlcnk7XG4gICAgICAgICAgICB0aGlzLmludm9rZUV2ZW50Q2FsbGJhY2soJ3N1Ym1pdCcsIHsgJGV2ZW50IH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbnZva2VPbkJlZm9yZVNlcnZpY2VDYWxsKGlucHV0RGF0YSkge1xuICAgICAgICB0aGlzLmludm9rZUV2ZW50Q2FsbGJhY2soJ2JlZm9yZXNlcnZpY2VjYWxsJywgeyBpbnB1dERhdGEgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvbkRyb3Bkb3duT3BlbigpIHtcbiAgICAgICAgaWYgKHRoaXMuY2xlYXJEYXRhKSB7XG4gICAgICAgICAgICB0aGlzLnR5cGVhaGVhZC5oaWRlKCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gc2V0dGluZyB0aGUgdWxFbGVtZW50cywgbGlFbGVtZW50IG9uIHR5cGVhaGVhZENvbnRhaW5lci5cbiAgICAgICAgLy8gYXMgd2UgYXJlIHVzaW5nIGN1c3RvbU9wdGlvbiB0ZW1wbGF0ZSwgbGlFbGVtZW50cyBhcmUgbm90IGF2YWlsYWJsZSBvbiB0eXBlYWhlYWRDb250YWluZXIgc28gYXBwZW5kIHRoZW0gZXhwbGljaXRseS5cbiAgICAgICAgY29uc3QgZm4gPSBkZWJvdW5jZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9pc09wZW4gPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy50eXBlYWhlYWRDb250YWluZXIgPSB0aGlzLnR5cGVhaGVhZC5fY29udGFpbmVyIHx8ICh0aGlzLnR5cGVhaGVhZCBhcyBhbnkpLl90eXBlYWhlYWQuaW5zdGFuY2U7XG4gICAgICAgICAgICAodGhpcy50eXBlYWhlYWRDb250YWluZXIgYXMgYW55KS5saUVsZW1lbnRzID0gdGhpcy5saUVsZW1lbnRzO1xuICAgICAgICAgICAgKHRoaXMudHlwZWFoZWFkQ29udGFpbmVyIGFzIGFueSkudWxFbGVtZW50ID0gdGhpcy51bEVsZW1lbnQ7XG4gICAgICAgICAgICBhZGp1c3RDb250YWluZXJQb3NpdGlvbigkKCd0eXBlYWhlYWQtY29udGFpbmVyJyksIHRoaXMubmF0aXZlRWxlbWVudCwgKHRoaXMudHlwZWFoZWFkIGFzIGFueSkuX3R5cGVhaGVhZCwgJCgndHlwZWFoZWFkLWNvbnRhaW5lciAuZHJvcGRvd24tbWVudScpKTtcblxuICAgICAgICB9KTtcblxuICAgICAgICBmbigpO1xuXG4gICAgICAgIC8vIG9wZW4gZnVsbC1zY3JlZW4gc2VhcmNoIHZpZXdcbiAgICAgICAgaWYgKHRoaXMuaXNNb2JpbGVBdXRvQ29tcGxldGUoKSkge1xuICAgICAgICAgICAgaWYgKCF0aGlzLiRlbGVtZW50Lmhhc0NsYXNzKCdmdWxsLXNjcmVlbicpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJNb2JpbGVBdXRvQ29tcGxldGUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGRyb3Bkb3duRWwgPSB0aGlzLmRyb3Bkb3duRWwuY2xvc2VzdCgndHlwZWFoZWFkLWNvbnRhaW5lcicpO1xuXG4gICAgICAgICAgICBkcm9wZG93bkVsLmluc2VydEFmdGVyKHRoaXMuJGVsZW1lbnQuZmluZCgnaW5wdXQnKS5maXJzdCgpKTtcbiAgICAgICAgICAgIGNvbnN0IHNjcmVlbkhlaWdodCA9IHRoaXMuJGVsZW1lbnQuY2xvc2VzdCgnLmFwcC1jb250ZW50JykuaGVpZ2h0KCk7XG4gICAgICAgICAgICBkcm9wZG93bkVsLmNzcyh7IHBvc2l0aW9uOiAncmVsYXRpdmUnLCB0b3A6IDAsIGhlaWdodDogc2NyZWVuSGVpZ2h0ICsgJ3B4JyB9KTtcbiAgICAgICAgICAgIHRoaXMuc2hvd0Nsb3NlYnRuID0gdGhpcy5xdWVyeSAmJiB0aGlzLnF1ZXJ5ICE9PSAnJztcblxuICAgICAgICAgICAgaWYgKCFpc1VuZGVmaW5lZCh0aGlzLmRhdGFQcm92aWRlci5pc0xhc3RQYWdlKSAmJiAhdGhpcy5kYXRhUHJvdmlkZXIuaXNMYXN0UGFnZSkge1xuICAgICAgICAgICAgICAgIHRoaXMudHJpZ2dlclNlYXJjaCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZWxlY3ROZXh0KCkge1xuICAgICAgICBjb25zdCBtYXRjaGVzID0gdGhpcy50eXBlYWhlYWRDb250YWluZXIubWF0Y2hlcztcblxuICAgICAgICBpZiAoIW1hdGNoZXMpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBpbmRleCA9IG1hdGNoZXMuaW5kZXhPZih0aGlzLnR5cGVhaGVhZENvbnRhaW5lci5hY3RpdmUpO1xuXG4gICAgICAgIC8vIG9uIGtleWRvd24sIGlmIHNjcm9sbCBpcyBhdCB0aGUgYm90dG9tIGFuZCBuZXh0IHBhZ2UgcmVjb3JkcyBhcmUgYXZhaWxhYmxlLCBmZXRjaCBuZXh0IHBhZ2UgaXRlbXMuXG4gICAgICAgIGlmICghdGhpcy5fbG9hZGluZ0l0ZW1zICYmICF0aGlzLmRhdGFQcm92aWRlci5pc0xhc3RQYWdlICYmIGluZGV4ICsgMSA+IG1hdGNoZXMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgLy8gaW5kZXggaXMgc2F2ZWQgaW4gb3JkZXIgdG8gc2VsZWN0IHRoZSBsYXN0U2VsZWN0ZWQgaXRlbSBpbiB0aGUgZHJvcGRvd24gYWZ0ZXIgZmV0Y2hpbmcgbmV4dCBwYWdlIGl0ZW1zLlxuICAgICAgICAgICAgdGhpcy5sYXN0U2VsZWN0ZWRJbmRleCA9IGluZGV4O1xuICAgICAgICAgICAgdGhpcy5sb2FkTW9yZURhdGEodHJ1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNldExhc3RBY3RpdmVNYXRjaEFzU2VsZWN0ZWQoKSB7XG4gICAgICAgIGlmICh0aGlzLmxhc3RTZWxlY3RlZEluZGV4KSB7XG4gICAgICAgICAgICAodGhpcy50eXBlYWhlYWRDb250YWluZXIgYXMgYW55KS5fYWN0aXZlID0gdGhpcy50eXBlYWhlYWRDb250YWluZXIubWF0Y2hlc1t0aGlzLmxhc3RTZWxlY3RlZEluZGV4XTtcbiAgICAgICAgICAgIHRoaXMudHlwZWFoZWFkQ29udGFpbmVyLm5leHRBY3RpdmVNYXRjaCgpO1xuICAgICAgICAgICAgdGhpcy5sYXN0U2VsZWN0ZWRJbmRleCA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgdHJpZ2dlclNlYXJjaCgpIHtcbiAgICAgICAgaWYgKHRoaXMuZGF0YVByb3ZpZGVyLmlzTGFzdFBhZ2UgfHwgIXRoaXMuJGVsZW1lbnQuaGFzQ2xhc3MoJ2Z1bGwtc2NyZWVuJykpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB0eXBlQWhlYWREcm9wRG93biA9IHRoaXMuZHJvcGRvd25FbDtcbiAgICAgICAgY29uc3QgJGxhc3RJdGVtID0gdHlwZUFoZWFkRHJvcERvd24uZmluZCgnbGknKS5sYXN0KCk7XG5cbiAgICAgICAgLy8gQ2hlY2sgaWYgbGFzdCBpdGVtIGlzIG5vdCBiZWxvdyB0aGUgZnVsbCBzY3JlZW5cbiAgICAgICAgaWYgKCRsYXN0SXRlbS5sZW5ndGggJiYgdHlwZUFoZWFkRHJvcERvd24ubGVuZ3RoICYmICh0eXBlQWhlYWREcm9wRG93bi5oZWlnaHQoKSArIHR5cGVBaGVhZERyb3BEb3duLnBvc2l0aW9uKCkudG9wID4gJGxhc3RJdGVtLmhlaWdodCgpICsgJGxhc3RJdGVtLnBvc2l0aW9uKCkudG9wKSkge1xuICAgICAgICAgICAgdGhpcy5sb2FkTW9yZURhdGEodHJ1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGlzVXBkYXRlT25LZXlQcmVzcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VhcmNob24gPT09ICd0eXBpbmcnO1xuICAgIH1cblxuICAgIHByaXZhdGUgZGVib3VuY2VEZWZhdWx0UXVlcnkoZGF0YSkge1xuICAgICAgICB0aGlzLl9kZWZhdWx0UXVlcnlJbnZva2VkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5nZXREYXRhU291cmNlKGRhdGEsIHRydWUpLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICBpZiAocmVzcG9uc2UubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5xdWVyeU1vZGVsID0gcmVzcG9uc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5fbGFzdFF1ZXJ5ID0gdGhpcy5xdWVyeSA9IHRoaXMucXVlcnlNb2RlbFswXS5sYWJlbCB8fCAnJztcbiAgICAgICAgICAgICAgICB0aGlzLl9tb2RlbEJ5VmFsdWUgPSB0aGlzLnF1ZXJ5TW9kZWxbMF0udmFsdWU7XG4gICAgICAgICAgICAgICAgdGhpcy5fbW9kZWxCeUtleSA9IHRoaXMucXVlcnlNb2RlbFswXS5rZXk7XG4gICAgICAgICAgICAgICAgdGhpcy5zaG93Q2xvc2VidG4gPSAodGhpcy5xdWVyeSAhPT0gJycpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9tb2RlbEJ5VmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgdGhpcy5xdWVyeU1vZGVsID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIHRoaXMucXVlcnkgPSAnJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLmNsZWFyRGF0YSkge1xuICAgICAgICAgICAgICAgIGlmIChnZXQoKHRoaXMudHlwZWFoZWFkIGFzIGFueSksICdfdHlwZWFoZWFkLmlzU2hvd24nKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnR5cGVhaGVhZC5oaWRlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZUJ5RGF0YXZhbHVlKGRhdGEpIHtcbiAgICAgICAgdGhpcy51cGRhdGVCeURhdGFzZXQoZGF0YSk7XG4gICAgICAgIHRoaXMudXBkYXRlQnlEYXRhU291cmNlKGRhdGEpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlQnlEYXRhU291cmNlKGRhdGEpIHtcbiAgICAgICAgLy8gdmFsdWUgaXMgcHJlc2VudCBidXQgdGhlIGNvcnJlc3BvbmRpbmcga2V5IGlzIG5vdCBmb3VuZCB0aGVuIGZldGNoIG5leHQgc2V0XG4gICAgICAgIC8vIG1vZGVsQnlLZXkgd2lsbCBiZSBzZXQgb25seSB3aGVuIGRhdGF2YWx1ZSBpcyBhdmFpbGFibGUgaW5zaWRlIHRoZSBsb2NhbERhdGEgb3RoZXJ3aXNlIG1ha2UgYSBOL3cgY2FsbC5cbiAgICAgICAgaWYgKGlzRGVmaW5lZChkYXRhKSAmJiAhaXNPYmplY3QoZGF0YSkgJiYgdGhpcy5kYXRhc291cmNlICYmICFpc0RlZmluZWQodGhpcy5fbW9kZWxCeUtleSkgJiYgdGhpcy5kYXRhZmllbGQgIT09IEFMTEZJRUxEUykge1xuICAgICAgICAgICAgLy8gQXZvaWQgbWFraW5nIGRlZmF1bHQgcXVlcnkgaWYgcXVlcnlNb2RlbCBhbHJlYWR5IGV4aXN0cy5cbiAgICAgICAgICAgIGlmIChpc0RlZmluZWQodGhpcy5xdWVyeU1vZGVsKSAmJiAhaXNFbXB0eSh0aGlzLnF1ZXJ5TW9kZWwpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVEYXRhdmFsdWVGcm9tUXVlcnlNb2RlbCgpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gTWFrZSBkZWZhdWx0IHF1ZXJ5IGNhbGwgb25seSB3aGVuIGRhdGFzb3VyY2Ugc3VwcG9ydHMgQ1JVRCAobGl2ZSB2YXJpYWJsZSkuXG4gICAgICAgICAgICBpZiAoIXRoaXMuX2RlZmF1bHRRdWVyeUludm9rZWQgJiYgdGhpcy5kYXRhc291cmNlLmV4ZWN1dGUoRGF0YVNvdXJjZS5PcGVyYXRpb24uU1VQUE9SVFNfQ1JVRCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRlYm91bmNlRGVmYXVsdFF1ZXJ5KGRhdGEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gdXBkYXRlcyB0aGUgbW9kZWwgdmFsdWUgdXNpbmcgcXVlcnlNb2RlbFxuICAgIHByaXZhdGUgdXBkYXRlRGF0YXZhbHVlRnJvbVF1ZXJ5TW9kZWwoKSB7XG4gICAgICAgIGlmIChpc0RlZmluZWQodGhpcy5xdWVyeU1vZGVsKSkge1xuICAgICAgICAgICAgdGhpcy5fbW9kZWxCeVZhbHVlID0gaXNBcnJheSh0aGlzLnF1ZXJ5TW9kZWwpID8gKHRoaXMucXVlcnlNb2RlbFswXSBhcyBEYXRhU2V0SXRlbSkudmFsdWUgOiB0aGlzLnF1ZXJ5TW9kZWw7XG4gICAgICAgICAgICB0aGlzLl9tb2RlbEJ5S2V5ID0gaXNBcnJheSh0aGlzLnF1ZXJ5TW9kZWwpID8gKHRoaXMucXVlcnlNb2RlbFswXSBhcyBEYXRhU2V0SXRlbSkua2V5IDogdGhpcy5xdWVyeU1vZGVsO1xuICAgICAgICAgICAgdGhpcy50b0JlUHJvY2Vzc2VkRGF0YXZhbHVlID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVCeURhdGFzZXQoZGF0YTogYW55KSB7XG4gICAgICAgIC8vIGRlZmF1bHQgcXVlcnkgaXMgYWxyZWFkeSBpbnZva2VkIHRoZW4gZG8gbm90IG1ha2Ugb3RoZXIgZGVmYXVsdCBxdWVyeSBjYWxsLlxuICAgICAgICAvLyBGb3IgbG9jYWwgc2VhcmNoIGkuZS4gc2VhcmNoa2V5IGlzIHVuZGVmaW5lZCwgZG8gbm90IHJldHVybiwgdmVyaWZ5IHRoZSBkYXRhdmFsdWUgYWdhaW5zdCB0aGUgZGF0YXNldEl0ZW1zIC5cbiAgICAgICAgaWYgKHRoaXMuX2RlZmF1bHRRdWVyeUludm9rZWQgJiYgdGhpcy5zZWFyY2hrZXkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzZWxlY3RlZEl0ZW0gPSBmaW5kKHRoaXMuZGF0YXNldEl0ZW1zLCAoaXRlbSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIChpc09iamVjdChpdGVtLnZhbHVlKSA/IGlzRXF1YWwoaXRlbS52YWx1ZSwgZGF0YSkgOiAodG9TdHJpbmcoaXRlbS52YWx1ZSkpLnRvTG93ZXJDYXNlKCkgPT09ICh0b1N0cmluZyhkYXRhKSkudG9Mb3dlckNhc2UoKSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIHNldCB0aGUgZGVmYXVsdCBvbmx5IHdoZW4gaXQgaXMgYXZhaWxhYmxlIGluIGRhdGFzZXQuXG4gICAgICAgIGlmIChzZWxlY3RlZEl0ZW0pIHtcbiAgICAgICAgICAgIHRoaXMucXVlcnlNb2RlbCA9IFtzZWxlY3RlZEl0ZW1dO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZGF0YWZpZWxkID09PSBBTExGSUVMRFMgJiYgaXNPYmplY3QoZGF0YSkpIHtcbiAgICAgICAgICAgIHRoaXMucXVlcnlNb2RlbCA9IHRoaXMuZ2V0VHJhbnNmb3JtZWREYXRhKGV4dHJhY3REYXRhQXNBcnJheShkYXRhKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyByZXNldHRpbmcgdGhlIHF1ZXJ5TW9kZWwgb25seSB3aGVuIHByZXZEYXRhdmFsdWUgaXMgZXF1YWwgdG8gZGF0YVxuICAgICAgICAgICAgaWYgKCh0aGlzIGFzIGFueSkucHJldkRhdGF2YWx1ZSAhPT0gZGF0YSkge1xuICAgICAgICAgICAgICAgIHRoaXMucXVlcnlNb2RlbCA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB0aGlzLnF1ZXJ5ID0gJyc7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMudXBkYXRlRGF0YXZhbHVlRnJvbVF1ZXJ5TW9kZWwoKTtcblxuICAgICAgICAvLyBTaG93IHRoZSBsYWJlbCB2YWx1ZSBvbiBpbnB1dC5cbiAgICAgICAgdGhpcy5fbGFzdFF1ZXJ5ID0gdGhpcy5xdWVyeSA9IGlzRGVmaW5lZCh0aGlzLnF1ZXJ5TW9kZWwpICYmIHRoaXMucXVlcnlNb2RlbC5sZW5ndGggPyBnZXQodGhpcy5xdWVyeU1vZGVsWzBdLCAnbGFiZWwnKSA6ICcnO1xuICAgICAgICB0aGlzLnNob3dDbG9zZWJ0biA9ICh0aGlzLnF1ZXJ5ICE9PSAnJyk7XG4gICAgfVxuXG4gICAgLy8gSWYgd2UgaGF2ZSBsYXN0IHNlYXJjaCByZXN1bHRzIHRoZW4gb3BlbiBkcm9wZG93biBvbiBmb2N1c1xuICAgIHByaXZhdGUgaGFuZGxlRm9jdXMoJGV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLnR5cGUgPT09ICdzZWFyY2gnICYmIHRoaXMucXVlcnkgPT09IHRoaXMuX2xhc3RRdWVyeSAmJiB0aGlzLl9sYXN0UmVzdWx0KSB7XG4gICAgICAgICAgICAodGhpcy50eXBlYWhlYWQgYXMgYW55KS5rZXlVcEV2ZW50RW1pdHRlci5lbWl0KHRoaXMucXVlcnkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG5vdGlmeVN1YnNjcmliZXIoKSB7XG4gICAgICAgIGNvbnN0IHBhcmVudEVsID0gJCh0aGlzLm5hdGl2ZUVsZW1lbnQpLmNsb3Nlc3QoJy5hcHAtY29tcG9zaXRlLXdpZGdldC5jYXB0aW9uLWZsb2F0aW5nJyk7XG4gICAgICAgIGlmIChwYXJlbnRFbC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLmFwcC5ub3RpZnkoJ2NhcHRpb25Qb3NpdGlvbkFuaW1hdGUnLCB7ZGlzcGxheVZhbDogdHJ1ZSwgbmF0aXZlRWw6IHBhcmVudEVsfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBUaGlzIG1ldGhvZCByZXR1cm5zIGEgcHJvbWlzZSB0aGF0IHByb3ZpZGVzIHRoZSBmaWx0ZXJlZCBkYXRhIGZyb20gdGhlIGRhdGFzb3VyY2UuXG4gICAgcHVibGljIGdldERhdGFTb3VyY2UocXVlcnk6IEFycmF5PHN0cmluZz4gfCBzdHJpbmcsIHNlYXJjaE9uRGF0YUZpZWxkPzogYm9vbGVhbiwgbmV4dEl0ZW1JbmRleD86IG51bWJlcik6IFByb21pc2U8RGF0YVNldEl0ZW1bXT4ge1xuICAgICAgICAvLyBGb3IgZGVmYXVsdCBxdWVyeSwgc2VhcmNoT25EYXRhRmllbGQgaXMgc2V0IHRvIHRydWUsIHRoZW4gZG8gbm90IG1ha2UgYSBuL3cgY2FsbCB3aGVuIGRhdGFmaWVsZCBpcyBBTExGSUVMRFNcbiAgICAgICAgaWYgKHNlYXJjaE9uRGF0YUZpZWxkICYmIHRoaXMuZGF0YWZpZWxkID09PSBBTExGSUVMRFMpIHtcbiAgICAgICAgICAgIHRoaXMuX2xvYWRpbmdJdGVtcyA9IGZhbHNlO1xuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShbXSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBGb3IgZGVmYXVsdCBkYXRhdmFsdWUsIHNlYXJjaCBrZXkgYXMgdG8gYmUgb24gZGF0YWZpZWxkIHRvIGdldCB0aGUgZGVmYXVsdCBkYXRhIGZyb20gdGhlIGZpbHRlciBjYWxsLlxuICAgICAgICBjb25zdCBkYXRhQ29uZmlnOiBJRGF0YVByb3ZpZGVyQ29uZmlnID0ge1xuICAgICAgICAgICAgZGF0YXNldDogdGhpcy5kYXRhc2V0ID8gY29udmVydERhdGFUb09iamVjdCh0aGlzLmRhdGFzZXQpIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgYmluZGRhdGFzZXQ6IHRoaXMuYmluZGRhdGFzZXQsXG4gICAgICAgICAgICBkYXRhc291cmNlOiB0aGlzLmRhdGFzb3VyY2UsXG4gICAgICAgICAgICBkYXRhZmllbGQ6IHRoaXMuZGF0YWZpZWxkLFxuICAgICAgICAgICAgaGFzRGF0YTogdGhpcy5kYXRhc2V0ICYmIHRoaXMuZGF0YXNldC5sZW5ndGgsXG4gICAgICAgICAgICBxdWVyeTogcXVlcnksXG4gICAgICAgICAgICBpc0xvY2FsRmlsdGVyOiAhdGhpcy5zZWFyY2hrZXksXG4gICAgICAgICAgICBzZWFyY2hLZXk6IHNlYXJjaE9uRGF0YUZpZWxkID8gdGhpcy5kYXRhZmllbGQgOiB0aGlzLnNlYXJjaGtleSxcbiAgICAgICAgICAgIC8vIGRlZmF1bHQgc2VhcmNoIGNhbGwgbWF0Y2ggbW9kZSBzaG91bGQgYmUgc3RhcnRpZ25vcmVjYXNlXG4gICAgICAgICAgICBtYXRjaE1vZGU6IHNlYXJjaE9uRGF0YUZpZWxkID8gJ3N0YXJ0aWdub3JlY2FzZScgOiB0aGlzLm1hdGNobW9kZSxcbiAgICAgICAgICAgIGNhc2VzZW5zaXRpdmU6IHRoaXMuY2FzZXNlbnNpdGl2ZSxcbiAgICAgICAgICAgIGlzZm9ybWZpZWxkOiB0aGlzLmlzZm9ybWZpZWxkLFxuICAgICAgICAgICAgb3JkZXJieTogdGhpcy5vcmRlcmJ5LFxuICAgICAgICAgICAgbGltaXQ6IHRoaXMubGltaXQsXG4gICAgICAgICAgICBwYWdlc2l6ZTogdGhpcy5wYWdlc2l6ZSxcbiAgICAgICAgICAgIHBhZ2U6IHRoaXMucGFnZSxcbiAgICAgICAgICAgIG9uQmVmb3Jlc2VydmljZWNhbGw6IHRoaXMuaW52b2tlT25CZWZvcmVTZXJ2aWNlQ2FsbC5iaW5kKHRoaXMpXG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKHRoaXMuZGF0YW9wdGlvbnMpIHtcbiAgICAgICAgICAgIGRhdGFDb25maWcuZGF0YW9wdGlvbnMgPSB0aGlzLmRhdGFvcHRpb25zO1xuICAgICAgICAgICAgZGF0YUNvbmZpZy52aWV3UGFyZW50ID0gdGhpcy52aWV3UGFyZW50O1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fbG9hZGluZ0l0ZW1zID0gdHJ1ZTtcblxuICAgICAgICByZXR1cm4gdGhpcy5kYXRhUHJvdmlkZXIuZmlsdGVyKGRhdGFDb25maWcpXG4gICAgICAgICAgICAudGhlbigocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIC8vIHJlc3BvbnNlIGZyb20gZGF0YVByb3ZpZGVyIHJldHVybnMgYWx3YXlzIGRhdGEgb2JqZWN0LlxuICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gcmVzcG9uc2UuZGF0YSB8fCByZXNwb25zZTtcbiAgICAgICAgICAgICAgICAvLyBmb3Igc2VydmljZSB2YXJpYWJsZSwgdXBkYXRpbmcgdGhlIGRhdGFzZXQgb25seSBpZiBpdCBpcyBub3QgZGVmaW5lZCBvciBlbXB0eVxuICAgICAgICAgICAgICAgIGlmICgoIWlzRGVmaW5lZCh0aGlzLmRhdGFzZXQpIHx8ICF0aGlzLmRhdGFzZXQubGVuZ3RoKSAmJiB0aGlzLmRhdGFQcm92aWRlci51cGRhdGVEYXRhc2V0KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YXNldCA9IHJlc3BvbnNlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmRhdGFQcm92aWRlci5oYXNNb3JlRGF0YSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1hdHRlZERhdGFzZXQgPSB0aGlzLmZvcm1hdHRlZERhdGFzZXQuY29uY2F0KHJlc3BvbnNlKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1hdHRlZERhdGFzZXQgPSByZXNwb25zZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyBleHBsaWNpdGx5IHNldHRpbmcgdGhlIG9wdGlvbnNsaW1pdCBhcyB0aGUgbWF0Y2hlcyBtb3JlIHRoYW4gMjAgd2lsbCBiZSBpZ25vcmVkIGlmIG9wdGlvbnNsaW1pdCBpcyBub3Qgc3BlY2lmaWVkLlxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmZvcm1hdHRlZERhdGFzZXQubGVuZ3RoID4gMjAgJiYgIWlzRGVmaW5lZCh0aGlzLmxpbWl0KSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnR5cGVhaGVhZC50eXBlYWhlYWRPcHRpb25zTGltaXQgPSB0aGlzLmZvcm1hdHRlZERhdGFzZXQubGVuZ3RoO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8vIEluIG1vYmlsZSwgdHJpZ2dlciB0aGUgc2VhcmNoIGJ5IGRlZmF1bHQgdW50aWwgdGhlIHJlc3VsdHMgaGF2ZSBoZWlnaHQgdXB0byBwYWdlIGhlaWdodC4gT3RoZXIgcmVzdWx0cyBjYW4gYmUgZmV0Y2hlZCBieSBzY3JvbGxpbmdcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2lzT3BlbiAmJiB0aGlzLmlzTW9iaWxlQXV0b0NvbXBsZXRlKCkgJiYgIWlzVW5kZWZpbmVkKHRoaXMuZGF0YVByb3ZpZGVyLmlzTGFzdFBhZ2UpICYmICF0aGlzLmRhdGFQcm92aWRlci5pc0xhc3RQYWdlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudHJpZ2dlclNlYXJjaCgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IHRyYW5zZm9ybWVkRGF0YSA9IHRoaXMuZ2V0VHJhbnNmb3JtZWREYXRhKHRoaXMuZm9ybWF0dGVkRGF0YXNldCwgbmV4dEl0ZW1JbmRleCk7XG5cbiAgICAgICAgICAgICAgICAvLyByZXN1bHQgY29udGFpbnMgdGhlIGRhdGFmaWVsZCB2YWx1ZXMuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVzdWx0ID0gbWFwKHRyYW5zZm9ybWVkRGF0YSwgJ3ZhbHVlJyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRyYW5zZm9ybWVkRGF0YTtcbiAgICAgICAgICAgIH0sIChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX2xvYWRpbmdJdGVtcyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICkudGhlbihyZXN1bHQgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzU2Nyb2xsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgKGRlYm91bmNlKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0TGFzdEFjdGl2ZU1hdGNoQXNTZWxlY3RlZCgpO1xuICAgICAgICAgICAgICAgICAgICB9LCAzMCkpKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNTY3JvbGxlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBXaGVuIG5vIHJlc3VsdCBpcyBmb3VuZCwgc2V0IHRoZSBkYXRhdmFsdWUgdG8gdW5kZWZpbmVkLlxuICAgICAgICAgICAgICAgIGlmICghcmVzdWx0Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9tb2RlbEJ5VmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucXVlcnlNb2RlbCA9IChxdWVyeSBhcyBzdHJpbmcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBvbiBmb2N1c291dCBpLmUuIG9uIG90aGVyIHdpZGdldCBmb2N1cywgaWYgbi93IGlzIHBlbmRpbmcgbG9hZGluZyBpY29uIGlzIHNob3duLCB3aGVuIGRhdGEgaXMgYXZhaWxhYmxlIHRoZW4gZHJvcGRvd24gaXMgc2hvd24gYWdhaW4uXG4gICAgICAgICAgICAgICAgLy8gb24gdW5zdWJzY3JpYmluZyBkbyBub3Qgc2hvdyB0aGUgcmVzdWx0cy5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fdW5zdWJzY3JpYmVEdikge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBbXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5fbG9hZGluZ0l0ZW1zID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5fbGFzdFJlc3VsdCA9IHJlc3VsdDtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gdGhpcyBtZXRob2QgcmV0dXJucyB0aGUgcGFyZW50IGNvbnRleHQgaS5lLiBQYWdlIGNvbnRleHQgYW5kIG5vdCBwYXJlbnQgY29tcG9uZW50J3MgY29udGV4dC5cbiAgICBwcml2YXRlIGdldENvbnRleHQoY29udGV4dCkge1xuICAgICAgICBpZiAoY29udGV4dCAmJiBnZXQoY29udGV4dCwgJ3dpZGdldCcpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRDb250ZXh0KGNvbnRleHQudmlld1BhcmVudCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNvbnRleHQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFRyYW5zZm9ybWVkRGF0YShkYXRhOiBhbnksIGl0ZW1JbmRleD86IG51bWJlciwgaXNjdXN0b20/OiBib29sZWFuKTogRGF0YVNldEl0ZW1bXSB7XG4gICAgICAgIGlmIChpc0RlZmluZWQoaXRlbUluZGV4KSkge1xuICAgICAgICAgICAgaXRlbUluZGV4Kys7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB0cmFuc2Zvcm1lZERhdGEgPSB0cmFuc2Zvcm1Gb3JtRGF0YShcbiAgICAgICAgICAgIHRoaXMuZ2V0Q29udGV4dCh0aGlzLnZpZXdQYXJlbnQpLFxuICAgICAgICAgICAgZGF0YSxcbiAgICAgICAgICAgIHRoaXMuZGF0YWZpZWxkLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGRpc3BsYXlGaWVsZDogdGhpcy5kaXNwbGF5bGFiZWwgfHwgdGhpcy5kaXNwbGF5ZmllbGQsXG4gICAgICAgICAgICAgICAgZGlzcGxheUV4cHI6IGlzY3VzdG9tID8gJycgOiB0aGlzLmRpc3BsYXlleHByZXNzaW9uLFxuICAgICAgICAgICAgICAgIGJpbmREaXNwbGF5RXhwcjogaXNjdXN0b20gPyAnJyA6IHRoaXMuYmluZGRpc3BsYXlsYWJlbCxcbiAgICAgICAgICAgICAgICBiaW5kRGlzcGxheUltZ1NyYzogdGhpcy5iaW5kZGlzcGxheWltYWdlc3JjLFxuICAgICAgICAgICAgICAgIGRpc3BsYXlJbWdTcmM6IHRoaXMuZGlzcGxheWltYWdlc3JjXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaXRlbUluZGV4LFxuICAgICAgICAgICAgdGhpc1xuICAgICAgICApO1xuICAgICAgICByZXR1cm4gZ2V0VW5pcU9ianNCeURhdGFGaWVsZCh0cmFuc2Zvcm1lZERhdGEsIHRoaXMuZGF0YWZpZWxkLCB0aGlzLmRpc3BsYXlmaWVsZCB8fCB0aGlzLmRpc3BsYXlsYWJlbCwgdG9Cb29sZWFuKHRoaXMuYWxsb3dlbXB0eSkpO1xuICAgIH1cblxuICAgIC8vIE9wdGlvbnNMaXN0VGVtcGxhdGUgbGlzdGVucyB0byB0aGUgc2Nyb2xsIGV2ZW50IGFuZCB0cmlnZ2VycyB0aGlzIGZ1bmN0aW9uLlxuICAgIHB1YmxpYyBvblNjcm9sbCgkc2Nyb2xsRWw6IEVsZW1lbnQsIGV2dDogRXZlbnQpIHtcbiAgICAgICAgY29uc3QgdG90YWxIZWlnaHQgPSAkc2Nyb2xsRWwuc2Nyb2xsSGVpZ2h0LFxuICAgICAgICAgICAgY2xpZW50SGVpZ2h0ID0gJHNjcm9sbEVsLmNsaWVudEhlaWdodDtcblxuICAgICAgICAvLyBJZiBzY3JvbGwgaXMgYXQgdGhlIGJvdHRvbSBhbmQgbm8gcmVxdWVzdCBpcyBpbiBwcm9ncmVzcyBhbmQgbmV4dCBwYWdlIHJlY29yZHMgYXJlIGF2YWlsYWJsZSwgZmV0Y2ggbmV4dCBwYWdlIGl0ZW1zLlxuICAgICAgICBpZiAoIXRoaXMuX2xvYWRpbmdJdGVtcyAmJiAhdGhpcy5kYXRhUHJvdmlkZXIuaXNMYXN0UGFnZSAmJiAoJHNjcm9sbEVsLnNjcm9sbFRvcCArIGNsaWVudEhlaWdodCA+PSB0b3RhbEhlaWdodCkpIHtcbiAgICAgICAgICAgIHRoaXMubG9hZE1vcmVEYXRhKHRydWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25Jbml0KCkge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuXG4gICAgICAgIGlmICghaXNEZWZpbmVkKHRoaXMubWluY2hhcnMpKSB7XG4gICAgICAgICAgICAvLyBmb3IgYXV0b2NvbXBsZXRlIHNldCB0aGUgbWluY2hhcnMgdG8gMFxuICAgICAgICAgICAgaWYgKHRoaXMudHlwZSA9PT0gJ2F1dG9jb21wbGV0ZScpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm1pbmNoYXJzID0gMDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5taW5jaGFycyA9IDE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmxpc3RlblF1ZXJ5ID0gdGhpcy5pc1VwZGF0ZU9uS2V5UHJlc3MoKTtcblxuICAgICAgICAvLyBieSBkZWZhdWx0IGZvciBhdXRvY29tcGxldGUgZG8gbm90IHNob3cgdGhlIHNlYXJjaCBpY29uXG4gICAgICAgIC8vIGJ5IGRlZmF1bHQgc2hvdyB0aGUgc2VhcmNoaWNvbiBmb3IgdHlwZSA9IHNlYXJjaFxuICAgICAgICB0aGlzLnNob3dzZWFyY2hpY29uID0gaXNEZWZpbmVkKHRoaXMuc2hvd3NlYXJjaGljb24pID8gdGhpcy5zaG93c2VhcmNoaWNvbiA6ICh0aGlzLnR5cGUgPT09ICdzZWFyY2gnKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICBzdXBlci5uZ0FmdGVyVmlld0luaXQoKTtcblxuICAgICAgICBzdHlsZXIodGhpcy5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50LCB0aGlzKTtcbiAgICAgICAgdGhpcy5jb250YWluZXJUYXJnZXQgPSBnZXRDb250YWluZXJUYXJnZXRDbGFzcyh0aGlzLm5hdGl2ZUVsZW1lbnQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ0FmdGVyVmlld0NoZWNrZWQoKSB7XG4gICAgICAgIGNvbnN0IHNlYXJjaElucHV0RWwgPSAkKCcuYXBwLXNlYXJjaC1pbnB1dCcpO1xuICAgICAgICBpZiAoc2VhcmNoSW5wdXRFbCkge1xuICAgICAgICAgICAgc2VhcmNoSW5wdXRFbC5yZW1vdmVBdHRyKCdhcmlhLWV4cGFuZGVkJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGV2ZW50RGF0YSgkZXZlbnQsIGl0ZW0pIHtcbiAgICAgICAgaWYgKCRldmVudCkge1xuICAgICAgICAgICAgJGV2ZW50WydkYXRhJ10gPSB7XG4gICAgICAgICAgICAgICAgaXRlbSAgOiBpdGVtLmRhdGFPYmplY3QsXG4gICAgICAgICAgICAgICAgbW9kZWwgOiBpdGVtLnZhbHVlLFxuICAgICAgICAgICAgICAgIGxhYmVsIDogaXRlbS5sYWJlbCxcbiAgICAgICAgICAgICAgICBxdWVyeSA6IHRoaXMucXVlcnlcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gJGV2ZW50O1xuICAgIH1cblxuICAgIC8vIHRyaWdnZXJlZCBvbiBzZWxlY3Qgb24gb3B0aW9uIGZyb20gdGhlIGxpc3QuIFNldCB0aGUgcXVlcnlNb2RlbCwgcXVlcnkgYW5kIG1vZGVsQnlLZXkgZnJvbSB0aGUgbWF0Y2hlZCBpdGVtLlxuICAgIHB1YmxpYyB0eXBlYWhlYWRPblNlbGVjdChtYXRjaDogVHlwZWFoZWFkTWF0Y2gsICRldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaXRlbSA9IG1hdGNoLml0ZW07XG4gICAgICAgIHRoaXMucXVlcnlNb2RlbCA9IGl0ZW07XG4gICAgICAgIGl0ZW0uc2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLnF1ZXJ5ID0gaXRlbS5sYWJlbDtcbiAgICAgICAgdGhpcy5zaG93Q2xvc2VidG4gPSAodGhpcy5xdWVyeSAhPT0gJycpO1xuICAgICAgICAkZXZlbnQgPSAkZXZlbnQgfHwgdGhpcy4kdHlwZWFoZWFkRXZlbnQ7XG5cbiAgICAgICAgLy8gQXMgaXRlbS5rZXkgY2FuIHZhcnkgZnJvbSBrZXkgaW4gdGhlIGRhdGFzZXRJdGVtc1xuICAgICAgICB0aGlzLl9tb2RlbEJ5S2V5ID0gaXRlbS5rZXk7XG4gICAgICAgIHRoaXMuX21vZGVsQnlWYWx1ZSA9IGl0ZW0udmFsdWU7XG5cbiAgICAgICAgJGV2ZW50ID0gdGhpcy5ldmVudERhdGEoJGV2ZW50LCBpdGVtKTtcblxuICAgICAgICB0aGlzLmludm9rZU9uVG91Y2hlZCgpO1xuICAgICAgICB0aGlzLmludm9rZU9uQ2hhbmdlKHRoaXMuZGF0YXZhbHVlLCAkZXZlbnQgfHwge30pO1xuICAgICAgICAvLyB1cGRhdGluZyB0aGUgdmFyaWFibGUgYm91bmQgdG8gZGVmYXVsdCB2YWx1ZSBhcyBpbnZva2VPbkNoYW5nZSBpcyBub3QgdXBkYXRpbmcgdGhlIHZhcmlhYmxlLlxuICAgICAgICBpZiAodGhpcy5kYXRhdmFsdWUgIT09ICh0aGlzIGFzIGFueSkucHJldkRhdGF2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVCb3VuZFZhcmlhYmxlKHRoaXMuZGF0YXZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy4kZWxlbWVudC5oYXNDbGFzcygnZnVsbC1zY3JlZW4nKSkge1xuICAgICAgICAgICAgdGhpcy5jbG9zZVNlYXJjaCgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaW52b2tlRXZlbnRDYWxsYmFjaygnc2VsZWN0JywgeyAkZXZlbnQsIHNlbGVjdGVkVmFsdWU6IHRoaXMuZGF0YXZhbHVlIH0pO1xuICAgICAgICB0aGlzLmludm9rZUV2ZW50Q2FsbGJhY2soJ3N1Ym1pdCcsIHsgJGV2ZW50IH0pO1xuXG4gICAgICAgIHRoaXMudXBkYXRlUHJldkRhdGF2YWx1ZSh0aGlzLmRhdGF2YWx1ZSk7XG4gICAgfVxuXG4gICAgb25Qcm9wZXJ0eUNoYW5nZShrZXk6IHN0cmluZywgbnY6IGFueSwgb3Y6IGFueSkge1xuICAgICAgICBpZiAoa2V5ID09PSAndGFiaW5kZXgnKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBCYWNrd2FyZCBjb21wYXRhYmlsaXR5IGZyb20gMTAuMy4xIHRvIDEwLjMuMlxuICAgICAgICAvLyAxMC4zLjEgd2UgaGFkIGRpc3BsYXlsYWJlbCBhcyBtb2RhbCB2YWx1ZVxuICAgICAgICAvLyBGcm9tIDEwLjMuMiBvbndvcmRzIHdlIHdpbGwgYmUgaGF2aW5nIGRpc3BsYXlleHByZXNpb24gYXMgbW9kYWwgdmFsdWVcbiAgICAgICAgaWYgKHRoaXMudHlwZSA9PT0gJ2F1dG9jb21wbGV0ZScgJiYga2V5ID09PSAnZGlzcGxheWxhYmVsJyAmJiB0aGlzLmRpc3BsYXlsYWJlbCAmJiAoIXRoaXMuZGlzcGxheWV4cHJlc3Npb24gfHwgKHRoaXMuZGlzcGxheWV4cHJlc3Npb24gJiYgIXRoaXMuZGF0YXNvdXJjZSkpKSAge1xuICAgICAgICAgICAgdGhpcy5kaXNwbGF5ZXhwcmVzc2lvbiA9IHRoaXMuZGlzcGxheWxhYmVsO1xuICAgICAgICAgICAgdGhpcy5kaXNwbGF5bGFiZWwgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cblxuICAgICAgICAvLyB3aGVuIGRhdGFvcHRpb25zIGFyZSBwcm92aWRlZCBhbmQgdGhlcmUgaXMgbm8gZGlzcGxheWxhYmVsIGdpdmVuIHRoZW4gZGlzcGxheWxhYmVsIGlzIHNldCBhcyB0aGUgcmVsYXRlZGZpZWxkXG4gICAgICAgIGlmIChrZXkgPT09ICdkaXNwbGF5bGFiZWwnICYmIHRoaXMuZGF0YW9wdGlvbnMgJiYgdGhpcy5iaW5kZGlzcGxheWxhYmVsID09PSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLnF1ZXJ5ID0gZ2V0KHRoaXMuX21vZGVsQnlWYWx1ZSwgbnYpIHx8IHRoaXMuX21vZGVsQnlWYWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHdoZW4gc2VhcmNoIGlzIGRpc2FibGVkLCBkbyBub3QgbG9hZCBhbnkgbW9yZSBkYXRhIG9yIGp1c3QgY2xlYXIgdGhlIGRhdGEgdGhhdCBpcyBhbHJlYWR5IGluIHByb2Nlc3Mgb3IgbG9hZGVkLlxuICAgICAgICBpZiAoa2V5ID09PSAnZGlzYWJsZWQnKSB7XG4gICAgICAgICAgICBpZiAobnYgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jbGVhckRhdGEgPSBmYWxzZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jbGVhckRhdGEgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGlmIChnZXQoKHRoaXMudHlwZWFoZWFkIGFzIGFueSksICdfdHlwZWFoZWFkLmlzU2hvd24nKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnR5cGVhaGVhZC5oaWRlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgc3VwZXIub25Qcm9wZXJ0eUNoYW5nZShrZXksIG52LCBvdik7XG4gICAgfVxufVxuIiwiPG5nLXRlbXBsYXRlICNjdXN0b21JdGVtVGVtcGxhdGUgbGV0LW1vZGVsPVwiaXRlbVwiIGxldC1pbmRleD1cImluZGV4XCIgbGV0LXF1ZXJ5PVwicXVlcnlcIiBsZXQtbWF0Y2g9XCJtYXRjaFwiPlxuICAgIDwhLS0gRGVmYXVsdCBpdGVtIHRlbXBsYXRlIC0tPlxuICAgIDxhICpuZ0lmPVwiIWNvbnRlbnRcIj5cbiAgICAgICAgPGltZyAqbmdJZj1cIm1vZGVsLmltZ1NyY1wiIFtzcmNdPVwibW9kZWwuaW1nU3JjXCIgYWx0PVwiU2VhcmNoXCIgW3N0eWxlLndpZHRoXT1cImltYWdld2lkdGhcIj5cbiAgICAgICAgPHNwYW4gW3RpdGxlXT1cIm1vZGVsLmxhYmVsXCIgW2lubmVySHRtbF09XCJoaWdobGlnaHQobWF0Y2gsIHF1ZXJ5KSB8fCBtb2RlbC5sYWJlbFwiPjwvc3Bhbj5cbiAgICA8L2E+XG4gICAgPCEtLSBDdXN0b20gcGFydGlhbCB0ZW1wbGF0ZSAtLT5cbiAgICA8YSAqbmdJZj1cImNvbnRlbnRcIiBbbmdDbGFzc109XCJ7Y3VzdG9tVGVtcGxhdGU6IGNvbnRlbnR9XCIgcGFydGlhbENvbnRhaW5lciBbd21JdGVtVGVtcGxhdGVdPVwiY29udGVudFwiIFt1c2VyQ29tcG9uZW50UGFyYW1zXT1cIm1hdGNoLml0ZW1cIj5cbiAgICAgICAgPGRpdiBwYXJ0aWFsLWNvbnRhaW5lci10YXJnZXQ+PC9kaXY+XG4gICAgPC9hPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNjdXN0b21MaXN0VGVtcGxhdGUgbGV0LW1hdGNoZXM9XCJtYXRjaGVzXCIgbGV0LWl0ZW1UZW1wbGF0ZT1cIml0ZW1UZW1wbGF0ZVwiIGxldC1xdWVyeT1cInF1ZXJ5XCI+XG4gICAgPHVsICN1bEVsZW1lbnQgY2xhc3M9XCJhcHAtc2VhcmNoIGRyb3Bkb3duLW1lbnVcIiBzY3JvbGxhYmxlPlxuICAgICAgICA8bGkgI2xpRWxlbWVudHMgKm5nRm9yPVwibGV0IG1hdGNoIG9mIG1hdGNoZXM7IGxldCBpID0gaW5kZXg7XCIgW25nQ2xhc3NdPVwie2FjdGl2ZTogdHlwZWFoZWFkQ29udGFpbmVyICYmIHR5cGVhaGVhZENvbnRhaW5lci5pc0FjdGl2ZShtYXRjaCksICdsaXN0LWdyb3VwLWhlYWRlcic6IG1hdGNoICYmIG1hdGNoLmlzSGVhZGVyKCl9XCJcbiAgICAgICAgICAgIChtb3VzZWVudGVyKT1cInR5cGVhaGVhZENvbnRhaW5lci5zZWxlY3RBY3RpdmUobWF0Y2gpO1wiXG4gICAgICAgICAgICAoY2xpY2spPVwibWF0Y2ggJiYgIW1hdGNoLmlzSGVhZGVyKCkgJiYgdHlwZWFoZWFkQ29udGFpbmVyLnNlbGVjdE1hdGNoKG1hdGNoLCAkZXZlbnQpOyAkdHlwZWFoZWFkRXZlbnQgPSAkZXZlbnQ7IG5vdGlmeVN1YnNjcmliZXIoKTtcIj5cbiAgICAgICAgICAgIDwhLS0gaXRlbVRlbXBsYXRlIGNvbWVzIGZyb20gdGhlIDxpbnB1dD4gLS0+XG4gICAgICAgICAgICA8aDQgKm5nSWY9XCJtYXRjaC5pc0hlYWRlcigpXCIgY2xhc3M9XCJncm91cC10aXRsZVwiPnt7bWF0Y2gudmFsdWV9fTwvaDQ+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIW1hdGNoLmlzSGVhZGVyKClcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJpdGVtVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie2l0ZW06IG1hdGNoLml0ZW0sIGluZGV4OiBpLCBtYXRjaDogbWF0Y2gsIHF1ZXJ5OiBxdWVyeX1cIj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2xpPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic3RhdHVzXCIgW2hpZGRlbl09XCJfbG9hZGluZ0l0ZW1zIHx8ICEoZGF0YWNvbXBsZXRlbXNnICYmIGRhdGFQcm92aWRlci5pc0xhc3RQYWdlKVwiPlxuICAgICAgICAgICAgPHNwYW4gW3RleHRDb250ZW50XT1cImRhdGFjb21wbGV0ZW1zZ1wiPjwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdGF0dXNcIiBbaGlkZGVuXT1cIiFfbG9hZGluZ0l0ZW1zXCI+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWNpcmNsZS1vLW5vdGNoIGZhLXNwaW5cIj48L2k+XG4gICAgICAgICAgICA8c3BhbiBbdGV4dENvbnRlbnRdPVwibG9hZGluZ2RhdGFtc2dcIj48L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvdWw+XG48L25nLXRlbXBsYXRlPlxuXG48IS0tVGhpcyB0ZW1wbGF0ZSBpcyBmb3Igc2VhcmNoIGluc2lkZSBtb2JpbGUgbmF2YmFyLi0tPlxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIm5hdnNlYXJjaGJhcjsgZWxzZSBzZWFyY2hUZW1wbGF0ZVwiPlxuICAgIDxpbnB1dCBbdGl0bGVdPVwicXVlcnkgfHwgJydcIiB0eXBlPVwidGV4dFwiIGNsYXNzPVwiYXBwLXRleHRib3ggZm9ybS1jb250cm9sIGxpc3Qtb2Ytb2JqcyBhcHAtc2VhcmNoLWlucHV0XCIgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyIHx8ICcnXCJcbiAgICAgICAgICAgZm9jdXMtdGFyZ2V0XG4gICAgICAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxuICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICBbYXR0ci5hY2Nlc3NrZXldPVwic2hvcnRjdXRrZXlcIlxuICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgICAgICBbKG5nTW9kZWwpXT1cInF1ZXJ5XCJcbiAgICAgICAgICAgW25nTW9kZWxPcHRpb25zXT1cIntzdGFuZGFsb25lOiB0cnVlfVwiXG4gICAgICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXG4gICAgICAgICAgIFt0eXBlYWhlYWRdPVwidHlwZWFoZWFkRGF0YVNvdXJjZVwiXG4gICAgICAgICAgIFt0eXBlYWhlYWRXYWl0TXNdPVwiZGVib3VuY2V0aW1lXCJcbiAgICAgICAgICAgW3R5cGVhaGVhZEl0ZW1UZW1wbGF0ZV09XCJjdXN0b21JdGVtVGVtcGxhdGVcIlxuICAgICAgICAgICBbb3B0aW9uc0xpc3RUZW1wbGF0ZV09XCJjdXN0b21MaXN0VGVtcGxhdGVcIlxuICAgICAgICAgICAoaW5wdXQpPVwib25JbnB1dENoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgKGtleWRvd24pPVwibGlzdGVuUXVlcnkgPSB0cnVlXCJcbiAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwiJHR5cGVhaGVhZEV2ZW50ID0gJGV2ZW50O2hhbmRsZUVudGVyRXZlbnQoJGV2ZW50KVwiXG4gICAgICAgICAgIChrZXlkb3duLmFycm93ZG93bik9XCJzZWxlY3ROZXh0KCRldmVudClcIlxuICAgICAgICAgICAoYmx1cik9XCJpbnZva2VPblRvdWNoZWQoJGV2ZW50KVwiXG4gICAgICAgICAgIChjbGljayk9XCJoYW5kbGVGb2N1cygkZXZlbnQpO1wiXG4gICAgICAgICAgIChmb2N1cyk9XCJfdW5zdWJzY3JpYmVEdiA9IGZhbHNlOyBsaXN0ZW5RdWVyeSA9IHRydWU7IGhhbmRsZUZvY3VzKCRldmVudCk7IGludm9rZU9uRm9jdXMoJGV2ZW50KTtcIlxuICAgICAgICAgICAoZm9jdXNvdXQpPVwib25Gb2N1c091dCgpXCJcbiAgICAgICAgICAgW3R5cGVhaGVhZE1pbkxlbmd0aF09XCJtaW5jaGFyc1wiXG4gICAgICAgICAgIFt0eXBlYWhlYWRPcHRpb25zTGltaXRdPVwibGltaXRcIlxuICAgICAgICAgICAodHlwZWFoZWFkTG9hZGluZyk9XCJfbG9hZGluZ0l0ZW1zXCJcbiAgICAgICAgICAgKHR5cGVhaGVhZE9uU2VsZWN0KT1cInR5cGVhaGVhZE9uU2VsZWN0KCRldmVudClcIlxuICAgICAgICAgICB0eXBlYWhlYWRPcHRpb25GaWVsZD1cImxhYmVsXCJcbiAgICAgICAgICAgW3R5cGVhaGVhZEdyb3VwRmllbGRdPVwiZ3JvdXBieSA/ICdncm91cGJ5JyA6IG51bGxcIlxuICAgICAgICAgICBbdHlwZWFoZWFkQXN5bmNdPVwidHJ1ZVwiXG4gICAgICAgICAgIFt0eXBlYWhlYWRTY3JvbGxhYmxlXT1cInRydWVcIlxuICAgICAgICAgICBbYWRhcHRpdmVQb3NpdGlvbl09XCJ0cnVlXCJcbiAgICAgICAgICAgW3R5cGVhaGVhZE9wdGlvbnNJblNjcm9sbGFibGVWaWV3XT1cIm9wdGlvbnNsaW1pdGluc2Nyb2xsYWJsZXZpZXdcIlxuICAgICAgICAgICBbZHJvcHVwXT1cImRyb3B1cFwiXG4gICAgICAgICAgIFt0YWJpbmRleF09XCJ0YWJpbmRleFwiXG4gICAgICAgICAgIFthdHRyLm5hbWVdPVwibmFtZVwiXG4gICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYWxhYmVsIHx8ICdTZWFyY2ggZmllbGQnXCIvPlxuICAgIDxpIGNsYXNzPVwiYnRuLWNsb3NlIHdpIHdpLWNhbmNlbFwiIFtoaWRkZW5dPVwiIXNob3dDbG9zZWJ0blwiIChjbGljayk9XCJjbGVhclNlYXJjaCgkZXZlbnQpO1wiPjwvaT5cbjwvbmctY29udGFpbmVyPlxuPCEtLVRoaXMgdGVtcGxhdGUgaXMgZm9yIGJvdGggd2ViIGFuZCBmdWxsc2NyZWVuIG1vZGUgaW4gbW9iaWxlLi0tPlxuPG5nLXRlbXBsYXRlICNzZWFyY2hUZW1wbGF0ZT5cbiAgICA8c3BhbiBjbGFzcz1cIndpIHdpLWFycm93LWxlZnQgZm9ybS1jb250cm9sLWZlZWRiYWNrIGJhY2stYnRuXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgKGNsaWNrKT1cImNsb3NlU2VhcmNoKClcIj48L3NwYW4+XG4gICAgPHNwYW4gY2xhc3M9XCJzci1vbmx5XCI+QmFjayBidXR0b248L3NwYW4+XG4gICAgPGlucHV0IFt0aXRsZV09XCJxdWVyeSB8fCAnJ1wiIHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJhcHAtdGV4dGJveCBmb3JtLWNvbnRyb2wgbGlzdC1vZi1vYmpzIGFwcC1zZWFyY2gtaW5wdXRcIiBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXIgfHwgJydcIlxuICAgICAgICAgICBmb2N1cy10YXJnZXRcbiAgICAgICAgICAgW2NvbnRhaW5lcl09XCJjb250YWluZXJUYXJnZXQgfHwgJy53bS1hcHAnXCJcbiAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgW2F0dHIuYWNjZXNza2V5XT1cInNob3J0Y3V0a2V5XCJcbiAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgWyhuZ01vZGVsKV09XCJxdWVyeVwiXG4gICAgICAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJ7c3RhbmRhbG9uZTogdHJ1ZX1cIlxuICAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICAgICAgICAgICBbdHlwZWFoZWFkXT1cInR5cGVhaGVhZERhdGFTb3VyY2VcIlxuICAgICAgICAgICBbdHlwZWFoZWFkV2FpdE1zXT1cImRlYm91bmNldGltZVwiXG4gICAgICAgICAgIFt0eXBlYWhlYWRJdGVtVGVtcGxhdGVdPVwiY3VzdG9tSXRlbVRlbXBsYXRlXCJcbiAgICAgICAgICAgW29wdGlvbnNMaXN0VGVtcGxhdGVdPVwiY3VzdG9tTGlzdFRlbXBsYXRlXCJcbiAgICAgICAgICAgKGlucHV0KT1cIm9uSW5wdXRDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgIChrZXlkb3duKT1cImxpc3RlblF1ZXJ5ID0gdHJ1ZVwiXG4gICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cIiR0eXBlYWhlYWRFdmVudCA9ICRldmVudDtoYW5kbGVFbnRlckV2ZW50KCRldmVudClcIlxuICAgICAgICAgICAoa2V5ZG93bi5hcnJvd2Rvd24pPVwic2VsZWN0TmV4dCgkZXZlbnQpXCJcbiAgICAgICAgICAgKGJsdXIpPVwiaW52b2tlT25Ub3VjaGVkKCRldmVudCk7IG9uRm9jdXNPdXQoKVwiXG4gICAgICAgICAgIChjbGljayk9XCJoYW5kbGVGb2N1cygkZXZlbnQpO1wiXG4gICAgICAgICAgIChmb2N1cyk9XCJfdW5zdWJzY3JpYmVEdiA9IGZhbHNlOyBsaXN0ZW5RdWVyeSA9IHRydWU7IGhhbmRsZUZvY3VzKCRldmVudCk7IGludm9rZU9uRm9jdXMoJGV2ZW50KVwiXG4gICAgICAgICAgIFt0eXBlYWhlYWRNaW5MZW5ndGhdPVwibWluY2hhcnNcIlxuICAgICAgICAgICBbdHlwZWFoZWFkT3B0aW9uc0xpbWl0XT1cImxpbWl0XCJcbiAgICAgICAgICAgKHR5cGVhaGVhZExvYWRpbmcpPVwiX2xvYWRpbmdJdGVtc1wiXG4gICAgICAgICAgICh0eXBlYWhlYWRPblNlbGVjdCk9XCJ0eXBlYWhlYWRPblNlbGVjdCgkZXZlbnQpXCJcbiAgICAgICAgICAgdHlwZWFoZWFkT3B0aW9uRmllbGQ9XCJsYWJlbFwiXG4gICAgICAgICAgIFt0eXBlYWhlYWRHcm91cEZpZWxkXT1cImdyb3VwYnkgPyAnZ3JvdXBieScgOiBudWxsXCJcbiAgICAgICAgICAgW3R5cGVhaGVhZEFzeW5jXT1cInRydWVcIlxuICAgICAgICAgICBbdHlwZWFoZWFkU2Nyb2xsYWJsZV09XCJ0cnVlXCJcbiAgICAgICAgICAgW2FkYXB0aXZlUG9zaXRpb25dPVwidHJ1ZVwiXG4gICAgICAgICAgIFt0eXBlYWhlYWRPcHRpb25zSW5TY3JvbGxhYmxlVmlld109XCJvcHRpb25zbGltaXRpbnNjcm9sbGFibGV2aWV3XCJcbiAgICAgICAgICAgW3RhYmluZGV4XT1cInRhYmluZGV4XCJcbiAgICAgICAgICAgW2Ryb3B1cF09XCJkcm9wdXBcIlxuICAgICAgICAgICBbYXR0ci5uYW1lXT1cIm5hbWVcIlxuICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFsYWJlbCB8fCAnU2VhcmNoIGZpZWxkJ1wiPlxuICAgIDxpbnB1dCBjbGFzcz1cIm1vZGVsLWhvbGRlclwiIG5nLW1vZGVsPVwicHJveHlNb2RlbFwiIG5nLXJlcXVpcmVkPVwicmVxdWlyZWRcIiB0YWJpbmRleD1cIi0xXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgPHNwYW4gKm5nSWY9XCJfbG9hZGluZ0l0ZW1zXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgY2xhc3M9XCJmYSBmYS1jaXJjbGUtby1ub3RjaCBmYS1zcGluIGZvcm0tY29udHJvbC1mZWVkYmFja1wiPjwvc3Bhbj5cbiAgICA8c3BhbiBjbGFzcz1cIndpIHdpLWNsb3NlIGZvcm0tY29udHJvbC1mZWVkYmFjayBjbGVhci1idG5cIiBbbmdDbGFzc109XCJ7J3Nob3ctYnRuJzogaXNRdWVyeUVudGVyZWQoKX1cIiAoY2xpY2spPVwiY2xlYXJTZWFyY2goJGV2ZW50LCB0cnVlKVwiPjwvc3Bhbj5cbiAgICA8c3BhbiBjbGFzcz1cInNyLW9ubHlcIj5DbGVhciBidXR0b248L3NwYW4+XG4gICAgPHNwYW4gKm5nSWY9XCJzaG93c2VhcmNoaWNvblwiIFtuZ0NsYXNzXT1cInsnZGlzYWJsZWQnOiBkaXNhYmxlZH1cIiBjbGFzcz1cImlucHV0LWdyb3VwLWFkZG9uXCI+XG4gICAgICAgIDxmb3JtPlxuICAgICAgICAgICAgPGJ1dHRvbiB0aXRsZT1cIlNlYXJjaFwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIGNsYXNzPVwiYXBwLXNlYXJjaC1idXR0b24gd20tc2wtbCBzbC1zZWFyY2hcIiB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uU2VhcmNoU2VsZWN0KCRldmVudClcIj48L2J1dHRvbj5cbiAgICAgICAgPC9mb3JtPlxuICAgIDwvc3Bhbj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
@@ -15,7 +15,7 @@ const components = [
|
|
|
15
15
|
ScrollableDirective
|
|
16
16
|
];
|
|
17
17
|
export class SearchModule {
|
|
18
|
-
static { this.ɵfac = function SearchModule_Factory(
|
|
18
|
+
static { this.ɵfac = function SearchModule_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || SearchModule)(); }; }
|
|
19
19
|
static { this.ɵmod = /*@__PURE__*/ i0.ɵɵdefineNgModule({ type: SearchModule }); }
|
|
20
20
|
static { this.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [CommonModule,
|
|
21
21
|
FormsModule,
|
|
@@ -42,4 +42,4 @@ export class SearchModule {
|
|
|
42
42
|
WmComponentsModule], exports: [SearchComponent,
|
|
43
43
|
ScrollableDirective] }); })();
|
|
44
44
|
i0.ɵɵsetComponentScope(SearchComponent, [i1.NgClass, i1.NgForOf, i1.NgIf, i1.NgTemplateOutlet, i2.ɵNgNoValidate, i2.DefaultValueAccessor, i2.NgControlStatus, i2.NgControlStatusGroup, i2.NgModel, i2.NgForm, i3.TypeaheadDirective, i4.ItemTemplateDirective, i4.PartialParamHandlerDirective, i4.PartialContainerDirective, i4.TextContentDirective, ScrollableDirective], []);
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvd2lkZ2V0cy9iYXNpYy9zZWFyY2gvc3JjL3NlYXJjaC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUUxRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDckQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7OztBQUU3RCxNQUFNLFVBQVUsR0FBRztJQUNmLGVBQWU7SUFDZixtQkFBbUI7Q0FDdEIsQ0FBQztBQVlGLE1BQU0sT0FBTyxZQUFZOzZHQUFaLFlBQVk7bUVBQVosWUFBWTt1RUFSakIsWUFBWTtZQUNaLFdBQVc7WUFDWCxlQUFlO1lBQ2Ysa0JBQWtCOztpRkFLYixZQUFZO2NBVnhCLFFBQVE7ZUFBQztnQkFDTixPQUFPLEVBQUU7b0JBQ0wsWUFBWTtvQkFDWixXQUFXO29CQUNYLGVBQWU7b0JBQ2Ysa0JBQWtCO2lCQUNyQjtnQkFDRCxZQUFZLEVBQUUsQ0FBQyxHQUFHLFVBQVUsQ0FBQztnQkFDN0IsT0FBTyxFQUFFLENBQUMsR0FBRyxVQUFVLENBQUM7YUFDM0I7O3dGQUNZLFlBQVksbUJBZHJCLGVBQWU7UUFDZixtQkFBbUIsYUFLZixZQUFZO1FBQ1osV0FBVztRQUNYLGVBQWU7UUFDZixrQkFBa0IsYUFUdEIsZUFBZTtRQUNmLG1CQUFtQjt1QkFEbkIsZUFBZSxpVEFDZixtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBUeXBlYWhlYWRNb2R1bGUgfSBmcm9tICduZ3gtYm9vdHN0cmFwL3R5cGVhaGVhZCc7XG5cbmltcG9ydCB7IFdtQ29tcG9uZW50c01vZHVsZSB9IGZyb20gJ0B3bS9jb21wb25lbnRzL2Jhc2UnO1xuXG5pbXBvcnQgeyBTZWFyY2hDb21wb25lbnQgfSBmcm9tICcuL3NlYXJjaC5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2Nyb2xsYWJsZURpcmVjdGl2ZSB9IGZyb20gJy4vc2Nyb2xsYWJsZS5kaXJlY3RpdmUnO1xuXG5jb25zdCBjb21wb25lbnRzID0gW1xuICAgIFNlYXJjaENvbXBvbmVudCxcbiAgICBTY3JvbGxhYmxlRGlyZWN0aXZlXG5dO1xuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBGb3Jtc01vZHVsZSxcbiAgICAgICAgVHlwZWFoZWFkTW9kdWxlLFxuICAgICAgICBXbUNvbXBvbmVudHNNb2R1bGVcbiAgICBdLFxuICAgIGRlY2xhcmF0aW9uczogWy4uLmNvbXBvbmVudHNdLFxuICAgIGV4cG9ydHM6IFsuLi5jb21wb25lbnRzXVxufSlcbmV4cG9ydCBjbGFzcyBTZWFyY2hNb2R1bGUge1xufVxuIl19
|
|
@@ -13,7 +13,7 @@ import { filter as filter$1, mergeMap } from 'rxjs/operators';
|
|
|
13
13
|
import * as i1 from '@wm/core';
|
|
14
14
|
import { FormWidgetType, DataSource, getClonedObject, AppConstants, findValueOf, addClass, isDefined, isMobile, adjustContainerPosition, toBoolean } from '@wm/core';
|
|
15
15
|
import { DatasetAwareFormComponent } from '@wm/components/input';
|
|
16
|
-
import { isNumber, includes, startsWith, endsWith, isEqual, split,
|
|
16
|
+
import { isNumber, includes, startsWith, endsWith, isEqual, split, filter, get, toLower, toString, isArray, isObject, values, assign, set, isEmpty, slice, indexOf, trim, debounce, isUndefined, find, map } from 'lodash-es';
|
|
17
17
|
|
|
18
18
|
const searchProps = new Map([
|
|
19
19
|
['casesensitive', { value: false, ...PROP_BOOLEAN }],
|
|
@@ -1156,7 +1156,7 @@ class SearchComponent extends DatasetAwareFormComponent {
|
|
|
1156
1156
|
}
|
|
1157
1157
|
super.onPropertyChange(key, nv, ov);
|
|
1158
1158
|
}
|
|
1159
|
-
static { this.ɵfac = function SearchComponent_Factory(
|
|
1159
|
+
static { this.ɵfac = function SearchComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || SearchComponent)(i0.ɵɵdirectiveInject(i0.Injector), i0.ɵɵdirectiveInject(i1.App), i0.ɵɵinjectAttribute('datavalue.bind'), i0.ɵɵinjectAttribute('dataset.bind'), i0.ɵɵdirectiveInject('EXPLICIT_CONTEXT', 8)); }; }
|
|
1160
1160
|
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SearchComponent, selectors: [["", "wmSearch", ""]], viewQuery: function SearchComponent_Query(rf, ctx) { if (rf & 1) {
|
|
1161
1161
|
i0.ɵɵviewQuery(TypeaheadDirective, 5);
|
|
1162
1162
|
i0.ɵɵviewQuery(_c0, 5);
|
|
@@ -1229,7 +1229,7 @@ class ScrollableDirective {
|
|
|
1229
1229
|
notifyParent(evt) {
|
|
1230
1230
|
this.searchRef.onScroll(this.elementRef.nativeElement, evt);
|
|
1231
1231
|
}
|
|
1232
|
-
static { this.ɵfac = function ScrollableDirective_Factory(
|
|
1232
|
+
static { this.ɵfac = function ScrollableDirective_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || ScrollableDirective)(i0.ɵɵdirectiveInject(i0.Injector), i0.ɵɵdirectiveInject(SearchComponent)); }; }
|
|
1233
1233
|
static { this.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: ScrollableDirective, selectors: [["", "scrollable", ""]] }); }
|
|
1234
1234
|
}
|
|
1235
1235
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ScrollableDirective, [{
|
|
@@ -1244,7 +1244,7 @@ const components = [
|
|
|
1244
1244
|
ScrollableDirective
|
|
1245
1245
|
];
|
|
1246
1246
|
class SearchModule {
|
|
1247
|
-
static { this.ɵfac = function SearchModule_Factory(
|
|
1247
|
+
static { this.ɵfac = function SearchModule_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || SearchModule)(); }; }
|
|
1248
1248
|
static { this.ɵmod = /*@__PURE__*/ i0.ɵɵdefineNgModule({ type: SearchModule }); }
|
|
1249
1249
|
static { this.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [CommonModule,
|
|
1250
1250
|
FormsModule,
|