qms-angular 1.0.70 → 1.0.74
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/qms-angular.umd.js +2010 -606
- package/bundles/qms-angular.umd.js.map +1 -1
- package/esm2015/lib/components/button/button.js +2 -2
- package/esm2015/lib/components/qms-navigation-drawer/qms-navigation-drawer.component.js +5 -3
- package/esm2015/lib/components/qms-navigation-drawer/qms-navigation-drawer.module.js +4 -4
- package/esm2015/lib/components/qms-paginator/index.js +2 -0
- package/esm2015/lib/components/qms-paginator/public_api.js +3 -0
- package/esm2015/lib/components/qms-paginator/qms-paginator.component.js +173 -0
- package/esm2015/lib/components/qms-paginator/qms-paginator.module.js +34 -0
- package/esm2015/lib/components/qms-status-dropdown/qms-status-dropdown.component.js +2 -2
- package/esm2015/lib/components/range-slider/directives/range-slider-lockup.directive.js +20 -0
- package/esm2015/lib/components/range-slider/directives/range-slider.directive.js +34 -0
- package/esm2015/lib/components/range-slider/index.js +2 -0
- package/esm2015/lib/components/range-slider/public-api.js +4 -0
- package/esm2015/lib/components/range-slider/range-slider.module.js +22 -0
- package/esm2015/lib/components/related/popup/related-popup.component.js +1 -1
- package/esm2015/lib/components/select-include-children/select-include-children.component.js +112 -45
- package/esm2015/lib/components/select-one/select-one.component.js +50 -3
- package/esm2015/lib/components/side-sheet/directives/drawer-content.directive.js +20 -0
- package/esm2015/lib/components/side-sheet/directives/drawer-header-action.directive.js +20 -0
- package/esm2015/lib/components/side-sheet/directives/drawer-header.directive.js +20 -0
- package/esm2015/lib/components/side-sheet/directives/drawer.directive.js +20 -0
- package/esm2015/lib/components/side-sheet/index.js +2 -0
- package/esm2015/lib/components/side-sheet/public-api.js +6 -0
- package/esm2015/lib/components/side-sheet/side-sheet.module.js +28 -0
- package/esm2015/lib/components/tree/tree.component.js +15 -19
- package/esm2015/lib/components/treeNew/tree.component.js +6 -3
- package/esm2015/lib/directives/table/table-row.directive.js +42 -0
- package/esm2015/lib/directives/table/table.directive.js +13 -60
- package/esm2015/lib/model/en.js +38 -3
- package/esm2015/lib/model/no.js +37 -2
- package/esm2015/lib/qms-angular.module.js +5 -24
- package/esm2015/lib/qms-ckeditor-components/common/bpmn/inspector.function.js +68 -16
- package/esm2015/lib/qms-ckeditor-components/common/classes/qmsUploadAdapter.js +89 -0
- package/esm2015/lib/qms-ckeditor-components/common/constants/ckeditorEvent.constant.js +7 -1
- package/esm2015/lib/qms-ckeditor-components/common/constants/ckeditorFlowchart.const.js +10 -1
- package/esm2015/lib/qms-ckeditor-components/common/constants/ckeditorLink.constant.js +7 -0
- package/esm2015/lib/qms-ckeditor-components/common/enums/document-type.enum.js +2 -1
- package/esm2015/lib/qms-ckeditor-components/common/enums/shape-flow-chart-connection-type.js +8 -0
- package/esm2015/lib/qms-ckeditor-components/common/models/qms-ckeditor-data.model.js +1 -1
- package/esm2015/lib/qms-ckeditor-components/common/models/qms-ckeditor-flowchart-template.model.js +9 -0
- package/esm2015/lib/qms-ckeditor-components/common/models/qms-ckeditor-flowchart.model.js +9 -0
- package/esm2015/lib/qms-ckeditor-components/common/models/qms-ckeditor-save-as-template.model.js +3 -0
- package/esm2015/lib/qms-ckeditor-components/common/models/qms-ckeditor-video-tree.model.js +4 -0
- package/esm2015/lib/qms-ckeditor-components/common/models/wproofreader-config.model.js +6 -0
- package/esm2015/lib/qms-ckeditor-components/common/module/confirm/qms-ckeditor-confirm.component.js +1 -1
- package/esm2015/lib/qms-ckeditor-components/components/qms-ckeditor-about/qms-ckeditor-about.component.js +38 -0
- package/esm2015/lib/qms-ckeditor-components/components/qms-ckeditor-bpmn/qms-ckeditor-bpmn.component.js +564 -34
- package/esm2015/lib/qms-ckeditor-components/components/qms-ckeditor-bpmn/save-template/save-template.component.js +46 -18
- package/esm2015/lib/qms-ckeditor-components/components/qms-ckeditor-fullscreen/qms-ckeditor-fullscreen.component.js +1 -46
- package/esm2015/lib/qms-ckeditor-components/components/qms-ckeditor-imagemap/qms-ckeditor-imagemap.component.js +9 -8
- package/esm2015/lib/qms-ckeditor-components/components/qms-ckeditor-link/attachments/link-attachment.component.js +1 -1
- package/esm2015/lib/qms-ckeditor-components/components/qms-ckeditor-link/qms-ckeditor-link.component.js +5 -2
- package/esm2015/lib/qms-ckeditor-components/components/qms-ckeditor-load-template/qms-ckeditor-load-template.component.js +1 -1
- package/esm2015/lib/qms-ckeditor-components/components/qms-ckeditor-relation/qmsckeditor-related.component.js +1 -1
- package/esm2015/lib/qms-ckeditor-components/components/qms-ckeditor-template/qms-ckeditor-template.component.js +1 -1
- package/esm2015/lib/qms-ckeditor-components/components/qms-ckeditor-tooltip/qms-ckeditor-tooltip.component.js +4 -5
- package/esm2015/lib/qms-ckeditor-components/models/qms-ckeditor-bpmn-data.model.js +8 -0
- package/esm2015/lib/qms-ckeditor-components/qms-ckeditor.component.js +184 -28
- package/esm2015/lib/qms-ckeditor-components/qms-ckeditor.module.js +8 -2
- package/esm2015/lib/qms-ckeditor-components/services/qms-ckeditor-bpmn.service.js +58 -20
- package/esm2015/lib/qms-ckeditor-components/services/qms-ckeditor-flowchart.service.js +26 -0
- package/esm2015/lib/qms-ckeditor-components/services/qms-ckeditor-tree.service.js +4 -1
- package/esm2015/lib/qms-ckeditor-components/services/qms-ckeditor-upload.service.js +20 -0
- package/esm2015/public-api.js +10 -7
- package/esm2015/qms-angular.js +12 -8
- package/fesm2015/qms-angular.js +1900 -572
- package/fesm2015/qms-angular.js.map +1 -1
- package/lib/components/button/button.d.ts +1 -1
- package/lib/components/qms-navigation-drawer/qms-navigation-drawer.component.d.ts +1 -0
- package/lib/components/qms-paginator/index.d.ts +1 -0
- package/lib/components/qms-paginator/public_api.d.ts +2 -0
- package/lib/components/qms-paginator/qms-paginator.component.d.ts +51 -0
- package/lib/components/qms-paginator/qms-paginator.module.d.ts +2 -0
- package/lib/{directives/range-slider → components/range-slider/directives}/range-slider-lockup.directive.d.ts +0 -0
- package/lib/{directives/range-slider → components/range-slider/directives}/range-slider.directive.d.ts +0 -0
- package/lib/components/range-slider/index.d.ts +1 -0
- package/lib/components/range-slider/public-api.d.ts +3 -0
- package/lib/components/range-slider/range-slider.module.d.ts +2 -0
- package/lib/components/select-include-children/select-include-children.component.d.ts +2 -1
- package/lib/components/select-one/select-one.component.d.ts +4 -0
- package/lib/{directives/side-sheet → components/side-sheet/directives}/drawer-content.directive.d.ts +0 -0
- package/lib/{directives/side-sheet → components/side-sheet/directives}/drawer-header-action.directive.d.ts +0 -0
- package/lib/{directives/side-sheet → components/side-sheet/directives}/drawer-header.directive.d.ts +0 -0
- package/lib/{directives/side-sheet → components/side-sheet/directives}/drawer.directive.d.ts +0 -0
- package/lib/components/side-sheet/index.d.ts +1 -0
- package/lib/components/side-sheet/public-api.d.ts +5 -0
- package/lib/components/side-sheet/side-sheet.module.d.ts +2 -0
- package/lib/directives/table/table-row.directive.d.ts +13 -0
- package/lib/directives/table/table.directive.d.ts +1 -11
- package/lib/model/en.d.ts +35 -0
- package/lib/model/no.d.ts +35 -0
- package/lib/qms-ckeditor-components/common/bpmn/inspector.function.d.ts +28 -0
- package/lib/qms-ckeditor-components/common/classes/qmsUploadAdapter.d.ts +18 -0
- package/lib/qms-ckeditor-components/common/constants/ckeditorEvent.constant.d.ts +6 -0
- package/lib/qms-ckeditor-components/common/constants/ckeditorFlowchart.const.d.ts +9 -0
- package/lib/qms-ckeditor-components/common/constants/ckeditorLink.constant.d.ts +6 -0
- package/lib/qms-ckeditor-components/common/enums/document-type.enum.d.ts +1 -0
- package/lib/qms-ckeditor-components/common/enums/shape-flow-chart-connection-type.d.ts +6 -0
- package/lib/qms-ckeditor-components/common/models/qms-ckeditor-data.model.d.ts +5 -0
- package/lib/qms-ckeditor-components/common/models/qms-ckeditor-flowchart-template.model.d.ts +7 -0
- package/lib/qms-ckeditor-components/common/models/qms-ckeditor-flowchart.model.d.ts +7 -0
- package/lib/qms-ckeditor-components/common/models/qms-ckeditor-save-as-template.model.d.ts +5 -0
- package/lib/qms-ckeditor-components/common/models/qms-ckeditor-video-tree.model.d.ts +5 -0
- package/lib/qms-ckeditor-components/common/models/wproofreader-config.model.d.ts +25 -0
- package/lib/qms-ckeditor-components/components/qms-ckeditor-about/qms-ckeditor-about.component.d.ts +15 -0
- package/lib/qms-ckeditor-components/components/qms-ckeditor-bpmn/qms-ckeditor-bpmn.component.d.ts +88 -4
- package/lib/qms-ckeditor-components/components/qms-ckeditor-bpmn/save-template/save-template.component.d.ts +8 -2
- package/lib/qms-ckeditor-components/components/qms-ckeditor-imagemap/qms-ckeditor-imagemap.component.d.ts +2 -1
- package/lib/qms-ckeditor-components/models/qms-ckeditor-bpmn-data.model.d.ts +7 -0
- package/lib/qms-ckeditor-components/qms-ckeditor.component.d.ts +17 -5
- package/lib/qms-ckeditor-components/services/qms-ckeditor-bpmn.service.d.ts +1 -0
- package/lib/qms-ckeditor-components/services/qms-ckeditor-flowchart.service.d.ts +10 -0
- package/lib/qms-ckeditor-components/services/qms-ckeditor-tree.service.d.ts +2 -0
- package/lib/qms-ckeditor-components/services/qms-ckeditor-upload.service.d.ts +5 -0
- package/lib.theme.scss +1 -0
- package/package.json +1 -1
- package/public-api.d.ts +6 -6
- package/qms-angular.d.ts +11 -7
- package/qms-angular.metadata.json +1 -1
- package/src/assets/images/ckeditor5.svg +1 -0
- package/src/assets/jointjs/js/rappid.js +55919 -55836
- package/src/assets/jointjs/scss/bpmn.scss +2 -1
- package/src/assets/qms-ckeditor-plugin/build/ckeditor.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/ckeditor.js.map +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/az.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/cs.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/da.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/de-ch.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/de.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/en-au.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/es.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/et.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/fa.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/fr.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/gl.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/he.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/hi.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/hr.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/hu.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/id.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/it.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/ja.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/ko.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/ku.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/lv.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/nl.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/no.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/pl.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/pt-br.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/ru.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/sk.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/sl.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/sr-latn.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/sr.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/th.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/tk.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/tr.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/uk.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/vi.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/zh-cn.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/translations/zh.js +1 -1
- package/src/assets/qms-ckeditor-plugin/package-lock.json +23 -0
- package/src/assets/qms-ckeditor-plugin/package.json +2 -0
- package/src/assets/qms-ckeditor-plugin/src/ckeditor.js +18 -4
- package/src/assets/qms-ckeditor-plugin/src/plugins/aboutckeditor/aboutckeditor.js +28 -0
- package/src/assets/qms-ckeditor-plugin/src/plugins/bpmn/bpmndialogcommand.js +74 -0
- package/src/assets/qms-ckeditor-plugin/src/plugins/bpmn/qmsCKEditorBpmnPlugin.js +6 -44
- package/src/assets/qms-ckeditor-plugin/src/plugins/ckeditor5-source-editing/lang/contexts.json +3 -0
- package/src/assets/qms-ckeditor-plugin/src/plugins/ckeditor5-source-editing/lang/translations/de.po +21 -0
- package/src/assets/qms-ckeditor-plugin/src/plugins/ckeditor5-source-editing/lang/translations/en.po +21 -0
- package/src/assets/qms-ckeditor-plugin/src/plugins/ckeditor5-source-editing/lang/translations/gl.po +21 -0
- package/src/assets/qms-ckeditor-plugin/src/plugins/ckeditor5-source-editing/lang/translations/hu.po +21 -0
- package/src/assets/qms-ckeditor-plugin/src/plugins/ckeditor5-source-editing/lang/translations/it.po +21 -0
- package/src/assets/qms-ckeditor-plugin/src/plugins/ckeditor5-source-editing/lang/translations/ru.po +21 -0
- package/src/assets/qms-ckeditor-plugin/src/plugins/ckeditor5-source-editing/lang/translations/zh.po +21 -0
- package/src/assets/qms-ckeditor-plugin/src/plugins/ckeditor5-source-editing/src/index.js +10 -0
- package/src/assets/qms-ckeditor-plugin/src/plugins/ckeditor5-source-editing/src/sourceediting.js +386 -0
- package/src/assets/qms-ckeditor-plugin/src/plugins/ckeditor5-source-editing/src/utils/formathtml.js +142 -0
- package/src/assets/qms-ckeditor-plugin/src/plugins/ckeditor5-source-editing/theme/icons/source-editing.svg +1 -0
- package/src/assets/qms-ckeditor-plugin/src/plugins/ckeditor5-source-editing/theme/sourceediting.css +48 -0
- package/src/assets/qms-ckeditor-plugin/src/plugins/common/qmsCKEditorConstant.js +11 -1
- package/src/assets/qms-ckeditor-plugin/src/plugins/common/qmsCKEditorService.js +21 -0
- package/src/assets/qms-ckeditor-plugin/src/plugins/common/qmsCKEditorUtil.js +29 -7
- package/src/assets/qms-ckeditor-plugin/src/plugins/fullscreen/qmsCKEditorFullscreenPlugin.js +22 -15
- package/src/assets/qms-ckeditor-plugin/src/plugins/imagemap/converters.js +93 -92
- package/src/assets/qms-ckeditor-plugin/src/plugins/imagemap/imagemap.js +4 -4
- package/src/assets/qms-ckeditor-plugin/src/plugins/imagemap/imagemapcommand.js +93 -0
- package/src/assets/qms-ckeditor-plugin/src/plugins/imagemap/imagemapdialogcommand.js +59 -0
- package/src/assets/qms-ckeditor-plugin/src/plugins/imagemap/imagemapediting.js +92 -87
- package/src/assets/qms-ckeditor-plugin/src/plugins/imagemap/imagemapui.js +13 -14
- package/src/assets/qms-ckeditor-plugin/src/plugins/imagemap/resizeimagemapcommand.js +25 -24
- package/src/assets/qms-ckeditor-plugin/src/plugins/imagemap/utils.js +40 -49
- package/src/assets/qms-ckeditor-plugin/src/plugins/link/linkcommand.js +131 -176
- package/src/assets/qms-ckeditor-plugin/src/plugins/link/linkdialogcommand.js +88 -0
- package/src/assets/qms-ckeditor-plugin/src/plugins/link/linkediting.js +2 -0
- package/src/assets/qms-ckeditor-plugin/src/plugins/link/linkui.js +41 -32
- package/src/assets/qms-ckeditor-plugin/src/plugins/tableofcontents/tableofcontents.js +14 -0
- package/src/assets/qms-ckeditor-plugin/src/plugins/tableofcontents/tableofcontentscommand.js +87 -0
- package/src/assets/qms-ckeditor-plugin/src/plugins/tableofcontents/tableofcontentsediting.js +59 -0
- package/src/assets/qms-ckeditor-plugin/src/plugins/tableofcontents/tableofcontentsui.js +35 -0
- package/src/assets/qms-ckeditor-plugin/src/plugins/tableofcontents/utils.js +62 -0
- package/src/assets/qms-ckeditor-plugin/src/plugins/template/loadtemplatedialogcommand.js +14 -0
- package/src/assets/qms-ckeditor-plugin/src/plugins/template/qmsCKEditorLoadTemplatePlugin.js +10 -12
- package/src/assets/qms-ckeditor-plugin/src/plugins/template/qmsCKEdtiorTemplatePlugin.js +10 -7
- package/src/assets/qms-ckeditor-plugin/src/plugins/template/templatedialogcommand.js +9 -0
- package/src/assets/qms-ckeditor-plugin/src/plugins/timestamp/timestamp.js +15 -18
- package/src/assets/qms-ckeditor-plugin/src/plugins/timestamp/timestampcommand.js +17 -0
- package/src/assets/qms-ckeditor-plugin/src/plugins/tooltip/removetooltipcommand.js +42 -26
- package/src/assets/qms-ckeditor-plugin/src/plugins/tooltip/tooltip.js +3 -3
- package/src/assets/qms-ckeditor-plugin/src/plugins/tooltip/tooltipcommand.js +75 -0
- package/src/assets/qms-ckeditor-plugin/src/plugins/tooltip/tooltipdialogcommand.js +68 -0
- package/src/assets/qms-ckeditor-plugin/src/plugins/tooltip/tooltipediting.js +206 -131
- package/src/assets/qms-ckeditor-plugin/src/plugins/tooltip/tooltipui.js +424 -136
- package/src/assets/qms-ckeditor-plugin/src/plugins/tooltip/ui/actionsview.js +67 -12
- package/src/assets/qms-ckeditor-plugin/src/plugins/tooltip/utils.js +17 -55
- package/src/assets/qms-ckeditor-plugin/src/plugins/video/autovideo.js +1 -5
- package/src/assets/qms-ckeditor-plugin/src/plugins/video/video/videoediting.js +5 -2
- package/src/assets/qms-ckeditor-plugin/src/plugins/video/videoupload/browsevideodialogcommand.js +25 -0
- package/src/assets/qms-ckeditor-plugin/src/plugins/video/videoupload/uploadvideocommand.js +3 -16
- package/src/assets/qms-ckeditor-plugin/src/plugins/video/videoupload/videouploadediting.js +4 -0
- package/src/assets/qms-ckeditor-plugin/src/plugins/video/videoupload/videouploadui.js +12 -23
- package/src/assets/qms-ckeditor-plugin/src/themes/icons/fullscreen_exit.svg +1 -0
- package/src/assets/qms-ckeditor-plugin/src/themes/icons/information.svg +1 -50
- package/src/assets/qms-ckeditor-plugin/src/themes/icons/table-excel.svg +44 -0
- package/src/assets/qms-ckeditor-plugin/src/themes/icons/timestamp.svg +1 -1
- package/src/assets/qms-ckeditor-plugin/src/themes/icons/tooltip.svg +1 -0
- package/src/assets/qms-ckeditor-plugin/src/themes/styles/heading.css +54 -0
- package/src/assets/qms-ckeditor-plugin/src/themes/styles/tooltip.css +11 -53
- package/src/lib/components/button/button-icon.scss +5 -1
- package/src/lib/components/qms-navigation-drawer/qms-navigation-drawer.component.scss +36 -22
- package/src/lib/components/qms-paginator/qms-paginator.component.scss +143 -0
- package/src/lib/qms-ckeditor-components/components/qms-ckeditor-about/qms-ckeditor-about.component.scss +16 -0
- package/src/lib/qms-ckeditor-components/components/qms-ckeditor-bpmn/qms-ckeditor-bpmn.component.scss +69 -17
- package/src/lib/qms-ckeditor-components/components/qms-ckeditor-imagemap/qms-ckeditor-imagemap.component.scss +26 -23
- package/src/lib/qms-ckeditor-components/qms-ckeditor.component.scss +24 -0
- package/src/lib/qms-ckeditor-components/styles/_modules.scss +9 -1
- package/src/themes/core/_range-slider.scss +61 -42
- package/src/themes/core/_side-sheet.scss +2 -2
- package/src/themes/core/_table.scss +158 -37
- package/esm2015/lib/directives/range-slider/range-slider-lockup.directive.js +0 -20
- package/esm2015/lib/directives/range-slider/range-slider.directive.js +0 -36
- package/esm2015/lib/directives/side-sheet/drawer-content.directive.js +0 -20
- package/esm2015/lib/directives/side-sheet/drawer-header-action.directive.js +0 -20
- package/esm2015/lib/directives/side-sheet/drawer-header.directive.js +0 -20
- package/esm2015/lib/directives/side-sheet/drawer.directive.js +0 -20
- package/esm2015/lib/qms-ckeditor-components/common/classes/uploadAdapter.js +0 -26
- package/lib/qms-ckeditor-components/common/classes/uploadAdapter.d.ts +0 -5
- package/src/assets/qms-ckeditor-plugin/src/plugins/imagemap/insertimagemapcommand.js +0 -128
- package/src/assets/qms-ckeditor-plugin/src/plugins/tooltip/inserttooltipcommand.js +0 -88
@@ -202,9 +202,56 @@ export class SelectOneDialog {
|
|
202
202
|
children: [],
|
203
203
|
parentId: node.parentId
|
204
204
|
};
|
205
|
-
|
205
|
+
setTimeout(() => {
|
206
|
+
this.dataTrees.toArray()[0].todoFolderSelection([treeNode]);
|
207
|
+
this.expandAndScrollToNode(treeNode, node);
|
208
|
+
}, 500);
|
206
209
|
return;
|
207
210
|
}
|
211
|
+
expandAndScrollToNode(treeNode, node) {
|
212
|
+
let parent;
|
213
|
+
let parentList = [];
|
214
|
+
parent = this.treeData.find(x => x.rootId === node.parentId);
|
215
|
+
if (parent) {
|
216
|
+
parentList.push({
|
217
|
+
id: parent.rootId,
|
218
|
+
itemName: parent.rootName,
|
219
|
+
parentId: parent.parentId
|
220
|
+
});
|
221
|
+
parentList = this.getParentLineOfNode(parentList, parent);
|
222
|
+
}
|
223
|
+
if (parentList.length) {
|
224
|
+
parentList.reverse().forEach(x => {
|
225
|
+
this.focusEditItem(x);
|
226
|
+
});
|
227
|
+
}
|
228
|
+
else {
|
229
|
+
this.focusEditItem(treeNode);
|
230
|
+
}
|
231
|
+
}
|
232
|
+
getParentLineOfNode(listParent, node) {
|
233
|
+
let parent;
|
234
|
+
parent = this.treeData.find(x => x.rootId === node.parentId);
|
235
|
+
if (parent) {
|
236
|
+
listParent = [...listParent, {
|
237
|
+
id: parent.rootId,
|
238
|
+
itemName: parent.rootName,
|
239
|
+
parentId: parent.parentId
|
240
|
+
}];
|
241
|
+
this.getParentLineOfNode(listParent, parent);
|
242
|
+
}
|
243
|
+
return listParent;
|
244
|
+
}
|
245
|
+
focusEditItem(selectedOption) {
|
246
|
+
const node = this.dataTrees.toArray()[0].getNodeByIdAndParentId(selectedOption.id, selectedOption.parentId);
|
247
|
+
if (node) {
|
248
|
+
this.dataTrees.toArray()[0].expandNode(node);
|
249
|
+
const element = document.getElementById(`_${node.parentId ? node.parentId : ''}_${node.id}_${node.level}`);
|
250
|
+
if (element) {
|
251
|
+
element.scrollIntoView(false);
|
252
|
+
}
|
253
|
+
}
|
254
|
+
}
|
208
255
|
onCloseClick() {
|
209
256
|
this.selectedFolder = null;
|
210
257
|
this.dialogRef.close();
|
@@ -328,7 +375,7 @@ export class SelectOneDialog {
|
|
328
375
|
SelectOneDialog.decorators = [
|
329
376
|
{ type: Component, args: [{
|
330
377
|
selector: 'qms-select-one',
|
331
|
-
template: "<div id=\"qmslib_related_popup\" class=\"qmslib__related__popup__container\">\r\n <div id=\"qmslib_related_popup_header\">\r\n <span mat-icon-button class=\"button__close\" (click)=\"onCloseClick()\">\r\n <mat-icon mat-icon>close</mat-icon>\r\n </span>\r\n <div id=\"qmslib_related_popup_header_001\" mat-dialog-content>\r\n <span>{{ moduleName }}</span>\r\n </div>\r\n </div>\r\n\r\n <div\r\n id=\"qmslib_related_popup_search\"\r\n class=\"input__field\"\r\n (click)=\"showSearchResult()\"\r\n >\r\n <input\r\n #name\r\n type=\"text\"\r\n placeholder=\"{{ LANG.SEARCH }}\"\r\n matInput\r\n [formControl]=\"myControl\"\r\n [matAutocomplete]=\"auto\"\r\n #autoCompleteInputSearch\r\n />\r\n <mat-icon>search</mat-icon>\r\n </div>\r\n\r\n <div class=\"line__divider\"></div>\r\n\r\n <mat-autocomplete\r\n #auto=\"matAutocomplete\"\r\n [displayWith]=\"displayRelated\"\r\n class=\"mat-autocomplete_related-viewport\"\r\n >\r\n <cdk-virtual-scroll-viewport\r\n qms-scrollbar\r\n itemSize=\"10\"\r\n class=\"related-viewport\"\r\n >\r\n <div class=\"search__module-result\" *ngIf=\"filteredOptions.length\">\r\n <mat-option\r\n class=\"search__option\"\r\n *ngFor=\"let option of getModuleFilteredOptions()\"\r\n [value]=\"option\"\r\n (click)=\"selectItemSearched(option)\"\r\n >\r\n <qms-list-item type=\"image-square\">\r\n <mat-icon\r\n leading-icon\r\n type=\"image-square\"\r\n [svgIcon]=\"getNodeIcon(option)\"\r\n ></mat-icon>\r\n <div qms-list-header>\r\n <div\r\n qms-line\r\n type=\"caption\"\r\n qms-tool-tip=\"{{\r\n isEllipsisActive(searchItemResult) ? option.parentName : ''\r\n }}\"\r\n mode=\"dark\"\r\n *ngIf=\"getParentName(option)\"\r\n >\r\n <span #searchItemResult class=\"search__result__parent-name\">\r\n {{ option.parentName }}\r\n </span>\r\n </div>\r\n <div qms-line type=\"subtitle\" class=\"search__option-name\">\r\n {{ option.itemName }}\r\n </div>\r\n <div\r\n class=\"caption\"\r\n *ngIf=\"option.breadcumbs && option.breadcumbs.length\"\r\n >\r\n <qms-breadcrumb\r\n class=\"breadcrumb-containe\"\r\n type=\"table\"\r\n numDisplayItem=\"1\"\r\n [nodes]=\"option.breadcumbs\"\r\n >\r\n </qms-breadcrumb>\r\n </div>\r\n </div>\r\n <div qms-line color=\"default-subtitle\" *ngIf=\"getItemId(option)\">\r\n <span class=\"material-icons-outlined search__description-icon\">\r\n local_offer\r\n </span>\r\n {{ getItemId(option) }}\r\n </div>\r\n </qms-list-item>\r\n </mat-option>\r\n </div>\r\n </cdk-virtual-scroll-viewport>\r\n </mat-autocomplete>\r\n\r\n <div class=\"row\">\r\n <div\r\n class=\"qms-scrollbar col-12 qmslib_related_popup_content\"\r\n [ngClass]=\"{\r\n panel__content_item: checkedNodeList.length,\r\n panel__content: !checkedNodeList.length\r\n }\"\r\n >\r\n <mat-expansion-panel\r\n hideToggle\r\n id=\"qmslib_related_popup_common_001\"\r\n [expanded]=\"isCommonExpanded\"\r\n (opened)=\"isCommonExpanded = true\"\r\n (closed)=\"isCommonExpanded = false\"\r\n class=\"panel-tree\"\r\n >\r\n <div id=\"qmslib_related_popup_common_002\">\r\n <qms-tree\r\n [treeData]=\"treeData\"\r\n [treeConfig]=\"treeConfig\"\r\n [selectedData]=\"selectedData\"\r\n [selectedRiskData]=\"selectedRiskData\"\r\n [disabledList]=\"disabledList\"\r\n (selectNodeEvent)=\"selectNodeTreeEvent($event)\"\r\n (getChildNodeSelectOne)=\"getChildNodeSelectOne($event)\"\r\n [expandOnTitleClick]=\"false\"\r\n [expandToChildNode]=\"expandToChildNode\"\r\n ></qms-tree>\r\n </div>\r\n </mat-expansion-panel>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"checkedNodeList.length\" class=\"line__divider\"></div>\r\n\r\n <div *ngIf=\"checkedNodeList.length\" class=\"panel__item qms-scrollbar\">\r\n <div class=\"related__item__inline\" *ngFor=\"let item of checkedNodeList\">\r\n <button\r\n *ngIf=\"item.itemName\"\r\n mat-button\r\n class=\"related__item__content\"\r\n qms-tool-tip=\"{{\r\n isEllipsisActive(itemName) ? getItemChipName(item) : ''\r\n }}\"\r\n mode=\"dark\"\r\n >\r\n <span class=\"related__item__content_name\" #itemName>{{\r\n getItemChipName(item)\r\n }}</span>\r\n <mat-icon (click)=\"removeCheckedNodeList()\">cancel</mat-icon>\r\n </button>\r\n </div>\r\n </div
|
378
|
+
template: "<div id=\"qmslib_related_popup\" class=\"qmslib__related__popup__container\">\r\n <div id=\"qmslib_related_popup_header\">\r\n <span mat-icon-button class=\"button__close\" (click)=\"onCloseClick()\">\r\n <mat-icon mat-icon>close</mat-icon>\r\n </span>\r\n <div id=\"qmslib_related_popup_header_001\" mat-dialog-content>\r\n <span>{{ moduleName }}</span>\r\n </div>\r\n </div>\r\n\r\n <div\r\n id=\"qmslib_related_popup_search\"\r\n class=\"input__field\"\r\n (click)=\"showSearchResult()\"\r\n >\r\n <input\r\n #name\r\n type=\"text\"\r\n placeholder=\"{{ LANG.SEARCH }}\"\r\n matInput\r\n [formControl]=\"myControl\"\r\n [matAutocomplete]=\"auto\"\r\n #autoCompleteInputSearch\r\n />\r\n <mat-icon>search</mat-icon>\r\n </div>\r\n\r\n <div class=\"line__divider\"></div>\r\n\r\n <mat-autocomplete\r\n #auto=\"matAutocomplete\"\r\n [displayWith]=\"displayRelated\"\r\n class=\"mat-autocomplete_related-viewport\"\r\n >\r\n <cdk-virtual-scroll-viewport\r\n qms-scrollbar\r\n itemSize=\"10\"\r\n class=\"related-viewport\"\r\n >\r\n <div class=\"search__module-result\" *ngIf=\"filteredOptions.length\">\r\n <mat-option\r\n class=\"search__option\"\r\n *ngFor=\"let option of getModuleFilteredOptions()\"\r\n [value]=\"option\"\r\n (click)=\"selectItemSearched(option)\"\r\n >\r\n <qms-list-item type=\"image-square\">\r\n <mat-icon\r\n leading-icon\r\n type=\"image-square\"\r\n [svgIcon]=\"getNodeIcon(option)\"\r\n ></mat-icon>\r\n <div qms-list-header>\r\n <div\r\n qms-line\r\n type=\"caption\"\r\n qms-tool-tip=\"{{\r\n isEllipsisActive(searchItemResult) ? option.parentName : ''\r\n }}\"\r\n mode=\"dark\"\r\n *ngIf=\"getParentName(option)\"\r\n >\r\n <span #searchItemResult class=\"search__result__parent-name\">\r\n {{ option.parentName }}\r\n </span>\r\n </div>\r\n <div qms-line type=\"subtitle\" class=\"search__option-name\">\r\n {{ option.itemName }}\r\n </div>\r\n <div\r\n class=\"caption\"\r\n *ngIf=\"option.breadcumbs && option.breadcumbs.length\"\r\n >\r\n <qms-breadcrumb\r\n class=\"breadcrumb-containe\"\r\n type=\"table\"\r\n numDisplayItem=\"1\"\r\n [nodes]=\"option.breadcumbs\"\r\n >\r\n </qms-breadcrumb>\r\n </div>\r\n </div>\r\n <div qms-line color=\"default-subtitle\" *ngIf=\"getItemId(option)\">\r\n <span class=\"material-icons-outlined search__description-icon\">\r\n local_offer\r\n </span>\r\n {{ getItemId(option) }}\r\n </div>\r\n </qms-list-item>\r\n </mat-option>\r\n </div>\r\n </cdk-virtual-scroll-viewport>\r\n </mat-autocomplete>\r\n\r\n <div class=\"row\">\r\n <div\r\n class=\"qms-scrollbar col-12 qmslib_related_popup_content\"\r\n [ngClass]=\"{\r\n panel__content_item: checkedNodeList.length,\r\n panel__content: !checkedNodeList.length\r\n }\"\r\n >\r\n <mat-expansion-panel\r\n hideToggle\r\n id=\"qmslib_related_popup_common_001\"\r\n [expanded]=\"isCommonExpanded\"\r\n (opened)=\"isCommonExpanded = true\"\r\n (closed)=\"isCommonExpanded = false\"\r\n class=\"panel-tree\"\r\n >\r\n <div id=\"qmslib_related_popup_common_002\">\r\n <qms-tree\r\n [treeData]=\"treeData\"\r\n [treeConfig]=\"treeConfig\"\r\n [selectedData]=\"selectedData\"\r\n [selectedRiskData]=\"selectedRiskData\"\r\n [disabledList]=\"disabledList\"\r\n (selectNodeEvent)=\"selectNodeTreeEvent($event)\"\r\n (getChildNodeSelectOne)=\"getChildNodeSelectOne($event)\"\r\n [expandOnTitleClick]=\"false\"\r\n [expandToChildNode]=\"expandToChildNode\"\r\n ></qms-tree>\r\n </div>\r\n </mat-expansion-panel>\r\n </div>\r\n </div>\r\n\r\n <!-- <div *ngIf=\"checkedNodeList.length\" class=\"line__divider\"></div>\r\n\r\n <div *ngIf=\"checkedNodeList.length\" class=\"panel__item qms-scrollbar\">\r\n <div class=\"related__item__inline\" *ngFor=\"let item of checkedNodeList\">\r\n <button\r\n *ngIf=\"item.itemName\"\r\n mat-button\r\n class=\"related__item__content\"\r\n qms-tool-tip=\"{{\r\n isEllipsisActive(itemName) ? getItemChipName(item) : ''\r\n }}\"\r\n mode=\"dark\"\r\n >\r\n <span class=\"related__item__content_name\" #itemName>{{\r\n getItemChipName(item)\r\n }}</span>\r\n <mat-icon (click)=\"removeCheckedNodeList()\">cancel</mat-icon>\r\n </button>\r\n </div>\r\n </div> -->\r\n\r\n <div class=\"line__divider\"></div>\r\n\r\n <div class=\"confirm__button__groups\">\r\n <button\r\n *ngIf=\"!checkedNodeList.length\"\r\n qms-btn\r\n style=\"margin-top: 7px\"\r\n (click)=\"onAddClick()\"\r\n >\r\n {{ LANG.ADD }}\r\n </button>\r\n <button\r\n *ngIf=\"checkedNodeList.length\"\r\n qms-btn\r\n style=\"margin-top: 0px\"\r\n (click)=\"onAddClick()\"\r\n >\r\n {{ LANG.ADD }} ({{ checkedNodeList.length }})\r\n </button>\r\n <button\r\n qms-btn-text\r\n [ngStyle]=\"{ 'margin-top': checkedNodeList.length ? '0px' : '7px' }\"\r\n (click)=\"onCloseClick()\"\r\n >\r\n {{ LANG.CANCEL }}\r\n </button>\r\n </div>\r\n</div>\r\n",
|
332
379
|
encapsulation: ViewEncapsulation.None,
|
333
380
|
styles: [".qms-scrollbar::-webkit-scrollbar{width:12px}.qms-scrollbar::-webkit-scrollbar-track{background:rgba(0,0,0,.12);background-clip:content-box}.qms-scrollbar::-webkit-scrollbar-thumb{background:rgba(0,0,0,.38);border-radius:20px;width:4px;border:4px solid transparent;background-clip:content-box}.qms-scrollbar::-webkit-scrollbar-thumb:hover{background:rgba(0,0,0,.5);background-clip:content-box;border:4px solid transparent}.qms-scrollbar.none-scroll-bg::-webkit-scrollbar-track{background:transparent;background-clip:content-box}.qms__popup .button__close{float:right;top:-24px;right:-24px;cursor:pointer}.qms__danger button{border:none;color:#fff;padding:0;text-align:center;text-decoration:none;display:inline-block;cursor:pointer;height:20px;width:20px;font-family:Open Sans;font-size:12px;font-weight:600;font-style:normal;line-height:16px}.qms__danger .red{background-color:#9e360f;margin-left:10px}.qms__danger .yellow{background-color:#e4cf53;margin-left:10px;color:#323232}.qms__danger .green{background-color:#00804c;margin-left:10px}.confirm__button__groups{margin-top:11px}.confirm__button__groups button{min-height:36px;width:auto;font-family:Open Sans;font-weight:500;font-size:14px;letter-spacing:1px;line-height:16px;padding-left:15px;padding-right:15px;margin-right:5px;float:right}.confirm__button__groups .confirm{background:#f8f9f9}.confirm__button__groups .confirm:hover{background:#001983;color:#fff}.confirm__button__groups .confirm:disabled{cursor:not-allowed}.confirm__button__groups .cancel{background:#f8f9f9}.confirm__button__groups .cancel:hover{background:#001983;color:#fff}.qmslib__related__popup__container .input__field{display:flex;align-items:center}.qmslib__related__popup__container .input__field input{width:100%;padding:10px;outline:none;border:none;background:#eee}.qmslib__related__popup__container .input__field .mat-icon{margin-left:-30px;cursor:pointer;vertical-align:middle}.qmslib__related__popup__container .line__divider{border-bottom:1px solid #ccc;height:1px;margin-top:10px;min-width:300px;max-width:100%}.qmslib__related__popup__container .button__close{float:right;top:-24px;right:-24px;cursor:pointer}.qmslib__related__popup__container .panel__content{height:450px;overflow:auto;margin-top:12px}.qmslib__related__popup__container .panel__content_item{height:350px;overflow:auto;margin-top:12px}.qmslib__related__popup__container .panel-tree .mat-expansion-panel-body{padding:0 12px 12px}.qmslib__related__popup__container .mat-expansion-panel-header{height:30px;font-size:12px;letter-spacing:1px;font-family:Raleway;font-weight:600;padding:0}.qmslib__related__popup__container .mat-expansion-panel-header .mat-expansion-panel-header-title{align-items:center;margin-left:12px}.qmslib__related__popup__container .mat-expansion-panel-header .related_popup_toggle-btn{width:1.5rem;height:1.5rem;line-height:1.5rem}.qmslib__related__popup__container .mat-expansion-panel:not([class*=mat-elevation-z]){box-shadow:none}.qmslib__related__popup__container .panel__item{height:100px;margin-top:12px;overflow-x:hidden;overflow-y:auto;padding-right:5px;width:100%;max-width:100%;display:flex;flex-wrap:wrap;align-content:flex-start}.qmslib__related__popup__container .panel__item .related__item__inline{max-width:100%}.qmslib__related__popup__container .panel__item .related__item__content{height:32px;line-height:32px;background-color:#e5e5e5;max-width:100%;margin-bottom:5px;margin-left:2.5px;margin-right:2.5px}.qmslib__related__popup__container .panel__item .related__item__content .mat-icon{color:#8e8e8e;font-size:24px}.qmslib__related__popup__container .panel__item .related__item__content span.related__item__content_name{display:inline-block;min-width:calc(100% - 13px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:320px}cdk-virtual-scroll-viewport{overflow-x:hidden}cdk-virtual-scroll-viewport .search__module-result{margin:1.5rem;padding:0 0 .5rem}cdk-virtual-scroll-viewport .search__module-result .search__module-title{font-size:14px;font-weight:600}cdk-virtual-scroll-viewport .search__module-result .search__option{height:auto;line-height:normal;padding:8px 0;border-bottom:1px solid #e0e0e0}cdk-virtual-scroll-viewport .search__module-result .search__option .qms-list-item.mat-2-line.image-item{height:auto}cdk-virtual-scroll-viewport .search__module-result .search__option .qms-list-item-content{margin:0;border-bottom:none}cdk-virtual-scroll-viewport .search__module-result .search__option .qms-list-item-content .wrap-image.image-square{width:2.5rem;height:100%;background:transparent;align-self:center;margin-right:0}cdk-virtual-scroll-viewport .search__module-result .search__option .qms-list-item-content .wrap-image.image-square img{width:24px;height:24px}cdk-virtual-scroll-viewport .search__module-result .search__option .qms-list-item-content .material-icons-outlined.leading-icon,cdk-virtual-scroll-viewport .search__module-result .search__option .qms-list-item-content mat-icon.leading-icon{padding:4px 0 4px 4px}cdk-virtual-scroll-viewport .search__module-result .search__option .qms-list-item-content .subtitle{font-weight:400}cdk-virtual-scroll-viewport .search__module-result .search__option .qms-list-item-content .caption{overflow:hidden;line-height:normal;white-space:normal;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;padding:0;margin:0}cdk-virtual-scroll-viewport .search__module-result .search__option .qms-list-item-content .caption span.search__result__parent-name{display:inline-block;width:auto;width:calc(100% - 13px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}cdk-virtual-scroll-viewport .search__module-result .search__option .qms-list-item-content .default-subtitle{color:rgba(0,0,0,.38)}cdk-virtual-scroll-viewport .search__module-result .search__option .qms-list-item-content .search__description-icon{margin-right:0;width:12px;height:12px;font-size:12px}cdk-virtual-scroll-viewport .search__module-result .search__option .qms-list-item-content .qms-list-text{border-bottom:none}cdk-virtual-scroll-viewport .search__module-result .search__option .qms-list-item-content .breadcrumb-containe .qms-breadcrumb-item .mat-icon{font-size:16px!important;padding-bottom:1px}cdk-virtual-scroll-viewport .search__module-result svg{display:block}#qmslib_related_popup_header_001{margin-bottom:20px;padding:0;font-weight:600;font-family:Raleway}.padding-5{padding:5px}.mat-autocomplete_related-viewport{height:100%;max-height:100%!important}.mat-autocomplete_related-viewport .cdk-virtual-scroll-content-wrapper{width:100%}.mat-autocomplete_related-viewport .related-viewport{min-height:10.25rem}"]
|
334
381
|
},] }
|
@@ -348,4 +395,4 @@ SelectOneDialog.propDecorators = {
|
|
348
395
|
autoComplete: [{ type: ViewChild, args: ['autoCompleteInputSearch', { read: MatAutocompleteTrigger, static: true },] }],
|
349
396
|
onMessage: [{ type: HostListener, args: ['window:message', ['$event'],] }]
|
350
397
|
};
|
351
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LW9uZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9xbXMtYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvc2VsZWN0LW9uZS9zZWxlY3Qtb25lLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsWUFBWSxFQUFhLFNBQVMsRUFBRSxpQkFBaUIsRUFBK0IsWUFBWSxFQUFjLE1BQU0sZUFBZSxDQUFDO0FBQ2hLLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUN4RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDeEUsT0FBTyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV6RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUN0RixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUUzRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDdEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSx5QkFB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RSxJQUFJLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTt3QkFtQ25GLFlBQVksU0FBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBFdmVudEVtaXR0ZXIsIE9uRGVzdHJveSwgVmlld0NoaWxkLCBWaWV3RW5jYXBzdWxhdGlvbiwgQWZ0ZXJWaWV3Q2hlY2tlZCwgUXVlcnlMaXN0LCBWaWV3Q2hpbGRyZW4sIEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBIb3N0TGlzdGVuZXIsIEluamVjdCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBNYXRBdXRvY29tcGxldGVUcmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYXV0b2NvbXBsZXRlJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nUmVmLCBNQVRfRElBTE9HX0RBVEEgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBNYXRJY29uUmVnaXN0cnkgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5pbXBvcnQgeyBUcmFuc2xhdGVMaWJyYXJ5U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RyYW5zbGF0aW9uLXJlZ2lzdHJ5LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBRTVNJY29uUmVnaXN0cnlTZXJ2aWNlIH0gZnJvbSAnLi4vYXBwLWljb24vaWNvbi1yZWdpc3RyeS5zZXJ2aWNlJztcclxuXHJcbmltcG9ydCB7IERhdGFUeXBlIH0gZnJvbSAnLi9jb21tb24vZGF0YS10eXBlLmVudW0nO1xyXG5pbXBvcnQgeyBEb2N1bWVudE5vZGVUeXBlIH0gZnJvbSAnLi9jb21tb24vZG9jdW1lbnQtZm9sZGVyLXR5cGUuZW51bSc7XHJcbmltcG9ydCB7IE1vZHVsZVR5cGUgfSBmcm9tICcuL2NvbW1vbi9tb2R1bGUtdHlwZS5lbnVtJztcclxuaW1wb3J0IHsgU2hvd0hpZGVTZWFyY2hSZXN1bHRDb25zdCB9IGZyb20gJy4vY29tbW9uL3Nob3ctaGlkZS1zZWFyY2gtcmVzdWx0LmNvbnN0JztcclxuaW1wb3J0IHsgU2VsZWN0T25lUG9wdXBEYXRhIH0gZnJvbSAnLi9jb21tb24vc2VsZWN0b25lLXBvcHVwLWRhdGEubW9kZWwnO1xyXG5pbXBvcnQgeyBJU2VsZWN0T25lSXRlbSB9IGZyb20gJy4vY29tbW9uL3NlbGVjdC1kYXRhLm1vZGVsJztcclxuaW1wb3J0IHsgU2VsZWN0ZWROb2RlIH0gZnJvbSAnLi9jb21tb24vc2VsZWN0ZWQtbm9kZS5tb2RlbCc7XHJcbmltcG9ydCB7IFFNU1NlbGVjdE9uZUdsb2JhbFNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2Uvc2VsZWN0LW9uZS1nbG9iYWwuc2VydmljZSc7XHJcblxyXG5pbXBvcnQgeyBUcmVlQ29uZmlnIH0gZnJvbSAnLi4vdHJlZS9tb2RlbC90cmVlLWNvbmZpZy5tb2RlbCc7XHJcbmltcG9ydCB7IFRyZWVGbGF0Tm9kZSB9IGZyb20gJy4uL3RyZWUvbW9kZWwvdHJlZS1mbGF0LW5vZGUubW9kZWwnO1xyXG5pbXBvcnQgeyBUcmVlTm9kZSB9IGZyb20gJy4uL3RyZWUvbW9kZWwvdHJlZS1ub2RlLm1vZGVsJztcclxuaW1wb3J0IHsgVHJlZU1vZGVsIH0gZnJvbSAnLi4vdHJlZS9tb2RlbC90cmVlLm1vZGVsJztcclxuaW1wb3J0IHsgVHJlZUNvbXBvbmVudCB9IGZyb20gJy4uL3RyZWUvdHJlZS5jb21wb25lbnQnO1xyXG5cclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAncW1zLXNlbGVjdC1vbmUnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NlbGVjdC1vbmUuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vc2VsZWN0LW9uZS5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2VsZWN0T25lRGlhbG9nIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0NoZWNrZWQge1xyXG4gICAgbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcblxyXG4gICAgTEFORzogYW55O1xyXG4gICAgbW9kdWxlSWQgPSAwO1xyXG4gICAgbW9kdWxlTmFtZSA9ICcnO1xyXG4gICAgdHJlZURhdGE6IEFycmF5PFRyZWVNb2RlbD4gPSBbXTtcclxuICAgIHRyZWVDb25maWc6IFRyZWVDb25maWc7XHJcblxyXG4gICAgY2hlY2tlZE5vZGVMaXN0OiBBcnJheTxTZWxlY3RlZE5vZGU+ID0gW107XHJcbiAgICBzZWxlY3RlZE5vZGU6IEFycmF5PFNlbGVjdGVkTm9kZT4gPSBbXTtcclxuICAgIHNlbGVjdGVkRGF0YTogQXJyYXk8VHJlZUZsYXROb2RlPiA9IFtdO1xyXG5cclxuICAgIG1vZHVsZSA9IE1vZHVsZVR5cGU7XHJcbiAgICBkYXRhVHlwZSA9IERhdGFUeXBlO1xyXG4gICAgaXRlbVR5cGUgPSAwO1xyXG4gICAgc2VsZWN0ZWRSaXNrRGF0YTogYW55ID0gW107XHJcbiAgICBkaXNhYmxlZExpc3Q6IGFueSA9IFtdO1xyXG4gICAgZXhwYW5kVG9DaGlsZE5vZGU6IGFueSA9IFtdO1xyXG5cclxuICAgIGlzQ29tbW9uRXhwYW5kZWQgPSB0cnVlO1xyXG5cclxuICAgIG15Q29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgpO1xyXG4gICAgZmlsdGVyZWRPcHRpb25zOiBJU2VsZWN0T25lSXRlbVtdID0gW107XHJcbiAgICBpc0lucHV0VmFsdWUgPSBmYWxzZTtcclxuXHJcbiAgICBzZWxlY3RlZEZvbGRlcjogVHJlZUZsYXROb2RlID0gbnVsbDtcclxuICAgIGxpc3RDaGlsZHJlblNlbGVjdE9uZTogYW55ID0gW107XHJcblxyXG4gICAgb25TZWFyY2ggPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgICBvbkV4cGFuZEZvbGRlciA9IG5ldyBFdmVudEVtaXR0ZXI8SVNlbGVjdE9uZUl0ZW0+KCk7XHJcblxyXG4gICAgQFZpZXdDaGlsZHJlbihUcmVlQ29tcG9uZW50LCB7fSkgZGF0YVRyZWVzOiBRdWVyeUxpc3Q8VHJlZUNvbXBvbmVudD47XHJcblxyXG4gICAgQFZpZXdDaGlsZCgnYXV0b0NvbXBsZXRlSW5wdXRTZWFyY2gnLCB7IHJlYWQ6IE1hdEF1dG9jb21wbGV0ZVRyaWdnZXIsIHN0YXRpYzogdHJ1ZSB9KVxyXG4gICAgYXV0b0NvbXBsZXRlOiBNYXRBdXRvY29tcGxldGVUcmlnZ2VyO1xyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICAgICAgcHVibGljIHRyYW5zbGF0ZTogVHJhbnNsYXRlTGlicmFyeVNlcnZpY2UsXHJcbiAgICAgICAgcHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPFNlbGVjdE9uZURpYWxvZz4sXHJcbiAgICAgICAgcHVibGljIGdsb2JhbFNlcnZpY2U6IFFNU1NlbGVjdE9uZUdsb2JhbFNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBpY29uUmVnaXN0cnk6IE1hdEljb25SZWdpc3RyeSxcclxuICAgICAgICBwcml2YXRlIHNhbml0aXplcjogRG9tU2FuaXRpemVyLFxyXG4gICAgICAgIHByaXZhdGUgYXBwSWNvblNlcnZpY2U6IFFNU0ljb25SZWdpc3RyeVNlcnZpY2UsXHJcbiAgICAgICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBkYXRhOiBTZWxlY3RPbmVQb3B1cERhdGFcclxuICAgICkge1xyXG4gICAgICAgIHRoaXMubW9kdWxlSWQgPSBkYXRhLm1vZHVsZUlkO1xyXG4gICAgICAgIHRoaXMubW9kdWxlTmFtZSA9IGRhdGEubW9kdWxlTmFtZTtcclxuICAgICAgICB0aGlzLnRyZWVEYXRhID0gZGF0YS50cmVlRGF0YTtcclxuICAgICAgICB0aGlzLnRyZWVDb25maWcgPSBkYXRhLnRyZWVDb25maWc7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFJpc2tEYXRhID0gZGF0YT8uc2VsZWN0ZWROb2RlIHx8IFtdO1xyXG4gICAgICAgIHRoaXMuZGlzYWJsZWRMaXN0ID0gZGF0YS5kaXNhYmxlZExpc3QgfHwgW107XHJcbiAgICAgICAgdGhpcy5leHBhbmRUb0NoaWxkTm9kZSA9IGRhdGEuZXhwYW5kVG9DaGlsZE5vZGU7XHJcbiAgICAgICAgYXBwSWNvblNlcnZpY2UucmVnaXN0ZXJQcm9jZXNzSWNvbihpY29uUmVnaXN0cnksIHNhbml0aXplcik7XHJcbiAgICAgICAgYXBwSWNvblNlcnZpY2UucmVnaXN0ZXJQcm9jZXNzQXJlYUljb24oaWNvblJlZ2lzdHJ5LCBzYW5pdGl6ZXIpO1xyXG4gICAgICAgIGFwcEljb25TZXJ2aWNlLnJlZ2lzdGVyRG9jdW1lbnRJY29uKGljb25SZWdpc3RyeSwgc2FuaXRpemVyKTtcclxuICAgICAgICBhcHBJY29uU2VydmljZS5yZWdpc3RlckZvbGRlckljb24oaWNvblJlZ2lzdHJ5LCBzYW5pdGl6ZXIpO1xyXG4gICAgICAgIGFwcEljb25TZXJ2aWNlLnJlZ2lzdGVyRGV2aWF0aW9uSWNvbihpY29uUmVnaXN0cnksIHNhbml0aXplcik7XHJcbiAgICAgICAgYXBwSWNvblNlcnZpY2UucmVnaXN0ZXJDaGVja2xpc3RJY29uKGljb25SZWdpc3RyeSwgc2FuaXRpemVyKTtcclxuICAgICAgICBhcHBJY29uU2VydmljZS5yZWdpc3RlclJpc2tJY29uKGljb25SZWdpc3RyeSwgc2FuaXRpemVyKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLm5nVW5zdWJzY3JpYmUubmV4dCgpO1xyXG4gICAgICAgIHRoaXMubmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xyXG4gICAgICAgIHRoaXMuZ2xvYmFsU2VydmljZS5zZXRTZWFyY2hSZWxhdGVkKFtdKTtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkRm9sZGVyID0gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBASG9zdExpc3RlbmVyKCd3aW5kb3c6bWVzc2FnZScsIFsnJGV2ZW50J10pXHJcbiAgICBvbk1lc3NhZ2UoZXZlbnQpIHtcclxuICAgICAgICBpZiAoZXZlbnQuZGF0YSA9PT0gU2hvd0hpZGVTZWFyY2hSZXN1bHRDb25zdC5ISURFX1NFQVJDSF9SRVNVTFQpIHtcclxuICAgICAgICAgICAgdGhpcy5hdXRvQ29tcGxldGUuY2xvc2VQYW5lbCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnRyYW5zbGF0ZS5nZXRMYW5ndWFnZVN1YmplY3QkLnBpcGUoKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICAgICAgICBpZiAocmVzKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLkxBTkcgPSB0aGlzLnRyYW5zbGF0ZS5nZXRPYmplY3RMYW5nKHJlcyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5nbG9iYWxTZXJ2aWNlLnNlYXJjaFJlbGF0ZWQucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSkuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgICAgICAgaWYgKHJlcyAmJiByZXMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmZpbHRlcmVkT3B0aW9ucyA9IHJlcztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLm15Q29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShkZWJvdW5jZVRpbWUoMTAwMCkpLnN1YnNjcmliZSgodmFsKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuaXNJbnB1dFZhbHVlID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5vblNlYXJjaFJlbGF0ZWQodmFsKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5pdGVtVHlwZSA9IHRoaXMuZ2V0RGF0YVR5cGVJZCh0aGlzLm1vZHVsZUlkKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ0FmdGVyVmlld0NoZWNrZWQoKSB7XHJcbiAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgaWYgKHRoaXMuZmlsdGVyZWRPcHRpb25zICYmIHRoaXMuZmlsdGVyZWRPcHRpb25zLmxlbmd0aCkge1xyXG4gICAgICAgICAgICB0aGlzLmF1dG9Db21wbGV0ZS5vcGVuUGFuZWwoKTtcclxuICAgICAgICAgICAgdGhpcy5zZXRSZXN1bHRIZWlnaHQoKTtcclxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuYXV0b0NvbXBsZXRlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYXV0b0NvbXBsZXRlLmNsb3NlUGFuZWwoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0RGF0YVR5cGVJZChtb2R1bGVJZDogbnVtYmVyKSB7XHJcbiAgICAgICAgbGV0IGl0ZW1UeXBlO1xyXG4gICAgICAgIHN3aXRjaCAobW9kdWxlSWQpIHtcclxuICAgICAgICAgICAgY2FzZSBNb2R1bGVUeXBlLmRvY3VtZW50UHJvY2VzczpcclxuICAgICAgICAgICAgICAgIGl0ZW1UeXBlID0gdGhpcy5kYXRhVHlwZS5wcm9jZXNzO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgTW9kdWxlVHlwZS5kZXZpYXRpb246XHJcbiAgICAgICAgICAgICAgICBpdGVtVHlwZSA9IHRoaXMuZGF0YVR5cGUuZGV2aWF0aW9uO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgTW9kdWxlVHlwZS5jaGVja2xpc3Q6XHJcbiAgICAgICAgICAgICAgICBpdGVtVHlwZSA9IHRoaXMuZGF0YVR5cGUuY2hlY2tsaXN0O1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgTW9kdWxlVHlwZS5yaXNrOlxyXG4gICAgICAgICAgICAgICAgaXRlbVR5cGUgPSB0aGlzLmRhdGFUeXBlLnJpc2s7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgIGl0ZW1UeXBlID0gdGhpcy5kYXRhVHlwZS5kb2N1bWVudDtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gaXRlbVR5cGU7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0UmVzdWx0SGVpZ2h0KGFycj86IElTZWxlY3RPbmVJdGVtW10pIHtcclxuICAgICAgICBsZXQgbWF4SGVpZ2h0ID0gNDg0O1xyXG4gICAgICAgIGNvbnN0IHBvcHVwX2NvbnRlbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdxbXNsaWJfcmVsYXRlZF9wb3B1cF9jb250ZW50JylbMF0gYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICAgICAgY29uc3QgbGluZV9fZGl2aWRlciA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2xpbmVfX2RpdmlkZXInKVswXSBhcyBIVE1MRWxlbWVudDtcclxuICAgICAgICBpZiAocG9wdXBfY29udGVudCAmJiBsaW5lX19kaXZpZGVyKSB7XHJcbiAgICAgICAgICAgIG1heEhlaWdodCA9IHRoaXMuZ2V0T2Zmc2V0SGVpZ2h0KHBvcHVwX2NvbnRlbnQsIHRydWUpICsgdGhpcy5nZXRPZmZzZXRIZWlnaHQobGluZV9fZGl2aWRlciwgdHJ1ZSkgKiAyO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgY29udGVudFJlc3VsdCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2Nkay12aXJ0dWFsLXNjcm9sbC1jb250ZW50LXdyYXBwZXInKVswXSBhcyBIVE1MRWxlbWVudDtcclxuICAgICAgICBjb25zdCB2aWV3cmVwb3J0cyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3JlbGF0ZWQtdmlld3BvcnQnKVswXSBhcyBIVE1MRWxlbWVudDtcclxuXHJcbiAgICAgICAgaWYgKHZpZXdyZXBvcnRzKSB7XHJcbiAgICAgICAgICAgIGlmIChjb250ZW50UmVzdWx0Lm9mZnNldEhlaWdodCA8PSBtYXhIZWlnaHQpIHtcclxuICAgICAgICAgICAgICAgIHZpZXdyZXBvcnRzLnN0eWxlLmhlaWdodCA9IGAke2NvbnRlbnRSZXN1bHQub2Zmc2V0SGVpZ2h0fXB4YDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHZpZXdyZXBvcnRzLnN0eWxlLmhlaWdodCA9IGAke21heEhlaWdodH1weGA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgb25TZWFyY2hSZWxhdGVkKF92YWw6IGFueSkge1xyXG4gICAgICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zID0gW107XHJcbiAgICAgICAgaWYgKHR5cGVvZiAoX3ZhbCkgPT09ICdvYmplY3QnKSB7XHJcbiAgICAgICAgICAgIHRoaXMubXlDb250cm9sLnNldFZhbHVlKCcnKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAodHlwZW9mIChfdmFsKSA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgICAgaWYgKCEhX3ZhbCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5vblNlYXJjaC5lbWl0KF92YWwpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGdldE1vZHVsZUZpbHRlcmVkT3B0aW9ucygpIHtcclxuICAgICAgICBpZiAodGhpcy5saXN0Q2hpbGRyZW5TZWxlY3RPbmUubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLmxpc3RDaGlsZHJlblNlbGVjdE9uZS5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGZpcnN0RWwgPSB0aGlzLmxpc3RDaGlsZHJlblNlbGVjdE9uZVtpbmRleF07XHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuZmlsdGVyZWRPcHRpb25zLmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2Vjb25kRWwgPSB0aGlzLmZpbHRlcmVkT3B0aW9uc1tqXTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZmlyc3RFbC5pZCA9PT0gc2Vjb25kRWwuaWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJlZE9wdGlvbnMuc3BsaWNlKGosIDEpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZmlsdGVyZWRPcHRpb25zO1xyXG4gICAgfVxyXG5cclxuICAgIHNob3dTZWFyY2hSZXN1bHQoKSB7XHJcbiAgICAgICAgdGhpcy5hdXRvQ29tcGxldGUub3BlblBhbmVsKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZGlzcGxheVJlbGF0ZWQocmVsYXRlZD86IElTZWxlY3RPbmVJdGVtKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcclxuICAgICAgICByZXR1cm4gcmVsYXRlZCA/IHJlbGF0ZWQuaXRlbU5hbWUgOiB1bmRlZmluZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgc2VsZWN0SXRlbVNlYXJjaGVkKGl0ZW06IElTZWxlY3RPbmVJdGVtKSB7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnRyZWVDb25maWc/LnNlbGVjdE9uZSkge1xyXG4gICAgICAgICAgICB0aGlzLmRpc2FibGVkTGlzdCA9IFtdO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyByZXNldCB0byByb290XHJcbiAgICAgICAgdGhpcy5leHBhbmRUb0NoaWxkTm9kZSA9IFsnJ107XHJcbiAgICAgICAgdGhpcy5jaGVja2VkTm9kZUxpc3QgPSBbXTtcclxuXHJcbiAgICAgICAgbGV0IHBvc2l0aW9uID0gLTE7XHJcbiAgICAgICAgbGV0IG5vZGU6IGFueTtcclxuICAgICAgICBsZXQgdHlwZUlkOiBudW1iZXI7XHJcblxyXG4gICAgICAgIHBvc2l0aW9uID0gdGhpcy50cmVlRGF0YS5maW5kSW5kZXgoeCA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiB4LnJvb3RJZCA9PT0gaXRlbS5pZDtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0eXBlSWQgPSBpdGVtLml0ZW1UeXBlO1xyXG5cclxuICAgICAgICBpZiAocG9zaXRpb24gPj0gMCkge1xyXG4gICAgICAgICAgICBub2RlID0gdGhpcy50cmVlRGF0YVtwb3NpdGlvbl07XHJcblxyXG4gICAgICAgICAgICB0aGlzLmNoZWNrZWROb2RlTGlzdC5wdXNoKHtcclxuICAgICAgICAgICAgICAgIG1vZHVsZUlkOiB0aGlzLm1vZHVsZUlkLFxyXG4gICAgICAgICAgICAgICAgaWQ6IG5vZGUucm9vdElkLFxyXG4gICAgICAgICAgICAgICAgaXRlbU5hbWU6IG5vZGUucm9vdE5hbWUgfHwgbm9kZS5zdWJOYW1lLFxyXG4gICAgICAgICAgICAgICAgaXRlbVR5cGU6IHR5cGVJZCxcclxuICAgICAgICAgICAgICAgIGl0ZW1OdW1iZXJJZDogaXRlbS5pdGVtTnVtYmVySWQsXHJcbiAgICAgICAgICAgICAgICBsZXZlbFR5cGU6IGl0ZW0ubGV2ZWxUeXBlXHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgdHJlZU5vZGUgPSB7XHJcbiAgICAgICAgICAgIGlkOiBub2RlLnJvb3RJZCxcclxuICAgICAgICAgICAgbmFtZTogISFub2RlLnJvb3RJZCA/IG5vZGUuc3ViTmFtZSA6IG5vZGUucm9vdE5hbWUsXHJcbiAgICAgICAgICAgIGNoaWxkcmVuOiBbXSxcclxuICAgICAgICAgICAgcGFyZW50SWQ6IG5vZGUucGFyZW50SWRcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMuZGF0YVRyZWVzLnRvQXJyYXkoKVswXS50b2RvRm9sZGVyU2VsZWN0aW9uKFt0cmVlTm9kZV0pO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcblxyXG5cclxuICAgIG9uQ2xvc2VDbGljaygpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkRm9sZGVyID0gbnVsbDtcclxuICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgpO1xyXG4gICAgfTtcclxuXHJcbiAgICBvbkFkZENsaWNrKCkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRGb2xkZXIgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHRoaXMuY2hlY2tlZE5vZGVMaXN0KTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRPZmZzZXRIZWlnaHQoZWxlbWVudDogSFRNTEVsZW1lbnQsIGluY2x1ZGVNYXJnaW46IGJvb2xlYW4pOiBudW1iZXIge1xyXG4gICAgICAgIGxldCBlbG1IZWlnaHQgPSAwLCBlbG1NYXJnaW4gPSAwO1xyXG5cclxuICAgICAgICBlbG1IZWlnaHQgPSBlbGVtZW50Lm9mZnNldEhlaWdodDtcclxuICAgICAgICBpZiAoaW5jbHVkZU1hcmdpbikge1xyXG4gICAgICAgICAgICBjb25zdCBzdHlsZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpO1xyXG4gICAgICAgICAgICBlbG1NYXJnaW4gPSBwYXJzZUZsb2F0KHN0eWxlLm1hcmdpblRvcC5yZXBsYWNlKCdweCcsICcnKSkgKyBwYXJzZUZsb2F0KHN0eWxlLm1hcmdpbkJvdHRvbS5yZXBsYWNlKCdweCcsICcnKSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gKGVsbUhlaWdodCArIGVsbU1hcmdpbik7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0SXRlbUNoaXBOYW1lKGl0ZW06IFNlbGVjdGVkTm9kZSkge1xyXG4gICAgICAgIGlmIChpdGVtLml0ZW1UeXBlID09PSBEYXRhVHlwZS5jaGVja2xpc3QgfHwgaXRlbS5pdGVtVHlwZSA9PT0gRGF0YVR5cGUuZGV2aWF0aW9uKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAoaXRlbS5wYXJlbnROYW1lICYmIGl0ZW0uaXRlbU5hbWUgIT09IGl0ZW0ucGFyZW50TmFtZSkgPyBgJHtpdGVtLnBhcmVudE5hbWV9LyR7aXRlbS5pdGVtTmFtZX1gIDogaXRlbS5pdGVtTmFtZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGl0ZW0uaXRlbU5hbWU7XHJcbiAgICB9XHJcblxyXG4gICAgaXNFbGxpcHNpc0FjdGl2ZShlOiBIVE1MRWxlbWVudCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiBlID8gKGUuY2xpZW50V2lkdGggPCBlLnNjcm9sbFdpZHRoKSA6IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGdldE5vZGVJY29uKGl0ZW06IElTZWxlY3RPbmVJdGVtKSB7XHJcbiAgICAgICAgc3dpdGNoIChpdGVtLml0ZW1UeXBlKSB7XHJcbiAgICAgICAgICAgIGNhc2UgRGF0YVR5cGUuZm9sZGVyOiB7XHJcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKGl0ZW0ubGV2ZWxUeXBlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBEb2N1bWVudE5vZGVUeXBlLkRlcGFydG1lbnRGb2xkZXI6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnZGVwYXJ0bWVudF9mb2xkZXJfb3V0bGluZWQnO1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgRG9jdW1lbnROb2RlVHlwZS5SZWdpb25hbEZvbGRlcjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdyZWdpb25hbF9mb2xkZXJfb3V0bGluZWQnO1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgRG9jdW1lbnROb2RlVHlwZS5Ub3BGb2xkZXI6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnZW50ZXJwcmlzZV9mb2xkZXJfb3V0bGluZWQnO1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgRG9jdW1lbnROb2RlVHlwZS5Gb2xkZXI6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnbG9jYWxfZm9sZGVyX291dGxpbmVkJztcclxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2ZvbGRlcl9vdXRsaW5lZCc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2FzZSBEYXRhVHlwZS5kb2N1bWVudDoge1xyXG4gICAgICAgICAgICAgICAgc3dpdGNoIChpdGVtLmxldmVsVHlwZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgRG9jdW1lbnROb2RlVHlwZS5EZXBhcnRtZW50Rm9sZGVyOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2RvY3VtZW50X2RlcGFydG1lbnQnO1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgRG9jdW1lbnROb2RlVHlwZS5SZWdpb25hbEZvbGRlcjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdkb2N1bWVudF9yZWdpb25hbCc7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBEb2N1bWVudE5vZGVUeXBlLlRvcEZvbGRlcjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdkb2N1bWVudF9lbnRlcnByaXNlJztcclxuICAgICAgICAgICAgICAgICAgICBjYXNlIERvY3VtZW50Tm9kZVR5cGUuRm9sZGVyOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2RvY3VtZW50X2xvY2FsJztcclxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2RvY3VtZW50JztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYXNlIERhdGFUeXBlLmFyZWE6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3Byb2Nlc3NfYXJlYV9vdXRsaW5lZCc7XHJcbiAgICAgICAgICAgIGNhc2UgRGF0YVR5cGUucHJvY2VzczpcclxuICAgICAgICAgICAgICAgIHJldHVybiAncHJvY2Vzcyc7XHJcbiAgICAgICAgICAgIGNhc2UgRGF0YVR5cGUuZGV2aWF0aW9uOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuICdkZXZpYXRpb24nO1xyXG4gICAgICAgICAgICBjYXNlIERhdGFUeXBlLmNoZWNrbGlzdDpcclxuICAgICAgICAgICAgICAgIHJldHVybiAnY2hlY2tsaXN0JztcclxuICAgICAgICAgICAgY2FzZSBEYXRhVHlwZS5yaXNrOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuICdyaXNrJztcclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgIHJldHVybiAnZm9sZGVyX291dGxpbmVkJztcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGdldFBhcmVudE5hbWUoaXRlbTogSVNlbGVjdE9uZUl0ZW0pIHtcclxuICAgICAgICBpZiAoaXRlbS5pdGVtVHlwZSA9PT0gdGhpcy5kYXRhVHlwZS5jaGVja2xpc3QgfHwgaXRlbS5pdGVtVHlwZSA9PT0gdGhpcy5kYXRhVHlwZS5kZXZpYXRpb24pIHtcclxuICAgICAgICAgICAgcmV0dXJuIGl0ZW0ucGFyZW50TmFtZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0SXRlbUlkKGl0ZW06IElTZWxlY3RPbmVJdGVtKSB7XHJcbiAgICAgICAgaWYgKGl0ZW0uaXRlbVR5cGUgPT09IHRoaXMuZGF0YVR5cGUucHJvY2Vzcykge1xyXG4gICAgICAgICAgICByZXR1cm4gYCR7dGhpcy5MQU5HLlBST0NFU1NfSUR9OiAke2l0ZW0uaXRlbU51bWJlcklkfTsgJHtpdGVtLnN0YXR1c05hbWV9YDtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoaXRlbS5pdGVtVHlwZSA9PT0gdGhpcy5kYXRhVHlwZS5kb2N1bWVudCkge1xyXG4gICAgICAgICAgICByZXR1cm4gYCR7dGhpcy5MQU5HLkRPQ1VNRU5UX0lEfTogJHtpdGVtLml0ZW1OdW1iZXJJZH07ICR7aXRlbS5zdGF0dXNOYW1lfWA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBzZWxlY3ROb2RlVHJlZUV2ZW50KG5vZGUpIHtcclxuICAgICAgICBsZXQgcG9zaXRpb24gPSAtMTtcclxuICAgICAgICBsZXQgcGFyZW50TmFtZSA9ICcnO1xyXG4gICAgICAgIGxldCBpdGVtTnVtYmVySWQgPSAnJztcclxuXHJcbiAgICAgICAgcG9zaXRpb24gPSAhbm9kZS5leHBhbmRhYmxlID8gdGhpcy50cmVlRGF0YS5maW5kSW5kZXgocCA9PiBwLmNoaWxkSWQgPT09IG5vZGUuaWQgJiYgcC5yb290SWQgPT09IG5vZGUucGFyZW50SWQpIDpcclxuICAgICAgICAgICAgdGhpcy50cmVlRGF0YS5maW5kSW5kZXgocCA9PiBwLnJvb3RJZCA9PT0gbm9kZS5pZCk7XHJcbiAgICAgICAgcGFyZW50TmFtZSA9IHRoaXMudHJlZURhdGFbcG9zaXRpb25dLnBhcmVudElkID8gdGhpcy50cmVlRGF0YVtwb3NpdGlvbl0uc3ViTmFtZSA6IHRoaXMudHJlZURhdGFbcG9zaXRpb25dLnJvb3ROYW1lO1xyXG4gICAgICAgIGl0ZW1OdW1iZXJJZCA9IHRoaXMudHJlZURhdGFbcG9zaXRpb25dPy5kaXNwbGF5SWQ/LnRvU3RyaW5nKCk7XHJcblxyXG5cclxuICAgICAgICB0aGlzLmNoZWNrZWROb2RlTGlzdCA9IFtdO1xyXG4gICAgICAgIHRoaXMuY2hlY2tlZE5vZGVMaXN0LnB1c2goe1xyXG4gICAgICAgICAgICBtb2R1bGVJZDogdGhpcy5tb2R1bGVJZCxcclxuICAgICAgICAgICAgaWQ6IG5vZGUuaWQsXHJcbiAgICAgICAgICAgIGl0ZW1OYW1lOiBub2RlLm5hbWUsXHJcbiAgICAgICAgICAgIGl0ZW1UeXBlOiBub2RlLml0ZW1UeXBlLFxyXG4gICAgICAgICAgICBwYXJlbnRJZDogbm9kZS5wYXJlbnRJZCxcclxuICAgICAgICAgICAgcGFyZW50TmFtZTogcGFyZW50TmFtZSxcclxuICAgICAgICAgICAgaXRlbU51bWJlcklkOiBpdGVtTnVtYmVySWQsXHJcbiAgICAgICAgICAgIGxldmVsVHlwZTogbm9kZS5sZXZlbFR5cGVcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRDaGlsZE5vZGVTZWxlY3RPbmUobGlzdENoaWxkcmVuKSB7XHJcbiAgICAgICAgdGhpcy5saXN0Q2hpbGRyZW5TZWxlY3RPbmUgPSBbXTtcclxuICAgICAgICB0aGlzLmxpc3RDaGlsZHJlblNlbGVjdE9uZSA9IGxpc3RDaGlsZHJlbjtcclxuICAgIH1cclxuXHJcbiAgICByZW1vdmVDaGVja2VkTm9kZUxpc3QoKSB7XHJcbiAgICAgICAgY29uc3QgaXRlbTogVHJlZUZsYXROb2RlID0gbnVsbDtcclxuICAgICAgICB0aGlzLmNoZWNrZWROb2RlTGlzdCA9IFtdO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWREYXRhID0gWy4uLltdLCBpdGVtXTtcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGEgPSBbXTtcclxuICAgICAgICB9LCA1MDApO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
398
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LW9uZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9xbXMtYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvc2VsZWN0LW9uZS9zZWxlY3Qtb25lLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsWUFBWSxFQUFhLFNBQVMsRUFBRSxpQkFBaUIsRUFBK0IsWUFBWSxFQUFjLE1BQU0sZUFBZSxDQUFDO0FBQ2hLLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUN4RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDeEUsT0FBTyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV6RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUN0RixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUUzRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDdEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSx5QkFB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dmVudEVtaXR0ZXIsIE9uRGVzdHJveSwgVmlld0NoaWxkLCBWaWV3RW5jYXBzdWxhdGlvbiwgQWZ0ZXJWaWV3Q2hlY2tlZCwgUXVlcnlMaXN0LCBWaWV3Q2hpbGRyZW4sIEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBIb3N0TGlzdGVuZXIsIEluamVjdCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBNYXRBdXRvY29tcGxldGVUcmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYXV0b2NvbXBsZXRlJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nUmVmLCBNQVRfRElBTE9HX0RBVEEgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBNYXRJY29uUmVnaXN0cnkgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5pbXBvcnQgeyBUcmFuc2xhdGVMaWJyYXJ5U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RyYW5zbGF0aW9uLXJlZ2lzdHJ5LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBRTVNJY29uUmVnaXN0cnlTZXJ2aWNlIH0gZnJvbSAnLi4vYXBwLWljb24vaWNvbi1yZWdpc3RyeS5zZXJ2aWNlJztcclxuXHJcbmltcG9ydCB7IERhdGFUeXBlIH0gZnJvbSAnLi9jb21tb24vZGF0YS10eXBlLmVudW0nO1xyXG5pbXBvcnQgeyBEb2N1bWVudE5vZGVUeXBlIH0gZnJvbSAnLi9jb21tb24vZG9jdW1lbnQtZm9sZGVyLXR5cGUuZW51bSc7XHJcbmltcG9ydCB7IE1vZHVsZVR5cGUgfSBmcm9tICcuL2NvbW1vbi9tb2R1bGUtdHlwZS5lbnVtJztcclxuaW1wb3J0IHsgU2hvd0hpZGVTZWFyY2hSZXN1bHRDb25zdCB9IGZyb20gJy4vY29tbW9uL3Nob3ctaGlkZS1zZWFyY2gtcmVzdWx0LmNvbnN0JztcclxuaW1wb3J0IHsgU2VsZWN0T25lUG9wdXBEYXRhIH0gZnJvbSAnLi9jb21tb24vc2VsZWN0b25lLXBvcHVwLWRhdGEubW9kZWwnO1xyXG5pbXBvcnQgeyBJU2VsZWN0T25lSXRlbSB9IGZyb20gJy4vY29tbW9uL3NlbGVjdC1kYXRhLm1vZGVsJztcclxuaW1wb3J0IHsgU2VsZWN0ZWROb2RlIH0gZnJvbSAnLi9jb21tb24vc2VsZWN0ZWQtbm9kZS5tb2RlbCc7XHJcbmltcG9ydCB7IFFNU1NlbGVjdE9uZUdsb2JhbFNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2Uvc2VsZWN0LW9uZS1nbG9iYWwuc2VydmljZSc7XHJcblxyXG5pbXBvcnQgeyBUcmVlQ29uZmlnIH0gZnJvbSAnLi4vdHJlZS9tb2RlbC90cmVlLWNvbmZpZy5tb2RlbCc7XHJcbmltcG9ydCB7IFRyZWVGbGF0Tm9kZSB9IGZyb20gJy4uL3RyZWUvbW9kZWwvdHJlZS1mbGF0LW5vZGUubW9kZWwnO1xyXG5pbXBvcnQgeyBUcmVlTm9kZSB9IGZyb20gJy4uL3RyZWUvbW9kZWwvdHJlZS1ub2RlLm1vZGVsJztcclxuaW1wb3J0IHsgVHJlZU1vZGVsIH0gZnJvbSAnLi4vdHJlZS9tb2RlbC90cmVlLm1vZGVsJztcclxuaW1wb3J0IHsgVHJlZUNvbXBvbmVudCB9IGZyb20gJy4uL3RyZWUvdHJlZS5jb21wb25lbnQnO1xyXG5cclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAncW1zLXNlbGVjdC1vbmUnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NlbGVjdC1vbmUuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vc2VsZWN0LW9uZS5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2VsZWN0T25lRGlhbG9nIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0NoZWNrZWQge1xyXG4gICAgbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcblxyXG4gICAgTEFORzogYW55O1xyXG4gICAgbW9kdWxlSWQgPSAwO1xyXG4gICAgbW9kdWxlTmFtZSA9ICcnO1xyXG4gICAgdHJlZURhdGE6IEFycmF5PFRyZWVNb2RlbD4gPSBbXTtcclxuICAgIHRyZWVDb25maWc6IFRyZWVDb25maWc7XHJcblxyXG4gICAgY2hlY2tlZE5vZGVMaXN0OiBBcnJheTxTZWxlY3RlZE5vZGU+ID0gW107XHJcbiAgICBzZWxlY3RlZE5vZGU6IEFycmF5PFNlbGVjdGVkTm9kZT4gPSBbXTtcclxuICAgIHNlbGVjdGVkRGF0YTogQXJyYXk8VHJlZUZsYXROb2RlPiA9IFtdO1xyXG5cclxuICAgIG1vZHVsZSA9IE1vZHVsZVR5cGU7XHJcbiAgICBkYXRhVHlwZSA9IERhdGFUeXBlO1xyXG4gICAgaXRlbVR5cGUgPSAwO1xyXG4gICAgc2VsZWN0ZWRSaXNrRGF0YTogYW55ID0gW107XHJcbiAgICBkaXNhYmxlZExpc3Q6IGFueSA9IFtdO1xyXG4gICAgZXhwYW5kVG9DaGlsZE5vZGU6IGFueSA9IFtdO1xyXG5cclxuICAgIGlzQ29tbW9uRXhwYW5kZWQgPSB0cnVlO1xyXG5cclxuICAgIG15Q29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgpO1xyXG4gICAgZmlsdGVyZWRPcHRpb25zOiBJU2VsZWN0T25lSXRlbVtdID0gW107XHJcbiAgICBpc0lucHV0VmFsdWUgPSBmYWxzZTtcclxuXHJcbiAgICBzZWxlY3RlZEZvbGRlcjogVHJlZUZsYXROb2RlID0gbnVsbDtcclxuICAgIGxpc3RDaGlsZHJlblNlbGVjdE9uZTogYW55ID0gW107XHJcblxyXG4gICAgb25TZWFyY2ggPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgICBvbkV4cGFuZEZvbGRlciA9IG5ldyBFdmVudEVtaXR0ZXI8SVNlbGVjdE9uZUl0ZW0+KCk7XHJcblxyXG4gICAgQFZpZXdDaGlsZHJlbihUcmVlQ29tcG9uZW50LCB7fSkgZGF0YVRyZWVzOiBRdWVyeUxpc3Q8VHJlZUNvbXBvbmVudD47XHJcblxyXG4gICAgQFZpZXdDaGlsZCgnYXV0b0NvbXBsZXRlSW5wdXRTZWFyY2gnLCB7IHJlYWQ6IE1hdEF1dG9jb21wbGV0ZVRyaWdnZXIsIHN0YXRpYzogdHJ1ZSB9KVxyXG4gICAgYXV0b0NvbXBsZXRlOiBNYXRBdXRvY29tcGxldGVUcmlnZ2VyO1xyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICAgICAgcHVibGljIHRyYW5zbGF0ZTogVHJhbnNsYXRlTGlicmFyeVNlcnZpY2UsXHJcbiAgICAgICAgcHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPFNlbGVjdE9uZURpYWxvZz4sXHJcbiAgICAgICAgcHVibGljIGdsb2JhbFNlcnZpY2U6IFFNU1NlbGVjdE9uZUdsb2JhbFNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBpY29uUmVnaXN0cnk6IE1hdEljb25SZWdpc3RyeSxcclxuICAgICAgICBwcml2YXRlIHNhbml0aXplcjogRG9tU2FuaXRpemVyLFxyXG4gICAgICAgIHByaXZhdGUgYXBwSWNvblNlcnZpY2U6IFFNU0ljb25SZWdpc3RyeVNlcnZpY2UsXHJcbiAgICAgICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBkYXRhOiBTZWxlY3RPbmVQb3B1cERhdGFcclxuICAgICkge1xyXG4gICAgICAgIHRoaXMubW9kdWxlSWQgPSBkYXRhLm1vZHVsZUlkO1xyXG4gICAgICAgIHRoaXMubW9kdWxlTmFtZSA9IGRhdGEubW9kdWxlTmFtZTtcclxuICAgICAgICB0aGlzLnRyZWVEYXRhID0gZGF0YS50cmVlRGF0YTtcclxuICAgICAgICB0aGlzLnRyZWVDb25maWcgPSBkYXRhLnRyZWVDb25maWc7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFJpc2tEYXRhID0gZGF0YT8uc2VsZWN0ZWROb2RlIHx8IFtdO1xyXG4gICAgICAgIHRoaXMuZGlzYWJsZWRMaXN0ID0gZGF0YS5kaXNhYmxlZExpc3QgfHwgW107XHJcbiAgICAgICAgdGhpcy5leHBhbmRUb0NoaWxkTm9kZSA9IGRhdGEuZXhwYW5kVG9DaGlsZE5vZGU7XHJcbiAgICAgICAgYXBwSWNvblNlcnZpY2UucmVnaXN0ZXJQcm9jZXNzSWNvbihpY29uUmVnaXN0cnksIHNhbml0aXplcik7XHJcbiAgICAgICAgYXBwSWNvblNlcnZpY2UucmVnaXN0ZXJQcm9jZXNzQXJlYUljb24oaWNvblJlZ2lzdHJ5LCBzYW5pdGl6ZXIpO1xyXG4gICAgICAgIGFwcEljb25TZXJ2aWNlLnJlZ2lzdGVyRG9jdW1lbnRJY29uKGljb25SZWdpc3RyeSwgc2FuaXRpemVyKTtcclxuICAgICAgICBhcHBJY29uU2VydmljZS5yZWdpc3RlckZvbGRlckljb24oaWNvblJlZ2lzdHJ5LCBzYW5pdGl6ZXIpO1xyXG4gICAgICAgIGFwcEljb25TZXJ2aWNlLnJlZ2lzdGVyRGV2aWF0aW9uSWNvbihpY29uUmVnaXN0cnksIHNhbml0aXplcik7XHJcbiAgICAgICAgYXBwSWNvblNlcnZpY2UucmVnaXN0ZXJDaGVja2xpc3RJY29uKGljb25SZWdpc3RyeSwgc2FuaXRpemVyKTtcclxuICAgICAgICBhcHBJY29uU2VydmljZS5yZWdpc3RlclJpc2tJY29uKGljb25SZWdpc3RyeSwgc2FuaXRpemVyKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLm5nVW5zdWJzY3JpYmUubmV4dCgpO1xyXG4gICAgICAgIHRoaXMubmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xyXG4gICAgICAgIHRoaXMuZ2xvYmFsU2VydmljZS5zZXRTZWFyY2hSZWxhdGVkKFtdKTtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkRm9sZGVyID0gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBASG9zdExpc3RlbmVyKCd3aW5kb3c6bWVzc2FnZScsIFsnJGV2ZW50J10pXHJcbiAgICBvbk1lc3NhZ2UoZXZlbnQpIHtcclxuICAgICAgICBpZiAoZXZlbnQuZGF0YSA9PT0gU2hvd0hpZGVTZWFyY2hSZXN1bHRDb25zdC5ISURFX1NFQVJDSF9SRVNVTFQpIHtcclxuICAgICAgICAgICAgdGhpcy5hdXRvQ29tcGxldGUuY2xvc2VQYW5lbCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnRyYW5zbGF0ZS5nZXRMYW5ndWFnZVN1YmplY3QkLnBpcGUoKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICAgICAgICBpZiAocmVzKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLkxBTkcgPSB0aGlzLnRyYW5zbGF0ZS5nZXRPYmplY3RMYW5nKHJlcyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5nbG9iYWxTZXJ2aWNlLnNlYXJjaFJlbGF0ZWQucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSkuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgICAgICAgaWYgKHJlcyAmJiByZXMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmZpbHRlcmVkT3B0aW9ucyA9IHJlcztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLm15Q29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShkZWJvdW5jZVRpbWUoMTAwMCkpLnN1YnNjcmliZSgodmFsKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuaXNJbnB1dFZhbHVlID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5vblNlYXJjaFJlbGF0ZWQodmFsKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5pdGVtVHlwZSA9IHRoaXMuZ2V0RGF0YVR5cGVJZCh0aGlzLm1vZHVsZUlkKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ0FmdGVyVmlld0NoZWNrZWQoKSB7XHJcbiAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgaWYgKHRoaXMuZmlsdGVyZWRPcHRpb25zICYmIHRoaXMuZmlsdGVyZWRPcHRpb25zLmxlbmd0aCkge1xyXG4gICAgICAgICAgICB0aGlzLmF1dG9Db21wbGV0ZS5vcGVuUGFuZWwoKTtcclxuICAgICAgICAgICAgdGhpcy5zZXRSZXN1bHRIZWlnaHQoKTtcclxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuYXV0b0NvbXBsZXRlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYXV0b0NvbXBsZXRlLmNsb3NlUGFuZWwoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0RGF0YVR5cGVJZChtb2R1bGVJZDogbnVtYmVyKSB7XHJcbiAgICAgICAgbGV0IGl0ZW1UeXBlO1xyXG4gICAgICAgIHN3aXRjaCAobW9kdWxlSWQpIHtcclxuICAgICAgICAgICAgY2FzZSBNb2R1bGVUeXBlLmRvY3VtZW50UHJvY2VzczpcclxuICAgICAgICAgICAgICAgIGl0ZW1UeXBlID0gdGhpcy5kYXRhVHlwZS5wcm9jZXNzO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgTW9kdWxlVHlwZS5kZXZpYXRpb246XHJcbiAgICAgICAgICAgICAgICBpdGVtVHlwZSA9IHRoaXMuZGF0YVR5cGUuZGV2aWF0aW9uO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgTW9kdWxlVHlwZS5jaGVja2xpc3Q6XHJcbiAgICAgICAgICAgICAgICBpdGVtVHlwZSA9IHRoaXMuZGF0YVR5cGUuY2hlY2tsaXN0O1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgTW9kdWxlVHlwZS5yaXNrOlxyXG4gICAgICAgICAgICAgICAgaXRlbVR5cGUgPSB0aGlzLmRhdGFUeXBlLnJpc2s7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgIGl0ZW1UeXBlID0gdGhpcy5kYXRhVHlwZS5kb2N1bWVudDtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gaXRlbVR5cGU7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0UmVzdWx0SGVpZ2h0KGFycj86IElTZWxlY3RPbmVJdGVtW10pIHtcclxuICAgICAgICBsZXQgbWF4SGVpZ2h0ID0gNDg0O1xyXG4gICAgICAgIGNvbnN0IHBvcHVwX2NvbnRlbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdxbXNsaWJfcmVsYXRlZF9wb3B1cF9jb250ZW50JylbMF0gYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICAgICAgY29uc3QgbGluZV9fZGl2aWRlciA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2xpbmVfX2RpdmlkZXInKVswXSBhcyBIVE1MRWxlbWVudDtcclxuICAgICAgICBpZiAocG9wdXBfY29udGVudCAmJiBsaW5lX19kaXZpZGVyKSB7XHJcbiAgICAgICAgICAgIG1heEhlaWdodCA9IHRoaXMuZ2V0T2Zmc2V0SGVpZ2h0KHBvcHVwX2NvbnRlbnQsIHRydWUpICsgdGhpcy5nZXRPZmZzZXRIZWlnaHQobGluZV9fZGl2aWRlciwgdHJ1ZSkgKiAyO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgY29udGVudFJlc3VsdCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2Nkay12aXJ0dWFsLXNjcm9sbC1jb250ZW50LXdyYXBwZXInKVswXSBhcyBIVE1MRWxlbWVudDtcclxuICAgICAgICBjb25zdCB2aWV3cmVwb3J0cyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3JlbGF0ZWQtdmlld3BvcnQnKVswXSBhcyBIVE1MRWxlbWVudDtcclxuXHJcbiAgICAgICAgaWYgKHZpZXdyZXBvcnRzKSB7XHJcbiAgICAgICAgICAgIGlmIChjb250ZW50UmVzdWx0Lm9mZnNldEhlaWdodCA8PSBtYXhIZWlnaHQpIHtcclxuICAgICAgICAgICAgICAgIHZpZXdyZXBvcnRzLnN0eWxlLmhlaWdodCA9IGAke2NvbnRlbnRSZXN1bHQub2Zmc2V0SGVpZ2h0fXB4YDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHZpZXdyZXBvcnRzLnN0eWxlLmhlaWdodCA9IGAke21heEhlaWdodH1weGA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgb25TZWFyY2hSZWxhdGVkKF92YWw6IGFueSkge1xyXG4gICAgICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zID0gW107XHJcbiAgICAgICAgaWYgKHR5cGVvZiAoX3ZhbCkgPT09ICdvYmplY3QnKSB7XHJcbiAgICAgICAgICAgIHRoaXMubXlDb250cm9sLnNldFZhbHVlKCcnKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAodHlwZW9mIChfdmFsKSA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgICAgaWYgKCEhX3ZhbCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5vblNlYXJjaC5lbWl0KF92YWwpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGdldE1vZHVsZUZpbHRlcmVkT3B0aW9ucygpIHtcclxuICAgICAgICBpZiAodGhpcy5saXN0Q2hpbGRyZW5TZWxlY3RPbmUubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLmxpc3RDaGlsZHJlblNlbGVjdE9uZS5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGZpcnN0RWwgPSB0aGlzLmxpc3RDaGlsZHJlblNlbGVjdE9uZVtpbmRleF07XHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuZmlsdGVyZWRPcHRpb25zLmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2Vjb25kRWwgPSB0aGlzLmZpbHRlcmVkT3B0aW9uc1tqXTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZmlyc3RFbC5pZCA9PT0gc2Vjb25kRWwuaWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJlZE9wdGlvbnMuc3BsaWNlKGosIDEpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZmlsdGVyZWRPcHRpb25zO1xyXG4gICAgfVxyXG5cclxuICAgIHNob3dTZWFyY2hSZXN1bHQoKSB7XHJcbiAgICAgICAgdGhpcy5hdXRvQ29tcGxldGUub3BlblBhbmVsKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZGlzcGxheVJlbGF0ZWQocmVsYXRlZD86IElTZWxlY3RPbmVJdGVtKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcclxuICAgICAgICByZXR1cm4gcmVsYXRlZCA/IHJlbGF0ZWQuaXRlbU5hbWUgOiB1bmRlZmluZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgc2VsZWN0SXRlbVNlYXJjaGVkKGl0ZW06IElTZWxlY3RPbmVJdGVtKSB7XHJcbiAgICAgICAgaWYgKHRoaXMudHJlZUNvbmZpZz8uc2VsZWN0T25lKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGlzYWJsZWRMaXN0ID0gW107XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIHJlc2V0IHRvIHJvb3RcclxuICAgICAgICB0aGlzLmV4cGFuZFRvQ2hpbGROb2RlID0gWycnXTtcclxuICAgICAgICB0aGlzLmNoZWNrZWROb2RlTGlzdCA9IFtdO1xyXG5cclxuICAgICAgICBsZXQgcG9zaXRpb24gPSAtMTtcclxuICAgICAgICBsZXQgbm9kZTogYW55O1xyXG4gICAgICAgIGxldCB0eXBlSWQ6IG51bWJlcjtcclxuXHJcbiAgICAgICAgcG9zaXRpb24gPSB0aGlzLnRyZWVEYXRhLmZpbmRJbmRleCh4ID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIHgucm9vdElkID09PSBpdGVtLmlkO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHR5cGVJZCA9IGl0ZW0uaXRlbVR5cGU7XHJcblxyXG4gICAgICAgIGlmIChwb3NpdGlvbiA+PSAwKSB7XHJcbiAgICAgICAgICAgIG5vZGUgPSB0aGlzLnRyZWVEYXRhW3Bvc2l0aW9uXTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuY2hlY2tlZE5vZGVMaXN0LnB1c2goe1xyXG4gICAgICAgICAgICAgICAgbW9kdWxlSWQ6IHRoaXMubW9kdWxlSWQsXHJcbiAgICAgICAgICAgICAgICBpZDogbm9kZS5yb290SWQsXHJcbiAgICAgICAgICAgICAgICBpdGVtTmFtZTogbm9kZS5yb290TmFtZSB8fCBub2RlLnN1Yk5hbWUsXHJcbiAgICAgICAgICAgICAgICBpdGVtVHlwZTogdHlwZUlkLFxyXG4gICAgICAgICAgICAgICAgaXRlbU51bWJlcklkOiBpdGVtLml0ZW1OdW1iZXJJZCxcclxuICAgICAgICAgICAgICAgIGxldmVsVHlwZTogaXRlbS5sZXZlbFR5cGVcclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCB0cmVlTm9kZSA9IHtcclxuICAgICAgICAgICAgaWQ6IG5vZGUucm9vdElkLFxyXG4gICAgICAgICAgICBuYW1lOiAhIW5vZGUucm9vdElkID8gbm9kZS5zdWJOYW1lIDogbm9kZS5yb290TmFtZSxcclxuICAgICAgICAgICAgY2hpbGRyZW46IFtdLFxyXG4gICAgICAgICAgICBwYXJlbnRJZDogbm9kZS5wYXJlbnRJZFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZGF0YVRyZWVzLnRvQXJyYXkoKVswXS50b2RvRm9sZGVyU2VsZWN0aW9uKFt0cmVlTm9kZV0pO1xyXG4gICAgICAgICAgICB0aGlzLmV4cGFuZEFuZFNjcm9sbFRvTm9kZSh0cmVlTm9kZSwgbm9kZSk7XHJcbiAgICAgICAgfSwgNTAwKTtcclxuXHJcblxyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBleHBhbmRBbmRTY3JvbGxUb05vZGUodHJlZU5vZGU6IFRyZWVOb2RlLCBub2RlOiBUcmVlTW9kZWwpIHtcclxuICAgICAgICBsZXQgcGFyZW50O1xyXG4gICAgICAgIGxldCBwYXJlbnRMaXN0ID0gW107XHJcbiAgICAgICAgcGFyZW50ID0gdGhpcy50cmVlRGF0YS5maW5kKHggPT4geC5yb290SWQgPT09IG5vZGUucGFyZW50SWQpO1xyXG4gICAgICAgIGlmIChwYXJlbnQpIHtcclxuICAgICAgICAgICAgcGFyZW50TGlzdC5wdXNoKHtcclxuICAgICAgICAgICAgICAgIGlkOiBwYXJlbnQucm9vdElkLFxyXG4gICAgICAgICAgICAgICAgaXRlbU5hbWU6IHBhcmVudC5yb290TmFtZSxcclxuICAgICAgICAgICAgICAgIHBhcmVudElkOiBwYXJlbnQucGFyZW50SWRcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHBhcmVudExpc3QgPSB0aGlzLmdldFBhcmVudExpbmVPZk5vZGUocGFyZW50TGlzdCwgcGFyZW50KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHBhcmVudExpc3QubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHBhcmVudExpc3QucmV2ZXJzZSgpLmZvckVhY2goeCA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmZvY3VzRWRpdEl0ZW0oeCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZm9jdXNFZGl0SXRlbSh0cmVlTm9kZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGdldFBhcmVudExpbmVPZk5vZGUobGlzdFBhcmVudCwgbm9kZTogVHJlZU1vZGVsKSB7XHJcbiAgICAgICAgbGV0IHBhcmVudDtcclxuICAgICAgICBwYXJlbnQgPSB0aGlzLnRyZWVEYXRhLmZpbmQoeCA9PiB4LnJvb3RJZCA9PT0gbm9kZS5wYXJlbnRJZCk7XHJcbiAgICAgICAgaWYgKHBhcmVudCkge1xyXG4gICAgICAgICAgICBsaXN0UGFyZW50ID0gWy4uLmxpc3RQYXJlbnQsIHtcclxuICAgICAgICAgICAgICAgIGlkOiBwYXJlbnQucm9vdElkLFxyXG4gICAgICAgICAgICAgICAgaXRlbU5hbWU6IHBhcmVudC5yb290TmFtZSxcclxuICAgICAgICAgICAgICAgIHBhcmVudElkOiBwYXJlbnQucGFyZW50SWRcclxuICAgICAgICAgICAgfV07XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0UGFyZW50TGluZU9mTm9kZShsaXN0UGFyZW50LCBwYXJlbnQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbGlzdFBhcmVudDtcclxuICAgIH1cclxuXHJcbiAgICBmb2N1c0VkaXRJdGVtKHNlbGVjdGVkT3B0aW9uKSB7XHJcbiAgICAgICAgY29uc3Qgbm9kZSA9IHRoaXMuZGF0YVRyZWVzLnRvQXJyYXkoKVswXS5nZXROb2RlQnlJZEFuZFBhcmVudElkKHNlbGVjdGVkT3B0aW9uLmlkLCBzZWxlY3RlZE9wdGlvbi5wYXJlbnRJZCk7XHJcblxyXG4gICAgICAgIGlmIChub2RlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGF0YVRyZWVzLnRvQXJyYXkoKVswXS5leHBhbmROb2RlKG5vZGUpO1xyXG4gICAgICAgICAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYF8ke25vZGUucGFyZW50SWQgPyBub2RlLnBhcmVudElkIDogJyd9XyR7bm9kZS5pZH1fJHtub2RlLmxldmVsfWApO1xyXG5cclxuICAgICAgICAgICAgaWYgKGVsZW1lbnQpIHtcclxuICAgICAgICAgICAgICAgIGVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcoZmFsc2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG9uQ2xvc2VDbGljaygpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkRm9sZGVyID0gbnVsbDtcclxuICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgpO1xyXG4gICAgfTtcclxuXHJcbiAgICBvbkFkZENsaWNrKCkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRGb2xkZXIgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHRoaXMuY2hlY2tlZE5vZGVMaXN0KTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRPZmZzZXRIZWlnaHQoZWxlbWVudDogSFRNTEVsZW1lbnQsIGluY2x1ZGVNYXJnaW46IGJvb2xlYW4pOiBudW1iZXIge1xyXG4gICAgICAgIGxldCBlbG1IZWlnaHQgPSAwLCBlbG1NYXJnaW4gPSAwO1xyXG5cclxuICAgICAgICBlbG1IZWlnaHQgPSBlbGVtZW50Lm9mZnNldEhlaWdodDtcclxuICAgICAgICBpZiAoaW5jbHVkZU1hcmdpbikge1xyXG4gICAgICAgICAgICBjb25zdCBzdHlsZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpO1xyXG4gICAgICAgICAgICBlbG1NYXJnaW4gPSBwYXJzZUZsb2F0KHN0eWxlLm1hcmdpblRvcC5yZXBsYWNlKCdweCcsICcnKSkgKyBwYXJzZUZsb2F0KHN0eWxlLm1hcmdpbkJvdHRvbS5yZXBsYWNlKCdweCcsICcnKSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gKGVsbUhlaWdodCArIGVsbU1hcmdpbik7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0SXRlbUNoaXBOYW1lKGl0ZW06IFNlbGVjdGVkTm9kZSkge1xyXG4gICAgICAgIGlmIChpdGVtLml0ZW1UeXBlID09PSBEYXRhVHlwZS5jaGVja2xpc3QgfHwgaXRlbS5pdGVtVHlwZSA9PT0gRGF0YVR5cGUuZGV2aWF0aW9uKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAoaXRlbS5wYXJlbnROYW1lICYmIGl0ZW0uaXRlbU5hbWUgIT09IGl0ZW0ucGFyZW50TmFtZSkgPyBgJHtpdGVtLnBhcmVudE5hbWV9LyR7aXRlbS5pdGVtTmFtZX1gIDogaXRlbS5pdGVtTmFtZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGl0ZW0uaXRlbU5hbWU7XHJcbiAgICB9XHJcblxyXG4gICAgaXNFbGxpcHNpc0FjdGl2ZShlOiBIVE1MRWxlbWVudCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiBlID8gKGUuY2xpZW50V2lkdGggPCBlLnNjcm9sbFdpZHRoKSA6IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGdldE5vZGVJY29uKGl0ZW06IElTZWxlY3RPbmVJdGVtKSB7XHJcbiAgICAgICAgc3dpdGNoIChpdGVtLml0ZW1UeXBlKSB7XHJcbiAgICAgICAgICAgIGNhc2UgRGF0YVR5cGUuZm9sZGVyOiB7XHJcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKGl0ZW0ubGV2ZWxUeXBlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBEb2N1bWVudE5vZGVUeXBlLkRlcGFydG1lbnRGb2xkZXI6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnZGVwYXJ0bWVudF9mb2xkZXJfb3V0bGluZWQnO1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgRG9jdW1lbnROb2RlVHlwZS5SZWdpb25hbEZvbGRlcjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdyZWdpb25hbF9mb2xkZXJfb3V0bGluZWQnO1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgRG9jdW1lbnROb2RlVHlwZS5Ub3BGb2xkZXI6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnZW50ZXJwcmlzZV9mb2xkZXJfb3V0bGluZWQnO1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgRG9jdW1lbnROb2RlVHlwZS5Gb2xkZXI6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnbG9jYWxfZm9sZGVyX291dGxpbmVkJztcclxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2ZvbGRlcl9vdXRsaW5lZCc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2FzZSBEYXRhVHlwZS5kb2N1bWVudDoge1xyXG4gICAgICAgICAgICAgICAgc3dpdGNoIChpdGVtLmxldmVsVHlwZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgRG9jdW1lbnROb2RlVHlwZS5EZXBhcnRtZW50Rm9sZGVyOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2RvY3VtZW50X2RlcGFydG1lbnQnO1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgRG9jdW1lbnROb2RlVHlwZS5SZWdpb25hbEZvbGRlcjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdkb2N1bWVudF9yZWdpb25hbCc7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBEb2N1bWVudE5vZGVUeXBlLlRvcEZvbGRlcjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdkb2N1bWVudF9lbnRlcnByaXNlJztcclxuICAgICAgICAgICAgICAgICAgICBjYXNlIERvY3VtZW50Tm9kZVR5cGUuRm9sZGVyOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2RvY3VtZW50X2xvY2FsJztcclxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2RvY3VtZW50JztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYXNlIERhdGFUeXBlLmFyZWE6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3Byb2Nlc3NfYXJlYV9vdXRsaW5lZCc7XHJcbiAgICAgICAgICAgIGNhc2UgRGF0YVR5cGUucHJvY2VzczpcclxuICAgICAgICAgICAgICAgIHJldHVybiAncHJvY2Vzcyc7XHJcbiAgICAgICAgICAgIGNhc2UgRGF0YVR5cGUuZGV2aWF0aW9uOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuICdkZXZpYXRpb24nO1xyXG4gICAgICAgICAgICBjYXNlIERhdGFUeXBlLmNoZWNrbGlzdDpcclxuICAgICAgICAgICAgICAgIHJldHVybiAnY2hlY2tsaXN0JztcclxuICAgICAgICAgICAgY2FzZSBEYXRhVHlwZS5yaXNrOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuICdyaXNrJztcclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgIHJldHVybiAnZm9sZGVyX291dGxpbmVkJztcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGdldFBhcmVudE5hbWUoaXRlbTogSVNlbGVjdE9uZUl0ZW0pIHtcclxuICAgICAgICBpZiAoaXRlbS5pdGVtVHlwZSA9PT0gdGhpcy5kYXRhVHlwZS5jaGVja2xpc3QgfHwgaXRlbS5pdGVtVHlwZSA9PT0gdGhpcy5kYXRhVHlwZS5kZXZpYXRpb24pIHtcclxuICAgICAgICAgICAgcmV0dXJuIGl0ZW0ucGFyZW50TmFtZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0SXRlbUlkKGl0ZW06IElTZWxlY3RPbmVJdGVtKSB7XHJcbiAgICAgICAgaWYgKGl0ZW0uaXRlbVR5cGUgPT09IHRoaXMuZGF0YVR5cGUucHJvY2Vzcykge1xyXG4gICAgICAgICAgICByZXR1cm4gYCR7dGhpcy5MQU5HLlBST0NFU1NfSUR9OiAke2l0ZW0uaXRlbU51bWJlcklkfTsgJHtpdGVtLnN0YXR1c05hbWV9YDtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoaXRlbS5pdGVtVHlwZSA9PT0gdGhpcy5kYXRhVHlwZS5kb2N1bWVudCkge1xyXG4gICAgICAgICAgICByZXR1cm4gYCR7dGhpcy5MQU5HLkRPQ1VNRU5UX0lEfTogJHtpdGVtLml0ZW1OdW1iZXJJZH07ICR7aXRlbS5zdGF0dXNOYW1lfWA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBzZWxlY3ROb2RlVHJlZUV2ZW50KG5vZGUpIHtcclxuICAgICAgICBsZXQgcG9zaXRpb24gPSAtMTtcclxuICAgICAgICBsZXQgcGFyZW50TmFtZSA9ICcnO1xyXG4gICAgICAgIGxldCBpdGVtTnVtYmVySWQgPSAnJztcclxuXHJcbiAgICAgICAgcG9zaXRpb24gPSAhbm9kZS5leHBhbmRhYmxlID8gdGhpcy50cmVlRGF0YS5maW5kSW5kZXgocCA9PiBwLmNoaWxkSWQgPT09IG5vZGUuaWQgJiYgcC5yb290SWQgPT09IG5vZGUucGFyZW50SWQpIDpcclxuICAgICAgICAgICAgdGhpcy50cmVlRGF0YS5maW5kSW5kZXgocCA9PiBwLnJvb3RJZCA9PT0gbm9kZS5pZCk7XHJcbiAgICAgICAgcGFyZW50TmFtZSA9IHRoaXMudHJlZURhdGFbcG9zaXRpb25dLnBhcmVudElkID8gdGhpcy50cmVlRGF0YVtwb3NpdGlvbl0uc3ViTmFtZSA6IHRoaXMudHJlZURhdGFbcG9zaXRpb25dLnJvb3ROYW1lO1xyXG4gICAgICAgIGl0ZW1OdW1iZXJJZCA9IHRoaXMudHJlZURhdGFbcG9zaXRpb25dPy5kaXNwbGF5SWQ/LnRvU3RyaW5nKCk7XHJcblxyXG5cclxuICAgICAgICB0aGlzLmNoZWNrZWROb2RlTGlzdCA9IFtdO1xyXG4gICAgICAgIHRoaXMuY2hlY2tlZE5vZGVMaXN0LnB1c2goe1xyXG4gICAgICAgICAgICBtb2R1bGVJZDogdGhpcy5tb2R1bGVJZCxcclxuICAgICAgICAgICAgaWQ6IG5vZGUuaWQsXHJcbiAgICAgICAgICAgIGl0ZW1OYW1lOiBub2RlLm5hbWUsXHJcbiAgICAgICAgICAgIGl0ZW1UeXBlOiBub2RlLml0ZW1UeXBlLFxyXG4gICAgICAgICAgICBwYXJlbnRJZDogbm9kZS5wYXJlbnRJZCxcclxuICAgICAgICAgICAgcGFyZW50TmFtZTogcGFyZW50TmFtZSxcclxuICAgICAgICAgICAgaXRlbU51bWJlcklkOiBpdGVtTnVtYmVySWQsXHJcbiAgICAgICAgICAgIGxldmVsVHlwZTogbm9kZS5sZXZlbFR5cGVcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRDaGlsZE5vZGVTZWxlY3RPbmUobGlzdENoaWxkcmVuKSB7XHJcbiAgICAgICAgdGhpcy5saXN0Q2hpbGRyZW5TZWxlY3RPbmUgPSBbXTtcclxuICAgICAgICB0aGlzLmxpc3RDaGlsZHJlblNlbGVjdE9uZSA9IGxpc3RDaGlsZHJlbjtcclxuICAgIH1cclxuXHJcbiAgICByZW1vdmVDaGVja2VkTm9kZUxpc3QoKSB7XHJcbiAgICAgICAgY29uc3QgaXRlbTogVHJlZUZsYXROb2RlID0gbnVsbDtcclxuICAgICAgICB0aGlzLmNoZWNrZWROb2RlTGlzdCA9IFtdO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWREYXRhID0gWy4uLltdLCBpdGVtXTtcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGEgPSBbXTtcclxuICAgICAgICB9LCA1MDApO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
@@ -0,0 +1,20 @@
|
|
1
|
+
import { Directive, ElementRef } from '@angular/core';
|
2
|
+
export class QMSDrawerContentDirective {
|
3
|
+
constructor(ele) {
|
4
|
+
this.ele = ele;
|
5
|
+
}
|
6
|
+
ngOnInit() {
|
7
|
+
if (this.ele) {
|
8
|
+
this.ele.nativeElement.classList.add('qms-drawer-content');
|
9
|
+
}
|
10
|
+
}
|
11
|
+
}
|
12
|
+
QMSDrawerContentDirective.decorators = [
|
13
|
+
{ type: Directive, args: [{
|
14
|
+
selector: '[qms-drawer-content]',
|
15
|
+
},] }
|
16
|
+
];
|
17
|
+
QMSDrawerContentDirective.ctorParameters = () => [
|
18
|
+
{ type: ElementRef }
|
19
|
+
];
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhd2VyLWNvbnRlbnQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcW1zLWFuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL3NpZGUtc2hlZXQvZGlyZWN0aXZlcy9kcmF3ZXItY29udGVudC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQVMsTUFBTSxlQUFlLENBQUM7QUFLN0QsTUFBTSxPQUFPLHlCQUF5QjtJQUNsQyxZQUFvQixHQUFlO1FBQWYsUUFBRyxHQUFILEdBQUcsQ0FBWTtJQUNuQyxDQUFDO0lBQ0QsUUFBUTtRQUNKLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNWLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQUMsQ0FBQztTQUM5RDtJQUNMLENBQUM7OztZQVZKLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUsc0JBQXNCO2FBQ25DOzs7WUFKbUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgT25Jbml0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gICAgc2VsZWN0b3I6ICdbcW1zLWRyYXdlci1jb250ZW50XScsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBRTVNEcmF3ZXJDb250ZW50RGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0IHtcclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZWxlOiBFbGVtZW50UmVmKSB7XHJcbiAgICB9XHJcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5lbGUpIHtcclxuICAgICAgICAgICAgdGhpcy5lbGUubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuYWRkKCdxbXMtZHJhd2VyLWNvbnRlbnQnKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIl19
|
@@ -0,0 +1,20 @@
|
|
1
|
+
import { Directive, ElementRef } from '@angular/core';
|
2
|
+
export class QMSDrawerHeaderActionDirective {
|
3
|
+
constructor(ele) {
|
4
|
+
this.ele = ele;
|
5
|
+
}
|
6
|
+
ngOnInit() {
|
7
|
+
if (this.ele) {
|
8
|
+
this.ele.nativeElement.classList.add('qms-drawer-header__action');
|
9
|
+
}
|
10
|
+
}
|
11
|
+
}
|
12
|
+
QMSDrawerHeaderActionDirective.decorators = [
|
13
|
+
{ type: Directive, args: [{
|
14
|
+
selector: '[qms-drawer-header-action]',
|
15
|
+
},] }
|
16
|
+
];
|
17
|
+
QMSDrawerHeaderActionDirective.ctorParameters = () => [
|
18
|
+
{ type: ElementRef }
|
19
|
+
];
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhd2VyLWhlYWRlci1hY3Rpb24uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcW1zLWFuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL3NpZGUtc2hlZXQvZGlyZWN0aXZlcy9kcmF3ZXItaGVhZGVyLWFjdGlvbi5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQVMsTUFBTSxlQUFlLENBQUM7QUFLN0QsTUFBTSxPQUFPLDhCQUE4QjtJQUN2QyxZQUFvQixHQUFlO1FBQWYsUUFBRyxHQUFILEdBQUcsQ0FBWTtJQUNuQyxDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNWLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsMkJBQTJCLENBQUMsQ0FBQztTQUNyRTtJQUNMLENBQUM7OztZQVhKLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUsNEJBQTRCO2FBQ3pDOzs7WUFKbUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgT25Jbml0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gICAgc2VsZWN0b3I6ICdbcW1zLWRyYXdlci1oZWFkZXItYWN0aW9uXScsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBRTVNEcmF3ZXJIZWFkZXJBY3Rpb25EaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBlbGU6IEVsZW1lbnRSZWYpIHtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5lbGUpIHtcclxuICAgICAgICAgICAgdGhpcy5lbGUubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuYWRkKCdxbXMtZHJhd2VyLWhlYWRlcl9fYWN0aW9uJyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
@@ -0,0 +1,20 @@
|
|
1
|
+
import { Directive, ElementRef } from '@angular/core';
|
2
|
+
export class QMSDrawerHeaderDirective {
|
3
|
+
constructor(ele) {
|
4
|
+
this.ele = ele;
|
5
|
+
}
|
6
|
+
ngOnInit() {
|
7
|
+
if (this.ele) {
|
8
|
+
this.ele.nativeElement.classList.add('qms-drawer-header');
|
9
|
+
}
|
10
|
+
}
|
11
|
+
}
|
12
|
+
QMSDrawerHeaderDirective.decorators = [
|
13
|
+
{ type: Directive, args: [{
|
14
|
+
selector: '[qms-drawer-header]',
|
15
|
+
},] }
|
16
|
+
];
|
17
|
+
QMSDrawerHeaderDirective.ctorParameters = () => [
|
18
|
+
{ type: ElementRef }
|
19
|
+
];
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhd2VyLWhlYWRlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9xbXMtYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvc2lkZS1zaGVldC9kaXJlY3RpdmVzL2RyYXdlci1oZWFkZXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFTLE1BQU0sZUFBZSxDQUFDO0FBSzdELE1BQU0sT0FBTyx3QkFBd0I7SUFDakMsWUFBb0IsR0FBZTtRQUFmLFFBQUcsR0FBSCxHQUFHLENBQVk7SUFDbkMsQ0FBQztJQUVELFFBQVE7UUFDSixJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDVixJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLENBQUM7U0FDN0Q7SUFDTCxDQUFDOzs7WUFYSixTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLHFCQUFxQjthQUNsQzs7O1lBSm1CLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIE9uSW5pdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICAgIHNlbGVjdG9yOiAnW3Ftcy1kcmF3ZXItaGVhZGVyXScsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBRTVNEcmF3ZXJIZWFkZXJEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBlbGU6IEVsZW1lbnRSZWYpIHtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5lbGUpIHtcclxuICAgICAgICAgICAgdGhpcy5lbGUubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuYWRkKCdxbXMtZHJhd2VyLWhlYWRlcicpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iXX0=
|
@@ -0,0 +1,20 @@
|
|
1
|
+
import { Directive, ElementRef } from '@angular/core';
|
2
|
+
export class QMSDrawerDirective {
|
3
|
+
constructor(ele) {
|
4
|
+
this.ele = ele;
|
5
|
+
}
|
6
|
+
ngOnInit() {
|
7
|
+
if (this.ele) {
|
8
|
+
this.ele.nativeElement.classList.add('qms-drawer');
|
9
|
+
}
|
10
|
+
}
|
11
|
+
}
|
12
|
+
QMSDrawerDirective.decorators = [
|
13
|
+
{ type: Directive, args: [{
|
14
|
+
selector: '[qms-drawer]',
|
15
|
+
},] }
|
16
|
+
];
|
17
|
+
QMSDrawerDirective.ctorParameters = () => [
|
18
|
+
{ type: ElementRef }
|
19
|
+
];
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhd2VyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Ftcy1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9zaWRlLXNoZWV0L2RpcmVjdGl2ZXMvZHJhd2VyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBUyxNQUFNLGVBQWUsQ0FBQztBQUs3RCxNQUFNLE9BQU8sa0JBQWtCO0lBQzNCLFlBQW9CLEdBQWU7UUFBZixRQUFHLEdBQUgsR0FBRyxDQUFZO0lBQ25DLENBQUM7SUFDRCxRQUFRO1FBQ0osSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ1YsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUN0RDtJQUNMLENBQUM7OztZQVZKLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUsY0FBYzthQUMzQjs7O1lBSm1CLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIE9uSW5pdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICAgIHNlbGVjdG9yOiAnW3Ftcy1kcmF3ZXJdJyxcclxufSlcclxuZXhwb3J0IGNsYXNzIFFNU0RyYXdlckRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsZTogRWxlbWVudFJlZikge1xyXG4gICAgfVxyXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuZWxlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZWxlLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmFkZCgncW1zLWRyYXdlcicpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iXX0=
|
@@ -0,0 +1,2 @@
|
|
1
|
+
export * from './public-api';
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9xbXMtYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvc2lkZS1zaGVldC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vcHVibGljLWFwaSc7Il19
|
@@ -0,0 +1,6 @@
|
|
1
|
+
export * from './directives/drawer-content.directive';
|
2
|
+
export * from './directives/drawer-header-action.directive';
|
3
|
+
export * from './directives/drawer-header.directive';
|
4
|
+
export * from './directives/drawer.directive';
|
5
|
+
export * from './side-sheet.module';
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Ftcy1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9zaWRlLXNoZWV0L3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCxjQUFjLDZDQUE2QyxDQUFDO0FBQzVELGNBQWMsc0NBQXNDLENBQUM7QUFDckQsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLHFCQUFxQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9kaXJlY3RpdmVzL2RyYXdlci1jb250ZW50LmRpcmVjdGl2ZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZGlyZWN0aXZlcy9kcmF3ZXItaGVhZGVyLWFjdGlvbi5kaXJlY3RpdmUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2RpcmVjdGl2ZXMvZHJhd2VyLWhlYWRlci5kaXJlY3RpdmUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2RpcmVjdGl2ZXMvZHJhd2VyLmRpcmVjdGl2ZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vc2lkZS1zaGVldC5tb2R1bGUnO1xyXG4iXX0=
|
@@ -0,0 +1,28 @@
|
|
1
|
+
import { CommonModule } from "@angular/common";
|
2
|
+
import { NgModule } from "@angular/core";
|
3
|
+
import { QMSDrawerContentDirective } from "./directives/drawer-content.directive";
|
4
|
+
import { QMSDrawerHeaderActionDirective } from "./directives/drawer-header-action.directive";
|
5
|
+
import { QMSDrawerHeaderDirective } from "./directives/drawer-header.directive";
|
6
|
+
import { QMSDrawerDirective } from "./directives/drawer.directive";
|
7
|
+
export class QMSSideSheetModule {
|
8
|
+
}
|
9
|
+
QMSSideSheetModule.decorators = [
|
10
|
+
{ type: NgModule, args: [{
|
11
|
+
declarations: [
|
12
|
+
QMSDrawerDirective,
|
13
|
+
QMSDrawerHeaderDirective,
|
14
|
+
QMSDrawerContentDirective,
|
15
|
+
QMSDrawerHeaderActionDirective,
|
16
|
+
],
|
17
|
+
imports: [
|
18
|
+
CommonModule
|
19
|
+
],
|
20
|
+
exports: [
|
21
|
+
QMSDrawerDirective,
|
22
|
+
QMSDrawerHeaderDirective,
|
23
|
+
QMSDrawerContentDirective,
|
24
|
+
QMSDrawerHeaderActionDirective,
|
25
|
+
]
|
26
|
+
},] }
|
27
|
+
];
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZS1zaGVldC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9xbXMtYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvc2lkZS1zaGVldC9zaWRlLXNoZWV0Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNsRixPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUM3RixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNoRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQW1CakUsTUFBTSxPQUFPLGtCQUFrQjs7O1lBakJoQyxRQUFRLFNBQUM7Z0JBQ04sWUFBWSxFQUFFO29CQUNWLGtCQUFrQjtvQkFDbEIsd0JBQXdCO29CQUN4Qix5QkFBeUI7b0JBQ3pCLDhCQUE4QjtpQkFDakM7Z0JBQ0QsT0FBTyxFQUFFO29CQUNMLFlBQVk7aUJBQ2Y7Z0JBQ0QsT0FBTyxFQUFFO29CQUNMLGtCQUFrQjtvQkFDbEIsd0JBQXdCO29CQUN4Qix5QkFBeUI7b0JBQ3pCLDhCQUE4QjtpQkFDakM7YUFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBRTVNEcmF3ZXJDb250ZW50RGlyZWN0aXZlIH0gZnJvbSBcIi4vZGlyZWN0aXZlcy9kcmF3ZXItY29udGVudC5kaXJlY3RpdmVcIjtcclxuaW1wb3J0IHsgUU1TRHJhd2VySGVhZGVyQWN0aW9uRGlyZWN0aXZlIH0gZnJvbSBcIi4vZGlyZWN0aXZlcy9kcmF3ZXItaGVhZGVyLWFjdGlvbi5kaXJlY3RpdmVcIjtcclxuaW1wb3J0IHsgUU1TRHJhd2VySGVhZGVyRGlyZWN0aXZlIH0gZnJvbSBcIi4vZGlyZWN0aXZlcy9kcmF3ZXItaGVhZGVyLmRpcmVjdGl2ZVwiO1xyXG5pbXBvcnQgeyBRTVNEcmF3ZXJEaXJlY3RpdmUgfSBmcm9tIFwiLi9kaXJlY3RpdmVzL2RyYXdlci5kaXJlY3RpdmVcIjtcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgICBkZWNsYXJhdGlvbnM6IFtcclxuICAgICAgICBRTVNEcmF3ZXJEaXJlY3RpdmUsXHJcbiAgICAgICAgUU1TRHJhd2VySGVhZGVyRGlyZWN0aXZlLFxyXG4gICAgICAgIFFNU0RyYXdlckNvbnRlbnREaXJlY3RpdmUsXHJcbiAgICAgICAgUU1TRHJhd2VySGVhZGVyQWN0aW9uRGlyZWN0aXZlLFxyXG4gICAgXSxcclxuICAgIGltcG9ydHM6IFtcclxuICAgICAgICBDb21tb25Nb2R1bGVcclxuICAgIF0sXHJcbiAgICBleHBvcnRzOiBbXHJcbiAgICAgICAgUU1TRHJhd2VyRGlyZWN0aXZlLFxyXG4gICAgICAgIFFNU0RyYXdlckhlYWRlckRpcmVjdGl2ZSxcclxuICAgICAgICBRTVNEcmF3ZXJDb250ZW50RGlyZWN0aXZlLFxyXG4gICAgICAgIFFNU0RyYXdlckhlYWRlckFjdGlvbkRpcmVjdGl2ZSxcclxuICAgIF1cclxuICB9KVxyXG4gIGV4cG9ydCBjbGFzcyBRTVNTaWRlU2hlZXRNb2R1bGUgeyB9Il19
|