{"version":3,"file":"grapes.min.js","mappings":"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","sources":["webpack://grapesjs/webpack/universalModuleDefinition","webpack://grapesjs/./node_modules/@babel/runtime/regenerator/index.js","webpack://grapesjs/./node_modules/backbone-undo/Backbone.Undo.js","webpack://grapesjs/./node_modules/backbone/backbone.js","webpack://grapesjs/./node_modules/codemirror-formatting/formatting.js","webpack://grapesjs/./node_modules/codemirror/lib/codemirror.js","webpack://grapesjs/./node_modules/codemirror/mode/css/css.js","webpack://grapesjs/./node_modules/codemirror/mode/htmlmixed/htmlmixed.js","webpack://grapesjs/./node_modules/codemirror/mode/javascript/javascript.js","webpack://grapesjs/./node_modules/codemirror/mode/xml/xml.js","webpack://grapesjs/./src/asset_manager/config/config.js","webpack://grapesjs/./src/asset_manager/model/Asset.js","webpack://grapesjs/./src/asset_manager/model/AssetImage.js","webpack://grapesjs/./src/asset_manager/view/AssetView.js","webpack://grapesjs/./src/asset_manager/view/AssetImageView.js","webpack://grapesjs/./src/asset_manager/model/Assets.js","webpack://grapesjs/./src/asset_manager/view/AssetsView.js","webpack://grapesjs/./src/asset_manager/view/FileUploader.js","webpack://grapesjs/./src/asset_manager/index.js","webpack://grapesjs/./src/block_manager/config/config.js","webpack://grapesjs/./src/block_manager/model/Block.js","webpack://grapesjs/./src/block_manager/model/Blocks.js","webpack://grapesjs/./src/block_manager/model/Category.js","webpack://grapesjs/./src/block_manager/model/Categories.js","webpack://grapesjs/./src/block_manager/view/BlockView.js","webpack://grapesjs/./src/block_manager/view/CategoryView.js","webpack://grapesjs/./src/block_manager/view/BlocksView.js","webpack://grapesjs/./src/block_manager/index.js","webpack://grapesjs/./src/canvas/config/config.js","webpack://grapesjs/./src/canvas/model/Canvas.js","webpack://grapesjs/./src/utils/Droppable.js","webpack://grapesjs/./src/canvas/view/FrameView.js","webpack://grapesjs/./src/canvas/view/FrameWrapView.js","webpack://grapesjs/./src/canvas/view/FramesView.js","webpack://grapesjs/./src/canvas/view/CanvasView.js","webpack://grapesjs/./src/canvas/index.js","webpack://grapesjs/./src/canvas/model/Frame.js","webpack://grapesjs/./src/canvas/model/Frames.js","webpack://grapesjs/./src/code_manager/config/config.js","webpack://grapesjs/./src/code_manager/model/HtmlGenerator.js","webpack://grapesjs/./src/code_manager/model/JsonGenerator.js","webpack://grapesjs/./src/code_manager/model/JsGenerator.js","webpack://grapesjs/./src/code_manager/model/CodeMirrorEditor.js","webpack://grapesjs/./src/code_manager/view/EditorView.js","webpack://grapesjs/./src/code_manager/index.js","webpack://grapesjs/./src/code_manager/model/CssGenerator.js","webpack://grapesjs/./src/commands/config/config.js","webpack://grapesjs/./src/commands/index.js","webpack://grapesjs/./src/commands/view/CanvasClear.js","webpack://grapesjs/./src/commands/view/CanvasMove.js","webpack://grapesjs/./src/commands/view/CommandAbstract.js","webpack://grapesjs/./src/commands/view/ComponentDelete.js","webpack://grapesjs/./src/commands/view/ComponentDrag.js","webpack://grapesjs/./src/commands/view/ComponentEnter.js","webpack://grapesjs/./src/commands/view/ComponentExit.js","webpack://grapesjs/./src/commands/view/ComponentNext.js","webpack://grapesjs/./src/commands/view/ComponentPrev.js","webpack://grapesjs/./src/commands/view/ComponentStyleClear.js","webpack://grapesjs/./src/commands/view/CopyComponent.js","webpack://grapesjs/./src/commands/view/DeleteComponent.js","webpack://grapesjs/./src/commands/view/ExportTemplate.js","webpack://grapesjs/./src/commands/view/Fullscreen.js","webpack://grapesjs/./src/commands/view/MoveComponent.js","webpack://grapesjs/./src/commands/view/OpenAssets.js","webpack://grapesjs/./src/commands/view/OpenBlocks.js","webpack://grapesjs/./src/commands/view/OpenLayers.js","webpack://grapesjs/./src/commands/view/OpenStyleManager.js","webpack://grapesjs/./src/commands/view/OpenTraitManager.js","webpack://grapesjs/./src/commands/view/PasteComponent.js","webpack://grapesjs/./src/commands/view/Preview.js","webpack://grapesjs/./src/commands/view/Resize.js","webpack://grapesjs/./src/dom_components/view/ToolbarButtonView.js","webpack://grapesjs/./src/dom_components/view/ToolbarView.js","webpack://grapesjs/./src/dom_components/model/ToolbarButton.js","webpack://grapesjs/./src/dom_components/model/Toolbar.js","webpack://grapesjs/./src/commands/view/SelectComponent.js","webpack://grapesjs/./src/commands/view/SelectPosition.js","webpack://grapesjs/./src/commands/view/ShowOffset.js","webpack://grapesjs/./src/commands/view/SwitchVisibility.js","webpack://grapesjs/./src/common/module.js","webpack://grapesjs/./src/css_composer/config/config.js","webpack://grapesjs/./src/css_composer/model/CssRule.js","webpack://grapesjs/./src/css_composer/model/CssRules.js","webpack://grapesjs/./src/css_composer/index.js","webpack://grapesjs/./src/css_composer/view/CssRuleView.js","webpack://grapesjs/./src/css_composer/view/CssGroupRuleView.js","webpack://grapesjs/./src/css_composer/view/CssRulesView.js","webpack://grapesjs/./src/device_manager/config/config.js","webpack://grapesjs/./src/device_manager/model/Device.js","webpack://grapesjs/./src/device_manager/model/Devices.js","webpack://grapesjs/./src/device_manager/view/DevicesView.js","webpack://grapesjs/./src/device_manager/index.js","webpack://grapesjs/./src/dom_components/config/config.js","webpack://grapesjs/./src/dom_components/view/ComponentWrapperView.js","webpack://grapesjs/./src/dom_components/model/ComponentTableCell.js","webpack://grapesjs/./src/dom_components/view/ComponentTableCellView.js","webpack://grapesjs/./src/dom_components/model/ComponentTableRow.js","webpack://grapesjs/./src/dom_components/view/ComponentTableRowView.js","webpack://grapesjs/./src/dom_components/model/ComponentTable.js","webpack://grapesjs/./src/dom_components/view/ComponentTableView.js","webpack://grapesjs/./src/dom_components/model/ComponentTableBody.js","webpack://grapesjs/./src/dom_components/model/ComponentTableHead.js","webpack://grapesjs/./src/dom_components/view/ComponentTableHeadView.js","webpack://grapesjs/./src/dom_components/view/ComponentTableBodyView.js","webpack://grapesjs/./src/dom_components/model/ComponentTableFoot.js","webpack://grapesjs/./src/dom_components/view/ComponentTableFootView.js","webpack://grapesjs/./src/dom_components/model/ComponentImage.js","webpack://grapesjs/./src/dom_components/model/ComponentMap.js","webpack://grapesjs/./src/dom_components/view/ComponentImageView.js","webpack://grapesjs/./src/dom_components/view/ComponentMapView.js","webpack://grapesjs/./src/dom_components/model/ComponentText.js","webpack://grapesjs/./src/dom_components/model/ComponentLink.js","webpack://grapesjs/./src/dom_components/view/ComponentTextView.js","webpack://grapesjs/./src/dom_components/view/ComponentLinkView.js","webpack://grapesjs/./src/dom_components/model/ComponentLabel.js","webpack://grapesjs/./src/dom_components/view/ComponentLabelView.js","webpack://grapesjs/./src/dom_components/model/ComponentVideo.js","webpack://grapesjs/./src/dom_components/view/ComponentVideoView.js","webpack://grapesjs/./src/dom_components/model/ComponentScript.js","webpack://grapesjs/./src/dom_components/view/ComponentScriptView.js","webpack://grapesjs/./src/dom_components/model/ComponentSvg.js","webpack://grapesjs/./src/dom_components/model/ComponentSvgIn.js","webpack://grapesjs/./src/dom_components/view/ComponentSvgView.js","webpack://grapesjs/./src/dom_components/model/ComponentTextNode.js","webpack://grapesjs/./src/dom_components/model/ComponentComment.js","webpack://grapesjs/./src/dom_components/view/ComponentTextNodeView.js","webpack://grapesjs/./src/dom_components/view/ComponentCommentView.js","webpack://grapesjs/./src/dom_components/model/ComponentWrapper.js","webpack://grapesjs/./src/dom_components/model/ComponentFrame.js","webpack://grapesjs/./src/dom_components/view/ComponentFrameView.js","webpack://grapesjs/./src/dom_components/index.js","webpack://grapesjs/./src/trait_manager/model/Trait.js","webpack://grapesjs/./src/trait_manager/model/Traits.js","webpack://grapesjs/./src/trait_manager/model/TraitFactory.js","webpack://grapesjs/./src/dom_components/model/Component.js","webpack://grapesjs/./src/dom_components/model/Components.js","webpack://grapesjs/./src/dom_components/view/ComponentView.js","webpack://grapesjs/./src/dom_components/view/ComponentsView.js","webpack://grapesjs/./src/domain_abstract/model/Styleable.js","webpack://grapesjs/./src/domain_abstract/model/TypeableCollection.js","webpack://grapesjs/./src/domain_abstract/ui/Input.js","webpack://grapesjs/./src/domain_abstract/ui/InputColor.js","webpack://grapesjs/./src/utils/ColorPicker.js","webpack://grapesjs/./src/domain_abstract/ui/InputNumber.js","webpack://grapesjs/./src/domain_abstract/view/DomainViews.js","webpack://grapesjs/./src/i18n/locale/en.js","webpack://grapesjs/./src/i18n/config.js","webpack://grapesjs/./src/i18n/index.js","webpack://grapesjs/./src/utils/keymaster.js","webpack://grapesjs/./src/keymaps/index.js","webpack://grapesjs/./src/modal_dialog/config/config.js","webpack://grapesjs/./src/modal_dialog/model/Modal.js","webpack://grapesjs/./src/modal_dialog/view/ModalView.js","webpack://grapesjs/./src/modal_dialog/index.js","webpack://grapesjs/./src/navigator/config/config.js","webpack://grapesjs/./src/navigator/view/ItemView.js","webpack://grapesjs/./src/navigator/index.js","webpack://grapesjs/./src/navigator/view/ItemsView.js","webpack://grapesjs/./src/pages/model/Page.js","webpack://grapesjs/./src/pages/model/Pages.js","webpack://grapesjs/./src/pages/index.js","webpack://grapesjs/./src/panels/config/config.js","webpack://grapesjs/./src/panels/model/Panel.js","webpack://grapesjs/./src/panels/model/Panels.js","webpack://grapesjs/./src/panels/view/ButtonView.js","webpack://grapesjs/./src/panels/view/ButtonsView.js","webpack://grapesjs/./src/panels/view/PanelView.js","webpack://grapesjs/./src/panels/view/PanelsView.js","webpack://grapesjs/./src/panels/index.js","webpack://grapesjs/./src/panels/model/Button.js","webpack://grapesjs/./src/panels/model/Buttons.js","webpack://grapesjs/./src/parser/config/config.js","webpack://grapesjs/./src/parser/model/BrowserParserCss.js","webpack://grapesjs/./src/parser/model/ParserCss.js","webpack://grapesjs/./src/parser/index.js","webpack://grapesjs/./src/parser/model/BrowserParserHtml.js","webpack://grapesjs/./src/parser/model/ParserHtml.js","webpack://grapesjs/./src/rich_text_editor/model/RichTextEditor.js","webpack://grapesjs/./src/rich_text_editor/config/config.js","webpack://grapesjs/./src/rich_text_editor/index.js","webpack://grapesjs/./src/selector_manager/config/config.js","webpack://grapesjs/./src/selector_manager/model/State.js","webpack://grapesjs/./src/selector_manager/view/ClassTagView.js","webpack://grapesjs/./src/selector_manager/view/ClassTagsView.js","webpack://grapesjs/./src/selector_manager/index.js","webpack://grapesjs/./src/selector_manager/model/Selector.js","webpack://grapesjs/./src/selector_manager/model/Selectors.js","webpack://grapesjs/./src/storage_manager/config/config.js","webpack://grapesjs/./src/storage_manager/model/LocalStorage.js","webpack://grapesjs/./src/storage_manager/model/RemoteStorage.js","webpack://grapesjs/./src/storage_manager/index.js","webpack://grapesjs/./src/style_manager/config/config.js","webpack://grapesjs/./src/style_manager/model/Property.js","webpack://grapesjs/./src/style_manager/model/PropertyComposite.js","webpack://grapesjs/./src/style_manager/model/Layer.js","webpack://grapesjs/./src/style_manager/model/Layers.js","webpack://grapesjs/./src/style_manager/model/PropertyStack.js","webpack://grapesjs/./src/style_manager/view/PropertyView.js","webpack://grapesjs/./src/style_manager/view/PropertiesView.js","webpack://grapesjs/./src/style_manager/view/PropertyCompositeView.js","webpack://grapesjs/./src/style_manager/view/LayerView.js","webpack://grapesjs/./src/style_manager/view/LayersView.js","webpack://grapesjs/./src/style_manager/view/PropertyStackView.js","webpack://grapesjs/./src/style_manager/view/PropertyFileView.js","webpack://grapesjs/./src/style_manager/view/PropertyNumberView.js","webpack://grapesjs/./src/style_manager/view/PropertyColorView.js","webpack://grapesjs/./src/style_manager/model/PropertySelect.js","webpack://grapesjs/./src/style_manager/view/PropertySelectView.js","webpack://grapesjs/./src/style_manager/model/PropertyRadio.js","webpack://grapesjs/./src/style_manager/view/PropertyRadioView.js","webpack://grapesjs/./src/style_manager/model/PropertyNumber.js","webpack://grapesjs/./src/style_manager/model/PropertySlider.js","webpack://grapesjs/./src/style_manager/view/PropertySliderView.js","webpack://grapesjs/./src/style_manager/model/Properties.js","webpack://grapesjs/./src/style_manager/model/Sector.js","webpack://grapesjs/./src/style_manager/model/Sectors.js","webpack://grapesjs/./src/style_manager/model/PropertyFactory.js","webpack://grapesjs/./src/style_manager/view/SectorView.js","webpack://grapesjs/./src/style_manager/view/SectorsView.js","webpack://grapesjs/./src/style_manager/index.js","webpack://grapesjs/./src/trait_manager/config/config.js","webpack://grapesjs/./src/trait_manager/view/TraitView.js","webpack://grapesjs/./src/trait_manager/view/TraitsView.js","webpack://grapesjs/./src/trait_manager/view/TraitSelectView.js","webpack://grapesjs/./src/trait_manager/view/TraitCheckboxView.js","webpack://grapesjs/./src/trait_manager/view/TraitNumberView.js","webpack://grapesjs/./src/trait_manager/view/TraitColorView.js","webpack://grapesjs/./src/trait_manager/view/TraitButtonView.js","webpack://grapesjs/./src/trait_manager/index.js","webpack://grapesjs/./src/undo_manager/index.js","webpack://grapesjs/./src/utils/Dragger.js","webpack://grapesjs/./src/utils/cash-dom.js","webpack://grapesjs/./src/utils/dom.js","webpack://grapesjs/./node_modules/promise-polyfill/src/finally.js","webpack://grapesjs/./node_modules/promise-polyfill/src/allSettled.js","webpack://grapesjs/./node_modules/promise-polyfill/src/index.js","webpack://grapesjs/./src/utils/fetch.js","webpack://grapesjs/./src/utils/html.js","webpack://grapesjs/./src/utils/Sorter.js","webpack://grapesjs/./src/utils/Resizer.js","webpack://grapesjs/./src/utils/index.js","webpack://grapesjs/./src/utils/mixins.js","webpack://grapesjs/./node_modules/regenerator-runtime/runtime.js","webpack://grapesjs//Users/artur/Sites/grapes/src/commands/view|sync|/^\\.\\/.*$/","webpack://grapesjs/./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack://grapesjs/./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","webpack://grapesjs/./node_modules/@babel/runtime/helpers/esm/classCallCheck.js","webpack://grapesjs/./node_modules/@babel/runtime/helpers/esm/createClass.js","webpack://grapesjs/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://grapesjs/./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","webpack://grapesjs/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://grapesjs/./node_modules/@babel/runtime/helpers/esm/inherits.js","webpack://grapesjs/./node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","webpack://grapesjs/./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack://grapesjs/./node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","webpack://grapesjs/./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack://grapesjs/./node_modules/@babel/runtime/helpers/esm/slicedToArray.js","webpack://grapesjs/./node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","webpack://grapesjs/./node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","webpack://grapesjs/./node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","webpack://grapesjs/./node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js","webpack://grapesjs/./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","webpack://grapesjs/./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","webpack://grapesjs/./node_modules/@babel/runtime/helpers/esm/iterableToArray.js","webpack://grapesjs/./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","webpack://grapesjs/./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://grapesjs/./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack://grapesjs/./node_modules/underscore/modules/_setup.js","webpack://grapesjs/./node_modules/underscore/modules/restArguments.js","webpack://grapesjs/./node_modules/underscore/modules/isObject.js","webpack://grapesjs/./node_modules/underscore/modules/isNull.js","webpack://grapesjs/./node_modules/underscore/modules/isUndefined.js","webpack://grapesjs/./node_modules/underscore/modules/isBoolean.js","webpack://grapesjs/./node_modules/underscore/modules/isElement.js","webpack://grapesjs/./node_modules/underscore/modules/_tagTester.js","webpack://grapesjs/./node_modules/underscore/modules/isString.js","webpack://grapesjs/./node_modules/underscore/modules/isNumber.js","webpack://grapesjs/./node_modules/underscore/modules/isDate.js","webpack://grapesjs/./node_modules/underscore/modules/isRegExp.js","webpack://grapesjs/./node_modules/underscore/modules/isError.js","webpack://grapesjs/./node_modules/underscore/modules/isSymbol.js","webpack://grapesjs/./node_modules/underscore/modules/isArrayBuffer.js","webpack://grapesjs/./node_modules/underscore/modules/isFunction.js","webpack://grapesjs/./node_modules/underscore/modules/_hasObjectTag.js","webpack://grapesjs/./node_modules/underscore/modules/_stringTagBug.js","webpack://grapesjs/./node_modules/underscore/modules/isDataView.js","webpack://grapesjs/./node_modules/underscore/modules/isArray.js","webpack://grapesjs/./node_modules/underscore/modules/_has.js","webpack://grapesjs/./node_modules/underscore/modules/isArguments.js","webpack://grapesjs/./node_modules/underscore/modules/isFinite.js","webpack://grapesjs/./node_modules/underscore/modules/isNaN.js","webpack://grapesjs/./node_modules/underscore/modules/constant.js","webpack://grapesjs/./node_modules/underscore/modules/_createSizePropertyCheck.js","webpack://grapesjs/./node_modules/underscore/modules/_shallowProperty.js","webpack://grapesjs/./node_modules/underscore/modules/_getByteLength.js","webpack://grapesjs/./node_modules/underscore/modules/_isBufferLike.js","webpack://grapesjs/./node_modules/underscore/modules/isTypedArray.js","webpack://grapesjs/./node_modules/underscore/modules/_getLength.js","webpack://grapesjs/./node_modules/underscore/modules/_collectNonEnumProps.js","webpack://grapesjs/./node_modules/underscore/modules/keys.js","webpack://grapesjs/./node_modules/underscore/modules/isEmpty.js","webpack://grapesjs/./node_modules/underscore/modules/isMatch.js","webpack://grapesjs/./node_modules/underscore/modules/underscore.js","webpack://grapesjs/./node_modules/underscore/modules/_toBufferView.js","webpack://grapesjs/./node_modules/underscore/modules/isEqual.js","webpack://grapesjs/./node_modules/underscore/modules/allKeys.js","webpack://grapesjs/./node_modules/underscore/modules/_methodFingerprint.js","webpack://grapesjs/./node_modules/underscore/modules/isMap.js","webpack://grapesjs/./node_modules/underscore/modules/isWeakMap.js","webpack://grapesjs/./node_modules/underscore/modules/isSet.js","webpack://grapesjs/./node_modules/underscore/modules/isWeakSet.js","webpack://grapesjs/./node_modules/underscore/modules/values.js","webpack://grapesjs/./node_modules/underscore/modules/pairs.js","webpack://grapesjs/./node_modules/underscore/modules/invert.js","webpack://grapesjs/./node_modules/underscore/modules/functions.js","webpack://grapesjs/./node_modules/underscore/modules/_createAssigner.js","webpack://grapesjs/./node_modules/underscore/modules/extend.js","webpack://grapesjs/./node_modules/underscore/modules/extendOwn.js","webpack://grapesjs/./node_modules/underscore/modules/defaults.js","webpack://grapesjs/./node_modules/underscore/modules/_baseCreate.js","webpack://grapesjs/./node_modules/underscore/modules/create.js","webpack://grapesjs/./node_modules/underscore/modules/clone.js","webpack://grapesjs/./node_modules/underscore/modules/tap.js","webpack://grapesjs/./node_modules/underscore/modules/toPath.js","webpack://grapesjs/./node_modules/underscore/modules/_toPath.js","webpack://grapesjs/./node_modules/underscore/modules/_deepGet.js","webpack://grapesjs/./node_modules/underscore/modules/get.js","webpack://grapesjs/./node_modules/underscore/modules/has.js","webpack://grapesjs/./node_modules/underscore/modules/identity.js","webpack://grapesjs/./node_modules/underscore/modules/matcher.js","webpack://grapesjs/./node_modules/underscore/modules/property.js","webpack://grapesjs/./node_modules/underscore/modules/_optimizeCb.js","webpack://grapesjs/./node_modules/underscore/modules/_baseIteratee.js","webpack://grapesjs/./node_modules/underscore/modules/iteratee.js","webpack://grapesjs/./node_modules/underscore/modules/_cb.js","webpack://grapesjs/./node_modules/underscore/modules/mapObject.js","webpack://grapesjs/./node_modules/underscore/modules/noop.js","webpack://grapesjs/./node_modules/underscore/modules/propertyOf.js","webpack://grapesjs/./node_modules/underscore/modules/times.js","webpack://grapesjs/./node_modules/underscore/modules/random.js","webpack://grapesjs/./node_modules/underscore/modules/now.js","webpack://grapesjs/./node_modules/underscore/modules/_createEscaper.js","webpack://grapesjs/./node_modules/underscore/modules/_escapeMap.js","webpack://grapesjs/./node_modules/underscore/modules/escape.js","webpack://grapesjs/./node_modules/underscore/modules/unescape.js","webpack://grapesjs/./node_modules/underscore/modules/_unescapeMap.js","webpack://grapesjs/./node_modules/underscore/modules/templateSettings.js","webpack://grapesjs/./node_modules/underscore/modules/template.js","webpack://grapesjs/./node_modules/underscore/modules/result.js","webpack://grapesjs/./node_modules/underscore/modules/uniqueId.js","webpack://grapesjs/./node_modules/underscore/modules/chain.js","webpack://grapesjs/./node_modules/underscore/modules/_executeBound.js","webpack://grapesjs/./node_modules/underscore/modules/partial.js","webpack://grapesjs/./node_modules/underscore/modules/bind.js","webpack://grapesjs/./node_modules/underscore/modules/_isArrayLike.js","webpack://grapesjs/./node_modules/underscore/modules/_flatten.js","webpack://grapesjs/./node_modules/underscore/modules/bindAll.js","webpack://grapesjs/./node_modules/underscore/modules/memoize.js","webpack://grapesjs/./node_modules/underscore/modules/delay.js","webpack://grapesjs/./node_modules/underscore/modules/defer.js","webpack://grapesjs/./node_modules/underscore/modules/throttle.js","webpack://grapesjs/./node_modules/underscore/modules/debounce.js","webpack://grapesjs/./node_modules/underscore/modules/wrap.js","webpack://grapesjs/./node_modules/underscore/modules/negate.js","webpack://grapesjs/./node_modules/underscore/modules/compose.js","webpack://grapesjs/./node_modules/underscore/modules/after.js","webpack://grapesjs/./node_modules/underscore/modules/before.js","webpack://grapesjs/./node_modules/underscore/modules/once.js","webpack://grapesjs/./node_modules/underscore/modules/findKey.js","webpack://grapesjs/./node_modules/underscore/modules/_createPredicateIndexFinder.js","webpack://grapesjs/./node_modules/underscore/modules/findIndex.js","webpack://grapesjs/./node_modules/underscore/modules/findLastIndex.js","webpack://grapesjs/./node_modules/underscore/modules/sortedIndex.js","webpack://grapesjs/./node_modules/underscore/modules/_createIndexFinder.js","webpack://grapesjs/./node_modules/underscore/modules/indexOf.js","webpack://grapesjs/./node_modules/underscore/modules/lastIndexOf.js","webpack://grapesjs/./node_modules/underscore/modules/find.js","webpack://grapesjs/./node_modules/underscore/modules/findWhere.js","webpack://grapesjs/./node_modules/underscore/modules/each.js","webpack://grapesjs/./node_modules/underscore/modules/map.js","webpack://grapesjs/./node_modules/underscore/modules/_createReduce.js","webpack://grapesjs/./node_modules/underscore/modules/reduce.js","webpack://grapesjs/./node_modules/underscore/modules/reduceRight.js","webpack://grapesjs/./node_modules/underscore/modules/filter.js","webpack://grapesjs/./node_modules/underscore/modules/reject.js","webpack://grapesjs/./node_modules/underscore/modules/every.js","webpack://grapesjs/./node_modules/underscore/modules/some.js","webpack://grapesjs/./node_modules/underscore/modules/contains.js","webpack://grapesjs/./node_modules/underscore/modules/invoke.js","webpack://grapesjs/./node_modules/underscore/modules/pluck.js","webpack://grapesjs/./node_modules/underscore/modules/where.js","webpack://grapesjs/./node_modules/underscore/modules/max.js","webpack://grapesjs/./node_modules/underscore/modules/min.js","webpack://grapesjs/./node_modules/underscore/modules/sample.js","webpack://grapesjs/./node_modules/underscore/modules/shuffle.js","webpack://grapesjs/./node_modules/underscore/modules/sortBy.js","webpack://grapesjs/./node_modules/underscore/modules/_group.js","webpack://grapesjs/./node_modules/underscore/modules/groupBy.js","webpack://grapesjs/./node_modules/underscore/modules/indexBy.js","webpack://grapesjs/./node_modules/underscore/modules/countBy.js","webpack://grapesjs/./node_modules/underscore/modules/partition.js","webpack://grapesjs/./node_modules/underscore/modules/toArray.js","webpack://grapesjs/./node_modules/underscore/modules/size.js","webpack://grapesjs/./node_modules/underscore/modules/_keyInObj.js","webpack://grapesjs/./node_modules/underscore/modules/pick.js","webpack://grapesjs/./node_modules/underscore/modules/omit.js","webpack://grapesjs/./node_modules/underscore/modules/initial.js","webpack://grapesjs/./node_modules/underscore/modules/first.js","webpack://grapesjs/./node_modules/underscore/modules/rest.js","webpack://grapesjs/./node_modules/underscore/modules/last.js","webpack://grapesjs/./node_modules/underscore/modules/compact.js","webpack://grapesjs/./node_modules/underscore/modules/flatten.js","webpack://grapesjs/./node_modules/underscore/modules/difference.js","webpack://grapesjs/./node_modules/underscore/modules/without.js","webpack://grapesjs/./node_modules/underscore/modules/uniq.js","webpack://grapesjs/./node_modules/underscore/modules/union.js","webpack://grapesjs/./node_modules/underscore/modules/intersection.js","webpack://grapesjs/./node_modules/underscore/modules/unzip.js","webpack://grapesjs/./node_modules/underscore/modules/zip.js","webpack://grapesjs/./node_modules/underscore/modules/object.js","webpack://grapesjs/./node_modules/underscore/modules/range.js","webpack://grapesjs/./node_modules/underscore/modules/chunk.js","webpack://grapesjs/./node_modules/underscore/modules/_chainResult.js","webpack://grapesjs/./node_modules/underscore/modules/mixin.js","webpack://grapesjs/./node_modules/underscore/modules/underscore-array-methods.js","webpack://grapesjs/./node_modules/underscore/modules/index-default.js","webpack://grapesjs/webpack/bootstrap","webpack://grapesjs/webpack/runtime/compat get default export","webpack://grapesjs/webpack/runtime/define property getters","webpack://grapesjs/webpack/runtime/global","webpack://grapesjs/webpack/runtime/hasOwnProperty shorthand","webpack://grapesjs/webpack/runtime/make namespace object","webpack://grapesjs/./src/editor/config/config.js","webpack://grapesjs/./src/editor/model/Selected.js","webpack://grapesjs/./src/editor/model/Editor.js","webpack://grapesjs/./src/utils/extender.js","webpack://grapesjs/./src/editor/view/EditorView.js","webpack://grapesjs/./src/editor/index.js","webpack://grapesjs/./src/plugin_manager/config/config.js","webpack://grapesjs/./src/utils/polyfills.js","webpack://grapesjs/./src/index.js","webpack://grapesjs/./src/plugin_manager/index.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"grapesjs\"] = factory();\n\telse\n\t\troot[\"grapesjs\"] = factory();\n})(typeof globalThis !== 'undefined' ? globalThis : (typeof window !== 'undefined' ? window : this), function() {\nreturn ","module.exports = require(\"regenerator-runtime\");\n","/*!\n * Backbone.Undo.js v0.2\n * \n * Copyright (c)2013 Oliver Sartun\n * Released under the MIT License\n *\n * Documentation and full license available at\n * https://github.com/osartun/Backbone.Undo.js\n */\n\n\n(function (factory) {\n\tif (typeof define === \"function\" && define.amd) {\n\t\t// AMD support\n\t\tdefine([\"underscore\", \"backbone\"], factory);\n\t} else if (typeof exports !== 'undefined') {\n\t\t// CommonJS support\n\t\tmodule.exports = factory(\n\t\t\trequire(\"underscore\"),\n\t\t\trequire(\"backbone\")\n\t\t);\n\t} else {\n\t\t// Non-modular execution\n\t\tfactory(_, Backbone);\n }\n})(function (_, Backbone) {\n\n\tvar core_slice = Array.prototype.slice;\n\n\t/**\n\t * As call is faster than apply, this is a faster version of apply as it uses call.\n\t * \n\t * @param {Function} fn \tThe function to execute \n\t * @param {Object} ctx \tThe context the function should be called in\n\t * @param {Array} args \tThe array of arguments that should be applied to the function\n\t * @return Forwards whatever the called function returns\n\t */\n\tfunction apply (fn, ctx, args) {\n\t\treturn args.length <= 4 ?\n\t\t\tfn.call(ctx, args[0], args[1], args[2], args[3]) :\n\t\t\tfn.apply(ctx, args);\n\t}\n\n\t/**\n\t * Uses slice on an array or an array-like object.\n\t * \n\t * @param {Array|Object} \tarr \tThe array or array-like object.\n\t * @param {Number} \t\t[index]\tThe index from where the array should be sliced. Default is 0.\n\t * @return {Array} The sliced array\n\t */\n\tfunction slice (arr, index) {\n\t\treturn core_slice.call(arr, index);\n\t}\n\n\t/**\n\t * Checks if an object has one or more specific keys. The keys \n\t * don't have to be an owned property.\n\t * You can call this function either this way:\n\t * hasKeys(obj, [\"a\", \"b\", \"c\"])\n\t * or this way:\n\t * hasKeys(obj, \"a\", \"b\", \"c\")\n\t * \n\t * @param {Object} \tobj \tThe object to check on\n\t * @param {Array} \tkeys \tThe keys to check for\n\t * @return {Boolean} True, if the object has all those keys\n\t */\n\tfunction hasKeys (obj, keys) {\n\t\tif (obj == null) return false;\n\t\tif (!_.isArray(keys)) {\n\t\t\tkeys = slice(arguments, 1);\n\t\t}\n\t\treturn _.all(keys, function (key) {\n\t\t\treturn key in obj;\n\t\t});\n\t}\n\n\t/**\n\t * Returns a number that is unique per call stack. The number gets \n\t * changed after the call stack has been completely processed.\n\t * \n\t * @return {number} MagicFusionIndex\n\t */\n\tvar getMagicFusionIndex = (function () {\n\t\t// If you add several models to a collection or set several\n\t\t// attributes on a model all in sequence and yet all for\n\t\t// example in one function, then several Undo-Actions are\n\t\t// generated.\n\t\t// If you want to undo your last action only the last model\n\t\t// would be removed from the collection or the last set\n\t\t// attribute would be changed back to its previous value.\n\t\t// To prevent that we have to figure out a way to combine\n\t\t// all those actions that happened \"at the same time\". \n\t\t// Timestamps aren't exact enough. A complex routine could \n\t\t// run several milliseconds and in that time produce a lot \n\t\t// of actions with different timestamps.\n\t\t// Instead we take advantage of the single-threadedness of\n\t\t// JavaScript:\n\n\t\tvar callstackWasIndexed = false, magicFusionIndex = -1;\n\t\tfunction indexCycle() {\n\t\t\tmagicFusionIndex++;\n\t\t\tcallstackWasIndexed = true;\n\t\t\t_.defer(function () {\n\t\t\t\t// Here comes the magic. With a Timeout of 0 \n\t\t\t\t// milliseconds this function gets called whenever\n\t\t\t\t// the current callstack is completed\n\t\t\t\tcallstackWasIndexed = false;\n\t\t\t})\n\t\t}\n\t\treturn function () {\n\t\t\tif (!callstackWasIndexed) {\n\t\t\t\tindexCycle();\n\t\t\t}\n\t\t\treturn magicFusionIndex;\n\t\t}\n\t})();\n\n\t/**\n\t * To prevent binding a listener several times to one \n\t * object, we register the objects in an ObjectRegistry\n\t *\n\t * @constructor\n\t */\n\tfunction ObjectRegistry () {\n\t\t// This uses two different ways of storing\n\t\t// objects: In case the object has a cid\n\t\t// (which Backbone objects typically have)\n\t\t// it uses this cid as an index. That way\n\t\t// the Array's length attribute doesn't \n\t\t// change and the object isn't an item \n\t\t// in the array, but an object-property.\n\t\t// Otherwise it's added to the Array as an\n\t\t// item.\n\t\t// That way we can use the fast property-\n\t\t// lookup and only have to fall back to \n\t\t// iterating over the array in case \n\t\t// non-Backbone-objects are registered.\n\t\tthis.registeredObjects = [];\n\t\t// To return a list of all registered \n\t\t// objects in the 'get' method we have to\n\t\t// store the objects that have a cid in\n\t\t// an additional array. \n\t\tthis.cidIndexes = [];\n\t}\n\tObjectRegistry.prototype = {\n\t\t/**\n\t\t * Returns whether the object is already registered in this ObjectRegistry or not.\n\t\t * \n\t\t * @this \t{ObjectRegistry}\n\t\t * @param \t{Object} \t\t obj \tThe object to check\n\t\t * @return \t{Boolean} True if the object is already registered\n\t\t */\n\t\tisRegistered: function (obj) {\n\t\t\t// This is where we get a performance boost \n\t\t\t// by using the two different ways of storing \n\t\t\t// objects.\n\t\t\treturn obj && obj.cid ? this.registeredObjects[obj.cid] : _.contains(this.registeredObjects, obj);\n\t\t},\n\t\t/**\n\t\t * Registers an object in this ObjectRegistry.\n\t\t * \n\t\t * @this \t{ObjectRegistry}\n\t\t * @param \t{Object} \t\t obj \tThe object to register\n\t\t * @return \t{undefined}\n\t\t */\n\t\tregister: function (obj) {\n\t\t\tif (!this.isRegistered(obj)) {\n\t\t\t\tif (obj && obj.cid) {\n\t\t\t\t\tthis.registeredObjects[obj.cid] = obj;\n\t\t\t\t\tthis.cidIndexes.push(obj.cid);\n\t\t\t\t} else {\n\t\t\t\t\tthis.registeredObjects.push(obj);\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\t/**\n\t\t * Unregisters an object from this ObjectRegistry.\n\t\t * \n\t\t * @this {ObjectRegistry}\n\t\t * @param {Object} obj The object to unregister\n\t\t * @return {undefined}\n\t\t */\n\t\tunregister: function (obj) {\n\t\t\tif (this.isRegistered(obj)) {\n\t\t\t\tif (obj && obj.cid) {\n\t\t\t\t\tdelete this.registeredObjects[obj.cid];\n\t\t\t\t\tthis.cidIndexes.splice(_.indexOf(this.cidIndexes, obj.cid), 1);\n\t\t\t\t} else {\n\t\t\t\t\tvar i = _.indexOf(this.registeredObjects, obj);\n\t\t\t\t\tthis.registeredObjects.splice(i, 1);\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\t/**\n\t\t * Returns an array of all objects that are currently in this ObjectRegistry.\n\t\t * \n\t\t * @return {Array} An array of all the objects which are currently in the ObjectRegistry\n\t\t */\n\t\tget: function () {\n\t\t\treturn (_.map(this.cidIndexes, function (cid) {return this.registeredObjects[cid];}, this)).concat(this.registeredObjects);\n\t\t}\n\t}\n\n\t/**\n\t * Binds or unbinds the \"all\"-listener for one or more objects.\n\t * \n\t * @param {String} which \tEither \"on\" or \"off\"\n\t * @param {Object[]} objects \tArray of the objects on which the \"all\"-listener should be bound / unbound to\n\t * @param {Function} [fn] \t\tThe function that should be bound / unbound. Optional in case of \"off\"\n\t * @param {Object} [ctx] \tThe context the function should be called in\n\t * @return {undefined}\n\t */\n\tfunction onoff(which, objects, fn, ctx) {\n\t\tfor (var i = 0, l = objects.length, obj; i < l; i++) {\n\t\t\tobj = objects[i];\n\t\t\tif (!obj) continue;\n\t\t\tif (which === \"on\") {\n\t\t\t\tif (!ctx.objectRegistry.register(obj)) {\n\t\t\t\t\t// register returned false, so obj was already registered\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (!ctx.objectRegistry.unregister(obj)) {\n\t\t\t\t\t// unregister returned false, so obj wasn't registered\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (_.isFunction(obj[which])) {\n\t\t\t\tobj[which](\"all\", fn, ctx);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Calls the undo/redo-function for a specific action.\n\t * \n\t * @param {String} which \tEither \"undo\" or \"redo\"\n\t * @param {Object} action \tThe Action's attributes\n\t * @return {undefined}\n\t */\n\tfunction actionUndoRedo (which, action) {\n\t\tvar type = action.type, undoTypes = action.undoTypes, fn = !undoTypes[type] || undoTypes[type][which];\n\t\tif (_.isFunction(fn)) {\n\t\t\tfn(action.object, action.before, action.after, action.options);\n\t\t}\n\t}\n\n\t/**\n\t * The main undo/redo function.\n\t *\n\t * @param {String} \t\twhich \t Either \"undo\" or \"redo\"\n\t * @param {UndoManager} \tmanager\t The UndoManager-instance on which an \"undo\"/\"redo\"-Event is triggered afterwards\n\t * @param {UndoStack} \t\tstack \t The UndoStack on which we perform\n\t * @param {Boolean} \t\tmagic \t If true, undoes / redoes all actions with the same magicFusionIndex\n\t * @param {Boolean} \t\teverything If true, undoes / redoes every action that had been tracked\n\t * @return {undefined}\n\t */\n\tfunction managerUndoRedo (which, manager, stack, magic, everything) {\n\t\tif (stack.isCurrentlyUndoRedoing || \n\t\t\t(which === \"undo\" && stack.pointer === -1) ||\n\t\t\t(which === \"redo\" && stack.pointer === stack.length - 1)) {\n\t\t\t// We're either currently in an undo- / redo-process or \n\t\t\t// we reached the end of the stack\n\t\t\treturn;\n\t\t}\n\t\tstack.isCurrentlyUndoRedoing = true;\n\t\tvar action, actions, isUndo = which === \"undo\";\n\t\tif (everything) {\n\t\t\t// Undo / Redo all steps until you reach the stack's beginning / end\n\t\t\tactions = isUndo && stack.pointer === stack.length - 1 || // If at the stack's end calling undo\n\t\t\t\t\t !isUndo && stack.pointer === -1 ? // or at the stack's beginning calling redo\n\t\t\t\t\t _.clone(stack.models) : // => Take all the models. Otherwise:\n\t\t\t\t\t core_slice.apply(stack.models, isUndo ? [0, stack.pointer] : [stack.pointer, stack.length - 1]);\n\t\t} else {\n\t\t\t// Undo / Redo only one step\n\t\t\taction = stack.at(isUndo ? stack.pointer : stack.pointer + 1);\n\t\t\tactions = magic ? stack.where({\"magicFusionIndex\": action.get(\"magicFusionIndex\")}) : [action];\n\t\t}\n\t\t\n\t\tstack.pointer += (isUndo ? -1 : 1) * actions.length;\n\t\twhile (action = isUndo ? actions.pop() : actions.shift()) {\n\t\t\t// Here we're calling the Action's undo / redo method\n\t\t\taction[which]();\n\t\t}\n\t\tstack.isCurrentlyUndoRedoing = false;\n\n\t\tmanager.trigger(which, manager);\n\t}\n\n\t/**\n\t * Checks whether an UndoAction should be created or not. Therefore it checks\n\t * whether a \"condition\" property is set in the undoTypes-object of the specific\n\t * event type. If not, it returns true. If it's set and a boolean, it returns it.\n\t * If it's a function, it returns its result, converting it into a boolean. \n\t * Otherwise it returns true.\n\t * \n\t * @param {Object} \tundoTypesType \tThe object within the UndoTypes that holds the function for this event type (i.e. \"change\")\n\t * @param {Arguments} \targs \t\tThe arguments the \"condition\" function is called with\n\t * @return {Boolean} \tTrue, if an UndoAction should be created\n\t */\n\tfunction validateUndoActionCreation (undoTypesType, args) {\n\t\tvar condition = undoTypesType.condition, type = typeof condition;\n\t\treturn type === \"function\" ? !!apply(condition, undoTypesType, args) :\n\t\t\ttype === \"boolean\" ? condition : true;\n\t}\n\n\t/**\n\t * Adds an Undo-Action to the stack.\n\t * \n\t * @param {UndoStack} \t\tstack \t\tThe undostack the action should be added to.\n\t * @param {String} \t\t\ttype \t\tThe event type (i.e. \"change\")\n\t * @param {Arguments} \t\targs \t\tThe arguments passed to the undoTypes' \"on\"-handler\n\t * @param {OwnedUndoTypes} \tundoTypes \tThe undoTypes-object which has the \"on\"-handler\n\t * @return {undefined}\n\t */\n\tfunction addToStack(stack, type, args, undoTypes) {\n\t\tif (stack.track && !stack.isCurrentlyUndoRedoing && type in undoTypes &&\n\t\t\tvalidateUndoActionCreation(undoTypes[type], args)) {\n\t\t\t// An UndoAction should be created\n\t\t\tvar res = apply(undoTypes[type][\"on\"], undoTypes[type], args), diff;\n\t\t\tif (hasKeys(res, \"object\", \"before\", \"after\")) {\n\t\t\t\tres.type = type;\n\t\t\t\tres.magicFusionIndex = getMagicFusionIndex();\n\t\t\t\tres.undoTypes = undoTypes;\n\t\t\t\tif (stack.pointer < stack.length - 1) {\n\t\t\t\t\t// New Actions must always be added to the end of the stack.\n\t\t\t\t\t// If the pointer is not pointed to the last action in the\n\t\t\t\t\t// stack, presumably because actions were undone before, then\n\t\t\t\t\t// all following actions must be discarded\n\t\t\t\t\tvar diff = stack.length - stack.pointer - 1;\n\t\t\t\t\twhile (diff--) {\n\t\t\t\t\t\tstack.pop();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstack.pointer = stack.length;\n\t\t\t\tstack.add(res);\n\t\t\t\tif (stack.length > stack.maximumStackLength) {\n\t\t\t\t\tstack.shift();\n\t\t\t\t\tstack.pointer--;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\n\t/**\n\t * Predefined UndoTypes object with default handlers for the most common events.\n\t * @type {Object}\n\t */\n\tvar UndoTypes = {\n\t\t\"add\": {\n\t\t\t\"undo\": function (collection, ignore, model, options) {\n\t\t\t\t// Undo add = remove\n\t\t\t\tcollection.remove(model, options);\n\t\t\t},\n\t\t\t\"redo\": function (collection, ignore, model, options) {\n\t\t\t\t// Redo add = add\n\t\t\t\tif (options.index) {\n\t\t\t\t\toptions.at = options.index;\n\t\t\t\t}\n\t\t\t\tcollection.add(model, options);\n\t\t\t},\n\t\t\t\"on\": function (model, collection, options) {\n\t\t\t\treturn {\n\t\t\t\t\tobject: collection,\n\t\t\t\t\tbefore: undefined,\n\t\t\t\t\tafter: model,\n\t\t\t\t\toptions: _.clone(options)\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\t\t\"remove\": {\n\t\t\t\"undo\": function (collection, model, ignore, options) {\n\t\t\t\tif (\"index\" in options) {\n\t\t\t\t\toptions.at = options.index;\n\t\t\t\t}\n\t\t\t\tcollection.add(model, options);\n\t\t\t},\n\t\t\t\"redo\": function (collection, model, ignore, options) {\n\t\t\t\tcollection.remove(model, options);\n\t\t\t},\n\t\t\t\"on\": function (model, collection, options) {\n\t\t\t\treturn {\n\t\t\t\t\tobject: collection,\n\t\t\t\t\tbefore: model,\n\t\t\t\t\tafter: undefined,\n\t\t\t\t\toptions: _.clone(options)\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\t\t\"change\": {\n\t\t\t\"undo\": function (model, before, after, options) {\n\t\t\t\tif (_.isEmpty(before)) {\n\t\t\t\t\t_.each(_.keys(after), model.unset, model);\n\t\t\t\t} else {\n\t\t\t\t\tmodel.set(before);\n\t\t\t\t\tif (options && options.unsetData && options.unsetData.before && options.unsetData.before.length) {\n\t\t\t\t\t\t_.each(options.unsetData.before, model.unset, model);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"redo\": function (model, before, after, options) {\n\t\t\t\tif (_.isEmpty(after)) {\n\t\t\t\t\t_.each(_.keys(before), model.unset, model);\n\t\t\t\t} else {\n\t\t\t\t\tmodel.set(after);\n\t\t\t\t\tif (options && options.unsetData && options.unsetData.after && options.unsetData.after.length) {\n\t\t\t\t\t\t_.each(options.unsetData.after, model.unset, model);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"on\": function (model, options) {\n\t\t\t\tvar\n\t\t\t\tafterAttributes = model.changedAttributes(),\n\t\t\t\tkeysAfter = _.keys(afterAttributes),\n\t\t\t\tpreviousAttributes = _.pick(model.previousAttributes(), keysAfter),\n\t\t\t\tkeysPrevious = _.keys(previousAttributes),\n\t\t\t\tunsetData = (options || (options = {})).unsetData = {\n\t\t\t\t\tafter: [],\n\t\t\t\t\tbefore: []\n\t\t\t\t};\n\n\t\t\t\tif (keysAfter.length != keysPrevious.length) {\n\t\t\t\t\t// There are new attributes or old attributes have been unset\n\t\t\t\t\tif (keysAfter.length > keysPrevious.length) {\n\t\t\t\t\t\t// New attributes have been added\n\t\t\t\t\t\t_.each(keysAfter, function (val) {\n\t\t\t\t\t\t\tif (!(val in previousAttributes)) {\n\t\t\t\t\t\t\t\tunsetData.before.push(val);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}, this);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Old attributes have been unset\n\t\t\t\t\t\t_.each(keysPrevious, function (val) {\n\t\t\t\t\t\t\tif (!(val in afterAttributes)) {\n\t\t\t\t\t\t\t\tunsetData.after.push(val);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\tobject: model,\n\t\t\t\t\tbefore: previousAttributes,\n\t\t\t\t\tafter: afterAttributes,\n\t\t\t\t\toptions: _.clone(options)\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\t\t\"reset\": {\n\t\t\t\"undo\": function (collection, before, after) {\n\t\t\t\tcollection.reset(before);\n\t\t\t},\n\t\t\t\"redo\": function (collection, before, after) {\n\t\t\t\tcollection.reset(after);\n\t\t\t},\n\t\t\t\"on\": function (collection, options) {\n\t\t\t\treturn {\n\t\t\t\t\tobject: collection,\n\t\t\t\t\tbefore: options.previousModels,\n\t\t\t\t\tafter: _.clone(collection.models)\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t};\n\n\t/**\n\t * Every UndoManager instance has an own undoTypes object\n\t * which is an instance of OwnedUndoTypes. OwnedUndoTypes' \n\t * prototype is the global UndoTypes object. Changes to the \n\t * global UndoTypes object take effect on every instance of\n\t * UndoManager as the object is its prototype. And yet every \n\t * local UndoTypes object can be changed individually.\n\t *\n\t * @constructor\n\t */\n\tfunction OwnedUndoTypes () {}\n\tOwnedUndoTypes.prototype = UndoTypes;\n\n\t/**\n\t * Adds, changes or removes an undo-type from an UndoTypes-object.\n\t * You can call it this way:\n\t * manipulateUndoType (1, \"reset\", {\"on\": function () {}}, undoTypes)\n\t * or this way to perform bulk actions:\n\t * manipulateUndoType (1, {\"reset\": {\"on\": function () {}}}, undoTypes)\n\t * In case of removing undo-types you can pass an Array for performing\n\t * bulk actions:\n\t * manipulateUndoType(2, [\"reset\", \"change\"], undoTypes)\n\t * \n\t * @param {Number} \t\t\t\t manipType \t\tIndicates the kind of action to execute: 0 for add, 1 for change, 2 for remove\n\t * @param {String|Object|Array} \t undoType \t\t\tThe type of undoType that should be added/changed/removed. Can be an object / array to perform bulk actions\n\t * @param {Object} \t\t\t\t [fns] \t\t\tObject with the functions to add / change. Is optional in case you passed an object as undoType that contains these functions\n\t * @param {OwnedUndoTypes|UndoTypes} undoTypesInstance The undoTypes object to act on\n\t * @return {undefined}\n\t */\n\tfunction manipulateUndoType (manipType, undoType, fns, undoTypesInstance) {\n\t\t// manipType, passed by the calling function\n\t\t// 0: add\n\t\t// 1: change\n\t\t// 2: remove\n\t\tif (typeof undoType === \"object\") {\n\t\t\t// bulk action. Iterate over this data.\n\t\t\treturn _.each(undoType, function (val, key) {\n\t\t\t\t\tif (manipType === 2) { // remove\n\t\t\t\t\t\t// undoType is an array\n\t\t\t\t\t\tmanipulateUndoType (manipType, val, fns, undoTypesInstance);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// undoType is an object\n\t\t\t\t\t\tmanipulateUndoType (manipType, key, val, fns);\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t}\n\n\t\tswitch (manipType) {\n\t\t\tcase 0: // add\n\t\t\t\tif (hasKeys(fns, \"undo\", \"redo\", \"on\") && _.all(_.pick(fns, \"undo\", \"redo\", \"on\"), _.isFunction)) {\n\t\t\t\t\tundoTypesInstance[undoType] = fns;\n\t\t\t\t} \n\t\t\tbreak;\n\t\t\tcase 1: // change\n\t\t\t\tif (undoTypesInstance[undoType] && _.isObject(fns)) {\n\t\t\t\t\t// undoTypeInstance[undoType] may be a prototype's property\n\t\t\t\t\t// So, if we did this _.extend(undoTypeInstance[undoType], fns)\n\t\t\t\t\t// we would extend the object on the prototype which means\n\t\t\t\t\t// that this change would have a global effect\n\t\t\t\t\t// Instead we just want to manipulate this instance. That's why\n\t\t\t\t\t// we're doing this:\n\t\t\t\t\tundoTypesInstance[undoType] = _.extend({}, undoTypesInstance[undoType], fns);\n\t\t\t\t} \n\t\t\tbreak;\n\t\t\tcase 2: // remove\n\t\t\t\tdelete undoTypesInstance[undoType]; \n\t\t\tbreak;\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Instantiating \"Action\" creates the UndoActions that \n\t * are collected in an UndoStack. It holds all relevant \n\t * data to undo / redo an action and has an undo / redo \n\t * method.\n\t */\n\tvar Action = Backbone.Model.extend({\n\t\tdefaults: {\n\t\t\ttype: null, // \"add\", \"change\", \"reset\", etc.\n\t\t\tobject: null, // The object on which the action occurred\n\t\t\tbefore: null, // The previous values which were changed with this action\n\t\t\tafter: null, // The values after this action\n\t\t\tmagicFusionIndex: null // The magicFusionIndex helps to combine \n\t\t\t// all actions that occurred \"at the same time\" to undo/redo them altogether\n\t\t},\n\t\t/**\n\t\t * Undoes this action.\n\t\t * @param {OwnedUndoTypes|UndoTypes} undoTypes The undoTypes object which contains the \"undo\"-handler that should be used\n\t\t * @return {undefined}\n\t\t */\n\t\tundo: function (undoTypes) {\n\t\t\tactionUndoRedo(\"undo\", this.attributes);\n\t\t},\n\t\t/**\n\t\t * Redoes this action.\n\t\t * @param {OwnedUndoTypes|UndoTypes} undoTypes The undoTypes object which contains the \"redo\"-handler that should be used\n\t\t * @return {undefined}\n\t\t */\n\t\tredo: function (undoTypes) {\n\t\t\tactionUndoRedo(\"redo\", this.attributes);\n\t\t}\n\t}),\n\t/**\n\t * An UndoStack is a collection of UndoActions in \n\t * chronological order.\n\t */\n\tUndoStack = Backbone.Collection.extend({\n\t\tmodel: Action,\n\t\tpointer: -1, // The pointer indicates the index where we are located within the stack. We start at -1\n\t\ttrack: false,\n\t\tisCurrentlyUndoRedoing: false,\n\t\tmaximumStackLength: Infinity,\n\t\tsetMaxLength: function (val) {\n\t\t\tthis.maximumStackLength = val;\n\t\t}\n\t}),\n\t/**\n\t * An instance of UndoManager can keep track of \n\t * changes to objects and helps to undo them.\n\t */\n\tUndoManager = Backbone.Model.extend({\n\t\tdefaults: {\n\t\t\tmaximumStackLength: Infinity,\n\t\t\ttrack: false\n\t\t},\n\t\t/**\n\t\t * The constructor function.\n\t\t * @param {attr} \t\t[attr] Object with parameters. The available parameters are:\n\t\t * \t - maximumStackLength {number} \tSet the undo-stack's maximum size\n\t\t * - track \t\t\t\t{boolean}\tStart tracking changes right away\n\t\t * @return {undefined}\n\t\t */\n\t\tinitialize: function (attr) {\n\t\t\tthis.stack = new UndoStack;\n\t\t\tthis.objectRegistry = new ObjectRegistry();\n\t\t\tthis.undoTypes = new OwnedUndoTypes();\n\n\t\t\t// sync the maximumStackLength attribute with our stack\n\t\t\tthis.stack.setMaxLength(this.get(\"maximumStackLength\"));\n\t\t\tthis.on(\"change:maximumStackLength\", function (model, value) {\n\t\t\t\tthis.stack.setMaxLength(value);\n\t\t\t}, this);\n\n\t\t\t// Start tracking, if attr.track == true\n\t\t\tif (attr && attr.track) {\n\t\t\t\tthis.startTracking();\n\t\t\t}\n\n\t\t\t// Register objects passed in the \"register\" attribute\n\t\t\tif (attr && attr.register) {\n\t\t\t\tif (_.isArray(attr.register) || _.isArguments(attr.register)) {\n\t\t\t\t\tapply(this.register, this, attr.register);\n\t\t\t\t} else {\n\t\t\t\t\tthis.register(attr.register);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Starts tracking. Changes of registered objects won't be processed until you've called this function\n\t\t * @return {undefined}\n\t\t */\n\t\tstartTracking: function () {\n\t\t\tthis.set(\"track\", true);\n\t\t\tthis.stack.track = true;\n\t\t},\n\t\t/**\n\t\t * Stops tracking. Afterwards changes of registered objects won't be processed.\n\t\t * @return {undefined}\n\t\t */\n\t\tstopTracking: function () {\n\t\t\tthis.set(\"track\", false);\n\t\t\tthis.stack.track = false;\n\t\t},\n\t\t/**\n\t\t * Return the state of the tracking\n\t\t * @return {boolean}\n\t\t */\n\t\tisTracking: function () {\n\t\t\treturn this.get(\"track\");\n\t\t},\n\t\t/**\n\t\t * This is the \"all\"-handler which is bound to registered \n\t\t * objects. It creates an UndoAction from the event and adds \n\t\t * it to the stack.\n\t\t * \n\t\t * @param {String} \ttype \tThe event type\n\t\t * @return {undefined}\n\t\t */\n\t\t_addToStack: function (type) {\n\t\t\taddToStack(this.stack, type, slice(arguments, 1), this.undoTypes);\n\t\t},\n\t\t/**\n\t\t * Registers one or more objects to track their changes.\n\t\t * @param {...Object} \tobj \tThe object or objects of which changes should be tracked\n\t\t * @return {undefined}\n\t\t */\n\t\tregister: function () {\n\t\t\tonoff(\"on\", arguments, this._addToStack, this);\n\t\t},\n\t\t/**\n\t\t * Unregisters one or more objects.\n\t\t * @param {...Object} \tobj \tThe object or objects of which changes shouldn't be tracked any longer\n\t\t * @return {undefined}\n\t\t */\n\t\tunregister: function () {\n\t\t\tonoff(\"off\", arguments, this._addToStack, this);\n\t\t},\n\t\t/**\n\t\t * Unregisters all previously registered objects.\n\t\t * @return {undefined}\n\t\t */\n\t\tunregisterAll: function () {\n\t\t\tapply(this.unregister, this, this.objectRegistry.get());\n\t\t},\n\t\t/**\n\t\t * Undoes the last action or the last set of actions in case 'magic' is true.\n\t\t * @param {Boolean} \t[magic] \tIf true, all actions that happened basically at the same time are undone together\n\t\t * @return {undefined}\n\t\t */\n\t\tundo: function (magic) {\n\t\t\tmanagerUndoRedo(\"undo\", this, this.stack, magic);\n\t\t},\n\n\t\t/**\n\t\t * Undoes all actions ever tracked by the undo manager\n\t\t * @return {undefined}\n\t\t */\n\t\tundoAll: function () {\n\t\t\tmanagerUndoRedo(\"undo\", this, this.stack, false, true);\n\t\t},\n\n\t\t/**\n\t\t * Redoes a previously undone action or a set of actions.\n\t\t * @param {Boolean} \t[magic] \tIf true, all actions that happened basically at the same time are redone together\n\t\t * @return {undefined}\n\t\t */\n\t\tredo: function (magic) {\n\t\t\tmanagerUndoRedo(\"redo\", this, this.stack, magic);\n\t\t},\n\n\t\t/**\n\t\t * Redoes all actions ever tracked by the undo manager\n\t\t * @return {undefined}\n\t\t */\n\t\tredoAll: function () {\n\t\t\tmanagerUndoRedo(\"redo\", this, this.stack, false, true);\n\t\t},\n\t\t/**\n\t\t * Checks if there's an action in the stack that can be undone / redone\n\t\t * @param {String} \ttype \tEither \"undo\" or \"redo\"\n\t\t * @return {Boolean} True if there is a set of actions which can be undone / redone\n\t\t */\n\t\tisAvailable: function (type) {\n\t\t\tvar s = this.stack, l = s.length;\n\n\t\t\tswitch (type) {\n\t\t\t\tcase \"undo\": return l > 0 && s.pointer > -1;\n\t\t\t\tcase \"redo\": return l > 0 && s.pointer < l - 1;\n\t\t\t\tdefault: return false;\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Sets the stack-reference to the stack of another undoManager.\n\t\t * @param {UndoManager} \tundoManager \tThe undoManager whose stack-reference is set to this stack\n\t\t * @return {undefined}\n\t\t */\n\t\tmerge: function (undoManager) {\n\t\t\t// This sets the stack-reference to the stack of another \n\t\t\t// undoManager so that the stack of this other undoManager \n\t\t\t// is used by two different managers.\n\t\t\t// This enables to set up a main-undoManager and besides it\n\t\t\t// several others for special, exceptional cases (by using\n\t\t\t// instance-based custom UndoTypes). Models / collections \n\t\t\t// which need this special treatment are only registered at \n\t\t\t// those special undoManagers. Those special ones are then \n\t\t\t// merged into the main-undoManager to write on its stack. \n\t\t\t// That way it's easier to manage exceptional cases.\n\t\t\tvar args = _.isArray(undoManager) ? undoManager : slice(arguments), manager;\n\t\t\twhile (manager = args.pop()) {\n\t\t\t\tif (manager instanceof UndoManager &&\n\t\t\t\t\tmanager.stack instanceof UndoStack) {\n\t\t\t\t\t// set the stack reference to our stack\n\t\t\t\t\tmanager.stack = this.stack;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Add an UndoType to this specific UndoManager-instance.\n\t\t * @param {String} type The event this UndoType is made for\n\t\t * @param {Object} fns An object of functions that are called to generate the data for an UndoAction or to process it. Must have the properties \"undo\", \"redo\" and \"on\". Can have the property \"condition\".\n\t\t * @return {undefined}\n\t\t */\n\t\taddUndoType: function (type, fns) {\n\t\t\tmanipulateUndoType(0, type, fns, this.undoTypes);\n\t\t},\n\t\t/**\n\t\t * Overwrite properties of an existing UndoType for this specific UndoManager-instance.\n\t\t * @param {String} type The event the UndoType is made for\n\t\t * @param {Object} fns An object of functions that are called to generate the data for an UndoAction or to process it. It extends the existing object.\n\t\t * @return {undefined}\n\t\t */\n\t\tchangeUndoType: function (type, fns) {\n\t\t\tmanipulateUndoType(1, type, fns, this.undoTypes);\n\t\t},\n\t\t/**\n\t\t * Remove one or more UndoTypes of this specific UndoManager-instance to fall back to the global UndoTypes.\n\t\t * @param {String|Array} type The event the UndoType that should be removed is made for. You can also pass an array of events.\n\t\t * @return {undefined}\n\t\t */\n\t\tremoveUndoType: function (type) {\n\t\t\tmanipulateUndoType(2, type, undefined, this.undoTypes);\n\t\t},\n\n\t\t/**\n\t\t * Removes all actions from the stack.\n\t\t * @return {undefined}\n\t\t */\n\t\tclear: function() {\n\t\t\tthis.stack.reset();\n\t\t\tthis.stack.pointer = -1;\n\t\t}\n\t});\n\n\t_.extend(UndoManager, {\n\t\t/**\n\t\t * Change the UndoManager's default attributes\n\t\t * @param {Object} defaultAttributes An object with the new default values.\n\t\t * @return {undefined}\n\t\t */\n\t\tdefaults: function (defaultAttributes) {\n\t\t\t_.extend(UndoManager.prototype.defaults, defaultAttributes);\n\t\t},\n\t\t/**\n\t\t * Add an UndoType to the global UndoTypes-object.\n\t\t * @param {String} type The event this UndoType is made for\n\t\t * @param {Object} fns An object of functions that are called to generate the data for an UndoAction or to process it. Must have the properties \"undo\", \"redo\" and \"on\". Can have the property \"condition\".\n\t\t * @return {undefined}\n\t\t */\n\t\t\"addUndoType\": function (type, fns) {\n\t\t\tmanipulateUndoType(0, type, fns, UndoTypes);\n\t\t},\n\t\t/**\n\t\t * Overwrite properties of an existing UndoType in the global UndoTypes-object.\n\t\t * @param {String} type The event the UndoType is made for\n\t\t * @param {Object} fns An object of functions that are called to generate the data for an UndoAction or to process it. It extends the existing object.\n\t\t * @return {undefined}\n\t\t */\n\t\t\"changeUndoType\": function (type, fns) {\n\t\t\tmanipulateUndoType(1, type, fns, UndoTypes)\n\t\t},\n\t\t/**\n\t\t * Remove one or more UndoTypes of this specific UndoManager-instance to fall back to the global UndoTypes.\n\t\t * @param {String|Array} type The event the UndoType that should be removed is made for. You can also pass an array of events.\n\t\t * @return {undefined}\n\t\t */\n\t\t\"removeUndoType\": function (type) {\n\t\t\tmanipulateUndoType(2, type, undefined, UndoTypes);\n\t\t}\n\t})\n\n\treturn Backbone.UndoManager = UndoManager;\n\n});\n","// Backbone.js 1.3.3\n\n// (c) 2010-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n// Backbone may be freely distributed under the MIT license.\n// For all details and documentation:\n// http://backbonejs.org\n\n(function(factory) {\n\n // Establish the root object, `window` (`self`) in the browser, or `global` on the server.\n // We use `self` instead of `window` for `WebWorker` support.\n var root = (typeof self == 'object' && self.self === self && self) ||\n (typeof global == 'object' && global.global === global && global);\n\n // Set up Backbone appropriately for the environment. Start with AMD.\n if (typeof define === 'function' && define.amd) {\n define(['underscore', 'jquery', 'exports'], function(_, $, exports) {\n // Export global even in AMD case in case this script is loaded with\n // others that may still expect a global Backbone.\n root.Backbone = factory(root, exports, _, $);\n });\n\n // Next for Node.js or CommonJS. jQuery may not be needed as a module.\n } else if (typeof exports !== 'undefined') {\n var _ = require('underscore'), $;\n try { $ = require('jquery'); } catch (e) {}\n factory(root, exports, _, $);\n\n // Finally, as a browser global.\n } else {\n root.Backbone = factory(root, {}, root._, (root.jQuery || root.Zepto || root.ender || root.$));\n }\n\n})(function(root, Backbone, _, $) {\n\n // Initial Setup\n // -------------\n\n // Save the previous value of the `Backbone` variable, so that it can be\n // restored later on, if `noConflict` is used.\n var previousBackbone = root.Backbone;\n\n // Create a local reference to a common array method we'll want to use later.\n var slice = Array.prototype.slice;\n\n // Current version of the library. Keep in sync with `package.json`.\n Backbone.VERSION = '1.3.3';\n\n // For Backbone's purposes, jQuery, Zepto, Ender, or My Library (kidding) owns\n // the `$` variable.\n Backbone.$ = $;\n\n // Runs Backbone.js in *noConflict* mode, returning the `Backbone` variable\n // to its previous owner. Returns a reference to this Backbone object.\n Backbone.noConflict = function() {\n root.Backbone = previousBackbone;\n return this;\n };\n\n // Turn on `emulateHTTP` to support legacy HTTP servers. Setting this option\n // will fake `\"PATCH\"`, `\"PUT\"` and `\"DELETE\"` requests via the `_method` parameter and\n // set a `X-Http-Method-Override` header.\n Backbone.emulateHTTP = false;\n\n // Turn on `emulateJSON` to support legacy servers that can't deal with direct\n // `application/json` requests ... this will encode the body as\n // `application/x-www-form-urlencoded` instead and will send the model in a\n // form param named `model`.\n Backbone.emulateJSON = false;\n\n // Proxy Backbone class methods to Underscore functions, wrapping the model's\n // `attributes` object or collection's `models` array behind the scenes.\n //\n // collection.filter(function(model) { return model.get('age') > 10 });\n // collection.each(this.addView);\n //\n // `Function#apply` can be slow so we use the method's arg count, if we know it.\n var addMethod = function(length, method, attribute) {\n switch (length) {\n case 1: return function() {\n return _[method](this[attribute]);\n };\n case 2: return function(value) {\n return _[method](this[attribute], value);\n };\n case 3: return function(iteratee, context) {\n return _[method](this[attribute], cb(iteratee, this), context);\n };\n case 4: return function(iteratee, defaultVal, context) {\n return _[method](this[attribute], cb(iteratee, this), defaultVal, context);\n };\n default: return function() {\n var args = slice.call(arguments);\n args.unshift(this[attribute]);\n return _[method].apply(_, args);\n };\n }\n };\n var addUnderscoreMethods = function(Class, methods, attribute) {\n _.each(methods, function(length, method) {\n if (_[method]) Class.prototype[method] = addMethod(length, method, attribute);\n });\n };\n\n // Support `collection.sortBy('attr')` and `collection.findWhere({id: 1})`.\n var cb = function(iteratee, instance) {\n if (_.isFunction(iteratee)) return iteratee;\n if (_.isObject(iteratee) && !instance._isModel(iteratee)) return modelMatcher(iteratee);\n if (_.isString(iteratee)) return function(model) { return model.get(iteratee); };\n return iteratee;\n };\n var modelMatcher = function(attrs) {\n var matcher = _.matches(attrs);\n return function(model) {\n return matcher(model.attributes);\n };\n };\n\n // Backbone.Events\n // ---------------\n\n // A module that can be mixed in to *any object* in order to provide it with\n // a custom event channel. You may bind a callback to an event with `on` or\n // remove with `off`; `trigger`-ing an event fires all callbacks in\n // succession.\n //\n // var object = {};\n // _.extend(object, Backbone.Events);\n // object.on('expand', function(){ alert('expanded'); });\n // object.trigger('expand');\n //\n var Events = Backbone.Events = {};\n\n // Regular expression used to split event strings.\n var eventSplitter = /\\s+/;\n\n // Iterates over the standard `event, callback` (as well as the fancy multiple\n // space-separated events `\"change blur\", callback` and jQuery-style event\n // maps `{event: callback}`).\n var eventsApi = function(iteratee, events, name, callback, opts) {\n var i = 0, names;\n if (name && typeof name === 'object') {\n // Handle event maps.\n if (callback !== void 0 && 'context' in opts && opts.context === void 0) opts.context = callback;\n for (names = _.keys(name); i < names.length ; i++) {\n events = eventsApi(iteratee, events, names[i], name[names[i]], opts);\n }\n } else if (name && eventSplitter.test(name)) {\n // Handle space-separated event names by delegating them individually.\n for (names = name.split(eventSplitter); i < names.length; i++) {\n events = iteratee(events, names[i], callback, opts);\n }\n } else {\n // Finally, standard events.\n events = iteratee(events, name, callback, opts);\n }\n return events;\n };\n\n // Bind an event to a `callback` function. Passing `\"all\"` will bind\n // the callback to all events fired.\n Events.on = function(name, callback, context) {\n return internalOn(this, name, callback, context);\n };\n\n // Guard the `listening` argument from the public API.\n var internalOn = function(obj, name, callback, context, listening) {\n obj._events = eventsApi(onApi, obj._events || {}, name, callback, {\n context: context,\n ctx: obj,\n listening: listening\n });\n\n if (listening) {\n var listeners = obj._listeners || (obj._listeners = {});\n listeners[listening.id] = listening;\n }\n\n return obj;\n };\n\n // Inversion-of-control versions of `on`. Tell *this* object to listen to\n // an event in another object... keeping track of what it's listening to\n // for easier unbinding later.\n Events.listenTo = function(obj, name, callback) {\n if (!obj) return this;\n var id = obj._listenId || (obj._listenId = _.uniqueId('l'));\n var listeningTo = this._listeningTo || (this._listeningTo = {});\n var listening = listeningTo[id];\n\n // This object is not listening to any other events on `obj` yet.\n // Setup the necessary references to track the listening callbacks.\n if (!listening) {\n var thisId = this._listenId || (this._listenId = _.uniqueId('l'));\n listening = listeningTo[id] = {obj: obj, objId: id, id: thisId, listeningTo: listeningTo, count: 0};\n }\n\n // Bind callbacks on obj, and keep track of them on listening.\n internalOn(obj, name, callback, this, listening);\n return this;\n };\n\n // The reducing API that adds a callback to the `events` object.\n var onApi = function(events, name, callback, options) {\n if (callback) {\n var handlers = events[name] || (events[name] = []);\n var context = options.context, ctx = options.ctx, listening = options.listening;\n if (listening) listening.count++;\n\n handlers.push({callback: callback, context: context, ctx: context || ctx, listening: listening});\n }\n return events;\n };\n\n // Remove one or many callbacks. If `context` is null, removes all\n // callbacks with that function. If `callback` is null, removes all\n // callbacks for the event. If `name` is null, removes all bound\n // callbacks for all events.\n Events.off = function(name, callback, context) {\n if (!this._events) return this;\n this._events = eventsApi(offApi, this._events, name, callback, {\n context: context,\n listeners: this._listeners\n });\n return this;\n };\n\n // Tell this object to stop listening to either specific events ... or\n // to every object it's currently listening to.\n Events.stopListening = function(obj, name, callback) {\n var listeningTo = this._listeningTo;\n if (!listeningTo) return this;\n\n var ids = obj ? [obj._listenId] : _.keys(listeningTo);\n\n for (var i = 0; i < ids.length; i++) {\n var listening = listeningTo[ids[i]];\n\n // If listening doesn't exist, this object is not currently\n // listening to obj. Break out early.\n if (!listening) break;\n\n listening.obj.off(name, callback, this);\n }\n\n return this;\n };\n\n // The reducing API that removes a callback from the `events` object.\n var offApi = function(events, name, callback, options) {\n if (!events) return;\n\n var i = 0, listening;\n var context = options.context, listeners = options.listeners;\n\n // Delete all events listeners and \"drop\" events.\n if (!name && !callback && !context) {\n var ids = _.keys(listeners);\n for (; i < ids.length; i++) {\n listening = listeners[ids[i]];\n delete listeners[listening.id];\n delete listening.listeningTo[listening.objId];\n }\n return;\n }\n\n var names = name ? [name] : _.keys(events);\n for (; i < names.length; i++) {\n name = names[i];\n var handlers = events[name];\n\n // Bail out if there are no events stored.\n if (!handlers) break;\n\n // Replace events if there are any remaining. Otherwise, clean up.\n var remaining = [];\n for (var j = 0; j < handlers.length; j++) {\n var handler = handlers[j];\n if (\n callback && callback !== handler.callback &&\n callback !== handler.callback._callback ||\n context && context !== handler.context\n ) {\n remaining.push(handler);\n } else {\n listening = handler.listening;\n if (listening && --listening.count === 0) {\n delete listeners[listening.id];\n delete listening.listeningTo[listening.objId];\n }\n }\n }\n\n // Update tail event if the list has any events. Otherwise, clean up.\n if (remaining.length) {\n events[name] = remaining;\n } else {\n delete events[name];\n }\n }\n return events;\n };\n\n // Bind an event to only be triggered a single time. After the first time\n // the callback is invoked, its listener will be removed. If multiple events\n // are passed in using the space-separated syntax, the handler will fire\n // once for each event, not once for a combination of all events.\n Events.once = function(name, callback, context) {\n // Map the event into a `{event: once}` object.\n var events = eventsApi(onceMap, {}, name, callback, _.bind(this.off, this));\n if (typeof name === 'string' && context == null) callback = void 0;\n return this.on(events, callback, context);\n };\n\n // Inversion-of-control versions of `once`.\n Events.listenToOnce = function(obj, name, callback) {\n // Map the event into a `{event: once}` object.\n var events = eventsApi(onceMap, {}, name, callback, _.bind(this.stopListening, this, obj));\n return this.listenTo(obj, events);\n };\n\n // Reduces the event callbacks into a map of `{event: onceWrapper}`.\n // `offer` unbinds the `onceWrapper` after it has been called.\n var onceMap = function(map, name, callback, offer) {\n if (callback) {\n var once = map[name] = _.once(function() {\n offer(name, once);\n callback.apply(this, arguments);\n });\n once._callback = callback;\n }\n return map;\n };\n\n // Trigger one or many events, firing all bound callbacks. Callbacks are\n // passed the same arguments as `trigger` is, apart from the event name\n // (unless you're listening on `\"all\"`, which will cause your callback to\n // receive the true name of the event as the first argument).\n Events.trigger = function(name) {\n if (!this._events) return this;\n\n var length = Math.max(0, arguments.length - 1);\n var args = Array(length);\n for (var i = 0; i < length; i++) args[i] = arguments[i + 1];\n\n eventsApi(triggerApi, this._events, name, void 0, args);\n return this;\n };\n\n // Handles triggering the appropriate event callbacks.\n var triggerApi = function(objEvents, name, callback, args) {\n if (objEvents) {\n var events = objEvents[name];\n var allEvents = objEvents.all;\n if (events && allEvents) allEvents = allEvents.slice();\n if (events) triggerEvents(events, args);\n if (allEvents) triggerEvents(allEvents, [name].concat(args));\n }\n return objEvents;\n };\n\n // A difficult-to-believe, but optimized internal dispatch function for\n // triggering events. Tries to keep the usual cases speedy (most internal\n // Backbone events have 3 arguments).\n var triggerEvents = function(events, args) {\n var ev, i = -1, l = events.length, a1 = args[0], a2 = args[1], a3 = args[2];\n switch (args.length) {\n case 0: while (++i < l) (ev = events[i]).callback.call(ev.ctx); return;\n case 1: while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1); return;\n case 2: while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1, a2); return;\n case 3: while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1, a2, a3); return;\n default: while (++i < l) (ev = events[i]).callback.apply(ev.ctx, args); return;\n }\n };\n\n // Aliases for backwards compatibility.\n Events.bind = Events.on;\n Events.unbind = Events.off;\n\n // Allow the `Backbone` object to serve as a global event bus, for folks who\n // want global \"pubsub\" in a convenient place.\n _.extend(Backbone, Events);\n\n // Backbone.Model\n // --------------\n\n // Backbone **Models** are the basic data object in the framework --\n // frequently representing a row in a table in a database on your server.\n // A discrete chunk of data and a bunch of useful, related methods for\n // performing computations and transformations on that data.\n\n // Create a new model with the specified attributes. A client id (`cid`)\n // is automatically generated and assigned for you.\n var Model = Backbone.Model = function(attributes, options) {\n var attrs = attributes || {};\n options || (options = {});\n this.cid = _.uniqueId(this.cidPrefix);\n this.attributes = {};\n if (options.collection) this.collection = options.collection;\n if (options.parse) attrs = this.parse(attrs, options) || {};\n var defaults = _.result(this, 'defaults');\n attrs = _.defaults(_.extend({}, defaults, attrs), defaults);\n this.set(attrs, options);\n this.changed = {};\n this.initialize.apply(this, arguments);\n };\n\n // Attach all inheritable methods to the Model prototype.\n _.extend(Model.prototype, Events, {\n\n // A hash of attributes whose current and previous value differ.\n changed: null,\n\n // The value returned during the last failed validation.\n validationError: null,\n\n // The default name for the JSON `id` attribute is `\"id\"`. MongoDB and\n // CouchDB users may want to set this to `\"_id\"`.\n idAttribute: 'id',\n\n // The prefix is used to create the client id which is used to identify models locally.\n // You may want to override this if you're experiencing name clashes with model ids.\n cidPrefix: 'c',\n\n // Initialize is an empty function by default. Override it with your own\n // initialization logic.\n initialize: function(){},\n\n // Return a copy of the model's `attributes` object.\n toJSON: function(options) {\n return _.clone(this.attributes);\n },\n\n // Proxy `Backbone.sync` by default -- but override this if you need\n // custom syncing semantics for *this* particular model.\n sync: function() {\n return Backbone.sync.apply(this, arguments);\n },\n\n // Get the value of an attribute.\n get: function(attr) {\n return this.attributes[attr];\n },\n\n // Get the HTML-escaped value of an attribute.\n escape: function(attr) {\n return _.escape(this.get(attr));\n },\n\n // Returns `true` if the attribute contains a value that is not null\n // or undefined.\n has: function(attr) {\n return this.get(attr) != null;\n },\n\n // Special-cased proxy to underscore's `_.matches` method.\n matches: function(attrs) {\n return !!_.iteratee(attrs, this)(this.attributes);\n },\n\n // Set a hash of model attributes on the object, firing `\"change\"`. This is\n // the core primitive operation of a model, updating the data and notifying\n // anyone who needs to know about the change in state. The heart of the beast.\n set: function(key, val, options) {\n if (key == null) return this;\n\n // Handle both `\"key\", value` and `{key: value}` -style arguments.\n var attrs;\n if (typeof key === 'object') {\n attrs = key;\n options = val;\n } else {\n (attrs = {})[key] = val;\n }\n\n options || (options = {});\n\n // Run validation.\n if (!this._validate(attrs, options)) return false;\n\n // Extract attributes and options.\n var unset = options.unset;\n var silent = options.silent;\n var changes = [];\n var changing = this._changing;\n this._changing = true;\n\n if (!changing) {\n this._previousAttributes = _.clone(this.attributes);\n this.changed = {};\n }\n\n var current = this.attributes;\n var changed = this.changed;\n var prev = this._previousAttributes;\n\n // For each `set` attribute, update or delete the current value.\n for (var attr in attrs) {\n val = attrs[attr];\n if (!_.isEqual(current[attr], val)) changes.push(attr);\n if (!_.isEqual(prev[attr], val)) {\n changed[attr] = val;\n } else {\n delete changed[attr];\n }\n unset ? delete current[attr] : current[attr] = val;\n }\n\n // Update the `id`.\n if (this.idAttribute in attrs) this.id = this.get(this.idAttribute);\n\n // Trigger all relevant attribute changes.\n if (!silent) {\n if (changes.length) this._pending = options;\n for (var i = 0; i < changes.length; i++) {\n this.trigger('change:' + changes[i], this, current[changes[i]], options);\n }\n }\n\n // You might be wondering why there's a `while` loop here. Changes can\n // be recursively nested within `\"change\"` events.\n if (changing) return this;\n if (!silent) {\n while (this._pending) {\n options = this._pending;\n this._pending = false;\n this.trigger('change', this, options);\n }\n }\n this._pending = false;\n this._changing = false;\n return this;\n },\n\n // Remove an attribute from the model, firing `\"change\"`. `unset` is a noop\n // if the attribute doesn't exist.\n unset: function(attr, options) {\n return this.set(attr, void 0, _.extend({}, options, {unset: true}));\n },\n\n // Clear all attributes on the model, firing `\"change\"`.\n clear: function(options) {\n var attrs = {};\n for (var key in this.attributes) attrs[key] = void 0;\n return this.set(attrs, _.extend({}, options, {unset: true}));\n },\n\n // Determine if the model has changed since the last `\"change\"` event.\n // If you specify an attribute name, determine if that attribute has changed.\n hasChanged: function(attr) {\n if (attr == null) return !_.isEmpty(this.changed);\n return _.has(this.changed, attr);\n },\n\n // Return an object containing all the attributes that have changed, or\n // false if there are no changed attributes. Useful for determining what\n // parts of a view need to be updated and/or what attributes need to be\n // persisted to the server. Unset attributes will be set to undefined.\n // You can also pass an attributes object to diff against the model,\n // determining if there *would be* a change.\n changedAttributes: function(diff) {\n if (!diff) return this.hasChanged() ? _.clone(this.changed) : false;\n var old = this._changing ? this._previousAttributes : this.attributes;\n var changed = {};\n for (var attr in diff) {\n var val = diff[attr];\n if (_.isEqual(old[attr], val)) continue;\n changed[attr] = val;\n }\n return _.size(changed) ? changed : false;\n },\n\n // Get the previous value of an attribute, recorded at the time the last\n // `\"change\"` event was fired.\n previous: function(attr) {\n if (attr == null || !this._previousAttributes) return null;\n return this._previousAttributes[attr];\n },\n\n // Get all of the attributes of the model at the time of the previous\n // `\"change\"` event.\n previousAttributes: function() {\n return _.clone(this._previousAttributes);\n },\n\n // Fetch the model from the server, merging the response with the model's\n // local attributes. Any changed attributes will trigger a \"change\" event.\n fetch: function(options) {\n options = _.extend({parse: true}, options);\n var model = this;\n var success = options.success;\n options.success = function(resp) {\n var serverAttrs = options.parse ? model.parse(resp, options) : resp;\n if (!model.set(serverAttrs, options)) return false;\n if (success) success.call(options.context, model, resp, options);\n model.trigger('sync', model, resp, options);\n };\n wrapError(this, options);\n return this.sync('read', this, options);\n },\n\n // Set a hash of model attributes, and sync the model to the server.\n // If the server returns an attributes hash that differs, the model's\n // state will be `set` again.\n save: function(key, val, options) {\n // Handle both `\"key\", value` and `{key: value}` -style arguments.\n var attrs;\n if (key == null || typeof key === 'object') {\n attrs = key;\n options = val;\n } else {\n (attrs = {})[key] = val;\n }\n\n options = _.extend({validate: true, parse: true}, options);\n var wait = options.wait;\n\n // If we're not waiting and attributes exist, save acts as\n // `set(attr).save(null, opts)` with validation. Otherwise, check if\n // the model will be valid when the attributes, if any, are set.\n if (attrs && !wait) {\n if (!this.set(attrs, options)) return false;\n } else if (!this._validate(attrs, options)) {\n return false;\n }\n\n // After a successful server-side save, the client is (optionally)\n // updated with the server-side state.\n var model = this;\n var success = options.success;\n var attributes = this.attributes;\n options.success = function(resp) {\n // Ensure attributes are restored during synchronous saves.\n model.attributes = attributes;\n var serverAttrs = options.parse ? model.parse(resp, options) : resp;\n if (wait) serverAttrs = _.extend({}, attrs, serverAttrs);\n if (serverAttrs && !model.set(serverAttrs, options)) return false;\n if (success) success.call(options.context, model, resp, options);\n model.trigger('sync', model, resp, options);\n };\n wrapError(this, options);\n\n // Set temporary attributes if `{wait: true}` to properly find new ids.\n if (attrs && wait) this.attributes = _.extend({}, attributes, attrs);\n\n var method = this.isNew() ? 'create' : (options.patch ? 'patch' : 'update');\n if (method === 'patch' && !options.attrs) options.attrs = attrs;\n var xhr = this.sync(method, this, options);\n\n // Restore attributes.\n this.attributes = attributes;\n\n return xhr;\n },\n\n // Destroy this model on the server if it was already persisted.\n // Optimistically removes the model from its collection, if it has one.\n // If `wait: true` is passed, waits for the server to respond before removal.\n destroy: function(options) {\n options = options ? _.clone(options) : {};\n var model = this;\n var success = options.success;\n var wait = options.wait;\n\n var destroy = function() {\n model.stopListening();\n model.trigger('destroy', model, model.collection, options);\n };\n\n options.success = function(resp) {\n if (wait) destroy();\n if (success) success.call(options.context, model, resp, options);\n if (!model.isNew()) model.trigger('sync', model, resp, options);\n };\n\n var xhr = false;\n if (this.isNew()) {\n _.defer(options.success);\n } else {\n wrapError(this, options);\n xhr = this.sync('delete', this, options);\n }\n if (!wait) destroy();\n return xhr;\n },\n\n // Default URL for the model's representation on the server -- if you're\n // using Backbone's restful methods, override this to change the endpoint\n // that will be called.\n url: function() {\n var base =\n _.result(this, 'urlRoot') ||\n _.result(this.collection, 'url') ||\n urlError();\n if (this.isNew()) return base;\n var id = this.get(this.idAttribute);\n return base.replace(/[^\\/]$/, '$&/') + encodeURIComponent(id);\n },\n\n // **parse** converts a response into the hash of attributes to be `set` on\n // the model. The default implementation is just to pass the response along.\n parse: function(resp, options) {\n return resp;\n },\n\n // Create a new model with identical attributes to this one.\n clone: function() {\n return new this.constructor(this.attributes);\n },\n\n // A model is new if it has never been saved to the server, and lacks an id.\n isNew: function() {\n return !this.has(this.idAttribute);\n },\n\n // Check if the model is currently in a valid state.\n isValid: function(options) {\n return this._validate({}, _.extend({}, options, {validate: true}));\n },\n\n // Run validation against the next complete set of model attributes,\n // returning `true` if all is well. Otherwise, fire an `\"invalid\"` event.\n _validate: function(attrs, options) {\n if (!options.validate || !this.validate) return true;\n attrs = _.extend({}, this.attributes, attrs);\n var error = this.validationError = this.validate(attrs, options) || null;\n if (!error) return true;\n this.trigger('invalid', this, error, _.extend(options, {validationError: error}));\n return false;\n }\n\n });\n\n // Underscore methods that we want to implement on the Model, mapped to the\n // number of arguments they take.\n var modelMethods = {keys: 1, values: 1, pairs: 1, invert: 1, pick: 0,\n omit: 0, chain: 1, isEmpty: 1};\n\n // Mix in each Underscore method as a proxy to `Model#attributes`.\n addUnderscoreMethods(Model, modelMethods, 'attributes');\n\n // Backbone.Collection\n // -------------------\n\n // If models tend to represent a single row of data, a Backbone Collection is\n // more analogous to a table full of data ... or a small slice or page of that\n // table, or a collection of rows that belong together for a particular reason\n // -- all of the messages in this particular folder, all of the documents\n // belonging to this particular author, and so on. Collections maintain\n // indexes of their models, both in order, and for lookup by `id`.\n\n // Create a new **Collection**, perhaps to contain a specific type of `model`.\n // If a `comparator` is specified, the Collection will maintain\n // its models in sort order, as they're added and removed.\n var Collection = Backbone.Collection = function(models, options) {\n options || (options = {});\n if (options.model) this.model = options.model;\n if (options.comparator !== void 0) this.comparator = options.comparator;\n this._reset();\n this.initialize.apply(this, arguments);\n if (models) this.reset(models, _.extend({silent: true}, options));\n };\n\n // Default options for `Collection#set`.\n var setOptions = {add: true, remove: true, merge: true};\n var addOptions = {add: true, remove: false};\n\n // Splices `insert` into `array` at index `at`.\n var splice = function(array, insert, at) {\n at = Math.min(Math.max(at, 0), array.length);\n var tail = Array(array.length - at);\n var length = insert.length;\n var i;\n for (i = 0; i < tail.length; i++) tail[i] = array[i + at];\n for (i = 0; i < length; i++) array[i + at] = insert[i];\n for (i = 0; i < tail.length; i++) array[i + length + at] = tail[i];\n };\n\n // Define the Collection's inheritable methods.\n _.extend(Collection.prototype, Events, {\n\n // The default model for a collection is just a **Backbone.Model**.\n // This should be overridden in most cases.\n model: Model,\n\n // Initialize is an empty function by default. Override it with your own\n // initialization logic.\n initialize: function(){},\n\n // The JSON representation of a Collection is an array of the\n // models' attributes.\n toJSON: function(options) {\n return this.map(function(model) { return model.toJSON(options); });\n },\n\n // Proxy `Backbone.sync` by default.\n sync: function() {\n return Backbone.sync.apply(this, arguments);\n },\n\n // Add a model, or list of models to the set. `models` may be Backbone\n // Models or raw JavaScript objects to be converted to Models, or any\n // combination of the two.\n add: function(models, options) {\n return this.set(models, _.extend({merge: false}, options, addOptions));\n },\n\n // Remove a model, or a list of models from the set.\n remove: function(models, options) {\n options = _.extend({}, options);\n var singular = !_.isArray(models);\n models = singular ? [models] : models.slice();\n var removed = this._removeModels(models, options);\n if (!options.silent && removed.length) {\n options.changes = {added: [], merged: [], removed: removed};\n this.trigger('update', this, options);\n }\n return singular ? removed[0] : removed;\n },\n\n // Update a collection by `set`-ing a new list of models, adding new ones,\n // removing models that are no longer present, and merging models that\n // already exist in the collection, as necessary. Similar to **Model#set**,\n // the core operation for updating the data contained by the collection.\n set: function(models, options) {\n if (models == null) return;\n\n options = _.extend({}, setOptions, options);\n if (options.parse && !this._isModel(models)) {\n models = this.parse(models, options) || [];\n }\n\n var singular = !_.isArray(models);\n models = singular ? [models] : models.slice();\n\n var at = options.at;\n if (at != null) at = +at;\n if (at > this.length) at = this.length;\n if (at < 0) at += this.length + 1;\n\n var set = [];\n var toAdd = [];\n var toMerge = [];\n var toRemove = [];\n var modelMap = {};\n\n var add = options.add;\n var merge = options.merge;\n var remove = options.remove;\n\n var sort = false;\n var sortable = this.comparator && at == null && options.sort !== false;\n var sortAttr = _.isString(this.comparator) ? this.comparator : null;\n\n // Turn bare objects into model references, and prevent invalid models\n // from being added.\n var model, i;\n for (i = 0; i < models.length; i++) {\n model = models[i];\n\n // If a duplicate is found, prevent it from being added and\n // optionally merge it into the existing model.\n var existing = this.get(model);\n if (existing) {\n if (merge && model !== existing) {\n var attrs = this._isModel(model) ? model.attributes : model;\n if (options.parse) attrs = existing.parse(attrs, options);\n existing.set(attrs, options);\n toMerge.push(existing);\n if (sortable && !sort) sort = existing.hasChanged(sortAttr);\n }\n if (!modelMap[existing.cid]) {\n modelMap[existing.cid] = true;\n set.push(existing);\n }\n models[i] = existing;\n\n // If this is a new, valid model, push it to the `toAdd` list.\n } else if (add) {\n model = models[i] = this._prepareModel(model, options);\n if (model) {\n toAdd.push(model);\n this._addReference(model, options);\n modelMap[model.cid] = true;\n set.push(model);\n }\n }\n }\n\n // Remove stale models.\n if (remove) {\n for (i = 0; i < this.length; i++) {\n model = this.models[i];\n if (!modelMap[model.cid]) toRemove.push(model);\n }\n if (toRemove.length) this._removeModels(toRemove, options);\n }\n\n // See if sorting is needed, update `length` and splice in new models.\n var orderChanged = false;\n var replace = !sortable && add && remove;\n if (set.length && replace) {\n orderChanged = this.length !== set.length || _.some(this.models, function(m, index) {\n return m !== set[index];\n });\n this.models.length = 0;\n splice(this.models, set, 0);\n this.length = this.models.length;\n } else if (toAdd.length) {\n if (sortable) sort = true;\n splice(this.models, toAdd, at == null ? this.length : at);\n this.length = this.models.length;\n }\n\n // Silently sort the collection if appropriate.\n if (sort) this.sort({silent: true});\n\n // Unless silenced, it's time to fire all appropriate add/sort/update events.\n if (!options.silent) {\n for (i = 0; i < toAdd.length; i++) {\n if (at != null) options.index = at + i;\n model = toAdd[i];\n model.trigger('add', model, this, options);\n }\n if (sort || orderChanged) this.trigger('sort', this, options);\n if (toAdd.length || toRemove.length || toMerge.length) {\n options.changes = {\n added: toAdd,\n removed: toRemove,\n merged: toMerge\n };\n this.trigger('update', this, options);\n }\n }\n\n // Return the added (or merged) model (or models).\n return singular ? models[0] : models;\n },\n\n // When you have more items than you want to add or remove individually,\n // you can reset the entire set with a new list of models, without firing\n // any granular `add` or `remove` events. Fires `reset` when finished.\n // Useful for bulk operations and optimizations.\n reset: function(models, options) {\n options = options ? _.clone(options) : {};\n for (var i = 0; i < this.models.length; i++) {\n this._removeReference(this.models[i], options);\n }\n options.previousModels = this.models;\n this._reset();\n models = this.add(models, _.extend({silent: true}, options));\n if (!options.silent) this.trigger('reset', this, options);\n return models;\n },\n\n // Add a model to the end of the collection.\n push: function(model, options) {\n return this.add(model, _.extend({at: this.length}, options));\n },\n\n // Remove a model from the end of the collection.\n pop: function(options) {\n var model = this.at(this.length - 1);\n return this.remove(model, options);\n },\n\n // Add a model to the beginning of the collection.\n unshift: function(model, options) {\n return this.add(model, _.extend({at: 0}, options));\n },\n\n // Remove a model from the beginning of the collection.\n shift: function(options) {\n var model = this.at(0);\n return this.remove(model, options);\n },\n\n // Slice out a sub-array of models from the collection.\n slice: function() {\n return slice.apply(this.models, arguments);\n },\n\n // Get a model from the set by id, cid, model object with id or cid\n // properties, or an attributes object that is transformed through modelId.\n get: function(obj) {\n if (obj == null) return void 0;\n return this._byId[obj] ||\n this._byId[this.modelId(obj.attributes || obj)] ||\n obj.cid && this._byId[obj.cid];\n },\n\n // Returns `true` if the model is in the collection.\n has: function(obj) {\n return this.get(obj) != null;\n },\n\n // Get the model at the given index.\n at: function(index) {\n if (index < 0) index += this.length;\n return this.models[index];\n },\n\n // Return models with matching attributes. Useful for simple cases of\n // `filter`.\n where: function(attrs, first) {\n return this[first ? 'find' : 'filter'](attrs);\n },\n\n // Return the first model with matching attributes. Useful for simple cases\n // of `find`.\n findWhere: function(attrs) {\n return this.where(attrs, true);\n },\n\n // Force the collection to re-sort itself. You don't need to call this under\n // normal circumstances, as the set will maintain sort order as each item\n // is added.\n sort: function(options) {\n var comparator = this.comparator;\n if (!comparator) throw new Error('Cannot sort a set without a comparator');\n options || (options = {});\n\n var length = comparator.length;\n if (_.isFunction(comparator)) comparator = _.bind(comparator, this);\n\n // Run sort based on type of `comparator`.\n if (length === 1 || _.isString(comparator)) {\n this.models = this.sortBy(comparator);\n } else {\n this.models.sort(comparator);\n }\n if (!options.silent) this.trigger('sort', this, options);\n return this;\n },\n\n // Pluck an attribute from each model in the collection.\n pluck: function(attr) {\n return this.map(attr + '');\n },\n\n // Fetch the default set of models for this collection, resetting the\n // collection when they arrive. If `reset: true` is passed, the response\n // data will be passed through the `reset` method instead of `set`.\n fetch: function(options) {\n options = _.extend({parse: true}, options);\n var success = options.success;\n var collection = this;\n options.success = function(resp) {\n var method = options.reset ? 'reset' : 'set';\n collection[method](resp, options);\n if (success) success.call(options.context, collection, resp, options);\n collection.trigger('sync', collection, resp, options);\n };\n wrapError(this, options);\n return this.sync('read', this, options);\n },\n\n // Create a new instance of a model in this collection. Add the model to the\n // collection immediately, unless `wait: true` is passed, in which case we\n // wait for the server to agree.\n create: function(model, options) {\n options = options ? _.clone(options) : {};\n var wait = options.wait;\n model = this._prepareModel(model, options);\n if (!model) return false;\n if (!wait) this.add(model, options);\n var collection = this;\n var success = options.success;\n options.success = function(m, resp, callbackOpts) {\n if (wait) collection.add(m, callbackOpts);\n if (success) success.call(callbackOpts.context, m, resp, callbackOpts);\n };\n model.save(null, options);\n return model;\n },\n\n // **parse** converts a response into a list of models to be added to the\n // collection. The default implementation is just to pass it through.\n parse: function(resp, options) {\n return resp;\n },\n\n // Create a new collection with an identical list of models as this one.\n clone: function() {\n return new this.constructor(this.models, {\n model: this.model,\n comparator: this.comparator\n });\n },\n\n // Define how to uniquely identify models in the collection.\n modelId: function(attrs) {\n return attrs[this.model.prototype.idAttribute || 'id'];\n },\n\n // Private method to reset all internal state. Called when the collection\n // is first initialized or reset.\n _reset: function() {\n this.length = 0;\n this.models = [];\n this._byId = {};\n },\n\n // Prepare a hash of attributes (or other model) to be added to this\n // collection.\n _prepareModel: function(attrs, options) {\n if (this._isModel(attrs)) {\n if (!attrs.collection) attrs.collection = this;\n return attrs;\n }\n options = options ? _.clone(options) : {};\n options.collection = this;\n var model = new this.model(attrs, options);\n if (!model.validationError) return model;\n this.trigger('invalid', this, model.validationError, options);\n return false;\n },\n\n // Internal method called by both remove and set.\n _removeModels: function(models, options) {\n var removed = [];\n for (var i = 0; i < models.length; i++) {\n var model = this.get(models[i]);\n if (!model) continue;\n\n var index = this.indexOf(model);\n this.models.splice(index, 1);\n this.length--;\n\n // Remove references before triggering 'remove' event to prevent an\n // infinite loop. #3693\n delete this._byId[model.cid];\n var id = this.modelId(model.attributes);\n if (id != null) delete this._byId[id];\n\n if (!options.silent) {\n options.index = index;\n model.trigger('remove', model, this, options);\n }\n\n removed.push(model);\n this._removeReference(model, options);\n }\n return removed;\n },\n\n // Method for checking whether an object should be considered a model for\n // the purposes of adding to the collection.\n _isModel: function(model) {\n return model instanceof Model;\n },\n\n // Internal method to create a model's ties to a collection.\n _addReference: function(model, options) {\n this._byId[model.cid] = model;\n var id = this.modelId(model.attributes);\n if (id != null) this._byId[id] = model;\n model.on('all', this._onModelEvent, this);\n },\n\n // Internal method to sever a model's ties to a collection.\n _removeReference: function(model, options) {\n delete this._byId[model.cid];\n var id = this.modelId(model.attributes);\n if (id != null) delete this._byId[id];\n if (this === model.collection) delete model.collection;\n model.off('all', this._onModelEvent, this);\n },\n\n // Internal method called every time a model in the set fires an event.\n // Sets need to update their indexes when models change ids. All other\n // events simply proxy through. \"add\" and \"remove\" events that originate\n // in other collections are ignored.\n _onModelEvent: function(event, model, collection, options) {\n if (model) {\n if ((event === 'add' || event === 'remove') && collection !== this) return;\n if (event === 'destroy') this.remove(model, options);\n if (event === 'change') {\n var prevId = this.modelId(model.previousAttributes());\n var id = this.modelId(model.attributes);\n if (prevId !== id) {\n if (prevId != null) delete this._byId[prevId];\n if (id != null) this._byId[id] = model;\n }\n }\n }\n this.trigger.apply(this, arguments);\n }\n\n });\n\n // Underscore methods that we want to implement on the Collection.\n // 90% of the core usefulness of Backbone Collections is actually implemented\n // right here:\n var collectionMethods = {forEach: 3, each: 3, map: 3, collect: 3, reduce: 0,\n foldl: 0, inject: 0, reduceRight: 0, foldr: 0, find: 3, detect: 3, filter: 3,\n select: 3, reject: 3, every: 3, all: 3, some: 3, any: 3, include: 3, includes: 3,\n contains: 3, invoke: 0, max: 3, min: 3, toArray: 1, size: 1, first: 3,\n head: 3, take: 3, initial: 3, rest: 3, tail: 3, drop: 3, last: 3,\n without: 0, difference: 0, indexOf: 3, shuffle: 1, lastIndexOf: 3,\n isEmpty: 1, chain: 1, sample: 3, partition: 3, groupBy: 3, countBy: 3,\n sortBy: 3, indexBy: 3, findIndex: 3, findLastIndex: 3};\n\n // Mix in each Underscore method as a proxy to `Collection#models`.\n addUnderscoreMethods(Collection, collectionMethods, 'models');\n\n // Backbone.View\n // -------------\n\n // Backbone Views are almost more convention than they are actual code. A View\n // is simply a JavaScript object that represents a logical chunk of UI in the\n // DOM. This might be a single item, an entire list, a sidebar or panel, or\n // even the surrounding frame which wraps your whole app. Defining a chunk of\n // UI as a **View** allows you to define your DOM events declaratively, without\n // having to worry about render order ... and makes it easy for the view to\n // react to specific changes in the state of your models.\n\n // Creating a Backbone.View creates its initial element outside of the DOM,\n // if an existing element is not provided...\n var View = Backbone.View = function(options) {\n this.cid = _.uniqueId('view');\n _.extend(this, _.pick(options, viewOptions));\n this._ensureElement();\n this.initialize.apply(this, arguments);\n };\n\n // Cached regex to split keys for `delegate`.\n var delegateEventSplitter = /^(\\S+)\\s*(.*)$/;\n\n // List of view options to be set as properties.\n var viewOptions = ['model', 'collection', 'el', 'id', 'attributes', 'className', 'tagName', 'events'];\n\n // Set up all inheritable **Backbone.View** properties and methods.\n _.extend(View.prototype, Events, {\n\n // The default `tagName` of a View's element is `\"div\"`.\n tagName: 'div',\n\n // jQuery delegate for element lookup, scoped to DOM elements within the\n // current view. This should be preferred to global lookups where possible.\n $: function(selector) {\n return this.$el.find(selector);\n },\n\n // Initialize is an empty function by default. Override it with your own\n // initialization logic.\n initialize: function(){},\n\n // **render** is the core function that your view should override, in order\n // to populate its element (`this.el`), with the appropriate HTML. The\n // convention is for **render** to always return `this`.\n render: function() {\n return this;\n },\n\n // Remove this view by taking the element out of the DOM, and removing any\n // applicable Backbone.Events listeners.\n remove: function() {\n this._removeElement();\n this.stopListening();\n return this;\n },\n\n // Remove this view's element from the document and all event listeners\n // attached to it. Exposed for subclasses using an alternative DOM\n // manipulation API.\n _removeElement: function() {\n this.$el.remove();\n },\n\n // Change the view's element (`this.el` property) and re-delegate the\n // view's events on the new element.\n setElement: function(element) {\n this.undelegateEvents();\n this._setElement(element);\n this.delegateEvents();\n return this;\n },\n\n // Creates the `this.el` and `this.$el` references for this view using the\n // given `el`. `el` can be a CSS selector or an HTML string, a jQuery\n // context or an element. Subclasses can override this to utilize an\n // alternative DOM manipulation API and are only required to set the\n // `this.el` property.\n _setElement: function(el) {\n this.$el = el instanceof Backbone.$ ? el : Backbone.$(el);\n this.el = this.$el[0];\n },\n\n // Set callbacks, where `this.events` is a hash of\n //\n // *{\"event selector\": \"callback\"}*\n //\n // {\n // 'mousedown .title': 'edit',\n // 'click .button': 'save',\n // 'click .open': function(e) { ... }\n // }\n //\n // pairs. Callbacks will be bound to the view, with `this` set properly.\n // Uses event delegation for efficiency.\n // Omitting the selector binds the event to `this.el`.\n delegateEvents: function(events) {\n events || (events = _.result(this, 'events'));\n if (!events) return this;\n this.undelegateEvents();\n for (var key in events) {\n var method = events[key];\n if (!_.isFunction(method)) method = this[method];\n if (!method) continue;\n var match = key.match(delegateEventSplitter);\n this.delegate(match[1], match[2], _.bind(method, this));\n }\n return this;\n },\n\n // Add a single event listener to the view's element (or a child element\n // using `selector`). This only works for delegate-able events: not `focus`,\n // `blur`, and not `change`, `submit`, and `reset` in Internet Explorer.\n delegate: function(eventName, selector, listener) {\n this.$el.on(eventName + '.delegateEvents' + this.cid, selector, listener);\n return this;\n },\n\n // Clears all callbacks previously bound to the view by `delegateEvents`.\n // You usually don't need to use this, but may wish to if you have multiple\n // Backbone views attached to the same DOM element.\n undelegateEvents: function() {\n if (this.$el) this.$el.off('.delegateEvents' + this.cid);\n return this;\n },\n\n // A finer-grained `undelegateEvents` for removing a single delegated event.\n // `selector` and `listener` are both optional.\n undelegate: function(eventName, selector, listener) {\n this.$el.off(eventName + '.delegateEvents' + this.cid, selector, listener);\n return this;\n },\n\n // Produces a DOM element to be assigned to your view. Exposed for\n // subclasses using an alternative DOM manipulation API.\n _createElement: function(tagName) {\n return document.createElement(tagName);\n },\n\n // Ensure that the View has a DOM element to render into.\n // If `this.el` is a string, pass it through `$()`, take the first\n // matching element, and re-assign it to `el`. Otherwise, create\n // an element from the `id`, `className` and `tagName` properties.\n _ensureElement: function() {\n if (!this.el) {\n var attrs = _.extend({}, _.result(this, 'attributes'));\n if (this.id) attrs.id = _.result(this, 'id');\n if (this.className) attrs['class'] = _.result(this, 'className');\n this.setElement(this._createElement(_.result(this, 'tagName')));\n this._setAttributes(attrs);\n } else {\n this.setElement(_.result(this, 'el'));\n }\n },\n\n // Set attributes from a hash on this view's element. Exposed for\n // subclasses using an alternative DOM manipulation API.\n _setAttributes: function(attributes) {\n this.$el.attr(attributes);\n }\n\n });\n\n // Backbone.sync\n // -------------\n\n // Override this function to change the manner in which Backbone persists\n // models to the server. You will be passed the type of request, and the\n // model in question. By default, makes a RESTful Ajax request\n // to the model's `url()`. Some possible customizations could be:\n //\n // * Use `setTimeout` to batch rapid-fire updates into a single request.\n // * Send up the models as XML instead of JSON.\n // * Persist models via WebSockets instead of Ajax.\n //\n // Turn on `Backbone.emulateHTTP` in order to send `PUT` and `DELETE` requests\n // as `POST`, with a `_method` parameter containing the true HTTP method,\n // as well as all requests with the body as `application/x-www-form-urlencoded`\n // instead of `application/json` with the model in a param named `model`.\n // Useful when interfacing with server-side languages like **PHP** that make\n // it difficult to read the body of `PUT` requests.\n Backbone.sync = function(method, model, options) {\n var type = methodMap[method];\n\n // Default options, unless specified.\n _.defaults(options || (options = {}), {\n emulateHTTP: Backbone.emulateHTTP,\n emulateJSON: Backbone.emulateJSON\n });\n\n // Default JSON-request options.\n var params = {type: type, dataType: 'json'};\n\n // Ensure that we have a URL.\n if (!options.url) {\n params.url = _.result(model, 'url') || urlError();\n }\n\n // Ensure that we have the appropriate request data.\n if (options.data == null && model && (method === 'create' || method === 'update' || method === 'patch')) {\n params.contentType = 'application/json';\n params.data = JSON.stringify(options.attrs || model.toJSON(options));\n }\n\n // For older servers, emulate JSON by encoding the request into an HTML-form.\n if (options.emulateJSON) {\n params.contentType = 'application/x-www-form-urlencoded';\n params.data = params.data ? {model: params.data} : {};\n }\n\n // For older servers, emulate HTTP by mimicking the HTTP method with `_method`\n // And an `X-HTTP-Method-Override` header.\n if (options.emulateHTTP && (type === 'PUT' || type === 'DELETE' || type === 'PATCH')) {\n params.type = 'POST';\n if (options.emulateJSON) params.data._method = type;\n var beforeSend = options.beforeSend;\n options.beforeSend = function(xhr) {\n xhr.setRequestHeader('X-HTTP-Method-Override', type);\n if (beforeSend) return beforeSend.apply(this, arguments);\n };\n }\n\n // Don't process data on a non-GET request.\n if (params.type !== 'GET' && !options.emulateJSON) {\n params.processData = false;\n }\n\n // Pass along `textStatus` and `errorThrown` from jQuery.\n var error = options.error;\n options.error = function(xhr, textStatus, errorThrown) {\n options.textStatus = textStatus;\n options.errorThrown = errorThrown;\n if (error) error.call(options.context, xhr, textStatus, errorThrown);\n };\n\n // Make the request, allowing the user to override any Ajax options.\n var xhr = options.xhr = Backbone.ajax(_.extend(params, options));\n model.trigger('request', model, xhr, options);\n return xhr;\n };\n\n // Map from CRUD to HTTP for our default `Backbone.sync` implementation.\n var methodMap = {\n 'create': 'POST',\n 'update': 'PUT',\n 'patch': 'PATCH',\n 'delete': 'DELETE',\n 'read': 'GET'\n };\n\n // Set the default implementation of `Backbone.ajax` to proxy through to `$`.\n // Override this if you'd like to use a different library.\n Backbone.ajax = function() {\n return Backbone.$.ajax.apply(Backbone.$, arguments);\n };\n\n // Backbone.Router\n // ---------------\n\n // Routers map faux-URLs to actions, and fire events when routes are\n // matched. Creating a new one sets its `routes` hash, if not set statically.\n var Router = Backbone.Router = function(options) {\n options || (options = {});\n if (options.routes) this.routes = options.routes;\n this._bindRoutes();\n this.initialize.apply(this, arguments);\n };\n\n // Cached regular expressions for matching named param parts and splatted\n // parts of route strings.\n var optionalParam = /\\((.*?)\\)/g;\n var namedParam = /(\\(\\?)?:\\w+/g;\n var splatParam = /\\*\\w+/g;\n var escapeRegExp = /[\\-{}\\[\\]+?.,\\\\\\^$|#\\s]/g;\n\n // Set up all inheritable **Backbone.Router** properties and methods.\n _.extend(Router.prototype, Events, {\n\n // Initialize is an empty function by default. Override it with your own\n // initialization logic.\n initialize: function(){},\n\n // Manually bind a single named route to a callback. For example:\n //\n // this.route('search/:query/p:num', 'search', function(query, num) {\n // ...\n // });\n //\n route: function(route, name, callback) {\n if (!_.isRegExp(route)) route = this._routeToRegExp(route);\n if (_.isFunction(name)) {\n callback = name;\n name = '';\n }\n if (!callback) callback = this[name];\n var router = this;\n Backbone.history.route(route, function(fragment) {\n var args = router._extractParameters(route, fragment);\n if (router.execute(callback, args, name) !== false) {\n router.trigger.apply(router, ['route:' + name].concat(args));\n router.trigger('route', name, args);\n Backbone.history.trigger('route', router, name, args);\n }\n });\n return this;\n },\n\n // Execute a route handler with the provided parameters. This is an\n // excellent place to do pre-route setup or post-route cleanup.\n execute: function(callback, args, name) {\n if (callback) callback.apply(this, args);\n },\n\n // Simple proxy to `Backbone.history` to save a fragment into the history.\n navigate: function(fragment, options) {\n Backbone.history.navigate(fragment, options);\n return this;\n },\n\n // Bind all defined routes to `Backbone.history`. We have to reverse the\n // order of the routes here to support behavior where the most general\n // routes can be defined at the bottom of the route map.\n _bindRoutes: function() {\n if (!this.routes) return;\n this.routes = _.result(this, 'routes');\n var route, routes = _.keys(this.routes);\n while ((route = routes.pop()) != null) {\n this.route(route, this.routes[route]);\n }\n },\n\n // Convert a route string into a regular expression, suitable for matching\n // against the current location hash.\n _routeToRegExp: function(route) {\n route = route.replace(escapeRegExp, '\\\\$&')\n .replace(optionalParam, '(?:$1)?')\n .replace(namedParam, function(match, optional) {\n return optional ? match : '([^/?]+)';\n })\n .replace(splatParam, '([^?]*?)');\n return new RegExp('^' + route + '(?:\\\\?([\\\\s\\\\S]*))?$');\n },\n\n // Given a route, and a URL fragment that it matches, return the array of\n // extracted decoded parameters. Empty or unmatched parameters will be\n // treated as `null` to normalize cross-browser behavior.\n _extractParameters: function(route, fragment) {\n var params = route.exec(fragment).slice(1);\n return _.map(params, function(param, i) {\n // Don't decode the search params.\n if (i === params.length - 1) return param || null;\n return param ? decodeURIComponent(param) : null;\n });\n }\n\n });\n\n // Backbone.History\n // ----------------\n\n // Handles cross-browser history management, based on either\n // [pushState](http://diveintohtml5.info/history.html) and real URLs, or\n // [onhashchange](https://developer.mozilla.org/en-US/docs/DOM/window.onhashchange)\n // and URL fragments. If the browser supports neither (old IE, natch),\n // falls back to polling.\n var History = Backbone.History = function() {\n this.handlers = [];\n this.checkUrl = _.bind(this.checkUrl, this);\n\n // Ensure that `History` can be used outside of the browser.\n if (typeof window !== 'undefined') {\n this.location = window.location;\n this.history = window.history;\n }\n };\n\n // Cached regex for stripping a leading hash/slash and trailing space.\n var routeStripper = /^[#\\/]|\\s+$/g;\n\n // Cached regex for stripping leading and trailing slashes.\n var rootStripper = /^\\/+|\\/+$/g;\n\n // Cached regex for stripping urls of hash.\n var pathStripper = /#.*$/;\n\n // Has the history handling already been started?\n History.started = false;\n\n // Set up all inheritable **Backbone.History** properties and methods.\n _.extend(History.prototype, Events, {\n\n // The default interval to poll for hash changes, if necessary, is\n // twenty times a second.\n interval: 50,\n\n // Are we at the app root?\n atRoot: function() {\n var path = this.location.pathname.replace(/[^\\/]$/, '$&/');\n return path === this.root && !this.getSearch();\n },\n\n // Does the pathname match the root?\n matchRoot: function() {\n var path = this.decodeFragment(this.location.pathname);\n var rootPath = path.slice(0, this.root.length - 1) + '/';\n return rootPath === this.root;\n },\n\n // Unicode characters in `location.pathname` are percent encoded so they're\n // decoded for comparison. `%25` should not be decoded since it may be part\n // of an encoded parameter.\n decodeFragment: function(fragment) {\n return decodeURI(fragment.replace(/%25/g, '%2525'));\n },\n\n // In IE6, the hash fragment and search params are incorrect if the\n // fragment contains `?`.\n getSearch: function() {\n var match = this.location.href.replace(/#.*/, '').match(/\\?.+/);\n return match ? match[0] : '';\n },\n\n // Gets the true hash value. Cannot use location.hash directly due to bug\n // in Firefox where location.hash will always be decoded.\n getHash: function(window) {\n var match = (window || this).location.href.match(/#(.*)$/);\n return match ? match[1] : '';\n },\n\n // Get the pathname and search params, without the root.\n getPath: function() {\n var path = this.decodeFragment(\n this.location.pathname + this.getSearch()\n ).slice(this.root.length - 1);\n return path.charAt(0) === '/' ? path.slice(1) : path;\n },\n\n // Get the cross-browser normalized URL fragment from the path or hash.\n getFragment: function(fragment) {\n if (fragment == null) {\n if (this._usePushState || !this._wantsHashChange) {\n fragment = this.getPath();\n } else {\n fragment = this.getHash();\n }\n }\n return fragment.replace(routeStripper, '');\n },\n\n // Start the hash change handling, returning `true` if the current URL matches\n // an existing route, and `false` otherwise.\n start: function(options) {\n if (History.started) throw new Error('Backbone.history has already been started');\n History.started = true;\n\n // Figure out the initial configuration. Do we need an iframe?\n // Is pushState desired ... is it available?\n this.options = _.extend({root: '/'}, this.options, options);\n this.root = this.options.root;\n this._wantsHashChange = this.options.hashChange !== false;\n this._hasHashChange = 'onhashchange' in window && (document.documentMode === void 0 || document.documentMode > 7);\n this._useHashChange = this._wantsHashChange && this._hasHashChange;\n this._wantsPushState = !!this.options.pushState;\n this._hasPushState = !!(this.history && this.history.pushState);\n this._usePushState = this._wantsPushState && this._hasPushState;\n this.fragment = this.getFragment();\n\n // Normalize root to always include a leading and trailing slash.\n this.root = ('/' + this.root + '/').replace(rootStripper, '/');\n\n // Transition from hashChange to pushState or vice versa if both are\n // requested.\n if (this._wantsHashChange && this._wantsPushState) {\n\n // If we've started off with a route from a `pushState`-enabled\n // browser, but we're currently in a browser that doesn't support it...\n if (!this._hasPushState && !this.atRoot()) {\n var rootPath = this.root.slice(0, -1) || '/';\n this.location.replace(rootPath + '#' + this.getPath());\n // Return immediately as browser will do redirect to new url\n return true;\n\n // Or if we've started out with a hash-based route, but we're currently\n // in a browser where it could be `pushState`-based instead...\n } else if (this._hasPushState && this.atRoot()) {\n this.navigate(this.getHash(), {replace: true});\n }\n\n }\n\n // Proxy an iframe to handle location events if the browser doesn't\n // support the `hashchange` event, HTML5 history, or the user wants\n // `hashChange` but not `pushState`.\n if (!this._hasHashChange && this._wantsHashChange && !this._usePushState) {\n this.iframe = document.createElement('iframe');\n this.iframe.src = 'javascript:0';\n this.iframe.style.display = 'none';\n this.iframe.tabIndex = -1;\n var body = document.body;\n // Using `appendChild` will throw on IE < 9 if the document is not ready.\n var iWindow = body.insertBefore(this.iframe, body.firstChild).contentWindow;\n iWindow.document.open();\n iWindow.document.close();\n iWindow.location.hash = '#' + this.fragment;\n }\n\n // Add a cross-platform `addEventListener` shim for older browsers.\n var addEventListener = window.addEventListener || function(eventName, listener) {\n return attachEvent('on' + eventName, listener);\n };\n\n // Depending on whether we're using pushState or hashes, and whether\n // 'onhashchange' is supported, determine how we check the URL state.\n if (this._usePushState) {\n addEventListener('popstate', this.checkUrl, false);\n } else if (this._useHashChange && !this.iframe) {\n addEventListener('hashchange', this.checkUrl, false);\n } else if (this._wantsHashChange) {\n this._checkUrlInterval = setInterval(this.checkUrl, this.interval);\n }\n\n if (!this.options.silent) return this.loadUrl();\n },\n\n // Disable Backbone.history, perhaps temporarily. Not useful in a real app,\n // but possibly useful for unit testing Routers.\n stop: function() {\n // Add a cross-platform `removeEventListener` shim for older browsers.\n var removeEventListener = window.removeEventListener || function(eventName, listener) {\n return detachEvent('on' + eventName, listener);\n };\n\n // Remove window listeners.\n if (this._usePushState) {\n removeEventListener('popstate', this.checkUrl, false);\n } else if (this._useHashChange && !this.iframe) {\n removeEventListener('hashchange', this.checkUrl, false);\n }\n\n // Clean up the iframe if necessary.\n if (this.iframe) {\n document.body.removeChild(this.iframe);\n this.iframe = null;\n }\n\n // Some environments will throw when clearing an undefined interval.\n if (this._checkUrlInterval) clearInterval(this._checkUrlInterval);\n History.started = false;\n },\n\n // Add a route to be tested when the fragment changes. Routes added later\n // may override previous routes.\n route: function(route, callback) {\n this.handlers.unshift({route: route, callback: callback});\n },\n\n // Checks the current URL to see if it has changed, and if it has,\n // calls `loadUrl`, normalizing across the hidden iframe.\n checkUrl: function(e) {\n var current = this.getFragment();\n\n // If the user pressed the back button, the iframe's hash will have\n // changed and we should use that for comparison.\n if (current === this.fragment && this.iframe) {\n current = this.getHash(this.iframe.contentWindow);\n }\n\n if (current === this.fragment) return false;\n if (this.iframe) this.navigate(current);\n this.loadUrl();\n },\n\n // Attempt to load the current URL fragment. If a route succeeds with a\n // match, returns `true`. If no defined routes matches the fragment,\n // returns `false`.\n loadUrl: function(fragment) {\n // If the root doesn't match, no routes can match either.\n if (!this.matchRoot()) return false;\n fragment = this.fragment = this.getFragment(fragment);\n return _.some(this.handlers, function(handler) {\n if (handler.route.test(fragment)) {\n handler.callback(fragment);\n return true;\n }\n });\n },\n\n // Save a fragment into the hash history, or replace the URL state if the\n // 'replace' option is passed. You are responsible for properly URL-encoding\n // the fragment in advance.\n //\n // The options object can contain `trigger: true` if you wish to have the\n // route callback be fired (not usually desirable), or `replace: true`, if\n // you wish to modify the current URL without adding an entry to the history.\n navigate: function(fragment, options) {\n if (!History.started) return false;\n if (!options || options === true) options = {trigger: !!options};\n\n // Normalize the fragment.\n fragment = this.getFragment(fragment || '');\n\n // Don't include a trailing slash on the root.\n var rootPath = this.root;\n if (fragment === '' || fragment.charAt(0) === '?') {\n rootPath = rootPath.slice(0, -1) || '/';\n }\n var url = rootPath + fragment;\n\n // Strip the hash and decode for matching.\n fragment = this.decodeFragment(fragment.replace(pathStripper, ''));\n\n if (this.fragment === fragment) return;\n this.fragment = fragment;\n\n // If pushState is available, we use it to set the fragment as a real URL.\n if (this._usePushState) {\n this.history[options.replace ? 'replaceState' : 'pushState']({}, document.title, url);\n\n // If hash changes haven't been explicitly disabled, update the hash\n // fragment to store history.\n } else if (this._wantsHashChange) {\n this._updateHash(this.location, fragment, options.replace);\n if (this.iframe && fragment !== this.getHash(this.iframe.contentWindow)) {\n var iWindow = this.iframe.contentWindow;\n\n // Opening and closing the iframe tricks IE7 and earlier to push a\n // history entry on hash-tag change. When replace is true, we don't\n // want this.\n if (!options.replace) {\n iWindow.document.open();\n iWindow.document.close();\n }\n\n this._updateHash(iWindow.location, fragment, options.replace);\n }\n\n // If you've told us that you explicitly don't want fallback hashchange-\n // based history, then `navigate` becomes a page refresh.\n } else {\n return this.location.assign(url);\n }\n if (options.trigger) return this.loadUrl(fragment);\n },\n\n // Update the hash location, either replacing the current entry, or adding\n // a new one to the browser history.\n _updateHash: function(location, fragment, replace) {\n if (replace) {\n var href = location.href.replace(/(javascript:|#).*$/, '');\n location.replace(href + '#' + fragment);\n } else {\n // Some browsers require that `hash` contains a leading #.\n location.hash = '#' + fragment;\n }\n }\n\n });\n\n // Create the default Backbone.history.\n Backbone.history = new History;\n\n // Helpers\n // -------\n\n // Helper function to correctly set up the prototype chain for subclasses.\n // Similar to `goog.inherits`, but uses a hash of prototype properties and\n // class properties to be extended.\n var extend = function(protoProps, staticProps) {\n var parent = this;\n var child;\n\n // The constructor function for the new subclass is either defined by you\n // (the \"constructor\" property in your `extend` definition), or defaulted\n // by us to simply call the parent constructor.\n if (protoProps && _.has(protoProps, 'constructor')) {\n child = protoProps.constructor;\n } else {\n child = function(){ return parent.apply(this, arguments); };\n }\n\n // Add static properties to the constructor function, if supplied.\n _.extend(child, parent, staticProps);\n\n // Set the prototype chain to inherit from `parent`, without calling\n // `parent`'s constructor function and add the prototype properties.\n child.prototype = _.create(parent.prototype, protoProps);\n child.prototype.constructor = child;\n\n // Set a convenience property in case the parent's prototype is needed\n // later.\n child.__super__ = parent.prototype;\n\n return child;\n };\n\n // Set up inheritance for the model, collection, router, view and history.\n Model.extend = Collection.extend = Router.extend = View.extend = History.extend = extend;\n\n // Throw an error when a URL is needed, and none is supplied.\n var urlError = function() {\n throw new Error('A \"url\" property or function must be specified');\n };\n\n // Wrap an optional error callback with a fallback error event.\n var wrapError = function(model, options) {\n var error = options.error;\n options.error = function(resp) {\n if (error) error.call(options.context, model, resp, options);\n model.trigger('error', model, resp, options);\n };\n };\n\n return Backbone;\n});\n","(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"codemirror/lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"codemirror/lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\n CodeMirror.extendMode(\"css\", {\n commentStart: \"/*\",\n commentEnd: \"*/\",\n newlineAfterToken: function(_type, content) {\n return /^[;{}]$/.test(content);\n }\n });\n\n CodeMirror.extendMode(\"javascript\", {\n commentStart: \"/*\",\n commentEnd: \"*/\",\n // FIXME semicolons inside of for\n newlineAfterToken: function(_type, content, textAfter, state) {\n if (this.jsonMode) {\n return /^[\\[,{]$/.test(content) || /^}/.test(textAfter);\n } else {\n if (content == \";\" && state.lexical && state.lexical.type == \")\") return false;\n return /^[;{}]$/.test(content) && !/^;/.test(textAfter);\n }\n }\n });\n\n var inlineElements = /^(a|abbr|acronym|area|base|bdo|big|br|button|caption|cite|code|col|colgroup|dd|del|dfn|em|frame|hr|iframe|img|input|ins|kbd|label|legend|link|map|object|optgroup|option|param|q|samp|script|select|small|span|strong|sub|sup|textarea|tt|var)$/;\n\n CodeMirror.extendMode(\"xml\", {\n commentStart: \"\",\n newlineAfterToken: function(type, content, textAfter, state) {\n var inline = false;\n if (this.configuration == \"html\")\n inline = state.context ? inlineElements.test(state.context.tagName) : false;\n return !inline && ((type == \"tag\" && />$/.test(content) && state.context) ||\n /^ -1 && endIndex > -1 && endIndex > startIndex) {\n // Take string till comment start\n selText = selText.substr(0, startIndex) +\n // From comment start till comment end\n selText.substring(startIndex + curMode.commentStart.length, endIndex) +\n // From comment end till string end\n selText.substr(endIndex + curMode.commentEnd.length);\n }\n cm.replaceRange(selText, from, to);\n }\n });\n });\n\n // Applies automatic mode-aware indentation to the specified range\n CodeMirror.defineExtension(\"autoIndentRange\", function (from, to) {\n var cmInstance = this;\n this.operation(function () {\n for (var i = from.line; i <= to.line; i++) {\n cmInstance.indentLine(i, \"smart\");\n }\n });\n });\n\n // Applies automatic formatting to the specified range\n CodeMirror.defineExtension(\"autoFormatRange\", function (from, to) {\n var cm = this;\n var outer = cm.getMode(), text = cm.getRange(from, to).split(\"\\n\");\n var state = CodeMirror.copyState(outer, cm.getTokenAt(from).state);\n var tabSize = cm.getOption(\"tabSize\");\n\n var out = \"\", lines = 0, atSol = from.ch === 0;\n function newline() {\n out += \"\\n\";\n atSol = true;\n ++lines;\n }\n\n for (var i = 0; i < text.length; ++i) {\n var stream = new CodeMirror.StringStream(text[i], tabSize);\n while (!stream.eol()) {\n var inner = CodeMirror.innerMode(outer, state);\n var style = outer.token(stream, state), cur = stream.current();\n stream.start = stream.pos;\n if (!atSol || /\\S/.test(cur)) {\n out += cur;\n atSol = false;\n }\n if (!atSol && inner.mode.newlineAfterToken &&\n inner.mode.newlineAfterToken(style, cur, stream.string.slice(stream.pos) || text[i+1] || \"\", inner.state))\n newline();\n }\n if (!stream.pos && outer.blankLine) outer.blankLine(state);\n if (!atSol && i < text.length - 1) newline();\n }\n\n cm.operation(function () {\n cm.replaceRange(out, from, to);\n for (var cur = from.line + 1, end = from.line + lines; cur <= end; ++cur)\n cm.indentLine(cur, \"smart\");\n cm.setSelection(from, cm.getCursor(false));\n });\n });\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n// This is CodeMirror (https://codemirror.net), a code editor\n// implemented in JavaScript on top of the browser's DOM.\n//\n// You can find some technical background for some of the code below\n// at http://marijnhaverbeke.nl/blog/#cm-internals .\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = global || self, global.CodeMirror = factory());\n}(this, (function () { 'use strict';\n\n // Kludges for bugs and behavior differences that can't be feature\n // detected are enabled based on userAgent etc sniffing.\n var userAgent = navigator.userAgent;\n var platform = navigator.platform;\n\n var gecko = /gecko\\/\\d/i.test(userAgent);\n var ie_upto10 = /MSIE \\d/.test(userAgent);\n var ie_11up = /Trident\\/(?:[7-9]|\\d{2,})\\..*rv:(\\d+)/.exec(userAgent);\n var edge = /Edge\\/(\\d+)/.exec(userAgent);\n var ie = ie_upto10 || ie_11up || edge;\n var ie_version = ie && (ie_upto10 ? document.documentMode || 6 : +(edge || ie_11up)[1]);\n var webkit = !edge && /WebKit\\//.test(userAgent);\n var qtwebkit = webkit && /Qt\\/\\d+\\.\\d+/.test(userAgent);\n var chrome = !edge && /Chrome\\//.test(userAgent);\n var presto = /Opera\\//.test(userAgent);\n var safari = /Apple Computer/.test(navigator.vendor);\n var mac_geMountainLion = /Mac OS X 1\\d\\D([8-9]|\\d\\d)\\D/.test(userAgent);\n var phantom = /PhantomJS/.test(userAgent);\n\n var ios = safari && (/Mobile\\/\\w+/.test(userAgent) || navigator.maxTouchPoints > 2);\n var android = /Android/.test(userAgent);\n // This is woefully incomplete. Suggestions for alternative methods welcome.\n var mobile = ios || android || /webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(userAgent);\n var mac = ios || /Mac/.test(platform);\n var chromeOS = /\\bCrOS\\b/.test(userAgent);\n var windows = /win/i.test(platform);\n\n var presto_version = presto && userAgent.match(/Version\\/(\\d*\\.\\d*)/);\n if (presto_version) { presto_version = Number(presto_version[1]); }\n if (presto_version && presto_version >= 15) { presto = false; webkit = true; }\n // Some browsers use the wrong event properties to signal cmd/ctrl on OS X\n var flipCtrlCmd = mac && (qtwebkit || presto && (presto_version == null || presto_version < 12.11));\n var captureRightClick = gecko || (ie && ie_version >= 9);\n\n function classTest(cls) { return new RegExp(\"(^|\\\\s)\" + cls + \"(?:$|\\\\s)\\\\s*\") }\n\n var rmClass = function(node, cls) {\n var current = node.className;\n var match = classTest(cls).exec(current);\n if (match) {\n var after = current.slice(match.index + match[0].length);\n node.className = current.slice(0, match.index) + (after ? match[1] + after : \"\");\n }\n };\n\n function removeChildren(e) {\n for (var count = e.childNodes.length; count > 0; --count)\n { e.removeChild(e.firstChild); }\n return e\n }\n\n function removeChildrenAndAdd(parent, e) {\n return removeChildren(parent).appendChild(e)\n }\n\n function elt(tag, content, className, style) {\n var e = document.createElement(tag);\n if (className) { e.className = className; }\n if (style) { e.style.cssText = style; }\n if (typeof content == \"string\") { e.appendChild(document.createTextNode(content)); }\n else if (content) { for (var i = 0; i < content.length; ++i) { e.appendChild(content[i]); } }\n return e\n }\n // wrapper for elt, which removes the elt from the accessibility tree\n function eltP(tag, content, className, style) {\n var e = elt(tag, content, className, style);\n e.setAttribute(\"role\", \"presentation\");\n return e\n }\n\n var range;\n if (document.createRange) { range = function(node, start, end, endNode) {\n var r = document.createRange();\n r.setEnd(endNode || node, end);\n r.setStart(node, start);\n return r\n }; }\n else { range = function(node, start, end) {\n var r = document.body.createTextRange();\n try { r.moveToElementText(node.parentNode); }\n catch(e) { return r }\n r.collapse(true);\n r.moveEnd(\"character\", end);\n r.moveStart(\"character\", start);\n return r\n }; }\n\n function contains(parent, child) {\n if (child.nodeType == 3) // Android browser always returns false when child is a textnode\n { child = child.parentNode; }\n if (parent.contains)\n { return parent.contains(child) }\n do {\n if (child.nodeType == 11) { child = child.host; }\n if (child == parent) { return true }\n } while (child = child.parentNode)\n }\n\n function activeElt() {\n // IE and Edge may throw an \"Unspecified Error\" when accessing document.activeElement.\n // IE < 10 will throw when accessed while the page is loading or in an iframe.\n // IE > 9 and Edge will throw when accessed in an iframe if document.body is unavailable.\n var activeElement;\n try {\n activeElement = document.activeElement;\n } catch(e) {\n activeElement = document.body || null;\n }\n while (activeElement && activeElement.shadowRoot && activeElement.shadowRoot.activeElement)\n { activeElement = activeElement.shadowRoot.activeElement; }\n return activeElement\n }\n\n function addClass(node, cls) {\n var current = node.className;\n if (!classTest(cls).test(current)) { node.className += (current ? \" \" : \"\") + cls; }\n }\n function joinClasses(a, b) {\n var as = a.split(\" \");\n for (var i = 0; i < as.length; i++)\n { if (as[i] && !classTest(as[i]).test(b)) { b += \" \" + as[i]; } }\n return b\n }\n\n var selectInput = function(node) { node.select(); };\n if (ios) // Mobile Safari apparently has a bug where select() is broken.\n { selectInput = function(node) { node.selectionStart = 0; node.selectionEnd = node.value.length; }; }\n else if (ie) // Suppress mysterious IE10 errors\n { selectInput = function(node) { try { node.select(); } catch(_e) {} }; }\n\n function bind(f) {\n var args = Array.prototype.slice.call(arguments, 1);\n return function(){return f.apply(null, args)}\n }\n\n function copyObj(obj, target, overwrite) {\n if (!target) { target = {}; }\n for (var prop in obj)\n { if (obj.hasOwnProperty(prop) && (overwrite !== false || !target.hasOwnProperty(prop)))\n { target[prop] = obj[prop]; } }\n return target\n }\n\n // Counts the column offset in a string, taking tabs into account.\n // Used mostly to find indentation.\n function countColumn(string, end, tabSize, startIndex, startValue) {\n if (end == null) {\n end = string.search(/[^\\s\\u00a0]/);\n if (end == -1) { end = string.length; }\n }\n for (var i = startIndex || 0, n = startValue || 0;;) {\n var nextTab = string.indexOf(\"\\t\", i);\n if (nextTab < 0 || nextTab >= end)\n { return n + (end - i) }\n n += nextTab - i;\n n += tabSize - (n % tabSize);\n i = nextTab + 1;\n }\n }\n\n var Delayed = function() {\n this.id = null;\n this.f = null;\n this.time = 0;\n this.handler = bind(this.onTimeout, this);\n };\n Delayed.prototype.onTimeout = function (self) {\n self.id = 0;\n if (self.time <= +new Date) {\n self.f();\n } else {\n setTimeout(self.handler, self.time - +new Date);\n }\n };\n Delayed.prototype.set = function (ms, f) {\n this.f = f;\n var time = +new Date + ms;\n if (!this.id || time < this.time) {\n clearTimeout(this.id);\n this.id = setTimeout(this.handler, ms);\n this.time = time;\n }\n };\n\n function indexOf(array, elt) {\n for (var i = 0; i < array.length; ++i)\n { if (array[i] == elt) { return i } }\n return -1\n }\n\n // Number of pixels added to scroller and sizer to hide scrollbar\n var scrollerGap = 50;\n\n // Returned or thrown by various protocols to signal 'I'm not\n // handling this'.\n var Pass = {toString: function(){return \"CodeMirror.Pass\"}};\n\n // Reused option objects for setSelection & friends\n var sel_dontScroll = {scroll: false}, sel_mouse = {origin: \"*mouse\"}, sel_move = {origin: \"+move\"};\n\n // The inverse of countColumn -- find the offset that corresponds to\n // a particular column.\n function findColumn(string, goal, tabSize) {\n for (var pos = 0, col = 0;;) {\n var nextTab = string.indexOf(\"\\t\", pos);\n if (nextTab == -1) { nextTab = string.length; }\n var skipped = nextTab - pos;\n if (nextTab == string.length || col + skipped >= goal)\n { return pos + Math.min(skipped, goal - col) }\n col += nextTab - pos;\n col += tabSize - (col % tabSize);\n pos = nextTab + 1;\n if (col >= goal) { return pos }\n }\n }\n\n var spaceStrs = [\"\"];\n function spaceStr(n) {\n while (spaceStrs.length <= n)\n { spaceStrs.push(lst(spaceStrs) + \" \"); }\n return spaceStrs[n]\n }\n\n function lst(arr) { return arr[arr.length-1] }\n\n function map(array, f) {\n var out = [];\n for (var i = 0; i < array.length; i++) { out[i] = f(array[i], i); }\n return out\n }\n\n function insertSorted(array, value, score) {\n var pos = 0, priority = score(value);\n while (pos < array.length && score(array[pos]) <= priority) { pos++; }\n array.splice(pos, 0, value);\n }\n\n function nothing() {}\n\n function createObj(base, props) {\n var inst;\n if (Object.create) {\n inst = Object.create(base);\n } else {\n nothing.prototype = base;\n inst = new nothing();\n }\n if (props) { copyObj(props, inst); }\n return inst\n }\n\n var nonASCIISingleCaseWordChar = /[\\u00df\\u0587\\u0590-\\u05f4\\u0600-\\u06ff\\u3040-\\u309f\\u30a0-\\u30ff\\u3400-\\u4db5\\u4e00-\\u9fcc\\uac00-\\ud7af]/;\n function isWordCharBasic(ch) {\n return /\\w/.test(ch) || ch > \"\\x80\" &&\n (ch.toUpperCase() != ch.toLowerCase() || nonASCIISingleCaseWordChar.test(ch))\n }\n function isWordChar(ch, helper) {\n if (!helper) { return isWordCharBasic(ch) }\n if (helper.source.indexOf(\"\\\\w\") > -1 && isWordCharBasic(ch)) { return true }\n return helper.test(ch)\n }\n\n function isEmpty(obj) {\n for (var n in obj) { if (obj.hasOwnProperty(n) && obj[n]) { return false } }\n return true\n }\n\n // Extending unicode characters. A series of a non-extending char +\n // any number of extending chars is treated as a single unit as far\n // as editing and measuring is concerned. This is not fully correct,\n // since some scripts/fonts/browsers also treat other configurations\n // of code points as a group.\n var extendingChars = /[\\u0300-\\u036f\\u0483-\\u0489\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u065e\\u0670\\u06d6-\\u06dc\\u06de-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07eb-\\u07f3\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0900-\\u0902\\u093c\\u0941-\\u0948\\u094d\\u0951-\\u0955\\u0962\\u0963\\u0981\\u09bc\\u09be\\u09c1-\\u09c4\\u09cd\\u09d7\\u09e2\\u09e3\\u0a01\\u0a02\\u0a3c\\u0a41\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a70\\u0a71\\u0a75\\u0a81\\u0a82\\u0abc\\u0ac1-\\u0ac5\\u0ac7\\u0ac8\\u0acd\\u0ae2\\u0ae3\\u0b01\\u0b3c\\u0b3e\\u0b3f\\u0b41-\\u0b44\\u0b4d\\u0b56\\u0b57\\u0b62\\u0b63\\u0b82\\u0bbe\\u0bc0\\u0bcd\\u0bd7\\u0c3e-\\u0c40\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0cbc\\u0cbf\\u0cc2\\u0cc6\\u0ccc\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0d3e\\u0d41-\\u0d44\\u0d4d\\u0d57\\u0d62\\u0d63\\u0dca\\u0dcf\\u0dd2-\\u0dd4\\u0dd6\\u0ddf\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0eb1\\u0eb4-\\u0eb9\\u0ebb\\u0ebc\\u0ec8-\\u0ecd\\u0f18\\u0f19\\u0f35\\u0f37\\u0f39\\u0f71-\\u0f7e\\u0f80-\\u0f84\\u0f86\\u0f87\\u0f90-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u102d-\\u1030\\u1032-\\u1037\\u1039\\u103a\\u103d\\u103e\\u1058\\u1059\\u105e-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108d\\u109d\\u135f\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b7-\\u17bd\\u17c6\\u17c9-\\u17d3\\u17dd\\u180b-\\u180d\\u18a9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193b\\u1a17\\u1a18\\u1a56\\u1a58-\\u1a5e\\u1a60\\u1a62\\u1a65-\\u1a6c\\u1a73-\\u1a7c\\u1a7f\\u1b00-\\u1b03\\u1b34\\u1b36-\\u1b3a\\u1b3c\\u1b42\\u1b6b-\\u1b73\\u1b80\\u1b81\\u1ba2-\\u1ba5\\u1ba8\\u1ba9\\u1c2c-\\u1c33\\u1c36\\u1c37\\u1cd0-\\u1cd2\\u1cd4-\\u1ce0\\u1ce2-\\u1ce8\\u1ced\\u1dc0-\\u1de6\\u1dfd-\\u1dff\\u200c\\u200d\\u20d0-\\u20f0\\u2cef-\\u2cf1\\u2de0-\\u2dff\\u302a-\\u302f\\u3099\\u309a\\ua66f-\\ua672\\ua67c\\ua67d\\ua6f0\\ua6f1\\ua802\\ua806\\ua80b\\ua825\\ua826\\ua8c4\\ua8e0-\\ua8f1\\ua926-\\ua92d\\ua947-\\ua951\\ua980-\\ua982\\ua9b3\\ua9b6-\\ua9b9\\ua9bc\\uaa29-\\uaa2e\\uaa31\\uaa32\\uaa35\\uaa36\\uaa43\\uaa4c\\uaab0\\uaab2-\\uaab4\\uaab7\\uaab8\\uaabe\\uaabf\\uaac1\\uabe5\\uabe8\\uabed\\udc00-\\udfff\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe26\\uff9e\\uff9f]/;\n function isExtendingChar(ch) { return ch.charCodeAt(0) >= 768 && extendingChars.test(ch) }\n\n // Returns a number from the range [`0`; `str.length`] unless `pos` is outside that range.\n function skipExtendingChars(str, pos, dir) {\n while ((dir < 0 ? pos > 0 : pos < str.length) && isExtendingChar(str.charAt(pos))) { pos += dir; }\n return pos\n }\n\n // Returns the value from the range [`from`; `to`] that satisfies\n // `pred` and is closest to `from`. Assumes that at least `to`\n // satisfies `pred`. Supports `from` being greater than `to`.\n function findFirst(pred, from, to) {\n // At any point we are certain `to` satisfies `pred`, don't know\n // whether `from` does.\n var dir = from > to ? -1 : 1;\n for (;;) {\n if (from == to) { return from }\n var midF = (from + to) / 2, mid = dir < 0 ? Math.ceil(midF) : Math.floor(midF);\n if (mid == from) { return pred(mid) ? from : to }\n if (pred(mid)) { to = mid; }\n else { from = mid + dir; }\n }\n }\n\n // BIDI HELPERS\n\n function iterateBidiSections(order, from, to, f) {\n if (!order) { return f(from, to, \"ltr\", 0) }\n var found = false;\n for (var i = 0; i < order.length; ++i) {\n var part = order[i];\n if (part.from < to && part.to > from || from == to && part.to == from) {\n f(Math.max(part.from, from), Math.min(part.to, to), part.level == 1 ? \"rtl\" : \"ltr\", i);\n found = true;\n }\n }\n if (!found) { f(from, to, \"ltr\"); }\n }\n\n var bidiOther = null;\n function getBidiPartAt(order, ch, sticky) {\n var found;\n bidiOther = null;\n for (var i = 0; i < order.length; ++i) {\n var cur = order[i];\n if (cur.from < ch && cur.to > ch) { return i }\n if (cur.to == ch) {\n if (cur.from != cur.to && sticky == \"before\") { found = i; }\n else { bidiOther = i; }\n }\n if (cur.from == ch) {\n if (cur.from != cur.to && sticky != \"before\") { found = i; }\n else { bidiOther = i; }\n }\n }\n return found != null ? found : bidiOther\n }\n\n // Bidirectional ordering algorithm\n // See http://unicode.org/reports/tr9/tr9-13.html for the algorithm\n // that this (partially) implements.\n\n // One-char codes used for character types:\n // L (L): Left-to-Right\n // R (R): Right-to-Left\n // r (AL): Right-to-Left Arabic\n // 1 (EN): European Number\n // + (ES): European Number Separator\n // % (ET): European Number Terminator\n // n (AN): Arabic Number\n // , (CS): Common Number Separator\n // m (NSM): Non-Spacing Mark\n // b (BN): Boundary Neutral\n // s (B): Paragraph Separator\n // t (S): Segment Separator\n // w (WS): Whitespace\n // N (ON): Other Neutrals\n\n // Returns null if characters are ordered as they appear\n // (left-to-right), or an array of sections ({from, to, level}\n // objects) in the order in which they occur visually.\n var bidiOrdering = (function() {\n // Character types for codepoints 0 to 0xff\n var lowTypes = \"bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN\";\n // Character types for codepoints 0x600 to 0x6f9\n var arabicTypes = \"nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111\";\n function charType(code) {\n if (code <= 0xf7) { return lowTypes.charAt(code) }\n else if (0x590 <= code && code <= 0x5f4) { return \"R\" }\n else if (0x600 <= code && code <= 0x6f9) { return arabicTypes.charAt(code - 0x600) }\n else if (0x6ee <= code && code <= 0x8ac) { return \"r\" }\n else if (0x2000 <= code && code <= 0x200b) { return \"w\" }\n else if (code == 0x200c) { return \"b\" }\n else { return \"L\" }\n }\n\n var bidiRE = /[\\u0590-\\u05f4\\u0600-\\u06ff\\u0700-\\u08ac]/;\n var isNeutral = /[stwN]/, isStrong = /[LRr]/, countsAsLeft = /[Lb1n]/, countsAsNum = /[1n]/;\n\n function BidiSpan(level, from, to) {\n this.level = level;\n this.from = from; this.to = to;\n }\n\n return function(str, direction) {\n var outerType = direction == \"ltr\" ? \"L\" : \"R\";\n\n if (str.length == 0 || direction == \"ltr\" && !bidiRE.test(str)) { return false }\n var len = str.length, types = [];\n for (var i = 0; i < len; ++i)\n { types.push(charType(str.charCodeAt(i))); }\n\n // W1. Examine each non-spacing mark (NSM) in the level run, and\n // change the type of the NSM to the type of the previous\n // character. If the NSM is at the start of the level run, it will\n // get the type of sor.\n for (var i$1 = 0, prev = outerType; i$1 < len; ++i$1) {\n var type = types[i$1];\n if (type == \"m\") { types[i$1] = prev; }\n else { prev = type; }\n }\n\n // W2. Search backwards from each instance of a European number\n // until the first strong type (R, L, AL, or sor) is found. If an\n // AL is found, change the type of the European number to Arabic\n // number.\n // W3. Change all ALs to R.\n for (var i$2 = 0, cur = outerType; i$2 < len; ++i$2) {\n var type$1 = types[i$2];\n if (type$1 == \"1\" && cur == \"r\") { types[i$2] = \"n\"; }\n else if (isStrong.test(type$1)) { cur = type$1; if (type$1 == \"r\") { types[i$2] = \"R\"; } }\n }\n\n // W4. A single European separator between two European numbers\n // changes to a European number. A single common separator between\n // two numbers of the same type changes to that type.\n for (var i$3 = 1, prev$1 = types[0]; i$3 < len - 1; ++i$3) {\n var type$2 = types[i$3];\n if (type$2 == \"+\" && prev$1 == \"1\" && types[i$3+1] == \"1\") { types[i$3] = \"1\"; }\n else if (type$2 == \",\" && prev$1 == types[i$3+1] &&\n (prev$1 == \"1\" || prev$1 == \"n\")) { types[i$3] = prev$1; }\n prev$1 = type$2;\n }\n\n // W5. A sequence of European terminators adjacent to European\n // numbers changes to all European numbers.\n // W6. Otherwise, separators and terminators change to Other\n // Neutral.\n for (var i$4 = 0; i$4 < len; ++i$4) {\n var type$3 = types[i$4];\n if (type$3 == \",\") { types[i$4] = \"N\"; }\n else if (type$3 == \"%\") {\n var end = (void 0);\n for (end = i$4 + 1; end < len && types[end] == \"%\"; ++end) {}\n var replace = (i$4 && types[i$4-1] == \"!\") || (end < len && types[end] == \"1\") ? \"1\" : \"N\";\n for (var j = i$4; j < end; ++j) { types[j] = replace; }\n i$4 = end - 1;\n }\n }\n\n // W7. Search backwards from each instance of a European number\n // until the first strong type (R, L, or sor) is found. If an L is\n // found, then change the type of the European number to L.\n for (var i$5 = 0, cur$1 = outerType; i$5 < len; ++i$5) {\n var type$4 = types[i$5];\n if (cur$1 == \"L\" && type$4 == \"1\") { types[i$5] = \"L\"; }\n else if (isStrong.test(type$4)) { cur$1 = type$4; }\n }\n\n // N1. A sequence of neutrals takes the direction of the\n // surrounding strong text if the text on both sides has the same\n // direction. European and Arabic numbers act as if they were R in\n // terms of their influence on neutrals. Start-of-level-run (sor)\n // and end-of-level-run (eor) are used at level run boundaries.\n // N2. Any remaining neutrals take the embedding direction.\n for (var i$6 = 0; i$6 < len; ++i$6) {\n if (isNeutral.test(types[i$6])) {\n var end$1 = (void 0);\n for (end$1 = i$6 + 1; end$1 < len && isNeutral.test(types[end$1]); ++end$1) {}\n var before = (i$6 ? types[i$6-1] : outerType) == \"L\";\n var after = (end$1 < len ? types[end$1] : outerType) == \"L\";\n var replace$1 = before == after ? (before ? \"L\" : \"R\") : outerType;\n for (var j$1 = i$6; j$1 < end$1; ++j$1) { types[j$1] = replace$1; }\n i$6 = end$1 - 1;\n }\n }\n\n // Here we depart from the documented algorithm, in order to avoid\n // building up an actual levels array. Since there are only three\n // levels (0, 1, 2) in an implementation that doesn't take\n // explicit embedding into account, we can build up the order on\n // the fly, without following the level-based algorithm.\n var order = [], m;\n for (var i$7 = 0; i$7 < len;) {\n if (countsAsLeft.test(types[i$7])) {\n var start = i$7;\n for (++i$7; i$7 < len && countsAsLeft.test(types[i$7]); ++i$7) {}\n order.push(new BidiSpan(0, start, i$7));\n } else {\n var pos = i$7, at = order.length, isRTL = direction == \"rtl\" ? 1 : 0;\n for (++i$7; i$7 < len && types[i$7] != \"L\"; ++i$7) {}\n for (var j$2 = pos; j$2 < i$7;) {\n if (countsAsNum.test(types[j$2])) {\n if (pos < j$2) { order.splice(at, 0, new BidiSpan(1, pos, j$2)); at += isRTL; }\n var nstart = j$2;\n for (++j$2; j$2 < i$7 && countsAsNum.test(types[j$2]); ++j$2) {}\n order.splice(at, 0, new BidiSpan(2, nstart, j$2));\n at += isRTL;\n pos = j$2;\n } else { ++j$2; }\n }\n if (pos < i$7) { order.splice(at, 0, new BidiSpan(1, pos, i$7)); }\n }\n }\n if (direction == \"ltr\") {\n if (order[0].level == 1 && (m = str.match(/^\\s+/))) {\n order[0].from = m[0].length;\n order.unshift(new BidiSpan(0, 0, m[0].length));\n }\n if (lst(order).level == 1 && (m = str.match(/\\s+$/))) {\n lst(order).to -= m[0].length;\n order.push(new BidiSpan(0, len - m[0].length, len));\n }\n }\n\n return direction == \"rtl\" ? order.reverse() : order\n }\n })();\n\n // Get the bidi ordering for the given line (and cache it). Returns\n // false for lines that are fully left-to-right, and an array of\n // BidiSpan objects otherwise.\n function getOrder(line, direction) {\n var order = line.order;\n if (order == null) { order = line.order = bidiOrdering(line.text, direction); }\n return order\n }\n\n // EVENT HANDLING\n\n // Lightweight event framework. on/off also work on DOM nodes,\n // registering native DOM handlers.\n\n var noHandlers = [];\n\n var on = function(emitter, type, f) {\n if (emitter.addEventListener) {\n emitter.addEventListener(type, f, false);\n } else if (emitter.attachEvent) {\n emitter.attachEvent(\"on\" + type, f);\n } else {\n var map = emitter._handlers || (emitter._handlers = {});\n map[type] = (map[type] || noHandlers).concat(f);\n }\n };\n\n function getHandlers(emitter, type) {\n return emitter._handlers && emitter._handlers[type] || noHandlers\n }\n\n function off(emitter, type, f) {\n if (emitter.removeEventListener) {\n emitter.removeEventListener(type, f, false);\n } else if (emitter.detachEvent) {\n emitter.detachEvent(\"on\" + type, f);\n } else {\n var map = emitter._handlers, arr = map && map[type];\n if (arr) {\n var index = indexOf(arr, f);\n if (index > -1)\n { map[type] = arr.slice(0, index).concat(arr.slice(index + 1)); }\n }\n }\n }\n\n function signal(emitter, type /*, values...*/) {\n var handlers = getHandlers(emitter, type);\n if (!handlers.length) { return }\n var args = Array.prototype.slice.call(arguments, 2);\n for (var i = 0; i < handlers.length; ++i) { handlers[i].apply(null, args); }\n }\n\n // The DOM events that CodeMirror handles can be overridden by\n // registering a (non-DOM) handler on the editor for the event name,\n // and preventDefault-ing the event in that handler.\n function signalDOMEvent(cm, e, override) {\n if (typeof e == \"string\")\n { e = {type: e, preventDefault: function() { this.defaultPrevented = true; }}; }\n signal(cm, override || e.type, cm, e);\n return e_defaultPrevented(e) || e.codemirrorIgnore\n }\n\n function signalCursorActivity(cm) {\n var arr = cm._handlers && cm._handlers.cursorActivity;\n if (!arr) { return }\n var set = cm.curOp.cursorActivityHandlers || (cm.curOp.cursorActivityHandlers = []);\n for (var i = 0; i < arr.length; ++i) { if (indexOf(set, arr[i]) == -1)\n { set.push(arr[i]); } }\n }\n\n function hasHandler(emitter, type) {\n return getHandlers(emitter, type).length > 0\n }\n\n // Add on and off methods to a constructor's prototype, to make\n // registering events on such objects more convenient.\n function eventMixin(ctor) {\n ctor.prototype.on = function(type, f) {on(this, type, f);};\n ctor.prototype.off = function(type, f) {off(this, type, f);};\n }\n\n // Due to the fact that we still support jurassic IE versions, some\n // compatibility wrappers are needed.\n\n function e_preventDefault(e) {\n if (e.preventDefault) { e.preventDefault(); }\n else { e.returnValue = false; }\n }\n function e_stopPropagation(e) {\n if (e.stopPropagation) { e.stopPropagation(); }\n else { e.cancelBubble = true; }\n }\n function e_defaultPrevented(e) {\n return e.defaultPrevented != null ? e.defaultPrevented : e.returnValue == false\n }\n function e_stop(e) {e_preventDefault(e); e_stopPropagation(e);}\n\n function e_target(e) {return e.target || e.srcElement}\n function e_button(e) {\n var b = e.which;\n if (b == null) {\n if (e.button & 1) { b = 1; }\n else if (e.button & 2) { b = 3; }\n else if (e.button & 4) { b = 2; }\n }\n if (mac && e.ctrlKey && b == 1) { b = 3; }\n return b\n }\n\n // Detect drag-and-drop\n var dragAndDrop = function() {\n // There is *some* kind of drag-and-drop support in IE6-8, but I\n // couldn't get it to work yet.\n if (ie && ie_version < 9) { return false }\n var div = elt('div');\n return \"draggable\" in div || \"dragDrop\" in div\n }();\n\n var zwspSupported;\n function zeroWidthElement(measure) {\n if (zwspSupported == null) {\n var test = elt(\"span\", \"\\u200b\");\n removeChildrenAndAdd(measure, elt(\"span\", [test, document.createTextNode(\"x\")]));\n if (measure.firstChild.offsetHeight != 0)\n { zwspSupported = test.offsetWidth <= 1 && test.offsetHeight > 2 && !(ie && ie_version < 8); }\n }\n var node = zwspSupported ? elt(\"span\", \"\\u200b\") :\n elt(\"span\", \"\\u00a0\", null, \"display: inline-block; width: 1px; margin-right: -1px\");\n node.setAttribute(\"cm-text\", \"\");\n return node\n }\n\n // Feature-detect IE's crummy client rect reporting for bidi text\n var badBidiRects;\n function hasBadBidiRects(measure) {\n if (badBidiRects != null) { return badBidiRects }\n var txt = removeChildrenAndAdd(measure, document.createTextNode(\"A\\u062eA\"));\n var r0 = range(txt, 0, 1).getBoundingClientRect();\n var r1 = range(txt, 1, 2).getBoundingClientRect();\n removeChildren(measure);\n if (!r0 || r0.left == r0.right) { return false } // Safari returns null in some cases (#2780)\n return badBidiRects = (r1.right - r0.right < 3)\n }\n\n // See if \"\".split is the broken IE version, if so, provide an\n // alternative way to split lines.\n var splitLinesAuto = \"\\n\\nb\".split(/\\n/).length != 3 ? function (string) {\n var pos = 0, result = [], l = string.length;\n while (pos <= l) {\n var nl = string.indexOf(\"\\n\", pos);\n if (nl == -1) { nl = string.length; }\n var line = string.slice(pos, string.charAt(nl - 1) == \"\\r\" ? nl - 1 : nl);\n var rt = line.indexOf(\"\\r\");\n if (rt != -1) {\n result.push(line.slice(0, rt));\n pos += rt + 1;\n } else {\n result.push(line);\n pos = nl + 1;\n }\n }\n return result\n } : function (string) { return string.split(/\\r\\n?|\\n/); };\n\n var hasSelection = window.getSelection ? function (te) {\n try { return te.selectionStart != te.selectionEnd }\n catch(e) { return false }\n } : function (te) {\n var range;\n try {range = te.ownerDocument.selection.createRange();}\n catch(e) {}\n if (!range || range.parentElement() != te) { return false }\n return range.compareEndPoints(\"StartToEnd\", range) != 0\n };\n\n var hasCopyEvent = (function () {\n var e = elt(\"div\");\n if (\"oncopy\" in e) { return true }\n e.setAttribute(\"oncopy\", \"return;\");\n return typeof e.oncopy == \"function\"\n })();\n\n var badZoomedRects = null;\n function hasBadZoomedRects(measure) {\n if (badZoomedRects != null) { return badZoomedRects }\n var node = removeChildrenAndAdd(measure, elt(\"span\", \"x\"));\n var normal = node.getBoundingClientRect();\n var fromRange = range(node, 0, 1).getBoundingClientRect();\n return badZoomedRects = Math.abs(normal.left - fromRange.left) > 1\n }\n\n // Known modes, by name and by MIME\n var modes = {}, mimeModes = {};\n\n // Extra arguments are stored as the mode's dependencies, which is\n // used by (legacy) mechanisms like loadmode.js to automatically\n // load a mode. (Preferred mechanism is the require/define calls.)\n function defineMode(name, mode) {\n if (arguments.length > 2)\n { mode.dependencies = Array.prototype.slice.call(arguments, 2); }\n modes[name] = mode;\n }\n\n function defineMIME(mime, spec) {\n mimeModes[mime] = spec;\n }\n\n // Given a MIME type, a {name, ...options} config object, or a name\n // string, return a mode config object.\n function resolveMode(spec) {\n if (typeof spec == \"string\" && mimeModes.hasOwnProperty(spec)) {\n spec = mimeModes[spec];\n } else if (spec && typeof spec.name == \"string\" && mimeModes.hasOwnProperty(spec.name)) {\n var found = mimeModes[spec.name];\n if (typeof found == \"string\") { found = {name: found}; }\n spec = createObj(found, spec);\n spec.name = found.name;\n } else if (typeof spec == \"string\" && /^[\\w\\-]+\\/[\\w\\-]+\\+xml$/.test(spec)) {\n return resolveMode(\"application/xml\")\n } else if (typeof spec == \"string\" && /^[\\w\\-]+\\/[\\w\\-]+\\+json$/.test(spec)) {\n return resolveMode(\"application/json\")\n }\n if (typeof spec == \"string\") { return {name: spec} }\n else { return spec || {name: \"null\"} }\n }\n\n // Given a mode spec (anything that resolveMode accepts), find and\n // initialize an actual mode object.\n function getMode(options, spec) {\n spec = resolveMode(spec);\n var mfactory = modes[spec.name];\n if (!mfactory) { return getMode(options, \"text/plain\") }\n var modeObj = mfactory(options, spec);\n if (modeExtensions.hasOwnProperty(spec.name)) {\n var exts = modeExtensions[spec.name];\n for (var prop in exts) {\n if (!exts.hasOwnProperty(prop)) { continue }\n if (modeObj.hasOwnProperty(prop)) { modeObj[\"_\" + prop] = modeObj[prop]; }\n modeObj[prop] = exts[prop];\n }\n }\n modeObj.name = spec.name;\n if (spec.helperType) { modeObj.helperType = spec.helperType; }\n if (spec.modeProps) { for (var prop$1 in spec.modeProps)\n { modeObj[prop$1] = spec.modeProps[prop$1]; } }\n\n return modeObj\n }\n\n // This can be used to attach properties to mode objects from\n // outside the actual mode definition.\n var modeExtensions = {};\n function extendMode(mode, properties) {\n var exts = modeExtensions.hasOwnProperty(mode) ? modeExtensions[mode] : (modeExtensions[mode] = {});\n copyObj(properties, exts);\n }\n\n function copyState(mode, state) {\n if (state === true) { return state }\n if (mode.copyState) { return mode.copyState(state) }\n var nstate = {};\n for (var n in state) {\n var val = state[n];\n if (val instanceof Array) { val = val.concat([]); }\n nstate[n] = val;\n }\n return nstate\n }\n\n // Given a mode and a state (for that mode), find the inner mode and\n // state at the position that the state refers to.\n function innerMode(mode, state) {\n var info;\n while (mode.innerMode) {\n info = mode.innerMode(state);\n if (!info || info.mode == mode) { break }\n state = info.state;\n mode = info.mode;\n }\n return info || {mode: mode, state: state}\n }\n\n function startState(mode, a1, a2) {\n return mode.startState ? mode.startState(a1, a2) : true\n }\n\n // STRING STREAM\n\n // Fed to the mode parsers, provides helper functions to make\n // parsers more succinct.\n\n var StringStream = function(string, tabSize, lineOracle) {\n this.pos = this.start = 0;\n this.string = string;\n this.tabSize = tabSize || 8;\n this.lastColumnPos = this.lastColumnValue = 0;\n this.lineStart = 0;\n this.lineOracle = lineOracle;\n };\n\n StringStream.prototype.eol = function () {return this.pos >= this.string.length};\n StringStream.prototype.sol = function () {return this.pos == this.lineStart};\n StringStream.prototype.peek = function () {return this.string.charAt(this.pos) || undefined};\n StringStream.prototype.next = function () {\n if (this.pos < this.string.length)\n { return this.string.charAt(this.pos++) }\n };\n StringStream.prototype.eat = function (match) {\n var ch = this.string.charAt(this.pos);\n var ok;\n if (typeof match == \"string\") { ok = ch == match; }\n else { ok = ch && (match.test ? match.test(ch) : match(ch)); }\n if (ok) {++this.pos; return ch}\n };\n StringStream.prototype.eatWhile = function (match) {\n var start = this.pos;\n while (this.eat(match)){}\n return this.pos > start\n };\n StringStream.prototype.eatSpace = function () {\n var start = this.pos;\n while (/[\\s\\u00a0]/.test(this.string.charAt(this.pos))) { ++this.pos; }\n return this.pos > start\n };\n StringStream.prototype.skipToEnd = function () {this.pos = this.string.length;};\n StringStream.prototype.skipTo = function (ch) {\n var found = this.string.indexOf(ch, this.pos);\n if (found > -1) {this.pos = found; return true}\n };\n StringStream.prototype.backUp = function (n) {this.pos -= n;};\n StringStream.prototype.column = function () {\n if (this.lastColumnPos < this.start) {\n this.lastColumnValue = countColumn(this.string, this.start, this.tabSize, this.lastColumnPos, this.lastColumnValue);\n this.lastColumnPos = this.start;\n }\n return this.lastColumnValue - (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0)\n };\n StringStream.prototype.indentation = function () {\n return countColumn(this.string, null, this.tabSize) -\n (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0)\n };\n StringStream.prototype.match = function (pattern, consume, caseInsensitive) {\n if (typeof pattern == \"string\") {\n var cased = function (str) { return caseInsensitive ? str.toLowerCase() : str; };\n var substr = this.string.substr(this.pos, pattern.length);\n if (cased(substr) == cased(pattern)) {\n if (consume !== false) { this.pos += pattern.length; }\n return true\n }\n } else {\n var match = this.string.slice(this.pos).match(pattern);\n if (match && match.index > 0) { return null }\n if (match && consume !== false) { this.pos += match[0].length; }\n return match\n }\n };\n StringStream.prototype.current = function (){return this.string.slice(this.start, this.pos)};\n StringStream.prototype.hideFirstChars = function (n, inner) {\n this.lineStart += n;\n try { return inner() }\n finally { this.lineStart -= n; }\n };\n StringStream.prototype.lookAhead = function (n) {\n var oracle = this.lineOracle;\n return oracle && oracle.lookAhead(n)\n };\n StringStream.prototype.baseToken = function () {\n var oracle = this.lineOracle;\n return oracle && oracle.baseToken(this.pos)\n };\n\n // Find the line object corresponding to the given line number.\n function getLine(doc, n) {\n n -= doc.first;\n if (n < 0 || n >= doc.size) { throw new Error(\"There is no line \" + (n + doc.first) + \" in the document.\") }\n var chunk = doc;\n while (!chunk.lines) {\n for (var i = 0;; ++i) {\n var child = chunk.children[i], sz = child.chunkSize();\n if (n < sz) { chunk = child; break }\n n -= sz;\n }\n }\n return chunk.lines[n]\n }\n\n // Get the part of a document between two positions, as an array of\n // strings.\n function getBetween(doc, start, end) {\n var out = [], n = start.line;\n doc.iter(start.line, end.line + 1, function (line) {\n var text = line.text;\n if (n == end.line) { text = text.slice(0, end.ch); }\n if (n == start.line) { text = text.slice(start.ch); }\n out.push(text);\n ++n;\n });\n return out\n }\n // Get the lines between from and to, as array of strings.\n function getLines(doc, from, to) {\n var out = [];\n doc.iter(from, to, function (line) { out.push(line.text); }); // iter aborts when callback returns truthy value\n return out\n }\n\n // Update the height of a line, propagating the height change\n // upwards to parent nodes.\n function updateLineHeight(line, height) {\n var diff = height - line.height;\n if (diff) { for (var n = line; n; n = n.parent) { n.height += diff; } }\n }\n\n // Given a line object, find its line number by walking up through\n // its parent links.\n function lineNo(line) {\n if (line.parent == null) { return null }\n var cur = line.parent, no = indexOf(cur.lines, line);\n for (var chunk = cur.parent; chunk; cur = chunk, chunk = chunk.parent) {\n for (var i = 0;; ++i) {\n if (chunk.children[i] == cur) { break }\n no += chunk.children[i].chunkSize();\n }\n }\n return no + cur.first\n }\n\n // Find the line at the given vertical position, using the height\n // information in the document tree.\n function lineAtHeight(chunk, h) {\n var n = chunk.first;\n outer: do {\n for (var i$1 = 0; i$1 < chunk.children.length; ++i$1) {\n var child = chunk.children[i$1], ch = child.height;\n if (h < ch) { chunk = child; continue outer }\n h -= ch;\n n += child.chunkSize();\n }\n return n\n } while (!chunk.lines)\n var i = 0;\n for (; i < chunk.lines.length; ++i) {\n var line = chunk.lines[i], lh = line.height;\n if (h < lh) { break }\n h -= lh;\n }\n return n + i\n }\n\n function isLine(doc, l) {return l >= doc.first && l < doc.first + doc.size}\n\n function lineNumberFor(options, i) {\n return String(options.lineNumberFormatter(i + options.firstLineNumber))\n }\n\n // A Pos instance represents a position within the text.\n function Pos(line, ch, sticky) {\n if ( sticky === void 0 ) sticky = null;\n\n if (!(this instanceof Pos)) { return new Pos(line, ch, sticky) }\n this.line = line;\n this.ch = ch;\n this.sticky = sticky;\n }\n\n // Compare two positions, return 0 if they are the same, a negative\n // number when a is less, and a positive number otherwise.\n function cmp(a, b) { return a.line - b.line || a.ch - b.ch }\n\n function equalCursorPos(a, b) { return a.sticky == b.sticky && cmp(a, b) == 0 }\n\n function copyPos(x) {return Pos(x.line, x.ch)}\n function maxPos(a, b) { return cmp(a, b) < 0 ? b : a }\n function minPos(a, b) { return cmp(a, b) < 0 ? a : b }\n\n // Most of the external API clips given positions to make sure they\n // actually exist within the document.\n function clipLine(doc, n) {return Math.max(doc.first, Math.min(n, doc.first + doc.size - 1))}\n function clipPos(doc, pos) {\n if (pos.line < doc.first) { return Pos(doc.first, 0) }\n var last = doc.first + doc.size - 1;\n if (pos.line > last) { return Pos(last, getLine(doc, last).text.length) }\n return clipToLen(pos, getLine(doc, pos.line).text.length)\n }\n function clipToLen(pos, linelen) {\n var ch = pos.ch;\n if (ch == null || ch > linelen) { return Pos(pos.line, linelen) }\n else if (ch < 0) { return Pos(pos.line, 0) }\n else { return pos }\n }\n function clipPosArray(doc, array) {\n var out = [];\n for (var i = 0; i < array.length; i++) { out[i] = clipPos(doc, array[i]); }\n return out\n }\n\n var SavedContext = function(state, lookAhead) {\n this.state = state;\n this.lookAhead = lookAhead;\n };\n\n var Context = function(doc, state, line, lookAhead) {\n this.state = state;\n this.doc = doc;\n this.line = line;\n this.maxLookAhead = lookAhead || 0;\n this.baseTokens = null;\n this.baseTokenPos = 1;\n };\n\n Context.prototype.lookAhead = function (n) {\n var line = this.doc.getLine(this.line + n);\n if (line != null && n > this.maxLookAhead) { this.maxLookAhead = n; }\n return line\n };\n\n Context.prototype.baseToken = function (n) {\n if (!this.baseTokens) { return null }\n while (this.baseTokens[this.baseTokenPos] <= n)\n { this.baseTokenPos += 2; }\n var type = this.baseTokens[this.baseTokenPos + 1];\n return {type: type && type.replace(/( |^)overlay .*/, \"\"),\n size: this.baseTokens[this.baseTokenPos] - n}\n };\n\n Context.prototype.nextLine = function () {\n this.line++;\n if (this.maxLookAhead > 0) { this.maxLookAhead--; }\n };\n\n Context.fromSaved = function (doc, saved, line) {\n if (saved instanceof SavedContext)\n { return new Context(doc, copyState(doc.mode, saved.state), line, saved.lookAhead) }\n else\n { return new Context(doc, copyState(doc.mode, saved), line) }\n };\n\n Context.prototype.save = function (copy) {\n var state = copy !== false ? copyState(this.doc.mode, this.state) : this.state;\n return this.maxLookAhead > 0 ? new SavedContext(state, this.maxLookAhead) : state\n };\n\n\n // Compute a style array (an array starting with a mode generation\n // -- for invalidation -- followed by pairs of end positions and\n // style strings), which is used to highlight the tokens on the\n // line.\n function highlightLine(cm, line, context, forceToEnd) {\n // A styles array always starts with a number identifying the\n // mode/overlays that it is based on (for easy invalidation).\n var st = [cm.state.modeGen], lineClasses = {};\n // Compute the base array of styles\n runMode(cm, line.text, cm.doc.mode, context, function (end, style) { return st.push(end, style); },\n lineClasses, forceToEnd);\n var state = context.state;\n\n // Run overlays, adjust style array.\n var loop = function ( o ) {\n context.baseTokens = st;\n var overlay = cm.state.overlays[o], i = 1, at = 0;\n context.state = true;\n runMode(cm, line.text, overlay.mode, context, function (end, style) {\n var start = i;\n // Ensure there's a token end at the current position, and that i points at it\n while (at < end) {\n var i_end = st[i];\n if (i_end > end)\n { st.splice(i, 1, end, st[i+1], i_end); }\n i += 2;\n at = Math.min(end, i_end);\n }\n if (!style) { return }\n if (overlay.opaque) {\n st.splice(start, i - start, end, \"overlay \" + style);\n i = start + 2;\n } else {\n for (; start < i; start += 2) {\n var cur = st[start+1];\n st[start+1] = (cur ? cur + \" \" : \"\") + \"overlay \" + style;\n }\n }\n }, lineClasses);\n context.state = state;\n context.baseTokens = null;\n context.baseTokenPos = 1;\n };\n\n for (var o = 0; o < cm.state.overlays.length; ++o) loop( o );\n\n return {styles: st, classes: lineClasses.bgClass || lineClasses.textClass ? lineClasses : null}\n }\n\n function getLineStyles(cm, line, updateFrontier) {\n if (!line.styles || line.styles[0] != cm.state.modeGen) {\n var context = getContextBefore(cm, lineNo(line));\n var resetState = line.text.length > cm.options.maxHighlightLength && copyState(cm.doc.mode, context.state);\n var result = highlightLine(cm, line, context);\n if (resetState) { context.state = resetState; }\n line.stateAfter = context.save(!resetState);\n line.styles = result.styles;\n if (result.classes) { line.styleClasses = result.classes; }\n else if (line.styleClasses) { line.styleClasses = null; }\n if (updateFrontier === cm.doc.highlightFrontier)\n { cm.doc.modeFrontier = Math.max(cm.doc.modeFrontier, ++cm.doc.highlightFrontier); }\n }\n return line.styles\n }\n\n function getContextBefore(cm, n, precise) {\n var doc = cm.doc, display = cm.display;\n if (!doc.mode.startState) { return new Context(doc, true, n) }\n var start = findStartLine(cm, n, precise);\n var saved = start > doc.first && getLine(doc, start - 1).stateAfter;\n var context = saved ? Context.fromSaved(doc, saved, start) : new Context(doc, startState(doc.mode), start);\n\n doc.iter(start, n, function (line) {\n processLine(cm, line.text, context);\n var pos = context.line;\n line.stateAfter = pos == n - 1 || pos % 5 == 0 || pos >= display.viewFrom && pos < display.viewTo ? context.save() : null;\n context.nextLine();\n });\n if (precise) { doc.modeFrontier = context.line; }\n return context\n }\n\n // Lightweight form of highlight -- proceed over this line and\n // update state, but don't save a style array. Used for lines that\n // aren't currently visible.\n function processLine(cm, text, context, startAt) {\n var mode = cm.doc.mode;\n var stream = new StringStream(text, cm.options.tabSize, context);\n stream.start = stream.pos = startAt || 0;\n if (text == \"\") { callBlankLine(mode, context.state); }\n while (!stream.eol()) {\n readToken(mode, stream, context.state);\n stream.start = stream.pos;\n }\n }\n\n function callBlankLine(mode, state) {\n if (mode.blankLine) { return mode.blankLine(state) }\n if (!mode.innerMode) { return }\n var inner = innerMode(mode, state);\n if (inner.mode.blankLine) { return inner.mode.blankLine(inner.state) }\n }\n\n function readToken(mode, stream, state, inner) {\n for (var i = 0; i < 10; i++) {\n if (inner) { inner[0] = innerMode(mode, state).mode; }\n var style = mode.token(stream, state);\n if (stream.pos > stream.start) { return style }\n }\n throw new Error(\"Mode \" + mode.name + \" failed to advance stream.\")\n }\n\n var Token = function(stream, type, state) {\n this.start = stream.start; this.end = stream.pos;\n this.string = stream.current();\n this.type = type || null;\n this.state = state;\n };\n\n // Utility for getTokenAt and getLineTokens\n function takeToken(cm, pos, precise, asArray) {\n var doc = cm.doc, mode = doc.mode, style;\n pos = clipPos(doc, pos);\n var line = getLine(doc, pos.line), context = getContextBefore(cm, pos.line, precise);\n var stream = new StringStream(line.text, cm.options.tabSize, context), tokens;\n if (asArray) { tokens = []; }\n while ((asArray || stream.pos < pos.ch) && !stream.eol()) {\n stream.start = stream.pos;\n style = readToken(mode, stream, context.state);\n if (asArray) { tokens.push(new Token(stream, style, copyState(doc.mode, context.state))); }\n }\n return asArray ? tokens : new Token(stream, style, context.state)\n }\n\n function extractLineClasses(type, output) {\n if (type) { for (;;) {\n var lineClass = type.match(/(?:^|\\s+)line-(background-)?(\\S+)/);\n if (!lineClass) { break }\n type = type.slice(0, lineClass.index) + type.slice(lineClass.index + lineClass[0].length);\n var prop = lineClass[1] ? \"bgClass\" : \"textClass\";\n if (output[prop] == null)\n { output[prop] = lineClass[2]; }\n else if (!(new RegExp(\"(?:^|\\\\s)\" + lineClass[2] + \"(?:$|\\\\s)\")).test(output[prop]))\n { output[prop] += \" \" + lineClass[2]; }\n } }\n return type\n }\n\n // Run the given mode's parser over a line, calling f for each token.\n function runMode(cm, text, mode, context, f, lineClasses, forceToEnd) {\n var flattenSpans = mode.flattenSpans;\n if (flattenSpans == null) { flattenSpans = cm.options.flattenSpans; }\n var curStart = 0, curStyle = null;\n var stream = new StringStream(text, cm.options.tabSize, context), style;\n var inner = cm.options.addModeClass && [null];\n if (text == \"\") { extractLineClasses(callBlankLine(mode, context.state), lineClasses); }\n while (!stream.eol()) {\n if (stream.pos > cm.options.maxHighlightLength) {\n flattenSpans = false;\n if (forceToEnd) { processLine(cm, text, context, stream.pos); }\n stream.pos = text.length;\n style = null;\n } else {\n style = extractLineClasses(readToken(mode, stream, context.state, inner), lineClasses);\n }\n if (inner) {\n var mName = inner[0].name;\n if (mName) { style = \"m-\" + (style ? mName + \" \" + style : mName); }\n }\n if (!flattenSpans || curStyle != style) {\n while (curStart < stream.start) {\n curStart = Math.min(stream.start, curStart + 5000);\n f(curStart, curStyle);\n }\n curStyle = style;\n }\n stream.start = stream.pos;\n }\n while (curStart < stream.pos) {\n // Webkit seems to refuse to render text nodes longer than 57444\n // characters, and returns inaccurate measurements in nodes\n // starting around 5000 chars.\n var pos = Math.min(stream.pos, curStart + 5000);\n f(pos, curStyle);\n curStart = pos;\n }\n }\n\n // Finds the line to start with when starting a parse. Tries to\n // find a line with a stateAfter, so that it can start with a\n // valid state. If that fails, it returns the line with the\n // smallest indentation, which tends to need the least context to\n // parse correctly.\n function findStartLine(cm, n, precise) {\n var minindent, minline, doc = cm.doc;\n var lim = precise ? -1 : n - (cm.doc.mode.innerMode ? 1000 : 100);\n for (var search = n; search > lim; --search) {\n if (search <= doc.first) { return doc.first }\n var line = getLine(doc, search - 1), after = line.stateAfter;\n if (after && (!precise || search + (after instanceof SavedContext ? after.lookAhead : 0) <= doc.modeFrontier))\n { return search }\n var indented = countColumn(line.text, null, cm.options.tabSize);\n if (minline == null || minindent > indented) {\n minline = search - 1;\n minindent = indented;\n }\n }\n return minline\n }\n\n function retreatFrontier(doc, n) {\n doc.modeFrontier = Math.min(doc.modeFrontier, n);\n if (doc.highlightFrontier < n - 10) { return }\n var start = doc.first;\n for (var line = n - 1; line > start; line--) {\n var saved = getLine(doc, line).stateAfter;\n // change is on 3\n // state on line 1 looked ahead 2 -- so saw 3\n // test 1 + 2 < 3 should cover this\n if (saved && (!(saved instanceof SavedContext) || line + saved.lookAhead < n)) {\n start = line + 1;\n break\n }\n }\n doc.highlightFrontier = Math.min(doc.highlightFrontier, start);\n }\n\n // Optimize some code when these features are not used.\n var sawReadOnlySpans = false, sawCollapsedSpans = false;\n\n function seeReadOnlySpans() {\n sawReadOnlySpans = true;\n }\n\n function seeCollapsedSpans() {\n sawCollapsedSpans = true;\n }\n\n // TEXTMARKER SPANS\n\n function MarkedSpan(marker, from, to) {\n this.marker = marker;\n this.from = from; this.to = to;\n }\n\n // Search an array of spans for a span matching the given marker.\n function getMarkedSpanFor(spans, marker) {\n if (spans) { for (var i = 0; i < spans.length; ++i) {\n var span = spans[i];\n if (span.marker == marker) { return span }\n } }\n }\n\n // Remove a span from an array, returning undefined if no spans are\n // left (we don't store arrays for lines without spans).\n function removeMarkedSpan(spans, span) {\n var r;\n for (var i = 0; i < spans.length; ++i)\n { if (spans[i] != span) { (r || (r = [])).push(spans[i]); } }\n return r\n }\n\n // Add a span to a line.\n function addMarkedSpan(line, span, op) {\n var inThisOp = op && window.WeakSet && (op.markedSpans || (op.markedSpans = new WeakSet));\n if (inThisOp && inThisOp.has(line.markedSpans)) {\n line.markedSpans.push(span);\n } else {\n line.markedSpans = line.markedSpans ? line.markedSpans.concat([span]) : [span];\n if (inThisOp) { inThisOp.add(line.markedSpans); }\n }\n span.marker.attachLine(line);\n }\n\n // Used for the algorithm that adjusts markers for a change in the\n // document. These functions cut an array of spans at a given\n // character position, returning an array of remaining chunks (or\n // undefined if nothing remains).\n function markedSpansBefore(old, startCh, isInsert) {\n var nw;\n if (old) { for (var i = 0; i < old.length; ++i) {\n var span = old[i], marker = span.marker;\n var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= startCh : span.from < startCh);\n if (startsBefore || span.from == startCh && marker.type == \"bookmark\" && (!isInsert || !span.marker.insertLeft)) {\n var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= startCh : span.to > startCh)\n ;(nw || (nw = [])).push(new MarkedSpan(marker, span.from, endsAfter ? null : span.to));\n }\n } }\n return nw\n }\n function markedSpansAfter(old, endCh, isInsert) {\n var nw;\n if (old) { for (var i = 0; i < old.length; ++i) {\n var span = old[i], marker = span.marker;\n var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= endCh : span.to > endCh);\n if (endsAfter || span.from == endCh && marker.type == \"bookmark\" && (!isInsert || span.marker.insertLeft)) {\n var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= endCh : span.from < endCh)\n ;(nw || (nw = [])).push(new MarkedSpan(marker, startsBefore ? null : span.from - endCh,\n span.to == null ? null : span.to - endCh));\n }\n } }\n return nw\n }\n\n // Given a change object, compute the new set of marker spans that\n // cover the line in which the change took place. Removes spans\n // entirely within the change, reconnects spans belonging to the\n // same marker that appear on both sides of the change, and cuts off\n // spans partially within the change. Returns an array of span\n // arrays with one element for each line in (after) the change.\n function stretchSpansOverChange(doc, change) {\n if (change.full) { return null }\n var oldFirst = isLine(doc, change.from.line) && getLine(doc, change.from.line).markedSpans;\n var oldLast = isLine(doc, change.to.line) && getLine(doc, change.to.line).markedSpans;\n if (!oldFirst && !oldLast) { return null }\n\n var startCh = change.from.ch, endCh = change.to.ch, isInsert = cmp(change.from, change.to) == 0;\n // Get the spans that 'stick out' on both sides\n var first = markedSpansBefore(oldFirst, startCh, isInsert);\n var last = markedSpansAfter(oldLast, endCh, isInsert);\n\n // Next, merge those two ends\n var sameLine = change.text.length == 1, offset = lst(change.text).length + (sameLine ? startCh : 0);\n if (first) {\n // Fix up .to properties of first\n for (var i = 0; i < first.length; ++i) {\n var span = first[i];\n if (span.to == null) {\n var found = getMarkedSpanFor(last, span.marker);\n if (!found) { span.to = startCh; }\n else if (sameLine) { span.to = found.to == null ? null : found.to + offset; }\n }\n }\n }\n if (last) {\n // Fix up .from in last (or move them into first in case of sameLine)\n for (var i$1 = 0; i$1 < last.length; ++i$1) {\n var span$1 = last[i$1];\n if (span$1.to != null) { span$1.to += offset; }\n if (span$1.from == null) {\n var found$1 = getMarkedSpanFor(first, span$1.marker);\n if (!found$1) {\n span$1.from = offset;\n if (sameLine) { (first || (first = [])).push(span$1); }\n }\n } else {\n span$1.from += offset;\n if (sameLine) { (first || (first = [])).push(span$1); }\n }\n }\n }\n // Make sure we didn't create any zero-length spans\n if (first) { first = clearEmptySpans(first); }\n if (last && last != first) { last = clearEmptySpans(last); }\n\n var newMarkers = [first];\n if (!sameLine) {\n // Fill gap with whole-line-spans\n var gap = change.text.length - 2, gapMarkers;\n if (gap > 0 && first)\n { for (var i$2 = 0; i$2 < first.length; ++i$2)\n { if (first[i$2].to == null)\n { (gapMarkers || (gapMarkers = [])).push(new MarkedSpan(first[i$2].marker, null, null)); } } }\n for (var i$3 = 0; i$3 < gap; ++i$3)\n { newMarkers.push(gapMarkers); }\n newMarkers.push(last);\n }\n return newMarkers\n }\n\n // Remove spans that are empty and don't have a clearWhenEmpty\n // option of false.\n function clearEmptySpans(spans) {\n for (var i = 0; i < spans.length; ++i) {\n var span = spans[i];\n if (span.from != null && span.from == span.to && span.marker.clearWhenEmpty !== false)\n { spans.splice(i--, 1); }\n }\n if (!spans.length) { return null }\n return spans\n }\n\n // Used to 'clip' out readOnly ranges when making a change.\n function removeReadOnlyRanges(doc, from, to) {\n var markers = null;\n doc.iter(from.line, to.line + 1, function (line) {\n if (line.markedSpans) { for (var i = 0; i < line.markedSpans.length; ++i) {\n var mark = line.markedSpans[i].marker;\n if (mark.readOnly && (!markers || indexOf(markers, mark) == -1))\n { (markers || (markers = [])).push(mark); }\n } }\n });\n if (!markers) { return null }\n var parts = [{from: from, to: to}];\n for (var i = 0; i < markers.length; ++i) {\n var mk = markers[i], m = mk.find(0);\n for (var j = 0; j < parts.length; ++j) {\n var p = parts[j];\n if (cmp(p.to, m.from) < 0 || cmp(p.from, m.to) > 0) { continue }\n var newParts = [j, 1], dfrom = cmp(p.from, m.from), dto = cmp(p.to, m.to);\n if (dfrom < 0 || !mk.inclusiveLeft && !dfrom)\n { newParts.push({from: p.from, to: m.from}); }\n if (dto > 0 || !mk.inclusiveRight && !dto)\n { newParts.push({from: m.to, to: p.to}); }\n parts.splice.apply(parts, newParts);\n j += newParts.length - 3;\n }\n }\n return parts\n }\n\n // Connect or disconnect spans from a line.\n function detachMarkedSpans(line) {\n var spans = line.markedSpans;\n if (!spans) { return }\n for (var i = 0; i < spans.length; ++i)\n { spans[i].marker.detachLine(line); }\n line.markedSpans = null;\n }\n function attachMarkedSpans(line, spans) {\n if (!spans) { return }\n for (var i = 0; i < spans.length; ++i)\n { spans[i].marker.attachLine(line); }\n line.markedSpans = spans;\n }\n\n // Helpers used when computing which overlapping collapsed span\n // counts as the larger one.\n function extraLeft(marker) { return marker.inclusiveLeft ? -1 : 0 }\n function extraRight(marker) { return marker.inclusiveRight ? 1 : 0 }\n\n // Returns a number indicating which of two overlapping collapsed\n // spans is larger (and thus includes the other). Falls back to\n // comparing ids when the spans cover exactly the same range.\n function compareCollapsedMarkers(a, b) {\n var lenDiff = a.lines.length - b.lines.length;\n if (lenDiff != 0) { return lenDiff }\n var aPos = a.find(), bPos = b.find();\n var fromCmp = cmp(aPos.from, bPos.from) || extraLeft(a) - extraLeft(b);\n if (fromCmp) { return -fromCmp }\n var toCmp = cmp(aPos.to, bPos.to) || extraRight(a) - extraRight(b);\n if (toCmp) { return toCmp }\n return b.id - a.id\n }\n\n // Find out whether a line ends or starts in a collapsed span. If\n // so, return the marker for that span.\n function collapsedSpanAtSide(line, start) {\n var sps = sawCollapsedSpans && line.markedSpans, found;\n if (sps) { for (var sp = (void 0), i = 0; i < sps.length; ++i) {\n sp = sps[i];\n if (sp.marker.collapsed && (start ? sp.from : sp.to) == null &&\n (!found || compareCollapsedMarkers(found, sp.marker) < 0))\n { found = sp.marker; }\n } }\n return found\n }\n function collapsedSpanAtStart(line) { return collapsedSpanAtSide(line, true) }\n function collapsedSpanAtEnd(line) { return collapsedSpanAtSide(line, false) }\n\n function collapsedSpanAround(line, ch) {\n var sps = sawCollapsedSpans && line.markedSpans, found;\n if (sps) { for (var i = 0; i < sps.length; ++i) {\n var sp = sps[i];\n if (sp.marker.collapsed && (sp.from == null || sp.from < ch) && (sp.to == null || sp.to > ch) &&\n (!found || compareCollapsedMarkers(found, sp.marker) < 0)) { found = sp.marker; }\n } }\n return found\n }\n\n // Test whether there exists a collapsed span that partially\n // overlaps (covers the start or end, but not both) of a new span.\n // Such overlap is not allowed.\n function conflictingCollapsedRange(doc, lineNo, from, to, marker) {\n var line = getLine(doc, lineNo);\n var sps = sawCollapsedSpans && line.markedSpans;\n if (sps) { for (var i = 0; i < sps.length; ++i) {\n var sp = sps[i];\n if (!sp.marker.collapsed) { continue }\n var found = sp.marker.find(0);\n var fromCmp = cmp(found.from, from) || extraLeft(sp.marker) - extraLeft(marker);\n var toCmp = cmp(found.to, to) || extraRight(sp.marker) - extraRight(marker);\n if (fromCmp >= 0 && toCmp <= 0 || fromCmp <= 0 && toCmp >= 0) { continue }\n if (fromCmp <= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.to, from) >= 0 : cmp(found.to, from) > 0) ||\n fromCmp >= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.from, to) <= 0 : cmp(found.from, to) < 0))\n { return true }\n } }\n }\n\n // A visual line is a line as drawn on the screen. Folding, for\n // example, can cause multiple logical lines to appear on the same\n // visual line. This finds the start of the visual line that the\n // given line is part of (usually that is the line itself).\n function visualLine(line) {\n var merged;\n while (merged = collapsedSpanAtStart(line))\n { line = merged.find(-1, true).line; }\n return line\n }\n\n function visualLineEnd(line) {\n var merged;\n while (merged = collapsedSpanAtEnd(line))\n { line = merged.find(1, true).line; }\n return line\n }\n\n // Returns an array of logical lines that continue the visual line\n // started by the argument, or undefined if there are no such lines.\n function visualLineContinued(line) {\n var merged, lines;\n while (merged = collapsedSpanAtEnd(line)) {\n line = merged.find(1, true).line\n ;(lines || (lines = [])).push(line);\n }\n return lines\n }\n\n // Get the line number of the start of the visual line that the\n // given line number is part of.\n function visualLineNo(doc, lineN) {\n var line = getLine(doc, lineN), vis = visualLine(line);\n if (line == vis) { return lineN }\n return lineNo(vis)\n }\n\n // Get the line number of the start of the next visual line after\n // the given line.\n function visualLineEndNo(doc, lineN) {\n if (lineN > doc.lastLine()) { return lineN }\n var line = getLine(doc, lineN), merged;\n if (!lineIsHidden(doc, line)) { return lineN }\n while (merged = collapsedSpanAtEnd(line))\n { line = merged.find(1, true).line; }\n return lineNo(line) + 1\n }\n\n // Compute whether a line is hidden. Lines count as hidden when they\n // are part of a visual line that starts with another line, or when\n // they are entirely covered by collapsed, non-widget span.\n function lineIsHidden(doc, line) {\n var sps = sawCollapsedSpans && line.markedSpans;\n if (sps) { for (var sp = (void 0), i = 0; i < sps.length; ++i) {\n sp = sps[i];\n if (!sp.marker.collapsed) { continue }\n if (sp.from == null) { return true }\n if (sp.marker.widgetNode) { continue }\n if (sp.from == 0 && sp.marker.inclusiveLeft && lineIsHiddenInner(doc, line, sp))\n { return true }\n } }\n }\n function lineIsHiddenInner(doc, line, span) {\n if (span.to == null) {\n var end = span.marker.find(1, true);\n return lineIsHiddenInner(doc, end.line, getMarkedSpanFor(end.line.markedSpans, span.marker))\n }\n if (span.marker.inclusiveRight && span.to == line.text.length)\n { return true }\n for (var sp = (void 0), i = 0; i < line.markedSpans.length; ++i) {\n sp = line.markedSpans[i];\n if (sp.marker.collapsed && !sp.marker.widgetNode && sp.from == span.to &&\n (sp.to == null || sp.to != span.from) &&\n (sp.marker.inclusiveLeft || span.marker.inclusiveRight) &&\n lineIsHiddenInner(doc, line, sp)) { return true }\n }\n }\n\n // Find the height above the given line.\n function heightAtLine(lineObj) {\n lineObj = visualLine(lineObj);\n\n var h = 0, chunk = lineObj.parent;\n for (var i = 0; i < chunk.lines.length; ++i) {\n var line = chunk.lines[i];\n if (line == lineObj) { break }\n else { h += line.height; }\n }\n for (var p = chunk.parent; p; chunk = p, p = chunk.parent) {\n for (var i$1 = 0; i$1 < p.children.length; ++i$1) {\n var cur = p.children[i$1];\n if (cur == chunk) { break }\n else { h += cur.height; }\n }\n }\n return h\n }\n\n // Compute the character length of a line, taking into account\n // collapsed ranges (see markText) that might hide parts, and join\n // other lines onto it.\n function lineLength(line) {\n if (line.height == 0) { return 0 }\n var len = line.text.length, merged, cur = line;\n while (merged = collapsedSpanAtStart(cur)) {\n var found = merged.find(0, true);\n cur = found.from.line;\n len += found.from.ch - found.to.ch;\n }\n cur = line;\n while (merged = collapsedSpanAtEnd(cur)) {\n var found$1 = merged.find(0, true);\n len -= cur.text.length - found$1.from.ch;\n cur = found$1.to.line;\n len += cur.text.length - found$1.to.ch;\n }\n return len\n }\n\n // Find the longest line in the document.\n function findMaxLine(cm) {\n var d = cm.display, doc = cm.doc;\n d.maxLine = getLine(doc, doc.first);\n d.maxLineLength = lineLength(d.maxLine);\n d.maxLineChanged = true;\n doc.iter(function (line) {\n var len = lineLength(line);\n if (len > d.maxLineLength) {\n d.maxLineLength = len;\n d.maxLine = line;\n }\n });\n }\n\n // LINE DATA STRUCTURE\n\n // Line objects. These hold state related to a line, including\n // highlighting info (the styles array).\n var Line = function(text, markedSpans, estimateHeight) {\n this.text = text;\n attachMarkedSpans(this, markedSpans);\n this.height = estimateHeight ? estimateHeight(this) : 1;\n };\n\n Line.prototype.lineNo = function () { return lineNo(this) };\n eventMixin(Line);\n\n // Change the content (text, markers) of a line. Automatically\n // invalidates cached information and tries to re-estimate the\n // line's height.\n function updateLine(line, text, markedSpans, estimateHeight) {\n line.text = text;\n if (line.stateAfter) { line.stateAfter = null; }\n if (line.styles) { line.styles = null; }\n if (line.order != null) { line.order = null; }\n detachMarkedSpans(line);\n attachMarkedSpans(line, markedSpans);\n var estHeight = estimateHeight ? estimateHeight(line) : 1;\n if (estHeight != line.height) { updateLineHeight(line, estHeight); }\n }\n\n // Detach a line from the document tree and its markers.\n function cleanUpLine(line) {\n line.parent = null;\n detachMarkedSpans(line);\n }\n\n // Convert a style as returned by a mode (either null, or a string\n // containing one or more styles) to a CSS style. This is cached,\n // and also looks for line-wide styles.\n var styleToClassCache = {}, styleToClassCacheWithMode = {};\n function interpretTokenStyle(style, options) {\n if (!style || /^\\s*$/.test(style)) { return null }\n var cache = options.addModeClass ? styleToClassCacheWithMode : styleToClassCache;\n return cache[style] ||\n (cache[style] = style.replace(/\\S+/g, \"cm-$&\"))\n }\n\n // Render the DOM representation of the text of a line. Also builds\n // up a 'line map', which points at the DOM nodes that represent\n // specific stretches of text, and is used by the measuring code.\n // The returned object contains the DOM node, this map, and\n // information about line-wide styles that were set by the mode.\n function buildLineContent(cm, lineView) {\n // The padding-right forces the element to have a 'border', which\n // is needed on Webkit to be able to get line-level bounding\n // rectangles for it (in measureChar).\n var content = eltP(\"span\", null, null, webkit ? \"padding-right: .1px\" : null);\n var builder = {pre: eltP(\"pre\", [content], \"CodeMirror-line\"), content: content,\n col: 0, pos: 0, cm: cm,\n trailingSpace: false,\n splitSpaces: cm.getOption(\"lineWrapping\")};\n lineView.measure = {};\n\n // Iterate over the logical lines that make up this visual line.\n for (var i = 0; i <= (lineView.rest ? lineView.rest.length : 0); i++) {\n var line = i ? lineView.rest[i - 1] : lineView.line, order = (void 0);\n builder.pos = 0;\n builder.addToken = buildToken;\n // Optionally wire in some hacks into the token-rendering\n // algorithm, to deal with browser quirks.\n if (hasBadBidiRects(cm.display.measure) && (order = getOrder(line, cm.doc.direction)))\n { builder.addToken = buildTokenBadBidi(builder.addToken, order); }\n builder.map = [];\n var allowFrontierUpdate = lineView != cm.display.externalMeasured && lineNo(line);\n insertLineContent(line, builder, getLineStyles(cm, line, allowFrontierUpdate));\n if (line.styleClasses) {\n if (line.styleClasses.bgClass)\n { builder.bgClass = joinClasses(line.styleClasses.bgClass, builder.bgClass || \"\"); }\n if (line.styleClasses.textClass)\n { builder.textClass = joinClasses(line.styleClasses.textClass, builder.textClass || \"\"); }\n }\n\n // Ensure at least a single node is present, for measuring.\n if (builder.map.length == 0)\n { builder.map.push(0, 0, builder.content.appendChild(zeroWidthElement(cm.display.measure))); }\n\n // Store the map and a cache object for the current logical line\n if (i == 0) {\n lineView.measure.map = builder.map;\n lineView.measure.cache = {};\n } else {\n (lineView.measure.maps || (lineView.measure.maps = [])).push(builder.map)\n ;(lineView.measure.caches || (lineView.measure.caches = [])).push({});\n }\n }\n\n // See issue #2901\n if (webkit) {\n var last = builder.content.lastChild;\n if (/\\bcm-tab\\b/.test(last.className) || (last.querySelector && last.querySelector(\".cm-tab\")))\n { builder.content.className = \"cm-tab-wrap-hack\"; }\n }\n\n signal(cm, \"renderLine\", cm, lineView.line, builder.pre);\n if (builder.pre.className)\n { builder.textClass = joinClasses(builder.pre.className, builder.textClass || \"\"); }\n\n return builder\n }\n\n function defaultSpecialCharPlaceholder(ch) {\n var token = elt(\"span\", \"\\u2022\", \"cm-invalidchar\");\n token.title = \"\\\\u\" + ch.charCodeAt(0).toString(16);\n token.setAttribute(\"aria-label\", token.title);\n return token\n }\n\n // Build up the DOM representation for a single token, and add it to\n // the line map. Takes care to render special characters separately.\n function buildToken(builder, text, style, startStyle, endStyle, css, attributes) {\n if (!text) { return }\n var displayText = builder.splitSpaces ? splitSpaces(text, builder.trailingSpace) : text;\n var special = builder.cm.state.specialChars, mustWrap = false;\n var content;\n if (!special.test(text)) {\n builder.col += text.length;\n content = document.createTextNode(displayText);\n builder.map.push(builder.pos, builder.pos + text.length, content);\n if (ie && ie_version < 9) { mustWrap = true; }\n builder.pos += text.length;\n } else {\n content = document.createDocumentFragment();\n var pos = 0;\n while (true) {\n special.lastIndex = pos;\n var m = special.exec(text);\n var skipped = m ? m.index - pos : text.length - pos;\n if (skipped) {\n var txt = document.createTextNode(displayText.slice(pos, pos + skipped));\n if (ie && ie_version < 9) { content.appendChild(elt(\"span\", [txt])); }\n else { content.appendChild(txt); }\n builder.map.push(builder.pos, builder.pos + skipped, txt);\n builder.col += skipped;\n builder.pos += skipped;\n }\n if (!m) { break }\n pos += skipped + 1;\n var txt$1 = (void 0);\n if (m[0] == \"\\t\") {\n var tabSize = builder.cm.options.tabSize, tabWidth = tabSize - builder.col % tabSize;\n txt$1 = content.appendChild(elt(\"span\", spaceStr(tabWidth), \"cm-tab\"));\n txt$1.setAttribute(\"role\", \"presentation\");\n txt$1.setAttribute(\"cm-text\", \"\\t\");\n builder.col += tabWidth;\n } else if (m[0] == \"\\r\" || m[0] == \"\\n\") {\n txt$1 = content.appendChild(elt(\"span\", m[0] == \"\\r\" ? \"\\u240d\" : \"\\u2424\", \"cm-invalidchar\"));\n txt$1.setAttribute(\"cm-text\", m[0]);\n builder.col += 1;\n } else {\n txt$1 = builder.cm.options.specialCharPlaceholder(m[0]);\n txt$1.setAttribute(\"cm-text\", m[0]);\n if (ie && ie_version < 9) { content.appendChild(elt(\"span\", [txt$1])); }\n else { content.appendChild(txt$1); }\n builder.col += 1;\n }\n builder.map.push(builder.pos, builder.pos + 1, txt$1);\n builder.pos++;\n }\n }\n builder.trailingSpace = displayText.charCodeAt(text.length - 1) == 32;\n if (style || startStyle || endStyle || mustWrap || css || attributes) {\n var fullStyle = style || \"\";\n if (startStyle) { fullStyle += startStyle; }\n if (endStyle) { fullStyle += endStyle; }\n var token = elt(\"span\", [content], fullStyle, css);\n if (attributes) {\n for (var attr in attributes) { if (attributes.hasOwnProperty(attr) && attr != \"style\" && attr != \"class\")\n { token.setAttribute(attr, attributes[attr]); } }\n }\n return builder.content.appendChild(token)\n }\n builder.content.appendChild(content);\n }\n\n // Change some spaces to NBSP to prevent the browser from collapsing\n // trailing spaces at the end of a line when rendering text (issue #1362).\n function splitSpaces(text, trailingBefore) {\n if (text.length > 1 && !/ /.test(text)) { return text }\n var spaceBefore = trailingBefore, result = \"\";\n for (var i = 0; i < text.length; i++) {\n var ch = text.charAt(i);\n if (ch == \" \" && spaceBefore && (i == text.length - 1 || text.charCodeAt(i + 1) == 32))\n { ch = \"\\u00a0\"; }\n result += ch;\n spaceBefore = ch == \" \";\n }\n return result\n }\n\n // Work around nonsense dimensions being reported for stretches of\n // right-to-left text.\n function buildTokenBadBidi(inner, order) {\n return function (builder, text, style, startStyle, endStyle, css, attributes) {\n style = style ? style + \" cm-force-border\" : \"cm-force-border\";\n var start = builder.pos, end = start + text.length;\n for (;;) {\n // Find the part that overlaps with the start of this text\n var part = (void 0);\n for (var i = 0; i < order.length; i++) {\n part = order[i];\n if (part.to > start && part.from <= start) { break }\n }\n if (part.to >= end) { return inner(builder, text, style, startStyle, endStyle, css, attributes) }\n inner(builder, text.slice(0, part.to - start), style, startStyle, null, css, attributes);\n startStyle = null;\n text = text.slice(part.to - start);\n start = part.to;\n }\n }\n }\n\n function buildCollapsedSpan(builder, size, marker, ignoreWidget) {\n var widget = !ignoreWidget && marker.widgetNode;\n if (widget) { builder.map.push(builder.pos, builder.pos + size, widget); }\n if (!ignoreWidget && builder.cm.display.input.needsContentAttribute) {\n if (!widget)\n { widget = builder.content.appendChild(document.createElement(\"span\")); }\n widget.setAttribute(\"cm-marker\", marker.id);\n }\n if (widget) {\n builder.cm.display.input.setUneditable(widget);\n builder.content.appendChild(widget);\n }\n builder.pos += size;\n builder.trailingSpace = false;\n }\n\n // Outputs a number of spans to make up a line, taking highlighting\n // and marked text into account.\n function insertLineContent(line, builder, styles) {\n var spans = line.markedSpans, allText = line.text, at = 0;\n if (!spans) {\n for (var i$1 = 1; i$1 < styles.length; i$1+=2)\n { builder.addToken(builder, allText.slice(at, at = styles[i$1]), interpretTokenStyle(styles[i$1+1], builder.cm.options)); }\n return\n }\n\n var len = allText.length, pos = 0, i = 1, text = \"\", style, css;\n var nextChange = 0, spanStyle, spanEndStyle, spanStartStyle, collapsed, attributes;\n for (;;) {\n if (nextChange == pos) { // Update current marker set\n spanStyle = spanEndStyle = spanStartStyle = css = \"\";\n attributes = null;\n collapsed = null; nextChange = Infinity;\n var foundBookmarks = [], endStyles = (void 0);\n for (var j = 0; j < spans.length; ++j) {\n var sp = spans[j], m = sp.marker;\n if (m.type == \"bookmark\" && sp.from == pos && m.widgetNode) {\n foundBookmarks.push(m);\n } else if (sp.from <= pos && (sp.to == null || sp.to > pos || m.collapsed && sp.to == pos && sp.from == pos)) {\n if (sp.to != null && sp.to != pos && nextChange > sp.to) {\n nextChange = sp.to;\n spanEndStyle = \"\";\n }\n if (m.className) { spanStyle += \" \" + m.className; }\n if (m.css) { css = (css ? css + \";\" : \"\") + m.css; }\n if (m.startStyle && sp.from == pos) { spanStartStyle += \" \" + m.startStyle; }\n if (m.endStyle && sp.to == nextChange) { (endStyles || (endStyles = [])).push(m.endStyle, sp.to); }\n // support for the old title property\n // https://github.com/codemirror/CodeMirror/pull/5673\n if (m.title) { (attributes || (attributes = {})).title = m.title; }\n if (m.attributes) {\n for (var attr in m.attributes)\n { (attributes || (attributes = {}))[attr] = m.attributes[attr]; }\n }\n if (m.collapsed && (!collapsed || compareCollapsedMarkers(collapsed.marker, m) < 0))\n { collapsed = sp; }\n } else if (sp.from > pos && nextChange > sp.from) {\n nextChange = sp.from;\n }\n }\n if (endStyles) { for (var j$1 = 0; j$1 < endStyles.length; j$1 += 2)\n { if (endStyles[j$1 + 1] == nextChange) { spanEndStyle += \" \" + endStyles[j$1]; } } }\n\n if (!collapsed || collapsed.from == pos) { for (var j$2 = 0; j$2 < foundBookmarks.length; ++j$2)\n { buildCollapsedSpan(builder, 0, foundBookmarks[j$2]); } }\n if (collapsed && (collapsed.from || 0) == pos) {\n buildCollapsedSpan(builder, (collapsed.to == null ? len + 1 : collapsed.to) - pos,\n collapsed.marker, collapsed.from == null);\n if (collapsed.to == null) { return }\n if (collapsed.to == pos) { collapsed = false; }\n }\n }\n if (pos >= len) { break }\n\n var upto = Math.min(len, nextChange);\n while (true) {\n if (text) {\n var end = pos + text.length;\n if (!collapsed) {\n var tokenText = end > upto ? text.slice(0, upto - pos) : text;\n builder.addToken(builder, tokenText, style ? style + spanStyle : spanStyle,\n spanStartStyle, pos + tokenText.length == nextChange ? spanEndStyle : \"\", css, attributes);\n }\n if (end >= upto) {text = text.slice(upto - pos); pos = upto; break}\n pos = end;\n spanStartStyle = \"\";\n }\n text = allText.slice(at, at = styles[i++]);\n style = interpretTokenStyle(styles[i++], builder.cm.options);\n }\n }\n }\n\n\n // These objects are used to represent the visible (currently drawn)\n // part of the document. A LineView may correspond to multiple\n // logical lines, if those are connected by collapsed ranges.\n function LineView(doc, line, lineN) {\n // The starting line\n this.line = line;\n // Continuing lines, if any\n this.rest = visualLineContinued(line);\n // Number of logical lines in this visual line\n this.size = this.rest ? lineNo(lst(this.rest)) - lineN + 1 : 1;\n this.node = this.text = null;\n this.hidden = lineIsHidden(doc, line);\n }\n\n // Create a range of LineView objects for the given lines.\n function buildViewArray(cm, from, to) {\n var array = [], nextPos;\n for (var pos = from; pos < to; pos = nextPos) {\n var view = new LineView(cm.doc, getLine(cm.doc, pos), pos);\n nextPos = pos + view.size;\n array.push(view);\n }\n return array\n }\n\n var operationGroup = null;\n\n function pushOperation(op) {\n if (operationGroup) {\n operationGroup.ops.push(op);\n } else {\n op.ownsGroup = operationGroup = {\n ops: [op],\n delayedCallbacks: []\n };\n }\n }\n\n function fireCallbacksForOps(group) {\n // Calls delayed callbacks and cursorActivity handlers until no\n // new ones appear\n var callbacks = group.delayedCallbacks, i = 0;\n do {\n for (; i < callbacks.length; i++)\n { callbacks[i].call(null); }\n for (var j = 0; j < group.ops.length; j++) {\n var op = group.ops[j];\n if (op.cursorActivityHandlers)\n { while (op.cursorActivityCalled < op.cursorActivityHandlers.length)\n { op.cursorActivityHandlers[op.cursorActivityCalled++].call(null, op.cm); } }\n }\n } while (i < callbacks.length)\n }\n\n function finishOperation(op, endCb) {\n var group = op.ownsGroup;\n if (!group) { return }\n\n try { fireCallbacksForOps(group); }\n finally {\n operationGroup = null;\n endCb(group);\n }\n }\n\n var orphanDelayedCallbacks = null;\n\n // Often, we want to signal events at a point where we are in the\n // middle of some work, but don't want the handler to start calling\n // other methods on the editor, which might be in an inconsistent\n // state or simply not expect any other events to happen.\n // signalLater looks whether there are any handlers, and schedules\n // them to be executed when the last operation ends, or, if no\n // operation is active, when a timeout fires.\n function signalLater(emitter, type /*, values...*/) {\n var arr = getHandlers(emitter, type);\n if (!arr.length) { return }\n var args = Array.prototype.slice.call(arguments, 2), list;\n if (operationGroup) {\n list = operationGroup.delayedCallbacks;\n } else if (orphanDelayedCallbacks) {\n list = orphanDelayedCallbacks;\n } else {\n list = orphanDelayedCallbacks = [];\n setTimeout(fireOrphanDelayed, 0);\n }\n var loop = function ( i ) {\n list.push(function () { return arr[i].apply(null, args); });\n };\n\n for (var i = 0; i < arr.length; ++i)\n loop( i );\n }\n\n function fireOrphanDelayed() {\n var delayed = orphanDelayedCallbacks;\n orphanDelayedCallbacks = null;\n for (var i = 0; i < delayed.length; ++i) { delayed[i](); }\n }\n\n // When an aspect of a line changes, a string is added to\n // lineView.changes. This updates the relevant part of the line's\n // DOM structure.\n function updateLineForChanges(cm, lineView, lineN, dims) {\n for (var j = 0; j < lineView.changes.length; j++) {\n var type = lineView.changes[j];\n if (type == \"text\") { updateLineText(cm, lineView); }\n else if (type == \"gutter\") { updateLineGutter(cm, lineView, lineN, dims); }\n else if (type == \"class\") { updateLineClasses(cm, lineView); }\n else if (type == \"widget\") { updateLineWidgets(cm, lineView, dims); }\n }\n lineView.changes = null;\n }\n\n // Lines with gutter elements, widgets or a background class need to\n // be wrapped, and have the extra elements added to the wrapper div\n function ensureLineWrapped(lineView) {\n if (lineView.node == lineView.text) {\n lineView.node = elt(\"div\", null, null, \"position: relative\");\n if (lineView.text.parentNode)\n { lineView.text.parentNode.replaceChild(lineView.node, lineView.text); }\n lineView.node.appendChild(lineView.text);\n if (ie && ie_version < 8) { lineView.node.style.zIndex = 2; }\n }\n return lineView.node\n }\n\n function updateLineBackground(cm, lineView) {\n var cls = lineView.bgClass ? lineView.bgClass + \" \" + (lineView.line.bgClass || \"\") : lineView.line.bgClass;\n if (cls) { cls += \" CodeMirror-linebackground\"; }\n if (lineView.background) {\n if (cls) { lineView.background.className = cls; }\n else { lineView.background.parentNode.removeChild(lineView.background); lineView.background = null; }\n } else if (cls) {\n var wrap = ensureLineWrapped(lineView);\n lineView.background = wrap.insertBefore(elt(\"div\", null, cls), wrap.firstChild);\n cm.display.input.setUneditable(lineView.background);\n }\n }\n\n // Wrapper around buildLineContent which will reuse the structure\n // in display.externalMeasured when possible.\n function getLineContent(cm, lineView) {\n var ext = cm.display.externalMeasured;\n if (ext && ext.line == lineView.line) {\n cm.display.externalMeasured = null;\n lineView.measure = ext.measure;\n return ext.built\n }\n return buildLineContent(cm, lineView)\n }\n\n // Redraw the line's text. Interacts with the background and text\n // classes because the mode may output tokens that influence these\n // classes.\n function updateLineText(cm, lineView) {\n var cls = lineView.text.className;\n var built = getLineContent(cm, lineView);\n if (lineView.text == lineView.node) { lineView.node = built.pre; }\n lineView.text.parentNode.replaceChild(built.pre, lineView.text);\n lineView.text = built.pre;\n if (built.bgClass != lineView.bgClass || built.textClass != lineView.textClass) {\n lineView.bgClass = built.bgClass;\n lineView.textClass = built.textClass;\n updateLineClasses(cm, lineView);\n } else if (cls) {\n lineView.text.className = cls;\n }\n }\n\n function updateLineClasses(cm, lineView) {\n updateLineBackground(cm, lineView);\n if (lineView.line.wrapClass)\n { ensureLineWrapped(lineView).className = lineView.line.wrapClass; }\n else if (lineView.node != lineView.text)\n { lineView.node.className = \"\"; }\n var textClass = lineView.textClass ? lineView.textClass + \" \" + (lineView.line.textClass || \"\") : lineView.line.textClass;\n lineView.text.className = textClass || \"\";\n }\n\n function updateLineGutter(cm, lineView, lineN, dims) {\n if (lineView.gutter) {\n lineView.node.removeChild(lineView.gutter);\n lineView.gutter = null;\n }\n if (lineView.gutterBackground) {\n lineView.node.removeChild(lineView.gutterBackground);\n lineView.gutterBackground = null;\n }\n if (lineView.line.gutterClass) {\n var wrap = ensureLineWrapped(lineView);\n lineView.gutterBackground = elt(\"div\", null, \"CodeMirror-gutter-background \" + lineView.line.gutterClass,\n (\"left: \" + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + \"px; width: \" + (dims.gutterTotalWidth) + \"px\"));\n cm.display.input.setUneditable(lineView.gutterBackground);\n wrap.insertBefore(lineView.gutterBackground, lineView.text);\n }\n var markers = lineView.line.gutterMarkers;\n if (cm.options.lineNumbers || markers) {\n var wrap$1 = ensureLineWrapped(lineView);\n var gutterWrap = lineView.gutter = elt(\"div\", null, \"CodeMirror-gutter-wrapper\", (\"left: \" + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + \"px\"));\n gutterWrap.setAttribute(\"aria-hidden\", \"true\");\n cm.display.input.setUneditable(gutterWrap);\n wrap$1.insertBefore(gutterWrap, lineView.text);\n if (lineView.line.gutterClass)\n { gutterWrap.className += \" \" + lineView.line.gutterClass; }\n if (cm.options.lineNumbers && (!markers || !markers[\"CodeMirror-linenumbers\"]))\n { lineView.lineNumber = gutterWrap.appendChild(\n elt(\"div\", lineNumberFor(cm.options, lineN),\n \"CodeMirror-linenumber CodeMirror-gutter-elt\",\n (\"left: \" + (dims.gutterLeft[\"CodeMirror-linenumbers\"]) + \"px; width: \" + (cm.display.lineNumInnerWidth) + \"px\"))); }\n if (markers) { for (var k = 0; k < cm.display.gutterSpecs.length; ++k) {\n var id = cm.display.gutterSpecs[k].className, found = markers.hasOwnProperty(id) && markers[id];\n if (found)\n { gutterWrap.appendChild(elt(\"div\", [found], \"CodeMirror-gutter-elt\",\n (\"left: \" + (dims.gutterLeft[id]) + \"px; width: \" + (dims.gutterWidth[id]) + \"px\"))); }\n } }\n }\n }\n\n function updateLineWidgets(cm, lineView, dims) {\n if (lineView.alignable) { lineView.alignable = null; }\n var isWidget = classTest(\"CodeMirror-linewidget\");\n for (var node = lineView.node.firstChild, next = (void 0); node; node = next) {\n next = node.nextSibling;\n if (isWidget.test(node.className)) { lineView.node.removeChild(node); }\n }\n insertLineWidgets(cm, lineView, dims);\n }\n\n // Build a line's DOM representation from scratch\n function buildLineElement(cm, lineView, lineN, dims) {\n var built = getLineContent(cm, lineView);\n lineView.text = lineView.node = built.pre;\n if (built.bgClass) { lineView.bgClass = built.bgClass; }\n if (built.textClass) { lineView.textClass = built.textClass; }\n\n updateLineClasses(cm, lineView);\n updateLineGutter(cm, lineView, lineN, dims);\n insertLineWidgets(cm, lineView, dims);\n return lineView.node\n }\n\n // A lineView may contain multiple logical lines (when merged by\n // collapsed spans). The widgets for all of them need to be drawn.\n function insertLineWidgets(cm, lineView, dims) {\n insertLineWidgetsFor(cm, lineView.line, lineView, dims, true);\n if (lineView.rest) { for (var i = 0; i < lineView.rest.length; i++)\n { insertLineWidgetsFor(cm, lineView.rest[i], lineView, dims, false); } }\n }\n\n function insertLineWidgetsFor(cm, line, lineView, dims, allowAbove) {\n if (!line.widgets) { return }\n var wrap = ensureLineWrapped(lineView);\n for (var i = 0, ws = line.widgets; i < ws.length; ++i) {\n var widget = ws[i], node = elt(\"div\", [widget.node], \"CodeMirror-linewidget\" + (widget.className ? \" \" + widget.className : \"\"));\n if (!widget.handleMouseEvents) { node.setAttribute(\"cm-ignore-events\", \"true\"); }\n positionLineWidget(widget, node, lineView, dims);\n cm.display.input.setUneditable(node);\n if (allowAbove && widget.above)\n { wrap.insertBefore(node, lineView.gutter || lineView.text); }\n else\n { wrap.appendChild(node); }\n signalLater(widget, \"redraw\");\n }\n }\n\n function positionLineWidget(widget, node, lineView, dims) {\n if (widget.noHScroll) {\n (lineView.alignable || (lineView.alignable = [])).push(node);\n var width = dims.wrapperWidth;\n node.style.left = dims.fixedPos + \"px\";\n if (!widget.coverGutter) {\n width -= dims.gutterTotalWidth;\n node.style.paddingLeft = dims.gutterTotalWidth + \"px\";\n }\n node.style.width = width + \"px\";\n }\n if (widget.coverGutter) {\n node.style.zIndex = 5;\n node.style.position = \"relative\";\n if (!widget.noHScroll) { node.style.marginLeft = -dims.gutterTotalWidth + \"px\"; }\n }\n }\n\n function widgetHeight(widget) {\n if (widget.height != null) { return widget.height }\n var cm = widget.doc.cm;\n if (!cm) { return 0 }\n if (!contains(document.body, widget.node)) {\n var parentStyle = \"position: relative;\";\n if (widget.coverGutter)\n { parentStyle += \"margin-left: -\" + cm.display.gutters.offsetWidth + \"px;\"; }\n if (widget.noHScroll)\n { parentStyle += \"width: \" + cm.display.wrapper.clientWidth + \"px;\"; }\n removeChildrenAndAdd(cm.display.measure, elt(\"div\", [widget.node], null, parentStyle));\n }\n return widget.height = widget.node.parentNode.offsetHeight\n }\n\n // Return true when the given mouse event happened in a widget\n function eventInWidget(display, e) {\n for (var n = e_target(e); n != display.wrapper; n = n.parentNode) {\n if (!n || (n.nodeType == 1 && n.getAttribute(\"cm-ignore-events\") == \"true\") ||\n (n.parentNode == display.sizer && n != display.mover))\n { return true }\n }\n }\n\n // POSITION MEASUREMENT\n\n function paddingTop(display) {return display.lineSpace.offsetTop}\n function paddingVert(display) {return display.mover.offsetHeight - display.lineSpace.offsetHeight}\n function paddingH(display) {\n if (display.cachedPaddingH) { return display.cachedPaddingH }\n var e = removeChildrenAndAdd(display.measure, elt(\"pre\", \"x\", \"CodeMirror-line-like\"));\n var style = window.getComputedStyle ? window.getComputedStyle(e) : e.currentStyle;\n var data = {left: parseInt(style.paddingLeft), right: parseInt(style.paddingRight)};\n if (!isNaN(data.left) && !isNaN(data.right)) { display.cachedPaddingH = data; }\n return data\n }\n\n function scrollGap(cm) { return scrollerGap - cm.display.nativeBarWidth }\n function displayWidth(cm) {\n return cm.display.scroller.clientWidth - scrollGap(cm) - cm.display.barWidth\n }\n function displayHeight(cm) {\n return cm.display.scroller.clientHeight - scrollGap(cm) - cm.display.barHeight\n }\n\n // Ensure the lineView.wrapping.heights array is populated. This is\n // an array of bottom offsets for the lines that make up a drawn\n // line. When lineWrapping is on, there might be more than one\n // height.\n function ensureLineHeights(cm, lineView, rect) {\n var wrapping = cm.options.lineWrapping;\n var curWidth = wrapping && displayWidth(cm);\n if (!lineView.measure.heights || wrapping && lineView.measure.width != curWidth) {\n var heights = lineView.measure.heights = [];\n if (wrapping) {\n lineView.measure.width = curWidth;\n var rects = lineView.text.firstChild.getClientRects();\n for (var i = 0; i < rects.length - 1; i++) {\n var cur = rects[i], next = rects[i + 1];\n if (Math.abs(cur.bottom - next.bottom) > 2)\n { heights.push((cur.bottom + next.top) / 2 - rect.top); }\n }\n }\n heights.push(rect.bottom - rect.top);\n }\n }\n\n // Find a line map (mapping character offsets to text nodes) and a\n // measurement cache for the given line number. (A line view might\n // contain multiple lines when collapsed ranges are present.)\n function mapFromLineView(lineView, line, lineN) {\n if (lineView.line == line)\n { return {map: lineView.measure.map, cache: lineView.measure.cache} }\n for (var i = 0; i < lineView.rest.length; i++)\n { if (lineView.rest[i] == line)\n { return {map: lineView.measure.maps[i], cache: lineView.measure.caches[i]} } }\n for (var i$1 = 0; i$1 < lineView.rest.length; i$1++)\n { if (lineNo(lineView.rest[i$1]) > lineN)\n { return {map: lineView.measure.maps[i$1], cache: lineView.measure.caches[i$1], before: true} } }\n }\n\n // Render a line into the hidden node display.externalMeasured. Used\n // when measurement is needed for a line that's not in the viewport.\n function updateExternalMeasurement(cm, line) {\n line = visualLine(line);\n var lineN = lineNo(line);\n var view = cm.display.externalMeasured = new LineView(cm.doc, line, lineN);\n view.lineN = lineN;\n var built = view.built = buildLineContent(cm, view);\n view.text = built.pre;\n removeChildrenAndAdd(cm.display.lineMeasure, built.pre);\n return view\n }\n\n // Get a {top, bottom, left, right} box (in line-local coordinates)\n // for a given character.\n function measureChar(cm, line, ch, bias) {\n return measureCharPrepared(cm, prepareMeasureForLine(cm, line), ch, bias)\n }\n\n // Find a line view that corresponds to the given line number.\n function findViewForLine(cm, lineN) {\n if (lineN >= cm.display.viewFrom && lineN < cm.display.viewTo)\n { return cm.display.view[findViewIndex(cm, lineN)] }\n var ext = cm.display.externalMeasured;\n if (ext && lineN >= ext.lineN && lineN < ext.lineN + ext.size)\n { return ext }\n }\n\n // Measurement can be split in two steps, the set-up work that\n // applies to the whole line, and the measurement of the actual\n // character. Functions like coordsChar, that need to do a lot of\n // measurements in a row, can thus ensure that the set-up work is\n // only done once.\n function prepareMeasureForLine(cm, line) {\n var lineN = lineNo(line);\n var view = findViewForLine(cm, lineN);\n if (view && !view.text) {\n view = null;\n } else if (view && view.changes) {\n updateLineForChanges(cm, view, lineN, getDimensions(cm));\n cm.curOp.forceUpdate = true;\n }\n if (!view)\n { view = updateExternalMeasurement(cm, line); }\n\n var info = mapFromLineView(view, line, lineN);\n return {\n line: line, view: view, rect: null,\n map: info.map, cache: info.cache, before: info.before,\n hasHeights: false\n }\n }\n\n // Given a prepared measurement object, measures the position of an\n // actual character (or fetches it from the cache).\n function measureCharPrepared(cm, prepared, ch, bias, varHeight) {\n if (prepared.before) { ch = -1; }\n var key = ch + (bias || \"\"), found;\n if (prepared.cache.hasOwnProperty(key)) {\n found = prepared.cache[key];\n } else {\n if (!prepared.rect)\n { prepared.rect = prepared.view.text.getBoundingClientRect(); }\n if (!prepared.hasHeights) {\n ensureLineHeights(cm, prepared.view, prepared.rect);\n prepared.hasHeights = true;\n }\n found = measureCharInner(cm, prepared, ch, bias);\n if (!found.bogus) { prepared.cache[key] = found; }\n }\n return {left: found.left, right: found.right,\n top: varHeight ? found.rtop : found.top,\n bottom: varHeight ? found.rbottom : found.bottom}\n }\n\n var nullRect = {left: 0, right: 0, top: 0, bottom: 0};\n\n function nodeAndOffsetInLineMap(map, ch, bias) {\n var node, start, end, collapse, mStart, mEnd;\n // First, search the line map for the text node corresponding to,\n // or closest to, the target character.\n for (var i = 0; i < map.length; i += 3) {\n mStart = map[i];\n mEnd = map[i + 1];\n if (ch < mStart) {\n start = 0; end = 1;\n collapse = \"left\";\n } else if (ch < mEnd) {\n start = ch - mStart;\n end = start + 1;\n } else if (i == map.length - 3 || ch == mEnd && map[i + 3] > ch) {\n end = mEnd - mStart;\n start = end - 1;\n if (ch >= mEnd) { collapse = \"right\"; }\n }\n if (start != null) {\n node = map[i + 2];\n if (mStart == mEnd && bias == (node.insertLeft ? \"left\" : \"right\"))\n { collapse = bias; }\n if (bias == \"left\" && start == 0)\n { while (i && map[i - 2] == map[i - 3] && map[i - 1].insertLeft) {\n node = map[(i -= 3) + 2];\n collapse = \"left\";\n } }\n if (bias == \"right\" && start == mEnd - mStart)\n { while (i < map.length - 3 && map[i + 3] == map[i + 4] && !map[i + 5].insertLeft) {\n node = map[(i += 3) + 2];\n collapse = \"right\";\n } }\n break\n }\n }\n return {node: node, start: start, end: end, collapse: collapse, coverStart: mStart, coverEnd: mEnd}\n }\n\n function getUsefulRect(rects, bias) {\n var rect = nullRect;\n if (bias == \"left\") { for (var i = 0; i < rects.length; i++) {\n if ((rect = rects[i]).left != rect.right) { break }\n } } else { for (var i$1 = rects.length - 1; i$1 >= 0; i$1--) {\n if ((rect = rects[i$1]).left != rect.right) { break }\n } }\n return rect\n }\n\n function measureCharInner(cm, prepared, ch, bias) {\n var place = nodeAndOffsetInLineMap(prepared.map, ch, bias);\n var node = place.node, start = place.start, end = place.end, collapse = place.collapse;\n\n var rect;\n if (node.nodeType == 3) { // If it is a text node, use a range to retrieve the coordinates.\n for (var i$1 = 0; i$1 < 4; i$1++) { // Retry a maximum of 4 times when nonsense rectangles are returned\n while (start && isExtendingChar(prepared.line.text.charAt(place.coverStart + start))) { --start; }\n while (place.coverStart + end < place.coverEnd && isExtendingChar(prepared.line.text.charAt(place.coverStart + end))) { ++end; }\n if (ie && ie_version < 9 && start == 0 && end == place.coverEnd - place.coverStart)\n { rect = node.parentNode.getBoundingClientRect(); }\n else\n { rect = getUsefulRect(range(node, start, end).getClientRects(), bias); }\n if (rect.left || rect.right || start == 0) { break }\n end = start;\n start = start - 1;\n collapse = \"right\";\n }\n if (ie && ie_version < 11) { rect = maybeUpdateRectForZooming(cm.display.measure, rect); }\n } else { // If it is a widget, simply get the box for the whole widget.\n if (start > 0) { collapse = bias = \"right\"; }\n var rects;\n if (cm.options.lineWrapping && (rects = node.getClientRects()).length > 1)\n { rect = rects[bias == \"right\" ? rects.length - 1 : 0]; }\n else\n { rect = node.getBoundingClientRect(); }\n }\n if (ie && ie_version < 9 && !start && (!rect || !rect.left && !rect.right)) {\n var rSpan = node.parentNode.getClientRects()[0];\n if (rSpan)\n { rect = {left: rSpan.left, right: rSpan.left + charWidth(cm.display), top: rSpan.top, bottom: rSpan.bottom}; }\n else\n { rect = nullRect; }\n }\n\n var rtop = rect.top - prepared.rect.top, rbot = rect.bottom - prepared.rect.top;\n var mid = (rtop + rbot) / 2;\n var heights = prepared.view.measure.heights;\n var i = 0;\n for (; i < heights.length - 1; i++)\n { if (mid < heights[i]) { break } }\n var top = i ? heights[i - 1] : 0, bot = heights[i];\n var result = {left: (collapse == \"right\" ? rect.right : rect.left) - prepared.rect.left,\n right: (collapse == \"left\" ? rect.left : rect.right) - prepared.rect.left,\n top: top, bottom: bot};\n if (!rect.left && !rect.right) { result.bogus = true; }\n if (!cm.options.singleCursorHeightPerLine) { result.rtop = rtop; result.rbottom = rbot; }\n\n return result\n }\n\n // Work around problem with bounding client rects on ranges being\n // returned incorrectly when zoomed on IE10 and below.\n function maybeUpdateRectForZooming(measure, rect) {\n if (!window.screen || screen.logicalXDPI == null ||\n screen.logicalXDPI == screen.deviceXDPI || !hasBadZoomedRects(measure))\n { return rect }\n var scaleX = screen.logicalXDPI / screen.deviceXDPI;\n var scaleY = screen.logicalYDPI / screen.deviceYDPI;\n return {left: rect.left * scaleX, right: rect.right * scaleX,\n top: rect.top * scaleY, bottom: rect.bottom * scaleY}\n }\n\n function clearLineMeasurementCacheFor(lineView) {\n if (lineView.measure) {\n lineView.measure.cache = {};\n lineView.measure.heights = null;\n if (lineView.rest) { for (var i = 0; i < lineView.rest.length; i++)\n { lineView.measure.caches[i] = {}; } }\n }\n }\n\n function clearLineMeasurementCache(cm) {\n cm.display.externalMeasure = null;\n removeChildren(cm.display.lineMeasure);\n for (var i = 0; i < cm.display.view.length; i++)\n { clearLineMeasurementCacheFor(cm.display.view[i]); }\n }\n\n function clearCaches(cm) {\n clearLineMeasurementCache(cm);\n cm.display.cachedCharWidth = cm.display.cachedTextHeight = cm.display.cachedPaddingH = null;\n if (!cm.options.lineWrapping) { cm.display.maxLineChanged = true; }\n cm.display.lineNumChars = null;\n }\n\n function pageScrollX() {\n // Work around https://bugs.chromium.org/p/chromium/issues/detail?id=489206\n // which causes page_Offset and bounding client rects to use\n // different reference viewports and invalidate our calculations.\n if (chrome && android) { return -(document.body.getBoundingClientRect().left - parseInt(getComputedStyle(document.body).marginLeft)) }\n return window.pageXOffset || (document.documentElement || document.body).scrollLeft\n }\n function pageScrollY() {\n if (chrome && android) { return -(document.body.getBoundingClientRect().top - parseInt(getComputedStyle(document.body).marginTop)) }\n return window.pageYOffset || (document.documentElement || document.body).scrollTop\n }\n\n function widgetTopHeight(lineObj) {\n var height = 0;\n if (lineObj.widgets) { for (var i = 0; i < lineObj.widgets.length; ++i) { if (lineObj.widgets[i].above)\n { height += widgetHeight(lineObj.widgets[i]); } } }\n return height\n }\n\n // Converts a {top, bottom, left, right} box from line-local\n // coordinates into another coordinate system. Context may be one of\n // \"line\", \"div\" (display.lineDiv), \"local\"./null (editor), \"window\",\n // or \"page\".\n function intoCoordSystem(cm, lineObj, rect, context, includeWidgets) {\n if (!includeWidgets) {\n var height = widgetTopHeight(lineObj);\n rect.top += height; rect.bottom += height;\n }\n if (context == \"line\") { return rect }\n if (!context) { context = \"local\"; }\n var yOff = heightAtLine(lineObj);\n if (context == \"local\") { yOff += paddingTop(cm.display); }\n else { yOff -= cm.display.viewOffset; }\n if (context == \"page\" || context == \"window\") {\n var lOff = cm.display.lineSpace.getBoundingClientRect();\n yOff += lOff.top + (context == \"window\" ? 0 : pageScrollY());\n var xOff = lOff.left + (context == \"window\" ? 0 : pageScrollX());\n rect.left += xOff; rect.right += xOff;\n }\n rect.top += yOff; rect.bottom += yOff;\n return rect\n }\n\n // Coverts a box from \"div\" coords to another coordinate system.\n // Context may be \"window\", \"page\", \"div\", or \"local\"./null.\n function fromCoordSystem(cm, coords, context) {\n if (context == \"div\") { return coords }\n var left = coords.left, top = coords.top;\n // First move into \"page\" coordinate system\n if (context == \"page\") {\n left -= pageScrollX();\n top -= pageScrollY();\n } else if (context == \"local\" || !context) {\n var localBox = cm.display.sizer.getBoundingClientRect();\n left += localBox.left;\n top += localBox.top;\n }\n\n var lineSpaceBox = cm.display.lineSpace.getBoundingClientRect();\n return {left: left - lineSpaceBox.left, top: top - lineSpaceBox.top}\n }\n\n function charCoords(cm, pos, context, lineObj, bias) {\n if (!lineObj) { lineObj = getLine(cm.doc, pos.line); }\n return intoCoordSystem(cm, lineObj, measureChar(cm, lineObj, pos.ch, bias), context)\n }\n\n // Returns a box for a given cursor position, which may have an\n // 'other' property containing the position of the secondary cursor\n // on a bidi boundary.\n // A cursor Pos(line, char, \"before\") is on the same visual line as `char - 1`\n // and after `char - 1` in writing order of `char - 1`\n // A cursor Pos(line, char, \"after\") is on the same visual line as `char`\n // and before `char` in writing order of `char`\n // Examples (upper-case letters are RTL, lower-case are LTR):\n // Pos(0, 1, ...)\n // before after\n // ab a|b a|b\n // aB a|B aB|\n // Ab |Ab A|b\n // AB B|A B|A\n // Every position after the last character on a line is considered to stick\n // to the last character on the line.\n function cursorCoords(cm, pos, context, lineObj, preparedMeasure, varHeight) {\n lineObj = lineObj || getLine(cm.doc, pos.line);\n if (!preparedMeasure) { preparedMeasure = prepareMeasureForLine(cm, lineObj); }\n function get(ch, right) {\n var m = measureCharPrepared(cm, preparedMeasure, ch, right ? \"right\" : \"left\", varHeight);\n if (right) { m.left = m.right; } else { m.right = m.left; }\n return intoCoordSystem(cm, lineObj, m, context)\n }\n var order = getOrder(lineObj, cm.doc.direction), ch = pos.ch, sticky = pos.sticky;\n if (ch >= lineObj.text.length) {\n ch = lineObj.text.length;\n sticky = \"before\";\n } else if (ch <= 0) {\n ch = 0;\n sticky = \"after\";\n }\n if (!order) { return get(sticky == \"before\" ? ch - 1 : ch, sticky == \"before\") }\n\n function getBidi(ch, partPos, invert) {\n var part = order[partPos], right = part.level == 1;\n return get(invert ? ch - 1 : ch, right != invert)\n }\n var partPos = getBidiPartAt(order, ch, sticky);\n var other = bidiOther;\n var val = getBidi(ch, partPos, sticky == \"before\");\n if (other != null) { val.other = getBidi(ch, other, sticky != \"before\"); }\n return val\n }\n\n // Used to cheaply estimate the coordinates for a position. Used for\n // intermediate scroll updates.\n function estimateCoords(cm, pos) {\n var left = 0;\n pos = clipPos(cm.doc, pos);\n if (!cm.options.lineWrapping) { left = charWidth(cm.display) * pos.ch; }\n var lineObj = getLine(cm.doc, pos.line);\n var top = heightAtLine(lineObj) + paddingTop(cm.display);\n return {left: left, right: left, top: top, bottom: top + lineObj.height}\n }\n\n // Positions returned by coordsChar contain some extra information.\n // xRel is the relative x position of the input coordinates compared\n // to the found position (so xRel > 0 means the coordinates are to\n // the right of the character position, for example). When outside\n // is true, that means the coordinates lie outside the line's\n // vertical range.\n function PosWithInfo(line, ch, sticky, outside, xRel) {\n var pos = Pos(line, ch, sticky);\n pos.xRel = xRel;\n if (outside) { pos.outside = outside; }\n return pos\n }\n\n // Compute the character position closest to the given coordinates.\n // Input must be lineSpace-local (\"div\" coordinate system).\n function coordsChar(cm, x, y) {\n var doc = cm.doc;\n y += cm.display.viewOffset;\n if (y < 0) { return PosWithInfo(doc.first, 0, null, -1, -1) }\n var lineN = lineAtHeight(doc, y), last = doc.first + doc.size - 1;\n if (lineN > last)\n { return PosWithInfo(doc.first + doc.size - 1, getLine(doc, last).text.length, null, 1, 1) }\n if (x < 0) { x = 0; }\n\n var lineObj = getLine(doc, lineN);\n for (;;) {\n var found = coordsCharInner(cm, lineObj, lineN, x, y);\n var collapsed = collapsedSpanAround(lineObj, found.ch + (found.xRel > 0 || found.outside > 0 ? 1 : 0));\n if (!collapsed) { return found }\n var rangeEnd = collapsed.find(1);\n if (rangeEnd.line == lineN) { return rangeEnd }\n lineObj = getLine(doc, lineN = rangeEnd.line);\n }\n }\n\n function wrappedLineExtent(cm, lineObj, preparedMeasure, y) {\n y -= widgetTopHeight(lineObj);\n var end = lineObj.text.length;\n var begin = findFirst(function (ch) { return measureCharPrepared(cm, preparedMeasure, ch - 1).bottom <= y; }, end, 0);\n end = findFirst(function (ch) { return measureCharPrepared(cm, preparedMeasure, ch).top > y; }, begin, end);\n return {begin: begin, end: end}\n }\n\n function wrappedLineExtentChar(cm, lineObj, preparedMeasure, target) {\n if (!preparedMeasure) { preparedMeasure = prepareMeasureForLine(cm, lineObj); }\n var targetTop = intoCoordSystem(cm, lineObj, measureCharPrepared(cm, preparedMeasure, target), \"line\").top;\n return wrappedLineExtent(cm, lineObj, preparedMeasure, targetTop)\n }\n\n // Returns true if the given side of a box is after the given\n // coordinates, in top-to-bottom, left-to-right order.\n function boxIsAfter(box, x, y, left) {\n return box.bottom <= y ? false : box.top > y ? true : (left ? box.left : box.right) > x\n }\n\n function coordsCharInner(cm, lineObj, lineNo, x, y) {\n // Move y into line-local coordinate space\n y -= heightAtLine(lineObj);\n var preparedMeasure = prepareMeasureForLine(cm, lineObj);\n // When directly calling `measureCharPrepared`, we have to adjust\n // for the widgets at this line.\n var widgetHeight = widgetTopHeight(lineObj);\n var begin = 0, end = lineObj.text.length, ltr = true;\n\n var order = getOrder(lineObj, cm.doc.direction);\n // If the line isn't plain left-to-right text, first figure out\n // which bidi section the coordinates fall into.\n if (order) {\n var part = (cm.options.lineWrapping ? coordsBidiPartWrapped : coordsBidiPart)\n (cm, lineObj, lineNo, preparedMeasure, order, x, y);\n ltr = part.level != 1;\n // The awkward -1 offsets are needed because findFirst (called\n // on these below) will treat its first bound as inclusive,\n // second as exclusive, but we want to actually address the\n // characters in the part's range\n begin = ltr ? part.from : part.to - 1;\n end = ltr ? part.to : part.from - 1;\n }\n\n // A binary search to find the first character whose bounding box\n // starts after the coordinates. If we run across any whose box wrap\n // the coordinates, store that.\n var chAround = null, boxAround = null;\n var ch = findFirst(function (ch) {\n var box = measureCharPrepared(cm, preparedMeasure, ch);\n box.top += widgetHeight; box.bottom += widgetHeight;\n if (!boxIsAfter(box, x, y, false)) { return false }\n if (box.top <= y && box.left <= x) {\n chAround = ch;\n boxAround = box;\n }\n return true\n }, begin, end);\n\n var baseX, sticky, outside = false;\n // If a box around the coordinates was found, use that\n if (boxAround) {\n // Distinguish coordinates nearer to the left or right side of the box\n var atLeft = x - boxAround.left < boxAround.right - x, atStart = atLeft == ltr;\n ch = chAround + (atStart ? 0 : 1);\n sticky = atStart ? \"after\" : \"before\";\n baseX = atLeft ? boxAround.left : boxAround.right;\n } else {\n // (Adjust for extended bound, if necessary.)\n if (!ltr && (ch == end || ch == begin)) { ch++; }\n // To determine which side to associate with, get the box to the\n // left of the character and compare it's vertical position to the\n // coordinates\n sticky = ch == 0 ? \"after\" : ch == lineObj.text.length ? \"before\" :\n (measureCharPrepared(cm, preparedMeasure, ch - (ltr ? 1 : 0)).bottom + widgetHeight <= y) == ltr ?\n \"after\" : \"before\";\n // Now get accurate coordinates for this place, in order to get a\n // base X position\n var coords = cursorCoords(cm, Pos(lineNo, ch, sticky), \"line\", lineObj, preparedMeasure);\n baseX = coords.left;\n outside = y < coords.top ? -1 : y >= coords.bottom ? 1 : 0;\n }\n\n ch = skipExtendingChars(lineObj.text, ch, 1);\n return PosWithInfo(lineNo, ch, sticky, outside, x - baseX)\n }\n\n function coordsBidiPart(cm, lineObj, lineNo, preparedMeasure, order, x, y) {\n // Bidi parts are sorted left-to-right, and in a non-line-wrapping\n // situation, we can take this ordering to correspond to the visual\n // ordering. This finds the first part whose end is after the given\n // coordinates.\n var index = findFirst(function (i) {\n var part = order[i], ltr = part.level != 1;\n return boxIsAfter(cursorCoords(cm, Pos(lineNo, ltr ? part.to : part.from, ltr ? \"before\" : \"after\"),\n \"line\", lineObj, preparedMeasure), x, y, true)\n }, 0, order.length - 1);\n var part = order[index];\n // If this isn't the first part, the part's start is also after\n // the coordinates, and the coordinates aren't on the same line as\n // that start, move one part back.\n if (index > 0) {\n var ltr = part.level != 1;\n var start = cursorCoords(cm, Pos(lineNo, ltr ? part.from : part.to, ltr ? \"after\" : \"before\"),\n \"line\", lineObj, preparedMeasure);\n if (boxIsAfter(start, x, y, true) && start.top > y)\n { part = order[index - 1]; }\n }\n return part\n }\n\n function coordsBidiPartWrapped(cm, lineObj, _lineNo, preparedMeasure, order, x, y) {\n // In a wrapped line, rtl text on wrapping boundaries can do things\n // that don't correspond to the ordering in our `order` array at\n // all, so a binary search doesn't work, and we want to return a\n // part that only spans one line so that the binary search in\n // coordsCharInner is safe. As such, we first find the extent of the\n // wrapped line, and then do a flat search in which we discard any\n // spans that aren't on the line.\n var ref = wrappedLineExtent(cm, lineObj, preparedMeasure, y);\n var begin = ref.begin;\n var end = ref.end;\n if (/\\s/.test(lineObj.text.charAt(end - 1))) { end--; }\n var part = null, closestDist = null;\n for (var i = 0; i < order.length; i++) {\n var p = order[i];\n if (p.from >= end || p.to <= begin) { continue }\n var ltr = p.level != 1;\n var endX = measureCharPrepared(cm, preparedMeasure, ltr ? Math.min(end, p.to) - 1 : Math.max(begin, p.from)).right;\n // Weigh against spans ending before this, so that they are only\n // picked if nothing ends after\n var dist = endX < x ? x - endX + 1e9 : endX - x;\n if (!part || closestDist > dist) {\n part = p;\n closestDist = dist;\n }\n }\n if (!part) { part = order[order.length - 1]; }\n // Clip the part to the wrapped line.\n if (part.from < begin) { part = {from: begin, to: part.to, level: part.level}; }\n if (part.to > end) { part = {from: part.from, to: end, level: part.level}; }\n return part\n }\n\n var measureText;\n // Compute the default text height.\n function textHeight(display) {\n if (display.cachedTextHeight != null) { return display.cachedTextHeight }\n if (measureText == null) {\n measureText = elt(\"pre\", null, \"CodeMirror-line-like\");\n // Measure a bunch of lines, for browsers that compute\n // fractional heights.\n for (var i = 0; i < 49; ++i) {\n measureText.appendChild(document.createTextNode(\"x\"));\n measureText.appendChild(elt(\"br\"));\n }\n measureText.appendChild(document.createTextNode(\"x\"));\n }\n removeChildrenAndAdd(display.measure, measureText);\n var height = measureText.offsetHeight / 50;\n if (height > 3) { display.cachedTextHeight = height; }\n removeChildren(display.measure);\n return height || 1\n }\n\n // Compute the default character width.\n function charWidth(display) {\n if (display.cachedCharWidth != null) { return display.cachedCharWidth }\n var anchor = elt(\"span\", \"xxxxxxxxxx\");\n var pre = elt(\"pre\", [anchor], \"CodeMirror-line-like\");\n removeChildrenAndAdd(display.measure, pre);\n var rect = anchor.getBoundingClientRect(), width = (rect.right - rect.left) / 10;\n if (width > 2) { display.cachedCharWidth = width; }\n return width || 10\n }\n\n // Do a bulk-read of the DOM positions and sizes needed to draw the\n // view, so that we don't interleave reading and writing to the DOM.\n function getDimensions(cm) {\n var d = cm.display, left = {}, width = {};\n var gutterLeft = d.gutters.clientLeft;\n for (var n = d.gutters.firstChild, i = 0; n; n = n.nextSibling, ++i) {\n var id = cm.display.gutterSpecs[i].className;\n left[id] = n.offsetLeft + n.clientLeft + gutterLeft;\n width[id] = n.clientWidth;\n }\n return {fixedPos: compensateForHScroll(d),\n gutterTotalWidth: d.gutters.offsetWidth,\n gutterLeft: left,\n gutterWidth: width,\n wrapperWidth: d.wrapper.clientWidth}\n }\n\n // Computes display.scroller.scrollLeft + display.gutters.offsetWidth,\n // but using getBoundingClientRect to get a sub-pixel-accurate\n // result.\n function compensateForHScroll(display) {\n return display.scroller.getBoundingClientRect().left - display.sizer.getBoundingClientRect().left\n }\n\n // Returns a function that estimates the height of a line, to use as\n // first approximation until the line becomes visible (and is thus\n // properly measurable).\n function estimateHeight(cm) {\n var th = textHeight(cm.display), wrapping = cm.options.lineWrapping;\n var perLine = wrapping && Math.max(5, cm.display.scroller.clientWidth / charWidth(cm.display) - 3);\n return function (line) {\n if (lineIsHidden(cm.doc, line)) { return 0 }\n\n var widgetsHeight = 0;\n if (line.widgets) { for (var i = 0; i < line.widgets.length; i++) {\n if (line.widgets[i].height) { widgetsHeight += line.widgets[i].height; }\n } }\n\n if (wrapping)\n { return widgetsHeight + (Math.ceil(line.text.length / perLine) || 1) * th }\n else\n { return widgetsHeight + th }\n }\n }\n\n function estimateLineHeights(cm) {\n var doc = cm.doc, est = estimateHeight(cm);\n doc.iter(function (line) {\n var estHeight = est(line);\n if (estHeight != line.height) { updateLineHeight(line, estHeight); }\n });\n }\n\n // Given a mouse event, find the corresponding position. If liberal\n // is false, it checks whether a gutter or scrollbar was clicked,\n // and returns null if it was. forRect is used by rectangular\n // selections, and tries to estimate a character position even for\n // coordinates beyond the right of the text.\n function posFromMouse(cm, e, liberal, forRect) {\n var display = cm.display;\n if (!liberal && e_target(e).getAttribute(\"cm-not-content\") == \"true\") { return null }\n\n var x, y, space = display.lineSpace.getBoundingClientRect();\n // Fails unpredictably on IE[67] when mouse is dragged around quickly.\n try { x = e.clientX - space.left; y = e.clientY - space.top; }\n catch (e$1) { return null }\n var coords = coordsChar(cm, x, y), line;\n if (forRect && coords.xRel > 0 && (line = getLine(cm.doc, coords.line).text).length == coords.ch) {\n var colDiff = countColumn(line, line.length, cm.options.tabSize) - line.length;\n coords = Pos(coords.line, Math.max(0, Math.round((x - paddingH(cm.display).left) / charWidth(cm.display)) - colDiff));\n }\n return coords\n }\n\n // Find the view element corresponding to a given line. Return null\n // when the line isn't visible.\n function findViewIndex(cm, n) {\n if (n >= cm.display.viewTo) { return null }\n n -= cm.display.viewFrom;\n if (n < 0) { return null }\n var view = cm.display.view;\n for (var i = 0; i < view.length; i++) {\n n -= view[i].size;\n if (n < 0) { return i }\n }\n }\n\n // Updates the display.view data structure for a given change to the\n // document. From and to are in pre-change coordinates. Lendiff is\n // the amount of lines added or subtracted by the change. This is\n // used for changes that span multiple lines, or change the way\n // lines are divided into visual lines. regLineChange (below)\n // registers single-line changes.\n function regChange(cm, from, to, lendiff) {\n if (from == null) { from = cm.doc.first; }\n if (to == null) { to = cm.doc.first + cm.doc.size; }\n if (!lendiff) { lendiff = 0; }\n\n var display = cm.display;\n if (lendiff && to < display.viewTo &&\n (display.updateLineNumbers == null || display.updateLineNumbers > from))\n { display.updateLineNumbers = from; }\n\n cm.curOp.viewChanged = true;\n\n if (from >= display.viewTo) { // Change after\n if (sawCollapsedSpans && visualLineNo(cm.doc, from) < display.viewTo)\n { resetView(cm); }\n } else if (to <= display.viewFrom) { // Change before\n if (sawCollapsedSpans && visualLineEndNo(cm.doc, to + lendiff) > display.viewFrom) {\n resetView(cm);\n } else {\n display.viewFrom += lendiff;\n display.viewTo += lendiff;\n }\n } else if (from <= display.viewFrom && to >= display.viewTo) { // Full overlap\n resetView(cm);\n } else if (from <= display.viewFrom) { // Top overlap\n var cut = viewCuttingPoint(cm, to, to + lendiff, 1);\n if (cut) {\n display.view = display.view.slice(cut.index);\n display.viewFrom = cut.lineN;\n display.viewTo += lendiff;\n } else {\n resetView(cm);\n }\n } else if (to >= display.viewTo) { // Bottom overlap\n var cut$1 = viewCuttingPoint(cm, from, from, -1);\n if (cut$1) {\n display.view = display.view.slice(0, cut$1.index);\n display.viewTo = cut$1.lineN;\n } else {\n resetView(cm);\n }\n } else { // Gap in the middle\n var cutTop = viewCuttingPoint(cm, from, from, -1);\n var cutBot = viewCuttingPoint(cm, to, to + lendiff, 1);\n if (cutTop && cutBot) {\n display.view = display.view.slice(0, cutTop.index)\n .concat(buildViewArray(cm, cutTop.lineN, cutBot.lineN))\n .concat(display.view.slice(cutBot.index));\n display.viewTo += lendiff;\n } else {\n resetView(cm);\n }\n }\n\n var ext = display.externalMeasured;\n if (ext) {\n if (to < ext.lineN)\n { ext.lineN += lendiff; }\n else if (from < ext.lineN + ext.size)\n { display.externalMeasured = null; }\n }\n }\n\n // Register a change to a single line. Type must be one of \"text\",\n // \"gutter\", \"class\", \"widget\"\n function regLineChange(cm, line, type) {\n cm.curOp.viewChanged = true;\n var display = cm.display, ext = cm.display.externalMeasured;\n if (ext && line >= ext.lineN && line < ext.lineN + ext.size)\n { display.externalMeasured = null; }\n\n if (line < display.viewFrom || line >= display.viewTo) { return }\n var lineView = display.view[findViewIndex(cm, line)];\n if (lineView.node == null) { return }\n var arr = lineView.changes || (lineView.changes = []);\n if (indexOf(arr, type) == -1) { arr.push(type); }\n }\n\n // Clear the view.\n function resetView(cm) {\n cm.display.viewFrom = cm.display.viewTo = cm.doc.first;\n cm.display.view = [];\n cm.display.viewOffset = 0;\n }\n\n function viewCuttingPoint(cm, oldN, newN, dir) {\n var index = findViewIndex(cm, oldN), diff, view = cm.display.view;\n if (!sawCollapsedSpans || newN == cm.doc.first + cm.doc.size)\n { return {index: index, lineN: newN} }\n var n = cm.display.viewFrom;\n for (var i = 0; i < index; i++)\n { n += view[i].size; }\n if (n != oldN) {\n if (dir > 0) {\n if (index == view.length - 1) { return null }\n diff = (n + view[index].size) - oldN;\n index++;\n } else {\n diff = n - oldN;\n }\n oldN += diff; newN += diff;\n }\n while (visualLineNo(cm.doc, newN) != newN) {\n if (index == (dir < 0 ? 0 : view.length - 1)) { return null }\n newN += dir * view[index - (dir < 0 ? 1 : 0)].size;\n index += dir;\n }\n return {index: index, lineN: newN}\n }\n\n // Force the view to cover a given range, adding empty view element\n // or clipping off existing ones as needed.\n function adjustView(cm, from, to) {\n var display = cm.display, view = display.view;\n if (view.length == 0 || from >= display.viewTo || to <= display.viewFrom) {\n display.view = buildViewArray(cm, from, to);\n display.viewFrom = from;\n } else {\n if (display.viewFrom > from)\n { display.view = buildViewArray(cm, from, display.viewFrom).concat(display.view); }\n else if (display.viewFrom < from)\n { display.view = display.view.slice(findViewIndex(cm, from)); }\n display.viewFrom = from;\n if (display.viewTo < to)\n { display.view = display.view.concat(buildViewArray(cm, display.viewTo, to)); }\n else if (display.viewTo > to)\n { display.view = display.view.slice(0, findViewIndex(cm, to)); }\n }\n display.viewTo = to;\n }\n\n // Count the number of lines in the view whose DOM representation is\n // out of date (or nonexistent).\n function countDirtyView(cm) {\n var view = cm.display.view, dirty = 0;\n for (var i = 0; i < view.length; i++) {\n var lineView = view[i];\n if (!lineView.hidden && (!lineView.node || lineView.changes)) { ++dirty; }\n }\n return dirty\n }\n\n function updateSelection(cm) {\n cm.display.input.showSelection(cm.display.input.prepareSelection());\n }\n\n function prepareSelection(cm, primary) {\n if ( primary === void 0 ) primary = true;\n\n var doc = cm.doc, result = {};\n var curFragment = result.cursors = document.createDocumentFragment();\n var selFragment = result.selection = document.createDocumentFragment();\n\n for (var i = 0; i < doc.sel.ranges.length; i++) {\n if (!primary && i == doc.sel.primIndex) { continue }\n var range = doc.sel.ranges[i];\n if (range.from().line >= cm.display.viewTo || range.to().line < cm.display.viewFrom) { continue }\n var collapsed = range.empty();\n if (collapsed || cm.options.showCursorWhenSelecting)\n { drawSelectionCursor(cm, range.head, curFragment); }\n if (!collapsed)\n { drawSelectionRange(cm, range, selFragment); }\n }\n return result\n }\n\n // Draws a cursor for the given range\n function drawSelectionCursor(cm, head, output) {\n var pos = cursorCoords(cm, head, \"div\", null, null, !cm.options.singleCursorHeightPerLine);\n\n var cursor = output.appendChild(elt(\"div\", \"\\u00a0\", \"CodeMirror-cursor\"));\n cursor.style.left = pos.left + \"px\";\n cursor.style.top = pos.top + \"px\";\n cursor.style.height = Math.max(0, pos.bottom - pos.top) * cm.options.cursorHeight + \"px\";\n\n if (/\\bcm-fat-cursor\\b/.test(cm.getWrapperElement().className)) {\n var charPos = charCoords(cm, head, \"div\", null, null);\n if (charPos.right - charPos.left > 0) {\n cursor.style.width = (charPos.right - charPos.left) + \"px\";\n }\n }\n\n if (pos.other) {\n // Secondary cursor, shown when on a 'jump' in bi-directional text\n var otherCursor = output.appendChild(elt(\"div\", \"\\u00a0\", \"CodeMirror-cursor CodeMirror-secondarycursor\"));\n otherCursor.style.display = \"\";\n otherCursor.style.left = pos.other.left + \"px\";\n otherCursor.style.top = pos.other.top + \"px\";\n otherCursor.style.height = (pos.other.bottom - pos.other.top) * .85 + \"px\";\n }\n }\n\n function cmpCoords(a, b) { return a.top - b.top || a.left - b.left }\n\n // Draws the given range as a highlighted selection\n function drawSelectionRange(cm, range, output) {\n var display = cm.display, doc = cm.doc;\n var fragment = document.createDocumentFragment();\n var padding = paddingH(cm.display), leftSide = padding.left;\n var rightSide = Math.max(display.sizerWidth, displayWidth(cm) - display.sizer.offsetLeft) - padding.right;\n var docLTR = doc.direction == \"ltr\";\n\n function add(left, top, width, bottom) {\n if (top < 0) { top = 0; }\n top = Math.round(top);\n bottom = Math.round(bottom);\n fragment.appendChild(elt(\"div\", null, \"CodeMirror-selected\", (\"position: absolute; left: \" + left + \"px;\\n top: \" + top + \"px; width: \" + (width == null ? rightSide - left : width) + \"px;\\n height: \" + (bottom - top) + \"px\")));\n }\n\n function drawForLine(line, fromArg, toArg) {\n var lineObj = getLine(doc, line);\n var lineLen = lineObj.text.length;\n var start, end;\n function coords(ch, bias) {\n return charCoords(cm, Pos(line, ch), \"div\", lineObj, bias)\n }\n\n function wrapX(pos, dir, side) {\n var extent = wrappedLineExtentChar(cm, lineObj, null, pos);\n var prop = (dir == \"ltr\") == (side == \"after\") ? \"left\" : \"right\";\n var ch = side == \"after\" ? extent.begin : extent.end - (/\\s/.test(lineObj.text.charAt(extent.end - 1)) ? 2 : 1);\n return coords(ch, prop)[prop]\n }\n\n var order = getOrder(lineObj, doc.direction);\n iterateBidiSections(order, fromArg || 0, toArg == null ? lineLen : toArg, function (from, to, dir, i) {\n var ltr = dir == \"ltr\";\n var fromPos = coords(from, ltr ? \"left\" : \"right\");\n var toPos = coords(to - 1, ltr ? \"right\" : \"left\");\n\n var openStart = fromArg == null && from == 0, openEnd = toArg == null && to == lineLen;\n var first = i == 0, last = !order || i == order.length - 1;\n if (toPos.top - fromPos.top <= 3) { // Single line\n var openLeft = (docLTR ? openStart : openEnd) && first;\n var openRight = (docLTR ? openEnd : openStart) && last;\n var left = openLeft ? leftSide : (ltr ? fromPos : toPos).left;\n var right = openRight ? rightSide : (ltr ? toPos : fromPos).right;\n add(left, fromPos.top, right - left, fromPos.bottom);\n } else { // Multiple lines\n var topLeft, topRight, botLeft, botRight;\n if (ltr) {\n topLeft = docLTR && openStart && first ? leftSide : fromPos.left;\n topRight = docLTR ? rightSide : wrapX(from, dir, \"before\");\n botLeft = docLTR ? leftSide : wrapX(to, dir, \"after\");\n botRight = docLTR && openEnd && last ? rightSide : toPos.right;\n } else {\n topLeft = !docLTR ? leftSide : wrapX(from, dir, \"before\");\n topRight = !docLTR && openStart && first ? rightSide : fromPos.right;\n botLeft = !docLTR && openEnd && last ? leftSide : toPos.left;\n botRight = !docLTR ? rightSide : wrapX(to, dir, \"after\");\n }\n add(topLeft, fromPos.top, topRight - topLeft, fromPos.bottom);\n if (fromPos.bottom < toPos.top) { add(leftSide, fromPos.bottom, null, toPos.top); }\n add(botLeft, toPos.top, botRight - botLeft, toPos.bottom);\n }\n\n if (!start || cmpCoords(fromPos, start) < 0) { start = fromPos; }\n if (cmpCoords(toPos, start) < 0) { start = toPos; }\n if (!end || cmpCoords(fromPos, end) < 0) { end = fromPos; }\n if (cmpCoords(toPos, end) < 0) { end = toPos; }\n });\n return {start: start, end: end}\n }\n\n var sFrom = range.from(), sTo = range.to();\n if (sFrom.line == sTo.line) {\n drawForLine(sFrom.line, sFrom.ch, sTo.ch);\n } else {\n var fromLine = getLine(doc, sFrom.line), toLine = getLine(doc, sTo.line);\n var singleVLine = visualLine(fromLine) == visualLine(toLine);\n var leftEnd = drawForLine(sFrom.line, sFrom.ch, singleVLine ? fromLine.text.length + 1 : null).end;\n var rightStart = drawForLine(sTo.line, singleVLine ? 0 : null, sTo.ch).start;\n if (singleVLine) {\n if (leftEnd.top < rightStart.top - 2) {\n add(leftEnd.right, leftEnd.top, null, leftEnd.bottom);\n add(leftSide, rightStart.top, rightStart.left, rightStart.bottom);\n } else {\n add(leftEnd.right, leftEnd.top, rightStart.left - leftEnd.right, leftEnd.bottom);\n }\n }\n if (leftEnd.bottom < rightStart.top)\n { add(leftSide, leftEnd.bottom, null, rightStart.top); }\n }\n\n output.appendChild(fragment);\n }\n\n // Cursor-blinking\n function restartBlink(cm) {\n if (!cm.state.focused) { return }\n var display = cm.display;\n clearInterval(display.blinker);\n var on = true;\n display.cursorDiv.style.visibility = \"\";\n if (cm.options.cursorBlinkRate > 0)\n { display.blinker = setInterval(function () {\n if (!cm.hasFocus()) { onBlur(cm); }\n display.cursorDiv.style.visibility = (on = !on) ? \"\" : \"hidden\";\n }, cm.options.cursorBlinkRate); }\n else if (cm.options.cursorBlinkRate < 0)\n { display.cursorDiv.style.visibility = \"hidden\"; }\n }\n\n function ensureFocus(cm) {\n if (!cm.hasFocus()) {\n cm.display.input.focus();\n if (!cm.state.focused) { onFocus(cm); }\n }\n }\n\n function delayBlurEvent(cm) {\n cm.state.delayingBlurEvent = true;\n setTimeout(function () { if (cm.state.delayingBlurEvent) {\n cm.state.delayingBlurEvent = false;\n if (cm.state.focused) { onBlur(cm); }\n } }, 100);\n }\n\n function onFocus(cm, e) {\n if (cm.state.delayingBlurEvent && !cm.state.draggingText) { cm.state.delayingBlurEvent = false; }\n\n if (cm.options.readOnly == \"nocursor\") { return }\n if (!cm.state.focused) {\n signal(cm, \"focus\", cm, e);\n cm.state.focused = true;\n addClass(cm.display.wrapper, \"CodeMirror-focused\");\n // This test prevents this from firing when a context\n // menu is closed (since the input reset would kill the\n // select-all detection hack)\n if (!cm.curOp && cm.display.selForContextMenu != cm.doc.sel) {\n cm.display.input.reset();\n if (webkit) { setTimeout(function () { return cm.display.input.reset(true); }, 20); } // Issue #1730\n }\n cm.display.input.receivedFocus();\n }\n restartBlink(cm);\n }\n function onBlur(cm, e) {\n if (cm.state.delayingBlurEvent) { return }\n\n if (cm.state.focused) {\n signal(cm, \"blur\", cm, e);\n cm.state.focused = false;\n rmClass(cm.display.wrapper, \"CodeMirror-focused\");\n }\n clearInterval(cm.display.blinker);\n setTimeout(function () { if (!cm.state.focused) { cm.display.shift = false; } }, 150);\n }\n\n // Read the actual heights of the rendered lines, and update their\n // stored heights to match.\n function updateHeightsInViewport(cm) {\n var display = cm.display;\n var prevBottom = display.lineDiv.offsetTop;\n var viewTop = Math.max(0, display.scroller.getBoundingClientRect().top);\n var oldHeight = display.lineDiv.getBoundingClientRect().top;\n var mustScroll = 0;\n for (var i = 0; i < display.view.length; i++) {\n var cur = display.view[i], wrapping = cm.options.lineWrapping;\n var height = (void 0), width = 0;\n if (cur.hidden) { continue }\n oldHeight += cur.line.height;\n if (ie && ie_version < 8) {\n var bot = cur.node.offsetTop + cur.node.offsetHeight;\n height = bot - prevBottom;\n prevBottom = bot;\n } else {\n var box = cur.node.getBoundingClientRect();\n height = box.bottom - box.top;\n // Check that lines don't extend past the right of the current\n // editor width\n if (!wrapping && cur.text.firstChild)\n { width = cur.text.firstChild.getBoundingClientRect().right - box.left - 1; }\n }\n var diff = cur.line.height - height;\n if (diff > .005 || diff < -.005) {\n if (oldHeight < viewTop) { mustScroll -= diff; }\n updateLineHeight(cur.line, height);\n updateWidgetHeight(cur.line);\n if (cur.rest) { for (var j = 0; j < cur.rest.length; j++)\n { updateWidgetHeight(cur.rest[j]); } }\n }\n if (width > cm.display.sizerWidth) {\n var chWidth = Math.ceil(width / charWidth(cm.display));\n if (chWidth > cm.display.maxLineLength) {\n cm.display.maxLineLength = chWidth;\n cm.display.maxLine = cur.line;\n cm.display.maxLineChanged = true;\n }\n }\n }\n if (Math.abs(mustScroll) > 2) { display.scroller.scrollTop += mustScroll; }\n }\n\n // Read and store the height of line widgets associated with the\n // given line.\n function updateWidgetHeight(line) {\n if (line.widgets) { for (var i = 0; i < line.widgets.length; ++i) {\n var w = line.widgets[i], parent = w.node.parentNode;\n if (parent) { w.height = parent.offsetHeight; }\n } }\n }\n\n // Compute the lines that are visible in a given viewport (defaults\n // the the current scroll position). viewport may contain top,\n // height, and ensure (see op.scrollToPos) properties.\n function visibleLines(display, doc, viewport) {\n var top = viewport && viewport.top != null ? Math.max(0, viewport.top) : display.scroller.scrollTop;\n top = Math.floor(top - paddingTop(display));\n var bottom = viewport && viewport.bottom != null ? viewport.bottom : top + display.wrapper.clientHeight;\n\n var from = lineAtHeight(doc, top), to = lineAtHeight(doc, bottom);\n // Ensure is a {from: {line, ch}, to: {line, ch}} object, and\n // forces those lines into the viewport (if possible).\n if (viewport && viewport.ensure) {\n var ensureFrom = viewport.ensure.from.line, ensureTo = viewport.ensure.to.line;\n if (ensureFrom < from) {\n from = ensureFrom;\n to = lineAtHeight(doc, heightAtLine(getLine(doc, ensureFrom)) + display.wrapper.clientHeight);\n } else if (Math.min(ensureTo, doc.lastLine()) >= to) {\n from = lineAtHeight(doc, heightAtLine(getLine(doc, ensureTo)) - display.wrapper.clientHeight);\n to = ensureTo;\n }\n }\n return {from: from, to: Math.max(to, from + 1)}\n }\n\n // SCROLLING THINGS INTO VIEW\n\n // If an editor sits on the top or bottom of the window, partially\n // scrolled out of view, this ensures that the cursor is visible.\n function maybeScrollWindow(cm, rect) {\n if (signalDOMEvent(cm, \"scrollCursorIntoView\")) { return }\n\n var display = cm.display, box = display.sizer.getBoundingClientRect(), doScroll = null;\n if (rect.top + box.top < 0) { doScroll = true; }\n else if (rect.bottom + box.top > (window.innerHeight || document.documentElement.clientHeight)) { doScroll = false; }\n if (doScroll != null && !phantom) {\n var scrollNode = elt(\"div\", \"\\u200b\", null, (\"position: absolute;\\n top: \" + (rect.top - display.viewOffset - paddingTop(cm.display)) + \"px;\\n height: \" + (rect.bottom - rect.top + scrollGap(cm) + display.barHeight) + \"px;\\n left: \" + (rect.left) + \"px; width: \" + (Math.max(2, rect.right - rect.left)) + \"px;\"));\n cm.display.lineSpace.appendChild(scrollNode);\n scrollNode.scrollIntoView(doScroll);\n cm.display.lineSpace.removeChild(scrollNode);\n }\n }\n\n // Scroll a given position into view (immediately), verifying that\n // it actually became visible (as line heights are accurately\n // measured, the position of something may 'drift' during drawing).\n function scrollPosIntoView(cm, pos, end, margin) {\n if (margin == null) { margin = 0; }\n var rect;\n if (!cm.options.lineWrapping && pos == end) {\n // Set pos and end to the cursor positions around the character pos sticks to\n // If pos.sticky == \"before\", that is around pos.ch - 1, otherwise around pos.ch\n // If pos == Pos(_, 0, \"before\"), pos and end are unchanged\n end = pos.sticky == \"before\" ? Pos(pos.line, pos.ch + 1, \"before\") : pos;\n pos = pos.ch ? Pos(pos.line, pos.sticky == \"before\" ? pos.ch - 1 : pos.ch, \"after\") : pos;\n }\n for (var limit = 0; limit < 5; limit++) {\n var changed = false;\n var coords = cursorCoords(cm, pos);\n var endCoords = !end || end == pos ? coords : cursorCoords(cm, end);\n rect = {left: Math.min(coords.left, endCoords.left),\n top: Math.min(coords.top, endCoords.top) - margin,\n right: Math.max(coords.left, endCoords.left),\n bottom: Math.max(coords.bottom, endCoords.bottom) + margin};\n var scrollPos = calculateScrollPos(cm, rect);\n var startTop = cm.doc.scrollTop, startLeft = cm.doc.scrollLeft;\n if (scrollPos.scrollTop != null) {\n updateScrollTop(cm, scrollPos.scrollTop);\n if (Math.abs(cm.doc.scrollTop - startTop) > 1) { changed = true; }\n }\n if (scrollPos.scrollLeft != null) {\n setScrollLeft(cm, scrollPos.scrollLeft);\n if (Math.abs(cm.doc.scrollLeft - startLeft) > 1) { changed = true; }\n }\n if (!changed) { break }\n }\n return rect\n }\n\n // Scroll a given set of coordinates into view (immediately).\n function scrollIntoView(cm, rect) {\n var scrollPos = calculateScrollPos(cm, rect);\n if (scrollPos.scrollTop != null) { updateScrollTop(cm, scrollPos.scrollTop); }\n if (scrollPos.scrollLeft != null) { setScrollLeft(cm, scrollPos.scrollLeft); }\n }\n\n // Calculate a new scroll position needed to scroll the given\n // rectangle into view. Returns an object with scrollTop and\n // scrollLeft properties. When these are undefined, the\n // vertical/horizontal position does not need to be adjusted.\n function calculateScrollPos(cm, rect) {\n var display = cm.display, snapMargin = textHeight(cm.display);\n if (rect.top < 0) { rect.top = 0; }\n var screentop = cm.curOp && cm.curOp.scrollTop != null ? cm.curOp.scrollTop : display.scroller.scrollTop;\n var screen = displayHeight(cm), result = {};\n if (rect.bottom - rect.top > screen) { rect.bottom = rect.top + screen; }\n var docBottom = cm.doc.height + paddingVert(display);\n var atTop = rect.top < snapMargin, atBottom = rect.bottom > docBottom - snapMargin;\n if (rect.top < screentop) {\n result.scrollTop = atTop ? 0 : rect.top;\n } else if (rect.bottom > screentop + screen) {\n var newTop = Math.min(rect.top, (atBottom ? docBottom : rect.bottom) - screen);\n if (newTop != screentop) { result.scrollTop = newTop; }\n }\n\n var gutterSpace = cm.options.fixedGutter ? 0 : display.gutters.offsetWidth;\n var screenleft = cm.curOp && cm.curOp.scrollLeft != null ? cm.curOp.scrollLeft : display.scroller.scrollLeft - gutterSpace;\n var screenw = displayWidth(cm) - display.gutters.offsetWidth;\n var tooWide = rect.right - rect.left > screenw;\n if (tooWide) { rect.right = rect.left + screenw; }\n if (rect.left < 10)\n { result.scrollLeft = 0; }\n else if (rect.left < screenleft)\n { result.scrollLeft = Math.max(0, rect.left + gutterSpace - (tooWide ? 0 : 10)); }\n else if (rect.right > screenw + screenleft - 3)\n { result.scrollLeft = rect.right + (tooWide ? 0 : 10) - screenw; }\n return result\n }\n\n // Store a relative adjustment to the scroll position in the current\n // operation (to be applied when the operation finishes).\n function addToScrollTop(cm, top) {\n if (top == null) { return }\n resolveScrollToPos(cm);\n cm.curOp.scrollTop = (cm.curOp.scrollTop == null ? cm.doc.scrollTop : cm.curOp.scrollTop) + top;\n }\n\n // Make sure that at the end of the operation the current cursor is\n // shown.\n function ensureCursorVisible(cm) {\n resolveScrollToPos(cm);\n var cur = cm.getCursor();\n cm.curOp.scrollToPos = {from: cur, to: cur, margin: cm.options.cursorScrollMargin};\n }\n\n function scrollToCoords(cm, x, y) {\n if (x != null || y != null) { resolveScrollToPos(cm); }\n if (x != null) { cm.curOp.scrollLeft = x; }\n if (y != null) { cm.curOp.scrollTop = y; }\n }\n\n function scrollToRange(cm, range) {\n resolveScrollToPos(cm);\n cm.curOp.scrollToPos = range;\n }\n\n // When an operation has its scrollToPos property set, and another\n // scroll action is applied before the end of the operation, this\n // 'simulates' scrolling that position into view in a cheap way, so\n // that the effect of intermediate scroll commands is not ignored.\n function resolveScrollToPos(cm) {\n var range = cm.curOp.scrollToPos;\n if (range) {\n cm.curOp.scrollToPos = null;\n var from = estimateCoords(cm, range.from), to = estimateCoords(cm, range.to);\n scrollToCoordsRange(cm, from, to, range.margin);\n }\n }\n\n function scrollToCoordsRange(cm, from, to, margin) {\n var sPos = calculateScrollPos(cm, {\n left: Math.min(from.left, to.left),\n top: Math.min(from.top, to.top) - margin,\n right: Math.max(from.right, to.right),\n bottom: Math.max(from.bottom, to.bottom) + margin\n });\n scrollToCoords(cm, sPos.scrollLeft, sPos.scrollTop);\n }\n\n // Sync the scrollable area and scrollbars, ensure the viewport\n // covers the visible area.\n function updateScrollTop(cm, val) {\n if (Math.abs(cm.doc.scrollTop - val) < 2) { return }\n if (!gecko) { updateDisplaySimple(cm, {top: val}); }\n setScrollTop(cm, val, true);\n if (gecko) { updateDisplaySimple(cm); }\n startWorker(cm, 100);\n }\n\n function setScrollTop(cm, val, forceScroll) {\n val = Math.max(0, Math.min(cm.display.scroller.scrollHeight - cm.display.scroller.clientHeight, val));\n if (cm.display.scroller.scrollTop == val && !forceScroll) { return }\n cm.doc.scrollTop = val;\n cm.display.scrollbars.setScrollTop(val);\n if (cm.display.scroller.scrollTop != val) { cm.display.scroller.scrollTop = val; }\n }\n\n // Sync scroller and scrollbar, ensure the gutter elements are\n // aligned.\n function setScrollLeft(cm, val, isScroller, forceScroll) {\n val = Math.max(0, Math.min(val, cm.display.scroller.scrollWidth - cm.display.scroller.clientWidth));\n if ((isScroller ? val == cm.doc.scrollLeft : Math.abs(cm.doc.scrollLeft - val) < 2) && !forceScroll) { return }\n cm.doc.scrollLeft = val;\n alignHorizontally(cm);\n if (cm.display.scroller.scrollLeft != val) { cm.display.scroller.scrollLeft = val; }\n cm.display.scrollbars.setScrollLeft(val);\n }\n\n // SCROLLBARS\n\n // Prepare DOM reads needed to update the scrollbars. Done in one\n // shot to minimize update/measure roundtrips.\n function measureForScrollbars(cm) {\n var d = cm.display, gutterW = d.gutters.offsetWidth;\n var docH = Math.round(cm.doc.height + paddingVert(cm.display));\n return {\n clientHeight: d.scroller.clientHeight,\n viewHeight: d.wrapper.clientHeight,\n scrollWidth: d.scroller.scrollWidth, clientWidth: d.scroller.clientWidth,\n viewWidth: d.wrapper.clientWidth,\n barLeft: cm.options.fixedGutter ? gutterW : 0,\n docHeight: docH,\n scrollHeight: docH + scrollGap(cm) + d.barHeight,\n nativeBarWidth: d.nativeBarWidth,\n gutterWidth: gutterW\n }\n }\n\n var NativeScrollbars = function(place, scroll, cm) {\n this.cm = cm;\n var vert = this.vert = elt(\"div\", [elt(\"div\", null, null, \"min-width: 1px\")], \"CodeMirror-vscrollbar\");\n var horiz = this.horiz = elt(\"div\", [elt(\"div\", null, null, \"height: 100%; min-height: 1px\")], \"CodeMirror-hscrollbar\");\n vert.tabIndex = horiz.tabIndex = -1;\n place(vert); place(horiz);\n\n on(vert, \"scroll\", function () {\n if (vert.clientHeight) { scroll(vert.scrollTop, \"vertical\"); }\n });\n on(horiz, \"scroll\", function () {\n if (horiz.clientWidth) { scroll(horiz.scrollLeft, \"horizontal\"); }\n });\n\n this.checkedZeroWidth = false;\n // Need to set a minimum width to see the scrollbar on IE7 (but must not set it on IE8).\n if (ie && ie_version < 8) { this.horiz.style.minHeight = this.vert.style.minWidth = \"18px\"; }\n };\n\n NativeScrollbars.prototype.update = function (measure) {\n var needsH = measure.scrollWidth > measure.clientWidth + 1;\n var needsV = measure.scrollHeight > measure.clientHeight + 1;\n var sWidth = measure.nativeBarWidth;\n\n if (needsV) {\n this.vert.style.display = \"block\";\n this.vert.style.bottom = needsH ? sWidth + \"px\" : \"0\";\n var totalHeight = measure.viewHeight - (needsH ? sWidth : 0);\n // A bug in IE8 can cause this value to be negative, so guard it.\n this.vert.firstChild.style.height =\n Math.max(0, measure.scrollHeight - measure.clientHeight + totalHeight) + \"px\";\n } else {\n this.vert.style.display = \"\";\n this.vert.firstChild.style.height = \"0\";\n }\n\n if (needsH) {\n this.horiz.style.display = \"block\";\n this.horiz.style.right = needsV ? sWidth + \"px\" : \"0\";\n this.horiz.style.left = measure.barLeft + \"px\";\n var totalWidth = measure.viewWidth - measure.barLeft - (needsV ? sWidth : 0);\n this.horiz.firstChild.style.width =\n Math.max(0, measure.scrollWidth - measure.clientWidth + totalWidth) + \"px\";\n } else {\n this.horiz.style.display = \"\";\n this.horiz.firstChild.style.width = \"0\";\n }\n\n if (!this.checkedZeroWidth && measure.clientHeight > 0) {\n if (sWidth == 0) { this.zeroWidthHack(); }\n this.checkedZeroWidth = true;\n }\n\n return {right: needsV ? sWidth : 0, bottom: needsH ? sWidth : 0}\n };\n\n NativeScrollbars.prototype.setScrollLeft = function (pos) {\n if (this.horiz.scrollLeft != pos) { this.horiz.scrollLeft = pos; }\n if (this.disableHoriz) { this.enableZeroWidthBar(this.horiz, this.disableHoriz, \"horiz\"); }\n };\n\n NativeScrollbars.prototype.setScrollTop = function (pos) {\n if (this.vert.scrollTop != pos) { this.vert.scrollTop = pos; }\n if (this.disableVert) { this.enableZeroWidthBar(this.vert, this.disableVert, \"vert\"); }\n };\n\n NativeScrollbars.prototype.zeroWidthHack = function () {\n var w = mac && !mac_geMountainLion ? \"12px\" : \"18px\";\n this.horiz.style.height = this.vert.style.width = w;\n this.horiz.style.pointerEvents = this.vert.style.pointerEvents = \"none\";\n this.disableHoriz = new Delayed;\n this.disableVert = new Delayed;\n };\n\n NativeScrollbars.prototype.enableZeroWidthBar = function (bar, delay, type) {\n bar.style.pointerEvents = \"auto\";\n function maybeDisable() {\n // To find out whether the scrollbar is still visible, we\n // check whether the element under the pixel in the bottom\n // right corner of the scrollbar box is the scrollbar box\n // itself (when the bar is still visible) or its filler child\n // (when the bar is hidden). If it is still visible, we keep\n // it enabled, if it's hidden, we disable pointer events.\n var box = bar.getBoundingClientRect();\n var elt = type == \"vert\" ? document.elementFromPoint(box.right - 1, (box.top + box.bottom) / 2)\n : document.elementFromPoint((box.right + box.left) / 2, box.bottom - 1);\n if (elt != bar) { bar.style.pointerEvents = \"none\"; }\n else { delay.set(1000, maybeDisable); }\n }\n delay.set(1000, maybeDisable);\n };\n\n NativeScrollbars.prototype.clear = function () {\n var parent = this.horiz.parentNode;\n parent.removeChild(this.horiz);\n parent.removeChild(this.vert);\n };\n\n var NullScrollbars = function () {};\n\n NullScrollbars.prototype.update = function () { return {bottom: 0, right: 0} };\n NullScrollbars.prototype.setScrollLeft = function () {};\n NullScrollbars.prototype.setScrollTop = function () {};\n NullScrollbars.prototype.clear = function () {};\n\n function updateScrollbars(cm, measure) {\n if (!measure) { measure = measureForScrollbars(cm); }\n var startWidth = cm.display.barWidth, startHeight = cm.display.barHeight;\n updateScrollbarsInner(cm, measure);\n for (var i = 0; i < 4 && startWidth != cm.display.barWidth || startHeight != cm.display.barHeight; i++) {\n if (startWidth != cm.display.barWidth && cm.options.lineWrapping)\n { updateHeightsInViewport(cm); }\n updateScrollbarsInner(cm, measureForScrollbars(cm));\n startWidth = cm.display.barWidth; startHeight = cm.display.barHeight;\n }\n }\n\n // Re-synchronize the fake scrollbars with the actual size of the\n // content.\n function updateScrollbarsInner(cm, measure) {\n var d = cm.display;\n var sizes = d.scrollbars.update(measure);\n\n d.sizer.style.paddingRight = (d.barWidth = sizes.right) + \"px\";\n d.sizer.style.paddingBottom = (d.barHeight = sizes.bottom) + \"px\";\n d.heightForcer.style.borderBottom = sizes.bottom + \"px solid transparent\";\n\n if (sizes.right && sizes.bottom) {\n d.scrollbarFiller.style.display = \"block\";\n d.scrollbarFiller.style.height = sizes.bottom + \"px\";\n d.scrollbarFiller.style.width = sizes.right + \"px\";\n } else { d.scrollbarFiller.style.display = \"\"; }\n if (sizes.bottom && cm.options.coverGutterNextToScrollbar && cm.options.fixedGutter) {\n d.gutterFiller.style.display = \"block\";\n d.gutterFiller.style.height = sizes.bottom + \"px\";\n d.gutterFiller.style.width = measure.gutterWidth + \"px\";\n } else { d.gutterFiller.style.display = \"\"; }\n }\n\n var scrollbarModel = {\"native\": NativeScrollbars, \"null\": NullScrollbars};\n\n function initScrollbars(cm) {\n if (cm.display.scrollbars) {\n cm.display.scrollbars.clear();\n if (cm.display.scrollbars.addClass)\n { rmClass(cm.display.wrapper, cm.display.scrollbars.addClass); }\n }\n\n cm.display.scrollbars = new scrollbarModel[cm.options.scrollbarStyle](function (node) {\n cm.display.wrapper.insertBefore(node, cm.display.scrollbarFiller);\n // Prevent clicks in the scrollbars from killing focus\n on(node, \"mousedown\", function () {\n if (cm.state.focused) { setTimeout(function () { return cm.display.input.focus(); }, 0); }\n });\n node.setAttribute(\"cm-not-content\", \"true\");\n }, function (pos, axis) {\n if (axis == \"horizontal\") { setScrollLeft(cm, pos); }\n else { updateScrollTop(cm, pos); }\n }, cm);\n if (cm.display.scrollbars.addClass)\n { addClass(cm.display.wrapper, cm.display.scrollbars.addClass); }\n }\n\n // Operations are used to wrap a series of changes to the editor\n // state in such a way that each change won't have to update the\n // cursor and display (which would be awkward, slow, and\n // error-prone). Instead, display updates are batched and then all\n // combined and executed at once.\n\n var nextOpId = 0;\n // Start a new operation.\n function startOperation(cm) {\n cm.curOp = {\n cm: cm,\n viewChanged: false, // Flag that indicates that lines might need to be redrawn\n startHeight: cm.doc.height, // Used to detect need to update scrollbar\n forceUpdate: false, // Used to force a redraw\n updateInput: 0, // Whether to reset the input textarea\n typing: false, // Whether this reset should be careful to leave existing text (for compositing)\n changeObjs: null, // Accumulated changes, for firing change events\n cursorActivityHandlers: null, // Set of handlers to fire cursorActivity on\n cursorActivityCalled: 0, // Tracks which cursorActivity handlers have been called already\n selectionChanged: false, // Whether the selection needs to be redrawn\n updateMaxLine: false, // Set when the widest line needs to be determined anew\n scrollLeft: null, scrollTop: null, // Intermediate scroll position, not pushed to DOM yet\n scrollToPos: null, // Used to scroll to a specific position\n focus: false,\n id: ++nextOpId, // Unique ID\n markArrays: null // Used by addMarkedSpan\n };\n pushOperation(cm.curOp);\n }\n\n // Finish an operation, updating the display and signalling delayed events\n function endOperation(cm) {\n var op = cm.curOp;\n if (op) { finishOperation(op, function (group) {\n for (var i = 0; i < group.ops.length; i++)\n { group.ops[i].cm.curOp = null; }\n endOperations(group);\n }); }\n }\n\n // The DOM updates done when an operation finishes are batched so\n // that the minimum number of relayouts are required.\n function endOperations(group) {\n var ops = group.ops;\n for (var i = 0; i < ops.length; i++) // Read DOM\n { endOperation_R1(ops[i]); }\n for (var i$1 = 0; i$1 < ops.length; i$1++) // Write DOM (maybe)\n { endOperation_W1(ops[i$1]); }\n for (var i$2 = 0; i$2 < ops.length; i$2++) // Read DOM\n { endOperation_R2(ops[i$2]); }\n for (var i$3 = 0; i$3 < ops.length; i$3++) // Write DOM (maybe)\n { endOperation_W2(ops[i$3]); }\n for (var i$4 = 0; i$4 < ops.length; i$4++) // Read DOM\n { endOperation_finish(ops[i$4]); }\n }\n\n function endOperation_R1(op) {\n var cm = op.cm, display = cm.display;\n maybeClipScrollbars(cm);\n if (op.updateMaxLine) { findMaxLine(cm); }\n\n op.mustUpdate = op.viewChanged || op.forceUpdate || op.scrollTop != null ||\n op.scrollToPos && (op.scrollToPos.from.line < display.viewFrom ||\n op.scrollToPos.to.line >= display.viewTo) ||\n display.maxLineChanged && cm.options.lineWrapping;\n op.update = op.mustUpdate &&\n new DisplayUpdate(cm, op.mustUpdate && {top: op.scrollTop, ensure: op.scrollToPos}, op.forceUpdate);\n }\n\n function endOperation_W1(op) {\n op.updatedDisplay = op.mustUpdate && updateDisplayIfNeeded(op.cm, op.update);\n }\n\n function endOperation_R2(op) {\n var cm = op.cm, display = cm.display;\n if (op.updatedDisplay) { updateHeightsInViewport(cm); }\n\n op.barMeasure = measureForScrollbars(cm);\n\n // If the max line changed since it was last measured, measure it,\n // and ensure the document's width matches it.\n // updateDisplay_W2 will use these properties to do the actual resizing\n if (display.maxLineChanged && !cm.options.lineWrapping) {\n op.adjustWidthTo = measureChar(cm, display.maxLine, display.maxLine.text.length).left + 3;\n cm.display.sizerWidth = op.adjustWidthTo;\n op.barMeasure.scrollWidth =\n Math.max(display.scroller.clientWidth, display.sizer.offsetLeft + op.adjustWidthTo + scrollGap(cm) + cm.display.barWidth);\n op.maxScrollLeft = Math.max(0, display.sizer.offsetLeft + op.adjustWidthTo - displayWidth(cm));\n }\n\n if (op.updatedDisplay || op.selectionChanged)\n { op.preparedSelection = display.input.prepareSelection(); }\n }\n\n function endOperation_W2(op) {\n var cm = op.cm;\n\n if (op.adjustWidthTo != null) {\n cm.display.sizer.style.minWidth = op.adjustWidthTo + \"px\";\n if (op.maxScrollLeft < cm.doc.scrollLeft)\n { setScrollLeft(cm, Math.min(cm.display.scroller.scrollLeft, op.maxScrollLeft), true); }\n cm.display.maxLineChanged = false;\n }\n\n var takeFocus = op.focus && op.focus == activeElt();\n if (op.preparedSelection)\n { cm.display.input.showSelection(op.preparedSelection, takeFocus); }\n if (op.updatedDisplay || op.startHeight != cm.doc.height)\n { updateScrollbars(cm, op.barMeasure); }\n if (op.updatedDisplay)\n { setDocumentHeight(cm, op.barMeasure); }\n\n if (op.selectionChanged) { restartBlink(cm); }\n\n if (cm.state.focused && op.updateInput)\n { cm.display.input.reset(op.typing); }\n if (takeFocus) { ensureFocus(op.cm); }\n }\n\n function endOperation_finish(op) {\n var cm = op.cm, display = cm.display, doc = cm.doc;\n\n if (op.updatedDisplay) { postUpdateDisplay(cm, op.update); }\n\n // Abort mouse wheel delta measurement, when scrolling explicitly\n if (display.wheelStartX != null && (op.scrollTop != null || op.scrollLeft != null || op.scrollToPos))\n { display.wheelStartX = display.wheelStartY = null; }\n\n // Propagate the scroll position to the actual DOM scroller\n if (op.scrollTop != null) { setScrollTop(cm, op.scrollTop, op.forceScroll); }\n\n if (op.scrollLeft != null) { setScrollLeft(cm, op.scrollLeft, true, true); }\n // If we need to scroll a specific position into view, do so.\n if (op.scrollToPos) {\n var rect = scrollPosIntoView(cm, clipPos(doc, op.scrollToPos.from),\n clipPos(doc, op.scrollToPos.to), op.scrollToPos.margin);\n maybeScrollWindow(cm, rect);\n }\n\n // Fire events for markers that are hidden/unidden by editing or\n // undoing\n var hidden = op.maybeHiddenMarkers, unhidden = op.maybeUnhiddenMarkers;\n if (hidden) { for (var i = 0; i < hidden.length; ++i)\n { if (!hidden[i].lines.length) { signal(hidden[i], \"hide\"); } } }\n if (unhidden) { for (var i$1 = 0; i$1 < unhidden.length; ++i$1)\n { if (unhidden[i$1].lines.length) { signal(unhidden[i$1], \"unhide\"); } } }\n\n if (display.wrapper.offsetHeight)\n { doc.scrollTop = cm.display.scroller.scrollTop; }\n\n // Fire change events, and delayed event handlers\n if (op.changeObjs)\n { signal(cm, \"changes\", cm, op.changeObjs); }\n if (op.update)\n { op.update.finish(); }\n }\n\n // Run the given function in an operation\n function runInOp(cm, f) {\n if (cm.curOp) { return f() }\n startOperation(cm);\n try { return f() }\n finally { endOperation(cm); }\n }\n // Wraps a function in an operation. Returns the wrapped function.\n function operation(cm, f) {\n return function() {\n if (cm.curOp) { return f.apply(cm, arguments) }\n startOperation(cm);\n try { return f.apply(cm, arguments) }\n finally { endOperation(cm); }\n }\n }\n // Used to add methods to editor and doc instances, wrapping them in\n // operations.\n function methodOp(f) {\n return function() {\n if (this.curOp) { return f.apply(this, arguments) }\n startOperation(this);\n try { return f.apply(this, arguments) }\n finally { endOperation(this); }\n }\n }\n function docMethodOp(f) {\n return function() {\n var cm = this.cm;\n if (!cm || cm.curOp) { return f.apply(this, arguments) }\n startOperation(cm);\n try { return f.apply(this, arguments) }\n finally { endOperation(cm); }\n }\n }\n\n // HIGHLIGHT WORKER\n\n function startWorker(cm, time) {\n if (cm.doc.highlightFrontier < cm.display.viewTo)\n { cm.state.highlight.set(time, bind(highlightWorker, cm)); }\n }\n\n function highlightWorker(cm) {\n var doc = cm.doc;\n if (doc.highlightFrontier >= cm.display.viewTo) { return }\n var end = +new Date + cm.options.workTime;\n var context = getContextBefore(cm, doc.highlightFrontier);\n var changedLines = [];\n\n doc.iter(context.line, Math.min(doc.first + doc.size, cm.display.viewTo + 500), function (line) {\n if (context.line >= cm.display.viewFrom) { // Visible\n var oldStyles = line.styles;\n var resetState = line.text.length > cm.options.maxHighlightLength ? copyState(doc.mode, context.state) : null;\n var highlighted = highlightLine(cm, line, context, true);\n if (resetState) { context.state = resetState; }\n line.styles = highlighted.styles;\n var oldCls = line.styleClasses, newCls = highlighted.classes;\n if (newCls) { line.styleClasses = newCls; }\n else if (oldCls) { line.styleClasses = null; }\n var ischange = !oldStyles || oldStyles.length != line.styles.length ||\n oldCls != newCls && (!oldCls || !newCls || oldCls.bgClass != newCls.bgClass || oldCls.textClass != newCls.textClass);\n for (var i = 0; !ischange && i < oldStyles.length; ++i) { ischange = oldStyles[i] != line.styles[i]; }\n if (ischange) { changedLines.push(context.line); }\n line.stateAfter = context.save();\n context.nextLine();\n } else {\n if (line.text.length <= cm.options.maxHighlightLength)\n { processLine(cm, line.text, context); }\n line.stateAfter = context.line % 5 == 0 ? context.save() : null;\n context.nextLine();\n }\n if (+new Date > end) {\n startWorker(cm, cm.options.workDelay);\n return true\n }\n });\n doc.highlightFrontier = context.line;\n doc.modeFrontier = Math.max(doc.modeFrontier, context.line);\n if (changedLines.length) { runInOp(cm, function () {\n for (var i = 0; i < changedLines.length; i++)\n { regLineChange(cm, changedLines[i], \"text\"); }\n }); }\n }\n\n // DISPLAY DRAWING\n\n var DisplayUpdate = function(cm, viewport, force) {\n var display = cm.display;\n\n this.viewport = viewport;\n // Store some values that we'll need later (but don't want to force a relayout for)\n this.visible = visibleLines(display, cm.doc, viewport);\n this.editorIsHidden = !display.wrapper.offsetWidth;\n this.wrapperHeight = display.wrapper.clientHeight;\n this.wrapperWidth = display.wrapper.clientWidth;\n this.oldDisplayWidth = displayWidth(cm);\n this.force = force;\n this.dims = getDimensions(cm);\n this.events = [];\n };\n\n DisplayUpdate.prototype.signal = function (emitter, type) {\n if (hasHandler(emitter, type))\n { this.events.push(arguments); }\n };\n DisplayUpdate.prototype.finish = function () {\n for (var i = 0; i < this.events.length; i++)\n { signal.apply(null, this.events[i]); }\n };\n\n function maybeClipScrollbars(cm) {\n var display = cm.display;\n if (!display.scrollbarsClipped && display.scroller.offsetWidth) {\n display.nativeBarWidth = display.scroller.offsetWidth - display.scroller.clientWidth;\n display.heightForcer.style.height = scrollGap(cm) + \"px\";\n display.sizer.style.marginBottom = -display.nativeBarWidth + \"px\";\n display.sizer.style.borderRightWidth = scrollGap(cm) + \"px\";\n display.scrollbarsClipped = true;\n }\n }\n\n function selectionSnapshot(cm) {\n if (cm.hasFocus()) { return null }\n var active = activeElt();\n if (!active || !contains(cm.display.lineDiv, active)) { return null }\n var result = {activeElt: active};\n if (window.getSelection) {\n var sel = window.getSelection();\n if (sel.anchorNode && sel.extend && contains(cm.display.lineDiv, sel.anchorNode)) {\n result.anchorNode = sel.anchorNode;\n result.anchorOffset = sel.anchorOffset;\n result.focusNode = sel.focusNode;\n result.focusOffset = sel.focusOffset;\n }\n }\n return result\n }\n\n function restoreSelection(snapshot) {\n if (!snapshot || !snapshot.activeElt || snapshot.activeElt == activeElt()) { return }\n snapshot.activeElt.focus();\n if (!/^(INPUT|TEXTAREA)$/.test(snapshot.activeElt.nodeName) &&\n snapshot.anchorNode && contains(document.body, snapshot.anchorNode) && contains(document.body, snapshot.focusNode)) {\n var sel = window.getSelection(), range = document.createRange();\n range.setEnd(snapshot.anchorNode, snapshot.anchorOffset);\n range.collapse(false);\n sel.removeAllRanges();\n sel.addRange(range);\n sel.extend(snapshot.focusNode, snapshot.focusOffset);\n }\n }\n\n // Does the actual updating of the line display. Bails out\n // (returning false) when there is nothing to be done and forced is\n // false.\n function updateDisplayIfNeeded(cm, update) {\n var display = cm.display, doc = cm.doc;\n\n if (update.editorIsHidden) {\n resetView(cm);\n return false\n }\n\n // Bail out if the visible area is already rendered and nothing changed.\n if (!update.force &&\n update.visible.from >= display.viewFrom && update.visible.to <= display.viewTo &&\n (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo) &&\n display.renderedView == display.view && countDirtyView(cm) == 0)\n { return false }\n\n if (maybeUpdateLineNumberWidth(cm)) {\n resetView(cm);\n update.dims = getDimensions(cm);\n }\n\n // Compute a suitable new viewport (from & to)\n var end = doc.first + doc.size;\n var from = Math.max(update.visible.from - cm.options.viewportMargin, doc.first);\n var to = Math.min(end, update.visible.to + cm.options.viewportMargin);\n if (display.viewFrom < from && from - display.viewFrom < 20) { from = Math.max(doc.first, display.viewFrom); }\n if (display.viewTo > to && display.viewTo - to < 20) { to = Math.min(end, display.viewTo); }\n if (sawCollapsedSpans) {\n from = visualLineNo(cm.doc, from);\n to = visualLineEndNo(cm.doc, to);\n }\n\n var different = from != display.viewFrom || to != display.viewTo ||\n display.lastWrapHeight != update.wrapperHeight || display.lastWrapWidth != update.wrapperWidth;\n adjustView(cm, from, to);\n\n display.viewOffset = heightAtLine(getLine(cm.doc, display.viewFrom));\n // Position the mover div to align with the current scroll position\n cm.display.mover.style.top = display.viewOffset + \"px\";\n\n var toUpdate = countDirtyView(cm);\n if (!different && toUpdate == 0 && !update.force && display.renderedView == display.view &&\n (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo))\n { return false }\n\n // For big changes, we hide the enclosing element during the\n // update, since that speeds up the operations on most browsers.\n var selSnapshot = selectionSnapshot(cm);\n if (toUpdate > 4) { display.lineDiv.style.display = \"none\"; }\n patchDisplay(cm, display.updateLineNumbers, update.dims);\n if (toUpdate > 4) { display.lineDiv.style.display = \"\"; }\n display.renderedView = display.view;\n // There might have been a widget with a focused element that got\n // hidden or updated, if so re-focus it.\n restoreSelection(selSnapshot);\n\n // Prevent selection and cursors from interfering with the scroll\n // width and height.\n removeChildren(display.cursorDiv);\n removeChildren(display.selectionDiv);\n display.gutters.style.height = display.sizer.style.minHeight = 0;\n\n if (different) {\n display.lastWrapHeight = update.wrapperHeight;\n display.lastWrapWidth = update.wrapperWidth;\n startWorker(cm, 400);\n }\n\n display.updateLineNumbers = null;\n\n return true\n }\n\n function postUpdateDisplay(cm, update) {\n var viewport = update.viewport;\n\n for (var first = true;; first = false) {\n if (!first || !cm.options.lineWrapping || update.oldDisplayWidth == displayWidth(cm)) {\n // Clip forced viewport to actual scrollable area.\n if (viewport && viewport.top != null)\n { viewport = {top: Math.min(cm.doc.height + paddingVert(cm.display) - displayHeight(cm), viewport.top)}; }\n // Updated line heights might result in the drawn area not\n // actually covering the viewport. Keep looping until it does.\n update.visible = visibleLines(cm.display, cm.doc, viewport);\n if (update.visible.from >= cm.display.viewFrom && update.visible.to <= cm.display.viewTo)\n { break }\n } else if (first) {\n update.visible = visibleLines(cm.display, cm.doc, viewport);\n }\n if (!updateDisplayIfNeeded(cm, update)) { break }\n updateHeightsInViewport(cm);\n var barMeasure = measureForScrollbars(cm);\n updateSelection(cm);\n updateScrollbars(cm, barMeasure);\n setDocumentHeight(cm, barMeasure);\n update.force = false;\n }\n\n update.signal(cm, \"update\", cm);\n if (cm.display.viewFrom != cm.display.reportedViewFrom || cm.display.viewTo != cm.display.reportedViewTo) {\n update.signal(cm, \"viewportChange\", cm, cm.display.viewFrom, cm.display.viewTo);\n cm.display.reportedViewFrom = cm.display.viewFrom; cm.display.reportedViewTo = cm.display.viewTo;\n }\n }\n\n function updateDisplaySimple(cm, viewport) {\n var update = new DisplayUpdate(cm, viewport);\n if (updateDisplayIfNeeded(cm, update)) {\n updateHeightsInViewport(cm);\n postUpdateDisplay(cm, update);\n var barMeasure = measureForScrollbars(cm);\n updateSelection(cm);\n updateScrollbars(cm, barMeasure);\n setDocumentHeight(cm, barMeasure);\n update.finish();\n }\n }\n\n // Sync the actual display DOM structure with display.view, removing\n // nodes for lines that are no longer in view, and creating the ones\n // that are not there yet, and updating the ones that are out of\n // date.\n function patchDisplay(cm, updateNumbersFrom, dims) {\n var display = cm.display, lineNumbers = cm.options.lineNumbers;\n var container = display.lineDiv, cur = container.firstChild;\n\n function rm(node) {\n var next = node.nextSibling;\n // Works around a throw-scroll bug in OS X Webkit\n if (webkit && mac && cm.display.currentWheelTarget == node)\n { node.style.display = \"none\"; }\n else\n { node.parentNode.removeChild(node); }\n return next\n }\n\n var view = display.view, lineN = display.viewFrom;\n // Loop over the elements in the view, syncing cur (the DOM nodes\n // in display.lineDiv) with the view as we go.\n for (var i = 0; i < view.length; i++) {\n var lineView = view[i];\n if (lineView.hidden) ; else if (!lineView.node || lineView.node.parentNode != container) { // Not drawn yet\n var node = buildLineElement(cm, lineView, lineN, dims);\n container.insertBefore(node, cur);\n } else { // Already drawn\n while (cur != lineView.node) { cur = rm(cur); }\n var updateNumber = lineNumbers && updateNumbersFrom != null &&\n updateNumbersFrom <= lineN && lineView.lineNumber;\n if (lineView.changes) {\n if (indexOf(lineView.changes, \"gutter\") > -1) { updateNumber = false; }\n updateLineForChanges(cm, lineView, lineN, dims);\n }\n if (updateNumber) {\n removeChildren(lineView.lineNumber);\n lineView.lineNumber.appendChild(document.createTextNode(lineNumberFor(cm.options, lineN)));\n }\n cur = lineView.node.nextSibling;\n }\n lineN += lineView.size;\n }\n while (cur) { cur = rm(cur); }\n }\n\n function updateGutterSpace(display) {\n var width = display.gutters.offsetWidth;\n display.sizer.style.marginLeft = width + \"px\";\n // Send an event to consumers responding to changes in gutter width.\n signalLater(display, \"gutterChanged\", display);\n }\n\n function setDocumentHeight(cm, measure) {\n cm.display.sizer.style.minHeight = measure.docHeight + \"px\";\n cm.display.heightForcer.style.top = measure.docHeight + \"px\";\n cm.display.gutters.style.height = (measure.docHeight + cm.display.barHeight + scrollGap(cm)) + \"px\";\n }\n\n // Re-align line numbers and gutter marks to compensate for\n // horizontal scrolling.\n function alignHorizontally(cm) {\n var display = cm.display, view = display.view;\n if (!display.alignWidgets && (!display.gutters.firstChild || !cm.options.fixedGutter)) { return }\n var comp = compensateForHScroll(display) - display.scroller.scrollLeft + cm.doc.scrollLeft;\n var gutterW = display.gutters.offsetWidth, left = comp + \"px\";\n for (var i = 0; i < view.length; i++) { if (!view[i].hidden) {\n if (cm.options.fixedGutter) {\n if (view[i].gutter)\n { view[i].gutter.style.left = left; }\n if (view[i].gutterBackground)\n { view[i].gutterBackground.style.left = left; }\n }\n var align = view[i].alignable;\n if (align) { for (var j = 0; j < align.length; j++)\n { align[j].style.left = left; } }\n } }\n if (cm.options.fixedGutter)\n { display.gutters.style.left = (comp + gutterW) + \"px\"; }\n }\n\n // Used to ensure that the line number gutter is still the right\n // size for the current document size. Returns true when an update\n // is needed.\n function maybeUpdateLineNumberWidth(cm) {\n if (!cm.options.lineNumbers) { return false }\n var doc = cm.doc, last = lineNumberFor(cm.options, doc.first + doc.size - 1), display = cm.display;\n if (last.length != display.lineNumChars) {\n var test = display.measure.appendChild(elt(\"div\", [elt(\"div\", last)],\n \"CodeMirror-linenumber CodeMirror-gutter-elt\"));\n var innerW = test.firstChild.offsetWidth, padding = test.offsetWidth - innerW;\n display.lineGutter.style.width = \"\";\n display.lineNumInnerWidth = Math.max(innerW, display.lineGutter.offsetWidth - padding) + 1;\n display.lineNumWidth = display.lineNumInnerWidth + padding;\n display.lineNumChars = display.lineNumInnerWidth ? last.length : -1;\n display.lineGutter.style.width = display.lineNumWidth + \"px\";\n updateGutterSpace(cm.display);\n return true\n }\n return false\n }\n\n function getGutters(gutters, lineNumbers) {\n var result = [], sawLineNumbers = false;\n for (var i = 0; i < gutters.length; i++) {\n var name = gutters[i], style = null;\n if (typeof name != \"string\") { style = name.style; name = name.className; }\n if (name == \"CodeMirror-linenumbers\") {\n if (!lineNumbers) { continue }\n else { sawLineNumbers = true; }\n }\n result.push({className: name, style: style});\n }\n if (lineNumbers && !sawLineNumbers) { result.push({className: \"CodeMirror-linenumbers\", style: null}); }\n return result\n }\n\n // Rebuild the gutter elements, ensure the margin to the left of the\n // code matches their width.\n function renderGutters(display) {\n var gutters = display.gutters, specs = display.gutterSpecs;\n removeChildren(gutters);\n display.lineGutter = null;\n for (var i = 0; i < specs.length; ++i) {\n var ref = specs[i];\n var className = ref.className;\n var style = ref.style;\n var gElt = gutters.appendChild(elt(\"div\", null, \"CodeMirror-gutter \" + className));\n if (style) { gElt.style.cssText = style; }\n if (className == \"CodeMirror-linenumbers\") {\n display.lineGutter = gElt;\n gElt.style.width = (display.lineNumWidth || 1) + \"px\";\n }\n }\n gutters.style.display = specs.length ? \"\" : \"none\";\n updateGutterSpace(display);\n }\n\n function updateGutters(cm) {\n renderGutters(cm.display);\n regChange(cm);\n alignHorizontally(cm);\n }\n\n // The display handles the DOM integration, both for input reading\n // and content drawing. It holds references to DOM nodes and\n // display-related state.\n\n function Display(place, doc, input, options) {\n var d = this;\n this.input = input;\n\n // Covers bottom-right square when both scrollbars are present.\n d.scrollbarFiller = elt(\"div\", null, \"CodeMirror-scrollbar-filler\");\n d.scrollbarFiller.setAttribute(\"cm-not-content\", \"true\");\n // Covers bottom of gutter when coverGutterNextToScrollbar is on\n // and h scrollbar is present.\n d.gutterFiller = elt(\"div\", null, \"CodeMirror-gutter-filler\");\n d.gutterFiller.setAttribute(\"cm-not-content\", \"true\");\n // Will contain the actual code, positioned to cover the viewport.\n d.lineDiv = eltP(\"div\", null, \"CodeMirror-code\");\n // Elements are added to these to represent selection and cursors.\n d.selectionDiv = elt(\"div\", null, null, \"position: relative; z-index: 1\");\n d.cursorDiv = elt(\"div\", null, \"CodeMirror-cursors\");\n // A visibility: hidden element used to find the size of things.\n d.measure = elt(\"div\", null, \"CodeMirror-measure\");\n // When lines outside of the viewport are measured, they are drawn in this.\n d.lineMeasure = elt(\"div\", null, \"CodeMirror-measure\");\n // Wraps everything that needs to exist inside the vertically-padded coordinate system\n d.lineSpace = eltP(\"div\", [d.measure, d.lineMeasure, d.selectionDiv, d.cursorDiv, d.lineDiv],\n null, \"position: relative; outline: none\");\n var lines = eltP(\"div\", [d.lineSpace], \"CodeMirror-lines\");\n // Moved around its parent to cover visible view.\n d.mover = elt(\"div\", [lines], null, \"position: relative\");\n // Set to the height of the document, allowing scrolling.\n d.sizer = elt(\"div\", [d.mover], \"CodeMirror-sizer\");\n d.sizerWidth = null;\n // Behavior of elts with overflow: auto and padding is\n // inconsistent across browsers. This is used to ensure the\n // scrollable area is big enough.\n d.heightForcer = elt(\"div\", null, null, \"position: absolute; height: \" + scrollerGap + \"px; width: 1px;\");\n // Will contain the gutters, if any.\n d.gutters = elt(\"div\", null, \"CodeMirror-gutters\");\n d.lineGutter = null;\n // Actual scrollable element.\n d.scroller = elt(\"div\", [d.sizer, d.heightForcer, d.gutters], \"CodeMirror-scroll\");\n d.scroller.setAttribute(\"tabIndex\", \"-1\");\n // The element in which the editor lives.\n d.wrapper = elt(\"div\", [d.scrollbarFiller, d.gutterFiller, d.scroller], \"CodeMirror\");\n\n // This attribute is respected by automatic translation systems such as Google Translate,\n // and may also be respected by tools used by human translators.\n d.wrapper.setAttribute('translate', 'no');\n\n // Work around IE7 z-index bug (not perfect, hence IE7 not really being supported)\n if (ie && ie_version < 8) { d.gutters.style.zIndex = -1; d.scroller.style.paddingRight = 0; }\n if (!webkit && !(gecko && mobile)) { d.scroller.draggable = true; }\n\n if (place) {\n if (place.appendChild) { place.appendChild(d.wrapper); }\n else { place(d.wrapper); }\n }\n\n // Current rendered range (may be bigger than the view window).\n d.viewFrom = d.viewTo = doc.first;\n d.reportedViewFrom = d.reportedViewTo = doc.first;\n // Information about the rendered lines.\n d.view = [];\n d.renderedView = null;\n // Holds info about a single rendered line when it was rendered\n // for measurement, while not in view.\n d.externalMeasured = null;\n // Empty space (in pixels) above the view\n d.viewOffset = 0;\n d.lastWrapHeight = d.lastWrapWidth = 0;\n d.updateLineNumbers = null;\n\n d.nativeBarWidth = d.barHeight = d.barWidth = 0;\n d.scrollbarsClipped = false;\n\n // Used to only resize the line number gutter when necessary (when\n // the amount of lines crosses a boundary that makes its width change)\n d.lineNumWidth = d.lineNumInnerWidth = d.lineNumChars = null;\n // Set to true when a non-horizontal-scrolling line widget is\n // added. As an optimization, line widget aligning is skipped when\n // this is false.\n d.alignWidgets = false;\n\n d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null;\n\n // Tracks the maximum line length so that the horizontal scrollbar\n // can be kept static when scrolling.\n d.maxLine = null;\n d.maxLineLength = 0;\n d.maxLineChanged = false;\n\n // Used for measuring wheel scrolling granularity\n d.wheelDX = d.wheelDY = d.wheelStartX = d.wheelStartY = null;\n\n // True when shift is held down.\n d.shift = false;\n\n // Used to track whether anything happened since the context menu\n // was opened.\n d.selForContextMenu = null;\n\n d.activeTouch = null;\n\n d.gutterSpecs = getGutters(options.gutters, options.lineNumbers);\n renderGutters(d);\n\n input.init(d);\n }\n\n // Since the delta values reported on mouse wheel events are\n // unstandardized between browsers and even browser versions, and\n // generally horribly unpredictable, this code starts by measuring\n // the scroll effect that the first few mouse wheel events have,\n // and, from that, detects the way it can convert deltas to pixel\n // offsets afterwards.\n //\n // The reason we want to know the amount a wheel event will scroll\n // is that it gives us a chance to update the display before the\n // actual scrolling happens, reducing flickering.\n\n var wheelSamples = 0, wheelPixelsPerUnit = null;\n // Fill in a browser-detected starting value on browsers where we\n // know one. These don't have to be accurate -- the result of them\n // being wrong would just be a slight flicker on the first wheel\n // scroll (if it is large enough).\n if (ie) { wheelPixelsPerUnit = -.53; }\n else if (gecko) { wheelPixelsPerUnit = 15; }\n else if (chrome) { wheelPixelsPerUnit = -.7; }\n else if (safari) { wheelPixelsPerUnit = -1/3; }\n\n function wheelEventDelta(e) {\n var dx = e.wheelDeltaX, dy = e.wheelDeltaY;\n if (dx == null && e.detail && e.axis == e.HORIZONTAL_AXIS) { dx = e.detail; }\n if (dy == null && e.detail && e.axis == e.VERTICAL_AXIS) { dy = e.detail; }\n else if (dy == null) { dy = e.wheelDelta; }\n return {x: dx, y: dy}\n }\n function wheelEventPixels(e) {\n var delta = wheelEventDelta(e);\n delta.x *= wheelPixelsPerUnit;\n delta.y *= wheelPixelsPerUnit;\n return delta\n }\n\n function onScrollWheel(cm, e) {\n var delta = wheelEventDelta(e), dx = delta.x, dy = delta.y;\n\n var display = cm.display, scroll = display.scroller;\n // Quit if there's nothing to scroll here\n var canScrollX = scroll.scrollWidth > scroll.clientWidth;\n var canScrollY = scroll.scrollHeight > scroll.clientHeight;\n if (!(dx && canScrollX || dy && canScrollY)) { return }\n\n // Webkit browsers on OS X abort momentum scrolls when the target\n // of the scroll event is removed from the scrollable element.\n // This hack (see related code in patchDisplay) makes sure the\n // element is kept around.\n if (dy && mac && webkit) {\n outer: for (var cur = e.target, view = display.view; cur != scroll; cur = cur.parentNode) {\n for (var i = 0; i < view.length; i++) {\n if (view[i].node == cur) {\n cm.display.currentWheelTarget = cur;\n break outer\n }\n }\n }\n }\n\n // On some browsers, horizontal scrolling will cause redraws to\n // happen before the gutter has been realigned, causing it to\n // wriggle around in a most unseemly way. When we have an\n // estimated pixels/delta value, we just handle horizontal\n // scrolling entirely here. It'll be slightly off from native, but\n // better than glitching out.\n if (dx && !gecko && !presto && wheelPixelsPerUnit != null) {\n if (dy && canScrollY)\n { updateScrollTop(cm, Math.max(0, scroll.scrollTop + dy * wheelPixelsPerUnit)); }\n setScrollLeft(cm, Math.max(0, scroll.scrollLeft + dx * wheelPixelsPerUnit));\n // Only prevent default scrolling if vertical scrolling is\n // actually possible. Otherwise, it causes vertical scroll\n // jitter on OSX trackpads when deltaX is small and deltaY\n // is large (issue #3579)\n if (!dy || (dy && canScrollY))\n { e_preventDefault(e); }\n display.wheelStartX = null; // Abort measurement, if in progress\n return\n }\n\n // 'Project' the visible viewport to cover the area that is being\n // scrolled into view (if we know enough to estimate it).\n if (dy && wheelPixelsPerUnit != null) {\n var pixels = dy * wheelPixelsPerUnit;\n var top = cm.doc.scrollTop, bot = top + display.wrapper.clientHeight;\n if (pixels < 0) { top = Math.max(0, top + pixels - 50); }\n else { bot = Math.min(cm.doc.height, bot + pixels + 50); }\n updateDisplaySimple(cm, {top: top, bottom: bot});\n }\n\n if (wheelSamples < 20) {\n if (display.wheelStartX == null) {\n display.wheelStartX = scroll.scrollLeft; display.wheelStartY = scroll.scrollTop;\n display.wheelDX = dx; display.wheelDY = dy;\n setTimeout(function () {\n if (display.wheelStartX == null) { return }\n var movedX = scroll.scrollLeft - display.wheelStartX;\n var movedY = scroll.scrollTop - display.wheelStartY;\n var sample = (movedY && display.wheelDY && movedY / display.wheelDY) ||\n (movedX && display.wheelDX && movedX / display.wheelDX);\n display.wheelStartX = display.wheelStartY = null;\n if (!sample) { return }\n wheelPixelsPerUnit = (wheelPixelsPerUnit * wheelSamples + sample) / (wheelSamples + 1);\n ++wheelSamples;\n }, 200);\n } else {\n display.wheelDX += dx; display.wheelDY += dy;\n }\n }\n }\n\n // Selection objects are immutable. A new one is created every time\n // the selection changes. A selection is one or more non-overlapping\n // (and non-touching) ranges, sorted, and an integer that indicates\n // which one is the primary selection (the one that's scrolled into\n // view, that getCursor returns, etc).\n var Selection = function(ranges, primIndex) {\n this.ranges = ranges;\n this.primIndex = primIndex;\n };\n\n Selection.prototype.primary = function () { return this.ranges[this.primIndex] };\n\n Selection.prototype.equals = function (other) {\n if (other == this) { return true }\n if (other.primIndex != this.primIndex || other.ranges.length != this.ranges.length) { return false }\n for (var i = 0; i < this.ranges.length; i++) {\n var here = this.ranges[i], there = other.ranges[i];\n if (!equalCursorPos(here.anchor, there.anchor) || !equalCursorPos(here.head, there.head)) { return false }\n }\n return true\n };\n\n Selection.prototype.deepCopy = function () {\n var out = [];\n for (var i = 0; i < this.ranges.length; i++)\n { out[i] = new Range(copyPos(this.ranges[i].anchor), copyPos(this.ranges[i].head)); }\n return new Selection(out, this.primIndex)\n };\n\n Selection.prototype.somethingSelected = function () {\n for (var i = 0; i < this.ranges.length; i++)\n { if (!this.ranges[i].empty()) { return true } }\n return false\n };\n\n Selection.prototype.contains = function (pos, end) {\n if (!end) { end = pos; }\n for (var i = 0; i < this.ranges.length; i++) {\n var range = this.ranges[i];\n if (cmp(end, range.from()) >= 0 && cmp(pos, range.to()) <= 0)\n { return i }\n }\n return -1\n };\n\n var Range = function(anchor, head) {\n this.anchor = anchor; this.head = head;\n };\n\n Range.prototype.from = function () { return minPos(this.anchor, this.head) };\n Range.prototype.to = function () { return maxPos(this.anchor, this.head) };\n Range.prototype.empty = function () { return this.head.line == this.anchor.line && this.head.ch == this.anchor.ch };\n\n // Take an unsorted, potentially overlapping set of ranges, and\n // build a selection out of it. 'Consumes' ranges array (modifying\n // it).\n function normalizeSelection(cm, ranges, primIndex) {\n var mayTouch = cm && cm.options.selectionsMayTouch;\n var prim = ranges[primIndex];\n ranges.sort(function (a, b) { return cmp(a.from(), b.from()); });\n primIndex = indexOf(ranges, prim);\n for (var i = 1; i < ranges.length; i++) {\n var cur = ranges[i], prev = ranges[i - 1];\n var diff = cmp(prev.to(), cur.from());\n if (mayTouch && !cur.empty() ? diff > 0 : diff >= 0) {\n var from = minPos(prev.from(), cur.from()), to = maxPos(prev.to(), cur.to());\n var inv = prev.empty() ? cur.from() == cur.head : prev.from() == prev.head;\n if (i <= primIndex) { --primIndex; }\n ranges.splice(--i, 2, new Range(inv ? to : from, inv ? from : to));\n }\n }\n return new Selection(ranges, primIndex)\n }\n\n function simpleSelection(anchor, head) {\n return new Selection([new Range(anchor, head || anchor)], 0)\n }\n\n // Compute the position of the end of a change (its 'to' property\n // refers to the pre-change end).\n function changeEnd(change) {\n if (!change.text) { return change.to }\n return Pos(change.from.line + change.text.length - 1,\n lst(change.text).length + (change.text.length == 1 ? change.from.ch : 0))\n }\n\n // Adjust a position to refer to the post-change position of the\n // same text, or the end of the change if the change covers it.\n function adjustForChange(pos, change) {\n if (cmp(pos, change.from) < 0) { return pos }\n if (cmp(pos, change.to) <= 0) { return changeEnd(change) }\n\n var line = pos.line + change.text.length - (change.to.line - change.from.line) - 1, ch = pos.ch;\n if (pos.line == change.to.line) { ch += changeEnd(change).ch - change.to.ch; }\n return Pos(line, ch)\n }\n\n function computeSelAfterChange(doc, change) {\n var out = [];\n for (var i = 0; i < doc.sel.ranges.length; i++) {\n var range = doc.sel.ranges[i];\n out.push(new Range(adjustForChange(range.anchor, change),\n adjustForChange(range.head, change)));\n }\n return normalizeSelection(doc.cm, out, doc.sel.primIndex)\n }\n\n function offsetPos(pos, old, nw) {\n if (pos.line == old.line)\n { return Pos(nw.line, pos.ch - old.ch + nw.ch) }\n else\n { return Pos(nw.line + (pos.line - old.line), pos.ch) }\n }\n\n // Used by replaceSelections to allow moving the selection to the\n // start or around the replaced test. Hint may be \"start\" or \"around\".\n function computeReplacedSel(doc, changes, hint) {\n var out = [];\n var oldPrev = Pos(doc.first, 0), newPrev = oldPrev;\n for (var i = 0; i < changes.length; i++) {\n var change = changes[i];\n var from = offsetPos(change.from, oldPrev, newPrev);\n var to = offsetPos(changeEnd(change), oldPrev, newPrev);\n oldPrev = change.to;\n newPrev = to;\n if (hint == \"around\") {\n var range = doc.sel.ranges[i], inv = cmp(range.head, range.anchor) < 0;\n out[i] = new Range(inv ? to : from, inv ? from : to);\n } else {\n out[i] = new Range(from, from);\n }\n }\n return new Selection(out, doc.sel.primIndex)\n }\n\n // Used to get the editor into a consistent state again when options change.\n\n function loadMode(cm) {\n cm.doc.mode = getMode(cm.options, cm.doc.modeOption);\n resetModeState(cm);\n }\n\n function resetModeState(cm) {\n cm.doc.iter(function (line) {\n if (line.stateAfter) { line.stateAfter = null; }\n if (line.styles) { line.styles = null; }\n });\n cm.doc.modeFrontier = cm.doc.highlightFrontier = cm.doc.first;\n startWorker(cm, 100);\n cm.state.modeGen++;\n if (cm.curOp) { regChange(cm); }\n }\n\n // DOCUMENT DATA STRUCTURE\n\n // By default, updates that start and end at the beginning of a line\n // are treated specially, in order to make the association of line\n // widgets and marker elements with the text behave more intuitive.\n function isWholeLineUpdate(doc, change) {\n return change.from.ch == 0 && change.to.ch == 0 && lst(change.text) == \"\" &&\n (!doc.cm || doc.cm.options.wholeLineUpdateBefore)\n }\n\n // Perform a change on the document data structure.\n function updateDoc(doc, change, markedSpans, estimateHeight) {\n function spansFor(n) {return markedSpans ? markedSpans[n] : null}\n function update(line, text, spans) {\n updateLine(line, text, spans, estimateHeight);\n signalLater(line, \"change\", line, change);\n }\n function linesFor(start, end) {\n var result = [];\n for (var i = start; i < end; ++i)\n { result.push(new Line(text[i], spansFor(i), estimateHeight)); }\n return result\n }\n\n var from = change.from, to = change.to, text = change.text;\n var firstLine = getLine(doc, from.line), lastLine = getLine(doc, to.line);\n var lastText = lst(text), lastSpans = spansFor(text.length - 1), nlines = to.line - from.line;\n\n // Adjust the line structure\n if (change.full) {\n doc.insert(0, linesFor(0, text.length));\n doc.remove(text.length, doc.size - text.length);\n } else if (isWholeLineUpdate(doc, change)) {\n // This is a whole-line replace. Treated specially to make\n // sure line objects move the way they are supposed to.\n var added = linesFor(0, text.length - 1);\n update(lastLine, lastLine.text, lastSpans);\n if (nlines) { doc.remove(from.line, nlines); }\n if (added.length) { doc.insert(from.line, added); }\n } else if (firstLine == lastLine) {\n if (text.length == 1) {\n update(firstLine, firstLine.text.slice(0, from.ch) + lastText + firstLine.text.slice(to.ch), lastSpans);\n } else {\n var added$1 = linesFor(1, text.length - 1);\n added$1.push(new Line(lastText + firstLine.text.slice(to.ch), lastSpans, estimateHeight));\n update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0));\n doc.insert(from.line + 1, added$1);\n }\n } else if (text.length == 1) {\n update(firstLine, firstLine.text.slice(0, from.ch) + text[0] + lastLine.text.slice(to.ch), spansFor(0));\n doc.remove(from.line + 1, nlines);\n } else {\n update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0));\n update(lastLine, lastText + lastLine.text.slice(to.ch), lastSpans);\n var added$2 = linesFor(1, text.length - 1);\n if (nlines > 1) { doc.remove(from.line + 1, nlines - 1); }\n doc.insert(from.line + 1, added$2);\n }\n\n signalLater(doc, \"change\", doc, change);\n }\n\n // Call f for all linked documents.\n function linkedDocs(doc, f, sharedHistOnly) {\n function propagate(doc, skip, sharedHist) {\n if (doc.linked) { for (var i = 0; i < doc.linked.length; ++i) {\n var rel = doc.linked[i];\n if (rel.doc == skip) { continue }\n var shared = sharedHist && rel.sharedHist;\n if (sharedHistOnly && !shared) { continue }\n f(rel.doc, shared);\n propagate(rel.doc, doc, shared);\n } }\n }\n propagate(doc, null, true);\n }\n\n // Attach a document to an editor.\n function attachDoc(cm, doc) {\n if (doc.cm) { throw new Error(\"This document is already in use.\") }\n cm.doc = doc;\n doc.cm = cm;\n estimateLineHeights(cm);\n loadMode(cm);\n setDirectionClass(cm);\n cm.options.direction = doc.direction;\n if (!cm.options.lineWrapping) { findMaxLine(cm); }\n cm.options.mode = doc.modeOption;\n regChange(cm);\n }\n\n function setDirectionClass(cm) {\n (cm.doc.direction == \"rtl\" ? addClass : rmClass)(cm.display.lineDiv, \"CodeMirror-rtl\");\n }\n\n function directionChanged(cm) {\n runInOp(cm, function () {\n setDirectionClass(cm);\n regChange(cm);\n });\n }\n\n function History(prev) {\n // Arrays of change events and selections. Doing something adds an\n // event to done and clears undo. Undoing moves events from done\n // to undone, redoing moves them in the other direction.\n this.done = []; this.undone = [];\n this.undoDepth = prev ? prev.undoDepth : Infinity;\n // Used to track when changes can be merged into a single undo\n // event\n this.lastModTime = this.lastSelTime = 0;\n this.lastOp = this.lastSelOp = null;\n this.lastOrigin = this.lastSelOrigin = null;\n // Used by the isClean() method\n this.generation = this.maxGeneration = prev ? prev.maxGeneration : 1;\n }\n\n // Create a history change event from an updateDoc-style change\n // object.\n function historyChangeFromChange(doc, change) {\n var histChange = {from: copyPos(change.from), to: changeEnd(change), text: getBetween(doc, change.from, change.to)};\n attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1);\n linkedDocs(doc, function (doc) { return attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1); }, true);\n return histChange\n }\n\n // Pop all selection events off the end of a history array. Stop at\n // a change event.\n function clearSelectionEvents(array) {\n while (array.length) {\n var last = lst(array);\n if (last.ranges) { array.pop(); }\n else { break }\n }\n }\n\n // Find the top change event in the history. Pop off selection\n // events that are in the way.\n function lastChangeEvent(hist, force) {\n if (force) {\n clearSelectionEvents(hist.done);\n return lst(hist.done)\n } else if (hist.done.length && !lst(hist.done).ranges) {\n return lst(hist.done)\n } else if (hist.done.length > 1 && !hist.done[hist.done.length - 2].ranges) {\n hist.done.pop();\n return lst(hist.done)\n }\n }\n\n // Register a change in the history. Merges changes that are within\n // a single operation, or are close together with an origin that\n // allows merging (starting with \"+\") into a single event.\n function addChangeToHistory(doc, change, selAfter, opId) {\n var hist = doc.history;\n hist.undone.length = 0;\n var time = +new Date, cur;\n var last;\n\n if ((hist.lastOp == opId ||\n hist.lastOrigin == change.origin && change.origin &&\n ((change.origin.charAt(0) == \"+\" && hist.lastModTime > time - (doc.cm ? doc.cm.options.historyEventDelay : 500)) ||\n change.origin.charAt(0) == \"*\")) &&\n (cur = lastChangeEvent(hist, hist.lastOp == opId))) {\n // Merge this change into the last event\n last = lst(cur.changes);\n if (cmp(change.from, change.to) == 0 && cmp(change.from, last.to) == 0) {\n // Optimized case for simple insertion -- don't want to add\n // new changesets for every character typed\n last.to = changeEnd(change);\n } else {\n // Add new sub-event\n cur.changes.push(historyChangeFromChange(doc, change));\n }\n } else {\n // Can not be merged, start a new event.\n var before = lst(hist.done);\n if (!before || !before.ranges)\n { pushSelectionToHistory(doc.sel, hist.done); }\n cur = {changes: [historyChangeFromChange(doc, change)],\n generation: hist.generation};\n hist.done.push(cur);\n while (hist.done.length > hist.undoDepth) {\n hist.done.shift();\n if (!hist.done[0].ranges) { hist.done.shift(); }\n }\n }\n hist.done.push(selAfter);\n hist.generation = ++hist.maxGeneration;\n hist.lastModTime = hist.lastSelTime = time;\n hist.lastOp = hist.lastSelOp = opId;\n hist.lastOrigin = hist.lastSelOrigin = change.origin;\n\n if (!last) { signal(doc, \"historyAdded\"); }\n }\n\n function selectionEventCanBeMerged(doc, origin, prev, sel) {\n var ch = origin.charAt(0);\n return ch == \"*\" ||\n ch == \"+\" &&\n prev.ranges.length == sel.ranges.length &&\n prev.somethingSelected() == sel.somethingSelected() &&\n new Date - doc.history.lastSelTime <= (doc.cm ? doc.cm.options.historyEventDelay : 500)\n }\n\n // Called whenever the selection changes, sets the new selection as\n // the pending selection in the history, and pushes the old pending\n // selection into the 'done' array when it was significantly\n // different (in number of selected ranges, emptiness, or time).\n function addSelectionToHistory(doc, sel, opId, options) {\n var hist = doc.history, origin = options && options.origin;\n\n // A new event is started when the previous origin does not match\n // the current, or the origins don't allow matching. Origins\n // starting with * are always merged, those starting with + are\n // merged when similar and close together in time.\n if (opId == hist.lastSelOp ||\n (origin && hist.lastSelOrigin == origin &&\n (hist.lastModTime == hist.lastSelTime && hist.lastOrigin == origin ||\n selectionEventCanBeMerged(doc, origin, lst(hist.done), sel))))\n { hist.done[hist.done.length - 1] = sel; }\n else\n { pushSelectionToHistory(sel, hist.done); }\n\n hist.lastSelTime = +new Date;\n hist.lastSelOrigin = origin;\n hist.lastSelOp = opId;\n if (options && options.clearRedo !== false)\n { clearSelectionEvents(hist.undone); }\n }\n\n function pushSelectionToHistory(sel, dest) {\n var top = lst(dest);\n if (!(top && top.ranges && top.equals(sel)))\n { dest.push(sel); }\n }\n\n // Used to store marked span information in the history.\n function attachLocalSpans(doc, change, from, to) {\n var existing = change[\"spans_\" + doc.id], n = 0;\n doc.iter(Math.max(doc.first, from), Math.min(doc.first + doc.size, to), function (line) {\n if (line.markedSpans)\n { (existing || (existing = change[\"spans_\" + doc.id] = {}))[n] = line.markedSpans; }\n ++n;\n });\n }\n\n // When un/re-doing restores text containing marked spans, those\n // that have been explicitly cleared should not be restored.\n function removeClearedSpans(spans) {\n if (!spans) { return null }\n var out;\n for (var i = 0; i < spans.length; ++i) {\n if (spans[i].marker.explicitlyCleared) { if (!out) { out = spans.slice(0, i); } }\n else if (out) { out.push(spans[i]); }\n }\n return !out ? spans : out.length ? out : null\n }\n\n // Retrieve and filter the old marked spans stored in a change event.\n function getOldSpans(doc, change) {\n var found = change[\"spans_\" + doc.id];\n if (!found) { return null }\n var nw = [];\n for (var i = 0; i < change.text.length; ++i)\n { nw.push(removeClearedSpans(found[i])); }\n return nw\n }\n\n // Used for un/re-doing changes from the history. Combines the\n // result of computing the existing spans with the set of spans that\n // existed in the history (so that deleting around a span and then\n // undoing brings back the span).\n function mergeOldSpans(doc, change) {\n var old = getOldSpans(doc, change);\n var stretched = stretchSpansOverChange(doc, change);\n if (!old) { return stretched }\n if (!stretched) { return old }\n\n for (var i = 0; i < old.length; ++i) {\n var oldCur = old[i], stretchCur = stretched[i];\n if (oldCur && stretchCur) {\n spans: for (var j = 0; j < stretchCur.length; ++j) {\n var span = stretchCur[j];\n for (var k = 0; k < oldCur.length; ++k)\n { if (oldCur[k].marker == span.marker) { continue spans } }\n oldCur.push(span);\n }\n } else if (stretchCur) {\n old[i] = stretchCur;\n }\n }\n return old\n }\n\n // Used both to provide a JSON-safe object in .getHistory, and, when\n // detaching a document, to split the history in two\n function copyHistoryArray(events, newGroup, instantiateSel) {\n var copy = [];\n for (var i = 0; i < events.length; ++i) {\n var event = events[i];\n if (event.ranges) {\n copy.push(instantiateSel ? Selection.prototype.deepCopy.call(event) : event);\n continue\n }\n var changes = event.changes, newChanges = [];\n copy.push({changes: newChanges});\n for (var j = 0; j < changes.length; ++j) {\n var change = changes[j], m = (void 0);\n newChanges.push({from: change.from, to: change.to, text: change.text});\n if (newGroup) { for (var prop in change) { if (m = prop.match(/^spans_(\\d+)$/)) {\n if (indexOf(newGroup, Number(m[1])) > -1) {\n lst(newChanges)[prop] = change[prop];\n delete change[prop];\n }\n } } }\n }\n }\n return copy\n }\n\n // The 'scroll' parameter given to many of these indicated whether\n // the new cursor position should be scrolled into view after\n // modifying the selection.\n\n // If shift is held or the extend flag is set, extends a range to\n // include a given position (and optionally a second position).\n // Otherwise, simply returns the range between the given positions.\n // Used for cursor motion and such.\n function extendRange(range, head, other, extend) {\n if (extend) {\n var anchor = range.anchor;\n if (other) {\n var posBefore = cmp(head, anchor) < 0;\n if (posBefore != (cmp(other, anchor) < 0)) {\n anchor = head;\n head = other;\n } else if (posBefore != (cmp(head, other) < 0)) {\n head = other;\n }\n }\n return new Range(anchor, head)\n } else {\n return new Range(other || head, head)\n }\n }\n\n // Extend the primary selection range, discard the rest.\n function extendSelection(doc, head, other, options, extend) {\n if (extend == null) { extend = doc.cm && (doc.cm.display.shift || doc.extend); }\n setSelection(doc, new Selection([extendRange(doc.sel.primary(), head, other, extend)], 0), options);\n }\n\n // Extend all selections (pos is an array of selections with length\n // equal the number of selections)\n function extendSelections(doc, heads, options) {\n var out = [];\n var extend = doc.cm && (doc.cm.display.shift || doc.extend);\n for (var i = 0; i < doc.sel.ranges.length; i++)\n { out[i] = extendRange(doc.sel.ranges[i], heads[i], null, extend); }\n var newSel = normalizeSelection(doc.cm, out, doc.sel.primIndex);\n setSelection(doc, newSel, options);\n }\n\n // Updates a single range in the selection.\n function replaceOneSelection(doc, i, range, options) {\n var ranges = doc.sel.ranges.slice(0);\n ranges[i] = range;\n setSelection(doc, normalizeSelection(doc.cm, ranges, doc.sel.primIndex), options);\n }\n\n // Reset the selection to a single range.\n function setSimpleSelection(doc, anchor, head, options) {\n setSelection(doc, simpleSelection(anchor, head), options);\n }\n\n // Give beforeSelectionChange handlers a change to influence a\n // selection update.\n function filterSelectionChange(doc, sel, options) {\n var obj = {\n ranges: sel.ranges,\n update: function(ranges) {\n this.ranges = [];\n for (var i = 0; i < ranges.length; i++)\n { this.ranges[i] = new Range(clipPos(doc, ranges[i].anchor),\n clipPos(doc, ranges[i].head)); }\n },\n origin: options && options.origin\n };\n signal(doc, \"beforeSelectionChange\", doc, obj);\n if (doc.cm) { signal(doc.cm, \"beforeSelectionChange\", doc.cm, obj); }\n if (obj.ranges != sel.ranges) { return normalizeSelection(doc.cm, obj.ranges, obj.ranges.length - 1) }\n else { return sel }\n }\n\n function setSelectionReplaceHistory(doc, sel, options) {\n var done = doc.history.done, last = lst(done);\n if (last && last.ranges) {\n done[done.length - 1] = sel;\n setSelectionNoUndo(doc, sel, options);\n } else {\n setSelection(doc, sel, options);\n }\n }\n\n // Set a new selection.\n function setSelection(doc, sel, options) {\n setSelectionNoUndo(doc, sel, options);\n addSelectionToHistory(doc, doc.sel, doc.cm ? doc.cm.curOp.id : NaN, options);\n }\n\n function setSelectionNoUndo(doc, sel, options) {\n if (hasHandler(doc, \"beforeSelectionChange\") || doc.cm && hasHandler(doc.cm, \"beforeSelectionChange\"))\n { sel = filterSelectionChange(doc, sel, options); }\n\n var bias = options && options.bias ||\n (cmp(sel.primary().head, doc.sel.primary().head) < 0 ? -1 : 1);\n setSelectionInner(doc, skipAtomicInSelection(doc, sel, bias, true));\n\n if (!(options && options.scroll === false) && doc.cm && doc.cm.getOption(\"readOnly\") != \"nocursor\")\n { ensureCursorVisible(doc.cm); }\n }\n\n function setSelectionInner(doc, sel) {\n if (sel.equals(doc.sel)) { return }\n\n doc.sel = sel;\n\n if (doc.cm) {\n doc.cm.curOp.updateInput = 1;\n doc.cm.curOp.selectionChanged = true;\n signalCursorActivity(doc.cm);\n }\n signalLater(doc, \"cursorActivity\", doc);\n }\n\n // Verify that the selection does not partially select any atomic\n // marked ranges.\n function reCheckSelection(doc) {\n setSelectionInner(doc, skipAtomicInSelection(doc, doc.sel, null, false));\n }\n\n // Return a selection that does not partially select any atomic\n // ranges.\n function skipAtomicInSelection(doc, sel, bias, mayClear) {\n var out;\n for (var i = 0; i < sel.ranges.length; i++) {\n var range = sel.ranges[i];\n var old = sel.ranges.length == doc.sel.ranges.length && doc.sel.ranges[i];\n var newAnchor = skipAtomic(doc, range.anchor, old && old.anchor, bias, mayClear);\n var newHead = skipAtomic(doc, range.head, old && old.head, bias, mayClear);\n if (out || newAnchor != range.anchor || newHead != range.head) {\n if (!out) { out = sel.ranges.slice(0, i); }\n out[i] = new Range(newAnchor, newHead);\n }\n }\n return out ? normalizeSelection(doc.cm, out, sel.primIndex) : sel\n }\n\n function skipAtomicInner(doc, pos, oldPos, dir, mayClear) {\n var line = getLine(doc, pos.line);\n if (line.markedSpans) { for (var i = 0; i < line.markedSpans.length; ++i) {\n var sp = line.markedSpans[i], m = sp.marker;\n\n // Determine if we should prevent the cursor being placed to the left/right of an atomic marker\n // Historically this was determined using the inclusiveLeft/Right option, but the new way to control it\n // is with selectLeft/Right\n var preventCursorLeft = (\"selectLeft\" in m) ? !m.selectLeft : m.inclusiveLeft;\n var preventCursorRight = (\"selectRight\" in m) ? !m.selectRight : m.inclusiveRight;\n\n if ((sp.from == null || (preventCursorLeft ? sp.from <= pos.ch : sp.from < pos.ch)) &&\n (sp.to == null || (preventCursorRight ? sp.to >= pos.ch : sp.to > pos.ch))) {\n if (mayClear) {\n signal(m, \"beforeCursorEnter\");\n if (m.explicitlyCleared) {\n if (!line.markedSpans) { break }\n else {--i; continue}\n }\n }\n if (!m.atomic) { continue }\n\n if (oldPos) {\n var near = m.find(dir < 0 ? 1 : -1), diff = (void 0);\n if (dir < 0 ? preventCursorRight : preventCursorLeft)\n { near = movePos(doc, near, -dir, near && near.line == pos.line ? line : null); }\n if (near && near.line == pos.line && (diff = cmp(near, oldPos)) && (dir < 0 ? diff < 0 : diff > 0))\n { return skipAtomicInner(doc, near, pos, dir, mayClear) }\n }\n\n var far = m.find(dir < 0 ? -1 : 1);\n if (dir < 0 ? preventCursorLeft : preventCursorRight)\n { far = movePos(doc, far, dir, far.line == pos.line ? line : null); }\n return far ? skipAtomicInner(doc, far, pos, dir, mayClear) : null\n }\n } }\n return pos\n }\n\n // Ensure a given position is not inside an atomic range.\n function skipAtomic(doc, pos, oldPos, bias, mayClear) {\n var dir = bias || 1;\n var found = skipAtomicInner(doc, pos, oldPos, dir, mayClear) ||\n (!mayClear && skipAtomicInner(doc, pos, oldPos, dir, true)) ||\n skipAtomicInner(doc, pos, oldPos, -dir, mayClear) ||\n (!mayClear && skipAtomicInner(doc, pos, oldPos, -dir, true));\n if (!found) {\n doc.cantEdit = true;\n return Pos(doc.first, 0)\n }\n return found\n }\n\n function movePos(doc, pos, dir, line) {\n if (dir < 0 && pos.ch == 0) {\n if (pos.line > doc.first) { return clipPos(doc, Pos(pos.line - 1)) }\n else { return null }\n } else if (dir > 0 && pos.ch == (line || getLine(doc, pos.line)).text.length) {\n if (pos.line < doc.first + doc.size - 1) { return Pos(pos.line + 1, 0) }\n else { return null }\n } else {\n return new Pos(pos.line, pos.ch + dir)\n }\n }\n\n function selectAll(cm) {\n cm.setSelection(Pos(cm.firstLine(), 0), Pos(cm.lastLine()), sel_dontScroll);\n }\n\n // UPDATING\n\n // Allow \"beforeChange\" event handlers to influence a change\n function filterChange(doc, change, update) {\n var obj = {\n canceled: false,\n from: change.from,\n to: change.to,\n text: change.text,\n origin: change.origin,\n cancel: function () { return obj.canceled = true; }\n };\n if (update) { obj.update = function (from, to, text, origin) {\n if (from) { obj.from = clipPos(doc, from); }\n if (to) { obj.to = clipPos(doc, to); }\n if (text) { obj.text = text; }\n if (origin !== undefined) { obj.origin = origin; }\n }; }\n signal(doc, \"beforeChange\", doc, obj);\n if (doc.cm) { signal(doc.cm, \"beforeChange\", doc.cm, obj); }\n\n if (obj.canceled) {\n if (doc.cm) { doc.cm.curOp.updateInput = 2; }\n return null\n }\n return {from: obj.from, to: obj.to, text: obj.text, origin: obj.origin}\n }\n\n // Apply a change to a document, and add it to the document's\n // history, and propagating it to all linked documents.\n function makeChange(doc, change, ignoreReadOnly) {\n if (doc.cm) {\n if (!doc.cm.curOp) { return operation(doc.cm, makeChange)(doc, change, ignoreReadOnly) }\n if (doc.cm.state.suppressEdits) { return }\n }\n\n if (hasHandler(doc, \"beforeChange\") || doc.cm && hasHandler(doc.cm, \"beforeChange\")) {\n change = filterChange(doc, change, true);\n if (!change) { return }\n }\n\n // Possibly split or suppress the update based on the presence\n // of read-only spans in its range.\n var split = sawReadOnlySpans && !ignoreReadOnly && removeReadOnlyRanges(doc, change.from, change.to);\n if (split) {\n for (var i = split.length - 1; i >= 0; --i)\n { makeChangeInner(doc, {from: split[i].from, to: split[i].to, text: i ? [\"\"] : change.text, origin: change.origin}); }\n } else {\n makeChangeInner(doc, change);\n }\n }\n\n function makeChangeInner(doc, change) {\n if (change.text.length == 1 && change.text[0] == \"\" && cmp(change.from, change.to) == 0) { return }\n var selAfter = computeSelAfterChange(doc, change);\n addChangeToHistory(doc, change, selAfter, doc.cm ? doc.cm.curOp.id : NaN);\n\n makeChangeSingleDoc(doc, change, selAfter, stretchSpansOverChange(doc, change));\n var rebased = [];\n\n linkedDocs(doc, function (doc, sharedHist) {\n if (!sharedHist && indexOf(rebased, doc.history) == -1) {\n rebaseHist(doc.history, change);\n rebased.push(doc.history);\n }\n makeChangeSingleDoc(doc, change, null, stretchSpansOverChange(doc, change));\n });\n }\n\n // Revert a change stored in a document's history.\n function makeChangeFromHistory(doc, type, allowSelectionOnly) {\n var suppress = doc.cm && doc.cm.state.suppressEdits;\n if (suppress && !allowSelectionOnly) { return }\n\n var hist = doc.history, event, selAfter = doc.sel;\n var source = type == \"undo\" ? hist.done : hist.undone, dest = type == \"undo\" ? hist.undone : hist.done;\n\n // Verify that there is a useable event (so that ctrl-z won't\n // needlessly clear selection events)\n var i = 0;\n for (; i < source.length; i++) {\n event = source[i];\n if (allowSelectionOnly ? event.ranges && !event.equals(doc.sel) : !event.ranges)\n { break }\n }\n if (i == source.length) { return }\n hist.lastOrigin = hist.lastSelOrigin = null;\n\n for (;;) {\n event = source.pop();\n if (event.ranges) {\n pushSelectionToHistory(event, dest);\n if (allowSelectionOnly && !event.equals(doc.sel)) {\n setSelection(doc, event, {clearRedo: false});\n return\n }\n selAfter = event;\n } else if (suppress) {\n source.push(event);\n return\n } else { break }\n }\n\n // Build up a reverse change object to add to the opposite history\n // stack (redo when undoing, and vice versa).\n var antiChanges = [];\n pushSelectionToHistory(selAfter, dest);\n dest.push({changes: antiChanges, generation: hist.generation});\n hist.generation = event.generation || ++hist.maxGeneration;\n\n var filter = hasHandler(doc, \"beforeChange\") || doc.cm && hasHandler(doc.cm, \"beforeChange\");\n\n var loop = function ( i ) {\n var change = event.changes[i];\n change.origin = type;\n if (filter && !filterChange(doc, change, false)) {\n source.length = 0;\n return {}\n }\n\n antiChanges.push(historyChangeFromChange(doc, change));\n\n var after = i ? computeSelAfterChange(doc, change) : lst(source);\n makeChangeSingleDoc(doc, change, after, mergeOldSpans(doc, change));\n if (!i && doc.cm) { doc.cm.scrollIntoView({from: change.from, to: changeEnd(change)}); }\n var rebased = [];\n\n // Propagate to the linked documents\n linkedDocs(doc, function (doc, sharedHist) {\n if (!sharedHist && indexOf(rebased, doc.history) == -1) {\n rebaseHist(doc.history, change);\n rebased.push(doc.history);\n }\n makeChangeSingleDoc(doc, change, null, mergeOldSpans(doc, change));\n });\n };\n\n for (var i$1 = event.changes.length - 1; i$1 >= 0; --i$1) {\n var returned = loop( i$1 );\n\n if ( returned ) return returned.v;\n }\n }\n\n // Sub-views need their line numbers shifted when text is added\n // above or below them in the parent document.\n function shiftDoc(doc, distance) {\n if (distance == 0) { return }\n doc.first += distance;\n doc.sel = new Selection(map(doc.sel.ranges, function (range) { return new Range(\n Pos(range.anchor.line + distance, range.anchor.ch),\n Pos(range.head.line + distance, range.head.ch)\n ); }), doc.sel.primIndex);\n if (doc.cm) {\n regChange(doc.cm, doc.first, doc.first - distance, distance);\n for (var d = doc.cm.display, l = d.viewFrom; l < d.viewTo; l++)\n { regLineChange(doc.cm, l, \"gutter\"); }\n }\n }\n\n // More lower-level change function, handling only a single document\n // (not linked ones).\n function makeChangeSingleDoc(doc, change, selAfter, spans) {\n if (doc.cm && !doc.cm.curOp)\n { return operation(doc.cm, makeChangeSingleDoc)(doc, change, selAfter, spans) }\n\n if (change.to.line < doc.first) {\n shiftDoc(doc, change.text.length - 1 - (change.to.line - change.from.line));\n return\n }\n if (change.from.line > doc.lastLine()) { return }\n\n // Clip the change to the size of this doc\n if (change.from.line < doc.first) {\n var shift = change.text.length - 1 - (doc.first - change.from.line);\n shiftDoc(doc, shift);\n change = {from: Pos(doc.first, 0), to: Pos(change.to.line + shift, change.to.ch),\n text: [lst(change.text)], origin: change.origin};\n }\n var last = doc.lastLine();\n if (change.to.line > last) {\n change = {from: change.from, to: Pos(last, getLine(doc, last).text.length),\n text: [change.text[0]], origin: change.origin};\n }\n\n change.removed = getBetween(doc, change.from, change.to);\n\n if (!selAfter) { selAfter = computeSelAfterChange(doc, change); }\n if (doc.cm) { makeChangeSingleDocInEditor(doc.cm, change, spans); }\n else { updateDoc(doc, change, spans); }\n setSelectionNoUndo(doc, selAfter, sel_dontScroll);\n\n if (doc.cantEdit && skipAtomic(doc, Pos(doc.firstLine(), 0)))\n { doc.cantEdit = false; }\n }\n\n // Handle the interaction of a change to a document with the editor\n // that this document is part of.\n function makeChangeSingleDocInEditor(cm, change, spans) {\n var doc = cm.doc, display = cm.display, from = change.from, to = change.to;\n\n var recomputeMaxLength = false, checkWidthStart = from.line;\n if (!cm.options.lineWrapping) {\n checkWidthStart = lineNo(visualLine(getLine(doc, from.line)));\n doc.iter(checkWidthStart, to.line + 1, function (line) {\n if (line == display.maxLine) {\n recomputeMaxLength = true;\n return true\n }\n });\n }\n\n if (doc.sel.contains(change.from, change.to) > -1)\n { signalCursorActivity(cm); }\n\n updateDoc(doc, change, spans, estimateHeight(cm));\n\n if (!cm.options.lineWrapping) {\n doc.iter(checkWidthStart, from.line + change.text.length, function (line) {\n var len = lineLength(line);\n if (len > display.maxLineLength) {\n display.maxLine = line;\n display.maxLineLength = len;\n display.maxLineChanged = true;\n recomputeMaxLength = false;\n }\n });\n if (recomputeMaxLength) { cm.curOp.updateMaxLine = true; }\n }\n\n retreatFrontier(doc, from.line);\n startWorker(cm, 400);\n\n var lendiff = change.text.length - (to.line - from.line) - 1;\n // Remember that these lines changed, for updating the display\n if (change.full)\n { regChange(cm); }\n else if (from.line == to.line && change.text.length == 1 && !isWholeLineUpdate(cm.doc, change))\n { regLineChange(cm, from.line, \"text\"); }\n else\n { regChange(cm, from.line, to.line + 1, lendiff); }\n\n var changesHandler = hasHandler(cm, \"changes\"), changeHandler = hasHandler(cm, \"change\");\n if (changeHandler || changesHandler) {\n var obj = {\n from: from, to: to,\n text: change.text,\n removed: change.removed,\n origin: change.origin\n };\n if (changeHandler) { signalLater(cm, \"change\", cm, obj); }\n if (changesHandler) { (cm.curOp.changeObjs || (cm.curOp.changeObjs = [])).push(obj); }\n }\n cm.display.selForContextMenu = null;\n }\n\n function replaceRange(doc, code, from, to, origin) {\n var assign;\n\n if (!to) { to = from; }\n if (cmp(to, from) < 0) { (assign = [to, from], from = assign[0], to = assign[1]); }\n if (typeof code == \"string\") { code = doc.splitLines(code); }\n makeChange(doc, {from: from, to: to, text: code, origin: origin});\n }\n\n // Rebasing/resetting history to deal with externally-sourced changes\n\n function rebaseHistSelSingle(pos, from, to, diff) {\n if (to < pos.line) {\n pos.line += diff;\n } else if (from < pos.line) {\n pos.line = from;\n pos.ch = 0;\n }\n }\n\n // Tries to rebase an array of history events given a change in the\n // document. If the change touches the same lines as the event, the\n // event, and everything 'behind' it, is discarded. If the change is\n // before the event, the event's positions are updated. Uses a\n // copy-on-write scheme for the positions, to avoid having to\n // reallocate them all on every rebase, but also avoid problems with\n // shared position objects being unsafely updated.\n function rebaseHistArray(array, from, to, diff) {\n for (var i = 0; i < array.length; ++i) {\n var sub = array[i], ok = true;\n if (sub.ranges) {\n if (!sub.copied) { sub = array[i] = sub.deepCopy(); sub.copied = true; }\n for (var j = 0; j < sub.ranges.length; j++) {\n rebaseHistSelSingle(sub.ranges[j].anchor, from, to, diff);\n rebaseHistSelSingle(sub.ranges[j].head, from, to, diff);\n }\n continue\n }\n for (var j$1 = 0; j$1 < sub.changes.length; ++j$1) {\n var cur = sub.changes[j$1];\n if (to < cur.from.line) {\n cur.from = Pos(cur.from.line + diff, cur.from.ch);\n cur.to = Pos(cur.to.line + diff, cur.to.ch);\n } else if (from <= cur.to.line) {\n ok = false;\n break\n }\n }\n if (!ok) {\n array.splice(0, i + 1);\n i = 0;\n }\n }\n }\n\n function rebaseHist(hist, change) {\n var from = change.from.line, to = change.to.line, diff = change.text.length - (to - from) - 1;\n rebaseHistArray(hist.done, from, to, diff);\n rebaseHistArray(hist.undone, from, to, diff);\n }\n\n // Utility for applying a change to a line by handle or number,\n // returning the number and optionally registering the line as\n // changed.\n function changeLine(doc, handle, changeType, op) {\n var no = handle, line = handle;\n if (typeof handle == \"number\") { line = getLine(doc, clipLine(doc, handle)); }\n else { no = lineNo(handle); }\n if (no == null) { return null }\n if (op(line, no) && doc.cm) { regLineChange(doc.cm, no, changeType); }\n return line\n }\n\n // The document is represented as a BTree consisting of leaves, with\n // chunk of lines in them, and branches, with up to ten leaves or\n // other branch nodes below them. The top node is always a branch\n // node, and is the document object itself (meaning it has\n // additional methods and properties).\n //\n // All nodes have parent links. The tree is used both to go from\n // line numbers to line objects, and to go from objects to numbers.\n // It also indexes by height, and is used to convert between height\n // and line object, and to find the total height of the document.\n //\n // See also http://marijnhaverbeke.nl/blog/codemirror-line-tree.html\n\n function LeafChunk(lines) {\n this.lines = lines;\n this.parent = null;\n var height = 0;\n for (var i = 0; i < lines.length; ++i) {\n lines[i].parent = this;\n height += lines[i].height;\n }\n this.height = height;\n }\n\n LeafChunk.prototype = {\n chunkSize: function() { return this.lines.length },\n\n // Remove the n lines at offset 'at'.\n removeInner: function(at, n) {\n for (var i = at, e = at + n; i < e; ++i) {\n var line = this.lines[i];\n this.height -= line.height;\n cleanUpLine(line);\n signalLater(line, \"delete\");\n }\n this.lines.splice(at, n);\n },\n\n // Helper used to collapse a small branch into a single leaf.\n collapse: function(lines) {\n lines.push.apply(lines, this.lines);\n },\n\n // Insert the given array of lines at offset 'at', count them as\n // having the given height.\n insertInner: function(at, lines, height) {\n this.height += height;\n this.lines = this.lines.slice(0, at).concat(lines).concat(this.lines.slice(at));\n for (var i = 0; i < lines.length; ++i) { lines[i].parent = this; }\n },\n\n // Used to iterate over a part of the tree.\n iterN: function(at, n, op) {\n for (var e = at + n; at < e; ++at)\n { if (op(this.lines[at])) { return true } }\n }\n };\n\n function BranchChunk(children) {\n this.children = children;\n var size = 0, height = 0;\n for (var i = 0; i < children.length; ++i) {\n var ch = children[i];\n size += ch.chunkSize(); height += ch.height;\n ch.parent = this;\n }\n this.size = size;\n this.height = height;\n this.parent = null;\n }\n\n BranchChunk.prototype = {\n chunkSize: function() { return this.size },\n\n removeInner: function(at, n) {\n this.size -= n;\n for (var i = 0; i < this.children.length; ++i) {\n var child = this.children[i], sz = child.chunkSize();\n if (at < sz) {\n var rm = Math.min(n, sz - at), oldHeight = child.height;\n child.removeInner(at, rm);\n this.height -= oldHeight - child.height;\n if (sz == rm) { this.children.splice(i--, 1); child.parent = null; }\n if ((n -= rm) == 0) { break }\n at = 0;\n } else { at -= sz; }\n }\n // If the result is smaller than 25 lines, ensure that it is a\n // single leaf node.\n if (this.size - n < 25 &&\n (this.children.length > 1 || !(this.children[0] instanceof LeafChunk))) {\n var lines = [];\n this.collapse(lines);\n this.children = [new LeafChunk(lines)];\n this.children[0].parent = this;\n }\n },\n\n collapse: function(lines) {\n for (var i = 0; i < this.children.length; ++i) { this.children[i].collapse(lines); }\n },\n\n insertInner: function(at, lines, height) {\n this.size += lines.length;\n this.height += height;\n for (var i = 0; i < this.children.length; ++i) {\n var child = this.children[i], sz = child.chunkSize();\n if (at <= sz) {\n child.insertInner(at, lines, height);\n if (child.lines && child.lines.length > 50) {\n // To avoid memory thrashing when child.lines is huge (e.g. first view of a large file), it's never spliced.\n // Instead, small slices are taken. They're taken in order because sequential memory accesses are fastest.\n var remaining = child.lines.length % 25 + 25;\n for (var pos = remaining; pos < child.lines.length;) {\n var leaf = new LeafChunk(child.lines.slice(pos, pos += 25));\n child.height -= leaf.height;\n this.children.splice(++i, 0, leaf);\n leaf.parent = this;\n }\n child.lines = child.lines.slice(0, remaining);\n this.maybeSpill();\n }\n break\n }\n at -= sz;\n }\n },\n\n // When a node has grown, check whether it should be split.\n maybeSpill: function() {\n if (this.children.length <= 10) { return }\n var me = this;\n do {\n var spilled = me.children.splice(me.children.length - 5, 5);\n var sibling = new BranchChunk(spilled);\n if (!me.parent) { // Become the parent node\n var copy = new BranchChunk(me.children);\n copy.parent = me;\n me.children = [copy, sibling];\n me = copy;\n } else {\n me.size -= sibling.size;\n me.height -= sibling.height;\n var myIndex = indexOf(me.parent.children, me);\n me.parent.children.splice(myIndex + 1, 0, sibling);\n }\n sibling.parent = me.parent;\n } while (me.children.length > 10)\n me.parent.maybeSpill();\n },\n\n iterN: function(at, n, op) {\n for (var i = 0; i < this.children.length; ++i) {\n var child = this.children[i], sz = child.chunkSize();\n if (at < sz) {\n var used = Math.min(n, sz - at);\n if (child.iterN(at, used, op)) { return true }\n if ((n -= used) == 0) { break }\n at = 0;\n } else { at -= sz; }\n }\n }\n };\n\n // Line widgets are block elements displayed above or below a line.\n\n var LineWidget = function(doc, node, options) {\n if (options) { for (var opt in options) { if (options.hasOwnProperty(opt))\n { this[opt] = options[opt]; } } }\n this.doc = doc;\n this.node = node;\n };\n\n LineWidget.prototype.clear = function () {\n var cm = this.doc.cm, ws = this.line.widgets, line = this.line, no = lineNo(line);\n if (no == null || !ws) { return }\n for (var i = 0; i < ws.length; ++i) { if (ws[i] == this) { ws.splice(i--, 1); } }\n if (!ws.length) { line.widgets = null; }\n var height = widgetHeight(this);\n updateLineHeight(line, Math.max(0, line.height - height));\n if (cm) {\n runInOp(cm, function () {\n adjustScrollWhenAboveVisible(cm, line, -height);\n regLineChange(cm, no, \"widget\");\n });\n signalLater(cm, \"lineWidgetCleared\", cm, this, no);\n }\n };\n\n LineWidget.prototype.changed = function () {\n var this$1 = this;\n\n var oldH = this.height, cm = this.doc.cm, line = this.line;\n this.height = null;\n var diff = widgetHeight(this) - oldH;\n if (!diff) { return }\n if (!lineIsHidden(this.doc, line)) { updateLineHeight(line, line.height + diff); }\n if (cm) {\n runInOp(cm, function () {\n cm.curOp.forceUpdate = true;\n adjustScrollWhenAboveVisible(cm, line, diff);\n signalLater(cm, \"lineWidgetChanged\", cm, this$1, lineNo(line));\n });\n }\n };\n eventMixin(LineWidget);\n\n function adjustScrollWhenAboveVisible(cm, line, diff) {\n if (heightAtLine(line) < ((cm.curOp && cm.curOp.scrollTop) || cm.doc.scrollTop))\n { addToScrollTop(cm, diff); }\n }\n\n function addLineWidget(doc, handle, node, options) {\n var widget = new LineWidget(doc, node, options);\n var cm = doc.cm;\n if (cm && widget.noHScroll) { cm.display.alignWidgets = true; }\n changeLine(doc, handle, \"widget\", function (line) {\n var widgets = line.widgets || (line.widgets = []);\n if (widget.insertAt == null) { widgets.push(widget); }\n else { widgets.splice(Math.min(widgets.length, Math.max(0, widget.insertAt)), 0, widget); }\n widget.line = line;\n if (cm && !lineIsHidden(doc, line)) {\n var aboveVisible = heightAtLine(line) < doc.scrollTop;\n updateLineHeight(line, line.height + widgetHeight(widget));\n if (aboveVisible) { addToScrollTop(cm, widget.height); }\n cm.curOp.forceUpdate = true;\n }\n return true\n });\n if (cm) { signalLater(cm, \"lineWidgetAdded\", cm, widget, typeof handle == \"number\" ? handle : lineNo(handle)); }\n return widget\n }\n\n // TEXTMARKERS\n\n // Created with markText and setBookmark methods. A TextMarker is a\n // handle that can be used to clear or find a marked position in the\n // document. Line objects hold arrays (markedSpans) containing\n // {from, to, marker} object pointing to such marker objects, and\n // indicating that such a marker is present on that line. Multiple\n // lines may point to the same marker when it spans across lines.\n // The spans will have null for their from/to properties when the\n // marker continues beyond the start/end of the line. Markers have\n // links back to the lines they currently touch.\n\n // Collapsed markers have unique ids, in order to be able to order\n // them, which is needed for uniquely determining an outer marker\n // when they overlap (they may nest, but not partially overlap).\n var nextMarkerId = 0;\n\n var TextMarker = function(doc, type) {\n this.lines = [];\n this.type = type;\n this.doc = doc;\n this.id = ++nextMarkerId;\n };\n\n // Clear the marker.\n TextMarker.prototype.clear = function () {\n if (this.explicitlyCleared) { return }\n var cm = this.doc.cm, withOp = cm && !cm.curOp;\n if (withOp) { startOperation(cm); }\n if (hasHandler(this, \"clear\")) {\n var found = this.find();\n if (found) { signalLater(this, \"clear\", found.from, found.to); }\n }\n var min = null, max = null;\n for (var i = 0; i < this.lines.length; ++i) {\n var line = this.lines[i];\n var span = getMarkedSpanFor(line.markedSpans, this);\n if (cm && !this.collapsed) { regLineChange(cm, lineNo(line), \"text\"); }\n else if (cm) {\n if (span.to != null) { max = lineNo(line); }\n if (span.from != null) { min = lineNo(line); }\n }\n line.markedSpans = removeMarkedSpan(line.markedSpans, span);\n if (span.from == null && this.collapsed && !lineIsHidden(this.doc, line) && cm)\n { updateLineHeight(line, textHeight(cm.display)); }\n }\n if (cm && this.collapsed && !cm.options.lineWrapping) { for (var i$1 = 0; i$1 < this.lines.length; ++i$1) {\n var visual = visualLine(this.lines[i$1]), len = lineLength(visual);\n if (len > cm.display.maxLineLength) {\n cm.display.maxLine = visual;\n cm.display.maxLineLength = len;\n cm.display.maxLineChanged = true;\n }\n } }\n\n if (min != null && cm && this.collapsed) { regChange(cm, min, max + 1); }\n this.lines.length = 0;\n this.explicitlyCleared = true;\n if (this.atomic && this.doc.cantEdit) {\n this.doc.cantEdit = false;\n if (cm) { reCheckSelection(cm.doc); }\n }\n if (cm) { signalLater(cm, \"markerCleared\", cm, this, min, max); }\n if (withOp) { endOperation(cm); }\n if (this.parent) { this.parent.clear(); }\n };\n\n // Find the position of the marker in the document. Returns a {from,\n // to} object by default. Side can be passed to get a specific side\n // -- 0 (both), -1 (left), or 1 (right). When lineObj is true, the\n // Pos objects returned contain a line object, rather than a line\n // number (used to prevent looking up the same line twice).\n TextMarker.prototype.find = function (side, lineObj) {\n if (side == null && this.type == \"bookmark\") { side = 1; }\n var from, to;\n for (var i = 0; i < this.lines.length; ++i) {\n var line = this.lines[i];\n var span = getMarkedSpanFor(line.markedSpans, this);\n if (span.from != null) {\n from = Pos(lineObj ? line : lineNo(line), span.from);\n if (side == -1) { return from }\n }\n if (span.to != null) {\n to = Pos(lineObj ? line : lineNo(line), span.to);\n if (side == 1) { return to }\n }\n }\n return from && {from: from, to: to}\n };\n\n // Signals that the marker's widget changed, and surrounding layout\n // should be recomputed.\n TextMarker.prototype.changed = function () {\n var this$1 = this;\n\n var pos = this.find(-1, true), widget = this, cm = this.doc.cm;\n if (!pos || !cm) { return }\n runInOp(cm, function () {\n var line = pos.line, lineN = lineNo(pos.line);\n var view = findViewForLine(cm, lineN);\n if (view) {\n clearLineMeasurementCacheFor(view);\n cm.curOp.selectionChanged = cm.curOp.forceUpdate = true;\n }\n cm.curOp.updateMaxLine = true;\n if (!lineIsHidden(widget.doc, line) && widget.height != null) {\n var oldHeight = widget.height;\n widget.height = null;\n var dHeight = widgetHeight(widget) - oldHeight;\n if (dHeight)\n { updateLineHeight(line, line.height + dHeight); }\n }\n signalLater(cm, \"markerChanged\", cm, this$1);\n });\n };\n\n TextMarker.prototype.attachLine = function (line) {\n if (!this.lines.length && this.doc.cm) {\n var op = this.doc.cm.curOp;\n if (!op.maybeHiddenMarkers || indexOf(op.maybeHiddenMarkers, this) == -1)\n { (op.maybeUnhiddenMarkers || (op.maybeUnhiddenMarkers = [])).push(this); }\n }\n this.lines.push(line);\n };\n\n TextMarker.prototype.detachLine = function (line) {\n this.lines.splice(indexOf(this.lines, line), 1);\n if (!this.lines.length && this.doc.cm) {\n var op = this.doc.cm.curOp\n ;(op.maybeHiddenMarkers || (op.maybeHiddenMarkers = [])).push(this);\n }\n };\n eventMixin(TextMarker);\n\n // Create a marker, wire it up to the right lines, and\n function markText(doc, from, to, options, type) {\n // Shared markers (across linked documents) are handled separately\n // (markTextShared will call out to this again, once per\n // document).\n if (options && options.shared) { return markTextShared(doc, from, to, options, type) }\n // Ensure we are in an operation.\n if (doc.cm && !doc.cm.curOp) { return operation(doc.cm, markText)(doc, from, to, options, type) }\n\n var marker = new TextMarker(doc, type), diff = cmp(from, to);\n if (options) { copyObj(options, marker, false); }\n // Don't connect empty markers unless clearWhenEmpty is false\n if (diff > 0 || diff == 0 && marker.clearWhenEmpty !== false)\n { return marker }\n if (marker.replacedWith) {\n // Showing up as a widget implies collapsed (widget replaces text)\n marker.collapsed = true;\n marker.widgetNode = eltP(\"span\", [marker.replacedWith], \"CodeMirror-widget\");\n if (!options.handleMouseEvents) { marker.widgetNode.setAttribute(\"cm-ignore-events\", \"true\"); }\n if (options.insertLeft) { marker.widgetNode.insertLeft = true; }\n }\n if (marker.collapsed) {\n if (conflictingCollapsedRange(doc, from.line, from, to, marker) ||\n from.line != to.line && conflictingCollapsedRange(doc, to.line, from, to, marker))\n { throw new Error(\"Inserting collapsed marker partially overlapping an existing one\") }\n seeCollapsedSpans();\n }\n\n if (marker.addToHistory)\n { addChangeToHistory(doc, {from: from, to: to, origin: \"markText\"}, doc.sel, NaN); }\n\n var curLine = from.line, cm = doc.cm, updateMaxLine;\n doc.iter(curLine, to.line + 1, function (line) {\n if (cm && marker.collapsed && !cm.options.lineWrapping && visualLine(line) == cm.display.maxLine)\n { updateMaxLine = true; }\n if (marker.collapsed && curLine != from.line) { updateLineHeight(line, 0); }\n addMarkedSpan(line, new MarkedSpan(marker,\n curLine == from.line ? from.ch : null,\n curLine == to.line ? to.ch : null), doc.cm && doc.cm.curOp);\n ++curLine;\n });\n // lineIsHidden depends on the presence of the spans, so needs a second pass\n if (marker.collapsed) { doc.iter(from.line, to.line + 1, function (line) {\n if (lineIsHidden(doc, line)) { updateLineHeight(line, 0); }\n }); }\n\n if (marker.clearOnEnter) { on(marker, \"beforeCursorEnter\", function () { return marker.clear(); }); }\n\n if (marker.readOnly) {\n seeReadOnlySpans();\n if (doc.history.done.length || doc.history.undone.length)\n { doc.clearHistory(); }\n }\n if (marker.collapsed) {\n marker.id = ++nextMarkerId;\n marker.atomic = true;\n }\n if (cm) {\n // Sync editor state\n if (updateMaxLine) { cm.curOp.updateMaxLine = true; }\n if (marker.collapsed)\n { regChange(cm, from.line, to.line + 1); }\n else if (marker.className || marker.startStyle || marker.endStyle || marker.css ||\n marker.attributes || marker.title)\n { for (var i = from.line; i <= to.line; i++) { regLineChange(cm, i, \"text\"); } }\n if (marker.atomic) { reCheckSelection(cm.doc); }\n signalLater(cm, \"markerAdded\", cm, marker);\n }\n return marker\n }\n\n // SHARED TEXTMARKERS\n\n // A shared marker spans multiple linked documents. It is\n // implemented as a meta-marker-object controlling multiple normal\n // markers.\n var SharedTextMarker = function(markers, primary) {\n this.markers = markers;\n this.primary = primary;\n for (var i = 0; i < markers.length; ++i)\n { markers[i].parent = this; }\n };\n\n SharedTextMarker.prototype.clear = function () {\n if (this.explicitlyCleared) { return }\n this.explicitlyCleared = true;\n for (var i = 0; i < this.markers.length; ++i)\n { this.markers[i].clear(); }\n signalLater(this, \"clear\");\n };\n\n SharedTextMarker.prototype.find = function (side, lineObj) {\n return this.primary.find(side, lineObj)\n };\n eventMixin(SharedTextMarker);\n\n function markTextShared(doc, from, to, options, type) {\n options = copyObj(options);\n options.shared = false;\n var markers = [markText(doc, from, to, options, type)], primary = markers[0];\n var widget = options.widgetNode;\n linkedDocs(doc, function (doc) {\n if (widget) { options.widgetNode = widget.cloneNode(true); }\n markers.push(markText(doc, clipPos(doc, from), clipPos(doc, to), options, type));\n for (var i = 0; i < doc.linked.length; ++i)\n { if (doc.linked[i].isParent) { return } }\n primary = lst(markers);\n });\n return new SharedTextMarker(markers, primary)\n }\n\n function findSharedMarkers(doc) {\n return doc.findMarks(Pos(doc.first, 0), doc.clipPos(Pos(doc.lastLine())), function (m) { return m.parent; })\n }\n\n function copySharedMarkers(doc, markers) {\n for (var i = 0; i < markers.length; i++) {\n var marker = markers[i], pos = marker.find();\n var mFrom = doc.clipPos(pos.from), mTo = doc.clipPos(pos.to);\n if (cmp(mFrom, mTo)) {\n var subMark = markText(doc, mFrom, mTo, marker.primary, marker.primary.type);\n marker.markers.push(subMark);\n subMark.parent = marker;\n }\n }\n }\n\n function detachSharedMarkers(markers) {\n var loop = function ( i ) {\n var marker = markers[i], linked = [marker.primary.doc];\n linkedDocs(marker.primary.doc, function (d) { return linked.push(d); });\n for (var j = 0; j < marker.markers.length; j++) {\n var subMarker = marker.markers[j];\n if (indexOf(linked, subMarker.doc) == -1) {\n subMarker.parent = null;\n marker.markers.splice(j--, 1);\n }\n }\n };\n\n for (var i = 0; i < markers.length; i++) loop( i );\n }\n\n var nextDocId = 0;\n var Doc = function(text, mode, firstLine, lineSep, direction) {\n if (!(this instanceof Doc)) { return new Doc(text, mode, firstLine, lineSep, direction) }\n if (firstLine == null) { firstLine = 0; }\n\n BranchChunk.call(this, [new LeafChunk([new Line(\"\", null)])]);\n this.first = firstLine;\n this.scrollTop = this.scrollLeft = 0;\n this.cantEdit = false;\n this.cleanGeneration = 1;\n this.modeFrontier = this.highlightFrontier = firstLine;\n var start = Pos(firstLine, 0);\n this.sel = simpleSelection(start);\n this.history = new History(null);\n this.id = ++nextDocId;\n this.modeOption = mode;\n this.lineSep = lineSep;\n this.direction = (direction == \"rtl\") ? \"rtl\" : \"ltr\";\n this.extend = false;\n\n if (typeof text == \"string\") { text = this.splitLines(text); }\n updateDoc(this, {from: start, to: start, text: text});\n setSelection(this, simpleSelection(start), sel_dontScroll);\n };\n\n Doc.prototype = createObj(BranchChunk.prototype, {\n constructor: Doc,\n // Iterate over the document. Supports two forms -- with only one\n // argument, it calls that for each line in the document. With\n // three, it iterates over the range given by the first two (with\n // the second being non-inclusive).\n iter: function(from, to, op) {\n if (op) { this.iterN(from - this.first, to - from, op); }\n else { this.iterN(this.first, this.first + this.size, from); }\n },\n\n // Non-public interface for adding and removing lines.\n insert: function(at, lines) {\n var height = 0;\n for (var i = 0; i < lines.length; ++i) { height += lines[i].height; }\n this.insertInner(at - this.first, lines, height);\n },\n remove: function(at, n) { this.removeInner(at - this.first, n); },\n\n // From here, the methods are part of the public interface. Most\n // are also available from CodeMirror (editor) instances.\n\n getValue: function(lineSep) {\n var lines = getLines(this, this.first, this.first + this.size);\n if (lineSep === false) { return lines }\n return lines.join(lineSep || this.lineSeparator())\n },\n setValue: docMethodOp(function(code) {\n var top = Pos(this.first, 0), last = this.first + this.size - 1;\n makeChange(this, {from: top, to: Pos(last, getLine(this, last).text.length),\n text: this.splitLines(code), origin: \"setValue\", full: true}, true);\n if (this.cm) { scrollToCoords(this.cm, 0, 0); }\n setSelection(this, simpleSelection(top), sel_dontScroll);\n }),\n replaceRange: function(code, from, to, origin) {\n from = clipPos(this, from);\n to = to ? clipPos(this, to) : from;\n replaceRange(this, code, from, to, origin);\n },\n getRange: function(from, to, lineSep) {\n var lines = getBetween(this, clipPos(this, from), clipPos(this, to));\n if (lineSep === false) { return lines }\n if (lineSep === '') { return lines.join('') }\n return lines.join(lineSep || this.lineSeparator())\n },\n\n getLine: function(line) {var l = this.getLineHandle(line); return l && l.text},\n\n getLineHandle: function(line) {if (isLine(this, line)) { return getLine(this, line) }},\n getLineNumber: function(line) {return lineNo(line)},\n\n getLineHandleVisualStart: function(line) {\n if (typeof line == \"number\") { line = getLine(this, line); }\n return visualLine(line)\n },\n\n lineCount: function() {return this.size},\n firstLine: function() {return this.first},\n lastLine: function() {return this.first + this.size - 1},\n\n clipPos: function(pos) {return clipPos(this, pos)},\n\n getCursor: function(start) {\n var range = this.sel.primary(), pos;\n if (start == null || start == \"head\") { pos = range.head; }\n else if (start == \"anchor\") { pos = range.anchor; }\n else if (start == \"end\" || start == \"to\" || start === false) { pos = range.to(); }\n else { pos = range.from(); }\n return pos\n },\n listSelections: function() { return this.sel.ranges },\n somethingSelected: function() {return this.sel.somethingSelected()},\n\n setCursor: docMethodOp(function(line, ch, options) {\n setSimpleSelection(this, clipPos(this, typeof line == \"number\" ? Pos(line, ch || 0) : line), null, options);\n }),\n setSelection: docMethodOp(function(anchor, head, options) {\n setSimpleSelection(this, clipPos(this, anchor), clipPos(this, head || anchor), options);\n }),\n extendSelection: docMethodOp(function(head, other, options) {\n extendSelection(this, clipPos(this, head), other && clipPos(this, other), options);\n }),\n extendSelections: docMethodOp(function(heads, options) {\n extendSelections(this, clipPosArray(this, heads), options);\n }),\n extendSelectionsBy: docMethodOp(function(f, options) {\n var heads = map(this.sel.ranges, f);\n extendSelections(this, clipPosArray(this, heads), options);\n }),\n setSelections: docMethodOp(function(ranges, primary, options) {\n if (!ranges.length) { return }\n var out = [];\n for (var i = 0; i < ranges.length; i++)\n { out[i] = new Range(clipPos(this, ranges[i].anchor),\n clipPos(this, ranges[i].head || ranges[i].anchor)); }\n if (primary == null) { primary = Math.min(ranges.length - 1, this.sel.primIndex); }\n setSelection(this, normalizeSelection(this.cm, out, primary), options);\n }),\n addSelection: docMethodOp(function(anchor, head, options) {\n var ranges = this.sel.ranges.slice(0);\n ranges.push(new Range(clipPos(this, anchor), clipPos(this, head || anchor)));\n setSelection(this, normalizeSelection(this.cm, ranges, ranges.length - 1), options);\n }),\n\n getSelection: function(lineSep) {\n var ranges = this.sel.ranges, lines;\n for (var i = 0; i < ranges.length; i++) {\n var sel = getBetween(this, ranges[i].from(), ranges[i].to());\n lines = lines ? lines.concat(sel) : sel;\n }\n if (lineSep === false) { return lines }\n else { return lines.join(lineSep || this.lineSeparator()) }\n },\n getSelections: function(lineSep) {\n var parts = [], ranges = this.sel.ranges;\n for (var i = 0; i < ranges.length; i++) {\n var sel = getBetween(this, ranges[i].from(), ranges[i].to());\n if (lineSep !== false) { sel = sel.join(lineSep || this.lineSeparator()); }\n parts[i] = sel;\n }\n return parts\n },\n replaceSelection: function(code, collapse, origin) {\n var dup = [];\n for (var i = 0; i < this.sel.ranges.length; i++)\n { dup[i] = code; }\n this.replaceSelections(dup, collapse, origin || \"+input\");\n },\n replaceSelections: docMethodOp(function(code, collapse, origin) {\n var changes = [], sel = this.sel;\n for (var i = 0; i < sel.ranges.length; i++) {\n var range = sel.ranges[i];\n changes[i] = {from: range.from(), to: range.to(), text: this.splitLines(code[i]), origin: origin};\n }\n var newSel = collapse && collapse != \"end\" && computeReplacedSel(this, changes, collapse);\n for (var i$1 = changes.length - 1; i$1 >= 0; i$1--)\n { makeChange(this, changes[i$1]); }\n if (newSel) { setSelectionReplaceHistory(this, newSel); }\n else if (this.cm) { ensureCursorVisible(this.cm); }\n }),\n undo: docMethodOp(function() {makeChangeFromHistory(this, \"undo\");}),\n redo: docMethodOp(function() {makeChangeFromHistory(this, \"redo\");}),\n undoSelection: docMethodOp(function() {makeChangeFromHistory(this, \"undo\", true);}),\n redoSelection: docMethodOp(function() {makeChangeFromHistory(this, \"redo\", true);}),\n\n setExtending: function(val) {this.extend = val;},\n getExtending: function() {return this.extend},\n\n historySize: function() {\n var hist = this.history, done = 0, undone = 0;\n for (var i = 0; i < hist.done.length; i++) { if (!hist.done[i].ranges) { ++done; } }\n for (var i$1 = 0; i$1 < hist.undone.length; i$1++) { if (!hist.undone[i$1].ranges) { ++undone; } }\n return {undo: done, redo: undone}\n },\n clearHistory: function() {\n var this$1 = this;\n\n this.history = new History(this.history);\n linkedDocs(this, function (doc) { return doc.history = this$1.history; }, true);\n },\n\n markClean: function() {\n this.cleanGeneration = this.changeGeneration(true);\n },\n changeGeneration: function(forceSplit) {\n if (forceSplit)\n { this.history.lastOp = this.history.lastSelOp = this.history.lastOrigin = null; }\n return this.history.generation\n },\n isClean: function (gen) {\n return this.history.generation == (gen || this.cleanGeneration)\n },\n\n getHistory: function() {\n return {done: copyHistoryArray(this.history.done),\n undone: copyHistoryArray(this.history.undone)}\n },\n setHistory: function(histData) {\n var hist = this.history = new History(this.history);\n hist.done = copyHistoryArray(histData.done.slice(0), null, true);\n hist.undone = copyHistoryArray(histData.undone.slice(0), null, true);\n },\n\n setGutterMarker: docMethodOp(function(line, gutterID, value) {\n return changeLine(this, line, \"gutter\", function (line) {\n var markers = line.gutterMarkers || (line.gutterMarkers = {});\n markers[gutterID] = value;\n if (!value && isEmpty(markers)) { line.gutterMarkers = null; }\n return true\n })\n }),\n\n clearGutter: docMethodOp(function(gutterID) {\n var this$1 = this;\n\n this.iter(function (line) {\n if (line.gutterMarkers && line.gutterMarkers[gutterID]) {\n changeLine(this$1, line, \"gutter\", function () {\n line.gutterMarkers[gutterID] = null;\n if (isEmpty(line.gutterMarkers)) { line.gutterMarkers = null; }\n return true\n });\n }\n });\n }),\n\n lineInfo: function(line) {\n var n;\n if (typeof line == \"number\") {\n if (!isLine(this, line)) { return null }\n n = line;\n line = getLine(this, line);\n if (!line) { return null }\n } else {\n n = lineNo(line);\n if (n == null) { return null }\n }\n return {line: n, handle: line, text: line.text, gutterMarkers: line.gutterMarkers,\n textClass: line.textClass, bgClass: line.bgClass, wrapClass: line.wrapClass,\n widgets: line.widgets}\n },\n\n addLineClass: docMethodOp(function(handle, where, cls) {\n return changeLine(this, handle, where == \"gutter\" ? \"gutter\" : \"class\", function (line) {\n var prop = where == \"text\" ? \"textClass\"\n : where == \"background\" ? \"bgClass\"\n : where == \"gutter\" ? \"gutterClass\" : \"wrapClass\";\n if (!line[prop]) { line[prop] = cls; }\n else if (classTest(cls).test(line[prop])) { return false }\n else { line[prop] += \" \" + cls; }\n return true\n })\n }),\n removeLineClass: docMethodOp(function(handle, where, cls) {\n return changeLine(this, handle, where == \"gutter\" ? \"gutter\" : \"class\", function (line) {\n var prop = where == \"text\" ? \"textClass\"\n : where == \"background\" ? \"bgClass\"\n : where == \"gutter\" ? \"gutterClass\" : \"wrapClass\";\n var cur = line[prop];\n if (!cur) { return false }\n else if (cls == null) { line[prop] = null; }\n else {\n var found = cur.match(classTest(cls));\n if (!found) { return false }\n var end = found.index + found[0].length;\n line[prop] = cur.slice(0, found.index) + (!found.index || end == cur.length ? \"\" : \" \") + cur.slice(end) || null;\n }\n return true\n })\n }),\n\n addLineWidget: docMethodOp(function(handle, node, options) {\n return addLineWidget(this, handle, node, options)\n }),\n removeLineWidget: function(widget) { widget.clear(); },\n\n markText: function(from, to, options) {\n return markText(this, clipPos(this, from), clipPos(this, to), options, options && options.type || \"range\")\n },\n setBookmark: function(pos, options) {\n var realOpts = {replacedWith: options && (options.nodeType == null ? options.widget : options),\n insertLeft: options && options.insertLeft,\n clearWhenEmpty: false, shared: options && options.shared,\n handleMouseEvents: options && options.handleMouseEvents};\n pos = clipPos(this, pos);\n return markText(this, pos, pos, realOpts, \"bookmark\")\n },\n findMarksAt: function(pos) {\n pos = clipPos(this, pos);\n var markers = [], spans = getLine(this, pos.line).markedSpans;\n if (spans) { for (var i = 0; i < spans.length; ++i) {\n var span = spans[i];\n if ((span.from == null || span.from <= pos.ch) &&\n (span.to == null || span.to >= pos.ch))\n { markers.push(span.marker.parent || span.marker); }\n } }\n return markers\n },\n findMarks: function(from, to, filter) {\n from = clipPos(this, from); to = clipPos(this, to);\n var found = [], lineNo = from.line;\n this.iter(from.line, to.line + 1, function (line) {\n var spans = line.markedSpans;\n if (spans) { for (var i = 0; i < spans.length; i++) {\n var span = spans[i];\n if (!(span.to != null && lineNo == from.line && from.ch >= span.to ||\n span.from == null && lineNo != from.line ||\n span.from != null && lineNo == to.line && span.from >= to.ch) &&\n (!filter || filter(span.marker)))\n { found.push(span.marker.parent || span.marker); }\n } }\n ++lineNo;\n });\n return found\n },\n getAllMarks: function() {\n var markers = [];\n this.iter(function (line) {\n var sps = line.markedSpans;\n if (sps) { for (var i = 0; i < sps.length; ++i)\n { if (sps[i].from != null) { markers.push(sps[i].marker); } } }\n });\n return markers\n },\n\n posFromIndex: function(off) {\n var ch, lineNo = this.first, sepSize = this.lineSeparator().length;\n this.iter(function (line) {\n var sz = line.text.length + sepSize;\n if (sz > off) { ch = off; return true }\n off -= sz;\n ++lineNo;\n });\n return clipPos(this, Pos(lineNo, ch))\n },\n indexFromPos: function (coords) {\n coords = clipPos(this, coords);\n var index = coords.ch;\n if (coords.line < this.first || coords.ch < 0) { return 0 }\n var sepSize = this.lineSeparator().length;\n this.iter(this.first, coords.line, function (line) { // iter aborts when callback returns a truthy value\n index += line.text.length + sepSize;\n });\n return index\n },\n\n copy: function(copyHistory) {\n var doc = new Doc(getLines(this, this.first, this.first + this.size),\n this.modeOption, this.first, this.lineSep, this.direction);\n doc.scrollTop = this.scrollTop; doc.scrollLeft = this.scrollLeft;\n doc.sel = this.sel;\n doc.extend = false;\n if (copyHistory) {\n doc.history.undoDepth = this.history.undoDepth;\n doc.setHistory(this.getHistory());\n }\n return doc\n },\n\n linkedDoc: function(options) {\n if (!options) { options = {}; }\n var from = this.first, to = this.first + this.size;\n if (options.from != null && options.from > from) { from = options.from; }\n if (options.to != null && options.to < to) { to = options.to; }\n var copy = new Doc(getLines(this, from, to), options.mode || this.modeOption, from, this.lineSep, this.direction);\n if (options.sharedHist) { copy.history = this.history\n ; }(this.linked || (this.linked = [])).push({doc: copy, sharedHist: options.sharedHist});\n copy.linked = [{doc: this, isParent: true, sharedHist: options.sharedHist}];\n copySharedMarkers(copy, findSharedMarkers(this));\n return copy\n },\n unlinkDoc: function(other) {\n if (other instanceof CodeMirror) { other = other.doc; }\n if (this.linked) { for (var i = 0; i < this.linked.length; ++i) {\n var link = this.linked[i];\n if (link.doc != other) { continue }\n this.linked.splice(i, 1);\n other.unlinkDoc(this);\n detachSharedMarkers(findSharedMarkers(this));\n break\n } }\n // If the histories were shared, split them again\n if (other.history == this.history) {\n var splitIds = [other.id];\n linkedDocs(other, function (doc) { return splitIds.push(doc.id); }, true);\n other.history = new History(null);\n other.history.done = copyHistoryArray(this.history.done, splitIds);\n other.history.undone = copyHistoryArray(this.history.undone, splitIds);\n }\n },\n iterLinkedDocs: function(f) {linkedDocs(this, f);},\n\n getMode: function() {return this.mode},\n getEditor: function() {return this.cm},\n\n splitLines: function(str) {\n if (this.lineSep) { return str.split(this.lineSep) }\n return splitLinesAuto(str)\n },\n lineSeparator: function() { return this.lineSep || \"\\n\" },\n\n setDirection: docMethodOp(function (dir) {\n if (dir != \"rtl\") { dir = \"ltr\"; }\n if (dir == this.direction) { return }\n this.direction = dir;\n this.iter(function (line) { return line.order = null; });\n if (this.cm) { directionChanged(this.cm); }\n })\n });\n\n // Public alias.\n Doc.prototype.eachLine = Doc.prototype.iter;\n\n // Kludge to work around strange IE behavior where it'll sometimes\n // re-fire a series of drag-related events right after the drop (#1551)\n var lastDrop = 0;\n\n function onDrop(e) {\n var cm = this;\n clearDragCursor(cm);\n if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e))\n { return }\n e_preventDefault(e);\n if (ie) { lastDrop = +new Date; }\n var pos = posFromMouse(cm, e, true), files = e.dataTransfer.files;\n if (!pos || cm.isReadOnly()) { return }\n // Might be a file drop, in which case we simply extract the text\n // and insert it.\n if (files && files.length && window.FileReader && window.File) {\n var n = files.length, text = Array(n), read = 0;\n var markAsReadAndPasteIfAllFilesAreRead = function () {\n if (++read == n) {\n operation(cm, function () {\n pos = clipPos(cm.doc, pos);\n var change = {from: pos, to: pos,\n text: cm.doc.splitLines(\n text.filter(function (t) { return t != null; }).join(cm.doc.lineSeparator())),\n origin: \"paste\"};\n makeChange(cm.doc, change);\n setSelectionReplaceHistory(cm.doc, simpleSelection(clipPos(cm.doc, pos), clipPos(cm.doc, changeEnd(change))));\n })();\n }\n };\n var readTextFromFile = function (file, i) {\n if (cm.options.allowDropFileTypes &&\n indexOf(cm.options.allowDropFileTypes, file.type) == -1) {\n markAsReadAndPasteIfAllFilesAreRead();\n return\n }\n var reader = new FileReader;\n reader.onerror = function () { return markAsReadAndPasteIfAllFilesAreRead(); };\n reader.onload = function () {\n var content = reader.result;\n if (/[\\x00-\\x08\\x0e-\\x1f]{2}/.test(content)) {\n markAsReadAndPasteIfAllFilesAreRead();\n return\n }\n text[i] = content;\n markAsReadAndPasteIfAllFilesAreRead();\n };\n reader.readAsText(file);\n };\n for (var i = 0; i < files.length; i++) { readTextFromFile(files[i], i); }\n } else { // Normal drop\n // Don't do a replace if the drop happened inside of the selected text.\n if (cm.state.draggingText && cm.doc.sel.contains(pos) > -1) {\n cm.state.draggingText(e);\n // Ensure the editor is re-focused\n setTimeout(function () { return cm.display.input.focus(); }, 20);\n return\n }\n try {\n var text$1 = e.dataTransfer.getData(\"Text\");\n if (text$1) {\n var selected;\n if (cm.state.draggingText && !cm.state.draggingText.copy)\n { selected = cm.listSelections(); }\n setSelectionNoUndo(cm.doc, simpleSelection(pos, pos));\n if (selected) { for (var i$1 = 0; i$1 < selected.length; ++i$1)\n { replaceRange(cm.doc, \"\", selected[i$1].anchor, selected[i$1].head, \"drag\"); } }\n cm.replaceSelection(text$1, \"around\", \"paste\");\n cm.display.input.focus();\n }\n }\n catch(e$1){}\n }\n }\n\n function onDragStart(cm, e) {\n if (ie && (!cm.state.draggingText || +new Date - lastDrop < 100)) { e_stop(e); return }\n if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e)) { return }\n\n e.dataTransfer.setData(\"Text\", cm.getSelection());\n e.dataTransfer.effectAllowed = \"copyMove\";\n\n // Use dummy image instead of default browsers image.\n // Recent Safari (~6.0.2) have a tendency to segfault when this happens, so we don't do it there.\n if (e.dataTransfer.setDragImage && !safari) {\n var img = elt(\"img\", null, null, \"position: fixed; left: 0; top: 0;\");\n img.src = \"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\";\n if (presto) {\n img.width = img.height = 1;\n cm.display.wrapper.appendChild(img);\n // Force a relayout, or Opera won't use our image for some obscure reason\n img._top = img.offsetTop;\n }\n e.dataTransfer.setDragImage(img, 0, 0);\n if (presto) { img.parentNode.removeChild(img); }\n }\n }\n\n function onDragOver(cm, e) {\n var pos = posFromMouse(cm, e);\n if (!pos) { return }\n var frag = document.createDocumentFragment();\n drawSelectionCursor(cm, pos, frag);\n if (!cm.display.dragCursor) {\n cm.display.dragCursor = elt(\"div\", null, \"CodeMirror-cursors CodeMirror-dragcursors\");\n cm.display.lineSpace.insertBefore(cm.display.dragCursor, cm.display.cursorDiv);\n }\n removeChildrenAndAdd(cm.display.dragCursor, frag);\n }\n\n function clearDragCursor(cm) {\n if (cm.display.dragCursor) {\n cm.display.lineSpace.removeChild(cm.display.dragCursor);\n cm.display.dragCursor = null;\n }\n }\n\n // These must be handled carefully, because naively registering a\n // handler for each editor will cause the editors to never be\n // garbage collected.\n\n function forEachCodeMirror(f) {\n if (!document.getElementsByClassName) { return }\n var byClass = document.getElementsByClassName(\"CodeMirror\"), editors = [];\n for (var i = 0; i < byClass.length; i++) {\n var cm = byClass[i].CodeMirror;\n if (cm) { editors.push(cm); }\n }\n if (editors.length) { editors[0].operation(function () {\n for (var i = 0; i < editors.length; i++) { f(editors[i]); }\n }); }\n }\n\n var globalsRegistered = false;\n function ensureGlobalHandlers() {\n if (globalsRegistered) { return }\n registerGlobalHandlers();\n globalsRegistered = true;\n }\n function registerGlobalHandlers() {\n // When the window resizes, we need to refresh active editors.\n var resizeTimer;\n on(window, \"resize\", function () {\n if (resizeTimer == null) { resizeTimer = setTimeout(function () {\n resizeTimer = null;\n forEachCodeMirror(onResize);\n }, 100); }\n });\n // When the window loses focus, we want to show the editor as blurred\n on(window, \"blur\", function () { return forEachCodeMirror(onBlur); });\n }\n // Called when the window resizes\n function onResize(cm) {\n var d = cm.display;\n // Might be a text scaling operation, clear size caches.\n d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null;\n d.scrollbarsClipped = false;\n cm.setSize();\n }\n\n var keyNames = {\n 3: \"Pause\", 8: \"Backspace\", 9: \"Tab\", 13: \"Enter\", 16: \"Shift\", 17: \"Ctrl\", 18: \"Alt\",\n 19: \"Pause\", 20: \"CapsLock\", 27: \"Esc\", 32: \"Space\", 33: \"PageUp\", 34: \"PageDown\", 35: \"End\",\n 36: \"Home\", 37: \"Left\", 38: \"Up\", 39: \"Right\", 40: \"Down\", 44: \"PrintScrn\", 45: \"Insert\",\n 46: \"Delete\", 59: \";\", 61: \"=\", 91: \"Mod\", 92: \"Mod\", 93: \"Mod\",\n 106: \"*\", 107: \"=\", 109: \"-\", 110: \".\", 111: \"/\", 145: \"ScrollLock\",\n 173: \"-\", 186: \";\", 187: \"=\", 188: \",\", 189: \"-\", 190: \".\", 191: \"/\", 192: \"`\", 219: \"[\", 220: \"\\\\\",\n 221: \"]\", 222: \"'\", 224: \"Mod\", 63232: \"Up\", 63233: \"Down\", 63234: \"Left\", 63235: \"Right\", 63272: \"Delete\",\n 63273: \"Home\", 63275: \"End\", 63276: \"PageUp\", 63277: \"PageDown\", 63302: \"Insert\"\n };\n\n // Number keys\n for (var i = 0; i < 10; i++) { keyNames[i + 48] = keyNames[i + 96] = String(i); }\n // Alphabetic keys\n for (var i$1 = 65; i$1 <= 90; i$1++) { keyNames[i$1] = String.fromCharCode(i$1); }\n // Function keys\n for (var i$2 = 1; i$2 <= 12; i$2++) { keyNames[i$2 + 111] = keyNames[i$2 + 63235] = \"F\" + i$2; }\n\n var keyMap = {};\n\n keyMap.basic = {\n \"Left\": \"goCharLeft\", \"Right\": \"goCharRight\", \"Up\": \"goLineUp\", \"Down\": \"goLineDown\",\n \"End\": \"goLineEnd\", \"Home\": \"goLineStartSmart\", \"PageUp\": \"goPageUp\", \"PageDown\": \"goPageDown\",\n \"Delete\": \"delCharAfter\", \"Backspace\": \"delCharBefore\", \"Shift-Backspace\": \"delCharBefore\",\n \"Tab\": \"defaultTab\", \"Shift-Tab\": \"indentAuto\",\n \"Enter\": \"newlineAndIndent\", \"Insert\": \"toggleOverwrite\",\n \"Esc\": \"singleSelection\"\n };\n // Note that the save and find-related commands aren't defined by\n // default. User code or addons can define them. Unknown commands\n // are simply ignored.\n keyMap.pcDefault = {\n \"Ctrl-A\": \"selectAll\", \"Ctrl-D\": \"deleteLine\", \"Ctrl-Z\": \"undo\", \"Shift-Ctrl-Z\": \"redo\", \"Ctrl-Y\": \"redo\",\n \"Ctrl-Home\": \"goDocStart\", \"Ctrl-End\": \"goDocEnd\", \"Ctrl-Up\": \"goLineUp\", \"Ctrl-Down\": \"goLineDown\",\n \"Ctrl-Left\": \"goGroupLeft\", \"Ctrl-Right\": \"goGroupRight\", \"Alt-Left\": \"goLineStart\", \"Alt-Right\": \"goLineEnd\",\n \"Ctrl-Backspace\": \"delGroupBefore\", \"Ctrl-Delete\": \"delGroupAfter\", \"Ctrl-S\": \"save\", \"Ctrl-F\": \"find\",\n \"Ctrl-G\": \"findNext\", \"Shift-Ctrl-G\": \"findPrev\", \"Shift-Ctrl-F\": \"replace\", \"Shift-Ctrl-R\": \"replaceAll\",\n \"Ctrl-[\": \"indentLess\", \"Ctrl-]\": \"indentMore\",\n \"Ctrl-U\": \"undoSelection\", \"Shift-Ctrl-U\": \"redoSelection\", \"Alt-U\": \"redoSelection\",\n \"fallthrough\": \"basic\"\n };\n // Very basic readline/emacs-style bindings, which are standard on Mac.\n keyMap.emacsy = {\n \"Ctrl-F\": \"goCharRight\", \"Ctrl-B\": \"goCharLeft\", \"Ctrl-P\": \"goLineUp\", \"Ctrl-N\": \"goLineDown\",\n \"Ctrl-A\": \"goLineStart\", \"Ctrl-E\": \"goLineEnd\", \"Ctrl-V\": \"goPageDown\", \"Shift-Ctrl-V\": \"goPageUp\",\n \"Ctrl-D\": \"delCharAfter\", \"Ctrl-H\": \"delCharBefore\", \"Alt-Backspace\": \"delWordBefore\", \"Ctrl-K\": \"killLine\",\n \"Ctrl-T\": \"transposeChars\", \"Ctrl-O\": \"openLine\"\n };\n keyMap.macDefault = {\n \"Cmd-A\": \"selectAll\", \"Cmd-D\": \"deleteLine\", \"Cmd-Z\": \"undo\", \"Shift-Cmd-Z\": \"redo\", \"Cmd-Y\": \"redo\",\n \"Cmd-Home\": \"goDocStart\", \"Cmd-Up\": \"goDocStart\", \"Cmd-End\": \"goDocEnd\", \"Cmd-Down\": \"goDocEnd\", \"Alt-Left\": \"goGroupLeft\",\n \"Alt-Right\": \"goGroupRight\", \"Cmd-Left\": \"goLineLeft\", \"Cmd-Right\": \"goLineRight\", \"Alt-Backspace\": \"delGroupBefore\",\n \"Ctrl-Alt-Backspace\": \"delGroupAfter\", \"Alt-Delete\": \"delGroupAfter\", \"Cmd-S\": \"save\", \"Cmd-F\": \"find\",\n \"Cmd-G\": \"findNext\", \"Shift-Cmd-G\": \"findPrev\", \"Cmd-Alt-F\": \"replace\", \"Shift-Cmd-Alt-F\": \"replaceAll\",\n \"Cmd-[\": \"indentLess\", \"Cmd-]\": \"indentMore\", \"Cmd-Backspace\": \"delWrappedLineLeft\", \"Cmd-Delete\": \"delWrappedLineRight\",\n \"Cmd-U\": \"undoSelection\", \"Shift-Cmd-U\": \"redoSelection\", \"Ctrl-Up\": \"goDocStart\", \"Ctrl-Down\": \"goDocEnd\",\n \"fallthrough\": [\"basic\", \"emacsy\"]\n };\n keyMap[\"default\"] = mac ? keyMap.macDefault : keyMap.pcDefault;\n\n // KEYMAP DISPATCH\n\n function normalizeKeyName(name) {\n var parts = name.split(/-(?!$)/);\n name = parts[parts.length - 1];\n var alt, ctrl, shift, cmd;\n for (var i = 0; i < parts.length - 1; i++) {\n var mod = parts[i];\n if (/^(cmd|meta|m)$/i.test(mod)) { cmd = true; }\n else if (/^a(lt)?$/i.test(mod)) { alt = true; }\n else if (/^(c|ctrl|control)$/i.test(mod)) { ctrl = true; }\n else if (/^s(hift)?$/i.test(mod)) { shift = true; }\n else { throw new Error(\"Unrecognized modifier name: \" + mod) }\n }\n if (alt) { name = \"Alt-\" + name; }\n if (ctrl) { name = \"Ctrl-\" + name; }\n if (cmd) { name = \"Cmd-\" + name; }\n if (shift) { name = \"Shift-\" + name; }\n return name\n }\n\n // This is a kludge to keep keymaps mostly working as raw objects\n // (backwards compatibility) while at the same time support features\n // like normalization and multi-stroke key bindings. It compiles a\n // new normalized keymap, and then updates the old object to reflect\n // this.\n function normalizeKeyMap(keymap) {\n var copy = {};\n for (var keyname in keymap) { if (keymap.hasOwnProperty(keyname)) {\n var value = keymap[keyname];\n if (/^(name|fallthrough|(de|at)tach)$/.test(keyname)) { continue }\n if (value == \"...\") { delete keymap[keyname]; continue }\n\n var keys = map(keyname.split(\" \"), normalizeKeyName);\n for (var i = 0; i < keys.length; i++) {\n var val = (void 0), name = (void 0);\n if (i == keys.length - 1) {\n name = keys.join(\" \");\n val = value;\n } else {\n name = keys.slice(0, i + 1).join(\" \");\n val = \"...\";\n }\n var prev = copy[name];\n if (!prev) { copy[name] = val; }\n else if (prev != val) { throw new Error(\"Inconsistent bindings for \" + name) }\n }\n delete keymap[keyname];\n } }\n for (var prop in copy) { keymap[prop] = copy[prop]; }\n return keymap\n }\n\n function lookupKey(key, map, handle, context) {\n map = getKeyMap(map);\n var found = map.call ? map.call(key, context) : map[key];\n if (found === false) { return \"nothing\" }\n if (found === \"...\") { return \"multi\" }\n if (found != null && handle(found)) { return \"handled\" }\n\n if (map.fallthrough) {\n if (Object.prototype.toString.call(map.fallthrough) != \"[object Array]\")\n { return lookupKey(key, map.fallthrough, handle, context) }\n for (var i = 0; i < map.fallthrough.length; i++) {\n var result = lookupKey(key, map.fallthrough[i], handle, context);\n if (result) { return result }\n }\n }\n }\n\n // Modifier key presses don't count as 'real' key presses for the\n // purpose of keymap fallthrough.\n function isModifierKey(value) {\n var name = typeof value == \"string\" ? value : keyNames[value.keyCode];\n return name == \"Ctrl\" || name == \"Alt\" || name == \"Shift\" || name == \"Mod\"\n }\n\n function addModifierNames(name, event, noShift) {\n var base = name;\n if (event.altKey && base != \"Alt\") { name = \"Alt-\" + name; }\n if ((flipCtrlCmd ? event.metaKey : event.ctrlKey) && base != \"Ctrl\") { name = \"Ctrl-\" + name; }\n if ((flipCtrlCmd ? event.ctrlKey : event.metaKey) && base != \"Mod\") { name = \"Cmd-\" + name; }\n if (!noShift && event.shiftKey && base != \"Shift\") { name = \"Shift-\" + name; }\n return name\n }\n\n // Look up the name of a key as indicated by an event object.\n function keyName(event, noShift) {\n if (presto && event.keyCode == 34 && event[\"char\"]) { return false }\n var name = keyNames[event.keyCode];\n if (name == null || event.altGraphKey) { return false }\n // Ctrl-ScrollLock has keyCode 3, same as Ctrl-Pause,\n // so we'll use event.code when available (Chrome 48+, FF 38+, Safari 10.1+)\n if (event.keyCode == 3 && event.code) { name = event.code; }\n return addModifierNames(name, event, noShift)\n }\n\n function getKeyMap(val) {\n return typeof val == \"string\" ? keyMap[val] : val\n }\n\n // Helper for deleting text near the selection(s), used to implement\n // backspace, delete, and similar functionality.\n function deleteNearSelection(cm, compute) {\n var ranges = cm.doc.sel.ranges, kill = [];\n // Build up a set of ranges to kill first, merging overlapping\n // ranges.\n for (var i = 0; i < ranges.length; i++) {\n var toKill = compute(ranges[i]);\n while (kill.length && cmp(toKill.from, lst(kill).to) <= 0) {\n var replaced = kill.pop();\n if (cmp(replaced.from, toKill.from) < 0) {\n toKill.from = replaced.from;\n break\n }\n }\n kill.push(toKill);\n }\n // Next, remove those actual ranges.\n runInOp(cm, function () {\n for (var i = kill.length - 1; i >= 0; i--)\n { replaceRange(cm.doc, \"\", kill[i].from, kill[i].to, \"+delete\"); }\n ensureCursorVisible(cm);\n });\n }\n\n function moveCharLogically(line, ch, dir) {\n var target = skipExtendingChars(line.text, ch + dir, dir);\n return target < 0 || target > line.text.length ? null : target\n }\n\n function moveLogically(line, start, dir) {\n var ch = moveCharLogically(line, start.ch, dir);\n return ch == null ? null : new Pos(start.line, ch, dir < 0 ? \"after\" : \"before\")\n }\n\n function endOfLine(visually, cm, lineObj, lineNo, dir) {\n if (visually) {\n if (cm.doc.direction == \"rtl\") { dir = -dir; }\n var order = getOrder(lineObj, cm.doc.direction);\n if (order) {\n var part = dir < 0 ? lst(order) : order[0];\n var moveInStorageOrder = (dir < 0) == (part.level == 1);\n var sticky = moveInStorageOrder ? \"after\" : \"before\";\n var ch;\n // With a wrapped rtl chunk (possibly spanning multiple bidi parts),\n // it could be that the last bidi part is not on the last visual line,\n // since visual lines contain content order-consecutive chunks.\n // Thus, in rtl, we are looking for the first (content-order) character\n // in the rtl chunk that is on the last line (that is, the same line\n // as the last (content-order) character).\n if (part.level > 0 || cm.doc.direction == \"rtl\") {\n var prep = prepareMeasureForLine(cm, lineObj);\n ch = dir < 0 ? lineObj.text.length - 1 : 0;\n var targetTop = measureCharPrepared(cm, prep, ch).top;\n ch = findFirst(function (ch) { return measureCharPrepared(cm, prep, ch).top == targetTop; }, (dir < 0) == (part.level == 1) ? part.from : part.to - 1, ch);\n if (sticky == \"before\") { ch = moveCharLogically(lineObj, ch, 1); }\n } else { ch = dir < 0 ? part.to : part.from; }\n return new Pos(lineNo, ch, sticky)\n }\n }\n return new Pos(lineNo, dir < 0 ? lineObj.text.length : 0, dir < 0 ? \"before\" : \"after\")\n }\n\n function moveVisually(cm, line, start, dir) {\n var bidi = getOrder(line, cm.doc.direction);\n if (!bidi) { return moveLogically(line, start, dir) }\n if (start.ch >= line.text.length) {\n start.ch = line.text.length;\n start.sticky = \"before\";\n } else if (start.ch <= 0) {\n start.ch = 0;\n start.sticky = \"after\";\n }\n var partPos = getBidiPartAt(bidi, start.ch, start.sticky), part = bidi[partPos];\n if (cm.doc.direction == \"ltr\" && part.level % 2 == 0 && (dir > 0 ? part.to > start.ch : part.from < start.ch)) {\n // Case 1: We move within an ltr part in an ltr editor. Even with wrapped lines,\n // nothing interesting happens.\n return moveLogically(line, start, dir)\n }\n\n var mv = function (pos, dir) { return moveCharLogically(line, pos instanceof Pos ? pos.ch : pos, dir); };\n var prep;\n var getWrappedLineExtent = function (ch) {\n if (!cm.options.lineWrapping) { return {begin: 0, end: line.text.length} }\n prep = prep || prepareMeasureForLine(cm, line);\n return wrappedLineExtentChar(cm, line, prep, ch)\n };\n var wrappedLineExtent = getWrappedLineExtent(start.sticky == \"before\" ? mv(start, -1) : start.ch);\n\n if (cm.doc.direction == \"rtl\" || part.level == 1) {\n var moveInStorageOrder = (part.level == 1) == (dir < 0);\n var ch = mv(start, moveInStorageOrder ? 1 : -1);\n if (ch != null && (!moveInStorageOrder ? ch >= part.from && ch >= wrappedLineExtent.begin : ch <= part.to && ch <= wrappedLineExtent.end)) {\n // Case 2: We move within an rtl part or in an rtl editor on the same visual line\n var sticky = moveInStorageOrder ? \"before\" : \"after\";\n return new Pos(start.line, ch, sticky)\n }\n }\n\n // Case 3: Could not move within this bidi part in this visual line, so leave\n // the current bidi part\n\n var searchInVisualLine = function (partPos, dir, wrappedLineExtent) {\n var getRes = function (ch, moveInStorageOrder) { return moveInStorageOrder\n ? new Pos(start.line, mv(ch, 1), \"before\")\n : new Pos(start.line, ch, \"after\"); };\n\n for (; partPos >= 0 && partPos < bidi.length; partPos += dir) {\n var part = bidi[partPos];\n var moveInStorageOrder = (dir > 0) == (part.level != 1);\n var ch = moveInStorageOrder ? wrappedLineExtent.begin : mv(wrappedLineExtent.end, -1);\n if (part.from <= ch && ch < part.to) { return getRes(ch, moveInStorageOrder) }\n ch = moveInStorageOrder ? part.from : mv(part.to, -1);\n if (wrappedLineExtent.begin <= ch && ch < wrappedLineExtent.end) { return getRes(ch, moveInStorageOrder) }\n }\n };\n\n // Case 3a: Look for other bidi parts on the same visual line\n var res = searchInVisualLine(partPos + dir, dir, wrappedLineExtent);\n if (res) { return res }\n\n // Case 3b: Look for other bidi parts on the next visual line\n var nextCh = dir > 0 ? wrappedLineExtent.end : mv(wrappedLineExtent.begin, -1);\n if (nextCh != null && !(dir > 0 && nextCh == line.text.length)) {\n res = searchInVisualLine(dir > 0 ? 0 : bidi.length - 1, dir, getWrappedLineExtent(nextCh));\n if (res) { return res }\n }\n\n // Case 4: Nowhere to move\n return null\n }\n\n // Commands are parameter-less actions that can be performed on an\n // editor, mostly used for keybindings.\n var commands = {\n selectAll: selectAll,\n singleSelection: function (cm) { return cm.setSelection(cm.getCursor(\"anchor\"), cm.getCursor(\"head\"), sel_dontScroll); },\n killLine: function (cm) { return deleteNearSelection(cm, function (range) {\n if (range.empty()) {\n var len = getLine(cm.doc, range.head.line).text.length;\n if (range.head.ch == len && range.head.line < cm.lastLine())\n { return {from: range.head, to: Pos(range.head.line + 1, 0)} }\n else\n { return {from: range.head, to: Pos(range.head.line, len)} }\n } else {\n return {from: range.from(), to: range.to()}\n }\n }); },\n deleteLine: function (cm) { return deleteNearSelection(cm, function (range) { return ({\n from: Pos(range.from().line, 0),\n to: clipPos(cm.doc, Pos(range.to().line + 1, 0))\n }); }); },\n delLineLeft: function (cm) { return deleteNearSelection(cm, function (range) { return ({\n from: Pos(range.from().line, 0), to: range.from()\n }); }); },\n delWrappedLineLeft: function (cm) { return deleteNearSelection(cm, function (range) {\n var top = cm.charCoords(range.head, \"div\").top + 5;\n var leftPos = cm.coordsChar({left: 0, top: top}, \"div\");\n return {from: leftPos, to: range.from()}\n }); },\n delWrappedLineRight: function (cm) { return deleteNearSelection(cm, function (range) {\n var top = cm.charCoords(range.head, \"div\").top + 5;\n var rightPos = cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100, top: top}, \"div\");\n return {from: range.from(), to: rightPos }\n }); },\n undo: function (cm) { return cm.undo(); },\n redo: function (cm) { return cm.redo(); },\n undoSelection: function (cm) { return cm.undoSelection(); },\n redoSelection: function (cm) { return cm.redoSelection(); },\n goDocStart: function (cm) { return cm.extendSelection(Pos(cm.firstLine(), 0)); },\n goDocEnd: function (cm) { return cm.extendSelection(Pos(cm.lastLine())); },\n goLineStart: function (cm) { return cm.extendSelectionsBy(function (range) { return lineStart(cm, range.head.line); },\n {origin: \"+move\", bias: 1}\n ); },\n goLineStartSmart: function (cm) { return cm.extendSelectionsBy(function (range) { return lineStartSmart(cm, range.head); },\n {origin: \"+move\", bias: 1}\n ); },\n goLineEnd: function (cm) { return cm.extendSelectionsBy(function (range) { return lineEnd(cm, range.head.line); },\n {origin: \"+move\", bias: -1}\n ); },\n goLineRight: function (cm) { return cm.extendSelectionsBy(function (range) {\n var top = cm.cursorCoords(range.head, \"div\").top + 5;\n return cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100, top: top}, \"div\")\n }, sel_move); },\n goLineLeft: function (cm) { return cm.extendSelectionsBy(function (range) {\n var top = cm.cursorCoords(range.head, \"div\").top + 5;\n return cm.coordsChar({left: 0, top: top}, \"div\")\n }, sel_move); },\n goLineLeftSmart: function (cm) { return cm.extendSelectionsBy(function (range) {\n var top = cm.cursorCoords(range.head, \"div\").top + 5;\n var pos = cm.coordsChar({left: 0, top: top}, \"div\");\n if (pos.ch < cm.getLine(pos.line).search(/\\S/)) { return lineStartSmart(cm, range.head) }\n return pos\n }, sel_move); },\n goLineUp: function (cm) { return cm.moveV(-1, \"line\"); },\n goLineDown: function (cm) { return cm.moveV(1, \"line\"); },\n goPageUp: function (cm) { return cm.moveV(-1, \"page\"); },\n goPageDown: function (cm) { return cm.moveV(1, \"page\"); },\n goCharLeft: function (cm) { return cm.moveH(-1, \"char\"); },\n goCharRight: function (cm) { return cm.moveH(1, \"char\"); },\n goColumnLeft: function (cm) { return cm.moveH(-1, \"column\"); },\n goColumnRight: function (cm) { return cm.moveH(1, \"column\"); },\n goWordLeft: function (cm) { return cm.moveH(-1, \"word\"); },\n goGroupRight: function (cm) { return cm.moveH(1, \"group\"); },\n goGroupLeft: function (cm) { return cm.moveH(-1, \"group\"); },\n goWordRight: function (cm) { return cm.moveH(1, \"word\"); },\n delCharBefore: function (cm) { return cm.deleteH(-1, \"codepoint\"); },\n delCharAfter: function (cm) { return cm.deleteH(1, \"char\"); },\n delWordBefore: function (cm) { return cm.deleteH(-1, \"word\"); },\n delWordAfter: function (cm) { return cm.deleteH(1, \"word\"); },\n delGroupBefore: function (cm) { return cm.deleteH(-1, \"group\"); },\n delGroupAfter: function (cm) { return cm.deleteH(1, \"group\"); },\n indentAuto: function (cm) { return cm.indentSelection(\"smart\"); },\n indentMore: function (cm) { return cm.indentSelection(\"add\"); },\n indentLess: function (cm) { return cm.indentSelection(\"subtract\"); },\n insertTab: function (cm) { return cm.replaceSelection(\"\\t\"); },\n insertSoftTab: function (cm) {\n var spaces = [], ranges = cm.listSelections(), tabSize = cm.options.tabSize;\n for (var i = 0; i < ranges.length; i++) {\n var pos = ranges[i].from();\n var col = countColumn(cm.getLine(pos.line), pos.ch, tabSize);\n spaces.push(spaceStr(tabSize - col % tabSize));\n }\n cm.replaceSelections(spaces);\n },\n defaultTab: function (cm) {\n if (cm.somethingSelected()) { cm.indentSelection(\"add\"); }\n else { cm.execCommand(\"insertTab\"); }\n },\n // Swap the two chars left and right of each selection's head.\n // Move cursor behind the two swapped characters afterwards.\n //\n // Doesn't consider line feeds a character.\n // Doesn't scan more than one line above to find a character.\n // Doesn't do anything on an empty line.\n // Doesn't do anything with non-empty selections.\n transposeChars: function (cm) { return runInOp(cm, function () {\n var ranges = cm.listSelections(), newSel = [];\n for (var i = 0; i < ranges.length; i++) {\n if (!ranges[i].empty()) { continue }\n var cur = ranges[i].head, line = getLine(cm.doc, cur.line).text;\n if (line) {\n if (cur.ch == line.length) { cur = new Pos(cur.line, cur.ch - 1); }\n if (cur.ch > 0) {\n cur = new Pos(cur.line, cur.ch + 1);\n cm.replaceRange(line.charAt(cur.ch - 1) + line.charAt(cur.ch - 2),\n Pos(cur.line, cur.ch - 2), cur, \"+transpose\");\n } else if (cur.line > cm.doc.first) {\n var prev = getLine(cm.doc, cur.line - 1).text;\n if (prev) {\n cur = new Pos(cur.line, 1);\n cm.replaceRange(line.charAt(0) + cm.doc.lineSeparator() +\n prev.charAt(prev.length - 1),\n Pos(cur.line - 1, prev.length - 1), cur, \"+transpose\");\n }\n }\n }\n newSel.push(new Range(cur, cur));\n }\n cm.setSelections(newSel);\n }); },\n newlineAndIndent: function (cm) { return runInOp(cm, function () {\n var sels = cm.listSelections();\n for (var i = sels.length - 1; i >= 0; i--)\n { cm.replaceRange(cm.doc.lineSeparator(), sels[i].anchor, sels[i].head, \"+input\"); }\n sels = cm.listSelections();\n for (var i$1 = 0; i$1 < sels.length; i$1++)\n { cm.indentLine(sels[i$1].from().line, null, true); }\n ensureCursorVisible(cm);\n }); },\n openLine: function (cm) { return cm.replaceSelection(\"\\n\", \"start\"); },\n toggleOverwrite: function (cm) { return cm.toggleOverwrite(); }\n };\n\n\n function lineStart(cm, lineN) {\n var line = getLine(cm.doc, lineN);\n var visual = visualLine(line);\n if (visual != line) { lineN = lineNo(visual); }\n return endOfLine(true, cm, visual, lineN, 1)\n }\n function lineEnd(cm, lineN) {\n var line = getLine(cm.doc, lineN);\n var visual = visualLineEnd(line);\n if (visual != line) { lineN = lineNo(visual); }\n return endOfLine(true, cm, line, lineN, -1)\n }\n function lineStartSmart(cm, pos) {\n var start = lineStart(cm, pos.line);\n var line = getLine(cm.doc, start.line);\n var order = getOrder(line, cm.doc.direction);\n if (!order || order[0].level == 0) {\n var firstNonWS = Math.max(start.ch, line.text.search(/\\S/));\n var inWS = pos.line == start.line && pos.ch <= firstNonWS && pos.ch;\n return Pos(start.line, inWS ? 0 : firstNonWS, start.sticky)\n }\n return start\n }\n\n // Run a handler that was bound to a key.\n function doHandleBinding(cm, bound, dropShift) {\n if (typeof bound == \"string\") {\n bound = commands[bound];\n if (!bound) { return false }\n }\n // Ensure previous input has been read, so that the handler sees a\n // consistent view of the document\n cm.display.input.ensurePolled();\n var prevShift = cm.display.shift, done = false;\n try {\n if (cm.isReadOnly()) { cm.state.suppressEdits = true; }\n if (dropShift) { cm.display.shift = false; }\n done = bound(cm) != Pass;\n } finally {\n cm.display.shift = prevShift;\n cm.state.suppressEdits = false;\n }\n return done\n }\n\n function lookupKeyForEditor(cm, name, handle) {\n for (var i = 0; i < cm.state.keyMaps.length; i++) {\n var result = lookupKey(name, cm.state.keyMaps[i], handle, cm);\n if (result) { return result }\n }\n return (cm.options.extraKeys && lookupKey(name, cm.options.extraKeys, handle, cm))\n || lookupKey(name, cm.options.keyMap, handle, cm)\n }\n\n // Note that, despite the name, this function is also used to check\n // for bound mouse clicks.\n\n var stopSeq = new Delayed;\n\n function dispatchKey(cm, name, e, handle) {\n var seq = cm.state.keySeq;\n if (seq) {\n if (isModifierKey(name)) { return \"handled\" }\n if (/\\'$/.test(name))\n { cm.state.keySeq = null; }\n else\n { stopSeq.set(50, function () {\n if (cm.state.keySeq == seq) {\n cm.state.keySeq = null;\n cm.display.input.reset();\n }\n }); }\n if (dispatchKeyInner(cm, seq + \" \" + name, e, handle)) { return true }\n }\n return dispatchKeyInner(cm, name, e, handle)\n }\n\n function dispatchKeyInner(cm, name, e, handle) {\n var result = lookupKeyForEditor(cm, name, handle);\n\n if (result == \"multi\")\n { cm.state.keySeq = name; }\n if (result == \"handled\")\n { signalLater(cm, \"keyHandled\", cm, name, e); }\n\n if (result == \"handled\" || result == \"multi\") {\n e_preventDefault(e);\n restartBlink(cm);\n }\n\n return !!result\n }\n\n // Handle a key from the keydown event.\n function handleKeyBinding(cm, e) {\n var name = keyName(e, true);\n if (!name) { return false }\n\n if (e.shiftKey && !cm.state.keySeq) {\n // First try to resolve full name (including 'Shift-'). Failing\n // that, see if there is a cursor-motion command (starting with\n // 'go') bound to the keyname without 'Shift-'.\n return dispatchKey(cm, \"Shift-\" + name, e, function (b) { return doHandleBinding(cm, b, true); })\n || dispatchKey(cm, name, e, function (b) {\n if (typeof b == \"string\" ? /^go[A-Z]/.test(b) : b.motion)\n { return doHandleBinding(cm, b) }\n })\n } else {\n return dispatchKey(cm, name, e, function (b) { return doHandleBinding(cm, b); })\n }\n }\n\n // Handle a key from the keypress event\n function handleCharBinding(cm, e, ch) {\n return dispatchKey(cm, \"'\" + ch + \"'\", e, function (b) { return doHandleBinding(cm, b, true); })\n }\n\n var lastStoppedKey = null;\n function onKeyDown(e) {\n var cm = this;\n if (e.target && e.target != cm.display.input.getField()) { return }\n cm.curOp.focus = activeElt();\n if (signalDOMEvent(cm, e)) { return }\n // IE does strange things with escape.\n if (ie && ie_version < 11 && e.keyCode == 27) { e.returnValue = false; }\n var code = e.keyCode;\n cm.display.shift = code == 16 || e.shiftKey;\n var handled = handleKeyBinding(cm, e);\n if (presto) {\n lastStoppedKey = handled ? code : null;\n // Opera has no cut event... we try to at least catch the key combo\n if (!handled && code == 88 && !hasCopyEvent && (mac ? e.metaKey : e.ctrlKey))\n { cm.replaceSelection(\"\", null, \"cut\"); }\n }\n if (gecko && !mac && !handled && code == 46 && e.shiftKey && !e.ctrlKey && document.execCommand)\n { document.execCommand(\"cut\"); }\n\n // Turn mouse into crosshair when Alt is held on Mac.\n if (code == 18 && !/\\bCodeMirror-crosshair\\b/.test(cm.display.lineDiv.className))\n { showCrossHair(cm); }\n }\n\n function showCrossHair(cm) {\n var lineDiv = cm.display.lineDiv;\n addClass(lineDiv, \"CodeMirror-crosshair\");\n\n function up(e) {\n if (e.keyCode == 18 || !e.altKey) {\n rmClass(lineDiv, \"CodeMirror-crosshair\");\n off(document, \"keyup\", up);\n off(document, \"mouseover\", up);\n }\n }\n on(document, \"keyup\", up);\n on(document, \"mouseover\", up);\n }\n\n function onKeyUp(e) {\n if (e.keyCode == 16) { this.doc.sel.shift = false; }\n signalDOMEvent(this, e);\n }\n\n function onKeyPress(e) {\n var cm = this;\n if (e.target && e.target != cm.display.input.getField()) { return }\n if (eventInWidget(cm.display, e) || signalDOMEvent(cm, e) || e.ctrlKey && !e.altKey || mac && e.metaKey) { return }\n var keyCode = e.keyCode, charCode = e.charCode;\n if (presto && keyCode == lastStoppedKey) {lastStoppedKey = null; e_preventDefault(e); return}\n if ((presto && (!e.which || e.which < 10)) && handleKeyBinding(cm, e)) { return }\n var ch = String.fromCharCode(charCode == null ? keyCode : charCode);\n // Some browsers fire keypress events for backspace\n if (ch == \"\\x08\") { return }\n if (handleCharBinding(cm, e, ch)) { return }\n cm.display.input.onKeyPress(e);\n }\n\n var DOUBLECLICK_DELAY = 400;\n\n var PastClick = function(time, pos, button) {\n this.time = time;\n this.pos = pos;\n this.button = button;\n };\n\n PastClick.prototype.compare = function (time, pos, button) {\n return this.time + DOUBLECLICK_DELAY > time &&\n cmp(pos, this.pos) == 0 && button == this.button\n };\n\n var lastClick, lastDoubleClick;\n function clickRepeat(pos, button) {\n var now = +new Date;\n if (lastDoubleClick && lastDoubleClick.compare(now, pos, button)) {\n lastClick = lastDoubleClick = null;\n return \"triple\"\n } else if (lastClick && lastClick.compare(now, pos, button)) {\n lastDoubleClick = new PastClick(now, pos, button);\n lastClick = null;\n return \"double\"\n } else {\n lastClick = new PastClick(now, pos, button);\n lastDoubleClick = null;\n return \"single\"\n }\n }\n\n // A mouse down can be a single click, double click, triple click,\n // start of selection drag, start of text drag, new cursor\n // (ctrl-click), rectangle drag (alt-drag), or xwin\n // middle-click-paste. Or it might be a click on something we should\n // not interfere with, such as a scrollbar or widget.\n function onMouseDown(e) {\n var cm = this, display = cm.display;\n if (signalDOMEvent(cm, e) || display.activeTouch && display.input.supportsTouch()) { return }\n display.input.ensurePolled();\n display.shift = e.shiftKey;\n\n if (eventInWidget(display, e)) {\n if (!webkit) {\n // Briefly turn off draggability, to allow widgets to do\n // normal dragging things.\n display.scroller.draggable = false;\n setTimeout(function () { return display.scroller.draggable = true; }, 100);\n }\n return\n }\n if (clickInGutter(cm, e)) { return }\n var pos = posFromMouse(cm, e), button = e_button(e), repeat = pos ? clickRepeat(pos, button) : \"single\";\n window.focus();\n\n // #3261: make sure, that we're not starting a second selection\n if (button == 1 && cm.state.selectingText)\n { cm.state.selectingText(e); }\n\n if (pos && handleMappedButton(cm, button, pos, repeat, e)) { return }\n\n if (button == 1) {\n if (pos) { leftButtonDown(cm, pos, repeat, e); }\n else if (e_target(e) == display.scroller) { e_preventDefault(e); }\n } else if (button == 2) {\n if (pos) { extendSelection(cm.doc, pos); }\n setTimeout(function () { return display.input.focus(); }, 20);\n } else if (button == 3) {\n if (captureRightClick) { cm.display.input.onContextMenu(e); }\n else { delayBlurEvent(cm); }\n }\n }\n\n function handleMappedButton(cm, button, pos, repeat, event) {\n var name = \"Click\";\n if (repeat == \"double\") { name = \"Double\" + name; }\n else if (repeat == \"triple\") { name = \"Triple\" + name; }\n name = (button == 1 ? \"Left\" : button == 2 ? \"Middle\" : \"Right\") + name;\n\n return dispatchKey(cm, addModifierNames(name, event), event, function (bound) {\n if (typeof bound == \"string\") { bound = commands[bound]; }\n if (!bound) { return false }\n var done = false;\n try {\n if (cm.isReadOnly()) { cm.state.suppressEdits = true; }\n done = bound(cm, pos) != Pass;\n } finally {\n cm.state.suppressEdits = false;\n }\n return done\n })\n }\n\n function configureMouse(cm, repeat, event) {\n var option = cm.getOption(\"configureMouse\");\n var value = option ? option(cm, repeat, event) : {};\n if (value.unit == null) {\n var rect = chromeOS ? event.shiftKey && event.metaKey : event.altKey;\n value.unit = rect ? \"rectangle\" : repeat == \"single\" ? \"char\" : repeat == \"double\" ? \"word\" : \"line\";\n }\n if (value.extend == null || cm.doc.extend) { value.extend = cm.doc.extend || event.shiftKey; }\n if (value.addNew == null) { value.addNew = mac ? event.metaKey : event.ctrlKey; }\n if (value.moveOnDrag == null) { value.moveOnDrag = !(mac ? event.altKey : event.ctrlKey); }\n return value\n }\n\n function leftButtonDown(cm, pos, repeat, event) {\n if (ie) { setTimeout(bind(ensureFocus, cm), 0); }\n else { cm.curOp.focus = activeElt(); }\n\n var behavior = configureMouse(cm, repeat, event);\n\n var sel = cm.doc.sel, contained;\n if (cm.options.dragDrop && dragAndDrop && !cm.isReadOnly() &&\n repeat == \"single\" && (contained = sel.contains(pos)) > -1 &&\n (cmp((contained = sel.ranges[contained]).from(), pos) < 0 || pos.xRel > 0) &&\n (cmp(contained.to(), pos) > 0 || pos.xRel < 0))\n { leftButtonStartDrag(cm, event, pos, behavior); }\n else\n { leftButtonSelect(cm, event, pos, behavior); }\n }\n\n // Start a text drag. When it ends, see if any dragging actually\n // happen, and treat as a click if it didn't.\n function leftButtonStartDrag(cm, event, pos, behavior) {\n var display = cm.display, moved = false;\n var dragEnd = operation(cm, function (e) {\n if (webkit) { display.scroller.draggable = false; }\n cm.state.draggingText = false;\n if (cm.state.delayingBlurEvent) {\n if (cm.hasFocus()) { cm.state.delayingBlurEvent = false; }\n else { delayBlurEvent(cm); }\n }\n off(display.wrapper.ownerDocument, \"mouseup\", dragEnd);\n off(display.wrapper.ownerDocument, \"mousemove\", mouseMove);\n off(display.scroller, \"dragstart\", dragStart);\n off(display.scroller, \"drop\", dragEnd);\n if (!moved) {\n e_preventDefault(e);\n if (!behavior.addNew)\n { extendSelection(cm.doc, pos, null, null, behavior.extend); }\n // Work around unexplainable focus problem in IE9 (#2127) and Chrome (#3081)\n if ((webkit && !safari) || ie && ie_version == 9)\n { setTimeout(function () {display.wrapper.ownerDocument.body.focus({preventScroll: true}); display.input.focus();}, 20); }\n else\n { display.input.focus(); }\n }\n });\n var mouseMove = function(e2) {\n moved = moved || Math.abs(event.clientX - e2.clientX) + Math.abs(event.clientY - e2.clientY) >= 10;\n };\n var dragStart = function () { return moved = true; };\n // Let the drag handler handle this.\n if (webkit) { display.scroller.draggable = true; }\n cm.state.draggingText = dragEnd;\n dragEnd.copy = !behavior.moveOnDrag;\n on(display.wrapper.ownerDocument, \"mouseup\", dragEnd);\n on(display.wrapper.ownerDocument, \"mousemove\", mouseMove);\n on(display.scroller, \"dragstart\", dragStart);\n on(display.scroller, \"drop\", dragEnd);\n\n cm.state.delayingBlurEvent = true;\n setTimeout(function () { return display.input.focus(); }, 20);\n // IE's approach to draggable\n if (display.scroller.dragDrop) { display.scroller.dragDrop(); }\n }\n\n function rangeForUnit(cm, pos, unit) {\n if (unit == \"char\") { return new Range(pos, pos) }\n if (unit == \"word\") { return cm.findWordAt(pos) }\n if (unit == \"line\") { return new Range(Pos(pos.line, 0), clipPos(cm.doc, Pos(pos.line + 1, 0))) }\n var result = unit(cm, pos);\n return new Range(result.from, result.to)\n }\n\n // Normal selection, as opposed to text dragging.\n function leftButtonSelect(cm, event, start, behavior) {\n if (ie) { delayBlurEvent(cm); }\n var display = cm.display, doc = cm.doc;\n e_preventDefault(event);\n\n var ourRange, ourIndex, startSel = doc.sel, ranges = startSel.ranges;\n if (behavior.addNew && !behavior.extend) {\n ourIndex = doc.sel.contains(start);\n if (ourIndex > -1)\n { ourRange = ranges[ourIndex]; }\n else\n { ourRange = new Range(start, start); }\n } else {\n ourRange = doc.sel.primary();\n ourIndex = doc.sel.primIndex;\n }\n\n if (behavior.unit == \"rectangle\") {\n if (!behavior.addNew) { ourRange = new Range(start, start); }\n start = posFromMouse(cm, event, true, true);\n ourIndex = -1;\n } else {\n var range = rangeForUnit(cm, start, behavior.unit);\n if (behavior.extend)\n { ourRange = extendRange(ourRange, range.anchor, range.head, behavior.extend); }\n else\n { ourRange = range; }\n }\n\n if (!behavior.addNew) {\n ourIndex = 0;\n setSelection(doc, new Selection([ourRange], 0), sel_mouse);\n startSel = doc.sel;\n } else if (ourIndex == -1) {\n ourIndex = ranges.length;\n setSelection(doc, normalizeSelection(cm, ranges.concat([ourRange]), ourIndex),\n {scroll: false, origin: \"*mouse\"});\n } else if (ranges.length > 1 && ranges[ourIndex].empty() && behavior.unit == \"char\" && !behavior.extend) {\n setSelection(doc, normalizeSelection(cm, ranges.slice(0, ourIndex).concat(ranges.slice(ourIndex + 1)), 0),\n {scroll: false, origin: \"*mouse\"});\n startSel = doc.sel;\n } else {\n replaceOneSelection(doc, ourIndex, ourRange, sel_mouse);\n }\n\n var lastPos = start;\n function extendTo(pos) {\n if (cmp(lastPos, pos) == 0) { return }\n lastPos = pos;\n\n if (behavior.unit == \"rectangle\") {\n var ranges = [], tabSize = cm.options.tabSize;\n var startCol = countColumn(getLine(doc, start.line).text, start.ch, tabSize);\n var posCol = countColumn(getLine(doc, pos.line).text, pos.ch, tabSize);\n var left = Math.min(startCol, posCol), right = Math.max(startCol, posCol);\n for (var line = Math.min(start.line, pos.line), end = Math.min(cm.lastLine(), Math.max(start.line, pos.line));\n line <= end; line++) {\n var text = getLine(doc, line).text, leftPos = findColumn(text, left, tabSize);\n if (left == right)\n { ranges.push(new Range(Pos(line, leftPos), Pos(line, leftPos))); }\n else if (text.length > leftPos)\n { ranges.push(new Range(Pos(line, leftPos), Pos(line, findColumn(text, right, tabSize)))); }\n }\n if (!ranges.length) { ranges.push(new Range(start, start)); }\n setSelection(doc, normalizeSelection(cm, startSel.ranges.slice(0, ourIndex).concat(ranges), ourIndex),\n {origin: \"*mouse\", scroll: false});\n cm.scrollIntoView(pos);\n } else {\n var oldRange = ourRange;\n var range = rangeForUnit(cm, pos, behavior.unit);\n var anchor = oldRange.anchor, head;\n if (cmp(range.anchor, anchor) > 0) {\n head = range.head;\n anchor = minPos(oldRange.from(), range.anchor);\n } else {\n head = range.anchor;\n anchor = maxPos(oldRange.to(), range.head);\n }\n var ranges$1 = startSel.ranges.slice(0);\n ranges$1[ourIndex] = bidiSimplify(cm, new Range(clipPos(doc, anchor), head));\n setSelection(doc, normalizeSelection(cm, ranges$1, ourIndex), sel_mouse);\n }\n }\n\n var editorSize = display.wrapper.getBoundingClientRect();\n // Used to ensure timeout re-tries don't fire when another extend\n // happened in the meantime (clearTimeout isn't reliable -- at\n // least on Chrome, the timeouts still happen even when cleared,\n // if the clear happens after their scheduled firing time).\n var counter = 0;\n\n function extend(e) {\n var curCount = ++counter;\n var cur = posFromMouse(cm, e, true, behavior.unit == \"rectangle\");\n if (!cur) { return }\n if (cmp(cur, lastPos) != 0) {\n cm.curOp.focus = activeElt();\n extendTo(cur);\n var visible = visibleLines(display, doc);\n if (cur.line >= visible.to || cur.line < visible.from)\n { setTimeout(operation(cm, function () {if (counter == curCount) { extend(e); }}), 150); }\n } else {\n var outside = e.clientY < editorSize.top ? -20 : e.clientY > editorSize.bottom ? 20 : 0;\n if (outside) { setTimeout(operation(cm, function () {\n if (counter != curCount) { return }\n display.scroller.scrollTop += outside;\n extend(e);\n }), 50); }\n }\n }\n\n function done(e) {\n cm.state.selectingText = false;\n counter = Infinity;\n // If e is null or undefined we interpret this as someone trying\n // to explicitly cancel the selection rather than the user\n // letting go of the mouse button.\n if (e) {\n e_preventDefault(e);\n display.input.focus();\n }\n off(display.wrapper.ownerDocument, \"mousemove\", move);\n off(display.wrapper.ownerDocument, \"mouseup\", up);\n doc.history.lastSelOrigin = null;\n }\n\n var move = operation(cm, function (e) {\n if (e.buttons === 0 || !e_button(e)) { done(e); }\n else { extend(e); }\n });\n var up = operation(cm, done);\n cm.state.selectingText = up;\n on(display.wrapper.ownerDocument, \"mousemove\", move);\n on(display.wrapper.ownerDocument, \"mouseup\", up);\n }\n\n // Used when mouse-selecting to adjust the anchor to the proper side\n // of a bidi jump depending on the visual position of the head.\n function bidiSimplify(cm, range) {\n var anchor = range.anchor;\n var head = range.head;\n var anchorLine = getLine(cm.doc, anchor.line);\n if (cmp(anchor, head) == 0 && anchor.sticky == head.sticky) { return range }\n var order = getOrder(anchorLine);\n if (!order) { return range }\n var index = getBidiPartAt(order, anchor.ch, anchor.sticky), part = order[index];\n if (part.from != anchor.ch && part.to != anchor.ch) { return range }\n var boundary = index + ((part.from == anchor.ch) == (part.level != 1) ? 0 : 1);\n if (boundary == 0 || boundary == order.length) { return range }\n\n // Compute the relative visual position of the head compared to the\n // anchor (<0 is to the left, >0 to the right)\n var leftSide;\n if (head.line != anchor.line) {\n leftSide = (head.line - anchor.line) * (cm.doc.direction == \"ltr\" ? 1 : -1) > 0;\n } else {\n var headIndex = getBidiPartAt(order, head.ch, head.sticky);\n var dir = headIndex - index || (head.ch - anchor.ch) * (part.level == 1 ? -1 : 1);\n if (headIndex == boundary - 1 || headIndex == boundary)\n { leftSide = dir < 0; }\n else\n { leftSide = dir > 0; }\n }\n\n var usePart = order[boundary + (leftSide ? -1 : 0)];\n var from = leftSide == (usePart.level == 1);\n var ch = from ? usePart.from : usePart.to, sticky = from ? \"after\" : \"before\";\n return anchor.ch == ch && anchor.sticky == sticky ? range : new Range(new Pos(anchor.line, ch, sticky), head)\n }\n\n\n // Determines whether an event happened in the gutter, and fires the\n // handlers for the corresponding event.\n function gutterEvent(cm, e, type, prevent) {\n var mX, mY;\n if (e.touches) {\n mX = e.touches[0].clientX;\n mY = e.touches[0].clientY;\n } else {\n try { mX = e.clientX; mY = e.clientY; }\n catch(e$1) { return false }\n }\n if (mX >= Math.floor(cm.display.gutters.getBoundingClientRect().right)) { return false }\n if (prevent) { e_preventDefault(e); }\n\n var display = cm.display;\n var lineBox = display.lineDiv.getBoundingClientRect();\n\n if (mY > lineBox.bottom || !hasHandler(cm, type)) { return e_defaultPrevented(e) }\n mY -= lineBox.top - display.viewOffset;\n\n for (var i = 0; i < cm.display.gutterSpecs.length; ++i) {\n var g = display.gutters.childNodes[i];\n if (g && g.getBoundingClientRect().right >= mX) {\n var line = lineAtHeight(cm.doc, mY);\n var gutter = cm.display.gutterSpecs[i];\n signal(cm, type, cm, line, gutter.className, e);\n return e_defaultPrevented(e)\n }\n }\n }\n\n function clickInGutter(cm, e) {\n return gutterEvent(cm, e, \"gutterClick\", true)\n }\n\n // CONTEXT MENU HANDLING\n\n // To make the context menu work, we need to briefly unhide the\n // textarea (making it as unobtrusive as possible) to let the\n // right-click take effect on it.\n function onContextMenu(cm, e) {\n if (eventInWidget(cm.display, e) || contextMenuInGutter(cm, e)) { return }\n if (signalDOMEvent(cm, e, \"contextmenu\")) { return }\n if (!captureRightClick) { cm.display.input.onContextMenu(e); }\n }\n\n function contextMenuInGutter(cm, e) {\n if (!hasHandler(cm, \"gutterContextMenu\")) { return false }\n return gutterEvent(cm, e, \"gutterContextMenu\", false)\n }\n\n function themeChanged(cm) {\n cm.display.wrapper.className = cm.display.wrapper.className.replace(/\\s*cm-s-\\S+/g, \"\") +\n cm.options.theme.replace(/(^|\\s)\\s*/g, \" cm-s-\");\n clearCaches(cm);\n }\n\n var Init = {toString: function(){return \"CodeMirror.Init\"}};\n\n var defaults = {};\n var optionHandlers = {};\n\n function defineOptions(CodeMirror) {\n var optionHandlers = CodeMirror.optionHandlers;\n\n function option(name, deflt, handle, notOnInit) {\n CodeMirror.defaults[name] = deflt;\n if (handle) { optionHandlers[name] =\n notOnInit ? function (cm, val, old) {if (old != Init) { handle(cm, val, old); }} : handle; }\n }\n\n CodeMirror.defineOption = option;\n\n // Passed to option handlers when there is no old value.\n CodeMirror.Init = Init;\n\n // These two are, on init, called from the constructor because they\n // have to be initialized before the editor can start at all.\n option(\"value\", \"\", function (cm, val) { return cm.setValue(val); }, true);\n option(\"mode\", null, function (cm, val) {\n cm.doc.modeOption = val;\n loadMode(cm);\n }, true);\n\n option(\"indentUnit\", 2, loadMode, true);\n option(\"indentWithTabs\", false);\n option(\"smartIndent\", true);\n option(\"tabSize\", 4, function (cm) {\n resetModeState(cm);\n clearCaches(cm);\n regChange(cm);\n }, true);\n\n option(\"lineSeparator\", null, function (cm, val) {\n cm.doc.lineSep = val;\n if (!val) { return }\n var newBreaks = [], lineNo = cm.doc.first;\n cm.doc.iter(function (line) {\n for (var pos = 0;;) {\n var found = line.text.indexOf(val, pos);\n if (found == -1) { break }\n pos = found + val.length;\n newBreaks.push(Pos(lineNo, found));\n }\n lineNo++;\n });\n for (var i = newBreaks.length - 1; i >= 0; i--)\n { replaceRange(cm.doc, val, newBreaks[i], Pos(newBreaks[i].line, newBreaks[i].ch + val.length)); }\n });\n option(\"specialChars\", /[\\u0000-\\u001f\\u007f-\\u009f\\u00ad\\u061c\\u200b\\u200e\\u200f\\u2028\\u2029\\ufeff\\ufff9-\\ufffc]/g, function (cm, val, old) {\n cm.state.specialChars = new RegExp(val.source + (val.test(\"\\t\") ? \"\" : \"|\\t\"), \"g\");\n if (old != Init) { cm.refresh(); }\n });\n option(\"specialCharPlaceholder\", defaultSpecialCharPlaceholder, function (cm) { return cm.refresh(); }, true);\n option(\"electricChars\", true);\n option(\"inputStyle\", mobile ? \"contenteditable\" : \"textarea\", function () {\n throw new Error(\"inputStyle can not (yet) be changed in a running editor\") // FIXME\n }, true);\n option(\"spellcheck\", false, function (cm, val) { return cm.getInputField().spellcheck = val; }, true);\n option(\"autocorrect\", false, function (cm, val) { return cm.getInputField().autocorrect = val; }, true);\n option(\"autocapitalize\", false, function (cm, val) { return cm.getInputField().autocapitalize = val; }, true);\n option(\"rtlMoveVisually\", !windows);\n option(\"wholeLineUpdateBefore\", true);\n\n option(\"theme\", \"default\", function (cm) {\n themeChanged(cm);\n updateGutters(cm);\n }, true);\n option(\"keyMap\", \"default\", function (cm, val, old) {\n var next = getKeyMap(val);\n var prev = old != Init && getKeyMap(old);\n if (prev && prev.detach) { prev.detach(cm, next); }\n if (next.attach) { next.attach(cm, prev || null); }\n });\n option(\"extraKeys\", null);\n option(\"configureMouse\", null);\n\n option(\"lineWrapping\", false, wrappingChanged, true);\n option(\"gutters\", [], function (cm, val) {\n cm.display.gutterSpecs = getGutters(val, cm.options.lineNumbers);\n updateGutters(cm);\n }, true);\n option(\"fixedGutter\", true, function (cm, val) {\n cm.display.gutters.style.left = val ? compensateForHScroll(cm.display) + \"px\" : \"0\";\n cm.refresh();\n }, true);\n option(\"coverGutterNextToScrollbar\", false, function (cm) { return updateScrollbars(cm); }, true);\n option(\"scrollbarStyle\", \"native\", function (cm) {\n initScrollbars(cm);\n updateScrollbars(cm);\n cm.display.scrollbars.setScrollTop(cm.doc.scrollTop);\n cm.display.scrollbars.setScrollLeft(cm.doc.scrollLeft);\n }, true);\n option(\"lineNumbers\", false, function (cm, val) {\n cm.display.gutterSpecs = getGutters(cm.options.gutters, val);\n updateGutters(cm);\n }, true);\n option(\"firstLineNumber\", 1, updateGutters, true);\n option(\"lineNumberFormatter\", function (integer) { return integer; }, updateGutters, true);\n option(\"showCursorWhenSelecting\", false, updateSelection, true);\n\n option(\"resetSelectionOnContextMenu\", true);\n option(\"lineWiseCopyCut\", true);\n option(\"pasteLinesPerSelection\", true);\n option(\"selectionsMayTouch\", false);\n\n option(\"readOnly\", false, function (cm, val) {\n if (val == \"nocursor\") {\n onBlur(cm);\n cm.display.input.blur();\n }\n cm.display.input.readOnlyChanged(val);\n });\n\n option(\"screenReaderLabel\", null, function (cm, val) {\n val = (val === '') ? null : val;\n cm.display.input.screenReaderLabelChanged(val);\n });\n\n option(\"disableInput\", false, function (cm, val) {if (!val) { cm.display.input.reset(); }}, true);\n option(\"dragDrop\", true, dragDropChanged);\n option(\"allowDropFileTypes\", null);\n\n option(\"cursorBlinkRate\", 530);\n option(\"cursorScrollMargin\", 0);\n option(\"cursorHeight\", 1, updateSelection, true);\n option(\"singleCursorHeightPerLine\", true, updateSelection, true);\n option(\"workTime\", 100);\n option(\"workDelay\", 100);\n option(\"flattenSpans\", true, resetModeState, true);\n option(\"addModeClass\", false, resetModeState, true);\n option(\"pollInterval\", 100);\n option(\"undoDepth\", 200, function (cm, val) { return cm.doc.history.undoDepth = val; });\n option(\"historyEventDelay\", 1250);\n option(\"viewportMargin\", 10, function (cm) { return cm.refresh(); }, true);\n option(\"maxHighlightLength\", 10000, resetModeState, true);\n option(\"moveInputWithCursor\", true, function (cm, val) {\n if (!val) { cm.display.input.resetPosition(); }\n });\n\n option(\"tabindex\", null, function (cm, val) { return cm.display.input.getField().tabIndex = val || \"\"; });\n option(\"autofocus\", null);\n option(\"direction\", \"ltr\", function (cm, val) { return cm.doc.setDirection(val); }, true);\n option(\"phrases\", null);\n }\n\n function dragDropChanged(cm, value, old) {\n var wasOn = old && old != Init;\n if (!value != !wasOn) {\n var funcs = cm.display.dragFunctions;\n var toggle = value ? on : off;\n toggle(cm.display.scroller, \"dragstart\", funcs.start);\n toggle(cm.display.scroller, \"dragenter\", funcs.enter);\n toggle(cm.display.scroller, \"dragover\", funcs.over);\n toggle(cm.display.scroller, \"dragleave\", funcs.leave);\n toggle(cm.display.scroller, \"drop\", funcs.drop);\n }\n }\n\n function wrappingChanged(cm) {\n if (cm.options.lineWrapping) {\n addClass(cm.display.wrapper, \"CodeMirror-wrap\");\n cm.display.sizer.style.minWidth = \"\";\n cm.display.sizerWidth = null;\n } else {\n rmClass(cm.display.wrapper, \"CodeMirror-wrap\");\n findMaxLine(cm);\n }\n estimateLineHeights(cm);\n regChange(cm);\n clearCaches(cm);\n setTimeout(function () { return updateScrollbars(cm); }, 100);\n }\n\n // A CodeMirror instance represents an editor. This is the object\n // that user code is usually dealing with.\n\n function CodeMirror(place, options) {\n var this$1 = this;\n\n if (!(this instanceof CodeMirror)) { return new CodeMirror(place, options) }\n\n this.options = options = options ? copyObj(options) : {};\n // Determine effective options based on given values and defaults.\n copyObj(defaults, options, false);\n\n var doc = options.value;\n if (typeof doc == \"string\") { doc = new Doc(doc, options.mode, null, options.lineSeparator, options.direction); }\n else if (options.mode) { doc.modeOption = options.mode; }\n this.doc = doc;\n\n var input = new CodeMirror.inputStyles[options.inputStyle](this);\n var display = this.display = new Display(place, doc, input, options);\n display.wrapper.CodeMirror = this;\n themeChanged(this);\n if (options.lineWrapping)\n { this.display.wrapper.className += \" CodeMirror-wrap\"; }\n initScrollbars(this);\n\n this.state = {\n keyMaps: [], // stores maps added by addKeyMap\n overlays: [], // highlighting overlays, as added by addOverlay\n modeGen: 0, // bumped when mode/overlay changes, used to invalidate highlighting info\n overwrite: false,\n delayingBlurEvent: false,\n focused: false,\n suppressEdits: false, // used to disable editing during key handlers when in readOnly mode\n pasteIncoming: -1, cutIncoming: -1, // help recognize paste/cut edits in input.poll\n selectingText: false,\n draggingText: false,\n highlight: new Delayed(), // stores highlight worker timeout\n keySeq: null, // Unfinished key sequence\n specialChars: null\n };\n\n if (options.autofocus && !mobile) { display.input.focus(); }\n\n // Override magic textarea content restore that IE sometimes does\n // on our hidden textarea on reload\n if (ie && ie_version < 11) { setTimeout(function () { return this$1.display.input.reset(true); }, 20); }\n\n registerEventHandlers(this);\n ensureGlobalHandlers();\n\n startOperation(this);\n this.curOp.forceUpdate = true;\n attachDoc(this, doc);\n\n if ((options.autofocus && !mobile) || this.hasFocus())\n { setTimeout(function () {\n if (this$1.hasFocus() && !this$1.state.focused) { onFocus(this$1); }\n }, 20); }\n else\n { onBlur(this); }\n\n for (var opt in optionHandlers) { if (optionHandlers.hasOwnProperty(opt))\n { optionHandlers[opt](this, options[opt], Init); } }\n maybeUpdateLineNumberWidth(this);\n if (options.finishInit) { options.finishInit(this); }\n for (var i = 0; i < initHooks.length; ++i) { initHooks[i](this); }\n endOperation(this);\n // Suppress optimizelegibility in Webkit, since it breaks text\n // measuring on line wrapping boundaries.\n if (webkit && options.lineWrapping &&\n getComputedStyle(display.lineDiv).textRendering == \"optimizelegibility\")\n { display.lineDiv.style.textRendering = \"auto\"; }\n }\n\n // The default configuration options.\n CodeMirror.defaults = defaults;\n // Functions to run when options are changed.\n CodeMirror.optionHandlers = optionHandlers;\n\n // Attach the necessary event handlers when initializing the editor\n function registerEventHandlers(cm) {\n var d = cm.display;\n on(d.scroller, \"mousedown\", operation(cm, onMouseDown));\n // Older IE's will not fire a second mousedown for a double click\n if (ie && ie_version < 11)\n { on(d.scroller, \"dblclick\", operation(cm, function (e) {\n if (signalDOMEvent(cm, e)) { return }\n var pos = posFromMouse(cm, e);\n if (!pos || clickInGutter(cm, e) || eventInWidget(cm.display, e)) { return }\n e_preventDefault(e);\n var word = cm.findWordAt(pos);\n extendSelection(cm.doc, word.anchor, word.head);\n })); }\n else\n { on(d.scroller, \"dblclick\", function (e) { return signalDOMEvent(cm, e) || e_preventDefault(e); }); }\n // Some browsers fire contextmenu *after* opening the menu, at\n // which point we can't mess with it anymore. Context menu is\n // handled in onMouseDown for these browsers.\n on(d.scroller, \"contextmenu\", function (e) { return onContextMenu(cm, e); });\n on(d.input.getField(), \"contextmenu\", function (e) {\n if (!d.scroller.contains(e.target)) { onContextMenu(cm, e); }\n });\n\n // Used to suppress mouse event handling when a touch happens\n var touchFinished, prevTouch = {end: 0};\n function finishTouch() {\n if (d.activeTouch) {\n touchFinished = setTimeout(function () { return d.activeTouch = null; }, 1000);\n prevTouch = d.activeTouch;\n prevTouch.end = +new Date;\n }\n }\n function isMouseLikeTouchEvent(e) {\n if (e.touches.length != 1) { return false }\n var touch = e.touches[0];\n return touch.radiusX <= 1 && touch.radiusY <= 1\n }\n function farAway(touch, other) {\n if (other.left == null) { return true }\n var dx = other.left - touch.left, dy = other.top - touch.top;\n return dx * dx + dy * dy > 20 * 20\n }\n on(d.scroller, \"touchstart\", function (e) {\n if (!signalDOMEvent(cm, e) && !isMouseLikeTouchEvent(e) && !clickInGutter(cm, e)) {\n d.input.ensurePolled();\n clearTimeout(touchFinished);\n var now = +new Date;\n d.activeTouch = {start: now, moved: false,\n prev: now - prevTouch.end <= 300 ? prevTouch : null};\n if (e.touches.length == 1) {\n d.activeTouch.left = e.touches[0].pageX;\n d.activeTouch.top = e.touches[0].pageY;\n }\n }\n });\n on(d.scroller, \"touchmove\", function () {\n if (d.activeTouch) { d.activeTouch.moved = true; }\n });\n on(d.scroller, \"touchend\", function (e) {\n var touch = d.activeTouch;\n if (touch && !eventInWidget(d, e) && touch.left != null &&\n !touch.moved && new Date - touch.start < 300) {\n var pos = cm.coordsChar(d.activeTouch, \"page\"), range;\n if (!touch.prev || farAway(touch, touch.prev)) // Single tap\n { range = new Range(pos, pos); }\n else if (!touch.prev.prev || farAway(touch, touch.prev.prev)) // Double tap\n { range = cm.findWordAt(pos); }\n else // Triple tap\n { range = new Range(Pos(pos.line, 0), clipPos(cm.doc, Pos(pos.line + 1, 0))); }\n cm.setSelection(range.anchor, range.head);\n cm.focus();\n e_preventDefault(e);\n }\n finishTouch();\n });\n on(d.scroller, \"touchcancel\", finishTouch);\n\n // Sync scrolling between fake scrollbars and real scrollable\n // area, ensure viewport is updated when scrolling.\n on(d.scroller, \"scroll\", function () {\n if (d.scroller.clientHeight) {\n updateScrollTop(cm, d.scroller.scrollTop);\n setScrollLeft(cm, d.scroller.scrollLeft, true);\n signal(cm, \"scroll\", cm);\n }\n });\n\n // Listen to wheel events in order to try and update the viewport on time.\n on(d.scroller, \"mousewheel\", function (e) { return onScrollWheel(cm, e); });\n on(d.scroller, \"DOMMouseScroll\", function (e) { return onScrollWheel(cm, e); });\n\n // Prevent wrapper from ever scrolling\n on(d.wrapper, \"scroll\", function () { return d.wrapper.scrollTop = d.wrapper.scrollLeft = 0; });\n\n d.dragFunctions = {\n enter: function (e) {if (!signalDOMEvent(cm, e)) { e_stop(e); }},\n over: function (e) {if (!signalDOMEvent(cm, e)) { onDragOver(cm, e); e_stop(e); }},\n start: function (e) { return onDragStart(cm, e); },\n drop: operation(cm, onDrop),\n leave: function (e) {if (!signalDOMEvent(cm, e)) { clearDragCursor(cm); }}\n };\n\n var inp = d.input.getField();\n on(inp, \"keyup\", function (e) { return onKeyUp.call(cm, e); });\n on(inp, \"keydown\", operation(cm, onKeyDown));\n on(inp, \"keypress\", operation(cm, onKeyPress));\n on(inp, \"focus\", function (e) { return onFocus(cm, e); });\n on(inp, \"blur\", function (e) { return onBlur(cm, e); });\n }\n\n var initHooks = [];\n CodeMirror.defineInitHook = function (f) { return initHooks.push(f); };\n\n // Indent the given line. The how parameter can be \"smart\",\n // \"add\"/null, \"subtract\", or \"prev\". When aggressive is false\n // (typically set to true for forced single-line indents), empty\n // lines are not indented, and places where the mode returns Pass\n // are left alone.\n function indentLine(cm, n, how, aggressive) {\n var doc = cm.doc, state;\n if (how == null) { how = \"add\"; }\n if (how == \"smart\") {\n // Fall back to \"prev\" when the mode doesn't have an indentation\n // method.\n if (!doc.mode.indent) { how = \"prev\"; }\n else { state = getContextBefore(cm, n).state; }\n }\n\n var tabSize = cm.options.tabSize;\n var line = getLine(doc, n), curSpace = countColumn(line.text, null, tabSize);\n if (line.stateAfter) { line.stateAfter = null; }\n var curSpaceString = line.text.match(/^\\s*/)[0], indentation;\n if (!aggressive && !/\\S/.test(line.text)) {\n indentation = 0;\n how = \"not\";\n } else if (how == \"smart\") {\n indentation = doc.mode.indent(state, line.text.slice(curSpaceString.length), line.text);\n if (indentation == Pass || indentation > 150) {\n if (!aggressive) { return }\n how = \"prev\";\n }\n }\n if (how == \"prev\") {\n if (n > doc.first) { indentation = countColumn(getLine(doc, n-1).text, null, tabSize); }\n else { indentation = 0; }\n } else if (how == \"add\") {\n indentation = curSpace + cm.options.indentUnit;\n } else if (how == \"subtract\") {\n indentation = curSpace - cm.options.indentUnit;\n } else if (typeof how == \"number\") {\n indentation = curSpace + how;\n }\n indentation = Math.max(0, indentation);\n\n var indentString = \"\", pos = 0;\n if (cm.options.indentWithTabs)\n { for (var i = Math.floor(indentation / tabSize); i; --i) {pos += tabSize; indentString += \"\\t\";} }\n if (pos < indentation) { indentString += spaceStr(indentation - pos); }\n\n if (indentString != curSpaceString) {\n replaceRange(doc, indentString, Pos(n, 0), Pos(n, curSpaceString.length), \"+input\");\n line.stateAfter = null;\n return true\n } else {\n // Ensure that, if the cursor was in the whitespace at the start\n // of the line, it is moved to the end of that space.\n for (var i$1 = 0; i$1 < doc.sel.ranges.length; i$1++) {\n var range = doc.sel.ranges[i$1];\n if (range.head.line == n && range.head.ch < curSpaceString.length) {\n var pos$1 = Pos(n, curSpaceString.length);\n replaceOneSelection(doc, i$1, new Range(pos$1, pos$1));\n break\n }\n }\n }\n }\n\n // This will be set to a {lineWise: bool, text: [string]} object, so\n // that, when pasting, we know what kind of selections the copied\n // text was made out of.\n var lastCopied = null;\n\n function setLastCopied(newLastCopied) {\n lastCopied = newLastCopied;\n }\n\n function applyTextInput(cm, inserted, deleted, sel, origin) {\n var doc = cm.doc;\n cm.display.shift = false;\n if (!sel) { sel = doc.sel; }\n\n var recent = +new Date - 200;\n var paste = origin == \"paste\" || cm.state.pasteIncoming > recent;\n var textLines = splitLinesAuto(inserted), multiPaste = null;\n // When pasting N lines into N selections, insert one line per selection\n if (paste && sel.ranges.length > 1) {\n if (lastCopied && lastCopied.text.join(\"\\n\") == inserted) {\n if (sel.ranges.length % lastCopied.text.length == 0) {\n multiPaste = [];\n for (var i = 0; i < lastCopied.text.length; i++)\n { multiPaste.push(doc.splitLines(lastCopied.text[i])); }\n }\n } else if (textLines.length == sel.ranges.length && cm.options.pasteLinesPerSelection) {\n multiPaste = map(textLines, function (l) { return [l]; });\n }\n }\n\n var updateInput = cm.curOp.updateInput;\n // Normal behavior is to insert the new text into every selection\n for (var i$1 = sel.ranges.length - 1; i$1 >= 0; i$1--) {\n var range = sel.ranges[i$1];\n var from = range.from(), to = range.to();\n if (range.empty()) {\n if (deleted && deleted > 0) // Handle deletion\n { from = Pos(from.line, from.ch - deleted); }\n else if (cm.state.overwrite && !paste) // Handle overwrite\n { to = Pos(to.line, Math.min(getLine(doc, to.line).text.length, to.ch + lst(textLines).length)); }\n else if (paste && lastCopied && lastCopied.lineWise && lastCopied.text.join(\"\\n\") == textLines.join(\"\\n\"))\n { from = to = Pos(from.line, 0); }\n }\n var changeEvent = {from: from, to: to, text: multiPaste ? multiPaste[i$1 % multiPaste.length] : textLines,\n origin: origin || (paste ? \"paste\" : cm.state.cutIncoming > recent ? \"cut\" : \"+input\")};\n makeChange(cm.doc, changeEvent);\n signalLater(cm, \"inputRead\", cm, changeEvent);\n }\n if (inserted && !paste)\n { triggerElectric(cm, inserted); }\n\n ensureCursorVisible(cm);\n if (cm.curOp.updateInput < 2) { cm.curOp.updateInput = updateInput; }\n cm.curOp.typing = true;\n cm.state.pasteIncoming = cm.state.cutIncoming = -1;\n }\n\n function handlePaste(e, cm) {\n var pasted = e.clipboardData && e.clipboardData.getData(\"Text\");\n if (pasted) {\n e.preventDefault();\n if (!cm.isReadOnly() && !cm.options.disableInput)\n { runInOp(cm, function () { return applyTextInput(cm, pasted, 0, null, \"paste\"); }); }\n return true\n }\n }\n\n function triggerElectric(cm, inserted) {\n // When an 'electric' character is inserted, immediately trigger a reindent\n if (!cm.options.electricChars || !cm.options.smartIndent) { return }\n var sel = cm.doc.sel;\n\n for (var i = sel.ranges.length - 1; i >= 0; i--) {\n var range = sel.ranges[i];\n if (range.head.ch > 100 || (i && sel.ranges[i - 1].head.line == range.head.line)) { continue }\n var mode = cm.getModeAt(range.head);\n var indented = false;\n if (mode.electricChars) {\n for (var j = 0; j < mode.electricChars.length; j++)\n { if (inserted.indexOf(mode.electricChars.charAt(j)) > -1) {\n indented = indentLine(cm, range.head.line, \"smart\");\n break\n } }\n } else if (mode.electricInput) {\n if (mode.electricInput.test(getLine(cm.doc, range.head.line).text.slice(0, range.head.ch)))\n { indented = indentLine(cm, range.head.line, \"smart\"); }\n }\n if (indented) { signalLater(cm, \"electricInput\", cm, range.head.line); }\n }\n }\n\n function copyableRanges(cm) {\n var text = [], ranges = [];\n for (var i = 0; i < cm.doc.sel.ranges.length; i++) {\n var line = cm.doc.sel.ranges[i].head.line;\n var lineRange = {anchor: Pos(line, 0), head: Pos(line + 1, 0)};\n ranges.push(lineRange);\n text.push(cm.getRange(lineRange.anchor, lineRange.head));\n }\n return {text: text, ranges: ranges}\n }\n\n function disableBrowserMagic(field, spellcheck, autocorrect, autocapitalize) {\n field.setAttribute(\"autocorrect\", autocorrect ? \"\" : \"off\");\n field.setAttribute(\"autocapitalize\", autocapitalize ? \"\" : \"off\");\n field.setAttribute(\"spellcheck\", !!spellcheck);\n }\n\n function hiddenTextarea() {\n var te = elt(\"textarea\", null, null, \"position: absolute; bottom: -1em; padding: 0; width: 1px; height: 1em; outline: none\");\n var div = elt(\"div\", [te], null, \"overflow: hidden; position: relative; width: 3px; height: 0px;\");\n // The textarea is kept positioned near the cursor to prevent the\n // fact that it'll be scrolled into view on input from scrolling\n // our fake cursor out of view. On webkit, when wrap=off, paste is\n // very slow. So make the area wide instead.\n if (webkit) { te.style.width = \"1000px\"; }\n else { te.setAttribute(\"wrap\", \"off\"); }\n // If border: 0; -- iOS fails to open keyboard (issue #1287)\n if (ios) { te.style.border = \"1px solid black\"; }\n disableBrowserMagic(te);\n return div\n }\n\n // The publicly visible API. Note that methodOp(f) means\n // 'wrap f in an operation, performed on its `this` parameter'.\n\n // This is not the complete set of editor methods. Most of the\n // methods defined on the Doc type are also injected into\n // CodeMirror.prototype, for backwards compatibility and\n // convenience.\n\n function addEditorMethods(CodeMirror) {\n var optionHandlers = CodeMirror.optionHandlers;\n\n var helpers = CodeMirror.helpers = {};\n\n CodeMirror.prototype = {\n constructor: CodeMirror,\n focus: function(){window.focus(); this.display.input.focus();},\n\n setOption: function(option, value) {\n var options = this.options, old = options[option];\n if (options[option] == value && option != \"mode\") { return }\n options[option] = value;\n if (optionHandlers.hasOwnProperty(option))\n { operation(this, optionHandlers[option])(this, value, old); }\n signal(this, \"optionChange\", this, option);\n },\n\n getOption: function(option) {return this.options[option]},\n getDoc: function() {return this.doc},\n\n addKeyMap: function(map, bottom) {\n this.state.keyMaps[bottom ? \"push\" : \"unshift\"](getKeyMap(map));\n },\n removeKeyMap: function(map) {\n var maps = this.state.keyMaps;\n for (var i = 0; i < maps.length; ++i)\n { if (maps[i] == map || maps[i].name == map) {\n maps.splice(i, 1);\n return true\n } }\n },\n\n addOverlay: methodOp(function(spec, options) {\n var mode = spec.token ? spec : CodeMirror.getMode(this.options, spec);\n if (mode.startState) { throw new Error(\"Overlays may not be stateful.\") }\n insertSorted(this.state.overlays,\n {mode: mode, modeSpec: spec, opaque: options && options.opaque,\n priority: (options && options.priority) || 0},\n function (overlay) { return overlay.priority; });\n this.state.modeGen++;\n regChange(this);\n }),\n removeOverlay: methodOp(function(spec) {\n var overlays = this.state.overlays;\n for (var i = 0; i < overlays.length; ++i) {\n var cur = overlays[i].modeSpec;\n if (cur == spec || typeof spec == \"string\" && cur.name == spec) {\n overlays.splice(i, 1);\n this.state.modeGen++;\n regChange(this);\n return\n }\n }\n }),\n\n indentLine: methodOp(function(n, dir, aggressive) {\n if (typeof dir != \"string\" && typeof dir != \"number\") {\n if (dir == null) { dir = this.options.smartIndent ? \"smart\" : \"prev\"; }\n else { dir = dir ? \"add\" : \"subtract\"; }\n }\n if (isLine(this.doc, n)) { indentLine(this, n, dir, aggressive); }\n }),\n indentSelection: methodOp(function(how) {\n var ranges = this.doc.sel.ranges, end = -1;\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i];\n if (!range.empty()) {\n var from = range.from(), to = range.to();\n var start = Math.max(end, from.line);\n end = Math.min(this.lastLine(), to.line - (to.ch ? 0 : 1)) + 1;\n for (var j = start; j < end; ++j)\n { indentLine(this, j, how); }\n var newRanges = this.doc.sel.ranges;\n if (from.ch == 0 && ranges.length == newRanges.length && newRanges[i].from().ch > 0)\n { replaceOneSelection(this.doc, i, new Range(from, newRanges[i].to()), sel_dontScroll); }\n } else if (range.head.line > end) {\n indentLine(this, range.head.line, how, true);\n end = range.head.line;\n if (i == this.doc.sel.primIndex) { ensureCursorVisible(this); }\n }\n }\n }),\n\n // Fetch the parser token for a given character. Useful for hacks\n // that want to inspect the mode state (say, for completion).\n getTokenAt: function(pos, precise) {\n return takeToken(this, pos, precise)\n },\n\n getLineTokens: function(line, precise) {\n return takeToken(this, Pos(line), precise, true)\n },\n\n getTokenTypeAt: function(pos) {\n pos = clipPos(this.doc, pos);\n var styles = getLineStyles(this, getLine(this.doc, pos.line));\n var before = 0, after = (styles.length - 1) / 2, ch = pos.ch;\n var type;\n if (ch == 0) { type = styles[2]; }\n else { for (;;) {\n var mid = (before + after) >> 1;\n if ((mid ? styles[mid * 2 - 1] : 0) >= ch) { after = mid; }\n else if (styles[mid * 2 + 1] < ch) { before = mid + 1; }\n else { type = styles[mid * 2 + 2]; break }\n } }\n var cut = type ? type.indexOf(\"overlay \") : -1;\n return cut < 0 ? type : cut == 0 ? null : type.slice(0, cut - 1)\n },\n\n getModeAt: function(pos) {\n var mode = this.doc.mode;\n if (!mode.innerMode) { return mode }\n return CodeMirror.innerMode(mode, this.getTokenAt(pos).state).mode\n },\n\n getHelper: function(pos, type) {\n return this.getHelpers(pos, type)[0]\n },\n\n getHelpers: function(pos, type) {\n var found = [];\n if (!helpers.hasOwnProperty(type)) { return found }\n var help = helpers[type], mode = this.getModeAt(pos);\n if (typeof mode[type] == \"string\") {\n if (help[mode[type]]) { found.push(help[mode[type]]); }\n } else if (mode[type]) {\n for (var i = 0; i < mode[type].length; i++) {\n var val = help[mode[type][i]];\n if (val) { found.push(val); }\n }\n } else if (mode.helperType && help[mode.helperType]) {\n found.push(help[mode.helperType]);\n } else if (help[mode.name]) {\n found.push(help[mode.name]);\n }\n for (var i$1 = 0; i$1 < help._global.length; i$1++) {\n var cur = help._global[i$1];\n if (cur.pred(mode, this) && indexOf(found, cur.val) == -1)\n { found.push(cur.val); }\n }\n return found\n },\n\n getStateAfter: function(line, precise) {\n var doc = this.doc;\n line = clipLine(doc, line == null ? doc.first + doc.size - 1: line);\n return getContextBefore(this, line + 1, precise).state\n },\n\n cursorCoords: function(start, mode) {\n var pos, range = this.doc.sel.primary();\n if (start == null) { pos = range.head; }\n else if (typeof start == \"object\") { pos = clipPos(this.doc, start); }\n else { pos = start ? range.from() : range.to(); }\n return cursorCoords(this, pos, mode || \"page\")\n },\n\n charCoords: function(pos, mode) {\n return charCoords(this, clipPos(this.doc, pos), mode || \"page\")\n },\n\n coordsChar: function(coords, mode) {\n coords = fromCoordSystem(this, coords, mode || \"page\");\n return coordsChar(this, coords.left, coords.top)\n },\n\n lineAtHeight: function(height, mode) {\n height = fromCoordSystem(this, {top: height, left: 0}, mode || \"page\").top;\n return lineAtHeight(this.doc, height + this.display.viewOffset)\n },\n heightAtLine: function(line, mode, includeWidgets) {\n var end = false, lineObj;\n if (typeof line == \"number\") {\n var last = this.doc.first + this.doc.size - 1;\n if (line < this.doc.first) { line = this.doc.first; }\n else if (line > last) { line = last; end = true; }\n lineObj = getLine(this.doc, line);\n } else {\n lineObj = line;\n }\n return intoCoordSystem(this, lineObj, {top: 0, left: 0}, mode || \"page\", includeWidgets || end).top +\n (end ? this.doc.height - heightAtLine(lineObj) : 0)\n },\n\n defaultTextHeight: function() { return textHeight(this.display) },\n defaultCharWidth: function() { return charWidth(this.display) },\n\n getViewport: function() { return {from: this.display.viewFrom, to: this.display.viewTo}},\n\n addWidget: function(pos, node, scroll, vert, horiz) {\n var display = this.display;\n pos = cursorCoords(this, clipPos(this.doc, pos));\n var top = pos.bottom, left = pos.left;\n node.style.position = \"absolute\";\n node.setAttribute(\"cm-ignore-events\", \"true\");\n this.display.input.setUneditable(node);\n display.sizer.appendChild(node);\n if (vert == \"over\") {\n top = pos.top;\n } else if (vert == \"above\" || vert == \"near\") {\n var vspace = Math.max(display.wrapper.clientHeight, this.doc.height),\n hspace = Math.max(display.sizer.clientWidth, display.lineSpace.clientWidth);\n // Default to positioning above (if specified and possible); otherwise default to positioning below\n if ((vert == 'above' || pos.bottom + node.offsetHeight > vspace) && pos.top > node.offsetHeight)\n { top = pos.top - node.offsetHeight; }\n else if (pos.bottom + node.offsetHeight <= vspace)\n { top = pos.bottom; }\n if (left + node.offsetWidth > hspace)\n { left = hspace - node.offsetWidth; }\n }\n node.style.top = top + \"px\";\n node.style.left = node.style.right = \"\";\n if (horiz == \"right\") {\n left = display.sizer.clientWidth - node.offsetWidth;\n node.style.right = \"0px\";\n } else {\n if (horiz == \"left\") { left = 0; }\n else if (horiz == \"middle\") { left = (display.sizer.clientWidth - node.offsetWidth) / 2; }\n node.style.left = left + \"px\";\n }\n if (scroll)\n { scrollIntoView(this, {left: left, top: top, right: left + node.offsetWidth, bottom: top + node.offsetHeight}); }\n },\n\n triggerOnKeyDown: methodOp(onKeyDown),\n triggerOnKeyPress: methodOp(onKeyPress),\n triggerOnKeyUp: onKeyUp,\n triggerOnMouseDown: methodOp(onMouseDown),\n\n execCommand: function(cmd) {\n if (commands.hasOwnProperty(cmd))\n { return commands[cmd].call(null, this) }\n },\n\n triggerElectric: methodOp(function(text) { triggerElectric(this, text); }),\n\n findPosH: function(from, amount, unit, visually) {\n var dir = 1;\n if (amount < 0) { dir = -1; amount = -amount; }\n var cur = clipPos(this.doc, from);\n for (var i = 0; i < amount; ++i) {\n cur = findPosH(this.doc, cur, dir, unit, visually);\n if (cur.hitSide) { break }\n }\n return cur\n },\n\n moveH: methodOp(function(dir, unit) {\n var this$1 = this;\n\n this.extendSelectionsBy(function (range) {\n if (this$1.display.shift || this$1.doc.extend || range.empty())\n { return findPosH(this$1.doc, range.head, dir, unit, this$1.options.rtlMoveVisually) }\n else\n { return dir < 0 ? range.from() : range.to() }\n }, sel_move);\n }),\n\n deleteH: methodOp(function(dir, unit) {\n var sel = this.doc.sel, doc = this.doc;\n if (sel.somethingSelected())\n { doc.replaceSelection(\"\", null, \"+delete\"); }\n else\n { deleteNearSelection(this, function (range) {\n var other = findPosH(doc, range.head, dir, unit, false);\n return dir < 0 ? {from: other, to: range.head} : {from: range.head, to: other}\n }); }\n }),\n\n findPosV: function(from, amount, unit, goalColumn) {\n var dir = 1, x = goalColumn;\n if (amount < 0) { dir = -1; amount = -amount; }\n var cur = clipPos(this.doc, from);\n for (var i = 0; i < amount; ++i) {\n var coords = cursorCoords(this, cur, \"div\");\n if (x == null) { x = coords.left; }\n else { coords.left = x; }\n cur = findPosV(this, coords, dir, unit);\n if (cur.hitSide) { break }\n }\n return cur\n },\n\n moveV: methodOp(function(dir, unit) {\n var this$1 = this;\n\n var doc = this.doc, goals = [];\n var collapse = !this.display.shift && !doc.extend && doc.sel.somethingSelected();\n doc.extendSelectionsBy(function (range) {\n if (collapse)\n { return dir < 0 ? range.from() : range.to() }\n var headPos = cursorCoords(this$1, range.head, \"div\");\n if (range.goalColumn != null) { headPos.left = range.goalColumn; }\n goals.push(headPos.left);\n var pos = findPosV(this$1, headPos, dir, unit);\n if (unit == \"page\" && range == doc.sel.primary())\n { addToScrollTop(this$1, charCoords(this$1, pos, \"div\").top - headPos.top); }\n return pos\n }, sel_move);\n if (goals.length) { for (var i = 0; i < doc.sel.ranges.length; i++)\n { doc.sel.ranges[i].goalColumn = goals[i]; } }\n }),\n\n // Find the word at the given position (as returned by coordsChar).\n findWordAt: function(pos) {\n var doc = this.doc, line = getLine(doc, pos.line).text;\n var start = pos.ch, end = pos.ch;\n if (line) {\n var helper = this.getHelper(pos, \"wordChars\");\n if ((pos.sticky == \"before\" || end == line.length) && start) { --start; } else { ++end; }\n var startChar = line.charAt(start);\n var check = isWordChar(startChar, helper)\n ? function (ch) { return isWordChar(ch, helper); }\n : /\\s/.test(startChar) ? function (ch) { return /\\s/.test(ch); }\n : function (ch) { return (!/\\s/.test(ch) && !isWordChar(ch)); };\n while (start > 0 && check(line.charAt(start - 1))) { --start; }\n while (end < line.length && check(line.charAt(end))) { ++end; }\n }\n return new Range(Pos(pos.line, start), Pos(pos.line, end))\n },\n\n toggleOverwrite: function(value) {\n if (value != null && value == this.state.overwrite) { return }\n if (this.state.overwrite = !this.state.overwrite)\n { addClass(this.display.cursorDiv, \"CodeMirror-overwrite\"); }\n else\n { rmClass(this.display.cursorDiv, \"CodeMirror-overwrite\"); }\n\n signal(this, \"overwriteToggle\", this, this.state.overwrite);\n },\n hasFocus: function() { return this.display.input.getField() == activeElt() },\n isReadOnly: function() { return !!(this.options.readOnly || this.doc.cantEdit) },\n\n scrollTo: methodOp(function (x, y) { scrollToCoords(this, x, y); }),\n getScrollInfo: function() {\n var scroller = this.display.scroller;\n return {left: scroller.scrollLeft, top: scroller.scrollTop,\n height: scroller.scrollHeight - scrollGap(this) - this.display.barHeight,\n width: scroller.scrollWidth - scrollGap(this) - this.display.barWidth,\n clientHeight: displayHeight(this), clientWidth: displayWidth(this)}\n },\n\n scrollIntoView: methodOp(function(range, margin) {\n if (range == null) {\n range = {from: this.doc.sel.primary().head, to: null};\n if (margin == null) { margin = this.options.cursorScrollMargin; }\n } else if (typeof range == \"number\") {\n range = {from: Pos(range, 0), to: null};\n } else if (range.from == null) {\n range = {from: range, to: null};\n }\n if (!range.to) { range.to = range.from; }\n range.margin = margin || 0;\n\n if (range.from.line != null) {\n scrollToRange(this, range);\n } else {\n scrollToCoordsRange(this, range.from, range.to, range.margin);\n }\n }),\n\n setSize: methodOp(function(width, height) {\n var this$1 = this;\n\n var interpret = function (val) { return typeof val == \"number\" || /^\\d+$/.test(String(val)) ? val + \"px\" : val; };\n if (width != null) { this.display.wrapper.style.width = interpret(width); }\n if (height != null) { this.display.wrapper.style.height = interpret(height); }\n if (this.options.lineWrapping) { clearLineMeasurementCache(this); }\n var lineNo = this.display.viewFrom;\n this.doc.iter(lineNo, this.display.viewTo, function (line) {\n if (line.widgets) { for (var i = 0; i < line.widgets.length; i++)\n { if (line.widgets[i].noHScroll) { regLineChange(this$1, lineNo, \"widget\"); break } } }\n ++lineNo;\n });\n this.curOp.forceUpdate = true;\n signal(this, \"refresh\", this);\n }),\n\n operation: function(f){return runInOp(this, f)},\n startOperation: function(){return startOperation(this)},\n endOperation: function(){return endOperation(this)},\n\n refresh: methodOp(function() {\n var oldHeight = this.display.cachedTextHeight;\n regChange(this);\n this.curOp.forceUpdate = true;\n clearCaches(this);\n scrollToCoords(this, this.doc.scrollLeft, this.doc.scrollTop);\n updateGutterSpace(this.display);\n if (oldHeight == null || Math.abs(oldHeight - textHeight(this.display)) > .5 || this.options.lineWrapping)\n { estimateLineHeights(this); }\n signal(this, \"refresh\", this);\n }),\n\n swapDoc: methodOp(function(doc) {\n var old = this.doc;\n old.cm = null;\n // Cancel the current text selection if any (#5821)\n if (this.state.selectingText) { this.state.selectingText(); }\n attachDoc(this, doc);\n clearCaches(this);\n this.display.input.reset();\n scrollToCoords(this, doc.scrollLeft, doc.scrollTop);\n this.curOp.forceScroll = true;\n signalLater(this, \"swapDoc\", this, old);\n return old\n }),\n\n phrase: function(phraseText) {\n var phrases = this.options.phrases;\n return phrases && Object.prototype.hasOwnProperty.call(phrases, phraseText) ? phrases[phraseText] : phraseText\n },\n\n getInputField: function(){return this.display.input.getField()},\n getWrapperElement: function(){return this.display.wrapper},\n getScrollerElement: function(){return this.display.scroller},\n getGutterElement: function(){return this.display.gutters}\n };\n eventMixin(CodeMirror);\n\n CodeMirror.registerHelper = function(type, name, value) {\n if (!helpers.hasOwnProperty(type)) { helpers[type] = CodeMirror[type] = {_global: []}; }\n helpers[type][name] = value;\n };\n CodeMirror.registerGlobalHelper = function(type, name, predicate, value) {\n CodeMirror.registerHelper(type, name, value);\n helpers[type]._global.push({pred: predicate, val: value});\n };\n }\n\n // Used for horizontal relative motion. Dir is -1 or 1 (left or\n // right), unit can be \"codepoint\", \"char\", \"column\" (like char, but\n // doesn't cross line boundaries), \"word\" (across next word), or\n // \"group\" (to the start of next group of word or\n // non-word-non-whitespace chars). The visually param controls\n // whether, in right-to-left text, direction 1 means to move towards\n // the next index in the string, or towards the character to the right\n // of the current position. The resulting position will have a\n // hitSide=true property if it reached the end of the document.\n function findPosH(doc, pos, dir, unit, visually) {\n var oldPos = pos;\n var origDir = dir;\n var lineObj = getLine(doc, pos.line);\n var lineDir = visually && doc.direction == \"rtl\" ? -dir : dir;\n function findNextLine() {\n var l = pos.line + lineDir;\n if (l < doc.first || l >= doc.first + doc.size) { return false }\n pos = new Pos(l, pos.ch, pos.sticky);\n return lineObj = getLine(doc, l)\n }\n function moveOnce(boundToLine) {\n var next;\n if (unit == \"codepoint\") {\n var ch = lineObj.text.charCodeAt(pos.ch + (dir > 0 ? 0 : -1));\n if (isNaN(ch)) {\n next = null;\n } else {\n var astral = dir > 0 ? ch >= 0xD800 && ch < 0xDC00 : ch >= 0xDC00 && ch < 0xDFFF;\n next = new Pos(pos.line, Math.max(0, Math.min(lineObj.text.length, pos.ch + dir * (astral ? 2 : 1))), -dir);\n }\n } else if (visually) {\n next = moveVisually(doc.cm, lineObj, pos, dir);\n } else {\n next = moveLogically(lineObj, pos, dir);\n }\n if (next == null) {\n if (!boundToLine && findNextLine())\n { pos = endOfLine(visually, doc.cm, lineObj, pos.line, lineDir); }\n else\n { return false }\n } else {\n pos = next;\n }\n return true\n }\n\n if (unit == \"char\" || unit == \"codepoint\") {\n moveOnce();\n } else if (unit == \"column\") {\n moveOnce(true);\n } else if (unit == \"word\" || unit == \"group\") {\n var sawType = null, group = unit == \"group\";\n var helper = doc.cm && doc.cm.getHelper(pos, \"wordChars\");\n for (var first = true;; first = false) {\n if (dir < 0 && !moveOnce(!first)) { break }\n var cur = lineObj.text.charAt(pos.ch) || \"\\n\";\n var type = isWordChar(cur, helper) ? \"w\"\n : group && cur == \"\\n\" ? \"n\"\n : !group || /\\s/.test(cur) ? null\n : \"p\";\n if (group && !first && !type) { type = \"s\"; }\n if (sawType && sawType != type) {\n if (dir < 0) {dir = 1; moveOnce(); pos.sticky = \"after\";}\n break\n }\n\n if (type) { sawType = type; }\n if (dir > 0 && !moveOnce(!first)) { break }\n }\n }\n var result = skipAtomic(doc, pos, oldPos, origDir, true);\n if (equalCursorPos(oldPos, result)) { result.hitSide = true; }\n return result\n }\n\n // For relative vertical movement. Dir may be -1 or 1. Unit can be\n // \"page\" or \"line\". The resulting position will have a hitSide=true\n // property if it reached the end of the document.\n function findPosV(cm, pos, dir, unit) {\n var doc = cm.doc, x = pos.left, y;\n if (unit == \"page\") {\n var pageSize = Math.min(cm.display.wrapper.clientHeight, window.innerHeight || document.documentElement.clientHeight);\n var moveAmount = Math.max(pageSize - .5 * textHeight(cm.display), 3);\n y = (dir > 0 ? pos.bottom : pos.top) + dir * moveAmount;\n\n } else if (unit == \"line\") {\n y = dir > 0 ? pos.bottom + 3 : pos.top - 3;\n }\n var target;\n for (;;) {\n target = coordsChar(cm, x, y);\n if (!target.outside) { break }\n if (dir < 0 ? y <= 0 : y >= doc.height) { target.hitSide = true; break }\n y += dir * 5;\n }\n return target\n }\n\n // CONTENTEDITABLE INPUT STYLE\n\n var ContentEditableInput = function(cm) {\n this.cm = cm;\n this.lastAnchorNode = this.lastAnchorOffset = this.lastFocusNode = this.lastFocusOffset = null;\n this.polling = new Delayed();\n this.composing = null;\n this.gracePeriod = false;\n this.readDOMTimeout = null;\n };\n\n ContentEditableInput.prototype.init = function (display) {\n var this$1 = this;\n\n var input = this, cm = input.cm;\n var div = input.div = display.lineDiv;\n div.contentEditable = true;\n disableBrowserMagic(div, cm.options.spellcheck, cm.options.autocorrect, cm.options.autocapitalize);\n\n function belongsToInput(e) {\n for (var t = e.target; t; t = t.parentNode) {\n if (t == div) { return true }\n if (/\\bCodeMirror-(?:line)?widget\\b/.test(t.className)) { break }\n }\n return false\n }\n\n on(div, \"paste\", function (e) {\n if (!belongsToInput(e) || signalDOMEvent(cm, e) || handlePaste(e, cm)) { return }\n // IE doesn't fire input events, so we schedule a read for the pasted content in this way\n if (ie_version <= 11) { setTimeout(operation(cm, function () { return this$1.updateFromDOM(); }), 20); }\n });\n\n on(div, \"compositionstart\", function (e) {\n this$1.composing = {data: e.data, done: false};\n });\n on(div, \"compositionupdate\", function (e) {\n if (!this$1.composing) { this$1.composing = {data: e.data, done: false}; }\n });\n on(div, \"compositionend\", function (e) {\n if (this$1.composing) {\n if (e.data != this$1.composing.data) { this$1.readFromDOMSoon(); }\n this$1.composing.done = true;\n }\n });\n\n on(div, \"touchstart\", function () { return input.forceCompositionEnd(); });\n\n on(div, \"input\", function () {\n if (!this$1.composing) { this$1.readFromDOMSoon(); }\n });\n\n function onCopyCut(e) {\n if (!belongsToInput(e) || signalDOMEvent(cm, e)) { return }\n if (cm.somethingSelected()) {\n setLastCopied({lineWise: false, text: cm.getSelections()});\n if (e.type == \"cut\") { cm.replaceSelection(\"\", null, \"cut\"); }\n } else if (!cm.options.lineWiseCopyCut) {\n return\n } else {\n var ranges = copyableRanges(cm);\n setLastCopied({lineWise: true, text: ranges.text});\n if (e.type == \"cut\") {\n cm.operation(function () {\n cm.setSelections(ranges.ranges, 0, sel_dontScroll);\n cm.replaceSelection(\"\", null, \"cut\");\n });\n }\n }\n if (e.clipboardData) {\n e.clipboardData.clearData();\n var content = lastCopied.text.join(\"\\n\");\n // iOS exposes the clipboard API, but seems to discard content inserted into it\n e.clipboardData.setData(\"Text\", content);\n if (e.clipboardData.getData(\"Text\") == content) {\n e.preventDefault();\n return\n }\n }\n // Old-fashioned briefly-focus-a-textarea hack\n var kludge = hiddenTextarea(), te = kludge.firstChild;\n cm.display.lineSpace.insertBefore(kludge, cm.display.lineSpace.firstChild);\n te.value = lastCopied.text.join(\"\\n\");\n var hadFocus = activeElt();\n selectInput(te);\n setTimeout(function () {\n cm.display.lineSpace.removeChild(kludge);\n hadFocus.focus();\n if (hadFocus == div) { input.showPrimarySelection(); }\n }, 50);\n }\n on(div, \"copy\", onCopyCut);\n on(div, \"cut\", onCopyCut);\n };\n\n ContentEditableInput.prototype.screenReaderLabelChanged = function (label) {\n // Label for screenreaders, accessibility\n if(label) {\n this.div.setAttribute('aria-label', label);\n } else {\n this.div.removeAttribute('aria-label');\n }\n };\n\n ContentEditableInput.prototype.prepareSelection = function () {\n var result = prepareSelection(this.cm, false);\n result.focus = activeElt() == this.div;\n return result\n };\n\n ContentEditableInput.prototype.showSelection = function (info, takeFocus) {\n if (!info || !this.cm.display.view.length) { return }\n if (info.focus || takeFocus) { this.showPrimarySelection(); }\n this.showMultipleSelections(info);\n };\n\n ContentEditableInput.prototype.getSelection = function () {\n return this.cm.display.wrapper.ownerDocument.getSelection()\n };\n\n ContentEditableInput.prototype.showPrimarySelection = function () {\n var sel = this.getSelection(), cm = this.cm, prim = cm.doc.sel.primary();\n var from = prim.from(), to = prim.to();\n\n if (cm.display.viewTo == cm.display.viewFrom || from.line >= cm.display.viewTo || to.line < cm.display.viewFrom) {\n sel.removeAllRanges();\n return\n }\n\n var curAnchor = domToPos(cm, sel.anchorNode, sel.anchorOffset);\n var curFocus = domToPos(cm, sel.focusNode, sel.focusOffset);\n if (curAnchor && !curAnchor.bad && curFocus && !curFocus.bad &&\n cmp(minPos(curAnchor, curFocus), from) == 0 &&\n cmp(maxPos(curAnchor, curFocus), to) == 0)\n { return }\n\n var view = cm.display.view;\n var start = (from.line >= cm.display.viewFrom && posToDOM(cm, from)) ||\n {node: view[0].measure.map[2], offset: 0};\n var end = to.line < cm.display.viewTo && posToDOM(cm, to);\n if (!end) {\n var measure = view[view.length - 1].measure;\n var map = measure.maps ? measure.maps[measure.maps.length - 1] : measure.map;\n end = {node: map[map.length - 1], offset: map[map.length - 2] - map[map.length - 3]};\n }\n\n if (!start || !end) {\n sel.removeAllRanges();\n return\n }\n\n var old = sel.rangeCount && sel.getRangeAt(0), rng;\n try { rng = range(start.node, start.offset, end.offset, end.node); }\n catch(e) {} // Our model of the DOM might be outdated, in which case the range we try to set can be impossible\n if (rng) {\n if (!gecko && cm.state.focused) {\n sel.collapse(start.node, start.offset);\n if (!rng.collapsed) {\n sel.removeAllRanges();\n sel.addRange(rng);\n }\n } else {\n sel.removeAllRanges();\n sel.addRange(rng);\n }\n if (old && sel.anchorNode == null) { sel.addRange(old); }\n else if (gecko) { this.startGracePeriod(); }\n }\n this.rememberSelection();\n };\n\n ContentEditableInput.prototype.startGracePeriod = function () {\n var this$1 = this;\n\n clearTimeout(this.gracePeriod);\n this.gracePeriod = setTimeout(function () {\n this$1.gracePeriod = false;\n if (this$1.selectionChanged())\n { this$1.cm.operation(function () { return this$1.cm.curOp.selectionChanged = true; }); }\n }, 20);\n };\n\n ContentEditableInput.prototype.showMultipleSelections = function (info) {\n removeChildrenAndAdd(this.cm.display.cursorDiv, info.cursors);\n removeChildrenAndAdd(this.cm.display.selectionDiv, info.selection);\n };\n\n ContentEditableInput.prototype.rememberSelection = function () {\n var sel = this.getSelection();\n this.lastAnchorNode = sel.anchorNode; this.lastAnchorOffset = sel.anchorOffset;\n this.lastFocusNode = sel.focusNode; this.lastFocusOffset = sel.focusOffset;\n };\n\n ContentEditableInput.prototype.selectionInEditor = function () {\n var sel = this.getSelection();\n if (!sel.rangeCount) { return false }\n var node = sel.getRangeAt(0).commonAncestorContainer;\n return contains(this.div, node)\n };\n\n ContentEditableInput.prototype.focus = function () {\n if (this.cm.options.readOnly != \"nocursor\") {\n if (!this.selectionInEditor() || activeElt() != this.div)\n { this.showSelection(this.prepareSelection(), true); }\n this.div.focus();\n }\n };\n ContentEditableInput.prototype.blur = function () { this.div.blur(); };\n ContentEditableInput.prototype.getField = function () { return this.div };\n\n ContentEditableInput.prototype.supportsTouch = function () { return true };\n\n ContentEditableInput.prototype.receivedFocus = function () {\n var this$1 = this;\n\n var input = this;\n if (this.selectionInEditor())\n { setTimeout(function () { return this$1.pollSelection(); }, 20); }\n else\n { runInOp(this.cm, function () { return input.cm.curOp.selectionChanged = true; }); }\n\n function poll() {\n if (input.cm.state.focused) {\n input.pollSelection();\n input.polling.set(input.cm.options.pollInterval, poll);\n }\n }\n this.polling.set(this.cm.options.pollInterval, poll);\n };\n\n ContentEditableInput.prototype.selectionChanged = function () {\n var sel = this.getSelection();\n return sel.anchorNode != this.lastAnchorNode || sel.anchorOffset != this.lastAnchorOffset ||\n sel.focusNode != this.lastFocusNode || sel.focusOffset != this.lastFocusOffset\n };\n\n ContentEditableInput.prototype.pollSelection = function () {\n if (this.readDOMTimeout != null || this.gracePeriod || !this.selectionChanged()) { return }\n var sel = this.getSelection(), cm = this.cm;\n // On Android Chrome (version 56, at least), backspacing into an\n // uneditable block element will put the cursor in that element,\n // and then, because it's not editable, hide the virtual keyboard.\n // Because Android doesn't allow us to actually detect backspace\n // presses in a sane way, this code checks for when that happens\n // and simulates a backspace press in this case.\n if (android && chrome && this.cm.display.gutterSpecs.length && isInGutter(sel.anchorNode)) {\n this.cm.triggerOnKeyDown({type: \"keydown\", keyCode: 8, preventDefault: Math.abs});\n this.blur();\n this.focus();\n return\n }\n if (this.composing) { return }\n this.rememberSelection();\n var anchor = domToPos(cm, sel.anchorNode, sel.anchorOffset);\n var head = domToPos(cm, sel.focusNode, sel.focusOffset);\n if (anchor && head) { runInOp(cm, function () {\n setSelection(cm.doc, simpleSelection(anchor, head), sel_dontScroll);\n if (anchor.bad || head.bad) { cm.curOp.selectionChanged = true; }\n }); }\n };\n\n ContentEditableInput.prototype.pollContent = function () {\n if (this.readDOMTimeout != null) {\n clearTimeout(this.readDOMTimeout);\n this.readDOMTimeout = null;\n }\n\n var cm = this.cm, display = cm.display, sel = cm.doc.sel.primary();\n var from = sel.from(), to = sel.to();\n if (from.ch == 0 && from.line > cm.firstLine())\n { from = Pos(from.line - 1, getLine(cm.doc, from.line - 1).length); }\n if (to.ch == getLine(cm.doc, to.line).text.length && to.line < cm.lastLine())\n { to = Pos(to.line + 1, 0); }\n if (from.line < display.viewFrom || to.line > display.viewTo - 1) { return false }\n\n var fromIndex, fromLine, fromNode;\n if (from.line == display.viewFrom || (fromIndex = findViewIndex(cm, from.line)) == 0) {\n fromLine = lineNo(display.view[0].line);\n fromNode = display.view[0].node;\n } else {\n fromLine = lineNo(display.view[fromIndex].line);\n fromNode = display.view[fromIndex - 1].node.nextSibling;\n }\n var toIndex = findViewIndex(cm, to.line);\n var toLine, toNode;\n if (toIndex == display.view.length - 1) {\n toLine = display.viewTo - 1;\n toNode = display.lineDiv.lastChild;\n } else {\n toLine = lineNo(display.view[toIndex + 1].line) - 1;\n toNode = display.view[toIndex + 1].node.previousSibling;\n }\n\n if (!fromNode) { return false }\n var newText = cm.doc.splitLines(domTextBetween(cm, fromNode, toNode, fromLine, toLine));\n var oldText = getBetween(cm.doc, Pos(fromLine, 0), Pos(toLine, getLine(cm.doc, toLine).text.length));\n while (newText.length > 1 && oldText.length > 1) {\n if (lst(newText) == lst(oldText)) { newText.pop(); oldText.pop(); toLine--; }\n else if (newText[0] == oldText[0]) { newText.shift(); oldText.shift(); fromLine++; }\n else { break }\n }\n\n var cutFront = 0, cutEnd = 0;\n var newTop = newText[0], oldTop = oldText[0], maxCutFront = Math.min(newTop.length, oldTop.length);\n while (cutFront < maxCutFront && newTop.charCodeAt(cutFront) == oldTop.charCodeAt(cutFront))\n { ++cutFront; }\n var newBot = lst(newText), oldBot = lst(oldText);\n var maxCutEnd = Math.min(newBot.length - (newText.length == 1 ? cutFront : 0),\n oldBot.length - (oldText.length == 1 ? cutFront : 0));\n while (cutEnd < maxCutEnd &&\n newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1))\n { ++cutEnd; }\n // Try to move start of change to start of selection if ambiguous\n if (newText.length == 1 && oldText.length == 1 && fromLine == from.line) {\n while (cutFront && cutFront > from.ch &&\n newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1)) {\n cutFront--;\n cutEnd++;\n }\n }\n\n newText[newText.length - 1] = newBot.slice(0, newBot.length - cutEnd).replace(/^\\u200b+/, \"\");\n newText[0] = newText[0].slice(cutFront).replace(/\\u200b+$/, \"\");\n\n var chFrom = Pos(fromLine, cutFront);\n var chTo = Pos(toLine, oldText.length ? lst(oldText).length - cutEnd : 0);\n if (newText.length > 1 || newText[0] || cmp(chFrom, chTo)) {\n replaceRange(cm.doc, newText, chFrom, chTo, \"+input\");\n return true\n }\n };\n\n ContentEditableInput.prototype.ensurePolled = function () {\n this.forceCompositionEnd();\n };\n ContentEditableInput.prototype.reset = function () {\n this.forceCompositionEnd();\n };\n ContentEditableInput.prototype.forceCompositionEnd = function () {\n if (!this.composing) { return }\n clearTimeout(this.readDOMTimeout);\n this.composing = null;\n this.updateFromDOM();\n this.div.blur();\n this.div.focus();\n };\n ContentEditableInput.prototype.readFromDOMSoon = function () {\n var this$1 = this;\n\n if (this.readDOMTimeout != null) { return }\n this.readDOMTimeout = setTimeout(function () {\n this$1.readDOMTimeout = null;\n if (this$1.composing) {\n if (this$1.composing.done) { this$1.composing = null; }\n else { return }\n }\n this$1.updateFromDOM();\n }, 80);\n };\n\n ContentEditableInput.prototype.updateFromDOM = function () {\n var this$1 = this;\n\n if (this.cm.isReadOnly() || !this.pollContent())\n { runInOp(this.cm, function () { return regChange(this$1.cm); }); }\n };\n\n ContentEditableInput.prototype.setUneditable = function (node) {\n node.contentEditable = \"false\";\n };\n\n ContentEditableInput.prototype.onKeyPress = function (e) {\n if (e.charCode == 0 || this.composing) { return }\n e.preventDefault();\n if (!this.cm.isReadOnly())\n { operation(this.cm, applyTextInput)(this.cm, String.fromCharCode(e.charCode == null ? e.keyCode : e.charCode), 0); }\n };\n\n ContentEditableInput.prototype.readOnlyChanged = function (val) {\n this.div.contentEditable = String(val != \"nocursor\");\n };\n\n ContentEditableInput.prototype.onContextMenu = function () {};\n ContentEditableInput.prototype.resetPosition = function () {};\n\n ContentEditableInput.prototype.needsContentAttribute = true;\n\n function posToDOM(cm, pos) {\n var view = findViewForLine(cm, pos.line);\n if (!view || view.hidden) { return null }\n var line = getLine(cm.doc, pos.line);\n var info = mapFromLineView(view, line, pos.line);\n\n var order = getOrder(line, cm.doc.direction), side = \"left\";\n if (order) {\n var partPos = getBidiPartAt(order, pos.ch);\n side = partPos % 2 ? \"right\" : \"left\";\n }\n var result = nodeAndOffsetInLineMap(info.map, pos.ch, side);\n result.offset = result.collapse == \"right\" ? result.end : result.start;\n return result\n }\n\n function isInGutter(node) {\n for (var scan = node; scan; scan = scan.parentNode)\n { if (/CodeMirror-gutter-wrapper/.test(scan.className)) { return true } }\n return false\n }\n\n function badPos(pos, bad) { if (bad) { pos.bad = true; } return pos }\n\n function domTextBetween(cm, from, to, fromLine, toLine) {\n var text = \"\", closing = false, lineSep = cm.doc.lineSeparator(), extraLinebreak = false;\n function recognizeMarker(id) { return function (marker) { return marker.id == id; } }\n function close() {\n if (closing) {\n text += lineSep;\n if (extraLinebreak) { text += lineSep; }\n closing = extraLinebreak = false;\n }\n }\n function addText(str) {\n if (str) {\n close();\n text += str;\n }\n }\n function walk(node) {\n if (node.nodeType == 1) {\n var cmText = node.getAttribute(\"cm-text\");\n if (cmText) {\n addText(cmText);\n return\n }\n var markerID = node.getAttribute(\"cm-marker\"), range;\n if (markerID) {\n var found = cm.findMarks(Pos(fromLine, 0), Pos(toLine + 1, 0), recognizeMarker(+markerID));\n if (found.length && (range = found[0].find(0)))\n { addText(getBetween(cm.doc, range.from, range.to).join(lineSep)); }\n return\n }\n if (node.getAttribute(\"contenteditable\") == \"false\") { return }\n var isBlock = /^(pre|div|p|li|table|br)$/i.test(node.nodeName);\n if (!/^br$/i.test(node.nodeName) && node.textContent.length == 0) { return }\n\n if (isBlock) { close(); }\n for (var i = 0; i < node.childNodes.length; i++)\n { walk(node.childNodes[i]); }\n\n if (/^(pre|p)$/i.test(node.nodeName)) { extraLinebreak = true; }\n if (isBlock) { closing = true; }\n } else if (node.nodeType == 3) {\n addText(node.nodeValue.replace(/\\u200b/g, \"\").replace(/\\u00a0/g, \" \"));\n }\n }\n for (;;) {\n walk(from);\n if (from == to) { break }\n from = from.nextSibling;\n extraLinebreak = false;\n }\n return text\n }\n\n function domToPos(cm, node, offset) {\n var lineNode;\n if (node == cm.display.lineDiv) {\n lineNode = cm.display.lineDiv.childNodes[offset];\n if (!lineNode) { return badPos(cm.clipPos(Pos(cm.display.viewTo - 1)), true) }\n node = null; offset = 0;\n } else {\n for (lineNode = node;; lineNode = lineNode.parentNode) {\n if (!lineNode || lineNode == cm.display.lineDiv) { return null }\n if (lineNode.parentNode && lineNode.parentNode == cm.display.lineDiv) { break }\n }\n }\n for (var i = 0; i < cm.display.view.length; i++) {\n var lineView = cm.display.view[i];\n if (lineView.node == lineNode)\n { return locateNodeInLineView(lineView, node, offset) }\n }\n }\n\n function locateNodeInLineView(lineView, node, offset) {\n var wrapper = lineView.text.firstChild, bad = false;\n if (!node || !contains(wrapper, node)) { return badPos(Pos(lineNo(lineView.line), 0), true) }\n if (node == wrapper) {\n bad = true;\n node = wrapper.childNodes[offset];\n offset = 0;\n if (!node) {\n var line = lineView.rest ? lst(lineView.rest) : lineView.line;\n return badPos(Pos(lineNo(line), line.text.length), bad)\n }\n }\n\n var textNode = node.nodeType == 3 ? node : null, topNode = node;\n if (!textNode && node.childNodes.length == 1 && node.firstChild.nodeType == 3) {\n textNode = node.firstChild;\n if (offset) { offset = textNode.nodeValue.length; }\n }\n while (topNode.parentNode != wrapper) { topNode = topNode.parentNode; }\n var measure = lineView.measure, maps = measure.maps;\n\n function find(textNode, topNode, offset) {\n for (var i = -1; i < (maps ? maps.length : 0); i++) {\n var map = i < 0 ? measure.map : maps[i];\n for (var j = 0; j < map.length; j += 3) {\n var curNode = map[j + 2];\n if (curNode == textNode || curNode == topNode) {\n var line = lineNo(i < 0 ? lineView.line : lineView.rest[i]);\n var ch = map[j] + offset;\n if (offset < 0 || curNode != textNode) { ch = map[j + (offset ? 1 : 0)]; }\n return Pos(line, ch)\n }\n }\n }\n }\n var found = find(textNode, topNode, offset);\n if (found) { return badPos(found, bad) }\n\n // FIXME this is all really shaky. might handle the few cases it needs to handle, but likely to cause problems\n for (var after = topNode.nextSibling, dist = textNode ? textNode.nodeValue.length - offset : 0; after; after = after.nextSibling) {\n found = find(after, after.firstChild, 0);\n if (found)\n { return badPos(Pos(found.line, found.ch - dist), bad) }\n else\n { dist += after.textContent.length; }\n }\n for (var before = topNode.previousSibling, dist$1 = offset; before; before = before.previousSibling) {\n found = find(before, before.firstChild, -1);\n if (found)\n { return badPos(Pos(found.line, found.ch + dist$1), bad) }\n else\n { dist$1 += before.textContent.length; }\n }\n }\n\n // TEXTAREA INPUT STYLE\n\n var TextareaInput = function(cm) {\n this.cm = cm;\n // See input.poll and input.reset\n this.prevInput = \"\";\n\n // Flag that indicates whether we expect input to appear real soon\n // now (after some event like 'keypress' or 'input') and are\n // polling intensively.\n this.pollingFast = false;\n // Self-resetting timeout for the poller\n this.polling = new Delayed();\n // Used to work around IE issue with selection being forgotten when focus moves away from textarea\n this.hasSelection = false;\n this.composing = null;\n };\n\n TextareaInput.prototype.init = function (display) {\n var this$1 = this;\n\n var input = this, cm = this.cm;\n this.createField(display);\n var te = this.textarea;\n\n display.wrapper.insertBefore(this.wrapper, display.wrapper.firstChild);\n\n // Needed to hide big blue blinking cursor on Mobile Safari (doesn't seem to work in iOS 8 anymore)\n if (ios) { te.style.width = \"0px\"; }\n\n on(te, \"input\", function () {\n if (ie && ie_version >= 9 && this$1.hasSelection) { this$1.hasSelection = null; }\n input.poll();\n });\n\n on(te, \"paste\", function (e) {\n if (signalDOMEvent(cm, e) || handlePaste(e, cm)) { return }\n\n cm.state.pasteIncoming = +new Date;\n input.fastPoll();\n });\n\n function prepareCopyCut(e) {\n if (signalDOMEvent(cm, e)) { return }\n if (cm.somethingSelected()) {\n setLastCopied({lineWise: false, text: cm.getSelections()});\n } else if (!cm.options.lineWiseCopyCut) {\n return\n } else {\n var ranges = copyableRanges(cm);\n setLastCopied({lineWise: true, text: ranges.text});\n if (e.type == \"cut\") {\n cm.setSelections(ranges.ranges, null, sel_dontScroll);\n } else {\n input.prevInput = \"\";\n te.value = ranges.text.join(\"\\n\");\n selectInput(te);\n }\n }\n if (e.type == \"cut\") { cm.state.cutIncoming = +new Date; }\n }\n on(te, \"cut\", prepareCopyCut);\n on(te, \"copy\", prepareCopyCut);\n\n on(display.scroller, \"paste\", function (e) {\n if (eventInWidget(display, e) || signalDOMEvent(cm, e)) { return }\n if (!te.dispatchEvent) {\n cm.state.pasteIncoming = +new Date;\n input.focus();\n return\n }\n\n // Pass the `paste` event to the textarea so it's handled by its event listener.\n var event = new Event(\"paste\");\n event.clipboardData = e.clipboardData;\n te.dispatchEvent(event);\n });\n\n // Prevent normal selection in the editor (we handle our own)\n on(display.lineSpace, \"selectstart\", function (e) {\n if (!eventInWidget(display, e)) { e_preventDefault(e); }\n });\n\n on(te, \"compositionstart\", function () {\n var start = cm.getCursor(\"from\");\n if (input.composing) { input.composing.range.clear(); }\n input.composing = {\n start: start,\n range: cm.markText(start, cm.getCursor(\"to\"), {className: \"CodeMirror-composing\"})\n };\n });\n on(te, \"compositionend\", function () {\n if (input.composing) {\n input.poll();\n input.composing.range.clear();\n input.composing = null;\n }\n });\n };\n\n TextareaInput.prototype.createField = function (_display) {\n // Wraps and hides input textarea\n this.wrapper = hiddenTextarea();\n // The semihidden textarea that is focused when the editor is\n // focused, and receives input.\n this.textarea = this.wrapper.firstChild;\n };\n\n TextareaInput.prototype.screenReaderLabelChanged = function (label) {\n // Label for screenreaders, accessibility\n if(label) {\n this.textarea.setAttribute('aria-label', label);\n } else {\n this.textarea.removeAttribute('aria-label');\n }\n };\n\n TextareaInput.prototype.prepareSelection = function () {\n // Redraw the selection and/or cursor\n var cm = this.cm, display = cm.display, doc = cm.doc;\n var result = prepareSelection(cm);\n\n // Move the hidden textarea near the cursor to prevent scrolling artifacts\n if (cm.options.moveInputWithCursor) {\n var headPos = cursorCoords(cm, doc.sel.primary().head, \"div\");\n var wrapOff = display.wrapper.getBoundingClientRect(), lineOff = display.lineDiv.getBoundingClientRect();\n result.teTop = Math.max(0, Math.min(display.wrapper.clientHeight - 10,\n headPos.top + lineOff.top - wrapOff.top));\n result.teLeft = Math.max(0, Math.min(display.wrapper.clientWidth - 10,\n headPos.left + lineOff.left - wrapOff.left));\n }\n\n return result\n };\n\n TextareaInput.prototype.showSelection = function (drawn) {\n var cm = this.cm, display = cm.display;\n removeChildrenAndAdd(display.cursorDiv, drawn.cursors);\n removeChildrenAndAdd(display.selectionDiv, drawn.selection);\n if (drawn.teTop != null) {\n this.wrapper.style.top = drawn.teTop + \"px\";\n this.wrapper.style.left = drawn.teLeft + \"px\";\n }\n };\n\n // Reset the input to correspond to the selection (or to be empty,\n // when not typing and nothing is selected)\n TextareaInput.prototype.reset = function (typing) {\n if (this.contextMenuPending || this.composing) { return }\n var cm = this.cm;\n if (cm.somethingSelected()) {\n this.prevInput = \"\";\n var content = cm.getSelection();\n this.textarea.value = content;\n if (cm.state.focused) { selectInput(this.textarea); }\n if (ie && ie_version >= 9) { this.hasSelection = content; }\n } else if (!typing) {\n this.prevInput = this.textarea.value = \"\";\n if (ie && ie_version >= 9) { this.hasSelection = null; }\n }\n };\n\n TextareaInput.prototype.getField = function () { return this.textarea };\n\n TextareaInput.prototype.supportsTouch = function () { return false };\n\n TextareaInput.prototype.focus = function () {\n if (this.cm.options.readOnly != \"nocursor\" && (!mobile || activeElt() != this.textarea)) {\n try { this.textarea.focus(); }\n catch (e) {} // IE8 will throw if the textarea is display: none or not in DOM\n }\n };\n\n TextareaInput.prototype.blur = function () { this.textarea.blur(); };\n\n TextareaInput.prototype.resetPosition = function () {\n this.wrapper.style.top = this.wrapper.style.left = 0;\n };\n\n TextareaInput.prototype.receivedFocus = function () { this.slowPoll(); };\n\n // Poll for input changes, using the normal rate of polling. This\n // runs as long as the editor is focused.\n TextareaInput.prototype.slowPoll = function () {\n var this$1 = this;\n\n if (this.pollingFast) { return }\n this.polling.set(this.cm.options.pollInterval, function () {\n this$1.poll();\n if (this$1.cm.state.focused) { this$1.slowPoll(); }\n });\n };\n\n // When an event has just come in that is likely to add or change\n // something in the input textarea, we poll faster, to ensure that\n // the change appears on the screen quickly.\n TextareaInput.prototype.fastPoll = function () {\n var missed = false, input = this;\n input.pollingFast = true;\n function p() {\n var changed = input.poll();\n if (!changed && !missed) {missed = true; input.polling.set(60, p);}\n else {input.pollingFast = false; input.slowPoll();}\n }\n input.polling.set(20, p);\n };\n\n // Read input from the textarea, and update the document to match.\n // When something is selected, it is present in the textarea, and\n // selected (unless it is huge, in which case a placeholder is\n // used). When nothing is selected, the cursor sits after previously\n // seen text (can be empty), which is stored in prevInput (we must\n // not reset the textarea when typing, because that breaks IME).\n TextareaInput.prototype.poll = function () {\n var this$1 = this;\n\n var cm = this.cm, input = this.textarea, prevInput = this.prevInput;\n // Since this is called a *lot*, try to bail out as cheaply as\n // possible when it is clear that nothing happened. hasSelection\n // will be the case when there is a lot of text in the textarea,\n // in which case reading its value would be expensive.\n if (this.contextMenuPending || !cm.state.focused ||\n (hasSelection(input) && !prevInput && !this.composing) ||\n cm.isReadOnly() || cm.options.disableInput || cm.state.keySeq)\n { return false }\n\n var text = input.value;\n // If nothing changed, bail.\n if (text == prevInput && !cm.somethingSelected()) { return false }\n // Work around nonsensical selection resetting in IE9/10, and\n // inexplicable appearance of private area unicode characters on\n // some key combos in Mac (#2689).\n if (ie && ie_version >= 9 && this.hasSelection === text ||\n mac && /[\\uf700-\\uf7ff]/.test(text)) {\n cm.display.input.reset();\n return false\n }\n\n if (cm.doc.sel == cm.display.selForContextMenu) {\n var first = text.charCodeAt(0);\n if (first == 0x200b && !prevInput) { prevInput = \"\\u200b\"; }\n if (first == 0x21da) { this.reset(); return this.cm.execCommand(\"undo\") }\n }\n // Find the part of the input that is actually new\n var same = 0, l = Math.min(prevInput.length, text.length);\n while (same < l && prevInput.charCodeAt(same) == text.charCodeAt(same)) { ++same; }\n\n runInOp(cm, function () {\n applyTextInput(cm, text.slice(same), prevInput.length - same,\n null, this$1.composing ? \"*compose\" : null);\n\n // Don't leave long text in the textarea, since it makes further polling slow\n if (text.length > 1000 || text.indexOf(\"\\n\") > -1) { input.value = this$1.prevInput = \"\"; }\n else { this$1.prevInput = text; }\n\n if (this$1.composing) {\n this$1.composing.range.clear();\n this$1.composing.range = cm.markText(this$1.composing.start, cm.getCursor(\"to\"),\n {className: \"CodeMirror-composing\"});\n }\n });\n return true\n };\n\n TextareaInput.prototype.ensurePolled = function () {\n if (this.pollingFast && this.poll()) { this.pollingFast = false; }\n };\n\n TextareaInput.prototype.onKeyPress = function () {\n if (ie && ie_version >= 9) { this.hasSelection = null; }\n this.fastPoll();\n };\n\n TextareaInput.prototype.onContextMenu = function (e) {\n var input = this, cm = input.cm, display = cm.display, te = input.textarea;\n if (input.contextMenuPending) { input.contextMenuPending(); }\n var pos = posFromMouse(cm, e), scrollPos = display.scroller.scrollTop;\n if (!pos || presto) { return } // Opera is difficult.\n\n // Reset the current text selection only if the click is done outside of the selection\n // and 'resetSelectionOnContextMenu' option is true.\n var reset = cm.options.resetSelectionOnContextMenu;\n if (reset && cm.doc.sel.contains(pos) == -1)\n { operation(cm, setSelection)(cm.doc, simpleSelection(pos), sel_dontScroll); }\n\n var oldCSS = te.style.cssText, oldWrapperCSS = input.wrapper.style.cssText;\n var wrapperBox = input.wrapper.offsetParent.getBoundingClientRect();\n input.wrapper.style.cssText = \"position: static\";\n te.style.cssText = \"position: absolute; width: 30px; height: 30px;\\n top: \" + (e.clientY - wrapperBox.top - 5) + \"px; left: \" + (e.clientX - wrapperBox.left - 5) + \"px;\\n z-index: 1000; background: \" + (ie ? \"rgba(255, 255, 255, .05)\" : \"transparent\") + \";\\n outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);\";\n var oldScrollY;\n if (webkit) { oldScrollY = window.scrollY; } // Work around Chrome issue (#2712)\n display.input.focus();\n if (webkit) { window.scrollTo(null, oldScrollY); }\n display.input.reset();\n // Adds \"Select all\" to context menu in FF\n if (!cm.somethingSelected()) { te.value = input.prevInput = \" \"; }\n input.contextMenuPending = rehide;\n display.selForContextMenu = cm.doc.sel;\n clearTimeout(display.detectingSelectAll);\n\n // Select-all will be greyed out if there's nothing to select, so\n // this adds a zero-width space so that we can later check whether\n // it got selected.\n function prepareSelectAllHack() {\n if (te.selectionStart != null) {\n var selected = cm.somethingSelected();\n var extval = \"\\u200b\" + (selected ? te.value : \"\");\n te.value = \"\\u21da\"; // Used to catch context-menu undo\n te.value = extval;\n input.prevInput = selected ? \"\" : \"\\u200b\";\n te.selectionStart = 1; te.selectionEnd = extval.length;\n // Re-set this, in case some other handler touched the\n // selection in the meantime.\n display.selForContextMenu = cm.doc.sel;\n }\n }\n function rehide() {\n if (input.contextMenuPending != rehide) { return }\n input.contextMenuPending = false;\n input.wrapper.style.cssText = oldWrapperCSS;\n te.style.cssText = oldCSS;\n if (ie && ie_version < 9) { display.scrollbars.setScrollTop(display.scroller.scrollTop = scrollPos); }\n\n // Try to detect the user choosing select-all\n if (te.selectionStart != null) {\n if (!ie || (ie && ie_version < 9)) { prepareSelectAllHack(); }\n var i = 0, poll = function () {\n if (display.selForContextMenu == cm.doc.sel && te.selectionStart == 0 &&\n te.selectionEnd > 0 && input.prevInput == \"\\u200b\") {\n operation(cm, selectAll)(cm);\n } else if (i++ < 10) {\n display.detectingSelectAll = setTimeout(poll, 500);\n } else {\n display.selForContextMenu = null;\n display.input.reset();\n }\n };\n display.detectingSelectAll = setTimeout(poll, 200);\n }\n }\n\n if (ie && ie_version >= 9) { prepareSelectAllHack(); }\n if (captureRightClick) {\n e_stop(e);\n var mouseup = function () {\n off(window, \"mouseup\", mouseup);\n setTimeout(rehide, 20);\n };\n on(window, \"mouseup\", mouseup);\n } else {\n setTimeout(rehide, 50);\n }\n };\n\n TextareaInput.prototype.readOnlyChanged = function (val) {\n if (!val) { this.reset(); }\n this.textarea.disabled = val == \"nocursor\";\n this.textarea.readOnly = !!val;\n };\n\n TextareaInput.prototype.setUneditable = function () {};\n\n TextareaInput.prototype.needsContentAttribute = false;\n\n function fromTextArea(textarea, options) {\n options = options ? copyObj(options) : {};\n options.value = textarea.value;\n if (!options.tabindex && textarea.tabIndex)\n { options.tabindex = textarea.tabIndex; }\n if (!options.placeholder && textarea.placeholder)\n { options.placeholder = textarea.placeholder; }\n // Set autofocus to true if this textarea is focused, or if it has\n // autofocus and no other element is focused.\n if (options.autofocus == null) {\n var hasFocus = activeElt();\n options.autofocus = hasFocus == textarea ||\n textarea.getAttribute(\"autofocus\") != null && hasFocus == document.body;\n }\n\n function save() {textarea.value = cm.getValue();}\n\n var realSubmit;\n if (textarea.form) {\n on(textarea.form, \"submit\", save);\n // Deplorable hack to make the submit method do the right thing.\n if (!options.leaveSubmitMethodAlone) {\n var form = textarea.form;\n realSubmit = form.submit;\n try {\n var wrappedSubmit = form.submit = function () {\n save();\n form.submit = realSubmit;\n form.submit();\n form.submit = wrappedSubmit;\n };\n } catch(e) {}\n }\n }\n\n options.finishInit = function (cm) {\n cm.save = save;\n cm.getTextArea = function () { return textarea; };\n cm.toTextArea = function () {\n cm.toTextArea = isNaN; // Prevent this from being ran twice\n save();\n textarea.parentNode.removeChild(cm.getWrapperElement());\n textarea.style.display = \"\";\n if (textarea.form) {\n off(textarea.form, \"submit\", save);\n if (!options.leaveSubmitMethodAlone && typeof textarea.form.submit == \"function\")\n { textarea.form.submit = realSubmit; }\n }\n };\n };\n\n textarea.style.display = \"none\";\n var cm = CodeMirror(function (node) { return textarea.parentNode.insertBefore(node, textarea.nextSibling); },\n options);\n return cm\n }\n\n function addLegacyProps(CodeMirror) {\n CodeMirror.off = off;\n CodeMirror.on = on;\n CodeMirror.wheelEventPixels = wheelEventPixels;\n CodeMirror.Doc = Doc;\n CodeMirror.splitLines = splitLinesAuto;\n CodeMirror.countColumn = countColumn;\n CodeMirror.findColumn = findColumn;\n CodeMirror.isWordChar = isWordCharBasic;\n CodeMirror.Pass = Pass;\n CodeMirror.signal = signal;\n CodeMirror.Line = Line;\n CodeMirror.changeEnd = changeEnd;\n CodeMirror.scrollbarModel = scrollbarModel;\n CodeMirror.Pos = Pos;\n CodeMirror.cmpPos = cmp;\n CodeMirror.modes = modes;\n CodeMirror.mimeModes = mimeModes;\n CodeMirror.resolveMode = resolveMode;\n CodeMirror.getMode = getMode;\n CodeMirror.modeExtensions = modeExtensions;\n CodeMirror.extendMode = extendMode;\n CodeMirror.copyState = copyState;\n CodeMirror.startState = startState;\n CodeMirror.innerMode = innerMode;\n CodeMirror.commands = commands;\n CodeMirror.keyMap = keyMap;\n CodeMirror.keyName = keyName;\n CodeMirror.isModifierKey = isModifierKey;\n CodeMirror.lookupKey = lookupKey;\n CodeMirror.normalizeKeyMap = normalizeKeyMap;\n CodeMirror.StringStream = StringStream;\n CodeMirror.SharedTextMarker = SharedTextMarker;\n CodeMirror.TextMarker = TextMarker;\n CodeMirror.LineWidget = LineWidget;\n CodeMirror.e_preventDefault = e_preventDefault;\n CodeMirror.e_stopPropagation = e_stopPropagation;\n CodeMirror.e_stop = e_stop;\n CodeMirror.addClass = addClass;\n CodeMirror.contains = contains;\n CodeMirror.rmClass = rmClass;\n CodeMirror.keyNames = keyNames;\n }\n\n // EDITOR CONSTRUCTOR\n\n defineOptions(CodeMirror);\n\n addEditorMethods(CodeMirror);\n\n // Set up methods on CodeMirror's prototype to redirect to the editor's document.\n var dontDelegate = \"iter insert remove copy getEditor constructor\".split(\" \");\n for (var prop in Doc.prototype) { if (Doc.prototype.hasOwnProperty(prop) && indexOf(dontDelegate, prop) < 0)\n { CodeMirror.prototype[prop] = (function(method) {\n return function() {return method.apply(this.doc, arguments)}\n })(Doc.prototype[prop]); } }\n\n eventMixin(Doc);\n CodeMirror.inputStyles = {\"textarea\": TextareaInput, \"contenteditable\": ContentEditableInput};\n\n // Extra arguments are stored as the mode's dependencies, which is\n // used by (legacy) mechanisms like loadmode.js to automatically\n // load a mode. (Preferred mechanism is the require/define calls.)\n CodeMirror.defineMode = function(name/*, mode, …*/) {\n if (!CodeMirror.defaults.mode && name != \"null\") { CodeMirror.defaults.mode = name; }\n defineMode.apply(this, arguments);\n };\n\n CodeMirror.defineMIME = defineMIME;\n\n // Minimal default mode.\n CodeMirror.defineMode(\"null\", function () { return ({token: function (stream) { return stream.skipToEnd(); }}); });\n CodeMirror.defineMIME(\"text/plain\", \"null\");\n\n // EXTENSIONS\n\n CodeMirror.defineExtension = function (name, func) {\n CodeMirror.prototype[name] = func;\n };\n CodeMirror.defineDocExtension = function (name, func) {\n Doc.prototype[name] = func;\n };\n\n CodeMirror.fromTextArea = fromTextArea;\n\n addLegacyProps(CodeMirror);\n\n CodeMirror.version = \"5.63.0\";\n\n return CodeMirror;\n\n})));\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"css\", function(config, parserConfig) {\n var inline = parserConfig.inline\n if (!parserConfig.propertyKeywords) parserConfig = CodeMirror.resolveMode(\"text/css\");\n\n var indentUnit = config.indentUnit,\n tokenHooks = parserConfig.tokenHooks,\n documentTypes = parserConfig.documentTypes || {},\n mediaTypes = parserConfig.mediaTypes || {},\n mediaFeatures = parserConfig.mediaFeatures || {},\n mediaValueKeywords = parserConfig.mediaValueKeywords || {},\n propertyKeywords = parserConfig.propertyKeywords || {},\n nonStandardPropertyKeywords = parserConfig.nonStandardPropertyKeywords || {},\n fontProperties = parserConfig.fontProperties || {},\n counterDescriptors = parserConfig.counterDescriptors || {},\n colorKeywords = parserConfig.colorKeywords || {},\n valueKeywords = parserConfig.valueKeywords || {},\n allowNested = parserConfig.allowNested,\n lineComment = parserConfig.lineComment,\n supportsAtComponent = parserConfig.supportsAtComponent === true,\n highlightNonStandardPropertyKeywords = config.highlightNonStandardPropertyKeywords !== false;\n\n var type, override;\n function ret(style, tp) { type = tp; return style; }\n\n // Tokenizers\n\n function tokenBase(stream, state) {\n var ch = stream.next();\n if (tokenHooks[ch]) {\n var result = tokenHooks[ch](stream, state);\n if (result !== false) return result;\n }\n if (ch == \"@\") {\n stream.eatWhile(/[\\w\\\\\\-]/);\n return ret(\"def\", stream.current());\n } else if (ch == \"=\" || (ch == \"~\" || ch == \"|\") && stream.eat(\"=\")) {\n return ret(null, \"compare\");\n } else if (ch == \"\\\"\" || ch == \"'\") {\n state.tokenize = tokenString(ch);\n return state.tokenize(stream, state);\n } else if (ch == \"#\") {\n stream.eatWhile(/[\\w\\\\\\-]/);\n return ret(\"atom\", \"hash\");\n } else if (ch == \"!\") {\n stream.match(/^\\s*\\w*/);\n return ret(\"keyword\", \"important\");\n } else if (/\\d/.test(ch) || ch == \".\" && stream.eat(/\\d/)) {\n stream.eatWhile(/[\\w.%]/);\n return ret(\"number\", \"unit\");\n } else if (ch === \"-\") {\n if (/[\\d.]/.test(stream.peek())) {\n stream.eatWhile(/[\\w.%]/);\n return ret(\"number\", \"unit\");\n } else if (stream.match(/^-[\\w\\\\\\-]*/)) {\n stream.eatWhile(/[\\w\\\\\\-]/);\n if (stream.match(/^\\s*:/, false))\n return ret(\"variable-2\", \"variable-definition\");\n return ret(\"variable-2\", \"variable\");\n } else if (stream.match(/^\\w+-/)) {\n return ret(\"meta\", \"meta\");\n }\n } else if (/[,+>*\\/]/.test(ch)) {\n return ret(null, \"select-op\");\n } else if (ch == \".\" && stream.match(/^-?[_a-z][_a-z0-9-]*/i)) {\n return ret(\"qualifier\", \"qualifier\");\n } else if (/[:;{}\\[\\]\\(\\)]/.test(ch)) {\n return ret(null, ch);\n } else if (stream.match(/^[\\w-.]+(?=\\()/)) {\n if (/^(url(-prefix)?|domain|regexp)$/i.test(stream.current())) {\n state.tokenize = tokenParenthesized;\n }\n return ret(\"variable callee\", \"variable\");\n } else if (/[\\w\\\\\\-]/.test(ch)) {\n stream.eatWhile(/[\\w\\\\\\-]/);\n return ret(\"property\", \"word\");\n } else {\n return ret(null, null);\n }\n }\n\n function tokenString(quote) {\n return function(stream, state) {\n var escaped = false, ch;\n while ((ch = stream.next()) != null) {\n if (ch == quote && !escaped) {\n if (quote == \")\") stream.backUp(1);\n break;\n }\n escaped = !escaped && ch == \"\\\\\";\n }\n if (ch == quote || !escaped && quote != \")\") state.tokenize = null;\n return ret(\"string\", \"string\");\n };\n }\n\n function tokenParenthesized(stream, state) {\n stream.next(); // Must be '('\n if (!stream.match(/^\\s*[\\\"\\')]/, false))\n state.tokenize = tokenString(\")\");\n else\n state.tokenize = null;\n return ret(null, \"(\");\n }\n\n // Context management\n\n function Context(type, indent, prev) {\n this.type = type;\n this.indent = indent;\n this.prev = prev;\n }\n\n function pushContext(state, stream, type, indent) {\n state.context = new Context(type, stream.indentation() + (indent === false ? 0 : indentUnit), state.context);\n return type;\n }\n\n function popContext(state) {\n if (state.context.prev)\n state.context = state.context.prev;\n return state.context.type;\n }\n\n function pass(type, stream, state) {\n return states[state.context.type](type, stream, state);\n }\n function popAndPass(type, stream, state, n) {\n for (var i = n || 1; i > 0; i--)\n state.context = state.context.prev;\n return pass(type, stream, state);\n }\n\n // Parser\n\n function wordAsValue(stream) {\n var word = stream.current().toLowerCase();\n if (valueKeywords.hasOwnProperty(word))\n override = \"atom\";\n else if (colorKeywords.hasOwnProperty(word))\n override = \"keyword\";\n else\n override = \"variable\";\n }\n\n var states = {};\n\n states.top = function(type, stream, state) {\n if (type == \"{\") {\n return pushContext(state, stream, \"block\");\n } else if (type == \"}\" && state.context.prev) {\n return popContext(state);\n } else if (supportsAtComponent && /@component/i.test(type)) {\n return pushContext(state, stream, \"atComponentBlock\");\n } else if (/^@(-moz-)?document$/i.test(type)) {\n return pushContext(state, stream, \"documentTypes\");\n } else if (/^@(media|supports|(-moz-)?document|import)$/i.test(type)) {\n return pushContext(state, stream, \"atBlock\");\n } else if (/^@(font-face|counter-style)/i.test(type)) {\n state.stateArg = type;\n return \"restricted_atBlock_before\";\n } else if (/^@(-(moz|ms|o|webkit)-)?keyframes$/i.test(type)) {\n return \"keyframes\";\n } else if (type && type.charAt(0) == \"@\") {\n return pushContext(state, stream, \"at\");\n } else if (type == \"hash\") {\n override = \"builtin\";\n } else if (type == \"word\") {\n override = \"tag\";\n } else if (type == \"variable-definition\") {\n return \"maybeprop\";\n } else if (type == \"interpolation\") {\n return pushContext(state, stream, \"interpolation\");\n } else if (type == \":\") {\n return \"pseudo\";\n } else if (allowNested && type == \"(\") {\n return pushContext(state, stream, \"parens\");\n }\n return state.context.type;\n };\n\n states.block = function(type, stream, state) {\n if (type == \"word\") {\n var word = stream.current().toLowerCase();\n if (propertyKeywords.hasOwnProperty(word)) {\n override = \"property\";\n return \"maybeprop\";\n } else if (nonStandardPropertyKeywords.hasOwnProperty(word)) {\n override = highlightNonStandardPropertyKeywords ? \"string-2\" : \"property\";\n return \"maybeprop\";\n } else if (allowNested) {\n override = stream.match(/^\\s*:(?:\\s|$)/, false) ? \"property\" : \"tag\";\n return \"block\";\n } else {\n override += \" error\";\n return \"maybeprop\";\n }\n } else if (type == \"meta\") {\n return \"block\";\n } else if (!allowNested && (type == \"hash\" || type == \"qualifier\")) {\n override = \"error\";\n return \"block\";\n } else {\n return states.top(type, stream, state);\n }\n };\n\n states.maybeprop = function(type, stream, state) {\n if (type == \":\") return pushContext(state, stream, \"prop\");\n return pass(type, stream, state);\n };\n\n states.prop = function(type, stream, state) {\n if (type == \";\") return popContext(state);\n if (type == \"{\" && allowNested) return pushContext(state, stream, \"propBlock\");\n if (type == \"}\" || type == \"{\") return popAndPass(type, stream, state);\n if (type == \"(\") return pushContext(state, stream, \"parens\");\n\n if (type == \"hash\" && !/^#([0-9a-fA-f]{3,4}|[0-9a-fA-f]{6}|[0-9a-fA-f]{8})$/.test(stream.current())) {\n override += \" error\";\n } else if (type == \"word\") {\n wordAsValue(stream);\n } else if (type == \"interpolation\") {\n return pushContext(state, stream, \"interpolation\");\n }\n return \"prop\";\n };\n\n states.propBlock = function(type, _stream, state) {\n if (type == \"}\") return popContext(state);\n if (type == \"word\") { override = \"property\"; return \"maybeprop\"; }\n return state.context.type;\n };\n\n states.parens = function(type, stream, state) {\n if (type == \"{\" || type == \"}\") return popAndPass(type, stream, state);\n if (type == \")\") return popContext(state);\n if (type == \"(\") return pushContext(state, stream, \"parens\");\n if (type == \"interpolation\") return pushContext(state, stream, \"interpolation\");\n if (type == \"word\") wordAsValue(stream);\n return \"parens\";\n };\n\n states.pseudo = function(type, stream, state) {\n if (type == \"meta\") return \"pseudo\";\n\n if (type == \"word\") {\n override = \"variable-3\";\n return state.context.type;\n }\n return pass(type, stream, state);\n };\n\n states.documentTypes = function(type, stream, state) {\n if (type == \"word\" && documentTypes.hasOwnProperty(stream.current())) {\n override = \"tag\";\n return state.context.type;\n } else {\n return states.atBlock(type, stream, state);\n }\n };\n\n states.atBlock = function(type, stream, state) {\n if (type == \"(\") return pushContext(state, stream, \"atBlock_parens\");\n if (type == \"}\" || type == \";\") return popAndPass(type, stream, state);\n if (type == \"{\") return popContext(state) && pushContext(state, stream, allowNested ? \"block\" : \"top\");\n\n if (type == \"interpolation\") return pushContext(state, stream, \"interpolation\");\n\n if (type == \"word\") {\n var word = stream.current().toLowerCase();\n if (word == \"only\" || word == \"not\" || word == \"and\" || word == \"or\")\n override = \"keyword\";\n else if (mediaTypes.hasOwnProperty(word))\n override = \"attribute\";\n else if (mediaFeatures.hasOwnProperty(word))\n override = \"property\";\n else if (mediaValueKeywords.hasOwnProperty(word))\n override = \"keyword\";\n else if (propertyKeywords.hasOwnProperty(word))\n override = \"property\";\n else if (nonStandardPropertyKeywords.hasOwnProperty(word))\n override = highlightNonStandardPropertyKeywords ? \"string-2\" : \"property\";\n else if (valueKeywords.hasOwnProperty(word))\n override = \"atom\";\n else if (colorKeywords.hasOwnProperty(word))\n override = \"keyword\";\n else\n override = \"error\";\n }\n return state.context.type;\n };\n\n states.atComponentBlock = function(type, stream, state) {\n if (type == \"}\")\n return popAndPass(type, stream, state);\n if (type == \"{\")\n return popContext(state) && pushContext(state, stream, allowNested ? \"block\" : \"top\", false);\n if (type == \"word\")\n override = \"error\";\n return state.context.type;\n };\n\n states.atBlock_parens = function(type, stream, state) {\n if (type == \")\") return popContext(state);\n if (type == \"{\" || type == \"}\") return popAndPass(type, stream, state, 2);\n return states.atBlock(type, stream, state);\n };\n\n states.restricted_atBlock_before = function(type, stream, state) {\n if (type == \"{\")\n return pushContext(state, stream, \"restricted_atBlock\");\n if (type == \"word\" && state.stateArg == \"@counter-style\") {\n override = \"variable\";\n return \"restricted_atBlock_before\";\n }\n return pass(type, stream, state);\n };\n\n states.restricted_atBlock = function(type, stream, state) {\n if (type == \"}\") {\n state.stateArg = null;\n return popContext(state);\n }\n if (type == \"word\") {\n if ((state.stateArg == \"@font-face\" && !fontProperties.hasOwnProperty(stream.current().toLowerCase())) ||\n (state.stateArg == \"@counter-style\" && !counterDescriptors.hasOwnProperty(stream.current().toLowerCase())))\n override = \"error\";\n else\n override = \"property\";\n return \"maybeprop\";\n }\n return \"restricted_atBlock\";\n };\n\n states.keyframes = function(type, stream, state) {\n if (type == \"word\") { override = \"variable\"; return \"keyframes\"; }\n if (type == \"{\") return pushContext(state, stream, \"top\");\n return pass(type, stream, state);\n };\n\n states.at = function(type, stream, state) {\n if (type == \";\") return popContext(state);\n if (type == \"{\" || type == \"}\") return popAndPass(type, stream, state);\n if (type == \"word\") override = \"tag\";\n else if (type == \"hash\") override = \"builtin\";\n return \"at\";\n };\n\n states.interpolation = function(type, stream, state) {\n if (type == \"}\") return popContext(state);\n if (type == \"{\" || type == \";\") return popAndPass(type, stream, state);\n if (type == \"word\") override = \"variable\";\n else if (type != \"variable\" && type != \"(\" && type != \")\") override = \"error\";\n return \"interpolation\";\n };\n\n return {\n startState: function(base) {\n return {tokenize: null,\n state: inline ? \"block\" : \"top\",\n stateArg: null,\n context: new Context(inline ? \"block\" : \"top\", base || 0, null)};\n },\n\n token: function(stream, state) {\n if (!state.tokenize && stream.eatSpace()) return null;\n var style = (state.tokenize || tokenBase)(stream, state);\n if (style && typeof style == \"object\") {\n type = style[1];\n style = style[0];\n }\n override = style;\n if (type != \"comment\")\n state.state = states[state.state](type, stream, state);\n return override;\n },\n\n indent: function(state, textAfter) {\n var cx = state.context, ch = textAfter && textAfter.charAt(0);\n var indent = cx.indent;\n if (cx.type == \"prop\" && (ch == \"}\" || ch == \")\")) cx = cx.prev;\n if (cx.prev) {\n if (ch == \"}\" && (cx.type == \"block\" || cx.type == \"top\" ||\n cx.type == \"interpolation\" || cx.type == \"restricted_atBlock\")) {\n // Resume indentation from parent context.\n cx = cx.prev;\n indent = cx.indent;\n } else if (ch == \")\" && (cx.type == \"parens\" || cx.type == \"atBlock_parens\") ||\n ch == \"{\" && (cx.type == \"at\" || cx.type == \"atBlock\")) {\n // Dedent relative to current context.\n indent = Math.max(0, cx.indent - indentUnit);\n }\n }\n return indent;\n },\n\n electricChars: \"}\",\n blockCommentStart: \"/*\",\n blockCommentEnd: \"*/\",\n blockCommentContinue: \" * \",\n lineComment: lineComment,\n fold: \"brace\"\n };\n});\n\n function keySet(array) {\n var keys = {};\n for (var i = 0; i < array.length; ++i) {\n keys[array[i].toLowerCase()] = true;\n }\n return keys;\n }\n\n var documentTypes_ = [\n \"domain\", \"regexp\", \"url\", \"url-prefix\"\n ], documentTypes = keySet(documentTypes_);\n\n var mediaTypes_ = [\n \"all\", \"aural\", \"braille\", \"handheld\", \"print\", \"projection\", \"screen\",\n \"tty\", \"tv\", \"embossed\"\n ], mediaTypes = keySet(mediaTypes_);\n\n var mediaFeatures_ = [\n \"width\", \"min-width\", \"max-width\", \"height\", \"min-height\", \"max-height\",\n \"device-width\", \"min-device-width\", \"max-device-width\", \"device-height\",\n \"min-device-height\", \"max-device-height\", \"aspect-ratio\",\n \"min-aspect-ratio\", \"max-aspect-ratio\", \"device-aspect-ratio\",\n \"min-device-aspect-ratio\", \"max-device-aspect-ratio\", \"color\", \"min-color\",\n \"max-color\", \"color-index\", \"min-color-index\", \"max-color-index\",\n \"monochrome\", \"min-monochrome\", \"max-monochrome\", \"resolution\",\n \"min-resolution\", \"max-resolution\", \"scan\", \"grid\", \"orientation\",\n \"device-pixel-ratio\", \"min-device-pixel-ratio\", \"max-device-pixel-ratio\",\n \"pointer\", \"any-pointer\", \"hover\", \"any-hover\", \"prefers-color-scheme\"\n ], mediaFeatures = keySet(mediaFeatures_);\n\n var mediaValueKeywords_ = [\n \"landscape\", \"portrait\", \"none\", \"coarse\", \"fine\", \"on-demand\", \"hover\",\n \"interlace\", \"progressive\",\n \"dark\", \"light\"\n ], mediaValueKeywords = keySet(mediaValueKeywords_);\n\n var propertyKeywords_ = [\n \"align-content\", \"align-items\", \"align-self\", \"alignment-adjust\",\n \"alignment-baseline\", \"all\", \"anchor-point\", \"animation\", \"animation-delay\",\n \"animation-direction\", \"animation-duration\", \"animation-fill-mode\",\n \"animation-iteration-count\", \"animation-name\", \"animation-play-state\",\n \"animation-timing-function\", \"appearance\", \"azimuth\", \"backdrop-filter\",\n \"backface-visibility\", \"background\", \"background-attachment\",\n \"background-blend-mode\", \"background-clip\", \"background-color\",\n \"background-image\", \"background-origin\", \"background-position\",\n \"background-position-x\", \"background-position-y\", \"background-repeat\",\n \"background-size\", \"baseline-shift\", \"binding\", \"bleed\", \"block-size\",\n \"bookmark-label\", \"bookmark-level\", \"bookmark-state\", \"bookmark-target\",\n \"border\", \"border-bottom\", \"border-bottom-color\", \"border-bottom-left-radius\",\n \"border-bottom-right-radius\", \"border-bottom-style\", \"border-bottom-width\",\n \"border-collapse\", \"border-color\", \"border-image\", \"border-image-outset\",\n \"border-image-repeat\", \"border-image-slice\", \"border-image-source\",\n \"border-image-width\", \"border-left\", \"border-left-color\", \"border-left-style\",\n \"border-left-width\", \"border-radius\", \"border-right\", \"border-right-color\",\n \"border-right-style\", \"border-right-width\", \"border-spacing\", \"border-style\",\n \"border-top\", \"border-top-color\", \"border-top-left-radius\",\n \"border-top-right-radius\", \"border-top-style\", \"border-top-width\",\n \"border-width\", \"bottom\", \"box-decoration-break\", \"box-shadow\", \"box-sizing\",\n \"break-after\", \"break-before\", \"break-inside\", \"caption-side\", \"caret-color\",\n \"clear\", \"clip\", \"color\", \"color-profile\", \"column-count\", \"column-fill\",\n \"column-gap\", \"column-rule\", \"column-rule-color\", \"column-rule-style\",\n \"column-rule-width\", \"column-span\", \"column-width\", \"columns\", \"contain\",\n \"content\", \"counter-increment\", \"counter-reset\", \"crop\", \"cue\", \"cue-after\",\n \"cue-before\", \"cursor\", \"direction\", \"display\", \"dominant-baseline\",\n \"drop-initial-after-adjust\", \"drop-initial-after-align\",\n \"drop-initial-before-adjust\", \"drop-initial-before-align\", \"drop-initial-size\",\n \"drop-initial-value\", \"elevation\", \"empty-cells\", \"fit\", \"fit-content\", \"fit-position\",\n \"flex\", \"flex-basis\", \"flex-direction\", \"flex-flow\", \"flex-grow\",\n \"flex-shrink\", \"flex-wrap\", \"float\", \"float-offset\", \"flow-from\", \"flow-into\",\n \"font\", \"font-family\", \"font-feature-settings\", \"font-kerning\",\n \"font-language-override\", \"font-optical-sizing\", \"font-size\",\n \"font-size-adjust\", \"font-stretch\", \"font-style\", \"font-synthesis\",\n \"font-variant\", \"font-variant-alternates\", \"font-variant-caps\",\n \"font-variant-east-asian\", \"font-variant-ligatures\", \"font-variant-numeric\",\n \"font-variant-position\", \"font-variation-settings\", \"font-weight\", \"gap\",\n \"grid\", \"grid-area\", \"grid-auto-columns\", \"grid-auto-flow\", \"grid-auto-rows\",\n \"grid-column\", \"grid-column-end\", \"grid-column-gap\", \"grid-column-start\",\n \"grid-gap\", \"grid-row\", \"grid-row-end\", \"grid-row-gap\", \"grid-row-start\",\n \"grid-template\", \"grid-template-areas\", \"grid-template-columns\",\n \"grid-template-rows\", \"hanging-punctuation\", \"height\", \"hyphens\", \"icon\",\n \"image-orientation\", \"image-rendering\", \"image-resolution\", \"inline-box-align\",\n \"inset\", \"inset-block\", \"inset-block-end\", \"inset-block-start\", \"inset-inline\",\n \"inset-inline-end\", \"inset-inline-start\", \"isolation\", \"justify-content\",\n \"justify-items\", \"justify-self\", \"left\", \"letter-spacing\", \"line-break\",\n \"line-height\", \"line-height-step\", \"line-stacking\", \"line-stacking-ruby\",\n \"line-stacking-shift\", \"line-stacking-strategy\", \"list-style\",\n \"list-style-image\", \"list-style-position\", \"list-style-type\", \"margin\",\n \"margin-bottom\", \"margin-left\", \"margin-right\", \"margin-top\", \"marks\",\n \"marquee-direction\", \"marquee-loop\", \"marquee-play-count\", \"marquee-speed\",\n \"marquee-style\", \"mask-clip\", \"mask-composite\", \"mask-image\", \"mask-mode\",\n \"mask-origin\", \"mask-position\", \"mask-repeat\", \"mask-size\",\"mask-type\",\n \"max-block-size\", \"max-height\", \"max-inline-size\",\n \"max-width\", \"min-block-size\", \"min-height\", \"min-inline-size\", \"min-width\",\n \"mix-blend-mode\", \"move-to\", \"nav-down\", \"nav-index\", \"nav-left\", \"nav-right\",\n \"nav-up\", \"object-fit\", \"object-position\", \"offset\", \"offset-anchor\",\n \"offset-distance\", \"offset-path\", \"offset-position\", \"offset-rotate\",\n \"opacity\", \"order\", \"orphans\", \"outline\", \"outline-color\", \"outline-offset\",\n \"outline-style\", \"outline-width\", \"overflow\", \"overflow-style\",\n \"overflow-wrap\", \"overflow-x\", \"overflow-y\", \"padding\", \"padding-bottom\",\n \"padding-left\", \"padding-right\", \"padding-top\", \"page\", \"page-break-after\",\n \"page-break-before\", \"page-break-inside\", \"page-policy\", \"pause\",\n \"pause-after\", \"pause-before\", \"perspective\", \"perspective-origin\", \"pitch\",\n \"pitch-range\", \"place-content\", \"place-items\", \"place-self\", \"play-during\",\n \"position\", \"presentation-level\", \"punctuation-trim\", \"quotes\",\n \"region-break-after\", \"region-break-before\", \"region-break-inside\",\n \"region-fragment\", \"rendering-intent\", \"resize\", \"rest\", \"rest-after\",\n \"rest-before\", \"richness\", \"right\", \"rotate\", \"rotation\", \"rotation-point\",\n \"row-gap\", \"ruby-align\", \"ruby-overhang\", \"ruby-position\", \"ruby-span\",\n \"scale\", \"scroll-behavior\", \"scroll-margin\", \"scroll-margin-block\",\n \"scroll-margin-block-end\", \"scroll-margin-block-start\", \"scroll-margin-bottom\",\n \"scroll-margin-inline\", \"scroll-margin-inline-end\",\n \"scroll-margin-inline-start\", \"scroll-margin-left\", \"scroll-margin-right\",\n \"scroll-margin-top\", \"scroll-padding\", \"scroll-padding-block\",\n \"scroll-padding-block-end\", \"scroll-padding-block-start\",\n \"scroll-padding-bottom\", \"scroll-padding-inline\", \"scroll-padding-inline-end\",\n \"scroll-padding-inline-start\", \"scroll-padding-left\", \"scroll-padding-right\",\n \"scroll-padding-top\", \"scroll-snap-align\", \"scroll-snap-type\",\n \"shape-image-threshold\", \"shape-inside\", \"shape-margin\", \"shape-outside\",\n \"size\", \"speak\", \"speak-as\", \"speak-header\", \"speak-numeral\",\n \"speak-punctuation\", \"speech-rate\", \"stress\", \"string-set\", \"tab-size\",\n \"table-layout\", \"target\", \"target-name\", \"target-new\", \"target-position\",\n \"text-align\", \"text-align-last\", \"text-combine-upright\", \"text-decoration\",\n \"text-decoration-color\", \"text-decoration-line\", \"text-decoration-skip\",\n \"text-decoration-skip-ink\", \"text-decoration-style\", \"text-emphasis\",\n \"text-emphasis-color\", \"text-emphasis-position\", \"text-emphasis-style\",\n \"text-height\", \"text-indent\", \"text-justify\", \"text-orientation\",\n \"text-outline\", \"text-overflow\", \"text-rendering\", \"text-shadow\",\n \"text-size-adjust\", \"text-space-collapse\", \"text-transform\",\n \"text-underline-position\", \"text-wrap\", \"top\", \"touch-action\", \"transform\", \"transform-origin\",\n \"transform-style\", \"transition\", \"transition-delay\", \"transition-duration\",\n \"transition-property\", \"transition-timing-function\", \"translate\",\n \"unicode-bidi\", \"user-select\", \"vertical-align\", \"visibility\", \"voice-balance\",\n \"voice-duration\", \"voice-family\", \"voice-pitch\", \"voice-range\", \"voice-rate\",\n \"voice-stress\", \"voice-volume\", \"volume\", \"white-space\", \"widows\", \"width\",\n \"will-change\", \"word-break\", \"word-spacing\", \"word-wrap\", \"writing-mode\", \"z-index\",\n // SVG-specific\n \"clip-path\", \"clip-rule\", \"mask\", \"enable-background\", \"filter\", \"flood-color\",\n \"flood-opacity\", \"lighting-color\", \"stop-color\", \"stop-opacity\", \"pointer-events\",\n \"color-interpolation\", \"color-interpolation-filters\",\n \"color-rendering\", \"fill\", \"fill-opacity\", \"fill-rule\", \"image-rendering\",\n \"marker\", \"marker-end\", \"marker-mid\", \"marker-start\", \"paint-order\", \"shape-rendering\", \"stroke\",\n \"stroke-dasharray\", \"stroke-dashoffset\", \"stroke-linecap\", \"stroke-linejoin\",\n \"stroke-miterlimit\", \"stroke-opacity\", \"stroke-width\", \"text-rendering\",\n \"baseline-shift\", \"dominant-baseline\", \"glyph-orientation-horizontal\",\n \"glyph-orientation-vertical\", \"text-anchor\", \"writing-mode\",\n ], propertyKeywords = keySet(propertyKeywords_);\n\n var nonStandardPropertyKeywords_ = [\n \"accent-color\", \"aspect-ratio\", \"border-block\", \"border-block-color\", \"border-block-end\",\n \"border-block-end-color\", \"border-block-end-style\", \"border-block-end-width\",\n \"border-block-start\", \"border-block-start-color\", \"border-block-start-style\",\n \"border-block-start-width\", \"border-block-style\", \"border-block-width\",\n \"border-inline\", \"border-inline-color\", \"border-inline-end\",\n \"border-inline-end-color\", \"border-inline-end-style\",\n \"border-inline-end-width\", \"border-inline-start\", \"border-inline-start-color\",\n \"border-inline-start-style\", \"border-inline-start-width\",\n \"border-inline-style\", \"border-inline-width\", \"content-visibility\", \"margin-block\",\n \"margin-block-end\", \"margin-block-start\", \"margin-inline\", \"margin-inline-end\",\n \"margin-inline-start\", \"overflow-anchor\", \"overscroll-behavior\", \"padding-block\", \"padding-block-end\",\n \"padding-block-start\", \"padding-inline\", \"padding-inline-end\",\n \"padding-inline-start\", \"scroll-snap-stop\", \"scrollbar-3d-light-color\",\n \"scrollbar-arrow-color\", \"scrollbar-base-color\", \"scrollbar-dark-shadow-color\",\n \"scrollbar-face-color\", \"scrollbar-highlight-color\", \"scrollbar-shadow-color\",\n \"scrollbar-track-color\", \"searchfield-cancel-button\", \"searchfield-decoration\",\n \"searchfield-results-button\", \"searchfield-results-decoration\", \"shape-inside\", \"zoom\"\n ], nonStandardPropertyKeywords = keySet(nonStandardPropertyKeywords_);\n\n var fontProperties_ = [\n \"font-display\", \"font-family\", \"src\", \"unicode-range\", \"font-variant\",\n \"font-feature-settings\", \"font-stretch\", \"font-weight\", \"font-style\"\n ], fontProperties = keySet(fontProperties_);\n\n var counterDescriptors_ = [\n \"additive-symbols\", \"fallback\", \"negative\", \"pad\", \"prefix\", \"range\",\n \"speak-as\", \"suffix\", \"symbols\", \"system\"\n ], counterDescriptors = keySet(counterDescriptors_);\n\n var colorKeywords_ = [\n \"aliceblue\", \"antiquewhite\", \"aqua\", \"aquamarine\", \"azure\", \"beige\",\n \"bisque\", \"black\", \"blanchedalmond\", \"blue\", \"blueviolet\", \"brown\",\n \"burlywood\", \"cadetblue\", \"chartreuse\", \"chocolate\", \"coral\", \"cornflowerblue\",\n \"cornsilk\", \"crimson\", \"cyan\", \"darkblue\", \"darkcyan\", \"darkgoldenrod\",\n \"darkgray\", \"darkgreen\", \"darkgrey\", \"darkkhaki\", \"darkmagenta\", \"darkolivegreen\",\n \"darkorange\", \"darkorchid\", \"darkred\", \"darksalmon\", \"darkseagreen\",\n \"darkslateblue\", \"darkslategray\", \"darkslategrey\", \"darkturquoise\", \"darkviolet\",\n \"deeppink\", \"deepskyblue\", \"dimgray\", \"dimgrey\", \"dodgerblue\", \"firebrick\",\n \"floralwhite\", \"forestgreen\", \"fuchsia\", \"gainsboro\", \"ghostwhite\",\n \"gold\", \"goldenrod\", \"gray\", \"grey\", \"green\", \"greenyellow\", \"honeydew\",\n \"hotpink\", \"indianred\", \"indigo\", \"ivory\", \"khaki\", \"lavender\",\n \"lavenderblush\", \"lawngreen\", \"lemonchiffon\", \"lightblue\", \"lightcoral\",\n \"lightcyan\", \"lightgoldenrodyellow\", \"lightgray\", \"lightgreen\", \"lightgrey\", \"lightpink\",\n \"lightsalmon\", \"lightseagreen\", \"lightskyblue\", \"lightslategray\", \"lightslategrey\",\n \"lightsteelblue\", \"lightyellow\", \"lime\", \"limegreen\", \"linen\", \"magenta\",\n \"maroon\", \"mediumaquamarine\", \"mediumblue\", \"mediumorchid\", \"mediumpurple\",\n \"mediumseagreen\", \"mediumslateblue\", \"mediumspringgreen\", \"mediumturquoise\",\n \"mediumvioletred\", \"midnightblue\", \"mintcream\", \"mistyrose\", \"moccasin\",\n \"navajowhite\", \"navy\", \"oldlace\", \"olive\", \"olivedrab\", \"orange\", \"orangered\",\n \"orchid\", \"palegoldenrod\", \"palegreen\", \"paleturquoise\", \"palevioletred\",\n \"papayawhip\", \"peachpuff\", \"peru\", \"pink\", \"plum\", \"powderblue\",\n \"purple\", \"rebeccapurple\", \"red\", \"rosybrown\", \"royalblue\", \"saddlebrown\",\n \"salmon\", \"sandybrown\", \"seagreen\", \"seashell\", \"sienna\", \"silver\", \"skyblue\",\n \"slateblue\", \"slategray\", \"slategrey\", \"snow\", \"springgreen\", \"steelblue\", \"tan\",\n \"teal\", \"thistle\", \"tomato\", \"turquoise\", \"violet\", \"wheat\", \"white\",\n \"whitesmoke\", \"yellow\", \"yellowgreen\"\n ], colorKeywords = keySet(colorKeywords_);\n\n var valueKeywords_ = [\n \"above\", \"absolute\", \"activeborder\", \"additive\", \"activecaption\", \"afar\",\n \"after-white-space\", \"ahead\", \"alias\", \"all\", \"all-scroll\", \"alphabetic\", \"alternate\",\n \"always\", \"amharic\", \"amharic-abegede\", \"antialiased\", \"appworkspace\",\n \"arabic-indic\", \"armenian\", \"asterisks\", \"attr\", \"auto\", \"auto-flow\", \"avoid\", \"avoid-column\", \"avoid-page\",\n \"avoid-region\", \"axis-pan\", \"background\", \"backwards\", \"baseline\", \"below\", \"bidi-override\", \"binary\",\n \"bengali\", \"blink\", \"block\", \"block-axis\", \"blur\", \"bold\", \"bolder\", \"border\", \"border-box\",\n \"both\", \"bottom\", \"break\", \"break-all\", \"break-word\", \"brightness\", \"bullets\", \"button\", \"button-bevel\",\n \"buttonface\", \"buttonhighlight\", \"buttonshadow\", \"buttontext\", \"calc\", \"cambodian\",\n \"capitalize\", \"caps-lock-indicator\", \"caption\", \"captiontext\", \"caret\",\n \"cell\", \"center\", \"checkbox\", \"circle\", \"cjk-decimal\", \"cjk-earthly-branch\",\n \"cjk-heavenly-stem\", \"cjk-ideographic\", \"clear\", \"clip\", \"close-quote\",\n \"col-resize\", \"collapse\", \"color\", \"color-burn\", \"color-dodge\", \"column\", \"column-reverse\",\n \"compact\", \"condensed\", \"contain\", \"content\", \"contents\",\n \"content-box\", \"context-menu\", \"continuous\", \"contrast\", \"copy\", \"counter\", \"counters\", \"cover\", \"crop\",\n \"cross\", \"crosshair\", \"cubic-bezier\", \"currentcolor\", \"cursive\", \"cyclic\", \"darken\", \"dashed\", \"decimal\",\n \"decimal-leading-zero\", \"default\", \"default-button\", \"dense\", \"destination-atop\",\n \"destination-in\", \"destination-out\", \"destination-over\", \"devanagari\", \"difference\",\n \"disc\", \"discard\", \"disclosure-closed\", \"disclosure-open\", \"document\",\n \"dot-dash\", \"dot-dot-dash\",\n \"dotted\", \"double\", \"down\", \"drop-shadow\", \"e-resize\", \"ease\", \"ease-in\", \"ease-in-out\", \"ease-out\",\n \"element\", \"ellipse\", \"ellipsis\", \"embed\", \"end\", \"ethiopic\", \"ethiopic-abegede\",\n \"ethiopic-abegede-am-et\", \"ethiopic-abegede-gez\", \"ethiopic-abegede-ti-er\",\n \"ethiopic-abegede-ti-et\", \"ethiopic-halehame-aa-er\",\n \"ethiopic-halehame-aa-et\", \"ethiopic-halehame-am-et\",\n \"ethiopic-halehame-gez\", \"ethiopic-halehame-om-et\",\n \"ethiopic-halehame-sid-et\", \"ethiopic-halehame-so-et\",\n \"ethiopic-halehame-ti-er\", \"ethiopic-halehame-ti-et\", \"ethiopic-halehame-tig\",\n \"ethiopic-numeric\", \"ew-resize\", \"exclusion\", \"expanded\", \"extends\", \"extra-condensed\",\n \"extra-expanded\", \"fantasy\", \"fast\", \"fill\", \"fill-box\", \"fixed\", \"flat\", \"flex\", \"flex-end\", \"flex-start\", \"footnotes\",\n \"forwards\", \"from\", \"geometricPrecision\", \"georgian\", \"grayscale\", \"graytext\", \"grid\", \"groove\",\n \"gujarati\", \"gurmukhi\", \"hand\", \"hangul\", \"hangul-consonant\", \"hard-light\", \"hebrew\",\n \"help\", \"hidden\", \"hide\", \"higher\", \"highlight\", \"highlighttext\",\n \"hiragana\", \"hiragana-iroha\", \"horizontal\", \"hsl\", \"hsla\", \"hue\", \"hue-rotate\", \"icon\", \"ignore\",\n \"inactiveborder\", \"inactivecaption\", \"inactivecaptiontext\", \"infinite\",\n \"infobackground\", \"infotext\", \"inherit\", \"initial\", \"inline\", \"inline-axis\",\n \"inline-block\", \"inline-flex\", \"inline-grid\", \"inline-table\", \"inset\", \"inside\", \"intrinsic\", \"invert\",\n \"italic\", \"japanese-formal\", \"japanese-informal\", \"justify\", \"kannada\",\n \"katakana\", \"katakana-iroha\", \"keep-all\", \"khmer\",\n \"korean-hangul-formal\", \"korean-hanja-formal\", \"korean-hanja-informal\",\n \"landscape\", \"lao\", \"large\", \"larger\", \"left\", \"level\", \"lighter\", \"lighten\",\n \"line-through\", \"linear\", \"linear-gradient\", \"lines\", \"list-item\", \"listbox\", \"listitem\",\n \"local\", \"logical\", \"loud\", \"lower\", \"lower-alpha\", \"lower-armenian\",\n \"lower-greek\", \"lower-hexadecimal\", \"lower-latin\", \"lower-norwegian\",\n \"lower-roman\", \"lowercase\", \"ltr\", \"luminosity\", \"malayalam\", \"manipulation\", \"match\", \"matrix\", \"matrix3d\",\n \"media-controls-background\", \"media-current-time-display\",\n \"media-fullscreen-button\", \"media-mute-button\", \"media-play-button\",\n \"media-return-to-realtime-button\", \"media-rewind-button\",\n \"media-seek-back-button\", \"media-seek-forward-button\", \"media-slider\",\n \"media-sliderthumb\", \"media-time-remaining-display\", \"media-volume-slider\",\n \"media-volume-slider-container\", \"media-volume-sliderthumb\", \"medium\",\n \"menu\", \"menulist\", \"menulist-button\", \"menulist-text\",\n \"menulist-textfield\", \"menutext\", \"message-box\", \"middle\", \"min-intrinsic\",\n \"mix\", \"mongolian\", \"monospace\", \"move\", \"multiple\", \"multiple_mask_images\", \"multiply\", \"myanmar\", \"n-resize\",\n \"narrower\", \"ne-resize\", \"nesw-resize\", \"no-close-quote\", \"no-drop\",\n \"no-open-quote\", \"no-repeat\", \"none\", \"normal\", \"not-allowed\", \"nowrap\",\n \"ns-resize\", \"numbers\", \"numeric\", \"nw-resize\", \"nwse-resize\", \"oblique\", \"octal\", \"opacity\", \"open-quote\",\n \"optimizeLegibility\", \"optimizeSpeed\", \"oriya\", \"oromo\", \"outset\",\n \"outside\", \"outside-shape\", \"overlay\", \"overline\", \"padding\", \"padding-box\",\n \"painted\", \"page\", \"paused\", \"persian\", \"perspective\", \"pinch-zoom\", \"plus-darker\", \"plus-lighter\",\n \"pointer\", \"polygon\", \"portrait\", \"pre\", \"pre-line\", \"pre-wrap\", \"preserve-3d\",\n \"progress\", \"push-button\", \"radial-gradient\", \"radio\", \"read-only\",\n \"read-write\", \"read-write-plaintext-only\", \"rectangle\", \"region\",\n \"relative\", \"repeat\", \"repeating-linear-gradient\",\n \"repeating-radial-gradient\", \"repeat-x\", \"repeat-y\", \"reset\", \"reverse\",\n \"rgb\", \"rgba\", \"ridge\", \"right\", \"rotate\", \"rotate3d\", \"rotateX\", \"rotateY\",\n \"rotateZ\", \"round\", \"row\", \"row-resize\", \"row-reverse\", \"rtl\", \"run-in\", \"running\",\n \"s-resize\", \"sans-serif\", \"saturate\", \"saturation\", \"scale\", \"scale3d\", \"scaleX\", \"scaleY\", \"scaleZ\", \"screen\",\n \"scroll\", \"scrollbar\", \"scroll-position\", \"se-resize\", \"searchfield\",\n \"searchfield-cancel-button\", \"searchfield-decoration\",\n \"searchfield-results-button\", \"searchfield-results-decoration\", \"self-start\", \"self-end\",\n \"semi-condensed\", \"semi-expanded\", \"separate\", \"sepia\", \"serif\", \"show\", \"sidama\",\n \"simp-chinese-formal\", \"simp-chinese-informal\", \"single\",\n \"skew\", \"skewX\", \"skewY\", \"skip-white-space\", \"slide\", \"slider-horizontal\",\n \"slider-vertical\", \"sliderthumb-horizontal\", \"sliderthumb-vertical\", \"slow\",\n \"small\", \"small-caps\", \"small-caption\", \"smaller\", \"soft-light\", \"solid\", \"somali\",\n \"source-atop\", \"source-in\", \"source-out\", \"source-over\", \"space\", \"space-around\", \"space-between\", \"space-evenly\", \"spell-out\", \"square\",\n \"square-button\", \"start\", \"static\", \"status-bar\", \"stretch\", \"stroke\", \"stroke-box\", \"sub\",\n \"subpixel-antialiased\", \"svg_masks\", \"super\", \"sw-resize\", \"symbolic\", \"symbols\", \"system-ui\", \"table\",\n \"table-caption\", \"table-cell\", \"table-column\", \"table-column-group\",\n \"table-footer-group\", \"table-header-group\", \"table-row\", \"table-row-group\",\n \"tamil\",\n \"telugu\", \"text\", \"text-bottom\", \"text-top\", \"textarea\", \"textfield\", \"thai\",\n \"thick\", \"thin\", \"threeddarkshadow\", \"threedface\", \"threedhighlight\",\n \"threedlightshadow\", \"threedshadow\", \"tibetan\", \"tigre\", \"tigrinya-er\",\n \"tigrinya-er-abegede\", \"tigrinya-et\", \"tigrinya-et-abegede\", \"to\", \"top\",\n \"trad-chinese-formal\", \"trad-chinese-informal\", \"transform\",\n \"translate\", \"translate3d\", \"translateX\", \"translateY\", \"translateZ\",\n \"transparent\", \"ultra-condensed\", \"ultra-expanded\", \"underline\", \"unidirectional-pan\", \"unset\", \"up\",\n \"upper-alpha\", \"upper-armenian\", \"upper-greek\", \"upper-hexadecimal\",\n \"upper-latin\", \"upper-norwegian\", \"upper-roman\", \"uppercase\", \"urdu\", \"url\",\n \"var\", \"vertical\", \"vertical-text\", \"view-box\", \"visible\", \"visibleFill\", \"visiblePainted\",\n \"visibleStroke\", \"visual\", \"w-resize\", \"wait\", \"wave\", \"wider\",\n \"window\", \"windowframe\", \"windowtext\", \"words\", \"wrap\", \"wrap-reverse\", \"x-large\", \"x-small\", \"xor\",\n \"xx-large\", \"xx-small\"\n ], valueKeywords = keySet(valueKeywords_);\n\n var allWords = documentTypes_.concat(mediaTypes_).concat(mediaFeatures_).concat(mediaValueKeywords_)\n .concat(propertyKeywords_).concat(nonStandardPropertyKeywords_).concat(colorKeywords_)\n .concat(valueKeywords_);\n CodeMirror.registerHelper(\"hintWords\", \"css\", allWords);\n\n function tokenCComment(stream, state) {\n var maybeEnd = false, ch;\n while ((ch = stream.next()) != null) {\n if (maybeEnd && ch == \"/\") {\n state.tokenize = null;\n break;\n }\n maybeEnd = (ch == \"*\");\n }\n return [\"comment\", \"comment\"];\n }\n\n CodeMirror.defineMIME(\"text/css\", {\n documentTypes: documentTypes,\n mediaTypes: mediaTypes,\n mediaFeatures: mediaFeatures,\n mediaValueKeywords: mediaValueKeywords,\n propertyKeywords: propertyKeywords,\n nonStandardPropertyKeywords: nonStandardPropertyKeywords,\n fontProperties: fontProperties,\n counterDescriptors: counterDescriptors,\n colorKeywords: colorKeywords,\n valueKeywords: valueKeywords,\n tokenHooks: {\n \"/\": function(stream, state) {\n if (!stream.eat(\"*\")) return false;\n state.tokenize = tokenCComment;\n return tokenCComment(stream, state);\n }\n },\n name: \"css\"\n });\n\n CodeMirror.defineMIME(\"text/x-scss\", {\n mediaTypes: mediaTypes,\n mediaFeatures: mediaFeatures,\n mediaValueKeywords: mediaValueKeywords,\n propertyKeywords: propertyKeywords,\n nonStandardPropertyKeywords: nonStandardPropertyKeywords,\n colorKeywords: colorKeywords,\n valueKeywords: valueKeywords,\n fontProperties: fontProperties,\n allowNested: true,\n lineComment: \"//\",\n tokenHooks: {\n \"/\": function(stream, state) {\n if (stream.eat(\"/\")) {\n stream.skipToEnd();\n return [\"comment\", \"comment\"];\n } else if (stream.eat(\"*\")) {\n state.tokenize = tokenCComment;\n return tokenCComment(stream, state);\n } else {\n return [\"operator\", \"operator\"];\n }\n },\n \":\": function(stream) {\n if (stream.match(/^\\s*\\{/, false))\n return [null, null]\n return false;\n },\n \"$\": function(stream) {\n stream.match(/^[\\w-]+/);\n if (stream.match(/^\\s*:/, false))\n return [\"variable-2\", \"variable-definition\"];\n return [\"variable-2\", \"variable\"];\n },\n \"#\": function(stream) {\n if (!stream.eat(\"{\")) return false;\n return [null, \"interpolation\"];\n }\n },\n name: \"css\",\n helperType: \"scss\"\n });\n\n CodeMirror.defineMIME(\"text/x-less\", {\n mediaTypes: mediaTypes,\n mediaFeatures: mediaFeatures,\n mediaValueKeywords: mediaValueKeywords,\n propertyKeywords: propertyKeywords,\n nonStandardPropertyKeywords: nonStandardPropertyKeywords,\n colorKeywords: colorKeywords,\n valueKeywords: valueKeywords,\n fontProperties: fontProperties,\n allowNested: true,\n lineComment: \"//\",\n tokenHooks: {\n \"/\": function(stream, state) {\n if (stream.eat(\"/\")) {\n stream.skipToEnd();\n return [\"comment\", \"comment\"];\n } else if (stream.eat(\"*\")) {\n state.tokenize = tokenCComment;\n return tokenCComment(stream, state);\n } else {\n return [\"operator\", \"operator\"];\n }\n },\n \"@\": function(stream) {\n if (stream.eat(\"{\")) return [null, \"interpolation\"];\n if (stream.match(/^(charset|document|font-face|import|(-(moz|ms|o|webkit)-)?keyframes|media|namespace|page|supports)\\b/i, false)) return false;\n stream.eatWhile(/[\\w\\\\\\-]/);\n if (stream.match(/^\\s*:/, false))\n return [\"variable-2\", \"variable-definition\"];\n return [\"variable-2\", \"variable\"];\n },\n \"&\": function() {\n return [\"atom\", \"atom\"];\n }\n },\n name: \"css\",\n helperType: \"less\"\n });\n\n CodeMirror.defineMIME(\"text/x-gss\", {\n documentTypes: documentTypes,\n mediaTypes: mediaTypes,\n mediaFeatures: mediaFeatures,\n propertyKeywords: propertyKeywords,\n nonStandardPropertyKeywords: nonStandardPropertyKeywords,\n fontProperties: fontProperties,\n counterDescriptors: counterDescriptors,\n colorKeywords: colorKeywords,\n valueKeywords: valueKeywords,\n supportsAtComponent: true,\n tokenHooks: {\n \"/\": function(stream, state) {\n if (!stream.eat(\"*\")) return false;\n state.tokenize = tokenCComment;\n return tokenCComment(stream, state);\n }\n },\n name: \"css\",\n helperType: \"gss\"\n });\n\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"), require(\"../xml/xml\"), require(\"../javascript/javascript\"), require(\"../css/css\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\", \"../xml/xml\", \"../javascript/javascript\", \"../css/css\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n var defaultTags = {\n script: [\n [\"lang\", /(javascript|babel)/i, \"javascript\"],\n [\"type\", /^(?:text|application)\\/(?:x-)?(?:java|ecma)script$|^module$|^$/i, \"javascript\"],\n [\"type\", /./, \"text/plain\"],\n [null, null, \"javascript\"]\n ],\n style: [\n [\"lang\", /^css$/i, \"css\"],\n [\"type\", /^(text\\/)?(x-)?(stylesheet|css)$/i, \"css\"],\n [\"type\", /./, \"text/plain\"],\n [null, null, \"css\"]\n ]\n };\n\n function maybeBackup(stream, pat, style) {\n var cur = stream.current(), close = cur.search(pat);\n if (close > -1) {\n stream.backUp(cur.length - close);\n } else if (cur.match(/<\\/?$/)) {\n stream.backUp(cur.length);\n if (!stream.match(pat, false)) stream.match(cur);\n }\n return style;\n }\n\n var attrRegexpCache = {};\n function getAttrRegexp(attr) {\n var regexp = attrRegexpCache[attr];\n if (regexp) return regexp;\n return attrRegexpCache[attr] = new RegExp(\"\\\\s+\" + attr + \"\\\\s*=\\\\s*('|\\\")?([^'\\\"]+)('|\\\")?\\\\s*\");\n }\n\n function getAttrValue(text, attr) {\n var match = text.match(getAttrRegexp(attr))\n return match ? /^\\s*(.*?)\\s*$/.exec(match[2])[1] : \"\"\n }\n\n function getTagRegexp(tagName, anchored) {\n return new RegExp((anchored ? \"^\" : \"\") + \"<\\/\\s*\" + tagName + \"\\s*>\", \"i\");\n }\n\n function addTags(from, to) {\n for (var tag in from) {\n var dest = to[tag] || (to[tag] = []);\n var source = from[tag];\n for (var i = source.length - 1; i >= 0; i--)\n dest.unshift(source[i])\n }\n }\n\n function findMatchingMode(tagInfo, tagText) {\n for (var i = 0; i < tagInfo.length; i++) {\n var spec = tagInfo[i];\n if (!spec[0] || spec[1].test(getAttrValue(tagText, spec[0]))) return spec[2];\n }\n }\n\n CodeMirror.defineMode(\"htmlmixed\", function (config, parserConfig) {\n var htmlMode = CodeMirror.getMode(config, {\n name: \"xml\",\n htmlMode: true,\n multilineTagIndentFactor: parserConfig.multilineTagIndentFactor,\n multilineTagIndentPastTag: parserConfig.multilineTagIndentPastTag,\n allowMissingTagName: parserConfig.allowMissingTagName,\n });\n\n var tags = {};\n var configTags = parserConfig && parserConfig.tags, configScript = parserConfig && parserConfig.scriptTypes;\n addTags(defaultTags, tags);\n if (configTags) addTags(configTags, tags);\n if (configScript) for (var i = configScript.length - 1; i >= 0; i--)\n tags.script.unshift([\"type\", configScript[i].matches, configScript[i].mode])\n\n function html(stream, state) {\n var style = htmlMode.token(stream, state.htmlState), tag = /\\btag\\b/.test(style), tagName\n if (tag && !/[<>\\s\\/]/.test(stream.current()) &&\n (tagName = state.htmlState.tagName && state.htmlState.tagName.toLowerCase()) &&\n tags.hasOwnProperty(tagName)) {\n state.inTag = tagName + \" \"\n } else if (state.inTag && tag && />$/.test(stream.current())) {\n var inTag = /^([\\S]+) (.*)/.exec(state.inTag)\n state.inTag = null\n var modeSpec = stream.current() == \">\" && findMatchingMode(tags[inTag[1]], inTag[2])\n var mode = CodeMirror.getMode(config, modeSpec)\n var endTagA = getTagRegexp(inTag[1], true), endTag = getTagRegexp(inTag[1], false);\n state.token = function (stream, state) {\n if (stream.match(endTagA, false)) {\n state.token = html;\n state.localState = state.localMode = null;\n return null;\n }\n return maybeBackup(stream, endTag, state.localMode.token(stream, state.localState));\n };\n state.localMode = mode;\n state.localState = CodeMirror.startState(mode, htmlMode.indent(state.htmlState, \"\", \"\"));\n } else if (state.inTag) {\n state.inTag += stream.current()\n if (stream.eol()) state.inTag += \" \"\n }\n return style;\n };\n\n return {\n startState: function () {\n var state = CodeMirror.startState(htmlMode);\n return {token: html, inTag: null, localMode: null, localState: null, htmlState: state};\n },\n\n copyState: function (state) {\n var local;\n if (state.localState) {\n local = CodeMirror.copyState(state.localMode, state.localState);\n }\n return {token: state.token, inTag: state.inTag,\n localMode: state.localMode, localState: local,\n htmlState: CodeMirror.copyState(htmlMode, state.htmlState)};\n },\n\n token: function (stream, state) {\n return state.token(stream, state);\n },\n\n indent: function (state, textAfter, line) {\n if (!state.localMode || /^\\s*<\\//.test(textAfter))\n return htmlMode.indent(state.htmlState, textAfter, line);\n else if (state.localMode.indent)\n return state.localMode.indent(state.localState, textAfter, line);\n else\n return CodeMirror.Pass;\n },\n\n innerMode: function (state) {\n return {state: state.localState || state.htmlState, mode: state.localMode || htmlMode};\n }\n };\n }, \"xml\", \"javascript\", \"css\");\n\n CodeMirror.defineMIME(\"text/html\", \"htmlmixed\");\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"javascript\", function(config, parserConfig) {\n var indentUnit = config.indentUnit;\n var statementIndent = parserConfig.statementIndent;\n var jsonldMode = parserConfig.jsonld;\n var jsonMode = parserConfig.json || jsonldMode;\n var trackScope = parserConfig.trackScope !== false\n var isTS = parserConfig.typescript;\n var wordRE = parserConfig.wordCharacters || /[\\w$\\xa1-\\uffff]/;\n\n // Tokenizer\n\n var keywords = function(){\n function kw(type) {return {type: type, style: \"keyword\"};}\n var A = kw(\"keyword a\"), B = kw(\"keyword b\"), C = kw(\"keyword c\"), D = kw(\"keyword d\");\n var operator = kw(\"operator\"), atom = {type: \"atom\", style: \"atom\"};\n\n return {\n \"if\": kw(\"if\"), \"while\": A, \"with\": A, \"else\": B, \"do\": B, \"try\": B, \"finally\": B,\n \"return\": D, \"break\": D, \"continue\": D, \"new\": kw(\"new\"), \"delete\": C, \"void\": C, \"throw\": C,\n \"debugger\": kw(\"debugger\"), \"var\": kw(\"var\"), \"const\": kw(\"var\"), \"let\": kw(\"var\"),\n \"function\": kw(\"function\"), \"catch\": kw(\"catch\"),\n \"for\": kw(\"for\"), \"switch\": kw(\"switch\"), \"case\": kw(\"case\"), \"default\": kw(\"default\"),\n \"in\": operator, \"typeof\": operator, \"instanceof\": operator,\n \"true\": atom, \"false\": atom, \"null\": atom, \"undefined\": atom, \"NaN\": atom, \"Infinity\": atom,\n \"this\": kw(\"this\"), \"class\": kw(\"class\"), \"super\": kw(\"atom\"),\n \"yield\": C, \"export\": kw(\"export\"), \"import\": kw(\"import\"), \"extends\": C,\n \"await\": C\n };\n }();\n\n var isOperatorChar = /[+\\-*&%=<>!?|~^@]/;\n var isJsonldKeyword = /^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)\"/;\n\n function readRegexp(stream) {\n var escaped = false, next, inSet = false;\n while ((next = stream.next()) != null) {\n if (!escaped) {\n if (next == \"/\" && !inSet) return;\n if (next == \"[\") inSet = true;\n else if (inSet && next == \"]\") inSet = false;\n }\n escaped = !escaped && next == \"\\\\\";\n }\n }\n\n // Used as scratch variables to communicate multiple values without\n // consing up tons of objects.\n var type, content;\n function ret(tp, style, cont) {\n type = tp; content = cont;\n return style;\n }\n function tokenBase(stream, state) {\n var ch = stream.next();\n if (ch == '\"' || ch == \"'\") {\n state.tokenize = tokenString(ch);\n return state.tokenize(stream, state);\n } else if (ch == \".\" && stream.match(/^\\d[\\d_]*(?:[eE][+\\-]?[\\d_]+)?/)) {\n return ret(\"number\", \"number\");\n } else if (ch == \".\" && stream.match(\"..\")) {\n return ret(\"spread\", \"meta\");\n } else if (/[\\[\\]{}\\(\\),;\\:\\.]/.test(ch)) {\n return ret(ch);\n } else if (ch == \"=\" && stream.eat(\">\")) {\n return ret(\"=>\", \"operator\");\n } else if (ch == \"0\" && stream.match(/^(?:x[\\dA-Fa-f_]+|o[0-7_]+|b[01_]+)n?/)) {\n return ret(\"number\", \"number\");\n } else if (/\\d/.test(ch)) {\n stream.match(/^[\\d_]*(?:n|(?:\\.[\\d_]*)?(?:[eE][+\\-]?[\\d_]+)?)?/);\n return ret(\"number\", \"number\");\n } else if (ch == \"/\") {\n if (stream.eat(\"*\")) {\n state.tokenize = tokenComment;\n return tokenComment(stream, state);\n } else if (stream.eat(\"/\")) {\n stream.skipToEnd();\n return ret(\"comment\", \"comment\");\n } else if (expressionAllowed(stream, state, 1)) {\n readRegexp(stream);\n stream.match(/^\\b(([gimyus])(?![gimyus]*\\2))+\\b/);\n return ret(\"regexp\", \"string-2\");\n } else {\n stream.eat(\"=\");\n return ret(\"operator\", \"operator\", stream.current());\n }\n } else if (ch == \"`\") {\n state.tokenize = tokenQuasi;\n return tokenQuasi(stream, state);\n } else if (ch == \"#\" && stream.peek() == \"!\") {\n stream.skipToEnd();\n return ret(\"meta\", \"meta\");\n } else if (ch == \"#\" && stream.eatWhile(wordRE)) {\n return ret(\"variable\", \"property\")\n } else if (ch == \"<\" && stream.match(\"!--\") ||\n (ch == \"-\" && stream.match(\"->\") && !/\\S/.test(stream.string.slice(0, stream.start)))) {\n stream.skipToEnd()\n return ret(\"comment\", \"comment\")\n } else if (isOperatorChar.test(ch)) {\n if (ch != \">\" || !state.lexical || state.lexical.type != \">\") {\n if (stream.eat(\"=\")) {\n if (ch == \"!\" || ch == \"=\") stream.eat(\"=\")\n } else if (/[<>*+\\-|&?]/.test(ch)) {\n stream.eat(ch)\n if (ch == \">\") stream.eat(ch)\n }\n }\n if (ch == \"?\" && stream.eat(\".\")) return ret(\".\")\n return ret(\"operator\", \"operator\", stream.current());\n } else if (wordRE.test(ch)) {\n stream.eatWhile(wordRE);\n var word = stream.current()\n if (state.lastType != \".\") {\n if (keywords.propertyIsEnumerable(word)) {\n var kw = keywords[word]\n return ret(kw.type, kw.style, word)\n }\n if (word == \"async\" && stream.match(/^(\\s|\\/\\*([^*]|\\*(?!\\/))*?\\*\\/)*[\\[\\(\\w]/, false))\n return ret(\"async\", \"keyword\", word)\n }\n return ret(\"variable\", \"variable\", word)\n }\n }\n\n function tokenString(quote) {\n return function(stream, state) {\n var escaped = false, next;\n if (jsonldMode && stream.peek() == \"@\" && stream.match(isJsonldKeyword)){\n state.tokenize = tokenBase;\n return ret(\"jsonld-keyword\", \"meta\");\n }\n while ((next = stream.next()) != null) {\n if (next == quote && !escaped) break;\n escaped = !escaped && next == \"\\\\\";\n }\n if (!escaped) state.tokenize = tokenBase;\n return ret(\"string\", \"string\");\n };\n }\n\n function tokenComment(stream, state) {\n var maybeEnd = false, ch;\n while (ch = stream.next()) {\n if (ch == \"/\" && maybeEnd) {\n state.tokenize = tokenBase;\n break;\n }\n maybeEnd = (ch == \"*\");\n }\n return ret(\"comment\", \"comment\");\n }\n\n function tokenQuasi(stream, state) {\n var escaped = false, next;\n while ((next = stream.next()) != null) {\n if (!escaped && (next == \"`\" || next == \"$\" && stream.eat(\"{\"))) {\n state.tokenize = tokenBase;\n break;\n }\n escaped = !escaped && next == \"\\\\\";\n }\n return ret(\"quasi\", \"string-2\", stream.current());\n }\n\n var brackets = \"([{}])\";\n // This is a crude lookahead trick to try and notice that we're\n // parsing the argument patterns for a fat-arrow function before we\n // actually hit the arrow token. It only works if the arrow is on\n // the same line as the arguments and there's no strange noise\n // (comments) in between. Fallback is to only notice when we hit the\n // arrow, and not declare the arguments as locals for the arrow\n // body.\n function findFatArrow(stream, state) {\n if (state.fatArrowAt) state.fatArrowAt = null;\n var arrow = stream.string.indexOf(\"=>\", stream.start);\n if (arrow < 0) return;\n\n if (isTS) { // Try to skip TypeScript return type declarations after the arguments\n var m = /:\\s*(?:\\w+(?:<[^>]*>|\\[\\])?|\\{[^}]*\\})\\s*$/.exec(stream.string.slice(stream.start, arrow))\n if (m) arrow = m.index\n }\n\n var depth = 0, sawSomething = false;\n for (var pos = arrow - 1; pos >= 0; --pos) {\n var ch = stream.string.charAt(pos);\n var bracket = brackets.indexOf(ch);\n if (bracket >= 0 && bracket < 3) {\n if (!depth) { ++pos; break; }\n if (--depth == 0) { if (ch == \"(\") sawSomething = true; break; }\n } else if (bracket >= 3 && bracket < 6) {\n ++depth;\n } else if (wordRE.test(ch)) {\n sawSomething = true;\n } else if (/[\"'\\/`]/.test(ch)) {\n for (;; --pos) {\n if (pos == 0) return\n var next = stream.string.charAt(pos - 1)\n if (next == ch && stream.string.charAt(pos - 2) != \"\\\\\") { pos--; break }\n }\n } else if (sawSomething && !depth) {\n ++pos;\n break;\n }\n }\n if (sawSomething && !depth) state.fatArrowAt = pos;\n }\n\n // Parser\n\n var atomicTypes = {\"atom\": true, \"number\": true, \"variable\": true, \"string\": true,\n \"regexp\": true, \"this\": true, \"import\": true, \"jsonld-keyword\": true};\n\n function JSLexical(indented, column, type, align, prev, info) {\n this.indented = indented;\n this.column = column;\n this.type = type;\n this.prev = prev;\n this.info = info;\n if (align != null) this.align = align;\n }\n\n function inScope(state, varname) {\n if (!trackScope) return false\n for (var v = state.localVars; v; v = v.next)\n if (v.name == varname) return true;\n for (var cx = state.context; cx; cx = cx.prev) {\n for (var v = cx.vars; v; v = v.next)\n if (v.name == varname) return true;\n }\n }\n\n function parseJS(state, style, type, content, stream) {\n var cc = state.cc;\n // Communicate our context to the combinators.\n // (Less wasteful than consing up a hundred closures on every call.)\n cx.state = state; cx.stream = stream; cx.marked = null, cx.cc = cc; cx.style = style;\n\n if (!state.lexical.hasOwnProperty(\"align\"))\n state.lexical.align = true;\n\n while(true) {\n var combinator = cc.length ? cc.pop() : jsonMode ? expression : statement;\n if (combinator(type, content)) {\n while(cc.length && cc[cc.length - 1].lex)\n cc.pop()();\n if (cx.marked) return cx.marked;\n if (type == \"variable\" && inScope(state, content)) return \"variable-2\";\n return style;\n }\n }\n }\n\n // Combinator utils\n\n var cx = {state: null, column: null, marked: null, cc: null};\n function pass() {\n for (var i = arguments.length - 1; i >= 0; i--) cx.cc.push(arguments[i]);\n }\n function cont() {\n pass.apply(null, arguments);\n return true;\n }\n function inList(name, list) {\n for (var v = list; v; v = v.next) if (v.name == name) return true\n return false;\n }\n function register(varname) {\n var state = cx.state;\n cx.marked = \"def\";\n if (!trackScope) return\n if (state.context) {\n if (state.lexical.info == \"var\" && state.context && state.context.block) {\n // FIXME function decls are also not block scoped\n var newContext = registerVarScoped(varname, state.context)\n if (newContext != null) {\n state.context = newContext\n return\n }\n } else if (!inList(varname, state.localVars)) {\n state.localVars = new Var(varname, state.localVars)\n return\n }\n }\n // Fall through means this is global\n if (parserConfig.globalVars && !inList(varname, state.globalVars))\n state.globalVars = new Var(varname, state.globalVars)\n }\n function registerVarScoped(varname, context) {\n if (!context) {\n return null\n } else if (context.block) {\n var inner = registerVarScoped(varname, context.prev)\n if (!inner) return null\n if (inner == context.prev) return context\n return new Context(inner, context.vars, true)\n } else if (inList(varname, context.vars)) {\n return context\n } else {\n return new Context(context.prev, new Var(varname, context.vars), false)\n }\n }\n\n function isModifier(name) {\n return name == \"public\" || name == \"private\" || name == \"protected\" || name == \"abstract\" || name == \"readonly\"\n }\n\n // Combinators\n\n function Context(prev, vars, block) { this.prev = prev; this.vars = vars; this.block = block }\n function Var(name, next) { this.name = name; this.next = next }\n\n var defaultVars = new Var(\"this\", new Var(\"arguments\", null))\n function pushcontext() {\n cx.state.context = new Context(cx.state.context, cx.state.localVars, false)\n cx.state.localVars = defaultVars\n }\n function pushblockcontext() {\n cx.state.context = new Context(cx.state.context, cx.state.localVars, true)\n cx.state.localVars = null\n }\n function popcontext() {\n cx.state.localVars = cx.state.context.vars\n cx.state.context = cx.state.context.prev\n }\n popcontext.lex = true\n function pushlex(type, info) {\n var result = function() {\n var state = cx.state, indent = state.indented;\n if (state.lexical.type == \"stat\") indent = state.lexical.indented;\n else for (var outer = state.lexical; outer && outer.type == \")\" && outer.align; outer = outer.prev)\n indent = outer.indented;\n state.lexical = new JSLexical(indent, cx.stream.column(), type, null, state.lexical, info);\n };\n result.lex = true;\n return result;\n }\n function poplex() {\n var state = cx.state;\n if (state.lexical.prev) {\n if (state.lexical.type == \")\")\n state.indented = state.lexical.indented;\n state.lexical = state.lexical.prev;\n }\n }\n poplex.lex = true;\n\n function expect(wanted) {\n function exp(type) {\n if (type == wanted) return cont();\n else if (wanted == \";\" || type == \"}\" || type == \")\" || type == \"]\") return pass();\n else return cont(exp);\n };\n return exp;\n }\n\n function statement(type, value) {\n if (type == \"var\") return cont(pushlex(\"vardef\", value), vardef, expect(\";\"), poplex);\n if (type == \"keyword a\") return cont(pushlex(\"form\"), parenExpr, statement, poplex);\n if (type == \"keyword b\") return cont(pushlex(\"form\"), statement, poplex);\n if (type == \"keyword d\") return cx.stream.match(/^\\s*$/, false) ? cont() : cont(pushlex(\"stat\"), maybeexpression, expect(\";\"), poplex);\n if (type == \"debugger\") return cont(expect(\";\"));\n if (type == \"{\") return cont(pushlex(\"}\"), pushblockcontext, block, poplex, popcontext);\n if (type == \";\") return cont();\n if (type == \"if\") {\n if (cx.state.lexical.info == \"else\" && cx.state.cc[cx.state.cc.length - 1] == poplex)\n cx.state.cc.pop()();\n return cont(pushlex(\"form\"), parenExpr, statement, poplex, maybeelse);\n }\n if (type == \"function\") return cont(functiondef);\n if (type == \"for\") return cont(pushlex(\"form\"), pushblockcontext, forspec, statement, popcontext, poplex);\n if (type == \"class\" || (isTS && value == \"interface\")) {\n cx.marked = \"keyword\"\n return cont(pushlex(\"form\", type == \"class\" ? type : value), className, poplex)\n }\n if (type == \"variable\") {\n if (isTS && value == \"declare\") {\n cx.marked = \"keyword\"\n return cont(statement)\n } else if (isTS && (value == \"module\" || value == \"enum\" || value == \"type\") && cx.stream.match(/^\\s*\\w/, false)) {\n cx.marked = \"keyword\"\n if (value == \"enum\") return cont(enumdef);\n else if (value == \"type\") return cont(typename, expect(\"operator\"), typeexpr, expect(\";\"));\n else return cont(pushlex(\"form\"), pattern, expect(\"{\"), pushlex(\"}\"), block, poplex, poplex)\n } else if (isTS && value == \"namespace\") {\n cx.marked = \"keyword\"\n return cont(pushlex(\"form\"), expression, statement, poplex)\n } else if (isTS && value == \"abstract\") {\n cx.marked = \"keyword\"\n return cont(statement)\n } else {\n return cont(pushlex(\"stat\"), maybelabel);\n }\n }\n if (type == \"switch\") return cont(pushlex(\"form\"), parenExpr, expect(\"{\"), pushlex(\"}\", \"switch\"), pushblockcontext,\n block, poplex, poplex, popcontext);\n if (type == \"case\") return cont(expression, expect(\":\"));\n if (type == \"default\") return cont(expect(\":\"));\n if (type == \"catch\") return cont(pushlex(\"form\"), pushcontext, maybeCatchBinding, statement, poplex, popcontext);\n if (type == \"export\") return cont(pushlex(\"stat\"), afterExport, poplex);\n if (type == \"import\") return cont(pushlex(\"stat\"), afterImport, poplex);\n if (type == \"async\") return cont(statement)\n if (value == \"@\") return cont(expression, statement)\n return pass(pushlex(\"stat\"), expression, expect(\";\"), poplex);\n }\n function maybeCatchBinding(type) {\n if (type == \"(\") return cont(funarg, expect(\")\"))\n }\n function expression(type, value) {\n return expressionInner(type, value, false);\n }\n function expressionNoComma(type, value) {\n return expressionInner(type, value, true);\n }\n function parenExpr(type) {\n if (type != \"(\") return pass()\n return cont(pushlex(\")\"), maybeexpression, expect(\")\"), poplex)\n }\n function expressionInner(type, value, noComma) {\n if (cx.state.fatArrowAt == cx.stream.start) {\n var body = noComma ? arrowBodyNoComma : arrowBody;\n if (type == \"(\") return cont(pushcontext, pushlex(\")\"), commasep(funarg, \")\"), poplex, expect(\"=>\"), body, popcontext);\n else if (type == \"variable\") return pass(pushcontext, pattern, expect(\"=>\"), body, popcontext);\n }\n\n var maybeop = noComma ? maybeoperatorNoComma : maybeoperatorComma;\n if (atomicTypes.hasOwnProperty(type)) return cont(maybeop);\n if (type == \"function\") return cont(functiondef, maybeop);\n if (type == \"class\" || (isTS && value == \"interface\")) { cx.marked = \"keyword\"; return cont(pushlex(\"form\"), classExpression, poplex); }\n if (type == \"keyword c\" || type == \"async\") return cont(noComma ? expressionNoComma : expression);\n if (type == \"(\") return cont(pushlex(\")\"), maybeexpression, expect(\")\"), poplex, maybeop);\n if (type == \"operator\" || type == \"spread\") return cont(noComma ? expressionNoComma : expression);\n if (type == \"[\") return cont(pushlex(\"]\"), arrayLiteral, poplex, maybeop);\n if (type == \"{\") return contCommasep(objprop, \"}\", null, maybeop);\n if (type == \"quasi\") return pass(quasi, maybeop);\n if (type == \"new\") return cont(maybeTarget(noComma));\n return cont();\n }\n function maybeexpression(type) {\n if (type.match(/[;\\}\\)\\],]/)) return pass();\n return pass(expression);\n }\n\n function maybeoperatorComma(type, value) {\n if (type == \",\") return cont(maybeexpression);\n return maybeoperatorNoComma(type, value, false);\n }\n function maybeoperatorNoComma(type, value, noComma) {\n var me = noComma == false ? maybeoperatorComma : maybeoperatorNoComma;\n var expr = noComma == false ? expression : expressionNoComma;\n if (type == \"=>\") return cont(pushcontext, noComma ? arrowBodyNoComma : arrowBody, popcontext);\n if (type == \"operator\") {\n if (/\\+\\+|--/.test(value) || isTS && value == \"!\") return cont(me);\n if (isTS && value == \"<\" && cx.stream.match(/^([^<>]|<[^<>]*>)*>\\s*\\(/, false))\n return cont(pushlex(\">\"), commasep(typeexpr, \">\"), poplex, me);\n if (value == \"?\") return cont(expression, expect(\":\"), expr);\n return cont(expr);\n }\n if (type == \"quasi\") { return pass(quasi, me); }\n if (type == \";\") return;\n if (type == \"(\") return contCommasep(expressionNoComma, \")\", \"call\", me);\n if (type == \".\") return cont(property, me);\n if (type == \"[\") return cont(pushlex(\"]\"), maybeexpression, expect(\"]\"), poplex, me);\n if (isTS && value == \"as\") { cx.marked = \"keyword\"; return cont(typeexpr, me) }\n if (type == \"regexp\") {\n cx.state.lastType = cx.marked = \"operator\"\n cx.stream.backUp(cx.stream.pos - cx.stream.start - 1)\n return cont(expr)\n }\n }\n function quasi(type, value) {\n if (type != \"quasi\") return pass();\n if (value.slice(value.length - 2) != \"${\") return cont(quasi);\n return cont(maybeexpression, continueQuasi);\n }\n function continueQuasi(type) {\n if (type == \"}\") {\n cx.marked = \"string-2\";\n cx.state.tokenize = tokenQuasi;\n return cont(quasi);\n }\n }\n function arrowBody(type) {\n findFatArrow(cx.stream, cx.state);\n return pass(type == \"{\" ? statement : expression);\n }\n function arrowBodyNoComma(type) {\n findFatArrow(cx.stream, cx.state);\n return pass(type == \"{\" ? statement : expressionNoComma);\n }\n function maybeTarget(noComma) {\n return function(type) {\n if (type == \".\") return cont(noComma ? targetNoComma : target);\n else if (type == \"variable\" && isTS) return cont(maybeTypeArgs, noComma ? maybeoperatorNoComma : maybeoperatorComma)\n else return pass(noComma ? expressionNoComma : expression);\n };\n }\n function target(_, value) {\n if (value == \"target\") { cx.marked = \"keyword\"; return cont(maybeoperatorComma); }\n }\n function targetNoComma(_, value) {\n if (value == \"target\") { cx.marked = \"keyword\"; return cont(maybeoperatorNoComma); }\n }\n function maybelabel(type) {\n if (type == \":\") return cont(poplex, statement);\n return pass(maybeoperatorComma, expect(\";\"), poplex);\n }\n function property(type) {\n if (type == \"variable\") {cx.marked = \"property\"; return cont();}\n }\n function objprop(type, value) {\n if (type == \"async\") {\n cx.marked = \"property\";\n return cont(objprop);\n } else if (type == \"variable\" || cx.style == \"keyword\") {\n cx.marked = \"property\";\n if (value == \"get\" || value == \"set\") return cont(getterSetter);\n var m // Work around fat-arrow-detection complication for detecting typescript typed arrow params\n if (isTS && cx.state.fatArrowAt == cx.stream.start && (m = cx.stream.match(/^\\s*:\\s*/, false)))\n cx.state.fatArrowAt = cx.stream.pos + m[0].length\n return cont(afterprop);\n } else if (type == \"number\" || type == \"string\") {\n cx.marked = jsonldMode ? \"property\" : (cx.style + \" property\");\n return cont(afterprop);\n } else if (type == \"jsonld-keyword\") {\n return cont(afterprop);\n } else if (isTS && isModifier(value)) {\n cx.marked = \"keyword\"\n return cont(objprop)\n } else if (type == \"[\") {\n return cont(expression, maybetype, expect(\"]\"), afterprop);\n } else if (type == \"spread\") {\n return cont(expressionNoComma, afterprop);\n } else if (value == \"*\") {\n cx.marked = \"keyword\";\n return cont(objprop);\n } else if (type == \":\") {\n return pass(afterprop)\n }\n }\n function getterSetter(type) {\n if (type != \"variable\") return pass(afterprop);\n cx.marked = \"property\";\n return cont(functiondef);\n }\n function afterprop(type) {\n if (type == \":\") return cont(expressionNoComma);\n if (type == \"(\") return pass(functiondef);\n }\n function commasep(what, end, sep) {\n function proceed(type, value) {\n if (sep ? sep.indexOf(type) > -1 : type == \",\") {\n var lex = cx.state.lexical;\n if (lex.info == \"call\") lex.pos = (lex.pos || 0) + 1;\n return cont(function(type, value) {\n if (type == end || value == end) return pass()\n return pass(what)\n }, proceed);\n }\n if (type == end || value == end) return cont();\n if (sep && sep.indexOf(\";\") > -1) return pass(what)\n return cont(expect(end));\n }\n return function(type, value) {\n if (type == end || value == end) return cont();\n return pass(what, proceed);\n };\n }\n function contCommasep(what, end, info) {\n for (var i = 3; i < arguments.length; i++)\n cx.cc.push(arguments[i]);\n return cont(pushlex(end, info), commasep(what, end), poplex);\n }\n function block(type) {\n if (type == \"}\") return cont();\n return pass(statement, block);\n }\n function maybetype(type, value) {\n if (isTS) {\n if (type == \":\") return cont(typeexpr);\n if (value == \"?\") return cont(maybetype);\n }\n }\n function maybetypeOrIn(type, value) {\n if (isTS && (type == \":\" || value == \"in\")) return cont(typeexpr)\n }\n function mayberettype(type) {\n if (isTS && type == \":\") {\n if (cx.stream.match(/^\\s*\\w+\\s+is\\b/, false)) return cont(expression, isKW, typeexpr)\n else return cont(typeexpr)\n }\n }\n function isKW(_, value) {\n if (value == \"is\") {\n cx.marked = \"keyword\"\n return cont()\n }\n }\n function typeexpr(type, value) {\n if (value == \"keyof\" || value == \"typeof\" || value == \"infer\" || value == \"readonly\") {\n cx.marked = \"keyword\"\n return cont(value == \"typeof\" ? expressionNoComma : typeexpr)\n }\n if (type == \"variable\" || value == \"void\") {\n cx.marked = \"type\"\n return cont(afterType)\n }\n if (value == \"|\" || value == \"&\") return cont(typeexpr)\n if (type == \"string\" || type == \"number\" || type == \"atom\") return cont(afterType);\n if (type == \"[\") return cont(pushlex(\"]\"), commasep(typeexpr, \"]\", \",\"), poplex, afterType)\n if (type == \"{\") return cont(pushlex(\"}\"), typeprops, poplex, afterType)\n if (type == \"(\") return cont(commasep(typearg, \")\"), maybeReturnType, afterType)\n if (type == \"<\") return cont(commasep(typeexpr, \">\"), typeexpr)\n if (type == \"quasi\") { return pass(quasiType, afterType); }\n }\n function maybeReturnType(type) {\n if (type == \"=>\") return cont(typeexpr)\n }\n function typeprops(type) {\n if (type.match(/[\\}\\)\\]]/)) return cont()\n if (type == \",\" || type == \";\") return cont(typeprops)\n return pass(typeprop, typeprops)\n }\n function typeprop(type, value) {\n if (type == \"variable\" || cx.style == \"keyword\") {\n cx.marked = \"property\"\n return cont(typeprop)\n } else if (value == \"?\" || type == \"number\" || type == \"string\") {\n return cont(typeprop)\n } else if (type == \":\") {\n return cont(typeexpr)\n } else if (type == \"[\") {\n return cont(expect(\"variable\"), maybetypeOrIn, expect(\"]\"), typeprop)\n } else if (type == \"(\") {\n return pass(functiondecl, typeprop)\n } else if (!type.match(/[;\\}\\)\\],]/)) {\n return cont()\n }\n }\n function quasiType(type, value) {\n if (type != \"quasi\") return pass();\n if (value.slice(value.length - 2) != \"${\") return cont(quasiType);\n return cont(typeexpr, continueQuasiType);\n }\n function continueQuasiType(type) {\n if (type == \"}\") {\n cx.marked = \"string-2\";\n cx.state.tokenize = tokenQuasi;\n return cont(quasiType);\n }\n }\n function typearg(type, value) {\n if (type == \"variable\" && cx.stream.match(/^\\s*[?:]/, false) || value == \"?\") return cont(typearg)\n if (type == \":\") return cont(typeexpr)\n if (type == \"spread\") return cont(typearg)\n return pass(typeexpr)\n }\n function afterType(type, value) {\n if (value == \"<\") return cont(pushlex(\">\"), commasep(typeexpr, \">\"), poplex, afterType)\n if (value == \"|\" || type == \".\" || value == \"&\") return cont(typeexpr)\n if (type == \"[\") return cont(typeexpr, expect(\"]\"), afterType)\n if (value == \"extends\" || value == \"implements\") { cx.marked = \"keyword\"; return cont(typeexpr) }\n if (value == \"?\") return cont(typeexpr, expect(\":\"), typeexpr)\n }\n function maybeTypeArgs(_, value) {\n if (value == \"<\") return cont(pushlex(\">\"), commasep(typeexpr, \">\"), poplex, afterType)\n }\n function typeparam() {\n return pass(typeexpr, maybeTypeDefault)\n }\n function maybeTypeDefault(_, value) {\n if (value == \"=\") return cont(typeexpr)\n }\n function vardef(_, value) {\n if (value == \"enum\") {cx.marked = \"keyword\"; return cont(enumdef)}\n return pass(pattern, maybetype, maybeAssign, vardefCont);\n }\n function pattern(type, value) {\n if (isTS && isModifier(value)) { cx.marked = \"keyword\"; return cont(pattern) }\n if (type == \"variable\") { register(value); return cont(); }\n if (type == \"spread\") return cont(pattern);\n if (type == \"[\") return contCommasep(eltpattern, \"]\");\n if (type == \"{\") return contCommasep(proppattern, \"}\");\n }\n function proppattern(type, value) {\n if (type == \"variable\" && !cx.stream.match(/^\\s*:/, false)) {\n register(value);\n return cont(maybeAssign);\n }\n if (type == \"variable\") cx.marked = \"property\";\n if (type == \"spread\") return cont(pattern);\n if (type == \"}\") return pass();\n if (type == \"[\") return cont(expression, expect(']'), expect(':'), proppattern);\n return cont(expect(\":\"), pattern, maybeAssign);\n }\n function eltpattern() {\n return pass(pattern, maybeAssign)\n }\n function maybeAssign(_type, value) {\n if (value == \"=\") return cont(expressionNoComma);\n }\n function vardefCont(type) {\n if (type == \",\") return cont(vardef);\n }\n function maybeelse(type, value) {\n if (type == \"keyword b\" && value == \"else\") return cont(pushlex(\"form\", \"else\"), statement, poplex);\n }\n function forspec(type, value) {\n if (value == \"await\") return cont(forspec);\n if (type == \"(\") return cont(pushlex(\")\"), forspec1, poplex);\n }\n function forspec1(type) {\n if (type == \"var\") return cont(vardef, forspec2);\n if (type == \"variable\") return cont(forspec2);\n return pass(forspec2)\n }\n function forspec2(type, value) {\n if (type == \")\") return cont()\n if (type == \";\") return cont(forspec2)\n if (value == \"in\" || value == \"of\") { cx.marked = \"keyword\"; return cont(expression, forspec2) }\n return pass(expression, forspec2)\n }\n function functiondef(type, value) {\n if (value == \"*\") {cx.marked = \"keyword\"; return cont(functiondef);}\n if (type == \"variable\") {register(value); return cont(functiondef);}\n if (type == \"(\") return cont(pushcontext, pushlex(\")\"), commasep(funarg, \")\"), poplex, mayberettype, statement, popcontext);\n if (isTS && value == \"<\") return cont(pushlex(\">\"), commasep(typeparam, \">\"), poplex, functiondef)\n }\n function functiondecl(type, value) {\n if (value == \"*\") {cx.marked = \"keyword\"; return cont(functiondecl);}\n if (type == \"variable\") {register(value); return cont(functiondecl);}\n if (type == \"(\") return cont(pushcontext, pushlex(\")\"), commasep(funarg, \")\"), poplex, mayberettype, popcontext);\n if (isTS && value == \"<\") return cont(pushlex(\">\"), commasep(typeparam, \">\"), poplex, functiondecl)\n }\n function typename(type, value) {\n if (type == \"keyword\" || type == \"variable\") {\n cx.marked = \"type\"\n return cont(typename)\n } else if (value == \"<\") {\n return cont(pushlex(\">\"), commasep(typeparam, \">\"), poplex)\n }\n }\n function funarg(type, value) {\n if (value == \"@\") cont(expression, funarg)\n if (type == \"spread\") return cont(funarg);\n if (isTS && isModifier(value)) { cx.marked = \"keyword\"; return cont(funarg); }\n if (isTS && type == \"this\") return cont(maybetype, maybeAssign)\n return pass(pattern, maybetype, maybeAssign);\n }\n function classExpression(type, value) {\n // Class expressions may have an optional name.\n if (type == \"variable\") return className(type, value);\n return classNameAfter(type, value);\n }\n function className(type, value) {\n if (type == \"variable\") {register(value); return cont(classNameAfter);}\n }\n function classNameAfter(type, value) {\n if (value == \"<\") return cont(pushlex(\">\"), commasep(typeparam, \">\"), poplex, classNameAfter)\n if (value == \"extends\" || value == \"implements\" || (isTS && type == \",\")) {\n if (value == \"implements\") cx.marked = \"keyword\";\n return cont(isTS ? typeexpr : expression, classNameAfter);\n }\n if (type == \"{\") return cont(pushlex(\"}\"), classBody, poplex);\n }\n function classBody(type, value) {\n if (type == \"async\" ||\n (type == \"variable\" &&\n (value == \"static\" || value == \"get\" || value == \"set\" || (isTS && isModifier(value))) &&\n cx.stream.match(/^\\s+[\\w$\\xa1-\\uffff]/, false))) {\n cx.marked = \"keyword\";\n return cont(classBody);\n }\n if (type == \"variable\" || cx.style == \"keyword\") {\n cx.marked = \"property\";\n return cont(classfield, classBody);\n }\n if (type == \"number\" || type == \"string\") return cont(classfield, classBody);\n if (type == \"[\")\n return cont(expression, maybetype, expect(\"]\"), classfield, classBody)\n if (value == \"*\") {\n cx.marked = \"keyword\";\n return cont(classBody);\n }\n if (isTS && type == \"(\") return pass(functiondecl, classBody)\n if (type == \";\" || type == \",\") return cont(classBody);\n if (type == \"}\") return cont();\n if (value == \"@\") return cont(expression, classBody)\n }\n function classfield(type, value) {\n if (value == \"!\") return cont(classfield)\n if (value == \"?\") return cont(classfield)\n if (type == \":\") return cont(typeexpr, maybeAssign)\n if (value == \"=\") return cont(expressionNoComma)\n var context = cx.state.lexical.prev, isInterface = context && context.info == \"interface\"\n return pass(isInterface ? functiondecl : functiondef)\n }\n function afterExport(type, value) {\n if (value == \"*\") { cx.marked = \"keyword\"; return cont(maybeFrom, expect(\";\")); }\n if (value == \"default\") { cx.marked = \"keyword\"; return cont(expression, expect(\";\")); }\n if (type == \"{\") return cont(commasep(exportField, \"}\"), maybeFrom, expect(\";\"));\n return pass(statement);\n }\n function exportField(type, value) {\n if (value == \"as\") { cx.marked = \"keyword\"; return cont(expect(\"variable\")); }\n if (type == \"variable\") return pass(expressionNoComma, exportField);\n }\n function afterImport(type) {\n if (type == \"string\") return cont();\n if (type == \"(\") return pass(expression);\n if (type == \".\") return pass(maybeoperatorComma);\n return pass(importSpec, maybeMoreImports, maybeFrom);\n }\n function importSpec(type, value) {\n if (type == \"{\") return contCommasep(importSpec, \"}\");\n if (type == \"variable\") register(value);\n if (value == \"*\") cx.marked = \"keyword\";\n return cont(maybeAs);\n }\n function maybeMoreImports(type) {\n if (type == \",\") return cont(importSpec, maybeMoreImports)\n }\n function maybeAs(_type, value) {\n if (value == \"as\") { cx.marked = \"keyword\"; return cont(importSpec); }\n }\n function maybeFrom(_type, value) {\n if (value == \"from\") { cx.marked = \"keyword\"; return cont(expression); }\n }\n function arrayLiteral(type) {\n if (type == \"]\") return cont();\n return pass(commasep(expressionNoComma, \"]\"));\n }\n function enumdef() {\n return pass(pushlex(\"form\"), pattern, expect(\"{\"), pushlex(\"}\"), commasep(enummember, \"}\"), poplex, poplex)\n }\n function enummember() {\n return pass(pattern, maybeAssign);\n }\n\n function isContinuedStatement(state, textAfter) {\n return state.lastType == \"operator\" || state.lastType == \",\" ||\n isOperatorChar.test(textAfter.charAt(0)) ||\n /[,.]/.test(textAfter.charAt(0));\n }\n\n function expressionAllowed(stream, state, backUp) {\n return state.tokenize == tokenBase &&\n /^(?:operator|sof|keyword [bcd]|case|new|export|default|spread|[\\[{}\\(,;:]|=>)$/.test(state.lastType) ||\n (state.lastType == \"quasi\" && /\\{\\s*$/.test(stream.string.slice(0, stream.pos - (backUp || 0))))\n }\n\n // Interface\n\n return {\n startState: function(basecolumn) {\n var state = {\n tokenize: tokenBase,\n lastType: \"sof\",\n cc: [],\n lexical: new JSLexical((basecolumn || 0) - indentUnit, 0, \"block\", false),\n localVars: parserConfig.localVars,\n context: parserConfig.localVars && new Context(null, null, false),\n indented: basecolumn || 0\n };\n if (parserConfig.globalVars && typeof parserConfig.globalVars == \"object\")\n state.globalVars = parserConfig.globalVars;\n return state;\n },\n\n token: function(stream, state) {\n if (stream.sol()) {\n if (!state.lexical.hasOwnProperty(\"align\"))\n state.lexical.align = false;\n state.indented = stream.indentation();\n findFatArrow(stream, state);\n }\n if (state.tokenize != tokenComment && stream.eatSpace()) return null;\n var style = state.tokenize(stream, state);\n if (type == \"comment\") return style;\n state.lastType = type == \"operator\" && (content == \"++\" || content == \"--\") ? \"incdec\" : type;\n return parseJS(state, style, type, content, stream);\n },\n\n indent: function(state, textAfter) {\n if (state.tokenize == tokenComment || state.tokenize == tokenQuasi) return CodeMirror.Pass;\n if (state.tokenize != tokenBase) return 0;\n var firstChar = textAfter && textAfter.charAt(0), lexical = state.lexical, top\n // Kludge to prevent 'maybelse' from blocking lexical scope pops\n if (!/^\\s*else\\b/.test(textAfter)) for (var i = state.cc.length - 1; i >= 0; --i) {\n var c = state.cc[i];\n if (c == poplex) lexical = lexical.prev;\n else if (c != maybeelse && c != popcontext) break;\n }\n while ((lexical.type == \"stat\" || lexical.type == \"form\") &&\n (firstChar == \"}\" || ((top = state.cc[state.cc.length - 1]) &&\n (top == maybeoperatorComma || top == maybeoperatorNoComma) &&\n !/^[,\\.=+\\-*:?[\\(]/.test(textAfter))))\n lexical = lexical.prev;\n if (statementIndent && lexical.type == \")\" && lexical.prev.type == \"stat\")\n lexical = lexical.prev;\n var type = lexical.type, closing = firstChar == type;\n\n if (type == \"vardef\") return lexical.indented + (state.lastType == \"operator\" || state.lastType == \",\" ? lexical.info.length + 1 : 0);\n else if (type == \"form\" && firstChar == \"{\") return lexical.indented;\n else if (type == \"form\") return lexical.indented + indentUnit;\n else if (type == \"stat\")\n return lexical.indented + (isContinuedStatement(state, textAfter) ? statementIndent || indentUnit : 0);\n else if (lexical.info == \"switch\" && !closing && parserConfig.doubleIndentSwitch != false)\n return lexical.indented + (/^(?:case|default)\\b/.test(textAfter) ? indentUnit : 2 * indentUnit);\n else if (lexical.align) return lexical.column + (closing ? 0 : 1);\n else return lexical.indented + (closing ? 0 : indentUnit);\n },\n\n electricInput: /^\\s*(?:case .*?:|default:|\\{|\\})$/,\n blockCommentStart: jsonMode ? null : \"/*\",\n blockCommentEnd: jsonMode ? null : \"*/\",\n blockCommentContinue: jsonMode ? null : \" * \",\n lineComment: jsonMode ? null : \"//\",\n fold: \"brace\",\n closeBrackets: \"()[]{}''\\\"\\\"``\",\n\n helperType: jsonMode ? \"json\" : \"javascript\",\n jsonldMode: jsonldMode,\n jsonMode: jsonMode,\n\n expressionAllowed: expressionAllowed,\n\n skipExpression: function(state) {\n parseJS(state, \"atom\", \"atom\", \"true\", new CodeMirror.StringStream(\"\", 2, null))\n }\n };\n});\n\nCodeMirror.registerHelper(\"wordChars\", \"javascript\", /[\\w$]/);\n\nCodeMirror.defineMIME(\"text/javascript\", \"javascript\");\nCodeMirror.defineMIME(\"text/ecmascript\", \"javascript\");\nCodeMirror.defineMIME(\"application/javascript\", \"javascript\");\nCodeMirror.defineMIME(\"application/x-javascript\", \"javascript\");\nCodeMirror.defineMIME(\"application/ecmascript\", \"javascript\");\nCodeMirror.defineMIME(\"application/json\", { name: \"javascript\", json: true });\nCodeMirror.defineMIME(\"application/x-json\", { name: \"javascript\", json: true });\nCodeMirror.defineMIME(\"application/manifest+json\", { name: \"javascript\", json: true })\nCodeMirror.defineMIME(\"application/ld+json\", { name: \"javascript\", jsonld: true });\nCodeMirror.defineMIME(\"text/typescript\", { name: \"javascript\", typescript: true });\nCodeMirror.defineMIME(\"application/typescript\", { name: \"javascript\", typescript: true });\n\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nvar htmlConfig = {\n autoSelfClosers: {'area': true, 'base': true, 'br': true, 'col': true, 'command': true,\n 'embed': true, 'frame': true, 'hr': true, 'img': true, 'input': true,\n 'keygen': true, 'link': true, 'meta': true, 'param': true, 'source': true,\n 'track': true, 'wbr': true, 'menuitem': true},\n implicitlyClosed: {'dd': true, 'li': true, 'optgroup': true, 'option': true, 'p': true,\n 'rp': true, 'rt': true, 'tbody': true, 'td': true, 'tfoot': true,\n 'th': true, 'tr': true},\n contextGrabbers: {\n 'dd': {'dd': true, 'dt': true},\n 'dt': {'dd': true, 'dt': true},\n 'li': {'li': true},\n 'option': {'option': true, 'optgroup': true},\n 'optgroup': {'optgroup': true},\n 'p': {'address': true, 'article': true, 'aside': true, 'blockquote': true, 'dir': true,\n 'div': true, 'dl': true, 'fieldset': true, 'footer': true, 'form': true,\n 'h1': true, 'h2': true, 'h3': true, 'h4': true, 'h5': true, 'h6': true,\n 'header': true, 'hgroup': true, 'hr': true, 'menu': true, 'nav': true, 'ol': true,\n 'p': true, 'pre': true, 'section': true, 'table': true, 'ul': true},\n 'rp': {'rp': true, 'rt': true},\n 'rt': {'rp': true, 'rt': true},\n 'tbody': {'tbody': true, 'tfoot': true},\n 'td': {'td': true, 'th': true},\n 'tfoot': {'tbody': true},\n 'th': {'td': true, 'th': true},\n 'thead': {'tbody': true, 'tfoot': true},\n 'tr': {'tr': true}\n },\n doNotIndent: {\"pre\": true},\n allowUnquoted: true,\n allowMissing: true,\n caseFold: true\n}\n\nvar xmlConfig = {\n autoSelfClosers: {},\n implicitlyClosed: {},\n contextGrabbers: {},\n doNotIndent: {},\n allowUnquoted: false,\n allowMissing: false,\n allowMissingTagName: false,\n caseFold: false\n}\n\nCodeMirror.defineMode(\"xml\", function(editorConf, config_) {\n var indentUnit = editorConf.indentUnit\n var config = {}\n var defaults = config_.htmlMode ? htmlConfig : xmlConfig\n for (var prop in defaults) config[prop] = defaults[prop]\n for (var prop in config_) config[prop] = config_[prop]\n\n // Return variables for tokenizers\n var type, setStyle;\n\n function inText(stream, state) {\n function chain(parser) {\n state.tokenize = parser;\n return parser(stream, state);\n }\n\n var ch = stream.next();\n if (ch == \"<\") {\n if (stream.eat(\"!\")) {\n if (stream.eat(\"[\")) {\n if (stream.match(\"CDATA[\")) return chain(inBlock(\"atom\", \"]]>\"));\n else return null;\n } else if (stream.match(\"--\")) {\n return chain(inBlock(\"comment\", \"-->\"));\n } else if (stream.match(\"DOCTYPE\", true, true)) {\n stream.eatWhile(/[\\w\\._\\-]/);\n return chain(doctype(1));\n } else {\n return null;\n }\n } else if (stream.eat(\"?\")) {\n stream.eatWhile(/[\\w\\._\\-]/);\n state.tokenize = inBlock(\"meta\", \"?>\");\n return \"meta\";\n } else {\n type = stream.eat(\"/\") ? \"closeTag\" : \"openTag\";\n state.tokenize = inTag;\n return \"tag bracket\";\n }\n } else if (ch == \"&\") {\n var ok;\n if (stream.eat(\"#\")) {\n if (stream.eat(\"x\")) {\n ok = stream.eatWhile(/[a-fA-F\\d]/) && stream.eat(\";\");\n } else {\n ok = stream.eatWhile(/[\\d]/) && stream.eat(\";\");\n }\n } else {\n ok = stream.eatWhile(/[\\w\\.\\-:]/) && stream.eat(\";\");\n }\n return ok ? \"atom\" : \"error\";\n } else {\n stream.eatWhile(/[^&<]/);\n return null;\n }\n }\n inText.isInText = true;\n\n function inTag(stream, state) {\n var ch = stream.next();\n if (ch == \">\" || (ch == \"/\" && stream.eat(\">\"))) {\n state.tokenize = inText;\n type = ch == \">\" ? \"endTag\" : \"selfcloseTag\";\n return \"tag bracket\";\n } else if (ch == \"=\") {\n type = \"equals\";\n return null;\n } else if (ch == \"<\") {\n state.tokenize = inText;\n state.state = baseState;\n state.tagName = state.tagStart = null;\n var next = state.tokenize(stream, state);\n return next ? next + \" tag error\" : \"tag error\";\n } else if (/[\\'\\\"]/.test(ch)) {\n state.tokenize = inAttribute(ch);\n state.stringStartCol = stream.column();\n return state.tokenize(stream, state);\n } else {\n stream.match(/^[^\\s\\u00a0=<>\\\"\\']*[^\\s\\u00a0=<>\\\"\\'\\/]/);\n return \"word\";\n }\n }\n\n function inAttribute(quote) {\n var closure = function(stream, state) {\n while (!stream.eol()) {\n if (stream.next() == quote) {\n state.tokenize = inTag;\n break;\n }\n }\n return \"string\";\n };\n closure.isInAttribute = true;\n return closure;\n }\n\n function inBlock(style, terminator) {\n return function(stream, state) {\n while (!stream.eol()) {\n if (stream.match(terminator)) {\n state.tokenize = inText;\n break;\n }\n stream.next();\n }\n return style;\n }\n }\n\n function doctype(depth) {\n return function(stream, state) {\n var ch;\n while ((ch = stream.next()) != null) {\n if (ch == \"<\") {\n state.tokenize = doctype(depth + 1);\n return state.tokenize(stream, state);\n } else if (ch == \">\") {\n if (depth == 1) {\n state.tokenize = inText;\n break;\n } else {\n state.tokenize = doctype(depth - 1);\n return state.tokenize(stream, state);\n }\n }\n }\n return \"meta\";\n };\n }\n\n function lower(tagName) {\n return tagName && tagName.toLowerCase();\n }\n\n function Context(state, tagName, startOfLine) {\n this.prev = state.context;\n this.tagName = tagName || \"\";\n this.indent = state.indented;\n this.startOfLine = startOfLine;\n if (config.doNotIndent.hasOwnProperty(tagName) || (state.context && state.context.noIndent))\n this.noIndent = true;\n }\n function popContext(state) {\n if (state.context) state.context = state.context.prev;\n }\n function maybePopContext(state, nextTagName) {\n var parentTagName;\n while (true) {\n if (!state.context) {\n return;\n }\n parentTagName = state.context.tagName;\n if (!config.contextGrabbers.hasOwnProperty(lower(parentTagName)) ||\n !config.contextGrabbers[lower(parentTagName)].hasOwnProperty(lower(nextTagName))) {\n return;\n }\n popContext(state);\n }\n }\n\n function baseState(type, stream, state) {\n if (type == \"openTag\") {\n state.tagStart = stream.column();\n return tagNameState;\n } else if (type == \"closeTag\") {\n return closeTagNameState;\n } else {\n return baseState;\n }\n }\n function tagNameState(type, stream, state) {\n if (type == \"word\") {\n state.tagName = stream.current();\n setStyle = \"tag\";\n return attrState;\n } else if (config.allowMissingTagName && type == \"endTag\") {\n setStyle = \"tag bracket\";\n return attrState(type, stream, state);\n } else {\n setStyle = \"error\";\n return tagNameState;\n }\n }\n function closeTagNameState(type, stream, state) {\n if (type == \"word\") {\n var tagName = stream.current();\n if (state.context && state.context.tagName != tagName &&\n config.implicitlyClosed.hasOwnProperty(lower(state.context.tagName)))\n popContext(state);\n if ((state.context && state.context.tagName == tagName) || config.matchClosing === false) {\n setStyle = \"tag\";\n return closeState;\n } else {\n setStyle = \"tag error\";\n return closeStateErr;\n }\n } else if (config.allowMissingTagName && type == \"endTag\") {\n setStyle = \"tag bracket\";\n return closeState(type, stream, state);\n } else {\n setStyle = \"error\";\n return closeStateErr;\n }\n }\n\n function closeState(type, _stream, state) {\n if (type != \"endTag\") {\n setStyle = \"error\";\n return closeState;\n }\n popContext(state);\n return baseState;\n }\n function closeStateErr(type, stream, state) {\n setStyle = \"error\";\n return closeState(type, stream, state);\n }\n\n function attrState(type, _stream, state) {\n if (type == \"word\") {\n setStyle = \"attribute\";\n return attrEqState;\n } else if (type == \"endTag\" || type == \"selfcloseTag\") {\n var tagName = state.tagName, tagStart = state.tagStart;\n state.tagName = state.tagStart = null;\n if (type == \"selfcloseTag\" ||\n config.autoSelfClosers.hasOwnProperty(lower(tagName))) {\n maybePopContext(state, tagName);\n } else {\n maybePopContext(state, tagName);\n state.context = new Context(state, tagName, tagStart == state.indented);\n }\n return baseState;\n }\n setStyle = \"error\";\n return attrState;\n }\n function attrEqState(type, stream, state) {\n if (type == \"equals\") return attrValueState;\n if (!config.allowMissing) setStyle = \"error\";\n return attrState(type, stream, state);\n }\n function attrValueState(type, stream, state) {\n if (type == \"string\") return attrContinuedState;\n if (type == \"word\" && config.allowUnquoted) {setStyle = \"string\"; return attrState;}\n setStyle = \"error\";\n return attrState(type, stream, state);\n }\n function attrContinuedState(type, stream, state) {\n if (type == \"string\") return attrContinuedState;\n return attrState(type, stream, state);\n }\n\n return {\n startState: function(baseIndent) {\n var state = {tokenize: inText,\n state: baseState,\n indented: baseIndent || 0,\n tagName: null, tagStart: null,\n context: null}\n if (baseIndent != null) state.baseIndent = baseIndent\n return state\n },\n\n token: function(stream, state) {\n if (!state.tagName && stream.sol())\n state.indented = stream.indentation();\n\n if (stream.eatSpace()) return null;\n type = null;\n var style = state.tokenize(stream, state);\n if ((style || type) && style != \"comment\") {\n setStyle = null;\n state.state = state.state(type || style, stream, state);\n if (setStyle)\n style = setStyle == \"error\" ? style + \" error\" : setStyle;\n }\n return style;\n },\n\n indent: function(state, textAfter, fullLine) {\n var context = state.context;\n // Indent multi-line strings (e.g. css).\n if (state.tokenize.isInAttribute) {\n if (state.tagStart == state.indented)\n return state.stringStartCol + 1;\n else\n return state.indented + indentUnit;\n }\n if (context && context.noIndent) return CodeMirror.Pass;\n if (state.tokenize != inTag && state.tokenize != inText)\n return fullLine ? fullLine.match(/^(\\s*)/)[0].length : 0;\n // Indent the starts of attribute names.\n if (state.tagName) {\n if (config.multilineTagIndentPastTag !== false)\n return state.tagStart + state.tagName.length + 2;\n else\n return state.tagStart + indentUnit * (config.multilineTagIndentFactor || 1);\n }\n if (config.alignCDATA && /$/,\n blockCommentStart: \"\",\n\n configuration: config.htmlMode ? \"html\" : \"xml\",\n helperType: config.htmlMode ? \"html\" : \"xml\",\n\n skipAttribute: function(state) {\n if (state.state == attrValueState)\n state.state = attrState\n },\n\n xmlCurrentTag: function(state) {\n return state.tagName ? {name: state.tagName, close: state.type == \"closeTag\"} : null\n },\n\n xmlCurrentContext: function(state) {\n var context = []\n for (var cx = state.context; cx; cx = cx.prev)\n context.push(cx.tagName)\n return context.reverse()\n }\n };\n});\n\nCodeMirror.defineMIME(\"text/xml\", \"xml\");\nCodeMirror.defineMIME(\"application/xml\", \"xml\");\nif (!CodeMirror.mimeModes.hasOwnProperty(\"text/html\"))\n CodeMirror.defineMIME(\"text/html\", {name: \"xml\", htmlMode: true});\n\n});\n","export default {\n // Default assets\n // eg. [\n // 'https://...image1.png',\n // 'https://...image2.png',\n // {type: 'image', src: 'https://...image3.png', someOtherCustomProp: 1},\n // ..\n // ]\n assets: [],\n\n // Content to add where there is no assets to show\n // eg. 'No assets here, drag to upload'\n noAssets: '',\n\n // Style prefix\n stylePrefix: 'am-',\n\n // Upload endpoint, set `false` to disable upload\n // upload: 'https://endpoint/upload/assets',\n // upload: false,\n upload: 0,\n\n // The name used in POST to pass uploaded files\n uploadName: 'files',\n\n // Custom headers to pass with the upload request\n headers: {},\n\n // Custom parameters to pass with the upload request, eg. csrf token\n params: {},\n\n // The credentials setting for the upload request, eg. 'include', 'omit'\n credentials: 'include',\n\n // Allow uploading multiple files per request.\n // If disabled filename will not have '[]' appended\n multiUpload: true,\n\n // If true, tries to add automatically uploaded assets.\n // To make it work the server should respond with a JSON containing assets\n // in a data key, eg:\n // {\n // data: [\n // 'https://.../image.png',\n // ...\n // {src: 'https://.../image2.png'},\n // ...\n // ]\n // }\n autoAdd: true,\n\n // To upload your assets, the module uses Fetch API, with this option you\n // overwrite it with something else.\n // It should return a Promise\n // @example\n // customFetch: (url, options) => axios(url, { data: options.body }),\n customFetch: null,\n\n // Custom uploadFile function.\n // Differently from the `customFetch` option, this gives a total control\n // over the uploading process, but you also have to emit all `asset:upload:*` events\n // by yourself (if you need to use them somewhere)\n // @example\n // uploadFile: (e) => {\n // var files = e.dataTransfer ? e.dataTransfer.files : e.target.files;\n // // ...send somewhere\n // }\n uploadFile: null,\n\n // In the absence of 'uploadFile' or 'upload' assets will be embedded as Base64\n embedAsBase64: true,\n\n // Handle the image url submit from the built-in 'Add image' form\n // @example\n // handleAdd: (textFromInput) => {\n // // some check...\n // editor.AssetManager.add(textFromInput);\n // }\n handleAdd: null,\n\n // Method called before upload, on return false upload is canceled.\n // @example\n // beforeUpload: (files) => {\n // // logic...\n // var stopUpload = true;\n // if(stopUpload) return false;\n // }\n beforeUpload: null,\n\n // Toggles visiblity of assets url input\n showUrlInput: true,\n\n // Avoid rendering the default asset manager.\n custom: false,\n\n // WARNING: all the options below are considered DEPRECATED.\n // ---------------------------------------------------------------\n\n // Enable an upload dropzone on the entire editor (not document) when dragging\n // files over it\n // If active the dropzone disable/hide the upload dropzone in asset modal,\n // otherwise you will get double drops (#507)\n dropzone: false,\n\n // Open the asset manager once files are been dropped via the dropzone\n openAssetsOnDrop: 1,\n\n // Any dropzone content to append inside dropzone element\n dropzoneContent: ''\n};\n","import { result } from 'underscore';\nimport { Model } from 'common';\n\n/**\n * @property {String} type Asset type, eg. 'image'.\n * @property {String} src Asset URL, eg. 'https://.../image.png'.\n */\nexport default class Asset extends Model {\n defaults() {\n return {\n type: '',\n src: ''\n };\n }\n\n /**\n * Get asset type.\n * @returns {String}\n * @example\n * // Asset: { src: 'https://.../image.png', type: 'image' }\n * asset.getType(); // -> 'image'\n * */\n getType() {\n return this.get('type');\n }\n\n /**\n * Get asset URL.\n * @returns {String}\n * @example\n * // Asset: { src: 'https://.../image.png' }\n * asset.getSrc(); // -> 'https://.../image.png'\n * */\n getSrc() {\n return this.get('src');\n }\n\n /**\n * Get filename of the asset (based on `src`).\n * @returns {String}\n * @example\n * // Asset: { src: 'https://.../image.png' }\n * asset.getFilename(); // -> 'image.png'\n * // Asset: { src: 'https://.../image' }\n * asset.getFilename(); // -> 'image'\n * */\n getFilename() {\n return this.get('src')\n .split('/')\n .pop()\n .split('?')\n .shift();\n }\n\n /**\n * Get extension of the asset (based on `src`).\n * @returns {String}\n * @example\n * // Asset: { src: 'https://.../image.png' }\n * asset.getExtension(); // -> 'png'\n * // Asset: { src: 'https://.../image' }\n * asset.getExtension(); // -> ''\n * */\n getExtension() {\n return this.getFilename()\n .split('.')\n .pop();\n }\n}\n\nAsset.prototype.idAttribute = 'src';\n\nAsset.getDefaults = function() {\n return result(this.prototype, 'defaults');\n};\n","import Asset from './Asset';\n\nexport default class AssetImage extends Asset {\n defaults() {\n return {\n ...Asset.getDefaults(),\n type: 'image',\n unitDim: 'px',\n height: 0,\n width: 0\n };\n }\n}\n","import Backbone from 'backbone';\nimport { clone } from 'underscore';\n\nexport default Backbone.View.extend({\n initialize(o = {}) {\n this.options = o;\n this.collection = o.collection;\n const config = o.config || {};\n this.config = config;\n this.pfx = config.stylePrefix || '';\n this.ppfx = config.pStylePrefix || '';\n this.em = config.em;\n this.className = this.pfx + 'asset';\n this.listenTo(this.model, 'destroy remove', this.remove);\n this.model.view = this;\n const init = this.init && this.init.bind(this);\n init && init(o);\n },\n\n __getBhv() {\n const { em } = this;\n const am = em && em.get('AssetManager');\n return (am && am.__getBehaviour()) || {};\n },\n\n template() {\n const pfx = this.pfx;\n return `\n