monaco-editor-core 0.55.1 → 0.56.0-dev-20251122
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/esm/nls.keys.json +1 -1
- package/esm/nls.messages.cs.js +2 -2
- package/esm/nls.messages.de.js +2 -2
- package/esm/nls.messages.es.js +2 -2
- package/esm/nls.messages.fr.js +2 -2
- package/esm/nls.messages.it.js +2 -2
- package/esm/nls.messages.ja.js +2 -2
- package/esm/nls.messages.js +1 -1
- package/esm/nls.messages.json +1 -1
- package/esm/nls.messages.ko.js +2 -2
- package/esm/nls.messages.pl.js +2 -2
- package/esm/nls.messages.pt-br.js +2 -2
- package/esm/nls.messages.ru.js +2 -2
- package/esm/nls.messages.tr.js +2 -2
- package/esm/nls.messages.zh-cn.js +2 -2
- package/esm/nls.messages.zh-tw.js +2 -2
- package/esm/nls.metadata.json +29 -8
- package/esm/vs/base/browser/dom.js +31 -34
- package/esm/vs/base/browser/dom.js.map +1 -1
- package/esm/vs/base/browser/dompurify/dompurify.js +0 -1
- package/esm/vs/base/browser/keyboardEvent.js +3 -3
- package/esm/vs/base/browser/keyboardEvent.js.map +1 -1
- package/esm/vs/base/browser/markdownRenderer.js +5 -2
- package/esm/vs/base/browser/markdownRenderer.js.map +1 -1
- package/esm/vs/base/browser/pixelRatio.js +5 -5
- package/esm/vs/base/browser/pixelRatio.js.map +1 -1
- package/esm/vs/base/browser/trustedTypes.js +1 -1
- package/esm/vs/base/browser/trustedTypes.js.map +1 -1
- package/esm/vs/base/browser/ui/actionbar/actionbar.js +3 -0
- package/esm/vs/base/browser/ui/actionbar/actionbar.js.map +1 -1
- package/esm/vs/base/browser/ui/codicons/codicon/codicon.ttf +0 -0
- package/esm/vs/base/browser/ui/dropdown/dropdownActionViewItem.js +7 -0
- package/esm/vs/base/browser/ui/dropdown/dropdownActionViewItem.js.map +1 -1
- package/esm/vs/base/browser/ui/hover/hoverWidget.css +0 -13
- package/esm/vs/base/browser/ui/inputbox/inputBox.js +7 -0
- package/esm/vs/base/browser/ui/inputbox/inputBox.js.map +1 -1
- package/esm/vs/base/browser/ui/keybindingLabel/keybindingLabel.css +4 -2
- package/esm/vs/base/browser/ui/list/listView.js +7 -2
- package/esm/vs/base/browser/ui/list/listView.js.map +1 -1
- package/esm/vs/base/browser/ui/list/rowCache.js +1 -4
- package/esm/vs/base/browser/ui/list/rowCache.js.map +1 -1
- package/esm/vs/base/browser/ui/menu/menu.js +14 -12
- package/esm/vs/base/browser/ui/menu/menu.js.map +1 -1
- package/esm/vs/base/browser/ui/selectBox/selectBox.js +4 -0
- package/esm/vs/base/browser/ui/selectBox/selectBox.js.map +1 -1
- package/esm/vs/base/browser/ui/selectBox/selectBoxCustom.css +12 -32
- package/esm/vs/base/browser/ui/selectBox/selectBoxCustom.js +8 -18
- package/esm/vs/base/browser/ui/selectBox/selectBoxCustom.js.map +1 -1
- package/esm/vs/base/browser/ui/toolbar/toolbar.js +41 -14
- package/esm/vs/base/browser/ui/toolbar/toolbar.js.map +1 -1
- package/esm/vs/base/browser/ui/tree/abstractTree.js +11 -0
- package/esm/vs/base/browser/ui/tree/abstractTree.js.map +1 -1
- package/esm/vs/base/browser/ui/tree/asyncDataTree.js +1 -0
- package/esm/vs/base/browser/ui/tree/asyncDataTree.js.map +1 -1
- package/esm/vs/base/browser/ui/tree/compressedObjectTreeModel.js.map +1 -1
- package/esm/vs/base/browser/ui/tree/dataTree.js.map +1 -1
- package/esm/vs/base/browser/ui/tree/indexTreeModel.js.map +1 -1
- package/esm/vs/base/browser/ui/tree/objectTree.js.map +1 -1
- package/esm/vs/base/browser/ui/tree/objectTreeModel.js.map +1 -1
- package/esm/vs/base/browser/ui/tree/tree.js.map +1 -1
- package/esm/vs/base/common/arrays.js +10 -0
- package/esm/vs/base/common/arrays.js.map +1 -1
- package/esm/vs/base/common/async.js +34 -0
- package/esm/vs/base/common/async.js.map +1 -1
- package/esm/vs/base/common/buffer.js +1 -1
- package/esm/vs/base/common/buffer.js.map +1 -1
- package/esm/vs/base/common/cancellation.js.map +1 -1
- package/esm/vs/base/common/codiconsLibrary.js +3 -0
- package/esm/vs/base/common/codiconsLibrary.js.map +1 -1
- package/esm/vs/base/common/collections.js.map +1 -1
- package/esm/vs/base/common/equals.js.map +1 -1
- package/esm/vs/base/common/event.js +32 -15
- package/esm/vs/base/common/event.js.map +1 -1
- package/esm/vs/base/common/filters.js +22 -3
- package/esm/vs/base/common/filters.js.map +1 -1
- package/esm/vs/base/common/hotReload.js +2 -2
- package/esm/vs/base/common/hotReload.js.map +1 -1
- package/esm/vs/base/common/iterator.js +1 -1
- package/esm/vs/base/common/iterator.js.map +1 -1
- package/esm/vs/base/common/keyCodes.js +7 -6
- package/esm/vs/base/common/keyCodes.js.map +1 -1
- package/esm/vs/base/common/linkedList.js.map +1 -1
- package/esm/vs/base/common/map.js +8 -5
- package/esm/vs/base/common/map.js.map +1 -1
- package/esm/vs/base/common/marked/marked.js +0 -1
- package/esm/vs/base/common/network.js +26 -1
- package/esm/vs/base/common/network.js.map +1 -1
- package/esm/vs/base/common/normalization.js +19 -6
- package/esm/vs/base/common/normalization.js.map +1 -1
- package/esm/vs/base/common/observableInternal/debugLocation.js +1 -2
- package/esm/vs/base/common/observableInternal/debugLocation.js.map +1 -1
- package/esm/vs/base/common/observableInternal/debugName.js +0 -1
- package/esm/vs/base/common/observableInternal/debugName.js.map +1 -1
- package/esm/vs/base/common/observableInternal/index.js +4 -4
- package/esm/vs/base/common/observableInternal/index.js.map +1 -1
- package/esm/vs/base/common/observableInternal/logging/debugGetDependencyGraph.js +38 -10
- package/esm/vs/base/common/observableInternal/logging/debugGetDependencyGraph.js.map +1 -1
- package/esm/vs/base/common/observableInternal/observables/baseObservable.js +3 -3
- package/esm/vs/base/common/observableInternal/observables/baseObservable.js.map +1 -1
- package/esm/vs/base/common/observableInternal/observables/derivedImpl.js +1 -4
- package/esm/vs/base/common/observableInternal/observables/derivedImpl.js.map +1 -1
- package/esm/vs/base/common/observableInternal/utils/utils.js +46 -5
- package/esm/vs/base/common/observableInternal/utils/utils.js.map +1 -1
- package/esm/vs/base/common/path.js +1 -0
- package/esm/vs/base/common/path.js.map +1 -1
- package/esm/vs/base/common/strings.js +27 -19
- package/esm/vs/base/common/strings.js.map +1 -1
- package/esm/vs/base/common/worker/webWorker.js +10 -7
- package/esm/vs/base/common/worker/webWorker.js.map +1 -1
- package/esm/vs/editor/browser/config/elementSizeObserver.js +5 -5
- package/esm/vs/editor/browser/config/elementSizeObserver.js.map +1 -1
- package/esm/vs/editor/browser/config/fontMeasurements.js.map +1 -1
- package/esm/vs/editor/browser/config/migrateOptions.js +6 -0
- package/esm/vs/editor/browser/config/migrateOptions.js.map +1 -1
- package/esm/vs/editor/browser/config/tabFocus.js +4 -2
- package/esm/vs/editor/browser/config/tabFocus.js.map +1 -1
- package/esm/vs/editor/browser/controller/editContext/native/nativeEditContext.js +8 -0
- package/esm/vs/editor/browser/controller/editContext/native/nativeEditContext.js.map +1 -1
- package/esm/vs/editor/browser/coreCommands.js +1 -2
- package/esm/vs/editor/browser/coreCommands.js.map +1 -1
- package/esm/vs/editor/browser/editorBrowser.js.map +1 -1
- package/esm/vs/editor/browser/observableCodeEditor.js +32 -1
- package/esm/vs/editor/browser/observableCodeEditor.js.map +1 -1
- package/esm/vs/editor/browser/services/contribution.js +9 -0
- package/esm/vs/editor/browser/services/contribution.js.map +1 -0
- package/esm/vs/editor/browser/services/editorWorkerService.js +27 -14
- package/esm/vs/editor/browser/services/editorWorkerService.js.map +1 -1
- package/esm/vs/editor/browser/services/openerService.js +5 -1
- package/esm/vs/editor/browser/services/openerService.js.map +1 -1
- package/esm/vs/editor/browser/view/domLineBreaksComputer.js +1 -1
- package/esm/vs/editor/browser/view/domLineBreaksComputer.js.map +1 -1
- package/esm/vs/editor/browser/view/renderingContext.js +1 -1
- package/esm/vs/editor/browser/view/renderingContext.js.map +1 -1
- package/esm/vs/editor/browser/viewParts/currentLineHighlight/currentLineHighlight.js +10 -3
- package/esm/vs/editor/browser/viewParts/currentLineHighlight/currentLineHighlight.js.map +1 -1
- package/esm/vs/editor/browser/viewParts/glyphMargin/glyphMargin.js +3 -4
- package/esm/vs/editor/browser/viewParts/glyphMargin/glyphMargin.js.map +1 -1
- package/esm/vs/editor/browser/viewParts/minimap/minimap.js +1 -1
- package/esm/vs/editor/browser/viewParts/minimap/minimap.js.map +1 -1
- package/esm/vs/editor/browser/viewParts/overlayWidgets/overlayWidgets.js +1 -1
- package/esm/vs/editor/browser/viewParts/overlayWidgets/overlayWidgets.js.map +1 -1
- package/esm/vs/editor/browser/viewParts/overviewRuler/overviewRuler.js +4 -2
- package/esm/vs/editor/browser/viewParts/overviewRuler/overviewRuler.js.map +1 -1
- package/esm/vs/editor/browser/viewParts/rulers/rulers.js +1 -3
- package/esm/vs/editor/browser/viewParts/rulers/rulers.js.map +1 -1
- package/esm/vs/editor/browser/viewParts/scrollDecoration/scrollDecoration.js +1 -1
- package/esm/vs/editor/browser/viewParts/scrollDecoration/scrollDecoration.js.map +1 -1
- package/esm/vs/editor/browser/viewParts/viewLines/domReadingContext.js +2 -1
- package/esm/vs/editor/browser/viewParts/viewLines/domReadingContext.js.map +1 -1
- package/esm/vs/editor/browser/viewParts/viewLines/viewLines.js +6 -18
- package/esm/vs/editor/browser/viewParts/viewLines/viewLines.js.map +1 -1
- package/esm/vs/editor/browser/viewParts/whitespace/whitespace.js +0 -7
- package/esm/vs/editor/browser/viewParts/whitespace/whitespace.js.map +1 -1
- package/esm/vs/editor/browser/widget/codeEditor/codeEditorWidget.js +7 -2
- package/esm/vs/editor/browser/widget/codeEditor/codeEditorWidget.js.map +1 -1
- package/esm/vs/editor/browser/widget/diffEditor/features/hideUnchangedRegionsFeature.js +1 -0
- package/esm/vs/editor/browser/widget/diffEditor/features/hideUnchangedRegionsFeature.js.map +1 -1
- package/esm/vs/editor/common/commands/replaceCommand.js +2 -2
- package/esm/vs/editor/common/commands/replaceCommand.js.map +1 -1
- package/esm/vs/editor/common/config/editorOptions.js +374 -360
- package/esm/vs/editor/common/config/editorOptions.js.map +1 -1
- package/esm/vs/editor/common/core/2d/rect.js +7 -0
- package/esm/vs/editor/common/core/2d/rect.js.map +1 -1
- package/esm/vs/editor/common/core/2d/size.js +20 -0
- package/esm/vs/editor/common/core/2d/size.js.map +1 -0
- package/esm/vs/editor/common/core/editorColorRegistry.js +69 -68
- package/esm/vs/editor/common/core/editorColorRegistry.js.map +1 -1
- package/esm/vs/editor/common/core/ranges/offsetRange.js +9 -0
- package/esm/vs/editor/common/core/ranges/offsetRange.js.map +1 -1
- package/esm/vs/editor/common/cursor/cursorMoveCommands.js +4 -4
- package/esm/vs/editor/common/cursor/cursorMoveCommands.js.map +1 -1
- package/esm/vs/editor/common/editorContextKeys.js +47 -47
- package/esm/vs/editor/common/languages/modesRegistry.js +1 -1
- package/esm/vs/editor/common/languages.js +56 -56
- package/esm/vs/editor/common/languages.js.map +1 -1
- package/esm/vs/editor/common/model/editStack.js +1 -1
- package/esm/vs/editor/common/services/languagesAssociations.js +6 -8
- package/esm/vs/editor/common/services/languagesAssociations.js.map +1 -1
- package/esm/vs/editor/common/standaloneStrings.js +11 -10
- package/esm/vs/editor/common/standaloneStrings.js.map +1 -1
- package/esm/vs/editor/common/textModelEditSource.js +1 -1
- package/esm/vs/editor/common/textModelEditSource.js.map +1 -1
- package/esm/vs/editor/common/viewLayout/viewLineRenderer.js +2 -2
- package/esm/vs/editor/contrib/anchorSelect/browser/anchorSelect.js +6 -6
- package/esm/vs/editor/contrib/bracketMatching/browser/bracketMatching.js +6 -6
- package/esm/vs/editor/contrib/caretOperations/browser/caretOperations.js +2 -2
- package/esm/vs/editor/contrib/caretOperations/browser/transpose.js +1 -1
- package/esm/vs/editor/contrib/clipboard/browser/clipboard.js +17 -17
- package/esm/vs/editor/contrib/codeAction/browser/codeAction.js +1 -1
- package/esm/vs/editor/contrib/codeAction/browser/codeActionCommands.js +29 -29
- package/esm/vs/editor/contrib/codeAction/browser/codeActionContributions.js +3 -3
- package/esm/vs/editor/contrib/codeAction/browser/codeActionController.js +3 -3
- package/esm/vs/editor/contrib/codeAction/browser/codeActionMenu.js +8 -8
- package/esm/vs/editor/contrib/codeAction/browser/lightBulbWidget.js +9 -9
- package/esm/vs/editor/contrib/codelens/browser/codelens.js.map +1 -1
- package/esm/vs/editor/contrib/codelens/browser/codelensController.js +2 -2
- package/esm/vs/editor/contrib/codelens/browser/codelensController.js.map +1 -1
- package/esm/vs/editor/contrib/colorPicker/browser/colorPickerParts/colorPickerCloseButton.js +1 -1
- package/esm/vs/editor/contrib/colorPicker/browser/colorPickerParts/colorPickerHeader.js +1 -1
- package/esm/vs/editor/contrib/colorPicker/browser/hoverColorPicker/hoverColorPickerParticipant.js +1 -1
- package/esm/vs/editor/contrib/colorPicker/browser/standaloneColorPicker/standaloneColorPickerActions.js +7 -7
- package/esm/vs/editor/contrib/comment/browser/comment.js +6 -6
- package/esm/vs/editor/contrib/contextmenu/browser/contextmenu.js +10 -10
- package/esm/vs/editor/contrib/cursorUndo/browser/cursorUndo.js +2 -2
- package/esm/vs/editor/contrib/diffEditorBreadcrumbs/browser/contribution.js +14 -0
- package/esm/vs/editor/contrib/diffEditorBreadcrumbs/browser/contribution.js.map +1 -1
- package/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteContribution.js +4 -4
- package/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteController.js +9 -9
- package/esm/vs/editor/contrib/dropOrPasteInto/browser/defaultProviders.js +8 -8
- package/esm/vs/editor/contrib/dropOrPasteInto/browser/dropIntoEditorController.js +3 -3
- package/esm/vs/editor/contrib/dropOrPasteInto/browser/postEditWidget.js +2 -2
- package/esm/vs/editor/contrib/editorState/browser/keybindingCancellation.js +1 -1
- package/esm/vs/editor/contrib/find/browser/findController.js +17 -17
- package/esm/vs/editor/contrib/find/browser/findController.js.map +1 -1
- package/esm/vs/editor/contrib/find/browser/findWidget.js +26 -26
- package/esm/vs/editor/contrib/find/browser/findWidgetSearchHistory.js.map +1 -1
- package/esm/vs/editor/contrib/find/browser/replaceWidgetHistory.js.map +1 -1
- package/esm/vs/editor/contrib/floatingMenu/browser/floatingMenu.css +1 -1
- package/esm/vs/editor/contrib/folding/browser/folding.js +20 -20
- package/esm/vs/editor/contrib/folding/browser/folding.js.map +1 -1
- package/esm/vs/editor/contrib/folding/browser/foldingDecorations.js +9 -9
- package/esm/vs/editor/contrib/fontZoom/browser/fontZoom.js +3 -3
- package/esm/vs/editor/contrib/format/browser/format.js +21 -6
- package/esm/vs/editor/contrib/format/browser/format.js.map +1 -1
- package/esm/vs/editor/contrib/format/browser/formatActions.js +2 -2
- package/esm/vs/editor/contrib/gotoError/browser/gotoError.js +8 -8
- package/esm/vs/editor/contrib/gotoError/browser/gotoErrorWidget.js +14 -14
- package/esm/vs/editor/contrib/gotoSymbol/browser/goToCommands.js +39 -39
- package/esm/vs/editor/contrib/gotoSymbol/browser/link/goToDefinitionAtPosition.js +1 -1
- package/esm/vs/editor/contrib/gotoSymbol/browser/peek/referencesController.js +3 -3
- package/esm/vs/editor/contrib/gotoSymbol/browser/peek/referencesTree.js +3 -3
- package/esm/vs/editor/contrib/gotoSymbol/browser/peek/referencesWidget.js +3 -3
- package/esm/vs/editor/contrib/gotoSymbol/browser/referencesModel.js +8 -8
- package/esm/vs/editor/contrib/gotoSymbol/browser/symbolNavigation.js +3 -3
- package/esm/vs/editor/contrib/gpu/browser/gpuActions.js +4 -4
- package/esm/vs/editor/contrib/hover/browser/contentHoverController.js +5 -10
- package/esm/vs/editor/contrib/hover/browser/contentHoverController.js.map +1 -1
- package/esm/vs/editor/contrib/hover/browser/glyphHoverController.js +11 -6
- package/esm/vs/editor/contrib/hover/browser/glyphHoverController.js.map +1 -1
- package/esm/vs/editor/contrib/hover/browser/hoverActionIds.js +2 -2
- package/esm/vs/editor/contrib/hover/browser/hoverActions.js +24 -24
- package/esm/vs/editor/contrib/hover/browser/hoverCopyButton.js +2 -2
- package/esm/vs/editor/contrib/hover/browser/hoverUtils.js +24 -0
- package/esm/vs/editor/contrib/hover/browser/hoverUtils.js.map +1 -1
- package/esm/vs/editor/contrib/hover/browser/markdownHoverParticipant.js +9 -9
- package/esm/vs/editor/contrib/hover/browser/markerHoverParticipant.js +5 -5
- package/esm/vs/editor/contrib/inPlaceReplace/browser/inPlaceReplace.js +2 -2
- package/esm/vs/editor/contrib/indentation/browser/indentation.js +20 -20
- package/esm/vs/editor/contrib/inlayHints/browser/inlayHintsHover.js +8 -8
- package/esm/vs/editor/contrib/inlineCompletions/browser/controller/commands.js +20 -20
- package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionContextKeys.js +12 -12
- package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionsController.js +18 -16
- package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionsController.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/hintsWidget/hoverParticipant.js +2 -2
- package/esm/vs/editor/contrib/inlineCompletions/browser/hintsWidget/inlineCompletionsHintsWidget.js +5 -5
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsModel.js +42 -37
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsModel.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineEdit.js +3 -3
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineEdit.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineSuggestionItem.js +8 -8
- package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineSuggestionItem.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/ghostText/ghostTextView.js +54 -43
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/ghostText/ghostTextView.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorMenu.js +12 -12
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorMenu.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorView.js +74 -48
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorView.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsModel.js +8 -36
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsModel.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsNewUsers.js +10 -11
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsNewUsers.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsView.js +105 -119
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsView.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViewInterface.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViewProducer.js +8 -36
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViewProducer.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/debugVisualization.js +95 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/debugVisualization.js.map +1 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsInsertionView.js +17 -9
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsInsertionView.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/inlineEditsLongDistanceHint.js +428 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/inlineEditsLongDistanceHint.js.map +1 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/longDistancePreviewEditor.js +290 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/longDistancePreviewEditor.js.map +1 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/theme.js +20 -20
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/utils/flexBoxLayout.js +103 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/utils/flexBoxLayout.js.map +1 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/utils/towersLayout.js +32 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/utils/towersLayout.js.map +1 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/utils/utils.js +44 -11
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/utils/utils.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/view.css +10 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineSuggestionsView.js +181 -0
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineSuggestionsView.js.map +1 -0
- package/esm/vs/editor/contrib/insertFinalNewLine/browser/insertFinalNewLine.js +1 -1
- package/esm/vs/editor/contrib/lineSelection/browser/lineSelection.js +1 -1
- package/esm/vs/editor/contrib/linesOperations/browser/linesOperations.js +32 -31
- package/esm/vs/editor/contrib/linesOperations/browser/linesOperations.js.map +1 -1
- package/esm/vs/editor/contrib/linkedEditing/browser/linkedEditing.js +2 -2
- package/esm/vs/editor/contrib/links/browser/links.js +10 -10
- package/esm/vs/editor/contrib/message/browser/messageController.js +1 -1
- package/esm/vs/editor/contrib/multicursor/browser/multicursor.js +22 -22
- package/esm/vs/editor/contrib/parameterHints/browser/parameterHints.js +1 -1
- package/esm/vs/editor/contrib/parameterHints/browser/parameterHintsWidget.js +4 -4
- package/esm/vs/editor/contrib/peekView/browser/peekView.js +18 -18
- package/esm/vs/editor/contrib/placeholderText/browser/placeholderText.contribution.js +1 -1
- package/esm/vs/editor/contrib/quickAccess/browser/editorNavigationQuickAccess.js +2 -2
- package/esm/vs/editor/contrib/quickAccess/browser/editorNavigationQuickAccess.js.map +1 -1
- package/esm/vs/editor/contrib/quickAccess/browser/gotoLineQuickAccess.js +18 -13
- package/esm/vs/editor/contrib/quickAccess/browser/gotoLineQuickAccess.js.map +1 -1
- package/esm/vs/editor/contrib/quickAccess/browser/gotoSymbolQuickAccess.js +32 -32
- package/esm/vs/editor/contrib/readOnlyMessage/browser/contribution.js +2 -2
- package/esm/vs/editor/contrib/rename/browser/rename.js +12 -12
- package/esm/vs/editor/contrib/rename/browser/rename.js.map +1 -1
- package/esm/vs/editor/contrib/rename/browser/renameWidget.js +7 -7
- package/esm/vs/editor/contrib/smartSelect/browser/smartSelect.js +4 -4
- package/esm/vs/editor/contrib/snippet/browser/snippetController2.js +4 -4
- package/esm/vs/editor/contrib/snippet/browser/snippetVariables.js +4 -4
- package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollActions.js +11 -11
- package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollWidget.js +1 -1
- package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollWidget.js.map +1 -1
- package/esm/vs/editor/contrib/suggest/browser/suggest.js +8 -8
- package/esm/vs/editor/contrib/suggest/browser/suggestController.js +10 -10
- package/esm/vs/editor/contrib/suggest/browser/suggestWidget.js +17 -17
- package/esm/vs/editor/contrib/suggest/browser/suggestWidgetDetails.js +2 -2
- package/esm/vs/editor/contrib/suggest/browser/suggestWidgetRenderer.js +2 -2
- package/esm/vs/editor/contrib/suggest/browser/wordContextKey.js +1 -1
- package/esm/vs/editor/contrib/symbolIcons/browser/symbolIcons.js +33 -33
- package/esm/vs/editor/contrib/toggleTabFocusMode/browser/toggleTabFocusMode.js +4 -4
- package/esm/vs/editor/contrib/tokenization/browser/tokenization.js +1 -1
- package/esm/vs/editor/contrib/unicodeHighlighter/browser/bannerController.js +1 -1
- package/esm/vs/editor/contrib/unicodeHighlighter/browser/unicodeHighlighter.js +29 -29
- package/esm/vs/editor/contrib/unicodeHighlighter/browser/unicodeHighlighter.js.map +1 -1
- package/esm/vs/editor/contrib/unusualLineTerminators/browser/unusualLineTerminators.js +5 -5
- package/esm/vs/editor/contrib/wordHighlighter/browser/highlightDecorations.js +9 -9
- package/esm/vs/editor/contrib/wordHighlighter/browser/wordHighlighter.js +4 -4
- package/esm/vs/editor/contrib/wordHighlighter/browser/wordHighlighter.js.map +1 -1
- package/esm/vs/editor/contrib/wordOperations/browser/wordOperations.js +1 -1
- package/esm/vs/editor/editor.all.js +1 -0
- package/esm/vs/editor/editor.all.js.map +1 -1
- package/esm/vs/editor/editor.api.d.ts +9 -5
- package/esm/vs/editor/standalone/browser/quickAccess/standaloneGotoLineQuickAccess.js +22 -2
- package/esm/vs/editor/standalone/browser/quickAccess/standaloneGotoLineQuickAccess.js.map +1 -1
- package/esm/vs/editor/standalone/browser/services/standaloneWebWorkerService.js +39 -0
- package/esm/vs/editor/standalone/browser/services/standaloneWebWorkerService.js.map +1 -0
- package/esm/vs/editor/standalone/browser/standaloneEditor.js +2 -1
- package/esm/vs/editor/standalone/browser/standaloneEditor.js.map +1 -1
- package/esm/vs/editor/standalone/browser/standaloneServices.js +3 -21
- package/esm/vs/editor/standalone/browser/standaloneServices.js.map +1 -1
- package/esm/vs/editor/standalone/browser/standaloneWebWorker.js +4 -4
- package/esm/vs/editor/standalone/browser/standaloneWebWorker.js.map +1 -1
- package/esm/vs/platform/accessibilitySignal/browser/accessibilitySignalService.js +62 -62
- package/esm/vs/platform/action/common/actionCommonCategories.js +6 -6
- package/esm/vs/platform/actionWidget/browser/actionList.js +4 -4
- package/esm/vs/platform/actionWidget/browser/actionWidget.css +7 -0
- package/esm/vs/platform/actionWidget/browser/actionWidget.js +7 -7
- package/esm/vs/platform/actions/browser/menuEntryActionViewItem.js +7 -9
- package/esm/vs/platform/actions/browser/menuEntryActionViewItem.js.map +1 -1
- package/esm/vs/platform/actions/browser/toolbar.js +2 -2
- package/esm/vs/platform/actions/common/actions.js +2 -0
- package/esm/vs/platform/actions/common/actions.js.map +1 -1
- package/esm/vs/platform/actions/common/menuService.js +2 -2
- package/esm/vs/platform/configuration/common/configuration.js +5 -4
- package/esm/vs/platform/configuration/common/configuration.js.map +1 -1
- package/esm/vs/platform/configuration/common/configurationModels.js +21 -10
- package/esm/vs/platform/configuration/common/configurationModels.js.map +1 -1
- package/esm/vs/platform/configuration/common/configurationRegistry.js +10 -10
- package/esm/vs/platform/configuration/common/configurationRegistry.js.map +1 -1
- package/esm/vs/platform/configuration/common/configurations.js.map +1 -1
- package/esm/vs/platform/contextkey/browser/contextKeyService.js +3 -3
- package/esm/vs/platform/contextkey/browser/contextKeyService.js.map +1 -1
- package/esm/vs/platform/contextkey/common/contextkey.js +9 -9
- package/esm/vs/platform/contextkey/common/contextkeys.js +9 -9
- package/esm/vs/platform/contextkey/common/scanner.js +5 -5
- package/esm/vs/platform/contextview/browser/contextViewService.js.map +1 -1
- package/esm/vs/platform/history/browser/contextScopedHistoryWidget.js +1 -1
- package/esm/vs/platform/hover/browser/hoverService.js +17 -8
- package/esm/vs/platform/hover/browser/hoverService.js.map +1 -1
- package/esm/vs/platform/hover/browser/hoverWidget.js +1 -1
- package/esm/vs/platform/hover/browser/updatableHoverWidget.js +1 -1
- package/esm/vs/platform/keybinding/common/abstractKeybindingService.js +4 -4
- package/esm/vs/platform/list/browser/listService.js +27 -27
- package/esm/vs/platform/list/browser/listService.js.map +1 -1
- package/esm/vs/platform/markers/common/markerService.js +2 -2
- package/esm/vs/platform/markers/common/markers.js +6 -6
- package/esm/vs/platform/quickinput/browser/commandsQuickAccess.js +51 -39
- package/esm/vs/platform/quickinput/browser/commandsQuickAccess.js.map +1 -1
- package/esm/vs/platform/quickinput/browser/helpQuickAccess.js +1 -1
- package/esm/vs/platform/quickinput/browser/media/quickInput.css +9 -3
- package/esm/vs/platform/quickinput/browser/quickInput.js +10 -10
- package/esm/vs/platform/quickinput/browser/quickInputActions.js +5 -5
- package/esm/vs/platform/quickinput/browser/quickInputController.js +35 -14
- package/esm/vs/platform/quickinput/browser/quickInputController.js.map +1 -1
- package/esm/vs/platform/quickinput/browser/quickInputList.js +4 -1
- package/esm/vs/platform/quickinput/browser/quickInputList.js.map +1 -1
- package/esm/vs/platform/quickinput/browser/quickInputUtils.js +1 -1
- package/esm/vs/platform/quickinput/browser/tree/quickInputTreeAccessibilityProvider.js +1 -1
- package/esm/vs/platform/quickinput/browser/tree/quickInputTreeController.js +78 -39
- package/esm/vs/platform/quickinput/browser/tree/quickInputTreeController.js.map +1 -1
- package/esm/vs/platform/quickinput/browser/tree/quickInputTreeRenderer.js +21 -8
- package/esm/vs/platform/quickinput/browser/tree/quickInputTreeRenderer.js.map +1 -1
- package/esm/vs/platform/telemetry/common/gdprTypings.js.map +1 -1
- package/esm/vs/platform/telemetry/common/telemetry.js.map +1 -1
- package/esm/vs/platform/theme/common/colorUtils.js +2 -2
- package/esm/vs/platform/theme/common/colors/baseColors.js +17 -17
- package/esm/vs/platform/theme/common/colors/chartsColors.js +8 -8
- package/esm/vs/platform/theme/common/colors/editorColors.js +95 -95
- package/esm/vs/platform/theme/common/colors/editorColors.js.map +1 -1
- package/esm/vs/platform/theme/common/colors/inputColors.js +47 -47
- package/esm/vs/platform/theme/common/colors/listColors.js +36 -36
- package/esm/vs/platform/theme/common/colors/menuColors.js +7 -7
- package/esm/vs/platform/theme/common/colors/minimapColors.js +11 -11
- package/esm/vs/platform/theme/common/colors/miscColors.js +16 -16
- package/esm/vs/platform/theme/common/colors/miscColors.js.map +1 -1
- package/esm/vs/platform/theme/common/colors/quickpickColors.js +9 -9
- package/esm/vs/platform/theme/common/colors/searchColors.js +3 -3
- package/esm/vs/platform/theme/common/iconRegistry.js +6 -6
- package/esm/vs/platform/undoRedo/common/undoRedoService.js +20 -20
- package/esm/vs/platform/webWorker/browser/webWorkerDescriptor.js +12 -0
- package/esm/vs/platform/webWorker/browser/webWorkerDescriptor.js.map +1 -0
- package/esm/vs/platform/webWorker/browser/webWorkerService.js +7 -0
- package/esm/vs/platform/webWorker/browser/webWorkerService.js.map +1 -0
- package/esm/vs/{base/browser/webWorkerFactory.js → platform/webWorker/browser/webWorkerServiceImpl.js} +47 -66
- package/esm/vs/platform/webWorker/browser/webWorkerServiceImpl.js.map +1 -0
- package/esm/vs/platform/workspace/common/workspace.js +1 -1
- package/monaco.d.ts +9 -5
- package/package.json +2 -2
- package/esm/vs/base/browser/webWorkerFactory.js.map +0 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineCompletionsView.js +0 -82
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineCompletionsView.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["vs/editor/browser/coreCommands.ts"],"names":[],"mappings":"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","file":"coreCommands.js","sourceRoot":"file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport * as nls from '../../nls.js';\nimport { isFirefox } from '../../base/browser/browser.js';\nimport { KeyCode, KeyMod } from '../../base/common/keyCodes.js';\nimport * as types from '../../base/common/types.js';\nimport { status } from '../../base/browser/ui/aria/aria.js';\nimport { ICodeEditor } from './editorBrowser.js';\nimport { Command, EditorCommand, ICommandOptions, registerEditorCommand, MultiCommand, UndoCommand, RedoCommand, SelectAllCommand } from './editorExtensions.js';\nimport { ICodeEditorService } from './services/codeEditorService.js';\nimport { ColumnSelection, IColumnSelectResult } from '../common/cursor/cursorColumnSelection.js';\nimport { CursorState, EditOperationType, IColumnSelectData, PartialCursorState } from '../common/cursorCommon.js';\nimport { DeleteOperations } from '../common/cursor/cursorDeleteOperations.js';\nimport { CursorChangeReason } from '../common/cursorEvents.js';\nimport { CursorMove as CursorMove_, CursorMoveCommands } from '../common/cursor/cursorMoveCommands.js';\nimport { TypeOperations } from '../common/cursor/cursorTypeOperations.js';\nimport { IPosition, Position } from '../common/core/position.js';\nimport { Range } from '../common/core/range.js';\nimport { Handler, ScrollType } from '../common/editorCommon.js';\nimport { EditorContextKeys } from '../common/editorContextKeys.js';\nimport { VerticalRevealType } from '../common/viewEvents.js';\nimport { ICommandMetadata } from '../../platform/commands/common/commands.js';\nimport { ContextKeyExpr } from '../../platform/contextkey/common/contextkey.js';\nimport { ServicesAccessor } from '../../platform/instantiation/common/instantiation.js';\nimport { KeybindingWeight, KeybindingsRegistry } from '../../platform/keybinding/common/keybindingsRegistry.js';\nimport { EditorOption } from '../common/config/editorOptions.js';\nimport { IViewModel } from '../common/viewModel.js';\nimport { ISelection } from '../common/core/selection.js';\nimport { getActiveElement, isEditableElement } from '../../base/browser/dom.js';\nimport { EnterOperation } from '../common/cursor/cursorTypeEditOperations.js';\nimport { TextEditorSelectionSource } from '../../platform/editor/common/editor.js';\n\nconst CORE_WEIGHT = KeybindingWeight.EditorCore;\n\nexport abstract class CoreEditorCommand<T> extends EditorCommand {\n\tpublic runEditorCommand(accessor: ServicesAccessor, editor: ICodeEditor, args?: Partial<T> | null): void {\n\t\tconst viewModel = editor._getViewModel();\n\t\tif (!viewModel) {\n\t\t\t// the editor has no view => has no cursors\n\t\t\treturn;\n\t\t}\n\t\tthis.runCoreEditorCommand(viewModel, args || {});\n\t}\n\n\tpublic abstract runCoreEditorCommand(viewModel: IViewModel, args: Partial<T>): void;\n}\n\nexport namespace EditorScroll_ {\n\n\tconst isEditorScrollArgs = function (arg: unknown): boolean {\n\t\tif (!types.isObject(arg)) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst scrollArg: RawArguments = arg as RawArguments;\n\n\t\tif (!types.isString(scrollArg.to)) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (!types.isUndefined(scrollArg.by) && !types.isString(scrollArg.by)) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (!types.isUndefined(scrollArg.value) && !types.isNumber(scrollArg.value)) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (!types.isUndefined(scrollArg.revealCursor) && !types.isBoolean(scrollArg.revealCursor)) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t};\n\n\texport const metadata: ICommandMetadata = {\n\t\tdescription: 'Scroll editor in the given direction',\n\t\targs: [\n\t\t\t{\n\t\t\t\tname: 'Editor scroll argument object',\n\t\t\t\tdescription: `Property-value pairs that can be passed through this argument:\n\t\t\t\t\t* 'to': A mandatory direction value.\n\t\t\t\t\t\t\\`\\`\\`\n\t\t\t\t\t\t'up', 'down'\n\t\t\t\t\t\t\\`\\`\\`\n\t\t\t\t\t* 'by': Unit to move. Default is computed based on 'to' value.\n\t\t\t\t\t\t\\`\\`\\`\n\t\t\t\t\t\t'line', 'wrappedLine', 'page', 'halfPage', 'editor'\n\t\t\t\t\t\t\\`\\`\\`\n\t\t\t\t\t* 'value': Number of units to move. Default is '1'.\n\t\t\t\t\t* 'revealCursor': If 'true' reveals the cursor if it is outside view port.\n\t\t\t\t`,\n\t\t\t\tconstraint: isEditorScrollArgs,\n\t\t\t\tschema: {\n\t\t\t\t\t'type': 'object',\n\t\t\t\t\t'required': ['to'],\n\t\t\t\t\t'properties': {\n\t\t\t\t\t\t'to': {\n\t\t\t\t\t\t\t'type': 'string',\n\t\t\t\t\t\t\t'enum': ['up', 'down']\n\t\t\t\t\t\t},\n\t\t\t\t\t\t'by': {\n\t\t\t\t\t\t\t'type': 'string',\n\t\t\t\t\t\t\t'enum': ['line', 'wrappedLine', 'page', 'halfPage', 'editor']\n\t\t\t\t\t\t},\n\t\t\t\t\t\t'value': {\n\t\t\t\t\t\t\t'type': 'number',\n\t\t\t\t\t\t\t'default': 1\n\t\t\t\t\t\t},\n\t\t\t\t\t\t'revealCursor': {\n\t\t\t\t\t\t\t'type': 'boolean',\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t]\n\t};\n\n\t/**\n\t * Directions in the view for editor scroll command.\n\t */\n\texport const RawDirection = {\n\t\tUp: 'up',\n\t\tRight: 'right',\n\t\tDown: 'down',\n\t\tLeft: 'left'\n\t};\n\n\t/**\n\t * Units for editor scroll 'by' argument\n\t */\n\texport const RawUnit = {\n\t\tLine: 'line',\n\t\tWrappedLine: 'wrappedLine',\n\t\tPage: 'page',\n\t\tHalfPage: 'halfPage',\n\t\tEditor: 'editor',\n\t\tColumn: 'column'\n\t};\n\n\t/**\n\t * Arguments for editor scroll command\n\t */\n\texport interface RawArguments {\n\t\tto: string;\n\t\tby?: string;\n\t\tvalue?: number;\n\t\trevealCursor?: boolean;\n\t\tselect?: boolean;\n\t}\n\n\texport function parse(args: Partial<RawArguments>): ParsedArguments | null {\n\t\tlet direction: Direction;\n\t\tswitch (args.to) {\n\t\t\tcase RawDirection.Up:\n\t\t\t\tdirection = Direction.Up;\n\t\t\t\tbreak;\n\t\t\tcase RawDirection.Right:\n\t\t\t\tdirection = Direction.Right;\n\t\t\t\tbreak;\n\t\t\tcase RawDirection.Down:\n\t\t\t\tdirection = Direction.Down;\n\t\t\t\tbreak;\n\t\t\tcase RawDirection.Left:\n\t\t\t\tdirection = Direction.Left;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\t// Illegal arguments\n\t\t\t\treturn null;\n\t\t}\n\n\t\tlet unit: Unit;\n\t\tswitch (args.by) {\n\t\t\tcase RawUnit.Line:\n\t\t\t\tunit = Unit.Line;\n\t\t\t\tbreak;\n\t\t\tcase RawUnit.WrappedLine:\n\t\t\t\tunit = Unit.WrappedLine;\n\t\t\t\tbreak;\n\t\t\tcase RawUnit.Page:\n\t\t\t\tunit = Unit.Page;\n\t\t\t\tbreak;\n\t\t\tcase RawUnit.HalfPage:\n\t\t\t\tunit = Unit.HalfPage;\n\t\t\t\tbreak;\n\t\t\tcase RawUnit.Editor:\n\t\t\t\tunit = Unit.Editor;\n\t\t\t\tbreak;\n\t\t\tcase RawUnit.Column:\n\t\t\t\tunit = Unit.Column;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tunit = Unit.WrappedLine;\n\t\t}\n\n\t\tconst value = Math.floor(args.value || 1);\n\t\tconst revealCursor = !!args.revealCursor;\n\n\t\treturn {\n\t\t\tdirection: direction,\n\t\t\tunit: unit,\n\t\t\tvalue: value,\n\t\t\trevealCursor: revealCursor,\n\t\t\tselect: (!!args.select)\n\t\t};\n\t}\n\n\texport interface ParsedArguments {\n\t\tdirection: Direction;\n\t\tunit: Unit;\n\t\tvalue: number;\n\t\trevealCursor: boolean;\n\t\tselect: boolean;\n\t}\n\n\n\texport const enum Direction {\n\t\tUp = 1,\n\t\tRight = 2,\n\t\tDown = 3,\n\t\tLeft = 4\n\t}\n\n\texport const enum Unit {\n\t\tLine = 1,\n\t\tWrappedLine = 2,\n\t\tPage = 3,\n\t\tHalfPage = 4,\n\t\tEditor = 5,\n\t\tColumn = 6\n\t}\n}\n\nexport namespace RevealLine_ {\n\n\tconst isRevealLineArgs = function (arg: unknown): boolean {\n\t\tif (!types.isObject(arg)) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst reveaLineArg: RawArguments = arg as RawArguments;\n\n\t\tif (!types.isNumber(reveaLineArg.lineNumber) && !types.isString(reveaLineArg.lineNumber)) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (!types.isUndefined(reveaLineArg.at) && !types.isString(reveaLineArg.at)) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t};\n\n\texport const metadata: ICommandMetadata = {\n\t\tdescription: 'Reveal the given line at the given logical position',\n\t\targs: [\n\t\t\t{\n\t\t\t\tname: 'Reveal line argument object',\n\t\t\t\tdescription: `Property-value pairs that can be passed through this argument:\n\t\t\t\t\t* 'lineNumber': A mandatory line number value.\n\t\t\t\t\t* 'at': Logical position at which line has to be revealed.\n\t\t\t\t\t\t\\`\\`\\`\n\t\t\t\t\t\t'top', 'center', 'bottom'\n\t\t\t\t\t\t\\`\\`\\`\n\t\t\t\t`,\n\t\t\t\tconstraint: isRevealLineArgs,\n\t\t\t\tschema: {\n\t\t\t\t\t'type': 'object',\n\t\t\t\t\t'required': ['lineNumber'],\n\t\t\t\t\t'properties': {\n\t\t\t\t\t\t'lineNumber': {\n\t\t\t\t\t\t\t'type': ['number', 'string'],\n\t\t\t\t\t\t},\n\t\t\t\t\t\t'at': {\n\t\t\t\t\t\t\t'type': 'string',\n\t\t\t\t\t\t\t'enum': ['top', 'center', 'bottom']\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t]\n\t};\n\n\t/**\n\t * Arguments for reveal line command\n\t */\n\texport interface RawArguments {\n\t\tlineNumber?: number | string;\n\t\tat?: string;\n\t}\n\n\t/**\n\t * Values for reveal line 'at' argument\n\t */\n\texport const RawAtArgument = {\n\t\tTop: 'top',\n\t\tCenter: 'center',\n\t\tBottom: 'bottom'\n\t};\n}\n\nabstract class EditorOrNativeTextInputCommand {\n\n\tconstructor(target: MultiCommand) {\n\t\t// 1. handle case when focus is in editor.\n\t\ttarget.addImplementation(10000, 'code-editor', (accessor: ServicesAccessor, args: unknown) => {\n\t\t\t// Only if editor text focus (i.e. not if editor has widget focus).\n\t\t\tconst focusedEditor = accessor.get(ICodeEditorService).getFocusedCodeEditor();\n\t\t\tif (focusedEditor && focusedEditor.hasTextFocus()) {\n\t\t\t\treturn this._runEditorCommand(accessor, focusedEditor, args);\n\t\t\t}\n\t\t\treturn false;\n\t\t});\n\n\t\t// 2. handle case when focus is in some other `input` / `textarea`.\n\t\ttarget.addImplementation(1000, 'generic-dom-input-textarea', (accessor: ServicesAccessor, args: unknown) => {\n\t\t\t// Only if focused on an element that allows for entering text\n\t\t\tconst activeElement = getActiveElement();\n\t\t\tif (activeElement && isEditableElement(activeElement)) {\n\t\t\t\tthis.runDOMCommand(activeElement);\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t});\n\n\t\t// 3. (default) handle case when focus is somewhere else.\n\t\ttarget.addImplementation(0, 'generic-dom', (accessor: ServicesAccessor, args: unknown) => {\n\t\t\t// Redirecting to active editor\n\t\t\tconst activeEditor = accessor.get(ICodeEditorService).getActiveCodeEditor();\n\t\t\tif (activeEditor) {\n\t\t\t\tactiveEditor.focus();\n\t\t\t\treturn this._runEditorCommand(accessor, activeEditor, args);\n\t\t\t}\n\t\t\treturn false;\n\t\t});\n\t}\n\n\tpublic _runEditorCommand(accessor: ServicesAccessor | null, editor: ICodeEditor, args: unknown): boolean | Promise<void> {\n\t\tconst result = this.runEditorCommand(accessor, editor, args);\n\t\tif (result) {\n\t\t\treturn result;\n\t\t}\n\t\treturn true;\n\t}\n\n\tpublic abstract runDOMCommand(activeElement: Element): void;\n\tpublic abstract runEditorCommand(accessor: ServicesAccessor | null, editor: ICodeEditor, args: unknown): void | Promise<void>;\n}\n\nexport const enum NavigationCommandRevealType {\n\t/**\n\t * Do regular revealing.\n\t */\n\tRegular = 0,\n\t/**\n\t * Do only minimal revealing.\n\t */\n\tMinimal = 1,\n\t/**\n\t * Do not reveal the position.\n\t */\n\tNone = 2\n}\n\nexport namespace CoreNavigationCommands {\n\n\texport interface BaseCommandOptions {\n\t\tsource?: 'mouse' | 'keyboard' | string;\n\t}\n\n\texport interface MoveCommandOptions extends BaseCommandOptions {\n\t\tposition: IPosition;\n\t\tviewPosition?: IPosition;\n\t\trevealType: NavigationCommandRevealType;\n\t}\n\n\tclass BaseMoveToCommand extends CoreEditorCommand<MoveCommandOptions> {\n\n\t\tprivate readonly _inSelectionMode: boolean;\n\n\t\tconstructor(opts: ICommandOptions & { inSelectionMode: boolean }) {\n\t\t\tsuper(opts);\n\t\t\tthis._inSelectionMode = opts.inSelectionMode;\n\t\t}\n\n\t\tpublic runCoreEditorCommand(viewModel: IViewModel, args: Partial<MoveCommandOptions>): void {\n\t\t\tif (!args.position) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tviewModel.model.pushStackElement();\n\t\t\tconst cursorStateChanged = viewModel.setCursorStates(\n\t\t\t\targs.source,\n\t\t\t\tCursorChangeReason.Explicit,\n\t\t\t\t[\n\t\t\t\t\tCursorMoveCommands.moveTo(viewModel, viewModel.getPrimaryCursorState(), this._inSelectionMode, args.position, args.viewPosition)\n\t\t\t\t]\n\t\t\t);\n\t\t\tif (cursorStateChanged && args.revealType !== NavigationCommandRevealType.None) {\n\t\t\t\tviewModel.revealAllCursors(args.source, true, true);\n\t\t\t}\n\t\t}\n\t}\n\n\texport const MoveTo: CoreEditorCommand<MoveCommandOptions> = registerEditorCommand(new BaseMoveToCommand({\n\t\tid: '_moveTo',\n\t\tinSelectionMode: false,\n\t\tprecondition: undefined\n\t}));\n\n\texport const MoveToSelect: CoreEditorCommand<MoveCommandOptions> = registerEditorCommand(new BaseMoveToCommand({\n\t\tid: '_moveToSelect',\n\t\tinSelectionMode: true,\n\t\tprecondition: undefined\n\t}));\n\n\tabstract class ColumnSelectCommand<T extends BaseCommandOptions = BaseCommandOptions> extends CoreEditorCommand<T> {\n\t\tpublic runCoreEditorCommand(viewModel: IViewModel, args: Partial<T>): void {\n\t\t\tviewModel.model.pushStackElement();\n\t\t\tconst result = this._getColumnSelectResult(viewModel, viewModel.getPrimaryCursorState(), viewModel.getCursorColumnSelectData(), args);\n\t\t\tif (result === null) {\n\t\t\t\t// invalid arguments\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tviewModel.setCursorStates(args.source, CursorChangeReason.Explicit, result.viewStates.map((viewState) => CursorState.fromViewState(viewState)));\n\t\t\tviewModel.setCursorColumnSelectData({\n\t\t\t\tisReal: true,\n\t\t\t\tfromViewLineNumber: result.fromLineNumber,\n\t\t\t\tfromViewVisualColumn: result.fromVisualColumn,\n\t\t\t\ttoViewLineNumber: result.toLineNumber,\n\t\t\t\ttoViewVisualColumn: result.toVisualColumn\n\t\t\t});\n\t\t\tif (result.reversed) {\n\t\t\t\tviewModel.revealTopMostCursor(args.source);\n\t\t\t} else {\n\t\t\t\tviewModel.revealBottomMostCursor(args.source);\n\t\t\t}\n\t\t}\n\n\t\tprotected abstract _getColumnSelectResult(viewModel: IViewModel, primary: CursorState, prevColumnSelectData: IColumnSelectData, args: Partial<T>): IColumnSelectResult | null;\n\n\t}\n\n\texport interface ColumnSelectCommandOptions extends BaseCommandOptions {\n\t\tposition: IPosition;\n\t\tviewPosition: IPosition;\n\t\tmouseColumn: number;\n\t\tdoColumnSelect: boolean;\n\t}\n\n\texport const ColumnSelect: CoreEditorCommand<ColumnSelectCommandOptions> = registerEditorCommand(new class extends ColumnSelectCommand<ColumnSelectCommandOptions> {\n\t\tconstructor() {\n\t\t\tsuper({\n\t\t\t\tid: 'columnSelect',\n\t\t\t\tprecondition: undefined\n\t\t\t});\n\t\t}\n\n\t\tprotected _getColumnSelectResult(viewModel: IViewModel, primary: CursorState, prevColumnSelectData: IColumnSelectData, args: Partial<ColumnSelectCommandOptions>): IColumnSelectResult | null {\n\t\t\tif (typeof args.position === 'undefined' || typeof args.viewPosition === 'undefined' || typeof args.mouseColumn === 'undefined') {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\t// validate `args`\n\t\t\tconst validatedPosition = viewModel.model.validatePosition(args.position);\n\t\t\tconst validatedViewPosition = viewModel.coordinatesConverter.validateViewPosition(new Position(args.viewPosition.lineNumber, args.viewPosition.column), validatedPosition);\n\n\t\t\tconst fromViewLineNumber = args.doColumnSelect ? prevColumnSelectData.fromViewLineNumber : validatedViewPosition.lineNumber;\n\t\t\tconst fromViewVisualColumn = args.doColumnSelect ? prevColumnSelectData.fromViewVisualColumn : args.mouseColumn - 1;\n\t\t\treturn ColumnSelection.columnSelect(viewModel.cursorConfig, viewModel, fromViewLineNumber, fromViewVisualColumn, validatedViewPosition.lineNumber, args.mouseColumn - 1);\n\t\t}\n\t});\n\n\texport const CursorColumnSelectLeft: CoreEditorCommand<BaseCommandOptions> = registerEditorCommand(new class extends ColumnSelectCommand {\n\t\tconstructor() {\n\t\t\tsuper({\n\t\t\t\tid: 'cursorColumnSelectLeft',\n\t\t\t\tprecondition: undefined,\n\t\t\t\tkbOpts: {\n\t\t\t\t\tweight: CORE_WEIGHT,\n\t\t\t\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\t\t\t\tprimary: KeyMod.CtrlCmd | KeyMod.Shift | KeyMod.Alt | KeyCode.LeftArrow,\n\t\t\t\t\tlinux: { primary: 0 }\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tprotected _getColumnSelectResult(viewModel: IViewModel, primary: CursorState, prevColumnSelectData: IColumnSelectData, args: Partial<BaseCommandOptions>): IColumnSelectResult {\n\t\t\treturn ColumnSelection.columnSelectLeft(viewModel.cursorConfig, viewModel, prevColumnSelectData);\n\t\t}\n\t});\n\n\texport const CursorColumnSelectRight: CoreEditorCommand<BaseCommandOptions> = registerEditorCommand(new class extends ColumnSelectCommand {\n\t\tconstructor() {\n\t\t\tsuper({\n\t\t\t\tid: 'cursorColumnSelectRight',\n\t\t\t\tprecondition: undefined,\n\t\t\t\tkbOpts: {\n\t\t\t\t\tweight: CORE_WEIGHT,\n\t\t\t\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\t\t\t\tprimary: KeyMod.CtrlCmd | KeyMod.Shift | KeyMod.Alt | KeyCode.RightArrow,\n\t\t\t\t\tlinux: { primary: 0 }\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tprotected _getColumnSelectResult(viewModel: IViewModel, primary: CursorState, prevColumnSelectData: IColumnSelectData, args: Partial<BaseCommandOptions>): IColumnSelectResult {\n\t\t\treturn ColumnSelection.columnSelectRight(viewModel.cursorConfig, viewModel, prevColumnSelectData);\n\t\t}\n\t});\n\n\tclass ColumnSelectUpCommand extends ColumnSelectCommand {\n\n\t\tprivate readonly _isPaged: boolean;\n\n\t\tconstructor(opts: ICommandOptions & { isPaged: boolean }) {\n\t\t\tsuper(opts);\n\t\t\tthis._isPaged = opts.isPaged;\n\t\t}\n\n\t\tprotected _getColumnSelectResult(viewModel: IViewModel, primary: CursorState, prevColumnSelectData: IColumnSelectData, args: Partial<BaseCommandOptions>): IColumnSelectResult {\n\t\t\treturn ColumnSelection.columnSelectUp(viewModel.cursorConfig, viewModel, prevColumnSelectData, this._isPaged);\n\t\t}\n\t}\n\n\texport const CursorColumnSelectUp: CoreEditorCommand<BaseCommandOptions> = registerEditorCommand(new ColumnSelectUpCommand({\n\t\tisPaged: false,\n\t\tid: 'cursorColumnSelectUp',\n\t\tprecondition: undefined,\n\t\tkbOpts: {\n\t\t\tweight: CORE_WEIGHT,\n\t\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\t\tprimary: KeyMod.CtrlCmd | KeyMod.Shift | KeyMod.Alt | KeyCode.UpArrow,\n\t\t\tlinux: { primary: 0 }\n\t\t}\n\t}));\n\n\texport const CursorColumnSelectPageUp: CoreEditorCommand<BaseCommandOptions> = registerEditorCommand(new ColumnSelectUpCommand({\n\t\tisPaged: true,\n\t\tid: 'cursorColumnSelectPageUp',\n\t\tprecondition: undefined,\n\t\tkbOpts: {\n\t\t\tweight: CORE_WEIGHT,\n\t\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\t\tprimary: KeyMod.CtrlCmd | KeyMod.Shift | KeyMod.Alt | KeyCode.PageUp,\n\t\t\tlinux: { primary: 0 }\n\t\t}\n\t}));\n\n\tclass ColumnSelectDownCommand extends ColumnSelectCommand {\n\n\t\tprivate readonly _isPaged: boolean;\n\n\t\tconstructor(opts: ICommandOptions & { isPaged: boolean }) {\n\t\t\tsuper(opts);\n\t\t\tthis._isPaged = opts.isPaged;\n\t\t}\n\n\t\tprotected _getColumnSelectResult(viewModel: IViewModel, primary: CursorState, prevColumnSelectData: IColumnSelectData, args: Partial<BaseCommandOptions>): IColumnSelectResult {\n\t\t\treturn ColumnSelection.columnSelectDown(viewModel.cursorConfig, viewModel, prevColumnSelectData, this._isPaged);\n\t\t}\n\t}\n\n\texport const CursorColumnSelectDown: CoreEditorCommand<BaseCommandOptions> = registerEditorCommand(new ColumnSelectDownCommand({\n\t\tisPaged: false,\n\t\tid: 'cursorColumnSelectDown',\n\t\tprecondition: undefined,\n\t\tkbOpts: {\n\t\t\tweight: CORE_WEIGHT,\n\t\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\t\tprimary: KeyMod.CtrlCmd | KeyMod.Shift | KeyMod.Alt | KeyCode.DownArrow,\n\t\t\tlinux: { primary: 0 }\n\t\t}\n\t}));\n\n\texport const CursorColumnSelectPageDown: CoreEditorCommand<BaseCommandOptions> = registerEditorCommand(new ColumnSelectDownCommand({\n\t\tisPaged: true,\n\t\tid: 'cursorColumnSelectPageDown',\n\t\tprecondition: undefined,\n\t\tkbOpts: {\n\t\t\tweight: CORE_WEIGHT,\n\t\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\t\tprimary: KeyMod.CtrlCmd | KeyMod.Shift | KeyMod.Alt | KeyCode.PageDown,\n\t\t\tlinux: { primary: 0 }\n\t\t}\n\t}));\n\n\texport class CursorMoveImpl extends CoreEditorCommand<CursorMove_.RawArguments> {\n\t\tconstructor() {\n\t\t\tsuper({\n\t\t\t\tid: 'cursorMove',\n\t\t\t\tprecondition: undefined,\n\t\t\t\tmetadata: CursorMove_.metadata\n\t\t\t});\n\t\t}\n\n\t\tpublic runCoreEditorCommand(viewModel: IViewModel, args: Partial<BaseCommandOptions & CursorMove_.RawArguments>): void {\n\t\t\tconst parsed = CursorMove_.parse(args);\n\t\t\tif (!parsed) {\n\t\t\t\t// illegal arguments\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis._runCursorMove(viewModel, args.source, parsed);\n\t\t}\n\n\t\tprivate _runCursorMove(viewModel: IViewModel, source: string | null | undefined, args: CursorMove_.ParsedArguments): void {\n\t\t\t// If noHistory is true, use PROGRAMMATIC source to prevent adding to navigation history\n\t\t\tconst effectiveSource = args.noHistory ? TextEditorSelectionSource.PROGRAMMATIC : source;\n\n\t\t\tviewModel.model.pushStackElement();\n\t\t\tviewModel.setCursorStates(\n\t\t\t\teffectiveSource,\n\t\t\t\tCursorChangeReason.Explicit,\n\t\t\t\tCursorMoveImpl._move(viewModel, viewModel.getCursorStates(), args)\n\t\t\t);\n\t\t\tviewModel.revealAllCursors(effectiveSource, true);\n\t\t}\n\n\t\tprivate static _move(viewModel: IViewModel, cursors: CursorState[], args: CursorMove_.ParsedArguments): PartialCursorState[] | null {\n\t\t\tconst inSelectionMode = args.select;\n\t\t\tconst value = args.value;\n\n\t\t\tswitch (args.direction) {\n\t\t\t\tcase CursorMove_.Direction.Left:\n\t\t\t\tcase CursorMove_.Direction.Right:\n\t\t\t\tcase CursorMove_.Direction.Up:\n\t\t\t\tcase CursorMove_.Direction.Down:\n\t\t\t\tcase CursorMove_.Direction.PrevBlankLine:\n\t\t\t\tcase CursorMove_.Direction.NextBlankLine:\n\t\t\t\tcase CursorMove_.Direction.WrappedLineStart:\n\t\t\t\tcase CursorMove_.Direction.WrappedLineFirstNonWhitespaceCharacter:\n\t\t\t\tcase CursorMove_.Direction.WrappedLineColumnCenter:\n\t\t\t\tcase CursorMove_.Direction.WrappedLineEnd:\n\t\t\t\tcase CursorMove_.Direction.WrappedLineLastNonWhitespaceCharacter:\n\t\t\t\t\treturn CursorMoveCommands.simpleMove(viewModel, cursors, args.direction, inSelectionMode, value, args.unit);\n\n\t\t\t\tcase CursorMove_.Direction.ViewPortTop:\n\t\t\t\tcase CursorMove_.Direction.ViewPortBottom:\n\t\t\t\tcase CursorMove_.Direction.ViewPortCenter:\n\t\t\t\tcase CursorMove_.Direction.ViewPortIfOutside:\n\t\t\t\t\treturn CursorMoveCommands.viewportMove(viewModel, cursors, args.direction, inSelectionMode, value);\n\t\t\t\tdefault:\n\t\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\t}\n\n\texport const CursorMove: CursorMoveImpl = registerEditorCommand(new CursorMoveImpl());\n\n\tconst enum Constants {\n\t\tPAGE_SIZE_MARKER = -1\n\t}\n\n\texport interface CursorMoveCommandOptions extends BaseCommandOptions {\n\t\tpageSize?: number;\n\t}\n\n\tclass CursorMoveBasedCommand extends CoreEditorCommand<CursorMoveCommandOptions> {\n\n\t\tprivate readonly _staticArgs: CursorMove_.SimpleMoveArguments;\n\n\t\tconstructor(opts: ICommandOptions & { args: CursorMove_.SimpleMoveArguments }) {\n\t\t\tsuper(opts);\n\t\t\tthis._staticArgs = opts.args;\n\t\t}\n\n\t\tpublic runCoreEditorCommand(viewModel: IViewModel, dynamicArgs: Partial<CursorMoveCommandOptions>): void {\n\t\t\tlet args = this._staticArgs;\n\t\t\tif (this._staticArgs.value === Constants.PAGE_SIZE_MARKER) {\n\t\t\t\t// -1 is a marker for page size\n\t\t\t\targs = {\n\t\t\t\t\tdirection: this._staticArgs.direction,\n\t\t\t\t\tunit: this._staticArgs.unit,\n\t\t\t\t\tselect: this._staticArgs.select,\n\t\t\t\t\tvalue: dynamicArgs.pageSize || viewModel.cursorConfig.pageSize\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tviewModel.model.pushStackElement();\n\t\t\tviewModel.setCursorStates(\n\t\t\t\tdynamicArgs.source,\n\t\t\t\tCursorChangeReason.Explicit,\n\t\t\t\tCursorMoveCommands.simpleMove(viewModel, viewModel.getCursorStates(), args.direction, args.select, args.value, args.unit)\n\t\t\t);\n\t\t\tviewModel.revealAllCursors(dynamicArgs.source, true);\n\t\t}\n\t}\n\n\texport const CursorLeft: CoreEditorCommand<CursorMoveCommandOptions> = registerEditorCommand(new CursorMoveBasedCommand({\n\t\targs: {\n\t\t\tdirection: CursorMove_.Direction.Left,\n\t\t\tunit: CursorMove_.Unit.None,\n\t\t\tselect: false,\n\t\t\tvalue: 1\n\t\t},\n\t\tid: 'cursorLeft',\n\t\tprecondition: undefined,\n\t\tkbOpts: {\n\t\t\tweight: CORE_WEIGHT,\n\t\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\t\tprimary: KeyCode.LeftArrow,\n\t\t\tmac: { primary: KeyCode.LeftArrow, secondary: [KeyMod.WinCtrl | KeyCode.KeyB] }\n\t\t}\n\t}));\n\n\texport const CursorLeftSelect: CoreEditorCommand<CursorMoveCommandOptions> = registerEditorCommand(new CursorMoveBasedCommand({\n\t\targs: {\n\t\t\tdirection: CursorMove_.Direction.Left,\n\t\t\tunit: CursorMove_.Unit.None,\n\t\t\tselect: true,\n\t\t\tvalue: 1\n\t\t},\n\t\tid: 'cursorLeftSelect',\n\t\tprecondition: undefined,\n\t\tkbOpts: {\n\t\t\tweight: CORE_WEIGHT,\n\t\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\t\tprimary: KeyMod.Shift | KeyCode.LeftArrow\n\t\t}\n\t}));\n\n\texport const CursorRight: CoreEditorCommand<CursorMoveCommandOptions> = registerEditorCommand(new CursorMoveBasedCommand({\n\t\targs: {\n\t\t\tdirection: CursorMove_.Direction.Right,\n\t\t\tunit: CursorMove_.Unit.None,\n\t\t\tselect: false,\n\t\t\tvalue: 1\n\t\t},\n\t\tid: 'cursorRight',\n\t\tprecondition: undefined,\n\t\tkbOpts: {\n\t\t\tweight: CORE_WEIGHT,\n\t\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\t\tprimary: KeyCode.RightArrow,\n\t\t\tmac: { primary: KeyCode.RightArrow, secondary: [KeyMod.WinCtrl | KeyCode.KeyF] }\n\t\t}\n\t}));\n\n\texport const CursorRightSelect: CoreEditorCommand<CursorMoveCommandOptions> = registerEditorCommand(new CursorMoveBasedCommand({\n\t\targs: {\n\t\t\tdirection: CursorMove_.Direction.Right,\n\t\t\tunit: CursorMove_.Unit.None,\n\t\t\tselect: true,\n\t\t\tvalue: 1\n\t\t},\n\t\tid: 'cursorRightSelect',\n\t\tprecondition: undefined,\n\t\tkbOpts: {\n\t\t\tweight: CORE_WEIGHT,\n\t\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\t\tprimary: KeyMod.Shift | KeyCode.RightArrow\n\t\t}\n\t}));\n\n\texport const CursorUp: CoreEditorCommand<CursorMoveCommandOptions> = registerEditorCommand(new CursorMoveBasedCommand({\n\t\targs: {\n\t\t\tdirection: CursorMove_.Direction.Up,\n\t\t\tunit: CursorMove_.Unit.WrappedLine,\n\t\t\tselect: false,\n\t\t\tvalue: 1\n\t\t},\n\t\tid: 'cursorUp',\n\t\tprecondition: undefined,\n\t\tkbOpts: {\n\t\t\tweight: CORE_WEIGHT,\n\t\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\t\tprimary: KeyCode.UpArrow,\n\t\t\tmac: { primary: KeyCode.UpArrow, secondary: [KeyMod.WinCtrl | KeyCode.KeyP] }\n\t\t}\n\t}));\n\n\texport const CursorUpSelect: CoreEditorCommand<CursorMoveCommandOptions> = registerEditorCommand(new CursorMoveBasedCommand({\n\t\targs: {\n\t\t\tdirection: CursorMove_.Direction.Up,\n\t\t\tunit: CursorMove_.Unit.WrappedLine,\n\t\t\tselect: true,\n\t\t\tvalue: 1\n\t\t},\n\t\tid: 'cursorUpSelect',\n\t\tprecondition: undefined,\n\t\tkbOpts: {\n\t\t\tweight: CORE_WEIGHT,\n\t\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\t\tprimary: KeyMod.Shift | KeyCode.UpArrow,\n\t\t\tsecondary: [KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.UpArrow],\n\t\t\tmac: { primary: KeyMod.Shift | KeyCode.UpArrow },\n\t\t\tlinux: { primary: KeyMod.Shift | KeyCode.UpArrow }\n\t\t}\n\t}));\n\n\texport const CursorPageUp: CoreEditorCommand<CursorMoveCommandOptions> = registerEditorCommand(new CursorMoveBasedCommand({\n\t\targs: {\n\t\t\tdirection: CursorMove_.Direction.Up,\n\t\t\tunit: CursorMove_.Unit.WrappedLine,\n\t\t\tselect: false,\n\t\t\tvalue: Constants.PAGE_SIZE_MARKER\n\t\t},\n\t\tid: 'cursorPageUp',\n\t\tprecondition: undefined,\n\t\tkbOpts: {\n\t\t\tweight: CORE_WEIGHT,\n\t\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\t\tprimary: KeyCode.PageUp\n\t\t}\n\t}));\n\n\texport const CursorPageUpSelect: CoreEditorCommand<CursorMoveCommandOptions> = registerEditorCommand(new CursorMoveBasedCommand({\n\t\targs: {\n\t\t\tdirection: CursorMove_.Direction.Up,\n\t\t\tunit: CursorMove_.Unit.WrappedLine,\n\t\t\tselect: true,\n\t\t\tvalue: Constants.PAGE_SIZE_MARKER\n\t\t},\n\t\tid: 'cursorPageUpSelect',\n\t\tprecondition: undefined,\n\t\tkbOpts: {\n\t\t\tweight: CORE_WEIGHT,\n\t\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\t\tprimary: KeyMod.Shift | KeyCode.PageUp\n\t\t}\n\t}));\n\n\texport const CursorDown: CoreEditorCommand<CursorMoveCommandOptions> = registerEditorCommand(new CursorMoveBasedCommand({\n\t\targs: {\n\t\t\tdirection: CursorMove_.Direction.Down,\n\t\t\tunit: CursorMove_.Unit.WrappedLine,\n\t\t\tselect: false,\n\t\t\tvalue: 1\n\t\t},\n\t\tid: 'cursorDown',\n\t\tprecondition: undefined,\n\t\tkbOpts: {\n\t\t\tweight: CORE_WEIGHT,\n\t\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\t\tprimary: KeyCode.DownArrow,\n\t\t\tmac: { primary: KeyCode.DownArrow, secondary: [KeyMod.WinCtrl | KeyCode.KeyN] }\n\t\t}\n\t}));\n\n\texport const CursorDownSelect: CoreEditorCommand<CursorMoveCommandOptions> = registerEditorCommand(new CursorMoveBasedCommand({\n\t\targs: {\n\t\t\tdirection: CursorMove_.Direction.Down,\n\t\t\tunit: CursorMove_.Unit.WrappedLine,\n\t\t\tselect: true,\n\t\t\tvalue: 1\n\t\t},\n\t\tid: 'cursorDownSelect',\n\t\tprecondition: undefined,\n\t\tkbOpts: {\n\t\t\tweight: CORE_WEIGHT,\n\t\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\t\tprimary: KeyMod.Shift | KeyCode.DownArrow,\n\t\t\tsecondary: [KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.DownArrow],\n\t\t\tmac: { primary: KeyMod.Shift | KeyCode.DownArrow },\n\t\t\tlinux: { primary: KeyMod.Shift | KeyCode.DownArrow }\n\t\t}\n\t}));\n\n\texport const CursorPageDown: CoreEditorCommand<CursorMoveCommandOptions> = registerEditorCommand(new CursorMoveBasedCommand({\n\t\targs: {\n\t\t\tdirection: CursorMove_.Direction.Down,\n\t\t\tunit: CursorMove_.Unit.WrappedLine,\n\t\t\tselect: false,\n\t\t\tvalue: Constants.PAGE_SIZE_MARKER\n\t\t},\n\t\tid: 'cursorPageDown',\n\t\tprecondition: undefined,\n\t\tkbOpts: {\n\t\t\tweight: CORE_WEIGHT,\n\t\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\t\tprimary: KeyCode.PageDown\n\t\t}\n\t}));\n\n\texport const CursorPageDownSelect: CoreEditorCommand<CursorMoveCommandOptions> = registerEditorCommand(new CursorMoveBasedCommand({\n\t\targs: {\n\t\t\tdirection: CursorMove_.Direction.Down,\n\t\t\tunit: CursorMove_.Unit.WrappedLine,\n\t\t\tselect: true,\n\t\t\tvalue: Constants.PAGE_SIZE_MARKER\n\t\t},\n\t\tid: 'cursorPageDownSelect',\n\t\tprecondition: undefined,\n\t\tkbOpts: {\n\t\t\tweight: CORE_WEIGHT,\n\t\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\t\tprimary: KeyMod.Shift | KeyCode.PageDown\n\t\t}\n\t}));\n\n\texport interface CreateCursorCommandOptions extends MoveCommandOptions {\n\t\twholeLine?: boolean;\n\t}\n\n\texport const CreateCursor: CoreEditorCommand<CreateCursorCommandOptions> = registerEditorCommand(new class extends CoreEditorCommand<CreateCursorCommandOptions> {\n\t\tconstructor() {\n\t\t\tsuper({\n\t\t\t\tid: 'createCursor',\n\t\t\t\tprecondition: undefined\n\t\t\t});\n\t\t}\n\n\t\tpublic runCoreEditorCommand(viewModel: IViewModel, args: Partial<CreateCursorCommandOptions>): void {\n\t\t\tif (!args.position) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tlet newState: PartialCursorState;\n\t\t\tif (args.wholeLine) {\n\t\t\t\tnewState = CursorMoveCommands.line(viewModel, viewModel.getPrimaryCursorState(), false, args.position, args.viewPosition);\n\t\t\t} else {\n\t\t\t\tnewState = CursorMoveCommands.moveTo(viewModel, viewModel.getPrimaryCursorState(), false, args.position, args.viewPosition);\n\t\t\t}\n\n\t\t\tconst states: PartialCursorState[] = viewModel.getCursorStates();\n\n\t\t\t// Check if we should remove a cursor (sort of like a toggle)\n\t\t\tif (states.length > 1) {\n\t\t\t\tconst newModelPosition = (newState.modelState ? newState.modelState.position : null);\n\t\t\t\tconst newViewPosition = (newState.viewState ? newState.viewState.position : null);\n\n\t\t\t\tfor (let i = 0, len = states.length; i < len; i++) {\n\t\t\t\t\tconst state = states[i];\n\n\t\t\t\t\tif (newModelPosition && !state.modelState!.selection.containsPosition(newModelPosition)) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (newViewPosition && !state.viewState!.selection.containsPosition(newViewPosition)) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\t// => Remove the cursor\n\t\t\t\t\tstates.splice(i, 1);\n\n\t\t\t\t\tviewModel.model.pushStackElement();\n\t\t\t\t\tviewModel.setCursorStates(\n\t\t\t\t\t\targs.source,\n\t\t\t\t\t\tCursorChangeReason.Explicit,\n\t\t\t\t\t\tstates\n\t\t\t\t\t);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// => Add the new cursor\n\t\t\tstates.push(newState);\n\n\t\t\tviewModel.model.pushStackElement();\n\t\t\tviewModel.setCursorStates(\n\t\t\t\targs.source,\n\t\t\t\tCursorChangeReason.Explicit,\n\t\t\t\tstates\n\t\t\t);\n\t\t}\n\t});\n\n\texport const LastCursorMoveToSelect: CoreEditorCommand<MoveCommandOptions> = registerEditorCommand(new class extends CoreEditorCommand<MoveCommandOptions> {\n\t\tconstructor() {\n\t\t\tsuper({\n\t\t\t\tid: '_lastCursorMoveToSelect',\n\t\t\t\tprecondition: undefined\n\t\t\t});\n\t\t}\n\n\t\tpublic runCoreEditorCommand(viewModel: IViewModel, args: Partial<MoveCommandOptions>): void {\n\t\t\tif (!args.position) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst lastAddedCursorIndex = viewModel.getLastAddedCursorIndex();\n\n\t\t\tconst states = viewModel.getCursorStates();\n\t\t\tconst newStates: PartialCursorState[] = states.slice(0);\n\t\t\tnewStates[lastAddedCursorIndex] = CursorMoveCommands.moveTo(viewModel, states[lastAddedCursorIndex], true, args.position, args.viewPosition);\n\n\t\t\tviewModel.model.pushStackElement();\n\t\t\tviewModel.setCursorStates(\n\t\t\t\targs.source,\n\t\t\t\tCursorChangeReason.Explicit,\n\t\t\t\tnewStates\n\t\t\t);\n\t\t}\n\t});\n\n\tclass HomeCommand extends CoreEditorCommand<BaseCommandOptions> {\n\n\t\tprivate readonly _inSelectionMode: boolean;\n\n\t\tconstructor(opts: ICommandOptions & { inSelectionMode: boolean }) {\n\t\t\tsuper(opts);\n\t\t\tthis._inSelectionMode = opts.inSelectionMode;\n\t\t}\n\n\t\tpublic runCoreEditorCommand(viewModel: IViewModel, args: Partial<BaseCommandOptions>): void {\n\t\t\tviewModel.model.pushStackElement();\n\t\t\tviewModel.setCursorStates(\n\t\t\t\targs.source,\n\t\t\t\tCursorChangeReason.Explicit,\n\t\t\t\tCursorMoveCommands.moveToBeginningOfLine(viewModel, viewModel.getCursorStates(), this._inSelectionMode)\n\t\t\t);\n\t\t\tviewModel.revealAllCursors(args.source, true);\n\t\t}\n\t}\n\n\texport const CursorHome: CoreEditorCommand<BaseCommandOptions> = registerEditorCommand(new HomeCommand({\n\t\tinSelectionMode: false,\n\t\tid: 'cursorHome',\n\t\tprecondition: undefined,\n\t\tkbOpts: {\n\t\t\tweight: CORE_WEIGHT,\n\t\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\t\tprimary: KeyCode.Home,\n\t\t\tmac: { primary: KeyCode.Home, secondary: [KeyMod.CtrlCmd | KeyCode.LeftArrow] }\n\t\t}\n\t}));\n\n\texport const CursorHomeSelect: CoreEditorCommand<BaseCommandOptions> = registerEditorCommand(new HomeCommand({\n\t\tinSelectionMode: true,\n\t\tid: 'cursorHomeSelect',\n\t\tprecondition: undefined,\n\t\tkbOpts: {\n\t\t\tweight: CORE_WEIGHT,\n\t\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\t\tprimary: KeyMod.Shift | KeyCode.Home,\n\t\t\tmac: { primary: KeyMod.Shift | KeyCode.Home, secondary: [KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.LeftArrow] }\n\t\t}\n\t}));\n\n\tclass LineStartCommand extends CoreEditorCommand<BaseCommandOptions> {\n\n\t\tprivate readonly _inSelectionMode: boolean;\n\n\t\tconstructor(opts: ICommandOptions & { inSelectionMode: boolean }) {\n\t\t\tsuper(opts);\n\t\t\tthis._inSelectionMode = opts.inSelectionMode;\n\t\t}\n\n\t\tpublic runCoreEditorCommand(viewModel: IViewModel, args: Partial<BaseCommandOptions>): void {\n\t\t\tviewModel.model.pushStackElement();\n\t\t\tviewModel.setCursorStates(\n\t\t\t\targs.source,\n\t\t\t\tCursorChangeReason.Explicit,\n\t\t\t\tthis._exec(viewModel.getCursorStates())\n\t\t\t);\n\t\t\tviewModel.revealAllCursors(args.source, true);\n\t\t}\n\n\t\tprivate _exec(cursors: CursorState[]): PartialCursorState[] {\n\t\t\tconst result: PartialCursorState[] = [];\n\t\t\tfor (let i = 0, len = cursors.length; i < len; i++) {\n\t\t\t\tconst cursor = cursors[i];\n\t\t\t\tconst lineNumber = cursor.modelState.position.lineNumber;\n\t\t\t\tresult[i] = CursorState.fromModelState(cursor.modelState.move(this._inSelectionMode, lineNumber, 1, 0));\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n\n\texport const CursorLineStart: CoreEditorCommand<BaseCommandOptions> = registerEditorCommand(new LineStartCommand({\n\t\tinSelectionMode: false,\n\t\tid: 'cursorLineStart',\n\t\tprecondition: undefined,\n\t\tkbOpts: {\n\t\t\tweight: CORE_WEIGHT,\n\t\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\t\tprimary: 0,\n\t\t\tmac: { primary: KeyMod.WinCtrl | KeyCode.KeyA }\n\t\t}\n\t}));\n\n\texport const CursorLineStartSelect: CoreEditorCommand<BaseCommandOptions> = registerEditorCommand(new LineStartCommand({\n\t\tinSelectionMode: true,\n\t\tid: 'cursorLineStartSelect',\n\t\tprecondition: undefined,\n\t\tkbOpts: {\n\t\t\tweight: CORE_WEIGHT,\n\t\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\t\tprimary: 0,\n\t\t\tmac: { primary: KeyMod.WinCtrl | KeyMod.Shift | KeyCode.KeyA }\n\t\t}\n\t}));\n\n\texport interface EndCommandOptions extends BaseCommandOptions {\n\t\tsticky?: boolean;\n\t}\n\n\tclass EndCommand extends CoreEditorCommand<EndCommandOptions> {\n\n\t\tprivate readonly _inSelectionMode: boolean;\n\n\t\tconstructor(opts: ICommandOptions & { inSelectionMode: boolean }) {\n\t\t\tsuper(opts);\n\t\t\tthis._inSelectionMode = opts.inSelectionMode;\n\t\t}\n\n\t\tpublic runCoreEditorCommand(viewModel: IViewModel, args: Partial<EndCommandOptions>): void {\n\t\t\tviewModel.model.pushStackElement();\n\t\t\tviewModel.setCursorStates(\n\t\t\t\targs.source,\n\t\t\t\tCursorChangeReason.Explicit,\n\t\t\t\tCursorMoveCommands.moveToEndOfLine(viewModel, viewModel.getCursorStates(), this._inSelectionMode, args.sticky || false)\n\t\t\t);\n\t\t\tviewModel.revealAllCursors(args.source, true);\n\t\t}\n\t}\n\n\texport const CursorEnd: CoreEditorCommand<EndCommandOptions> = registerEditorCommand(new EndCommand({\n\t\tinSelectionMode: false,\n\t\tid: 'cursorEnd',\n\t\tprecondition: undefined,\n\t\tkbOpts: {\n\t\t\targs: { sticky: false },\n\t\t\tweight: CORE_WEIGHT,\n\t\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\t\tprimary: KeyCode.End,\n\t\t\tmac: { primary: KeyCode.End, secondary: [KeyMod.CtrlCmd | KeyCode.RightArrow] }\n\t\t},\n\t\tmetadata: {\n\t\t\tdescription: `Go to End`,\n\t\t\targs: [{\n\t\t\t\tname: 'args',\n\t\t\t\tschema: {\n\t\t\t\t\ttype: 'object',\n\t\t\t\t\tproperties: {\n\t\t\t\t\t\t'sticky': {\n\t\t\t\t\t\t\tdescription: nls.localize('stickydesc', \"Stick to the end even when going to longer lines\"),\n\t\t\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\t\t\tdefault: false\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}]\n\t\t}\n\t}));\n\n\texport const CursorEndSelect: CoreEditorCommand<EndCommandOptions> = registerEditorCommand(new EndCommand({\n\t\tinSelectionMode: true,\n\t\tid: 'cursorEndSelect',\n\t\tprecondition: undefined,\n\t\tkbOpts: {\n\t\t\targs: { sticky: false },\n\t\t\tweight: CORE_WEIGHT,\n\t\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\t\tprimary: KeyMod.Shift | KeyCode.End,\n\t\t\tmac: { primary: KeyMod.Shift | KeyCode.End, secondary: [KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.RightArrow] }\n\t\t},\n\t\tmetadata: {\n\t\t\tdescription: `Select to End`,\n\t\t\targs: [{\n\t\t\t\tname: 'args',\n\t\t\t\tschema: {\n\t\t\t\t\ttype: 'object',\n\t\t\t\t\tproperties: {\n\t\t\t\t\t\t'sticky': {\n\t\t\t\t\t\t\tdescription: nls.localize('stickydesc', \"Stick to the end even when going to longer lines\"),\n\t\t\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\t\t\tdefault: false\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}]\n\t\t}\n\t}));\n\n\tclass LineEndCommand extends CoreEditorCommand<BaseCommandOptions> {\n\n\t\tprivate readonly _inSelectionMode: boolean;\n\n\t\tconstructor(opts: ICommandOptions & { inSelectionMode: boolean }) {\n\t\t\tsuper(opts);\n\t\t\tthis._inSelectionMode = opts.inSelectionMode;\n\t\t}\n\n\t\tpublic runCoreEditorCommand(viewModel: IViewModel, args: Partial<BaseCommandOptions>): void {\n\t\t\tviewModel.model.pushStackElement();\n\t\t\tviewModel.setCursorStates(\n\t\t\t\targs.source,\n\t\t\t\tCursorChangeReason.Explicit,\n\t\t\t\tthis._exec(viewModel, viewModel.getCursorStates())\n\t\t\t);\n\t\t\tviewModel.revealAllCursors(args.source, true);\n\t\t}\n\n\t\tprivate _exec(viewModel: IViewModel, cursors: CursorState[]): PartialCursorState[] {\n\t\t\tconst result: PartialCursorState[] = [];\n\t\t\tfor (let i = 0, len = cursors.length; i < len; i++) {\n\t\t\t\tconst cursor = cursors[i];\n\t\t\t\tconst lineNumber = cursor.modelState.position.lineNumber;\n\t\t\t\tconst maxColumn = viewModel.model.getLineMaxColumn(lineNumber);\n\t\t\t\tresult[i] = CursorState.fromModelState(cursor.modelState.move(this._inSelectionMode, lineNumber, maxColumn, 0));\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n\n\texport const CursorLineEnd: CoreEditorCommand<BaseCommandOptions> = registerEditorCommand(new LineEndCommand({\n\t\tinSelectionMode: false,\n\t\tid: 'cursorLineEnd',\n\t\tprecondition: undefined,\n\t\tkbOpts: {\n\t\t\tweight: CORE_WEIGHT,\n\t\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\t\tprimary: 0,\n\t\t\tmac: { primary: KeyMod.WinCtrl | KeyCode.KeyE }\n\t\t}\n\t}));\n\n\texport const CursorLineEndSelect: CoreEditorCommand<BaseCommandOptions> = registerEditorCommand(new LineEndCommand({\n\t\tinSelectionMode: true,\n\t\tid: 'cursorLineEndSelect',\n\t\tprecondition: undefined,\n\t\tkbOpts: {\n\t\t\tweight: CORE_WEIGHT,\n\t\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\t\tprimary: 0,\n\t\t\tmac: { primary: KeyMod.WinCtrl | KeyMod.Shift | KeyCode.KeyE }\n\t\t}\n\t}));\n\n\tclass TopCommand extends CoreEditorCommand<BaseCommandOptions> {\n\n\t\tprivate readonly _inSelectionMode: boolean;\n\n\t\tconstructor(opts: ICommandOptions & { inSelectionMode: boolean }) {\n\t\t\tsuper(opts);\n\t\t\tthis._inSelectionMode = opts.inSelectionMode;\n\t\t}\n\n\t\tpublic runCoreEditorCommand(viewModel: IViewModel, args: Partial<BaseCommandOptions>): void {\n\t\t\tviewModel.model.pushStackElement();\n\t\t\tviewModel.setCursorStates(\n\t\t\t\targs.source,\n\t\t\t\tCursorChangeReason.Explicit,\n\t\t\t\tCursorMoveCommands.moveToBeginningOfBuffer(viewModel, viewModel.getCursorStates(), this._inSelectionMode)\n\t\t\t);\n\t\t\tviewModel.revealAllCursors(args.source, true);\n\t\t}\n\t}\n\n\texport const CursorTop: CoreEditorCommand<BaseCommandOptions> = registerEditorCommand(new TopCommand({\n\t\tinSelectionMode: false,\n\t\tid: 'cursorTop',\n\t\tprecondition: undefined,\n\t\tkbOpts: {\n\t\t\tweight: CORE_WEIGHT,\n\t\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\t\tprimary: KeyMod.CtrlCmd | KeyCode.Home,\n\t\t\tmac: { primary: KeyMod.CtrlCmd | KeyCode.UpArrow }\n\t\t}\n\t}));\n\n\texport const CursorTopSelect: CoreEditorCommand<BaseCommandOptions> = registerEditorCommand(new TopCommand({\n\t\tinSelectionMode: true,\n\t\tid: 'cursorTopSelect',\n\t\tprecondition: undefined,\n\t\tkbOpts: {\n\t\t\tweight: CORE_WEIGHT,\n\t\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\t\tprimary: KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.Home,\n\t\t\tmac: { primary: KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.UpArrow }\n\t\t}\n\t}));\n\n\tclass BottomCommand extends CoreEditorCommand<BaseCommandOptions> {\n\n\t\tprivate readonly _inSelectionMode: boolean;\n\n\t\tconstructor(opts: ICommandOptions & { inSelectionMode: boolean }) {\n\t\t\tsuper(opts);\n\t\t\tthis._inSelectionMode = opts.inSelectionMode;\n\t\t}\n\n\t\tpublic runCoreEditorCommand(viewModel: IViewModel, args: Partial<BaseCommandOptions>): void {\n\t\t\tviewModel.model.pushStackElement();\n\t\t\tviewModel.setCursorStates(\n\t\t\t\targs.source,\n\t\t\t\tCursorChangeReason.Explicit,\n\t\t\t\tCursorMoveCommands.moveToEndOfBuffer(viewModel, viewModel.getCursorStates(), this._inSelectionMode)\n\t\t\t);\n\t\t\tviewModel.revealAllCursors(args.source, true);\n\t\t}\n\t}\n\n\texport const CursorBottom: CoreEditorCommand<BaseCommandOptions> = registerEditorCommand(new BottomCommand({\n\t\tinSelectionMode: false,\n\t\tid: 'cursorBottom',\n\t\tprecondition: undefined,\n\t\tkbOpts: {\n\t\t\tweight: CORE_WEIGHT,\n\t\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\t\tprimary: KeyMod.CtrlCmd | KeyCode.End,\n\t\t\tmac: { primary: KeyMod.CtrlCmd | KeyCode.DownArrow }\n\t\t}\n\t}));\n\n\texport const CursorBottomSelect: CoreEditorCommand<BaseCommandOptions> = registerEditorCommand(new BottomCommand({\n\t\tinSelectionMode: true,\n\t\tid: 'cursorBottomSelect',\n\t\tprecondition: undefined,\n\t\tkbOpts: {\n\t\t\tweight: CORE_WEIGHT,\n\t\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\t\tprimary: KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.End,\n\t\t\tmac: { primary: KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.DownArrow }\n\t\t}\n\t}));\n\n\texport type EditorScrollCommandOptions = EditorScroll_.RawArguments & BaseCommandOptions;\n\n\texport class EditorScrollImpl extends CoreEditorCommand<EditorScrollCommandOptions> {\n\t\tconstructor() {\n\t\t\tsuper({\n\t\t\t\tid: 'editorScroll',\n\t\t\t\tprecondition: undefined,\n\t\t\t\tmetadata: EditorScroll_.metadata\n\t\t\t});\n\t\t}\n\n\t\tdetermineScrollMethod(args: EditorScroll_.ParsedArguments) {\n\t\t\tconst horizontalUnits = [EditorScroll_.Unit.Column];\n\t\t\tconst verticalUnits = [\n\t\t\t\tEditorScroll_.Unit.Line,\n\t\t\t\tEditorScroll_.Unit.WrappedLine,\n\t\t\t\tEditorScroll_.Unit.Page,\n\t\t\t\tEditorScroll_.Unit.HalfPage,\n\t\t\t\tEditorScroll_.Unit.Editor,\n\t\t\t\tEditorScroll_.Unit.Column\n\t\t\t];\n\t\t\tconst horizontalDirections = [EditorScroll_.Direction.Left, EditorScroll_.Direction.Right];\n\t\t\tconst verticalDirections = [EditorScroll_.Direction.Up, EditorScroll_.Direction.Down];\n\n\t\t\tif (horizontalUnits.includes(args.unit) && horizontalDirections.includes(args.direction)) {\n\t\t\t\treturn this._runHorizontalEditorScroll.bind(this);\n\t\t\t}\n\t\t\tif (verticalUnits.includes(args.unit) && verticalDirections.includes(args.direction)) {\n\t\t\t\treturn this._runVerticalEditorScroll.bind(this);\n\t\t\t}\n\t\t\treturn null;\n\t\t}\n\n\t\tpublic runCoreEditorCommand(viewModel: IViewModel, args: Partial<EditorScrollCommandOptions>): void {\n\t\t\tconst parsed = EditorScroll_.parse(args);\n\t\t\tif (!parsed) {\n\t\t\t\t// illegal arguments\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst runEditorScroll = this.determineScrollMethod(parsed);\n\t\t\tif (!runEditorScroll) {\n\t\t\t\t// Incompatible unit and direction\n\t\t\t\treturn;\n\t\t\t}\n\t\t\trunEditorScroll(viewModel, args.source, parsed);\n\t\t}\n\n\t\t_runVerticalEditorScroll(viewModel: IViewModel, source: string | null | undefined, args: EditorScroll_.ParsedArguments): void {\n\n\t\t\tconst desiredScrollTop = this._computeDesiredScrollTop(viewModel, args);\n\n\t\t\tif (args.revealCursor) {\n\t\t\t\t// must ensure cursor is in new visible range\n\t\t\t\tconst desiredVisibleViewRange = viewModel.getCompletelyVisibleViewRangeAtScrollTop(desiredScrollTop);\n\t\t\t\tviewModel.setCursorStates(\n\t\t\t\t\tsource,\n\t\t\t\t\tCursorChangeReason.Explicit,\n\t\t\t\t\t[\n\t\t\t\t\t\tCursorMoveCommands.findPositionInViewportIfOutside(viewModel, viewModel.getPrimaryCursorState(), desiredVisibleViewRange, args.select)\n\t\t\t\t\t]\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tviewModel.viewLayout.setScrollPosition({ scrollTop: desiredScrollTop }, ScrollType.Smooth);\n\t\t}\n\n\t\tprivate _computeDesiredScrollTop(viewModel: IViewModel, args: EditorScroll_.ParsedArguments): number {\n\n\t\t\tif (args.unit === EditorScroll_.Unit.Line) {\n\t\t\t\t// scrolling by model lines\n\t\t\t\tconst futureViewport = viewModel.viewLayout.getFutureViewport();\n\t\t\t\tconst visibleViewRange = viewModel.getCompletelyVisibleViewRangeAtScrollTop(futureViewport.top);\n\t\t\t\tconst visibleModelRange = viewModel.coordinatesConverter.convertViewRangeToModelRange(visibleViewRange);\n\n\t\t\t\tlet desiredTopModelLineNumber: number;\n\t\t\t\tif (args.direction === EditorScroll_.Direction.Up) {\n\t\t\t\t\t// must go x model lines up\n\t\t\t\t\tdesiredTopModelLineNumber = Math.max(1, visibleModelRange.startLineNumber - args.value);\n\t\t\t\t} else {\n\t\t\t\t\t// must go x model lines down\n\t\t\t\t\tdesiredTopModelLineNumber = Math.min(viewModel.model.getLineCount(), visibleModelRange.startLineNumber + args.value);\n\t\t\t\t}\n\n\t\t\t\tconst viewPosition = viewModel.coordinatesConverter.convertModelPositionToViewPosition(new Position(desiredTopModelLineNumber, 1));\n\t\t\t\treturn viewModel.viewLayout.getVerticalOffsetForLineNumber(viewPosition.lineNumber);\n\t\t\t}\n\n\t\t\tif (args.unit === EditorScroll_.Unit.Editor) {\n\t\t\t\tlet desiredTopModelLineNumber = 0;\n\t\t\t\tif (args.direction === EditorScroll_.Direction.Down) {\n\t\t\t\t\tdesiredTopModelLineNumber = viewModel.model.getLineCount() - viewModel.cursorConfig.pageSize;\n\t\t\t\t}\n\t\t\t\treturn viewModel.viewLayout.getVerticalOffsetForLineNumber(desiredTopModelLineNumber);\n\t\t\t}\n\n\t\t\tlet noOfLines: number;\n\t\t\tif (args.unit === EditorScroll_.Unit.Page) {\n\t\t\t\tnoOfLines = viewModel.cursorConfig.pageSize * args.value;\n\t\t\t} else if (args.unit === EditorScroll_.Unit.HalfPage) {\n\t\t\t\tnoOfLines = Math.round(viewModel.cursorConfig.pageSize / 2) * args.value;\n\t\t\t} else {\n\t\t\t\tnoOfLines = args.value;\n\t\t\t}\n\t\t\tconst deltaLines = (args.direction === EditorScroll_.Direction.Up ? -1 : 1) * noOfLines;\n\t\t\treturn viewModel.viewLayout.getCurrentScrollTop() + deltaLines * viewModel.cursorConfig.lineHeight;\n\t\t}\n\n\t\t_runHorizontalEditorScroll(viewModel: IViewModel, source: string | null | undefined, args: EditorScroll_.ParsedArguments): void {\n\t\t\tconst desiredScrollLeft = this._computeDesiredScrollLeft(viewModel, args);\n\t\t\tviewModel.viewLayout.setScrollPosition({ scrollLeft: desiredScrollLeft }, ScrollType.Smooth);\n\t\t}\n\n\t\t_computeDesiredScrollLeft(viewModel: IViewModel, args: EditorScroll_.ParsedArguments) {\n\t\t\tconst deltaColumns = (args.direction === EditorScroll_.Direction.Left ? -1 : 1) * args.value;\n\t\t\treturn viewModel.viewLayout.getCurrentScrollLeft() + deltaColumns * viewModel.cursorConfig.typicalHalfwidthCharacterWidth;\n\t\t}\n\t}\n\n\texport const EditorScroll: EditorScrollImpl = registerEditorCommand(new EditorScrollImpl());\n\n\texport const ScrollLineUp: CoreEditorCommand<BaseCommandOptions> = registerEditorCommand(new class extends CoreEditorCommand<BaseCommandOptions> {\n\t\tconstructor() {\n\t\t\tsuper({\n\t\t\t\tid: 'scrollLineUp',\n\t\t\t\tprecondition: undefined,\n\t\t\t\tkbOpts: {\n\t\t\t\t\tweight: CORE_WEIGHT,\n\t\t\t\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\t\t\t\tprimary: KeyMod.CtrlCmd | KeyCode.UpArrow,\n\t\t\t\t\tmac: { primary: KeyMod.WinCtrl | KeyCode.PageUp }\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\trunCoreEditorCommand(viewModel: IViewModel, args: Partial<BaseCommandOptions>): void {\n\t\t\tEditorScroll.runCoreEditorCommand(viewModel, {\n\t\t\t\tto: EditorScroll_.RawDirection.Up,\n\t\t\t\tby: EditorScroll_.RawUnit.WrappedLine,\n\t\t\t\tvalue: 1,\n\t\t\t\trevealCursor: false,\n\t\t\t\tselect: false,\n\t\t\t\tsource: args.source\n\t\t\t});\n\t\t}\n\t});\n\n\texport const ScrollPageUp: CoreEditorCommand<BaseCommandOptions> = registerEditorCommand(new class extends CoreEditorCommand<BaseCommandOptions> {\n\t\tconstructor() {\n\t\t\tsuper({\n\t\t\t\tid: 'scrollPageUp',\n\t\t\t\tprecondition: undefined,\n\t\t\t\tkbOpts: {\n\t\t\t\t\tweight: CORE_WEIGHT,\n\t\t\t\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\t\t\t\tprimary: KeyMod.CtrlCmd | KeyCode.PageUp,\n\t\t\t\t\twin: { primary: KeyMod.Alt | KeyCode.PageUp },\n\t\t\t\t\tlinux: { primary: KeyMod.Alt | KeyCode.PageUp }\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\trunCoreEditorCommand(viewModel: IViewModel, args: Partial<BaseCommandOptions>): void {\n\t\t\tEditorScroll.runCoreEditorCommand(viewModel, {\n\t\t\t\tto: EditorScroll_.RawDirection.Up,\n\t\t\t\tby: EditorScroll_.RawUnit.Page,\n\t\t\t\tvalue: 1,\n\t\t\t\trevealCursor: false,\n\t\t\t\tselect: false,\n\t\t\t\tsource: args.source\n\t\t\t});\n\t\t}\n\t});\n\n\texport const ScrollEditorTop: CoreEditorCommand<BaseCommandOptions> = registerEditorCommand(new class extends CoreEditorCommand<BaseCommandOptions> {\n\t\tconstructor() {\n\t\t\tsuper({\n\t\t\t\tid: 'scrollEditorTop',\n\t\t\t\tprecondition: undefined,\n\t\t\t\tkbOpts: {\n\t\t\t\t\tweight: CORE_WEIGHT,\n\t\t\t\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\trunCoreEditorCommand(viewModel: IViewModel, args: Partial<BaseCommandOptions>): void {\n\t\t\tEditorScroll.runCoreEditorCommand(viewModel, {\n\t\t\t\tto: EditorScroll_.RawDirection.Up,\n\t\t\t\tby: EditorScroll_.RawUnit.Editor,\n\t\t\t\tvalue: 1,\n\t\t\t\trevealCursor: false,\n\t\t\t\tselect: false,\n\t\t\t\tsource: args.source\n\t\t\t});\n\t\t}\n\t});\n\n\texport const ScrollLineDown: CoreEditorCommand<BaseCommandOptions> = registerEditorCommand(new class extends CoreEditorCommand<BaseCommandOptions> {\n\t\tconstructor() {\n\t\t\tsuper({\n\t\t\t\tid: 'scrollLineDown',\n\t\t\t\tprecondition: undefined,\n\t\t\t\tkbOpts: {\n\t\t\t\t\tweight: CORE_WEIGHT,\n\t\t\t\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\t\t\t\tprimary: KeyMod.CtrlCmd | KeyCode.DownArrow,\n\t\t\t\t\tmac: { primary: KeyMod.WinCtrl | KeyCode.PageDown }\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\trunCoreEditorCommand(viewModel: IViewModel, args: Partial<BaseCommandOptions>): void {\n\t\t\tEditorScroll.runCoreEditorCommand(viewModel, {\n\t\t\t\tto: EditorScroll_.RawDirection.Down,\n\t\t\t\tby: EditorScroll_.RawUnit.WrappedLine,\n\t\t\t\tvalue: 1,\n\t\t\t\trevealCursor: false,\n\t\t\t\tselect: false,\n\t\t\t\tsource: args.source\n\t\t\t});\n\t\t}\n\t});\n\n\texport const ScrollPageDown: CoreEditorCommand<BaseCommandOptions> = registerEditorCommand(new class extends CoreEditorCommand<BaseCommandOptions> {\n\t\tconstructor() {\n\t\t\tsuper({\n\t\t\t\tid: 'scrollPageDown',\n\t\t\t\tprecondition: undefined,\n\t\t\t\tkbOpts: {\n\t\t\t\t\tweight: CORE_WEIGHT,\n\t\t\t\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\t\t\t\tprimary: KeyMod.CtrlCmd | KeyCode.PageDown,\n\t\t\t\t\twin: { primary: KeyMod.Alt | KeyCode.PageDown },\n\t\t\t\t\tlinux: { primary: KeyMod.Alt | KeyCode.PageDown }\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\trunCoreEditorCommand(viewModel: IViewModel, args: Partial<BaseCommandOptions>): void {\n\t\t\tEditorScroll.runCoreEditorCommand(viewModel, {\n\t\t\t\tto: EditorScroll_.RawDirection.Down,\n\t\t\t\tby: EditorScroll_.RawUnit.Page,\n\t\t\t\tvalue: 1,\n\t\t\t\trevealCursor: false,\n\t\t\t\tselect: false,\n\t\t\t\tsource: args.source\n\t\t\t});\n\t\t}\n\t});\n\n\texport const ScrollEditorBottom: CoreEditorCommand<BaseCommandOptions> = registerEditorCommand(new class extends CoreEditorCommand<BaseCommandOptions> {\n\t\tconstructor() {\n\t\t\tsuper({\n\t\t\t\tid: 'scrollEditorBottom',\n\t\t\t\tprecondition: undefined,\n\t\t\t\tkbOpts: {\n\t\t\t\t\tweight: CORE_WEIGHT,\n\t\t\t\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\trunCoreEditorCommand(viewModel: IViewModel, args: Partial<BaseCommandOptions>): void {\n\t\t\tEditorScroll.runCoreEditorCommand(viewModel, {\n\t\t\t\tto: EditorScroll_.RawDirection.Down,\n\t\t\t\tby: EditorScroll_.RawUnit.Editor,\n\t\t\t\tvalue: 1,\n\t\t\t\trevealCursor: false,\n\t\t\t\tselect: false,\n\t\t\t\tsource: args.source\n\t\t\t});\n\t\t}\n\t});\n\n\texport const ScrollLeft: CoreEditorCommand<BaseCommandOptions> = registerEditorCommand(new class extends CoreEditorCommand<BaseCommandOptions> {\n\t\tconstructor() {\n\t\t\tsuper({\n\t\t\t\tid: 'scrollLeft',\n\t\t\t\tprecondition: undefined,\n\t\t\t\tkbOpts: {\n\t\t\t\t\tweight: CORE_WEIGHT,\n\t\t\t\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\trunCoreEditorCommand(viewModel: IViewModel, args: Partial<BaseCommandOptions>): void {\n\t\t\tEditorScroll.runCoreEditorCommand(viewModel, {\n\t\t\t\tto: EditorScroll_.RawDirection.Left,\n\t\t\t\tby: EditorScroll_.RawUnit.Column,\n\t\t\t\tvalue: 2,\n\t\t\t\trevealCursor: false,\n\t\t\t\tselect: false,\n\t\t\t\tsource: args.source\n\t\t\t});\n\t\t}\n\t});\n\n\texport const ScrollRight: CoreEditorCommand<BaseCommandOptions> = registerEditorCommand(new class extends CoreEditorCommand<BaseCommandOptions> {\n\t\tconstructor() {\n\t\t\tsuper({\n\t\t\t\tid: 'scrollRight',\n\t\t\t\tprecondition: undefined,\n\t\t\t\tkbOpts: {\n\t\t\t\t\tweight: CORE_WEIGHT,\n\t\t\t\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\trunCoreEditorCommand(viewModel: IViewModel, args: Partial<BaseCommandOptions>): void {\n\t\t\tEditorScroll.runCoreEditorCommand(viewModel, {\n\t\t\t\tto: EditorScroll_.RawDirection.Right,\n\t\t\t\tby: EditorScroll_.RawUnit.Column,\n\t\t\t\tvalue: 2,\n\t\t\t\trevealCursor: false,\n\t\t\t\tselect: false,\n\t\t\t\tsource: args.source\n\t\t\t});\n\t\t}\n\t});\n\n\tclass WordCommand extends CoreEditorCommand<MoveCommandOptions> {\n\n\t\tprivate readonly _inSelectionMode: boolean;\n\n\t\tconstructor(opts: ICommandOptions & { inSelectionMode: boolean }) {\n\t\t\tsuper(opts);\n\t\t\tthis._inSelectionMode = opts.inSelectionMode;\n\t\t}\n\n\t\tpublic runCoreEditorCommand(viewModel: IViewModel, args: Partial<MoveCommandOptions>): void {\n\t\t\tif (!args.position) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tviewModel.model.pushStackElement();\n\t\t\tviewModel.setCursorStates(\n\t\t\t\targs.source,\n\t\t\t\tCursorChangeReason.Explicit,\n\t\t\t\t[\n\t\t\t\t\tCursorMoveCommands.word(viewModel, viewModel.getPrimaryCursorState(), this._inSelectionMode, args.position)\n\t\t\t\t]\n\t\t\t);\n\t\t\tif (args.revealType !== NavigationCommandRevealType.None) {\n\t\t\t\tviewModel.revealAllCursors(args.source, true, true);\n\t\t\t}\n\t\t}\n\t}\n\n\texport const WordSelect: CoreEditorCommand<MoveCommandOptions> = registerEditorCommand(new WordCommand({\n\t\tinSelectionMode: false,\n\t\tid: '_wordSelect',\n\t\tprecondition: undefined\n\t}));\n\n\texport const WordSelectDrag: CoreEditorCommand<MoveCommandOptions> = registerEditorCommand(new WordCommand({\n\t\tinSelectionMode: true,\n\t\tid: '_wordSelectDrag',\n\t\tprecondition: undefined\n\t}));\n\n\texport const LastCursorWordSelect: CoreEditorCommand<MoveCommandOptions> = registerEditorCommand(new class extends CoreEditorCommand<MoveCommandOptions> {\n\t\tconstructor() {\n\t\t\tsuper({\n\t\t\t\tid: 'lastCursorWordSelect',\n\t\t\t\tprecondition: undefined\n\t\t\t});\n\t\t}\n\n\t\tpublic runCoreEditorCommand(viewModel: IViewModel, args: Partial<MoveCommandOptions>): void {\n\t\t\tif (!args.position) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst lastAddedCursorIndex = viewModel.getLastAddedCursorIndex();\n\n\t\t\tconst states = viewModel.getCursorStates();\n\t\t\tconst newStates: PartialCursorState[] = states.slice(0);\n\t\t\tconst lastAddedState = states[lastAddedCursorIndex];\n\t\t\tnewStates[lastAddedCursorIndex] = CursorMoveCommands.word(viewModel, lastAddedState, lastAddedState.modelState.hasSelection(), args.position);\n\n\t\t\tviewModel.model.pushStackElement();\n\t\t\tviewModel.setCursorStates(\n\t\t\t\targs.source,\n\t\t\t\tCursorChangeReason.Explicit,\n\t\t\t\tnewStates\n\t\t\t);\n\t\t}\n\t});\n\n\tclass LineCommand extends CoreEditorCommand<MoveCommandOptions> {\n\t\tprivate readonly _inSelectionMode: boolean;\n\n\t\tconstructor(opts: ICommandOptions & { inSelectionMode: boolean }) {\n\t\t\tsuper(opts);\n\t\t\tthis._inSelectionMode = opts.inSelectionMode;\n\t\t}\n\n\t\tpublic runCoreEditorCommand(viewModel: IViewModel, args: Partial<MoveCommandOptions>): void {\n\t\t\tif (!args.position) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tviewModel.model.pushStackElement();\n\t\t\tviewModel.setCursorStates(\n\t\t\t\targs.source,\n\t\t\t\tCursorChangeReason.Explicit,\n\t\t\t\t[\n\t\t\t\t\tCursorMoveCommands.line(viewModel, viewModel.getPrimaryCursorState(), this._inSelectionMode, args.position, args.viewPosition)\n\t\t\t\t]\n\t\t\t);\n\t\t\tif (args.revealType !== NavigationCommandRevealType.None) {\n\t\t\t\tviewModel.revealAllCursors(args.source, false, true);\n\t\t\t}\n\t\t}\n\t}\n\n\texport const LineSelect: CoreEditorCommand<MoveCommandOptions> = registerEditorCommand(new LineCommand({\n\t\tinSelectionMode: false,\n\t\tid: '_lineSelect',\n\t\tprecondition: undefined\n\t}));\n\n\texport const LineSelectDrag: CoreEditorCommand<MoveCommandOptions> = registerEditorCommand(new LineCommand({\n\t\tinSelectionMode: true,\n\t\tid: '_lineSelectDrag',\n\t\tprecondition: undefined\n\t}));\n\n\tclass LastCursorLineCommand extends CoreEditorCommand<MoveCommandOptions> {\n\t\tprivate readonly _inSelectionMode: boolean;\n\n\t\tconstructor(opts: ICommandOptions & { inSelectionMode: boolean }) {\n\t\t\tsuper(opts);\n\t\t\tthis._inSelectionMode = opts.inSelectionMode;\n\t\t}\n\n\t\tpublic runCoreEditorCommand(viewModel: IViewModel, args: Partial<MoveCommandOptions>): void {\n\t\t\tif (!args.position) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst lastAddedCursorIndex = viewModel.getLastAddedCursorIndex();\n\n\t\t\tconst states = viewModel.getCursorStates();\n\t\t\tconst newStates: PartialCursorState[] = states.slice(0);\n\t\t\tnewStates[lastAddedCursorIndex] = CursorMoveCommands.line(viewModel, states[lastAddedCursorIndex], this._inSelectionMode, args.position, args.viewPosition);\n\n\t\t\tviewModel.model.pushStackElement();\n\t\t\tviewModel.setCursorStates(\n\t\t\t\targs.source,\n\t\t\t\tCursorChangeReason.Explicit,\n\t\t\t\tnewStates\n\t\t\t);\n\t\t}\n\t}\n\n\texport const LastCursorLineSelect: CoreEditorCommand<MoveCommandOptions> = registerEditorCommand(new LastCursorLineCommand({\n\t\tinSelectionMode: false,\n\t\tid: 'lastCursorLineSelect',\n\t\tprecondition: undefined\n\t}));\n\n\texport const LastCursorLineSelectDrag: CoreEditorCommand<MoveCommandOptions> = registerEditorCommand(new LastCursorLineCommand({\n\t\tinSelectionMode: true,\n\t\tid: 'lastCursorLineSelectDrag',\n\t\tprecondition: undefined\n\t}));\n\n\texport const CancelSelection: CoreEditorCommand<BaseCommandOptions> = registerEditorCommand(new class extends CoreEditorCommand<BaseCommandOptions> {\n\t\tconstructor() {\n\t\t\tsuper({\n\t\t\t\tid: 'cancelSelection',\n\t\t\t\tprecondition: EditorContextKeys.hasNonEmptySelection,\n\t\t\t\tkbOpts: {\n\t\t\t\t\tweight: CORE_WEIGHT,\n\t\t\t\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\t\t\t\tprimary: KeyCode.Escape,\n\t\t\t\t\tsecondary: [KeyMod.Shift | KeyCode.Escape]\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tpublic runCoreEditorCommand(viewModel: IViewModel, args: Partial<BaseCommandOptions>): void {\n\t\t\tviewModel.model.pushStackElement();\n\t\t\tviewModel.setCursorStates(\n\t\t\t\targs.source,\n\t\t\t\tCursorChangeReason.Explicit,\n\t\t\t\t[\n\t\t\t\t\tCursorMoveCommands.cancelSelection(viewModel, viewModel.getPrimaryCursorState())\n\t\t\t\t]\n\t\t\t);\n\t\t\tviewModel.revealAllCursors(args.source, true);\n\t\t}\n\t});\n\n\texport const RemoveSecondaryCursors: CoreEditorCommand<BaseCommandOptions> = registerEditorCommand(new class extends CoreEditorCommand<BaseCommandOptions> {\n\t\tconstructor() {\n\t\t\tsuper({\n\t\t\t\tid: 'removeSecondaryCursors',\n\t\t\t\tprecondition: EditorContextKeys.hasMultipleSelections,\n\t\t\t\tkbOpts: {\n\t\t\t\t\tweight: CORE_WEIGHT + 1,\n\t\t\t\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\t\t\t\tprimary: KeyCode.Escape,\n\t\t\t\t\tsecondary: [KeyMod.Shift | KeyCode.Escape]\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tpublic runCoreEditorCommand(viewModel: IViewModel, args: Partial<BaseCommandOptions>): void {\n\t\t\tviewModel.model.pushStackElement();\n\t\t\tviewModel.setCursorStates(\n\t\t\t\targs.source,\n\t\t\t\tCursorChangeReason.Explicit,\n\t\t\t\t[\n\t\t\t\t\tviewModel.getPrimaryCursorState()\n\t\t\t\t]\n\t\t\t);\n\t\t\tviewModel.revealAllCursors(args.source, true);\n\t\t\tstatus(nls.localize('removedCursor', \"Removed secondary cursors\"));\n\t\t}\n\t});\n\n\texport type RevealLineCommandOptions = RevealLine_.RawArguments & BaseCommandOptions;\n\n\texport const RevealLine: CoreEditorCommand<RevealLineCommandOptions> = registerEditorCommand(new class extends CoreEditorCommand<RevealLineCommandOptions> {\n\t\tconstructor() {\n\t\t\tsuper({\n\t\t\t\tid: 'revealLine',\n\t\t\t\tprecondition: undefined,\n\t\t\t\tmetadata: RevealLine_.metadata\n\t\t\t});\n\t\t}\n\n\t\tpublic runCoreEditorCommand(viewModel: IViewModel, args: Partial<RevealLineCommandOptions>): void {\n\t\t\tconst revealLineArg = args;\n\t\t\tconst lineNumberArg = revealLineArg.lineNumber || 0;\n\t\t\tlet lineNumber = typeof lineNumberArg === 'number' ? (lineNumberArg + 1) : (parseInt(lineNumberArg) + 1);\n\t\t\tif (lineNumber < 1) {\n\t\t\t\tlineNumber = 1;\n\t\t\t}\n\t\t\tconst lineCount = viewModel.model.getLineCount();\n\t\t\tif (lineNumber > lineCount) {\n\t\t\t\tlineNumber = lineCount;\n\t\t\t}\n\n\t\t\tconst range = new Range(\n\t\t\t\tlineNumber, 1,\n\t\t\t\tlineNumber, viewModel.model.getLineMaxColumn(lineNumber)\n\t\t\t);\n\n\t\t\tlet revealAt = VerticalRevealType.Simple;\n\t\t\tif (revealLineArg.at) {\n\t\t\t\tswitch (revealLineArg.at) {\n\t\t\t\t\tcase RevealLine_.RawAtArgument.Top:\n\t\t\t\t\t\trevealAt = VerticalRevealType.Top;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase RevealLine_.RawAtArgument.Center:\n\t\t\t\t\t\trevealAt = VerticalRevealType.Center;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase RevealLine_.RawAtArgument.Bottom:\n\t\t\t\t\t\trevealAt = VerticalRevealType.Bottom;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst viewRange = viewModel.coordinatesConverter.convertModelRangeToViewRange(range);\n\n\t\t\tviewModel.revealRange(args.source, false, viewRange, revealAt, ScrollType.Smooth);\n\t\t}\n\t});\n\n\texport const SelectAll = new class extends EditorOrNativeTextInputCommand {\n\t\tconstructor() {\n\t\t\tsuper(SelectAllCommand);\n\t\t}\n\t\tpublic runDOMCommand(activeElement: Element): void {\n\t\t\tif (isFirefox) {\n\t\t\t\t(<HTMLInputElement>activeElement).focus();\n\t\t\t\t(<HTMLInputElement>activeElement).select();\n\t\t\t}\n\n\t\t\tactiveElement.ownerDocument.execCommand('selectAll');\n\t\t}\n\t\tpublic runEditorCommand(accessor: ServicesAccessor, editor: ICodeEditor, args: unknown): void {\n\t\t\tconst viewModel = editor._getViewModel();\n\t\t\tif (!viewModel) {\n\t\t\t\t// the editor has no view => has no cursors\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.runCoreEditorCommand(viewModel, args);\n\t\t}\n\t\tpublic runCoreEditorCommand(viewModel: IViewModel, args: unknown): void {\n\t\t\tviewModel.model.pushStackElement();\n\t\t\tviewModel.setCursorStates(\n\t\t\t\t'keyboard',\n\t\t\t\tCursorChangeReason.Explicit,\n\t\t\t\t[\n\t\t\t\t\tCursorMoveCommands.selectAll(viewModel, viewModel.getPrimaryCursorState())\n\t\t\t\t]\n\t\t\t);\n\t\t}\n\t}();\n\n\texport interface SetSelectionCommandOptions extends BaseCommandOptions {\n\t\tselection: ISelection;\n\t}\n\n\texport const SetSelection: CoreEditorCommand<SetSelectionCommandOptions> = registerEditorCommand(new class extends CoreEditorCommand<SetSelectionCommandOptions> {\n\t\tconstructor() {\n\t\t\tsuper({\n\t\t\t\tid: 'setSelection',\n\t\t\t\tprecondition: undefined\n\t\t\t});\n\t\t}\n\n\t\tpublic runCoreEditorCommand(viewModel: IViewModel, args: Partial<SetSelectionCommandOptions>): void {\n\t\t\tif (!args.selection) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tviewModel.model.pushStackElement();\n\t\t\tviewModel.setCursorStates(\n\t\t\t\targs.source,\n\t\t\t\tCursorChangeReason.Explicit,\n\t\t\t\t[\n\t\t\t\t\tCursorState.fromModelSelection(args.selection)\n\t\t\t\t]\n\t\t\t);\n\t\t}\n\t});\n}\n\nconst columnSelectionCondition = ContextKeyExpr.and(\n\tEditorContextKeys.textInputFocus,\n\tEditorContextKeys.columnSelection\n);\nfunction registerColumnSelection(id: string, keybinding: number): void {\n\tKeybindingsRegistry.registerKeybindingRule({\n\t\tid: id,\n\t\tprimary: keybinding,\n\t\twhen: columnSelectionCondition,\n\t\tweight: CORE_WEIGHT + 1\n\t});\n}\n\nregisterColumnSelection(CoreNavigationCommands.CursorColumnSelectLeft.id, KeyMod.Shift | KeyCode.LeftArrow);\nregisterColumnSelection(CoreNavigationCommands.CursorColumnSelectRight.id, KeyMod.Shift | KeyCode.RightArrow);\nregisterColumnSelection(CoreNavigationCommands.CursorColumnSelectUp.id, KeyMod.Shift | KeyCode.UpArrow);\nregisterColumnSelection(CoreNavigationCommands.CursorColumnSelectPageUp.id, KeyMod.Shift | KeyCode.PageUp);\nregisterColumnSelection(CoreNavigationCommands.CursorColumnSelectDown.id, KeyMod.Shift | KeyCode.DownArrow);\nregisterColumnSelection(CoreNavigationCommands.CursorColumnSelectPageDown.id, KeyMod.Shift | KeyCode.PageDown);\n\nfunction registerCommand<T extends Command>(command: T): T {\n\tcommand.register();\n\treturn command;\n}\n\nexport namespace CoreEditingCommands {\n\n\texport abstract class CoreEditingCommand extends EditorCommand {\n\t\tpublic runEditorCommand(accessor: ServicesAccessor, editor: ICodeEditor, args: unknown): void {\n\t\t\tconst viewModel = editor._getViewModel();\n\t\t\tif (!viewModel) {\n\t\t\t\t// the editor has no view => has no cursors\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.runCoreEditingCommand(editor, viewModel, args || {});\n\t\t}\n\n\t\tpublic abstract runCoreEditingCommand(editor: ICodeEditor, viewModel: IViewModel, args: unknown): void;\n\t}\n\n\texport const LineBreakInsert: EditorCommand = registerEditorCommand(new class extends CoreEditingCommand {\n\t\tconstructor() {\n\t\t\tsuper({\n\t\t\t\tid: 'lineBreakInsert',\n\t\t\t\tprecondition: EditorContextKeys.writable,\n\t\t\t\tkbOpts: {\n\t\t\t\t\tweight: CORE_WEIGHT,\n\t\t\t\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\t\t\t\tprimary: 0,\n\t\t\t\t\tmac: { primary: KeyMod.WinCtrl | KeyCode.KeyO }\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tpublic runCoreEditingCommand(editor: ICodeEditor, viewModel: IViewModel, args: unknown): void {\n\t\t\teditor.pushUndoStop();\n\t\t\teditor.executeCommands(this.id, EnterOperation.lineBreakInsert(viewModel.cursorConfig, viewModel.model, viewModel.getCursorStates().map(s => s.modelState.selection)));\n\t\t}\n\t});\n\n\texport const Outdent: EditorCommand = registerEditorCommand(new class extends CoreEditingCommand {\n\t\tconstructor() {\n\t\t\tsuper({\n\t\t\t\tid: 'outdent',\n\t\t\t\tprecondition: EditorContextKeys.writable,\n\t\t\t\tkbOpts: {\n\t\t\t\t\tweight: CORE_WEIGHT,\n\t\t\t\t\tkbExpr: ContextKeyExpr.and(\n\t\t\t\t\t\tEditorContextKeys.editorTextFocus,\n\t\t\t\t\t\tEditorContextKeys.tabDoesNotMoveFocus\n\t\t\t\t\t),\n\t\t\t\t\tprimary: KeyMod.Shift | KeyCode.Tab\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tpublic runCoreEditingCommand(editor: ICodeEditor, viewModel: IViewModel, args: unknown): void {\n\t\t\teditor.pushUndoStop();\n\t\t\teditor.executeCommands(this.id, TypeOperations.outdent(viewModel.cursorConfig, viewModel.model, viewModel.getCursorStates().map(s => s.modelState.selection)));\n\t\t\teditor.pushUndoStop();\n\t\t}\n\t});\n\n\texport const Tab: EditorCommand = registerEditorCommand(new class extends CoreEditingCommand {\n\t\tconstructor() {\n\t\t\tsuper({\n\t\t\t\tid: 'tab',\n\t\t\t\tprecondition: EditorContextKeys.writable,\n\t\t\t\tkbOpts: {\n\t\t\t\t\tweight: CORE_WEIGHT,\n\t\t\t\t\tkbExpr: ContextKeyExpr.and(\n\t\t\t\t\t\tEditorContextKeys.editorTextFocus,\n\t\t\t\t\t\tEditorContextKeys.tabDoesNotMoveFocus\n\t\t\t\t\t),\n\t\t\t\t\tprimary: KeyCode.Tab\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tpublic runCoreEditingCommand(editor: ICodeEditor, viewModel: IViewModel, args: unknown): void {\n\t\t\teditor.pushUndoStop();\n\t\t\teditor.executeCommands(this.id, TypeOperations.tab(viewModel.cursorConfig, viewModel.model, viewModel.getCursorStates().map(s => s.modelState.selection)));\n\t\t\teditor.pushUndoStop();\n\t\t}\n\t});\n\n\texport const DeleteLeft: EditorCommand = registerEditorCommand(new class extends CoreEditingCommand {\n\t\tconstructor() {\n\t\t\tsuper({\n\t\t\t\tid: 'deleteLeft',\n\t\t\t\tprecondition: undefined,\n\t\t\t\tkbOpts: {\n\t\t\t\t\tweight: CORE_WEIGHT,\n\t\t\t\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\t\t\t\tprimary: KeyCode.Backspace,\n\t\t\t\t\tsecondary: [KeyMod.Shift | KeyCode.Backspace],\n\t\t\t\t\tmac: { primary: KeyCode.Backspace, secondary: [KeyMod.Shift | KeyCode.Backspace, KeyMod.WinCtrl | KeyCode.KeyH, KeyMod.WinCtrl | KeyCode.Backspace] }\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tpublic runCoreEditingCommand(editor: ICodeEditor, viewModel: IViewModel, args: unknown): void {\n\t\t\tconst [shouldPushStackElementBefore, commands] = DeleteOperations.deleteLeft(viewModel.getPrevEditOperationType(), viewModel.cursorConfig, viewModel.model, viewModel.getCursorStates().map(s => s.modelState.selection), viewModel.getCursorAutoClosedCharacters());\n\t\t\tif (shouldPushStackElementBefore) {\n\t\t\t\teditor.pushUndoStop();\n\t\t\t}\n\t\t\teditor.executeCommands(this.id, commands);\n\t\t\tviewModel.setPrevEditOperationType(EditOperationType.DeletingLeft);\n\t\t}\n\t});\n\n\texport const DeleteRight: EditorCommand = registerEditorCommand(new class extends CoreEditingCommand {\n\t\tconstructor() {\n\t\t\tsuper({\n\t\t\t\tid: 'deleteRight',\n\t\t\t\tprecondition: undefined,\n\t\t\t\tkbOpts: {\n\t\t\t\t\tweight: CORE_WEIGHT,\n\t\t\t\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\t\t\t\tprimary: KeyCode.Delete,\n\t\t\t\t\tmac: { primary: KeyCode.Delete, secondary: [KeyMod.WinCtrl | KeyCode.KeyD, KeyMod.WinCtrl | KeyCode.Delete] }\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tpublic runCoreEditingCommand(editor: ICodeEditor, viewModel: IViewModel, args: unknown): void {\n\t\t\tconst [shouldPushStackElementBefore, commands] = DeleteOperations.deleteRight(viewModel.getPrevEditOperationType(), viewModel.cursorConfig, viewModel.model, viewModel.getCursorStates().map(s => s.modelState.selection));\n\t\t\tif (shouldPushStackElementBefore) {\n\t\t\t\teditor.pushUndoStop();\n\t\t\t}\n\t\t\teditor.executeCommands(this.id, commands);\n\t\t\tviewModel.setPrevEditOperationType(EditOperationType.DeletingRight);\n\t\t}\n\t});\n\n\texport const Undo = new class extends EditorOrNativeTextInputCommand {\n\t\tconstructor() {\n\t\t\tsuper(UndoCommand);\n\t\t}\n\t\tpublic runDOMCommand(activeElement: Element): void {\n\t\t\tactiveElement.ownerDocument.execCommand('undo');\n\t\t}\n\t\tpublic runEditorCommand(accessor: ServicesAccessor, editor: ICodeEditor, args: unknown): void | Promise<void> {\n\t\t\tif (!editor.hasModel() || editor.getOption(EditorOption.readOnly) === true) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\treturn editor.getModel().undo();\n\t\t}\n\t}();\n\n\texport const Redo = new class extends EditorOrNativeTextInputCommand {\n\t\tconstructor() {\n\t\t\tsuper(RedoCommand);\n\t\t}\n\t\tpublic runDOMCommand(activeElement: Element): void {\n\t\t\tactiveElement.ownerDocument.execCommand('redo');\n\t\t}\n\t\tpublic runEditorCommand(accessor: ServicesAccessor, editor: ICodeEditor, args: unknown): void | Promise<void> {\n\t\t\tif (!editor.hasModel() || editor.getOption(EditorOption.readOnly) === true) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\treturn editor.getModel().redo();\n\t\t}\n\t}();\n}\n\n/**\n * A command that will invoke a command on the focused editor.\n */\nclass EditorHandlerCommand extends Command {\n\n\tprivate readonly _handlerId: string;\n\n\tconstructor(id: string, handlerId: string, metadata?: ICommandMetadata) {\n\t\tsuper({\n\t\t\tid: id,\n\t\t\tprecondition: undefined,\n\t\t\tmetadata\n\t\t});\n\t\tthis._handlerId = handlerId;\n\t}\n\n\tpublic runCommand(accessor: ServicesAccessor, args: unknown): void {\n\t\tconst editor = accessor.get(ICodeEditorService).getFocusedCodeEditor();\n\t\tif (!editor) {\n\t\t\treturn;\n\t\t}\n\n\t\teditor.trigger('keyboard', this._handlerId, args);\n\t}\n}\n\nfunction registerOverwritableCommand(handlerId: string, metadata?: ICommandMetadata): void {\n\tregisterCommand(new EditorHandlerCommand('default:' + handlerId, handlerId));\n\tregisterCommand(new EditorHandlerCommand(handlerId, handlerId, metadata));\n}\n\nregisterOverwritableCommand(Handler.Type, {\n\tdescription: `Type`,\n\targs: [{\n\t\tname: 'args',\n\t\tschema: {\n\t\t\t'type': 'object',\n\t\t\t'required': ['text'],\n\t\t\t'properties': {\n\t\t\t\t'text': {\n\t\t\t\t\t'type': 'string'\n\t\t\t\t}\n\t\t\t},\n\t\t}\n\t}]\n});\nregisterOverwritableCommand(Handler.ReplacePreviousChar);\nregisterOverwritableCommand(Handler.CompositionType);\nregisterOverwritableCommand(Handler.CompositionStart);\nregisterOverwritableCommand(Handler.CompositionEnd);\nregisterOverwritableCommand(Handler.Paste);\nregisterOverwritableCommand(Handler.Cut);\n"]}
|
|
1
|
+
{"version":3,"sources":["vs/editor/browser/coreCommands.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,KAAK,GAAG,MAAM,cAAc,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAE1D,OAAO,KAAK,KAAK,MAAM,4BAA4B,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,oCAAoC,CAAC;AAE5D,OAAO,EAAE,OAAO,EAAE,aAAa,EAAmB,qBAAqB,EAAgB,WAAW,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACjK,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,eAAe,EAAuB,MAAM,2CAA2C,CAAC;AACjG,OAAO,EAAE,WAAW,EAA4D,MAAM,2BAA2B,CAAC;AAClH,OAAO,EAAE,gBAAgB,EAAE,MAAM,4CAA4C,CAAC;AAE9E,OAAO,EAAE,UAAU,IAAI,WAAW,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AACvG,OAAO,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC;AAC1E,OAAO,EAAa,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAEhD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAGnE,OAAO,EAAE,cAAc,EAAE,MAAM,gDAAgD,CAAC;AAEhF,OAAO,EAAoB,mBAAmB,EAAE,MAAM,yDAAyD,CAAC;AAIhH,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAChF,OAAO,EAAE,cAAc,EAAE,MAAM,8CAA8C,CAAC;AAG9E,MAAM,WAAW,sCAA8B,CAAC;AAEhD,MAAM,OAAgB,iBAAqB,SAAQ,aAAa;IACxD,gBAAgB,CAAC,QAA0B,EAAE,MAAmB,EAAE,IAAwB;QAChG,MAAM,SAAS,GAAG,MAAM,CAAC,aAAa,EAAE,CAAC;QACzC,IAAI,CAAC,SAAS,EAAE,CAAC;YAChB,2CAA2C;YAC3C,OAAO;QACR,CAAC;QACD,IAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;IAClD,CAAC;CAGD;AAED,MAAM,KAAW,aAAa,CAwL7B;AAxLD,WAAiB,aAAa;IAE7B,MAAM,kBAAkB,GAAG,UAAU,GAAY;QAChD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1B,OAAO,KAAK,CAAC;QACd,CAAC;QAED,MAAM,SAAS,GAAiB,GAAmB,CAAC;QAEpD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC;YACnC,OAAO,KAAK,CAAC;QACd,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC;YACvE,OAAO,KAAK,CAAC;QACd,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7E,OAAO,KAAK,CAAC;QACd,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,CAAC;YAC5F,OAAO,KAAK,CAAC;QACd,CAAC;QAED,OAAO,IAAI,CAAC;IACb,CAAC,CAAC;IAEW,sBAAQ,GAAqB;QACzC,WAAW,EAAE,sCAAsC;QACnD,IAAI,EAAE;YACL;gBACC,IAAI,EAAE,+BAA+B;gBACrC,WAAW,EAAE;;;;;;;;;;;KAWZ;gBACD,UAAU,EAAE,kBAAkB;gBAC9B,MAAM,EAAE;oBACP,MAAM,EAAE,QAAQ;oBAChB,UAAU,EAAE,CAAC,IAAI,CAAC;oBAClB,YAAY,EAAE;wBACb,IAAI,EAAE;4BACL,MAAM,EAAE,QAAQ;4BAChB,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC;yBACtB;wBACD,IAAI,EAAE;4BACL,MAAM,EAAE,QAAQ;4BAChB,MAAM,EAAE,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC;yBAC7D;wBACD,OAAO,EAAE;4BACR,MAAM,EAAE,QAAQ;4BAChB,SAAS,EAAE,CAAC;yBACZ;wBACD,cAAc,EAAE;4BACf,MAAM,EAAE,SAAS;yBACjB;qBACD;iBACD;aACD;SACD;KACD,CAAC;IAEF;;OAEG;IACU,0BAAY,GAAG;QAC3B,EAAE,EAAE,IAAI;QACR,KAAK,EAAE,OAAO;QACd,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,MAAM;KACZ,CAAC;IAEF;;OAEG;IACU,qBAAO,GAAG;QACtB,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,aAAa;QAC1B,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,UAAU;QACpB,MAAM,EAAE,QAAQ;QAChB,MAAM,EAAE,QAAQ;KAChB,CAAC;IAaF,SAAgB,KAAK,CAAC,IAA2B;QAChD,IAAI,SAAoB,CAAC;QACzB,QAAQ,IAAI,CAAC,EAAE,EAAE,CAAC;YACjB,KAAK,cAAA,YAAY,CAAC,EAAE;gBACnB,SAAS,uBAAe,CAAC;gBACzB,MAAM;YACP,KAAK,cAAA,YAAY,CAAC,KAAK;gBACtB,SAAS,0BAAkB,CAAC;gBAC5B,MAAM;YACP,KAAK,cAAA,YAAY,CAAC,IAAI;gBACrB,SAAS,yBAAiB,CAAC;gBAC3B,MAAM;YACP,KAAK,cAAA,YAAY,CAAC,IAAI;gBACrB,SAAS,yBAAiB,CAAC;gBAC3B,MAAM;YACP;gBACC,oBAAoB;gBACpB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,IAAU,CAAC;QACf,QAAQ,IAAI,CAAC,EAAE,EAAE,CAAC;YACjB,KAAK,cAAA,OAAO,CAAC,IAAI;gBAChB,IAAI,oBAAY,CAAC;gBACjB,MAAM;YACP,KAAK,cAAA,OAAO,CAAC,WAAW;gBACvB,IAAI,2BAAmB,CAAC;gBACxB,MAAM;YACP,KAAK,cAAA,OAAO,CAAC,IAAI;gBAChB,IAAI,oBAAY,CAAC;gBACjB,MAAM;YACP,KAAK,cAAA,OAAO,CAAC,QAAQ;gBACpB,IAAI,wBAAgB,CAAC;gBACrB,MAAM;YACP,KAAK,cAAA,OAAO,CAAC,MAAM;gBAClB,IAAI,sBAAc,CAAC;gBACnB,MAAM;YACP,KAAK,cAAA,OAAO,CAAC,MAAM;gBAClB,IAAI,sBAAc,CAAC;gBACnB,MAAM;YACP;gBACC,IAAI,2BAAmB,CAAC;QAC1B,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;QAC1C,MAAM,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC;QAEzC,OAAO;YACN,SAAS,EAAE,SAAS;YACpB,IAAI,EAAE,IAAI;YACV,KAAK,EAAE,KAAK;YACZ,YAAY,EAAE,YAAY;YAC1B,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;SACvB,CAAC;IACH,CAAC;IAtDe,mBAAK,QAsDpB,CAAA;AA0BF,CAAC,EAxLgB,aAAa,KAAb,aAAa,QAwL7B;AAED,MAAM,KAAW,WAAW,CAkE3B;AAlED,WAAiB,WAAW;IAE3B,MAAM,gBAAgB,GAAG,UAAU,GAAY;QAC9C,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1B,OAAO,KAAK,CAAC;QACd,CAAC;QAED,MAAM,YAAY,GAAiB,GAAmB,CAAC;QAEvD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC;YAC1F,OAAO,KAAK,CAAC;QACd,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,CAAC;YAC7E,OAAO,KAAK,CAAC;QACd,CAAC;QAED,OAAO,IAAI,CAAC;IACb,CAAC,CAAC;IAEW,oBAAQ,GAAqB;QACzC,WAAW,EAAE,qDAAqD;QAClE,IAAI,EAAE;YACL;gBACC,IAAI,EAAE,6BAA6B;gBACnC,WAAW,EAAE;;;;;;KAMZ;gBACD,UAAU,EAAE,gBAAgB;gBAC5B,MAAM,EAAE;oBACP,MAAM,EAAE,QAAQ;oBAChB,UAAU,EAAE,CAAC,YAAY,CAAC;oBAC1B,YAAY,EAAE;wBACb,YAAY,EAAE;4BACb,MAAM,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;yBAC5B;wBACD,IAAI,EAAE;4BACL,MAAM,EAAE,QAAQ;4BAChB,MAAM,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC;yBACnC;qBACD;iBACD;aACD;SACD;KACD,CAAC;IAUF;;OAEG;IACU,yBAAa,GAAG;QAC5B,GAAG,EAAE,KAAK;QACV,MAAM,EAAE,QAAQ;QAChB,MAAM,EAAE,QAAQ;KAChB,CAAC;AACH,CAAC,EAlEgB,WAAW,KAAX,WAAW,QAkE3B;AAED,MAAe,8BAA8B;IAE5C,YAAY,MAAoB;QAC/B,0CAA0C;QAC1C,MAAM,CAAC,iBAAiB,CAAC,KAAK,EAAE,aAAa,EAAE,CAAC,QAA0B,EAAE,IAAa,EAAE,EAAE;YAC5F,mEAAmE;YACnE,MAAM,aAAa,GAAG,QAAQ,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,oBAAoB,EAAE,CAAC;YAC9E,IAAI,aAAa,IAAI,aAAa,CAAC,YAAY,EAAE,EAAE,CAAC;gBACnD,OAAO,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC;YAC9D,CAAC;YACD,OAAO,KAAK,CAAC;QACd,CAAC,CAAC,CAAC;QAEH,mEAAmE;QACnE,MAAM,CAAC,iBAAiB,CAAC,IAAI,EAAE,4BAA4B,EAAE,CAAC,QAA0B,EAAE,IAAa,EAAE,EAAE;YAC1G,8DAA8D;YAC9D,MAAM,aAAa,GAAG,gBAAgB,EAAE,CAAC;YACzC,IAAI,aAAa,IAAI,iBAAiB,CAAC,aAAa,CAAC,EAAE,CAAC;gBACvD,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;gBAClC,OAAO,IAAI,CAAC;YACb,CAAC;YACD,OAAO,KAAK,CAAC;QACd,CAAC,CAAC,CAAC;QAEH,yDAAyD;QACzD,MAAM,CAAC,iBAAiB,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,QAA0B,EAAE,IAAa,EAAE,EAAE;YACxF,+BAA+B;YAC/B,MAAM,YAAY,GAAG,QAAQ,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,mBAAmB,EAAE,CAAC;YAC5E,IAAI,YAAY,EAAE,CAAC;gBAClB,YAAY,CAAC,KAAK,EAAE,CAAC;gBACrB,OAAO,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;YAC7D,CAAC;YACD,OAAO,KAAK,CAAC;QACd,CAAC,CAAC,CAAC;IACJ,CAAC;IAEM,iBAAiB,CAAC,QAAiC,EAAE,MAAmB,EAAE,IAAa;QAC7F,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QAC7D,IAAI,MAAM,EAAE,CAAC;YACZ,OAAO,MAAM,CAAC;QACf,CAAC;QACD,OAAO,IAAI,CAAC;IACb,CAAC;CAID;AAiBD,MAAM,KAAW,sBAAsB,CAiiDtC;AAjiDD,WAAiB,sBAAsB;IAYtC,MAAM,iBAAkB,SAAQ,iBAAqC;QAIpE,YAAY,IAAoD;YAC/D,KAAK,CAAC,IAAI,CAAC,CAAC;YACZ,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,eAAe,CAAC;QAC9C,CAAC;QAEM,oBAAoB,CAAC,SAAqB,EAAE,IAAiC;YACnF,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACpB,OAAO;YACR,CAAC;YACD,SAAS,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;YACnC,MAAM,kBAAkB,GAAG,SAAS,CAAC,eAAe,CACnD,IAAI,CAAC,MAAM,uCAEX;gBACC,kBAAkB,CAAC,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,qBAAqB,EAAE,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC;aAChI,CACD,CAAC;YACF,IAAI,kBAAkB,IAAI,IAAI,CAAC,UAAU,6CAAqC,EAAE,CAAC;gBAChF,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YACrD,CAAC;QACF,CAAC;KACD;IAEY,6BAAM,GAA0C,qBAAqB,CAAC,IAAI,iBAAiB,CAAC;QACxG,EAAE,EAAE,SAAS;QACb,eAAe,EAAE,KAAK;QACtB,YAAY,EAAE,SAAS;KACvB,CAAC,CAAC,CAAC;IAES,mCAAY,GAA0C,qBAAqB,CAAC,IAAI,iBAAiB,CAAC;QAC9G,EAAE,EAAE,eAAe;QACnB,eAAe,EAAE,IAAI;QACrB,YAAY,EAAE,SAAS;KACvB,CAAC,CAAC,CAAC;IAEJ,MAAe,mBAAuE,SAAQ,iBAAoB;QAC1G,oBAAoB,CAAC,SAAqB,EAAE,IAAgB;YAClE,SAAS,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,sBAAsB,CAAC,SAAS,EAAE,SAAS,CAAC,qBAAqB,EAAE,EAAE,SAAS,CAAC,yBAAyB,EAAE,EAAE,IAAI,CAAC,CAAC;YACtI,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;gBACrB,oBAAoB;gBACpB,OAAO;YACR,CAAC;YACD,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,uCAA+B,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,WAAW,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YAChJ,SAAS,CAAC,yBAAyB,CAAC;gBACnC,MAAM,EAAE,IAAI;gBACZ,kBAAkB,EAAE,MAAM,CAAC,cAAc;gBACzC,oBAAoB,EAAE,MAAM,CAAC,gBAAgB;gBAC7C,gBAAgB,EAAE,MAAM,CAAC,YAAY;gBACrC,kBAAkB,EAAE,MAAM,CAAC,cAAc;aACzC,CAAC,CAAC;YACH,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACrB,SAAS,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC5C,CAAC;iBAAM,CAAC;gBACP,SAAS,CAAC,sBAAsB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC/C,CAAC;QACF,CAAC;KAID;IASY,mCAAY,GAAkD,qBAAqB,CAAC,IAAI,KAAM,SAAQ,mBAA+C;QACjK;YACC,KAAK,CAAC;gBACL,EAAE,EAAE,cAAc;gBAClB,YAAY,EAAE,SAAS;aACvB,CAAC,CAAC;QACJ,CAAC;QAES,sBAAsB,CAAC,SAAqB,EAAE,OAAoB,EAAE,oBAAuC,EAAE,IAAyC;YAC/J,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,WAAW,IAAI,OAAO,IAAI,CAAC,YAAY,KAAK,WAAW,IAAI,OAAO,IAAI,CAAC,WAAW,KAAK,WAAW,EAAE,CAAC;gBACjI,OAAO,IAAI,CAAC;YACb,CAAC;YACD,kBAAkB;YAClB,MAAM,iBAAiB,GAAG,SAAS,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC1E,MAAM,qBAAqB,GAAG,SAAS,CAAC,oBAAoB,CAAC,oBAAoB,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,iBAAiB,CAAC,CAAC;YAE3K,MAAM,kBAAkB,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,CAAC,CAAC,qBAAqB,CAAC,UAAU,CAAC;YAC5H,MAAM,oBAAoB,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,oBAAoB,CAAC,oBAAoB,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;YACpH,OAAO,eAAe,CAAC,YAAY,CAAC,SAAS,CAAC,YAAY,EAAE,SAAS,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,qBAAqB,CAAC,UAAU,EAAE,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;QAC1K,CAAC;KACD,CAAC,CAAC;IAEU,6CAAsB,GAA0C,qBAAqB,CAAC,IAAI,KAAM,SAAQ,mBAAmB;QACvI;YACC,KAAK,CAAC;gBACL,EAAE,EAAE,wBAAwB;gBAC5B,YAAY,EAAE,SAAS;gBACvB,MAAM,EAAE;oBACP,MAAM,EAAE,WAAW;oBACnB,MAAM,EAAE,iBAAiB,CAAC,cAAc;oBACxC,OAAO,EAAE,mDAA6B,uBAAa,6BAAoB;oBACvE,KAAK,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE;iBACrB;aACD,CAAC,CAAC;QACJ,CAAC;QAES,sBAAsB,CAAC,SAAqB,EAAE,OAAoB,EAAE,oBAAuC,EAAE,IAAiC;YACvJ,OAAO,eAAe,CAAC,gBAAgB,CAAC,SAAS,CAAC,YAAY,EAAE,SAAS,EAAE,oBAAoB,CAAC,CAAC;QAClG,CAAC;KACD,CAAC,CAAC;IAEU,8CAAuB,GAA0C,qBAAqB,CAAC,IAAI,KAAM,SAAQ,mBAAmB;QACxI;YACC,KAAK,CAAC;gBACL,EAAE,EAAE,yBAAyB;gBAC7B,YAAY,EAAE,SAAS;gBACvB,MAAM,EAAE;oBACP,MAAM,EAAE,WAAW;oBACnB,MAAM,EAAE,iBAAiB,CAAC,cAAc;oBACxC,OAAO,EAAE,mDAA6B,uBAAa,8BAAqB;oBACxE,KAAK,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE;iBACrB;aACD,CAAC,CAAC;QACJ,CAAC;QAES,sBAAsB,CAAC,SAAqB,EAAE,OAAoB,EAAE,oBAAuC,EAAE,IAAiC;YACvJ,OAAO,eAAe,CAAC,iBAAiB,CAAC,SAAS,CAAC,YAAY,EAAE,SAAS,EAAE,oBAAoB,CAAC,CAAC;QACnG,CAAC;KACD,CAAC,CAAC;IAEH,MAAM,qBAAsB,SAAQ,mBAAmB;QAItD,YAAY,IAA4C;YACvD,KAAK,CAAC,IAAI,CAAC,CAAC;YACZ,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC;QAC9B,CAAC;QAES,sBAAsB,CAAC,SAAqB,EAAE,OAAoB,EAAE,oBAAuC,EAAE,IAAiC;YACvJ,OAAO,eAAe,CAAC,cAAc,CAAC,SAAS,CAAC,YAAY,EAAE,SAAS,EAAE,oBAAoB,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC/G,CAAC;KACD;IAEY,2CAAoB,GAA0C,qBAAqB,CAAC,IAAI,qBAAqB,CAAC;QAC1H,OAAO,EAAE,KAAK;QACd,EAAE,EAAE,sBAAsB;QAC1B,YAAY,EAAE,SAAS;QACvB,MAAM,EAAE;YACP,MAAM,EAAE,WAAW;YACnB,MAAM,EAAE,iBAAiB,CAAC,cAAc;YACxC,OAAO,EAAE,mDAA6B,uBAAa,2BAAkB;YACrE,KAAK,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE;SACrB;KACD,CAAC,CAAC,CAAC;IAES,+CAAwB,GAA0C,qBAAqB,CAAC,IAAI,qBAAqB,CAAC;QAC9H,OAAO,EAAE,IAAI;QACb,EAAE,EAAE,0BAA0B;QAC9B,YAAY,EAAE,SAAS;QACvB,MAAM,EAAE;YACP,MAAM,EAAE,WAAW;YACnB,MAAM,EAAE,iBAAiB,CAAC,cAAc;YACxC,OAAO,EAAE,mDAA6B,uBAAa,0BAAiB;YACpE,KAAK,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE;SACrB;KACD,CAAC,CAAC,CAAC;IAEJ,MAAM,uBAAwB,SAAQ,mBAAmB;QAIxD,YAAY,IAA4C;YACvD,KAAK,CAAC,IAAI,CAAC,CAAC;YACZ,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC;QAC9B,CAAC;QAES,sBAAsB,CAAC,SAAqB,EAAE,OAAoB,EAAE,oBAAuC,EAAE,IAAiC;YACvJ,OAAO,eAAe,CAAC,gBAAgB,CAAC,SAAS,CAAC,YAAY,EAAE,SAAS,EAAE,oBAAoB,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QACjH,CAAC;KACD;IAEY,6CAAsB,GAA0C,qBAAqB,CAAC,IAAI,uBAAuB,CAAC;QAC9H,OAAO,EAAE,KAAK;QACd,EAAE,EAAE,wBAAwB;QAC5B,YAAY,EAAE,SAAS;QACvB,MAAM,EAAE;YACP,MAAM,EAAE,WAAW;YACnB,MAAM,EAAE,iBAAiB,CAAC,cAAc;YACxC,OAAO,EAAE,mDAA6B,uBAAa,6BAAoB;YACvE,KAAK,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE;SACrB;KACD,CAAC,CAAC,CAAC;IAES,iDAA0B,GAA0C,qBAAqB,CAAC,IAAI,uBAAuB,CAAC;QAClI,OAAO,EAAE,IAAI;QACb,EAAE,EAAE,4BAA4B;QAChC,YAAY,EAAE,SAAS;QACvB,MAAM,EAAE;YACP,MAAM,EAAE,WAAW;YACnB,MAAM,EAAE,iBAAiB,CAAC,cAAc;YACxC,OAAO,EAAE,mDAA6B,uBAAa,4BAAmB;YACtE,KAAK,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE;SACrB;KACD,CAAC,CAAC,CAAC;IAEJ,MAAa,cAAe,SAAQ,iBAA2C;QAC9E;YACC,KAAK,CAAC;gBACL,EAAE,EAAE,YAAY;gBAChB,YAAY,EAAE,SAAS;gBACvB,QAAQ,EAAE,WAAW,CAAC,QAAQ;aAC9B,CAAC,CAAC;QACJ,CAAC;QAEM,oBAAoB,CAAC,SAAqB,EAAE,IAA4D;YAC9G,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACvC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACb,oBAAoB;gBACpB,OAAO;YACR,CAAC;YACD,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACrD,CAAC;QAEO,cAAc,CAAC,SAAqB,EAAE,MAAiC,EAAE,IAAiC;YACjH,wFAAwF;YACxF,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,oDAAwC,CAAC,CAAC,MAAM,CAAC;YAEzF,SAAS,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;YACnC,SAAS,CAAC,eAAe,CACxB,eAAe,uCAEf,cAAc,CAAC,KAAK,CAAC,SAAS,EAAE,SAAS,CAAC,eAAe,EAAE,EAAE,IAAI,CAAC,CAClE,CAAC;YACF,SAAS,CAAC,gBAAgB,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;QACnD,CAAC;QAEO,MAAM,CAAC,KAAK,CAAC,SAAqB,EAAE,OAAsB,EAAE,IAAiC;YACpG,MAAM,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC;YACpC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;YAEzB,QAAQ,IAAI,CAAC,SAAS,EAAE,CAAC;gBACxB,wCAAgC;gBAChC,yCAAiC;gBACjC,sCAA8B;gBAC9B,wCAAgC;gBAChC,iDAAyC;gBACzC,iDAAyC;gBACzC,oDAA4C;gBAC5C,0EAAkE;gBAClE,2DAAmD;gBACnD,kDAA0C;gBAC1C;oBACC,OAAO,kBAAkB,CAAC,UAAU,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,eAAe,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;gBAE7G,gDAAuC;gBACvC,mDAA0C;gBAC1C,mDAA0C;gBAC1C;oBACC,OAAO,kBAAkB,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,eAAe,EAAE,KAAK,CAAC,CAAC;gBACpG;oBACC,OAAO,IAAI,CAAC;YACd,CAAC;QACF,CAAC;KACD;IA1DY,qCAAc,iBA0D1B,CAAA;IAEY,iCAAU,GAAmB,qBAAqB,CAAC,IAAI,cAAc,EAAE,CAAC,CAAC;IAUtF,MAAM,sBAAuB,SAAQ,iBAA2C;QAI/E,YAAY,IAAiE;YAC5E,KAAK,CAAC,IAAI,CAAC,CAAC;YACZ,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC;QAC9B,CAAC;QAEM,oBAAoB,CAAC,SAAqB,EAAE,WAA8C;YAChG,IAAI,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC;YAC5B,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,wCAA+B,EAAE,CAAC;gBAC3D,+BAA+B;gBAC/B,IAAI,GAAG;oBACN,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,SAAS;oBACrC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI;oBAC3B,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM;oBAC/B,KAAK,EAAE,WAAW,CAAC,QAAQ,IAAI,SAAS,CAAC,YAAY,CAAC,QAAQ;iBAC9D,CAAC;YACH,CAAC;YAED,SAAS,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;YACnC,SAAS,CAAC,eAAe,CACxB,WAAW,CAAC,MAAM,uCAElB,kBAAkB,CAAC,UAAU,CAAC,SAAS,EAAE,SAAS,CAAC,eAAe,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CACzH,CAAC;YACF,SAAS,CAAC,gBAAgB,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACtD,CAAC;KACD;IAEY,iCAAU,GAAgD,qBAAqB,CAAC,IAAI,sBAAsB,CAAC;QACvH,IAAI,EAAE;YACL,SAAS,oCAA4B;YACrC,IAAI,+BAAuB;YAC3B,MAAM,EAAE,KAAK;YACb,KAAK,EAAE,CAAC;SACR;QACD,EAAE,EAAE,YAAY;QAChB,YAAY,EAAE,SAAS;QACvB,MAAM,EAAE;YACP,MAAM,EAAE,WAAW;YACnB,MAAM,EAAE,iBAAiB,CAAC,cAAc;YACxC,OAAO,4BAAmB;YAC1B,GAAG,EAAE,EAAE,OAAO,4BAAmB,EAAE,SAAS,EAAE,CAAC,gDAA6B,CAAC,EAAE;SAC/E;KACD,CAAC,CAAC,CAAC;IAES,uCAAgB,GAAgD,qBAAqB,CAAC,IAAI,sBAAsB,CAAC;QAC7H,IAAI,EAAE;YACL,SAAS,oCAA4B;YACrC,IAAI,+BAAuB;YAC3B,MAAM,EAAE,IAAI;YACZ,KAAK,EAAE,CAAC;SACR;QACD,EAAE,EAAE,kBAAkB;QACtB,YAAY,EAAE,SAAS;QACvB,MAAM,EAAE;YACP,MAAM,EAAE,WAAW;YACnB,MAAM,EAAE,iBAAiB,CAAC,cAAc;YACxC,OAAO,EAAE,oDAAgC;SACzC;KACD,CAAC,CAAC,CAAC;IAES,kCAAW,GAAgD,qBAAqB,CAAC,IAAI,sBAAsB,CAAC;QACxH,IAAI,EAAE;YACL,SAAS,qCAA6B;YACtC,IAAI,+BAAuB;YAC3B,MAAM,EAAE,KAAK;YACb,KAAK,EAAE,CAAC;SACR;QACD,EAAE,EAAE,aAAa;QACjB,YAAY,EAAE,SAAS;QACvB,MAAM,EAAE;YACP,MAAM,EAAE,WAAW;YACnB,MAAM,EAAE,iBAAiB,CAAC,cAAc;YACxC,OAAO,6BAAoB;YAC3B,GAAG,EAAE,EAAE,OAAO,6BAAoB,EAAE,SAAS,EAAE,CAAC,gDAA6B,CAAC,EAAE;SAChF;KACD,CAAC,CAAC,CAAC;IAES,wCAAiB,GAAgD,qBAAqB,CAAC,IAAI,sBAAsB,CAAC;QAC9H,IAAI,EAAE;YACL,SAAS,qCAA6B;YACtC,IAAI,+BAAuB;YAC3B,MAAM,EAAE,IAAI;YACZ,KAAK,EAAE,CAAC;SACR;QACD,EAAE,EAAE,mBAAmB;QACvB,YAAY,EAAE,SAAS;QACvB,MAAM,EAAE;YACP,MAAM,EAAE,WAAW;YACnB,MAAM,EAAE,iBAAiB,CAAC,cAAc;YACxC,OAAO,EAAE,qDAAiC;SAC1C;KACD,CAAC,CAAC,CAAC;IAES,+BAAQ,GAAgD,qBAAqB,CAAC,IAAI,sBAAsB,CAAC;QACrH,IAAI,EAAE;YACL,SAAS,kCAA0B;YACnC,IAAI,sCAA8B;YAClC,MAAM,EAAE,KAAK;YACb,KAAK,EAAE,CAAC;SACR;QACD,EAAE,EAAE,UAAU;QACd,YAAY,EAAE,SAAS;QACvB,MAAM,EAAE;YACP,MAAM,EAAE,WAAW;YACnB,MAAM,EAAE,iBAAiB,CAAC,cAAc;YACxC,OAAO,0BAAiB;YACxB,GAAG,EAAE,EAAE,OAAO,0BAAiB,EAAE,SAAS,EAAE,CAAC,gDAA6B,CAAC,EAAE;SAC7E;KACD,CAAC,CAAC,CAAC;IAES,qCAAc,GAAgD,qBAAqB,CAAC,IAAI,sBAAsB,CAAC;QAC3H,IAAI,EAAE;YACL,SAAS,kCAA0B;YACnC,IAAI,sCAA8B;YAClC,MAAM,EAAE,IAAI;YACZ,KAAK,EAAE,CAAC;SACR;QACD,EAAE,EAAE,gBAAgB;QACpB,YAAY,EAAE,SAAS;QACvB,MAAM,EAAE;YACP,MAAM,EAAE,WAAW;YACnB,MAAM,EAAE,iBAAiB,CAAC,cAAc;YACxC,OAAO,EAAE,kDAA8B;YACvC,SAAS,EAAE,CAAC,mDAA6B,2BAAkB,CAAC;YAC5D,GAAG,EAAE,EAAE,OAAO,EAAE,kDAA8B,EAAE;YAChD,KAAK,EAAE,EAAE,OAAO,EAAE,kDAA8B,EAAE;SAClD;KACD,CAAC,CAAC,CAAC;IAES,mCAAY,GAAgD,qBAAqB,CAAC,IAAI,sBAAsB,CAAC;QACzH,IAAI,EAAE;YACL,SAAS,kCAA0B;YACnC,IAAI,sCAA8B;YAClC,MAAM,EAAE,KAAK;YACb,KAAK,qCAA4B;SACjC;QACD,EAAE,EAAE,cAAc;QAClB,YAAY,EAAE,SAAS;QACvB,MAAM,EAAE;YACP,MAAM,EAAE,WAAW;YACnB,MAAM,EAAE,iBAAiB,CAAC,cAAc;YACxC,OAAO,yBAAgB;SACvB;KACD,CAAC,CAAC,CAAC;IAES,yCAAkB,GAAgD,qBAAqB,CAAC,IAAI,sBAAsB,CAAC;QAC/H,IAAI,EAAE;YACL,SAAS,kCAA0B;YACnC,IAAI,sCAA8B;YAClC,MAAM,EAAE,IAAI;YACZ,KAAK,qCAA4B;SACjC;QACD,EAAE,EAAE,oBAAoB;QACxB,YAAY,EAAE,SAAS;QACvB,MAAM,EAAE;YACP,MAAM,EAAE,WAAW;YACnB,MAAM,EAAE,iBAAiB,CAAC,cAAc;YACxC,OAAO,EAAE,iDAA6B;SACtC;KACD,CAAC,CAAC,CAAC;IAES,iCAAU,GAAgD,qBAAqB,CAAC,IAAI,sBAAsB,CAAC;QACvH,IAAI,EAAE;YACL,SAAS,oCAA4B;YACrC,IAAI,sCAA8B;YAClC,MAAM,EAAE,KAAK;YACb,KAAK,EAAE,CAAC;SACR;QACD,EAAE,EAAE,YAAY;QAChB,YAAY,EAAE,SAAS;QACvB,MAAM,EAAE;YACP,MAAM,EAAE,WAAW;YACnB,MAAM,EAAE,iBAAiB,CAAC,cAAc;YACxC,OAAO,4BAAmB;YAC1B,GAAG,EAAE,EAAE,OAAO,4BAAmB,EAAE,SAAS,EAAE,CAAC,gDAA6B,CAAC,EAAE;SAC/E;KACD,CAAC,CAAC,CAAC;IAES,uCAAgB,GAAgD,qBAAqB,CAAC,IAAI,sBAAsB,CAAC;QAC7H,IAAI,EAAE;YACL,SAAS,oCAA4B;YACrC,IAAI,sCAA8B;YAClC,MAAM,EAAE,IAAI;YACZ,KAAK,EAAE,CAAC;SACR;QACD,EAAE,EAAE,kBAAkB;QACtB,YAAY,EAAE,SAAS;QACvB,MAAM,EAAE;YACP,MAAM,EAAE,WAAW;YACnB,MAAM,EAAE,iBAAiB,CAAC,cAAc;YACxC,OAAO,EAAE,oDAAgC;YACzC,SAAS,EAAE,CAAC,mDAA6B,6BAAoB,CAAC;YAC9D,GAAG,EAAE,EAAE,OAAO,EAAE,oDAAgC,EAAE;YAClD,KAAK,EAAE,EAAE,OAAO,EAAE,oDAAgC,EAAE;SACpD;KACD,CAAC,CAAC,CAAC;IAES,qCAAc,GAAgD,qBAAqB,CAAC,IAAI,sBAAsB,CAAC;QAC3H,IAAI,EAAE;YACL,SAAS,oCAA4B;YACrC,IAAI,sCAA8B;YAClC,MAAM,EAAE,KAAK;YACb,KAAK,qCAA4B;SACjC;QACD,EAAE,EAAE,gBAAgB;QACpB,YAAY,EAAE,SAAS;QACvB,MAAM,EAAE;YACP,MAAM,EAAE,WAAW;YACnB,MAAM,EAAE,iBAAiB,CAAC,cAAc;YACxC,OAAO,2BAAkB;SACzB;KACD,CAAC,CAAC,CAAC;IAES,2CAAoB,GAAgD,qBAAqB,CAAC,IAAI,sBAAsB,CAAC;QACjI,IAAI,EAAE;YACL,SAAS,oCAA4B;YACrC,IAAI,sCAA8B;YAClC,MAAM,EAAE,IAAI;YACZ,KAAK,qCAA4B;SACjC;QACD,EAAE,EAAE,sBAAsB;QAC1B,YAAY,EAAE,SAAS;QACvB,MAAM,EAAE;YACP,MAAM,EAAE,WAAW;YACnB,MAAM,EAAE,iBAAiB,CAAC,cAAc;YACxC,OAAO,EAAE,mDAA+B;SACxC;KACD,CAAC,CAAC,CAAC;IAMS,mCAAY,GAAkD,qBAAqB,CAAC,IAAI,KAAM,SAAQ,iBAA6C;QAC/J;YACC,KAAK,CAAC;gBACL,EAAE,EAAE,cAAc;gBAClB,YAAY,EAAE,SAAS;aACvB,CAAC,CAAC;QACJ,CAAC;QAEM,oBAAoB,CAAC,SAAqB,EAAE,IAAyC;YAC3F,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACpB,OAAO;YACR,CAAC;YACD,IAAI,QAA4B,CAAC;YACjC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBACpB,QAAQ,GAAG,kBAAkB,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,qBAAqB,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;YAC3H,CAAC;iBAAM,CAAC;gBACP,QAAQ,GAAG,kBAAkB,CAAC,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,qBAAqB,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;YAC7H,CAAC;YAED,MAAM,MAAM,GAAyB,SAAS,CAAC,eAAe,EAAE,CAAC;YAEjE,6DAA6D;YAC7D,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvB,MAAM,gBAAgB,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBACrF,MAAM,eAAe,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBAElF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;oBACnD,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;oBAExB,IAAI,gBAAgB,IAAI,CAAC,KAAK,CAAC,UAAW,CAAC,SAAS,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,EAAE,CAAC;wBACzF,SAAS;oBACV,CAAC;oBAED,IAAI,eAAe,IAAI,CAAC,KAAK,CAAC,SAAU,CAAC,SAAS,CAAC,gBAAgB,CAAC,eAAe,CAAC,EAAE,CAAC;wBACtF,SAAS;oBACV,CAAC;oBAED,uBAAuB;oBACvB,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;oBAEpB,SAAS,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;oBACnC,SAAS,CAAC,eAAe,CACxB,IAAI,CAAC,MAAM,uCAEX,MAAM,CACN,CAAC;oBACF,OAAO;gBACR,CAAC;YACF,CAAC;YAED,wBAAwB;YACxB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAEtB,SAAS,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;YACnC,SAAS,CAAC,eAAe,CACxB,IAAI,CAAC,MAAM,uCAEX,MAAM,CACN,CAAC;QACH,CAAC;KACD,CAAC,CAAC;IAEU,6CAAsB,GAA0C,qBAAqB,CAAC,IAAI,KAAM,SAAQ,iBAAqC;QACzJ;YACC,KAAK,CAAC;gBACL,EAAE,EAAE,yBAAyB;gBAC7B,YAAY,EAAE,SAAS;aACvB,CAAC,CAAC;QACJ,CAAC;QAEM,oBAAoB,CAAC,SAAqB,EAAE,IAAiC;YACnF,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACpB,OAAO;YACR,CAAC;YACD,MAAM,oBAAoB,GAAG,SAAS,CAAC,uBAAuB,EAAE,CAAC;YAEjE,MAAM,MAAM,GAAG,SAAS,CAAC,eAAe,EAAE,CAAC;YAC3C,MAAM,SAAS,GAAyB,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACxD,SAAS,CAAC,oBAAoB,CAAC,GAAG,kBAAkB,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,oBAAoB,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;YAE7I,SAAS,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;YACnC,SAAS,CAAC,eAAe,CACxB,IAAI,CAAC,MAAM,uCAEX,SAAS,CACT,CAAC;QACH,CAAC;KACD,CAAC,CAAC;IAEH,MAAM,WAAY,SAAQ,iBAAqC;QAI9D,YAAY,IAAoD;YAC/D,KAAK,CAAC,IAAI,CAAC,CAAC;YACZ,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,eAAe,CAAC;QAC9C,CAAC;QAEM,oBAAoB,CAAC,SAAqB,EAAE,IAAiC;YACnF,SAAS,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;YACnC,SAAS,CAAC,eAAe,CACxB,IAAI,CAAC,MAAM,uCAEX,kBAAkB,CAAC,qBAAqB,CAAC,SAAS,EAAE,SAAS,CAAC,eAAe,EAAE,EAAE,IAAI,CAAC,gBAAgB,CAAC,CACvG,CAAC;YACF,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC/C,CAAC;KACD;IAEY,iCAAU,GAA0C,qBAAqB,CAAC,IAAI,WAAW,CAAC;QACtG,eAAe,EAAE,KAAK;QACtB,EAAE,EAAE,YAAY;QAChB,YAAY,EAAE,SAAS;QACvB,MAAM,EAAE;YACP,MAAM,EAAE,WAAW;YACnB,MAAM,EAAE,iBAAiB,CAAC,cAAc;YACxC,OAAO,uBAAc;YACrB,GAAG,EAAE,EAAE,OAAO,uBAAc,EAAE,SAAS,EAAE,CAAC,sDAAkC,CAAC,EAAE;SAC/E;KACD,CAAC,CAAC,CAAC;IAES,uCAAgB,GAA0C,qBAAqB,CAAC,IAAI,WAAW,CAAC;QAC5G,eAAe,EAAE,IAAI;QACrB,EAAE,EAAE,kBAAkB;QACtB,YAAY,EAAE,SAAS;QACvB,MAAM,EAAE;YACP,MAAM,EAAE,WAAW;YACnB,MAAM,EAAE,iBAAiB,CAAC,cAAc;YACxC,OAAO,EAAE,+CAA2B;YACpC,GAAG,EAAE,EAAE,OAAO,EAAE,+CAA2B,EAAE,SAAS,EAAE,CAAC,mDAA6B,6BAAoB,CAAC,EAAE;SAC7G;KACD,CAAC,CAAC,CAAC;IAEJ,MAAM,gBAAiB,SAAQ,iBAAqC;QAInE,YAAY,IAAoD;YAC/D,KAAK,CAAC,IAAI,CAAC,CAAC;YACZ,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,eAAe,CAAC;QAC9C,CAAC;QAEM,oBAAoB,CAAC,SAAqB,EAAE,IAAiC;YACnF,SAAS,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;YACnC,SAAS,CAAC,eAAe,CACxB,IAAI,CAAC,MAAM,uCAEX,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC,CACvC,CAAC;YACF,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC/C,CAAC;QAEO,KAAK,CAAC,OAAsB;YACnC,MAAM,MAAM,GAAyB,EAAE,CAAC;YACxC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;gBACpD,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;gBAC1B,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC;gBACzD,MAAM,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,cAAc,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACzG,CAAC;YACD,OAAO,MAAM,CAAC;QACf,CAAC;KACD;IAEY,sCAAe,GAA0C,qBAAqB,CAAC,IAAI,gBAAgB,CAAC;QAChH,eAAe,EAAE,KAAK;QACtB,EAAE,EAAE,iBAAiB;QACrB,YAAY,EAAE,SAAS;QACvB,MAAM,EAAE;YACP,MAAM,EAAE,WAAW;YACnB,MAAM,EAAE,iBAAiB,CAAC,cAAc;YACxC,OAAO,EAAE,CAAC;YACV,GAAG,EAAE,EAAE,OAAO,EAAE,gDAA6B,EAAE;SAC/C;KACD,CAAC,CAAC,CAAC;IAES,4CAAqB,GAA0C,qBAAqB,CAAC,IAAI,gBAAgB,CAAC;QACtH,eAAe,EAAE,IAAI;QACrB,EAAE,EAAE,uBAAuB;QAC3B,YAAY,EAAE,SAAS;QACvB,MAAM,EAAE;YACP,MAAM,EAAE,WAAW;YACnB,MAAM,EAAE,iBAAiB,CAAC,cAAc;YACxC,OAAO,EAAE,CAAC;YACV,GAAG,EAAE,EAAE,OAAO,EAAE,kDAA6B,wBAAe,EAAE;SAC9D;KACD,CAAC,CAAC,CAAC;IAMJ,MAAM,UAAW,SAAQ,iBAAoC;QAI5D,YAAY,IAAoD;YAC/D,KAAK,CAAC,IAAI,CAAC,CAAC;YACZ,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,eAAe,CAAC;QAC9C,CAAC;QAEM,oBAAoB,CAAC,SAAqB,EAAE,IAAgC;YAClF,SAAS,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;YACnC,SAAS,CAAC,eAAe,CACxB,IAAI,CAAC,MAAM,uCAEX,kBAAkB,CAAC,eAAe,CAAC,SAAS,EAAE,SAAS,CAAC,eAAe,EAAE,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,CACvH,CAAC;YACF,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC/C,CAAC;KACD;IAEY,gCAAS,GAAyC,qBAAqB,CAAC,IAAI,UAAU,CAAC;QACnG,eAAe,EAAE,KAAK;QACtB,EAAE,EAAE,WAAW;QACf,YAAY,EAAE,SAAS;QACvB,MAAM,EAAE;YACP,IAAI,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;YACvB,MAAM,EAAE,WAAW;YACnB,MAAM,EAAE,iBAAiB,CAAC,cAAc;YACxC,OAAO,sBAAa;YACpB,GAAG,EAAE,EAAE,OAAO,sBAAa,EAAE,SAAS,EAAE,CAAC,uDAAmC,CAAC,EAAE;SAC/E;QACD,QAAQ,EAAE;YACT,WAAW,EAAE,WAAW;YACxB,IAAI,EAAE,CAAC;oBACN,IAAI,EAAE,MAAM;oBACZ,MAAM,EAAE;wBACP,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACX,QAAQ,EAAE;gCACT,WAAW,EAAE,GAAG,CAAC,QAAQ,CAAC,EAAY,EAAE,kDAAkD,CAAC;gCAC3F,IAAI,EAAE,SAAS;gCACf,OAAO,EAAE,KAAK;6BACd;yBACD;qBACD;iBACD,CAAC;SACF;KACD,CAAC,CAAC,CAAC;IAES,sCAAe,GAAyC,qBAAqB,CAAC,IAAI,UAAU,CAAC;QACzG,eAAe,EAAE,IAAI;QACrB,EAAE,EAAE,iBAAiB;QACrB,YAAY,EAAE,SAAS;QACvB,MAAM,EAAE;YACP,IAAI,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;YACvB,MAAM,EAAE,WAAW;YACnB,MAAM,EAAE,iBAAiB,CAAC,cAAc;YACxC,OAAO,EAAE,8CAA0B;YACnC,GAAG,EAAE,EAAE,OAAO,EAAE,8CAA0B,EAAE,SAAS,EAAE,CAAC,mDAA6B,8BAAqB,CAAC,EAAE;SAC7G;QACD,QAAQ,EAAE;YACT,WAAW,EAAE,eAAe;YAC5B,IAAI,EAAE,CAAC;oBACN,IAAI,EAAE,MAAM;oBACZ,MAAM,EAAE;wBACP,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACX,QAAQ,EAAE;gCACT,WAAW,EAAE,GAAG,CAAC,QAAQ,CAAC,EAAY,EAAE,kDAAkD,CAAC;gCAC3F,IAAI,EAAE,SAAS;gCACf,OAAO,EAAE,KAAK;6BACd;yBACD;qBACD;iBACD,CAAC;SACF;KACD,CAAC,CAAC,CAAC;IAEJ,MAAM,cAAe,SAAQ,iBAAqC;QAIjE,YAAY,IAAoD;YAC/D,KAAK,CAAC,IAAI,CAAC,CAAC;YACZ,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,eAAe,CAAC;QAC9C,CAAC;QAEM,oBAAoB,CAAC,SAAqB,EAAE,IAAiC;YACnF,SAAS,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;YACnC,SAAS,CAAC,eAAe,CACxB,IAAI,CAAC,MAAM,uCAEX,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,SAAS,CAAC,eAAe,EAAE,CAAC,CAClD,CAAC;YACF,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC/C,CAAC;QAEO,KAAK,CAAC,SAAqB,EAAE,OAAsB;YAC1D,MAAM,MAAM,GAAyB,EAAE,CAAC;YACxC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;gBACpD,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;gBAC1B,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC;gBACzD,MAAM,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;gBAC/D,MAAM,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,cAAc,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;YACjH,CAAC;YACD,OAAO,MAAM,CAAC;QACf,CAAC;KACD;IAEY,oCAAa,GAA0C,qBAAqB,CAAC,IAAI,cAAc,CAAC;QAC5G,eAAe,EAAE,KAAK;QACtB,EAAE,EAAE,eAAe;QACnB,YAAY,EAAE,SAAS;QACvB,MAAM,EAAE;YACP,MAAM,EAAE,WAAW;YACnB,MAAM,EAAE,iBAAiB,CAAC,cAAc;YACxC,OAAO,EAAE,CAAC;YACV,GAAG,EAAE,EAAE,OAAO,EAAE,gDAA6B,EAAE;SAC/C;KACD,CAAC,CAAC,CAAC;IAES,0CAAmB,GAA0C,qBAAqB,CAAC,IAAI,cAAc,CAAC;QAClH,eAAe,EAAE,IAAI;QACrB,EAAE,EAAE,qBAAqB;QACzB,YAAY,EAAE,SAAS;QACvB,MAAM,EAAE;YACP,MAAM,EAAE,WAAW;YACnB,MAAM,EAAE,iBAAiB,CAAC,cAAc;YACxC,OAAO,EAAE,CAAC;YACV,GAAG,EAAE,EAAE,OAAO,EAAE,kDAA6B,wBAAe,EAAE;SAC9D;KACD,CAAC,CAAC,CAAC;IAEJ,MAAM,UAAW,SAAQ,iBAAqC;QAI7D,YAAY,IAAoD;YAC/D,KAAK,CAAC,IAAI,CAAC,CAAC;YACZ,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,eAAe,CAAC;QAC9C,CAAC;QAEM,oBAAoB,CAAC,SAAqB,EAAE,IAAiC;YACnF,SAAS,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;YACnC,SAAS,CAAC,eAAe,CACxB,IAAI,CAAC,MAAM,uCAEX,kBAAkB,CAAC,uBAAuB,CAAC,SAAS,EAAE,SAAS,CAAC,eAAe,EAAE,EAAE,IAAI,CAAC,gBAAgB,CAAC,CACzG,CAAC;YACF,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC/C,CAAC;KACD;IAEY,gCAAS,GAA0C,qBAAqB,CAAC,IAAI,UAAU,CAAC;QACpG,eAAe,EAAE,KAAK;QACtB,EAAE,EAAE,WAAW;QACf,YAAY,EAAE,SAAS;QACvB,MAAM,EAAE;YACP,MAAM,EAAE,WAAW;YACnB,MAAM,EAAE,iBAAiB,CAAC,cAAc;YACxC,OAAO,EAAE,iDAA6B;YACtC,GAAG,EAAE,EAAE,OAAO,EAAE,oDAAgC,EAAE;SAClD;KACD,CAAC,CAAC,CAAC;IAES,sCAAe,GAA0C,qBAAqB,CAAC,IAAI,UAAU,CAAC;QAC1G,eAAe,EAAE,IAAI;QACrB,EAAE,EAAE,iBAAiB;QACrB,YAAY,EAAE,SAAS;QACvB,MAAM,EAAE;YACP,MAAM,EAAE,WAAW;YACnB,MAAM,EAAE,iBAAiB,CAAC,cAAc;YACxC,OAAO,EAAE,mDAA6B,wBAAe;YACrD,GAAG,EAAE,EAAE,OAAO,EAAE,mDAA6B,2BAAkB,EAAE;SACjE;KACD,CAAC,CAAC,CAAC;IAEJ,MAAM,aAAc,SAAQ,iBAAqC;QAIhE,YAAY,IAAoD;YAC/D,KAAK,CAAC,IAAI,CAAC,CAAC;YACZ,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,eAAe,CAAC;QAC9C,CAAC;QAEM,oBAAoB,CAAC,SAAqB,EAAE,IAAiC;YACnF,SAAS,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;YACnC,SAAS,CAAC,eAAe,CACxB,IAAI,CAAC,MAAM,uCAEX,kBAAkB,CAAC,iBAAiB,CAAC,SAAS,EAAE,SAAS,CAAC,eAAe,EAAE,EAAE,IAAI,CAAC,gBAAgB,CAAC,CACnG,CAAC;YACF,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC/C,CAAC;KACD;IAEY,mCAAY,GAA0C,qBAAqB,CAAC,IAAI,aAAa,CAAC;QAC1G,eAAe,EAAE,KAAK;QACtB,EAAE,EAAE,cAAc;QAClB,YAAY,EAAE,SAAS;QACvB,MAAM,EAAE;YACP,MAAM,EAAE,WAAW;YACnB,MAAM,EAAE,iBAAiB,CAAC,cAAc;YACxC,OAAO,EAAE,gDAA4B;YACrC,GAAG,EAAE,EAAE,OAAO,EAAE,sDAAkC,EAAE;SACpD;KACD,CAAC,CAAC,CAAC;IAES,yCAAkB,GAA0C,qBAAqB,CAAC,IAAI,aAAa,CAAC;QAChH,eAAe,EAAE,IAAI;QACrB,EAAE,EAAE,oBAAoB;QACxB,YAAY,EAAE,SAAS;QACvB,MAAM,EAAE;YACP,MAAM,EAAE,WAAW;YACnB,MAAM,EAAE,iBAAiB,CAAC,cAAc;YACxC,OAAO,EAAE,mDAA6B,uBAAc;YACpD,GAAG,EAAE,EAAE,OAAO,EAAE,mDAA6B,6BAAoB,EAAE;SACnE;KACD,CAAC,CAAC,CAAC;IAIJ,MAAa,gBAAiB,SAAQ,iBAA6C;QAClF;YACC,KAAK,CAAC;gBACL,EAAE,EAAE,cAAc;gBAClB,YAAY,EAAE,SAAS;gBACvB,QAAQ,EAAE,aAAa,CAAC,QAAQ;aAChC,CAAC,CAAC;QACJ,CAAC;QAED,qBAAqB,CAAC,IAAmC;YACxD,MAAM,eAAe,GAAG,mCAA2B,CAAC;YACpD,MAAM,aAAa,GAAG;;;;;;aAMrB,CAAC;YACF,MAAM,oBAAoB,GAAG,6EAA6D,CAAC;YAC3F,MAAM,kBAAkB,GAAG,0EAA0D,CAAC;YAEtF,IAAI,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,oBAAoB,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC1F,OAAO,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnD,CAAC;YACD,IAAI,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,kBAAkB,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;gBACtF,OAAO,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjD,CAAC;YACD,OAAO,IAAI,CAAC;QACb,CAAC;QAEM,oBAAoB,CAAC,SAAqB,EAAE,IAAyC;YAC3F,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACzC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACb,oBAAoB;gBACpB,OAAO;YACR,CAAC;YACD,MAAM,eAAe,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;YAC3D,IAAI,CAAC,eAAe,EAAE,CAAC;gBACtB,kCAAkC;gBAClC,OAAO;YACR,CAAC;YACD,eAAe,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACjD,CAAC;QAED,wBAAwB,CAAC,SAAqB,EAAE,MAAiC,EAAE,IAAmC;YAErH,MAAM,gBAAgB,GAAG,IAAI,CAAC,wBAAwB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YAExE,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;gBACvB,6CAA6C;gBAC7C,MAAM,uBAAuB,GAAG,SAAS,CAAC,wCAAwC,CAAC,gBAAgB,CAAC,CAAC;gBACrG,SAAS,CAAC,eAAe,CACxB,MAAM,uCAEN;oBACC,kBAAkB,CAAC,+BAA+B,CAAC,SAAS,EAAE,SAAS,CAAC,qBAAqB,EAAE,EAAE,uBAAuB,EAAE,IAAI,CAAC,MAAM,CAAC;iBACtI,CACD,CAAC;YACH,CAAC;YAED,SAAS,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,4BAAoB,CAAC;QAC5F,CAAC;QAEO,wBAAwB,CAAC,SAAqB,EAAE,IAAmC;YAE1F,IAAI,IAAI,CAAC,IAAI,oCAA4B,EAAE,CAAC;gBAC3C,2BAA2B;gBAC3B,MAAM,cAAc,GAAG,SAAS,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC;gBAChE,MAAM,gBAAgB,GAAG,SAAS,CAAC,wCAAwC,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;gBAChG,MAAM,iBAAiB,GAAG,SAAS,CAAC,oBAAoB,CAAC,4BAA4B,CAAC,gBAAgB,CAAC,CAAC;gBAExG,IAAI,yBAAiC,CAAC;gBACtC,IAAI,IAAI,CAAC,SAAS,uCAA+B,EAAE,CAAC;oBACnD,2BAA2B;oBAC3B,yBAAyB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,iBAAiB,CAAC,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;gBACzF,CAAC;qBAAM,CAAC;oBACP,6BAA6B;oBAC7B,yBAAyB,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,YAAY,EAAE,EAAE,iBAAiB,CAAC,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;gBACtH,CAAC;gBAED,MAAM,YAAY,GAAG,SAAS,CAAC,oBAAoB,CAAC,kCAAkC,CAAC,IAAI,QAAQ,CAAC,yBAAyB,EAAE,CAAC,CAAC,CAAC,CAAC;gBACnI,OAAO,SAAS,CAAC,UAAU,CAAC,8BAA8B,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;YACrF,CAAC;YAED,IAAI,IAAI,CAAC,IAAI,sCAA8B,EAAE,CAAC;gBAC7C,IAAI,yBAAyB,GAAG,CAAC,CAAC;gBAClC,IAAI,IAAI,CAAC,SAAS,yCAAiC,EAAE,CAAC;oBACrD,yBAAyB,GAAG,SAAS,CAAC,KAAK,CAAC,YAAY,EAAE,GAAG,SAAS,CAAC,YAAY,CAAC,QAAQ,CAAC;gBAC9F,CAAC;gBACD,OAAO,SAAS,CAAC,UAAU,CAAC,8BAA8B,CAAC,yBAAyB,CAAC,CAAC;YACvF,CAAC;YAED,IAAI,SAAiB,CAAC;YACtB,IAAI,IAAI,CAAC,IAAI,oCAA4B,EAAE,CAAC;gBAC3C,SAAS,GAAG,SAAS,CAAC,YAAY,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC;YAC1D,CAAC;iBAAM,IAAI,IAAI,CAAC,IAAI,wCAAgC,EAAE,CAAC;gBACtD,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC,QAAQ,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;YAC1E,CAAC;iBAAM,CAAC;gBACP,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC;YACxB,CAAC;YACD,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC,SAAS,uCAA+B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;YACxF,OAAO,SAAS,CAAC,UAAU,CAAC,mBAAmB,EAAE,GAAG,UAAU,GAAG,SAAS,CAAC,YAAY,CAAC,UAAU,CAAC;QACpG,CAAC;QAED,0BAA0B,CAAC,SAAqB,EAAE,MAAiC,EAAE,IAAmC;YACvH,MAAM,iBAAiB,GAAG,IAAI,CAAC,yBAAyB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YAC1E,SAAS,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,UAAU,EAAE,iBAAiB,EAAE,4BAAoB,CAAC;QAC9F,CAAC;QAED,yBAAyB,CAAC,SAAqB,EAAE,IAAmC;YACnF,MAAM,YAAY,GAAG,CAAC,IAAI,CAAC,SAAS,yCAAiC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;YAC7F,OAAO,SAAS,CAAC,UAAU,CAAC,oBAAoB,EAAE,GAAG,YAAY,GAAG,SAAS,CAAC,YAAY,CAAC,8BAA8B,CAAC;QAC3H,CAAC;KACD;IAjHY,uCAAgB,mBAiH5B,CAAA;IAEY,mCAAY,GAAqB,qBAAqB,CAAC,IAAI,gBAAgB,EAAE,CAAC,CAAC;IAE/E,mCAAY,GAA0C,qBAAqB,CAAC,IAAI,KAAM,SAAQ,iBAAqC;QAC/I;YACC,KAAK,CAAC;gBACL,EAAE,EAAE,cAAc;gBAClB,YAAY,EAAE,SAAS;gBACvB,MAAM,EAAE;oBACP,MAAM,EAAE,WAAW;oBACnB,MAAM,EAAE,iBAAiB,CAAC,cAAc;oBACxC,OAAO,EAAE,oDAAgC;oBACzC,GAAG,EAAE,EAAE,OAAO,EAAE,kDAA+B,EAAE;iBACjD;aACD,CAAC,CAAC;QACJ,CAAC;QAED,oBAAoB,CAAC,SAAqB,EAAE,IAAiC;YAC5E,uBAAA,YAAY,CAAC,oBAAoB,CAAC,SAAS,EAAE;gBAC5C,EAAE,EAAE,aAAa,CAAC,YAAY,CAAC,EAAE;gBACjC,EAAE,EAAE,aAAa,CAAC,OAAO,CAAC,WAAW;gBACrC,KAAK,EAAE,CAAC;gBACR,YAAY,EAAE,KAAK;gBACnB,MAAM,EAAE,KAAK;gBACb,MAAM,EAAE,IAAI,CAAC,MAAM;aACnB,CAAC,CAAC;QACJ,CAAC;KACD,CAAC,CAAC;IAEU,mCAAY,GAA0C,qBAAqB,CAAC,IAAI,KAAM,SAAQ,iBAAqC;QAC/I;YACC,KAAK,CAAC;gBACL,EAAE,EAAE,cAAc;gBAClB,YAAY,EAAE,SAAS;gBACvB,MAAM,EAAE;oBACP,MAAM,EAAE,WAAW;oBACnB,MAAM,EAAE,iBAAiB,CAAC,cAAc;oBACxC,OAAO,EAAE,mDAA+B;oBACxC,GAAG,EAAE,EAAE,OAAO,EAAE,8CAA2B,EAAE;oBAC7C,KAAK,EAAE,EAAE,OAAO,EAAE,8CAA2B,EAAE;iBAC/C;aACD,CAAC,CAAC;QACJ,CAAC;QAED,oBAAoB,CAAC,SAAqB,EAAE,IAAiC;YAC5E,uBAAA,YAAY,CAAC,oBAAoB,CAAC,SAAS,EAAE;gBAC5C,EAAE,EAAE,aAAa,CAAC,YAAY,CAAC,EAAE;gBACjC,EAAE,EAAE,aAAa,CAAC,OAAO,CAAC,IAAI;gBAC9B,KAAK,EAAE,CAAC;gBACR,YAAY,EAAE,KAAK;gBACnB,MAAM,EAAE,KAAK;gBACb,MAAM,EAAE,IAAI,CAAC,MAAM;aACnB,CAAC,CAAC;QACJ,CAAC;KACD,CAAC,CAAC;IAEU,sCAAe,GAA0C,qBAAqB,CAAC,IAAI,KAAM,SAAQ,iBAAqC;QAClJ;YACC,KAAK,CAAC;gBACL,EAAE,EAAE,iBAAiB;gBACrB,YAAY,EAAE,SAAS;gBACvB,MAAM,EAAE;oBACP,MAAM,EAAE,WAAW;oBACnB,MAAM,EAAE,iBAAiB,CAAC,cAAc;iBACxC;aACD,CAAC,CAAC;QACJ,CAAC;QAED,oBAAoB,CAAC,SAAqB,EAAE,IAAiC;YAC5E,uBAAA,YAAY,CAAC,oBAAoB,CAAC,SAAS,EAAE;gBAC5C,EAAE,EAAE,aAAa,CAAC,YAAY,CAAC,EAAE;gBACjC,EAAE,EAAE,aAAa,CAAC,OAAO,CAAC,MAAM;gBAChC,KAAK,EAAE,CAAC;gBACR,YAAY,EAAE,KAAK;gBACnB,MAAM,EAAE,KAAK;gBACb,MAAM,EAAE,IAAI,CAAC,MAAM;aACnB,CAAC,CAAC;QACJ,CAAC;KACD,CAAC,CAAC;IAEU,qCAAc,GAA0C,qBAAqB,CAAC,IAAI,KAAM,SAAQ,iBAAqC;QACjJ;YACC,KAAK,CAAC;gBACL,EAAE,EAAE,gBAAgB;gBACpB,YAAY,EAAE,SAAS;gBACvB,MAAM,EAAE;oBACP,MAAM,EAAE,WAAW;oBACnB,MAAM,EAAE,iBAAiB,CAAC,cAAc;oBACxC,OAAO,EAAE,sDAAkC;oBAC3C,GAAG,EAAE,EAAE,OAAO,EAAE,oDAAiC,EAAE;iBACnD;aACD,CAAC,CAAC;QACJ,CAAC;QAED,oBAAoB,CAAC,SAAqB,EAAE,IAAiC;YAC5E,uBAAA,YAAY,CAAC,oBAAoB,CAAC,SAAS,EAAE;gBAC5C,EAAE,EAAE,aAAa,CAAC,YAAY,CAAC,IAAI;gBACnC,EAAE,EAAE,aAAa,CAAC,OAAO,CAAC,WAAW;gBACrC,KAAK,EAAE,CAAC;gBACR,YAAY,EAAE,KAAK;gBACnB,MAAM,EAAE,KAAK;gBACb,MAAM,EAAE,IAAI,CAAC,MAAM;aACnB,CAAC,CAAC;QACJ,CAAC;KACD,CAAC,CAAC;IAEU,qCAAc,GAA0C,qBAAqB,CAAC,IAAI,KAAM,SAAQ,iBAAqC;QACjJ;YACC,KAAK,CAAC;gBACL,EAAE,EAAE,gBAAgB;gBACpB,YAAY,EAAE,SAAS;gBACvB,MAAM,EAAE;oBACP,MAAM,EAAE,WAAW;oBACnB,MAAM,EAAE,iBAAiB,CAAC,cAAc;oBACxC,OAAO,EAAE,qDAAiC;oBAC1C,GAAG,EAAE,EAAE,OAAO,EAAE,gDAA6B,EAAE;oBAC/C,KAAK,EAAE,EAAE,OAAO,EAAE,gDAA6B,EAAE;iBACjD;aACD,CAAC,CAAC;QACJ,CAAC;QAED,oBAAoB,CAAC,SAAqB,EAAE,IAAiC;YAC5E,uBAAA,YAAY,CAAC,oBAAoB,CAAC,SAAS,EAAE;gBAC5C,EAAE,EAAE,aAAa,CAAC,YAAY,CAAC,IAAI;gBACnC,EAAE,EAAE,aAAa,CAAC,OAAO,CAAC,IAAI;gBAC9B,KAAK,EAAE,CAAC;gBACR,YAAY,EAAE,KAAK;gBACnB,MAAM,EAAE,KAAK;gBACb,MAAM,EAAE,IAAI,CAAC,MAAM;aACnB,CAAC,CAAC;QACJ,CAAC;KACD,CAAC,CAAC;IAEU,yCAAkB,GAA0C,qBAAqB,CAAC,IAAI,KAAM,SAAQ,iBAAqC;QACrJ;YACC,KAAK,CAAC;gBACL,EAAE,EAAE,oBAAoB;gBACxB,YAAY,EAAE,SAAS;gBACvB,MAAM,EAAE;oBACP,MAAM,EAAE,WAAW;oBACnB,MAAM,EAAE,iBAAiB,CAAC,cAAc;iBACxC;aACD,CAAC,CAAC;QACJ,CAAC;QAED,oBAAoB,CAAC,SAAqB,EAAE,IAAiC;YAC5E,uBAAA,YAAY,CAAC,oBAAoB,CAAC,SAAS,EAAE;gBAC5C,EAAE,EAAE,aAAa,CAAC,YAAY,CAAC,IAAI;gBACnC,EAAE,EAAE,aAAa,CAAC,OAAO,CAAC,MAAM;gBAChC,KAAK,EAAE,CAAC;gBACR,YAAY,EAAE,KAAK;gBACnB,MAAM,EAAE,KAAK;gBACb,MAAM,EAAE,IAAI,CAAC,MAAM;aACnB,CAAC,CAAC;QACJ,CAAC;KACD,CAAC,CAAC;IAEU,iCAAU,GAA0C,qBAAqB,CAAC,IAAI,KAAM,SAAQ,iBAAqC;QAC7I;YACC,KAAK,CAAC;gBACL,EAAE,EAAE,YAAY;gBAChB,YAAY,EAAE,SAAS;gBACvB,MAAM,EAAE;oBACP,MAAM,EAAE,WAAW;oBACnB,MAAM,EAAE,iBAAiB,CAAC,cAAc;iBACxC;aACD,CAAC,CAAC;QACJ,CAAC;QAED,oBAAoB,CAAC,SAAqB,EAAE,IAAiC;YAC5E,uBAAA,YAAY,CAAC,oBAAoB,CAAC,SAAS,EAAE;gBAC5C,EAAE,EAAE,aAAa,CAAC,YAAY,CAAC,IAAI;gBACnC,EAAE,EAAE,aAAa,CAAC,OAAO,CAAC,MAAM;gBAChC,KAAK,EAAE,CAAC;gBACR,YAAY,EAAE,KAAK;gBACnB,MAAM,EAAE,KAAK;gBACb,MAAM,EAAE,IAAI,CAAC,MAAM;aACnB,CAAC,CAAC;QACJ,CAAC;KACD,CAAC,CAAC;IAEU,kCAAW,GAA0C,qBAAqB,CAAC,IAAI,KAAM,SAAQ,iBAAqC;QAC9I;YACC,KAAK,CAAC;gBACL,EAAE,EAAE,aAAa;gBACjB,YAAY,EAAE,SAAS;gBACvB,MAAM,EAAE;oBACP,MAAM,EAAE,WAAW;oBACnB,MAAM,EAAE,iBAAiB,CAAC,cAAc;iBACxC;aACD,CAAC,CAAC;QACJ,CAAC;QAED,oBAAoB,CAAC,SAAqB,EAAE,IAAiC;YAC5E,uBAAA,YAAY,CAAC,oBAAoB,CAAC,SAAS,EAAE;gBAC5C,EAAE,EAAE,aAAa,CAAC,YAAY,CAAC,KAAK;gBACpC,EAAE,EAAE,aAAa,CAAC,OAAO,CAAC,MAAM;gBAChC,KAAK,EAAE,CAAC;gBACR,YAAY,EAAE,KAAK;gBACnB,MAAM,EAAE,KAAK;gBACb,MAAM,EAAE,IAAI,CAAC,MAAM;aACnB,CAAC,CAAC;QACJ,CAAC;KACD,CAAC,CAAC;IAEH,MAAM,WAAY,SAAQ,iBAAqC;QAI9D,YAAY,IAAoD;YAC/D,KAAK,CAAC,IAAI,CAAC,CAAC;YACZ,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,eAAe,CAAC;QAC9C,CAAC;QAEM,oBAAoB,CAAC,SAAqB,EAAE,IAAiC;YACnF,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACpB,OAAO;YACR,CAAC;YACD,SAAS,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;YACnC,SAAS,CAAC,eAAe,CACxB,IAAI,CAAC,MAAM,uCAEX;gBACC,kBAAkB,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,qBAAqB,EAAE,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,QAAQ,CAAC;aAC3G,CACD,CAAC;YACF,IAAI,IAAI,CAAC,UAAU,6CAAqC,EAAE,CAAC;gBAC1D,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YACrD,CAAC;QACF,CAAC;KACD;IAEY,iCAAU,GAA0C,qBAAqB,CAAC,IAAI,WAAW,CAAC;QACtG,eAAe,EAAE,KAAK;QACtB,EAAE,EAAE,aAAa;QACjB,YAAY,EAAE,SAAS;KACvB,CAAC,CAAC,CAAC;IAES,qCAAc,GAA0C,qBAAqB,CAAC,IAAI,WAAW,CAAC;QAC1G,eAAe,EAAE,IAAI;QACrB,EAAE,EAAE,iBAAiB;QACrB,YAAY,EAAE,SAAS;KACvB,CAAC,CAAC,CAAC;IAES,2CAAoB,GAA0C,qBAAqB,CAAC,IAAI,KAAM,SAAQ,iBAAqC;QACvJ;YACC,KAAK,CAAC;gBACL,EAAE,EAAE,sBAAsB;gBAC1B,YAAY,EAAE,SAAS;aACvB,CAAC,CAAC;QACJ,CAAC;QAEM,oBAAoB,CAAC,SAAqB,EAAE,IAAiC;YACnF,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACpB,OAAO;YACR,CAAC;YACD,MAAM,oBAAoB,GAAG,SAAS,CAAC,uBAAuB,EAAE,CAAC;YAEjE,MAAM,MAAM,GAAG,SAAS,CAAC,eAAe,EAAE,CAAC;YAC3C,MAAM,SAAS,GAAyB,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACxD,MAAM,cAAc,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC;YACpD,SAAS,CAAC,oBAAoB,CAAC,GAAG,kBAAkB,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,EAAE,cAAc,CAAC,UAAU,CAAC,YAAY,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;YAE9I,SAAS,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;YACnC,SAAS,CAAC,eAAe,CACxB,IAAI,CAAC,MAAM,uCAEX,SAAS,CACT,CAAC;QACH,CAAC;KACD,CAAC,CAAC;IAEH,MAAM,WAAY,SAAQ,iBAAqC;QAG9D,YAAY,IAAoD;YAC/D,KAAK,CAAC,IAAI,CAAC,CAAC;YACZ,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,eAAe,CAAC;QAC9C,CAAC;QAEM,oBAAoB,CAAC,SAAqB,EAAE,IAAiC;YACnF,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACpB,OAAO;YACR,CAAC;YACD,SAAS,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;YACnC,SAAS,CAAC,eAAe,CACxB,IAAI,CAAC,MAAM,uCAEX;gBACC,kBAAkB,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,qBAAqB,EAAE,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC;aAC9H,CACD,CAAC;YACF,IAAI,IAAI,CAAC,UAAU,6CAAqC,EAAE,CAAC;gBAC1D,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;YACtD,CAAC;QACF,CAAC;KACD;IAEY,iCAAU,GAA0C,qBAAqB,CAAC,IAAI,WAAW,CAAC;QACtG,eAAe,EAAE,KAAK;QACtB,EAAE,EAAE,aAAa;QACjB,YAAY,EAAE,SAAS;KACvB,CAAC,CAAC,CAAC;IAES,qCAAc,GAA0C,qBAAqB,CAAC,IAAI,WAAW,CAAC;QAC1G,eAAe,EAAE,IAAI;QACrB,EAAE,EAAE,iBAAiB;QACrB,YAAY,EAAE,SAAS;KACvB,CAAC,CAAC,CAAC;IAEJ,MAAM,qBAAsB,SAAQ,iBAAqC;QAGxE,YAAY,IAAoD;YAC/D,KAAK,CAAC,IAAI,CAAC,CAAC;YACZ,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,eAAe,CAAC;QAC9C,CAAC;QAEM,oBAAoB,CAAC,SAAqB,EAAE,IAAiC;YACnF,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACpB,OAAO;YACR,CAAC;YACD,MAAM,oBAAoB,GAAG,SAAS,CAAC,uBAAuB,EAAE,CAAC;YAEjE,MAAM,MAAM,GAAG,SAAS,CAAC,eAAe,EAAE,CAAC;YAC3C,MAAM,SAAS,GAAyB,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACxD,SAAS,CAAC,oBAAoB,CAAC,GAAG,kBAAkB,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,oBAAoB,CAAC,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;YAE5J,SAAS,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;YACnC,SAAS,CAAC,eAAe,CACxB,IAAI,CAAC,MAAM,uCAEX,SAAS,CACT,CAAC;QACH,CAAC;KACD;IAEY,2CAAoB,GAA0C,qBAAqB,CAAC,IAAI,qBAAqB,CAAC;QAC1H,eAAe,EAAE,KAAK;QACtB,EAAE,EAAE,sBAAsB;QAC1B,YAAY,EAAE,SAAS;KACvB,CAAC,CAAC,CAAC;IAES,+CAAwB,GAA0C,qBAAqB,CAAC,IAAI,qBAAqB,CAAC;QAC9H,eAAe,EAAE,IAAI;QACrB,EAAE,EAAE,0BAA0B;QAC9B,YAAY,EAAE,SAAS;KACvB,CAAC,CAAC,CAAC;IAES,sCAAe,GAA0C,qBAAqB,CAAC,IAAI,KAAM,SAAQ,iBAAqC;QAClJ;YACC,KAAK,CAAC;gBACL,EAAE,EAAE,iBAAiB;gBACrB,YAAY,EAAE,iBAAiB,CAAC,oBAAoB;gBACpD,MAAM,EAAE;oBACP,MAAM,EAAE,WAAW;oBACnB,MAAM,EAAE,iBAAiB,CAAC,cAAc;oBACxC,OAAO,wBAAgB;oBACvB,SAAS,EAAE,CAAC,gDAA6B,CAAC;iBAC1C;aACD,CAAC,CAAC;QACJ,CAAC;QAEM,oBAAoB,CAAC,SAAqB,EAAE,IAAiC;YACnF,SAAS,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;YACnC,SAAS,CAAC,eAAe,CACxB,IAAI,CAAC,MAAM,uCAEX;gBACC,kBAAkB,CAAC,eAAe,CAAC,SAAS,EAAE,SAAS,CAAC,qBAAqB,EAAE,CAAC;aAChF,CACD,CAAC;YACF,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC/C,CAAC;KACD,CAAC,CAAC;IAEU,6CAAsB,GAA0C,qBAAqB,CAAC,IAAI,KAAM,SAAQ,iBAAqC;QACzJ;YACC,KAAK,CAAC;gBACL,EAAE,EAAE,wBAAwB;gBAC5B,YAAY,EAAE,iBAAiB,CAAC,qBAAqB;gBACrD,MAAM,EAAE;oBACP,MAAM,EAAE,WAAW,GAAG,CAAC;oBACvB,MAAM,EAAE,iBAAiB,CAAC,cAAc;oBACxC,OAAO,wBAAgB;oBACvB,SAAS,EAAE,CAAC,gDAA6B,CAAC;iBAC1C;aACD,CAAC,CAAC;QACJ,CAAC;QAEM,oBAAoB,CAAC,SAAqB,EAAE,IAAiC;YACnF,SAAS,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;YACnC,SAAS,CAAC,eAAe,CACxB,IAAI,CAAC,MAAM,uCAEX;gBACC,SAAS,CAAC,qBAAqB,EAAE;aACjC,CACD,CAAC;YACF,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAC9C,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAe,EAAE,2BAA2B,CAAC,CAAC,CAAC;QACpE,CAAC;KACD,CAAC,CAAC;IAIU,iCAAU,GAAgD,qBAAqB,CAAC,IAAI,KAAM,SAAQ,iBAA2C;QACzJ;YACC,KAAK,CAAC;gBACL,EAAE,EAAE,YAAY;gBAChB,YAAY,EAAE,SAAS;gBACvB,QAAQ,EAAE,WAAW,CAAC,QAAQ;aAC9B,CAAC,CAAC;QACJ,CAAC;QAEM,oBAAoB,CAAC,SAAqB,EAAE,IAAuC;YACzF,MAAM,aAAa,GAAG,IAAI,CAAC;YAC3B,MAAM,aAAa,GAAG,aAAa,CAAC,UAAU,IAAI,CAAC,CAAC;YACpD,IAAI,UAAU,GAAG,OAAO,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC;YACzG,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;gBACpB,UAAU,GAAG,CAAC,CAAC;YAChB,CAAC;YACD,MAAM,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;YACjD,IAAI,UAAU,GAAG,SAAS,EAAE,CAAC;gBAC5B,UAAU,GAAG,SAAS,CAAC;YACxB,CAAC;YAED,MAAM,KAAK,GAAG,IAAI,KAAK,CACtB,UAAU,EAAE,CAAC,EACb,UAAU,EAAE,SAAS,CAAC,KAAK,CAAC,gBAAgB,CAAC,UAAU,CAAC,CACxD,CAAC;YAEF,IAAI,QAAQ,oCAA4B,CAAC;YACzC,IAAI,aAAa,CAAC,EAAE,EAAE,CAAC;gBACtB,QAAQ,aAAa,CAAC,EAAE,EAAE,CAAC;oBAC1B,KAAK,WAAW,CAAC,aAAa,CAAC,GAAG;wBACjC,QAAQ,iCAAyB,CAAC;wBAClC,MAAM;oBACP,KAAK,WAAW,CAAC,aAAa,CAAC,MAAM;wBACpC,QAAQ,oCAA4B,CAAC;wBACrC,MAAM;oBACP,KAAK,WAAW,CAAC,aAAa,CAAC,MAAM;wBACpC,QAAQ,oCAA4B,CAAC;wBACrC,MAAM;oBACP;wBACC,MAAM;gBACR,CAAC;YACF,CAAC;YAED,MAAM,SAAS,GAAG,SAAS,CAAC,oBAAoB,CAAC,4BAA4B,CAAC,KAAK,CAAC,CAAC;YAErF,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,4BAAoB,CAAC;QACnF,CAAC;KACD,CAAC,CAAC;IAEU,gCAAS,GAAG,IAAI,KAAM,SAAQ,8BAA8B;QACxE;YACC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QACzB,CAAC;QACM,aAAa,CAAC,aAAsB;YAC1C,IAAI,SAAS,EAAE,CAAC;gBACI,aAAc,CAAC,KAAK,EAAE,CAAC;gBACvB,aAAc,CAAC,MAAM,EAAE,CAAC;YAC5C,CAAC;YAED,aAAa,CAAC,aAAa,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QACtD,CAAC;QACM,gBAAgB,CAAC,QAA0B,EAAE,MAAmB,EAAE,IAAa;YACrF,MAAM,SAAS,GAAG,MAAM,CAAC,aAAa,EAAE,CAAC;YACzC,IAAI,CAAC,SAAS,EAAE,CAAC;gBAChB,2CAA2C;gBAC3C,OAAO;YACR,CAAC;YACD,IAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAC5C,CAAC;QACM,oBAAoB,CAAC,SAAqB,EAAE,IAAa;YAC/D,SAAS,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;YACnC,SAAS,CAAC,eAAe,CACxB,UAAU,uCAEV;gBACC,kBAAkB,CAAC,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC,qBAAqB,EAAE,CAAC;aAC1E,CACD,CAAC;QACH,CAAC;KACD,EAAE,CAAC;IAMS,mCAAY,GAAkD,qBAAqB,CAAC,IAAI,KAAM,SAAQ,iBAA6C;QAC/J;YACC,KAAK,CAAC;gBACL,EAAE,EAAE,cAAc;gBAClB,YAAY,EAAE,SAAS;aACvB,CAAC,CAAC;QACJ,CAAC;QAEM,oBAAoB,CAAC,SAAqB,EAAE,IAAyC;YAC3F,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACrB,OAAO;YACR,CAAC;YACD,SAAS,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;YACnC,SAAS,CAAC,eAAe,CACxB,IAAI,CAAC,MAAM,uCAEX;gBACC,WAAW,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC;aAC9C,CACD,CAAC;QACH,CAAC;KACD,CAAC,CAAC;AACJ,CAAC,EAjiDgB,sBAAsB,KAAtB,sBAAsB,QAiiDtC;AAED,MAAM,wBAAwB,GAAG,cAAc,CAAC,GAAG,CAClD,iBAAiB,CAAC,cAAc,EAChC,iBAAiB,CAAC,eAAe,CACjC,CAAC;AACF,SAAS,uBAAuB,CAAC,EAAU,EAAE,UAAkB;IAC9D,mBAAmB,CAAC,sBAAsB,CAAC;QAC1C,EAAE,EAAE,EAAE;QACN,OAAO,EAAE,UAAU;QACnB,IAAI,EAAE,wBAAwB;QAC9B,MAAM,EAAE,WAAW,GAAG,CAAC;KACvB,CAAC,CAAC;AACJ,CAAC;AAED,uBAAuB,CAAC,sBAAsB,CAAC,sBAAsB,CAAC,EAAE,EAAE,oDAAgC,CAAC,CAAC;AAC5G,uBAAuB,CAAC,sBAAsB,CAAC,uBAAuB,CAAC,EAAE,EAAE,qDAAiC,CAAC,CAAC;AAC9G,uBAAuB,CAAC,sBAAsB,CAAC,oBAAoB,CAAC,EAAE,EAAE,kDAA8B,CAAC,CAAC;AACxG,uBAAuB,CAAC,sBAAsB,CAAC,wBAAwB,CAAC,EAAE,EAAE,iDAA6B,CAAC,CAAC;AAC3G,uBAAuB,CAAC,sBAAsB,CAAC,sBAAsB,CAAC,EAAE,EAAE,oDAAgC,CAAC,CAAC;AAC5G,uBAAuB,CAAC,sBAAsB,CAAC,0BAA0B,CAAC,EAAE,EAAE,mDAA+B,CAAC,CAAC;AAE/G,SAAS,eAAe,CAAoB,OAAU;IACrD,OAAO,CAAC,QAAQ,EAAE,CAAC;IACnB,OAAO,OAAO,CAAC;AAChB,CAAC;AAED,MAAM,KAAW,mBAAmB,CA+JnC;AA/JD,WAAiB,mBAAmB;IAEnC,MAAsB,kBAAmB,SAAQ,aAAa;QACtD,gBAAgB,CAAC,QAA0B,EAAE,MAAmB,EAAE,IAAa;YACrF,MAAM,SAAS,GAAG,MAAM,CAAC,aAAa,EAAE,CAAC;YACzC,IAAI,CAAC,SAAS,EAAE,CAAC;gBAChB,2CAA2C;gBAC3C,OAAO;YACR,CAAC;YACD,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;QAC3D,CAAC;KAGD;IAXqB,sCAAkB,qBAWvC,CAAA;IAEY,mCAAe,GAAkB,qBAAqB,CAAC,IAAI,KAAM,SAAQ,kBAAkB;QACvG;YACC,KAAK,CAAC;gBACL,EAAE,EAAE,iBAAiB;gBACrB,YAAY,EAAE,iBAAiB,CAAC,QAAQ;gBACxC,MAAM,EAAE;oBACP,MAAM,EAAE,WAAW;oBACnB,MAAM,EAAE,iBAAiB,CAAC,cAAc;oBACxC,OAAO,EAAE,CAAC;oBACV,GAAG,EAAE,EAAE,OAAO,EAAE,gDAA6B,EAAE;iBAC/C;aACD,CAAC,CAAC;QACJ,CAAC;QAEM,qBAAqB,CAAC,MAAmB,EAAE,SAAqB,EAAE,IAAa;YACrF,MAAM,CAAC,YAAY,EAAE,CAAC;YACtB,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,EAAE,cAAc,CAAC,eAAe,CAAC,SAAS,CAAC,YAAY,EAAE,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,eAAe,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QACxK,CAAC;KACD,CAAC,CAAC;IAEU,2BAAO,GAAkB,qBAAqB,CAAC,IAAI,KAAM,SAAQ,kBAAkB;QAC/F;YACC,KAAK,CAAC;gBACL,EAAE,EAAE,SAAS;gBACb,YAAY,EAAE,iBAAiB,CAAC,QAAQ;gBACxC,MAAM,EAAE;oBACP,MAAM,EAAE,WAAW;oBACnB,MAAM,EAAE,cAAc,CAAC,GAAG,CACzB,iBAAiB,CAAC,eAAe,EACjC,iBAAiB,CAAC,mBAAmB,CACrC;oBACD,OAAO,EAAE,6CAA0B;iBACnC;aACD,CAAC,CAAC;QACJ,CAAC;QAEM,qBAAqB,CAAC,MAAmB,EAAE,SAAqB,EAAE,IAAa;YACrF,MAAM,CAAC,YAAY,EAAE,CAAC;YACtB,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,EAAE,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC,YAAY,EAAE,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,eAAe,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YAC/J,MAAM,CAAC,YAAY,EAAE,CAAC;QACvB,CAAC;KACD,CAAC,CAAC;IAEU,uBAAG,GAAkB,qBAAqB,CAAC,IAAI,KAAM,SAAQ,kBAAkB;QAC3F;YACC,KAAK,CAAC;gBACL,EAAE,EAAE,KAAK;gBACT,YAAY,EAAE,iBAAiB,CAAC,QAAQ;gBACxC,MAAM,EAAE;oBACP,MAAM,EAAE,WAAW;oBACnB,MAAM,EAAE,cAAc,CAAC,GAAG,CACzB,iBAAiB,CAAC,eAAe,EACjC,iBAAiB,CAAC,mBAAmB,CACrC;oBACD,OAAO,qBAAa;iBACpB;aACD,CAAC,CAAC;QACJ,CAAC;QAEM,qBAAqB,CAAC,MAAmB,EAAE,SAAqB,EAAE,IAAa;YACrF,MAAM,CAAC,YAAY,EAAE,CAAC;YACtB,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,EAAE,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,YAAY,EAAE,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,eAAe,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YAC3J,MAAM,CAAC,YAAY,EAAE,CAAC;QACvB,CAAC;KACD,CAAC,CAAC;IAEU,8BAAU,GAAkB,qBAAqB,CAAC,IAAI,KAAM,SAAQ,kBAAkB;QAClG;YACC,KAAK,CAAC;gBACL,EAAE,EAAE,YAAY;gBAChB,YAAY,EAAE,SAAS;gBACvB,MAAM,EAAE;oBACP,MAAM,EAAE,WAAW;oBACnB,MAAM,EAAE,iBAAiB,CAAC,cAAc;oBACxC,OAAO,2BAAmB;oBAC1B,SAAS,EAAE,CAAC,mDAAgC,CAAC;oBAC7C,GAAG,EAAE,EAAE,OAAO,2BAAmB,EAAE,SAAS,EAAE,CAAC,mDAAgC,EAAE,gDAA6B,EAAE,oDAAkC,CAAC,EAAE;iBACrJ;aACD,CAAC,CAAC;QACJ,CAAC;QAEM,qBAAqB,CAAC,MAAmB,EAAE,SAAqB,EAAE,IAAa;YACrF,MAAM,CAAC,4BAA4B,EAAE,QAAQ,CAAC,GAAG,gBAAgB,CAAC,UAAU,CAAC,SAAS,CAAC,wBAAwB,EAAE,EAAE,SAAS,CAAC,YAAY,EAAE,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,eAAe,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC,6BAA6B,EAAE,CAAC,CAAC;YACrQ,IAAI,4BAA4B,EAAE,CAAC;gBAClC,MAAM,CAAC,YAAY,EAAE,CAAC;YACvB,CAAC;YACD,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;YAC1C,SAAS,CAAC,wBAAwB,wCAAgC,CAAC;QACpE,CAAC;KACD,CAAC,CAAC;IAEU,+BAAW,GAAkB,qBAAqB,CAAC,IAAI,KAAM,SAAQ,kBAAkB;QACnG;YACC,KAAK,CAAC;gBACL,EAAE,EAAE,aAAa;gBACjB,YAAY,EAAE,SAAS;gBACvB,MAAM,EAAE;oBACP,MAAM,EAAE,WAAW;oBACnB,MAAM,EAAE,iBAAiB,CAAC,cAAc;oBACxC,OAAO,yBAAgB;oBACvB,GAAG,EAAE,EAAE,OAAO,yBAAgB,EAAE,SAAS,EAAE,CAAC,gDAA6B,EAAE,kDAA+B,CAAC,EAAE;iBAC7G;aACD,CAAC,CAAC;QACJ,CAAC;QAEM,qBAAqB,CAAC,MAAmB,EAAE,SAAqB,EAAE,IAAa;YACrF,MAAM,CAAC,4BAA4B,EAAE,QAAQ,CAAC,GAAG,gBAAgB,CAAC,WAAW,CAAC,SAAS,CAAC,wBAAwB,EAAE,EAAE,SAAS,CAAC,YAAY,EAAE,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,eAAe,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;YAC3N,IAAI,4BAA4B,EAAE,CAAC;gBAClC,MAAM,CAAC,YAAY,EAAE,CAAC;YACvB,CAAC;YACD,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;YAC1C,SAAS,CAAC,wBAAwB,yCAAiC,CAAC;QACrE,CAAC;KACD,CAAC,CAAC;IAEU,wBAAI,GAAG,IAAI,KAAM,SAAQ,8BAA8B;QACnE;YACC,KAAK,CAAC,WAAW,CAAC,CAAC;QACpB,CAAC;QACM,aAAa,CAAC,aAAsB;YAC1C,aAAa,CAAC,aAAa,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACjD,CAAC;QACM,gBAAgB,CAAC,QAA0B,EAAE,MAAmB,EAAE,IAAa;YACrF,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,MAAM,CAAC,SAAS,iCAAuB,KAAK,IAAI,EAAE,CAAC;gBAC5E,OAAO;YACR,CAAC;YACD,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;QACjC,CAAC;KACD,EAAE,CAAC;IAES,wBAAI,GAAG,IAAI,KAAM,SAAQ,8BAA8B;QACnE;YACC,KAAK,CAAC,WAAW,CAAC,CAAC;QACpB,CAAC;QACM,aAAa,CAAC,aAAsB;YAC1C,aAAa,CAAC,aAAa,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACjD,CAAC;QACM,gBAAgB,CAAC,QAA0B,EAAE,MAAmB,EAAE,IAAa;YACrF,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,MAAM,CAAC,SAAS,iCAAuB,KAAK,IAAI,EAAE,CAAC;gBAC5E,OAAO;YACR,CAAC;YACD,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;QACjC,CAAC;KACD,EAAE,CAAC;AACL,CAAC,EA/JgB,mBAAmB,KAAnB,mBAAmB,QA+JnC;AAED;;GAEG;AACH,MAAM,oBAAqB,SAAQ,OAAO;IAIzC,YAAY,EAAU,EAAE,SAAiB,EAAE,QAA2B;QACrE,KAAK,CAAC;YACL,EAAE,EAAE,EAAE;YACN,YAAY,EAAE,SAAS;YACvB,QAAQ;SACR,CAAC,CAAC;QACH,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;IAC7B,CAAC;IAEM,UAAU,CAAC,QAA0B,EAAE,IAAa;QAC1D,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,oBAAoB,EAAE,CAAC;QACvE,IAAI,CAAC,MAAM,EAAE,CAAC;YACb,OAAO;QACR,CAAC;QAED,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IACnD,CAAC;CACD;AAED,SAAS,2BAA2B,CAAC,SAAiB,EAAE,QAA2B;IAClF,eAAe,CAAC,IAAI,oBAAoB,CAAC,UAAU,GAAG,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;IAC7E,eAAe,CAAC,IAAI,oBAAoB,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;AAC3E,CAAC;AAED,2BAA2B,4BAAe;IACzC,WAAW,EAAE,MAAM;IACnB,IAAI,EAAE,CAAC;YACN,IAAI,EAAE,MAAM;YACZ,MAAM,EAAE;gBACP,MAAM,EAAE,QAAQ;gBAChB,UAAU,EAAE,CAAC,MAAM,CAAC;gBACpB,YAAY,EAAE;oBACb,MAAM,EAAE;wBACP,MAAM,EAAE,QAAQ;qBAChB;iBACD;aACD;SACD,CAAC;CACF,CAAC,CAAC;AACH,2BAA2B,yDAA6B,CAAC;AACzD,2BAA2B,iDAAyB,CAAC;AACrD,2BAA2B,mDAA0B,CAAC;AACtD,2BAA2B,+CAAwB,CAAC;AACpD,2BAA2B,6BAAe,CAAC;AAC3C,2BAA2B,yBAAa,CAAC","file":"coreCommands.js","sourceRoot":"file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport * as nls from '../../nls.js';\nimport { isFirefox } from '../../base/browser/browser.js';\nimport { KeyCode, KeyMod } from '../../base/common/keyCodes.js';\nimport * as types from '../../base/common/types.js';\nimport { status } from '../../base/browser/ui/aria/aria.js';\nimport { ICodeEditor } from './editorBrowser.js';\nimport { Command, EditorCommand, ICommandOptions, registerEditorCommand, MultiCommand, UndoCommand, RedoCommand, SelectAllCommand } from './editorExtensions.js';\nimport { ICodeEditorService } from './services/codeEditorService.js';\nimport { ColumnSelection, IColumnSelectResult } from '../common/cursor/cursorColumnSelection.js';\nimport { CursorState, EditOperationType, IColumnSelectData, PartialCursorState } from '../common/cursorCommon.js';\nimport { DeleteOperations } from '../common/cursor/cursorDeleteOperations.js';\nimport { CursorChangeReason } from '../common/cursorEvents.js';\nimport { CursorMove as CursorMove_, CursorMoveCommands } from '../common/cursor/cursorMoveCommands.js';\nimport { TypeOperations } from '../common/cursor/cursorTypeOperations.js';\nimport { IPosition, Position } from '../common/core/position.js';\nimport { Range } from '../common/core/range.js';\nimport { Handler, ScrollType } from '../common/editorCommon.js';\nimport { EditorContextKeys } from '../common/editorContextKeys.js';\nimport { VerticalRevealType } from '../common/viewEvents.js';\nimport { ICommandMetadata } from '../../platform/commands/common/commands.js';\nimport { ContextKeyExpr } from '../../platform/contextkey/common/contextkey.js';\nimport { ServicesAccessor } from '../../platform/instantiation/common/instantiation.js';\nimport { KeybindingWeight, KeybindingsRegistry } from '../../platform/keybinding/common/keybindingsRegistry.js';\nimport { EditorOption } from '../common/config/editorOptions.js';\nimport { IViewModel } from '../common/viewModel.js';\nimport { ISelection } from '../common/core/selection.js';\nimport { getActiveElement, isEditableElement } from '../../base/browser/dom.js';\nimport { EnterOperation } from '../common/cursor/cursorTypeEditOperations.js';\nimport { TextEditorSelectionSource } from '../../platform/editor/common/editor.js';\n\nconst CORE_WEIGHT = KeybindingWeight.EditorCore;\n\nexport abstract class CoreEditorCommand<T> extends EditorCommand {\n\tpublic runEditorCommand(accessor: ServicesAccessor, editor: ICodeEditor, args?: Partial<T> | null): void {\n\t\tconst viewModel = editor._getViewModel();\n\t\tif (!viewModel) {\n\t\t\t// the editor has no view => has no cursors\n\t\t\treturn;\n\t\t}\n\t\tthis.runCoreEditorCommand(viewModel, args || {});\n\t}\n\n\tpublic abstract runCoreEditorCommand(viewModel: IViewModel, args: Partial<T>): void;\n}\n\nexport namespace EditorScroll_ {\n\n\tconst isEditorScrollArgs = function (arg: unknown): boolean {\n\t\tif (!types.isObject(arg)) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst scrollArg: RawArguments = arg as RawArguments;\n\n\t\tif (!types.isString(scrollArg.to)) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (!types.isUndefined(scrollArg.by) && !types.isString(scrollArg.by)) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (!types.isUndefined(scrollArg.value) && !types.isNumber(scrollArg.value)) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (!types.isUndefined(scrollArg.revealCursor) && !types.isBoolean(scrollArg.revealCursor)) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t};\n\n\texport const metadata: ICommandMetadata = {\n\t\tdescription: 'Scroll editor in the given direction',\n\t\targs: [\n\t\t\t{\n\t\t\t\tname: 'Editor scroll argument object',\n\t\t\t\tdescription: `Property-value pairs that can be passed through this argument:\n\t\t\t\t\t* 'to': A mandatory direction value.\n\t\t\t\t\t\t\\`\\`\\`\n\t\t\t\t\t\t'up', 'down'\n\t\t\t\t\t\t\\`\\`\\`\n\t\t\t\t\t* 'by': Unit to move. Default is computed based on 'to' value.\n\t\t\t\t\t\t\\`\\`\\`\n\t\t\t\t\t\t'line', 'wrappedLine', 'page', 'halfPage', 'editor'\n\t\t\t\t\t\t\\`\\`\\`\n\t\t\t\t\t* 'value': Number of units to move. Default is '1'.\n\t\t\t\t\t* 'revealCursor': If 'true' reveals the cursor if it is outside view port.\n\t\t\t\t`,\n\t\t\t\tconstraint: isEditorScrollArgs,\n\t\t\t\tschema: {\n\t\t\t\t\t'type': 'object',\n\t\t\t\t\t'required': ['to'],\n\t\t\t\t\t'properties': {\n\t\t\t\t\t\t'to': {\n\t\t\t\t\t\t\t'type': 'string',\n\t\t\t\t\t\t\t'enum': ['up', 'down']\n\t\t\t\t\t\t},\n\t\t\t\t\t\t'by': {\n\t\t\t\t\t\t\t'type': 'string',\n\t\t\t\t\t\t\t'enum': ['line', 'wrappedLine', 'page', 'halfPage', 'editor']\n\t\t\t\t\t\t},\n\t\t\t\t\t\t'value': {\n\t\t\t\t\t\t\t'type': 'number',\n\t\t\t\t\t\t\t'default': 1\n\t\t\t\t\t\t},\n\t\t\t\t\t\t'revealCursor': {\n\t\t\t\t\t\t\t'type': 'boolean',\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t]\n\t};\n\n\t/**\n\t * Directions in the view for editor scroll command.\n\t */\n\texport const RawDirection = {\n\t\tUp: 'up',\n\t\tRight: 'right',\n\t\tDown: 'down',\n\t\tLeft: 'left'\n\t};\n\n\t/**\n\t * Units for editor scroll 'by' argument\n\t */\n\texport const RawUnit = {\n\t\tLine: 'line',\n\t\tWrappedLine: 'wrappedLine',\n\t\tPage: 'page',\n\t\tHalfPage: 'halfPage',\n\t\tEditor: 'editor',\n\t\tColumn: 'column'\n\t};\n\n\t/**\n\t * Arguments for editor scroll command\n\t */\n\texport interface RawArguments {\n\t\tto: string;\n\t\tby?: string;\n\t\tvalue?: number;\n\t\trevealCursor?: boolean;\n\t\tselect?: boolean;\n\t}\n\n\texport function parse(args: Partial<RawArguments>): ParsedArguments | null {\n\t\tlet direction: Direction;\n\t\tswitch (args.to) {\n\t\t\tcase RawDirection.Up:\n\t\t\t\tdirection = Direction.Up;\n\t\t\t\tbreak;\n\t\t\tcase RawDirection.Right:\n\t\t\t\tdirection = Direction.Right;\n\t\t\t\tbreak;\n\t\t\tcase RawDirection.Down:\n\t\t\t\tdirection = Direction.Down;\n\t\t\t\tbreak;\n\t\t\tcase RawDirection.Left:\n\t\t\t\tdirection = Direction.Left;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\t// Illegal arguments\n\t\t\t\treturn null;\n\t\t}\n\n\t\tlet unit: Unit;\n\t\tswitch (args.by) {\n\t\t\tcase RawUnit.Line:\n\t\t\t\tunit = Unit.Line;\n\t\t\t\tbreak;\n\t\t\tcase RawUnit.WrappedLine:\n\t\t\t\tunit = Unit.WrappedLine;\n\t\t\t\tbreak;\n\t\t\tcase RawUnit.Page:\n\t\t\t\tunit = Unit.Page;\n\t\t\t\tbreak;\n\t\t\tcase RawUnit.HalfPage:\n\t\t\t\tunit = Unit.HalfPage;\n\t\t\t\tbreak;\n\t\t\tcase RawUnit.Editor:\n\t\t\t\tunit = Unit.Editor;\n\t\t\t\tbreak;\n\t\t\tcase RawUnit.Column:\n\t\t\t\tunit = Unit.Column;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tunit = Unit.WrappedLine;\n\t\t}\n\n\t\tconst value = Math.floor(args.value || 1);\n\t\tconst revealCursor = !!args.revealCursor;\n\n\t\treturn {\n\t\t\tdirection: direction,\n\t\t\tunit: unit,\n\t\t\tvalue: value,\n\t\t\trevealCursor: revealCursor,\n\t\t\tselect: (!!args.select)\n\t\t};\n\t}\n\n\texport interface ParsedArguments {\n\t\tdirection: Direction;\n\t\tunit: Unit;\n\t\tvalue: number;\n\t\trevealCursor: boolean;\n\t\tselect: boolean;\n\t}\n\n\n\texport const enum Direction {\n\t\tUp = 1,\n\t\tRight = 2,\n\t\tDown = 3,\n\t\tLeft = 4\n\t}\n\n\texport const enum Unit {\n\t\tLine = 1,\n\t\tWrappedLine = 2,\n\t\tPage = 3,\n\t\tHalfPage = 4,\n\t\tEditor = 5,\n\t\tColumn = 6\n\t}\n}\n\nexport namespace RevealLine_ {\n\n\tconst isRevealLineArgs = function (arg: unknown): boolean {\n\t\tif (!types.isObject(arg)) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst reveaLineArg: RawArguments = arg as RawArguments;\n\n\t\tif (!types.isNumber(reveaLineArg.lineNumber) && !types.isString(reveaLineArg.lineNumber)) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (!types.isUndefined(reveaLineArg.at) && !types.isString(reveaLineArg.at)) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t};\n\n\texport const metadata: ICommandMetadata = {\n\t\tdescription: 'Reveal the given line at the given logical position',\n\t\targs: [\n\t\t\t{\n\t\t\t\tname: 'Reveal line argument object',\n\t\t\t\tdescription: `Property-value pairs that can be passed through this argument:\n\t\t\t\t\t* 'lineNumber': A mandatory line number value.\n\t\t\t\t\t* 'at': Logical position at which line has to be revealed.\n\t\t\t\t\t\t\\`\\`\\`\n\t\t\t\t\t\t'top', 'center', 'bottom'\n\t\t\t\t\t\t\\`\\`\\`\n\t\t\t\t`,\n\t\t\t\tconstraint: isRevealLineArgs,\n\t\t\t\tschema: {\n\t\t\t\t\t'type': 'object',\n\t\t\t\t\t'required': ['lineNumber'],\n\t\t\t\t\t'properties': {\n\t\t\t\t\t\t'lineNumber': {\n\t\t\t\t\t\t\t'type': ['number', 'string'],\n\t\t\t\t\t\t},\n\t\t\t\t\t\t'at': {\n\t\t\t\t\t\t\t'type': 'string',\n\t\t\t\t\t\t\t'enum': ['top', 'center', 'bottom']\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t]\n\t};\n\n\t/**\n\t * Arguments for reveal line command\n\t */\n\texport interface RawArguments {\n\t\tlineNumber?: number | string;\n\t\tat?: string;\n\t}\n\n\t/**\n\t * Values for reveal line 'at' argument\n\t */\n\texport const RawAtArgument = {\n\t\tTop: 'top',\n\t\tCenter: 'center',\n\t\tBottom: 'bottom'\n\t};\n}\n\nabstract class EditorOrNativeTextInputCommand {\n\n\tconstructor(target: MultiCommand) {\n\t\t// 1. handle case when focus is in editor.\n\t\ttarget.addImplementation(10000, 'code-editor', (accessor: ServicesAccessor, args: unknown) => {\n\t\t\t// Only if editor text focus (i.e. not if editor has widget focus).\n\t\t\tconst focusedEditor = accessor.get(ICodeEditorService).getFocusedCodeEditor();\n\t\t\tif (focusedEditor && focusedEditor.hasTextFocus()) {\n\t\t\t\treturn this._runEditorCommand(accessor, focusedEditor, args);\n\t\t\t}\n\t\t\treturn false;\n\t\t});\n\n\t\t// 2. handle case when focus is in some other `input` / `textarea`.\n\t\ttarget.addImplementation(1000, 'generic-dom-input-textarea', (accessor: ServicesAccessor, args: unknown) => {\n\t\t\t// Only if focused on an element that allows for entering text\n\t\t\tconst activeElement = getActiveElement();\n\t\t\tif (activeElement && isEditableElement(activeElement)) {\n\t\t\t\tthis.runDOMCommand(activeElement);\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t});\n\n\t\t// 3. (default) handle case when focus is somewhere else.\n\t\ttarget.addImplementation(0, 'generic-dom', (accessor: ServicesAccessor, args: unknown) => {\n\t\t\t// Redirecting to active editor\n\t\t\tconst activeEditor = accessor.get(ICodeEditorService).getActiveCodeEditor();\n\t\t\tif (activeEditor) {\n\t\t\t\tactiveEditor.focus();\n\t\t\t\treturn this._runEditorCommand(accessor, activeEditor, args);\n\t\t\t}\n\t\t\treturn false;\n\t\t});\n\t}\n\n\tpublic _runEditorCommand(accessor: ServicesAccessor | null, editor: ICodeEditor, args: unknown): boolean | Promise<void> {\n\t\tconst result = this.runEditorCommand(accessor, editor, args);\n\t\tif (result) {\n\t\t\treturn result;\n\t\t}\n\t\treturn true;\n\t}\n\n\tpublic abstract runDOMCommand(activeElement: Element): void;\n\tpublic abstract runEditorCommand(accessor: ServicesAccessor | null, editor: ICodeEditor, args: unknown): void | Promise<void>;\n}\n\nexport const enum NavigationCommandRevealType {\n\t/**\n\t * Do regular revealing.\n\t */\n\tRegular = 0,\n\t/**\n\t * Do only minimal revealing.\n\t */\n\tMinimal = 1,\n\t/**\n\t * Do not reveal the position.\n\t */\n\tNone = 2\n}\n\nexport namespace CoreNavigationCommands {\n\n\texport interface BaseCommandOptions {\n\t\tsource?: 'mouse' | 'keyboard' | string;\n\t}\n\n\texport interface MoveCommandOptions extends BaseCommandOptions {\n\t\tposition: IPosition;\n\t\tviewPosition?: IPosition;\n\t\trevealType: NavigationCommandRevealType;\n\t}\n\n\tclass BaseMoveToCommand extends CoreEditorCommand<MoveCommandOptions> {\n\n\t\tprivate readonly _inSelectionMode: boolean;\n\n\t\tconstructor(opts: ICommandOptions & { inSelectionMode: boolean }) {\n\t\t\tsuper(opts);\n\t\t\tthis._inSelectionMode = opts.inSelectionMode;\n\t\t}\n\n\t\tpublic runCoreEditorCommand(viewModel: IViewModel, args: Partial<MoveCommandOptions>): void {\n\t\t\tif (!args.position) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tviewModel.model.pushStackElement();\n\t\t\tconst cursorStateChanged = viewModel.setCursorStates(\n\t\t\t\targs.source,\n\t\t\t\tCursorChangeReason.Explicit,\n\t\t\t\t[\n\t\t\t\t\tCursorMoveCommands.moveTo(viewModel, viewModel.getPrimaryCursorState(), this._inSelectionMode, args.position, args.viewPosition)\n\t\t\t\t]\n\t\t\t);\n\t\t\tif (cursorStateChanged && args.revealType !== NavigationCommandRevealType.None) {\n\t\t\t\tviewModel.revealAllCursors(args.source, true, true);\n\t\t\t}\n\t\t}\n\t}\n\n\texport const MoveTo: CoreEditorCommand<MoveCommandOptions> = registerEditorCommand(new BaseMoveToCommand({\n\t\tid: '_moveTo',\n\t\tinSelectionMode: false,\n\t\tprecondition: undefined\n\t}));\n\n\texport const MoveToSelect: CoreEditorCommand<MoveCommandOptions> = registerEditorCommand(new BaseMoveToCommand({\n\t\tid: '_moveToSelect',\n\t\tinSelectionMode: true,\n\t\tprecondition: undefined\n\t}));\n\n\tabstract class ColumnSelectCommand<T extends BaseCommandOptions = BaseCommandOptions> extends CoreEditorCommand<T> {\n\t\tpublic runCoreEditorCommand(viewModel: IViewModel, args: Partial<T>): void {\n\t\t\tviewModel.model.pushStackElement();\n\t\t\tconst result = this._getColumnSelectResult(viewModel, viewModel.getPrimaryCursorState(), viewModel.getCursorColumnSelectData(), args);\n\t\t\tif (result === null) {\n\t\t\t\t// invalid arguments\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tviewModel.setCursorStates(args.source, CursorChangeReason.Explicit, result.viewStates.map((viewState) => CursorState.fromViewState(viewState)));\n\t\t\tviewModel.setCursorColumnSelectData({\n\t\t\t\tisReal: true,\n\t\t\t\tfromViewLineNumber: result.fromLineNumber,\n\t\t\t\tfromViewVisualColumn: result.fromVisualColumn,\n\t\t\t\ttoViewLineNumber: result.toLineNumber,\n\t\t\t\ttoViewVisualColumn: result.toVisualColumn\n\t\t\t});\n\t\t\tif (result.reversed) {\n\t\t\t\tviewModel.revealTopMostCursor(args.source);\n\t\t\t} else {\n\t\t\t\tviewModel.revealBottomMostCursor(args.source);\n\t\t\t}\n\t\t}\n\n\t\tprotected abstract _getColumnSelectResult(viewModel: IViewModel, primary: CursorState, prevColumnSelectData: IColumnSelectData, args: Partial<T>): IColumnSelectResult | null;\n\n\t}\n\n\texport interface ColumnSelectCommandOptions extends BaseCommandOptions {\n\t\tposition: IPosition;\n\t\tviewPosition: IPosition;\n\t\tmouseColumn: number;\n\t\tdoColumnSelect: boolean;\n\t}\n\n\texport const ColumnSelect: CoreEditorCommand<ColumnSelectCommandOptions> = registerEditorCommand(new class extends ColumnSelectCommand<ColumnSelectCommandOptions> {\n\t\tconstructor() {\n\t\t\tsuper({\n\t\t\t\tid: 'columnSelect',\n\t\t\t\tprecondition: undefined\n\t\t\t});\n\t\t}\n\n\t\tprotected _getColumnSelectResult(viewModel: IViewModel, primary: CursorState, prevColumnSelectData: IColumnSelectData, args: Partial<ColumnSelectCommandOptions>): IColumnSelectResult | null {\n\t\t\tif (typeof args.position === 'undefined' || typeof args.viewPosition === 'undefined' || typeof args.mouseColumn === 'undefined') {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\t// validate `args`\n\t\t\tconst validatedPosition = viewModel.model.validatePosition(args.position);\n\t\t\tconst validatedViewPosition = viewModel.coordinatesConverter.validateViewPosition(new Position(args.viewPosition.lineNumber, args.viewPosition.column), validatedPosition);\n\n\t\t\tconst fromViewLineNumber = args.doColumnSelect ? prevColumnSelectData.fromViewLineNumber : validatedViewPosition.lineNumber;\n\t\t\tconst fromViewVisualColumn = args.doColumnSelect ? prevColumnSelectData.fromViewVisualColumn : args.mouseColumn - 1;\n\t\t\treturn ColumnSelection.columnSelect(viewModel.cursorConfig, viewModel, fromViewLineNumber, fromViewVisualColumn, validatedViewPosition.lineNumber, args.mouseColumn - 1);\n\t\t}\n\t});\n\n\texport const CursorColumnSelectLeft: CoreEditorCommand<BaseCommandOptions> = registerEditorCommand(new class extends ColumnSelectCommand {\n\t\tconstructor() {\n\t\t\tsuper({\n\t\t\t\tid: 'cursorColumnSelectLeft',\n\t\t\t\tprecondition: undefined,\n\t\t\t\tkbOpts: {\n\t\t\t\t\tweight: CORE_WEIGHT,\n\t\t\t\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\t\t\t\tprimary: KeyMod.CtrlCmd | KeyMod.Shift | KeyMod.Alt | KeyCode.LeftArrow,\n\t\t\t\t\tlinux: { primary: 0 }\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tprotected _getColumnSelectResult(viewModel: IViewModel, primary: CursorState, prevColumnSelectData: IColumnSelectData, args: Partial<BaseCommandOptions>): IColumnSelectResult {\n\t\t\treturn ColumnSelection.columnSelectLeft(viewModel.cursorConfig, viewModel, prevColumnSelectData);\n\t\t}\n\t});\n\n\texport const CursorColumnSelectRight: CoreEditorCommand<BaseCommandOptions> = registerEditorCommand(new class extends ColumnSelectCommand {\n\t\tconstructor() {\n\t\t\tsuper({\n\t\t\t\tid: 'cursorColumnSelectRight',\n\t\t\t\tprecondition: undefined,\n\t\t\t\tkbOpts: {\n\t\t\t\t\tweight: CORE_WEIGHT,\n\t\t\t\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\t\t\t\tprimary: KeyMod.CtrlCmd | KeyMod.Shift | KeyMod.Alt | KeyCode.RightArrow,\n\t\t\t\t\tlinux: { primary: 0 }\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tprotected _getColumnSelectResult(viewModel: IViewModel, primary: CursorState, prevColumnSelectData: IColumnSelectData, args: Partial<BaseCommandOptions>): IColumnSelectResult {\n\t\t\treturn ColumnSelection.columnSelectRight(viewModel.cursorConfig, viewModel, prevColumnSelectData);\n\t\t}\n\t});\n\n\tclass ColumnSelectUpCommand extends ColumnSelectCommand {\n\n\t\tprivate readonly _isPaged: boolean;\n\n\t\tconstructor(opts: ICommandOptions & { isPaged: boolean }) {\n\t\t\tsuper(opts);\n\t\t\tthis._isPaged = opts.isPaged;\n\t\t}\n\n\t\tprotected _getColumnSelectResult(viewModel: IViewModel, primary: CursorState, prevColumnSelectData: IColumnSelectData, args: Partial<BaseCommandOptions>): IColumnSelectResult {\n\t\t\treturn ColumnSelection.columnSelectUp(viewModel.cursorConfig, viewModel, prevColumnSelectData, this._isPaged);\n\t\t}\n\t}\n\n\texport const CursorColumnSelectUp: CoreEditorCommand<BaseCommandOptions> = registerEditorCommand(new ColumnSelectUpCommand({\n\t\tisPaged: false,\n\t\tid: 'cursorColumnSelectUp',\n\t\tprecondition: undefined,\n\t\tkbOpts: {\n\t\t\tweight: CORE_WEIGHT,\n\t\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\t\tprimary: KeyMod.CtrlCmd | KeyMod.Shift | KeyMod.Alt | KeyCode.UpArrow,\n\t\t\tlinux: { primary: 0 }\n\t\t}\n\t}));\n\n\texport const CursorColumnSelectPageUp: CoreEditorCommand<BaseCommandOptions> = registerEditorCommand(new ColumnSelectUpCommand({\n\t\tisPaged: true,\n\t\tid: 'cursorColumnSelectPageUp',\n\t\tprecondition: undefined,\n\t\tkbOpts: {\n\t\t\tweight: CORE_WEIGHT,\n\t\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\t\tprimary: KeyMod.CtrlCmd | KeyMod.Shift | KeyMod.Alt | KeyCode.PageUp,\n\t\t\tlinux: { primary: 0 }\n\t\t}\n\t}));\n\n\tclass ColumnSelectDownCommand extends ColumnSelectCommand {\n\n\t\tprivate readonly _isPaged: boolean;\n\n\t\tconstructor(opts: ICommandOptions & { isPaged: boolean }) {\n\t\t\tsuper(opts);\n\t\t\tthis._isPaged = opts.isPaged;\n\t\t}\n\n\t\tprotected _getColumnSelectResult(viewModel: IViewModel, primary: CursorState, prevColumnSelectData: IColumnSelectData, args: Partial<BaseCommandOptions>): IColumnSelectResult {\n\t\t\treturn ColumnSelection.columnSelectDown(viewModel.cursorConfig, viewModel, prevColumnSelectData, this._isPaged);\n\t\t}\n\t}\n\n\texport const CursorColumnSelectDown: CoreEditorCommand<BaseCommandOptions> = registerEditorCommand(new ColumnSelectDownCommand({\n\t\tisPaged: false,\n\t\tid: 'cursorColumnSelectDown',\n\t\tprecondition: undefined,\n\t\tkbOpts: {\n\t\t\tweight: CORE_WEIGHT,\n\t\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\t\tprimary: KeyMod.CtrlCmd | KeyMod.Shift | KeyMod.Alt | KeyCode.DownArrow,\n\t\t\tlinux: { primary: 0 }\n\t\t}\n\t}));\n\n\texport const CursorColumnSelectPageDown: CoreEditorCommand<BaseCommandOptions> = registerEditorCommand(new ColumnSelectDownCommand({\n\t\tisPaged: true,\n\t\tid: 'cursorColumnSelectPageDown',\n\t\tprecondition: undefined,\n\t\tkbOpts: {\n\t\t\tweight: CORE_WEIGHT,\n\t\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\t\tprimary: KeyMod.CtrlCmd | KeyMod.Shift | KeyMod.Alt | KeyCode.PageDown,\n\t\t\tlinux: { primary: 0 }\n\t\t}\n\t}));\n\n\texport class CursorMoveImpl extends CoreEditorCommand<CursorMove_.RawArguments> {\n\t\tconstructor() {\n\t\t\tsuper({\n\t\t\t\tid: 'cursorMove',\n\t\t\t\tprecondition: undefined,\n\t\t\t\tmetadata: CursorMove_.metadata\n\t\t\t});\n\t\t}\n\n\t\tpublic runCoreEditorCommand(viewModel: IViewModel, args: Partial<BaseCommandOptions & CursorMove_.RawArguments>): void {\n\t\t\tconst parsed = CursorMove_.parse(args);\n\t\t\tif (!parsed) {\n\t\t\t\t// illegal arguments\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis._runCursorMove(viewModel, args.source, parsed);\n\t\t}\n\n\t\tprivate _runCursorMove(viewModel: IViewModel, source: string | null | undefined, args: CursorMove_.ParsedArguments): void {\n\t\t\t// If noHistory is true, use PROGRAMMATIC source to prevent adding to navigation history\n\t\t\tconst effectiveSource = args.noHistory ? TextEditorSelectionSource.PROGRAMMATIC : source;\n\n\t\t\tviewModel.model.pushStackElement();\n\t\t\tviewModel.setCursorStates(\n\t\t\t\teffectiveSource,\n\t\t\t\tCursorChangeReason.Explicit,\n\t\t\t\tCursorMoveImpl._move(viewModel, viewModel.getCursorStates(), args)\n\t\t\t);\n\t\t\tviewModel.revealAllCursors(effectiveSource, true);\n\t\t}\n\n\t\tprivate static _move(viewModel: IViewModel, cursors: CursorState[], args: CursorMove_.ParsedArguments): PartialCursorState[] | null {\n\t\t\tconst inSelectionMode = args.select;\n\t\t\tconst value = args.value;\n\n\t\t\tswitch (args.direction) {\n\t\t\t\tcase CursorMove_.Direction.Left:\n\t\t\t\tcase CursorMove_.Direction.Right:\n\t\t\t\tcase CursorMove_.Direction.Up:\n\t\t\t\tcase CursorMove_.Direction.Down:\n\t\t\t\tcase CursorMove_.Direction.PrevBlankLine:\n\t\t\t\tcase CursorMove_.Direction.NextBlankLine:\n\t\t\t\tcase CursorMove_.Direction.WrappedLineStart:\n\t\t\t\tcase CursorMove_.Direction.WrappedLineFirstNonWhitespaceCharacter:\n\t\t\t\tcase CursorMove_.Direction.WrappedLineColumnCenter:\n\t\t\t\tcase CursorMove_.Direction.WrappedLineEnd:\n\t\t\t\tcase CursorMove_.Direction.WrappedLineLastNonWhitespaceCharacter:\n\t\t\t\t\treturn CursorMoveCommands.simpleMove(viewModel, cursors, args.direction, inSelectionMode, value, args.unit);\n\n\t\t\t\tcase CursorMove_.Direction.ViewPortTop:\n\t\t\t\tcase CursorMove_.Direction.ViewPortBottom:\n\t\t\t\tcase CursorMove_.Direction.ViewPortCenter:\n\t\t\t\tcase CursorMove_.Direction.ViewPortIfOutside:\n\t\t\t\t\treturn CursorMoveCommands.viewportMove(viewModel, cursors, args.direction, inSelectionMode, value);\n\t\t\t\tdefault:\n\t\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\t}\n\n\texport const CursorMove: CursorMoveImpl = registerEditorCommand(new CursorMoveImpl());\n\n\tconst enum Constants {\n\t\tPAGE_SIZE_MARKER = -1\n\t}\n\n\texport interface CursorMoveCommandOptions extends BaseCommandOptions {\n\t\tpageSize?: number;\n\t}\n\n\tclass CursorMoveBasedCommand extends CoreEditorCommand<CursorMoveCommandOptions> {\n\n\t\tprivate readonly _staticArgs: CursorMove_.SimpleMoveArguments;\n\n\t\tconstructor(opts: ICommandOptions & { args: CursorMove_.SimpleMoveArguments }) {\n\t\t\tsuper(opts);\n\t\t\tthis._staticArgs = opts.args;\n\t\t}\n\n\t\tpublic runCoreEditorCommand(viewModel: IViewModel, dynamicArgs: Partial<CursorMoveCommandOptions>): void {\n\t\t\tlet args = this._staticArgs;\n\t\t\tif (this._staticArgs.value === Constants.PAGE_SIZE_MARKER) {\n\t\t\t\t// -1 is a marker for page size\n\t\t\t\targs = {\n\t\t\t\t\tdirection: this._staticArgs.direction,\n\t\t\t\t\tunit: this._staticArgs.unit,\n\t\t\t\t\tselect: this._staticArgs.select,\n\t\t\t\t\tvalue: dynamicArgs.pageSize || viewModel.cursorConfig.pageSize\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tviewModel.model.pushStackElement();\n\t\t\tviewModel.setCursorStates(\n\t\t\t\tdynamicArgs.source,\n\t\t\t\tCursorChangeReason.Explicit,\n\t\t\t\tCursorMoveCommands.simpleMove(viewModel, viewModel.getCursorStates(), args.direction, args.select, args.value, args.unit)\n\t\t\t);\n\t\t\tviewModel.revealAllCursors(dynamicArgs.source, true);\n\t\t}\n\t}\n\n\texport const CursorLeft: CoreEditorCommand<CursorMoveCommandOptions> = registerEditorCommand(new CursorMoveBasedCommand({\n\t\targs: {\n\t\t\tdirection: CursorMove_.Direction.Left,\n\t\t\tunit: CursorMove_.Unit.None,\n\t\t\tselect: false,\n\t\t\tvalue: 1\n\t\t},\n\t\tid: 'cursorLeft',\n\t\tprecondition: undefined,\n\t\tkbOpts: {\n\t\t\tweight: CORE_WEIGHT,\n\t\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\t\tprimary: KeyCode.LeftArrow,\n\t\t\tmac: { primary: KeyCode.LeftArrow, secondary: [KeyMod.WinCtrl | KeyCode.KeyB] }\n\t\t}\n\t}));\n\n\texport const CursorLeftSelect: CoreEditorCommand<CursorMoveCommandOptions> = registerEditorCommand(new CursorMoveBasedCommand({\n\t\targs: {\n\t\t\tdirection: CursorMove_.Direction.Left,\n\t\t\tunit: CursorMove_.Unit.None,\n\t\t\tselect: true,\n\t\t\tvalue: 1\n\t\t},\n\t\tid: 'cursorLeftSelect',\n\t\tprecondition: undefined,\n\t\tkbOpts: {\n\t\t\tweight: CORE_WEIGHT,\n\t\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\t\tprimary: KeyMod.Shift | KeyCode.LeftArrow\n\t\t}\n\t}));\n\n\texport const CursorRight: CoreEditorCommand<CursorMoveCommandOptions> = registerEditorCommand(new CursorMoveBasedCommand({\n\t\targs: {\n\t\t\tdirection: CursorMove_.Direction.Right,\n\t\t\tunit: CursorMove_.Unit.None,\n\t\t\tselect: false,\n\t\t\tvalue: 1\n\t\t},\n\t\tid: 'cursorRight',\n\t\tprecondition: undefined,\n\t\tkbOpts: {\n\t\t\tweight: CORE_WEIGHT,\n\t\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\t\tprimary: KeyCode.RightArrow,\n\t\t\tmac: { primary: KeyCode.RightArrow, secondary: [KeyMod.WinCtrl | KeyCode.KeyF] }\n\t\t}\n\t}));\n\n\texport const CursorRightSelect: CoreEditorCommand<CursorMoveCommandOptions> = registerEditorCommand(new CursorMoveBasedCommand({\n\t\targs: {\n\t\t\tdirection: CursorMove_.Direction.Right,\n\t\t\tunit: CursorMove_.Unit.None,\n\t\t\tselect: true,\n\t\t\tvalue: 1\n\t\t},\n\t\tid: 'cursorRightSelect',\n\t\tprecondition: undefined,\n\t\tkbOpts: {\n\t\t\tweight: CORE_WEIGHT,\n\t\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\t\tprimary: KeyMod.Shift | KeyCode.RightArrow\n\t\t}\n\t}));\n\n\texport const CursorUp: CoreEditorCommand<CursorMoveCommandOptions> = registerEditorCommand(new CursorMoveBasedCommand({\n\t\targs: {\n\t\t\tdirection: CursorMove_.Direction.Up,\n\t\t\tunit: CursorMove_.Unit.WrappedLine,\n\t\t\tselect: false,\n\t\t\tvalue: 1\n\t\t},\n\t\tid: 'cursorUp',\n\t\tprecondition: undefined,\n\t\tkbOpts: {\n\t\t\tweight: CORE_WEIGHT,\n\t\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\t\tprimary: KeyCode.UpArrow,\n\t\t\tmac: { primary: KeyCode.UpArrow, secondary: [KeyMod.WinCtrl | KeyCode.KeyP] }\n\t\t}\n\t}));\n\n\texport const CursorUpSelect: CoreEditorCommand<CursorMoveCommandOptions> = registerEditorCommand(new CursorMoveBasedCommand({\n\t\targs: {\n\t\t\tdirection: CursorMove_.Direction.Up,\n\t\t\tunit: CursorMove_.Unit.WrappedLine,\n\t\t\tselect: true,\n\t\t\tvalue: 1\n\t\t},\n\t\tid: 'cursorUpSelect',\n\t\tprecondition: undefined,\n\t\tkbOpts: {\n\t\t\tweight: CORE_WEIGHT,\n\t\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\t\tprimary: KeyMod.Shift | KeyCode.UpArrow,\n\t\t\tsecondary: [KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.UpArrow],\n\t\t\tmac: { primary: KeyMod.Shift | KeyCode.UpArrow },\n\t\t\tlinux: { primary: KeyMod.Shift | KeyCode.UpArrow }\n\t\t}\n\t}));\n\n\texport const CursorPageUp: CoreEditorCommand<CursorMoveCommandOptions> = registerEditorCommand(new CursorMoveBasedCommand({\n\t\targs: {\n\t\t\tdirection: CursorMove_.Direction.Up,\n\t\t\tunit: CursorMove_.Unit.WrappedLine,\n\t\t\tselect: false,\n\t\t\tvalue: Constants.PAGE_SIZE_MARKER\n\t\t},\n\t\tid: 'cursorPageUp',\n\t\tprecondition: undefined,\n\t\tkbOpts: {\n\t\t\tweight: CORE_WEIGHT,\n\t\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\t\tprimary: KeyCode.PageUp\n\t\t}\n\t}));\n\n\texport const CursorPageUpSelect: CoreEditorCommand<CursorMoveCommandOptions> = registerEditorCommand(new CursorMoveBasedCommand({\n\t\targs: {\n\t\t\tdirection: CursorMove_.Direction.Up,\n\t\t\tunit: CursorMove_.Unit.WrappedLine,\n\t\t\tselect: true,\n\t\t\tvalue: Constants.PAGE_SIZE_MARKER\n\t\t},\n\t\tid: 'cursorPageUpSelect',\n\t\tprecondition: undefined,\n\t\tkbOpts: {\n\t\t\tweight: CORE_WEIGHT,\n\t\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\t\tprimary: KeyMod.Shift | KeyCode.PageUp\n\t\t}\n\t}));\n\n\texport const CursorDown: CoreEditorCommand<CursorMoveCommandOptions> = registerEditorCommand(new CursorMoveBasedCommand({\n\t\targs: {\n\t\t\tdirection: CursorMove_.Direction.Down,\n\t\t\tunit: CursorMove_.Unit.WrappedLine,\n\t\t\tselect: false,\n\t\t\tvalue: 1\n\t\t},\n\t\tid: 'cursorDown',\n\t\tprecondition: undefined,\n\t\tkbOpts: {\n\t\t\tweight: CORE_WEIGHT,\n\t\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\t\tprimary: KeyCode.DownArrow,\n\t\t\tmac: { primary: KeyCode.DownArrow, secondary: [KeyMod.WinCtrl | KeyCode.KeyN] }\n\t\t}\n\t}));\n\n\texport const CursorDownSelect: CoreEditorCommand<CursorMoveCommandOptions> = registerEditorCommand(new CursorMoveBasedCommand({\n\t\targs: {\n\t\t\tdirection: CursorMove_.Direction.Down,\n\t\t\tunit: CursorMove_.Unit.WrappedLine,\n\t\t\tselect: true,\n\t\t\tvalue: 1\n\t\t},\n\t\tid: 'cursorDownSelect',\n\t\tprecondition: undefined,\n\t\tkbOpts: {\n\t\t\tweight: CORE_WEIGHT,\n\t\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\t\tprimary: KeyMod.Shift | KeyCode.DownArrow,\n\t\t\tsecondary: [KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.DownArrow],\n\t\t\tmac: { primary: KeyMod.Shift | KeyCode.DownArrow },\n\t\t\tlinux: { primary: KeyMod.Shift | KeyCode.DownArrow }\n\t\t}\n\t}));\n\n\texport const CursorPageDown: CoreEditorCommand<CursorMoveCommandOptions> = registerEditorCommand(new CursorMoveBasedCommand({\n\t\targs: {\n\t\t\tdirection: CursorMove_.Direction.Down,\n\t\t\tunit: CursorMove_.Unit.WrappedLine,\n\t\t\tselect: false,\n\t\t\tvalue: Constants.PAGE_SIZE_MARKER\n\t\t},\n\t\tid: 'cursorPageDown',\n\t\tprecondition: undefined,\n\t\tkbOpts: {\n\t\t\tweight: CORE_WEIGHT,\n\t\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\t\tprimary: KeyCode.PageDown\n\t\t}\n\t}));\n\n\texport const CursorPageDownSelect: CoreEditorCommand<CursorMoveCommandOptions> = registerEditorCommand(new CursorMoveBasedCommand({\n\t\targs: {\n\t\t\tdirection: CursorMove_.Direction.Down,\n\t\t\tunit: CursorMove_.Unit.WrappedLine,\n\t\t\tselect: true,\n\t\t\tvalue: Constants.PAGE_SIZE_MARKER\n\t\t},\n\t\tid: 'cursorPageDownSelect',\n\t\tprecondition: undefined,\n\t\tkbOpts: {\n\t\t\tweight: CORE_WEIGHT,\n\t\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\t\tprimary: KeyMod.Shift | KeyCode.PageDown\n\t\t}\n\t}));\n\n\texport interface CreateCursorCommandOptions extends MoveCommandOptions {\n\t\twholeLine?: boolean;\n\t}\n\n\texport const CreateCursor: CoreEditorCommand<CreateCursorCommandOptions> = registerEditorCommand(new class extends CoreEditorCommand<CreateCursorCommandOptions> {\n\t\tconstructor() {\n\t\t\tsuper({\n\t\t\t\tid: 'createCursor',\n\t\t\t\tprecondition: undefined\n\t\t\t});\n\t\t}\n\n\t\tpublic runCoreEditorCommand(viewModel: IViewModel, args: Partial<CreateCursorCommandOptions>): void {\n\t\t\tif (!args.position) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tlet newState: PartialCursorState;\n\t\t\tif (args.wholeLine) {\n\t\t\t\tnewState = CursorMoveCommands.line(viewModel, viewModel.getPrimaryCursorState(), false, args.position, args.viewPosition);\n\t\t\t} else {\n\t\t\t\tnewState = CursorMoveCommands.moveTo(viewModel, viewModel.getPrimaryCursorState(), false, args.position, args.viewPosition);\n\t\t\t}\n\n\t\t\tconst states: PartialCursorState[] = viewModel.getCursorStates();\n\n\t\t\t// Check if we should remove a cursor (sort of like a toggle)\n\t\t\tif (states.length > 1) {\n\t\t\t\tconst newModelPosition = (newState.modelState ? newState.modelState.position : null);\n\t\t\t\tconst newViewPosition = (newState.viewState ? newState.viewState.position : null);\n\n\t\t\t\tfor (let i = 0, len = states.length; i < len; i++) {\n\t\t\t\t\tconst state = states[i];\n\n\t\t\t\t\tif (newModelPosition && !state.modelState!.selection.containsPosition(newModelPosition)) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (newViewPosition && !state.viewState!.selection.containsPosition(newViewPosition)) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\t// => Remove the cursor\n\t\t\t\t\tstates.splice(i, 1);\n\n\t\t\t\t\tviewModel.model.pushStackElement();\n\t\t\t\t\tviewModel.setCursorStates(\n\t\t\t\t\t\targs.source,\n\t\t\t\t\t\tCursorChangeReason.Explicit,\n\t\t\t\t\t\tstates\n\t\t\t\t\t);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// => Add the new cursor\n\t\t\tstates.push(newState);\n\n\t\t\tviewModel.model.pushStackElement();\n\t\t\tviewModel.setCursorStates(\n\t\t\t\targs.source,\n\t\t\t\tCursorChangeReason.Explicit,\n\t\t\t\tstates\n\t\t\t);\n\t\t}\n\t});\n\n\texport const LastCursorMoveToSelect: CoreEditorCommand<MoveCommandOptions> = registerEditorCommand(new class extends CoreEditorCommand<MoveCommandOptions> {\n\t\tconstructor() {\n\t\t\tsuper({\n\t\t\t\tid: '_lastCursorMoveToSelect',\n\t\t\t\tprecondition: undefined\n\t\t\t});\n\t\t}\n\n\t\tpublic runCoreEditorCommand(viewModel: IViewModel, args: Partial<MoveCommandOptions>): void {\n\t\t\tif (!args.position) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst lastAddedCursorIndex = viewModel.getLastAddedCursorIndex();\n\n\t\t\tconst states = viewModel.getCursorStates();\n\t\t\tconst newStates: PartialCursorState[] = states.slice(0);\n\t\t\tnewStates[lastAddedCursorIndex] = CursorMoveCommands.moveTo(viewModel, states[lastAddedCursorIndex], true, args.position, args.viewPosition);\n\n\t\t\tviewModel.model.pushStackElement();\n\t\t\tviewModel.setCursorStates(\n\t\t\t\targs.source,\n\t\t\t\tCursorChangeReason.Explicit,\n\t\t\t\tnewStates\n\t\t\t);\n\t\t}\n\t});\n\n\tclass HomeCommand extends CoreEditorCommand<BaseCommandOptions> {\n\n\t\tprivate readonly _inSelectionMode: boolean;\n\n\t\tconstructor(opts: ICommandOptions & { inSelectionMode: boolean }) {\n\t\t\tsuper(opts);\n\t\t\tthis._inSelectionMode = opts.inSelectionMode;\n\t\t}\n\n\t\tpublic runCoreEditorCommand(viewModel: IViewModel, args: Partial<BaseCommandOptions>): void {\n\t\t\tviewModel.model.pushStackElement();\n\t\t\tviewModel.setCursorStates(\n\t\t\t\targs.source,\n\t\t\t\tCursorChangeReason.Explicit,\n\t\t\t\tCursorMoveCommands.moveToBeginningOfLine(viewModel, viewModel.getCursorStates(), this._inSelectionMode)\n\t\t\t);\n\t\t\tviewModel.revealAllCursors(args.source, true);\n\t\t}\n\t}\n\n\texport const CursorHome: CoreEditorCommand<BaseCommandOptions> = registerEditorCommand(new HomeCommand({\n\t\tinSelectionMode: false,\n\t\tid: 'cursorHome',\n\t\tprecondition: undefined,\n\t\tkbOpts: {\n\t\t\tweight: CORE_WEIGHT,\n\t\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\t\tprimary: KeyCode.Home,\n\t\t\tmac: { primary: KeyCode.Home, secondary: [KeyMod.CtrlCmd | KeyCode.LeftArrow] }\n\t\t}\n\t}));\n\n\texport const CursorHomeSelect: CoreEditorCommand<BaseCommandOptions> = registerEditorCommand(new HomeCommand({\n\t\tinSelectionMode: true,\n\t\tid: 'cursorHomeSelect',\n\t\tprecondition: undefined,\n\t\tkbOpts: {\n\t\t\tweight: CORE_WEIGHT,\n\t\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\t\tprimary: KeyMod.Shift | KeyCode.Home,\n\t\t\tmac: { primary: KeyMod.Shift | KeyCode.Home, secondary: [KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.LeftArrow] }\n\t\t}\n\t}));\n\n\tclass LineStartCommand extends CoreEditorCommand<BaseCommandOptions> {\n\n\t\tprivate readonly _inSelectionMode: boolean;\n\n\t\tconstructor(opts: ICommandOptions & { inSelectionMode: boolean }) {\n\t\t\tsuper(opts);\n\t\t\tthis._inSelectionMode = opts.inSelectionMode;\n\t\t}\n\n\t\tpublic runCoreEditorCommand(viewModel: IViewModel, args: Partial<BaseCommandOptions>): void {\n\t\t\tviewModel.model.pushStackElement();\n\t\t\tviewModel.setCursorStates(\n\t\t\t\targs.source,\n\t\t\t\tCursorChangeReason.Explicit,\n\t\t\t\tthis._exec(viewModel.getCursorStates())\n\t\t\t);\n\t\t\tviewModel.revealAllCursors(args.source, true);\n\t\t}\n\n\t\tprivate _exec(cursors: CursorState[]): PartialCursorState[] {\n\t\t\tconst result: PartialCursorState[] = [];\n\t\t\tfor (let i = 0, len = cursors.length; i < len; i++) {\n\t\t\t\tconst cursor = cursors[i];\n\t\t\t\tconst lineNumber = cursor.modelState.position.lineNumber;\n\t\t\t\tresult[i] = CursorState.fromModelState(cursor.modelState.move(this._inSelectionMode, lineNumber, 1, 0));\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n\n\texport const CursorLineStart: CoreEditorCommand<BaseCommandOptions> = registerEditorCommand(new LineStartCommand({\n\t\tinSelectionMode: false,\n\t\tid: 'cursorLineStart',\n\t\tprecondition: undefined,\n\t\tkbOpts: {\n\t\t\tweight: CORE_WEIGHT,\n\t\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\t\tprimary: 0,\n\t\t\tmac: { primary: KeyMod.WinCtrl | KeyCode.KeyA }\n\t\t}\n\t}));\n\n\texport const CursorLineStartSelect: CoreEditorCommand<BaseCommandOptions> = registerEditorCommand(new LineStartCommand({\n\t\tinSelectionMode: true,\n\t\tid: 'cursorLineStartSelect',\n\t\tprecondition: undefined,\n\t\tkbOpts: {\n\t\t\tweight: CORE_WEIGHT,\n\t\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\t\tprimary: 0,\n\t\t\tmac: { primary: KeyMod.WinCtrl | KeyMod.Shift | KeyCode.KeyA }\n\t\t}\n\t}));\n\n\texport interface EndCommandOptions extends BaseCommandOptions {\n\t\tsticky?: boolean;\n\t}\n\n\tclass EndCommand extends CoreEditorCommand<EndCommandOptions> {\n\n\t\tprivate readonly _inSelectionMode: boolean;\n\n\t\tconstructor(opts: ICommandOptions & { inSelectionMode: boolean }) {\n\t\t\tsuper(opts);\n\t\t\tthis._inSelectionMode = opts.inSelectionMode;\n\t\t}\n\n\t\tpublic runCoreEditorCommand(viewModel: IViewModel, args: Partial<EndCommandOptions>): void {\n\t\t\tviewModel.model.pushStackElement();\n\t\t\tviewModel.setCursorStates(\n\t\t\t\targs.source,\n\t\t\t\tCursorChangeReason.Explicit,\n\t\t\t\tCursorMoveCommands.moveToEndOfLine(viewModel, viewModel.getCursorStates(), this._inSelectionMode, args.sticky || false)\n\t\t\t);\n\t\t\tviewModel.revealAllCursors(args.source, true);\n\t\t}\n\t}\n\n\texport const CursorEnd: CoreEditorCommand<EndCommandOptions> = registerEditorCommand(new EndCommand({\n\t\tinSelectionMode: false,\n\t\tid: 'cursorEnd',\n\t\tprecondition: undefined,\n\t\tkbOpts: {\n\t\t\targs: { sticky: false },\n\t\t\tweight: CORE_WEIGHT,\n\t\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\t\tprimary: KeyCode.End,\n\t\t\tmac: { primary: KeyCode.End, secondary: [KeyMod.CtrlCmd | KeyCode.RightArrow] }\n\t\t},\n\t\tmetadata: {\n\t\t\tdescription: `Go to End`,\n\t\t\targs: [{\n\t\t\t\tname: 'args',\n\t\t\t\tschema: {\n\t\t\t\t\ttype: 'object',\n\t\t\t\t\tproperties: {\n\t\t\t\t\t\t'sticky': {\n\t\t\t\t\t\t\tdescription: nls.localize('stickydesc', \"Stick to the end even when going to longer lines\"),\n\t\t\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\t\t\tdefault: false\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}]\n\t\t}\n\t}));\n\n\texport const CursorEndSelect: CoreEditorCommand<EndCommandOptions> = registerEditorCommand(new EndCommand({\n\t\tinSelectionMode: true,\n\t\tid: 'cursorEndSelect',\n\t\tprecondition: undefined,\n\t\tkbOpts: {\n\t\t\targs: { sticky: false },\n\t\t\tweight: CORE_WEIGHT,\n\t\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\t\tprimary: KeyMod.Shift | KeyCode.End,\n\t\t\tmac: { primary: KeyMod.Shift | KeyCode.End, secondary: [KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.RightArrow] }\n\t\t},\n\t\tmetadata: {\n\t\t\tdescription: `Select to End`,\n\t\t\targs: [{\n\t\t\t\tname: 'args',\n\t\t\t\tschema: {\n\t\t\t\t\ttype: 'object',\n\t\t\t\t\tproperties: {\n\t\t\t\t\t\t'sticky': {\n\t\t\t\t\t\t\tdescription: nls.localize('stickydesc', \"Stick to the end even when going to longer lines\"),\n\t\t\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\t\t\tdefault: false\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}]\n\t\t}\n\t}));\n\n\tclass LineEndCommand extends CoreEditorCommand<BaseCommandOptions> {\n\n\t\tprivate readonly _inSelectionMode: boolean;\n\n\t\tconstructor(opts: ICommandOptions & { inSelectionMode: boolean }) {\n\t\t\tsuper(opts);\n\t\t\tthis._inSelectionMode = opts.inSelectionMode;\n\t\t}\n\n\t\tpublic runCoreEditorCommand(viewModel: IViewModel, args: Partial<BaseCommandOptions>): void {\n\t\t\tviewModel.model.pushStackElement();\n\t\t\tviewModel.setCursorStates(\n\t\t\t\targs.source,\n\t\t\t\tCursorChangeReason.Explicit,\n\t\t\t\tthis._exec(viewModel, viewModel.getCursorStates())\n\t\t\t);\n\t\t\tviewModel.revealAllCursors(args.source, true);\n\t\t}\n\n\t\tprivate _exec(viewModel: IViewModel, cursors: CursorState[]): PartialCursorState[] {\n\t\t\tconst result: PartialCursorState[] = [];\n\t\t\tfor (let i = 0, len = cursors.length; i < len; i++) {\n\t\t\t\tconst cursor = cursors[i];\n\t\t\t\tconst lineNumber = cursor.modelState.position.lineNumber;\n\t\t\t\tconst maxColumn = viewModel.model.getLineMaxColumn(lineNumber);\n\t\t\t\tresult[i] = CursorState.fromModelState(cursor.modelState.move(this._inSelectionMode, lineNumber, maxColumn, 0));\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n\n\texport const CursorLineEnd: CoreEditorCommand<BaseCommandOptions> = registerEditorCommand(new LineEndCommand({\n\t\tinSelectionMode: false,\n\t\tid: 'cursorLineEnd',\n\t\tprecondition: undefined,\n\t\tkbOpts: {\n\t\t\tweight: CORE_WEIGHT,\n\t\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\t\tprimary: 0,\n\t\t\tmac: { primary: KeyMod.WinCtrl | KeyCode.KeyE }\n\t\t}\n\t}));\n\n\texport const CursorLineEndSelect: CoreEditorCommand<BaseCommandOptions> = registerEditorCommand(new LineEndCommand({\n\t\tinSelectionMode: true,\n\t\tid: 'cursorLineEndSelect',\n\t\tprecondition: undefined,\n\t\tkbOpts: {\n\t\t\tweight: CORE_WEIGHT,\n\t\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\t\tprimary: 0,\n\t\t\tmac: { primary: KeyMod.WinCtrl | KeyMod.Shift | KeyCode.KeyE }\n\t\t}\n\t}));\n\n\tclass TopCommand extends CoreEditorCommand<BaseCommandOptions> {\n\n\t\tprivate readonly _inSelectionMode: boolean;\n\n\t\tconstructor(opts: ICommandOptions & { inSelectionMode: boolean }) {\n\t\t\tsuper(opts);\n\t\t\tthis._inSelectionMode = opts.inSelectionMode;\n\t\t}\n\n\t\tpublic runCoreEditorCommand(viewModel: IViewModel, args: Partial<BaseCommandOptions>): void {\n\t\t\tviewModel.model.pushStackElement();\n\t\t\tviewModel.setCursorStates(\n\t\t\t\targs.source,\n\t\t\t\tCursorChangeReason.Explicit,\n\t\t\t\tCursorMoveCommands.moveToBeginningOfBuffer(viewModel, viewModel.getCursorStates(), this._inSelectionMode)\n\t\t\t);\n\t\t\tviewModel.revealAllCursors(args.source, true);\n\t\t}\n\t}\n\n\texport const CursorTop: CoreEditorCommand<BaseCommandOptions> = registerEditorCommand(new TopCommand({\n\t\tinSelectionMode: false,\n\t\tid: 'cursorTop',\n\t\tprecondition: undefined,\n\t\tkbOpts: {\n\t\t\tweight: CORE_WEIGHT,\n\t\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\t\tprimary: KeyMod.CtrlCmd | KeyCode.Home,\n\t\t\tmac: { primary: KeyMod.CtrlCmd | KeyCode.UpArrow }\n\t\t}\n\t}));\n\n\texport const CursorTopSelect: CoreEditorCommand<BaseCommandOptions> = registerEditorCommand(new TopCommand({\n\t\tinSelectionMode: true,\n\t\tid: 'cursorTopSelect',\n\t\tprecondition: undefined,\n\t\tkbOpts: {\n\t\t\tweight: CORE_WEIGHT,\n\t\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\t\tprimary: KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.Home,\n\t\t\tmac: { primary: KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.UpArrow }\n\t\t}\n\t}));\n\n\tclass BottomCommand extends CoreEditorCommand<BaseCommandOptions> {\n\n\t\tprivate readonly _inSelectionMode: boolean;\n\n\t\tconstructor(opts: ICommandOptions & { inSelectionMode: boolean }) {\n\t\t\tsuper(opts);\n\t\t\tthis._inSelectionMode = opts.inSelectionMode;\n\t\t}\n\n\t\tpublic runCoreEditorCommand(viewModel: IViewModel, args: Partial<BaseCommandOptions>): void {\n\t\t\tviewModel.model.pushStackElement();\n\t\t\tviewModel.setCursorStates(\n\t\t\t\targs.source,\n\t\t\t\tCursorChangeReason.Explicit,\n\t\t\t\tCursorMoveCommands.moveToEndOfBuffer(viewModel, viewModel.getCursorStates(), this._inSelectionMode)\n\t\t\t);\n\t\t\tviewModel.revealAllCursors(args.source, true);\n\t\t}\n\t}\n\n\texport const CursorBottom: CoreEditorCommand<BaseCommandOptions> = registerEditorCommand(new BottomCommand({\n\t\tinSelectionMode: false,\n\t\tid: 'cursorBottom',\n\t\tprecondition: undefined,\n\t\tkbOpts: {\n\t\t\tweight: CORE_WEIGHT,\n\t\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\t\tprimary: KeyMod.CtrlCmd | KeyCode.End,\n\t\t\tmac: { primary: KeyMod.CtrlCmd | KeyCode.DownArrow }\n\t\t}\n\t}));\n\n\texport const CursorBottomSelect: CoreEditorCommand<BaseCommandOptions> = registerEditorCommand(new BottomCommand({\n\t\tinSelectionMode: true,\n\t\tid: 'cursorBottomSelect',\n\t\tprecondition: undefined,\n\t\tkbOpts: {\n\t\t\tweight: CORE_WEIGHT,\n\t\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\t\tprimary: KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.End,\n\t\t\tmac: { primary: KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.DownArrow }\n\t\t}\n\t}));\n\n\texport type EditorScrollCommandOptions = EditorScroll_.RawArguments & BaseCommandOptions;\n\n\texport class EditorScrollImpl extends CoreEditorCommand<EditorScrollCommandOptions> {\n\t\tconstructor() {\n\t\t\tsuper({\n\t\t\t\tid: 'editorScroll',\n\t\t\t\tprecondition: undefined,\n\t\t\t\tmetadata: EditorScroll_.metadata\n\t\t\t});\n\t\t}\n\n\t\tdetermineScrollMethod(args: EditorScroll_.ParsedArguments) {\n\t\t\tconst horizontalUnits = [EditorScroll_.Unit.Column];\n\t\t\tconst verticalUnits = [\n\t\t\t\tEditorScroll_.Unit.Line,\n\t\t\t\tEditorScroll_.Unit.WrappedLine,\n\t\t\t\tEditorScroll_.Unit.Page,\n\t\t\t\tEditorScroll_.Unit.HalfPage,\n\t\t\t\tEditorScroll_.Unit.Editor\n\t\t\t];\n\t\t\tconst horizontalDirections = [EditorScroll_.Direction.Left, EditorScroll_.Direction.Right];\n\t\t\tconst verticalDirections = [EditorScroll_.Direction.Up, EditorScroll_.Direction.Down];\n\n\t\t\tif (horizontalUnits.includes(args.unit) && horizontalDirections.includes(args.direction)) {\n\t\t\t\treturn this._runHorizontalEditorScroll.bind(this);\n\t\t\t}\n\t\t\tif (verticalUnits.includes(args.unit) && verticalDirections.includes(args.direction)) {\n\t\t\t\treturn this._runVerticalEditorScroll.bind(this);\n\t\t\t}\n\t\t\treturn null;\n\t\t}\n\n\t\tpublic runCoreEditorCommand(viewModel: IViewModel, args: Partial<EditorScrollCommandOptions>): void {\n\t\t\tconst parsed = EditorScroll_.parse(args);\n\t\t\tif (!parsed) {\n\t\t\t\t// illegal arguments\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst runEditorScroll = this.determineScrollMethod(parsed);\n\t\t\tif (!runEditorScroll) {\n\t\t\t\t// Incompatible unit and direction\n\t\t\t\treturn;\n\t\t\t}\n\t\t\trunEditorScroll(viewModel, args.source, parsed);\n\t\t}\n\n\t\t_runVerticalEditorScroll(viewModel: IViewModel, source: string | null | undefined, args: EditorScroll_.ParsedArguments): void {\n\n\t\t\tconst desiredScrollTop = this._computeDesiredScrollTop(viewModel, args);\n\n\t\t\tif (args.revealCursor) {\n\t\t\t\t// must ensure cursor is in new visible range\n\t\t\t\tconst desiredVisibleViewRange = viewModel.getCompletelyVisibleViewRangeAtScrollTop(desiredScrollTop);\n\t\t\t\tviewModel.setCursorStates(\n\t\t\t\t\tsource,\n\t\t\t\t\tCursorChangeReason.Explicit,\n\t\t\t\t\t[\n\t\t\t\t\t\tCursorMoveCommands.findPositionInViewportIfOutside(viewModel, viewModel.getPrimaryCursorState(), desiredVisibleViewRange, args.select)\n\t\t\t\t\t]\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tviewModel.viewLayout.setScrollPosition({ scrollTop: desiredScrollTop }, ScrollType.Smooth);\n\t\t}\n\n\t\tprivate _computeDesiredScrollTop(viewModel: IViewModel, args: EditorScroll_.ParsedArguments): number {\n\n\t\t\tif (args.unit === EditorScroll_.Unit.Line) {\n\t\t\t\t// scrolling by model lines\n\t\t\t\tconst futureViewport = viewModel.viewLayout.getFutureViewport();\n\t\t\t\tconst visibleViewRange = viewModel.getCompletelyVisibleViewRangeAtScrollTop(futureViewport.top);\n\t\t\t\tconst visibleModelRange = viewModel.coordinatesConverter.convertViewRangeToModelRange(visibleViewRange);\n\n\t\t\t\tlet desiredTopModelLineNumber: number;\n\t\t\t\tif (args.direction === EditorScroll_.Direction.Up) {\n\t\t\t\t\t// must go x model lines up\n\t\t\t\t\tdesiredTopModelLineNumber = Math.max(1, visibleModelRange.startLineNumber - args.value);\n\t\t\t\t} else {\n\t\t\t\t\t// must go x model lines down\n\t\t\t\t\tdesiredTopModelLineNumber = Math.min(viewModel.model.getLineCount(), visibleModelRange.startLineNumber + args.value);\n\t\t\t\t}\n\n\t\t\t\tconst viewPosition = viewModel.coordinatesConverter.convertModelPositionToViewPosition(new Position(desiredTopModelLineNumber, 1));\n\t\t\t\treturn viewModel.viewLayout.getVerticalOffsetForLineNumber(viewPosition.lineNumber);\n\t\t\t}\n\n\t\t\tif (args.unit === EditorScroll_.Unit.Editor) {\n\t\t\t\tlet desiredTopModelLineNumber = 0;\n\t\t\t\tif (args.direction === EditorScroll_.Direction.Down) {\n\t\t\t\t\tdesiredTopModelLineNumber = viewModel.model.getLineCount() - viewModel.cursorConfig.pageSize;\n\t\t\t\t}\n\t\t\t\treturn viewModel.viewLayout.getVerticalOffsetForLineNumber(desiredTopModelLineNumber);\n\t\t\t}\n\n\t\t\tlet noOfLines: number;\n\t\t\tif (args.unit === EditorScroll_.Unit.Page) {\n\t\t\t\tnoOfLines = viewModel.cursorConfig.pageSize * args.value;\n\t\t\t} else if (args.unit === EditorScroll_.Unit.HalfPage) {\n\t\t\t\tnoOfLines = Math.round(viewModel.cursorConfig.pageSize / 2) * args.value;\n\t\t\t} else {\n\t\t\t\tnoOfLines = args.value;\n\t\t\t}\n\t\t\tconst deltaLines = (args.direction === EditorScroll_.Direction.Up ? -1 : 1) * noOfLines;\n\t\t\treturn viewModel.viewLayout.getCurrentScrollTop() + deltaLines * viewModel.cursorConfig.lineHeight;\n\t\t}\n\n\t\t_runHorizontalEditorScroll(viewModel: IViewModel, source: string | null | undefined, args: EditorScroll_.ParsedArguments): void {\n\t\t\tconst desiredScrollLeft = this._computeDesiredScrollLeft(viewModel, args);\n\t\t\tviewModel.viewLayout.setScrollPosition({ scrollLeft: desiredScrollLeft }, ScrollType.Smooth);\n\t\t}\n\n\t\t_computeDesiredScrollLeft(viewModel: IViewModel, args: EditorScroll_.ParsedArguments) {\n\t\t\tconst deltaColumns = (args.direction === EditorScroll_.Direction.Left ? -1 : 1) * args.value;\n\t\t\treturn viewModel.viewLayout.getCurrentScrollLeft() + deltaColumns * viewModel.cursorConfig.typicalHalfwidthCharacterWidth;\n\t\t}\n\t}\n\n\texport const EditorScroll: EditorScrollImpl = registerEditorCommand(new EditorScrollImpl());\n\n\texport const ScrollLineUp: CoreEditorCommand<BaseCommandOptions> = registerEditorCommand(new class extends CoreEditorCommand<BaseCommandOptions> {\n\t\tconstructor() {\n\t\t\tsuper({\n\t\t\t\tid: 'scrollLineUp',\n\t\t\t\tprecondition: undefined,\n\t\t\t\tkbOpts: {\n\t\t\t\t\tweight: CORE_WEIGHT,\n\t\t\t\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\t\t\t\tprimary: KeyMod.CtrlCmd | KeyCode.UpArrow,\n\t\t\t\t\tmac: { primary: KeyMod.WinCtrl | KeyCode.PageUp }\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\trunCoreEditorCommand(viewModel: IViewModel, args: Partial<BaseCommandOptions>): void {\n\t\t\tEditorScroll.runCoreEditorCommand(viewModel, {\n\t\t\t\tto: EditorScroll_.RawDirection.Up,\n\t\t\t\tby: EditorScroll_.RawUnit.WrappedLine,\n\t\t\t\tvalue: 1,\n\t\t\t\trevealCursor: false,\n\t\t\t\tselect: false,\n\t\t\t\tsource: args.source\n\t\t\t});\n\t\t}\n\t});\n\n\texport const ScrollPageUp: CoreEditorCommand<BaseCommandOptions> = registerEditorCommand(new class extends CoreEditorCommand<BaseCommandOptions> {\n\t\tconstructor() {\n\t\t\tsuper({\n\t\t\t\tid: 'scrollPageUp',\n\t\t\t\tprecondition: undefined,\n\t\t\t\tkbOpts: {\n\t\t\t\t\tweight: CORE_WEIGHT,\n\t\t\t\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\t\t\t\tprimary: KeyMod.CtrlCmd | KeyCode.PageUp,\n\t\t\t\t\twin: { primary: KeyMod.Alt | KeyCode.PageUp },\n\t\t\t\t\tlinux: { primary: KeyMod.Alt | KeyCode.PageUp }\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\trunCoreEditorCommand(viewModel: IViewModel, args: Partial<BaseCommandOptions>): void {\n\t\t\tEditorScroll.runCoreEditorCommand(viewModel, {\n\t\t\t\tto: EditorScroll_.RawDirection.Up,\n\t\t\t\tby: EditorScroll_.RawUnit.Page,\n\t\t\t\tvalue: 1,\n\t\t\t\trevealCursor: false,\n\t\t\t\tselect: false,\n\t\t\t\tsource: args.source\n\t\t\t});\n\t\t}\n\t});\n\n\texport const ScrollEditorTop: CoreEditorCommand<BaseCommandOptions> = registerEditorCommand(new class extends CoreEditorCommand<BaseCommandOptions> {\n\t\tconstructor() {\n\t\t\tsuper({\n\t\t\t\tid: 'scrollEditorTop',\n\t\t\t\tprecondition: undefined,\n\t\t\t\tkbOpts: {\n\t\t\t\t\tweight: CORE_WEIGHT,\n\t\t\t\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\trunCoreEditorCommand(viewModel: IViewModel, args: Partial<BaseCommandOptions>): void {\n\t\t\tEditorScroll.runCoreEditorCommand(viewModel, {\n\t\t\t\tto: EditorScroll_.RawDirection.Up,\n\t\t\t\tby: EditorScroll_.RawUnit.Editor,\n\t\t\t\tvalue: 1,\n\t\t\t\trevealCursor: false,\n\t\t\t\tselect: false,\n\t\t\t\tsource: args.source\n\t\t\t});\n\t\t}\n\t});\n\n\texport const ScrollLineDown: CoreEditorCommand<BaseCommandOptions> = registerEditorCommand(new class extends CoreEditorCommand<BaseCommandOptions> {\n\t\tconstructor() {\n\t\t\tsuper({\n\t\t\t\tid: 'scrollLineDown',\n\t\t\t\tprecondition: undefined,\n\t\t\t\tkbOpts: {\n\t\t\t\t\tweight: CORE_WEIGHT,\n\t\t\t\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\t\t\t\tprimary: KeyMod.CtrlCmd | KeyCode.DownArrow,\n\t\t\t\t\tmac: { primary: KeyMod.WinCtrl | KeyCode.PageDown }\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\trunCoreEditorCommand(viewModel: IViewModel, args: Partial<BaseCommandOptions>): void {\n\t\t\tEditorScroll.runCoreEditorCommand(viewModel, {\n\t\t\t\tto: EditorScroll_.RawDirection.Down,\n\t\t\t\tby: EditorScroll_.RawUnit.WrappedLine,\n\t\t\t\tvalue: 1,\n\t\t\t\trevealCursor: false,\n\t\t\t\tselect: false,\n\t\t\t\tsource: args.source\n\t\t\t});\n\t\t}\n\t});\n\n\texport const ScrollPageDown: CoreEditorCommand<BaseCommandOptions> = registerEditorCommand(new class extends CoreEditorCommand<BaseCommandOptions> {\n\t\tconstructor() {\n\t\t\tsuper({\n\t\t\t\tid: 'scrollPageDown',\n\t\t\t\tprecondition: undefined,\n\t\t\t\tkbOpts: {\n\t\t\t\t\tweight: CORE_WEIGHT,\n\t\t\t\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\t\t\t\tprimary: KeyMod.CtrlCmd | KeyCode.PageDown,\n\t\t\t\t\twin: { primary: KeyMod.Alt | KeyCode.PageDown },\n\t\t\t\t\tlinux: { primary: KeyMod.Alt | KeyCode.PageDown }\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\trunCoreEditorCommand(viewModel: IViewModel, args: Partial<BaseCommandOptions>): void {\n\t\t\tEditorScroll.runCoreEditorCommand(viewModel, {\n\t\t\t\tto: EditorScroll_.RawDirection.Down,\n\t\t\t\tby: EditorScroll_.RawUnit.Page,\n\t\t\t\tvalue: 1,\n\t\t\t\trevealCursor: false,\n\t\t\t\tselect: false,\n\t\t\t\tsource: args.source\n\t\t\t});\n\t\t}\n\t});\n\n\texport const ScrollEditorBottom: CoreEditorCommand<BaseCommandOptions> = registerEditorCommand(new class extends CoreEditorCommand<BaseCommandOptions> {\n\t\tconstructor() {\n\t\t\tsuper({\n\t\t\t\tid: 'scrollEditorBottom',\n\t\t\t\tprecondition: undefined,\n\t\t\t\tkbOpts: {\n\t\t\t\t\tweight: CORE_WEIGHT,\n\t\t\t\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\trunCoreEditorCommand(viewModel: IViewModel, args: Partial<BaseCommandOptions>): void {\n\t\t\tEditorScroll.runCoreEditorCommand(viewModel, {\n\t\t\t\tto: EditorScroll_.RawDirection.Down,\n\t\t\t\tby: EditorScroll_.RawUnit.Editor,\n\t\t\t\tvalue: 1,\n\t\t\t\trevealCursor: false,\n\t\t\t\tselect: false,\n\t\t\t\tsource: args.source\n\t\t\t});\n\t\t}\n\t});\n\n\texport const ScrollLeft: CoreEditorCommand<BaseCommandOptions> = registerEditorCommand(new class extends CoreEditorCommand<BaseCommandOptions> {\n\t\tconstructor() {\n\t\t\tsuper({\n\t\t\t\tid: 'scrollLeft',\n\t\t\t\tprecondition: undefined,\n\t\t\t\tkbOpts: {\n\t\t\t\t\tweight: CORE_WEIGHT,\n\t\t\t\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\trunCoreEditorCommand(viewModel: IViewModel, args: Partial<BaseCommandOptions>): void {\n\t\t\tEditorScroll.runCoreEditorCommand(viewModel, {\n\t\t\t\tto: EditorScroll_.RawDirection.Left,\n\t\t\t\tby: EditorScroll_.RawUnit.Column,\n\t\t\t\tvalue: 2,\n\t\t\t\trevealCursor: false,\n\t\t\t\tselect: false,\n\t\t\t\tsource: args.source\n\t\t\t});\n\t\t}\n\t});\n\n\texport const ScrollRight: CoreEditorCommand<BaseCommandOptions> = registerEditorCommand(new class extends CoreEditorCommand<BaseCommandOptions> {\n\t\tconstructor() {\n\t\t\tsuper({\n\t\t\t\tid: 'scrollRight',\n\t\t\t\tprecondition: undefined,\n\t\t\t\tkbOpts: {\n\t\t\t\t\tweight: CORE_WEIGHT,\n\t\t\t\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\trunCoreEditorCommand(viewModel: IViewModel, args: Partial<BaseCommandOptions>): void {\n\t\t\tEditorScroll.runCoreEditorCommand(viewModel, {\n\t\t\t\tto: EditorScroll_.RawDirection.Right,\n\t\t\t\tby: EditorScroll_.RawUnit.Column,\n\t\t\t\tvalue: 2,\n\t\t\t\trevealCursor: false,\n\t\t\t\tselect: false,\n\t\t\t\tsource: args.source\n\t\t\t});\n\t\t}\n\t});\n\n\tclass WordCommand extends CoreEditorCommand<MoveCommandOptions> {\n\n\t\tprivate readonly _inSelectionMode: boolean;\n\n\t\tconstructor(opts: ICommandOptions & { inSelectionMode: boolean }) {\n\t\t\tsuper(opts);\n\t\t\tthis._inSelectionMode = opts.inSelectionMode;\n\t\t}\n\n\t\tpublic runCoreEditorCommand(viewModel: IViewModel, args: Partial<MoveCommandOptions>): void {\n\t\t\tif (!args.position) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tviewModel.model.pushStackElement();\n\t\t\tviewModel.setCursorStates(\n\t\t\t\targs.source,\n\t\t\t\tCursorChangeReason.Explicit,\n\t\t\t\t[\n\t\t\t\t\tCursorMoveCommands.word(viewModel, viewModel.getPrimaryCursorState(), this._inSelectionMode, args.position)\n\t\t\t\t]\n\t\t\t);\n\t\t\tif (args.revealType !== NavigationCommandRevealType.None) {\n\t\t\t\tviewModel.revealAllCursors(args.source, true, true);\n\t\t\t}\n\t\t}\n\t}\n\n\texport const WordSelect: CoreEditorCommand<MoveCommandOptions> = registerEditorCommand(new WordCommand({\n\t\tinSelectionMode: false,\n\t\tid: '_wordSelect',\n\t\tprecondition: undefined\n\t}));\n\n\texport const WordSelectDrag: CoreEditorCommand<MoveCommandOptions> = registerEditorCommand(new WordCommand({\n\t\tinSelectionMode: true,\n\t\tid: '_wordSelectDrag',\n\t\tprecondition: undefined\n\t}));\n\n\texport const LastCursorWordSelect: CoreEditorCommand<MoveCommandOptions> = registerEditorCommand(new class extends CoreEditorCommand<MoveCommandOptions> {\n\t\tconstructor() {\n\t\t\tsuper({\n\t\t\t\tid: 'lastCursorWordSelect',\n\t\t\t\tprecondition: undefined\n\t\t\t});\n\t\t}\n\n\t\tpublic runCoreEditorCommand(viewModel: IViewModel, args: Partial<MoveCommandOptions>): void {\n\t\t\tif (!args.position) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst lastAddedCursorIndex = viewModel.getLastAddedCursorIndex();\n\n\t\t\tconst states = viewModel.getCursorStates();\n\t\t\tconst newStates: PartialCursorState[] = states.slice(0);\n\t\t\tconst lastAddedState = states[lastAddedCursorIndex];\n\t\t\tnewStates[lastAddedCursorIndex] = CursorMoveCommands.word(viewModel, lastAddedState, lastAddedState.modelState.hasSelection(), args.position);\n\n\t\t\tviewModel.model.pushStackElement();\n\t\t\tviewModel.setCursorStates(\n\t\t\t\targs.source,\n\t\t\t\tCursorChangeReason.Explicit,\n\t\t\t\tnewStates\n\t\t\t);\n\t\t}\n\t});\n\n\tclass LineCommand extends CoreEditorCommand<MoveCommandOptions> {\n\t\tprivate readonly _inSelectionMode: boolean;\n\n\t\tconstructor(opts: ICommandOptions & { inSelectionMode: boolean }) {\n\t\t\tsuper(opts);\n\t\t\tthis._inSelectionMode = opts.inSelectionMode;\n\t\t}\n\n\t\tpublic runCoreEditorCommand(viewModel: IViewModel, args: Partial<MoveCommandOptions>): void {\n\t\t\tif (!args.position) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tviewModel.model.pushStackElement();\n\t\t\tviewModel.setCursorStates(\n\t\t\t\targs.source,\n\t\t\t\tCursorChangeReason.Explicit,\n\t\t\t\t[\n\t\t\t\t\tCursorMoveCommands.line(viewModel, viewModel.getPrimaryCursorState(), this._inSelectionMode, args.position, args.viewPosition)\n\t\t\t\t]\n\t\t\t);\n\t\t\tif (args.revealType !== NavigationCommandRevealType.None) {\n\t\t\t\tviewModel.revealAllCursors(args.source, false, true);\n\t\t\t}\n\t\t}\n\t}\n\n\texport const LineSelect: CoreEditorCommand<MoveCommandOptions> = registerEditorCommand(new LineCommand({\n\t\tinSelectionMode: false,\n\t\tid: '_lineSelect',\n\t\tprecondition: undefined\n\t}));\n\n\texport const LineSelectDrag: CoreEditorCommand<MoveCommandOptions> = registerEditorCommand(new LineCommand({\n\t\tinSelectionMode: true,\n\t\tid: '_lineSelectDrag',\n\t\tprecondition: undefined\n\t}));\n\n\tclass LastCursorLineCommand extends CoreEditorCommand<MoveCommandOptions> {\n\t\tprivate readonly _inSelectionMode: boolean;\n\n\t\tconstructor(opts: ICommandOptions & { inSelectionMode: boolean }) {\n\t\t\tsuper(opts);\n\t\t\tthis._inSelectionMode = opts.inSelectionMode;\n\t\t}\n\n\t\tpublic runCoreEditorCommand(viewModel: IViewModel, args: Partial<MoveCommandOptions>): void {\n\t\t\tif (!args.position) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst lastAddedCursorIndex = viewModel.getLastAddedCursorIndex();\n\n\t\t\tconst states = viewModel.getCursorStates();\n\t\t\tconst newStates: PartialCursorState[] = states.slice(0);\n\t\t\tnewStates[lastAddedCursorIndex] = CursorMoveCommands.line(viewModel, states[lastAddedCursorIndex], this._inSelectionMode, args.position, args.viewPosition);\n\n\t\t\tviewModel.model.pushStackElement();\n\t\t\tviewModel.setCursorStates(\n\t\t\t\targs.source,\n\t\t\t\tCursorChangeReason.Explicit,\n\t\t\t\tnewStates\n\t\t\t);\n\t\t}\n\t}\n\n\texport const LastCursorLineSelect: CoreEditorCommand<MoveCommandOptions> = registerEditorCommand(new LastCursorLineCommand({\n\t\tinSelectionMode: false,\n\t\tid: 'lastCursorLineSelect',\n\t\tprecondition: undefined\n\t}));\n\n\texport const LastCursorLineSelectDrag: CoreEditorCommand<MoveCommandOptions> = registerEditorCommand(new LastCursorLineCommand({\n\t\tinSelectionMode: true,\n\t\tid: 'lastCursorLineSelectDrag',\n\t\tprecondition: undefined\n\t}));\n\n\texport const CancelSelection: CoreEditorCommand<BaseCommandOptions> = registerEditorCommand(new class extends CoreEditorCommand<BaseCommandOptions> {\n\t\tconstructor() {\n\t\t\tsuper({\n\t\t\t\tid: 'cancelSelection',\n\t\t\t\tprecondition: EditorContextKeys.hasNonEmptySelection,\n\t\t\t\tkbOpts: {\n\t\t\t\t\tweight: CORE_WEIGHT,\n\t\t\t\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\t\t\t\tprimary: KeyCode.Escape,\n\t\t\t\t\tsecondary: [KeyMod.Shift | KeyCode.Escape]\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tpublic runCoreEditorCommand(viewModel: IViewModel, args: Partial<BaseCommandOptions>): void {\n\t\t\tviewModel.model.pushStackElement();\n\t\t\tviewModel.setCursorStates(\n\t\t\t\targs.source,\n\t\t\t\tCursorChangeReason.Explicit,\n\t\t\t\t[\n\t\t\t\t\tCursorMoveCommands.cancelSelection(viewModel, viewModel.getPrimaryCursorState())\n\t\t\t\t]\n\t\t\t);\n\t\t\tviewModel.revealAllCursors(args.source, true);\n\t\t}\n\t});\n\n\texport const RemoveSecondaryCursors: CoreEditorCommand<BaseCommandOptions> = registerEditorCommand(new class extends CoreEditorCommand<BaseCommandOptions> {\n\t\tconstructor() {\n\t\t\tsuper({\n\t\t\t\tid: 'removeSecondaryCursors',\n\t\t\t\tprecondition: EditorContextKeys.hasMultipleSelections,\n\t\t\t\tkbOpts: {\n\t\t\t\t\tweight: CORE_WEIGHT + 1,\n\t\t\t\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\t\t\t\tprimary: KeyCode.Escape,\n\t\t\t\t\tsecondary: [KeyMod.Shift | KeyCode.Escape]\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tpublic runCoreEditorCommand(viewModel: IViewModel, args: Partial<BaseCommandOptions>): void {\n\t\t\tviewModel.model.pushStackElement();\n\t\t\tviewModel.setCursorStates(\n\t\t\t\targs.source,\n\t\t\t\tCursorChangeReason.Explicit,\n\t\t\t\t[\n\t\t\t\t\tviewModel.getPrimaryCursorState()\n\t\t\t\t]\n\t\t\t);\n\t\t\tviewModel.revealAllCursors(args.source, true);\n\t\t\tstatus(nls.localize('removedCursor', \"Removed secondary cursors\"));\n\t\t}\n\t});\n\n\texport type RevealLineCommandOptions = RevealLine_.RawArguments & BaseCommandOptions;\n\n\texport const RevealLine: CoreEditorCommand<RevealLineCommandOptions> = registerEditorCommand(new class extends CoreEditorCommand<RevealLineCommandOptions> {\n\t\tconstructor() {\n\t\t\tsuper({\n\t\t\t\tid: 'revealLine',\n\t\t\t\tprecondition: undefined,\n\t\t\t\tmetadata: RevealLine_.metadata\n\t\t\t});\n\t\t}\n\n\t\tpublic runCoreEditorCommand(viewModel: IViewModel, args: Partial<RevealLineCommandOptions>): void {\n\t\t\tconst revealLineArg = args;\n\t\t\tconst lineNumberArg = revealLineArg.lineNumber || 0;\n\t\t\tlet lineNumber = typeof lineNumberArg === 'number' ? (lineNumberArg + 1) : (parseInt(lineNumberArg) + 1);\n\t\t\tif (lineNumber < 1) {\n\t\t\t\tlineNumber = 1;\n\t\t\t}\n\t\t\tconst lineCount = viewModel.model.getLineCount();\n\t\t\tif (lineNumber > lineCount) {\n\t\t\t\tlineNumber = lineCount;\n\t\t\t}\n\n\t\t\tconst range = new Range(\n\t\t\t\tlineNumber, 1,\n\t\t\t\tlineNumber, viewModel.model.getLineMaxColumn(lineNumber)\n\t\t\t);\n\n\t\t\tlet revealAt = VerticalRevealType.Simple;\n\t\t\tif (revealLineArg.at) {\n\t\t\t\tswitch (revealLineArg.at) {\n\t\t\t\t\tcase RevealLine_.RawAtArgument.Top:\n\t\t\t\t\t\trevealAt = VerticalRevealType.Top;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase RevealLine_.RawAtArgument.Center:\n\t\t\t\t\t\trevealAt = VerticalRevealType.Center;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase RevealLine_.RawAtArgument.Bottom:\n\t\t\t\t\t\trevealAt = VerticalRevealType.Bottom;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst viewRange = viewModel.coordinatesConverter.convertModelRangeToViewRange(range);\n\n\t\t\tviewModel.revealRange(args.source, false, viewRange, revealAt, ScrollType.Smooth);\n\t\t}\n\t});\n\n\texport const SelectAll = new class extends EditorOrNativeTextInputCommand {\n\t\tconstructor() {\n\t\t\tsuper(SelectAllCommand);\n\t\t}\n\t\tpublic runDOMCommand(activeElement: Element): void {\n\t\t\tif (isFirefox) {\n\t\t\t\t(<HTMLInputElement>activeElement).focus();\n\t\t\t\t(<HTMLInputElement>activeElement).select();\n\t\t\t}\n\n\t\t\tactiveElement.ownerDocument.execCommand('selectAll');\n\t\t}\n\t\tpublic runEditorCommand(accessor: ServicesAccessor, editor: ICodeEditor, args: unknown): void {\n\t\t\tconst viewModel = editor._getViewModel();\n\t\t\tif (!viewModel) {\n\t\t\t\t// the editor has no view => has no cursors\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.runCoreEditorCommand(viewModel, args);\n\t\t}\n\t\tpublic runCoreEditorCommand(viewModel: IViewModel, args: unknown): void {\n\t\t\tviewModel.model.pushStackElement();\n\t\t\tviewModel.setCursorStates(\n\t\t\t\t'keyboard',\n\t\t\t\tCursorChangeReason.Explicit,\n\t\t\t\t[\n\t\t\t\t\tCursorMoveCommands.selectAll(viewModel, viewModel.getPrimaryCursorState())\n\t\t\t\t]\n\t\t\t);\n\t\t}\n\t}();\n\n\texport interface SetSelectionCommandOptions extends BaseCommandOptions {\n\t\tselection: ISelection;\n\t}\n\n\texport const SetSelection: CoreEditorCommand<SetSelectionCommandOptions> = registerEditorCommand(new class extends CoreEditorCommand<SetSelectionCommandOptions> {\n\t\tconstructor() {\n\t\t\tsuper({\n\t\t\t\tid: 'setSelection',\n\t\t\t\tprecondition: undefined\n\t\t\t});\n\t\t}\n\n\t\tpublic runCoreEditorCommand(viewModel: IViewModel, args: Partial<SetSelectionCommandOptions>): void {\n\t\t\tif (!args.selection) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tviewModel.model.pushStackElement();\n\t\t\tviewModel.setCursorStates(\n\t\t\t\targs.source,\n\t\t\t\tCursorChangeReason.Explicit,\n\t\t\t\t[\n\t\t\t\t\tCursorState.fromModelSelection(args.selection)\n\t\t\t\t]\n\t\t\t);\n\t\t}\n\t});\n}\n\nconst columnSelectionCondition = ContextKeyExpr.and(\n\tEditorContextKeys.textInputFocus,\n\tEditorContextKeys.columnSelection\n);\nfunction registerColumnSelection(id: string, keybinding: number): void {\n\tKeybindingsRegistry.registerKeybindingRule({\n\t\tid: id,\n\t\tprimary: keybinding,\n\t\twhen: columnSelectionCondition,\n\t\tweight: CORE_WEIGHT + 1\n\t});\n}\n\nregisterColumnSelection(CoreNavigationCommands.CursorColumnSelectLeft.id, KeyMod.Shift | KeyCode.LeftArrow);\nregisterColumnSelection(CoreNavigationCommands.CursorColumnSelectRight.id, KeyMod.Shift | KeyCode.RightArrow);\nregisterColumnSelection(CoreNavigationCommands.CursorColumnSelectUp.id, KeyMod.Shift | KeyCode.UpArrow);\nregisterColumnSelection(CoreNavigationCommands.CursorColumnSelectPageUp.id, KeyMod.Shift | KeyCode.PageUp);\nregisterColumnSelection(CoreNavigationCommands.CursorColumnSelectDown.id, KeyMod.Shift | KeyCode.DownArrow);\nregisterColumnSelection(CoreNavigationCommands.CursorColumnSelectPageDown.id, KeyMod.Shift | KeyCode.PageDown);\n\nfunction registerCommand<T extends Command>(command: T): T {\n\tcommand.register();\n\treturn command;\n}\n\nexport namespace CoreEditingCommands {\n\n\texport abstract class CoreEditingCommand extends EditorCommand {\n\t\tpublic runEditorCommand(accessor: ServicesAccessor, editor: ICodeEditor, args: unknown): void {\n\t\t\tconst viewModel = editor._getViewModel();\n\t\t\tif (!viewModel) {\n\t\t\t\t// the editor has no view => has no cursors\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.runCoreEditingCommand(editor, viewModel, args || {});\n\t\t}\n\n\t\tpublic abstract runCoreEditingCommand(editor: ICodeEditor, viewModel: IViewModel, args: unknown): void;\n\t}\n\n\texport const LineBreakInsert: EditorCommand = registerEditorCommand(new class extends CoreEditingCommand {\n\t\tconstructor() {\n\t\t\tsuper({\n\t\t\t\tid: 'lineBreakInsert',\n\t\t\t\tprecondition: EditorContextKeys.writable,\n\t\t\t\tkbOpts: {\n\t\t\t\t\tweight: CORE_WEIGHT,\n\t\t\t\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\t\t\t\tprimary: 0,\n\t\t\t\t\tmac: { primary: KeyMod.WinCtrl | KeyCode.KeyO }\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tpublic runCoreEditingCommand(editor: ICodeEditor, viewModel: IViewModel, args: unknown): void {\n\t\t\teditor.pushUndoStop();\n\t\t\teditor.executeCommands(this.id, EnterOperation.lineBreakInsert(viewModel.cursorConfig, viewModel.model, viewModel.getCursorStates().map(s => s.modelState.selection)));\n\t\t}\n\t});\n\n\texport const Outdent: EditorCommand = registerEditorCommand(new class extends CoreEditingCommand {\n\t\tconstructor() {\n\t\t\tsuper({\n\t\t\t\tid: 'outdent',\n\t\t\t\tprecondition: EditorContextKeys.writable,\n\t\t\t\tkbOpts: {\n\t\t\t\t\tweight: CORE_WEIGHT,\n\t\t\t\t\tkbExpr: ContextKeyExpr.and(\n\t\t\t\t\t\tEditorContextKeys.editorTextFocus,\n\t\t\t\t\t\tEditorContextKeys.tabDoesNotMoveFocus\n\t\t\t\t\t),\n\t\t\t\t\tprimary: KeyMod.Shift | KeyCode.Tab\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tpublic runCoreEditingCommand(editor: ICodeEditor, viewModel: IViewModel, args: unknown): void {\n\t\t\teditor.pushUndoStop();\n\t\t\teditor.executeCommands(this.id, TypeOperations.outdent(viewModel.cursorConfig, viewModel.model, viewModel.getCursorStates().map(s => s.modelState.selection)));\n\t\t\teditor.pushUndoStop();\n\t\t}\n\t});\n\n\texport const Tab: EditorCommand = registerEditorCommand(new class extends CoreEditingCommand {\n\t\tconstructor() {\n\t\t\tsuper({\n\t\t\t\tid: 'tab',\n\t\t\t\tprecondition: EditorContextKeys.writable,\n\t\t\t\tkbOpts: {\n\t\t\t\t\tweight: CORE_WEIGHT,\n\t\t\t\t\tkbExpr: ContextKeyExpr.and(\n\t\t\t\t\t\tEditorContextKeys.editorTextFocus,\n\t\t\t\t\t\tEditorContextKeys.tabDoesNotMoveFocus\n\t\t\t\t\t),\n\t\t\t\t\tprimary: KeyCode.Tab\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tpublic runCoreEditingCommand(editor: ICodeEditor, viewModel: IViewModel, args: unknown): void {\n\t\t\teditor.pushUndoStop();\n\t\t\teditor.executeCommands(this.id, TypeOperations.tab(viewModel.cursorConfig, viewModel.model, viewModel.getCursorStates().map(s => s.modelState.selection)));\n\t\t\teditor.pushUndoStop();\n\t\t}\n\t});\n\n\texport const DeleteLeft: EditorCommand = registerEditorCommand(new class extends CoreEditingCommand {\n\t\tconstructor() {\n\t\t\tsuper({\n\t\t\t\tid: 'deleteLeft',\n\t\t\t\tprecondition: undefined,\n\t\t\t\tkbOpts: {\n\t\t\t\t\tweight: CORE_WEIGHT,\n\t\t\t\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\t\t\t\tprimary: KeyCode.Backspace,\n\t\t\t\t\tsecondary: [KeyMod.Shift | KeyCode.Backspace],\n\t\t\t\t\tmac: { primary: KeyCode.Backspace, secondary: [KeyMod.Shift | KeyCode.Backspace, KeyMod.WinCtrl | KeyCode.KeyH, KeyMod.WinCtrl | KeyCode.Backspace] }\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tpublic runCoreEditingCommand(editor: ICodeEditor, viewModel: IViewModel, args: unknown): void {\n\t\t\tconst [shouldPushStackElementBefore, commands] = DeleteOperations.deleteLeft(viewModel.getPrevEditOperationType(), viewModel.cursorConfig, viewModel.model, viewModel.getCursorStates().map(s => s.modelState.selection), viewModel.getCursorAutoClosedCharacters());\n\t\t\tif (shouldPushStackElementBefore) {\n\t\t\t\teditor.pushUndoStop();\n\t\t\t}\n\t\t\teditor.executeCommands(this.id, commands);\n\t\t\tviewModel.setPrevEditOperationType(EditOperationType.DeletingLeft);\n\t\t}\n\t});\n\n\texport const DeleteRight: EditorCommand = registerEditorCommand(new class extends CoreEditingCommand {\n\t\tconstructor() {\n\t\t\tsuper({\n\t\t\t\tid: 'deleteRight',\n\t\t\t\tprecondition: undefined,\n\t\t\t\tkbOpts: {\n\t\t\t\t\tweight: CORE_WEIGHT,\n\t\t\t\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\t\t\t\tprimary: KeyCode.Delete,\n\t\t\t\t\tmac: { primary: KeyCode.Delete, secondary: [KeyMod.WinCtrl | KeyCode.KeyD, KeyMod.WinCtrl | KeyCode.Delete] }\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tpublic runCoreEditingCommand(editor: ICodeEditor, viewModel: IViewModel, args: unknown): void {\n\t\t\tconst [shouldPushStackElementBefore, commands] = DeleteOperations.deleteRight(viewModel.getPrevEditOperationType(), viewModel.cursorConfig, viewModel.model, viewModel.getCursorStates().map(s => s.modelState.selection));\n\t\t\tif (shouldPushStackElementBefore) {\n\t\t\t\teditor.pushUndoStop();\n\t\t\t}\n\t\t\teditor.executeCommands(this.id, commands);\n\t\t\tviewModel.setPrevEditOperationType(EditOperationType.DeletingRight);\n\t\t}\n\t});\n\n\texport const Undo = new class extends EditorOrNativeTextInputCommand {\n\t\tconstructor() {\n\t\t\tsuper(UndoCommand);\n\t\t}\n\t\tpublic runDOMCommand(activeElement: Element): void {\n\t\t\tactiveElement.ownerDocument.execCommand('undo');\n\t\t}\n\t\tpublic runEditorCommand(accessor: ServicesAccessor, editor: ICodeEditor, args: unknown): void | Promise<void> {\n\t\t\tif (!editor.hasModel() || editor.getOption(EditorOption.readOnly) === true) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\treturn editor.getModel().undo();\n\t\t}\n\t}();\n\n\texport const Redo = new class extends EditorOrNativeTextInputCommand {\n\t\tconstructor() {\n\t\t\tsuper(RedoCommand);\n\t\t}\n\t\tpublic runDOMCommand(activeElement: Element): void {\n\t\t\tactiveElement.ownerDocument.execCommand('redo');\n\t\t}\n\t\tpublic runEditorCommand(accessor: ServicesAccessor, editor: ICodeEditor, args: unknown): void | Promise<void> {\n\t\t\tif (!editor.hasModel() || editor.getOption(EditorOption.readOnly) === true) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\treturn editor.getModel().redo();\n\t\t}\n\t}();\n}\n\n/**\n * A command that will invoke a command on the focused editor.\n */\nclass EditorHandlerCommand extends Command {\n\n\tprivate readonly _handlerId: string;\n\n\tconstructor(id: string, handlerId: string, metadata?: ICommandMetadata) {\n\t\tsuper({\n\t\t\tid: id,\n\t\t\tprecondition: undefined,\n\t\t\tmetadata\n\t\t});\n\t\tthis._handlerId = handlerId;\n\t}\n\n\tpublic runCommand(accessor: ServicesAccessor, args: unknown): void {\n\t\tconst editor = accessor.get(ICodeEditorService).getFocusedCodeEditor();\n\t\tif (!editor) {\n\t\t\treturn;\n\t\t}\n\n\t\teditor.trigger('keyboard', this._handlerId, args);\n\t}\n}\n\nfunction registerOverwritableCommand(handlerId: string, metadata?: ICommandMetadata): void {\n\tregisterCommand(new EditorHandlerCommand('default:' + handlerId, handlerId));\n\tregisterCommand(new EditorHandlerCommand(handlerId, handlerId, metadata));\n}\n\nregisterOverwritableCommand(Handler.Type, {\n\tdescription: `Type`,\n\targs: [{\n\t\tname: 'args',\n\t\tschema: {\n\t\t\t'type': 'object',\n\t\t\t'required': ['text'],\n\t\t\t'properties': {\n\t\t\t\t'text': {\n\t\t\t\t\t'type': 'string'\n\t\t\t\t}\n\t\t\t},\n\t\t}\n\t}]\n});\nregisterOverwritableCommand(Handler.ReplacePreviousChar);\nregisterOverwritableCommand(Handler.CompositionType);\nregisterOverwritableCommand(Handler.CompositionStart);\nregisterOverwritableCommand(Handler.CompositionEnd);\nregisterOverwritableCommand(Handler.Paste);\nregisterOverwritableCommand(Handler.Cut);\n"]}
|