@wavemaker/app-ng-runtime 12.0.0-next.141131 → 12.0.0-next.141134
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/bundles/index.umd.js +54 -39
- app-ng-runtime/build-task/esm2022/basic/default/anchor/anchor.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/basic/default/html/html.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/basic/default/icon/icon.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/basic/default/label/label.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/basic/default/picture/picture.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/basic/default/spinner/spinner.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/basic/progress/progress-circle/progress-circle.build.mjs +7 -2
- app-ng-runtime/build-task/esm2022/basic/rich-text-editor/rich-text-editor.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/containers/tile/tile.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/data/form/form-field/form-field.build.mjs +10 -3
- app-ng-runtime/build-task/esm2022/device/barcode-scanner/barcode-scanner.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/device/camera/camera.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/dialogs/alert-dialog/alert-dialog.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/input/calendar/calendar.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/input/color-picker/color-picker.build.mjs +3 -3
- app-ng-runtime/build-task/esm2022/input/currency/currency.build.mjs +3 -3
- app-ng-runtime/build-task/esm2022/input/default/button/button.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/input/default/button-group/button-group.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/input/default/switch/switch.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/input/file-upload/file-upload.build.mjs +5 -1
- app-ng-runtime/build-task/esm2022/page/footer/footer.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/page/header/header.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/page/layout.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/page/left-panel/left-panel.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/page/page.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/page/right-panel/right-panel.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/page/top-nav/top-nav.build.mjs +2 -2
- app-ng-runtime/build-task/fesm2022/index.mjs +54 -39
- app-ng-runtime/build-task/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/advanced/carousel/bundles/index.umd.js +1 -1
- app-ng-runtime/components/advanced/carousel/esm2022/carousel.animator.mjs +2 -2
- app-ng-runtime/components/advanced/carousel/fesm2022/index.mjs +1 -1
- app-ng-runtime/components/advanced/carousel/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/advanced/custom/bundles/index.umd.js +53 -13
- app-ng-runtime/components/advanced/custom/custom-widget-container/custom-widget-container.directive.d.ts +11 -4
- app-ng-runtime/components/advanced/custom/esm2022/custom-widget-container/custom-widget-container.directive.mjs +55 -12
- app-ng-runtime/components/advanced/custom/esm2022/custom-widget.directive.mjs +2 -2
- app-ng-runtime/components/advanced/custom/fesm2022/index.mjs +55 -12
- app-ng-runtime/components/advanced/custom/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/base/bundles/index.umd.js +22 -6
- app-ng-runtime/components/base/esm2022/pipes/custom-pipes.mjs +3 -3
- app-ng-runtime/components/base/esm2022/utils/live-utils.mjs +8 -2
- app-ng-runtime/components/base/esm2022/widgets/common/base/base.component.mjs +15 -5
- app-ng-runtime/components/base/esm2022/widgets/framework/property-change-handler.mjs +2 -2
- app-ng-runtime/components/base/fesm2022/index.mjs +23 -7
- app-ng-runtime/components/base/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/base/pipes/custom-pipes.d.ts +1 -1
- app-ng-runtime/components/base/widgets/common/base/base-field-validations.d.ts +1 -1
- app-ng-runtime/components/base/widgets/common/base/base.component.d.ts +1 -0
- app-ng-runtime/components/basic/default/anchor/anchor.component.d.ts +1 -0
- app-ng-runtime/components/basic/default/audio/audio.component.d.ts +1 -0
- app-ng-runtime/components/basic/default/bundles/index.umd.js +27 -18
- app-ng-runtime/components/basic/default/esm2022/anchor/anchor.component.mjs +4 -4
- app-ng-runtime/components/basic/default/esm2022/anchor/anchor.props.mjs +2 -1
- app-ng-runtime/components/basic/default/esm2022/audio/audio.component.mjs +5 -5
- app-ng-runtime/components/basic/default/esm2022/audio/audio.props.mjs +2 -1
- app-ng-runtime/components/basic/default/esm2022/html/html.props.mjs +2 -1
- app-ng-runtime/components/basic/default/esm2022/icon/icon.component.mjs +6 -7
- app-ng-runtime/components/basic/default/esm2022/icon/icon.props.mjs +2 -1
- app-ng-runtime/components/basic/default/esm2022/iframe/iframe.component.mjs +3 -3
- app-ng-runtime/components/basic/default/esm2022/iframe/iframe.props.mjs +3 -2
- app-ng-runtime/components/basic/default/esm2022/label/label.props.mjs +1 -1
- app-ng-runtime/components/basic/default/esm2022/picture/picture.directive.mjs +2 -2
- app-ng-runtime/components/basic/default/esm2022/picture/picture.props.mjs +3 -1
- app-ng-runtime/components/basic/default/esm2022/spinner/spinner.props.mjs +3 -2
- app-ng-runtime/components/basic/default/esm2022/video/video.component.mjs +5 -4
- app-ng-runtime/components/basic/default/esm2022/video/video.props.mjs +2 -1
- app-ng-runtime/components/basic/default/fesm2022/index.mjs +27 -18
- app-ng-runtime/components/basic/default/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/basic/default/icon/icon.component.d.ts +1 -0
- app-ng-runtime/components/basic/default/iframe/iframe.component.d.ts +1 -0
- app-ng-runtime/components/basic/default/picture/picture.directive.d.ts +2 -1
- app-ng-runtime/components/basic/default/video/video.component.d.ts +1 -0
- app-ng-runtime/components/basic/progress/bundles/index.umd.js +12 -8
- app-ng-runtime/components/basic/progress/esm2022/progress-bar/progress-bar.component.mjs +4 -4
- app-ng-runtime/components/basic/progress/esm2022/progress-bar/progress-bar.props.mjs +2 -1
- app-ng-runtime/components/basic/progress/esm2022/progress-circle/progress-circle.component.mjs +8 -6
- app-ng-runtime/components/basic/progress/esm2022/progress-circle/progress-circle.props.mjs +2 -1
- app-ng-runtime/components/basic/progress/fesm2022/index.mjs +12 -8
- app-ng-runtime/components/basic/progress/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/basic/progress/progress-bar/progress-bar.component.d.ts +1 -0
- app-ng-runtime/components/basic/progress/progress-circle/progress-circle.component.d.ts +3 -1
- app-ng-runtime/components/basic/rich-text-editor/bundles/index.umd.js +2 -0
- app-ng-runtime/components/basic/rich-text-editor/esm2022/rich-text-editor.component.mjs +2 -1
- app-ng-runtime/components/basic/rich-text-editor/esm2022/rich-text-editor.props.mjs +2 -1
- app-ng-runtime/components/basic/rich-text-editor/fesm2022/index.mjs +2 -0
- app-ng-runtime/components/basic/rich-text-editor/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/basic/search/bundles/index.umd.js +11 -9
- app-ng-runtime/components/basic/search/esm2022/search.component.mjs +14 -13
- app-ng-runtime/components/basic/search/esm2022/search.props.mjs +2 -1
- app-ng-runtime/components/basic/search/fesm2022/index.mjs +11 -9
- app-ng-runtime/components/basic/search/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/basic/search/search.component.d.ts +1 -0
- 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 +4 -4
- app-ng-runtime/components/containers/accordion/fesm2022/index.mjs +3 -3
- app-ng-runtime/components/containers/accordion/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/containers/panel/bundles/index.umd.js +14 -14
- app-ng-runtime/components/containers/panel/esm2022/panel.component.mjs +15 -15
- app-ng-runtime/components/containers/panel/fesm2022/index.mjs +14 -14
- app-ng-runtime/components/containers/panel/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/containers/tabs/bundles/index.umd.js +2 -2
- app-ng-runtime/components/containers/tabs/esm2022/tabs.component.mjs +3 -3
- app-ng-runtime/components/containers/tabs/fesm2022/index.mjs +2 -2
- app-ng-runtime/components/containers/tabs/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/containers/wizard/bundles/index.umd.js +17 -0
- app-ng-runtime/components/containers/wizard/esm2022/wizard.component.mjs +18 -1
- app-ng-runtime/components/containers/wizard/fesm2022/index.mjs +17 -0
- app-ng-runtime/components/containers/wizard/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/containers/wizard/wizard.component.d.ts +1 -0
- app-ng-runtime/components/data/form/bundles/index.umd.js +27 -11
- app-ng-runtime/components/data/form/esm2022/form-field/form-field.directive.mjs +28 -14
- app-ng-runtime/components/data/form/fesm2022/index.mjs +27 -13
- app-ng-runtime/components/data/form/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/data/form/form-field/form-field.directive.d.ts +2 -0
- app-ng-runtime/components/data/list/bundles/index.umd.js +2 -2
- app-ng-runtime/components/data/list/esm2022/list.component.mjs +3 -3
- app-ng-runtime/components/data/list/fesm2022/index.mjs +2 -2
- 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 +3 -3
- app-ng-runtime/components/data/live-table/fesm2022/index.mjs +2 -2
- app-ng-runtime/components/data/live-table/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/data/pagination/bundles/index.umd.js +2 -0
- app-ng-runtime/components/data/pagination/esm2022/pagination.component.mjs +3 -1
- app-ng-runtime/components/data/pagination/fesm2022/index.mjs +2 -0
- app-ng-runtime/components/data/pagination/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/data/table/bundles/index.umd.js +45 -11
- app-ng-runtime/components/data/table/esm2022/table-column/table-column.directive.mjs +14 -5
- app-ng-runtime/components/data/table/esm2022/table-row/table-row.props.mjs +2 -2
- app-ng-runtime/components/data/table/esm2022/table.component.mjs +30 -7
- app-ng-runtime/components/data/table/esm2022/table.props.mjs +3 -1
- app-ng-runtime/components/data/table/fesm2022/index.mjs +46 -12
- app-ng-runtime/components/data/table/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/data/table/table.component.d.ts +8 -1
- app-ng-runtime/components/dialogs/alert-dialog/bundles/index.umd.js +6 -4
- app-ng-runtime/components/dialogs/alert-dialog/esm2022/alert-dialog.component.mjs +7 -5
- app-ng-runtime/components/dialogs/alert-dialog/fesm2022/index.mjs +6 -4
- app-ng-runtime/components/dialogs/alert-dialog/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/dialogs/confirm-dialog/bundles/index.umd.js +8 -5
- app-ng-runtime/components/dialogs/confirm-dialog/esm2022/confirm-dialog.component.mjs +9 -6
- app-ng-runtime/components/dialogs/confirm-dialog/fesm2022/index.mjs +8 -5
- app-ng-runtime/components/dialogs/confirm-dialog/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/dialogs/default/bundles/index.umd.js +20 -3
- app-ng-runtime/components/dialogs/default/dialog-header/dialog-header.component.d.ts +2 -1
- app-ng-runtime/components/dialogs/default/esm2022/base-dialog.mjs +13 -1
- app-ng-runtime/components/dialogs/default/esm2022/dialog-header/dialog-header.component.mjs +9 -4
- app-ng-runtime/components/dialogs/default/fesm2022/index.mjs +20 -3
- app-ng-runtime/components/dialogs/default/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/dialogs/design-dialog/bundles/index.umd.js +4 -4
- app-ng-runtime/components/dialogs/design-dialog/esm2022/dialog.component.mjs +5 -5
- app-ng-runtime/components/dialogs/design-dialog/fesm2022/index.mjs +4 -4
- app-ng-runtime/components/dialogs/design-dialog/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/dialogs/iframe-dialog/bundles/index.umd.js +9 -5
- app-ng-runtime/components/dialogs/iframe-dialog/esm2022/iframe-dialog.component.mjs +10 -6
- app-ng-runtime/components/dialogs/iframe-dialog/fesm2022/index.mjs +9 -5
- app-ng-runtime/components/dialogs/iframe-dialog/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/dialogs/partial-dialog/bundles/index.umd.js +9 -5
- app-ng-runtime/components/dialogs/partial-dialog/esm2022/partial-dialog.component.mjs +10 -6
- app-ng-runtime/components/dialogs/partial-dialog/fesm2022/index.mjs +9 -5
- app-ng-runtime/components/dialogs/partial-dialog/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/calendar/bundles/index.umd.js +2 -4
- app-ng-runtime/components/input/calendar/esm2022/calendar.component.mjs +3 -5
- app-ng-runtime/components/input/calendar/fesm2022/index.mjs +2 -4
- app-ng-runtime/components/input/calendar/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/chips/bundles/index.umd.js +3 -2
- app-ng-runtime/components/input/chips/esm2022/chips.component.mjs +3 -3
- app-ng-runtime/components/input/chips/esm2022/chips.props.mjs +2 -1
- app-ng-runtime/components/input/chips/fesm2022/index.mjs +3 -2
- app-ng-runtime/components/input/chips/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/color-picker/bundles/index.umd.js +5 -3
- app-ng-runtime/components/input/color-picker/color-picker.component.d.ts +1 -0
- app-ng-runtime/components/input/color-picker/esm2022/color-picker.component.mjs +6 -5
- app-ng-runtime/components/input/color-picker/esm2022/color-picker.props.mjs +2 -1
- app-ng-runtime/components/input/color-picker/fesm2022/index.mjs +5 -3
- app-ng-runtime/components/input/color-picker/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/currency/bundles/index.umd.js +4 -3
- app-ng-runtime/components/input/currency/currency.component.d.ts +1 -0
- app-ng-runtime/components/input/currency/esm2022/currency.component.mjs +6 -6
- app-ng-runtime/components/input/currency/esm2022/currency.props.mjs +2 -1
- app-ng-runtime/components/input/currency/fesm2022/index.mjs +4 -3
- app-ng-runtime/components/input/currency/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/default/base-form-custom.component.d.ts +2 -1
- app-ng-runtime/components/input/default/bundles/index.umd.js +219 -114
- app-ng-runtime/components/input/default/button/button.component.d.ts +1 -0
- app-ng-runtime/components/input/default/checkbox/checkbox.component.d.ts +1 -0
- app-ng-runtime/components/input/default/dataset-aware-form.component.d.ts +2 -2
- app-ng-runtime/components/input/default/esm2022/base-form-custom.component.mjs +6 -1
- app-ng-runtime/components/input/default/esm2022/button/button.component.mjs +1 -1
- app-ng-runtime/components/input/default/esm2022/button/button.props.mjs +2 -1
- app-ng-runtime/components/input/default/esm2022/caption-position.directive.mjs +8 -7
- app-ng-runtime/components/input/default/esm2022/checkbox/checkbox.component.mjs +7 -7
- app-ng-runtime/components/input/default/esm2022/checkbox/checkbox.props.mjs +2 -1
- app-ng-runtime/components/input/default/esm2022/checkboxset/checkboxset.component.mjs +23 -16
- app-ng-runtime/components/input/default/esm2022/dataset-aware-form.component.mjs +5 -5
- app-ng-runtime/components/input/default/esm2022/number/number.component.mjs +5 -5
- app-ng-runtime/components/input/default/esm2022/number/number.props.mjs +3 -1
- app-ng-runtime/components/input/default/esm2022/radioset/radioset.component.mjs +30 -23
- app-ng-runtime/components/input/default/esm2022/select/select.component.mjs +60 -30
- app-ng-runtime/components/input/default/esm2022/select/select.props.mjs +2 -1
- app-ng-runtime/components/input/default/esm2022/switch/switch.component.mjs +6 -5
- app-ng-runtime/components/input/default/esm2022/switch/switch.props.mjs +2 -1
- app-ng-runtime/components/input/default/esm2022/text/calendar/input-calendar.component.mjs +5 -5
- app-ng-runtime/components/input/default/esm2022/text/calendar/input-calendar.props.mjs +2 -1
- app-ng-runtime/components/input/default/esm2022/text/color/input-color.component.mjs +5 -5
- app-ng-runtime/components/input/default/esm2022/text/color/input-color.props.mjs +2 -1
- app-ng-runtime/components/input/default/esm2022/text/email/input-email.component.mjs +5 -5
- app-ng-runtime/components/input/default/esm2022/text/email/input-email.props.mjs +2 -1
- app-ng-runtime/components/input/default/esm2022/text/locale/number-locale.mjs +51 -14
- app-ng-runtime/components/input/default/esm2022/text/number/input-number.component.mjs +5 -5
- app-ng-runtime/components/input/default/esm2022/text/number/input-number.props.mjs +2 -1
- app-ng-runtime/components/input/default/esm2022/text/text/input-text.component.mjs +5 -5
- app-ng-runtime/components/input/default/esm2022/text/text/input-text.props.mjs +2 -1
- app-ng-runtime/components/input/default/esm2022/textarea/textarea.component.mjs +9 -6
- app-ng-runtime/components/input/default/esm2022/textarea/textarea.props.mjs +2 -1
- app-ng-runtime/components/input/default/fesm2022/index.mjs +219 -114
- app-ng-runtime/components/input/default/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/default/number/number.component.d.ts +1 -0
- app-ng-runtime/components/input/default/select/select.component.d.ts +4 -4
- app-ng-runtime/components/input/default/text/calendar/input-calendar.component.d.ts +1 -0
- app-ng-runtime/components/input/default/text/color/input-color.component.d.ts +1 -0
- app-ng-runtime/components/input/default/text/email/input-email.component.d.ts +1 -0
- app-ng-runtime/components/input/default/text/locale/number-locale.d.ts +1 -0
- app-ng-runtime/components/input/default/text/number/input-number.component.d.ts +1 -0
- app-ng-runtime/components/input/default/text/text/input-text.component.d.ts +1 -0
- app-ng-runtime/components/input/default/textarea/textarea.component.d.ts +4 -2
- app-ng-runtime/components/input/epoch/bundles/index.umd.js +15 -9
- app-ng-runtime/components/input/epoch/date/date.component.d.ts +1 -0
- app-ng-runtime/components/input/epoch/date-time/date-time.component.d.ts +2 -1
- app-ng-runtime/components/input/epoch/esm2022/date/date.component.mjs +6 -6
- app-ng-runtime/components/input/epoch/esm2022/date/date.props.mjs +2 -1
- app-ng-runtime/components/input/epoch/esm2022/date-time/date-time.component.mjs +10 -7
- app-ng-runtime/components/input/epoch/esm2022/date-time/date-time.props.mjs +2 -1
- app-ng-runtime/components/input/epoch/esm2022/time/time.component.mjs +7 -7
- app-ng-runtime/components/input/epoch/esm2022/time/time.props.mjs +2 -1
- app-ng-runtime/components/input/epoch/fesm2022/index.mjs +15 -9
- app-ng-runtime/components/input/epoch/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/epoch/time/time.component.d.ts +1 -0
- app-ng-runtime/components/input/file-upload/bundles/index.umd.js +208 -95
- app-ng-runtime/components/input/file-upload/esm2022/file-upload.component.mjs +206 -98
- app-ng-runtime/components/input/file-upload/esm2022/file-upload.props.mjs +6 -1
- app-ng-runtime/components/input/file-upload/fesm2022/index.mjs +209 -96
- app-ng-runtime/components/input/file-upload/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/file-upload/file-upload.component.d.ts +17 -11
- app-ng-runtime/components/input/slider/bundles/index.umd.js +5 -6
- app-ng-runtime/components/input/slider/esm2022/slider.component.mjs +6 -8
- app-ng-runtime/components/input/slider/esm2022/slider.props.mjs +2 -1
- app-ng-runtime/components/input/slider/fesm2022/index.mjs +5 -6
- app-ng-runtime/components/input/slider/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/slider/slider.component.d.ts +1 -0
- app-ng-runtime/components/navigation/menu/bundles/index.umd.js +10 -8
- app-ng-runtime/components/navigation/menu/esm2022/menu.component.mjs +9 -8
- app-ng-runtime/components/navigation/menu/esm2022/menu.props.mjs +2 -1
- app-ng-runtime/components/navigation/menu/esm2022/nav/nav.component.mjs +2 -2
- app-ng-runtime/components/navigation/menu/fesm2022/index.mjs +10 -8
- app-ng-runtime/components/navigation/menu/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/navigation/menu/menu.component.d.ts +1 -0
- app-ng-runtime/components/navigation/popover/bundles/index.umd.js +121 -13
- app-ng-runtime/components/navigation/popover/esm2022/popover.component.mjs +122 -15
- app-ng-runtime/components/navigation/popover/esm2022/popover.props.mjs +2 -1
- app-ng-runtime/components/navigation/popover/fesm2022/index.mjs +121 -13
- app-ng-runtime/components/navigation/popover/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/navigation/popover/popover.component.d.ts +15 -3
- app-ng-runtime/components/page/default/bundles/index.umd.js +2 -1
- app-ng-runtime/components/page/default/esm2022/page.props.mjs +4 -3
- app-ng-runtime/components/page/default/fesm2022/index.mjs +2 -1
- app-ng-runtime/components/page/default/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/page/footer/bundles/index.umd.js +2 -1
- app-ng-runtime/components/page/footer/esm2022/footer.props.mjs +3 -2
- app-ng-runtime/components/page/footer/fesm2022/index.mjs +2 -1
- app-ng-runtime/components/page/footer/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/page/header/bundles/index.umd.js +2 -1
- app-ng-runtime/components/page/header/esm2022/header.props.mjs +3 -2
- app-ng-runtime/components/page/header/fesm2022/index.mjs +2 -1
- app-ng-runtime/components/page/header/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/page/left-panel/bundles/index.umd.js +2 -1
- app-ng-runtime/components/page/left-panel/esm2022/left-panel.props.mjs +3 -2
- app-ng-runtime/components/page/left-panel/fesm2022/index.mjs +2 -1
- 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 -1
- app-ng-runtime/components/page/right-panel/esm2022/right-panel.props.mjs +3 -2
- app-ng-runtime/components/page/right-panel/fesm2022/index.mjs +2 -1
- 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 -1
- app-ng-runtime/components/page/top-nav/esm2022/top-nav.props.mjs +3 -2
- app-ng-runtime/components/page/top-nav/fesm2022/index.mjs +2 -1
- app-ng-runtime/components/page/top-nav/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/core/bundles/index.umd.js +18 -15
- app-ng-runtime/core/enums/enums.d.ts +2 -2
- app-ng-runtime/core/esm2022/enums/enums.mjs +2 -2
- app-ng-runtime/core/esm2022/public_api.mjs +2 -2
- app-ng-runtime/core/esm2022/utils/build-utils.mjs +12 -12
- app-ng-runtime/core/esm2022/utils/utils.mjs +5 -4
- app-ng-runtime/core/fesm2022/index.mjs +18 -16
- app-ng-runtime/core/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/core/public_api.d.ts +1 -1
- app-ng-runtime/core/utils/utils.d.ts +1 -0
- app-ng-runtime/locales/moment-timezone/moment-timezone-with-data.js +37 -37
- app-ng-runtime/mobile/components/device/barcode-scanner/bundles/index.umd.js +2 -1
- app-ng-runtime/mobile/components/device/barcode-scanner/esm2022/barcode-scanner.props.mjs +3 -2
- app-ng-runtime/mobile/components/device/barcode-scanner/fesm2022/index.mjs +2 -1
- 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 -1
- app-ng-runtime/mobile/components/device/camera/esm2022/camera.props.mjs +3 -2
- app-ng-runtime/mobile/components/device/camera/fesm2022/index.mjs +2 -1
- app-ng-runtime/mobile/components/device/camera/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/core/bundles/index.umd.js +18 -2
- app-ng-runtime/mobile/core/esm2022/native.xhr.mjs +19 -3
- app-ng-runtime/mobile/core/fesm2022/index.mjs +18 -2
- app-ng-runtime/mobile/core/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/package.json +1 -1
- app-ng-runtime/runtime/base/bundles/index.umd.js +16 -5
- app-ng-runtime/runtime/base/components/app-component/app.component.d.ts +2 -3
- app-ng-runtime/runtime/base/components/base-custom-widget.component.d.ts +2 -0
- app-ng-runtime/runtime/base/esm2022/components/app-component/app.component.mjs +5 -5
- app-ng-runtime/runtime/base/esm2022/components/base-custom-widget.component.mjs +10 -1
- app-ng-runtime/runtime/base/esm2022/guards/can-deactivate-page.guard.mjs +5 -4
- app-ng-runtime/runtime/base/esm2022/services/i18n.service.mjs +2 -2
- app-ng-runtime/runtime/base/fesm2022/index.mjs +16 -5
- app-ng-runtime/runtime/base/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/runtime/base/guards/can-deactivate-page.guard.d.ts +2 -1
- app-ng-runtime/runtime/base/services/i18n.service.d.ts +1 -1
- app-ng-runtime/scripts/@wavemaker/nvd3/build/nv.d3.min.js +1 -1
- app-ng-runtime/scripts/datatable/datatable.js +54 -43
- app-ng-runtime/scripts/summernote/dist/summernote-lite.min.js +2 -3
|
@@ -15,7 +15,13 @@ export const setHeaderConfig = (headerConfig, config, field, index) => {
|
|
|
15
15
|
forEach(headerConfig, cols => {
|
|
16
16
|
if (get(cols, 'isGroup')) {
|
|
17
17
|
if (cols.field === field) {
|
|
18
|
-
cols.columns
|
|
18
|
+
const id = cols.columns?.findIndex((col) => col?.field === config.field);
|
|
19
|
+
if (id == -1) {
|
|
20
|
+
cols.columns[index] = config;
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
cols.columns[id] = config;
|
|
24
|
+
}
|
|
19
25
|
}
|
|
20
26
|
else {
|
|
21
27
|
setHeaderConfig(cols.columns, config, field, index);
|
|
@@ -208,4 +214,4 @@ export const getDefaultValue = (value, type, widget) => {
|
|
|
208
214
|
}
|
|
209
215
|
return value;
|
|
210
216
|
};
|
|
211
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGl2ZS11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvYmFzZS9zcmMvdXRpbHMvbGl2ZS11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUMxRixPQUFPLEVBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFDLE1BQU0sV0FBVyxDQUFDO0FBRXhELE1BQU8saUJBQWlCLEdBQUc7SUFDdkIsT0FBTyxFQUFHLFNBQVM7SUFDbkIsS0FBSyxFQUFHLE9BQU87Q0FDbEIsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRztJQUNyQixVQUFVLEVBQUcsV0FBVztJQUN4QixNQUFNLEVBQUcsUUFBUTtJQUNqQixJQUFJLEVBQUcsTUFBTTtJQUNiLE1BQU0sRUFBRyxRQUFRO0NBQ3BCLENBQUM7QUFFRixvREFBb0Q7QUFDcEQsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLENBQUMsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBYyxFQUFRLEVBQUU7SUFDakYsT0FBTyxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsRUFBRTtRQUN6QixJQUFJLEdBQUcsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUN2QixJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssS0FBSyxFQUFFLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsTUFBTSxDQUFDO1lBQ2pDLENBQUM7aUJBQU0sQ0FBQztnQkFDSixlQUFlLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3hELENBQUM7UUFDTCxDQUFD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LEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLE9BQU8sQ0FBQztJQUNySCxhQUFhLEVBQUUsQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLE9BQU8sQ0FBQztJQUNySCxRQUFRLEVBQU8sQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLE9BQU8sQ0FBQztJQUNySCxRQUFRLEVBQU8sQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLE9BQU8sQ0FBQztJQUNySCxNQUFNLEVBQVMsQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxPQUFPLENBQUM7SUFDL0gsTUFBTSxFQUFTLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxPQUFPLENBQUM7SUFDckgsUUFBUSxFQUFPLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRyxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxPQUFPLEVBQUUsYUFBYSxDQUFDO0lBQ3RNLFdBQVcsRUFBSSxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUcsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVB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SyxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUNELElBQUksSUFBSSxLQUFLLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUM1QixPQUFPLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNqQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc051bWJlclR5cGUsIEZvcm1XaWRnZXRUeXBlLCBEYXRhVHlwZSwgaXNNb2JpbGVBcHAsIGlzQW5kcm9pZCB9IGZyb20gJ0B3bS9jb3JlJztcbmltcG9ydCB7Zm9yRWFjaCwgZ2V0LCBpbmNsdWRlcywgc3BsaXR9IGZyb20gXCJsb2Rhc2gtZXNcIjtcblxuY29uc3QgIFZJRVdfTU9ERV9PUFRJT05TID0ge1xuICAgIERFRkFVTFQgOiAnZGVmYXVsdCcsXG4gICAgTEFCRUwgOiAnbGFiZWwnXG59O1xuXG5leHBvcnQgY29uc3QgRURJVF9NT0RFID0ge1xuICAgIFFVSUNLX0VESVQgOiAncXVpY2tlZGl0JyxcbiAgICBJTkxJTkUgOiAnaW5saW5lJyxcbiAgICBGT1JNIDogJ2Zvcm0nLFxuICAgIERJQUxPRyA6ICdkaWFsb2cnXG59O1xuXG4vLyBNZXRob2QgdG8gc2V0IHRoZSBoZWFkZXIgY29uZmlnIG9mIHRoZSBkYXRhIHRhYmxlXG5leHBvcnQgY29uc3Qgc2V0SGVhZGVyQ29uZmlnID0gKGhlYWRlckNvbmZpZywgY29uZmlnLCBmaWVsZCwgaW5kZXg/OiBudW1iZXIpOiB2b2lkID0+IHtcbiAgICBmb3JFYWNoKGhlYWRlckNvbmZpZywgY29scyA9PiB7XG4gICAgICAgIGlmIChnZXQoY29scywgJ2lzR3JvdXAnKSkge1xuICAgICAgICAgICAgaWYgKGNvbHMuZmllbGQgPT09IGZpZWxkKSB7XG4gICAgICAgICAgICAgICAgY29scy5jb2x1bW5zW2luZGV4XSA9IGNvbmZpZztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc2V0SGVhZGVyQ29uZmlnKGNvbHMuY29sdW1ucywgY29uZmlnLCBmaWVsZCwgaW5kZXgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSk7XG59O1xuXG5leHBvcnQgY29uc3Qgc2V0SGVhZGVyQ29uZmlnRm9yVGFibGUgPSAoaGVhZGVyQ29uZmlnOiBhbnksIGNvbmZpZzogYW55LCBmaWVsZE5hbWU6IHN0cmluZywgaW5kZXg/OiBudW1iZXIpOiB2b2lkID0+IHtcbiAgICBpZiAoZmllbGROYW1lKSB7XG4gICAgICAgIHNldEhlYWRlckNvbmZpZyhoZWFkZXJDb25maWcsIGNvbmZpZywgZmllbGROYW1lLCBpbmRleCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgaGVhZGVyQ29uZmlnW2luZGV4XSA9IGNvbmZpZztcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Um93T3BlcmF0aW9uc0NvbHVtbiA9ICgpOiBhbnkgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICAgICdmaWVsZCcgICAgICAgICA6ICdyb3dPcGVyYXRpb25zJyxcbiAgICAgICAgJ3R5cGUnICAgICAgICAgIDogJ2N1c3RvbScsXG4gICAgICAgICdkaXNwbGF5TmFtZScgICA6ICdBY3Rpb25zJyxcbiAgICAgICAgJ3dpZHRoJyAgICAgICAgIDogJzEyMHB4JyxcbiAgICAgICAgJ3JlYWRvbmx5JyAgICAgIDogdHJ1ZSxcbiAgICAgICAgJ3NvcnRhYmxlJyAgICAgIDogZmFsc2UsXG4gICAgICAgICdzZWFyY2hhYmxlJyAgICA6IGZhbHNlLFxuICAgICAgICAncmVzaXphYmxlJyAgICAgOiBmYWxzZSxcbiAgICAgICAgJ3NlbGVjdGFibGUnICAgIDogZmFsc2UsXG4gICAgICAgICdzaG93JyAgICAgICAgICA6IHRydWUsXG4gICAgICAgICdvcGVyYXRpb25zJyAgICA6IFtdLFxuICAgICAgICAnb3BDb25maWcnICAgICAgOiB7fSxcbiAgICAgICAgJ3BjRGlzcGxheScgICAgIDogdHJ1ZSxcbiAgICAgICAgJ21vYmlsZURpc3BsYXknIDogdHJ1ZSxcbiAgICAgICAgJ3RhYmxldERpc3BsYXknIDogdHJ1ZSxcbiAgICAgICAgJ2luY2x1ZGUnICAgICAgIDogdHJ1ZSxcbiAgICAgICAgJ2lzUm93T3BlcmF0aW9uJzogdHJ1ZVxuICAgIH07XG59O1xuXG4vKipcbiAqIFJldHVybnMgY2FwdGlvbiBhbmQgd2lkZ2V0IGJvb3RzdHJhcCBjbGFzc2VzIGZvciB0aGUgZmllbGRcbiAqL1xuZXhwb3J0IGNvbnN0IGdldEZpZWxkTGF5b3V0Q29uZmlnID0gKGNhcHRpb25XaWR0aCwgY2FwdGlvblBvc2l0aW9uLCBvcyk6IGFueSA9PiB7XG4gICAgbGV0IGNhcHRpb25DbHMgPSAnJyxcbiAgICAgICAgd2lkZ2V0Q2xzID0gJyc7XG5cbiAgICBjYXB0aW9uUG9zaXRpb24gPSBjYXB0aW9uUG9zaXRpb24gfHwgJ3RvcCc7XG5cbiAgICBpZiAoY2FwdGlvblBvc2l0aW9uID09PSAndG9wJyB8fCBjYXB0aW9uUG9zaXRpb24gPT09ICdmbG9hdGluZycpIHtcbiAgICAgICAgaWYgKChvcyAmJiBvcyA9PT0gJ2FuZHJvaWQnKSB8fCAhaXNNb2JpbGVBcHAoKSB8fCBpc0FuZHJvaWQoKSkgeyAvLyBJcyBhbmRyb2lkIG9yIG5vdCBhIG1vYmlsZSBhcHBsaWNhdGlvblxuICAgICAgICAgICAgY2FwdGlvbkNscyA9IHdpZGdldENscyA9ICdjb2wteHMtMTInO1xuICAgICAgICB9IGVsc2UgaWYgKGlzTW9iaWxlQXBwKCkpIHsgLy8gSXMgYSBtb2JpbGUgYXBwbGljYXRpb24gYW5kIG5vdCBhbmRyb2lkXG4gICAgICAgICAgICBjYXB0aW9uQ2xzID0gJ2NvbC14cy00JztcbiAgICAgICAgICAgIHdpZGdldENscyA9ICdjb2wteHMtOCc7XG4gICAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGNhcHRpb25XaWR0aCkge1xuICAgICAgICAvLyBoYW5kbGluZyBpdGVtc3BlcnJvdyBjb250YWluaW5nIHN0cmluZyBvZiBjbGFzc2VzXG4gICAgICAgIGZvckVhY2goc3BsaXQoY2FwdGlvbldpZHRoLCAnICcpLCBmdW5jdGlvbiAoY2xzKSB7XG4gICAgICAgICAgICBjb25zdCBrZXlzID0gc3BsaXQoY2xzLCAnLScpLFxuICAgICAgICAgICAgICAgIHRpZXIgPSBrZXlzWzBdO1xuICAgICAgICAgICAgbGV0IF9jYXB0aW9uV2lkdGgsXG4gICAgICAgICAgICAgICAgd2lkZ2V0V2lkdGg7XG4gICAgICAgICAgICBfY2FwdGlvbldpZHRoID0gcGFyc2VJbnQoa2V5c1sxXSwgMTApO1xuICAgICAgICAgICAgd2lkZ2V0V2lkdGggID0gMTIgLSBfY2FwdGlvbldpZHRoO1xuICAgICAgICAgICAgd2lkZ2V0V2lkdGggID0gd2lkZ2V0V2lkdGggPD0gMCA/IDEyIDogd2lkZ2V0V2lkdGg7XG4gICAgICAgICAgICBjYXB0aW9uQ2xzICs9ICcgJyArICdjb2wtJyArIHRpZXIgKyAnLScgKyBfY2FwdGlvbldpZHRoO1xuICAgICAgICAgICAgd2lkZ2V0Q2xzICArPSAnICcgKyAnY29sLScgKyB0aWVyICsgJy0nICsgd2lkZ2V0V2lkdGg7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgICAnY2FwdGlvbkNscycgOiBjYXB0aW9uQ2xzLFxuICAgICAgICAnd2lkZ2V0Q2xzJyAgOiB3aWRnZXRDbHNcbiAgICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldERlZmF1bHRWaWV3TW9kZVdpZGdldCA9IHdpZGdldCA9PiB7XG4gICAgaWYgKGluY2x1ZGVzKFsnY2hlY2tib3gnLCAndG9nZ2xlJywgJ3JhdGluZyddLCB3aWRnZXQpKSB7XG4gICAgICAgIHJldHVybiBWSUVXX01PREVfT1BUSU9OUy5ERUZBVUxUO1xuICAgIH1cbiAgICByZXR1cm4gVklFV19NT0RFX09QVElPTlMuTEFCRUw7XG59O1xuXG5jb25zdCBwYXJzZUJvb2xlYW5WYWx1ZSA9IHZhbHVlID0+IHtcbiAgICBpZiAodmFsdWUgPT09ICd0cnVlJykge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKHZhbHVlID09PSAnZmFsc2UnKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKC9eXFxkKyQvLnRlc3QodmFsdWUpKSB7IC8vIENoZWNrIGlmIHRoZSB2YWx1ZSBpcyBhIHN0cmluZyBvZiBudW1iZXIgdHlwZSBsaWtlICcxMjMnXG4gICAgICAgIHJldHVybiArdmFsdWU7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZTtcbn07XG5cbmV4cG9ydCBjb25zdCBwYXJzZVZhbHVlQnlUeXBlID0gKHZhbHVlLCB0eXBlLCB3aWRnZXQsIHRyYWlsaW5nemVybz8pID0+IHtcbiAgICBpZiAod2lkZ2V0KSB7XG4gICAgICAgIGlmICh3aWRnZXQgPT09IEZvcm1XaWRnZXRUeXBlLk5VTUJFUiB8fCB3aWRnZXQgPT09IEZvcm1XaWRnZXRUeXBlLlNMSURFUiB8fCB3aWRnZXQgPT09IEZvcm1XaWRnZXRUeXBlLkNVUlJFTkNZKSB7XG4gICAgICAgICAgICByZXR1cm4gaXNOYU4oTnVtYmVyKHZhbHVlKSkgPyBudWxsIDogdHJhaWxpbmd6ZXJvID8gdmFsdWUgOiBOdW1iZXIodmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh3aWRnZXQgPT09IEZvcm1XaWRnZXRUeXBlLkNIRUNLQk9YIHx8IHdpZGdldCA9PT0gRm9ybVdpZGdldFR5cGUuVE9HR0xFKSB7XG4gICAgICAgICAgICByZXR1cm4gcGFyc2VCb29sZWFuVmFsdWUodmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gICAgaWYgKGlzTnVtYmVyVHlwZSh0eXBlKSkge1xuICAgICAgICByZXR1cm4gaXNOYU4oTnVtYmVyKHZhbHVlKSkgPyBudWxsIDogTnVtYmVyKHZhbHVlKTtcbiAgICB9XG4gICAgaWYgKHR5cGUgPT09IERhdGFUeXBlLkJPT0xFQU4pIHtcbiAgICAgICAgcmV0dXJuIHBhcnNlQm9vbGVhblZhbHVlKHZhbHVlKTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlO1xufTtcblxuY29uc3QgZmllbGRUeXBlV2lkZ2V0VHlwZU1hcCA9IHtcbiAgICAnaW50ZWdlcicgICAgOiBbJ251bWJlcicsICd0ZXh0JywgJ3NlbGVjdCcsICdjaGVja2JveHNldCcsICdyYWRpb3NldCcsICdyYXRpbmcnLCAnc2xpZGVyJywgJ2N1cnJlbmN5JywgJ2F1dG9jb21wbGV0ZScsICdjaGlwcyddLFxuICAgICdiaWdfaW50ZWdlcic6IFsnbnVtYmVyJywgJ3RleHQnLCAnc2VsZWN0JywgJ2NoZWNrYm94c2V0JywgJ3JhZGlvc2V0JywgJ3JhdGluZycsICdzbGlkZXInLCAnY3VycmVuY3knLCAnYXV0b2NvbXBsZXRlJywgJ2NoaXBzJ10sXG4gICAgJ3Nob3J0JyAgICAgIDogWydudW1iZXInLCAndGV4dCcsICdzZWxlY3QnLCAnY2hlY2tib3hzZXQnLCAncmFkaW9zZXQnLCAnc2xpZGVyJywgJ2N1cnJlbmN5JywgJ2F1dG9jb21wbGV0ZScsICdjaGlwcyddLFxuICAgICdmbG9hdCcgICAgICA6IFsnbnVtYmVyJywgJ3RleHQnLCAnc2VsZWN0JywgJ2NoZWNrYm94c2V0JywgJ3JhZGlvc2V0JywgJ3NsaWRlcicsICdjdXJyZW5jeScsICdhdXRvY29tcGxldGUnLCAnY2hpcHMnXSxcbiAgICAnYmlnX2RlY2ltYWwnOiBbJ251bWJlcicsICd0ZXh0JywgJ3NlbGVjdCcsICdjaGVja2JveHNldCcsICdyYWRpb3NldCcsICdzbGlkZXInLCAnY3VycmVuY3knLCAnYXV0b2NvbXBsZXRlJywgJ2NoaXBzJ10sXG4gICAgJ251bWJlcicgICAgIDogWydudW1iZXInLCAndGV4dCcsICdzZWxlY3QnLCAnY2hlY2tib3hzZXQnLCAncmFkaW9zZXQnLCAnc2xpZGVyJywgJ2N1cnJlbmN5JywgJ2F1dG9jb21wbGV0ZScsICdjaGlwcyddLFxuICAgICdkb3VibGUnICAgICA6IFsnbnVtYmVyJywgJ3RleHQnLCAnc2VsZWN0JywgJ2NoZWNrYm94c2V0JywgJ3JhZGlvc2V0JywgJ3NsaWRlcicsICdjdXJyZW5jeScsICdhdXRvY29tcGxldGUnLCAnY2hpcHMnXSxcbiAgICAnbG9uZycgICAgICAgOiBbJ251bWJlcicsICd0ZXh0JywgJ3NlbGVjdCcsICdjaGVja2JveHNldCcsICdyYWRpb3NldCcsICdyYXRpbmcnLCAnc2xpZGVyJywgJ2N1cnJlbmN5JywgJ2F1dG9jb21wbGV0ZScsICdjaGlwcyddLFxuICAgICdieXRlJyAgICAgICA6IFsnbnVtYmVyJywgJ3RleHQnLCAnc2VsZWN0JywgJ2NoZWNrYm94c2V0JywgJ3JhZGlvc2V0JywgJ3NsaWRlcicsICdjdXJyZW5jeScsICdhdXRvY29tcGxldGUnLCAnY2hpcHMnXSxcbiAgICAnc3RyaW5nJyAgICAgOiBbJ3RleHQnLCAnbnVtYmVyJywgICd0ZXh0YXJlYScsICdwYXNzd29yZCcsICdyaWNodGV4dCcsICdzZWxlY3QnLCAnY2hlY2tib3hzZXQnLCAncmFkaW9zZXQnLCAnZGF0ZScsICd0aW1lJywgJ3RpbWVzdGFtcCcsICdzd2l0Y2gnLCAnY3VycmVuY3knLCAnYXV0b2NvbXBsZXRlJywgJ2NoaXBzJywgJ2NvbG9ycGlja2VyJ10sXG4gICAgJ2NoYXJhY3RlcicgIDogWyd0ZXh0JywgJ251bWJlcicsICAndGV4dGFyZWEnLCAncGFzc3dvcmQnLCAncmljaHRleHQnLCAnc2VsZWN0JywgJ2NoZWNrYm94c2V0JywgJ3JhZGlvc2V0JywgJ3N3aXRjaCcsICdjdXJyZW5jeScsICdhdXRvY29tcGxldGUnLCAnY2hpcHMnXSxcbiAgICAndGV4dCcgICAgICAgOiBbJ3RleHQnLCAnbnVtYmVyJywgICd0ZXh0YXJlYScsICdwYXNzd29yZCcsICdyaWNodGV4dCcsICdzZWxlY3QnLCAnY2hlY2tib3hzZXQnLCAncmFkaW9zZXQnLCAnZGF0ZScsICd0aW1lJywgJ3RpbWVzdGFtcCcsICdzd2l0Y2gnLCAnY3VycmVuY3knLCAnYXV0b2NvbXBsZXRlJywgJ2NoaXBzJywgJ2NvbG9ycGlja2VyJ10sXG4gICAgJ2RhdGUnICAgICAgIDogWydkYXRlJywgJ3RleHQnLCAnbnVtYmVyJywgJ3NlbGVjdCcsICdjaGVja2JveHNldCcsICdyYWRpb3NldCcsICdhdXRvY29tcGxldGUnLCAnY2hpcHMnXSxcbiAgICAndGltZScgICAgICAgOiBbJ3RpbWUnLCAndGV4dCcsICdudW1iZXInLCAnc2VsZWN0JywgJ2NoZWNrYm94c2V0JywgJ3JhZGlvc2V0JywgJ2F1dG9jb21wbGV0ZScsICdjaGlwcyddLFxuICAgICd0aW1lc3RhbXAnICA6IFsndGltZXN0YW1wJywgJ3RleHQnLCAnbnVtYmVyJywgJ3NlbGVjdCcsICdjaGVja2JveHNldCcsICdyYWRpb3NldCcsICdhdXRvY29tcGxldGUnLCAnY2hpcHMnXSxcbiAgICAnZGF0ZXRpbWUnICAgOiBbJ2RhdGV0aW1lJywgJ3RleHQnLCAnc2VsZWN0JywgJ2NoZWNrYm94c2V0JywgJ3JhZGlvc2V0JywgJ2F1dG9jb21wbGV0ZScsICdjaGlwcyddLFxuICAgICdib29sZWFuJyAgICA6IFsnY2hlY2tib3gnLCAncmFkaW9zZXQnLCAndG9nZ2xlJywgJ3NlbGVjdCddLFxuICAgICdsaXN0JyAgICAgICA6IFsnc2VsZWN0JywgJ3JhZGlvc2V0JywgJ2NoZWNrYm94c2V0JywgJ3N3aXRjaCcsICdhdXRvY29tcGxldGUnLCAnY2hpcHMnXSxcbiAgICAnY2xvYicgICAgICAgOiBbJ3RleHQnLCAndGV4dGFyZWEnLCAncmljaHRleHQnXSxcbiAgICAnYmxvYicgICAgICAgOiBbJ3VwbG9hZCddLFxuICAgICdmaWxlJyAgICAgICA6IFsndXBsb2FkJ10sXG4gICAgJ2N1c3RvbScgICAgIDogWyd0ZXh0JywgJ251bWJlcicsICAndGV4dGFyZWEnLCAncGFzc3dvcmQnLCAnY2hlY2tib3gnLCAndG9nZ2xlJywgJ3NsaWRlcicsICdyaWNodGV4dCcsICdjdXJyZW5jeScsICdzd2l0Y2gnLFxuICAgICAgICAnc2VsZWN0JywgJ2NoZWNrYm94c2V0JywgJ3JhZGlvc2V0JywgJ2RhdGUnLCAndGltZScsICd0aW1lc3RhbXAnLCAncmF0aW5nJywgJ2RhdGV0aW1lJywgJ2F1dG9jb21wbGV0ZScsICdjaGlwcycsICdjb2xvcnBpY2tlciddXG59O1xuXG4vLyBHZXQgd2lkZ2V0cyBhcHBsaWNhYmxlIHRvIHRoZSBnaXZlbiB0eXBlXG5leHBvcnQgY29uc3QgZ2V0RmllbGRUeXBlV2lkZ2V0VHlwZXNNYXAgPSAoKSA9PiB7XG4gICAgcmV0dXJuIGZpZWxkVHlwZVdpZGdldFR5cGVNYXA7XG59O1xuXG4vLyBHZXQgZmlsdGVyIHdpZGdldCBhcHBsaWNhYmxlIHRvIHRoZSBnaXZlbiB0eXBlXG5leHBvcnQgY29uc3QgZ2V0RGF0YVRhYmxlRmlsdGVyV2lkZ2V0ID0gdHlwZSA9PiB7XG4gICAgbGV0IHdpZGdldCA9IGZpZWxkVHlwZVdpZGdldFR5cGVNYXBbdHlwZV0gJiYgZmllbGRUeXBlV2lkZ2V0VHlwZU1hcFt0eXBlXVswXTtcbiAgICBpZiAodHlwZSA9PT0gRGF0YVR5cGUuQk9PTEVBTikge1xuICAgICAgICB3aWRnZXQgPSBGb3JtV2lkZ2V0VHlwZS5TRUxFQ1Q7XG4gICAgfVxuICAgIGlmIChpbmNsdWRlcyhbRm9ybVdpZGdldFR5cGUuVEVYVCwgRm9ybVdpZGdldFR5cGUuTlVNQkVSLCBGb3JtV2lkZ2V0VHlwZS5TRUxFQ1QsIEZvcm1XaWRnZXRUeXBlLkFVVE9DT01QTEVURSxcbiAgICAgICAgICAgIEZvcm1XaWRnZXRUeXBlLkRBVEUsIEZvcm1XaWRnZXRUeXBlLlRJTUUsIEZvcm1XaWRnZXRUeXBlLkRBVEVUSU1FXSwgd2lkZ2V0KSkge1xuICAgICAgICByZXR1cm4gd2lkZ2V0O1xuICAgIH1cbiAgICByZXR1cm4gRm9ybVdpZGdldFR5cGUuVEVYVDtcbn07XG5cbi8qKlxuICogQG5nZG9jIGZ1bmN0aW9uXG4gKiBAbmFtZSB3bS53aWRnZXRzLmxpdmUuZ2V0RWRpdE1vZGVXaWRnZXRcbiAqIEBtZXRob2RPZiB3bS53aWRnZXRzLmxpdmUuTGl2ZVdpZGdldFV0aWxzXG4gKiBAZnVuY3Rpb25cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgZGVmYXVsdCB3aWRnZXQgZm9yIGdyaWRcbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gY29sRGVmIGZpZWxkIGRlZmluaXRpb25cbiAqL1xuZXhwb3J0IGNvbnN0IGdldEVkaXRNb2RlV2lkZ2V0ID0gY29sRGVmID0+IHtcbiAgICBpZiAoY29sRGVmWydyZWxhdGVkLWVudGl0eS1uYW1lJ10gJiYgY29sRGVmWydwcmltYXJ5LWtleSddKSB7XG4gICAgICAgIHJldHVybiBGb3JtV2lkZ2V0VHlwZS5TRUxFQ1Q7XG4gICAgfVxuICAgIHJldHVybiAoZmllbGRUeXBlV2lkZ2V0VHlwZU1hcFtjb2xEZWYudHlwZV0gJiYgZmllbGRUeXBlV2lkZ2V0VHlwZU1hcFtjb2xEZWYudHlwZV1bMF0pIHx8IEZvcm1XaWRnZXRUeXBlLlRFWFQ7XG59O1xuXG4vKipcbiAqIEBuZ2RvYyBmdW5jdGlvblxuICogQG5hbWUgd20ud2lkZ2V0cy5saXZlLkxpdmVXaWRnZXRVdGlscyNnZXREZWZhdWx0VmFsdWVcbiAqIEBtZXRob2RPZiB3bS53aWRnZXRzLmxpdmUuTGl2ZVdpZGdldFV0aWxzXG4gKiBAZnVuY3Rpb25cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIHJldHVybiB0aGUgZm9ybWF0dGVkIGRlZmF1bHQgdmFsdWVcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWUgdmFsdWUgdG8gYmUgZm9ybWF0dGVkXG4gKiBAcGFyYW0ge3N0cmluZ30gdHlwZSBjb2x1bW4gdHlwZSBvZiB0aGUgdmFsdWVcbiAqL1xuZXhwb3J0IGNvbnN0IGdldERlZmF1bHRWYWx1ZSA9ICh2YWx1ZSwgdHlwZSwgd2lkZ2V0KSA9PiB7XG4gICAgaWYgKHdpZGdldCkge1xuICAgICAgICBpZiAod2lkZ2V0ID09PSBGb3JtV2lkZ2V0VHlwZS5OVU1CRVIgfHwgd2lkZ2V0ID09PSBGb3JtV2lkZ2V0VHlwZS5TTElERVIgfHwgd2lkZ2V0ID09PSBGb3JtV2lkZ2V0VHlwZS5DVVJSRU5DWSkge1xuICAgICAgICAgICAgcmV0dXJuIGlzTmFOKE51bWJlcih2YWx1ZSkpID8gbnVsbCA6IE51bWJlcih2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHdpZGdldCA9PT0gRm9ybVdpZGdldFR5cGUuQ0hFQ0tCT1ggfHwgd2lkZ2V0ID09PSBGb3JtV2lkZ2V0VHlwZS5UT0dHTEUpIHtcbiAgICAgICAgICAgIHJldHVybiBwYXJzZUJvb2xlYW5WYWx1ZSh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgICBpZiAoaXNOdW1iZXJUeXBlKHR5cGUpKSB7XG4gICAgICAgIHJldHVybiBpc05hTihOdW1iZXIodmFsdWUpKSA/IG51bGwgOiBOdW1iZXIodmFsdWUpO1xuICAgIH1cbiAgICBpZiAodHlwZSA9PT0gRGF0YVR5cGUuQk9PTEVBTikge1xuICAgICAgICByZXR1cm4gcGFyc2VCb29sZWFuVmFsdWUodmFsdWUpO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG59O1xuIl19
|
|
217
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGl2ZS11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvYmFzZS9zcmMvdXRpbHMvbGl2ZS11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUMxRixPQUFPLEVBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFDLE1BQU0sV0FBVyxDQUFDO0FBRXhELE1BQU8saUJBQWlCLEdBQUc7SUFDdkIsT0FBTyxFQUFHLFNBQVM7SUFDbkIsS0FBSyxFQUFHLE9BQU87Q0FDbEIsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRztJQUNyQixVQUFVLEVBQUcsV0FBVztJQUN4QixNQUFNLEVBQUcsUUFBUTtJQUNqQixJQUFJLEVBQUcsTUFBTTtJQUNiLE1BQU0sRUFBRyxRQUFRO0NBQ3BCLENBQUM7QUFFRixvREFBb0Q7QUFDcEQsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLENBQUMsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBYyxFQUFRLEVBQUU7SUFDakYsT0FBTyxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsRUFBRTtRQUN6QixJQUFJLEdBQUcsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUN2QixJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssS0FBSyxFQUFFLENBQUM7Z0JBQ3ZCLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEVBQUUsS0FBSyxLQUFLLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDekUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQztv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YSxFQUFFLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsT0FBTyxDQUFDO0lBQy9ILE9BQU8sRUFBUSxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsT0FBTyxDQUFDO0lBQ3JILE9BQU8sRUFBUSxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsT0FBTyxDQUFDO0lBQ3JILGFBQWEsRUFBRSxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsT0FBTyxDQUFDO0lBQ3JILFFBQVEsRUFBTyxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsT0FBTyxDQUFDO0lBQ3JILFFBQVEsRUFBTyxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsT0FBTyxDQUFDO0lBQ3JILE1BQU0sRUFBUyxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLE9BQU8sQ0FBQztJQUMvSCxNQUFNLEVBQVMsQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLE9BQU8sQ0FBQztJ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QUFNLEtBQUssY0FBYyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3pFLE9BQU8saUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDcEMsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFDRCxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ3JCLE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBQ0QsSUFBSSxJQUFJLEtBQUssUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzVCLE9BQU8saUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2pCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzTnVtYmVyVHlwZSwgRm9ybVdpZGdldFR5cGUsIERhdGFUeXBlLCBpc01vYmlsZUFwcCwgaXNBbmRyb2lkIH0gZnJvbSAnQHdtL2NvcmUnO1xuaW1wb3J0IHtmb3JFYWNoLCBnZXQsIGluY2x1ZGVzLCBzcGxpdH0gZnJvbSBcImxvZGFzaC1lc1wiO1xuXG5jb25zdCAgVklFV19NT0RFX09QVElPTlMgPSB7XG4gICAgREVGQVVMVCA6ICdkZWZhdWx0JyxcbiAgICBMQUJFTCA6ICdsYWJlbCdcbn07XG5cbmV4cG9ydCBjb25zdCBFRElUX01PREUgPSB7XG4gICAgUVVJQ0tfRURJVCA6ICdxdWlja2VkaXQnLFxuICAgIElOTElORSA6ICdpbmxpbmUnLFxuICAgIEZPUk0gOiAnZm9ybScsXG4gICAgRElBTE9HIDogJ2RpYWxvZydcbn07XG5cbi8vIE1ldGhvZCB0byBzZXQgdGhlIGhlYWRlciBjb25maWcgb2YgdGhlIGRhdGEgdGFibGVcbmV4cG9ydCBjb25zdCBzZXRIZWFkZXJDb25maWcgPSAoaGVhZGVyQ29uZmlnLCBjb25maWcsIGZpZWxkLCBpbmRleD86IG51bWJlcik6IHZvaWQgPT4ge1xuICAgIGZvckVhY2goaGVhZGVyQ29uZmlnLCBjb2xzID0+IHtcbiAgICAgICAgaWYgKGdldChjb2xzLCAnaXNHcm91cCcpKSB7XG4gICAgICAgICAgICBpZiAoY29scy5maWVsZCA9PT0gZmllbGQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpZCA9IGNvbHMuY29sdW1ucz8uZmluZEluZGV4KChjb2wpID0+IGNvbD8uZmllbGQgPT09IGNvbmZpZy5maWVsZCk7XG4gICAgICAgICAgICAgICAgaWYgKGlkID09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbHMuY29sdW1uc1tpbmRleF0gPSBjb25maWc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29scy5jb2x1bW5zW2lkXSA9IGNvbmZpZztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHNldEhlYWRlckNvbmZpZyhjb2xzLmNvbHVtbnMsIGNvbmZpZywgZmllbGQsIGluZGV4KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IHNldEhlYWRlckNvbmZpZ0ZvclRhYmxlID0gKGhlYWRlckNvbmZpZzogYW55LCBjb25maWc6IGFueSwgZmllbGROYW1lOiBzdHJpbmcsIGluZGV4PzogbnVtYmVyKTogdm9pZCA9PiB7XG4gICAgaWYgKGZpZWxkTmFtZSkge1xuICAgICAgICBzZXRIZWFkZXJDb25maWcoaGVhZGVyQ29uZmlnLCBjb25maWcsIGZpZWxkTmFtZSwgaW5kZXgpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGhlYWRlckNvbmZpZ1tpbmRleF0gPSBjb25maWc7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGdldFJvd09wZXJhdGlvbnNDb2x1bW4gPSAoKTogYW55ID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgICAnZmllbGQnICAgICAgICAgOiAncm93T3BlcmF0aW9ucycsXG4gICAgICAgICd0eXBlJyAgICAgICAgICA6ICdjdXN0b20nLFxuICAgICAgICAnZGlzcGxheU5hbWUnICAgOiAnQWN0aW9ucycsXG4gICAgICAgICd3aWR0aCcgICAgICAgICA6ICcxMjBweCcsXG4gICAgICAgICdyZWFkb25seScgICAgICA6IHRydWUsXG4gICAgICAgICdzb3J0YWJsZScgICAgICA6IGZhbHNlLFxuICAgICAgICAnc2VhcmNoYWJsZScgICAgOiBmYWxzZSxcbiAgICAgICAgJ3Jlc2l6YWJsZScgICAgIDogZmFsc2UsXG4gICAgICAgICdzZWxlY3RhYmxlJyAgICA6IGZhbHNlLFxuICAgICAgICAnc2hvdycgICAgICAgICAgOiB0cnVlLFxuICAgICAgICAnb3BlcmF0aW9ucycgICAgOiBbXSxcbiAgICAgICAgJ29wQ29uZmlnJyAgICAgIDoge30sXG4gICAgICAgICdwY0Rpc3BsYXknICAgICA6IHRydWUsXG4gICAgICAgICdtb2JpbGVEaXNwbGF5JyA6IHRydWUsXG4gICAgICAgICd0YWJsZXREaXNwbGF5JyA6IHRydWUsXG4gICAgICAgICdpbmNsdWRlJyAgICAgICA6IHRydWUsXG4gICAgICAgICdpc1Jvd09wZXJhdGlvbic6IHRydWVcbiAgICB9O1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIGNhcHRpb24gYW5kIHdpZGdldCBib290c3RyYXAgY2xhc3NlcyBmb3IgdGhlIGZpZWxkXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRGaWVsZExheW91dENvbmZpZyA9IChjYXB0aW9uV2lkdGgsIGNhcHRpb25Qb3NpdGlvbiwgb3MpOiBhbnkgPT4ge1xuICAgIGxldCBjYXB0aW9uQ2xzID0gJycsXG4gICAgICAgIHdpZGdldENscyA9ICcnO1xuXG4gICAgY2FwdGlvblBvc2l0aW9uID0gY2FwdGlvblBvc2l0aW9uIHx8ICd0b3AnO1xuXG4gICAgaWYgKGNhcHRpb25Qb3NpdGlvbiA9PT0gJ3RvcCcgfHwgY2FwdGlvblBvc2l0aW9uID09PSAnZmxvYXRpbmcnKSB7XG4gICAgICAgIGlmICgob3MgJiYgb3MgPT09ICdhbmRyb2lkJykgfHwgIWlzTW9iaWxlQXBwKCkgfHwgaXNBbmRyb2lkKCkpIHsgLy8gSXMgYW5kcm9pZCBvciBub3QgYSBtb2JpbGUgYXBwbGljYXRpb25cbiAgICAgICAgICAgIGNhcHRpb25DbHMgPSB3aWRnZXRDbHMgPSAnY29sLXhzLTEyJztcbiAgICAgICAgfSBlbHNlIGlmIChpc01vYmlsZUFwcCgpKSB7IC8vIElzIGEgbW9iaWxlIGFwcGxpY2F0aW9uIGFuZCBub3QgYW5kcm9pZFxuICAgICAgICAgICAgY2FwdGlvbkNscyA9ICdjb2wteHMtNCc7XG4gICAgICAgICAgICB3aWRnZXRDbHMgPSAnY29sLXhzLTgnO1xuICAgICAgICB9XG4gICAgfSBlbHNlIGlmIChjYXB0aW9uV2lkdGgpIHtcbiAgICAgICAgLy8gaGFuZGxpbmcgaXRlbXNwZXJyb3cgY29udGFpbmluZyBzdHJpbmcgb2YgY2xhc3Nlc1xuICAgICAgICBmb3JFYWNoKHNwbGl0KGNhcHRpb25XaWR0aCwgJyAnKSwgZnVuY3Rpb24gKGNscykge1xuICAgICAgICAgICAgY29uc3Qga2V5cyA9IHNwbGl0KGNscywgJy0nKSxcbiAgICAgICAgICAgICAgICB0aWVyID0ga2V5c1swXTtcbiAgICAgICAgICAgIGxldCBfY2FwdGlvbldpZHRoLFxuICAgICAgICAgICAgICAgIHdpZGdldFdpZHRoO1xuICAgICAgICAgICAgX2NhcHRpb25XaWR0aCA9IHBhcnNlSW50KGtleXNbMV0sIDEwKTtcbiAgICAgICAgICAgIHdpZGdldFdpZHRoICA9IDEyIC0gX2NhcHRpb25XaWR0aDtcbiAgICAgICAgICAgIHdpZGdldFdpZHRoICA9IHdpZGdldFdpZHRoIDw9IDAgPyAxMiA6IHdpZGdldFdpZHRoO1xuICAgICAgICAgICAgY2FwdGlvbkNscyArPSAnICcgKyAnY29sLScgKyB0aWVyICsgJy0nICsgX2NhcHRpb25XaWR0aDtcbiAgICAgICAgICAgIHdpZGdldENscyAgKz0gJyAnICsgJ2NvbC0nICsgdGllciArICctJyArIHdpZGdldFdpZHRoO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgJ2NhcHRpb25DbHMnIDogY2FwdGlvbkNscyxcbiAgICAgICAgJ3dpZGdldENscycgIDogd2lkZ2V0Q2xzXG4gICAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXREZWZhdWx0Vmlld01vZGVXaWRnZXQgPSB3aWRnZXQgPT4ge1xuICAgIGlmIChpbmNsdWRlcyhbJ2NoZWNrYm94JywgJ3RvZ2dsZScsICdyYXRpbmcnXSwgd2lkZ2V0KSkge1xuICAgICAgICByZXR1cm4gVklFV19NT0RFX09QVElPTlMuREVGQVVMVDtcbiAgICB9XG4gICAgcmV0dXJuIFZJRVdfTU9ERV9PUFRJT05TLkxBQkVMO1xufTtcblxuY29uc3QgcGFyc2VCb29sZWFuVmFsdWUgPSB2YWx1ZSA9PiB7XG4gICAgaWYgKHZhbHVlID09PSAndHJ1ZScpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlmICh2YWx1ZSA9PT0gJ2ZhbHNlJykge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmICgvXlxcZCskLy50ZXN0KHZhbHVlKSkgeyAvLyBDaGVjayBpZiB0aGUgdmFsdWUgaXMgYSBzdHJpbmcgb2YgbnVtYmVyIHR5cGUgbGlrZSAnMTIzJ1xuICAgICAgICByZXR1cm4gK3ZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG59O1xuXG5leHBvcnQgY29uc3QgcGFyc2VWYWx1ZUJ5VHlwZSA9ICh2YWx1ZSwgdHlwZSwgd2lkZ2V0LCB0cmFpbGluZ3plcm8/KSA9PiB7XG4gICAgaWYgKHdpZGdldCkge1xuICAgICAgICBpZiAod2lkZ2V0ID09PSBGb3JtV2lkZ2V0VHlwZS5OVU1CRVIgfHwgd2lkZ2V0ID09PSBGb3JtV2lkZ2V0VHlwZS5TTElERVIgfHwgd2lkZ2V0ID09PSBGb3JtV2lkZ2V0VHlwZS5DVVJSRU5DWSkge1xuICAgICAgICAgICAgcmV0dXJuIGlzTmFOKE51bWJlcih2YWx1ZSkpID8gbnVsbCA6IHRyYWlsaW5nemVybyA/IHZhbHVlIDogTnVtYmVyKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAod2lkZ2V0ID09PSBGb3JtV2lkZ2V0VHlwZS5DSEVDS0JPWCB8fCB3aWRnZXQgPT09IEZvcm1XaWRnZXRUeXBlLlRPR0dMRSkge1xuICAgICAgICAgICAgcmV0dXJuIHBhcnNlQm9vbGVhblZhbHVlKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICAgIGlmIChpc051bWJlclR5cGUodHlwZSkpIHtcbiAgICAgICAgcmV0dXJuIGlzTmFOKE51bWJlcih2YWx1ZSkpID8gbnVsbCA6IE51bWJlcih2YWx1ZSk7XG4gICAgfVxuICAgIGlmICh0eXBlID09PSBEYXRhVHlwZS5CT09MRUFOKSB7XG4gICAgICAgIHJldHVybiBwYXJzZUJvb2xlYW5WYWx1ZSh2YWx1ZSk7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZTtcbn07XG5cbmNvbnN0IGZpZWxkVHlwZVdpZGdldFR5cGVNYXAgPSB7XG4gICAgJ2ludGVnZXInICAgIDogWydudW1iZXInLCAndGV4dCcsICdzZWxlY3QnLCAnY2hlY2tib3hzZXQnLCAncmFkaW9zZXQnLCAncmF0aW5nJywgJ3NsaWRlcicsICdjdXJyZW5jeScsICdhdXRvY29tcGxldGUnLCAnY2hpcHMnXSxcbiAgICAnYmlnX2ludGVnZXInOiBbJ251bWJlcicsICd0ZXh0JywgJ3NlbGVjdCcsICdjaGVja2JveHNldCcsICdyYWRpb3NldCcsICdyYXRpbmcnLCAnc2xpZGVyJywgJ2N1cnJlbmN5JywgJ2F1dG9jb21wbGV0ZScsICdjaGlwcyddLFxuICAgICdzaG9ydCcgICAgICA6IFsnbnVtYmVyJywgJ3RleHQnLCAnc2VsZWN0JywgJ2NoZWNrYm94c2V0JywgJ3JhZGlvc2V0JywgJ3NsaWRlcicsICdjdXJyZW5jeScsICdhdXRvY29tcGxldGUnLCAnY2hpcHMnXSxcbiAgICAnZmxvYXQnICAgICAgOiBbJ251bWJlcicsICd0ZXh0JywgJ3NlbGVjdCcsICdjaGVja2JveHNldCcsICdyYWRpb3NldCcsICdzbGlkZXInLCAnY3VycmVuY3knLCAnYXV0b2NvbXBsZXRlJywgJ2NoaXBzJ10sXG4gICAgJ2JpZ19kZWNpbWFsJzogWydudW1iZXInLCAndGV4dCcsICdzZWxlY3QnLCAnY2hlY2tib3hzZXQnLCAncmFkaW9zZXQnLCAnc2xpZGVyJywgJ2N1cnJlbmN5JywgJ2F1dG9jb21wbGV0ZScsICdjaGlwcyddLFxuICAgICdudW1iZXInICAgICA6IFsnbnVtYmVyJywgJ3RleHQnLCAnc2VsZWN0JywgJ2NoZWNrYm94c2V0JywgJ3JhZGlvc2V0JywgJ3NsaWRlcicsICdjdXJyZW5jeScsICdhdXRvY29tcGxldGUnLCAnY2hpcHMnXSxcbiAgICAnZG91YmxlJyAgICAgOiBbJ251bWJlcicsICd0ZXh0JywgJ3NlbGVjdCcsICdjaGVja2JveHNldCcsICdyYWRpb3NldCcsICdzbGlkZXInLCAnY3VycmVuY3knLCAnYXV0b2NvbXBsZXRlJywgJ2NoaXBzJ10sXG4gICAgJ2xvbmcnICAgICAgIDogWydudW1iZXInLCAndGV4dCcsICdzZWxlY3QnLCAnY2hlY2tib3hzZXQnLCAncmFkaW9zZXQnLCAncmF0aW5nJywgJ3NsaWRlcicsICdjdXJyZW5jeScsICdhdXRvY29tcGxldGUnLCAnY2hpcHMnXSxcbiAgICAnYnl0ZScgICAgICAgOiBbJ251bWJlcicsICd0ZXh0JywgJ3NlbGVjdCcsICdjaGVja2JveHNldCcsICdyYWRpb3NldCcsICdzbGlkZXInLCAnY3VycmVuY3knLCAnYXV0b2NvbXBsZXRlJywgJ2NoaXBzJ10sXG4gICAgJ3N0cmluZycgICAgIDogWyd0ZXh0JywgJ251bWJlcicsICAndGV4dGFyZWEnLCAncGFzc3dvcmQnLCAncmljaHRleHQnLCAnc2VsZWN0JywgJ2NoZWNrYm94c2V0JywgJ3JhZGlvc2V0JywgJ2RhdGUnLCAndGltZScsICd0aW1lc3RhbXAnLCAnc3dpdGNoJywgJ2N1cnJlbmN5JywgJ2F1dG9jb21wbGV0ZScsICdjaGlwcycsICdjb2xvcnBpY2tlciddLFxuICAgICdjaGFyYWN0ZXInICA6IFsndGV4dCcsICdudW1iZXInLCAgJ3RleHRhcmVhJywgJ3Bhc3N3b3JkJywgJ3JpY2h0ZXh0JywgJ3NlbGVjdCcsICdjaGVja2JveHNldCcsICdyYWRpb3NldCcsICdzd2l0Y2gnLCAnY3VycmVuY3knLCAnYXV0b2NvbXBsZXRlJywgJ2NoaXBzJ10sXG4gICAgJ3RleHQnICAgICAgIDogWyd0ZXh0JywgJ251bWJlcicsICAndGV4dGFyZWEnLCAncGFzc3dvcmQnLCAncmljaHRleHQnLCAnc2VsZWN0JywgJ2NoZWNrYm94c2V0JywgJ3JhZGlvc2V0JywgJ2RhdGUnLCAndGltZScsICd0aW1lc3RhbXAnLCAnc3dpdGNoJywgJ2N1cnJlbmN5JywgJ2F1dG9jb21wbGV0ZScsICdjaGlwcycsICdjb2xvcnBpY2tlciddLFxuICAgICdkYXRlJyAgICAgICA6IFsnZGF0ZScsICd0ZXh0JywgJ251bWJlcicsICdzZWxlY3QnLCAnY2hlY2tib3hzZXQnLCAncmFkaW9zZXQnLCAnYXV0b2NvbXBsZXRlJywgJ2NoaXBzJ10sXG4gICAgJ3RpbWUnICAgICAgIDogWyd0aW1lJywgJ3RleHQnLCAnbnVtYmVyJywgJ3NlbGVjdCcsICdjaGVja2JveHNldCcsICdyYWRpb3NldCcsICdhdXRvY29tcGxldGUnLCAnY2hpcHMnXSxcbiAgICAndGltZXN0YW1wJyAgOiBbJ3RpbWVzdGFtcCcsICd0ZXh0JywgJ251bWJlcicsICdzZWxlY3QnLCAnY2hlY2tib3hzZXQnLCAncmFkaW9zZXQnLCAnYXV0b2NvbXBsZXRlJywgJ2NoaXBzJ10sXG4gICAgJ2RhdGV0aW1lJyAgIDogWydkYXRldGltZScsICd0ZXh0JywgJ3NlbGVjdCcsICdjaGVja2JveHNldCcsICdyYWRpb3NldCcsICdhdXRvY29tcGxldGUnLCAnY2hpcHMnXSxcbiAgICAnYm9vbGVhbicgICAgOiBbJ2NoZWNrYm94JywgJ3JhZGlvc2V0JywgJ3RvZ2dsZScsICdzZWxlY3QnXSxcbiAgICAnbGlzdCcgICAgICAgOiBbJ3NlbGVjdCcsICdyYWRpb3NldCcsICdjaGVja2JveHNldCcsICdzd2l0Y2gnLCAnYXV0b2NvbXBsZXRlJywgJ2NoaXBzJ10sXG4gICAgJ2Nsb2InICAgICAgIDogWyd0ZXh0JywgJ3RleHRhcmVhJywgJ3JpY2h0ZXh0J10sXG4gICAgJ2Jsb2InICAgICAgIDogWyd1cGxvYWQnXSxcbiAgICAnZmlsZScgICAgICAgOiBbJ3VwbG9hZCddLFxuICAgICdjdXN0b20nICAgICA6IFsndGV4dCcsICdudW1iZXInLCAgJ3RleHRhcmVhJywgJ3Bhc3N3b3JkJywgJ2NoZWNrYm94JywgJ3RvZ2dsZScsICdzbGlkZXInLCAncmljaHRleHQnLCAnY3VycmVuY3knLCAnc3dpdGNoJyxcbiAgICAgICAgJ3NlbGVjdCcsICdjaGVja2JveHNldCcsICdyYWRpb3NldCcsICdkYXRlJywgJ3RpbWUnLCAndGltZXN0YW1wJywgJ3JhdGluZycsICdkYXRldGltZScsICdhdXRvY29tcGxldGUnLCAnY2hpcHMnLCAnY29sb3JwaWNrZXInXVxufTtcblxuLy8gR2V0IHdpZGdldHMgYXBwbGljYWJsZSB0byB0aGUgZ2l2ZW4gdHlwZVxuZXhwb3J0IGNvbnN0IGdldEZpZWxkVHlwZVdpZGdldFR5cGVzTWFwID0gKCkgPT4ge1xuICAgIHJldHVybiBmaWVsZFR5cGVXaWRnZXRUeXBlTWFwO1xufTtcblxuLy8gR2V0IGZpbHRlciB3aWRnZXQgYXBwbGljYWJsZSB0byB0aGUgZ2l2ZW4gdHlwZVxuZXhwb3J0IGNvbnN0IGdldERhdGFUYWJsZUZpbHRlcldpZGdldCA9IHR5cGUgPT4ge1xuICAgIGxldCB3aWRnZXQgPSBmaWVsZFR5cGVXaWRnZXRUeXBlTWFwW3R5cGVdICYmIGZpZWxkVHlwZVdpZGdldFR5cGVNYXBbdHlwZV1bMF07XG4gICAgaWYgKHR5cGUgPT09IERhdGFUeXBlLkJPT0xFQU4pIHtcbiAgICAgICAgd2lkZ2V0ID0gRm9ybVdpZGdldFR5cGUuU0VMRUNUO1xuICAgIH1cbiAgICBpZiAoaW5jbHVkZXMoW0Zvcm1XaWRnZXRUeXBlLlRFWFQsIEZvcm1XaWRnZXRUeXBlLk5VTUJFUiwgRm9ybVdpZGdldFR5cGUuU0VMRUNULCBGb3JtV2lkZ2V0VHlwZS5BVVRPQ09NUExFVEUsXG4gICAgICAgICAgICBGb3JtV2lkZ2V0VHlwZS5EQVRFLCBGb3JtV2lkZ2V0VHlwZS5USU1FLCBGb3JtV2lkZ2V0VHlwZS5EQVRFVElNRV0sIHdpZGdldCkpIHtcbiAgICAgICAgcmV0dXJuIHdpZGdldDtcbiAgICB9XG4gICAgcmV0dXJuIEZvcm1XaWRnZXRUeXBlLlRFWFQ7XG59O1xuXG4vKipcbiAqIEBuZ2RvYyBmdW5jdGlvblxuICogQG5hbWUgd20ud2lkZ2V0cy5saXZlLmdldEVkaXRNb2RlV2lkZ2V0XG4gKiBAbWV0aG9kT2Ygd20ud2lkZ2V0cy5saXZlLkxpdmVXaWRnZXRVdGlsc1xuICogQGZ1bmN0aW9uXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIGRlZmF1bHQgd2lkZ2V0IGZvciBncmlkXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IGNvbERlZiBmaWVsZCBkZWZpbml0aW9uXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRFZGl0TW9kZVdpZGdldCA9IGNvbERlZiA9PiB7XG4gICAgaWYgKGNvbERlZlsncmVsYXRlZC1lbnRpdHktbmFtZSddICYmIGNvbERlZlsncHJpbWFyeS1rZXknXSkge1xuICAgICAgICByZXR1cm4gRm9ybVdpZGdldFR5cGUuU0VMRUNUO1xuICAgIH1cbiAgICByZXR1cm4gKGZpZWxkVHlwZVdpZGdldFR5cGVNYXBbY29sRGVmLnR5cGVdICYmIGZpZWxkVHlwZVdpZGdldFR5cGVNYXBbY29sRGVmLnR5cGVdWzBdKSB8fCBGb3JtV2lkZ2V0VHlwZS5URVhUO1xufTtcblxuLyoqXG4gKiBAbmdkb2MgZnVuY3Rpb25cbiAqIEBuYW1lIHdtLndpZGdldHMubGl2ZS5MaXZlV2lkZ2V0VXRpbHMjZ2V0RGVmYXVsdFZhbHVlXG4gKiBAbWV0aG9kT2Ygd20ud2lkZ2V0cy5saXZlLkxpdmVXaWRnZXRVdGlsc1xuICogQGZ1bmN0aW9uXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiByZXR1cm4gdGhlIGZvcm1hdHRlZCBkZWZhdWx0IHZhbHVlXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlIHZhbHVlIHRvIGJlIGZvcm1hdHRlZFxuICogQHBhcmFtIHtzdHJpbmd9IHR5cGUgY29sdW1uIHR5cGUgb2YgdGhlIHZhbHVlXG4gKi9cbmV4cG9ydCBjb25zdCBnZXREZWZhdWx0VmFsdWUgPSAodmFsdWUsIHR5cGUsIHdpZGdldCkgPT4ge1xuICAgIGlmICh3aWRnZXQpIHtcbiAgICAgICAgaWYgKHdpZGdldCA9PT0gRm9ybVdpZGdldFR5cGUuTlVNQkVSIHx8IHdpZGdldCA9PT0gRm9ybVdpZGdldFR5cGUuU0xJREVSIHx8IHdpZGdldCA9PT0gRm9ybVdpZGdldFR5cGUuQ1VSUkVOQ1kpIHtcbiAgICAgICAgICAgIHJldHVybiBpc05hTihOdW1iZXIodmFsdWUpKSA/IG51bGwgOiBOdW1iZXIodmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh3aWRnZXQgPT09IEZvcm1XaWRnZXRUeXBlLkNIRUNLQk9YIHx8IHdpZGdldCA9PT0gRm9ybVdpZGdldFR5cGUuVE9HR0xFKSB7XG4gICAgICAgICAgICByZXR1cm4gcGFyc2VCb29sZWFuVmFsdWUodmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gICAgaWYgKGlzTnVtYmVyVHlwZSh0eXBlKSkge1xuICAgICAgICByZXR1cm4gaXNOYU4oTnVtYmVyKHZhbHVlKSkgPyBudWxsIDogTnVtYmVyKHZhbHVlKTtcbiAgICB9XG4gICAgaWYgKHR5cGUgPT09IERhdGFUeXBlLkJPT0xFQU4pIHtcbiAgICAgICAgcmV0dXJuIHBhcnNlQm9vbGVhblZhbHVlKHZhbHVlKTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlO1xufTtcbiJdfQ==
|
|
@@ -10,7 +10,7 @@ import { widgetIdGenerator } from '../../framework/widget-id-generator';
|
|
|
10
10
|
import { DISPLAY_TYPE, EVENTS_MAP } from '../../framework/constants';
|
|
11
11
|
import { WidgetProxyProvider } from '../../framework/widget-proxy-provider';
|
|
12
12
|
import { getWatchIdentifier } from '../../../utils/widget-utils';
|
|
13
|
-
import { camelCase, extend, forEach, isArray, isObject, join, map } from "lodash-es";
|
|
13
|
+
import { camelCase, extend, forEach, isArray, isObject, join, last, map } from "lodash-es";
|
|
14
14
|
import * as i0 from "@angular/core";
|
|
15
15
|
// Gets list of classes to add and remove and applies on the $el
|
|
16
16
|
const updateClasses = (toAdd, toRemove, el) => {
|
|
@@ -137,6 +137,10 @@ export class BaseComponent {
|
|
|
137
137
|
else {
|
|
138
138
|
this.delayedInit = true;
|
|
139
139
|
initPromise.then((resolveFn) => {
|
|
140
|
+
let formFieldCW = this.widgetSubType === 'wm-form-field-custom-widget', cw = this.widgetSubType.startsWith('wm-custom-');
|
|
141
|
+
if (formFieldCW || cw) {
|
|
142
|
+
this.customWidgetSubType = formFieldCW ? 'wm-form-field-' + last(this["formWidget"].config.widgetType.split('-')) : this["config"].widgetType;
|
|
143
|
+
}
|
|
140
144
|
this.initWidget();
|
|
141
145
|
this.setInitProps();
|
|
142
146
|
resolveFn && resolveFn();
|
|
@@ -396,7 +400,7 @@ export class BaseComponent {
|
|
|
396
400
|
this.initState.delete(propName);
|
|
397
401
|
let viewParent = child ? child.widget.viewParent.viewParent : this.viewParent, context = child ? child.widget.context : this.context, widget = child ? child.widget : this.widget, isMuted = child ? child.widget.isMuted : this.isMuted, widgetProps = child ? child.widget.widgetProps : this.widgetProps, widgetId = child ? child.widget.widgetId : this.widgetId;
|
|
398
402
|
this.registerDestroyListener($watch(expr, viewParent, context, nv => {
|
|
399
|
-
if (propName.startsWith('base-'))
|
|
403
|
+
if (propName.startsWith('base-') && widget.updateData)
|
|
400
404
|
widget.updateData(propName, nv);
|
|
401
405
|
widget[propName] = nv;
|
|
402
406
|
}, getWatchIdentifier(widgetId, propName), propName === 'datasource', widgetProps.get(propName), () => isMuted));
|
|
@@ -433,12 +437,12 @@ export class BaseComponent {
|
|
|
433
437
|
const { 0: propName, 1: type, 2: meta, length } = attrName.split('.');
|
|
434
438
|
if (type === 'bind') {
|
|
435
439
|
// if the show property is bound, set the initial value to false
|
|
436
|
-
if (propName === 'show') {
|
|
440
|
+
if (propName === 'show' && !this.widgetSubType.startsWith('wm-custom-')) {
|
|
437
441
|
this.nativeElement.hidden = true;
|
|
438
442
|
}
|
|
439
443
|
this.processBindAttr(propName, attrValue, child);
|
|
440
444
|
}
|
|
441
|
-
else if (type === 'event' && !this.nativeElement.hasAttribute('
|
|
445
|
+
else if (type === 'event' && !this.nativeElement.hasAttribute('wmwidgetcontainer')) {
|
|
442
446
|
this.processEventAttr(propName, attrValue, meta, child);
|
|
443
447
|
}
|
|
444
448
|
else if (length === 1) {
|
|
@@ -507,6 +511,12 @@ export class BaseComponent {
|
|
|
507
511
|
this.initState = new Map();
|
|
508
512
|
// get the widget properties
|
|
509
513
|
const widgetProps = getWidgetPropsByType(this.widgetSubType);
|
|
514
|
+
if (this.customWidgetSubType) {
|
|
515
|
+
const customWidgetProps = getWidgetPropsByType(this.customWidgetSubType);
|
|
516
|
+
customWidgetProps.forEach((v, k) => {
|
|
517
|
+
widgetProps.set(k, v);
|
|
518
|
+
});
|
|
519
|
+
}
|
|
510
520
|
widgetProps.forEach((v, k) => {
|
|
511
521
|
if (isDefined(v.value)) {
|
|
512
522
|
this.initState.set(k, v.value);
|
|
@@ -647,4 +657,4 @@ export class BaseComponent {
|
|
|
647
657
|
}, {
|
|
648
658
|
type: Optional
|
|
649
659
|
}] }, { type: Promise }], null); })();
|
|
650
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL2Jhc2Uvc3JjL3dpZGdldHMvY29tbW9uL2Jhc2UvYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdILFVBQVUsRUFDVixNQUFNLEVBQ04sTUFBTSxFQUNOLFVBQVUsRUFDVixRQUFRLEVBR1IsUUFBUSxFQUNSLGdCQUFnQixFQUNuQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFFdkQsT0FBTyxFQUFDLGFBQWEsRUFBRSxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFNUMsT0FBTyxFQUNILGVBQWUsRUFDZixXQUFXLEVBQ1gsUUFBUSxFQUNSLE1BQU0sRUFDTixRQUFRLEVBQ1IsR0FBRyxFQUNILFVBQVUsRUFDVixTQUFTLEVBQ1QsV0FBVyxFQUNYLFVBQVUsRUFDVixXQUFXLEVBQ1gsT0FBTyxFQUNQLE1BQU0sRUFDTixhQUFhLEVBQ2IsV0FBVyxFQUNkLE1BQU0sVUFBVSxDQUFDO0FBRWxCLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUMvQyxPQUFPLEVBQUMsUUFBUSxFQUFFLFlBQVksRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBaUIsT0FBTyxFQUFpQixZQUFZLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUMzRixPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQUN0RSxPQUFPLEVBQUMsWUFBWSxFQUFFLFVBQVUsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQ25FLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLHVDQUF1QyxDQUFDO0FB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QUFrQjt1RUFqSVosYUFBYSxXQUFiLGFBQWE7O2lGQUFiLGFBQWE7Y0FEbEMsVUFBVTs7c0JBaUlGLE1BQU07dUJBQUMsWUFBWTs7c0JBQ25CLE1BQU07dUJBQUMsa0JBQWtCOztzQkFBRyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlckNvbnRlbnRJbml0LFxuICAgIEFmdGVyVmlld0luaXQsXG4gICAgRWxlbWVudFJlZixcbiAgICBJbmplY3QsXG4gICAgaW5qZWN0LFxuICAgIEluamVjdGFibGUsXG4gICAgSW5qZWN0b3IsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPcHRpb25hbCxcbiAgICBWaWV3Q29udGFpbmVyUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtFdmVudE1hbmFnZXJ9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuXG5pbXBvcnQge1JlcGxheVN1YmplY3QsIFN1YmplY3R9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1xuICAgICRpbnZva2VXYXRjaGVycyxcbiAgICAkcGFyc2VFdmVudCxcbiAgICAkdW53YXRjaCxcbiAgICAkd2F0Y2gsXG4gICAgYWRkQ2xhc3MsXG4gICAgQXBwLFxuICAgIGZpbmRQYXJlbnQsXG4gICAgaXNEZWZpbmVkLFxuICAgIGlzTW9iaWxlQXBwLFxuICAgIHJlbW92ZUF0dHIsXG4gICAgcmVtb3ZlQ2xhc3MsXG4gICAgc2V0QXR0cixcbiAgICBzZXRDU1MsXG4gICAgc2V0Q1NTRnJvbU9iaixcbiAgICBzd2l0Y2hDbGFzc1xufSBmcm9tICdAd20vY29yZSc7XG5cbmltcG9ydCB7Z2V0V2lkZ2V0UHJvcHNCeVR5cGV9IGZyb20gJy4uLy4uL2ZyYW1ld29yay93aWRnZXQtcHJvcHMnO1xuaW1wb3J0IHtpc1N0eWxlfSBmcm9tICcuLi8uLi9mcmFtZXdvcmsvc3R5bGVyJztcbmltcG9ydCB7cmVnaXN0ZXIsIHJlbmFtZVdpZGdldH0gZnJvbSAnLi4vLi4vZnJhbWV3b3JrL3dpZGdldC1yZWdpc3RyeSc7XG5pbXBvcnQge0NoYW5nZUxpc3RlbmVyLCBDb250ZXh0LCBJV2lkZ2V0Q29uZmlnLCBXaWRnZXRDb25maWd9IGZyb20gJy4uLy4uL2ZyYW1ld29yay90eXBlcyc7XG5pbXBvcnQge3dpZGdldElkR2VuZXJhdG9yfSBmcm9tICcuLi8uLi9mcmFtZXdvcmsvd2lkZ2V0LWlkLWdlbmVyYXRvcic7XG5pbXBvcnQge0RJU1BMQVlfVFlQRSwgRVZFTlRTX01BUH0gZnJvbSAnLi4vLi4vZnJhbWV3b3JrL2NvbnN0YW50cyc7XG5pbXBvcnQge1dpZGdldFByb3h5UHJvdmlkZXJ9IGZyb20gJy4uLy4uL2ZyYW1ld29yay93aWRnZXQtcHJveHktcHJvdmlkZXInO1xuaW1wb3J0IHtnZXRXYXRjaElkZW50aWZpZXJ9IGZyb20gJy4uLy4uLy4uL3V0aWxzL3dpZGdldC11dGlscyc7XG5pbXBvcnQge2NhbWVsQ2FzZSwgZXh0ZW5kLCBmb3JFYWNoLCBpc0FycmF5LCBpc09iamVjdCwgam9pbiwgbWFwfSBmcm9tIFwibG9kYXNoLWVzXCI7XG5cbmRlY2xhcmUgY29uc3QgJDtcblxuLy8gR2V0cyBsaXN0IG9mIGNsYXNzZXMgdG8gYWRkIGFuZCByZW1vdmUgYW5kIGFwcGxpZXMgb24gdGhlICRlbFxuY29uc3QgdXBkYXRlQ2xhc3NlcyA9ICh0b0FkZCwgdG9SZW1vdmUsIGVsKSA9PiB7XG4gICAgaWYgKHRvUmVtb3ZlICYmIHRvUmVtb3ZlLmxlbmd0aCkge1xuICAgICAgICByZW1vdmVDbGFzcyhlbCwgam9pbih0b1JlbW92ZSwgJyAnKSk7XG4gICAgfVxuICAgIGlmICh0b0FkZCAmJiB0b0FkZC5sZW5ndGgpIHtcbiAgICAgICAgYWRkQ2xhc3MoZWwsIGpvaW4odG9BZGQsICcgJykpO1xuICAgIH1cbn07XG5cbi8vIFRvIGFkZCBhbmQgcmVtb3ZlIHN0eWxlcyBvbiB0aGUgJGVsXG5jb25zdCB1cGRhdGVTdHlsZXMgPSAobnYsIG92LCBlbCkgPT4ge1xuICAgIGlmIChvdiAmJiBpc09iamVjdChvdikpIHtcbiAgICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKG92IHx8IHt9KTtcbiAgICAgICAga2V5cy5mb3JFYWNoKGZ1bmN0aW9uKGtleSkge1xuICAgICAgICAgICAgc2V0Q1NTKGVsLCBrZXksICcnKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGlmIChudiAmJiBpc09iamVjdChudikpIHtcbiAgICAgICAgc2V0Q1NTRnJvbU9iaihlbCwgbnYpO1xuICAgIH1cblxufTtcblxuaW50ZXJmYWNlIENoaWxkIHtcbiAgICB3aWRnZXQ6IGFueSxcbiAgICBuYXRpdmVFbGVtZW50OiBhbnlcbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgQWZ0ZXJDb250ZW50SW5pdCB7XG5cbiAgICAvKipcbiAgICAgKiB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHdpZGdldFxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSB3aWRnZXRJZDogYW55O1xuXG4gICAgcHVibGljIGlzRGVzdHJveWVkOiBib29sZWFuO1xuXG4gICAgcHVibGljIGlzQXR0YWNoZWQgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIGpRdWVyeSBuYXRpdmVFbGVtZW50IHJlZmVyZW5jZSBvZiB0aGUgY29tcG9uZW50IHJvb3RcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0ICRlbGVtZW50KCkge1xuICAgICAgICByZXR1cm4gJCh0aGlzLm5hdGl2ZUVsZW1lbnQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERPTSBub2RlIHJlZmVyZW5jZSBvZiB0aGUgY29tcG9uZW50IHJvb3RcbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgbmF0aXZlRWxlbWVudDogSFRNTEVsZW1lbnQ7XG5cbiAgICAvKipcbiAgICAgKiBUeXBlIG9mIHRoZSBjb21wb25lbnRcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgd2lkZ2V0VHlwZTogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogTW9zdCBvZiB0aGUgY2FzZXMgaXQgaXMgc2FtZSBhcyB3aWRnZXRUeXBlXG4gICAgICogZm9yIHNwZWNpZmljIHdpZGdldHMgbGlrZSBjaGFydHMgd2lkZ2V0VHlwZSBjYW4gYmUgd20tY2hhcnQgd2hlcmUgYXMgdGhlIHN1YnR5cGUgY2FuIGJlIHdtLWJhci1jaGFydFxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSB3aWRnZXRTdWJUeXBlOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBQcm94eSBmb3IgdGhlIGNvbXBvbmVudCBpbnN0YW5jZS5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgd2lkZ2V0OiBhbnk7XG5cbiAgICAvKipcbiAgICAgKiBWaWV3IHBhcmVudCBjb21wb25lbnRcbiAgICAgKiBlZywgUGFnZSwgUGFydGlhbCwgUHJlZmFiXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHZpZXdQYXJlbnQ6IGFueTtcblxuICAgIC8qKlxuICAgICAqIEV2ZW50TWFuZ2VyIHRvIGFkZC9yZW1vdmUgZXZlbnRzXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGV2ZW50TWFuYWdlcjogRXZlbnRNYW5hZ2VyO1xuXG4gICAgLyoqXG4gICAgICogQXBwIExvY2FsZVxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBhcHBMb2NhbGU6IGFueTtcblxuICAgIC8qKlxuICAgICAqIFN0eWxlIGNoYW5nZSBzdWJqZWN0IGFuZCBvYnNlcnZhYmxlXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBzdHlsZUNoYW5nZSA9IG5ldyBSZXBsYXlTdWJqZWN0KCk7XG5cbiAgICAvKipcbiAgICAgKiBQcm9wZXJ0eSBjaGFuZ2Ugc3ViamVjdCBhbmQgb2JzZXJ2YWJsZVxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcHJvcGVydHlDaGFuZ2UgPSBuZXcgU3ViamVjdCgpO1xuXG4gICAgLyoqXG4gICAgICogT24gUmVhZHkgU3RhdGUgY2hhbmdlIHN1YmplY3QgYW5kIG9ic2VydmFibGVcbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlYWR5U3RhdGUgPSBuZXcgU3ViamVjdCgpO1xuXG4gICAgLyoqXG4gICAgICogQ29tcG9uZW50IGRlc3Ryb3kgc3ViamVjdCBhbmQgb2JzZXJ2YWJsZVxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgICAvKipcbiAgICAgKiBNYXAgb2YgZXZlbnQgaGFuZGxlciBjYWxsYmFja3NcbiAgICAgKi9cbiAgICBwcml2YXRlIGV2ZW50SGFuZGxlcnMgPSBuZXcgTWFwPHN0cmluZywge2NhbGxiYWNrOiBGdW5jdGlvbiwgbG9jYWxzOiBhbnl9PigpO1xuXG4gICAgLyoqXG4gICAgICogY29udGV4dCBvZiB0aGUgd2lkZ2V0XG4gICAgICogd2hlbiB0aGUgd2lkZ2V0IGlzIHByZXNldCBpbnNpZGUgYSByZXBlYXRlciB0aGlzIGNvbnRleHQgd2lsbCBoYXZlIHRoZSByZXBlYXRlciByZWxhdGVkIHByb3BlcnRpZXNcbiAgICAgKi9cbiAgICBwdWJsaWMgY29udGV4dDogYW55O1xuXG4gICAgLyoqXG4gICAgICogSW5pdGlhbCBzdGF0ZSBvZiB0aGUgd2lkZ2V0LlxuICAgICAqIFdpbGwgYmUgdW5kZWZpbmVkIG9uY2UgdGhlIGluaXRpYWwgcHJvcGVydGllcyBhcmUgc2V0IG9uIHRvIHRoZSBjb21wb25lbnRcbiAgICAgKi9cbiAgICBwcml2YXRlIGluaXRTdGF0ZTogTWFwPHN0cmluZywgYW55PjtcblxuICAgIC8qKlxuICAgICAqIEludGVybmFsIGZsYWcgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdG8gd2FpdCBmb3IgdGhlIHdpZGdldCBpbml0aWFsaXphdGlvbiBvciBub3RcbiAgICAgKiBJZiB0aGUgaW5pdFByb21pc2UgaXMgcHJvdmlkZWQgaW4gdGhlIGNvbnN0cnVjdGlvbiB3YWl0IHRpbGwgdGhlIHByb21pc2UgaXMgcmVzb2x2ZWRcbiAgICAgKiBJZiB0aGUgaW5pdFByb21pc2UgaXMgbm90IHByb3ZpZGVkIHByb2NlZWQgd2l0aCB0aGUgaW5pdGlhbGl6YXRpb24sIHdoaWNoIGlzIHRoZSBkZWZhdWx0IGJlaGF2aW9yLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVsYXllZEluaXQ6IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBEaXNwbGF5IHR5cGUgb2YgdGhlIGNvbXBvbmVudC4gZWcsIGJsb2NrKERlZmF1bHQpLCBpbmxpbmUtYmxvY2ssIGlubGluZSBldGNcbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGRpc3BsYXlUeXBlOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBIb2xkcyB0aGUgZXZlbnQgcmVnaXN0cmF0aW9uIGZ1bmN0aW9ucy5cbiAgICAgKiB0aGVzZSBmdW5jdGlvbnMgbmVlZHMgdG8gYmUgZXhlY3V0ZWQgYWZ0ZXIgb25WaWV3SW5pdFxuICAgICAqL1xuICAgIHByaXZhdGUgdG9CZVNldHVwRXZlbnRzUXVldWU6IEFycmF5PEZ1bmN0aW9uPiA9IFtdO1xuXG4gICAgcHVibGljIF9fY2xvbmVhYmxlX18gPSBmYWxzZTtcblxuICAgIHB1YmxpYyB3aWRnZXRQcm9wczogTWFwPHN0cmluZywgYW55PjtcblxuICAgIHByaXZhdGUgJGF0dHJzID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTtcblxuICAgIHByaXZhdGUgaXNNdXRlZCA9IGZhbHNlO1xuXG4gICAgcHVibGljIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWY7XG4gICAgcHVibGljIHZpZXdQYXJlbnRBcHA6IEFwcDtcbiAgICAvKipcbiAgICAgKiBUbyBhdm9pZCByZS1yZW5kZXJpbmcgb2Ygd2lkZ2V0LCBwYXNzaW5nIHVuaXF1ZSBpZCBhcyBjb250ZXh0S2V5IHRvIGNyZWF0ZUN1c3RvbUluamVjdG9yXG4gICAgICogKGZvciBMaXN0LCBEeW5hbWljIFRhYnMsIEFjY29yZGlvbiwgTmF2LCBDYXJvdXNlbClcbiAgICAgKi9cbiAgICBwdWJsaWMgdHJhY2tJZDogc3RyaW5nO1xuXG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcm90ZWN0ZWQgaW5qOiBJbmplY3RvcixcbiAgICAgICAgQEluamVjdChXaWRnZXRDb25maWcpIGNvbmZpZzogSVdpZGdldENvbmZpZyxcbiAgICAgICAgQEluamVjdCgnRVhQTElDSVRfQ09OVEVYVCcpIEBPcHRpb25hbCgpIGV4cGxpY2l0Q29udGV4dD86IGFueSxcbiAgICAgICAgaW5pdFByb21pc2U/OiBQcm9taXNlPGFueT4gLy8gUHJvbWlzZSBvbiB3aGljaCB0aGUgaW5pdGlhbGl6YXRpb24gaGFzIHRvIHdhaXRcbiAgICApIHtcbiAgICAgICAgY29uc3QgZWxlbWVudFJlZiA9IGluai5nZXQoRWxlbWVudFJlZik7XG4gICAgICAgIHRoaXMubmF0aXZlRWxlbWVudCA9IGVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICAgICAgLy9tYWtpbmcgdGhlIGNvZGUgY29tcGF0aWJsZSBpbiBib3RoIHRoZSBKSVQgYW5kIEFPVCBtb2Rlc1xuICAgICAgICB0aGlzLnZpZXdQYXJlbnRBcHAgPSBpbmogPyBpbmouZ2V0KEFwcCkgOiBpbmplY3QoQXBwKTtcbiAgICAgICAgdGhpcy53aWRnZXRUeXBlID0gY29uZmlnLndpZGdldFR5cGU7XG4gICAgICAgIHRoaXMud2lkZ2V0U3ViVHlwZSA9IGNvbmZpZy53aWRnZXRTdWJUeXBlIHx8IGNvbmZpZy53aWRnZXRUeXBlO1xuICAgICAgICB0aGlzLnZpZXdDb250YWluZXJSZWYgPSBpbmouZ2V0KFZpZXdDb250YWluZXJSZWYpO1xuICAgICAgICAvLyB0aGlzLnZpZXdQYXJlbnQgPSAoaW5qIGFzIGFueSkudmlldy5jb21wb25lbnQ7XG4gICAgICAgIC8vIHRoaXMudmlld1BhcmVudCA9ICh0aGlzLnZpZXdDb250YWluZXJSZWYgYXMgYW55KS5wYXJlbnRJbmplY3Rvci5fbFZpZXdbOF07XG4gICAgICAgIC8vIHRoaXMudmlld1BhcmVudCA9IF92aWV3UGFyZW50IHx8ICh0aGlzLnZpZXdDb250YWluZXJSZWYgYXMgYW55KS5wYXJlbnRJbmplY3Rvci5fbFZpZXdbOF07XG4gICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvYmxvYi9tYWluL3BhY2thZ2VzL2NvcmUvc3JjL3JlbmRlcjMvaW50ZXJmYWNlcy92aWV3LnRzXG5cbiAgICAgICAgbGV0IGxWaWV3ID0gKHRoaXMuaW5qIGFzIGFueSkuX2xWaWV3O1xuICAgICAgICB0aGlzLnZpZXdQYXJlbnQgPSBmaW5kUGFyZW50KGxWaWV3LCB0aGlzLnZpZXdQYXJlbnRBcHApO1xuICAgICAgICAvL2NvbnNvbGUubG9nKFwiLS0tKioqKioqKioqKioqKi0tY29udGV4dC0tKioqKioqKioqKioqKi0tLVwiLCBsVmlld1s4XSk7XG4gICAgICAgIHRoaXMuY29udGV4dCA9ICh0aGlzLmluaiBhcyBhbnkpLl9sVmlld1s4XTtcblxuICAgICAgICB0aGlzLmRpc3BsYXlUeXBlID0gY29uZmlnLmRpc3BsYXlUeXBlIHx8IERJU1BMQVlfVFlQRS5CTE9DSztcbiAgICAgICAgLy8gdGhpcy5jb250ZXh0ID0gKGluaiBhcyBhbnkpLnZpZXcuY29udGV4dDtcbiAgICAgICAgLy8gdGhpcy5jb250ZXh0ID0gKHRoaXMudmlld0NvbnRhaW5lclJlZiBhcyBhbnkpLl9ob3N0TFZpZXcuZGVidWcuY29udGV4dDtcbiAgICAgICAgLy8gbGV0IGhhc0ltcGxpY2l0Q29udGV4dCA9ICh0aGlzLnZpZXdDb250YWluZXJSZWYgYXMgYW55KS5faG9zdExWaWV3LmZpbmQodCA9PiB0ICYmICEhdC4kaW1wbGljaXQpO1xuICAgICAgICAvLyB3aGVuICRpbXBsaWNpdCBpcyBub3QgYXZhaWxhYmxlLCB0aGlzIG9iamVjdCBjb250YWlucyBzb21lIG5nRm9yIGNvbnRleHQgb3IgbGlzdGl0ZW0gY29udGV4dCBvZiB0aGUgd2lkZ2V0IHRoZW5cbiAgICAgICAgLy8gd2UgdXNlIHRoZSBkaXJlY3QgcGFyZW50IGZvciBleGFtcGxlOiBuYXYgY29tcG9uZW50IGlzIHRoZSBwYXJlbnQgZm9yIGFuY2hvciA9PiBhbmNob3IgZ2V0cyB2aWV3UGFyZW50IGFzIE5hdlxuICAgICAgICAvLyBJbiBvdGhlciBjYXNlLCB3aGVyZSB3ZSBoYXZlIGltcGxpY2l0Q29udGV4dCB0aGVyZSB3ZSBjYW4gbWFrZSB1c2Ugb2YgcGFnZS9hcHAgbGV2ZWwgY29udGV4dCBoZW5jZSB2aWV3UGFyZW50LnZpZXdQYXJlbnQgdG8gZ2V0IHBhZ2UgbGV2ZWwgY29udGV4dFxuICAgICAgICAvKmlmIChoYXNJbXBsaWNpdENvbnRleHQgJiYgdGhpcy52aWV3UGFyZW50LnZpZXdQYXJlbnQpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnZpZXdQYXJlbnQud2lkZ2V0VHlwZSAhPT0gJ3dtLWNhcmQnICYmIHRoaXMudmlld1BhcmVudC53aWRnZXRUeXBlICE9PSAnd20taWZyYW1lZGlhbG9nJ1xuICAgICAgICAgICAgICAgICYmIHRoaXMudmlld1BhcmVudC53aWRnZXRUeXBlICE9PSAnd20tcGFydGlhbGRpYWxvZycpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnZpZXdQYXJlbnQgPSB0aGlzLnZpZXdQYXJlbnQudmlld1BhcmVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoIWhhc0ltcGxpY2l0Q29udGV4dCB8fCAoIXRoaXMudmlld1BhcmVudC53aWRnZXRUeXBlKSkge1xuICAgICAgICAgICAgdGhpcy5jb250ZXh0ID0gKHRoaXMudmlld0NvbnRhaW5lclJlZiBhcyBhbnkpLl9ob3N0TFZpZXcuZmluZCh0ID0+IHQgJiYgISF0LiRpbXBsaWNpdCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmNvbnRleHQgPSAodGhpcy52aWV3Q29udGFpbmVyUmVmIGFzIGFueSkucGFyZW50SW5qZWN0b3IuX2xWaWV3WzhdO1xuICAgICAgICB9Ki9cblxuICAgICAgICAvKmlmKF92aWV3UGFyZW50ICYmICFoYXNJbXBsaWNpdENvbnRleHQpIHtcbiAgICAgICAgICAgIHRoaXMuY29udGV4dCA9ICh0aGlzLnZpZXdDb250YWluZXJSZWYgYXMgYW55KS5faG9zdExWaWV3WzhdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jb250ZXh0ID0gaGFzSW1wbGljaXRDb250ZXh0O1xuICAgICAgICB9Ki9cbiAgICAgICAgLy8gaWYgKFsnd20tbGlzdCcsICd3bS1uYXYnXS5pbmNsdWRlcyh0aGlzLnZpZXdQYXJlbnQud2lkZ2V0VHlwZSkgfHwgWyd3bS1jYXJvdXNlbC10ZW1wbGF0ZScsICd3bS1jYXJkJ10uaW5jbHVkZXModGhpcy53aWRnZXRUeXBlKSkge1xuICAgICAgICAvLyAgICAgdGhpcy5jb250ZXh0ID0gKHRoaXMudmlld0NvbnRhaW5lclJlZiBhcyBhbnkpLl9ob3N0TFZpZXcuZGVidWcuY29udGV4dDtcbiAgICAgICAgLy8gfSBlbHNlIHtcbiAgICAgICAgLy8gICAgIHRoaXMuY29udGV4dCA9ICh0aGlzLnZpZXdDb250YWluZXJSZWYgYXMgYW55KS5wYXJlbnRJbmplY3Rvci5fbFZpZXdbOF07XG4gICAgICAgIC8vIH1cbiAgICAgICAgdGhpcy53aWRnZXQgPSB0aGlzLmNyZWF0ZVByb3h5KCk7XG4gICAgICAgIHRoaXMuZXZlbnRNYW5hZ2VyID0gaW5qLmdldChFdmVudE1hbmFnZXIpO1xuICAgICAgICAodGhpcy5uYXRpdmVFbGVtZW50IGFzIGFueSkud2lkZ2V0ID0gdGhpcy53aWRnZXQ7XG5cbiAgICAgICAgdGhpcy5hcHBMb2NhbGUgPSBpbmouZ2V0KEFwcCkuYXBwTG9jYWxlIHx8IHt9O1xuXG4gICAgICAgIHRoaXMuaW5pdENvbnRleHQoKTtcblxuICAgICAgICBpZiAoY29uZmlnLmhvc3RDbGFzcykge1xuICAgICAgICAgICAgYWRkQ2xhc3ModGhpcy5uYXRpdmVFbGVtZW50LCBjb25maWcuaG9zdENsYXNzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMud2lkZ2V0SWQgPSB0aGlzLmdlbmVyYXRlV2lkZ2V0SWQoKTtcbiAgICAgICAgdGhpcy50cmFja0lkID0gdGhpcy5nZW5lcmF0ZVdpZGdldElkKCk7XG4gICAgICAgIHNldEF0dHIodGhpcy5uYXRpdmVFbGVtZW50LCAnd2lkZ2V0LWlkJywgdGhpcy53aWRnZXRJZCwgdHJ1ZSk7XG5cbiAgICAgICAgLy8gcmVnaXN0ZXIgZGVmYXVsdCBwcm9wZXJ0eSBjaGFuZ2UgaGFuZGxlciBhbmQgc3R5bGUgY2hhbmdlIGhhbmRsZXJcbiAgICAgICAgdGhpcy5yZWdpc3RlclN0eWxlQ2hhbmdlTGlzdGVuZXIodGhpcy5vblN0eWxlQ2hhbmdlLCB0aGlzKTtcbiAgICAgICAgdGhpcy5yZWdpc3RlclByb3BlcnR5Q2hhbmdlTGlzdGVuZXIodGhpcy5vblByb3BlcnR5Q2hhbmdlLCB0aGlzKTtcblxuICAgICAgICAvLyBpZiB0aGUgaW5pdFByb21pc2UgaXMgcHJvdmlkZWQsIHdhaXQgdGlsbCB0aGUgcHJvbWlzZSBpcyByZXNvbHZlZCB0byBwcm9jZWVkIHdpdGggdGhlIHdpZGdldCBpbml0aWFsaXphdGlvblxuICAgICAgICBpZiAoIWluaXRQcm9taXNlKSB7XG4gICAgICAgICAgICB0aGlzLmluaXRXaWRnZXQoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZGVsYXllZEluaXQgPSB0cnVlO1xuICAgICAgICAgICAgaW5pdFByb21pc2UudGhlbigocmVzb2x2ZUZuKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbml0V2lkZ2V0KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRJbml0UHJvcHMoKTtcbiAgICAgICAgICAgICAgICByZXNvbHZlRm4gJiYgcmVzb2x2ZUZuKClcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmKGV4cGxpY2l0Q29udGV4dCkge1xuICAgICAgICAgICAgZXh0ZW5kKHRoaXMuY29udGV4dCwgZXhwbGljaXRDb250ZXh0KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBnZXROYXRpdmVFbGVtZW50KCk6IEhUTUxFbGVtZW50IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubmF0aXZlRWxlbWVudDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0V2lkZ2V0VHlwZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy53aWRnZXRUeXBlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRXaWRnZXRTdWJUeXBlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLndpZGdldFN1YlR5cGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFdpZGdldCgpOiBhbnkge1xuICAgICAgICByZXR1cm4gdGhpcy53aWRnZXQ7XG4gICAgfVxuXG4gICAgcHVibGljIHNldFByb3BlcnR5KHByb3BOYW1lLCBwcm9wVmFsdWUpIHtcbiAgICAgICAgdGhpcy53aWRnZXRbcHJvcE5hbWVdID0gcHJvcFZhbHVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRWaWV3UGFyZW50KCk6IGFueSB7XG4gICAgICAgIHJldHVybiB0aGlzLnZpZXdQYXJlbnQ7XG4gICAgfVxuXG4gICAgcHVibGljIG5vdGlmeVN0eWxlQ2hhbmdlKGtleTogc3RyaW5nLCBudjogYW55LCBvdjogYW55KSB7XG4gICAgICAgIHRoaXMuc3R5bGVDaGFuZ2UubmV4dCh7a2V5LCBudiwgb3Z9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbm90aWZ5UHJvcGVydHlDaGFuZ2Uoa2V5OiBzdHJpbmcsIG52OiBhbnksIG92OiBhbnkpIHtcbiAgICAgICAgdGhpcy5wcm9wZXJ0eUNoYW5nZS5uZXh0KHtrZXksIG52LCBvdn0pO1xuICAgIH1cblxuICAgIHB1YmxpYyByZWdpc3RlclN0eWxlQ2hhbmdlTGlzdGVuZXIoZm46IENoYW5nZUxpc3RlbmVyLCBjdHg/OiBhbnkpIHtcbiAgICAgICAgaWYgKGN0eCkge1xuICAgICAgICAgICAgZm4gPSBmbi5iaW5kKGN0eCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zdHlsZUNoYW5nZS5zdWJzY3JpYmUoKHtrZXksIG52LCBvdn0pID0+IGZuKGtleSwgbnYsIG92KSk7XG4gICAgfVxuXG4gICAgcHVibGljIHJlZ2lzdGVyUmVhZHlTdGF0ZUxpc3RlbmVyKGZuOiBGdW5jdGlvbiwgY3R4PzogYW55KSB7XG4gICAgICAgIGlmIChjdHgpIHtcbiAgICAgICAgICAgIGZuID0gZm4uYmluZChjdHgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnJlYWR5U3RhdGUuaXNTdG9wcGVkKSB7XG4gICAgICAgICAgICBmbigpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucmVhZHlTdGF0ZS5zdWJzY3JpYmUoKCkgPT4gZm4oKSk7XG4gICAgfVxuXG4gICAgcHVibGljIHJlZ2lzdGVyUHJvcGVydHlDaGFuZ2VMaXN0ZW5lcihmbjogQ2hhbmdlTGlzdGVuZXIsIGN0eD86IGFueSkge1xuICAgICAgICBpZiAoY3R4KSB7XG4gICAgICAgICAgICBmbiA9IGZuLmJpbmQoY3R4KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnByb3BlcnR5Q2hhbmdlLnN1YnNjcmliZSgoe2tleSwgbnYsIG92fSkgPT4gZm4oa2V5LCBudiwgb3YpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVnaXN0ZXJEZXN0cm95TGlzdGVuZXIoZm46IEZ1bmN0aW9uLCBjdHg/OiBhbnkpIHtcbiAgICAgICAgaWYgKGN0eCkge1xuICAgICAgICAgICAgZm4gPSBmbi5iaW5kKGN0eCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5kZXN0cm95LnN1YnNjcmliZSgoKSA9PiB7fSwgKCkgPT4ge30sICgpID0+IGZuKCkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXREaXNwbGF5VHlwZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5kaXNwbGF5VHlwZTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgY3JlYXRlUHJveHkoKTogYW55IHtcbiAgICAgICAgcmV0dXJuIFdpZGdldFByb3h5UHJvdmlkZXIuY3JlYXRlKHRoaXMsIHRoaXMud2lkZ2V0U3ViVHlwZSwgZ2V0V2lkZ2V0UHJvcHNCeVR5cGUodGhpcy53aWRnZXRTdWJUeXBlKSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGluaXRDb250ZXh0KCkge1xuICAgICAgICAvLyBjb25zdCBjb250ZXh0ID0gKHRoaXMuaW5qIGFzIGFueSkudmlldy5jb250ZXh0O1xuICAgICAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5jb250ZXh0IHx8IHt9O1xuXG4gICAgICAgIGNvbnN0IHBhcmVudENvbnRleHRzID0gdGhpcy5pbmouZ2V0KENvbnRleHQsIHt9KTtcblxuICAgICAgICAvLyBhc3NpZ24gdGhlIGNvbnRleHQgcHJvcGVydHkgYWNjb3JkaW5nbHlcbiAgICAgICAgaWYgKHRoaXMudmlld1BhcmVudCAhPT0gY29udGV4dCkge1xuICAgICAgICAgICAgdGhpcy5jb250ZXh0ID0gY29udGV4dDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY29udGV4dCA9IHt9O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHBhcmVudENvbnRleHRzKSB7XG4gICAgICAgICAgICBsZXQgcGFyZW50Q29udGV4dE9iaiA9IHt9O1xuICAgICAgICAgICAgaWYgKGlzQXJyYXkocGFyZW50Q29udGV4dHMpKSB7XG4gICAgICAgICAgICAgICAgZm9yRWFjaChwYXJlbnRDb250ZXh0cywgKGNvbnRleHRPYmopID0+IHtcbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihwYXJlbnRDb250ZXh0T2JqLCBjb250ZXh0T2JqKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcGFyZW50Q29udGV4dE9iaiA9IHBhcmVudENvbnRleHRzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5jb250ZXh0ID0gT2JqZWN0LmFzc2lnbih7fSwgcGFyZW50Q29udGV4dE9iaiwgdGhpcy5jb250ZXh0KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHNldCB0aGUgdmFsdWUgb24gdGhlIHByb3h5IG9iamVjdCBpZSwgd2lkZ2V0XG4gICAgICogc2V0dGluZyB0aGUgcHJvcGVydHkgb24gdGhlIHByb3h5IHdpbGwgaW52b2tlIHRoZSBjaGFuZ2UgbGlzdGVuZXJzXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleVxuICAgICAqIEBwYXJhbSB2YWx1ZVxuICAgICAqL1xuICAgIHB1YmxpYyBzZXRXaWRnZXRQcm9wZXJ0eShrZXk6IHN0cmluZywgdmFsdWU6IGFueSkge1xuICAgICAgICB0aGlzLndpZGdldFtrZXldID0gdmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEF0dHIoYXR0ck5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLiRhdHRycy5nZXQoYXR0ck5hbWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHJldHVybnMgYXBwIGluc3RhbmNlXG4gICAgICogQHJldHVybnMge0FwcH1cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0QXBwSW5zdGFuY2UoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmluai5nZXQoQXBwKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZW5lcmF0ZXMgYSB1bmlxdWUgaWRcbiAgICAgKiBEZWZhdWx0IHBhdHRlcm4gaXMgYHdpZGdldC1pZC0ke2lkfWBcbiAgICAgKiBDb21wb25lbnRzIGNhbiBvdmVycmlkZSB0aGlzIG1ldGhvZCB0byBnZW5lcmF0ZSBhIGRpZmZlcmVudCBpZCBlZywgYmFyLWNoYXJ0LTFcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgZ2VuZXJhdGVXaWRnZXRJZCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gd2lkZ2V0SWRHZW5lcmF0b3IubmV4dFVpZCgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEhhbmRsZXMgdGhlIGNvbW1vbiBmdW5jdGlvbmFsaXR5IGFjcm9zcyB0aGUgY29tcG9uZW50c1xuICAgICAqIGVnLFxuICAgICAqICAxLiB2YWx1ZSBvZiB0aGUgY2xhc3MgcHJvcGVydHkgd2lsbCBiZSBhcHBsaWVkIG9uIHRoZSBob3N0IGVsZW1lbnRcbiAgICAgKiAgMi4gYmFzZWQgb24gdGhlIHZhbHVlIG9mIHNob3cgcHJvcGVydHkgY29tcG9uZW50IGlzIHNob3duL2hpZGRlblxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleVxuICAgICAqIEBwYXJhbSBudlxuICAgICAqIEBwYXJhbSBvdlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBvblByb3BlcnR5Q2hhbmdlKGtleTogc3RyaW5nLCBudjogYW55LCBvdj86IGFueSkge1xuICAgICAgICBpZiAoa2V5ID09PSAnc2hvdycpIHtcbiAgICAgICAgICAgIHRoaXMubmF0aXZlRWxlbWVudC5oaWRkZW4gPSAhbnY7XG4gICAgICAgIH0gZWxzZSBpZiAoa2V5ID09PSAnaGludCcpIHtcbiAgICAgICAgICAgIGlmICghaXNNb2JpbGVBcHAoKSkge1xuICAgICAgICAgICAgICAgIHNldEF0dHIodGhpcy5uYXRpdmVFbGVtZW50LCAndGl0bGUnLCBudik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoa2V5ID09PSAnY2xhc3MnKSB7XG4gICAgICAgICAgICBzd2l0Y2hDbGFzcyh0aGlzLm5hdGl2ZUVsZW1lbnQsIG52LCBvdik7XG4gICAgICAgICAgICBsZXQgcmVzdWx0ID0gbnYubWF0Y2goLyhcXFd8XikoaChbMC02XSkpKD89XFxzfCQpLyk7XG4gICAgICAgICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgc2V0QXR0cih0aGlzLm5hdGl2ZUVsZW1lbnQsICdyb2xlJywgJ2hlYWRpbmcnKTtcbiAgICAgICAgICAgICAgICBzZXRBdHRyKHRoaXMubmF0aXZlRWxlbWVudCwgJ2FyaWEtbGV2ZWwnLCByZXN1bHRbM10pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGtleSA9PT0gJ25hbWUnIHx8IGtleSA9PT0gJ3RhYmluZGV4Jykge1xuICAgICAgICAgICAgc2V0QXR0cih0aGlzLm5hdGl2ZUVsZW1lbnQsIGtleSwgbnYpO1xuICAgICAgICAgICAgaWYgKGtleSA9PT0gJ25hbWUnICYmIG52KSB7XG4gICAgICAgICAgICAgICAgcmVuYW1lV2lkZ2V0KHRoaXMudmlld1BhcmVudCwgdGhpcy53aWRnZXQsIG52LCBvdik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoa2V5ID09PSAnY29uZGl0aW9uYWxjbGFzcycpIHtcbiAgICAgICAgICAgIC8vIHVwZGF0ZSBjbGFzc2VzIGlmIG9sZCBhbmQgbnYgdmFsdWUgYXJlIGRpZmZlcmVudFxuICAgICAgICAgICAgdXBkYXRlQ2xhc3Nlcyhudi50b0FkZCwgbnYudG9SZW1vdmUsIHRoaXMubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIH0gZWxzZSAgaWYgKGtleSA9PT0gJ2F1dG9wbGF5Jykge1xuICAgICAgICAgICAgY29uc3QgdGFnTmFtZSA9IHRoaXMud2lkZ2V0VHlwZSA9PT0gJ3dtLWF1ZGlvJyA/ICdhdWRpbycgOiAndmlkZW8nO1xuICAgICAgICAgICAgLy8gVHJpZ2dlciBtZWRpYShhdWRpby92aWRlbykgZWxlbWVudCBsb2FkIG1ldGhvZCBhZnRlciBjaGFuZ2luZyBhdXRvcGxheSBwcm9wZXJ0eVxuICAgICAgICAgICAgdGhpcy5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IodGFnTmFtZSkubG9hZCgpO1xuICAgICAgICB9IGVsc2UgaWYgKGtleSA9PT0gJ2NvbmRpdGlvbmFsc3R5bGUnKSB7XG4gICAgICAgICAgICAvLyB1cGRhdGUgc3R5bGVzIGlmIG9sZCBhbmQgbnYgdmFsdWUgYXJlIGRpZmZlcmVudFxuICAgICAgICAgICAgdXBkYXRlU3R5bGVzKG52LCBvdiwgdGhpcy5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgfSBlbHNlIGlmIChrZXkgPT09ICdhbmltYXRpb24nKSB7XG4gICAgICAgICAgICAvLyB1cGRhdGUgc3R5bGVzIGlmIG9sZCBhbmQgbnYgdmFsdWUgYXJlIGRpZmZlcmVudFxuICAgICAgICAgICAgYWRkQ2xhc3ModGhpcy5uYXRpdmVFbGVtZW50LCBcImFuaW1hdGVkIFwiICsgbnYpO1xuICAgICAgICB9ICBlbHNlIGlmIChrZXkgPT09ICdkaXNhYmxlZCcpIHtcbiAgICAgICAgICAgIC8vIFdNUy0xOTMyMTogSW4gSUUsIHdpZGdldCBpcyBpbiBkaXNhYmxlZCBzdGF0ZSB3aGVuIGRpc2FibGVkPVwiZmFsc2VcIiBhdHRyaWJ1dGUgaXMgcHJlc2VudFxuICAgICAgICAgICAgKG52ID09PSB0cnVlKSA/IHNldEF0dHIodGhpcy5uYXRpdmVFbGVtZW50LCAnZGlzYWJsZWQnLCAndHJ1ZScsIHRydWUpIDogcmVtb3ZlQXR0cih0aGlzLm5hdGl2ZUVsZW1lbnQsICdkaXNhYmxlZCcsIHRydWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGVmYXVsdCBzdHlsZSBjaGFuZ2UgaGFuZGxlclxuICAgICAqL1xuICAgIHByb3RlY3RlZCBvblN0eWxlQ2hhbmdlKGs6IHN0cmluZywgbnY6IGFueSwgb3Y/OiBhbnkpIHt9XG5cbiAgICAvKipcbiAgICAgKiBSZWdpc3RlciB0aGUgd2lkZ2V0IHdpdGggdGhlIHdpZGdldFJlZ2lzdHJ5XG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlZ2lzdGVyV2lkZ2V0KHdpZGdldE5hbWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLnJlZ2lzdGVyRGVzdHJveUxpc3RlbmVyKHJlZ2lzdGVyKHRoaXMud2lkZ2V0LCB0aGlzLnZpZXdQYXJlbnQsIHRoaXMud2lkZ2V0SWQsIHdpZGdldE5hbWUpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBvdmVycmlkZSB0aGVcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgZ2V0TWFwcGVkRXZlbnROYW1lKGV2ZW50TmFtZSkge1xuICAgICAgICByZXR1cm4gRVZFTlRTX01BUC5nZXQoZXZlbnROYW1lKSB8fCBldmVudE5hbWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogaW52b2tlIHRoZSBldmVudCBoYW5kbGVyXG4gICAgICogQ29tcG9uZW50cyBjYW4gb3ZlcnJpZGUgdGhpcyBtZXRob2QgdG8gZXhlY3V0ZSBjdXN0b20gbG9naWMgYmVmb3JlIGludm9raW5nIHRoZSB1c2VyIGNhbGxiYWNrXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGhhbmRsZUV2ZW50KG5vZGU6IEhUTUxFbGVtZW50LCBldmVudE5hbWU6IHN0cmluZywgZXZlbnRDYWxsYmFjazogRnVuY3Rpb24sIGxvY2FsczogYW55LCBtZXRhPzogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAgICAgICBub2RlLFxuICAgICAgICAgICAgZXZlbnROYW1lLFxuICAgICAgICAgICAgZSA9PiB7XG4gICAgICAgICAgICAgICAgbG9jYWxzLiRldmVudCA9IGU7XG4gICAgICAgICAgICAgICAgaWYgKG1ldGEgPT09ICdkZWxheWVkJykge1xuICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gZXZlbnRDYWxsYmFjaygpLCAxNTApO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBldmVudENhbGxiYWNrKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHBhcnNlIHRoZSBldmVudCBleHByZXNzaW9uIGFuZCBzYXZlIHJlZmVyZW5jZSB0byB0aGUgZnVuY3Rpb24gaW5zaWRlIGV2ZW50SGFuZGxlcnMgbWFwXG4gICAgICogSWYgdGhlIGNvbXBvbmVudCBwcm92aWRlcyBhIG92ZXJyaWRlIGZvciBhbiBldmVudCB0aHJvdWdoIEBFdmVudCBkZWNvcmF0b3IgaW52b2tlIHRoYXRcbiAgICAgKiBlbHNlIGludm9rZSB0aGUgcmVzb2x2ZWQgZnVuY3Rpb25cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBldmVudE5hbWVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gZXhwclxuICAgICAqL1xuICAgIHByb3RlY3RlZCBwcm9jZXNzRXZlbnRBdHRyKGV2ZW50TmFtZTogc3RyaW5nLCBleHByOiBzdHJpbmcsIG1ldGE/OiBzdHJpbmcsIGNoaWxkPzogQ2hpbGQpIHtcbiAgICAgICAgY29uc3QgZm4gPSAkcGFyc2VFdmVudChleHByKTtcbiAgICAgICAgY29uc3QgbG9jYWxzID0gdGhpcy5jb250ZXh0O1xuICAgICAgICBsb2NhbHMud2lkZ2V0ID0gY2hpbGQgPyBjaGlsZC53aWRnZXQgOiB0aGlzLndpZGdldDtcbiAgICAgICAgY29uc3QgYm91bmRGbiA9IGZuLmJpbmQodW5kZWZpbmVkLCBjaGlsZCA/IHRoaXMudmlld1BhcmVudC52aWV3UGFyZW50IDogdGhpcy52aWV3UGFyZW50LCBsb2NhbHMpO1xuXG4gICAgICAgIGxldCB3aWRnZXQgICAgICAgICAgPSBjaGlsZCA/IGNoaWxkLndpZGdldCA6IHRoaXMsXG4gICAgICAgICAgICBuYXRpdmVFbGVtZW50ICAgPSBjaGlsZCA/IGNoaWxkLm5hdGl2ZUVsZW1lbnQgOiB0aGlzLm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICAgICAgY29uc3QgZXZlbnRDYWxsYmFjayA9ICgpID0+IHtcbiAgICAgICAgICAgIGxldCBib3VuZEZuVmFsO1xuICAgICAgICAgICAgJGludm9rZVdhdGNoZXJzKHRydWUpO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBsb2NhbHMuJGV2ZW50ID0gbG9jYWxzLiRldmVudCB8fCBuZXcgd2luZG93LkN1c3RvbUV2ZW50KGV2ZW50TmFtZSk7XG4gICAgICAgICAgICAgICAgLy8gSWYgdGhlIGV2ZW50IGlzIGJvdW5kIGRpcmVjdGx5IHRvIHRoZSB2YXJpYWJsZSB0aGVuIHdlIG5lZWQgdG8gaW50ZXJuYWxseSBoYW5kbGVcbiAgICAgICAgICAgICAgICAvLyB0aGUgcHJvbWlzZSByZXR1cm5lZCBieSB0aGUgdmFyaWFibGUgY2FsbC5cbiAgICAgICAgICAgICAgICBib3VuZEZuVmFsID0gYm91bmRGbigpO1xuICAgICAgICAgICAgICAgIGlmIChib3VuZEZuVmFsIGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICAgICAgICAgICAgICBib3VuZEZuVmFsLnRoZW4oIHJlc3BvbnNlID0+IHJlc3BvbnNlLCBlcnIgPT4gZXJyKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYm91bmRGblZhbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgaWYoY2hpbGQgJiYgIWNoaWxkLndpZGdldC5ldmVudEhhbmRsZXJzKVxuICAgICAgICAgICAgY2hpbGQud2lkZ2V0LmV2ZW50SGFuZGxlcnMgPSBuZXcgTWFwPHN0cmluZywge2NhbGxiYWNrOiBGdW5jdGlvbiwgbG9jYWxzOiBhbnl9PigpXG5cbiAgICAgICAgd2lkZ2V0LmV2ZW50SGFuZGxlcnMuc2V0KHRoaXMuZ2V0TWFwcGVkRXZlbnROYW1lKGV2ZW50TmFtZSksIHtjYWxsYmFjazogZXZlbnRDYWxsYmFjaywgbG9jYWxzfSk7XG4gICAgICAgIC8vIHByZXBlbmQgZXZlbnROYW1lIHdpdGggb24gYW5kIGNvbnZlcnQgaXQgdG8gY2FtZWxjYXNlLlxuICAgICAgICAvLyBlZywgXCJjbGlja1wiIC0tLT4gb25DbGlja1xuICAgICAgICBjb25zdCBvbkV2ZW50TmFtZSA9IGNhbWVsQ2FzZShgb24tJHtldmVudE5hbWV9YCk7XG4gICAgICAgIC8vIHNhdmUgdGhlIGV2ZW50Q2FsbGJhY2sgaW4gd2lkZ2V0U2NvcGUuXG5cbiAgICAgICAgd2lkZ2V0W29uRXZlbnROYW1lXSA9IGV2ZW50Q2FsbGJhY2s7XG5cbiAgICAgICAgLy8gZXZlbnRzIG5lZWRzIHRvIGJlIHNldHVwIGFmdGVyIHZpZXdJbml0XG4gICAgICAgIHRoaXMudG9CZVNldHVwRXZlbnRzUXVldWUucHVzaCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZUV2ZW50KG5hdGl2ZUVsZW1lbnQsIHRoaXMuZ2V0TWFwcGVkRXZlbnROYW1lKGV2ZW50TmFtZSksIGV2ZW50Q2FsbGJhY2ssIGxvY2FscywgbWV0YSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFByb2Nlc3MgdGhlIGJvdW5kIHByb3BlcnR5XG4gICAgICogUmVnaXN0ZXIgYSB3YXRjaCBvbiB0aGUgYm91bmQgZXhwcmVzc2lvblxuICAgICAqL1xuICAgIHByb3RlY3RlZCBwcm9jZXNzQmluZEF0dHIocHJvcE5hbWU6IHN0cmluZywgZXhwcjogc3RyaW5nLCBjaGlsZCA/OiBhbnkpIHtcbiAgICAgICAgaWYoIWNoaWxkKVxuICAgICAgICAgICAgdGhpcy5pbml0U3RhdGUuZGVsZXRlKHByb3BOYW1lKTtcbiAgICAgICAgbGV0IHZpZXdQYXJlbnQgID0gY2hpbGQgPyBjaGlsZC53aWRnZXQudmlld1BhcmVudC52aWV3UGFyZW50IDogdGhpcy52aWV3UGFyZW50LFxuICAgICAgICAgICAgY29udGV4dCAgICAgPSBjaGlsZCA/IGNoaWxkLndpZGdldC5jb250ZXh0IDogdGhpcy5jb250ZXh0LFxuICAgICAgICAgICAgd2lkZ2V0ICAgICAgPSBjaGlsZCA/IGNoaWxkLndpZGdldCA6IHRoaXMud2lkZ2V0LFxuICAgICAgICAgICAgaXNNdXRlZCAgICAgPSBjaGlsZCA/IGNoaWxkLndpZGdldC5pc011dGVkIDogdGhpcy5pc011dGVkLFxuICAgICAgICAgICAgd2lkZ2V0UHJvcHMgPSBjaGlsZCA/IGNoaWxkLndpZGdldC53aWRnZXRQcm9wcyA6IHRoaXMud2lkZ2V0UHJvcHMsXG4gICAgICAgICAgICB3aWRnZXRJZCAgICA9IGNoaWxkID8gY2hpbGQud2lkZ2V0LndpZGdldElkIDogdGhpcy53aWRnZXRJZDtcbiAgICAgICAgdGhpcy5yZWdpc3RlckRlc3Ryb3lMaXN0ZW5lcihcbiAgICAgICAgICAgICR3YXRjaChcbiAgICAgICAgICAgICAgICBleHByLFxuICAgICAgICAgICAgICAgIHZpZXdQYXJlbnQsXG4gICAgICAgICAgICAgICAgY29udGV4dCxcbiAgICAgICAgICAgICAgICBudiA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmKHByb3BOYW1lLnN0YXJ0c1dpdGgoJ2Jhc2UtJykpXG4gICAgICAgICAgICAgICAgICAgICAgICB3aWRnZXQudXBkYXRlRGF0YShwcm9wTmFtZSwgbnYpO1xuICAgICAgICAgICAgICAgICAgICB3aWRnZXRbcHJvcE5hbWVdID0gbnZcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGdldFdhdGNoSWRlbnRpZmllcih3aWRnZXRJZCwgcHJvcE5hbWUpLFxuICAgICAgICAgICAgICAgIHByb3BOYW1lID09PSAnZGF0YXNvdXJjZScsXG4gICAgICAgICAgICAgICAgd2lkZ2V0UHJvcHMuZ2V0KHByb3BOYW1lKSxcbiAgICAgICAgICAgICAgICAoKSA9PiBpc011dGVkXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlIHdhdGNoIG9uIHRoZSBib3VuZCBwcm9wZXJ0eVxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZW1vdmVQcm9wZXJ0eUJpbmRpbmcocHJvcE5hbWU6IHN0cmluZykge1xuICAgICAgICAkdW53YXRjaChnZXRXYXRjaElkZW50aWZpZXIodGhpcy53aWRnZXRJZCwgcHJvcE5hbWUpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBpbnZva2UgdGhlIGV2ZW50IGNhbGxiYWNrIG1ldGhvZFxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBldmVudE5hbWVcbiAgICAgKiBAcGFyYW0gZXh0cmFMb2NhbHNcbiAgICAgKi9cbiAgICBwdWJsaWMgaW52b2tlRXZlbnRDYWxsYmFjayhldmVudE5hbWU6IHN0cmluZywgZXh0cmFMb2NhbHM/OiBhbnkpIHtcbiAgICAgICAgY29uc3QgY2FsbGJhY2tJbmZvID0gdGhpcy5ldmVudEhhbmRsZXJzLmdldChldmVudE5hbWUpO1xuICAgICAgICBpZiAoY2FsbGJhY2tJbmZvKSB7XG4gICAgICAgICAgICBjb25zdCBmbiA9IGNhbGxiYWNrSW5mby5jYWxsYmFjaztcbiAgICAgICAgICAgIGNvbnN0IGxvY2FscyA9IGNhbGxiYWNrSW5mby5sb2NhbHMgfHwge307XG5cbiAgICAgICAgICAgIGlmIChmbikge1xuICAgICAgICAgICAgICAgIHJldHVybiBmbihPYmplY3QuYXNzaWduKGxvY2FscywgZXh0cmFMb2NhbHMpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBQcm9jZXNzIHRoZSBhdHRyaWJ1dGVcbiAgICAgKiBJZiB0aGUgYXR0cmlidXRlIGlzIGFuIGV2ZW50IGV4cHJlc3Npb24sIGdlbmVyYXRlIGEgZnVuY3Rpb25hbCByZXByZXNlbnRhdGlvbiBvZiB0aGUgZXhwcmVzc2lvblxuICAgICAqICAgICAgYW5kIGtlZXAgaW4gZXZlbnRIYW5kbGVyc1xuICAgICAqIElmIHRoZSBhdHRyaWJ1dGUgaXMgYSBib3VuZCBleHByZXNzaW9uLCByZWdpc3RlciBhIHdhdGNoIG9uIHRoZSBleHByZXNzaW9uXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHByb2Nlc3NBdHRyKGF0dHJOYW1lOiBzdHJpbmcsIGF0dHJWYWx1ZTogc3RyaW5nLCBjaGlsZD86IENoaWxkKSB7XG4gICAgICAgICAvLyBjb25zb2xlLmxvZyhcIj09PT1hdHRyTmFtZT09PT09XCIsIGF0dHJOYW1lLCBcIj09PT09dHlwZW9mIGF0dHJuYW1lPT09PT1cIiwgdHlwZW9mIGF0dHJOYW1lLCBcIi0tLS0tYXR0clZhbHVlLS0tLVwiLCBhdHRyVmFsdWUpO1xuICAgICAgICBjb25zdCB7MDogcHJvcE5hbWUsIDE6IHR5cGUsIDI6IG1ldGEsIGxlbmd0aH0gPSBhdHRyTmFtZS5zcGxpdCgnLicpO1xuICAgICAgICBpZiAodHlwZSA9PT0gJ2JpbmQnKSB7XG4gICAgICAgICAgICAvLyBpZiB0aGUgc2hvdyBwcm9wZXJ0eSBpcyBib3VuZCwgc2V0IHRoZSBpbml0aWFsIHZhbHVlIHRvIGZhbHNlXG4gICAgICAgICAgICBpZiAocHJvcE5hbWUgPT09ICdzaG93Jykge1xuICAgICAgICAgICAgICAgIHRoaXMubmF0aXZlRWxlbWVudC5oaWRkZW4gPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5wcm9jZXNzQmluZEF0dHIocHJvcE5hbWUsIGF0dHJWYWx1ZSwgY2hpbGQpO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdldmVudCcgJiYgIXRoaXMubmF0aXZlRWxlbWVudC5oYXNBdHRyaWJ1dGUoJ2N1c3RvbXdpZGdldGNvbnRhaW5lcicpKSB7XG4gICAgICAgICAgICB0aGlzLnByb2Nlc3NFdmVudEF0dHIocHJvcE5hbWUsIGF0dHJWYWx1ZSwgbWV0YSwgY2hpbGQpO1xuICAgICAgICB9IGVsc2UgaWYgKGxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgLy8gcmVtb3ZlIGNsYXNzIGFuZCBuYW1lIGF0dHJpYnV0ZXMuIENvbXBvbmVudCB3aWxsIHNldCB0aGVtIG9uIHRoZSBwcm9wZXIgbm9kZVxuICAgICAgICAgICAgaWYgKGF0dHJOYW1lID09PSAnY2xhc3MnKSB7XG4gICAgICAgICAgICAgICAgcmVtb3ZlQ2xhc3ModGhpcy5uYXRpdmVFbGVtZW50LCBhdHRyVmFsdWUpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChhdHRyTmFtZSA9PT0gJ3RhYmluZGV4JyB8fCBhdHRyTmFtZSA9PT0gJ25hbWUnKSB7XG4gICAgICAgICAgICAgICAgcmVtb3ZlQXR0cih0aGlzLm5hdGl2ZUVsZW1lbnQsIGF0dHJOYW1lKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5pbml0U3RhdGUuc2V0KHByb3BOYW1lLCBhdHRyVmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gY3VzdG9tIGF0dHJpYnV0ZXMgcHJvdmlkZWQgb24gZWxEZWY7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGlzIHJlcXVpcmVkIGFzIHRoZSBuYXRpdmUgZWxlbWVudCBhdHRyaWJ1dGVzIGFyZSBjYXNlIGluc2Vuc2l0aXZlKGNhbWVsY2FzZSkgbGlrZSBjdXN0b21FeHByZXNzaW9ucyBiZWNvbWVzIGN1c3RvbWV4cHJlc3Npb25cbiAgICAgKiBhbmQgb3VyIGxvZ2ljIHRvIGNoZWNrIGxpa2UgdGhlc2UgY2hhbmdlcyB3aWxsIGZhaWwuIEJlZm9yZSBJVlkgY2hhbmdlcywgYW5ndWxhciBtYWludGFpbnMgYSBzZXBhcmF0ZSBvYmplY3Qgd2l0aCB0aGVzZSBhdHRyaWJ1dGVzXG4gICAgICogYXMgaXQgaXMgbGlrZSBpbiB0aGUgY2FtZWxjYXNlLiBXaXRoIElWWSBhbGwgdGhvc2UgYXJlIGdvbmUuIFNvIG5lZWQgdG8gbWFpbnRhaW4gYSBzZXBhcmF0ZSBsaXN0IHdpdGggdGhlIGNhbWVsY2FzaW5nIG9mIGF0dHJpYnV0ZXNcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIF90Tm9kZS5hdHRycyBhdHRyaWJ1dGVzIGFyZSBzdG9yZWQgaW4gYXJyYXkoZXZlbiBpbmRleDoga2V5LCBvZGQgaW5kZXg6IHZhbHVlKVxuICAgICAqL1xuICAgIHByb3RlY3RlZCBnZXRBdHRyaWJ1dGVzKCkge1xuICAgICAgICBsZXQgX3ROb2RlQXR0cnMgPSAodGhpcy5pbmogYXMgYW55KS5fdE5vZGUuYXR0cnMsIGFjdHVhbEF0dHJzID0gQXJyYXkuZnJvbSh0aGlzLm5hdGl2ZUVsZW1lbnQuYXR0cmlidXRlcykubWFwKGF0dHIgPT4gYXR0ci5uYW1lKTtcbiAgICAgICAgaWYoX3ROb2RlQXR0cnMgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBhY3R1YWxBdHRycy5zb3J0KCk7XG4gICAgICAgIH1cbiAgICAgICAgZm9yRWFjaChfdE5vZGVBdHRycywgKGF0dHIsIGk6IGFueSkgPT4ge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBhdHRyID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmKHR5cGVvZiBhdHRyID09PSAnc3RyaW5nJyAmJiBpICUgMiA9PSAwKSB7XG4gICAgICAgICAgICAgICAgbGV0IGxvd2VyQ2FzZUF0dHIgPSBhdHRyLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICAgICAgaWYgKGFjdHVhbEF0dHJzLmluY2x1ZGVzKGxvd2VyQ2FzZUF0dHIpKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBpbmRleCA9IGFjdHVhbEF0dHJzLmluZGV4T2YobG93ZXJDYXNlQXR0cilcbiAgICAgICAgICAgICAgICAgICAgYWN0dWFsQXR0cnNbaW5kZXhdID0gYXR0cjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8qXG4gICAgICAgIFNvcnRpbmcgYXR0cmlidXRlcyBhcyBwcm9wZXJ0aWVzIGxpa2UgcGxhY2Vob2xkZXIgaXMgbm90IHdvcmtpbmcgd2hlbiBpdCBpcyBib3VuZC5cbiAgICAgICAgcGxhY2Vob2xkZXIgYW5kIHBsYWNlaG9sZGVyLmJpbmQgdHdvIHByb3BlcnRpZXMgYXJlIGNvbWluZyBpbiBBcnJheS5cbiAgICAgICAgV2hlbiBhcnJheSBpcyBub3Qgc29ydGVkLCBpbml0aWFsbHkgcGxhY2Vob2xkZXIuYmluZCB2YWx1ZSBpcyBzZXQgdGhlbiBwbGFjZWhvbGRlciBkZWZhdWx0IHZhbHVlIGlzIHVwZGF0ZWQuXG4gICAgICAgIElmIGFycmF5IGlzIHNvcnRlZCwgcGxhY2Vob2xkZXIuYmluZCB2YWx1ZSB3aWxsIGJlIHNldCBmaW5hbGx5LlxuICAgICAgICBUaGlzIGlzIGNhdXNlZCBiZWNhdXNlIG9mIHRoZSB3YXkgd2UgYXJlIHN0b3JpbmcgYXR0cmlidXRlIG5hbWVzIGluIHdhdGNoZXIgcmVnaXN0cnkgbWFwXG4gICAgICAgICAqL1xuICAgICAgICByZXR1cm4gYWN0dWFsQXR0cnMuc29ydCgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFByb2Nlc3MgdGhlIGF0dHJpYnV0ZXNcbiAgICAgKi9cbiAgICBwcml2YXRlIHByb2Nlc3NBdHRycygpIHtcbiAgICAgICAgbWFwKHRoaXMuZ2V0QXR0cmlidXRlcygpLCAoYXR0ck5hbWU6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgbGV0IGF0dHJWYWx1ZSA9IHRoaXMubmF0aXZlRWxlbWVudC5hdHRyaWJ1dGVzW2F0dHJOYW1lXS52YWx1ZVxuICAgICAgICAgICAgdGhpcy4kYXR0cnMuc2V0KGF0dHJOYW1lLCBhdHRyVmFsdWUpO1xuICAgICAgICAgICAgdGhpcy5wcm9jZXNzQXR0cihhdHRyTmFtZSwgYXR0clZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXBkYXRlIHRoZSBpbml0U3RhdGUgd2l0aCB0aGUgZGVmYXVsdCBwcm9wZXJ0eSB2YWx1ZXMgYW5kIHRoZSB2YWx1ZXMgcHJvdmlkZWQgaW4gdGhlIG1hcmt1cFxuICAgICAqIFByb2Nlc3MgdGhlIGF0dHJpYnV0ZXNcbiAgICAgKiBSZWdpc3RlciB0aGUgd2lkZ2V0XG4gICAgICovXG4gICAgcHJvdGVjdGVkIGluaXRXaWRnZXQoKSB7XG4gICAgICAgIHRoaXMuaW5pdFN0YXRlID0gbmV3IE1hcDxzdHJpbmcsIGFueT4oKTtcblxuICAgICAgICAvLyBnZXQgdGhlIHdpZGdldCBwcm9wZXJ0aWVzXG4gICAgICAgIGNvbnN0IHdpZGdldFByb3BzOiBNYXA8c3RyaW5nLCBhbnk+ID0gZ2V0V2lkZ2V0UHJvcHNCeVR5cGUodGhpcy53aWRnZXRTdWJUeXBlKTtcbiAgICAgICAgd2lkZ2V0UHJvcHMuZm9yRWFjaCgodiwgaykgPT4ge1xuICAgICAgICAgICAgaWYgKGlzRGVmaW5lZCh2LnZhbHVlKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuaW5pdFN0YXRlLnNldChrLCB2LnZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy53aWRnZXRQcm9wcyA9IHdpZGdldFByb3BzO1xuXG4gICAgICAgIHRoaXMucHJvY2Vzc0F0dHJzKCk7XG5cbiAgICAgICAgdGhpcy5yZWdpc3RlcldpZGdldCh0aGlzLmluaXRTdGF0ZS5nZXQoJ25hbWUnKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXBkYXRlIHRoZSBkZWZhdWx0IHByb3BlcnRpZXMgYW5kIHRoZSBwcm9wZXJ0aWVzIHByb3ZpZGVkIGluIHRoZSBtYXJrdXAgaW4gY29tcG9uZW50XG4gICAgICogSW52b2tpbmcgdGhpcyBtZXRob2Qgd2lsbCByZXN1bHQgaW4gaW52b2NhdGlvbiBvZiBwcm9wZXJ0eUNoYW5nZSBoYW5kbGVycyBvbiB0aGUgY29tcG9uZW50IGZvciB0aGUgZmlyc3QgdGltZVxuICAgICAqL1xuICAgIHByb3RlY3RlZCBzZXRJbml0UHJvcHMoKSB7XG4gICAgICAgIGlmICh0aGlzLmluaXRTdGF0ZS5nZXQoJ25hbWUnKSkge1xuICAgICAgICAgICAgdGhpcy53aWRnZXQubmFtZSA9IHRoaXMuaW5pdFN0YXRlLmdldCgnbmFtZScpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaW5pdFN0YXRlLmZvckVhY2goKHYsIGspID0+IHtcbiAgICAgICAgICAgIC8vIG5hbWUgaXMgYWxyZWFkeSBzZXQsIGlnbm9yZSBuYW1lXG4gICAgICAgICAgICAvLyBpZiB0aGUga2V5IGlzIHBhcnQgb2YgdG8gYmUgaWdub3JlZCBhdHRyaWJ1dGVzIGxpc3QgZG8gbm90IHNldCBpdCBvbiB0aGUgY29tcG9uZW50IGluc3RhbmNlXG4gICAgICAgICAgICBpZiAoKHRoaXMud2lkZ2V0UHJvcHMuZ2V0KGspIHx8IGlzU3R5bGUoaykpICYmIGsgIT09ICduYW1lJykge1xuICAgICAgICAgICAgICAgIHRoaXMud2lkZ2V0W2tdID0gdjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuaW5pdFN0YXRlLmNsZWFyKCk7XG4gICAgICAgIHRoaXMuaW5pdFN0YXRlID0gdW5kZWZpbmVkO1xuXG4gICAgICAgIHRoaXMucmVhZHlTdGF0ZS5uZXh0KG51bGwpO1xuICAgICAgICB0aGlzLnJlYWR5U3RhdGUuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRydWUsIGlmIGEgbGlzdGVuZXIgcmVnaXN0ZXJlZCBmb3IgdGhlIGdpdmVuIGV2ZW50IG9uIHRoaXMgd2lkZ2V0IG1hcmt1cC5cbiAgICAgKiBAcGFyYW0gZXZlbnROYW1lXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAgICovXG4gICAgcHJvdGVjdGVkIGhhc0V2ZW50Q2FsbGJhY2soZXZlbnROYW1lKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmV2ZW50SGFuZGxlcnMuaGFzKGV2ZW50TmFtZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgZm9jdXMgb24gdGhlIHdpZGdldFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBmb2N1cygpOiB2b2lkIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIENoZWNrIGZvciB0aGUgbm9kZXMgaGF2aW5nIGZvY3VzLXRhcmdldCBhdHRyaWJ1dGUgaW5zaWRlIHRoZSBlbGVtZW50XG4gICAgICAgICAqIElmIGZvdW5kLCBmb2N1cyB0aGUgZmlyc3Qgbm9kZSAoZWcsIGRhdGUgd2lkZ2V0KVxuICAgICAgICAgKiBlbHNlLCBmb2N1cyB0aGUgZWxlbWVudCAoZWcsIHRleHQgd2lkZ2V0KVxuICAgICAgICAgKi9cbiAgICAgICAgbGV0ICR0YXJnZXQgPSB0aGlzLiRlbGVtZW50WzBdLnF1ZXJ5U2VsZWN0b3IoJ1tmb2N1cy10YXJnZXRdJyk7XG4gICAgICAgIGlmICghJHRhcmdldCkge1xuICAgICAgICAgICAgJHRhcmdldCA9IHRoaXMuJGVsZW1lbnRbMF07XG4gICAgICAgIH1cbiAgICAgICAgJHRhcmdldC5mb2N1cygpO1xuICAgIH1cblxuICAgIC8vIERlZmluaW5nIHRoZSBleGVjdXRlIG1ldGhvZCBvbiBCYXNlQ29tcG9uZW50LiBJZiBkYXRhc2V0IGlzIGJpbmRlZCB0byB3aWRnZXRzIG91cHR1dCB0aGVuIGRhdGFzb3VyY2UuZXhlY3V0ZSB3aWxsIGJlIGRlZmluZWRcbiAgICBwcm90ZWN0ZWQgZXhlY3V0ZShvcGVyYXRpb24sIG9wdGlvbnMpOiBhbnkge1xuXG4gICAgfVxuXG4gICAgcHVibGljIG11dGUoKSB7XG4gICAgICAgIHRoaXMuaXNNdXRlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgcHVibGljIHVubXV0ZSgpIHtcbiAgICAgICAgdGhpcy5pc011dGVkID0gZmFsc2U7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjdXN0b21JbmplY3Rvck1hcDogYW55ID0ge307XG5cbiAgICAvKipcbiAgICAgKiBBZnRlciB0aGUgQW5ndWxhciAxNyB1cGdyYWRlLCBBbmd1bGFyIGlzIG5vIGxvbmdlciBzZW5kaW5nIG5nVGVtcGxhdGVDb250ZXh0IHRvIGNvbXBvbmVudHMgaW4gbmctdGVtcGxhdGUuXG4gICAgICogV2F2ZW1ha2VyIHdpZGdldHMgaW5zaWRlIG5nLXRlbXBsYXRlIHJlcXVpcmUgY29udGV4dCB0byBldmFsdWF0ZSBiaW5kIGV4cHJlc3Npb25zLlxuICAgICAqIFNvIHdlJ3JlIGNyZWF0aW5nIGFuIGluamVjdGlvblRva2VuIHRoYXQgcmV0dXJucyB0aGUgY29udGV4dCBhcyBhIHZhbHVlLlxuICAgICAqIFdlIGFyZSBwYXNzaW5nIHRoZSBpbmplY3Rpb25Ub2tlbiB0byB0aGUgbmdUZW1wbGF0ZU91dGxldEluamVjdG9yLlxuICAgICAqIFRoaXMgaW5qZWN0cyB0aGUgY29udGV4dCBpbnRvIGVhY2ggd2lkZ2V0IGluIHRoZSBuZy10ZW1wbGF0ZS5cbiAgICAgKiBJbiB0aGUgd2lkZ2V0IGNvbXBvbmVudCBjb25zdHJ1Y3RvciB3ZSBhcmUgZ2V0dGluZyB0aGUgaW5qZWN0aW9uVG9rZW4gdXNpbmcgZGVwZW5kZW5jeSBpbmplY3Rpb24uXG4gICAgICogSWYgaW5qZWN0aW9uVG9rZW4gaXMgcHJlc2VudCwgd2UgZXh0ZW5kIHRoZSBjb21wb25lbnQgY29udGV4dCB3aXRoIHRoZSB2YWx1ZSBvZiBpbmplY3Rpb25Ub2tlbi5cbiAgICAgKiBAcGFyYW0gY29udGV4dEtleVxuICAgICAqIEBwYXJhbSBjb250ZXh0XG4gICAgICogQHJldHVybnMgaW5qZWN0b3JcbiAgICAgKi9cbiAgICBjcmVhdGVDdXN0b21JbmplY3Rvcihjb250ZXh0S2V5OiBzdHJpbmcsIGNvbnRleHQ6IGFueSkge1xuICAgICAgICBpZih0aGlzLmN1c3RvbUluamVjdG9yTWFwW2NvbnRleHRLZXldKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jdXN0b21JbmplY3Rvck1hcFtjb250ZXh0S2V5XS5pbmplY3RvcjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBpbmplY3RvciA9IEluamVjdG9yLmNyZWF0ZSh7XG4gICAgICAgICAgICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6ICdFWFBMSUNJVF9DT05URVhUJywgdXNlRmFjdG9yeTogKCkgPT4gY29udGV4dCB9XVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5jdXN0b21JbmplY3Rvck1hcFtjb250ZXh0S2V5XSA9IHsgY29udGV4dCwgaW5qZWN0b3IgfTtcbiAgICAgICAgcmV0dXJuIGluamVjdG9yO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFmdGVyIHRoZSBob3N0IHBhZ2UgaXMgYXR0YWNoZWQgZnJvbSBjYWNoZSwgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQuXG4gICAgICovXG4gICAgcHVibGljIG5nT25BdHRhY2goKSB7XG4gICAgICAgIHRoaXMuaXNBdHRhY2hlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQmVmb3JlIHRoZSBob3N0IHBhZ2UgaXMgZGV0YWNoZWQgZnJvbSBkb20gYW5kIHN0b3JlZCBpbiBjYWNoZSwgIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkLlxuICAgICAqL1xuICAgIHB1YmxpYyBuZ09uRGV0YWNoKCkge1xuICAgICAgICB0aGlzLmlzQXR0YWNoZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBuYXRpdmVFbGVtZW50IHdpbGwgYmUgYXZhaWxhYmxlIGJ5IHRoaXMgdGltZVxuICAgICAqIGlmIHRoZSBkZWxheUluaXQgaXMgZmFsc2UsIHByb3BlcnRpZXMgbWV0YSB3aWxsIGJlIGF2YWlsYWJsZSBieSB0aGlzIHRpbWVcbiAgICAgKiBJbnZva2UgdGhlIHNldEluaXRQcm9wcyBpZiB0aGUgZGVsYXlJbml0IGlzIGZhbHNlXG4gICAgICovXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIGlmICghdGhpcy5kZWxheWVkSW5pdCkge1xuICAgICAgICAgICAgdGhpcy5zZXRJbml0UHJvcHMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlZ2lzdGVyIHRoZSBldmVudHNcbiAgICAgKi9cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIGlmICh0aGlzLnRvQmVTZXR1cEV2ZW50c1F1ZXVlLmxlbmd0aCkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBmbiBvZiB0aGlzLnRvQmVTZXR1cEV2ZW50c1F1ZXVlKSB7XG4gICAgICAgICAgICAgICAgZm4oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRvQmVTZXR1cEV2ZW50c1F1ZXVlLmxlbmd0aCA9IDA7XG4gICAgICAgIHRoaXMuaXNBdHRhY2hlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCkge31cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLmlzRGVzdHJveWVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy53aWRnZXQgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgICAgICB0aGlzLnN0eWxlQ2hhbmdlLmNvbXBsZXRlKCk7XG4gICAgICAgIHRoaXMucHJvcGVydHlDaGFuZ2UuY29tcGxldGUoKTtcbiAgICAgICAgdGhpcy5kZXN0cm95LmNvbXBsZXRlKCk7XG4gICAgICAgIHRoaXMuaXNBdHRhY2hlZCA9IGZhbHNlO1xuICAgIH1cbn1cbiJdfQ==
|
|
660
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL2Jhc2Uvc3JjL3dpZGdldHMvY29tbW9uL2Jhc2UvYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdILFVBQVUsRUFDVixNQUFNLEVBQ04sTUFBTSxFQUNOLFVBQVUsRUFDVixRQUFRLEVBR1IsUUFBUSxFQUNSLGdCQUFnQixFQUNuQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFFdkQsT0FBTyxFQUFDLGFBQWEsRUFBRSxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFNUMsT0FBTyxFQUNILGVBQWUsRUFDZixXQUFXLEVBQ1gsUUFBUSxFQUNSLE1BQU0sRUFDTixRQUFRLEVBQ1IsR0FBRyxFQUNILFVBQVUsRUFDVixTQUFTLEVBQ1QsV0FBVyxFQUNYLFVBQVUsRUFDVixXQUFXLEVBQ1gsT0FBTyxFQUNQLE1BQU0sRUFDTixhQUFhLEVBQ2IsV0FBVyxFQUNkLE1BQU0sVUFBVSxDQUFDO0FBRWxCLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUMvQyxPQUFPLEVBQUMsUUFBUSxFQUFFLFlBQVksRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBaUIsT0FBTyxFQUFpQixZQUFZLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUMzRixPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQUN0RSxPQUFPLEVBQUMsWUFBWSxFQUFFLFVBQVUsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQ25FLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLHVDQUF1QyxDQUFDO0FB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QUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN4QixDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0gsZUFBZTtRQUNYLElBQUksSUFBSSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ25DLEtBQUssTUFBTSxFQUFFLElBQUksSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7Z0JBQ3pDLEVBQUUsRUFBRSxDQUFDO1lBQ1QsQ0FBQztRQUNMLENBQUM7UUFDRCxJQUFJLENBQUMsb0JBQW9CLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUNyQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztJQUMzQixDQUFDO0lBRUQsa0JBQWtCLEtBQUksQ0FBQztJQUV2QixXQUFXO1FBQ1AsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFDeEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDNUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUMvQixJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO0lBQzVCLENBQUM7OEVBNXdCaUIsYUFBYSx3Q0FrSW5CLFlBQVksZUFDWixrQkFBa0I7dUVBbklaLGFBQWEsV0FBYixhQUFhOztpRkFBYixhQUFhO2NBRGxDLFVBQVU7O3NCQW1JRixNQUFNO3VCQUFDLFlBQVk7O3NCQUNuQixNQUFNO3VCQUFDLGtCQUFrQjs7c0JBQUcsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgSW5qZWN0LFxuICAgIGluamVjdCxcbiAgICBJbmplY3RhYmxlLFxuICAgIEluamVjdG9yLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3B0aW9uYWwsXG4gICAgVmlld0NvbnRhaW5lclJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7RXZlbnRNYW5hZ2VyfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcblxuaW1wb3J0IHtSZXBsYXlTdWJqZWN0LCBTdWJqZWN0fSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtcbiAgICAkaW52b2tlV2F0Y2hlcnMsXG4gICAgJHBhcnNlRXZlbnQsXG4gICAgJHVud2F0Y2gsXG4gICAgJHdhdGNoLFxuICAgIGFkZENsYXNzLFxuICAgIEFwcCxcbiAgICBmaW5kUGFyZW50LFxuICAgIGlzRGVmaW5lZCxcbiAgICBpc01vYmlsZUFwcCxcbiAgICByZW1vdmVBdHRyLFxuICAgIHJlbW92ZUNsYXNzLFxuICAgIHNldEF0dHIsXG4gICAgc2V0Q1NTLFxuICAgIHNldENTU0Zyb21PYmosXG4gICAgc3dpdGNoQ2xhc3Ncbn0gZnJvbSAnQHdtL2NvcmUnO1xuXG5pbXBvcnQge2dldFdpZGdldFByb3BzQnlUeXBlfSBmcm9tICcuLi8uLi9mcmFtZXdvcmsvd2lkZ2V0LXByb3BzJztcbmltcG9ydCB7aXNTdHlsZX0gZnJvbSAnLi4vLi4vZnJhbWV3b3JrL3N0eWxlcic7XG5pbXBvcnQge3JlZ2lzdGVyLCByZW5hbWVXaWRnZXR9IGZyb20gJy4uLy4uL2ZyYW1ld29yay93aWRnZXQtcmVnaXN0cnknO1xuaW1wb3J0IHtDaGFuZ2VMaXN0ZW5lciwgQ29udGV4dCwgSVdpZGdldENvbmZpZywgV2lkZ2V0Q29uZmlnfSBmcm9tICcuLi8uLi9mcmFtZXdvcmsvdHlwZXMnO1xuaW1wb3J0IHt3aWRnZXRJZEdlbmVyYXRvcn0gZnJvbSAnLi4vLi4vZnJhbWV3b3JrL3dpZGdldC1pZC1nZW5lcmF0b3InO1xuaW1wb3J0IHtESVNQTEFZX1RZUEUsIEVWRU5UU19NQVB9IGZyb20gJy4uLy4uL2ZyYW1ld29yay9jb25zdGFudHMnO1xuaW1wb3J0IHtXaWRnZXRQcm94eVByb3ZpZGVyfSBmcm9tICcuLi8uLi9mcmFtZXdvcmsvd2lkZ2V0LXByb3h5LXByb3ZpZGVyJztcbmltcG9ydCB7Z2V0V2F0Y2hJZGVudGlmaWVyfSBmcm9tICcuLi8uLi8uLi91dGlscy93aWRnZXQtdXRpbHMnO1xuaW1wb3J0IHtjYW1lbENhc2UsIGV4dGVuZCwgZm9yRWFjaCwgaXNBcnJheSwgaXNPYmplY3QsIGpvaW4sIGxhc3QsIG1hcH0gZnJvbSBcImxvZGFzaC1lc1wiO1xuXG5kZWNsYXJlIGNvbnN0ICQ7XG5cbi8vIEdldHMgbGlzdCBvZiBjbGFzc2VzIHRvIGFkZCBhbmQgcmVtb3ZlIGFuZCBhcHBsaWVzIG9uIHRoZSAkZWxcbmNvbnN0IHVwZGF0ZUNsYXNzZXMgPSAodG9BZGQsIHRvUmVtb3ZlLCBlbCkgPT4ge1xuICAgIGlmICh0b1JlbW92ZSAmJiB0b1JlbW92ZS5sZW5ndGgpIHtcbiAgICAgICAgcmVtb3ZlQ2xhc3MoZWwsIGpvaW4odG9SZW1vdmUsICcgJykpO1xuICAgIH1cbiAgICBpZiAodG9BZGQgJiYgdG9BZGQubGVuZ3RoKSB7XG4gICAgICAgIGFkZENsYXNzKGVsLCBqb2luKHRvQWRkLCAnICcpKTtcbiAgICB9XG59O1xuXG4vLyBUbyBhZGQgYW5kIHJlbW92ZSBzdHlsZXMgb24gdGhlICRlbFxuY29uc3QgdXBkYXRlU3R5bGVzID0gKG52LCBvdiwgZWwpID0+IHtcbiAgICBpZiAob3YgJiYgaXNPYmplY3Qob3YpKSB7XG4gICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhvdiB8fCB7fSk7XG4gICAgICAgIGtleXMuZm9yRWFjaChmdW5jdGlvbihrZXkpIHtcbiAgICAgICAgICAgIHNldENTUyhlbCwga2V5LCAnJyk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAobnYgJiYgaXNPYmplY3QobnYpKSB7XG4gICAgICAgIHNldENTU0Zyb21PYmooZWwsIG52KTtcbiAgICB9XG5cbn07XG5cbmludGVyZmFjZSBDaGlsZCB7XG4gICAgd2lkZ2V0OiBhbnksXG4gICAgbmF0aXZlRWxlbWVudDogYW55XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95LCBPbkluaXQsIEFmdGVyVmlld0luaXQsIEFmdGVyQ29udGVudEluaXQge1xuXG4gICAgLyoqXG4gICAgICogdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSB3aWRnZXRcbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgd2lkZ2V0SWQ6IGFueTtcblxuICAgIHB1YmxpYyBpc0Rlc3Ryb3llZDogYm9vbGVhbjtcblxuICAgIHB1YmxpYyBpc0F0dGFjaGVkID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBqUXVlcnkgbmF0aXZlRWxlbWVudCByZWZlcmVuY2Ugb2YgdGhlIGNvbXBvbmVudCByb290XG4gICAgICovXG4gICAgcHVibGljIGdldCAkZWxlbWVudCgpIHtcbiAgICAgICAgcmV0dXJuICQodGhpcy5uYXRpdmVFbGVtZW50KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBET00gbm9kZSByZWZlcmVuY2Ugb2YgdGhlIGNvbXBvbmVudCByb290XG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IG5hdGl2ZUVsZW1lbnQ6IEhUTUxFbGVtZW50O1xuXG4gICAgLyoqXG4gICAgICogVHlwZSBvZiB0aGUgY29tcG9uZW50XG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHdpZGdldFR5cGU6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIE1vc3Qgb2YgdGhlIGNhc2VzIGl0IGlzIHNhbWUgYXMgd2lkZ2V0VHlwZVxuICAgICAqIGZvciBzcGVjaWZpYyB3aWRnZXRzIGxpa2UgY2hhcnRzIHdpZGdldFR5cGUgY2FuIGJlIHdtLWNoYXJ0IHdoZXJlIGFzIHRoZSBzdWJ0eXBlIGNhbiBiZSB3bS1iYXItY2hhcnRcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgd2lkZ2V0U3ViVHlwZTogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogUHJveHkgZm9yIHRoZSBjb21wb25lbnQgaW5zdGFuY2UuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHdpZGdldDogYW55O1xuXG4gICAgLyoqXG4gICAgICogVmlldyBwYXJlbnQgY29tcG9uZW50XG4gICAgICogZWcsIFBhZ2UsIFBhcnRpYWwsIFByZWZhYlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSB2aWV3UGFyZW50OiBhbnk7XG5cbiAgICAvKipcbiAgICAgKiBFdmVudE1hbmdlciB0byBhZGQvcmVtb3ZlIGV2ZW50c1xuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBldmVudE1hbmFnZXI6IEV2ZW50TWFuYWdlcjtcblxuICAgIC8qKlxuICAgICAqIEFwcCBMb2NhbGVcbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgYXBwTG9jYWxlOiBhbnk7XG5cbiAgICAvKipcbiAgICAgKiBTdHlsZSBjaGFuZ2Ugc3ViamVjdCBhbmQgb2JzZXJ2YWJsZVxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgc3R5bGVDaGFuZ2UgPSBuZXcgUmVwbGF5U3ViamVjdCgpO1xuXG4gICAgLyoqXG4gICAgICogUHJvcGVydHkgY2hhbmdlIHN1YmplY3QgYW5kIG9ic2VydmFibGVcbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHByb3BlcnR5Q2hhbmdlID0gbmV3IFN1YmplY3QoKTtcblxuICAgIC8qKlxuICAgICAqIE9uIFJlYWR5IFN0YXRlIGNoYW5nZSBzdWJqZWN0IGFuZCBvYnNlcnZhYmxlXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSByZWFkeVN0YXRlID0gbmV3IFN1YmplY3QoKTtcblxuICAgIC8qKlxuICAgICAqIENvbXBvbmVudCBkZXN0cm95IHN1YmplY3QgYW5kIG9ic2VydmFibGVcbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3kgPSBuZXcgU3ViamVjdCgpO1xuXG4gICAgLyoqXG4gICAgICogTWFwIG9mIGV2ZW50IGhhbmRsZXIgY2FsbGJhY2tzXG4gICAgICovXG4gICAgcHJpdmF0ZSBldmVudEhhbmRsZXJzID0gbmV3IE1hcDxzdHJpbmcsIHtjYWxsYmFjazogRnVuY3Rpb24sIGxvY2FsczogYW55fT4oKTtcblxuICAgIC8qKlxuICAgICAqIGNvbnRleHQgb2YgdGhlIHdpZGdldFxuICAgICAqIHdoZW4gdGhlIHdpZGdldCBpcyBwcmVzZXQgaW5zaWRlIGEgcmVwZWF0ZXIgdGhpcyBjb250ZXh0IHdpbGwgaGF2ZSB0aGUgcmVwZWF0ZXIgcmVsYXRlZCBwcm9wZXJ0aWVzXG4gICAgICovXG4gICAgcHVibGljIGNvbnRleHQ6IGFueTtcblxuICAgIC8qKlxuICAgICAqIEluaXRpYWwgc3RhdGUgb2YgdGhlIHdpZGdldC5cbiAgICAgKiBXaWxsIGJlIHVuZGVmaW5lZCBvbmNlIHRoZSBpbml0aWFsIHByb3BlcnRpZXMgYXJlIHNldCBvbiB0byB0aGUgY29tcG9uZW50XG4gICAgICovXG4gICAgcHJpdmF0ZSBpbml0U3RhdGU6IE1hcDxzdHJpbmcsIGFueT47XG5cbiAgICAvKipcbiAgICAgKiBJbnRlcm5hbCBmbGFnIHRvIGRldGVybWluZSB3aGV0aGVyIHRvIHdhaXQgZm9yIHRoZSB3aWRnZXQgaW5pdGlhbGl6YXRpb24gb3Igbm90XG4gICAgICogSWYgdGhlIGluaXRQcm9taXNlIGlzIHByb3ZpZGVkIGluIHRoZSBjb25zdHJ1Y3Rpb24gd2FpdCB0aWxsIHRoZSBwcm9taXNlIGlzIHJlc29sdmVkXG4gICAgICogSWYgdGhlIGluaXRQcm9taXNlIGlzIG5vdCBwcm92aWRlZCBwcm9jZWVkIHdpdGggdGhlIGluaXRpYWxpemF0aW9uLCB3aGljaCBpcyB0aGUgZGVmYXVsdCBiZWhhdmlvci5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGRlbGF5ZWRJbml0OiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogRGlzcGxheSB0eXBlIG9mIHRoZSBjb21wb25lbnQuIGVnLCBibG9jayhEZWZhdWx0KSwgaW5saW5lLWJsb2NrLCBpbmxpbmUgZXRjXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBkaXNwbGF5VHlwZTogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogSG9sZHMgdGhlIGV2ZW50IHJlZ2lzdHJhdGlvbiBmdW5jdGlvbnMuXG4gICAgICogdGhlc2UgZnVuY3Rpb25zIG5lZWRzIHRvIGJlIGV4ZWN1dGVkIGFmdGVyIG9uVmlld0luaXRcbiAgICAgKi9cbiAgICBwcml2YXRlIHRvQmVTZXR1cEV2ZW50c1F1ZXVlOiBBcnJheTxGdW5jdGlvbj4gPSBbXTtcblxuICAgIHB1YmxpYyBfX2Nsb25lYWJsZV9fID0gZmFsc2U7XG5cbiAgICBwdWJsaWMgd2lkZ2V0UHJvcHM6IE1hcDxzdHJpbmcsIGFueT47XG5cbiAgICBwcml2YXRlICRhdHRycyA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG5cbiAgICBwcml2YXRlIGlzTXV0ZWQgPSBmYWxzZTtcblxuICAgIHB1YmxpYyB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmO1xuICAgIHB1YmxpYyB2aWV3UGFyZW50QXBwOiBBcHA7XG4gICAgLyoqXG4gICAgICogVG8gYXZvaWQgcmUtcmVuZGVyaW5nIG9mIHdpZGdldCwgcGFzc2luZyB1bmlxdWUgaWQgYXMgY29udGV4dEtleSB0byBjcmVhdGVDdXN0b21JbmplY3RvclxuICAgICAqIChmb3IgTGlzdCwgRHluYW1pYyBUYWJzLCBBY2NvcmRpb24sIE5hdiwgQ2Fyb3VzZWwpXG4gICAgICovXG4gICAgcHVibGljIHRyYWNrSWQ6IHN0cmluZztcblxuICAgIGN1c3RvbVdpZGdldFN1YlR5cGU6IHN0cmluZztcblxuICAgIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJvdGVjdGVkIGluajogSW5qZWN0b3IsXG4gICAgICAgIEBJbmplY3QoV2lkZ2V0Q29uZmlnKSBjb25maWc6IElXaWRnZXRDb25maWcsXG4gICAgICAgIEBJbmplY3QoJ0VYUExJQ0lUX0NPTlRFWFQnKSBAT3B0aW9uYWwoKSBleHBsaWNpdENvbnRleHQ/OiBhbnksXG4gICAgICAgIGluaXRQcm9taXNlPzogUHJvbWlzZTxhbnk+IC8vIFByb21pc2Ugb24gd2hpY2ggdGhlIGluaXRpYWxpemF0aW9uIGhhcyB0byB3YWl0XG4gICAgKSB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnRSZWYgPSBpbmouZ2V0KEVsZW1lbnRSZWYpO1xuICAgICAgICB0aGlzLm5hdGl2ZUVsZW1lbnQgPSBlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIC8vbWFraW5nIHRoZSBjb2RlIGNvbXBhdGlibGUgaW4gYm90aCB0aGUgSklUIGFuZCBBT1QgbW9kZXNcbiAgICAgICAgdGhpcy52aWV3UGFyZW50QXBwID0gaW5qID8gaW5qLmdldChBcHApIDogaW5qZWN0KEFwcCk7XG4gICAgICAgIHRoaXMud2lkZ2V0VHlwZSA9IGNvbmZpZy53aWRnZXRUeXBlO1xuICAgICAgICB0aGlzLndpZGdldFN1YlR5cGUgPSBjb25maWcud2lkZ2V0U3ViVHlwZSB8fCBjb25maWcud2lkZ2V0VHlwZTtcbiAgICAgICAgdGhpcy52aWV3Q29udGFpbmVyUmVmID0gaW5qLmdldChWaWV3Q29udGFpbmVyUmVmKTtcbiAgICAgICAgLy8gdGhpcy52aWV3UGFyZW50ID0gKGluaiBhcyBhbnkpLnZpZXcuY29tcG9uZW50O1xuICAgICAgICAvLyB0aGlzLnZpZXdQYXJlbnQgPSAodGhpcy52aWV3Q29udGFpbmVyUmVmIGFzIGFueSkucGFyZW50SW5qZWN0b3IuX2xWaWV3WzhdO1xuICAgICAgICAvLyB0aGlzLnZpZXdQYXJlbnQgPSBfdmlld1BhcmVudCB8fCAodGhpcy52aWV3Q29udGFpbmVyUmVmIGFzIGFueSkucGFyZW50SW5qZWN0b3IuX2xWaWV3WzhdO1xuICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2Jsb2IvbWFpbi9wYWNrYWdlcy9jb3JlL3NyYy9yZW5kZXIzL2ludGVyZmFjZXMvdmlldy50c1xuXG4gICAgICAgIGxldCBsVmlldyA9ICh0aGlzLmluaiBhcyBhbnkpLl9sVmlldztcbiAgICAgICAgdGhpcy52aWV3UGFyZW50ID0gZmluZFBhcmVudChsVmlldywgdGhpcy52aWV3UGFyZW50QXBwKTtcbiAgICAgICAgLy9jb25zb2xlLmxvZyhcIi0tLSoqKioqKioqKioqKiotLWNvbnRleHQtLSoqKioqKioqKioqKiotLS1cIiwgbFZpZXdbOF0pO1xuICAgICAgICB0aGlzLmNvbnRleHQgPSAodGhpcy5pbmogYXMgYW55KS5fbFZpZXdbOF07XG5cbiAgICAgICAgdGhpcy5kaXNwbGF5VHlwZSA9IGNvbmZpZy5kaXNwbGF5VHlwZSB8fCBESVNQTEFZX1RZUEUuQkxPQ0s7XG4gICAgICAgIC8vIHRoaXMuY29udGV4dCA9IChpbmogYXMgYW55KS52aWV3LmNvbnRleHQ7XG4gICAgICAgIC8vIHRoaXMuY29udGV4dCA9ICh0aGlzLnZpZXdDb250YWluZXJSZWYgYXMgYW55KS5faG9zdExWaWV3LmRlYnVnLmNvbnRleHQ7XG4gICAgICAgIC8vIGxldCBoYXNJbXBsaWNpdENvbnRleHQgPSAodGhpcy52aWV3Q29udGFpbmVyUmVmIGFzIGFueSkuX2hvc3RMVmlldy5maW5kKHQgPT4gdCAmJiAhIXQuJGltcGxpY2l0KTtcbiAgICAgICAgLy8gd2hlbiAkaW1wbGljaXQgaXMgbm90IGF2YWlsYWJsZSwgdGhpcyBvYmplY3QgY29udGFpbnMgc29tZSBuZ0ZvciBjb250ZXh0IG9yIGxpc3RpdGVtIGNvbnRleHQgb2YgdGhlIHdpZGdldCB0aGVuXG4gICAgICAgIC8vIHdlIHVzZSB0aGUgZGlyZWN0IHBhcmVudCBmb3IgZXhhbXBsZTogbmF2IGNvbXBvbmVudCBpcyB0aGUgcGFyZW50IGZvciBhbmNob3IgPT4gYW5jaG9yIGdldHMgdmlld1BhcmVudCBhcyBOYXZcbiAgICAgICAgLy8gSW4gb3RoZXIgY2FzZSwgd2hlcmUgd2UgaGF2ZSBpbXBsaWNpdENvbnRleHQgdGhlcmUgd2UgY2FuIG1ha2UgdXNlIG9mIHBhZ2UvYXBwIGxldmVsIGNvbnRleHQgaGVuY2Ugdmlld1BhcmVudC52aWV3UGFyZW50IHRvIGdldCBwYWdlIGxldmVsIGNvbnRleHRcbiAgICAgICAgLyppZiAoaGFzSW1wbGljaXRDb250ZXh0ICYmIHRoaXMudmlld1BhcmVudC52aWV3UGFyZW50KSB7XG4gICAgICAgICAgICBpZiAodGhpcy52aWV3UGFyZW50LndpZGdldFR5cGUgIT09ICd3bS1jYXJkJyAmJiB0aGlzLnZpZXdQYXJlbnQud2lkZ2V0VHlwZSAhPT0gJ3dtLWlmcmFtZWRpYWxvZydcbiAgICAgICAgICAgICAgICAmJiB0aGlzLnZpZXdQYXJlbnQud2lkZ2V0VHlwZSAhPT0gJ3dtLXBhcnRpYWxkaWFsb2cnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy52aWV3UGFyZW50ID0gdGhpcy52aWV3UGFyZW50LnZpZXdQYXJlbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFoYXNJbXBsaWNpdENvbnRleHQgfHwgKCF0aGlzLnZpZXdQYXJlbnQud2lkZ2V0VHlwZSkpIHtcbiAgICAgICAgICAgIHRoaXMuY29udGV4dCA9ICh0aGlzLnZpZXdDb250YWluZXJSZWYgYXMgYW55KS5faG9zdExWaWV3LmZpbmQodCA9PiB0ICYmICEhdC4kaW1wbGljaXQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jb250ZXh0ID0gKHRoaXMudmlld0NvbnRhaW5lclJlZiBhcyBhbnkpLnBhcmVudEluamVjdG9yLl9sVmlld1s4XTtcbiAgICAgICAgfSovXG5cbiAgICAgICAgLyppZihfdmlld1BhcmVudCAmJiAhaGFzSW1wbGljaXRDb250ZXh0KSB7XG4gICAgICAgICAgICB0aGlzLmNvbnRleHQgPSAodGhpcy52aWV3Q29udGFpbmVyUmVmIGFzIGFueSkuX2hvc3RMVmlld1s4XTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY29udGV4dCA9IGhhc0ltcGxpY2l0Q29udGV4dDtcbiAgICAgICAgfSovXG4gICAgICAgIC8vIGlmIChbJ3dtLWxpc3QnLCAnd20tbmF2J10uaW5jbHVkZXModGhpcy52aWV3UGFyZW50LndpZGdldFR5cGUpIHx8IFsnd20tY2Fyb3VzZWwtdGVtcGxhdGUnLCAnd20tY2FyZCddLmluY2x1ZGVzKHRoaXMud2lkZ2V0VHlwZSkpIHtcbiAgICAgICAgLy8gICAgIHRoaXMuY29udGV4dCA9ICh0aGlzLnZpZXdDb250YWluZXJSZWYgYXMgYW55KS5faG9zdExWaWV3LmRlYnVnLmNvbnRleHQ7XG4gICAgICAgIC8vIH0gZWxzZSB7XG4gICAgICAgIC8vICAgICB0aGlzLmNvbnRleHQgPSAodGhpcy52aWV3Q29udGFpbmVyUmVmIGFzIGFueSkucGFyZW50SW5qZWN0b3IuX2xWaWV3WzhdO1xuICAgICAgICAvLyB9XG4gICAgICAgIHRoaXMud2lkZ2V0ID0gdGhpcy5jcmVhdGVQcm94eSgpO1xuICAgICAgICB0aGlzLmV2ZW50TWFuYWdlciA9IGluai5nZXQoRXZlbnRNYW5hZ2VyKTtcbiAgICAgICAgKHRoaXMubmF0aXZlRWxlbWVudCBhcyBhbnkpLndpZGdldCA9IHRoaXMud2lkZ2V0O1xuXG4gICAgICAgIHRoaXMuYXBwTG9jYWxlID0gaW5qLmdldChBcHApLmFwcExvY2FsZSB8fCB7fTtcblxuICAgICAgICB0aGlzLmluaXRDb250ZXh0KCk7XG5cbiAgICAgICAgaWYgKGNvbmZpZy5ob3N0Q2xhc3MpIHtcbiAgICAgICAgICAgIGFkZENsYXNzKHRoaXMubmF0aXZlRWxlbWVudCwgY29uZmlnLmhvc3RDbGFzcyk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLndpZGdldElkID0gdGhpcy5nZW5lcmF0ZVdpZGdldElkKCk7XG4gICAgICAgIHRoaXMudHJhY2tJZCA9IHRoaXMuZ2VuZXJhdGVXaWRnZXRJZCgpO1xuICAgICAgICBzZXRBdHRyKHRoaXMubmF0aXZlRWxlbWVudCwgJ3dpZGdldC1pZCcsIHRoaXMud2lkZ2V0SWQsIHRydWUpO1xuXG4gICAgICAgIC8vIHJlZ2lzdGVyIGRlZmF1bHQgcHJvcGVydHkgY2hhbmdlIGhhbmRsZXIgYW5kIHN0eWxlIGNoYW5nZSBoYW5kbGVyXG4gICAgICAgIHRoaXMucmVnaXN0ZXJTdHlsZUNoYW5nZUxpc3RlbmVyKHRoaXMub25TdHlsZUNoYW5nZSwgdGhpcyk7XG4gICAgICAgIHRoaXMucmVnaXN0ZXJQcm9wZXJ0eUNoYW5nZUxpc3RlbmVyKHRoaXMub25Qcm9wZXJ0eUNoYW5nZSwgdGhpcyk7XG5cbiAgICAgICAgLy8gaWYgdGhlIGluaXRQcm9taXNlIGlzIHByb3ZpZGVkLCB3YWl0IHRpbGwgdGhlIHByb21pc2UgaXMgcmVzb2x2ZWQgdG8gcHJvY2VlZCB3aXRoIHRoZSB3aWRnZXQgaW5pdGlhbGl6YXRpb25cbiAgICAgICAgaWYgKCFpbml0UHJvbWlzZSkge1xuICAgICAgICAgICAgdGhpcy5pbml0V2lkZ2V0KCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmRlbGF5ZWRJbml0ID0gdHJ1ZTtcbiAgICAgICAgICAgIGluaXRQcm9taXNlLnRoZW4oKHJlc29sdmVGbikgPT4ge1xuICAgICAgICAgICAgICAgIGxldCBmb3JtRmllbGRDVyA9IHRoaXMud2lkZ2V0U3ViVHlwZSA9PT0gJ3dtLWZvcm0tZmllbGQtY3VzdG9tLXdpZGdldCcsXG4gICAgICAgICAgICAgICAgICAgIGN3ICAgICAgICAgID0gdGhpcy53aWRnZXRTdWJUeXBlLnN0YXJ0c1dpdGgoJ3dtLWN1c3RvbS0nKTtcbiAgICAgICAgICAgICAgICBpZiggZm9ybUZpZWxkQ1cgfHwgY3cgKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY3VzdG9tV2lkZ2V0U3ViVHlwZSA9IGZvcm1GaWVsZENXID8gJ3dtLWZvcm0tZmllbGQtJyArIGxhc3QodGhpc1tcImZvcm1XaWRnZXRcIl0uY29uZmlnLndpZGdldFR5cGUuc3BsaXQoJy0nKSkgOiB0aGlzW1wiY29uZmlnXCJdLndpZGdldFR5cGU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5pbml0V2lkZ2V0KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRJbml0UHJvcHMoKTtcbiAgICAgICAgICAgICAgICByZXNvbHZlRm4gJiYgcmVzb2x2ZUZuKClcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmKGV4cGxpY2l0Q29udGV4dCkge1xuICAgICAgICAgICAgZXh0ZW5kKHRoaXMuY29udGV4dCwgZXhwbGljaXRDb250ZXh0KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBnZXROYXRpdmVFbGVtZW50KCk6IEhUTUxFbGVtZW50IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubmF0aXZlRWxlbWVudDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0V2lkZ2V0VHlwZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy53aWRnZXRUeXBlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRXaWRnZXRTdWJUeXBlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLndpZGdldFN1YlR5cGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFdpZGdldCgpOiBhbnkge1xuICAgICAgICByZXR1cm4gdGhpcy53aWRnZXQ7XG4gICAgfVxuXG4gICAgcHVibGljIHNldFByb3BlcnR5KHByb3BOYW1lLCBwcm9wVmFsdWUpIHtcbiAgICAgICAgdGhpcy53aWRnZXRbcHJvcE5hbWVdID0gcHJvcFZhbHVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRWaWV3UGFyZW50KCk6IGFueSB7XG4gICAgICAgIHJldHVybiB0aGlzLnZpZXdQYXJlbnQ7XG4gICAgfVxuXG4gICAgcHVibGljIG5vdGlmeVN0eWxlQ2hhbmdlKGtleTogc3RyaW5nLCBudjogYW55LCBvdjogYW55KSB7XG4gICAgICAgIHRoaXMuc3R5bGVDaGFuZ2UubmV4dCh7a2V5LCBudiwgb3Z9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbm90aWZ5UHJvcGVydHlDaGFuZ2Uoa2V5OiBzdHJpbmcsIG52OiBhbnksIG92OiBhbnkpIHtcbiAgICAgICAgdGhpcy5wcm9wZXJ0eUNoYW5nZS5uZXh0KHtrZXksIG52LCBvdn0pO1xuICAgIH1cblxuICAgIHB1YmxpYyByZWdpc3RlclN0eWxlQ2hhbmdlTGlzdGVuZXIoZm46IENoYW5nZUxpc3RlbmVyLCBjdHg/OiBhbnkpIHtcbiAgICAgICAgaWYgKGN0eCkge1xuICAgICAgICAgICAgZm4gPSBmbi5iaW5kKGN0eCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zdHlsZUNoYW5nZS5zdWJzY3JpYmUoKHtrZXksIG52LCBvdn0pID0+IGZuKGtleSwgbnYsIG92KSk7XG4gICAgfVxuXG4gICAgcHVibGljIHJlZ2lzdGVyUmVhZHlTdGF0ZUxpc3RlbmVyKGZuOiBGdW5jdGlvbiwgY3R4PzogYW55KSB7XG4gICAgICAgIGlmIChjdHgpIHtcbiAgICAgICAgICAgIGZuID0gZm4uYmluZChjdHgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnJlYWR5U3RhdGUuaXNTdG9wcGVkKSB7XG4gICAgICAgICAgICBmbigpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucmVhZHlTdGF0ZS5zdWJzY3JpYmUoKCkgPT4gZm4oKSk7XG4gICAgfVxuXG4gICAgcHVibGljIHJlZ2lzdGVyUHJvcGVydHlDaGFuZ2VMaXN0ZW5lcihmbjogQ2hhbmdlTGlzdGVuZXIsIGN0eD86IGFueSkge1xuICAgICAgICBpZiAoY3R4KSB7XG4gICAgICAgICAgICBmbiA9IGZuLmJpbmQoY3R4KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnByb3BlcnR5Q2hhbmdlLnN1YnNjcmliZSgoe2tleSwgbnYsIG92fSkgPT4gZm4oa2V5LCBudiwgb3YpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVnaXN0ZXJEZXN0cm95TGlzdGVuZXIoZm46IEZ1bmN0aW9uLCBjdHg/OiBhbnkpIHtcbiAgICAgICAgaWYgKGN0eCkge1xuICAgICAgICAgICAgZm4gPSBmbi5iaW5kKGN0eCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5kZXN0cm95LnN1YnNjcmliZSgoKSA9PiB7fSwgKCkgPT4ge30sICgpID0+IGZuKCkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXREaXNwbGF5VHlwZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5kaXNwbGF5VHlwZTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgY3JlYXRlUHJveHkoKTogYW55IHtcbiAgICAgICAgcmV0dXJuIFdpZGdldFByb3h5UHJvdmlkZXIuY3JlYXRlKHRoaXMsIHRoaXMud2lkZ2V0U3ViVHlwZSwgZ2V0V2lkZ2V0UHJvcHNCeVR5cGUodGhpcy53aWRnZXRTdWJUeXBlKSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGluaXRDb250ZXh0KCkge1xuICAgICAgICAvLyBjb25zdCBjb250ZXh0ID0gKHRoaXMuaW5qIGFzIGFueSkudmlldy5jb250ZXh0O1xuICAgICAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5jb250ZXh0IHx8IHt9O1xuXG4gICAgICAgIGNvbnN0IHBhcmVudENvbnRleHRzID0gdGhpcy5pbmouZ2V0KENvbnRleHQsIHt9KTtcblxuICAgICAgICAvLyBhc3NpZ24gdGhlIGNvbnRleHQgcHJvcGVydHkgYWNjb3JkaW5nbHlcbiAgICAgICAgaWYgKHRoaXMudmlld1BhcmVudCAhPT0gY29udGV4dCkge1xuICAgICAgICAgICAgdGhpcy5jb250ZXh0ID0gY29udGV4dDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY29udGV4dCA9IHt9O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHBhcmVudENvbnRleHRzKSB7XG4gICAgICAgICAgICBsZXQgcGFyZW50Q29udGV4dE9iaiA9IHt9O1xuICAgICAgICAgICAgaWYgKGlzQXJyYXkocGFyZW50Q29udGV4dHMpKSB7XG4gICAgICAgICAgICAgICAgZm9yRWFjaChwYXJlbnRDb250ZXh0cywgKGNvbnRleHRPYmopID0+IHtcbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihwYXJlbnRDb250ZXh0T2JqLCBjb250ZXh0T2JqKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcGFyZW50Q29udGV4dE9iaiA9IHBhcmVudENvbnRleHRzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5jb250ZXh0ID0gT2JqZWN0LmFzc2lnbih7fSwgcGFyZW50Q29udGV4dE9iaiwgdGhpcy5jb250ZXh0KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHNldCB0aGUgdmFsdWUgb24gdGhlIHByb3h5IG9iamVjdCBpZSwgd2lkZ2V0XG4gICAgICogc2V0dGluZyB0aGUgcHJvcGVydHkgb24gdGhlIHByb3h5IHdpbGwgaW52b2tlIHRoZSBjaGFuZ2UgbGlzdGVuZXJzXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleVxuICAgICAqIEBwYXJhbSB2YWx1ZVxuICAgICAqL1xuICAgIHB1YmxpYyBzZXRXaWRnZXRQcm9wZXJ0eShrZXk6IHN0cmluZywgdmFsdWU6IGFueSkge1xuICAgICAgICB0aGlzLndpZGdldFtrZXldID0gdmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEF0dHIoYXR0ck5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLiRhdHRycy5nZXQoYXR0ck5hbWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHJldHVybnMgYXBwIGluc3RhbmNlXG4gICAgICogQHJldHVybnMge0FwcH1cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0QXBwSW5zdGFuY2UoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmluai5nZXQoQXBwKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZW5lcmF0ZXMgYSB1bmlxdWUgaWRcbiAgICAgKiBEZWZhdWx0IHBhdHRlcm4gaXMgYHdpZGdldC1pZC0ke2lkfWBcbiAgICAgKiBDb21wb25lbnRzIGNhbiBvdmVycmlkZSB0aGlzIG1ldGhvZCB0byBnZW5lcmF0ZSBhIGRpZmZlcmVudCBpZCBlZywgYmFyLWNoYXJ0LTFcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgZ2VuZXJhdGVXaWRnZXRJZCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gd2lkZ2V0SWRHZW5lcmF0b3IubmV4dFVpZCgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEhhbmRsZXMgdGhlIGNvbW1vbiBmdW5jdGlvbmFsaXR5IGFjcm9zcyB0aGUgY29tcG9uZW50c1xuICAgICAqIGVnLFxuICAgICAqICAxLiB2YWx1ZSBvZiB0aGUgY2xhc3MgcHJvcGVydHkgd2lsbCBiZSBhcHBsaWVkIG9uIHRoZSBob3N0IGVsZW1lbnRcbiAgICAgKiAgMi4gYmFzZWQgb24gdGhlIHZhbHVlIG9mIHNob3cgcHJvcGVydHkgY29tcG9uZW50IGlzIHNob3duL2hpZGRlblxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleVxuICAgICAqIEBwYXJhbSBudlxuICAgICAqIEBwYXJhbSBvdlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBvblByb3BlcnR5Q2hhbmdlKGtleTogc3RyaW5nLCBudjogYW55LCBvdj86IGFueSkge1xuICAgICAgICBpZiAoa2V5ID09PSAnc2hvdycpIHtcbiAgICAgICAgICAgIHRoaXMubmF0aXZlRWxlbWVudC5oaWRkZW4gPSAhbnY7XG4gICAgICAgIH0gZWxzZSBpZiAoa2V5ID09PSAnaGludCcpIHtcbiAgICAgICAgICAgIGlmICghaXNNb2JpbGVBcHAoKSkge1xuICAgICAgICAgICAgICAgIHNldEF0dHIodGhpcy5uYXRpdmVFbGVtZW50LCAndGl0bGUnLCBudik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoa2V5ID09PSAnY2xhc3MnKSB7XG4gICAgICAgICAgICBzd2l0Y2hDbGFzcyh0aGlzLm5hdGl2ZUVsZW1lbnQsIG52LCBvdik7XG4gICAgICAgICAgICBsZXQgcmVzdWx0ID0gbnYubWF0Y2goLyhcXFd8XikoaChbMC02XSkpKD89XFxzfCQpLyk7XG4gICAgICAgICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgc2V0QXR0cih0aGlzLm5hdGl2ZUVsZW1lbnQsICdyb2xlJywgJ2hlYWRpbmcnKTtcbiAgICAgICAgICAgICAgICBzZXRBdHRyKHRoaXMubmF0aXZlRWxlbWVudCwgJ2FyaWEtbGV2ZWwnLCByZXN1bHRbM10pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGtleSA9PT0gJ25hbWUnIHx8IGtleSA9PT0gJ3RhYmluZGV4Jykge1xuICAgICAgICAgICAgc2V0QXR0cih0aGlzLm5hdGl2ZUVsZW1lbnQsIGtleSwgbnYpO1xuICAgICAgICAgICAgaWYgKGtleSA9PT0gJ25hbWUnICYmIG52KSB7XG4gICAgICAgICAgICAgICAgcmVuYW1lV2lkZ2V0KHRoaXMudmlld1BhcmVudCwgdGhpcy53aWRnZXQsIG52LCBvdik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoa2V5ID09PSAnY29uZGl0aW9uYWxjbGFzcycpIHtcbiAgICAgICAgICAgIC8vIHVwZGF0ZSBjbGFzc2VzIGlmIG9sZCBhbmQgbnYgdmFsdWUgYXJlIGRpZmZlcmVudFxuICAgICAgICAgICAgdXBkYXRlQ2xhc3Nlcyhudi50b0FkZCwgbnYudG9SZW1vdmUsIHRoaXMubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIH0gZWxzZSAgaWYgKGtleSA9PT0gJ2F1dG9wbGF5Jykge1xuICAgICAgICAgICAgY29uc3QgdGFnTmFtZSA9IHRoaXMud2lkZ2V0VHlwZSA9PT0gJ3dtLWF1ZGlvJyA/ICdhdWRpbycgOiAndmlkZW8nO1xuICAgICAgICAgICAgLy8gVHJpZ2dlciBtZWRpYShhdWRpby92aWRlbykgZWxlbWVudCBsb2FkIG1ldGhvZCBhZnRlciBjaGFuZ2luZyBhdXRvcGxheSBwcm9wZXJ0eVxuICAgICAgICAgICAgdGhpcy5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IodGFnTmFtZSkubG9hZCgpO1xuICAgICAgICB9IGVsc2UgaWYgKGtleSA9PT0gJ2NvbmRpdGlvbmFsc3R5bGUnKSB7XG4gICAgICAgICAgICAvLyB1cGRhdGUgc3R5bGVzIGlmIG9sZCBhbmQgbnYgdmFsdWUgYXJlIGRpZmZlcmVudFxuICAgICAgICAgICAgdXBkYXRlU3R5bGVzKG52LCBvdiwgdGhpcy5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgfSBlbHNlIGlmIChrZXkgPT09ICdhbmltYXRpb24nKSB7XG4gICAgICAgICAgICAvLyB1cGRhdGUgc3R5bGVzIGlmIG9sZCBhbmQgbnYgdmFsdWUgYXJlIGRpZmZlcmVudFxuICAgICAgICAgICAgYWRkQ2xhc3ModGhpcy5uYXRpdmVFbGVtZW50LCBcImFuaW1hdGVkIFwiICsgbnYpO1xuICAgICAgICB9ICBlbHNlIGlmIChrZXkgPT09ICdkaXNhYmxlZCcpIHtcbiAgICAgICAgICAgIC8vIFdNUy0xOTMyMTogSW4gSUUsIHdpZGdldCBpcyBpbiBkaXNhYmxlZCBzdGF0ZSB3aGVuIGRpc2FibGVkPVwiZmFsc2VcIiBhdHRyaWJ1dGUgaXMgcHJlc2VudFxuICAgICAgICAgICAgKG52ID09PSB0cnVlKSA/IHNldEF0dHIodGhpcy5uYXRpdmVFbGVtZW50LCAnZGlzYWJsZWQnLCAndHJ1ZScsIHRydWUpIDogcmVtb3ZlQXR0cih0aGlzLm5hdGl2ZUVsZW1lbnQsICdkaXNhYmxlZCcsIHRydWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGVmYXVsdCBzdHlsZSBjaGFuZ2UgaGFuZGxlclxuICAgICAqL1xuICAgIHByb3RlY3RlZCBvblN0eWxlQ2hhbmdlKGs6IHN0cmluZywgbnY6IGFueSwgb3Y/OiBhbnkpIHt9XG5cbiAgICAvKipcbiAgICAgKiBSZWdpc3RlciB0aGUgd2lkZ2V0IHdpdGggdGhlIHdpZGdldFJlZ2lzdHJ5XG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlZ2lzdGVyV2lkZ2V0KHdpZGdldE5hbWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLnJlZ2lzdGVyRGVzdHJveUxpc3RlbmVyKHJlZ2lzdGVyKHRoaXMud2lkZ2V0LCB0aGlzLnZpZXdQYXJlbnQsIHRoaXMud2lkZ2V0SWQsIHdpZGdldE5hbWUpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBvdmVycmlkZSB0aGVcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgZ2V0TWFwcGVkRXZlbnROYW1lKGV2ZW50TmFtZSkge1xuICAgICAgICByZXR1cm4gRVZFTlRTX01BUC5nZXQoZXZlbnROYW1lKSB8fCBldmVudE5hbWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogaW52b2tlIHRoZSBldmVudCBoYW5kbGVyXG4gICAgICogQ29tcG9uZW50cyBjYW4gb3ZlcnJpZGUgdGhpcyBtZXRob2QgdG8gZXhlY3V0ZSBjdXN0b20gbG9naWMgYmVmb3JlIGludm9raW5nIHRoZSB1c2VyIGNhbGxiYWNrXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGhhbmRsZUV2ZW50KG5vZGU6IEhUTUxFbGVtZW50LCBldmVudE5hbWU6IHN0cmluZywgZXZlbnRDYWxsYmFjazogRnVuY3Rpb24sIGxvY2FsczogYW55LCBtZXRhPzogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuZXZlbnRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAgICAgICBub2RlLFxuICAgICAgICAgICAgZXZlbnROYW1lLFxuICAgICAgICAgICAgZSA9PiB7XG4gICAgICAgICAgICAgICAgbG9jYWxzLiRldmVudCA9IGU7XG4gICAgICAgICAgICAgICAgaWYgKG1ldGEgPT09ICdkZWxheWVkJykge1xuICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gZXZlbnRDYWxsYmFjaygpLCAxNTApO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBldmVudENhbGxiYWNrKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHBhcnNlIHRoZSBldmVudCBleHByZXNzaW9uIGFuZCBzYXZlIHJlZmVyZW5jZSB0byB0aGUgZnVuY3Rpb24gaW5zaWRlIGV2ZW50SGFuZGxlcnMgbWFwXG4gICAgICogSWYgdGhlIGNvbXBvbmVudCBwcm92aWRlcyBhIG92ZXJyaWRlIGZvciBhbiBldmVudCB0aHJvdWdoIEBFdmVudCBkZWNvcmF0b3IgaW52b2tlIHRoYXRcbiAgICAgKiBlbHNlIGludm9rZSB0aGUgcmVzb2x2ZWQgZnVuY3Rpb25cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBldmVudE5hbWVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gZXhwclxuICAgICAqL1xuICAgIHByb3RlY3RlZCBwcm9jZXNzRXZlbnRBdHRyKGV2ZW50TmFtZTogc3RyaW5nLCBleHByOiBzdHJpbmcsIG1ldGE/OiBzdHJpbmcsIGNoaWxkPzogQ2hpbGQpIHtcbiAgICAgICAgY29uc3QgZm4gPSAkcGFyc2VFdmVudChleHByKTtcbiAgICAgICAgY29uc3QgbG9jYWxzID0gdGhpcy5jb250ZXh0O1xuICAgICAgICBsb2NhbHMud2lkZ2V0ID0gY2hpbGQgPyBjaGlsZC53aWRnZXQgOiB0aGlzLndpZGdldDtcbiAgICAgICAgY29uc3QgYm91bmRGbiA9IGZuLmJpbmQodW5kZWZpbmVkLCBjaGlsZCA/IHRoaXMudmlld1BhcmVudC52aWV3UGFyZW50IDogdGhpcy52aWV3UGFyZW50LCBsb2NhbHMpO1xuXG4gICAgICAgIGxldCB3aWRnZXQgICAgICAgICAgPSBjaGlsZCA/IGNoaWxkLndpZGdldCA6IHRoaXMsXG4gICAgICAgICAgICBuYXRpdmVFbGVtZW50ICAgPSBjaGlsZCA/IGNoaWxkLm5hdGl2ZUVsZW1lbnQgOiB0aGlzLm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICAgICAgY29uc3QgZXZlbnRDYWxsYmFjayA9ICgpID0+IHtcbiAgICAgICAgICAgIGxldCBib3VuZEZuVmFsO1xuICAgICAgICAgICAgJGludm9rZVdhdGNoZXJzKHRydWUpO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBsb2NhbHMuJGV2ZW50ID0gbG9jYWxzLiRldmVudCB8fCBuZXcgd2luZG93LkN1c3RvbUV2ZW50KGV2ZW50TmFtZSk7XG4gICAgICAgICAgICAgICAgLy8gSWYgdGhlIGV2ZW50IGlzIGJvdW5kIGRpcmVjdGx5IHRvIHRoZSB2YXJpYWJsZSB0aGVuIHdlIG5lZWQgdG8gaW50ZXJuYWxseSBoYW5kbGVcbiAgICAgICAgICAgICAgICAvLyB0aGUgcHJvbWlzZSByZXR1cm5lZCBieSB0aGUgdmFyaWFibGUgY2FsbC5cbiAgICAgICAgICAgICAgICBib3VuZEZuVmFsID0gYm91bmRGbigpO1xuICAgICAgICAgICAgICAgIGlmIChib3VuZEZuVmFsIGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICAgICAgICAgICAgICBib3VuZEZuVmFsLnRoZW4oIHJlc3BvbnNlID0+IHJlc3BvbnNlLCBlcnIgPT4gZXJyKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYm91bmRGblZhbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgaWYoY2hpbGQgJiYgIWNoaWxkLndpZGdldC5ldmVudEhhbmRsZXJzKVxuICAgICAgICAgICAgY2hpbGQud2lkZ2V0LmV2ZW50SGFuZGxlcnMgPSBuZXcgTWFwPHN0cmluZywge2NhbGxiYWNrOiBGdW5jdGlvbiwgbG9jYWxzOiBhbnl9PigpXG5cbiAgICAgICAgd2lkZ2V0LmV2ZW50SGFuZGxlcnMuc2V0KHRoaXMuZ2V0TWFwcGVkRXZlbnROYW1lKGV2ZW50TmFtZSksIHtjYWxsYmFjazogZXZlbnRDYWxsYmFjaywgbG9jYWxzfSk7XG4gICAgICAgIC8vIHByZXBlbmQgZXZlbnROYW1lIHdpdGggb24gYW5kIGNvbnZlcnQgaXQgdG8gY2FtZWxjYXNlLlxuICAgICAgICAvLyBlZywgXCJjbGlja1wiIC0tLT4gb25DbGlja1xuICAgICAgICBjb25zdCBvbkV2ZW50TmFtZSA9IGNhbWVsQ2FzZShgb24tJHtldmVudE5hbWV9YCk7XG4gICAgICAgIC8vIHNhdmUgdGhlIGV2ZW50Q2FsbGJhY2sgaW4gd2lkZ2V0U2NvcGUuXG5cbiAgICAgICAgd2lkZ2V0W29uRXZlbnROYW1lXSA9IGV2ZW50Q2FsbGJhY2s7XG5cbiAgICAgICAgLy8gZXZlbnRzIG5lZWRzIHRvIGJlIHNldHVwIGFmdGVyIHZpZXdJbml0XG4gICAgICAgIHRoaXMudG9CZVNldHVwRXZlbnRzUXVldWUucHVzaCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZUV2ZW50KG5hdGl2ZUVsZW1lbnQsIHRoaXMuZ2V0TWFwcGVkRXZlbnROYW1lKGV2ZW50TmFtZSksIGV2ZW50Q2FsbGJhY2ssIGxvY2FscywgbWV0YSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFByb2Nlc3MgdGhlIGJvdW5kIHByb3BlcnR5XG4gICAgICogUmVnaXN0ZXIgYSB3YXRjaCBvbiB0aGUgYm91bmQgZXhwcmVzc2lvblxuICAgICAqL1xuICAgIHByb3RlY3RlZCBwcm9jZXNzQmluZEF0dHIocHJvcE5hbWU6IHN0cmluZywgZXhwcjogc3RyaW5nLCBjaGlsZCA/OiBhbnkpIHtcbiAgICAgICAgaWYoIWNoaWxkKVxuICAgICAgICAgICAgdGhpcy5pbml0U3RhdGUuZGVsZXRlKHByb3BOYW1lKTtcbiAgICAgICAgbGV0IHZpZXdQYXJlbnQgID0gY2hpbGQgPyBjaGlsZC53aWRnZXQudmlld1BhcmVudC52aWV3UGFyZW50IDogdGhpcy52aWV3UGFyZW50LFxuICAgICAgICAgICAgY29udGV4dCAgICAgPSBjaGlsZCA/IGNoaWxkLndpZGdldC5jb250ZXh0IDogdGhpcy5jb250ZXh0LFxuICAgICAgICAgICAgd2lkZ2V0ICAgICAgPSBjaGlsZCA/IGNoaWxkLndpZGdldCA6IHRoaXMud2lkZ2V0LFxuICAgICAgICAgICAgaXNNdXRlZCAgICAgPSBjaGlsZCA/IGNoaWxkLndpZGdldC5pc011dGVkIDogdGhpcy5pc011dGVkLFxuICAgICAgICAgICAgd2lkZ2V0UHJvcHMgPSBjaGlsZCA/IGNoaWxkLndpZGdldC53aWRnZXRQcm9wcyA6IHRoaXMud2lkZ2V0UHJvcHMsXG4gICAgICAgICAgICB3aWRnZXRJZCAgICA9IGNoaWxkID8gY2hpbGQud2lkZ2V0LndpZGdldElkIDogdGhpcy53aWRnZXRJZDtcbiAgICAgICAgdGhpcy5yZWdpc3RlckRlc3Ryb3lMaXN0ZW5lcihcbiAgICAgICAgICAgICR3YXRjaChcbiAgICAgICAgICAgICAgICBleHByLFxuICAgICAgICAgICAgICAgIHZpZXdQYXJlbnQsXG4gICAgICAgICAgICAgICAgY29udGV4dCxcbiAgICAgICAgICAgICAgICBudiA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmKHByb3BOYW1lLnN0YXJ0c1dpdGgoJ2Jhc2UtJykgJiYgd2lkZ2V0LnVwZGF0ZURhdGEpXG4gICAgICAgICAgICAgICAgICAgICAgICB3aWRnZXQudXBkYXRlRGF0YShwcm9wTmFtZSwgbnYpO1xuICAgICAgICAgICAgICAgICAgICB3aWRnZXRbcHJvcE5hbWVdID0gbnZcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGdldFdhdGNoSWRlbnRpZmllcih3aWRnZXRJZCwgcHJvcE5hbWUpLFxuICAgICAgICAgICAgICAgIHByb3BOYW1lID09PSAnZGF0YXNvdXJjZScsXG4gICAgICAgICAgICAgICAgd2lkZ2V0UHJvcHMuZ2V0KHByb3BOYW1lKSxcbiAgICAgICAgICAgICAgICAoKSA9PiBpc011dGVkXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlIHdhdGNoIG9uIHRoZSBib3VuZCBwcm9wZXJ0eVxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZW1vdmVQcm9wZXJ0eUJpbmRpbmcocHJvcE5hbWU6IHN0cmluZykge1xuICAgICAgICAkdW53YXRjaChnZXRXYXRjaElkZW50aWZpZXIodGhpcy53aWRnZXRJZCwgcHJvcE5hbWUpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBpbnZva2UgdGhlIGV2ZW50IGNhbGxiYWNrIG1ldGhvZFxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBldmVudE5hbWVcbiAgICAgKiBAcGFyYW0gZXh0cmFMb2NhbHNcbiAgICAgKi9cbiAgICBwdWJsaWMgaW52b2tlRXZlbnRDYWxsYmFjayhldmVudE5hbWU6IHN0cmluZywgZXh0cmFMb2NhbHM/OiBhbnkpIHtcbiAgICAgICAgY29uc3QgY2FsbGJhY2tJbmZvID0gdGhpcy5ldmVudEhhbmRsZXJzLmdldChldmVudE5hbWUpO1xuICAgICAgICBpZiAoY2FsbGJhY2tJbmZvKSB7XG4gICAgICAgICAgICBjb25zdCBmbiA9IGNhbGxiYWNrSW5mby5jYWxsYmFjaztcbiAgICAgICAgICAgIGNvbnN0IGxvY2FscyA9IGNhbGxiYWNrSW5mby5sb2NhbHMgfHwge307XG5cbiAgICAgICAgICAgIGlmIChmbikge1xuICAgICAgICAgICAgICAgIHJldHVybiBmbihPYmplY3QuYXNzaWduKGxvY2FscywgZXh0cmFMb2NhbHMpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBQcm9jZXNzIHRoZSBhdHRyaWJ1dGVcbiAgICAgKiBJZiB0aGUgYXR0cmlidXRlIGlzIGFuIGV2ZW50IGV4cHJlc3Npb24sIGdlbmVyYXRlIGEgZnVuY3Rpb25hbCByZXByZXNlbnRhdGlvbiBvZiB0aGUgZXhwcmVzc2lvblxuICAgICAqICAgICAgYW5kIGtlZXAgaW4gZXZlbnRIYW5kbGVyc1xuICAgICAqIElmIHRoZSBhdHRyaWJ1dGUgaXMgYSBib3VuZCBleHByZXNzaW9uLCByZWdpc3RlciBhIHdhdGNoIG9uIHRoZSBleHByZXNzaW9uXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHByb2Nlc3NBdHRyKGF0dHJOYW1lOiBzdHJpbmcsIGF0dHJWYWx1ZTogc3RyaW5nLCBjaGlsZD86IENoaWxkKSB7XG4gICAgICAgICAvLyBjb25zb2xlLmxvZyhcIj09PT1hdHRyTmFtZT09PT09XCIsIGF0dHJOYW1lLCBcIj09PT09dHlwZW9mIGF0dHJuYW1lPT09PT1cIiwgdHlwZW9mIGF0dHJOYW1lLCBcIi0tLS0tYXR0clZhbHVlLS0tLVwiLCBhdHRyVmFsdWUpO1xuICAgICAgICBjb25zdCB7MDogcHJvcE5hbWUsIDE6IHR5cGUsIDI6IG1ldGEsIGxlbmd0aH0gPSBhdHRyTmFtZS5zcGxpdCgnLicpO1xuICAgICAgICBpZiAodHlwZSA9PT0gJ2JpbmQnKSB7XG4gICAgICAgICAgICAvLyBpZiB0aGUgc2hvdyBwcm9wZXJ0eSBpcyBib3VuZCwgc2V0IHRoZSBpbml0aWFsIHZhbHVlIHRvIGZhbHNlXG4gICAgICAgICAgICBpZiAocHJvcE5hbWUgPT09ICdzaG93JyAmJiAhdGhpcy53aWRnZXRTdWJUeXBlLnN0YXJ0c1dpdGgoJ3dtLWN1c3RvbS0nKSkge1xuICAgICAgICAgICAgICAgIHRoaXMubmF0aXZlRWxlbWVudC5oaWRkZW4gPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5wcm9jZXNzQmluZEF0dHIocHJvcE5hbWUsIGF0dHJWYWx1ZSwgY2hpbGQpO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdldmVudCcgJiYgIXRoaXMubmF0aXZlRWxlbWVudC5oYXNBdHRyaWJ1dGUoJ3dtd2lkZ2V0Y29udGFpbmVyJykpIHtcbiAgICAgICAgICAgIHRoaXMucHJvY2Vzc0V2ZW50QXR0cihwcm9wTmFtZSwgYXR0clZhbHVlLCBtZXRhLCBjaGlsZCk7XG4gICAgICAgIH0gZWxzZSBpZiAobGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICAvLyByZW1vdmUgY2xhc3MgYW5kIG5hbWUgYXR0cmlidXRlcy4gQ29tcG9uZW50IHdpbGwgc2V0IHRoZW0gb24gdGhlIHByb3BlciBub2RlXG4gICAgICAgICAgICBpZiAoYXR0ck5hbWUgPT09ICdjbGFzcycpIHtcbiAgICAgICAgICAgICAgICByZW1vdmVDbGFzcyh0aGlzLm5hdGl2ZUVsZW1lbnQsIGF0dHJWYWx1ZSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGF0dHJOYW1lID09PSAndGFiaW5kZXgnIHx8IGF0dHJOYW1lID09PSAnbmFtZScpIHtcbiAgICAgICAgICAgICAgICByZW1vdmVBdHRyKHRoaXMubmF0aXZlRWxlbWVudCwgYXR0ck5hbWUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmluaXRTdGF0ZS5zZXQocHJvcE5hbWUsIGF0dHJWYWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBjdXN0b20gYXR0cmlidXRlcyBwcm92aWRlZCBvbiBlbERlZjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgaXMgcmVxdWlyZWQgYXMgdGhlIG5hdGl2ZSBlbGVtZW50IGF0dHJpYnV0ZXMgYXJlIGNhc2UgaW5zZW5zaXRpdmUoY2FtZWxjYXNlKSBsaWtlIGN1c3RvbUV4cHJlc3Npb25zIGJlY29tZXMgY3VzdG9tZXhwcmVzc2lvblxuICAgICAqIGFuZCBvdXIgbG9naWMgdG8gY2hlY2sgbGlrZSB0aGVzZSBjaGFuZ2VzIHdpbGwgZmFpbC4gQmVmb3JlIElWWSBjaGFuZ2VzLCBhbmd1bGFyIG1haW50YWlucyBhIHNlcGFyYXRlIG9iamVjdCB3aXRoIHRoZXNlIGF0dHJpYnV0ZXNcbiAgICAgKiBhcyBpdCBpcyBsaWtlIGluIHRoZSBjYW1lbGNhc2UuIFdpdGggSVZZIGFsbCB0aG9zZSBhcmUgZ29uZS4gU28gbmVlZCB0byBtYWludGFpbiBhIHNlcGFyYXRlIGxpc3Qgd2l0aCB0aGUgY2FtZWxjYXNpbmcgb2YgYXR0cmlidXRlc1xuICAgICAqIEBwcml2YXRlXG4gICAgICogX3ROb2RlLmF0dHJzIGF0dHJpYnV0ZXMgYXJlIHN0b3JlZCBpbiBhcnJheShldmVuIGluZGV4OiBrZXksIG9kZCBpbmRleDogdmFsdWUpXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGdldEF0dHJpYnV0ZXMoKSB7XG4gICAgICAgIGxldCBfdE5vZGVBdHRycyA9ICh0aGlzLmluaiBhcyBhbnkpLl90Tm9kZS5hdHRycywgYWN0dWFsQXR0cnMgPSBBcnJheS5mcm9tKHRoaXMubmF0aXZlRWxlbWVudC5hdHRyaWJ1dGVzKS5tYXAoYXR0ciA9PiBhdHRyLm5hbWUpO1xuICAgICAgICBpZihfdE5vZGVBdHRycyA9PT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIGFjdHVhbEF0dHJzLnNvcnQoKTtcbiAgICAgICAgfVxuICAgICAgICBmb3JFYWNoKF90Tm9kZUF0dHJzLCAoYXR0ciwgaTogYW55KSA9PiB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGF0dHIgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYodHlwZW9mIGF0dHIgPT09ICdzdHJpbmcnICYmIGkgJSAyID09IDApIHtcbiAgICAgICAgICAgICAgICBsZXQgbG93ZXJDYXNlQXR0ciA9IGF0dHIudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgICBpZiAoYWN0dWFsQXR0cnMuaW5jbHVkZXMobG93ZXJDYXNlQXR0cikpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGluZGV4ID0gYWN0dWFsQXR0cnMuaW5kZXhPZihsb3dlckNhc2VBdHRyKVxuICAgICAgICAgICAgICAgICAgICBhY3R1YWxBdHRyc1tpbmRleF0gPSBhdHRyO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgLypcbiAgICAgICAgU29ydGluZyBhdHRyaWJ1dGVzIGFzIHByb3BlcnRpZXMgbGlrZSBwbGFjZWhvbGRlciBpcyBub3Qgd29ya2luZyB3aGVuIGl0IGlzIGJvdW5kLlxuICAgICAgICBwbGFjZWhvbGRlciBhbmQgcGxhY2Vob2xkZXIuYmluZCB0d28gcHJvcGVydGllcyBhcmUgY29taW5nIGluIEFycmF5LlxuICAgICAgICBXaGVuIGFycmF5IGlzIG5vdCBzb3J0ZWQsIGluaXRpYWxseSBwbGFjZWhvbGRlci5iaW5kIHZhbHVlIGlzIHNldCB0aGVuIHBsYWNlaG9sZGVyIGRlZmF1bHQgdmFsdWUgaXMgdXBkYXRlZC5cbiAgICAgICAgSWYgYXJyYXkgaXMgc29ydGVkLCBwbGFjZWhvbGRlci5iaW5kIHZhbHVlIHdpbGwgYmUgc2V0IGZpbmFsbHkuXG4gICAgICAgIFRoaXMgaXMgY2F1c2VkIGJlY2F1c2Ugb2YgdGhlIHdheSB3ZSBhcmUgc3RvcmluZyBhdHRyaWJ1dGUgbmFtZXMgaW4gd2F0Y2hlciByZWdpc3RyeSBtYXBcbiAgICAgICAgICovXG4gICAgICAgIHJldHVybiBhY3R1YWxBdHRycy5zb3J0KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHJvY2VzcyB0aGUgYXR0cmlidXRlc1xuICAgICAqL1xuICAgIHByaXZhdGUgcHJvY2Vzc0F0dHJzKCkge1xuICAgICAgICBtYXAodGhpcy5nZXRBdHRyaWJ1dGVzKCksIChhdHRyTmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICBsZXQgYXR0clZhbHVlID0gdGhpcy5uYXRpdmVFbGVtZW50LmF0dHJpYnV0ZXNbYXR0ck5hbWVdLnZhbHVlXG4gICAgICAgICAgICB0aGlzLiRhdHRycy5zZXQoYXR0ck5hbWUsIGF0dHJWYWx1ZSk7XG4gICAgICAgICAgICB0aGlzLnByb2Nlc3NBdHRyKGF0dHJOYW1lLCBhdHRyVmFsdWUpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVcGRhdGUgdGhlIGluaXRTdGF0ZSB3aXRoIHRoZSBkZWZhdWx0IHByb3BlcnR5IHZhbHVlcyBhbmQgdGhlIHZhbHVlcyBwcm92aWRlZCBpbiB0aGUgbWFya3VwXG4gICAgICogUHJvY2VzcyB0aGUgYXR0cmlidXRlc1xuICAgICAqIFJlZ2lzdGVyIHRoZSB3aWRnZXRcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgaW5pdFdpZGdldCgpIHtcbiAgICAgICAgdGhpcy5pbml0U3RhdGUgPSBuZXcgTWFwPHN0cmluZywgYW55PigpO1xuXG4gICAgICAgIC8vIGdldCB0aGUgd2lkZ2V0IHByb3BlcnRpZXNcbiAgICAgICAgY29uc3Qgd2lkZ2V0UHJvcHM6IE1hcDxzdHJpbmcsIGFueT4gPSBnZXRXaWRnZXRQcm9wc0J5VHlwZSh0aGlzLndpZGdldFN1YlR5cGUpO1xuICAgICAgICBpZih0aGlzLmN1c3RvbVdpZGdldFN1YlR5cGUpIHtcbiAgICAgICAgICAgIGNvbnN0IGN1c3RvbVdpZGdldFByb3BzOiBNYXA8c3RyaW5nLCBhbnk+ID0gZ2V0V2lkZ2V0UHJvcHNCeVR5cGUodGhpcy5jdXN0b21XaWRnZXRTdWJUeXBlKTtcbiAgICAgICAgICAgIGN1c3RvbVdpZGdldFByb3BzLmZvckVhY2goKHYsIGspID0+IHtcbiAgICAgICAgICAgICAgICB3aWRnZXRQcm9wcy5zZXQoaywgdik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB3aWRnZXRQcm9wcy5mb3JFYWNoKCh2LCBrKSA9PiB7XG4gICAgICAgICAgICBpZiAoaXNEZWZpbmVkKHYudmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbml0U3RhdGUuc2V0KGssIHYudmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLndpZGdldFByb3BzID0gd2lkZ2V0UHJvcHM7XG5cbiAgICAgICAgdGhpcy5wcm9jZXNzQXR0cnMoKTtcblxuICAgICAgICB0aGlzLnJlZ2lzdGVyV2lkZ2V0KHRoaXMuaW5pdFN0YXRlLmdldCgnbmFtZScpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVcGRhdGUgdGhlIGRlZmF1bHQgcHJvcGVydGllcyBhbmQgdGhlIHByb3BlcnRpZXMgcHJvdmlkZWQgaW4gdGhlIG1hcmt1cCBpbiBjb21wb25lbnRcbiAgICAgKiBJbnZva2luZyB0aGlzIG1ldGhvZCB3aWxsIHJlc3VsdCBpbiBpbnZvY2F0aW9uIG9mIHByb3BlcnR5Q2hhbmdlIGhhbmRsZXJzIG9uIHRoZSBjb21wb25lbnQgZm9yIHRoZSBmaXJzdCB0aW1lXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHNldEluaXRQcm9wcygpIHtcbiAgICAgICAgaWYgKHRoaXMuaW5pdFN0YXRlLmdldCgnbmFtZScpKSB7XG4gICAgICAgICAgICB0aGlzLndpZGdldC5uYW1lID0gdGhpcy5pbml0U3RhdGUuZ2V0KCduYW1lJyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pbml0U3RhdGUuZm9yRWFjaCgodiwgaykgPT4ge1xuICAgICAgICAgICAgLy8gbmFtZSBpcyBhbHJlYWR5IHNldCwgaWdub3JlIG5hbWVcbiAgICAgICAgICAgIC8vIGlmIHRoZSBrZXkgaXMgcGFydCBvZiB0byBiZSBpZ25vcmVkIGF0dHJpYnV0ZXMgbGlzdCBkbyBub3Qgc2V0IGl0IG9uIHRoZSBjb21wb25lbnQgaW5zdGFuY2VcbiAgICAgICAgICAgIGlmICgodGhpcy53aWRnZXRQcm9wcy5nZXQoaykgfHwgaXNTdHlsZShrKSkgJiYgayAhPT0gJ25hbWUnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy53aWRnZXRba10gPSB2O1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5pbml0U3RhdGUuY2xlYXIoKTtcbiAgICAgICAgdGhpcy5pbml0U3RhdGUgPSB1bmRlZmluZWQ7XG5cbiAgICAgICAgdGhpcy5yZWFkeVN0YXRlLm5leHQobnVsbCk7XG4gICAgICAgIHRoaXMucmVhZHlTdGF0ZS5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdHJ1ZSwgaWYgYSBsaXN0ZW5lciByZWdpc3RlcmVkIGZvciB0aGUgZ2l2ZW4gZXZlbnQgb24gdGhpcyB3aWRnZXQgbWFya3VwLlxuICAgICAqIEBwYXJhbSBldmVudE5hbWVcbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgaGFzRXZlbnRDYWxsYmFjayhldmVudE5hbWUpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZXZlbnRIYW5kbGVycy5oYXMoZXZlbnROYW1lKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBmb2N1cyBvbiB0aGUgd2lkZ2V0XG4gICAgICovXG4gICAgcHJvdGVjdGVkIGZvY3VzKCk6IHZvaWQge1xuICAgICAgICAvKipcbiAgICAgICAgICogQ2hlY2sgZm9yIHRoZSBub2RlcyBoYXZpbmcgZm9jdXMtdGFyZ2V0IGF0dHJpYnV0ZSBpbnNpZGUgdGhlIGVsZW1lbnRcbiAgICAgICAgICogSWYgZm91bmQsIGZvY3VzIHRoZSBmaXJzdCBub2RlIChlZywgZGF0ZSB3aWRnZXQpXG4gICAgICAgICAqIGVsc2UsIGZvY3VzIHRoZSBlbGVtZW50IChlZywgdGV4dCB3aWRnZXQpXG4gICAgICAgICAqL1xuICAgICAgICBsZXQgJHRhcmdldCA9IHRoaXMuJGVsZW1lbnRbMF0ucXVlcnlTZWxlY3RvcignW2ZvY3VzLXRhcmdldF0nKTtcbiAgICAgICAgaWYgKCEkdGFyZ2V0KSB7XG4gICAgICAgICAgICAkdGFyZ2V0ID0gdGhpcy4kZWxlbWVudFswXTtcbiAgICAgICAgfVxuICAgICAgICAkdGFyZ2V0LmZvY3VzKCk7XG4gICAgfVxuXG4gICAgLy8gRGVmaW5pbmcgdGhlIGV4ZWN1dGUgbWV0aG9kIG9uIEJhc2VDb21wb25lbnQuIElmIGRhdGFzZXQgaXMgYmluZGVkIHRvIHdpZGdldHMgb3VwdHV0IHRoZW4gZGF0YXNvdXJjZS5leGVjdXRlIHdpbGwgYmUgZGVmaW5lZFxuICAgIHByb3RlY3RlZCBleGVjdXRlKG9wZXJhdGlvbiwgb3B0aW9ucyk6IGFueSB7XG5cbiAgICB9XG5cbiAgICBwdWJsaWMgbXV0ZSgpIHtcbiAgICAgICAgdGhpcy5pc011dGVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdW5tdXRlKCkge1xuICAgICAgICB0aGlzLmlzTXV0ZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGN1c3RvbUluamVjdG9yTWFwOiBhbnkgPSB7fTtcblxuICAgIC8qKlxuICAgICAqIEFmdGVyIHRoZSBBbmd1bGFyIDE3IHVwZ3JhZGUsIEFuZ3VsYXIgaXMgbm8gbG9uZ2VyIHNlbmRpbmcgbmdUZW1wbGF0ZUNvbnRleHQgdG8gY29tcG9uZW50cyBpbiBuZy10ZW1wbGF0ZS5cbiAgICAgKiBXYXZlbWFrZXIgd2lkZ2V0cyBpbnNpZGUgbmctdGVtcGxhdGUgcmVxdWlyZSBjb250ZXh0IHRvIGV2YWx1YXRlIGJpbmQgZXhwcmVzc2lvbnMuXG4gICAgICogU28gd2UncmUgY3JlYXRpbmcgYW4gaW5qZWN0aW9uVG9rZW4gdGhhdCByZXR1cm5zIHRoZSBjb250ZXh0IGFzIGEgdmFsdWUuXG4gICAgICogV2UgYXJlIHBhc3NpbmcgdGhlIGluamVjdGlvblRva2VuIHRvIHRoZSBuZ1RlbXBsYXRlT3V0bGV0SW5qZWN0b3IuXG4gICAgICogVGhpcyBpbmplY3RzIHRoZSBjb250ZXh0IGludG8gZWFjaCB3aWRnZXQgaW4gdGhlIG5nLXRlbXBsYXRlLlxuICAgICAqIEluIHRoZSB3aWRnZXQgY29tcG9uZW50IGNvbnN0cnVjdG9yIHdlIGFyZSBnZXR0aW5nIHRoZSBpbmplY3Rpb25Ub2tlbiB1c2luZyBkZXBlbmRlbmN5IGluamVjdGlvbi5cbiAgICAgKiBJZiBpbmplY3Rpb25Ub2tlbiBpcyBwcmVzZW50LCB3ZSBleHRlbmQgdGhlIGNvbXBvbmVudCBjb250ZXh0IHdpdGggdGhlIHZhbHVlIG9mIGluamVjdGlvblRva2VuLlxuICAgICAqIEBwYXJhbSBjb250ZXh0S2V5XG4gICAgICogQHBhcmFtIGNvbnRleHRcbiAgICAgKiBAcmV0dXJucyBpbmplY3RvclxuICAgICAqL1xuICAgIGNyZWF0ZUN1c3RvbUluamVjdG9yKGNvbnRleHRLZXk6IHN0cmluZywgY29udGV4dDogYW55KSB7XG4gICAgICAgIGlmKHRoaXMuY3VzdG9tSW5qZWN0b3JNYXBbY29udGV4dEtleV0pIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmN1c3RvbUluamVjdG9yTWFwW2NvbnRleHRLZXldLmluamVjdG9yO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGluamVjdG9yID0gSW5qZWN0b3IuY3JlYXRlKHtcbiAgICAgICAgICAgIHByb3ZpZGVyczogW3sgcHJvdmlkZTogJ0VYUExJQ0lUX0NPTlRFWFQnLCB1c2VGYWN0b3J5OiAoKSA9PiBjb250ZXh0IH1dXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmN1c3RvbUluamVjdG9yTWFwW2NvbnRleHRLZXldID0geyBjb250ZXh0LCBpbmplY3RvciB9O1xuICAgICAgICByZXR1cm4gaW5qZWN0b3I7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWZ0ZXIgdGhlIGhvc3QgcGFnZSBpcyBhdHRhY2hlZCBmcm9tIGNhY2hlLCB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZC5cbiAgICAgKi9cbiAgICBwdWJsaWMgbmdPbkF0dGFjaCgpIHtcbiAgICAgICAgdGhpcy5pc0F0dGFjaGVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBCZWZvcmUgdGhlIGhvc3QgcGFnZSBpcyBkZXRhY2hlZCBmcm9tIGRvbSBhbmQgc3RvcmVkIGluIGNhY2hlLCAgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQuXG4gICAgICovXG4gICAgcHVibGljIG5nT25EZXRhY2goKSB7XG4gICAgICAgIHRoaXMuaXNBdHRhY2hlZCA9IGZhbHNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIG5hdGl2ZUVsZW1lbnQgd2lsbCBiZSBhdmFpbGFibGUgYnkgdGhpcyB0aW1lXG4gICAgICogaWYgdGhlIGRlbGF5SW5pdCBpcyBmYWxzZSwgcHJvcGVydGllcyBtZXRhIHdpbGwgYmUgYXZhaWxhYmxlIGJ5IHRoaXMgdGltZVxuICAgICAqIEludm9rZSB0aGUgc2V0SW5pdFByb3BzIGlmIHRoZSBkZWxheUluaXQgaXMgZmFsc2VcbiAgICAgKi9cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmRlbGF5ZWRJbml0KSB7XG4gICAgICAgICAgICB0aGlzLnNldEluaXRQcm9wcygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVnaXN0ZXIgdGhlIGV2ZW50c1xuICAgICAqL1xuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgaWYgKHRoaXMudG9CZVNldHVwRXZlbnRzUXVldWUubGVuZ3RoKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGZuIG9mIHRoaXMudG9CZVNldHVwRXZlbnRzUXVldWUpIHtcbiAgICAgICAgICAgICAgICBmbigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMudG9CZVNldHVwRXZlbnRzUXVldWUubGVuZ3RoID0gMDtcbiAgICAgICAgdGhpcy5pc0F0dGFjaGVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKSB7fVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuaXNEZXN0cm95ZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLndpZGdldCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgICAgIHRoaXMuc3R5bGVDaGFuZ2UuY29tcGxldGUoKTtcbiAgICAgICAgdGhpcy5wcm9wZXJ0eUNoYW5nZS5jb21wbGV0ZSgpO1xuICAgICAgICB0aGlzLmRlc3Ryb3kuY29tcGxldGUoKTtcbiAgICAgICAgdGhpcy5pc0F0dGFjaGVkID0gZmFsc2U7XG4gICAgfVxufVxuIl19
|
|
@@ -39,7 +39,7 @@ export const globalPropertyChangeHandler = (component, key, nv) => {
|
|
|
39
39
|
}
|
|
40
40
|
resetChangeFromWatch();
|
|
41
41
|
const widgetProps = getWidgetPropsByType(component.getWidgetSubType());
|
|
42
|
-
const propInfo = widgetProps.get(key);
|
|
42
|
+
const propInfo = widgetProps ? widgetProps.get(key) : undefined;
|
|
43
43
|
if (propInfo) {
|
|
44
44
|
const type = propInfo.type;
|
|
45
45
|
if (type) {
|
|
@@ -78,4 +78,4 @@ export const globalPropertyChangeHandler = (component, key, nv) => {
|
|
|
78
78
|
$appDigest();
|
|
79
79
|
}
|
|
80
80
|
};
|
|
81
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
81
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydHktY2hhbmdlLWhhbmRsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL2Jhc2Uvc3JjL3dpZGdldHMvZnJhbWV3b3JrL3Byb3BlcnR5LWNoYW5nZS1oYW5kbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFLFFBQVEsRUFBRSxvQkFBb0IsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRzNILE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ25DLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JGLE9BQU8sRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzdELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxXQUFXLENBQUM7QUFFckM7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQU0sVUFBVSxHQUFHLENBQUMsR0FBVyxFQUFFLEtBQVUsRUFBRSxJQUFlLEVBQU8sRUFBRTtJQUNqRSxJQUFJLElBQUksS0FBSyxTQUFTLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDN0IsT0FBTyxTQUFTLENBQUMsS0FBSyxFQUFFLGFBQWEsQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQsSUFBSSxJQUFJLEtBQUssU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzVCLE9BQU8sQ0FBQyxLQUFLLENBQUM7SUFDbEIsQ0FBQztJQUVELE9BQU8sS0FBSyxDQUFDO0FBQ2pCLENBQUMsQ0FBQztBQUdGOzs7OztHQUtHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQUcsQ0FBQyxTQUF3QixFQUFFLEdBQVcsRUFBRSxFQUFPLEVBQUUsRUFBRTtJQUMxRixNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDO0lBQ3BDLE1BQU0sRUFBRSxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUUxQix1RUFBdUU7SUFDdkUsSUFBSSxDQUFDLGlCQUFpQixFQUFFLEVBQUUsQ0FBQztRQUN2QixRQUFRLENBQUMsa0JBQWtCLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVELG9CQUFvQixFQUFFLENBQUM7SUFFdkIsTUFBTSxXQUFXLEdBQUcsb0JBQW9CLENBQUMsU0FBUyxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQztJQUN2RSxNQUFNLFFBQVEsR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUNoRSxJQUFJLFFBQVEsRUFBRSxDQUFDO1FBQ1gsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQztRQUMzQixJQUFJLElBQUksRUFBRSxDQUFDO1lBQ1AsRUFBRSxHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ25DLENBQUM7SUFDTCxDQUFDO0lBRUQsMkZBQTJGO0lBQzNGLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksUUFBUSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFFNUMsSUFBSSxlQUFlLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN2QixFQUFFLEdBQUcsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3pCLENBQUM7YUFBTSxJQUFJLFVBQVUsQ0FBQyxFQUFFLEVBQUUsWUFBWSxDQUFDLEVBQUUsQ0FBQztZQUN0QyxNQUFNLEdBQUcsR0FBUSxTQUFTLENBQUM7WUFDM0IsSUFBSSxHQUFHLENBQUMsY0FBYyxLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUNuQyxHQUFHLENBQUMsY0FBYyxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsT0FBTyxDQUFDLHNDQUFzQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUM5SCxDQUFDO1lBQ0QsSUFBSSxHQUFHLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ3JCLEVBQUUsR0FBRyxpQkFBaUIsR0FBRyxDQUFDLGNBQWMsSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUNyRCxDQUFDO2lCQUFNLElBQUcsUUFBUSxJQUFJLEVBQUUsSUFBSSxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ3pDLEVBQUUsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ25CLENBQUM7UUFDTCxDQUFDO1FBRUQsU0FBUyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUVwQixJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ2YsU0FBUyxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDN0MsQ0FBQzthQUFNLENBQUM7WUFFSixJQUFJLEdBQUcsS0FBSyxrQkFBa0IsRUFBRSxDQUFDO2dCQUM3QixFQUFFLEdBQUcscUJBQXFCLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3ZDLENBQUM7WUFFRCxJQUFJLFFBQVEsRUFBRSxDQUFDO2dCQUNYLFNBQVMsQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ2hELENBQUM7UUFDTCxDQUFDO1FBRUQsVUFBVSxFQUFFLENBQUM7SUFDakIsQ0FBQztBQUNMLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7ICRhcHBEaWdlc3QsICR1bndhdGNoLCBpc0NoYW5nZUZyb21XYXRjaCwgaXNPYmplY3QsIHJlc2V0Q2hhbmdlRnJvbVdhdGNoLCB0b0Jvb2xlYW4sIHRvRGltZW5zaW9uIH0gZnJvbSAnQHdtL2NvcmUnO1xuXG5pbXBvcnQgeyBCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tbW9uL2Jhc2UvYmFzZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgZ2V0V2lkZ2V0UHJvcHNCeVR5cGUsIFBST1BfVFlQRSB9IGZyb20gJy4vd2lkZ2V0LXByb3BzJztcbmltcG9ydCB7IGlzU3R5bGUgfSBmcm9tICcuL3N0eWxlcic7XG5pbXBvcnQgeyBnZXRDb25kaXRpb25hbENsYXNzZXMsIGdldFdhdGNoSWRlbnRpZmllciB9IGZyb20gJy4uLy4uL3V0aWxzL3dpZGdldC11dGlscyc7XG5pbXBvcnQgeyBpc0Jvb2xlYW5BdHRyLCBpc0RpbWVuc2lvblByb3AgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQge3N0YXJ0c1dpdGh9IGZyb20gXCJsb2Rhc2gtZXNcIjtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBwYXJzZWQgdmFsdWUgYmFzZWQgb24gdGhlIHByb3ZpZGVkIHR5cGVcbiAqIGlmIHRoZSB0eXBlIGlzIFBST1BfVFlQRS5OVU1CRVIgcmV0dXJucyBhIG51bWJlci9OYU5cbiAqIGlmIHRoZSB0eXBlIGlzIFBST1BfQk9PTEVBTiByZXR1cm5zIHRydWUvZmFsc2VcbiAqIGVsc2UgcmV0dXJucyB0aGUgc2FtZSB2YWx1ZSB3aXRob3V0IGFueSB0eXBlIGNvbnZlcnNpb25cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5XG4gKiBAcGFyYW0gdmFsdWVcbiAqIEBwYXJhbSB7UFJPUF9UWVBFfSB0eXBlXG4gKiBAcmV0dXJucyB7YW55fVxuICovXG5jb25zdCBwYXJzZVZhbHVlID0gKGtleTogc3RyaW5nLCB2YWx1ZTogYW55LCB0eXBlOiBQUk9QX1RZUEUpOiBhbnkgPT4ge1xuICAgIGlmICh0eXBlID09PSBQUk9QX1RZUEUuQk9PTEVBTikge1xuICAgICAgICByZXR1cm4gdG9Cb29sZWFuKHZhbHVlLCBpc0Jvb2xlYW5BdHRyKGtleSkgJiYga2V5KTtcbiAgICB9XG5cbiAgICBpZiAodHlwZSA9PT0gUFJPUF9UWVBFLk5VTUJFUikge1xuICAgICAgICByZXR1cm4gK3ZhbHVlO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZTtcbn07XG5cblxuLyoqXG4gKiBXaGVuZXZlciBhIHByb3BlcnR5IG9uIGEgY29tcG9uZW50IGNoYW5nZXMgdGhyb3VnaCBhIHByb3h5IHRoaXMgbWV0aG9kIHdpbGwgYmUgdHJpZ2dlcmVkXG4gKiBJZiB0aGUgbmV3IHZhbHVlIGlzIG5vdCBmcm9tIGEgd2F0Y2gsIHRoZSBleGlzdGluZyB3YXRjaCBvbiB0aGF0IHBhcnRpY3VsYXIgcHJvcGVydHkgd2lsbCBiZSByZW1vdmVkXG4gKiBUaGlzIG1ldGhvZCBpbnZva2VzIHRoZSBkZWZhdWx0UHJvcGVydHlDaGFuZ2UgaGFuZGxlciB3aGVyZSB0aGUgY29tbW9uIHdpZGdldCBwcm9wZXJ0aWVzIGxpa2UgbmFtZSwgY2xhc3MgYXJlIGhhbmRsZWRcbiAqIE5vdGlmaWVzIHRoZSBjb21wb25lbnQgYWJvdXQgdGhlIHN0eWxlL3Byb3BlcnR5IGNoYW5nZVxuICovXG5leHBvcnQgY29uc3QgZ2xvYmFsUHJvcGVydHlDaGFuZ2VIYW5kbGVyID0gKGNvbXBvbmVudDogQmFzZUNvbXBvbmVudCwga2V5OiBzdHJpbmcsIG52OiBhbnkpID0+IHtcbiAgICBjb25zdCB3aWRnZXRJZCA9IGNvbXBvbmVudC53aWRnZXRJZDtcbiAgICBjb25zdCBvdiA9IGNvbXBvbmVudFtrZXldO1xuXG4gICAgLy8gaWYgdGhlIGNoYW5nZSBpcyBub3QgZnJvbSB0aGUgYm91bmQgd2F0Y2gsIHJlbW92ZSB0aGUgZXhpc3Rpbmcgd2F0Y2hcbiAgICBpZiAoIWlzQ2hhbmdlRnJvbVdhdGNoKCkpIHtcbiAgICAgICAgJHVud2F0Y2goZ2V0V2F0Y2hJZGVudGlmaWVyKHdpZGdldElkLCBrZXkpKTtcbiAgICB9XG5cbiAgICByZXNldENoYW5nZUZyb21XYXRjaCgpO1xuXG4gICAgY29uc3Qgd2lkZ2V0UHJvcHMgPSBnZXRXaWRnZXRQcm9wc0J5VHlwZShjb21wb25lbnQuZ2V0V2lkZ2V0U3ViVHlwZSgpKTtcbiAgICBjb25zdCBwcm9wSW5mbyA9IHdpZGdldFByb3BzID8gd2lkZ2V0UHJvcHMuZ2V0KGtleSkgOiB1bmRlZmluZWQ7XG4gICAgaWYgKHByb3BJbmZvKSB7XG4gICAgICAgIGNvbnN0IHR5cGUgPSBwcm9wSW5mby50eXBlO1xuICAgICAgICBpZiAodHlwZSkge1xuICAgICAgICAgICAgbnYgPSBwYXJzZVZhbHVlKGtleSwgbnYsIHR5cGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gU2V0IHRoZSB2YWx1ZSBpbiB0aGUgY29tcG9uZW50IGFuZCB0cmlnZ2VyIGFwcERpZ2VzdCB3aGVuIHRoZXJlIGlzIGEgY2hhbmdlIGluIHRoZSB2YWx1ZVxuICAgIGlmIChudiAhPT0gb3YgfHwgaXNPYmplY3QobnYpIHx8IGlzT2JqZWN0KG92KSkge1xuXG4gICAgICAgIGlmIChpc0RpbWVuc2lvblByb3Aoa2V5KSkge1xuICAgICAgICAgICAgbnYgPSB0b0RpbWVuc2lvbihudik7XG4gICAgICAgIH0gZWxzZSBpZiAoc3RhcnRzV2l0aChudiwgJ3Jlc291cmNlcy8nKSkge1xuICAgICAgICAgICAgY29uc3QgcmVmOiBhbnkgPSBjb21wb25lbnQ7XG4gICAgICAgICAgICBpZiAocmVmLl9wYXJlbnRQcmVmYWJfID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICByZWYuX3BhcmVudFByZWZhYl8gPSBjb21wb25lbnQuJGVsZW1lbnQucGFyZW50KCkuY2xvc2VzdCgnW3ByZWZhYm5hbWVdW3ByZWZhYm5hbWUhPVwiX19zZWxmX19cIl0nKS5hdHRyKCdwcmVmYWJuYW1lJykgfHwgJyc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocmVmLl9wYXJlbnRQcmVmYWJfKSB7XG4gICAgICAgICAgICAgICAgbnYgPSBgLi9hcHAvcHJlZmFicy8ke3JlZi5fcGFyZW50UHJlZmFiX30vJHtudn1gO1xuICAgICAgICAgICAgfSBlbHNlIGlmKHByb3BJbmZvICYmIG52ICE9IHByb3BJbmZvLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgbnYgPSAnLi8nICsgbnY7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb21wb25lbnRba2V5XSA9IG52O1xuXG4gICAgICAgIGlmIChpc1N0eWxlKGtleSkpIHtcbiAgICAgICAgICAgIGNvbXBvbmVudC5ub3RpZnlTdHlsZUNoYW5nZShrZXksIG52LCBvdik7XG4gICAgICAgIH0gZWxzZSB7XG5cbiAgICAgICAgICAgIGlmIChrZXkgPT09ICdjb25kaXRpb25hbGNsYXNzJykge1xuICAgICAgICAgICAgICAgIG52ID0gZ2V0Q29uZGl0aW9uYWxDbGFzc2VzKG52LCBvdik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChwcm9wSW5mbykge1xuICAgICAgICAgICAgICAgIGNvbXBvbmVudC5ub3RpZnlQcm9wZXJ0eUNoYW5nZShrZXksIG52LCBvdik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAkYXBwRGlnZXN0KCk7XG4gICAgfVxufTtcbiJdfQ==
|