@talrace/ngx-noder 0.0.18 → 0.0.20
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/fesm2022/talrace-ngx-noder.mjs +181 -181
- package/fesm2022/talrace-ngx-noder.mjs.map +1 -1
- package/lib/apart-components/editor-toolbar/components/base-toolbar.component.d.ts +1 -1
- package/lib/editor/components/external-element/external.component.d.ts +1 -1
- package/lib/editor/components/shared/abstract/base.component.d.ts +1 -1
- package/lib/editor/components/shared/abstract/destroy.component.d.ts +1 -1
- package/package.json +1 -3
- package/src/lib/apart-components/add-link-dialog/_add-link-dialog.theme.scss +3 -6
- package/src/lib/apart-components/add-link-mobile/_add-link-mobile.theme.scss +4 -7
- package/src/lib/apart-components/confirm-dialog/_theme.scss +6 -9
- package/src/lib/apart-components/editor-title/_editor-title.theme.scss +6 -9
- package/src/lib/apart-components/editor-title-mobile/_editor-title-mobile.theme.scss +9 -12
- package/src/lib/apart-components/editor-toolbar/_editor-toolbar.theme.scss +5 -8
- package/src/lib/apart-components/editor-toolbar/components/buttons/color-picker/_color-picker.theme.scss +1 -3
- package/src/lib/apart-components/editor-toolbar/components/buttons/font/_font.theme.scss +1 -3
- package/src/lib/apart-components/editor-toolbar/components/buttons/font-size/_font-size.theme.scss +2 -5
- package/src/lib/apart-components/editor-toolbar/components/buttons/font-style/_font-style.theme.scss +3 -6
- package/src/lib/apart-components/editor-toolbar/components/buttons/format/_format.theme.scss +3 -6
- package/src/lib/apart-components/editor-toolbar/components/buttons/numbering/_numbering.theme.scss +15 -18
- package/src/lib/apart-components/editor-toolbar/components/buttons/undo-redo/_undo-redo.theme.scss +2 -4
- package/src/lib/apart-components/editor-toolbar/components/menu-dropdowns/_menu-dropdowns.theme.scss +5 -8
- package/src/lib/apart-components/editor-toolbar/components/menu-dropdowns-mobile/_menu-dropdowns-mobile.theme.scss +6 -9
- package/src/lib/apart-components/editor-toolbar/components/toolbar-actions/_toolbar-actions.theme.scss +3 -6
- package/src/lib/apart-components/insert-table/_insert-table.theme.scss +6 -9
- package/src/lib/apart-components/insert-table-mobile/_insert-table-mobile.theme.scss +12 -15
- package/src/lib/apart-components/text-format-mobile/_text-format-mobile.theme.scss +22 -25
- package/src/lib/editor/components/_editor.theme.scss +25 -28
- package/esm2022/lib/apart-components/add-link-dialog/add-link-dialog.component.mjs +0 -73
- package/esm2022/lib/apart-components/add-link-dialog/validation.helper.mjs +0 -7
- package/esm2022/lib/apart-components/add-link-mobile/add-link-mobile.component.mjs +0 -49
- package/esm2022/lib/apart-components/confirm-dialog/confirm-dialog.component.mjs +0 -34
- package/esm2022/lib/apart-components/editor-search/editor-search-dialog.component.mjs +0 -75
- package/esm2022/lib/apart-components/editor-title/editor-title.component.mjs +0 -95
- package/esm2022/lib/apart-components/editor-title-mobile/editor-title-mobile.component.mjs +0 -24
- package/esm2022/lib/apart-components/editor-toolbar/components/base-toolbar.component.mjs +0 -117
- package/esm2022/lib/apart-components/editor-toolbar/components/buttons/color-picker/color-picker.component.mjs +0 -37
- package/esm2022/lib/apart-components/editor-toolbar/components/buttons/font/font.component.mjs +0 -49
- package/esm2022/lib/apart-components/editor-toolbar/components/buttons/font-size/font-size.component.mjs +0 -90
- package/esm2022/lib/apart-components/editor-toolbar/components/buttons/font-style/font-style.component.mjs +0 -81
- package/esm2022/lib/apart-components/editor-toolbar/components/buttons/format/format.component.mjs +0 -28
- package/esm2022/lib/apart-components/editor-toolbar/components/buttons/numbering/numbering.component.mjs +0 -53
- package/esm2022/lib/apart-components/editor-toolbar/components/buttons/print/print.component.mjs +0 -18
- package/esm2022/lib/apart-components/editor-toolbar/components/buttons/undo-redo/undo-redo.component.mjs +0 -27
- package/esm2022/lib/apart-components/editor-toolbar/components/buttons/zoom/zoom.component.mjs +0 -71
- package/esm2022/lib/apart-components/editor-toolbar/components/menu-dropdowns/menu-dropdowns.component.mjs +0 -107
- package/esm2022/lib/apart-components/editor-toolbar/components/menu-dropdowns-mobile/menu-dropdowns-mobile.component.mjs +0 -25
- package/esm2022/lib/apart-components/editor-toolbar/components/toolbar-actions/toolbar-actions.component.mjs +0 -65
- package/esm2022/lib/apart-components/editor-toolbar/editor-mobile-toolbar/editor-mobile-toolbar.component.mjs +0 -86
- package/esm2022/lib/apart-components/editor-toolbar/editor-toolbar/editor-toolbar.component.mjs +0 -90
- package/esm2022/lib/apart-components/editor-toolbar/editor-toolbar.module.mjs +0 -122
- package/esm2022/lib/apart-components/editor-toolbar/shared/constants/editor-toolbar-modes.const.mjs +0 -8
- package/esm2022/lib/apart-components/editor-toolbar/shared/constants/numbering-templates.const.mjs +0 -1148
- package/esm2022/lib/apart-components/editor-toolbar/shared/constants/svg-icons.const.mjs +0 -157
- package/esm2022/lib/apart-components/editor-toolbar/shared/enums/alignment.enum.mjs +0 -8
- package/esm2022/lib/apart-components/editor-toolbar/shared/enums/editor-toolbar-mode.enum.mjs +0 -11
- package/esm2022/lib/apart-components/editor-toolbar/shared/enums/numbering-template-type.enum.mjs +0 -16
- package/esm2022/lib/apart-components/editor-toolbar/shared/enums/numbering-type.enum.mjs +0 -6
- package/esm2022/lib/apart-components/editor-toolbar/shared/services/custom-icon.service.mjs +0 -34
- package/esm2022/lib/apart-components/editor-toolbar/shared/services/editor-toolbar.service.mjs +0 -26
- package/esm2022/lib/apart-components/editor-toolbar/shared/services/toolbar-core.service.mjs +0 -60
- package/esm2022/lib/apart-components/editor-toolbar/shared/toolbar-styles.helper.mjs +0 -48
- package/esm2022/lib/apart-components/insert-table/insert-table.component.mjs +0 -54
- package/esm2022/lib/apart-components/insert-table-mobile/insert-table-mobile.component.mjs +0 -86
- package/esm2022/lib/apart-components/text-format-mobile/text-format-mobile.component.mjs +0 -134
- package/esm2022/lib/editor/components/edges/edge-element.model.mjs +0 -38
- package/esm2022/lib/editor/components/edges/edge-type.enum.mjs +0 -6
- package/esm2022/lib/editor/components/edges/edge.component.mjs +0 -141
- package/esm2022/lib/editor/components/edges/edges.mjs +0 -120
- package/esm2022/lib/editor/components/edges/page-type.enum.mjs +0 -7
- package/esm2022/lib/editor/components/editor.component.mjs +0 -112
- package/esm2022/lib/editor/components/external-element/external-element.service.mjs +0 -6
- package/esm2022/lib/editor/components/external-element/external-elements.const.mjs +0 -4
- package/esm2022/lib/editor/components/external-element/external-sidenav.interface.mjs +0 -2
- package/esm2022/lib/editor/components/external-element/external.component.mjs +0 -41
- package/esm2022/lib/editor/components/external-element/models/element-data.model.mjs +0 -9
- package/esm2022/lib/editor/components/external-element/models/external-element.model.mjs +0 -11
- package/esm2022/lib/editor/components/external-element/models/external-sidenav.model.mjs +0 -15
- package/esm2022/lib/editor/components/image/components/image.component.mjs +0 -88
- package/esm2022/lib/editor/components/image/image-api.service.mjs +0 -36
- package/esm2022/lib/editor/components/image/input-handler/image-input.handler.mjs +0 -46
- package/esm2022/lib/editor/components/image/resizer/coordinate.mjs +0 -2
- package/esm2022/lib/editor/components/image/resizer/direction-wrapper.mjs +0 -19
- package/esm2022/lib/editor/components/image/resizer/direction.enum.mjs +0 -12
- package/esm2022/lib/editor/components/image/resizer/resizer.component.mjs +0 -106
- package/esm2022/lib/editor/components/image/resizer/size-delta.mjs +0 -2
- package/esm2022/lib/editor/components/image/resizer/size-wrapper.mjs +0 -52
- package/esm2022/lib/editor/components/image/size.mjs +0 -2
- package/esm2022/lib/editor/components/shared/abstract/base.component.mjs +0 -60
- package/esm2022/lib/editor/components/shared/abstract/destroy.component.mjs +0 -18
- package/esm2022/lib/editor/components/shared/custom-component.hepler.mjs +0 -43
- package/esm2022/lib/editor/components/shared/custom-components.interface.mjs +0 -2
- package/esm2022/lib/editor/components/shared/custom-content-markers.const.mjs +0 -3
- package/esm2022/lib/editor/components/shared/custom-content.mjs +0 -2
- package/esm2022/lib/editor/components/shared/services/component.service.mjs +0 -52
- package/esm2022/lib/editor/components/shared/services/custom-content.service.mjs +0 -123
- package/esm2022/lib/editor/components/shared/services/overlay.service.mjs +0 -55
- package/esm2022/lib/editor/components/tab/tab.component.mjs +0 -44
- package/esm2022/lib/editor/components/tab/tab.helper.mjs +0 -6
- package/esm2022/lib/editor/components/table/cell-resizer/cell-resizer.mjs +0 -118
- package/esm2022/lib/editor/components/table/components/table-cell.component.mjs +0 -99
- package/esm2022/lib/editor/components/table/components/table.component.mjs +0 -412
- package/esm2022/lib/editor/components/table/enums/hrule.enum.mjs +0 -7
- package/esm2022/lib/editor/components/table/enums/reisizer-side.enum.mjs +0 -8
- package/esm2022/lib/editor/components/table/enums/vertical-merge.enum.mjs +0 -6
- package/esm2022/lib/editor/components/table/models/cell-data.model.mjs +0 -17
- package/esm2022/lib/editor/components/table/models/cell-resizer-parameters.model.mjs +0 -9
- package/esm2022/lib/editor/components/table/models/row-data.model.mjs +0 -8
- package/esm2022/lib/editor/components/table/models/selection-range.model.mjs +0 -7
- package/esm2022/lib/editor/components/table/overlay-menu/overlay-menu.component.mjs +0 -84
- package/esm2022/lib/editor/components/table/selection/table-selection.mjs +0 -383
- package/esm2022/lib/editor/content/constants/display-values.const.mjs +0 -8
- package/esm2022/lib/editor/content/constants/document-info.const.mjs +0 -13
- package/esm2022/lib/editor/content/constants/editor.const.mjs +0 -70
- package/esm2022/lib/editor/content/contents.interface.mjs +0 -2
- package/esm2022/lib/editor/content/display-data/display-data.mjs +0 -839
- package/esm2022/lib/editor/content/display-data/display-token.model.mjs +0 -12
- package/esm2022/lib/editor/content/display-data/format-ext.model.mjs +0 -10
- package/esm2022/lib/editor/content/display-data/general-properties.model.mjs +0 -11
- package/esm2022/lib/editor/content/display-data/indent.model.mjs +0 -9
- package/esm2022/lib/editor/content/display-data/line-info.model.mjs +0 -9
- package/esm2022/lib/editor/content/display-data/lines.mjs +0 -96
- package/esm2022/lib/editor/content/display-data/models/paragraph-info.model.mjs +0 -8
- package/esm2022/lib/editor/content/display-data/paragraph-info.interface.mjs +0 -2
- package/esm2022/lib/editor/content/display-data/paragraph.mjs +0 -56
- package/esm2022/lib/editor/content/display-data/text-line-info.mjs +0 -35
- package/esm2022/lib/editor/content/display-data/toolbar-styles.interface.mjs +0 -2
- package/esm2022/lib/editor/content/helpers/content-style.helper.mjs +0 -78
- package/esm2022/lib/editor/content/helpers/display-token.helper.mjs +0 -62
- package/esm2022/lib/editor/content/helpers/format.helper.mjs +0 -23
- package/esm2022/lib/editor/content/helpers/indexed-element.helper.mjs +0 -6
- package/esm2022/lib/editor/content/helpers/link.helper.mjs +0 -42
- package/esm2022/lib/editor/content/helpers/scaling.helper.mjs +0 -9
- package/esm2022/lib/editor/content/margin.model.mjs +0 -16
- package/esm2022/lib/editor/content/page-vertical-data.model.mjs +0 -9
- package/esm2022/lib/editor/content/vertical-alignment.enum.mjs +0 -11
- package/esm2022/lib/editor/core/event-emitting.mjs +0 -56
- package/esm2022/lib/editor/display/cell.interface.mjs +0 -2
- package/esm2022/lib/editor/display/event.helper.mjs +0 -18
- package/esm2022/lib/editor/display/layers/cursor.layer.mjs +0 -102
- package/esm2022/lib/editor/display/layers/layer.config.mjs +0 -2
- package/esm2022/lib/editor/display/layers/pages.layer.mjs +0 -109
- package/esm2022/lib/editor/display/layers/print.pages.layer.mjs +0 -7
- package/esm2022/lib/editor/display/layers/print.text.layer.mjs +0 -7
- package/esm2022/lib/editor/display/layers/selection.layer.mjs +0 -119
- package/esm2022/lib/editor/display/layers/text.layer.mjs +0 -226
- package/esm2022/lib/editor/display/print/print.helper.mjs +0 -40
- package/esm2022/lib/editor/display/print/print.renderer.mjs +0 -67
- package/esm2022/lib/editor/display/print/print.rendering.helper.mjs +0 -7
- package/esm2022/lib/editor/display/render-changes.interface.mjs +0 -2
- package/esm2022/lib/editor/display/render-changes.model.mjs +0 -25
- package/esm2022/lib/editor/display/renderer.mjs +0 -204
- package/esm2022/lib/editor/display/rendering.helper.mjs +0 -185
- package/esm2022/lib/editor/display/renderloop.mjs +0 -26
- package/esm2022/lib/editor/display/virtual.renderer.mjs +0 -284
- package/esm2022/lib/editor/display/visible-range.interface.mjs +0 -2
- package/esm2022/lib/editor/editor.module.mjs +0 -91
- package/esm2022/lib/editor/execution/distance.model.mjs +0 -10
- package/esm2022/lib/editor/execution/edit.session.mjs +0 -602
- package/esm2022/lib/editor/execution/editor.mjs +0 -1368
- package/esm2022/lib/editor/execution/helpers/dom.helper.mjs +0 -42
- package/esm2022/lib/editor/execution/helpers/format-style.helper.mjs +0 -73
- package/esm2022/lib/editor/execution/helpers/image.helpet.mjs +0 -12
- package/esm2022/lib/editor/execution/helpers/page.helper.mjs +0 -12
- package/esm2022/lib/editor/execution/helpers/paragraph-style.helper.mjs +0 -41
- package/esm2022/lib/editor/execution/helpers/paragraph.helper.mjs +0 -177
- package/esm2022/lib/editor/execution/regulator.service.mjs +0 -212
- package/esm2022/lib/editor/execution/targeting/cell-session-source.model.mjs +0 -18
- package/esm2022/lib/editor/execution/targeting/edge-session-source.model.mjs +0 -14
- package/esm2022/lib/editor/execution/targeting/main-session-source.model.mjs +0 -8
- package/esm2022/lib/editor/execution/targeting/session-source.model.mjs +0 -3
- package/esm2022/lib/editor/execution/targeting/session.model.mjs +0 -10
- package/esm2022/lib/editor/gadgets/font-metrics/editor-version.const.mjs +0 -2
- package/esm2022/lib/editor/gadgets/font-metrics/font-metric-size.interface.mjs +0 -2
- package/esm2022/lib/editor/gadgets/font-metrics/font-metrics.helper.mjs +0 -88
- package/esm2022/lib/editor/gadgets/history/operation-history.mjs +0 -208
- package/esm2022/lib/editor/gadgets/history/operation.type.mjs +0 -2
- package/esm2022/lib/editor/gadgets/history/operations-history-info.model.mjs +0 -7
- package/esm2022/lib/editor/gadgets/numbering/numbering-data.model.mjs +0 -9
- package/esm2022/lib/editor/gadgets/numbering/numbering-marker-type.enum.mjs +0 -12
- package/esm2022/lib/editor/gadgets/numbering/numbering-paragraph-style.model.mjs +0 -13
- package/esm2022/lib/editor/gadgets/numbering/numbering.helper.mjs +0 -149
- package/esm2022/lib/editor/gadgets/page-break/break-types.enum.mjs +0 -7
- package/esm2022/lib/editor/gadgets/page-break/break.helper.mjs +0 -18
- package/esm2022/lib/editor/gadgets/scrollbar.mjs +0 -86
- package/esm2022/lib/editor/gadgets/search/replace.interface.mjs +0 -2
- package/esm2022/lib/editor/gadgets/search/search-iteration.interface.mjs +0 -2
- package/esm2022/lib/editor/gadgets/search/search.mjs +0 -231
- package/esm2022/lib/editor/gadgets/unicode/unicode-chars.const.mjs +0 -5
- package/esm2022/lib/editor/gadgets/unicode/unicode.helper.mjs +0 -20
- package/esm2022/lib/editor/interaction/base.handler.mjs +0 -19
- package/esm2022/lib/editor/interaction/document.handler.mjs +0 -27
- package/esm2022/lib/editor/interaction/editor.service.mjs +0 -386
- package/esm2022/lib/editor/interaction/input.handler.mjs +0 -152
- package/esm2022/lib/editor/interaction/mode.enum.mjs +0 -7
- package/esm2022/lib/editor/interaction/mouse-button.enum.mjs +0 -7
- package/esm2022/lib/editor/interaction/mouse.handler.mjs +0 -50
- package/esm2022/lib/editor/interaction/text-input.mjs +0 -53
- package/esm2022/lib/editor/operations/commands.service.mjs +0 -20
- package/esm2022/lib/editor/operations/enums/command-type.enum.mjs +0 -32
- package/esm2022/lib/editor/operations/enums/target-type.enum.mjs +0 -7
- package/esm2022/lib/editor/operations/helpers/break-operations.helper.mjs +0 -9
- package/esm2022/lib/editor/operations/helpers/content-operations.helper.mjs +0 -15
- package/esm2022/lib/editor/operations/helpers/format-operations.helper.mjs +0 -85
- package/esm2022/lib/editor/operations/helpers/image-operations.helper.mjs +0 -19
- package/esm2022/lib/editor/operations/helpers/indexed-element-operations.helper.mjs +0 -43
- package/esm2022/lib/editor/operations/helpers/link-operations.helper.mjs +0 -136
- package/esm2022/lib/editor/operations/helpers/numbering-operations.helper.mjs +0 -55
- package/esm2022/lib/editor/operations/helpers/paragraph-operations.helper.mjs +0 -114
- package/esm2022/lib/editor/operations/helpers/tab-operations.helper.mjs +0 -16
- package/esm2022/lib/editor/operations/helpers/table-operations.helper.mjs +0 -374
- package/esm2022/lib/editor/operations/operations-helper.helper.mjs +0 -438
- package/esm2022/lib/editor/operations/save-commands.helper.mjs +0 -128
- package/esm2022/lib/editor/operations/target-operations.helper.mjs +0 -23
- package/esm2022/lib/editor/positioning/alignments.const.mjs +0 -8
- package/esm2022/lib/editor/positioning/content.helper.mjs +0 -45
- package/esm2022/lib/editor/positioning/cursor-paragraph.mjs +0 -13
- package/esm2022/lib/editor/positioning/cursor-position.interface.mjs +0 -2
- package/esm2022/lib/editor/positioning/insert-index.interface.mjs +0 -2
- package/esm2022/lib/editor/positioning/line-width.helper.mjs +0 -13
- package/esm2022/lib/editor/positioning/position.helper.mjs +0 -210
- package/esm2022/lib/editor/positioning/range.mjs +0 -94
- package/esm2022/lib/editor/positioning/selection.mjs +0 -351
- package/esm2022/lib/editor/revision.helper.mjs +0 -94
- package/esm2022/lib/models/generated/add-numbering.model.mjs +0 -8
- package/esm2022/lib/models/generated/apply-element-style.model.mjs +0 -8
- package/esm2022/lib/models/generated/apply-image-style.model.mjs +0 -8
- package/esm2022/lib/models/generated/apply-paragraph-style.model.mjs +0 -12
- package/esm2022/lib/models/generated/apply-text-style.model.mjs +0 -12
- package/esm2022/lib/models/generated/borders-style.model.mjs +0 -8
- package/esm2022/lib/models/generated/break.model.mjs +0 -8
- package/esm2022/lib/models/generated/cell.model.mjs +0 -12
- package/esm2022/lib/models/generated/column-section.model.mjs +0 -8
- package/esm2022/lib/models/generated/column.model.mjs +0 -8
- package/esm2022/lib/models/generated/command.model.mjs +0 -120
- package/esm2022/lib/models/generated/delete.model.mjs +0 -8
- package/esm2022/lib/models/generated/document-name.model.mjs +0 -8
- package/esm2022/lib/models/generated/document.model.mjs +0 -8
- package/esm2022/lib/models/generated/docx.model.mjs +0 -12
- package/esm2022/lib/models/generated/edge-target.model.mjs +0 -8
- package/esm2022/lib/models/generated/edge.model.mjs +0 -8
- package/esm2022/lib/models/generated/element.model.mjs +0 -8
- package/esm2022/lib/models/generated/file-source.model.mjs +0 -8
- package/esm2022/lib/models/generated/format.model.mjs +0 -12
- package/esm2022/lib/models/generated/heading.model.mjs +0 -16
- package/esm2022/lib/models/generated/image-data.model.mjs +0 -8
- package/esm2022/lib/models/generated/image.model.mjs +0 -12
- package/esm2022/lib/models/generated/insert-break.model.mjs +0 -8
- package/esm2022/lib/models/generated/insert-element.model.mjs +0 -12
- package/esm2022/lib/models/generated/insert-image.model.mjs +0 -12
- package/esm2022/lib/models/generated/insert-link.model.mjs +0 -12
- package/esm2022/lib/models/generated/insert-paragraph.model.mjs +0 -20
- package/esm2022/lib/models/generated/insert-styled-text.model.mjs +0 -12
- package/esm2022/lib/models/generated/insert-tab.model.mjs +0 -8
- package/esm2022/lib/models/generated/insert-table-columns.model.mjs +0 -8
- package/esm2022/lib/models/generated/insert-table-rows.model.mjs +0 -8
- package/esm2022/lib/models/generated/insert-table.model.mjs +0 -8
- package/esm2022/lib/models/generated/insert-text.model.mjs +0 -8
- package/esm2022/lib/models/generated/last-document-revision.model.mjs +0 -12
- package/esm2022/lib/models/generated/link-data.model.mjs +0 -8
- package/esm2022/lib/models/generated/link.model.mjs +0 -8
- package/esm2022/lib/models/generated/margins.model.mjs +0 -8
- package/esm2022/lib/models/generated/numbering-level.model.mjs +0 -12
- package/esm2022/lib/models/generated/numbering.model.mjs +0 -8
- package/esm2022/lib/models/generated/operation.model.mjs +0 -12
- package/esm2022/lib/models/generated/page-numbers.model.mjs +0 -8
- package/esm2022/lib/models/generated/paragraph-style.model.mjs +0 -8
- package/esm2022/lib/models/generated/paragraph.model.mjs +0 -12
- package/esm2022/lib/models/generated/remove-numberings.model.mjs +0 -8
- package/esm2022/lib/models/generated/remove-table-columns.model.mjs +0 -8
- package/esm2022/lib/models/generated/remove-table-rows.model.mjs +0 -8
- package/esm2022/lib/models/generated/replace-by-text.model.mjs +0 -8
- package/esm2022/lib/models/generated/replace.model.mjs +0 -44
- package/esm2022/lib/models/generated/resize-table-columns.model.mjs +0 -8
- package/esm2022/lib/models/generated/restore-numberings.model.mjs +0 -8
- package/esm2022/lib/models/generated/restore-paragraph-styles.model.mjs +0 -8
- package/esm2022/lib/models/generated/restore-table.model.mjs +0 -12
- package/esm2022/lib/models/generated/restore-text-styles.model.mjs +0 -8
- package/esm2022/lib/models/generated/restore.model.mjs +0 -8
- package/esm2022/lib/models/generated/revision.model.mjs +0 -12
- package/esm2022/lib/models/generated/row.model.mjs +0 -8
- package/esm2022/lib/models/generated/tab.model.mjs +0 -8
- package/esm2022/lib/models/generated/table-cell.model.mjs +0 -8
- package/esm2022/lib/models/generated/table.model.mjs +0 -12
- package/esm2022/lib/models/generated/target.model.mjs +0 -16
- package/esm2022/lib/models/generated/text-style.model.mjs +0 -8
- package/esm2022/lib/translate/noder-translate.loader.mjs +0 -22
- package/esm2022/public-api.mjs +0 -54
- package/esm2022/talrace-ngx-noder.mjs +0 -5
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
|
|
2
|
-
import { filter, take } from 'rxjs';
|
|
3
|
-
import { Alignment } from '../../shared/enums/alignment.enum';
|
|
4
|
-
import { BaseToolbarComponent } from '../base-toolbar.component';
|
|
5
|
-
import { NumberingTemplates } from '../../shared/constants/numbering-templates.const';
|
|
6
|
-
import { NumberingTemplateType } from '../../shared/enums/numbering-template-type.enum';
|
|
7
|
-
import { ParagraphStyleModel } from '../../../../models/generated/paragraph-style.model';
|
|
8
|
-
import * as i0 from "@angular/core";
|
|
9
|
-
import * as i1 from "../../shared/services/custom-icon.service";
|
|
10
|
-
import * as i2 from "../../../../editor/interaction/editor.service";
|
|
11
|
-
import * as i3 from "@angular/common";
|
|
12
|
-
import * as i4 from "../../../insert-table/insert-table.component";
|
|
13
|
-
import * as i5 from "@angular/material/button";
|
|
14
|
-
import * as i6 from "@angular/material/icon";
|
|
15
|
-
import * as i7 from "@angular/material/menu";
|
|
16
|
-
import * as i8 from "@ngx-translate/core";
|
|
17
|
-
export class MenuDropdownsComponent extends BaseToolbarComponent {
|
|
18
|
-
constructor(customIconService, injector, cdr, editorService) {
|
|
19
|
-
super(customIconService, injector, cdr, editorService);
|
|
20
|
-
this.cdr = cdr;
|
|
21
|
-
this.editorService = editorService;
|
|
22
|
-
this.showFile = true;
|
|
23
|
-
this.showEdit = true;
|
|
24
|
-
this.showInsert = true;
|
|
25
|
-
this.showLayout = true;
|
|
26
|
-
this.showFormat = true;
|
|
27
|
-
this.openFileFromDisk = new EventEmitter();
|
|
28
|
-
this.saveAs = new EventEmitter();
|
|
29
|
-
this.insertPageBreak = new EventEmitter();
|
|
30
|
-
this.createDocument = new EventEmitter();
|
|
31
|
-
this.rename = new EventEmitter();
|
|
32
|
-
this.delete = new EventEmitter();
|
|
33
|
-
this.openEditMenu = new EventEmitter();
|
|
34
|
-
this.cutSelected = new EventEmitter();
|
|
35
|
-
this.copySelected = new EventEmitter();
|
|
36
|
-
this.pasteClipboardData = new EventEmitter();
|
|
37
|
-
this.selectAll = new EventEmitter();
|
|
38
|
-
this.removeSelected = new EventEmitter();
|
|
39
|
-
this.showInsertTableMenu = false;
|
|
40
|
-
this.numberingTemplateTypes = NumberingTemplateType;
|
|
41
|
-
this.alignments = Alignment;
|
|
42
|
-
}
|
|
43
|
-
onSelectFormat(alignment) {
|
|
44
|
-
this.changeParagraphStyle.emit(new ParagraphStyleModel({ alignment }));
|
|
45
|
-
}
|
|
46
|
-
onSelectNumberingTemplate(numberingTemplateType) {
|
|
47
|
-
if (this.numberingTemplateType === numberingTemplateType) {
|
|
48
|
-
this.removeNumberings.emit();
|
|
49
|
-
}
|
|
50
|
-
else {
|
|
51
|
-
const templateLevels = NumberingTemplates.find(x => x.templateType === numberingTemplateType).levels;
|
|
52
|
-
this.setNumberingTemplateType.emit(templateLevels);
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
onTableInsertMenuClosed() {
|
|
56
|
-
this.tableInsertMenu._animationDone
|
|
57
|
-
.pipe(filter(x => x.toState === 'void'), take(1))
|
|
58
|
-
.subscribe(() => {
|
|
59
|
-
this.showInsertTableMenu = false;
|
|
60
|
-
this.cdr.markForCheck();
|
|
61
|
-
});
|
|
62
|
-
}
|
|
63
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MenuDropdownsComponent, deps: [{ token: i1.CustomIconService }, { token: i0.Injector }, { token: i0.ChangeDetectorRef }, { token: i2.EditorService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
64
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MenuDropdownsComponent, selector: "app-nod-menu-dropdowns", inputs: { showFile: "showFile", showEdit: "showEdit", showInsert: "showInsert", showLayout: "showLayout", showFormat: "showFormat" }, outputs: { openFileFromDisk: "openFileFromDisk", saveAs: "saveAs", insertPageBreak: "insertPageBreak", createDocument: "createDocument", rename: "rename", delete: "delete", openEditMenu: "openEditMenu", cutSelected: "cutSelected", copySelected: "copySelected", pasteClipboardData: "pasteClipboardData", selectAll: "selectAll", removeSelected: "removeSelected" }, viewQueries: [{ propertyName: "tableInsertMenu", first: true, predicate: ["tableInsert"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-container\n *ngIf=\"{\n clipboardData: editorService.clipboardData$ | async,\n hasSelection: editorService.hasSelection$ | async,\n isViewOnly: editorService.isViewOnly$ | async\n } as data\">\n <button\n *ngIf=\"showFile\"\n id=\"menu-dropdowns-menu-file\"\n mat-button\n [matMenuTriggerFor]=\"fileMenu\"\n [matMenuTriggerRestoreFocus]=\"false\">\n {{ 'NODER.LABEL.FILE' | translate }}\n </button>\n <mat-menu\n #fileMenu=\"matMenu\"\n class=\"noder-modal\">\n <button\n *ngIf=\"createDocument.observed && !data.isViewOnly\"\n id=\"menu-dropdowns-menu-item-new\"\n mat-menu-item\n (click)=\"createDocument.emit()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-add-new\"></mat-icon>\n <span class=\"menu-item-text\">{{ 'NODER.LABEL.NEW' | translate }}</span>\n </div>\n </button>\n <button\n *ngIf=\"openFileFromDisk.observed && !data.isViewOnly\"\n id=\"menu-dropdowns-menu-item-open-from\"\n mat-menu-item\n (click)=\"openFileFromDisk.emit()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-open-from\"></mat-icon>\n <span class=\"menu-item-text\">{{ 'NODER.LABEL.OPEN_FROM' | translate }}</span>\n <span class=\"hot-keys\">Ctrl+O</span>\n </div>\n </button>\n <button\n *ngIf=\"saveAs.observed\"\n id=\"menu-dropdowns-menu-item-save-as\"\n mat-menu-item\n (click)=\"saveAs.emit()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-save\"></mat-icon>\n <span class=\"menu-item-text\">{{ 'NODER.LABEL.SAVE_AS' | translate }}</span>\n </div>\n </button>\n <button\n *ngIf=\"rename.observed\"\n id=\"menu-dropdowns-menu-item-rename\"\n mat-menu-item\n (click)=\"rename.emit()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-rename\"></mat-icon>\n <span class=\"menu-item-text\">{{ 'NODER.LABEL.RENAME' | translate }}</span>\n </div>\n </button>\n <button\n *ngIf=\"print.observed\"\n id=\"menu-dropdowns-menu-item-print\"\n mat-menu-item\n (click)=\"print.emit()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-print\"></mat-icon>\n <span class=\"menu-item-text\">{{ 'NODER.LABEL.PRINT' | translate }}</span>\n <span class=\"hot-keys\">Ctrl+P</span>\n </div>\n </button>\n <button\n *ngIf=\"delete.observed\"\n id=\"menu-dropdowns-menu-item-delete\"\n mat-menu-item\n (click)=\"delete.emit()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-delete\"></mat-icon>\n <span class=\"menu-item-text\">{{ 'NODER.LABEL.DELETE' | translate }}</span>\n </div>\n </button>\n </mat-menu>\n <button\n *ngIf=\"showEdit\"\n id=\"menu-dropdowns-menu-edit\"\n mat-button\n [matMenuTriggerFor]=\"editMenu\"\n [matMenuTriggerRestoreFocus]=\"false\"\n (menuOpened)=\"openEditMenu.emit()\">\n {{ 'NODER.LABEL.EDIT' | translate }}\n </button>\n <mat-menu\n #editMenu=\"matMenu\"\n class=\"noder-modal\">\n <button\n *ngIf=\"undo.observed\"\n id=\"menu-dropdowns-menu-item-undo\"\n mat-menu-item\n [disabled]=\"!canUndo\"\n (click)=\"undo.emit()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-undo\"></mat-icon>\n <span class=\"menu-item-text\">{{ 'NODER.LABEL.UNDO' | translate }}</span>\n <span class=\"hot-keys\">Ctrl+Z</span>\n </div>\n </button>\n <button\n *ngIf=\"redo.observed\"\n id=\"menu-dropdowns-menu-item-redo\"\n mat-menu-item\n [disabled]=\"!canRedo\"\n (click)=\"redo.emit()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-redo\"></mat-icon>\n <span class=\"menu-item-text\">{{ 'NODER.LABEL.REDO' | translate }}</span>\n <span class=\"hot-keys\">Ctrl+Y</span>\n </div>\n </button>\n <hr class=\"noder-divider\" />\n <button\n *ngIf=\"cutSelected.observed\"\n id=\"menu-dropdowns-menu-item-cut\"\n mat-menu-item\n [disabled]=\"!data.hasSelection\"\n (click)=\"cutSelected.emit()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-content-cut\"></mat-icon>\n <span class=\"menu-item-text\">{{ 'NODER.LABEL.CUT' | translate }}</span>\n <span class=\"hot-keys\">Ctrl+X</span>\n </div>\n </button>\n <button\n *ngIf=\"copySelected.observed\"\n id=\"menu-dropdowns-menu-item-copy\"\n mat-menu-item\n [disabled]=\"!data.hasSelection\"\n (click)=\"copySelected.emit()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-file-copy\"></mat-icon>\n <span class=\"menu-item-text\">{{ 'NODER.LABEL.COPY' | translate }}</span>\n <span class=\"hot-keys\">Ctrl+C</span>\n </div>\n </button>\n <button\n *ngIf=\"pasteClipboardData.observed\"\n id=\"menu-dropdowns-menu-item-paste\"\n mat-menu-item\n [disabled]=\"!data.clipboardData?.length\"\n (click)=\"pasteClipboardData.emit()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-content-paste\"></mat-icon>\n <span class=\"menu-item-text\">{{ 'NODER.LABEL.PASTE' | translate }}</span>\n <span class=\"hot-keys\">Ctrl+V</span>\n </div>\n </button>\n <hr class=\"noder-divider\" />\n <button\n *ngIf=\"selectAll.observed\"\n id=\"menu-dropdowns-menu-item-select-all\"\n mat-menu-item\n (click)=\"selectAll.emit()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-select-all\"></mat-icon>\n <span class=\"menu-item-text\">{{ 'NODER.LABEL.SELECT_ALL' | translate }}</span>\n <span class=\"hot-keys\">Ctrl+A</span>\n </div>\n </button>\n <button\n *ngIf=\"removeSelected.observed\"\n id=\"menu-dropdowns-menu-item-delete-text\"\n mat-menu-item\n [disabled]=\"!data.hasSelection\"\n (click)=\"removeSelected.emit()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-delete\"></mat-icon>\n <span class=\"menu-item-text\">{{ 'NODER.LABEL.DELETE' | translate }}</span>\n </div>\n </button>\n </mat-menu>\n <button\n *ngIf=\"showInsert && !data.isViewOnly\"\n #insertMenuTrigger=\"matMenuTrigger\"\n id=\"menu-dropdowns-menu-insert\"\n mat-button\n [matMenuTriggerFor]=\"insertMenu\"\n [matMenuTriggerRestoreFocus]=\"false\">\n {{ 'NODER.LABEL.INSERT' | translate }}\n </button>\n <mat-menu\n #insertMenu=\"matMenu\"\n class=\"noder-modal\">\n <button\n *ngIf=\"insertImage.observed\"\n id=\"menu-dropdowns-menu-item-image\"\n mat-menu-item\n (click)=\"insertImage.emit()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-image\"></mat-icon>\n <span class=\"menu-item-text\">{{ 'NODER.LABEL.IMAGE' | translate }}</span>\n </div>\n </button>\n <button\n id=\"menu-dropdowns-menu-item-table\"\n mat-menu-item\n [matMenuTriggerFor]=\"tableInsert\"\n (menuOpened)=\"showInsertTableMenu = true\"\n (menuClosed)=\"onTableInsertMenuClosed()\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-table\"></mat-icon>\n {{ 'NODER.LABEL.TABLE' | translate }}\n </button>\n <hr class=\"noder-divider\" />\n <button\n *ngIf=\"insertLink.observed\"\n id=\"menu-dropdowns-menu-item-link\"\n mat-menu-item\n (click)=\"insertLink.emit()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-link-on\"></mat-icon>\n <span class=\"menu-item-text\">{{ 'NODER.LABEL.LINK' | translate }}</span>\n <span class=\"hot-keys\">Ctrl+K</span>\n </div>\n </button>\n <button\n *ngFor=\"let element of elements\"\n id=\"menu-dropdowns-menu-item-{{ element.nameId }}\"\n mat-menu-item\n (click)=\"onCreateElement(element)\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"{{ element.icon }}\"></mat-icon>\n <span class=\"menu-item-text\">{{ element.nameTranslate | translate }}</span>\n </div>\n </button>\n <button\n id=\"menu-dropdowns-menu-item-headers-footers\"\n mat-menu-item\n class=\"hidden\"\n [matMenuTriggerFor]=\"listHeadersFootersMenu\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-headers-footers\"></mat-icon>\n <span class=\"menu-item-text\">{{ 'NODER.LABEL.HEADERS_AND_FOOTERS' | translate }}</span>\n </div>\n </button>\n <mat-menu\n #listHeadersFootersMenu=\"matMenu\"\n class=\"noder-modal\">\n <button\n id=\"menu-dropdowns-menu-item-header\"\n mat-menu-item>\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-header\"></mat-icon>\n <span class=\"menu-item-text\">{{ 'NODER.LABEL.HEADER' | translate }}</span>\n </div>\n </button>\n <button\n id=\"menu-dropdowns-menu-item-footer\"\n mat-menu-item>\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-bottom\"></mat-icon>\n <span class=\"menu-item-text\">{{ 'NODER.LABEL.FOOTER' | translate }}</span>\n </div>\n </button>\n </mat-menu>\n </mat-menu>\n <button\n *ngIf=\"showLayout && !data.isViewOnly\"\n id=\"menu-dropdowns-menu-layout\"\n mat-button\n [matMenuTriggerFor]=\"layoutMenu\"\n [matMenuTriggerRestoreFocus]=\"false\">\n {{ 'NODER.LABEL.LAYOUT' | translate }}\n </button>\n <mat-menu\n #layoutMenu=\"matMenu\"\n class=\"noder-modal\">\n <button\n *ngIf=\"insertPageBreak.observed\"\n id=\"menu-dropdowns-menu-item-page-break\"\n mat-menu-item\n (click)=\"insertPageBreak.emit()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-page-break\"></mat-icon>\n <span class=\"menu-item-text\">{{ 'NODER.LABEL.PAGE_BREAK' | translate }}</span>\n <span class=\"hot-keys\">Ctrl+Enter</span>\n </div>\n </button>\n </mat-menu>\n <button\n *ngIf=\"showFormat && !data.isViewOnly\"\n id=\"menu-dropdowns-menu-format\"\n mat-button\n [matMenuTriggerFor]=\"formatMenu\"\n [matMenuTriggerRestoreFocus]=\"false\">\n {{ 'NODER.LABEL.FORMAT' | translate }}\n </button>\n <mat-menu\n #formatMenu=\"matMenu\"\n class=\"noder-modal\">\n <button\n id=\"menu-dropdowns-menu-item-align\"\n mat-menu-item\n [matMenuTriggerFor]=\"listAlignMenu\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-format-alignleft\"></mat-icon>\n <span class=\"menu-item-text\">{{ 'NODER.LABEL.ALIGN' | translate }}</span>\n </div>\n </button>\n <mat-menu\n #listAlignMenu=\"matMenu\"\n class=\"noder-modal\">\n <button\n id=\"menu-dropdowns-menu-item-align-left\"\n mat-menu-item\n (click)=\"onSelectFormat(alignments.Left)\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-format-alignleft\"></mat-icon>\n <span class=\"menu-item-text\">{{ 'NODER.LABEL.LEFT' | translate }}</span>\n <span class=\"hot-keys\">Ctrl+L</span>\n </div>\n </button>\n <button\n id=\"menu-dropdowns-menu-item-align-center\"\n mat-menu-item\n (click)=\"onSelectFormat(alignments.Center)\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-format-aligncenter\"></mat-icon>\n <span class=\"menu-item-text\">{{ 'NODER.LABEL.CENTER' | translate }}</span>\n <span class=\"hot-keys\">Ctrl+E</span>\n </div>\n </button>\n <button\n id=\"menu-dropdowns-menu-item-align-right\"\n mat-menu-item\n (click)=\"onSelectFormat(alignments.Right)\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-format-alignright\"></mat-icon>\n <span class=\"menu-item-text\">{{ 'NODER.LABEL.RIGHT' | translate }}</span>\n <span class=\"hot-keys\">Ctrl+R</span>\n </div>\n </button>\n </mat-menu>\n <button\n id=\"menu-dropdowns-menu-item-bullets-numbering\"\n mat-menu-item\n [matMenuTriggerFor]=\"listBulletsNumberingMenu\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-format-bulleted\"></mat-icon>\n <span class=\"menu-item-text\">{{ 'NODER.LABEL.BULLETS_AND_NUMBERING' | translate }}</span>\n </div>\n </button>\n <mat-menu\n #listBulletsNumberingMenu=\"matMenu\"\n class=\"noder-modal\">\n <button\n id=\"menu-dropdowns-menu-item-bullets\"\n mat-menu-item\n [matMenuTriggerFor]=\"listBulletedMenu\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-format-bulleted\"></mat-icon>\n <span class=\"menu-item-text\">{{ 'NODER.LABEL.BULLET_LIST_MENU' | translate }}</span>\n </div>\n </button>\n <mat-menu\n #listBulletedMenu=\"matMenu\"\n class=\"dropdown-numbering-overlay noder-modal\"\n yPosition=\"below\">\n <div class=\"list-icon list-marker\">\n <mat-icon\n svgIcon=\"marker-1\"\n [class.selected]=\"numberingTemplateType === numberingTemplateTypes.BulletList1\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateTypes.BulletList1)\"></mat-icon>\n <mat-icon\n svgIcon=\"marker-2\"\n [class.selected]=\"numberingTemplateType === numberingTemplateTypes.BulletList2\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateTypes.BulletList2)\"></mat-icon>\n <mat-icon\n svgIcon=\"marker-3\"\n [class.selected]=\"numberingTemplateType === numberingTemplateTypes.BulletList3\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateTypes.BulletList3)\"></mat-icon>\n </div>\n <div class=\"list-icon list-marker\">\n <mat-icon\n svgIcon=\"marker-4\"\n [class.selected]=\"numberingTemplateType === numberingTemplateTypes.BulletList4\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateTypes.BulletList4)\"></mat-icon>\n <mat-icon\n svgIcon=\"marker-5\"\n [class.selected]=\"numberingTemplateType === numberingTemplateTypes.BulletList5\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateTypes.BulletList5)\"></mat-icon>\n <mat-icon\n svgIcon=\"marker-6\"\n [class.selected]=\"numberingTemplateType === numberingTemplateTypes.BulletList6\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateTypes.BulletList6)\"></mat-icon>\n </div>\n </mat-menu>\n <button\n id=\"menu-dropdowns-menu-item-numbering\"\n mat-menu-item\n [matMenuTriggerFor]=\"listNumberedMenu\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-format-numbered\"></mat-icon>\n <span class=\"menu-item-text\">{{ 'NODER.LABEL.NUMBERED_LIST_MENU' | translate }}</span>\n </div>\n </button>\n <mat-menu\n #listNumberedMenu=\"matMenu\"\n class=\"dropdown-numbering-overlay noder-modal\"\n yPosition=\"below\">\n <div class=\"list-icon list-number\">\n <mat-icon\n svgIcon=\"number-1\"\n [class.selected]=\"numberingTemplateType === numberingTemplateTypes.NumberList1\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateTypes.NumberList1)\"></mat-icon>\n <mat-icon\n svgIcon=\"number-2\"\n [class.selected]=\"numberingTemplateType === numberingTemplateTypes.NumberList2\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateTypes.NumberList2)\"></mat-icon>\n <mat-icon\n svgIcon=\"number-3\"\n [class.selected]=\"numberingTemplateType === numberingTemplateTypes.NumberList3\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateTypes.NumberList3)\"></mat-icon>\n </div>\n <div class=\"list-icon list-number\">\n <mat-icon\n svgIcon=\"number-4\"\n [class.selected]=\"numberingTemplateType === numberingTemplateTypes.NumberList4\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateTypes.NumberList4)\"></mat-icon>\n <mat-icon\n svgIcon=\"number-5\"\n [class.selected]=\"numberingTemplateType === numberingTemplateTypes.NumberList5\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateTypes.NumberList5)\"></mat-icon>\n <mat-icon\n svgIcon=\"number-6\"\n [class.selected]=\"numberingTemplateType === numberingTemplateTypes.NumberList6\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateTypes.NumberList6)\"></mat-icon>\n </div>\n </mat-menu>\n </mat-menu>\n <button\n id=\"menu-dropdowns-menu-item-text\"\n mat-menu-item\n [matMenuTriggerFor]=\"listTextMenu\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-format-bold\"></mat-icon>\n <span class=\"menu-item-text\">{{ 'NODER.LABEL.TEXT' | translate }}</span>\n </div>\n </button>\n <mat-menu\n #listTextMenu=\"matMenu\"\n class=\"noder-modal\">\n <button\n id=\"menu-dropdowns-menu-item-bold\"\n mat-menu-item\n (click)=\"onApplyBold()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-format-bold\"></mat-icon>\n <span class=\"menu-item-text\">{{ 'NODER.LABEL.BOLD' | translate }}</span>\n <span class=\"hot-keys\">Ctrl+B</span>\n </div>\n </button>\n <button\n id=\"menu-dropdowns-menu-item-italic\"\n mat-menu-item\n (click)=\"onApplyItalic()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-format-italic\"></mat-icon>\n <span class=\"menu-item-text\">{{ 'NODER.LABEL.ITALIC' | translate }}</span>\n <span class=\"hot-keys\">Ctrl+I</span>\n </div>\n </button>\n <button\n id=\"menu-dropdowns-menu-item-underlined\"\n mat-menu-item\n (click)=\"onApplyUnderline()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-format-underlined\"></mat-icon>\n <span class=\"menu-item-text\">{{ 'NODER.LABEL.UNDERLINED' | translate }}</span>\n <span class=\"hot-keys\">Ctrl+U</span>\n </div>\n </button>\n </mat-menu>\n <button\n id=\"menu-dropdowns-menu-item-header-footer\"\n mat-menu-item\n class=\"hidden\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-headers-footers\"></mat-icon>\n <span class=\"menu-item-text\">{{ 'NODER.LABEL.HEADERS_AND_FOOTERS' | translate }}</span>\n </div>\n </button>\n </mat-menu>\n <mat-menu\n #tableInsert=\"matMenu\"\n class=\"insert-table noder-modal\">\n <app-nod-insert-table\n *ngIf=\"showInsertTableMenu\"\n (selectSizes)=\"insertTable.emit($event)\" />\n </mat-menu>\n</ng-container>\n", styles: [":host{display:flex;align-items:center;height:100%}.menu-buttons mat-icon{width:24px;height:24px;font-size:24px}.heading-menu{display:inline-flex;width:210px}.hot-keys{text-align:end;width:auto}.menu-item-text{white-space:nowrap;width:64%}.mat-mdc-menu-item .mat-icon{margin-right:4px;width:28px}.hidden{display:none}.list-marker,.list-number{margin:0 5px}.list-marker mat-icon,.list-number mat-icon{width:70px;height:80px;margin:0 5px}.list-marker mat-icon:hover,.list-number mat-icon:hover{border:none}.list-icon .selected,.list-icon .selected:hover,.list-number .selected,.list-number .selected:hover{border-width:2px;border-style:solid}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.InsertTableComponent, selector: "app-nod-insert-table", outputs: ["selectSizes"] }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i7.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i7.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i7.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i8.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
65
|
-
}
|
|
66
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MenuDropdownsComponent, decorators: [{
|
|
67
|
-
type: Component,
|
|
68
|
-
args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'app-nod-menu-dropdowns', template: "<ng-container\n *ngIf=\"{\n clipboardData: editorService.clipboardData$ | async,\n hasSelection: editorService.hasSelection$ | async,\n isViewOnly: editorService.isViewOnly$ | async\n } as data\">\n <button\n *ngIf=\"showFile\"\n id=\"menu-dropdowns-menu-file\"\n mat-button\n [matMenuTriggerFor]=\"fileMenu\"\n [matMenuTriggerRestoreFocus]=\"false\">\n {{ 'NODER.LABEL.FILE' | translate }}\n </button>\n <mat-menu\n #fileMenu=\"matMenu\"\n class=\"noder-modal\">\n <button\n *ngIf=\"createDocument.observed && !data.isViewOnly\"\n id=\"menu-dropdowns-menu-item-new\"\n mat-menu-item\n (click)=\"createDocument.emit()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-add-new\"></mat-icon>\n <span class=\"menu-item-text\">{{ 'NODER.LABEL.NEW' | translate }}</span>\n </div>\n </button>\n <button\n *ngIf=\"openFileFromDisk.observed && !data.isViewOnly\"\n id=\"menu-dropdowns-menu-item-open-from\"\n mat-menu-item\n (click)=\"openFileFromDisk.emit()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-open-from\"></mat-icon>\n <span class=\"menu-item-text\">{{ 'NODER.LABEL.OPEN_FROM' | translate }}</span>\n <span class=\"hot-keys\">Ctrl+O</span>\n </div>\n </button>\n <button\n *ngIf=\"saveAs.observed\"\n id=\"menu-dropdowns-menu-item-save-as\"\n mat-menu-item\n (click)=\"saveAs.emit()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-save\"></mat-icon>\n <span class=\"menu-item-text\">{{ 'NODER.LABEL.SAVE_AS' | translate }}</span>\n </div>\n </button>\n <button\n *ngIf=\"rename.observed\"\n id=\"menu-dropdowns-menu-item-rename\"\n mat-menu-item\n (click)=\"rename.emit()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-rename\"></mat-icon>\n <span class=\"menu-item-text\">{{ 'NODER.LABEL.RENAME' | translate }}</span>\n </div>\n </button>\n <button\n *ngIf=\"print.observed\"\n id=\"menu-dropdowns-menu-item-print\"\n mat-menu-item\n (click)=\"print.emit()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-print\"></mat-icon>\n <span class=\"menu-item-text\">{{ 'NODER.LABEL.PRINT' | translate }}</span>\n <span class=\"hot-keys\">Ctrl+P</span>\n </div>\n </button>\n <button\n *ngIf=\"delete.observed\"\n id=\"menu-dropdowns-menu-item-delete\"\n mat-menu-item\n (click)=\"delete.emit()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-delete\"></mat-icon>\n <span class=\"menu-item-text\">{{ 'NODER.LABEL.DELETE' | translate }}</span>\n </div>\n </button>\n </mat-menu>\n <button\n *ngIf=\"showEdit\"\n id=\"menu-dropdowns-menu-edit\"\n mat-button\n [matMenuTriggerFor]=\"editMenu\"\n [matMenuTriggerRestoreFocus]=\"false\"\n (menuOpened)=\"openEditMenu.emit()\">\n {{ 'NODER.LABEL.EDIT' | translate }}\n </button>\n <mat-menu\n #editMenu=\"matMenu\"\n class=\"noder-modal\">\n <button\n *ngIf=\"undo.observed\"\n id=\"menu-dropdowns-menu-item-undo\"\n mat-menu-item\n [disabled]=\"!canUndo\"\n (click)=\"undo.emit()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-undo\"></mat-icon>\n <span class=\"menu-item-text\">{{ 'NODER.LABEL.UNDO' | translate }}</span>\n <span class=\"hot-keys\">Ctrl+Z</span>\n </div>\n </button>\n <button\n *ngIf=\"redo.observed\"\n id=\"menu-dropdowns-menu-item-redo\"\n mat-menu-item\n [disabled]=\"!canRedo\"\n (click)=\"redo.emit()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-redo\"></mat-icon>\n <span class=\"menu-item-text\">{{ 'NODER.LABEL.REDO' | translate }}</span>\n <span class=\"hot-keys\">Ctrl+Y</span>\n </div>\n </button>\n <hr class=\"noder-divider\" />\n <button\n *ngIf=\"cutSelected.observed\"\n id=\"menu-dropdowns-menu-item-cut\"\n mat-menu-item\n [disabled]=\"!data.hasSelection\"\n (click)=\"cutSelected.emit()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-content-cut\"></mat-icon>\n <span class=\"menu-item-text\">{{ 'NODER.LABEL.CUT' | translate }}</span>\n <span class=\"hot-keys\">Ctrl+X</span>\n </div>\n </button>\n <button\n *ngIf=\"copySelected.observed\"\n id=\"menu-dropdowns-menu-item-copy\"\n mat-menu-item\n [disabled]=\"!data.hasSelection\"\n (click)=\"copySelected.emit()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-file-copy\"></mat-icon>\n <span class=\"menu-item-text\">{{ 'NODER.LABEL.COPY' | translate }}</span>\n <span class=\"hot-keys\">Ctrl+C</span>\n </div>\n </button>\n <button\n *ngIf=\"pasteClipboardData.observed\"\n id=\"menu-dropdowns-menu-item-paste\"\n mat-menu-item\n [disabled]=\"!data.clipboardData?.length\"\n (click)=\"pasteClipboardData.emit()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-content-paste\"></mat-icon>\n <span class=\"menu-item-text\">{{ 'NODER.LABEL.PASTE' | translate }}</span>\n <span class=\"hot-keys\">Ctrl+V</span>\n </div>\n </button>\n <hr class=\"noder-divider\" />\n <button\n *ngIf=\"selectAll.observed\"\n id=\"menu-dropdowns-menu-item-select-all\"\n mat-menu-item\n (click)=\"selectAll.emit()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-select-all\"></mat-icon>\n <span class=\"menu-item-text\">{{ 'NODER.LABEL.SELECT_ALL' | translate }}</span>\n <span class=\"hot-keys\">Ctrl+A</span>\n </div>\n </button>\n <button\n *ngIf=\"removeSelected.observed\"\n id=\"menu-dropdowns-menu-item-delete-text\"\n mat-menu-item\n [disabled]=\"!data.hasSelection\"\n (click)=\"removeSelected.emit()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-delete\"></mat-icon>\n <span class=\"menu-item-text\">{{ 'NODER.LABEL.DELETE' | translate }}</span>\n </div>\n </button>\n </mat-menu>\n <button\n *ngIf=\"showInsert && !data.isViewOnly\"\n #insertMenuTrigger=\"matMenuTrigger\"\n id=\"menu-dropdowns-menu-insert\"\n mat-button\n [matMenuTriggerFor]=\"insertMenu\"\n [matMenuTriggerRestoreFocus]=\"false\">\n {{ 'NODER.LABEL.INSERT' | translate }}\n </button>\n <mat-menu\n #insertMenu=\"matMenu\"\n class=\"noder-modal\">\n <button\n *ngIf=\"insertImage.observed\"\n id=\"menu-dropdowns-menu-item-image\"\n mat-menu-item\n (click)=\"insertImage.emit()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-image\"></mat-icon>\n <span class=\"menu-item-text\">{{ 'NODER.LABEL.IMAGE' | translate }}</span>\n </div>\n </button>\n <button\n id=\"menu-dropdowns-menu-item-table\"\n mat-menu-item\n [matMenuTriggerFor]=\"tableInsert\"\n (menuOpened)=\"showInsertTableMenu = true\"\n (menuClosed)=\"onTableInsertMenuClosed()\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-table\"></mat-icon>\n {{ 'NODER.LABEL.TABLE' | translate }}\n </button>\n <hr class=\"noder-divider\" />\n <button\n *ngIf=\"insertLink.observed\"\n id=\"menu-dropdowns-menu-item-link\"\n mat-menu-item\n (click)=\"insertLink.emit()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-link-on\"></mat-icon>\n <span class=\"menu-item-text\">{{ 'NODER.LABEL.LINK' | translate }}</span>\n <span class=\"hot-keys\">Ctrl+K</span>\n </div>\n </button>\n <button\n *ngFor=\"let element of elements\"\n id=\"menu-dropdowns-menu-item-{{ element.nameId }}\"\n mat-menu-item\n (click)=\"onCreateElement(element)\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"{{ element.icon }}\"></mat-icon>\n <span class=\"menu-item-text\">{{ element.nameTranslate | translate }}</span>\n </div>\n </button>\n <button\n id=\"menu-dropdowns-menu-item-headers-footers\"\n mat-menu-item\n class=\"hidden\"\n [matMenuTriggerFor]=\"listHeadersFootersMenu\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-headers-footers\"></mat-icon>\n <span class=\"menu-item-text\">{{ 'NODER.LABEL.HEADERS_AND_FOOTERS' | translate }}</span>\n </div>\n </button>\n <mat-menu\n #listHeadersFootersMenu=\"matMenu\"\n class=\"noder-modal\">\n <button\n id=\"menu-dropdowns-menu-item-header\"\n mat-menu-item>\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-header\"></mat-icon>\n <span class=\"menu-item-text\">{{ 'NODER.LABEL.HEADER' | translate }}</span>\n </div>\n </button>\n <button\n id=\"menu-dropdowns-menu-item-footer\"\n mat-menu-item>\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-bottom\"></mat-icon>\n <span class=\"menu-item-text\">{{ 'NODER.LABEL.FOOTER' | translate }}</span>\n </div>\n </button>\n </mat-menu>\n </mat-menu>\n <button\n *ngIf=\"showLayout && !data.isViewOnly\"\n id=\"menu-dropdowns-menu-layout\"\n mat-button\n [matMenuTriggerFor]=\"layoutMenu\"\n [matMenuTriggerRestoreFocus]=\"false\">\n {{ 'NODER.LABEL.LAYOUT' | translate }}\n </button>\n <mat-menu\n #layoutMenu=\"matMenu\"\n class=\"noder-modal\">\n <button\n *ngIf=\"insertPageBreak.observed\"\n id=\"menu-dropdowns-menu-item-page-break\"\n mat-menu-item\n (click)=\"insertPageBreak.emit()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-page-break\"></mat-icon>\n <span class=\"menu-item-text\">{{ 'NODER.LABEL.PAGE_BREAK' | translate }}</span>\n <span class=\"hot-keys\">Ctrl+Enter</span>\n </div>\n </button>\n </mat-menu>\n <button\n *ngIf=\"showFormat && !data.isViewOnly\"\n id=\"menu-dropdowns-menu-format\"\n mat-button\n [matMenuTriggerFor]=\"formatMenu\"\n [matMenuTriggerRestoreFocus]=\"false\">\n {{ 'NODER.LABEL.FORMAT' | translate }}\n </button>\n <mat-menu\n #formatMenu=\"matMenu\"\n class=\"noder-modal\">\n <button\n id=\"menu-dropdowns-menu-item-align\"\n mat-menu-item\n [matMenuTriggerFor]=\"listAlignMenu\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-format-alignleft\"></mat-icon>\n <span class=\"menu-item-text\">{{ 'NODER.LABEL.ALIGN' | translate }}</span>\n </div>\n </button>\n <mat-menu\n #listAlignMenu=\"matMenu\"\n class=\"noder-modal\">\n <button\n id=\"menu-dropdowns-menu-item-align-left\"\n mat-menu-item\n (click)=\"onSelectFormat(alignments.Left)\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-format-alignleft\"></mat-icon>\n <span class=\"menu-item-text\">{{ 'NODER.LABEL.LEFT' | translate }}</span>\n <span class=\"hot-keys\">Ctrl+L</span>\n </div>\n </button>\n <button\n id=\"menu-dropdowns-menu-item-align-center\"\n mat-menu-item\n (click)=\"onSelectFormat(alignments.Center)\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-format-aligncenter\"></mat-icon>\n <span class=\"menu-item-text\">{{ 'NODER.LABEL.CENTER' | translate }}</span>\n <span class=\"hot-keys\">Ctrl+E</span>\n </div>\n </button>\n <button\n id=\"menu-dropdowns-menu-item-align-right\"\n mat-menu-item\n (click)=\"onSelectFormat(alignments.Right)\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-format-alignright\"></mat-icon>\n <span class=\"menu-item-text\">{{ 'NODER.LABEL.RIGHT' | translate }}</span>\n <span class=\"hot-keys\">Ctrl+R</span>\n </div>\n </button>\n </mat-menu>\n <button\n id=\"menu-dropdowns-menu-item-bullets-numbering\"\n mat-menu-item\n [matMenuTriggerFor]=\"listBulletsNumberingMenu\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-format-bulleted\"></mat-icon>\n <span class=\"menu-item-text\">{{ 'NODER.LABEL.BULLETS_AND_NUMBERING' | translate }}</span>\n </div>\n </button>\n <mat-menu\n #listBulletsNumberingMenu=\"matMenu\"\n class=\"noder-modal\">\n <button\n id=\"menu-dropdowns-menu-item-bullets\"\n mat-menu-item\n [matMenuTriggerFor]=\"listBulletedMenu\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-format-bulleted\"></mat-icon>\n <span class=\"menu-item-text\">{{ 'NODER.LABEL.BULLET_LIST_MENU' | translate }}</span>\n </div>\n </button>\n <mat-menu\n #listBulletedMenu=\"matMenu\"\n class=\"dropdown-numbering-overlay noder-modal\"\n yPosition=\"below\">\n <div class=\"list-icon list-marker\">\n <mat-icon\n svgIcon=\"marker-1\"\n [class.selected]=\"numberingTemplateType === numberingTemplateTypes.BulletList1\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateTypes.BulletList1)\"></mat-icon>\n <mat-icon\n svgIcon=\"marker-2\"\n [class.selected]=\"numberingTemplateType === numberingTemplateTypes.BulletList2\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateTypes.BulletList2)\"></mat-icon>\n <mat-icon\n svgIcon=\"marker-3\"\n [class.selected]=\"numberingTemplateType === numberingTemplateTypes.BulletList3\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateTypes.BulletList3)\"></mat-icon>\n </div>\n <div class=\"list-icon list-marker\">\n <mat-icon\n svgIcon=\"marker-4\"\n [class.selected]=\"numberingTemplateType === numberingTemplateTypes.BulletList4\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateTypes.BulletList4)\"></mat-icon>\n <mat-icon\n svgIcon=\"marker-5\"\n [class.selected]=\"numberingTemplateType === numberingTemplateTypes.BulletList5\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateTypes.BulletList5)\"></mat-icon>\n <mat-icon\n svgIcon=\"marker-6\"\n [class.selected]=\"numberingTemplateType === numberingTemplateTypes.BulletList6\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateTypes.BulletList6)\"></mat-icon>\n </div>\n </mat-menu>\n <button\n id=\"menu-dropdowns-menu-item-numbering\"\n mat-menu-item\n [matMenuTriggerFor]=\"listNumberedMenu\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-format-numbered\"></mat-icon>\n <span class=\"menu-item-text\">{{ 'NODER.LABEL.NUMBERED_LIST_MENU' | translate }}</span>\n </div>\n </button>\n <mat-menu\n #listNumberedMenu=\"matMenu\"\n class=\"dropdown-numbering-overlay noder-modal\"\n yPosition=\"below\">\n <div class=\"list-icon list-number\">\n <mat-icon\n svgIcon=\"number-1\"\n [class.selected]=\"numberingTemplateType === numberingTemplateTypes.NumberList1\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateTypes.NumberList1)\"></mat-icon>\n <mat-icon\n svgIcon=\"number-2\"\n [class.selected]=\"numberingTemplateType === numberingTemplateTypes.NumberList2\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateTypes.NumberList2)\"></mat-icon>\n <mat-icon\n svgIcon=\"number-3\"\n [class.selected]=\"numberingTemplateType === numberingTemplateTypes.NumberList3\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateTypes.NumberList3)\"></mat-icon>\n </div>\n <div class=\"list-icon list-number\">\n <mat-icon\n svgIcon=\"number-4\"\n [class.selected]=\"numberingTemplateType === numberingTemplateTypes.NumberList4\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateTypes.NumberList4)\"></mat-icon>\n <mat-icon\n svgIcon=\"number-5\"\n [class.selected]=\"numberingTemplateType === numberingTemplateTypes.NumberList5\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateTypes.NumberList5)\"></mat-icon>\n <mat-icon\n svgIcon=\"number-6\"\n [class.selected]=\"numberingTemplateType === numberingTemplateTypes.NumberList6\"\n (click)=\"onSelectNumberingTemplate(numberingTemplateTypes.NumberList6)\"></mat-icon>\n </div>\n </mat-menu>\n </mat-menu>\n <button\n id=\"menu-dropdowns-menu-item-text\"\n mat-menu-item\n [matMenuTriggerFor]=\"listTextMenu\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-format-bold\"></mat-icon>\n <span class=\"menu-item-text\">{{ 'NODER.LABEL.TEXT' | translate }}</span>\n </div>\n </button>\n <mat-menu\n #listTextMenu=\"matMenu\"\n class=\"noder-modal\">\n <button\n id=\"menu-dropdowns-menu-item-bold\"\n mat-menu-item\n (click)=\"onApplyBold()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-format-bold\"></mat-icon>\n <span class=\"menu-item-text\">{{ 'NODER.LABEL.BOLD' | translate }}</span>\n <span class=\"hot-keys\">Ctrl+B</span>\n </div>\n </button>\n <button\n id=\"menu-dropdowns-menu-item-italic\"\n mat-menu-item\n (click)=\"onApplyItalic()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-format-italic\"></mat-icon>\n <span class=\"menu-item-text\">{{ 'NODER.LABEL.ITALIC' | translate }}</span>\n <span class=\"hot-keys\">Ctrl+I</span>\n </div>\n </button>\n <button\n id=\"menu-dropdowns-menu-item-underlined\"\n mat-menu-item\n (click)=\"onApplyUnderline()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-format-underlined\"></mat-icon>\n <span class=\"menu-item-text\">{{ 'NODER.LABEL.UNDERLINED' | translate }}</span>\n <span class=\"hot-keys\">Ctrl+U</span>\n </div>\n </button>\n </mat-menu>\n <button\n id=\"menu-dropdowns-menu-item-header-footer\"\n mat-menu-item\n class=\"hidden\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-headers-footers\"></mat-icon>\n <span class=\"menu-item-text\">{{ 'NODER.LABEL.HEADERS_AND_FOOTERS' | translate }}</span>\n </div>\n </button>\n </mat-menu>\n <mat-menu\n #tableInsert=\"matMenu\"\n class=\"insert-table noder-modal\">\n <app-nod-insert-table\n *ngIf=\"showInsertTableMenu\"\n (selectSizes)=\"insertTable.emit($event)\" />\n </mat-menu>\n</ng-container>\n", styles: [":host{display:flex;align-items:center;height:100%}.menu-buttons mat-icon{width:24px;height:24px;font-size:24px}.heading-menu{display:inline-flex;width:210px}.hot-keys{text-align:end;width:auto}.menu-item-text{white-space:nowrap;width:64%}.mat-mdc-menu-item .mat-icon{margin-right:4px;width:28px}.hidden{display:none}.list-marker,.list-number{margin:0 5px}.list-marker mat-icon,.list-number mat-icon{width:70px;height:80px;margin:0 5px}.list-marker mat-icon:hover,.list-number mat-icon:hover{border:none}.list-icon .selected,.list-icon .selected:hover,.list-number .selected,.list-number .selected:hover{border-width:2px;border-style:solid}\n"] }]
|
|
69
|
-
}], ctorParameters: () => [{ type: i1.CustomIconService }, { type: i0.Injector }, { type: i0.ChangeDetectorRef }, { type: i2.EditorService }], propDecorators: { showFile: [{
|
|
70
|
-
type: Input
|
|
71
|
-
}], showEdit: [{
|
|
72
|
-
type: Input
|
|
73
|
-
}], showInsert: [{
|
|
74
|
-
type: Input
|
|
75
|
-
}], showLayout: [{
|
|
76
|
-
type: Input
|
|
77
|
-
}], showFormat: [{
|
|
78
|
-
type: Input
|
|
79
|
-
}], openFileFromDisk: [{
|
|
80
|
-
type: Output
|
|
81
|
-
}], saveAs: [{
|
|
82
|
-
type: Output
|
|
83
|
-
}], insertPageBreak: [{
|
|
84
|
-
type: Output
|
|
85
|
-
}], createDocument: [{
|
|
86
|
-
type: Output
|
|
87
|
-
}], rename: [{
|
|
88
|
-
type: Output
|
|
89
|
-
}], delete: [{
|
|
90
|
-
type: Output
|
|
91
|
-
}], openEditMenu: [{
|
|
92
|
-
type: Output
|
|
93
|
-
}], cutSelected: [{
|
|
94
|
-
type: Output
|
|
95
|
-
}], copySelected: [{
|
|
96
|
-
type: Output
|
|
97
|
-
}], pasteClipboardData: [{
|
|
98
|
-
type: Output
|
|
99
|
-
}], selectAll: [{
|
|
100
|
-
type: Output
|
|
101
|
-
}], removeSelected: [{
|
|
102
|
-
type: Output
|
|
103
|
-
}], tableInsertMenu: [{
|
|
104
|
-
type: ViewChild,
|
|
105
|
-
args: ['tableInsert']
|
|
106
|
-
}] } });
|
|
107
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1kcm9wZG93bnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW5vZGVyL3NyYy9saWIvYXBhcnQtY29tcG9uZW50cy9lZGl0b3ItdG9vbGJhci9jb21wb25lbnRzL21lbnUtZHJvcGRvd25zL21lbnUtZHJvcGRvd25zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1ub2Rlci9zcmMvbGliL2FwYXJ0LWNvbXBvbmVudHMvZWRpdG9yLXRvb2xiYXIvY29tcG9uZW50cy9tZW51LWRyb3Bkb3ducy9tZW51LWRyb3Bkb3ducy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQXFCLFNBQVMsRUFBRSxZQUFZLEVBQVksS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEksT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHcEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzlELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBR2pFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDOzs7Ozs7Ozs7O0FBUXpGLE1BQU0sT0FBTyxzQkFBdUIsU0FBUSxvQkFBb0I7SUEyQzVELFlBQ0ksaUJBQW9DLEVBQ3BDLFFBQWtCLEVBQ0MsR0FBc0IsRUFDekIsYUFBNEI7UUFFNUMsS0FBSyxDQUFDLGlCQUFpQixFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFIcEMsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDekIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUE5Q3ZDLGFBQVEsR0FBRyxJQUFJLENBQUM7UUFFaEIsYUFBUSxHQUFHLElBQUksQ0FBQztRQUVoQixlQUFVLEdBQUcsSUFBSSxDQUFDO1FBRWxCLGVBQVUsR0FBRyxJQUFJLENBQUM7UUFFbEIsZUFBVSxHQUFHLElBQUksQ0FBQztRQUVqQixxQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBRTVDLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBRWxDLG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUUzQyxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFFMUMsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFFbEMsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFFbEMsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBRXhDLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUV2QyxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFFeEMsdUJBQWtCLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUU5QyxjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUVyQyxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFJcEQsd0JBQW1CLEdBQUcsS0FBSyxDQUFDO1FBRTVCLDJCQUFzQixHQUFHLHFCQUFxQixDQUFDO1FBRXRDLGVBQVUsR0FBRyxTQUFTLENBQUM7SUFTaEMsQ0FBQztJQUVELGNBQWMsQ0FBQyxTQUFvQjtRQUMvQixJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLElBQUksbUJBQW1CLENBQUMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUVELHlCQUF5QixDQUFDLHFCQUE0QztRQUNsRSxJQUFJLElBQUksQ0FBQyxxQkFBcUIsS0FBSyxxQkFBcUIsRUFBRTtZQUN0RCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDaEM7YUFBTTtZQUNILE1BQU0sY0FBYyxHQUFHLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxZQUFZLEtBQUsscUJBQXFCLENBQUMsQ0FBQyxNQUFNLENBQUM7WUFDckcsSUFBSSxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztTQUN0RDtJQUNMLENBQUM7SUFFRCx1QkFBdUI7UUFDbkIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxjQUFjO2FBQzlCLElBQUksQ0FDRCxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxLQUFLLE1BQU0sQ0FBQyxFQUNqQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQ1Y7YUFDQSxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ1osSUFBSSxDQUFDLG1CQUFtQixHQUFHLEtBQUssQ0FBQztZQUNqQyxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzVCLENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQzsrR0EzRVEsc0JBQXNCO21HQUF0QixzQkFBc0Isc3JCQ2xCbkMsOGp3QkFrakJBOzs0RkRoaUJhLHNCQUFzQjtrQkFObEMsU0FBUztzQ0FDVyx1QkFBdUIsQ0FBQyxNQUFNLFlBQ3JDLHdCQUF3Qjt5S0FLekIsUUFBUTtzQkFBaEIsS0FBSztnQkFFRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUcsVUFBVTtzQkFBbEIsS0FBSztnQkFFRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVJLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFFRyxNQUFNO3NCQUFmLE1BQU07Z0JBRUcsZUFBZTtzQkFBeEIsTUFBTTtnQkFFRyxjQUFjO3NCQUF2QixNQUFNO2dCQUVHLE1BQU07c0JBQWYsTUFBTTtnQkFFRyxNQUFNO3NCQUFmLE1BQU07Z0JBRUcsWUFBWTtzQkFBckIsTUFBTTtnQkFFRyxXQUFXO3NCQUFwQixNQUFNO2dCQUVHLFlBQVk7c0JBQXJCLE1BQU07Z0JBRUcsa0JBQWtCO3NCQUEzQixNQUFNO2dCQUVHLFNBQVM7c0JBQWxCLE1BQU07Z0JBRUcsY0FBYztzQkFBdkIsTUFBTTtnQkFFbUIsZUFBZTtzQkFBeEMsU0FBUzt1QkFBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5qZWN0b3IsIElucHV0LCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZmlsdGVyLCB0YWtlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBNYXRNZW51IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudSc7XG5cbmltcG9ydCB7IEFsaWdubWVudCB9IGZyb20gJy4uLy4uL3NoYXJlZC9lbnVtcy9hbGlnbm1lbnQuZW51bSc7XG5pbXBvcnQgeyBCYXNlVG9vbGJhckNvbXBvbmVudCB9IGZyb20gJy4uL2Jhc2UtdG9vbGJhci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ3VzdG9tSWNvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zaGFyZWQvc2VydmljZXMvY3VzdG9tLWljb24uc2VydmljZSc7XG5pbXBvcnQgeyBFZGl0b3JTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vZWRpdG9yL2ludGVyYWN0aW9uL2VkaXRvci5zZXJ2aWNlJztcbmltcG9ydCB7IE51bWJlcmluZ1RlbXBsYXRlcyB9IGZyb20gJy4uLy4uL3NoYXJlZC9jb25zdGFudHMvbnVtYmVyaW5nLXRlbXBsYXRlcy5jb25zdCc7XG5pbXBvcnQgeyBOdW1iZXJpbmdUZW1wbGF0ZVR5cGUgfSBmcm9tICcuLi8uLi9zaGFyZWQvZW51bXMvbnVtYmVyaW5nLXRlbXBsYXRlLXR5cGUuZW51bSc7XG5pbXBvcnQgeyBQYXJhZ3JhcGhTdHlsZU1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9wYXJhZ3JhcGgtc3R5bGUubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBzZWxlY3RvcjogJ2FwcC1ub2QtbWVudS1kcm9wZG93bnMnLFxuICAgIHRlbXBsYXRlVXJsOiAnbWVudS1kcm9wZG93bnMuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWydtZW51LWRyb3Bkb3ducy5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIE1lbnVEcm9wZG93bnNDb21wb25lbnQgZXh0ZW5kcyBCYXNlVG9vbGJhckNvbXBvbmVudCB7XG4gICAgQElucHV0KCkgc2hvd0ZpbGUgPSB0cnVlO1xuXG4gICAgQElucHV0KCkgc2hvd0VkaXQgPSB0cnVlO1xuXG4gICAgQElucHV0KCkgc2hvd0luc2VydCA9IHRydWU7XG5cbiAgICBASW5wdXQoKSBzaG93TGF5b3V0ID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpIHNob3dGb3JtYXQgPSB0cnVlO1xuXG4gICAgQE91dHB1dCgpIG9wZW5GaWxlRnJvbURpc2sgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICBAT3V0cHV0KCkgc2F2ZUFzID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgQE91dHB1dCgpIGluc2VydFBhZ2VCcmVhayA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIEBPdXRwdXQoKSBjcmVhdGVEb2N1bWVudCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIEBPdXRwdXQoKSByZW5hbWUgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICBAT3V0cHV0KCkgZGVsZXRlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgQE91dHB1dCgpIG9wZW5FZGl0TWVudSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIEBPdXRwdXQoKSBjdXRTZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIEBPdXRwdXQoKSBjb3B5U2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICBAT3V0cHV0KCkgcGFzdGVDbGlwYm9hcmREYXRhID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgQE91dHB1dCgpIHNlbGVjdEFsbCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIEBPdXRwdXQoKSByZW1vdmVTZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIEBWaWV3Q2hpbGQoJ3RhYmxlSW5zZXJ0JykgdGFibGVJbnNlcnRNZW51OiBNYXRNZW51O1xuXG4gICAgc2hvd0luc2VydFRhYmxlTWVudSA9IGZhbHNlO1xuXG4gICAgbnVtYmVyaW5nVGVtcGxhdGVUeXBlcyA9IE51bWJlcmluZ1RlbXBsYXRlVHlwZTtcblxuICAgIHJlYWRvbmx5IGFsaWdubWVudHMgPSBBbGlnbm1lbnQ7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgY3VzdG9tSWNvblNlcnZpY2U6IEN1c3RvbUljb25TZXJ2aWNlLFxuICAgICAgICBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICAgIHByb3RlY3RlZCBvdmVycmlkZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwdWJsaWMgb3ZlcnJpZGUgZWRpdG9yU2VydmljZTogRWRpdG9yU2VydmljZVxuICAgICkge1xuICAgICAgICBzdXBlcihjdXN0b21JY29uU2VydmljZSwgaW5qZWN0b3IsIGNkciwgZWRpdG9yU2VydmljZSk7XG4gICAgfVxuXG4gICAgb25TZWxlY3RGb3JtYXQoYWxpZ25tZW50OiBBbGlnbm1lbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jaGFuZ2VQYXJhZ3JhcGhTdHlsZS5lbWl0KG5ldyBQYXJhZ3JhcGhTdHlsZU1vZGVsKHsgYWxpZ25tZW50IH0pKTtcbiAgICB9XG5cbiAgICBvblNlbGVjdE51bWJlcmluZ1RlbXBsYXRlKG51bWJlcmluZ1RlbXBsYXRlVHlwZTogTnVtYmVyaW5nVGVtcGxhdGVUeXBlKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm51bWJlcmluZ1RlbXBsYXRlVHlwZSA9PT0gbnVtYmVyaW5nVGVtcGxhdGVUeXBlKSB7XG4gICAgICAgICAgICB0aGlzLnJlbW92ZU51bWJlcmluZ3MuZW1pdCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgdGVtcGxhdGVMZXZlbHMgPSBOdW1iZXJpbmdUZW1wbGF0ZXMuZmluZCh4ID0+IHgudGVtcGxhdGVUeXBlID09PSBudW1iZXJpbmdUZW1wbGF0ZVR5cGUpLmxldmVscztcbiAgICAgICAgICAgIHRoaXMuc2V0TnVtYmVyaW5nVGVtcGxhdGVUeXBlLmVtaXQodGVtcGxhdGVMZXZlbHMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25UYWJsZUluc2VydE1lbnVDbG9zZWQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudGFibGVJbnNlcnRNZW51Ll9hbmltYXRpb25Eb25lXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBmaWx0ZXIoeCA9PiB4LnRvU3RhdGUgPT09ICd2b2lkJyksXG4gICAgICAgICAgICAgICAgdGFrZSgxKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zaG93SW5zZXJ0VGFibGVNZW51ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG59XG4iLCI8bmctY29udGFpbmVyXG4gICAgKm5nSWY9XCJ7XG4gICAgICAgIGNsaXBib2FyZERhdGE6IGVkaXRvclNlcnZpY2UuY2xpcGJvYXJkRGF0YSQgfCBhc3luYyxcbiAgICAgICAgaGFzU2VsZWN0aW9uOiBlZGl0b3JTZXJ2aWNlLmhhc1NlbGVjdGlvbiQgfCBhc3luYyxcbiAgICAgICAgaXNWaWV3T25seTogZWRpdG9yU2VydmljZS5pc1ZpZXdPbmx5JCB8IGFzeW5jXG4gICAgfSBhcyBkYXRhXCI+XG4gICAgPGJ1dHRvblxuICAgICAgICAqbmdJZj1cInNob3dGaWxlXCJcbiAgICAgICAgaWQ9XCJtZW51LWRyb3Bkb3ducy1tZW51LWZpbGVcIlxuICAgICAgICBtYXQtYnV0dG9uXG4gICAgICAgIFttYXRNZW51VHJpZ2dlckZvcl09XCJmaWxlTWVudVwiXG4gICAgICAgIFttYXRNZW51VHJpZ2dlclJlc3RvcmVGb2N1c109XCJmYWxzZVwiPlxuICAgICAgICB7eyAnTk9ERVIuTEFCRUwuRklMRScgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2J1dHRvbj5cbiAgICA8bWF0LW1lbnVcbiAgICAgICAgI2ZpbGVNZW51PVwibWF0TWVudVwiXG4gICAgICAgIGNsYXNzPVwibm9kZXItbW9kYWxcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKm5nSWY9XCJjcmVhdGVEb2N1bWVudC5vYnNlcnZlZCAmJiAhZGF0YS5pc1ZpZXdPbmx5XCJcbiAgICAgICAgICAgIGlkPVwibWVudS1kcm9wZG93bnMtbWVudS1pdGVtLW5ld1wiXG4gICAgICAgICAgICBtYXQtbWVudS1pdGVtXG4gICAgICAgICAgICAoY2xpY2spPVwiY3JlYXRlRG9jdW1lbnQuZW1pdCgpXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGluZy1tZW51XCI+XG4gICAgICAgICAgICAgICAgPG1hdC1pY29uXG4gICAgICAgICAgICAgICAgICAgIGZvbnRTZXQ9XCJub2Rlci1pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgZm9udEljb249XCJpY29uLWFkZC1uZXdcIj48L21hdC1pY29uPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWVudS1pdGVtLXRleHRcIj57eyAnTk9ERVIuTEFCRUwuTkVXJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKm5nSWY9XCJvcGVuRmlsZUZyb21EaXNrLm9ic2VydmVkICYmICFkYXRhLmlzVmlld09ubHlcIlxuICAgICAgICAgICAgaWQ9XCJtZW51LWRyb3Bkb3ducy1tZW51LWl0ZW0tb3Blbi1mcm9tXCJcbiAgICAgICAgICAgIG1hdC1tZW51LWl0ZW1cbiAgICAgICAgICAgIChjbGljayk9XCJvcGVuRmlsZUZyb21EaXNrLmVtaXQoKVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRpbmctbWVudVwiPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvblxuICAgICAgICAgICAgICAgICAgICBmb250U2V0PVwibm9kZXItaWNvblwiXG4gICAgICAgICAgICAgICAgICAgIGZvbnRJY29uPVwiaWNvbi1vcGVuLWZyb21cIj48L21hdC1pY29uPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWVudS1pdGVtLXRleHRcIj57eyAnTk9ERVIuTEFCRUwuT1BFTl9GUk9NJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImhvdC1rZXlzXCI+Q3RybCtPPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cInNhdmVBcy5vYnNlcnZlZFwiXG4gICAgICAgICAgICBpZD1cIm1lbnUtZHJvcGRvd25zLW1lbnUtaXRlbS1zYXZlLWFzXCJcbiAgICAgICAgICAgIG1hdC1tZW51LWl0ZW1cbiAgICAgICAgICAgIChjbGljayk9XCJzYXZlQXMuZW1pdCgpXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGluZy1tZW51XCI+XG4gICAgICAgICAgICAgICAgPG1hdC1pY29uXG4gICAgICAgICAgICAgICAgICAgIGZvbnRTZXQ9XCJub2Rlci1pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgZm9udEljb249XCJpY29uLXNhdmVcIj48L21hdC1pY29uPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWVudS1pdGVtLXRleHRcIj57eyAnTk9ERVIuTEFCRUwuU0FWRV9BUycgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICpuZ0lmPVwicmVuYW1lLm9ic2VydmVkXCJcbiAgICAgICAgICAgIGlkPVwibWVudS1kcm9wZG93bnMtbWVudS1pdGVtLXJlbmFtZVwiXG4gICAgICAgICAgICBtYXQtbWVudS1pdGVtXG4gICAgICAgICAgICAoY2xpY2spPVwicmVuYW1lLmVtaXQoKVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRpbmctbWVudVwiPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvblxuICAgICAgICAgICAgICAgICAgICBmb250U2V0PVwibm9kZXItaWNvblwiXG4gICAgICAgICAgICAgICAgICAgIGZvbnRJY29uPVwiaWNvbi1yZW5hbWVcIj48L21hdC1pY29uPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWVudS1pdGVtLXRleHRcIj57eyAnTk9ERVIuTEFCRUwuUkVOQU1FJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKm5nSWY9XCJwcmludC5vYnNlcnZlZFwiXG4gICAgICAgICAgICBpZD1cIm1lbnUtZHJvcGRvd25zLW1lbnUtaXRlbS1wcmludFwiXG4gICAgICAgICAgICBtYXQtbWVudS1pdGVtXG4gICAgICAgICAgICAoY2xpY2spPVwicHJpbnQuZW1pdCgpXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGluZy1tZW51XCI+XG4gICAgICAgICAgICAgICAgPG1hdC1pY29uXG4gICAgICAgICAgICAgICAgICAgIGZvbnRTZXQ9XCJub2Rlci1pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgZm9udEljb249XCJpY29uLXByaW50XCI+PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lbnUtaXRlbS10ZXh0XCI+e3sgJ05PREVSLkxBQkVMLlBSSU5UJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImhvdC1rZXlzXCI+Q3RybCtQPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cImRlbGV0ZS5vYnNlcnZlZFwiXG4gICAgICAgICAgICBpZD1cIm1lbnUtZHJvcGRvd25zLW1lbnUtaXRlbS1kZWxldGVcIlxuICAgICAgICAgICAgbWF0LW1lbnUtaXRlbVxuICAgICAgICAgICAgKGNsaWNrKT1cImRlbGV0ZS5lbWl0KClcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkaW5nLW1lbnVcIj5cbiAgICAgICAgICAgICAgICA8bWF0LWljb25cbiAgICAgICAgICAgICAgICAgICAgZm9udFNldD1cIm5vZGVyLWljb25cIlxuICAgICAgICAgICAgICAgICAgICBmb250SWNvbj1cImljb24tZGVsZXRlXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lbnUtaXRlbS10ZXh0XCI+e3sgJ05PREVSLkxBQkVMLkRFTEVURScgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgPC9tYXQtbWVudT5cbiAgICA8YnV0dG9uXG4gICAgICAgICpuZ0lmPVwic2hvd0VkaXRcIlxuICAgICAgICBpZD1cIm1lbnUtZHJvcGRvd25zLW1lbnUtZWRpdFwiXG4gICAgICAgIG1hdC1idXR0b25cbiAgICAgICAgW21hdE1lbnVUcmlnZ2VyRm9yXT1cImVkaXRNZW51XCJcbiAgICAgICAgW21hdE1lbnVUcmlnZ2VyUmVzdG9yZUZvY3VzXT1cImZhbHNlXCJcbiAgICAgICAgKG1lbnVPcGVuZWQpPVwib3BlbkVkaXRNZW51LmVtaXQoKVwiPlxuICAgICAgICB7eyAnTk9ERVIuTEFCRUwuRURJVCcgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2J1dHRvbj5cbiAgICA8bWF0LW1lbnVcbiAgICAgICAgI2VkaXRNZW51PVwibWF0TWVudVwiXG4gICAgICAgIGNsYXNzPVwibm9kZXItbW9kYWxcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKm5nSWY9XCJ1bmRvLm9ic2VydmVkXCJcbiAgICAgICAgICAgIGlkPVwibWVudS1kcm9wZG93bnMtbWVudS1pdGVtLXVuZG9cIlxuICAgICAgICAgICAgbWF0LW1lbnUtaXRlbVxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFjYW5VbmRvXCJcbiAgICAgICAgICAgIChjbGljayk9XCJ1bmRvLmVtaXQoKVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRpbmctbWVudVwiPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvblxuICAgICAgICAgICAgICAgICAgICBmb250U2V0PVwibm9kZXItaWNvblwiXG4gICAgICAgICAgICAgICAgICAgIGZvbnRJY29uPVwiaWNvbi11bmRvXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lbnUtaXRlbS10ZXh0XCI+e3sgJ05PREVSLkxBQkVMLlVORE8nIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaG90LWtleXNcIj5DdHJsK1o8L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICpuZ0lmPVwicmVkby5vYnNlcnZlZFwiXG4gICAgICAgICAgICBpZD1cIm1lbnUtZHJvcGRvd25zLW1lbnUtaXRlbS1yZWRvXCJcbiAgICAgICAgICAgIG1hdC1tZW51LWl0ZW1cbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhY2FuUmVkb1wiXG4gICAgICAgICAgICAoY2xpY2spPVwicmVkby5lbWl0KClcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkaW5nLW1lbnVcIj5cbiAgICAgICAgICAgICAgICA8bWF0LWljb25cbiAgICAgICAgICAgICAgICAgICAgZm9udFNldD1cIm5vZGVyLWljb25cIlxuICAgICAgICAgICAgICAgICAgICBmb250SWNvbj1cImljb24tcmVkb1wiPjwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZW51LWl0ZW0tdGV4dFwiPnt7ICdOT0RFUi5MQUJFTC5SRURPJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImhvdC1rZXlzXCI+Q3RybCtZPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8aHIgY2xhc3M9XCJub2Rlci1kaXZpZGVyXCIgLz5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKm5nSWY9XCJjdXRTZWxlY3RlZC5vYnNlcnZlZFwiXG4gICAgICAgICAgICBpZD1cIm1lbnUtZHJvcGRvd25zLW1lbnUtaXRlbS1jdXRcIlxuICAgICAgICAgICAgbWF0LW1lbnUtaXRlbVxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFkYXRhLmhhc1NlbGVjdGlvblwiXG4gICAgICAgICAgICAoY2xpY2spPVwiY3V0U2VsZWN0ZWQuZW1pdCgpXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGluZy1tZW51XCI+XG4gICAgICAgICAgICAgICAgPG1hdC1pY29uXG4gICAgICAgICAgICAgICAgICAgIGZvbnRTZXQ9XCJub2Rlci1pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgZm9udEljb249XCJpY29uLWNvbnRlbnQtY3V0XCI+PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lbnUtaXRlbS10ZXh0XCI+e3sgJ05PREVSLkxBQkVMLkNVVCcgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJob3Qta2V5c1wiPkN0cmwrWDwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKm5nSWY9XCJjb3B5U2VsZWN0ZWQub2JzZXJ2ZWRcIlxuICAgICAgICAgICAgaWQ9XCJtZW51LWRyb3Bkb3ducy1tZW51LWl0ZW0tY29weVwiXG4gICAgICAgICAgICBtYXQtbWVudS1pdGVtXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWRhdGEuaGFzU2VsZWN0aW9uXCJcbiAgICAgICAgICAgIChjbGljayk9XCJjb3B5U2VsZWN0ZWQuZW1pdCgpXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGluZy1tZW51XCI+XG4gICAgICAgICAgICAgICAgPG1hdC1pY29uXG4gICAgICAgICAgICAgICAgICAgIGZvbnRTZXQ9XCJub2Rlci1pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgZm9udEljb249XCJpY29uLWZpbGUtY29weVwiPjwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZW51LWl0ZW0tdGV4dFwiPnt7ICdOT0RFUi5MQUJFTC5DT1BZJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImhvdC1rZXlzXCI+Q3RybCtDPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cInBhc3RlQ2xpcGJvYXJkRGF0YS5vYnNlcnZlZFwiXG4gICAgICAgICAgICBpZD1cIm1lbnUtZHJvcGRvd25zLW1lbnUtaXRlbS1wYXN0ZVwiXG4gICAgICAgICAgICBtYXQtbWVudS1pdGVtXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWRhdGEuY2xpcGJvYXJkRGF0YT8ubGVuZ3RoXCJcbiAgICAgICAgICAgIChjbGljayk9XCJwYXN0ZUNsaXBib2FyZERhdGEuZW1pdCgpXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGluZy1tZW51XCI+XG4gICAgICAgICAgICAgICAgPG1hdC1pY29uXG4gICAgICAgICAgICAgICAgICAgIGZvbnRTZXQ9XCJub2Rlci1pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgZm9udEljb249XCJpY29uLWNvbnRlbnQtcGFzdGVcIj48L21hdC1pY29uPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWVudS1pdGVtLXRleHRcIj57eyAnTk9ERVIuTEFCRUwuUEFTVEUnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaG90LWtleXNcIj5DdHJsK1Y8L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxociBjbGFzcz1cIm5vZGVyLWRpdmlkZXJcIiAvPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cInNlbGVjdEFsbC5vYnNlcnZlZFwiXG4gICAgICAgICAgICBpZD1cIm1lbnUtZHJvcGRvd25zLW1lbnUtaXRlbS1zZWxlY3QtYWxsXCJcbiAgICAgICAgICAgIG1hdC1tZW51LWl0ZW1cbiAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RBbGwuZW1pdCgpXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGluZy1tZW51XCI+XG4gICAgICAgICAgICAgICAgPG1hdC1pY29uXG4gICAgICAgICAgICAgICAgICAgIGZvbnRTZXQ9XCJub2Rlci1pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgZm9udEljb249XCJpY29uLXNlbGVjdC1hbGxcIj48L21hdC1pY29uPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWVudS1pdGVtLXRleHRcIj57eyAnTk9ERVIuTEFCRUwuU0VMRUNUX0FMTCcgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJob3Qta2V5c1wiPkN0cmwrQTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKm5nSWY9XCJyZW1vdmVTZWxlY3RlZC5vYnNlcnZlZFwiXG4gICAgICAgICAgICBpZD1cIm1lbnUtZHJvcGRvd25zLW1lbnUtaXRlbS1kZWxldGUtdGV4dFwiXG4gICAgICAgICAgICBtYXQtbWVudS1pdGVtXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWRhdGEuaGFzU2VsZWN0aW9uXCJcbiAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmVTZWxlY3RlZC5lbWl0KClcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkaW5nLW1lbnVcIj5cbiAgICAgICAgICAgICAgICA8bWF0LWljb25cbiAgICAgICAgICAgICAgICAgICAgZm9udFNldD1cIm5vZGVyLWljb25cIlxuICAgICAgICAgICAgICAgICAgICBmb250SWNvbj1cImljb24tZGVsZXRlXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lbnUtaXRlbS10ZXh0XCI+e3sgJ05PREVSLkxBQkVMLkRFTEVURScgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgPC9tYXQtbWVudT5cbiAgICA8YnV0dG9uXG4gICAgICAgICpuZ0lmPVwic2hvd0luc2VydCAmJiAhZGF0YS5pc1ZpZXdPbmx5XCJcbiAgICAgICAgI2luc2VydE1lbnVUcmlnZ2VyPVwibWF0TWVudVRyaWdnZXJcIlxuICAgICAgICBpZD1cIm1lbnUtZHJvcGRvd25zLW1lbnUtaW5zZXJ0XCJcbiAgICAgICAgbWF0LWJ1dHRvblxuICAgICAgICBbbWF0TWVudVRyaWdnZXJGb3JdPVwiaW5zZXJ0TWVudVwiXG4gICAgICAgIFttYXRNZW51VHJpZ2dlclJlc3RvcmVGb2N1c109XCJmYWxzZVwiPlxuICAgICAgICB7eyAnTk9ERVIuTEFCRUwuSU5TRVJUJyB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvYnV0dG9uPlxuICAgIDxtYXQtbWVudVxuICAgICAgICAjaW5zZXJ0TWVudT1cIm1hdE1lbnVcIlxuICAgICAgICBjbGFzcz1cIm5vZGVyLW1vZGFsXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICpuZ0lmPVwiaW5zZXJ0SW1hZ2Uub2JzZXJ2ZWRcIlxuICAgICAgICAgICAgaWQ9XCJtZW51LWRyb3Bkb3ducy1tZW51LWl0ZW0taW1hZ2VcIlxuICAgICAgICAgICAgbWF0LW1lbnUtaXRlbVxuICAgICAgICAgICAgKGNsaWNrKT1cImluc2VydEltYWdlLmVtaXQoKVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRpbmctbWVudVwiPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvblxuICAgICAgICAgICAgICAgICAgICBmb250U2V0PVwibm9kZXItaWNvblwiXG4gICAgICAgICAgICAgICAgICAgIGZvbnRJY29uPVwiaWNvbi1pbWFnZVwiPjwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZW51LWl0ZW0tdGV4dFwiPnt7ICdOT0RFUi5MQUJFTC5JTUFHRScgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGlkPVwibWVudS1kcm9wZG93bnMtbWVudS1pdGVtLXRhYmxlXCJcbiAgICAgICAgICAgIG1hdC1tZW51LWl0ZW1cbiAgICAgICAgICAgIFttYXRNZW51VHJpZ2dlckZvcl09XCJ0YWJsZUluc2VydFwiXG4gICAgICAgICAgICAobWVudU9wZW5lZCk9XCJzaG93SW5zZXJ0VGFibGVNZW51ID0gdHJ1ZVwiXG4gICAgICAgICAgICAobWVudUNsb3NlZCk9XCJvblRhYmxlSW5zZXJ0TWVudUNsb3NlZCgpXCI+XG4gICAgICAgICAgICA8bWF0LWljb25cbiAgICAgICAgICAgICAgICBmb250U2V0PVwibm9kZXItaWNvblwiXG4gICAgICAgICAgICAgICAgZm9udEljb249XCJpY29uLXRhYmxlXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgICAgIHt7ICdOT0RFUi5MQUJFTC5UQUJMRScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxociBjbGFzcz1cIm5vZGVyLWRpdmlkZXJcIiAvPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cImluc2VydExpbmsub2JzZXJ2ZWRcIlxuICAgICAgICAgICAgaWQ9XCJtZW51LWRyb3Bkb3ducy1tZW51LWl0ZW0tbGlua1wiXG4gICAgICAgICAgICBtYXQtbWVudS1pdGVtXG4gICAgICAgICAgICAoY2xpY2spPVwiaW5zZXJ0TGluay5lbWl0KClcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkaW5nLW1lbnVcIj5cbiAgICAgICAgICAgICAgICA8bWF0LWljb25cbiAgICAgICAgICAgICAgICAgICAgZm9udFNldD1cIm5vZGVyLWljb25cIlxuICAgICAgICAgICAgICAgICAgICBmb250SWNvbj1cImljb24tbGluay1vblwiPjwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZW51LWl0ZW0tdGV4dFwiPnt7ICdOT0RFUi5MQUJFTC5MSU5LJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImhvdC1rZXlzXCI+Q3RybCtLPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgZWxlbWVudCBvZiBlbGVtZW50c1wiXG4gICAgICAgICAgICBpZD1cIm1lbnUtZHJvcGRvd25zLW1lbnUtaXRlbS17eyBlbGVtZW50Lm5hbWVJZCB9fVwiXG4gICAgICAgICAgICBtYXQtbWVudS1pdGVtXG4gICAgICAgICAgICAoY2xpY2spPVwib25DcmVhdGVFbGVtZW50KGVsZW1lbnQpXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGluZy1tZW51XCI+XG4gICAgICAgICAgICAgICAgPG1hdC1pY29uXG4gICAgICAgICAgICAgICAgICAgIGZvbnRTZXQ9XCJub2Rlci1pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgZm9udEljb249XCJ7eyBlbGVtZW50Lmljb24gfX1cIj48L21hdC1pY29uPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWVudS1pdGVtLXRleHRcIj57eyBlbGVtZW50Lm5hbWVUcmFuc2xhdGUgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGlkPVwibWVudS1kcm9wZG93bnMtbWVudS1pdGVtLWhlYWRlcnMtZm9vdGVyc1wiXG4gICAgICAgICAgICBtYXQtbWVudS1pdGVtXG4gICAgICAgICAgICBjbGFzcz1cImhpZGRlblwiXG4gICAgICAgICAgICBbbWF0TWVudVRyaWdnZXJGb3JdPVwibGlzdEhlYWRlcnNGb290ZXJzTWVudVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRpbmctbWVudVwiPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvblxuICAgICAgICAgICAgICAgICAgICBmb250U2V0PVwibm9kZXItaWNvblwiXG4gICAgICAgICAgICAgICAgICAgIGZvbnRJY29uPVwiaWNvbi1oZWFkZXJzLWZvb3RlcnNcIj48L21hdC1pY29uPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWVudS1pdGVtLXRleHRcIj57eyAnTk9ERVIuTEFCRUwuSEVBREVSU19BTkRfRk9PVEVSUycgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxtYXQtbWVudVxuICAgICAgICAgICAgI2xpc3RIZWFkZXJzRm9vdGVyc01lbnU9XCJtYXRNZW51XCJcbiAgICAgICAgICAgIGNsYXNzPVwibm9kZXItbW9kYWxcIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBpZD1cIm1lbnUtZHJvcGRvd25zLW1lbnUtaXRlbS1oZWFkZXJcIlxuICAgICAgICAgICAgICAgIG1hdC1tZW51LWl0ZW0+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRpbmctbWVudVwiPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb25cbiAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRTZXQ9XCJub2Rlci1pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRJY29uPVwiaWNvbi1oZWFkZXJcIj48L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lbnUtaXRlbS10ZXh0XCI+e3sgJ05PREVSLkxBQkVMLkhFQURFUicgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBpZD1cIm1lbnUtZHJvcGRvd25zLW1lbnUtaXRlbS1mb290ZXJcIlxuICAgICAgICAgICAgICAgIG1hdC1tZW51LWl0ZW0+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRpbmctbWVudVwiPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb25cbiAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRTZXQ9XCJub2Rlci1pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRJY29uPVwiaWNvbi1ib3R0b21cIj48L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lbnUtaXRlbS10ZXh0XCI+e3sgJ05PREVSLkxBQkVMLkZPT1RFUicgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9tYXQtbWVudT5cbiAgICA8L21hdC1tZW51PlxuICAgIDxidXR0b25cbiAgICAgICAgKm5nSWY9XCJzaG93TGF5b3V0ICYmICFkYXRhLmlzVmlld09ubHlcIlxuICAgICAgICBpZD1cIm1lbnUtZHJvcGRvd25zLW1lbnUtbGF5b3V0XCJcbiAgICAgICAgbWF0LWJ1dHRvblxuICAgICAgICBbbWF0TWVudVRyaWdnZXJGb3JdPVwibGF5b3V0TWVudVwiXG4gICAgICAgIFttYXRNZW51VHJpZ2dlclJlc3RvcmVGb2N1c109XCJmYWxzZVwiPlxuICAgICAgICB7eyAnTk9ERVIuTEFCRUwuTEFZT1VUJyB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvYnV0dG9uPlxuICAgIDxtYXQtbWVudVxuICAgICAgICAjbGF5b3V0TWVudT1cIm1hdE1lbnVcIlxuICAgICAgICBjbGFzcz1cIm5vZGVyLW1vZGFsXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICpuZ0lmPVwiaW5zZXJ0UGFnZUJyZWFrLm9ic2VydmVkXCJcbiAgICAgICAgICAgIGlkPVwibWVudS1kcm9wZG93bnMtbWVudS1pdGVtLXBhZ2UtYnJlYWtcIlxuICAgICAgICAgICAgbWF0LW1lbnUtaXRlbVxuICAgICAgICAgICAgKGNsaWNrKT1cImluc2VydFBhZ2VCcmVhay5lbWl0KClcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkaW5nLW1lbnVcIj5cbiAgICAgICAgICAgICAgICA8bWF0LWljb25cbiAgICAgICAgICAgICAgICAgICAgZm9udFNldD1cIm5vZGVyLWljb25cIlxuICAgICAgICAgICAgICAgICAgICBmb250SWNvbj1cImljb24tcGFnZS1icmVha1wiPjwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZW51LWl0ZW0tdGV4dFwiPnt7ICdOT0RFUi5MQUJFTC5QQUdFX0JSRUFLJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImhvdC1rZXlzXCI+Q3RybCtFbnRlcjwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L21hdC1tZW51PlxuICAgIDxidXR0b25cbiAgICAgICAgKm5nSWY9XCJzaG93Rm9ybWF0ICYmICFkYXRhLmlzVmlld09ubHlcIlxuICAgICAgICBpZD1cIm1lbnUtZHJvcGRvd25zLW1lbnUtZm9ybWF0XCJcbiAgICAgICAgbWF0LWJ1dHRvblxuICAgICAgICBbbWF0TWVudVRyaWdnZXJGb3JdPVwiZm9ybWF0TWVudVwiXG4gICAgICAgIFttYXRNZW51VHJpZ2dlclJlc3RvcmVGb2N1c109XCJmYWxzZVwiPlxuICAgICAgICB7eyAnTk9ERVIuTEFCRUwuRk9STUFUJyB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvYnV0dG9uPlxuICAgIDxtYXQtbWVudVxuICAgICAgICAjZm9ybWF0TWVudT1cIm1hdE1lbnVcIlxuICAgICAgICBjbGFzcz1cIm5vZGVyLW1vZGFsXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGlkPVwibWVudS1kcm9wZG93bnMtbWVudS1pdGVtLWFsaWduXCJcbiAgICAgICAgICAgIG1hdC1tZW51LWl0ZW1cbiAgICAgICAgICAgIFttYXRNZW51VHJpZ2dlckZvcl09XCJsaXN0QWxpZ25NZW51XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGluZy1tZW51XCI+XG4gICAgICAgICAgICAgICAgPG1hdC1pY29uXG4gICAgICAgICAgICAgICAgICAgIGZvbnRTZXQ9XCJub2Rlci1pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgZm9udEljb249XCJpY29uLWZvcm1hdC1hbGlnbmxlZnRcIj48L21hdC1pY29uPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWVudS1pdGVtLXRleHRcIj57eyAnTk9ERVIuTEFCRUwuQUxJR04nIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8bWF0LW1lbnVcbiAgICAgICAgICAgICNsaXN0QWxpZ25NZW51PVwibWF0TWVudVwiXG4gICAgICAgICAgICBjbGFzcz1cIm5vZGVyLW1vZGFsXCI+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgaWQ9XCJtZW51LWRyb3Bkb3ducy1tZW51LWl0ZW0tYWxpZ24tbGVmdFwiXG4gICAgICAgICAgICAgICAgbWF0LW1lbnUtaXRlbVxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvblNlbGVjdEZvcm1hdChhbGlnbm1lbnRzLkxlZnQpXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRpbmctbWVudVwiPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb25cbiAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRTZXQ9XCJub2Rlci1pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRJY29uPVwiaWNvbi1mb3JtYXQtYWxpZ25sZWZ0XCI+PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZW51LWl0ZW0tdGV4dFwiPnt7ICdOT0RFUi5MQUJFTC5MRUZUJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJob3Qta2V5c1wiPkN0cmwrTDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGlkPVwibWVudS1kcm9wZG93bnMtbWVudS1pdGVtLWFsaWduLWNlbnRlclwiXG4gICAgICAgICAgICAgICAgbWF0LW1lbnUtaXRlbVxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvblNlbGVjdEZvcm1hdChhbGlnbm1lbnRzLkNlbnRlcilcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGluZy1tZW51XCI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgZm9udFNldD1cIm5vZGVyLWljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgZm9udEljb249XCJpY29uLWZvcm1hdC1hbGlnbmNlbnRlclwiPjwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWVudS1pdGVtLXRleHRcIj57eyAnTk9ERVIuTEFCRUwuQ0VOVEVSJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJob3Qta2V5c1wiPkN0cmwrRTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGlkPVwibWVudS1kcm9wZG93bnMtbWVudS1pdGVtLWFsaWduLXJpZ2h0XCJcbiAgICAgICAgICAgICAgICBtYXQtbWVudS1pdGVtXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uU2VsZWN0Rm9ybWF0KGFsaWdubWVudHMuUmlnaHQpXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRpbmctbWVudVwiPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb25cbiAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRTZXQ9XCJub2Rlci1pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRJY29uPVwiaWNvbi1mb3JtYXQtYWxpZ25yaWdodFwiPjwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWVudS1pdGVtLXRleHRcIj57eyAnTk9ERVIuTEFCRUwuUklHSFQnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImhvdC1rZXlzXCI+Q3RybCtSPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvbWF0LW1lbnU+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGlkPVwibWVudS1kcm9wZG93bnMtbWVudS1pdGVtLWJ1bGxldHMtbnVtYmVyaW5nXCJcbiAgICAgICAgICAgIG1hdC1tZW51LWl0ZW1cbiAgICAgICAgICAgIFttYXRNZW51VHJpZ2dlckZvcl09XCJsaXN0QnVsbGV0c051bWJlcmluZ01lbnVcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkaW5nLW1lbnVcIj5cbiAgICAgICAgICAgICAgICA8bWF0LWljb25cbiAgICAgICAgICAgICAgICAgICAgZm9udFNldD1cIm5vZGVyLWljb25cIlxuICAgICAgICAgICAgICAgICAgICBmb250SWNvbj1cImljb24tZm9ybWF0LWJ1bGxldGVkXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lbnUtaXRlbS10ZXh0XCI+e3sgJ05PREVSLkxBQkVMLkJVTExFVFNfQU5EX05VTUJFUklORycgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxtYXQtbWVudVxuICAgICAgICAgICAgI2xpc3RCdWxsZXRzTnVtYmVyaW5nTWVudT1cIm1hdE1lbnVcIlxuICAgICAgICAgICAgY2xhc3M9XCJub2Rlci1tb2RhbFwiPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGlkPVwibWVudS1kcm9wZG93bnMtbWVudS1pdGVtLWJ1bGxldHNcIlxuICAgICAgICAgICAgICAgIG1hdC1tZW51LWl0ZW1cbiAgICAgICAgICAgICAgICBbbWF0TWVudVRyaWdnZXJGb3JdPVwibGlzdEJ1bGxldGVkTWVudVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkaW5nLW1lbnVcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgICBmb250U2V0PVwibm9kZXItaWNvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBmb250SWNvbj1cImljb24tZm9ybWF0LWJ1bGxldGVkXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZW51LWl0ZW0tdGV4dFwiPnt7ICdOT0RFUi5MQUJFTC5CVUxMRVRfTElTVF9NRU5VJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPG1hdC1tZW51XG4gICAgICAgICAgICAgICAgI2xpc3RCdWxsZXRlZE1lbnU9XCJtYXRNZW51XCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duLW51bWJlcmluZy1vdmVybGF5IG5vZGVyLW1vZGFsXCJcbiAgICAgICAgICAgICAgICB5UG9zaXRpb249XCJiZWxvd1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsaXN0LWljb24gbGlzdC1tYXJrZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgICBzdmdJY29uPVwibWFya2VyLTFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnNlbGVjdGVkXT1cIm51bWJlcmluZ1RlbXBsYXRlVHlwZSA9PT0gbnVtYmVyaW5nVGVtcGxhdGVUeXBlcy5CdWxsZXRMaXN0MVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25TZWxlY3ROdW1iZXJpbmdUZW1wbGF0ZShudW1iZXJpbmdUZW1wbGF0ZVR5cGVzLkJ1bGxldExpc3QxKVwiPjwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgc3ZnSWNvbj1cIm1hcmtlci0yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5zZWxlY3RlZF09XCJudW1iZXJpbmdUZW1wbGF0ZVR5cGUgPT09IG51bWJlcmluZ1RlbXBsYXRlVHlwZXMuQnVsbGV0TGlzdDJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uU2VsZWN0TnVtYmVyaW5nVGVtcGxhdGUobnVtYmVyaW5nVGVtcGxhdGVUeXBlcy5CdWxsZXRMaXN0MilcIj48L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb25cbiAgICAgICAgICAgICAgICAgICAgICAgIHN2Z0ljb249XCJtYXJrZXItM1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3Muc2VsZWN0ZWRdPVwibnVtYmVyaW5nVGVtcGxhdGVUeXBlID09PSBudW1iZXJpbmdUZW1wbGF0ZVR5cGVzLkJ1bGxldExpc3QzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvblNlbGVjdE51bWJlcmluZ1RlbXBsYXRlKG51bWJlcmluZ1RlbXBsYXRlVHlwZXMuQnVsbGV0TGlzdDMpXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGlzdC1pY29uIGxpc3QtbWFya2VyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgc3ZnSWNvbj1cIm1hcmtlci00XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5zZWxlY3RlZF09XCJudW1iZXJpbmdUZW1wbGF0ZVR5cGUgPT09IG51bWJlcmluZ1RlbXBsYXRlVHlwZXMuQnVsbGV0TGlzdDRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uU2VsZWN0TnVtYmVyaW5nVGVtcGxhdGUobnVtYmVyaW5nVGVtcGxhdGVUeXBlcy5CdWxsZXRMaXN0NClcIj48L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb25cbiAgICAgICAgICAgICAgICAgICAgICAgIHN2Z0ljb249XCJtYXJrZXItNVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3Muc2VsZWN0ZWRdPVwibnVtYmVyaW5nVGVtcGxhdGVUeXBlID09PSBudW1iZXJpbmdUZW1wbGF0ZVR5cGVzLkJ1bGxldExpc3Q1XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvblNlbGVjdE51bWJlcmluZ1RlbXBsYXRlKG51bWJlcmluZ1RlbXBsYXRlVHlwZXMuQnVsbGV0TGlzdDUpXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgICBzdmdJY29uPVwibWFya2VyLTZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnNlbGVjdGVkXT1cIm51bWJlcmluZ1RlbXBsYXRlVHlwZSA9PT0gbnVtYmVyaW5nVGVtcGxhdGVUeXBlcy5CdWxsZXRMaXN0NlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25TZWxlY3ROdW1iZXJpbmdUZW1wbGF0ZShudW1iZXJpbmdUZW1wbGF0ZVR5cGVzLkJ1bGxldExpc3Q2KVwiPjwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L21hdC1tZW51PlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGlkPVwibWVudS1kcm9wZG93bnMtbWVudS1pdGVtLW51bWJlcmluZ1wiXG4gICAgICAgICAgICAgICAgbWF0LW1lbnUtaXRlbVxuICAgICAgICAgICAgICAgIFttYXRNZW51VHJpZ2dlckZvcl09XCJsaXN0TnVtYmVyZWRNZW51XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRpbmctbWVudVwiPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb25cbiAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRTZXQ9XCJub2Rlci1pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRJY29uPVwiaWNvbi1mb3JtYXQtbnVtYmVyZWRcIj48L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lbnUtaXRlbS10ZXh0XCI+e3sgJ05PREVSLkxBQkVMLk5VTUJFUkVEX0xJU1RfTUVOVScgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxtYXQtbWVudVxuICAgICAgICAgICAgICAgICNsaXN0TnVtYmVyZWRNZW51PVwibWF0TWVudVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93bi1udW1iZXJpbmctb3ZlcmxheSBub2Rlci1tb2RhbFwiXG4gICAgICAgICAgICAgICAgeVBvc2l0aW9uPVwiYmVsb3dcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGlzdC1pY29uIGxpc3QtbnVtYmVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgc3ZnSWNvbj1cIm51bWJlci0xXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5zZWxlY3RlZF09XCJudW1iZXJpbmdUZW1wbGF0ZVR5cGUgPT09IG51bWJlcmluZ1RlbXBsYXRlVHlwZXMuTnVtYmVyTGlzdDFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uU2VsZWN0TnVtYmVyaW5nVGVtcGxhdGUobnVtYmVyaW5nVGVtcGxhdGVUeXBlcy5OdW1iZXJMaXN0MSlcIj48L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb25cbiAgICAgICAgICAgICAgICAgICAgICAgIHN2Z0ljb249XCJudW1iZXItMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3Muc2VsZWN0ZWRdPVwibnVtYmVyaW5nVGVtcGxhdGVUeXBlID09PSBudW1iZXJpbmdUZW1wbGF0ZVR5cGVzLk51bWJlckxpc3QyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvblNlbGVjdE51bWJlcmluZ1RlbXBsYXRlKG51bWJlcmluZ1RlbXBsYXRlVHlwZXMuTnVtYmVyTGlzdDIpXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgICBzdmdJY29uPVwibnVtYmVyLTNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnNlbGVjdGVkXT1cIm51bWJlcmluZ1RlbXBsYXRlVHlwZSA9PT0gbnVtYmVyaW5nVGVtcGxhdGVUeXBlcy5OdW1iZXJMaXN0M1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25TZWxlY3ROdW1iZXJpbmdUZW1wbGF0ZShudW1iZXJpbmdUZW1wbGF0ZVR5cGVzLk51bWJlckxpc3QzKVwiPjwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxpc3QtaWNvbiBsaXN0LW51bWJlclwiPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb25cbiAgICAgICAgICAgICAgICAgICAgICAgIHN2Z0ljb249XCJudW1iZXItNFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3Muc2VsZWN0ZWRdPVwibnVtYmVyaW5nVGVtcGxhdGVUeXBlID09PSBudW1iZXJpbmdUZW1wbGF0ZVR5cGVzLk51bWJlckxpc3Q0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvblNlbGVjdE51bWJlcmluZ1RlbXBsYXRlKG51bWJlcmluZ1RlbXBsYXRlVHlwZXMuTnVtYmVyTGlzdDQpXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgICBzdmdJY29uPVwibnVtYmVyLTVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnNlbGVjdGVkXT1cIm51bWJlcmluZ1RlbXBsYXRlVHlwZSA9PT0gbnVtYmVyaW5nVGVtcGxhdGVUeXBlcy5OdW1iZXJMaXN0NVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25TZWxlY3ROdW1iZXJpbmdUZW1wbGF0ZShudW1iZXJpbmdUZW1wbGF0ZVR5cGVzLk51bWJlckxpc3Q1KVwiPjwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgc3ZnSWNvbj1cIm51bWJlci02XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5zZWxlY3RlZF09XCJudW1iZXJpbmdUZW1wbGF0ZVR5cGUgPT09IG51bWJlcmluZ1RlbXBsYXRlVHlwZXMuTnVtYmVyTGlzdDZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uU2VsZWN0TnVtYmVyaW5nVGVtcGxhdGUobnVtYmVyaW5nVGVtcGxhdGVUeXBlcy5OdW1iZXJMaXN0NilcIj48L21hdC1pY29uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9tYXQtbWVudT5cbiAgICAgICAgPC9tYXQtbWVudT5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgaWQ9XCJtZW51LWRyb3Bkb3ducy1tZW51LWl0ZW0tdGV4dFwiXG4gICAgICAgICAgICBtYXQtbWVudS1pdGVtXG4gICAgICAgICAgICBbbWF0TWVudVRyaWdnZXJGb3JdPVwibGlzdFRleHRNZW51XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGluZy1tZW51XCI+XG4gICAgICAgICAgICAgICAgPG1hdC1pY29uXG4gICAgICAgICAgICAgICAgICAgIGZvbnRTZXQ9XCJub2Rlci1pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgZm9udEljb249XCJpY29uLWZvcm1hdC1ib2xkXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lbnUtaXRlbS10ZXh0XCI+e3sgJ05PREVSLkxBQkVMLlRFWFQnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8bWF0LW1lbnVcbiAgICAgICAgICAgICNsaXN0VGV4dE1lbnU9XCJtYXRNZW51XCJcbiAgICAgICAgICAgIGNsYXNzPVwibm9kZXItbW9kYWxcIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBpZD1cIm1lbnUtZHJvcGRvd25zLW1lbnUtaXRlbS1ib2xkXCJcbiAgICAgICAgICAgICAgICBtYXQtbWVudS1pdGVtXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQXBwbHlCb2xkKClcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGluZy1tZW51XCI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgZm9udFNldD1cIm5vZGVyLWljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgZm9udEljb249XCJpY29uLWZvcm1hdC1ib2xkXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZW51LWl0ZW0tdGV4dFwiPnt7ICdOT0RFUi5MQUJFTC5CT0xEJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJob3Qta2V5c1wiPkN0cmwrQjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGlkPVwibWVudS1kcm9wZG93bnMtbWVudS1pdGVtLWl0YWxpY1wiXG4gICAgICAgICAgICAgICAgbWF0LW1lbnUtaXRlbVxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkFwcGx5SXRhbGljKClcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGluZy1tZW51XCI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgZm9udFNldD1cIm5vZGVyLWljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgZm9udEljb249XCJpY29uLWZvcm1hdC1pdGFsaWNcIj48L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lbnUtaXRlbS10ZXh0XCI+e3sgJ05PREVSLkxBQkVMLklUQUxJQycgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaG90LWtleXNcIj5DdHJsK0k8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBpZD1cIm1lbnUtZHJvcGRvd25zLW1lbnUtaXRlbS11bmRlcmxpbmVkXCJcbiAgICAgICAgICAgICAgICBtYXQtbWVudS1pdGVtXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQXBwbHlVbmRlcmxpbmUoKVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkaW5nLW1lbnVcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgICBmb250U2V0PVwibm9kZXItaWNvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBmb250SWNvbj1cImljb24tZm9ybWF0LXVuZGVybGluZWRcIj48L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lbnUtaXRlbS10ZXh0XCI+e3sgJ05PREVSLkxBQkVMLlVOREVSTElORUQnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImhvdC1rZXlzXCI+Q3RybCtVPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvbWF0LW1lbnU+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGlkPVwibWVudS1kcm9wZG93bnMtbWVudS1pdGVtLWhlYWRlci1mb290ZXJcIlxuICAgICAgICAgICAgbWF0LW1lbnUtaXRlbVxuICAgICAgICAgICAgY2xhc3M9XCJoaWRkZW5cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkaW5nLW1lbnVcIj5cbiAgICAgICAgICAgICAgICA8bWF0LWljb25cbiAgICAgICAgICAgICAgICAgICAgZm9udFNldD1cIm5vZGVyLWljb25cIlxuICAgICAgICAgICAgICAgICAgICBmb250SWNvbj1cImljb24taGVhZGVycy1mb290ZXJzXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lbnUtaXRlbS10ZXh0XCI+e3sgJ05PREVSLkxBQkVMLkhFQURFUlNfQU5EX0ZPT1RFUlMnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvbWF0LW1lbnU+XG4gICAgPG1hdC1tZW51XG4gICAgICAgICN0YWJsZUluc2VydD1cIm1hdE1lbnVcIlxuICAgICAgICBjbGFzcz1cImluc2VydC10YWJsZSBub2Rlci1tb2RhbFwiPlxuICAgICAgICA8YXBwLW5vZC1pbnNlcnQtdGFibGVcbiAgICAgICAgICAgICpuZ0lmPVwic2hvd0luc2VydFRhYmxlTWVudVwiXG4gICAgICAgICAgICAoc2VsZWN0U2l6ZXMpPVwiaW5zZXJ0VGFibGUuZW1pdCgkZXZlbnQpXCIgLz5cbiAgICA8L21hdC1tZW51PlxuPC9uZy1jb250YWluZXI+XG4iXX0=
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component } from '@angular/core';
|
|
2
|
-
import { EXTERNAL_ELEMENT_SERVICE } from '../../../../editor/components/external-element/external-elements.const';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "../../../../editor/interaction/editor.service";
|
|
5
|
-
import * as i2 from "../../shared/services/toolbar-core.service";
|
|
6
|
-
import * as i3 from "@angular/common";
|
|
7
|
-
import * as i4 from "@angular/material/expansion";
|
|
8
|
-
import * as i5 from "@angular/material/icon";
|
|
9
|
-
import * as i6 from "@angular/material/menu";
|
|
10
|
-
import * as i7 from "@ngx-translate/core";
|
|
11
|
-
export class MenuDropdownsMobileComponent {
|
|
12
|
-
constructor(injector, editorService, toolbarCoreService) {
|
|
13
|
-
this.injector = injector;
|
|
14
|
-
this.editorService = editorService;
|
|
15
|
-
this.toolbarCoreService = toolbarCoreService;
|
|
16
|
-
this.elements = this.injector.get(EXTERNAL_ELEMENT_SERVICE).elements;
|
|
17
|
-
}
|
|
18
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MenuDropdownsMobileComponent, deps: [{ token: i0.Injector }, { token: i1.EditorService }, { token: i2.ToolbarCoreService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
19
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MenuDropdownsMobileComponent, selector: "app-nod-menu-dropdowns-mobile", ngImport: i0, template: "<ng-container\n *ngIf=\"{\n isViewOnly: editorService.isViewOnly$ | async\n } as data\">\n <mat-accordion>\n <mat-expansion-panel hideToggle>\n <mat-expansion-panel-header>\n <mat-panel-title>{{ 'NODER.LABEL.FILE' | translate }}</mat-panel-title>\n <mat-panel-description>\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-arrow-dropdown\" />\n </mat-panel-description>\n </mat-expansion-panel-header>\n <div class=\"expansion-panel-content\">\n <button\n *ngIf=\"!data.isViewOnly\"\n id=\"menu-dropdowns-mobile-item-new\"\n mat-menu-item\n (click)=\"toolbarCoreService.actions.new(); toolbarCoreService.reset()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-add-new\" />\n <span class=\"menu-item-text\">{{ 'NODER.LABEL.NEW' | translate }}</span>\n </div>\n </button>\n <button\n *ngIf=\"!data.isViewOnly\"\n id=\"menu-dropdowns-mobile-item-open-from\"\n mat-menu-item\n (click)=\"toolbarCoreService.actions.openFrom(); toolbarCoreService.reset()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-open-from\" />\n <span class=\"menu-item-text\">{{ 'NODER.LABEL.OPEN_FROM' | translate }}</span>\n </div>\n </button>\n <button\n id=\"menu-dropdowns-mobile-item-save-as\"\n mat-menu-item\n (click)=\"toolbarCoreService.actions.saveAs(); toolbarCoreService.reset()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-save\" />\n <span class=\"menu-item-text\">{{ 'NODER.LABEL.SAVE_AS' | translate }}</span>\n </div>\n </button>\n <button\n id=\"menu-dropdowns-mobile-item-rename\"\n mat-menu-item\n (click)=\"toolbarCoreService.actions.rename(); toolbarCoreService.reset()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-rename\" />\n <span class=\"menu-item-text\">{{ 'NODER.LABEL.RENAME' | translate }}</span>\n </div>\n </button>\n <button\n id=\"menu-dropdowns-mobile-item-print\"\n mat-menu-item\n (click)=\"toolbarCoreService.actions.print(); toolbarCoreService.reset()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-print\" />\n <span class=\"menu-item-text\">{{ 'NODER.LABEL.PRINT' | translate }}</span>\n </div>\n </button>\n <button\n id=\"menu-dropdowns-mobile-item-delete\"\n mat-menu-item\n (click)=\"toolbarCoreService.actions.delete(); toolbarCoreService.reset()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-delete\" />\n <span class=\"menu-item-text\">{{ 'NODER.LABEL.DELETE' | translate }}</span>\n </div>\n </button>\n </div>\n </mat-expansion-panel>\n <ng-container *ngIf=\"!data.isViewOnly\">\n <mat-expansion-panel hideToggle>\n <mat-expansion-panel-header>\n <mat-panel-title>{{ 'NODER.LABEL.INSERT' | translate }}</mat-panel-title>\n <mat-panel-description>\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-arrow-dropdown\" />\n </mat-panel-description>\n </mat-expansion-panel-header>\n <div class=\"expansion-panel-content\">\n <button\n id=\"menu-dropdowns-mobile-item-image\"\n mat-menu-item\n (click)=\"toolbarCoreService.actions.insertImage(); toolbarCoreService.reset()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-image\" />\n <span class=\"menu-item-text\">{{ 'NODER.LABEL.IMAGE' | translate }}</span>\n </div>\n </button>\n <div class=\"composition-button\">\n <button\n id=\"menu-dropdowns-mobile-item-table\"\n mat-menu-item\n (click)=\"toolbarCoreService.actions.insertTable()\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-table\" />\n {{ 'NODER.LABEL.TABLE' | translate }}\n </button>\n <mat-icon\n class=\"composition-icon\"\n fontSet=\"noder-icon\"\n fontIcon=\"icon-arrow-dropdown\" />\n </div>\n <div class=\"composition-button\">\n <button\n id=\"menu-dropdowns-mobile-item-link\"\n mat-menu-item\n (click)=\"toolbarCoreService.actions.insertLink()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-link-on\" />\n <span class=\"menu-item-text\">{{ 'NODER.LABEL.LINK' | translate }}</span>\n </div>\n </button>\n <mat-icon\n class=\"composition-icon\"\n fontSet=\"noder-icon\"\n fontIcon=\"icon-arrow-dropdown\" />\n </div>\n <button\n *ngFor=\"let element of elements\"\n id=\"menu-dropdowns-mobile-item-{{ element.nameId }}\"\n mat-menu-item\n (click)=\"toolbarCoreService.actions.insertCustomElement(element); toolbarCoreService.reset()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"{{ element.icon }}\" />\n <span class=\"menu-item-text\">{{ element.nameTranslate | translate }}</span>\n </div>\n </button>\n <div class=\"composition-button hidden\">\n <button\n id=\"menu-dropdowns-mobile-item-headers-footers\"\n mat-menu-item>\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-headers-footers\" />\n <span class=\"menu-item-text\">{{ 'NODER.LABEL.HEADERS_AND_FOOTERS' | translate }}</span>\n </div>\n </button>\n <mat-icon\n class=\"composition-icon\"\n fontSet=\"noder-icon\"\n fontIcon=\"icon-arrow-dropdown\" />\n </div>\n </div>\n </mat-expansion-panel>\n <mat-expansion-panel hideToggle>\n <mat-expansion-panel-header>\n <mat-panel-title>{{ 'NODER.LABEL.LAYOUT' | translate }}</mat-panel-title>\n <mat-panel-description>\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-arrow-dropdown\" />\n </mat-panel-description>\n </mat-expansion-panel-header>\n <div class=\"expansion-panel-content\">\n <button\n id=\"menu-dropdowns-mobile-item-page-break\"\n mat-menu-item\n (click)=\"toolbarCoreService.actions.insertPageBreak(); toolbarCoreService.reset()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-page-break\" />\n <span class=\"menu-item-text\">{{ 'NODER.LABEL.PAGE_BREAK' | translate }}</span>\n </div>\n </button>\n </div>\n </mat-expansion-panel>\n <mat-expansion-panel hideToggle>\n <mat-expansion-panel-header>\n <mat-panel-title>{{ 'NODER.LABEL.FORMAT' | translate }}</mat-panel-title>\n <mat-panel-description>\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-arrow-dropdown\" />\n </mat-panel-description>\n </mat-expansion-panel-header>\n <div class=\"expansion-panel-content\">\n <div class=\"composition-button\">\n <button\n id=\"menu-dropdowns-mobile-text-format\"\n mat-menu-item\n (click)=\"toolbarCoreService.actions.textFormat()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-text\" />\n <span class=\"menu-item-text\">{{ 'NODER.LABEL.TEXT_FORMAT' | translate }}</span>\n </div>\n <mat-icon\n class=\"composition-icon\"\n fontSet=\"noder-icon\"\n fontIcon=\"icon-arrow-dropdown\" />\n </button>\n </div>\n <div class=\"composition-button hidden\">\n <button\n id=\"menu-dropdowns-mobile-header-footer\"\n mat-menu-item>\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-headers-footers\" />\n <span class=\"menu-item-text\">{{ 'NODER.LABEL.HEADERS_AND_FOOTERS' | translate }}</span>\n </div>\n <mat-icon\n class=\"composition-icon\"\n fontSet=\"noder-icon\"\n fontIcon=\"icon-arrow-dropdown\" />\n </button>\n </div>\n </div>\n </mat-expansion-panel>\n </ng-container>\n </mat-accordion>\n</ng-container>\n", styles: [":host{display:flex;flex-direction:column;padding:25px}mat-expansion-panel.mat-expansion-panel ::ng-deep{box-shadow:none;border-bottom-width:1px;border-bottom-style:solid}mat-expansion-panel.mat-expansion-panel ::ng-deep .mat-expansion-panel-body{padding:0 18px}mat-panel-description{margin:0;justify-content:flex-end}.mat-expansion-panel-spacing{margin:0}.mat-expansion-panel-header,.mat-expansion-panel-header.mat-expanded{height:48px;padding-right:10px}.mat-expansion-panel-header.mat-expanded .mat-expansion-panel-header-description .mat-icon{transform:rotate(180deg)}.heading-menu{display:inline-flex;width:100%}.menu-item-text{white-space:nowrap;align-self:center}.composition-button{display:flex;flex-direction:row;align-items:center;position:relative}.composition-icon{position:absolute;right:0;transform:rotate(270deg)}.hidden{display:none}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.MatAccordion, selector: "mat-accordion", inputs: ["hideToggle", "displayMode", "togglePosition"], exportAs: ["matAccordion"] }, { kind: "component", type: i4.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i4.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["expandedHeight", "collapsedHeight", "tabIndex"] }, { kind: "directive", type: i4.MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "directive", type: i4.MatExpansionPanelDescription, selector: "mat-panel-description" }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i6.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
20
|
-
}
|
|
21
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MenuDropdownsMobileComponent, decorators: [{
|
|
22
|
-
type: Component,
|
|
23
|
-
args: [{ selector: 'app-nod-menu-dropdowns-mobile', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container\n *ngIf=\"{\n isViewOnly: editorService.isViewOnly$ | async\n } as data\">\n <mat-accordion>\n <mat-expansion-panel hideToggle>\n <mat-expansion-panel-header>\n <mat-panel-title>{{ 'NODER.LABEL.FILE' | translate }}</mat-panel-title>\n <mat-panel-description>\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-arrow-dropdown\" />\n </mat-panel-description>\n </mat-expansion-panel-header>\n <div class=\"expansion-panel-content\">\n <button\n *ngIf=\"!data.isViewOnly\"\n id=\"menu-dropdowns-mobile-item-new\"\n mat-menu-item\n (click)=\"toolbarCoreService.actions.new(); toolbarCoreService.reset()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-add-new\" />\n <span class=\"menu-item-text\">{{ 'NODER.LABEL.NEW' | translate }}</span>\n </div>\n </button>\n <button\n *ngIf=\"!data.isViewOnly\"\n id=\"menu-dropdowns-mobile-item-open-from\"\n mat-menu-item\n (click)=\"toolbarCoreService.actions.openFrom(); toolbarCoreService.reset()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-open-from\" />\n <span class=\"menu-item-text\">{{ 'NODER.LABEL.OPEN_FROM' | translate }}</span>\n </div>\n </button>\n <button\n id=\"menu-dropdowns-mobile-item-save-as\"\n mat-menu-item\n (click)=\"toolbarCoreService.actions.saveAs(); toolbarCoreService.reset()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-save\" />\n <span class=\"menu-item-text\">{{ 'NODER.LABEL.SAVE_AS' | translate }}</span>\n </div>\n </button>\n <button\n id=\"menu-dropdowns-mobile-item-rename\"\n mat-menu-item\n (click)=\"toolbarCoreService.actions.rename(); toolbarCoreService.reset()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-rename\" />\n <span class=\"menu-item-text\">{{ 'NODER.LABEL.RENAME' | translate }}</span>\n </div>\n </button>\n <button\n id=\"menu-dropdowns-mobile-item-print\"\n mat-menu-item\n (click)=\"toolbarCoreService.actions.print(); toolbarCoreService.reset()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-print\" />\n <span class=\"menu-item-text\">{{ 'NODER.LABEL.PRINT' | translate }}</span>\n </div>\n </button>\n <button\n id=\"menu-dropdowns-mobile-item-delete\"\n mat-menu-item\n (click)=\"toolbarCoreService.actions.delete(); toolbarCoreService.reset()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-delete\" />\n <span class=\"menu-item-text\">{{ 'NODER.LABEL.DELETE' | translate }}</span>\n </div>\n </button>\n </div>\n </mat-expansion-panel>\n <ng-container *ngIf=\"!data.isViewOnly\">\n <mat-expansion-panel hideToggle>\n <mat-expansion-panel-header>\n <mat-panel-title>{{ 'NODER.LABEL.INSERT' | translate }}</mat-panel-title>\n <mat-panel-description>\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-arrow-dropdown\" />\n </mat-panel-description>\n </mat-expansion-panel-header>\n <div class=\"expansion-panel-content\">\n <button\n id=\"menu-dropdowns-mobile-item-image\"\n mat-menu-item\n (click)=\"toolbarCoreService.actions.insertImage(); toolbarCoreService.reset()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-image\" />\n <span class=\"menu-item-text\">{{ 'NODER.LABEL.IMAGE' | translate }}</span>\n </div>\n </button>\n <div class=\"composition-button\">\n <button\n id=\"menu-dropdowns-mobile-item-table\"\n mat-menu-item\n (click)=\"toolbarCoreService.actions.insertTable()\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-table\" />\n {{ 'NODER.LABEL.TABLE' | translate }}\n </button>\n <mat-icon\n class=\"composition-icon\"\n fontSet=\"noder-icon\"\n fontIcon=\"icon-arrow-dropdown\" />\n </div>\n <div class=\"composition-button\">\n <button\n id=\"menu-dropdowns-mobile-item-link\"\n mat-menu-item\n (click)=\"toolbarCoreService.actions.insertLink()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-link-on\" />\n <span class=\"menu-item-text\">{{ 'NODER.LABEL.LINK' | translate }}</span>\n </div>\n </button>\n <mat-icon\n class=\"composition-icon\"\n fontSet=\"noder-icon\"\n fontIcon=\"icon-arrow-dropdown\" />\n </div>\n <button\n *ngFor=\"let element of elements\"\n id=\"menu-dropdowns-mobile-item-{{ element.nameId }}\"\n mat-menu-item\n (click)=\"toolbarCoreService.actions.insertCustomElement(element); toolbarCoreService.reset()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"{{ element.icon }}\" />\n <span class=\"menu-item-text\">{{ element.nameTranslate | translate }}</span>\n </div>\n </button>\n <div class=\"composition-button hidden\">\n <button\n id=\"menu-dropdowns-mobile-item-headers-footers\"\n mat-menu-item>\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-headers-footers\" />\n <span class=\"menu-item-text\">{{ 'NODER.LABEL.HEADERS_AND_FOOTERS' | translate }}</span>\n </div>\n </button>\n <mat-icon\n class=\"composition-icon\"\n fontSet=\"noder-icon\"\n fontIcon=\"icon-arrow-dropdown\" />\n </div>\n </div>\n </mat-expansion-panel>\n <mat-expansion-panel hideToggle>\n <mat-expansion-panel-header>\n <mat-panel-title>{{ 'NODER.LABEL.LAYOUT' | translate }}</mat-panel-title>\n <mat-panel-description>\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-arrow-dropdown\" />\n </mat-panel-description>\n </mat-expansion-panel-header>\n <div class=\"expansion-panel-content\">\n <button\n id=\"menu-dropdowns-mobile-item-page-break\"\n mat-menu-item\n (click)=\"toolbarCoreService.actions.insertPageBreak(); toolbarCoreService.reset()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-page-break\" />\n <span class=\"menu-item-text\">{{ 'NODER.LABEL.PAGE_BREAK' | translate }}</span>\n </div>\n </button>\n </div>\n </mat-expansion-panel>\n <mat-expansion-panel hideToggle>\n <mat-expansion-panel-header>\n <mat-panel-title>{{ 'NODER.LABEL.FORMAT' | translate }}</mat-panel-title>\n <mat-panel-description>\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-arrow-dropdown\" />\n </mat-panel-description>\n </mat-expansion-panel-header>\n <div class=\"expansion-panel-content\">\n <div class=\"composition-button\">\n <button\n id=\"menu-dropdowns-mobile-text-format\"\n mat-menu-item\n (click)=\"toolbarCoreService.actions.textFormat()\">\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-text\" />\n <span class=\"menu-item-text\">{{ 'NODER.LABEL.TEXT_FORMAT' | translate }}</span>\n </div>\n <mat-icon\n class=\"composition-icon\"\n fontSet=\"noder-icon\"\n fontIcon=\"icon-arrow-dropdown\" />\n </button>\n </div>\n <div class=\"composition-button hidden\">\n <button\n id=\"menu-dropdowns-mobile-header-footer\"\n mat-menu-item>\n <div class=\"heading-menu\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-headers-footers\" />\n <span class=\"menu-item-text\">{{ 'NODER.LABEL.HEADERS_AND_FOOTERS' | translate }}</span>\n </div>\n <mat-icon\n class=\"composition-icon\"\n fontSet=\"noder-icon\"\n fontIcon=\"icon-arrow-dropdown\" />\n </button>\n </div>\n </div>\n </mat-expansion-panel>\n </ng-container>\n </mat-accordion>\n</ng-container>\n", styles: [":host{display:flex;flex-direction:column;padding:25px}mat-expansion-panel.mat-expansion-panel ::ng-deep{box-shadow:none;border-bottom-width:1px;border-bottom-style:solid}mat-expansion-panel.mat-expansion-panel ::ng-deep .mat-expansion-panel-body{padding:0 18px}mat-panel-description{margin:0;justify-content:flex-end}.mat-expansion-panel-spacing{margin:0}.mat-expansion-panel-header,.mat-expansion-panel-header.mat-expanded{height:48px;padding-right:10px}.mat-expansion-panel-header.mat-expanded .mat-expansion-panel-header-description .mat-icon{transform:rotate(180deg)}.heading-menu{display:inline-flex;width:100%}.menu-item-text{white-space:nowrap;align-self:center}.composition-button{display:flex;flex-direction:row;align-items:center;position:relative}.composition-icon{position:absolute;right:0;transform:rotate(270deg)}.hidden{display:none}\n"] }]
|
|
24
|
-
}], ctorParameters: () => [{ type: i0.Injector }, { type: i1.EditorService }, { type: i2.ToolbarCoreService }] });
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1kcm9wZG93bnMtbW9iaWxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1ub2Rlci9zcmMvbGliL2FwYXJ0LWNvbXBvbmVudHMvZWRpdG9yLXRvb2xiYXIvY29tcG9uZW50cy9tZW51LWRyb3Bkb3ducy1tb2JpbGUvbWVudS1kcm9wZG93bnMtbW9iaWxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1ub2Rlci9zcmMvbGliL2FwYXJ0LWNvbXBvbmVudHMvZWRpdG9yLXRvb2xiYXIvY29tcG9uZW50cy9tZW51LWRyb3Bkb3ducy1tb2JpbGUvbWVudS1kcm9wZG93bnMtbW9iaWxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQVksTUFBTSxlQUFlLENBQUM7QUFHN0UsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sd0VBQXdFLENBQUM7Ozs7Ozs7OztBQVVsSCxNQUFNLE9BQU8sNEJBQTRCO0lBR3JDLFlBQW9CLFFBQWtCLEVBQVMsYUFBNEIsRUFBUyxrQkFBc0M7UUFBdEcsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUFTLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQVMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN0SCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLHdCQUF3QixDQUFDLENBQUMsUUFBUSxDQUFDO0lBQ3pFLENBQUM7K0dBTFEsNEJBQTRCO21HQUE1Qiw0QkFBNEIscUVDYnpDLGtzWUFnUEE7OzRGRG5PYSw0QkFBNEI7a0JBTnhDLFNBQVM7K0JBQ0ksK0JBQStCLG1CQUd4Qix1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgRWRpdG9yU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL2VkaXRvci9pbnRlcmFjdGlvbi9lZGl0b3Iuc2VydmljZSc7XG5pbXBvcnQgeyBFWFRFUk5BTF9FTEVNRU5UX1NFUlZJQ0UgfSBmcm9tICcuLi8uLi8uLi8uLi9lZGl0b3IvY29tcG9uZW50cy9leHRlcm5hbC1lbGVtZW50L2V4dGVybmFsLWVsZW1lbnRzLmNvbnN0JztcbmltcG9ydCB7IEV4dGVybmFsRWxlbWVudE1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vLi4vZWRpdG9yL2NvbXBvbmVudHMvZXh0ZXJuYWwtZWxlbWVudC9tb2RlbHMvZXh0ZXJuYWwtZWxlbWVudC5tb2RlbCc7XG5pbXBvcnQgeyBUb29sYmFyQ29yZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zaGFyZWQvc2VydmljZXMvdG9vbGJhci1jb3JlLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2FwcC1ub2QtbWVudS1kcm9wZG93bnMtbW9iaWxlJyxcbiAgICB0ZW1wbGF0ZVVybDogJ21lbnUtZHJvcGRvd25zLW1vYmlsZS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJ21lbnUtZHJvcGRvd25zLW1vYmlsZS5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIE1lbnVEcm9wZG93bnNNb2JpbGVDb21wb25lbnQge1xuICAgIHJlYWRvbmx5IGVsZW1lbnRzOiBFeHRlcm5hbEVsZW1lbnRNb2RlbFtdO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsIHB1YmxpYyBlZGl0b3JTZXJ2aWNlOiBFZGl0b3JTZXJ2aWNlLCBwdWJsaWMgdG9vbGJhckNvcmVTZXJ2aWNlOiBUb29sYmFyQ29yZVNlcnZpY2UpIHtcbiAgICAgICAgdGhpcy5lbGVtZW50cyA9IHRoaXMuaW5qZWN0b3IuZ2V0KEVYVEVSTkFMX0VMRU1FTlRfU0VSVklDRSkuZWxlbWVudHM7XG4gICAgfVxufVxuIiwiPG5nLWNvbnRhaW5lclxuICAgICpuZ0lmPVwie1xuICAgICAgICBpc1ZpZXdPbmx5OiBlZGl0b3JTZXJ2aWNlLmlzVmlld09ubHkkIHwgYXN5bmNcbiAgICB9IGFzIGRhdGFcIj5cbiAgICA8bWF0LWFjY29yZGlvbj5cbiAgICAgICAgPG1hdC1leHBhbnNpb24tcGFuZWwgaGlkZVRvZ2dsZT5cbiAgICAgICAgICAgIDxtYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cbiAgICAgICAgICAgICAgICA8bWF0LXBhbmVsLXRpdGxlPnt7ICdOT0RFUi5MQUJFTC5GSUxFJyB8IHRyYW5zbGF0ZSB9fTwvbWF0LXBhbmVsLXRpdGxlPlxuICAgICAgICAgICAgICAgIDxtYXQtcGFuZWwtZGVzY3JpcHRpb24+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgZm9udFNldD1cIm5vZGVyLWljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgZm9udEljb249XCJpY29uLWFycm93LWRyb3Bkb3duXCIgLz5cbiAgICAgICAgICAgICAgICA8L21hdC1wYW5lbC1kZXNjcmlwdGlvbj5cbiAgICAgICAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWRhdGEuaXNWaWV3T25seVwiXG4gICAgICAgICAgICAgICAgICAgIGlkPVwibWVudS1kcm9wZG93bnMtbW9iaWxlLWl0ZW0tbmV3XCJcbiAgICAgICAgICAgICAgICAgICAgbWF0LW1lbnUtaXRlbVxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9vbGJhckNvcmVTZXJ2aWNlLmFjdGlvbnMubmV3KCk7IHRvb2xiYXJDb3JlU2VydmljZS5yZXNldCgpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkaW5nLW1lbnVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRTZXQ9XCJub2Rlci1pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250SWNvbj1cImljb24tYWRkLW5ld1wiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lbnUtaXRlbS10ZXh0XCI+e3sgJ05PREVSLkxBQkVMLk5FVycgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhZGF0YS5pc1ZpZXdPbmx5XCJcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJtZW51LWRyb3Bkb3ducy1tb2JpbGUtaXRlbS1vcGVuLWZyb21cIlxuICAgICAgICAgICAgICAgICAgICBtYXQtbWVudS1pdGVtXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b29sYmFyQ29yZVNlcnZpY2UuYWN0aW9ucy5vcGVuRnJvbSgpOyB0b29sYmFyQ29yZVNlcnZpY2UucmVzZXQoKVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGluZy1tZW51XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250U2V0PVwibm9kZXItaWNvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udEljb249XCJpY29uLW9wZW4tZnJvbVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lbnUtaXRlbS10ZXh0XCI+e3sgJ05PREVSLkxBQkVMLk9QRU5fRlJPTScgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJtZW51LWRyb3Bkb3ducy1tb2JpbGUtaXRlbS1zYXZlLWFzXCJcbiAgICAgICAgICAgICAgICAgICAgbWF0LW1lbnUtaXRlbVxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9vbGJhckNvcmVTZXJ2aWNlLmFjdGlvbnMuc2F2ZUFzKCk7IHRvb2xiYXJDb3JlU2VydmljZS5yZXNldCgpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkaW5nLW1lbnVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRTZXQ9XCJub2Rlci1pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250SWNvbj1cImljb24tc2F2ZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lbnUtaXRlbS10ZXh0XCI+e3sgJ05PREVSLkxBQkVMLlNBVkVfQVMnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGlkPVwibWVudS1kcm9wZG93bnMtbW9iaWxlLWl0ZW0tcmVuYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgbWF0LW1lbnUtaXRlbVxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9vbGJhckNvcmVTZXJ2aWNlLmFjdGlvbnMucmVuYW1lKCk7IHRvb2xiYXJDb3JlU2VydmljZS5yZXNldCgpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkaW5nLW1lbnVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRTZXQ9XCJub2Rlci1pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250SWNvbj1cImljb24tcmVuYW1lXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWVudS1pdGVtLXRleHRcIj57eyAnTk9ERVIuTEFCRUwuUkVOQU1FJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBpZD1cIm1lbnUtZHJvcGRvd25zLW1vYmlsZS1pdGVtLXByaW50XCJcbiAgICAgICAgICAgICAgICAgICAgbWF0LW1lbnUtaXRlbVxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9vbGJhckNvcmVTZXJ2aWNlLmFjdGlvbnMucHJpbnQoKTsgdG9vbGJhckNvcmVTZXJ2aWNlLnJlc2V0KClcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRpbmctbWVudVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udFNldD1cIm5vZGVyLWljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRJY29uPVwiaWNvbi1wcmludFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lbnUtaXRlbS10ZXh0XCI+e3sgJ05PREVSLkxBQkVMLlBSSU5UJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBpZD1cIm1lbnUtZHJvcGRvd25zLW1vYmlsZS1pdGVtLWRlbGV0ZVwiXG4gICAgICAgICAgICAgICAgICAgIG1hdC1tZW51LWl0ZW1cbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvb2xiYXJDb3JlU2VydmljZS5hY3Rpb25zLmRlbGV0ZSgpOyB0b29sYmFyQ29yZVNlcnZpY2UucmVzZXQoKVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGluZy1tZW51XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250U2V0PVwibm9kZXItaWNvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udEljb249XCJpY29uLWRlbGV0ZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lbnUtaXRlbS10ZXh0XCI+e3sgJ05PREVSLkxBQkVMLkRFTEVURScgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbD5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFkYXRhLmlzVmlld09ubHlcIj5cbiAgICAgICAgICAgIDxtYXQtZXhwYW5zaW9uLXBhbmVsIGhpZGVUb2dnbGU+XG4gICAgICAgICAgICAgICAgPG1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LXBhbmVsLXRpdGxlPnt7ICdOT0RFUi5MQUJFTC5JTlNFUlQnIHwgdHJhbnNsYXRlIH19PC9tYXQtcGFuZWwtdGl0bGU+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtcGFuZWwtZGVzY3JpcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250U2V0PVwibm9kZXItaWNvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udEljb249XCJpY29uLWFycm93LWRyb3Bkb3duXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtcGFuZWwtZGVzY3JpcHRpb24+XG4gICAgICAgICAgICAgICAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXhwYW5zaW9uLXBhbmVsLWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJtZW51LWRyb3Bkb3ducy1tb2JpbGUtaXRlbS1pbWFnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXQtbWVudS1pdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9vbGJhckNvcmVTZXJ2aWNlLmFjdGlvbnMuaW5zZXJ0SW1hZ2UoKTsgdG9vbGJhckNvcmVTZXJ2aWNlLnJlc2V0KClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkaW5nLW1lbnVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udFNldD1cIm5vZGVyLWljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250SWNvbj1cImljb24taW1hZ2VcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWVudS1pdGVtLXRleHRcIj57eyAnTk9ERVIuTEFCRUwuSU1BR0UnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29tcG9zaXRpb24tYnV0dG9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJtZW51LWRyb3Bkb3ducy1tb2JpbGUtaXRlbS10YWJsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0LW1lbnUtaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b29sYmFyQ29yZVNlcnZpY2UuYWN0aW9ucy5pbnNlcnRUYWJsZSgpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRTZXQ9XCJub2Rlci1pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udEljb249XCJpY29uLXRhYmxlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnTk9ERVIuTEFCRUwuVEFCTEUnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29tcG9zaXRpb24taWNvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udFNldD1cIm5vZGVyLWljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRJY29uPVwiaWNvbi1hcnJvdy1kcm9wZG93blwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29tcG9zaXRpb24tYnV0dG9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJtZW51LWRyb3Bkb3ducy1tb2JpbGUtaXRlbS1saW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXQtbWVudS1pdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvb2xiYXJDb3JlU2VydmljZS5hY3Rpb25zLmluc2VydExpbmsoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkaW5nLW1lbnVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250U2V0PVwibm9kZXItaWNvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250SWNvbj1cImljb24tbGluay1vblwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWVudS1pdGVtLXRleHRcIj57eyAnTk9ERVIuTEFCRUwuTElOSycgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29tcG9zaXRpb24taWNvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udFNldD1cIm5vZGVyLWljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRJY29uPVwiaWNvbi1hcnJvdy1kcm9wZG93blwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgZWxlbWVudCBvZiBlbGVtZW50c1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBpZD1cIm1lbnUtZHJvcGRvd25zLW1vYmlsZS1pdGVtLXt7IGVsZW1lbnQubmFtZUlkIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdC1tZW51LWl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b29sYmFyQ29yZVNlcnZpY2UuYWN0aW9ucy5pbnNlcnRDdXN0b21FbGVtZW50KGVsZW1lbnQpOyB0b29sYmFyQ29yZVNlcnZpY2UucmVzZXQoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRpbmctbWVudVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250U2V0PVwibm9kZXItaWNvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRJY29uPVwie3sgZWxlbWVudC5pY29uIH19XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lbnUtaXRlbS10ZXh0XCI+e3sgZWxlbWVudC5uYW1lVHJhbnNsYXRlIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29tcG9zaXRpb24tYnV0dG9uIGhpZGRlblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwibWVudS1kcm9wZG93bnMtbW9iaWxlLWl0ZW0taGVhZGVycy1mb290ZXJzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXQtbWVudS1pdGVtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkaW5nLW1lbnVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250U2V0PVwibm9kZXItaWNvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250SWNvbj1cImljb24taGVhZGVycy1mb290ZXJzXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZW51LWl0ZW0tdGV4dFwiPnt7ICdOT0RFUi5MQUJFTC5IRUFERVJTX0FORF9GT09URVJTJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb21wb3NpdGlvbi1pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250U2V0PVwibm9kZXItaWNvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udEljb249XCJpY29uLWFycm93LWRyb3Bkb3duXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L21hdC1leHBhbnNpb24tcGFuZWw+XG4gICAgICAgICAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbCBoaWRlVG9nZ2xlPlxuICAgICAgICAgICAgICAgIDxtYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1wYW5lbC10aXRsZT57eyAnTk9ERVIuTEFCRUwuTEFZT1VUJyB8IHRyYW5zbGF0ZSB9fTwvbWF0LXBhbmVsLXRpdGxlPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LXBhbmVsLWRlc2NyaXB0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udFNldD1cIm5vZGVyLWljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRJY29uPVwiaWNvbi1hcnJvdy1kcm9wZG93blwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LXBhbmVsLWRlc2NyaXB0aW9uPlxuICAgICAgICAgICAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV4cGFuc2lvbi1wYW5lbC1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwibWVudS1kcm9wZG93bnMtbW9iaWxlLWl0ZW0tcGFnZS1icmVha1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXQtbWVudS1pdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9vbGJhckNvcmVTZXJ2aWNlLmFjdGlvbnMuaW5zZXJ0UGFnZUJyZWFrKCk7IHRvb2xiYXJDb3JlU2VydmljZS5yZXNldCgpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGluZy1tZW51XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRTZXQ9XCJub2Rlci1pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udEljb249XCJpY29uLXBhZ2UtYnJlYWtcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWVudS1pdGVtLXRleHRcIj57eyAnTk9ERVIuTEFCRUwuUEFHRV9CUkVBSycgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L21hdC1leHBhbnNpb24tcGFuZWw+XG4gICAgICAgICAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbCBoaWRlVG9nZ2xlPlxuICAgICAgICAgICAgICAgIDxtYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1wYW5lbC10aXRsZT57eyAnTk9ERVIuTEFCRUwuRk9STUFUJyB8IHRyYW5zbGF0ZSB9fTwvbWF0LXBhbmVsLXRpdGxlPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LXBhbmVsLWRlc2NyaXB0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udFNldD1cIm5vZGVyLWljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRJY29uPVwiaWNvbi1hcnJvdy1kcm9wZG93blwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LXBhbmVsLWRlc2NyaXB0aW9uPlxuICAgICAgICAgICAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV4cGFuc2lvbi1wYW5lbC1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb21wb3NpdGlvbi1idXR0b25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cIm1lbnUtZHJvcGRvd25zLW1vYmlsZS10ZXh0LWZvcm1hdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0LW1lbnUtaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b29sYmFyQ29yZVNlcnZpY2UuYWN0aW9ucy50ZXh0Rm9ybWF0KClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGluZy1tZW51XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udFNldD1cIm5vZGVyLWljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udEljb249XCJpY29uLXRleHRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lbnUtaXRlbS10ZXh0XCI+e3sgJ05PREVSLkxBQkVMLlRFWFRfRk9STUFUJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb21wb3NpdGlvbi1pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udFNldD1cIm5vZGVyLWljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250SWNvbj1cImljb24tYXJyb3ctZHJvcGRvd25cIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29tcG9zaXRpb24tYnV0dG9uIGhpZGRlblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwibWVudS1kcm9wZG93bnMtbW9iaWxlLWhlYWRlci1mb290ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdC1tZW51LWl0ZW0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRpbmctbWVudVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRTZXQ9XCJub2Rlci1pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRJY29uPVwiaWNvbi1oZWFkZXJzLWZvb3RlcnNcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lbnUtaXRlbS10ZXh0XCI+e3sgJ05PREVSLkxBQkVMLkhFQURFUlNfQU5EX0ZPT1RFUlMnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbXBvc2l0aW9uLWljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250U2V0PVwibm9kZXItaWNvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRJY29uPVwiaWNvbi1hcnJvdy1kcm9wZG93blwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L21hdC1leHBhbnNpb24tcGFuZWw+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbWF0LWFjY29yZGlvbj5cbjwvbmctY29udGFpbmVyPlxuIl19
|