{"mappings":"A,C,K,S,E,C,C,C,E,O,O,I,C,G,O,C,S,C,E,Y,G,A,e,G,E,c,C,I,O,c,C,E,E,C,W,C,E,I,W,O,C,C,E,A,C,E,G,C,C,S,E,C,C,C,C,C,C,C,E,O,c,C,E,E,C,I,E,I,E,W,C,E,a,C,C,E,C,S,E,C,E,O,G,E,U,C,E,O,C,C,C,I,E,A,a,O,W,W,A,a,O,K,K,A,a,O,O,O,A,a,O,O,O,C,E,E,C,E,E,C,E,E,E,iB,A,O,I,A,C,E,S,C,E,G,K,E,O,C,C,E,C,O,C,G,K,E,C,I,E,C,C,E,A,Q,C,C,E,C,I,E,C,G,E,Q,C,C,E,O,C,C,E,C,E,E,I,C,E,O,C,E,E,O,E,E,O,A,C,I,E,A,M,uB,E,I,O,E,I,C,mB,C,C,E,Q,C,S,C,C,C,E,C,C,E,C,C,E,E,iB,C,G,E,Q,C,Q,S,C,C,C,ECaE,EAAA,OAAA,CAH+D,EAAA,OAAA,CAAiB,AAGzE,WAIP,IA0qBM,EAs6OA,EAEA,EA7gQF,EA2iBA,EAeA,EAmrEA,EAm2IA,EAAW,EArpOX,EAAY,UAAU,SAA1B,CACI,EAAW,UAAU,QAAzB,CAEI,EAAQ,aAAa,IAAA,CAAK,GAC1B,EAAY,UAAU,IAAA,CAAK,GAC3B,EAAU,wCAAwC,IAAA,CAAK,GACvD,EAAO,cAAc,IAAA,CAAK,GAC1B,EAAK,GAAa,GAAW,EAC7B,EAAa,GAAO,CAAA,EAAY,SAAS,YAAA,EAAgB,EAAI,CAAC,AAAC,CAAA,GAAQ,CAAA,CAAQ,CAAC,EAAE,AAAF,EAChF,EAAS,CAAC,GAAQ,WAAW,IAAA,CAAK,GAClC,EAAW,GAAU,eAAe,IAAA,CAAK,GACzC,EAAS,CAAC,GAAQ,gBAAgB,IAAA,CAAK,GACvC,EAAiB,GAAU,CAAC,CAAM,CAAC,EAAE,CACrC,EAAS,UAAU,IAAA,CAAK,GACxB,EAAS,iBAAiB,IAAA,CAAK,UAAU,MAA7C,EACI,EAAqB,+BAA+B,IAAA,CAAK,GACzD,EAAU,YAAY,IAAA,CAAK,GAE3B,EAAM,GAAW,CAAA,cAAc,IAAA,CAAK,IAAc,UAAU,cAAA,CAAiB,CAAA,EAC7E,EAAU,UAAU,IAAA,CAAK,GAEzB,EAAS,GAAO,GAAW,mDAAm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","sources":["","node_modules/codemirror/lib/codemirror.js","app/assets/index.js","node_modules/codemirror/addon/edit/matchbrackets.js","node_modules/codemirror/addon/edit/closebrackets.js","node_modules/codemirror/mode/ruby/ruby.js","node_modules/bootstrap/dist/js/bootstrap.esm.js","node_modules/bootstrap/js/src/dom/data.js","node_modules/bootstrap/js/src/util/index.js","node_modules/bootstrap/js/src/dom/event-handler.js","node_modules/bootstrap/js/src/dom/manipulator.js","node_modules/bootstrap/js/src/util/config.js","node_modules/bootstrap/js/src/base-component.js","node_modules/bootstrap/js/src/dom/selector-engine.js","node_modules/bootstrap/js/src/util/component-functions.js","node_modules/bootstrap/js/src/alert.js","node_modules/bootstrap/js/src/button.js","node_modules/bootstrap/js/src/util/swipe.js","node_modules/bootstrap/js/src/carousel.js","node_modules/bootstrap/js/src/collapse.js","node_modules/bootstrap/js/src/dropdown.js","node_modules/bootstrap/js/src/util/backdrop.js","node_modules/bootstrap/js/src/util/focustrap.js","node_modules/bootstrap/js/src/util/scrollbar.js","node_modules/bootstrap/js/src/modal.js","node_modules/bootstrap/js/src/offcanvas.js","node_modules/bootstrap/js/src/util/sanitizer.js","node_modules/bootstrap/js/src/util/template-factory.js","node_modules/bootstrap/js/src/tooltip.js","node_modules/bootstrap/js/src/popover.js","node_modules/bootstrap/js/src/scrollspy.js","node_modules/bootstrap/js/src/tab.js","node_modules/bootstrap/js/src/toast.js","node_modules/@popperjs/core/lib/index.js","node_modules/@popperjs/core/lib/enums.js","node_modules/@popperjs/core/lib/modifiers/index.js","node_modules/@popperjs/core/lib/modifiers/applyStyles.js","node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","node_modules/@popperjs/core/lib/dom-utils/getWindow.js","node_modules/@popperjs/core/lib/modifiers/arrow.js","node_modules/@popperjs/core/lib/utils/getBasePlacement.js","node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","node_modules/@popperjs/core/lib/utils/math.js","node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js","node_modules/@popperjs/core/lib/utils/userAgent.js","node_modules/@popperjs/core/lib/dom-utils/contains.js","node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","node_modules/@popperjs/core/lib/utils/within.js","node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","node_modules/@popperjs/core/lib/utils/expandToHashMap.js","node_modules/@popperjs/core/lib/modifiers/computeStyles.js","node_modules/@popperjs/core/lib/utils/getVariation.js","node_modules/@popperjs/core/lib/modifiers/eventListeners.js","node_modules/@popperjs/core/lib/modifiers/flip.js","node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","node_modules/@popperjs/core/lib/utils/detectOverflow.js","node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","node_modules/@popperjs/core/lib/utils/rectToClientRect.js","node_modules/@popperjs/core/lib/utils/computeOffsets.js","node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","node_modules/@popperjs/core/lib/modifiers/hide.js","node_modules/@popperjs/core/lib/modifiers/offset.js","node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","node_modules/@popperjs/core/lib/utils/getAltAxis.js","node_modules/@popperjs/core/lib/createPopper.js","node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","node_modules/@popperjs/core/lib/utils/orderModifiers.js","node_modules/@popperjs/core/lib/utils/debounce.js","node_modules/@popperjs/core/lib/utils/mergeByName.js","node_modules/@popperjs/core/lib/popper.js","node_modules/@popperjs/core/lib/popper-lite.js","app/assets/app.js","app/assets/editors.js"],"sourcesContent":["(() => {\nfunction $parcel$exportWildcard(dest, source) {\n Object.keys(source).forEach(function(key) {\n if (key === 'default' || key === '__esModule' || dest.hasOwnProperty(key)) {\n return;\n }\n\n Object.defineProperty(dest, key, {\n enumerable: true,\n get: function get() {\n return source[key];\n }\n });\n });\n\n return dest;\n}\nfunction $parcel$export(e, n, v, s) {\n Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});\n}\nfunction $parcel$interopDefault(a) {\n return a && a.__esModule ? a.default : a;\n}\nvar $parcel$global =\ntypeof globalThis !== 'undefined'\n ? globalThis\n : typeof self !== 'undefined'\n ? self\n : typeof window !== 'undefined'\n ? window\n : typeof global !== 'undefined'\n ? global\n : {};\nvar $parcel$modules = {};\nvar $parcel$inits = {};\n\nvar parcelRequire = $parcel$global[\"parcelRequirecc7c\"];\nif (parcelRequire == null) {\n parcelRequire = function(id) {\n if (id in $parcel$modules) {\n return $parcel$modules[id].exports;\n }\n if (id in $parcel$inits) {\n var init = $parcel$inits[id];\n delete $parcel$inits[id];\n var module = {id: id, exports: {}};\n $parcel$modules[id] = module;\n init.call(module.exports, module, module.exports);\n return module.exports;\n }\n var err = new Error(\"Cannot find module '\" + id + \"'\");\n err.code = 'MODULE_NOT_FOUND';\n throw err;\n };\n\n parcelRequire.register = function register(id, init) {\n $parcel$inits[id] = init;\n };\n\n $parcel$global[\"parcelRequirecc7c\"] = parcelRequire;\n}\nparcelRequire.register(\"kiHo9\", function(module, exports) {\n// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n// This is CodeMirror (https://codemirror.net/5), 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(function(global, factory) {\n module.exports = factory();\n})(module.exports, function() {\n \"use strict\";\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 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\\/(\\d+)/.exec(userAgent);\n var chrome_version = chrome && +chrome[1];\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 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 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) {\n presto = false;\n webkit = true;\n }\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 function classTest(cls) {\n 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 function removeChildren(e) {\n for(var count = e.childNodes.length; count > 0; --count)e.removeChild(e.firstChild);\n return e;\n }\n function removeChildrenAndAdd(parent, e) {\n return removeChildren(parent).appendChild(e);\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 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 {\n r.moveToElementText(node.parentNode);\n } catch (e) {\n return r;\n }\n r.collapse(true);\n r.moveEnd(\"character\", end);\n r.moveStart(\"character\", start);\n return r;\n };\n function contains(parent, child) {\n if (child.nodeType == 3) child = child.parentNode;\n if (parent.contains) 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 function activeElt(doc) {\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 = doc.activeElement;\n } catch (e) {\n activeElement = doc.body || null;\n }\n while(activeElement && activeElement.shadowRoot && activeElement.shadowRoot.activeElement)activeElement = activeElement.shadowRoot.activeElement;\n return activeElement;\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++)if (as[i] && !classTest(as[i]).test(b)) b += \" \" + as[i];\n return b;\n }\n var selectInput = function(node) {\n node.select();\n };\n if (ios) selectInput = function(node) {\n node.selectionStart = 0;\n node.selectionEnd = node.value.length;\n };\n else if (ie) selectInput = function(node) {\n try {\n node.select();\n } catch (_e) {}\n };\n function doc(cm) {\n return cm.display.wrapper.ownerDocument;\n }\n function win(cm) {\n return doc(cm).defaultView;\n }\n function bind(f) {\n var args = Array.prototype.slice.call(arguments, 1);\n return function() {\n return f.apply(null, args);\n };\n }\n function copyObj(obj, target, overwrite) {\n if (!target) target = {};\n for(var prop in obj)if (obj.hasOwnProperty(prop) && (overwrite !== false || !target.hasOwnProperty(prop))) target[prop] = obj[prop];\n return target;\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) return n + (end - i);\n n += nextTab - i;\n n += tabSize - n % tabSize;\n i = nextTab + 1;\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) self.f();\n else setTimeout(self.handler, self.time - +new Date);\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 function indexOf(array, elt) {\n for(var i = 0; i < array.length; ++i){\n if (array[i] == elt) return i;\n }\n return -1;\n }\n // Number of pixels added to scroller and sizer to hide scrollbar\n var scrollerGap = 50;\n // Returned or thrown by various protocols to signal 'I'm not\n // handling this'.\n var Pass = {\n toString: function() {\n return \"CodeMirror.Pass\";\n }\n };\n // Reused option objects for setSelection & friends\n var sel_dontScroll = {\n scroll: false\n }, sel_mouse = {\n origin: \"*mouse\"\n }, sel_move = {\n 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) 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 var spaceStrs = [\n \"\"\n ];\n function spaceStr(n) {\n while(spaceStrs.length <= n)spaceStrs.push(lst(spaceStrs) + \" \");\n return spaceStrs[n];\n }\n function lst(arr) {\n 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 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 function nothing() {}\n function createObj(base, props) {\n var inst;\n if (Object.create) 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 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\" && (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 function isEmpty(obj) {\n for(var n in obj){\n if (obj.hasOwnProperty(n) && obj[n]) return false;\n }\n return true;\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) {\n 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 // 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 // BIDI HELPERS\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 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 // Bidirectional ordering algorithm\n // See http://unicode.org/reports/tr9/tr9-13.html for the algorithm\n // that this (partially) implements.\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 // 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 var bidiRE = /[\\u0590-\\u05f4\\u0600-\\u06ff\\u0700-\\u08ac]/;\n var isNeutral = /[stwN]/, isStrong = /[LRr]/, countsAsLeft = /[Lb1n]/, countsAsNum = /[1n]/;\n function BidiSpan(level, from, to) {\n this.level = level;\n this.from = from;\n this.to = to;\n }\n return function(str, direction) {\n var outerType = direction == \"ltr\" ? \"L\" : \"R\";\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)types.push(charType(str.charCodeAt(i)));\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 // 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)) {\n cur = type$1;\n 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] && (prev$1 == \"1\" || prev$1 == \"n\")) types[i$3] = prev$1;\n prev$1 = type$2;\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 // 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 // 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)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 // 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;)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;)if (countsAsNum.test(types[j$2])) {\n if (pos < j$2) {\n order.splice(at, 0, new BidiSpan(1, pos, j$2));\n at += isRTL;\n }\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 if (pos < i$7) order.splice(at, 0, new BidiSpan(1, pos, i$7));\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 return direction == \"rtl\" ? order.reverse() : order;\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 // EVENT HANDLING\n // Lightweight event framework. on/off also work on DOM nodes,\n // registering native DOM handlers.\n var noHandlers = [];\n var on = function(emitter, type, f) {\n if (emitter.addEventListener) emitter.addEventListener(type, f, false);\n else if (emitter.attachEvent) 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 function getHandlers(emitter, type) {\n return emitter._handlers && emitter._handlers[type] || noHandlers;\n }\n function off(emitter, type, f) {\n if (emitter.removeEventListener) emitter.removeEventListener(type, f, false);\n else if (emitter.detachEvent) 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) map[type] = arr.slice(0, index).concat(arr.slice(index + 1));\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 // 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\") e = {\n type: e,\n preventDefault: function() {\n this.defaultPrevented = true;\n }\n };\n signal(cm, override || e.type, cm, e);\n return e_defaultPrevented(e) || e.codemirrorIgnore;\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) set.push(arr[i]);\n }\n function hasHandler(emitter, type) {\n return getHandlers(emitter, type).length > 0;\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) {\n on(this, type, f);\n };\n ctor.prototype.off = function(type, f) {\n 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 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) {\n e_preventDefault(e);\n e_stopPropagation(e);\n }\n function e_target(e) {\n return e.target || e.srcElement;\n }\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 // 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 var zwspSupported;\n function zeroWidthElement(measure) {\n if (zwspSupported == null) {\n var test = elt(\"span\", \"​\");\n removeChildrenAndAdd(measure, elt(\"span\", [\n test,\n document.createTextNode(\"x\")\n ]));\n if (measure.firstChild.offsetHeight != 0) zwspSupported = test.offsetWidth <= 1 && test.offsetHeight > 2 && !(ie && ie_version < 8);\n }\n var node = zwspSupported ? elt(\"span\", \"​\") : elt(\"span\", \"\\xa0\", null, \"display: inline-block; width: 1px; margin-right: -1px\");\n node.setAttribute(\"cm-text\", \"\");\n return node;\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خA\"));\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;\n // Safari returns null in some cases (#2780)\n return badBidiRects = r1.right - r0.right < 3;\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) {\n return string.split(/\\r\\n?|\\n/);\n };\n var hasSelection = window.getSelection ? function(te) {\n try {\n return te.selectionStart != te.selectionEnd;\n } catch (e) {\n return false;\n }\n } : function(te) {\n var range;\n try {\n 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 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 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 // Known modes, by name and by MIME\n var modes = {}, mimeModes = {};\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) mode.dependencies = Array.prototype.slice.call(arguments, 2);\n modes[name] = mode;\n }\n function defineMIME(mime, spec) {\n mimeModes[mime] = spec;\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)) 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 = {\n name: found\n };\n spec = createObj(found, spec);\n spec.name = found.name;\n } else if (typeof spec == \"string\" && /^[\\w\\-]+\\/[\\w\\-]+\\+xml$/.test(spec)) return resolveMode(\"application/xml\");\n else if (typeof spec == \"string\" && /^[\\w\\-]+\\/[\\w\\-]+\\+json$/.test(spec)) return resolveMode(\"application/json\");\n if (typeof spec == \"string\") return {\n name: spec\n };\n else return spec || {\n 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)modeObj[prop$1] = spec.modeProps[prop$1];\n return modeObj;\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 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 // 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 || {\n mode: mode,\n state: state\n };\n }\n function startState(mode, a1, a2) {\n return mode.startState ? mode.startState(a1, a2) : true;\n }\n // STRING STREAM\n // Fed to the mode parsers, provides helper functions to make\n // parsers more succinct.\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 StringStream.prototype.eol = function() {\n return this.pos >= this.string.length;\n };\n StringStream.prototype.sol = function() {\n return this.pos == this.lineStart;\n };\n StringStream.prototype.peek = function() {\n return this.string.charAt(this.pos) || undefined;\n };\n StringStream.prototype.next = function() {\n if (this.pos < this.string.length) 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) {\n ++this.pos;\n return ch;\n }\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() {\n this.pos = this.string.length;\n };\n StringStream.prototype.skipTo = function(ch) {\n var found = this.string.indexOf(ch, this.pos);\n if (found > -1) {\n this.pos = found;\n return true;\n }\n };\n StringStream.prototype.backUp = function(n) {\n this.pos -= n;\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) - (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) {\n return caseInsensitive ? str.toLowerCase() : str;\n };\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() {\n return this.string.slice(this.start, this.pos);\n };\n StringStream.prototype.hideFirstChars = function(n, inner) {\n this.lineStart += n;\n try {\n return inner();\n } finally{\n this.lineStart -= n;\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 // 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)for(var i = 0;; ++i){\n var child = chunk.children[i], sz = child.chunkSize();\n if (n < sz) {\n chunk = child;\n break;\n }\n n -= sz;\n }\n return chunk.lines[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) {\n out.push(line.text);\n }); // iter aborts when callback returns truthy value\n return out;\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 // 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)for(var i = 0;; ++i){\n if (chunk.children[i] == cur) break;\n no += chunk.children[i].chunkSize();\n }\n return no + cur.first;\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) {\n chunk = child;\n continue outer;\n }\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 function isLine(doc, l) {\n 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 // A Pos instance represents a position within the text.\n function Pos(line, ch, sticky) {\n if (sticky === void 0) sticky = null;\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 // 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) {\n return a.line - b.line || a.ch - b.ch;\n }\n function equalCursorPos(a, b) {\n return a.sticky == b.sticky && cmp(a, b) == 0;\n }\n function copyPos(x) {\n return Pos(x.line, x.ch);\n }\n function maxPos(a, b) {\n return cmp(a, b) < 0 ? b : a;\n }\n function minPos(a, b) {\n 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) {\n return Math.max(doc.first, Math.min(n, doc.first + doc.size - 1));\n }\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 var SavedContext = function(state, lookAhead) {\n this.state = state;\n this.lookAhead = lookAhead;\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 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 Context.prototype.baseToken = function(n) {\n if (!this.baseTokens) return null;\n while(this.baseTokens[this.baseTokenPos] <= n)this.baseTokenPos += 2;\n var type = this.baseTokens[this.baseTokenPos + 1];\n return {\n 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 Context.fromSaved = function(doc, saved, line) {\n if (saved instanceof SavedContext) return new Context(doc, copyState(doc.mode, saved.state), line, saved.lookAhead);\n else return new Context(doc, copyState(doc.mode, saved), line);\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 // 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 = [\n cm.state.modeGen\n ], lineClasses = {};\n // Compute the base array of styles\n runMode(cm, line.text, cm.doc.mode, context, function(end, style) {\n return st.push(end, style);\n }, lineClasses, forceToEnd);\n var state = context.state;\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) 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 for(; start < i; start += 2){\n var cur = st[start + 1];\n st[start + 1] = (cur ? cur + \" \" : \"\") + \"overlay \" + style;\n }\n }, lineClasses);\n context.state = state;\n context.baseTokens = null;\n context.baseTokenPos = 1;\n };\n for(var o = 0; o < cm.state.overlays.length; ++o)loop(o);\n return {\n styles: st,\n 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) cm.doc.modeFrontier = Math.max(cm.doc.modeFrontier, ++cm.doc.highlightFrontier);\n }\n return line.styles;\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 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 // 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 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 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 var Token = function(stream, type, state) {\n this.start = stream.start;\n this.end = stream.pos;\n this.string = stream.current();\n this.type = type || null;\n this.state = state;\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 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) output[prop] = lineClass[2];\n else if (!new RegExp(\"(?:^|\\\\s)\" + lineClass[2] + \"(?:$|\\\\s)\").test(output[prop])) output[prop] += \" \" + lineClass[2];\n }\n return type;\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 && [\n null\n ];\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 style = extractLineClasses(readToken(mode, stream, context.state, inner), lineClasses);\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 // 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)) 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 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 // Optimize some code when these features are not used.\n var sawReadOnlySpans = false, sawCollapsedSpans = false;\n function seeReadOnlySpans() {\n sawReadOnlySpans = true;\n }\n function seeCollapsedSpans() {\n sawCollapsedSpans = true;\n }\n // TEXTMARKER SPANS\n function MarkedSpan(marker, from, to) {\n this.marker = marker;\n this.from = from;\n this.to = to;\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 // 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)if (spans[i] != span) (r || (r = [])).push(spans[i]);\n return r;\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 && line.markedSpans && inThisOp.has(line.markedSpans)) line.markedSpans.push(span);\n else {\n line.markedSpans = line.markedSpans ? line.markedSpans.concat([\n span\n ]) : [\n span\n ];\n if (inThisOp) inThisOp.add(line.markedSpans);\n }\n span.marker.attachLine(line);\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, span.to == null ? null : span.to - endCh));\n }\n }\n return nw;\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 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 // Next, merge those two ends\n var sameLine = change.text.length == 1, offset = lst(change.text).length + (sameLine ? startCh : 0);\n if (first) // 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 if (last) // 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 // 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 var newMarkers = [\n first\n ];\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)if (first[i$2].to == null) (gapMarkers || (gapMarkers = [])).push(new MarkedSpan(first[i$2].marker, null, null));\n }\n for(var i$3 = 0; i$3 < gap; ++i$3)newMarkers.push(gapMarkers);\n newMarkers.push(last);\n }\n return newMarkers;\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) spans.splice(i--, 1);\n }\n if (!spans.length) return null;\n return spans;\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)) (markers || (markers = [])).push(mark);\n }\n });\n if (!markers) return null;\n var parts = [\n {\n from: from,\n to: to\n }\n ];\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 = [\n j,\n 1\n ], dfrom = cmp(p.from, m.from), dto = cmp(p.to, m.to);\n if (dfrom < 0 || !mk.inclusiveLeft && !dfrom) newParts.push({\n from: p.from,\n to: m.from\n });\n if (dto > 0 || !mk.inclusiveRight && !dto) newParts.push({\n from: m.to,\n to: p.to\n });\n parts.splice.apply(parts, newParts);\n j += newParts.length - 3;\n }\n }\n return parts;\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)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)spans[i].marker.attachLine(line);\n line.markedSpans = spans;\n }\n // Helpers used when computing which overlapping collapsed span\n // counts as the larger one.\n function extraLeft(marker) {\n return marker.inclusiveLeft ? -1 : 0;\n }\n function extraRight(marker) {\n 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 // 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 && (!found || compareCollapsedMarkers(found, sp.marker) < 0)) found = sp.marker;\n }\n return found;\n }\n function collapsedSpanAtStart(line) {\n return collapsedSpanAtSide(line, true);\n }\n function collapsedSpanAtEnd(line) {\n 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) && (!found || compareCollapsedMarkers(found, sp.marker) < 0)) found = sp.marker;\n }\n return found;\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) || fromCmp >= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.from, to) <= 0 : cmp(found.from, to) < 0)) return true;\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))line = merged.find(-1, true).line;\n return line;\n }\n function visualLineEnd(line) {\n var merged;\n while(merged = collapsedSpanAtEnd(line))line = merged.find(1, true).line;\n return line;\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 // 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 // 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))line = merged.find(1, true).line;\n return lineNo(line) + 1;\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)) 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) 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 && (sp.to == null || sp.to != span.from) && (sp.marker.inclusiveLeft || span.marker.inclusiveRight) && lineIsHiddenInner(doc, line, sp)) return true;\n }\n }\n // Find the height above the given line.\n function heightAtLine(lineObj) {\n lineObj = visualLine(lineObj);\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)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 return h;\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 // 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 // LINE DATA STRUCTURE\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 Line.prototype.lineNo = function() {\n return lineNo(this);\n };\n eventMixin(Line);\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 // Detach a line from the document tree and its markers.\n function cleanUpLine(line) {\n line.parent = null;\n detachMarkedSpans(line);\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] || (cache[style] = style.replace(/\\S+/g, \"cm-$&\"));\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 = {\n pre: eltP(\"pre\", [\n content\n ], \"CodeMirror-line\"),\n content: content,\n col: 0,\n pos: 0,\n cm: cm,\n trailingSpace: false,\n splitSpaces: cm.getOption(\"lineWrapping\")\n };\n lineView.measure = {};\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))) 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) builder.bgClass = joinClasses(line.styleClasses.bgClass, builder.bgClass || \"\");\n if (line.styleClasses.textClass) builder.textClass = joinClasses(line.styleClasses.textClass, builder.textClass || \"\");\n }\n // Ensure at least a single node is present, for measuring.\n if (builder.map.length == 0) builder.map.push(0, 0, builder.content.appendChild(zeroWidthElement(cm.display.measure)));\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 // 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\")) builder.content.className = \"cm-tab-wrap-hack\";\n }\n signal(cm, \"renderLine\", cm, lineView.line, builder.pre);\n if (builder.pre.className) builder.textClass = joinClasses(builder.pre.className, builder.textClass || \"\");\n return builder;\n }\n function defaultSpecialCharPlaceholder(ch) {\n var token = elt(\"span\", \"•\", \"cm-invalidchar\");\n token.title = \"\\\\u\" + ch.charCodeAt(0).toString(16);\n token.setAttribute(\"aria-label\", token.title);\n return token;\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\", [\n txt\n ]));\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\" ? \"␍\" : \"␤\", \"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\", [\n txt$1\n ]));\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\", [\n content\n ], fullStyle, css);\n if (attributes) {\n for(var attr in attributes)if (attributes.hasOwnProperty(attr) && attr != \"style\" && attr != \"class\") token.setAttribute(attr, attributes[attr]);\n }\n return builder.content.appendChild(token);\n }\n builder.content.appendChild(content);\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)) ch = \"\\xa0\";\n result += ch;\n spaceBefore = ch == \" \";\n }\n return result;\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 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) 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 // 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)builder.addToken(builder, allText.slice(at, at = styles[i$1]), interpretTokenStyle(styles[i$1 + 1], builder.cm.options));\n return;\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) {\n spanStyle = spanEndStyle = spanStartStyle = css = \"\";\n attributes = null;\n collapsed = null;\n 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) 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) for(var attr in m.attributes)(attributes || (attributes = {}))[attr] = m.attributes[attr];\n if (m.collapsed && (!collapsed || compareCollapsedMarkers(collapsed.marker, m) < 0)) collapsed = sp;\n } else if (sp.from > pos && nextChange > sp.from) nextChange = sp.from;\n }\n if (endStyles) {\n for(var j$1 = 0; j$1 < endStyles.length; j$1 += 2)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)buildCollapsedSpan(builder, 0, foundBookmarks[j$2]);\n if (collapsed && (collapsed.from || 0) == pos) {\n buildCollapsedSpan(builder, (collapsed.to == null ? len + 1 : collapsed.to) - pos, 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 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, spanStartStyle, pos + tokenText.length == nextChange ? spanEndStyle : \"\", css, attributes);\n }\n if (end >= upto) {\n text = text.slice(upto - pos);\n pos = upto;\n break;\n }\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 // 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 // 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 var operationGroup = null;\n function pushOperation(op) {\n if (operationGroup) operationGroup.ops.push(op);\n else op.ownsGroup = operationGroup = {\n ops: [\n op\n ],\n delayedCallbacks: []\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++)callbacks[i].call(null);\n for(var j = 0; j < group.ops.length; j++){\n var op = group.ops[j];\n if (op.cursorActivityHandlers) while(op.cursorActivityCalled < op.cursorActivityHandlers.length)op.cursorActivityHandlers[op.cursorActivityCalled++].call(null, op.cm);\n }\n }while (i < callbacks.length);\n }\n function finishOperation(op, endCb) {\n var group = op.ownsGroup;\n if (!group) return;\n try {\n fireCallbacksForOps(group);\n } finally{\n operationGroup = null;\n endCb(group);\n }\n }\n var orphanDelayedCallbacks = null;\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) list = operationGroup.delayedCallbacks;\n else if (orphanDelayedCallbacks) list = orphanDelayedCallbacks;\n else {\n list = orphanDelayedCallbacks = [];\n setTimeout(fireOrphanDelayed, 0);\n }\n var loop = function(i) {\n list.push(function() {\n return arr[i].apply(null, args);\n });\n };\n for(var i = 0; i < arr.length; ++i)loop(i);\n }\n function fireOrphanDelayed() {\n var delayed = orphanDelayedCallbacks;\n orphanDelayedCallbacks = null;\n for(var i = 0; i < delayed.length; ++i)delayed[i]();\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 // 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) 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 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 {\n lineView.background.parentNode.removeChild(lineView.background);\n lineView.background = null;\n }\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 // 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 // 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) lineView.text.className = cls;\n }\n function updateLineClasses(cm, lineView) {\n updateLineBackground(cm, lineView);\n if (lineView.line.wrapClass) ensureLineWrapped(lineView).className = lineView.line.wrapClass;\n else if (lineView.node != lineView.text) lineView.node.className = \"\";\n var textClass = lineView.textClass ? lineView.textClass + \" \" + (lineView.line.textClass || \"\") : lineView.line.textClass;\n lineView.text.className = textClass || \"\";\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, \"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) gutterWrap.className += \" \" + lineView.line.gutterClass;\n if (cm.options.lineNumbers && (!markers || !markers[\"CodeMirror-linenumbers\"])) lineView.lineNumber = gutterWrap.appendChild(elt(\"div\", lineNumberFor(cm.options, lineN), \"CodeMirror-linenumber CodeMirror-gutter-elt\", \"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) gutterWrap.appendChild(elt(\"div\", [\n found\n ], \"CodeMirror-gutter-elt\", \"left: \" + dims.gutterLeft[id] + \"px; width: \" + dims.gutterWidth[id] + \"px\"));\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 // 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 updateLineClasses(cm, lineView);\n updateLineGutter(cm, lineView, lineN, dims);\n insertLineWidgets(cm, lineView, dims);\n return lineView.node;\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++)insertLineWidgetsFor(cm, lineView.rest[i], lineView, dims, false);\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\", [\n widget.node\n ], \"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) wrap.insertBefore(node, lineView.gutter || lineView.text);\n else wrap.appendChild(node);\n signalLater(widget, \"redraw\");\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 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) parentStyle += \"margin-left: -\" + cm.display.gutters.offsetWidth + \"px;\";\n if (widget.noHScroll) parentStyle += \"width: \" + cm.display.wrapper.clientWidth + \"px;\";\n removeChildrenAndAdd(cm.display.measure, elt(\"div\", [\n widget.node\n ], null, parentStyle));\n }\n return widget.height = widget.node.parentNode.offsetHeight;\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.parentNode == display.sizer && n != display.mover) return true;\n }\n }\n // POSITION MEASUREMENT\n function paddingTop(display) {\n return display.lineSpace.offsetTop;\n }\n function paddingVert(display) {\n return display.mover.offsetHeight - display.lineSpace.offsetHeight;\n }\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 = {\n left: parseInt(style.paddingLeft),\n right: parseInt(style.paddingRight)\n };\n if (!isNaN(data.left) && !isNaN(data.right)) display.cachedPaddingH = data;\n return data;\n }\n function scrollGap(cm) {\n return scrollerGap - cm.display.nativeBarWidth;\n }\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 // 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) heights.push((cur.bottom + next.top) / 2 - rect.top);\n }\n }\n heights.push(rect.bottom - rect.top);\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) return {\n map: lineView.measure.map,\n cache: lineView.measure.cache\n };\n if (lineView.rest) {\n for(var i = 0; i < lineView.rest.length; i++){\n if (lineView.rest[i] == line) return {\n map: lineView.measure.maps[i],\n cache: lineView.measure.caches[i]\n };\n }\n for(var i$1 = 0; i$1 < lineView.rest.length; i$1++){\n if (lineNo(lineView.rest[i$1]) > lineN) return {\n map: lineView.measure.maps[i$1],\n cache: lineView.measure.caches[i$1],\n before: true\n };\n }\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 // 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 // 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) return cm.display.view[findViewIndex(cm, lineN)];\n var ext = cm.display.externalMeasured;\n if (ext && lineN >= ext.lineN && lineN < ext.lineN + ext.size) return ext;\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) view = null;\n else if (view && view.changes) {\n updateLineForChanges(cm, view, lineN, getDimensions(cm));\n cm.curOp.forceUpdate = true;\n }\n if (!view) view = updateExternalMeasurement(cm, line);\n var info = mapFromLineView(view, line, lineN);\n return {\n line: line,\n view: view,\n rect: null,\n map: info.map,\n cache: info.cache,\n before: info.before,\n hasHeights: false\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)) found = prepared.cache[key];\n else {\n if (!prepared.rect) 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 {\n left: found.left,\n right: found.right,\n top: varHeight ? found.rtop : found.top,\n bottom: varHeight ? found.rbottom : found.bottom\n };\n }\n var nullRect = {\n left: 0,\n right: 0,\n top: 0,\n 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;\n 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\")) collapse = bias;\n if (bias == \"left\" && start == 0) 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) 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 {\n node: node,\n start: start,\n end: end,\n collapse: collapse,\n coverStart: mStart,\n 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 }\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 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 var rect;\n if (node.nodeType == 3) {\n for(var i$1 = 0; i$1 < 4; i$1++){\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) rect = node.parentNode.getBoundingClientRect();\n else 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 {\n if (start > 0) collapse = bias = \"right\";\n var rects;\n if (cm.options.lineWrapping && (rects = node.getClientRects()).length > 1) rect = rects[bias == \"right\" ? rects.length - 1 : 0];\n else 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) rect = {\n left: rSpan.left,\n right: rSpan.left + charWidth(cm.display),\n top: rSpan.top,\n bottom: rSpan.bottom\n };\n else rect = nullRect;\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 }\n var top = i ? heights[i - 1] : 0, bot = heights[i];\n var result = {\n left: (collapse == \"right\" ? rect.right : rect.left) - prepared.rect.left,\n right: (collapse == \"left\" ? rect.left : rect.right) - prepared.rect.left,\n top: top,\n bottom: bot\n };\n if (!rect.left && !rect.right) result.bogus = true;\n if (!cm.options.singleCursorHeightPerLine) {\n result.rtop = rtop;\n result.rbottom = rbot;\n }\n return result;\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 || screen.logicalXDPI == screen.deviceXDPI || !hasBadZoomedRects(measure)) return rect;\n var scaleX = screen.logicalXDPI / screen.deviceXDPI;\n var scaleY = screen.logicalYDPI / screen.deviceYDPI;\n return {\n left: rect.left * scaleX,\n right: rect.right * scaleX,\n top: rect.top * scaleY,\n 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++)lineView.measure.caches[i] = {};\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++)clearLineMeasurementCacheFor(cm.display.view[i]);\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 function pageScrollX(doc) {\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 -(doc.body.getBoundingClientRect().left - parseInt(getComputedStyle(doc.body).marginLeft));\n return doc.defaultView.pageXOffset || (doc.documentElement || doc.body).scrollLeft;\n }\n function pageScrollY(doc) {\n if (chrome && android) return -(doc.body.getBoundingClientRect().top - parseInt(getComputedStyle(doc.body).marginTop));\n return doc.defaultView.pageYOffset || (doc.documentElement || doc.body).scrollTop;\n }\n function widgetTopHeight(lineObj) {\n var ref = visualLine(lineObj);\n var widgets = ref.widgets;\n var height = 0;\n if (widgets) {\n for(var i = 0; i < widgets.length; ++i)if (widgets[i].above) height += widgetHeight(widgets[i]);\n }\n return height;\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;\n 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(doc(cm)));\n var xOff = lOff.left + (context == \"window\" ? 0 : pageScrollX(doc(cm)));\n rect.left += xOff;\n rect.right += xOff;\n }\n rect.top += yOff;\n rect.bottom += yOff;\n return rect;\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(doc(cm));\n top -= pageScrollY(doc(cm));\n } else if (context == \"local\" || !context) {\n var localBox = cm.display.sizer.getBoundingClientRect();\n left += localBox.left;\n top += localBox.top;\n }\n var lineSpaceBox = cm.display.lineSpace.getBoundingClientRect();\n return {\n left: left - lineSpaceBox.left,\n 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 // 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;\n 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 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 // 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 {\n left: left,\n right: left,\n top: top,\n 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 // 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) return PosWithInfo(doc.first + doc.size - 1, getLine(doc, last).text.length, null, 1, 1);\n if (x < 0) x = 0;\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 function wrappedLineExtent(cm, lineObj, preparedMeasure, y) {\n y -= widgetTopHeight(lineObj);\n var end = lineObj.text.length;\n var begin = findFirst(function(ch) {\n return measureCharPrepared(cm, preparedMeasure, ch - 1).bottom <= y;\n }, end, 0);\n end = findFirst(function(ch) {\n return measureCharPrepared(cm, preparedMeasure, ch).top > y;\n }, begin, end);\n return {\n begin: begin,\n 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 // 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 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 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)(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 // 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;\n 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 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\" : measureCharPrepared(cm, preparedMeasure, ch - (ltr ? 1 : 0)).bottom + widgetHeight <= y == ltr ? \"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 ch = skipExtendingChars(lineObj.text, ch, 1);\n return PosWithInfo(lineNo, ch, sticky, outside, x - baseX);\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\"), \"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\"), \"line\", lineObj, preparedMeasure);\n if (boxIsAfter(start, x, y, true) && start.top > y) part = order[index - 1];\n }\n return part;\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 = {\n from: begin,\n to: part.to,\n level: part.level\n };\n if (part.to > end) part = {\n from: part.from,\n to: end,\n level: part.level\n };\n return part;\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 // 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\", [\n anchor\n ], \"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 // 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 {\n 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 // 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 var widgetsHeight = 0;\n if (line.widgets) {\n for(var i = 0; i < line.widgets.length; i++)if (line.widgets[i].height) widgetsHeight += line.widgets[i].height;\n }\n if (wrapping) return widgetsHeight + (Math.ceil(line.text.length / perLine) || 1) * th;\n else return widgetsHeight + th;\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 // 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 var x, y, space = display.lineSpace.getBoundingClientRect();\n // Fails unpredictably on IE[67] when mouse is dragged around quickly.\n try {\n x = e.clientX - space.left;\n y = e.clientY - space.top;\n } catch (e$1) {\n return null;\n }\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 // 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 // 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 var display = cm.display;\n if (lendiff && to < display.viewTo && (display.updateLineNumbers == null || display.updateLineNumbers > from)) display.updateLineNumbers = from;\n cm.curOp.viewChanged = true;\n if (from >= display.viewTo) {\n if (sawCollapsedSpans && visualLineNo(cm.doc, from) < display.viewTo) resetView(cm);\n } else if (to <= display.viewFrom) {\n if (sawCollapsedSpans && visualLineEndNo(cm.doc, to + lendiff) > display.viewFrom) resetView(cm);\n else {\n display.viewFrom += lendiff;\n display.viewTo += lendiff;\n }\n } else if (from <= display.viewFrom && to >= display.viewTo) resetView(cm);\n else if (from <= display.viewFrom) {\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 resetView(cm);\n } else if (to >= display.viewTo) {\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 resetView(cm);\n } else {\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).concat(buildViewArray(cm, cutTop.lineN, cutBot.lineN)).concat(display.view.slice(cutBot.index));\n display.viewTo += lendiff;\n } else resetView(cm);\n }\n var ext = display.externalMeasured;\n if (ext) {\n if (to < ext.lineN) ext.lineN += lendiff;\n else if (from < ext.lineN + ext.size) display.externalMeasured = null;\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) display.externalMeasured = null;\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 // 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 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) return {\n index: index,\n lineN: newN\n };\n var n = cm.display.viewFrom;\n for(var i = 0; i < index; i++)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 diff = n - oldN;\n oldN += diff;\n 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 {\n index: index,\n 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) display.view = buildViewArray(cm, from, display.viewFrom).concat(display.view);\n else if (display.viewFrom < from) display.view = display.view.slice(findViewIndex(cm, from));\n display.viewFrom = from;\n if (display.viewTo < to) display.view = display.view.concat(buildViewArray(cm, display.viewTo, to));\n else if (display.viewTo > to) display.view = display.view.slice(0, findViewIndex(cm, to));\n }\n display.viewTo = to;\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 function updateSelection(cm) {\n cm.display.input.showSelection(cm.display.input.prepareSelection());\n }\n function prepareSelection(cm, primary) {\n if (primary === void 0) primary = true;\n var doc = cm.doc, result = {};\n var curFragment = result.cursors = document.createDocumentFragment();\n var selFragment = result.selection = document.createDocumentFragment();\n var customCursor = cm.options.$customCursor;\n if (customCursor) primary = true;\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 (customCursor) {\n var head = customCursor(cm, range);\n if (head) drawSelectionCursor(cm, head, curFragment);\n } else if (collapsed || cm.options.showCursorWhenSelecting) drawSelectionCursor(cm, range.head, curFragment);\n if (!collapsed) drawSelectionRange(cm, range, selFragment);\n }\n return result;\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 var cursor = output.appendChild(elt(\"div\", \"\\xa0\", \"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 if (/\\bcm-fat-cursor\\b/.test(cm.getWrapperElement().className)) {\n var charPos = charCoords(cm, head, \"div\", null, null);\n var width = charPos.right - charPos.left;\n cursor.style.width = (width > 0 ? width : cm.defaultCharWidth()) + \"px\";\n }\n if (pos.other) {\n // Secondary cursor, shown when on a 'jump' in bi-directional text\n var otherCursor = output.appendChild(elt(\"div\", \"\\xa0\", \"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 function cmpCoords(a, b) {\n 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 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 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 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 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 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) {\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 {\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 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 {\n start: start,\n end: end\n };\n }\n var sFrom = range.from(), sTo = range.to();\n if (sFrom.line == sTo.line) 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 add(leftEnd.right, leftEnd.top, rightStart.left - leftEnd.right, leftEnd.bottom);\n }\n if (leftEnd.bottom < rightStart.top) add(leftSide, leftEnd.bottom, null, rightStart.top);\n }\n output.appendChild(fragment);\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) 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) display.cursorDiv.style.visibility = \"hidden\";\n }\n function ensureFocus(cm) {\n if (!cm.hasFocus()) {\n cm.display.input.focus();\n if (!cm.state.focused) onFocus(cm);\n }\n }\n function delayBlurEvent(cm) {\n cm.state.delayingBlurEvent = true;\n setTimeout(function() {\n if (cm.state.delayingBlurEvent) {\n cm.state.delayingBlurEvent = false;\n if (cm.state.focused) onBlur(cm);\n }\n }, 100);\n }\n function onFocus(cm, e) {\n if (cm.state.delayingBlurEvent && !cm.state.draggingText) cm.state.delayingBlurEvent = false;\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() {\n return cm.display.input.reset(true);\n }, 20);\n // 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 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() {\n if (!cm.state.focused) cm.display.shift = false;\n }, 150);\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) width = cur.text.firstChild.getBoundingClientRect().right - box.left - 1;\n }\n var diff = cur.line.height - height;\n if (diff > .005 || diff < -0.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++)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 // 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 // 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 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 {\n from: from,\n to: Math.max(to, from + 1)\n };\n }\n // SCROLLING THINGS INTO VIEW\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 var display = cm.display, box = display.sizer.getBoundingClientRect(), doScroll = null;\n var doc = display.wrapper.ownerDocument;\n if (rect.top + box.top < 0) doScroll = true;\n else if (rect.bottom + box.top > (doc.defaultView.innerHeight || doc.documentElement.clientHeight)) doScroll = false;\n if (doScroll != null && !phantom) {\n var scrollNode = elt(\"div\", \"​\", 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 // 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 = {\n 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 };\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 // 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 // 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 screen1 = displayHeight(cm), result = {};\n if (rect.bottom - rect.top > screen1) rect.bottom = rect.top + screen1;\n var docBottom = cm.doc.height + paddingVert(display);\n var atTop = rect.top < snapMargin, atBottom = rect.bottom > docBottom - snapMargin;\n if (rect.top < screentop) result.scrollTop = atTop ? 0 : rect.top;\n else if (rect.bottom > screentop + screen1) {\n var newTop = Math.min(rect.top, (atBottom ? docBottom : rect.bottom) - screen1);\n if (newTop != screentop) result.scrollTop = newTop;\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) result.scrollLeft = 0;\n else if (rect.left < screenleft) result.scrollLeft = Math.max(0, rect.left + gutterSpace - (tooWide ? 0 : 10));\n else if (rect.right > screenw + screenleft - 3) result.scrollLeft = rect.right + (tooWide ? 0 : 10) - screenw;\n return result;\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 // 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 = {\n from: cur,\n to: cur,\n 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 function scrollToRange(cm, range) {\n resolveScrollToPos(cm);\n cm.curOp.scrollToPos = range;\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 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 // 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, {\n top: val\n });\n setScrollTop(cm, val, true);\n if (gecko) updateDisplaySimple(cm);\n startWorker(cm, 100);\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 // 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 // SCROLLBARS\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,\n 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 var NativeScrollbars = function(place, scroll, cm) {\n this.cm = cm;\n var vert = this.vert = elt(\"div\", [\n elt(\"div\", null, null, \"min-width: 1px\")\n ], \"CodeMirror-vscrollbar\");\n var horiz = this.horiz = elt(\"div\", [\n elt(\"div\", null, null, \"height: 100%; min-height: 1px\")\n ], \"CodeMirror-hscrollbar\");\n vert.tabIndex = horiz.tabIndex = -1;\n place(vert);\n place(horiz);\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 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 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 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 = Math.max(0, measure.scrollHeight - measure.clientHeight + totalHeight) + \"px\";\n } else {\n this.vert.scrollTop = 0;\n this.vert.style.display = \"\";\n this.vert.firstChild.style.height = \"0\";\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 = 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 if (!this.checkedZeroWidth && measure.clientHeight > 0) {\n if (sWidth == 0) this.zeroWidthHack();\n this.checkedZeroWidth = true;\n }\n return {\n right: needsV ? sWidth : 0,\n 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 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 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.visibility = this.vert.style.visibility = \"hidden\";\n this.disableHoriz = new Delayed;\n this.disableVert = new Delayed;\n };\n NativeScrollbars.prototype.enableZeroWidthBar = function(bar, delay, type) {\n bar.style.visibility = \"\";\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) : document.elementFromPoint((box.right + box.left) / 2, box.bottom - 1);\n if (elt != bar) bar.style.visibility = \"hidden\";\n else delay.set(1000, maybeDisable);\n }\n delay.set(1000, maybeDisable);\n };\n NativeScrollbars.prototype.clear = function() {\n var parent = this.horiz.parentNode;\n parent.removeChild(this.horiz);\n parent.removeChild(this.vert);\n };\n var NullScrollbars = function() {};\n NullScrollbars.prototype.update = function() {\n return {\n bottom: 0,\n right: 0\n };\n };\n NullScrollbars.prototype.setScrollLeft = function() {};\n NullScrollbars.prototype.setScrollTop = function() {};\n NullScrollbars.prototype.clear = function() {};\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) updateHeightsInViewport(cm);\n updateScrollbarsInner(cm, measureForScrollbars(cm));\n startWidth = cm.display.barWidth;\n startHeight = cm.display.barHeight;\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 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 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 var scrollbarModel = {\n \"native\": NativeScrollbars,\n \"null\": NullScrollbars\n };\n function initScrollbars(cm) {\n if (cm.display.scrollbars) {\n cm.display.scrollbars.clear();\n if (cm.display.scrollbars.addClass) rmClass(cm.display.wrapper, cm.display.scrollbars.addClass);\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() {\n return cm.display.input.focus();\n }, 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) addClass(cm.display.wrapper, cm.display.scrollbars.addClass);\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 var nextOpId = 0;\n // Start a new operation.\n function startOperation(cm) {\n cm.curOp = {\n cm: cm,\n viewChanged: false,\n startHeight: cm.doc.height,\n forceUpdate: false,\n updateInput: 0,\n typing: false,\n changeObjs: null,\n cursorActivityHandlers: null,\n cursorActivityCalled: 0,\n selectionChanged: false,\n updateMaxLine: false,\n scrollLeft: null,\n scrollTop: null,\n scrollToPos: null,\n focus: false,\n id: ++nextOpId,\n markArrays: null // Used by addMarkedSpan\n };\n pushOperation(cm.curOp);\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++)group.ops[i].cm.curOp = null;\n endOperations(group);\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++)endOperation_R1(ops[i]);\n for(var i$1 = 0; i$1 < ops.length; i$1++)endOperation_W1(ops[i$1]);\n for(var i$2 = 0; i$2 < ops.length; i$2++)endOperation_R2(ops[i$2]);\n for(var i$3 = 0; i$3 < ops.length; i$3++)endOperation_W2(ops[i$3]);\n for(var i$4 = 0; i$4 < ops.length; i$4++)endOperation_finish(ops[i$4]);\n }\n function endOperation_R1(op) {\n var cm = op.cm, display = cm.display;\n maybeClipScrollbars(cm);\n if (op.updateMaxLine) findMaxLine(cm);\n op.mustUpdate = op.viewChanged || op.forceUpdate || op.scrollTop != null || op.scrollToPos && (op.scrollToPos.from.line < display.viewFrom || op.scrollToPos.to.line >= display.viewTo) || display.maxLineChanged && cm.options.lineWrapping;\n op.update = op.mustUpdate && new DisplayUpdate(cm, op.mustUpdate && {\n top: op.scrollTop,\n ensure: op.scrollToPos\n }, op.forceUpdate);\n }\n function endOperation_W1(op) {\n op.updatedDisplay = op.mustUpdate && updateDisplayIfNeeded(op.cm, op.update);\n }\n function endOperation_R2(op) {\n var cm = op.cm, display = cm.display;\n if (op.updatedDisplay) updateHeightsInViewport(cm);\n op.barMeasure = measureForScrollbars(cm);\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 = 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 if (op.updatedDisplay || op.selectionChanged) op.preparedSelection = display.input.prepareSelection();\n }\n function endOperation_W2(op) {\n var cm = op.cm;\n if (op.adjustWidthTo != null) {\n cm.display.sizer.style.minWidth = op.adjustWidthTo + \"px\";\n if (op.maxScrollLeft < cm.doc.scrollLeft) setScrollLeft(cm, Math.min(cm.display.scroller.scrollLeft, op.maxScrollLeft), true);\n cm.display.maxLineChanged = false;\n }\n var takeFocus = op.focus && op.focus == activeElt(doc(cm));\n if (op.preparedSelection) cm.display.input.showSelection(op.preparedSelection, takeFocus);\n if (op.updatedDisplay || op.startHeight != cm.doc.height) updateScrollbars(cm, op.barMeasure);\n if (op.updatedDisplay) setDocumentHeight(cm, op.barMeasure);\n if (op.selectionChanged) restartBlink(cm);\n if (cm.state.focused && op.updateInput) cm.display.input.reset(op.typing);\n if (takeFocus) ensureFocus(op.cm);\n }\n function endOperation_finish(op) {\n var cm = op.cm, display = cm.display, doc = cm.doc;\n if (op.updatedDisplay) postUpdateDisplay(cm, op.update);\n // Abort mouse wheel delta measurement, when scrolling explicitly\n if (display.wheelStartX != null && (op.scrollTop != null || op.scrollLeft != null || op.scrollToPos)) display.wheelStartX = display.wheelStartY = null;\n // Propagate the scroll position to the actual DOM scroller\n if (op.scrollTop != null) setScrollTop(cm, op.scrollTop, op.forceScroll);\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), clipPos(doc, op.scrollToPos.to), op.scrollToPos.margin);\n maybeScrollWindow(cm, rect);\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) {\n for(var i = 0; i < hidden.length; ++i)if (!hidden[i].lines.length) signal(hidden[i], \"hide\");\n }\n if (unhidden) {\n for(var i$1 = 0; i$1 < unhidden.length; ++i$1)if (unhidden[i$1].lines.length) signal(unhidden[i$1], \"unhide\");\n }\n if (display.wrapper.offsetHeight) doc.scrollTop = cm.display.scroller.scrollTop;\n // Fire change events, and delayed event handlers\n if (op.changeObjs) signal(cm, \"changes\", cm, op.changeObjs);\n if (op.update) op.update.finish();\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 {\n return f();\n } finally{\n endOperation(cm);\n }\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 {\n return f.apply(cm, arguments);\n } finally{\n endOperation(cm);\n }\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 {\n return f.apply(this, arguments);\n } finally{\n endOperation(this);\n }\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 {\n return f.apply(this, arguments);\n } finally{\n endOperation(cm);\n }\n };\n }\n // HIGHLIGHT WORKER\n function startWorker(cm, time) {\n if (cm.doc.highlightFrontier < cm.display.viewTo) cm.state.highlight.set(time, bind(highlightWorker, cm));\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 doc.iter(context.line, Math.min(doc.first + doc.size, cm.display.viewTo + 500), function(line) {\n if (context.line >= cm.display.viewFrom) {\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 || 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) 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++)regLineChange(cm, changedLines[i], \"text\");\n });\n }\n // DISPLAY DRAWING\n var DisplayUpdate = function(cm, viewport, force) {\n var display = cm.display;\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 DisplayUpdate.prototype.signal = function(emitter, type) {\n if (hasHandler(emitter, type)) this.events.push(arguments);\n };\n DisplayUpdate.prototype.finish = function() {\n for(var i = 0; i < this.events.length; i++)signal.apply(null, this.events[i]);\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 function selectionSnapshot(cm) {\n if (cm.hasFocus()) return null;\n var active = activeElt(doc(cm));\n if (!active || !contains(cm.display.lineDiv, active)) return null;\n var result = {\n activeElt: active\n };\n if (window.getSelection) {\n var sel = win(cm).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 function restoreSelection(snapshot) {\n if (!snapshot || !snapshot.activeElt || snapshot.activeElt == activeElt(snapshot.activeElt.ownerDocument)) return;\n snapshot.activeElt.focus();\n if (!/^(INPUT|TEXTAREA)$/.test(snapshot.activeElt.nodeName) && snapshot.anchorNode && contains(document.body, snapshot.anchorNode) && contains(document.body, snapshot.focusNode)) {\n var doc = snapshot.activeElt.ownerDocument;\n var sel = doc.defaultView.getSelection(), range = doc.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 // 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 if (update.editorIsHidden) {\n resetView(cm);\n return false;\n }\n // Bail out if the visible area is already rendered and nothing changed.\n if (!update.force && update.visible.from >= display.viewFrom && update.visible.to <= display.viewTo && (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo) && display.renderedView == display.view && countDirtyView(cm) == 0) return false;\n if (maybeUpdateLineNumberWidth(cm)) {\n resetView(cm);\n update.dims = getDimensions(cm);\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 var different = from != display.viewFrom || to != display.viewTo || display.lastWrapHeight != update.wrapperHeight || display.lastWrapWidth != update.wrapperWidth;\n adjustView(cm, from, to);\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 var toUpdate = countDirtyView(cm);\n if (!different && toUpdate == 0 && !update.force && display.renderedView == display.view && (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo)) return false;\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 // 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 if (different) {\n display.lastWrapHeight = update.wrapperHeight;\n display.lastWrapWidth = update.wrapperWidth;\n startWorker(cm, 400);\n }\n display.updateLineNumbers = null;\n return true;\n }\n function postUpdateDisplay(cm, update) {\n var viewport = update.viewport;\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) viewport = {\n top: Math.min(cm.doc.height + paddingVert(cm.display) - displayHeight(cm), viewport.top)\n };\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) break;\n } else if (first) update.visible = visibleLines(cm.display, cm.doc, viewport);\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 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;\n cm.display.reportedViewTo = cm.display.viewTo;\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 // 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 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) node.style.display = \"none\";\n else node.parentNode.removeChild(node);\n return next;\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) ;\n else if (!lineView.node || lineView.node.parentNode != container) {\n var node = buildLineElement(cm, lineView, lineN, dims);\n container.insertBefore(node, cur);\n } else {\n while(cur != lineView.node)cur = rm(cur);\n var updateNumber = lineNumbers && updateNumbersFrom != null && 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 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 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 // 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) view[i].gutter.style.left = left;\n if (view[i].gutterBackground) view[i].gutterBackground.style.left = left;\n }\n var align = view[i].alignable;\n if (align) for(var j = 0; j < align.length; j++)align[j].style.left = left;\n }\n if (cm.options.fixedGutter) display.gutters.style.left = comp + gutterW + \"px\";\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\", [\n 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 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\") {\n style = name.style;\n name = name.className;\n }\n if (name == \"CodeMirror-linenumbers\") {\n if (!lineNumbers) continue;\n else sawLineNumbers = true;\n }\n result.push({\n className: name,\n style: style\n });\n }\n if (lineNumbers && !sawLineNumbers) result.push({\n className: \"CodeMirror-linenumbers\",\n style: null\n });\n return result;\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 function updateGutters(cm) {\n renderGutters(cm.display);\n regChange(cm);\n alignHorizontally(cm);\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 function Display(place, doc, input, options) {\n var d = this;\n this.input = input;\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\", [\n d.measure,\n d.lineMeasure,\n d.selectionDiv,\n d.cursorDiv,\n d.lineDiv\n ], null, \"position: relative; outline: none\");\n var lines = eltP(\"div\", [\n d.lineSpace\n ], \"CodeMirror-lines\");\n // Moved around its parent to cover visible view.\n d.mover = elt(\"div\", [\n lines\n ], null, \"position: relative\");\n // Set to the height of the document, allowing scrolling.\n d.sizer = elt(\"div\", [\n d.mover\n ], \"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\", [\n d.sizer,\n d.heightForcer,\n d.gutters\n ], \"CodeMirror-scroll\");\n d.scroller.setAttribute(\"tabIndex\", \"-1\");\n // The element in which the editor lives.\n d.wrapper = elt(\"div\", [\n d.scrollbarFiller,\n d.gutterFiller,\n d.scroller\n ], \"CodeMirror\");\n // See #6982. FIXME remove when this has been fixed for a while in Chrome\n if (chrome && chrome_version >= 105) d.wrapper.style.clipPath = \"inset(0px)\";\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 // Work around IE7 z-index bug (not perfect, hence IE7 not really being supported)\n if (ie && ie_version < 8) {\n d.gutters.style.zIndex = -1;\n d.scroller.style.paddingRight = 0;\n }\n if (!webkit && !(gecko && mobile)) d.scroller.draggable = true;\n if (place) {\n if (place.appendChild) place.appendChild(d.wrapper);\n else place(d.wrapper);\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 d.nativeBarWidth = d.barHeight = d.barWidth = 0;\n d.scrollbarsClipped = false;\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 d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null;\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 // Used for measuring wheel scrolling granularity\n d.wheelDX = d.wheelDY = d.wheelStartX = d.wheelStartY = null;\n // True when shift is held down.\n d.shift = false;\n // Used to track whether anything happened since the context menu\n // was opened.\n d.selForContextMenu = null;\n d.activeTouch = null;\n d.gutterSpecs = getGutters(options.gutters, options.lineNumbers);\n renderGutters(d);\n input.init(d);\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 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 = -0.53;\n else if (gecko) wheelPixelsPerUnit = 15;\n else if (chrome) wheelPixelsPerUnit = -0.7;\n else if (safari) wheelPixelsPerUnit = -1 / 3;\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 {\n x: dx,\n y: dy\n };\n }\n function wheelEventPixels(e) {\n var delta = wheelEventDelta(e);\n delta.x *= wheelPixelsPerUnit;\n delta.y *= wheelPixelsPerUnit;\n return delta;\n }\n function onScrollWheel(cm, e) {\n // On Chrome 102, viewport updates somehow stop wheel-based\n // scrolling. Turning off pointer events during the scroll seems\n // to avoid the issue.\n if (chrome && chrome_version == 102) {\n if (cm.display.chromeScrollHack == null) cm.display.sizer.style.pointerEvents = \"none\";\n else clearTimeout(cm.display.chromeScrollHack);\n cm.display.chromeScrollHack = setTimeout(function() {\n cm.display.chromeScrollHack = null;\n cm.display.sizer.style.pointerEvents = \"\";\n }, 100);\n }\n var delta = wheelEventDelta(e), dx = delta.x, dy = delta.y;\n var pixelsPerUnit = wheelPixelsPerUnit;\n if (e.deltaMode === 0) {\n dx = e.deltaX;\n dy = e.deltaY;\n pixelsPerUnit = 1;\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 // 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) outer: for(var cur = e.target, view = display.view; cur != scroll; cur = cur.parentNode){\n for(var i = 0; i < view.length; i++)if (view[i].node == cur) {\n cm.display.currentWheelTarget = cur;\n break outer;\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 && pixelsPerUnit != null) {\n if (dy && canScrollY) updateScrollTop(cm, Math.max(0, scroll.scrollTop + dy * pixelsPerUnit));\n setScrollLeft(cm, Math.max(0, scroll.scrollLeft + dx * pixelsPerUnit));\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) e_preventDefault(e);\n display.wheelStartX = null; // Abort measurement, if in progress\n return;\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 && pixelsPerUnit != null) {\n var pixels = dy * pixelsPerUnit;\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, {\n top: top,\n bottom: bot\n });\n }\n if (wheelSamples < 20 && e.deltaMode !== 0) {\n if (display.wheelStartX == null) {\n display.wheelStartX = scroll.scrollLeft;\n display.wheelStartY = scroll.scrollTop;\n display.wheelDX = dx;\n 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 || 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;\n display.wheelDY += dy;\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 Selection.prototype.primary = function() {\n 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 Selection.prototype.deepCopy = function() {\n var out = [];\n for(var i = 0; i < this.ranges.length; i++)out[i] = new Range(copyPos(this.ranges[i].anchor), copyPos(this.ranges[i].head));\n return new Selection(out, this.primIndex);\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 }\n return false;\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) return i;\n }\n return -1;\n };\n var Range = function(anchor, head) {\n this.anchor = anchor;\n this.head = head;\n };\n Range.prototype.from = function() {\n return minPos(this.anchor, this.head);\n };\n Range.prototype.to = function() {\n return maxPos(this.anchor, this.head);\n };\n Range.prototype.empty = function() {\n 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) {\n return cmp(a.from(), b.from());\n });\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 function simpleSelection(anchor, head) {\n return new Selection([\n new Range(anchor, head || anchor)\n ], 0);\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, lst(change.text).length + (change.text.length == 1 ? change.from.ch : 0));\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 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 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), adjustForChange(range.head, change)));\n }\n return normalizeSelection(doc.cm, out, doc.sel.primIndex);\n }\n function offsetPos(pos, old, nw) {\n if (pos.line == old.line) return Pos(nw.line, pos.ch - old.ch + nw.ch);\n else return Pos(nw.line + (pos.line - old.line), pos.ch);\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 out[i] = new Range(from, from);\n }\n return new Selection(out, doc.sel.primIndex);\n }\n // Used to get the editor into a consistent state again when options change.\n function loadMode(cm) {\n cm.doc.mode = getMode(cm.options, cm.doc.modeOption);\n resetModeState(cm);\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 // DOCUMENT DATA STRUCTURE\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) == \"\" && (!doc.cm || doc.cm.options.wholeLineUpdateBefore);\n }\n // Perform a change on the document data structure.\n function updateDoc(doc, change, markedSpans, estimateHeight) {\n function spansFor(n) {\n return markedSpans ? markedSpans[n] : null;\n }\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)result.push(new Line(text[i], spansFor(i), estimateHeight));\n return result;\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 // 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) 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 signalLater(doc, \"change\", doc, change);\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 // 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 function setDirectionClass(cm) {\n (cm.doc.direction == \"rtl\" ? addClass : rmClass)(cm.display.lineDiv, \"CodeMirror-rtl\");\n }\n function directionChanged(cm) {\n runInOp(cm, function() {\n setDirectionClass(cm);\n regChange(cm);\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 = [];\n 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 // Create a history change event from an updateDoc-style change\n // object.\n function historyChangeFromChange(doc, change) {\n var histChange = {\n from: copyPos(change.from),\n to: changeEnd(change),\n text: getBetween(doc, change.from, change.to)\n };\n attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1);\n linkedDocs(doc, function(doc) {\n return attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1);\n }, true);\n return histChange;\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 // 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) 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 // 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 if ((hist.lastOp == opId || hist.lastOrigin == change.origin && change.origin && (change.origin.charAt(0) == \"+\" && hist.lastModTime > time - (doc.cm ? doc.cm.options.historyEventDelay : 500) || change.origin.charAt(0) == \"*\")) && (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) // Optimized case for simple insertion -- don't want to add\n // new changesets for every character typed\n last.to = changeEnd(change);\n else // Add new sub-event\n cur.changes.push(historyChangeFromChange(doc, change));\n } else {\n // Can not be merged, start a new event.\n var before = lst(hist.done);\n if (!before || !before.ranges) pushSelectionToHistory(doc.sel, hist.done);\n cur = {\n changes: [\n historyChangeFromChange(doc, change)\n ],\n generation: hist.generation\n };\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 if (!last) signal(doc, \"historyAdded\");\n }\n function selectionEventCanBeMerged(doc, origin, prev, sel) {\n var ch = origin.charAt(0);\n return ch == \"*\" || ch == \"+\" && prev.ranges.length == sel.ranges.length && prev.somethingSelected() == sel.somethingSelected() && new Date - doc.history.lastSelTime <= (doc.cm ? doc.cm.options.historyEventDelay : 500);\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 // 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 || origin && hist.lastSelOrigin == origin && (hist.lastModTime == hist.lastSelTime && hist.lastOrigin == origin || selectionEventCanBeMerged(doc, origin, lst(hist.done), sel))) hist.done[hist.done.length - 1] = sel;\n else pushSelectionToHistory(sel, hist.done);\n hist.lastSelTime = +new Date;\n hist.lastSelOrigin = origin;\n hist.lastSelOp = opId;\n if (options && options.clearRedo !== false) clearSelectionEvents(hist.undone);\n }\n function pushSelectionToHistory(sel, dest) {\n var top = lst(dest);\n if (!(top && top.ranges && top.equals(sel))) dest.push(sel);\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) (existing || (existing = change[\"spans_\" + doc.id] = {}))[n] = line.markedSpans;\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) {\n 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 // 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)nw.push(removeClearedSpans(found[i]));\n return nw;\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 for(var i = 0; i < old.length; ++i){\n var oldCur = old[i], stretchCur = stretched[i];\n if (oldCur && stretchCur) 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 }\n oldCur.push(span);\n }\n else if (stretchCur) old[i] = stretchCur;\n }\n return old;\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({\n changes: newChanges\n });\n for(var j = 0; j < changes.length; ++j){\n var change = changes[j], m = void 0;\n newChanges.push({\n from: change.from,\n to: change.to,\n text: change.text\n });\n if (newGroup) for(var prop in change){\n 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 }\n return copy;\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 // 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) head = other;\n }\n return new Range(anchor, head);\n } else return new Range(other || head, head);\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([\n extendRange(doc.sel.primary(), head, other, extend)\n ], 0), options);\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++)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 // 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 // Reset the selection to a single range.\n function setSimpleSelection(doc, anchor, head, options) {\n setSelection(doc, simpleSelection(anchor, head), options);\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++)this.ranges[i] = new Range(clipPos(doc, ranges[i].anchor), 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 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 setSelection(doc, sel, options);\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 function setSelectionNoUndo(doc, sel, options) {\n if (hasHandler(doc, \"beforeSelectionChange\") || doc.cm && hasHandler(doc.cm, \"beforeSelectionChange\")) sel = filterSelectionChange(doc, sel, options);\n var bias = options && options.bias || (cmp(sel.primary().head, doc.sel.primary().head) < 0 ? -1 : 1);\n setSelectionInner(doc, skipAtomicInSelection(doc, sel, bias, true));\n if (!(options && options.scroll === false) && doc.cm && doc.cm.getOption(\"readOnly\") != \"nocursor\") ensureCursorVisible(doc.cm);\n }\n function setSelectionInner(doc, sel) {\n if (sel.equals(doc.sel)) return;\n doc.sel = sel;\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 // 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 // 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 = range.head == range.anchor ? newAnchor : 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 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 // 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 if ((sp.from == null || (preventCursorLeft ? sp.from <= pos.ch : sp.from < pos.ch)) && (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 {\n --i;\n continue;\n }\n }\n }\n if (!m.atomic) continue;\n if (oldPos) {\n var near = m.find(dir < 0 ? 1 : -1), diff = void 0;\n if (dir < 0 ? preventCursorRight : preventCursorLeft) 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)) return skipAtomicInner(doc, near, pos, dir, mayClear);\n }\n var far = m.find(dir < 0 ? -1 : 1);\n if (dir < 0 ? preventCursorLeft : preventCursorRight) 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 // 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) || !mayClear && skipAtomicInner(doc, pos, oldPos, dir, true) || skipAtomicInner(doc, pos, oldPos, -dir, mayClear) || !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 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 return new Pos(pos.line, pos.ch + dir);\n }\n function selectAll(cm) {\n cm.setSelection(Pos(cm.firstLine(), 0), Pos(cm.lastLine()), sel_dontScroll);\n }\n // UPDATING\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() {\n return obj.canceled = true;\n }\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 if (obj.canceled) {\n if (doc.cm) doc.cm.curOp.updateInput = 2;\n return null;\n }\n return {\n from: obj.from,\n to: obj.to,\n text: obj.text,\n 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 if (hasHandler(doc, \"beforeChange\") || doc.cm && hasHandler(doc.cm, \"beforeChange\")) {\n change = filterChange(doc, change, true);\n if (!change) return;\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) for(var i = split.length - 1; i >= 0; --i)makeChangeInner(doc, {\n from: split[i].from,\n to: split[i].to,\n text: i ? [\n \"\"\n ] : change.text,\n origin: change.origin\n });\n else makeChangeInner(doc, change);\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 makeChangeSingleDoc(doc, change, selAfter, stretchSpansOverChange(doc, change));\n var rebased = [];\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 // 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 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 // 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) break;\n }\n if (i == source.length) return;\n hist.lastOrigin = hist.lastSelOrigin = null;\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, {\n clearRedo: false\n });\n return;\n }\n selAfter = event;\n } else if (suppress) {\n source.push(event);\n return;\n } else break;\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({\n changes: antiChanges,\n generation: hist.generation\n });\n hist.generation = event.generation || ++hist.maxGeneration;\n var filter = hasHandler(doc, \"beforeChange\") || doc.cm && hasHandler(doc.cm, \"beforeChange\");\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 antiChanges.push(historyChangeFromChange(doc, change));\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({\n from: change.from,\n to: changeEnd(change)\n });\n var rebased = [];\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 for(var i$1 = event.changes.length - 1; i$1 >= 0; --i$1){\n var returned = loop(i$1);\n if (returned) return returned.v;\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) {\n return new Range(Pos(range.anchor.line + distance, range.anchor.ch), 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++)regLineChange(doc.cm, l, \"gutter\");\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) return operation(doc.cm, makeChangeSingleDoc)(doc, change, selAfter, spans);\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 // 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 = {\n from: Pos(doc.first, 0),\n to: Pos(change.to.line + shift, change.to.ch),\n text: [\n lst(change.text)\n ],\n origin: change.origin\n };\n }\n var last = doc.lastLine();\n if (change.to.line > last) change = {\n from: change.from,\n to: Pos(last, getLine(doc, last).text.length),\n text: [\n change.text[0]\n ],\n origin: change.origin\n };\n change.removed = getBetween(doc, change.from, change.to);\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 if (doc.cantEdit && skipAtomic(doc, Pos(doc.firstLine(), 0))) doc.cantEdit = false;\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 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 if (doc.sel.contains(change.from, change.to) > -1) signalCursorActivity(cm);\n updateDoc(doc, change, spans, estimateHeight(cm));\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 retreatFrontier(doc, from.line);\n startWorker(cm, 400);\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) regChange(cm);\n else if (from.line == to.line && change.text.length == 1 && !isWholeLineUpdate(cm.doc, change)) regLineChange(cm, from.line, \"text\");\n else regChange(cm, from.line, to.line + 1, lendiff);\n var changesHandler = hasHandler(cm, \"changes\"), changeHandler = hasHandler(cm, \"change\");\n if (changeHandler || changesHandler) {\n var obj = {\n from: from,\n 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 function replaceRange(doc, code, from, to, origin) {\n var assign;\n if (!to) to = from;\n if (cmp(to, from) < 0) assign = [\n to,\n from\n ], from = assign[0], to = assign[1];\n if (typeof code == \"string\") code = doc.splitLines(code);\n makeChange(doc, {\n from: from,\n to: to,\n text: code,\n origin: origin\n });\n }\n // Rebasing/resetting history to deal with externally-sourced changes\n function rebaseHistSelSingle(pos, from, to, diff) {\n if (to < pos.line) pos.line += diff;\n else if (from < pos.line) {\n pos.line = from;\n pos.ch = 0;\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) {\n sub = array[i] = sub.deepCopy();\n sub.copied = true;\n }\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 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 // 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 // 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 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 LeafChunk.prototype = {\n chunkSize: function() {\n 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 // Helper used to collapse a small branch into a single leaf.\n collapse: function(lines) {\n lines.push.apply(lines, this.lines);\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 // 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();\n height += ch.height;\n ch.parent = this;\n }\n this.size = size;\n this.height = height;\n this.parent = null;\n }\n BranchChunk.prototype = {\n chunkSize: function() {\n 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) {\n this.children.splice(i--, 1);\n child.parent = null;\n }\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 && (this.children.length > 1 || !(this.children[0] instanceof LeafChunk))) {\n var lines = [];\n this.collapse(lines);\n this.children = [\n new LeafChunk(lines)\n ];\n this.children[0].parent = this;\n }\n },\n collapse: function(lines) {\n for(var i = 0; i < this.children.length; ++i)this.children[i].collapse(lines);\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 // 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) {\n var copy = new BranchChunk(me.children);\n copy.parent = me;\n me.children = [\n copy,\n sibling\n ];\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 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 // Line widgets are block elements displayed above or below a line.\n var LineWidget = function(doc, node, options) {\n if (options) {\n for(var opt in options)if (options.hasOwnProperty(opt)) this[opt] = options[opt];\n }\n this.doc = doc;\n this.node = node;\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 LineWidget.prototype.changed = function() {\n var this$1 = this;\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) 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 eventMixin(LineWidget);\n function adjustScrollWhenAboveVisible(cm, line, diff) {\n if (heightAtLine(line) < (cm.curOp && cm.curOp.scrollTop || cm.doc.scrollTop)) addToScrollTop(cm, diff);\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 // TEXTMARKERS\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 // 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 var TextMarker = function(doc, type) {\n this.lines = [];\n this.type = type;\n this.doc = doc;\n this.id = ++nextMarkerId;\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) 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 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 // 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 && {\n from: from,\n 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 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) updateLineHeight(line, line.height + dHeight);\n }\n signalLater(cm, \"markerChanged\", cm, this$1);\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) (op.maybeUnhiddenMarkers || (op.maybeUnhiddenMarkers = [])).push(this);\n }\n this.lines.push(line);\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 // 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 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) 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\", [\n marker.replacedWith\n ], \"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) || from.line != to.line && conflictingCollapsedRange(doc, to.line, from, to, marker)) throw new Error(\"Inserting collapsed marker partially overlapping an existing one\");\n seeCollapsedSpans();\n }\n if (marker.addToHistory) addChangeToHistory(doc, {\n from: from,\n to: to,\n origin: \"markText\"\n }, doc.sel, NaN);\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) updateMaxLine = true;\n if (marker.collapsed && curLine != from.line) updateLineHeight(line, 0);\n addMarkedSpan(line, new MarkedSpan(marker, curLine == from.line ? from.ch : null, 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 if (marker.clearOnEnter) on(marker, \"beforeCursorEnter\", function() {\n return marker.clear();\n });\n if (marker.readOnly) {\n seeReadOnlySpans();\n if (doc.history.done.length || doc.history.undone.length) 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) regChange(cm, from.line, to.line + 1);\n else if (marker.className || marker.startStyle || marker.endStyle || marker.css || marker.attributes || marker.title) 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 // SHARED TEXTMARKERS\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)markers[i].parent = this;\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)this.markers[i].clear();\n signalLater(this, \"clear\");\n };\n SharedTextMarker.prototype.find = function(side, lineObj) {\n return this.primary.find(side, lineObj);\n };\n eventMixin(SharedTextMarker);\n function markTextShared(doc, from, to, options, type) {\n options = copyObj(options);\n options.shared = false;\n var markers = [\n markText(doc, from, to, options, type)\n ], 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 }\n primary = lst(markers);\n });\n return new SharedTextMarker(markers, primary);\n }\n function findSharedMarkers(doc) {\n return doc.findMarks(Pos(doc.first, 0), doc.clipPos(Pos(doc.lastLine())), function(m) {\n 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 function detachSharedMarkers(markers) {\n var loop = function(i) {\n var marker = markers[i], linked = [\n marker.primary.doc\n ];\n linkedDocs(marker.primary.doc, function(d) {\n return linked.push(d);\n });\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 for(var i = 0; i < markers.length; i++)loop(i);\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 BranchChunk.call(this, [\n new LeafChunk([\n new Line(\"\", null)\n ])\n ]);\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 if (typeof text == \"string\") text = this.splitLines(text);\n updateDoc(this, {\n from: start,\n to: start,\n text: text\n });\n setSelection(this, simpleSelection(start), sel_dontScroll);\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 // 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) {\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 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, {\n from: top,\n to: Pos(last, getLine(this, last).text.length),\n text: this.splitLines(code),\n origin: \"setValue\",\n full: true\n }, 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 getLine: function(line) {\n var l = this.getLineHandle(line);\n return l && l.text;\n },\n getLineHandle: function(line) {\n if (isLine(this, line)) return getLine(this, line);\n },\n getLineNumber: function(line) {\n return lineNo(line);\n },\n getLineHandleVisualStart: function(line) {\n if (typeof line == \"number\") line = getLine(this, line);\n return visualLine(line);\n },\n lineCount: function() {\n return this.size;\n },\n firstLine: function() {\n return this.first;\n },\n lastLine: function() {\n return this.first + this.size - 1;\n },\n clipPos: function(pos) {\n 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() {\n return this.sel.ranges;\n },\n somethingSelected: function() {\n 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++)out[i] = new Range(clipPos(this, ranges[i].anchor), 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 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++)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] = {\n from: range.from(),\n to: range.to(),\n text: this.splitLines(code[i]),\n origin: origin\n };\n }\n var newSel = collapse && collapse != \"end\" && computeReplacedSel(this, changes, collapse);\n for(var i$1 = changes.length - 1; i$1 >= 0; i$1--)makeChange(this, changes[i$1]);\n if (newSel) setSelectionReplaceHistory(this, newSel);\n else if (this.cm) ensureCursorVisible(this.cm);\n }),\n undo: docMethodOp(function() {\n makeChangeFromHistory(this, \"undo\");\n }),\n redo: docMethodOp(function() {\n makeChangeFromHistory(this, \"redo\");\n }),\n undoSelection: docMethodOp(function() {\n makeChangeFromHistory(this, \"undo\", true);\n }),\n redoSelection: docMethodOp(function() {\n makeChangeFromHistory(this, \"redo\", true);\n }),\n setExtending: function(val) {\n this.extend = val;\n },\n getExtending: function() {\n 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 {\n undo: done,\n redo: undone\n };\n },\n clearHistory: function() {\n var this$1 = this;\n this.history = new History(this.history);\n linkedDocs(this, function(doc) {\n return doc.history = this$1.history;\n }, true);\n },\n markClean: function() {\n this.cleanGeneration = this.changeGeneration(true);\n },\n changeGeneration: function(forceSplit) {\n if (forceSplit) 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 getHistory: function() {\n return {\n done: copyHistoryArray(this.history.done),\n undone: copyHistoryArray(this.history.undone)\n };\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 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 clearGutter: docMethodOp(function(gutterID) {\n var this$1 = this;\n this.iter(function(line) {\n if (line.gutterMarkers && line.gutterMarkers[gutterID]) 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 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 {\n line: n,\n handle: line,\n text: line.text,\n gutterMarkers: line.gutterMarkers,\n textClass: line.textClass,\n bgClass: line.bgClass,\n 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\" : where == \"background\" ? \"bgClass\" : 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\" : where == \"background\" ? \"bgClass\" : 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 addLineWidget: docMethodOp(function(handle, node, options) {\n return addLineWidget(this, handle, node, options);\n }),\n removeLineWidget: function(widget) {\n 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 = {\n replacedWith: options && (options.nodeType == null ? options.widget : options),\n insertLeft: options && options.insertLeft,\n clearWhenEmpty: false,\n shared: options && options.shared,\n handleMouseEvents: options && options.handleMouseEvents\n };\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) && (span.to == null || span.to >= pos.ch)) markers.push(span.marker.parent || span.marker);\n }\n return markers;\n },\n findMarks: function(from, to, filter) {\n from = clipPos(this, from);\n 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 || span.from == null && lineNo != from.line || span.from != null && lineNo == to.line && span.from >= to.ch) && (!filter || filter(span.marker))) 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) {\n for(var i = 0; i < sps.length; ++i)if (sps[i].from != null) markers.push(sps[i].marker);\n }\n });\n return markers;\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) {\n ch = off;\n return true;\n }\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) {\n index += line.text.length + sepSize;\n });\n return index;\n },\n copy: function(copyHistory) {\n var doc = new Doc(getLines(this, this.first, this.first + this.size), this.modeOption, this.first, this.lineSep, this.direction);\n doc.scrollTop = this.scrollTop;\n 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 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({\n doc: copy,\n sharedHist: options.sharedHist\n });\n copy.linked = [\n {\n doc: this,\n isParent: true,\n sharedHist: options.sharedHist\n }\n ];\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 = [\n other.id\n ];\n linkedDocs(other, function(doc) {\n return splitIds.push(doc.id);\n }, 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) {\n linkedDocs(this, f);\n },\n getMode: function() {\n return this.mode;\n },\n getEditor: function() {\n 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() {\n 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) {\n return line.order = null;\n });\n if (this.cm) directionChanged(this.cm);\n })\n });\n // Public alias.\n Doc.prototype.eachLine = Doc.prototype.iter;\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 function onDrop(e) {\n var cm = this;\n clearDragCursor(cm);\n if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e)) 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) operation(cm, function() {\n pos = clipPos(cm.doc, pos);\n var change = {\n from: pos,\n to: pos,\n text: cm.doc.splitLines(text.filter(function(t) {\n return t != null;\n }).join(cm.doc.lineSeparator())),\n origin: \"paste\"\n };\n makeChange(cm.doc, change);\n setSelectionReplaceHistory(cm.doc, simpleSelection(clipPos(cm.doc, pos), clipPos(cm.doc, changeEnd(change))));\n })();\n };\n var readTextFromFile = function(file, i) {\n if (cm.options.allowDropFileTypes && indexOf(cm.options.allowDropFileTypes, file.type) == -1) {\n markAsReadAndPasteIfAllFilesAreRead();\n return;\n }\n var reader = new FileReader;\n reader.onerror = function() {\n return markAsReadAndPasteIfAllFilesAreRead();\n };\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 {\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() {\n return cm.display.input.focus();\n }, 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) selected = cm.listSelections();\n setSelectionNoUndo(cm.doc, simpleSelection(pos, pos));\n if (selected) for(var i$1 = 0; i$1 < selected.length; ++i$1)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 } catch (e$1) {}\n }\n }\n function onDragStart(cm, e) {\n if (ie && (!cm.state.draggingText || +new Date - lastDrop < 100)) {\n e_stop(e);\n return;\n }\n if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e)) return;\n e.dataTransfer.setData(\"Text\", cm.getSelection());\n e.dataTransfer.effectAllowed = \"copyMove\";\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 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 function clearDragCursor(cm) {\n if (cm.display.dragCursor) {\n cm.display.lineSpace.removeChild(cm.display.dragCursor);\n cm.display.dragCursor = null;\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 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 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() {\n return forEachCodeMirror(onBlur);\n });\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 var keyNames = {\n 3: \"Pause\",\n 8: \"Backspace\",\n 9: \"Tab\",\n 13: \"Enter\",\n 16: \"Shift\",\n 17: \"Ctrl\",\n 18: \"Alt\",\n 19: \"Pause\",\n 20: \"CapsLock\",\n 27: \"Esc\",\n 32: \"Space\",\n 33: \"PageUp\",\n 34: \"PageDown\",\n 35: \"End\",\n 36: \"Home\",\n 37: \"Left\",\n 38: \"Up\",\n 39: \"Right\",\n 40: \"Down\",\n 44: \"PrintScrn\",\n 45: \"Insert\",\n 46: \"Delete\",\n 59: \";\",\n 61: \"=\",\n 91: \"Mod\",\n 92: \"Mod\",\n 93: \"Mod\",\n 106: \"*\",\n 107: \"=\",\n 109: \"-\",\n 110: \".\",\n 111: \"/\",\n 145: \"ScrollLock\",\n 173: \"-\",\n 186: \";\",\n 187: \"=\",\n 188: \",\",\n 189: \"-\",\n 190: \".\",\n 191: \"/\",\n 192: \"`\",\n 219: \"[\",\n 220: \"\\\\\",\n 221: \"]\",\n 222: \"'\",\n 224: \"Mod\",\n 63232: \"Up\",\n 63233: \"Down\",\n 63234: \"Left\",\n 63235: \"Right\",\n 63272: \"Delete\",\n 63273: \"Home\",\n 63275: \"End\",\n 63276: \"PageUp\",\n 63277: \"PageDown\",\n 63302: \"Insert\"\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 var keyMap = {};\n keyMap.basic = {\n \"Left\": \"goCharLeft\",\n \"Right\": \"goCharRight\",\n \"Up\": \"goLineUp\",\n \"Down\": \"goLineDown\",\n \"End\": \"goLineEnd\",\n \"Home\": \"goLineStartSmart\",\n \"PageUp\": \"goPageUp\",\n \"PageDown\": \"goPageDown\",\n \"Delete\": \"delCharAfter\",\n \"Backspace\": \"delCharBefore\",\n \"Shift-Backspace\": \"delCharBefore\",\n \"Tab\": \"defaultTab\",\n \"Shift-Tab\": \"indentAuto\",\n \"Enter\": \"newlineAndIndent\",\n \"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\",\n \"Ctrl-D\": \"deleteLine\",\n \"Ctrl-Z\": \"undo\",\n \"Shift-Ctrl-Z\": \"redo\",\n \"Ctrl-Y\": \"redo\",\n \"Ctrl-Home\": \"goDocStart\",\n \"Ctrl-End\": \"goDocEnd\",\n \"Ctrl-Up\": \"goLineUp\",\n \"Ctrl-Down\": \"goLineDown\",\n \"Ctrl-Left\": \"goGroupLeft\",\n \"Ctrl-Right\": \"goGroupRight\",\n \"Alt-Left\": \"goLineStart\",\n \"Alt-Right\": \"goLineEnd\",\n \"Ctrl-Backspace\": \"delGroupBefore\",\n \"Ctrl-Delete\": \"delGroupAfter\",\n \"Ctrl-S\": \"save\",\n \"Ctrl-F\": \"find\",\n \"Ctrl-G\": \"findNext\",\n \"Shift-Ctrl-G\": \"findPrev\",\n \"Shift-Ctrl-F\": \"replace\",\n \"Shift-Ctrl-R\": \"replaceAll\",\n \"Ctrl-[\": \"indentLess\",\n \"Ctrl-]\": \"indentMore\",\n \"Ctrl-U\": \"undoSelection\",\n \"Shift-Ctrl-U\": \"redoSelection\",\n \"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\",\n \"Ctrl-B\": \"goCharLeft\",\n \"Ctrl-P\": \"goLineUp\",\n \"Ctrl-N\": \"goLineDown\",\n \"Ctrl-A\": \"goLineStart\",\n \"Ctrl-E\": \"goLineEnd\",\n \"Ctrl-V\": \"goPageDown\",\n \"Shift-Ctrl-V\": \"goPageUp\",\n \"Ctrl-D\": \"delCharAfter\",\n \"Ctrl-H\": \"delCharBefore\",\n \"Alt-Backspace\": \"delWordBefore\",\n \"Ctrl-K\": \"killLine\",\n \"Ctrl-T\": \"transposeChars\",\n \"Ctrl-O\": \"openLine\"\n };\n keyMap.macDefault = {\n \"Cmd-A\": \"selectAll\",\n \"Cmd-D\": \"deleteLine\",\n \"Cmd-Z\": \"undo\",\n \"Shift-Cmd-Z\": \"redo\",\n \"Cmd-Y\": \"redo\",\n \"Cmd-Home\": \"goDocStart\",\n \"Cmd-Up\": \"goDocStart\",\n \"Cmd-End\": \"goDocEnd\",\n \"Cmd-Down\": \"goDocEnd\",\n \"Alt-Left\": \"goGroupLeft\",\n \"Alt-Right\": \"goGroupRight\",\n \"Cmd-Left\": \"goLineLeft\",\n \"Cmd-Right\": \"goLineRight\",\n \"Alt-Backspace\": \"delGroupBefore\",\n \"Ctrl-Alt-Backspace\": \"delGroupAfter\",\n \"Alt-Delete\": \"delGroupAfter\",\n \"Cmd-S\": \"save\",\n \"Cmd-F\": \"find\",\n \"Cmd-G\": \"findNext\",\n \"Shift-Cmd-G\": \"findPrev\",\n \"Cmd-Alt-F\": \"replace\",\n \"Shift-Cmd-Alt-F\": \"replaceAll\",\n \"Cmd-[\": \"indentLess\",\n \"Cmd-]\": \"indentMore\",\n \"Cmd-Backspace\": \"delWrappedLineLeft\",\n \"Cmd-Delete\": \"delWrappedLineRight\",\n \"Cmd-U\": \"undoSelection\",\n \"Shift-Cmd-U\": \"redoSelection\",\n \"Ctrl-Up\": \"goDocStart\",\n \"Ctrl-Down\": \"goDocEnd\",\n \"fallthrough\": [\n \"basic\",\n \"emacsy\"\n ]\n };\n keyMap[\"default\"] = mac ? keyMap.macDefault : keyMap.pcDefault;\n // KEYMAP DISPATCH\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 // 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 == \"...\") {\n delete keymap[keyname];\n 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 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 if (map.fallthrough) {\n if (Object.prototype.toString.call(map.fallthrough) != \"[object Array]\") 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 // 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 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 // 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 function getKeyMap(val) {\n return typeof val == \"string\" ? keyMap[val] : val;\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--)replaceRange(cm.doc, \"\", kill[i].from, kill[i].to, \"+delete\");\n ensureCursorVisible(cm);\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 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 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) {\n return measureCharPrepared(cm, prep, ch).top == targetTop;\n }, 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 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)) // 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 var mv = function(pos, dir) {\n return moveCharLogically(line, pos instanceof Pos ? pos.ch : pos, dir);\n };\n var prep;\n var getWrappedLineExtent = function(ch) {\n if (!cm.options.lineWrapping) return {\n begin: 0,\n end: line.text.length\n };\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 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 // Case 3: Could not move within this bidi part in this visual line, so leave\n // the current bidi part\n var searchInVisualLine = function(partPos, dir, wrappedLineExtent) {\n var getRes = function(ch, moveInStorageOrder) {\n return moveInStorageOrder ? new Pos(start.line, mv(ch, 1), \"before\") : 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 // 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 // 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 // Case 4: Nowhere to move\n return null;\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) {\n return cm.setSelection(cm.getCursor(\"anchor\"), cm.getCursor(\"head\"), sel_dontScroll);\n },\n killLine: function(cm) {\n 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()) return {\n from: range.head,\n to: Pos(range.head.line + 1, 0)\n };\n else return {\n from: range.head,\n to: Pos(range.head.line, len)\n };\n } else return {\n from: range.from(),\n to: range.to()\n };\n });\n },\n deleteLine: function(cm) {\n return deleteNearSelection(cm, function(range) {\n return {\n from: Pos(range.from().line, 0),\n to: clipPos(cm.doc, Pos(range.to().line + 1, 0))\n };\n });\n },\n delLineLeft: function(cm) {\n return deleteNearSelection(cm, function(range) {\n return {\n from: Pos(range.from().line, 0),\n to: range.from()\n };\n });\n },\n delWrappedLineLeft: function(cm) {\n return deleteNearSelection(cm, function(range) {\n var top = cm.charCoords(range.head, \"div\").top + 5;\n var leftPos = cm.coordsChar({\n left: 0,\n top: top\n }, \"div\");\n return {\n from: leftPos,\n to: range.from()\n };\n });\n },\n delWrappedLineRight: function(cm) {\n return deleteNearSelection(cm, function(range) {\n var top = cm.charCoords(range.head, \"div\").top + 5;\n var rightPos = cm.coordsChar({\n left: cm.display.lineDiv.offsetWidth + 100,\n top: top\n }, \"div\");\n return {\n from: range.from(),\n to: rightPos\n };\n });\n },\n undo: function(cm) {\n return cm.undo();\n },\n redo: function(cm) {\n return cm.redo();\n },\n undoSelection: function(cm) {\n return cm.undoSelection();\n },\n redoSelection: function(cm) {\n return cm.redoSelection();\n },\n goDocStart: function(cm) {\n return cm.extendSelection(Pos(cm.firstLine(), 0));\n },\n goDocEnd: function(cm) {\n return cm.extendSelection(Pos(cm.lastLine()));\n },\n goLineStart: function(cm) {\n return cm.extendSelectionsBy(function(range) {\n return lineStart(cm, range.head.line);\n }, {\n origin: \"+move\",\n bias: 1\n });\n },\n goLineStartSmart: function(cm) {\n return cm.extendSelectionsBy(function(range) {\n return lineStartSmart(cm, range.head);\n }, {\n origin: \"+move\",\n bias: 1\n });\n },\n goLineEnd: function(cm) {\n return cm.extendSelectionsBy(function(range) {\n return lineEnd(cm, range.head.line);\n }, {\n origin: \"+move\",\n bias: -1\n });\n },\n goLineRight: function(cm) {\n return cm.extendSelectionsBy(function(range) {\n var top = cm.cursorCoords(range.head, \"div\").top + 5;\n return cm.coordsChar({\n left: cm.display.lineDiv.offsetWidth + 100,\n top: top\n }, \"div\");\n }, sel_move);\n },\n goLineLeft: function(cm) {\n return cm.extendSelectionsBy(function(range) {\n var top = cm.cursorCoords(range.head, \"div\").top + 5;\n return cm.coordsChar({\n left: 0,\n top: top\n }, \"div\");\n }, sel_move);\n },\n goLineLeftSmart: function(cm) {\n return cm.extendSelectionsBy(function(range) {\n var top = cm.cursorCoords(range.head, \"div\").top + 5;\n var pos = cm.coordsChar({\n left: 0,\n top: top\n }, \"div\");\n if (pos.ch < cm.getLine(pos.line).search(/\\S/)) return lineStartSmart(cm, range.head);\n return pos;\n }, sel_move);\n },\n goLineUp: function(cm) {\n return cm.moveV(-1, \"line\");\n },\n goLineDown: function(cm) {\n return cm.moveV(1, \"line\");\n },\n goPageUp: function(cm) {\n return cm.moveV(-1, \"page\");\n },\n goPageDown: function(cm) {\n return cm.moveV(1, \"page\");\n },\n goCharLeft: function(cm) {\n return cm.moveH(-1, \"char\");\n },\n goCharRight: function(cm) {\n return cm.moveH(1, \"char\");\n },\n goColumnLeft: function(cm) {\n return cm.moveH(-1, \"column\");\n },\n goColumnRight: function(cm) {\n return cm.moveH(1, \"column\");\n },\n goWordLeft: function(cm) {\n return cm.moveH(-1, \"word\");\n },\n goGroupRight: function(cm) {\n return cm.moveH(1, \"group\");\n },\n goGroupLeft: function(cm) {\n return cm.moveH(-1, \"group\");\n },\n goWordRight: function(cm) {\n return cm.moveH(1, \"word\");\n },\n delCharBefore: function(cm) {\n return cm.deleteH(-1, \"codepoint\");\n },\n delCharAfter: function(cm) {\n return cm.deleteH(1, \"char\");\n },\n delWordBefore: function(cm) {\n return cm.deleteH(-1, \"word\");\n },\n delWordAfter: function(cm) {\n return cm.deleteH(1, \"word\");\n },\n delGroupBefore: function(cm) {\n return cm.deleteH(-1, \"group\");\n },\n delGroupAfter: function(cm) {\n return cm.deleteH(1, \"group\");\n },\n indentAuto: function(cm) {\n return cm.indentSelection(\"smart\");\n },\n indentMore: function(cm) {\n return cm.indentSelection(\"add\");\n },\n indentLess: function(cm) {\n return cm.indentSelection(\"subtract\");\n },\n insertTab: function(cm) {\n return cm.replaceSelection(\"\t\");\n },\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) {\n 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), 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() + prev.charAt(prev.length - 1), 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 },\n newlineAndIndent: function(cm) {\n return runInOp(cm, function() {\n var sels = cm.listSelections();\n for(var i = sels.length - 1; i >= 0; i--)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++)cm.indentLine(sels[i$1].from().line, null, true);\n ensureCursorVisible(cm);\n });\n },\n openLine: function(cm) {\n return cm.replaceSelection(\"\\n\", \"start\");\n },\n toggleOverwrite: function(cm) {\n return cm.toggleOverwrite();\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 // 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 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) || lookupKey(name, cm.options.keyMap, handle, cm);\n }\n // Note that, despite the name, this function is also used to check\n // for bound mouse clicks.\n var stopSeq = new Delayed;\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)) cm.state.keySeq = null;\n else 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 function dispatchKeyInner(cm, name, e, handle) {\n var result = lookupKeyForEditor(cm, name, handle);\n if (result == \"multi\") cm.state.keySeq = name;\n if (result == \"handled\") signalLater(cm, \"keyHandled\", cm, name, e);\n if (result == \"handled\" || result == \"multi\") {\n e_preventDefault(e);\n restartBlink(cm);\n }\n return !!result;\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 if (e.shiftKey && !cm.state.keySeq) // 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) {\n return doHandleBinding(cm, b, true);\n }) || dispatchKey(cm, name, e, function(b) {\n if (typeof b == \"string\" ? /^go[A-Z]/.test(b) : b.motion) return doHandleBinding(cm, b);\n });\n else return dispatchKey(cm, name, e, function(b) {\n return doHandleBinding(cm, b);\n });\n }\n // Handle a key from the keypress event\n function handleCharBinding(cm, e, ch) {\n return dispatchKey(cm, \"'\" + ch + \"'\", e, function(b) {\n 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(doc(cm));\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)) cm.replaceSelection(\"\", null, \"cut\");\n }\n if (gecko && !mac && !handled && code == 46 && e.shiftKey && !e.ctrlKey && document.execCommand) document.execCommand(\"cut\");\n // Turn mouse into crosshair when Alt is held on Mac.\n if (code == 18 && !/\\bCodeMirror-crosshair\\b/.test(cm.display.lineDiv.className)) showCrossHair(cm);\n }\n function showCrossHair(cm) {\n var lineDiv = cm.display.lineDiv;\n addClass(lineDiv, \"CodeMirror-crosshair\");\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 function onKeyUp(e) {\n if (e.keyCode == 16) this.doc.sel.shift = false;\n signalDOMEvent(this, e);\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) {\n lastStoppedKey = null;\n e_preventDefault(e);\n return;\n }\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 == \"\\b\") return;\n if (handleCharBinding(cm, e, ch)) return;\n cm.display.input.onKeyPress(e);\n }\n var DOUBLECLICK_DELAY = 400;\n var PastClick = function(time, pos, button) {\n this.time = time;\n this.pos = pos;\n this.button = button;\n };\n PastClick.prototype.compare = function(time, pos, button) {\n return this.time + DOUBLECLICK_DELAY > time && cmp(pos, this.pos) == 0 && button == this.button;\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 // 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 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() {\n return display.scroller.draggable = true;\n }, 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 win(cm).focus();\n // #3261: make sure, that we're not starting a second selection\n if (button == 1 && cm.state.selectingText) cm.state.selectingText(e);\n if (pos && handleMappedButton(cm, button, pos, repeat, e)) return;\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() {\n return display.input.focus();\n }, 20);\n } else if (button == 3) {\n if (captureRightClick) cm.display.input.onContextMenu(e);\n else delayBlurEvent(cm);\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 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 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 function leftButtonDown(cm, pos, repeat, event) {\n if (ie) setTimeout(bind(ensureFocus, cm), 0);\n else cm.curOp.focus = activeElt(doc(cm));\n var behavior = configureMouse(cm, repeat, event);\n var sel = cm.doc.sel, contained;\n if (cm.options.dragDrop && dragAndDrop && !cm.isReadOnly() && repeat == \"single\" && (contained = sel.contains(pos)) > -1 && (cmp((contained = sel.ranges[contained]).from(), pos) < 0 || pos.xRel > 0) && (cmp(contained.to(), pos) > 0 || pos.xRel < 0)) leftButtonStartDrag(cm, event, pos, behavior);\n else leftButtonSelect(cm, event, pos, behavior);\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) 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) setTimeout(function() {\n display.wrapper.ownerDocument.body.focus({\n preventScroll: true\n });\n display.input.focus();\n }, 20);\n else 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() {\n return moved = true;\n };\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 cm.state.delayingBlurEvent = true;\n setTimeout(function() {\n return display.input.focus();\n }, 20);\n // IE's approach to draggable\n if (display.scroller.dragDrop) display.scroller.dragDrop();\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 // 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$1 = cm.doc;\n e_preventDefault(event);\n var ourRange, ourIndex, startSel = doc$1.sel, ranges = startSel.ranges;\n if (behavior.addNew && !behavior.extend) {\n ourIndex = doc$1.sel.contains(start);\n if (ourIndex > -1) ourRange = ranges[ourIndex];\n else ourRange = new Range(start, start);\n } else {\n ourRange = doc$1.sel.primary();\n ourIndex = doc$1.sel.primIndex;\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) ourRange = extendRange(ourRange, range.anchor, range.head, behavior.extend);\n else ourRange = range;\n }\n if (!behavior.addNew) {\n ourIndex = 0;\n setSelection(doc$1, new Selection([\n ourRange\n ], 0), sel_mouse);\n startSel = doc$1.sel;\n } else if (ourIndex == -1) {\n ourIndex = ranges.length;\n setSelection(doc$1, normalizeSelection(cm, ranges.concat([\n ourRange\n ]), ourIndex), {\n scroll: false,\n origin: \"*mouse\"\n });\n } else if (ranges.length > 1 && ranges[ourIndex].empty() && behavior.unit == \"char\" && !behavior.extend) {\n setSelection(doc$1, normalizeSelection(cm, ranges.slice(0, ourIndex).concat(ranges.slice(ourIndex + 1)), 0), {\n scroll: false,\n origin: \"*mouse\"\n });\n startSel = doc$1.sel;\n } else replaceOneSelection(doc$1, ourIndex, ourRange, sel_mouse);\n var lastPos = start;\n function extendTo(pos) {\n if (cmp(lastPos, pos) == 0) return;\n lastPos = pos;\n if (behavior.unit == \"rectangle\") {\n var ranges = [], tabSize = cm.options.tabSize;\n var startCol = countColumn(getLine(doc$1, start.line).text, start.ch, tabSize);\n var posCol = countColumn(getLine(doc$1, 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)); line <= end; line++){\n var text = getLine(doc$1, line).text, leftPos = findColumn(text, left, tabSize);\n if (left == right) ranges.push(new Range(Pos(line, leftPos), Pos(line, leftPos)));\n else if (text.length > leftPos) 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$1, normalizeSelection(cm, startSel.ranges.slice(0, ourIndex).concat(ranges), ourIndex), {\n origin: \"*mouse\",\n scroll: false\n });\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$1, anchor), head));\n setSelection(doc$1, normalizeSelection(cm, ranges$1, ourIndex), sel_mouse);\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 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(doc(cm));\n extendTo(cur);\n var visible = visibleLines(display, doc$1);\n if (cur.line >= visible.to || cur.line < visible.from) setTimeout(operation(cm, function() {\n if (counter == curCount) extend(e);\n }), 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 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$1.history.lastSelOrigin = null;\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 // 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 // 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) 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) leftSide = dir < 0;\n else leftSide = dir > 0;\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 // 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 try {\n mX = e.clientX;\n mY = e.clientY;\n } catch (e$1) {\n return false;\n }\n if (mX >= Math.floor(cm.display.gutters.getBoundingClientRect().right)) return false;\n if (prevent) e_preventDefault(e);\n var display = cm.display;\n var lineBox = display.lineDiv.getBoundingClientRect();\n if (mY > lineBox.bottom || !hasHandler(cm, type)) return e_defaultPrevented(e);\n mY -= lineBox.top - display.viewOffset;\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 function clickInGutter(cm, e) {\n return gutterEvent(cm, e, \"gutterClick\", true);\n }\n // CONTEXT MENU HANDLING\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 function contextMenuInGutter(cm, e) {\n if (!hasHandler(cm, \"gutterContextMenu\")) return false;\n return gutterEvent(cm, e, \"gutterContextMenu\", false);\n }\n function themeChanged(cm) {\n cm.display.wrapper.className = cm.display.wrapper.className.replace(/\\s*cm-s-\\S+/g, \"\") + cm.options.theme.replace(/(^|\\s)\\s*/g, \" cm-s-\");\n clearCaches(cm);\n }\n var Init = {\n toString: function() {\n return \"CodeMirror.Init\";\n }\n };\n var defaults = {};\n var optionHandlers = {};\n function defineOptions(CodeMirror) {\n var optionHandlers = CodeMirror.optionHandlers;\n function option(name, deflt, handle, notOnInit) {\n CodeMirror.defaults[name] = deflt;\n if (handle) optionHandlers[name] = notOnInit ? function(cm, val, old) {\n if (old != Init) handle(cm, val, old);\n } : handle;\n }\n CodeMirror.defineOption = option;\n // Passed to option handlers when there is no old value.\n CodeMirror.Init = Init;\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) {\n return cm.setValue(val);\n }, true);\n option(\"mode\", null, function(cm, val) {\n cm.doc.modeOption = val;\n loadMode(cm);\n }, true);\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 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--)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\\u202d\\u202e\\u2066\\u2067\\u2069\\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) {\n return cm.refresh();\n }, 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 ;\n }, true);\n option(\"spellcheck\", false, function(cm, val) {\n return cm.getInputField().spellcheck = val;\n }, true);\n option(\"autocorrect\", false, function(cm, val) {\n return cm.getInputField().autocorrect = val;\n }, true);\n option(\"autocapitalize\", false, function(cm, val) {\n return cm.getInputField().autocapitalize = val;\n }, true);\n option(\"rtlMoveVisually\", !windows);\n option(\"wholeLineUpdateBefore\", true);\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 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) {\n return updateScrollbars(cm);\n }, 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) {\n return integer;\n }, updateGutters, true);\n option(\"showCursorWhenSelecting\", false, updateSelection, true);\n option(\"resetSelectionOnContextMenu\", true);\n option(\"lineWiseCopyCut\", true);\n option(\"pasteLinesPerSelection\", true);\n option(\"selectionsMayTouch\", false);\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 option(\"screenReaderLabel\", null, function(cm, val) {\n val = val === \"\" ? null : val;\n cm.display.input.screenReaderLabelChanged(val);\n });\n option(\"disableInput\", false, function(cm, val) {\n if (!val) cm.display.input.reset();\n }, true);\n option(\"dragDrop\", true, dragDropChanged);\n option(\"allowDropFileTypes\", null);\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) {\n return cm.doc.history.undoDepth = val;\n });\n option(\"historyEventDelay\", 1250);\n option(\"viewportMargin\", 10, function(cm) {\n return cm.refresh();\n }, true);\n option(\"maxHighlightLength\", 10000, resetModeState, true);\n option(\"moveInputWithCursor\", true, function(cm, val) {\n if (!val) cm.display.input.resetPosition();\n });\n option(\"tabindex\", null, function(cm, val) {\n return cm.display.input.getField().tabIndex = val || \"\";\n });\n option(\"autofocus\", null);\n option(\"direction\", \"ltr\", function(cm, val) {\n return cm.doc.setDirection(val);\n }, true);\n option(\"phrases\", null);\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 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() {\n return updateScrollbars(cm);\n }, 100);\n }\n // A CodeMirror instance represents an editor. This is the object\n // that user code is usually dealing with.\n function CodeMirror(place, options) {\n var this$1 = this;\n if (!(this instanceof CodeMirror)) return new CodeMirror(place, options);\n this.options = options = options ? copyObj(options) : {};\n // Determine effective options based on given values and defaults.\n copyObj(defaults, options, false);\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 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) this.display.wrapper.className += \" CodeMirror-wrap\";\n initScrollbars(this);\n this.state = {\n keyMaps: [],\n overlays: [],\n modeGen: 0,\n overwrite: false,\n delayingBlurEvent: false,\n focused: false,\n suppressEdits: false,\n pasteIncoming: -1,\n cutIncoming: -1,\n selectingText: false,\n draggingText: false,\n highlight: new Delayed(),\n keySeq: null,\n specialChars: null\n };\n if (options.autofocus && !mobile) display.input.focus();\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() {\n return this$1.display.input.reset(true);\n }, 20);\n registerEventHandlers(this);\n ensureGlobalHandlers();\n startOperation(this);\n this.curOp.forceUpdate = true;\n attachDoc(this, doc);\n if (options.autofocus && !mobile || this.hasFocus()) setTimeout(function() {\n if (this$1.hasFocus() && !this$1.state.focused) onFocus(this$1);\n }, 20);\n else onBlur(this);\n for(var opt in optionHandlers)if (optionHandlers.hasOwnProperty(opt)) 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 && getComputedStyle(display.lineDiv).textRendering == \"optimizelegibility\") display.lineDiv.style.textRendering = \"auto\";\n }\n // The default configuration options.\n CodeMirror.defaults = defaults;\n // Functions to run when options are changed.\n CodeMirror.optionHandlers = optionHandlers;\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) 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 on(d.scroller, \"dblclick\", function(e) {\n return signalDOMEvent(cm, e) || e_preventDefault(e);\n });\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) {\n return onContextMenu(cm, e);\n });\n on(d.input.getField(), \"contextmenu\", function(e) {\n if (!d.scroller.contains(e.target)) onContextMenu(cm, e);\n });\n // Used to suppress mouse event handling when a touch happens\n var touchFinished, prevTouch = {\n end: 0\n };\n function finishTouch() {\n if (d.activeTouch) {\n touchFinished = setTimeout(function() {\n return d.activeTouch = null;\n }, 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 > 400;\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 = {\n start: now,\n moved: false,\n prev: now - prevTouch.end <= 300 ? prevTouch : null\n };\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 && !touch.moved && new Date - touch.start < 300) {\n var pos = cm.coordsChar(d.activeTouch, \"page\"), range;\n if (!touch.prev || farAway(touch, touch.prev)) range = new Range(pos, pos);\n else if (!touch.prev.prev || farAway(touch, touch.prev.prev)) range = cm.findWordAt(pos);\n else 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 // 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 // Listen to wheel events in order to try and update the viewport on time.\n on(d.scroller, \"mousewheel\", function(e) {\n return onScrollWheel(cm, e);\n });\n on(d.scroller, \"DOMMouseScroll\", function(e) {\n return onScrollWheel(cm, e);\n });\n // Prevent wrapper from ever scrolling\n on(d.wrapper, \"scroll\", function() {\n return d.wrapper.scrollTop = d.wrapper.scrollLeft = 0;\n });\n d.dragFunctions = {\n enter: function(e) {\n if (!signalDOMEvent(cm, e)) e_stop(e);\n },\n over: function(e) {\n if (!signalDOMEvent(cm, e)) {\n onDragOver(cm, e);\n e_stop(e);\n }\n },\n start: function(e) {\n return onDragStart(cm, e);\n },\n drop: operation(cm, onDrop),\n leave: function(e) {\n if (!signalDOMEvent(cm, e)) clearDragCursor(cm);\n }\n };\n var inp = d.input.getField();\n on(inp, \"keyup\", function(e) {\n return onKeyUp.call(cm, e);\n });\n on(inp, \"keydown\", operation(cm, onKeyDown));\n on(inp, \"keypress\", operation(cm, onKeyPress));\n on(inp, \"focus\", function(e) {\n return onFocus(cm, e);\n });\n on(inp, \"blur\", function(e) {\n return onBlur(cm, e);\n });\n }\n var initHooks = [];\n CodeMirror.defineInitHook = function(f) {\n 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 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\") indentation = curSpace + cm.options.indentUnit;\n else if (how == \"subtract\") indentation = curSpace - cm.options.indentUnit;\n else if (typeof how == \"number\") indentation = curSpace + how;\n indentation = Math.max(0, indentation);\n var indentString = \"\", pos = 0;\n if (cm.options.indentWithTabs) for(var i = Math.floor(indentation / tabSize); i; --i){\n pos += tabSize;\n indentString += \"\t\";\n }\n if (pos < indentation) indentString += spaceStr(indentation - pos);\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 // 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 // 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 function setLastCopied(newLastCopied) {\n lastCopied = newLastCopied;\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 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++)multiPaste.push(doc.splitLines(lastCopied.text[i]));\n }\n } else if (textLines.length == sel.ranges.length && cm.options.pasteLinesPerSelection) multiPaste = map(textLines, function(l) {\n return [\n 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) from = Pos(from.line, from.ch - deleted);\n else if (cm.state.overwrite && !paste) 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\")) from = to = Pos(from.line, 0);\n }\n var changeEvent = {\n from: from,\n to: to,\n text: multiPaste ? multiPaste[i$1 % multiPaste.length] : textLines,\n origin: origin || (paste ? \"paste\" : cm.state.cutIncoming > recent ? \"cut\" : \"+input\")\n };\n makeChange(cm.doc, changeEvent);\n signalLater(cm, \"inputRead\", cm, changeEvent);\n }\n if (inserted && !paste) triggerElectric(cm, inserted);\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 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 && cm.hasFocus()) runInOp(cm, function() {\n return applyTextInput(cm, pasted, 0, null, \"paste\");\n });\n return true;\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 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++)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))) indented = indentLine(cm, range.head.line, \"smart\");\n }\n if (indented) signalLater(cm, \"electricInput\", cm, range.head.line);\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 = {\n anchor: Pos(line, 0),\n head: Pos(line + 1, 0)\n };\n ranges.push(lineRange);\n text.push(cm.getRange(lineRange.anchor, lineRange.head));\n }\n return {\n text: text,\n ranges: ranges\n };\n }\n function disableBrowserMagic(field, spellcheck, autocorrect, autocapitalize) {\n field.setAttribute(\"autocorrect\", autocorrect ? \"on\" : \"off\");\n field.setAttribute(\"autocapitalize\", autocapitalize ? \"on\" : \"off\");\n field.setAttribute(\"spellcheck\", !!spellcheck);\n }\n function hiddenTextarea() {\n var te = elt(\"textarea\", null, null, \"position: absolute; bottom: -1em; padding: 0; width: 1px; height: 1em; min-height: 1em; outline: none\");\n var div = elt(\"div\", [\n te\n ], 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 return div;\n }\n // The publicly visible API. Note that methodOp(f) means\n // 'wrap f in an operation, performed on its `this` parameter'.\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 function addEditorMethods(CodeMirror) {\n var optionHandlers = CodeMirror.optionHandlers;\n var helpers = CodeMirror.helpers = {};\n CodeMirror.prototype = {\n constructor: CodeMirror,\n focus: function() {\n win(this).focus();\n 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)) operation(this, optionHandlers[option])(this, value, old);\n signal(this, \"optionChange\", this, option);\n },\n getOption: function(option) {\n return this.options[option];\n },\n getDoc: function() {\n 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)if (maps[i] == map || maps[i].name == map) {\n maps.splice(i, 1);\n return true;\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,\n modeSpec: spec,\n opaque: options && options.opaque,\n priority: options && options.priority || 0\n }, function(overlay) {\n return overlay.priority;\n });\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 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)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) 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 // 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 getLineTokens: function(line, precise) {\n return takeToken(this, Pos(line), precise, true);\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 {\n type = styles[mid * 2 + 2];\n break;\n }\n }\n var cut = type ? type.indexOf(\"overlay \") : -1;\n return cut < 0 ? type : cut == 0 ? null : type.slice(0, cut - 1);\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 getHelper: function(pos, type) {\n return this.getHelpers(pos, type)[0];\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]) 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]) found.push(help[mode.helperType]);\n else if (help[mode.name]) found.push(help[mode.name]);\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) found.push(cur.val);\n }\n return found;\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 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 charCoords: function(pos, mode) {\n return charCoords(this, clipPos(this.doc, pos), mode || \"page\");\n },\n coordsChar: function(coords, mode) {\n coords = fromCoordSystem(this, coords, mode || \"page\");\n return coordsChar(this, coords.left, coords.top);\n },\n lineAtHeight: function(height, mode) {\n height = fromCoordSystem(this, {\n top: height,\n left: 0\n }, 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) {\n line = last;\n end = true;\n }\n lineObj = getLine(this.doc, line);\n } else lineObj = line;\n return intoCoordSystem(this, lineObj, {\n top: 0,\n left: 0\n }, mode || \"page\", includeWidgets || end).top + (end ? this.doc.height - heightAtLine(lineObj) : 0);\n },\n defaultTextHeight: function() {\n return textHeight(this.display);\n },\n defaultCharWidth: function() {\n return charWidth(this.display);\n },\n getViewport: function() {\n return {\n from: this.display.viewFrom,\n to: this.display.viewTo\n };\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\") top = pos.top;\n else if (vert == \"above\" || vert == \"near\") {\n var vspace = Math.max(display.wrapper.clientHeight, this.doc.height), 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) top = pos.top - node.offsetHeight;\n else if (pos.bottom + node.offsetHeight <= vspace) top = pos.bottom;\n if (left + node.offsetWidth > hspace) 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) scrollIntoView(this, {\n left: left,\n top: top,\n right: left + node.offsetWidth,\n bottom: top + node.offsetHeight\n });\n },\n triggerOnKeyDown: methodOp(onKeyDown),\n triggerOnKeyPress: methodOp(onKeyPress),\n triggerOnKeyUp: onKeyUp,\n triggerOnMouseDown: methodOp(onMouseDown),\n execCommand: function(cmd) {\n if (commands.hasOwnProperty(cmd)) return commands[cmd].call(null, this);\n },\n triggerElectric: methodOp(function(text) {\n triggerElectric(this, text);\n }),\n findPosH: function(from, amount, unit, visually) {\n var dir = 1;\n if (amount < 0) {\n dir = -1;\n amount = -amount;\n }\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 moveH: methodOp(function(dir, unit) {\n var this$1 = this;\n this.extendSelectionsBy(function(range) {\n if (this$1.display.shift || this$1.doc.extend || range.empty()) return findPosH(this$1.doc, range.head, dir, unit, this$1.options.rtlMoveVisually);\n else return dir < 0 ? range.from() : range.to();\n }, sel_move);\n }),\n deleteH: methodOp(function(dir, unit) {\n var sel = this.doc.sel, doc = this.doc;\n if (sel.somethingSelected()) doc.replaceSelection(\"\", null, \"+delete\");\n else deleteNearSelection(this, function(range) {\n var other = findPosH(doc, range.head, dir, unit, false);\n return dir < 0 ? {\n from: other,\n to: range.head\n } : {\n from: range.head,\n to: other\n };\n });\n }),\n findPosV: function(from, amount, unit, goalColumn) {\n var dir = 1, x = goalColumn;\n if (amount < 0) {\n dir = -1;\n amount = -amount;\n }\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 moveV: methodOp(function(dir, unit) {\n var this$1 = this;\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) 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()) 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++)doc.sel.ranges[i].goalColumn = goals[i];\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;\n else ++end;\n var startChar = line.charAt(start);\n var check = isWordChar(startChar, helper) ? function(ch) {\n return isWordChar(ch, helper);\n } : /\\s/.test(startChar) ? function(ch) {\n return /\\s/.test(ch);\n } : function(ch) {\n return !/\\s/.test(ch) && !isWordChar(ch);\n };\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 toggleOverwrite: function(value) {\n if (value != null && value == this.state.overwrite) return;\n if (this.state.overwrite = !this.state.overwrite) addClass(this.display.cursorDiv, \"CodeMirror-overwrite\");\n else rmClass(this.display.cursorDiv, \"CodeMirror-overwrite\");\n signal(this, \"overwriteToggle\", this, this.state.overwrite);\n },\n hasFocus: function() {\n return this.display.input.getField() == activeElt(doc(this));\n },\n isReadOnly: function() {\n return !!(this.options.readOnly || this.doc.cantEdit);\n },\n scrollTo: methodOp(function(x, y) {\n scrollToCoords(this, x, y);\n }),\n getScrollInfo: function() {\n var scroller = this.display.scroller;\n return {\n left: scroller.scrollLeft,\n 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),\n clientWidth: displayWidth(this)\n };\n },\n scrollIntoView: methodOp(function(range, margin) {\n if (range == null) {\n range = {\n from: this.doc.sel.primary().head,\n to: null\n };\n if (margin == null) margin = this.options.cursorScrollMargin;\n } else if (typeof range == \"number\") range = {\n from: Pos(range, 0),\n to: null\n };\n else if (range.from == null) range = {\n from: range,\n to: null\n };\n if (!range.to) range.to = range.from;\n range.margin = margin || 0;\n if (range.from.line != null) scrollToRange(this, range);\n else scrollToCoordsRange(this, range.from, range.to, range.margin);\n }),\n setSize: methodOp(function(width, height) {\n var this$1 = this;\n var interpret = function(val) {\n return typeof val == \"number\" || /^\\d+$/.test(String(val)) ? val + \"px\" : val;\n };\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) {\n for(var i = 0; i < line.widgets.length; i++)if (line.widgets[i].noHScroll) {\n regLineChange(this$1, lineNo, \"widget\");\n break;\n }\n }\n ++lineNo;\n });\n this.curOp.forceUpdate = true;\n signal(this, \"refresh\", this);\n }),\n operation: function(f) {\n return runInOp(this, f);\n },\n startOperation: function() {\n return startOperation(this);\n },\n endOperation: function() {\n 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) estimateLineHeights(this);\n signal(this, \"refresh\", this);\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 phrase: function(phraseText) {\n var phrases = this.options.phrases;\n return phrases && Object.prototype.hasOwnProperty.call(phrases, phraseText) ? phrases[phraseText] : phraseText;\n },\n getInputField: function() {\n return this.display.input.getField();\n },\n getWrapperElement: function() {\n return this.display.wrapper;\n },\n getScrollerElement: function() {\n return this.display.scroller;\n },\n getGutterElement: function() {\n return this.display.gutters;\n }\n };\n eventMixin(CodeMirror);\n CodeMirror.registerHelper = function(type, name, value) {\n if (!helpers.hasOwnProperty(type)) helpers[type] = CodeMirror[type] = {\n _global: []\n };\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({\n pred: predicate,\n 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)) 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) next = moveVisually(doc.cm, lineObj, pos, dir);\n else next = moveLogically(lineObj, pos, dir);\n if (next == null) {\n if (!boundToLine && findNextLine()) pos = endOfLine(visually, doc.cm, lineObj, pos.line, lineDir);\n else return false;\n } else pos = next;\n return true;\n }\n if (unit == \"char\" || unit == \"codepoint\") moveOnce();\n else if (unit == \"column\") 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\" : group && cur == \"\\n\" ? \"n\" : !group || /\\s/.test(cur) ? null : \"p\";\n if (group && !first && !type) type = \"s\";\n if (sawType && sawType != type) {\n if (dir < 0) {\n dir = 1;\n moveOnce();\n pos.sticky = \"after\";\n }\n break;\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 // 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, win(cm).innerHeight || doc(cm).documentElement.clientHeight);\n var moveAmount = Math.max(pageSize - .5 * textHeight(cm.display), 3);\n y = (dir > 0 ? pos.bottom : pos.top) + dir * moveAmount;\n } else if (unit == \"line\") y = dir > 0 ? pos.bottom + 3 : pos.top - 3;\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) {\n target.hitSide = true;\n break;\n }\n y += dir * 5;\n }\n return target;\n }\n // CONTENTEDITABLE INPUT STYLE\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 ContentEditableInput.prototype.init = function(display) {\n var this$1 = this;\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 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 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() {\n return this$1.updateFromDOM();\n }), 20);\n });\n on(div, \"compositionstart\", function(e) {\n this$1.composing = {\n data: e.data,\n done: false\n };\n });\n on(div, \"compositionupdate\", function(e) {\n if (!this$1.composing) this$1.composing = {\n data: e.data,\n done: false\n };\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 on(div, \"touchstart\", function() {\n return input.forceCompositionEnd();\n });\n on(div, \"input\", function() {\n if (!this$1.composing) this$1.readFromDOMSoon();\n });\n function onCopyCut(e) {\n if (!belongsToInput(e) || signalDOMEvent(cm, e)) return;\n if (cm.somethingSelected()) {\n setLastCopied({\n lineWise: false,\n text: cm.getSelections()\n });\n if (e.type == \"cut\") cm.replaceSelection(\"\", null, \"cut\");\n } else if (!cm.options.lineWiseCopyCut) return;\n else {\n var ranges = copyableRanges(cm);\n setLastCopied({\n lineWise: true,\n text: ranges.text\n });\n if (e.type == \"cut\") cm.operation(function() {\n cm.setSelections(ranges.ranges, 0, sel_dontScroll);\n cm.replaceSelection(\"\", null, \"cut\");\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 disableBrowserMagic(te);\n cm.display.lineSpace.insertBefore(kludge, cm.display.lineSpace.firstChild);\n te.value = lastCopied.text.join(\"\\n\");\n var hadFocus = activeElt(div.ownerDocument);\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 ContentEditableInput.prototype.screenReaderLabelChanged = function(label) {\n // Label for screenreaders, accessibility\n if (label) this.div.setAttribute(\"aria-label\", label);\n else this.div.removeAttribute(\"aria-label\");\n };\n ContentEditableInput.prototype.prepareSelection = function() {\n var result = prepareSelection(this.cm, false);\n result.focus = activeElt(this.div.ownerDocument) == this.div;\n return result;\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 ContentEditableInput.prototype.getSelection = function() {\n return this.cm.display.wrapper.ownerDocument.getSelection();\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 if (cm.display.viewTo == cm.display.viewFrom || from.line >= cm.display.viewTo || to.line < cm.display.viewFrom) {\n sel.removeAllRanges();\n return;\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 && cmp(minPos(curAnchor, curFocus), from) == 0 && cmp(maxPos(curAnchor, curFocus), to) == 0) return;\n var view = cm.display.view;\n var start = from.line >= cm.display.viewFrom && posToDOM(cm, from) || {\n node: view[0].measure.map[2],\n offset: 0\n };\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 = {\n node: map[map.length - 1],\n offset: map[map.length - 2] - map[map.length - 3]\n };\n }\n if (!start || !end) {\n sel.removeAllRanges();\n return;\n }\n var old = sel.rangeCount && sel.getRangeAt(0), rng;\n try {\n 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 ContentEditableInput.prototype.startGracePeriod = function() {\n var this$1 = this;\n clearTimeout(this.gracePeriod);\n this.gracePeriod = setTimeout(function() {\n this$1.gracePeriod = false;\n if (this$1.selectionChanged()) this$1.cm.operation(function() {\n return this$1.cm.curOp.selectionChanged = true;\n });\n }, 20);\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 ContentEditableInput.prototype.rememberSelection = function() {\n var sel = this.getSelection();\n this.lastAnchorNode = sel.anchorNode;\n this.lastAnchorOffset = sel.anchorOffset;\n this.lastFocusNode = sel.focusNode;\n this.lastFocusOffset = sel.focusOffset;\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 ContentEditableInput.prototype.focus = function() {\n if (this.cm.options.readOnly != \"nocursor\") {\n if (!this.selectionInEditor() || activeElt(this.div.ownerDocument) != this.div) this.showSelection(this.prepareSelection(), true);\n this.div.focus();\n }\n };\n ContentEditableInput.prototype.blur = function() {\n this.div.blur();\n };\n ContentEditableInput.prototype.getField = function() {\n return this.div;\n };\n ContentEditableInput.prototype.supportsTouch = function() {\n return true;\n };\n ContentEditableInput.prototype.receivedFocus = function() {\n var this$1 = this;\n var input = this;\n if (this.selectionInEditor()) setTimeout(function() {\n return this$1.pollSelection();\n }, 20);\n else runInOp(this.cm, function() {\n 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 ContentEditableInput.prototype.selectionChanged = function() {\n var sel = this.getSelection();\n return sel.anchorNode != this.lastAnchorNode || sel.anchorOffset != this.lastAnchorOffset || sel.focusNode != this.lastFocusNode || sel.focusOffset != this.lastFocusOffset;\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({\n type: \"keydown\",\n keyCode: 8,\n preventDefault: Math.abs\n });\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 ContentEditableInput.prototype.pollContent = function() {\n if (this.readDOMTimeout != null) {\n clearTimeout(this.readDOMTimeout);\n this.readDOMTimeout = null;\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()) 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()) to = Pos(to.line + 1, 0);\n if (from.line < display.viewFrom || to.line > display.viewTo - 1) return false;\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 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)) {\n newText.pop();\n oldText.pop();\n toLine--;\n } else if (newText[0] == oldText[0]) {\n newText.shift();\n oldText.shift();\n fromLine++;\n } else break;\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))++cutFront;\n var newBot = lst(newText), oldBot = lst(oldText);\n var maxCutEnd = Math.min(newBot.length - (newText.length == 1 ? cutFront : 0), oldBot.length - (oldText.length == 1 ? cutFront : 0));\n while(cutEnd < maxCutEnd && newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1))++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) while(cutFront && cutFront > from.ch && newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1)){\n cutFront--;\n cutEnd++;\n }\n newText[newText.length - 1] = newBot.slice(0, newBot.length - cutEnd).replace(/^\\u200b+/, \"\");\n newText[0] = newText[0].slice(cutFront).replace(/\\u200b+$/, \"\");\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 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 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 ContentEditableInput.prototype.updateFromDOM = function() {\n var this$1 = this;\n if (this.cm.isReadOnly() || !this.pollContent()) runInOp(this.cm, function() {\n return regChange(this$1.cm);\n });\n };\n ContentEditableInput.prototype.setUneditable = function(node) {\n node.contentEditable = \"false\";\n };\n ContentEditableInput.prototype.onKeyPress = function(e) {\n if (e.charCode == 0 || this.composing) return;\n e.preventDefault();\n if (!this.cm.isReadOnly()) operation(this.cm, applyTextInput)(this.cm, String.fromCharCode(e.charCode == null ? e.keyCode : e.charCode), 0);\n };\n ContentEditableInput.prototype.readOnlyChanged = function(val) {\n this.div.contentEditable = String(val != \"nocursor\");\n };\n ContentEditableInput.prototype.onContextMenu = function() {};\n ContentEditableInput.prototype.resetPosition = function() {};\n ContentEditableInput.prototype.needsContentAttribute = true;\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 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 function isInGutter(node) {\n for(var scan = node; scan; scan = scan.parentNode){\n if (/CodeMirror-gutter-wrapper/.test(scan.className)) return true;\n }\n return false;\n }\n function badPos(pos, bad) {\n if (bad) pos.bad = true;\n 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) {\n return function(marker) {\n return marker.id == id;\n };\n }\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))) 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 if (isBlock) close();\n for(var i = 0; i < node.childNodes.length; i++)walk(node.childNodes[i]);\n if (/^(pre|p)$/i.test(node.nodeName)) extraLinebreak = true;\n if (isBlock) closing = true;\n } else if (node.nodeType == 3) addText(node.nodeValue.replace(/\\u200b/g, \"\").replace(/\\u00a0/g, \" \"));\n }\n for(;;){\n walk(from);\n if (from == to) break;\n from = from.nextSibling;\n extraLinebreak = false;\n }\n return text;\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;\n offset = 0;\n } else 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 for(var i = 0; i < cm.display.view.length; i++){\n var lineView = cm.display.view[i];\n if (lineView.node == lineNode) return locateNodeInLineView(lineView, node, offset);\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 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 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 // 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) return badPos(Pos(found.line, found.ch - dist), bad);\n else 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) return badPos(Pos(found.line, found.ch + dist$1), bad);\n else dist$1 += before.textContent.length;\n }\n }\n // TEXTAREA INPUT STYLE\n var TextareaInput = function(cm) {\n this.cm = cm;\n // See input.poll and input.reset\n this.prevInput = \"\";\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 this.resetting = false;\n };\n TextareaInput.prototype.init = function(display) {\n var this$1 = this;\n var input = this, cm = this.cm;\n this.createField(display);\n var te = this.textarea;\n display.wrapper.insertBefore(this.wrapper, display.wrapper.firstChild);\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 on(te, \"input\", function() {\n if (ie && ie_version >= 9 && this$1.hasSelection) this$1.hasSelection = null;\n input.poll();\n });\n on(te, \"paste\", function(e) {\n if (signalDOMEvent(cm, e) || handlePaste(e, cm)) return;\n cm.state.pasteIncoming = +new Date;\n input.fastPoll();\n });\n function prepareCopyCut(e) {\n if (signalDOMEvent(cm, e)) return;\n if (cm.somethingSelected()) setLastCopied({\n lineWise: false,\n text: cm.getSelections()\n });\n else if (!cm.options.lineWiseCopyCut) return;\n else {\n var ranges = copyableRanges(cm);\n setLastCopied({\n lineWise: true,\n text: ranges.text\n });\n if (e.type == \"cut\") 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 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 // 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 // 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 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\"), {\n className: \"CodeMirror-composing\"\n })\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 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 var opts = this.cm.options;\n disableBrowserMagic(this.textarea, opts.spellcheck, opts.autocorrect, opts.autocapitalize);\n };\n TextareaInput.prototype.screenReaderLabelChanged = function(label) {\n // Label for screenreaders, accessibility\n if (label) this.textarea.setAttribute(\"aria-label\", label);\n else this.textarea.removeAttribute(\"aria-label\");\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 // 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, headPos.top + lineOff.top - wrapOff.top));\n result.teLeft = Math.max(0, Math.min(display.wrapper.clientWidth - 10, headPos.left + lineOff.left - wrapOff.left));\n }\n return result;\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 // 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 && typing) return;\n var cm = this.cm;\n this.resetting = true;\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 this.resetting = false;\n };\n TextareaInput.prototype.getField = function() {\n return this.textarea;\n };\n TextareaInput.prototype.supportsTouch = function() {\n return false;\n };\n TextareaInput.prototype.focus = function() {\n if (this.cm.options.readOnly != \"nocursor\" && (!mobile || activeElt(this.textarea.ownerDocument) != this.textarea)) try {\n this.textarea.focus();\n } catch (e) {} // IE8 will throw if the textarea is display: none or not in DOM\n };\n TextareaInput.prototype.blur = function() {\n this.textarea.blur();\n };\n TextareaInput.prototype.resetPosition = function() {\n this.wrapper.style.top = this.wrapper.style.left = 0;\n };\n TextareaInput.prototype.receivedFocus = function() {\n 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 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 // 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) {\n missed = true;\n input.polling.set(60, p);\n } else {\n input.pollingFast = false;\n input.slowPoll();\n }\n }\n input.polling.set(20, p);\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 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 || this.resetting || !cm.state.focused || hasSelection(input) && !prevInput && !this.composing || cm.isReadOnly() || cm.options.disableInput || cm.state.keySeq) return false;\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 || mac && /[\\uf700-\\uf7ff]/.test(text)) {\n cm.display.input.reset();\n return false;\n }\n if (cm.doc.sel == cm.display.selForContextMenu) {\n var first = text.charCodeAt(0);\n if (first == 0x200b && !prevInput) prevInput = \"​\";\n if (first == 0x21da) {\n this.reset();\n return this.cm.execCommand(\"undo\");\n }\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 runInOp(cm, function() {\n applyTextInput(cm, text.slice(same), prevInput.length - same, null, this$1.composing ? \"*compose\" : null);\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 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 });\n return true;\n };\n TextareaInput.prototype.ensurePolled = function() {\n if (this.pollingFast && this.poll()) this.pollingFast = false;\n };\n TextareaInput.prototype.onKeyPress = function() {\n if (ie && ie_version >= 9) this.hasSelection = null;\n this.fastPoll();\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;\n // Opera is difficult.\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) operation(cm, setSelection)(cm.doc, simpleSelection(pos), sel_dontScroll);\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 = te.ownerDocument.defaultView.scrollY;\n // Work around Chrome issue (#2712)\n display.input.focus();\n if (webkit) te.ownerDocument.defaultView.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 // 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 = \"​\" + (selected ? te.value : \"\");\n te.value = \"⇚\"; // Used to catch context-menu undo\n te.value = extval;\n input.prevInput = selected ? \"\" : \"​\";\n te.selectionStart = 1;\n 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 // 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 && te.selectionEnd > 0 && input.prevInput == \"​\") operation(cm, selectAll)(cm);\n else if (i++ < 10) 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 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 setTimeout(rehide, 50);\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 TextareaInput.prototype.setUneditable = function() {};\n TextareaInput.prototype.needsContentAttribute = false;\n function fromTextArea(textarea, options) {\n options = options ? copyObj(options) : {};\n options.value = textarea.value;\n if (!options.tabindex && textarea.tabIndex) options.tabindex = textarea.tabIndex;\n if (!options.placeholder && textarea.placeholder) 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(textarea.ownerDocument);\n options.autofocus = hasFocus == textarea || textarea.getAttribute(\"autofocus\") != null && hasFocus == document.body;\n }\n function save() {\n 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 options.finishInit = function(cm) {\n cm.save = save;\n cm.getTextArea = function() {\n return textarea;\n };\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\") textarea.form.submit = realSubmit;\n }\n };\n };\n textarea.style.display = \"none\";\n var cm = CodeMirror(function(node) {\n return textarea.parentNode.insertBefore(node, textarea.nextSibling);\n }, options);\n return cm;\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 // EDITOR CONSTRUCTOR\n defineOptions(CodeMirror);\n addEditorMethods(CodeMirror);\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) CodeMirror.prototype[prop] = function(method) {\n return function() {\n return method.apply(this.doc, arguments);\n };\n }(Doc.prototype[prop]);\n eventMixin(Doc);\n CodeMirror.inputStyles = {\n \"textarea\": TextareaInput,\n \"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 CodeMirror.defineMIME = defineMIME;\n // Minimal default mode.\n CodeMirror.defineMode(\"null\", function() {\n return {\n token: function(stream) {\n return stream.skipToEnd();\n }\n };\n });\n CodeMirror.defineMIME(\"text/plain\", \"null\");\n // EXTENSIONS\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 CodeMirror.fromTextArea = fromTextArea;\n addLegacyProps(CodeMirror);\n CodeMirror.version = \"5.65.12\";\n return CodeMirror;\n});\n\n});\n\nparcelRequire(\"kiHo9\");\n\n// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n(function(mod) {\n mod((parcelRequire(\"kiHo9\")));\n})(function(CodeMirror) {\n var ie_lt8 = /MSIE \\d/.test(navigator.userAgent) && (document.documentMode == null || document.documentMode < 8);\n var Pos = CodeMirror.Pos;\n var matching = {\n \"(\": \")>\",\n \")\": \"(<\",\n \"[\": \"]>\",\n \"]\": \"[<\",\n \"{\": \"}>\",\n \"}\": \"{<\",\n \"<\": \">>\",\n \">\": \"<<\"\n };\n function bracketRegex(config) {\n return config && config.bracketRegex || /[(){}[\\]]/;\n }\n function findMatchingBracket(cm, where, config) {\n var line = cm.getLineHandle(where.line), pos = where.ch - 1;\n var afterCursor = config && config.afterCursor;\n if (afterCursor == null) afterCursor = /(^| )cm-fat-cursor($| )/.test(cm.getWrapperElement().className);\n var re = bracketRegex(config);\n // A cursor is defined as between two characters, but in in vim command mode\n // (i.e. not insert mode), the cursor is visually represented as a\n // highlighted box on top of the 2nd character. Otherwise, we allow matches\n // from before or after the cursor.\n var match = !afterCursor && pos >= 0 && re.test(line.text.charAt(pos)) && matching[line.text.charAt(pos)] || re.test(line.text.charAt(pos + 1)) && matching[line.text.charAt(++pos)];\n if (!match) return null;\n var dir = match.charAt(1) == \">\" ? 1 : -1;\n if (config && config.strict && dir > 0 != (pos == where.ch)) return null;\n var style = cm.getTokenTypeAt(Pos(where.line, pos + 1));\n var found = scanForBracket(cm, Pos(where.line, pos + (dir > 0 ? 1 : 0)), dir, style, config);\n if (found == null) return null;\n return {\n from: Pos(where.line, pos),\n to: found && found.pos,\n match: found && found.ch == match.charAt(0),\n forward: dir > 0\n };\n }\n // bracketRegex is used to specify which type of bracket to scan\n // should be a regexp, e.g. /[[\\]]/\n //\n // Note: If \"where\" is on an open bracket, then this bracket is ignored.\n //\n // Returns false when no bracket was found, null when it reached\n // maxScanLines and gave up\n function scanForBracket(cm, where, dir, style, config) {\n var maxScanLen = config && config.maxScanLineLength || 10000;\n var maxScanLines = config && config.maxScanLines || 1000;\n var stack = [];\n var re = bracketRegex(config);\n var lineEnd = dir > 0 ? Math.min(where.line + maxScanLines, cm.lastLine() + 1) : Math.max(cm.firstLine() - 1, where.line - maxScanLines);\n for(var lineNo = where.line; lineNo != lineEnd; lineNo += dir){\n var line = cm.getLine(lineNo);\n if (!line) continue;\n var pos = dir > 0 ? 0 : line.length - 1, end = dir > 0 ? line.length : -1;\n if (line.length > maxScanLen) continue;\n if (lineNo == where.line) pos = where.ch - (dir < 0 ? 1 : 0);\n for(; pos != end; pos += dir){\n var ch = line.charAt(pos);\n if (re.test(ch) && (style === undefined || (cm.getTokenTypeAt(Pos(lineNo, pos + 1)) || \"\") == (style || \"\"))) {\n var match = matching[ch];\n if (match && match.charAt(1) == \">\" == dir > 0) stack.push(ch);\n else if (!stack.length) return {\n pos: Pos(lineNo, pos),\n ch: ch\n };\n else stack.pop();\n }\n }\n }\n return lineNo - dir == (dir > 0 ? cm.lastLine() : cm.firstLine()) ? false : null;\n }\n function matchBrackets(cm, autoclear, config) {\n // Disable brace matching in long lines, since it'll cause hugely slow updates\n var maxHighlightLen = cm.state.matchBrackets.maxHighlightLineLength || 1000, highlightNonMatching = config && config.highlightNonMatching;\n var marks = [], ranges = cm.listSelections();\n for(var i = 0; i < ranges.length; i++){\n var match = ranges[i].empty() && findMatchingBracket(cm, ranges[i].head, config);\n if (match && (match.match || highlightNonMatching !== false) && cm.getLine(match.from.line).length <= maxHighlightLen) {\n var style = match.match ? \"CodeMirror-matchingbracket\" : \"CodeMirror-nonmatchingbracket\";\n marks.push(cm.markText(match.from, Pos(match.from.line, match.from.ch + 1), {\n className: style\n }));\n if (match.to && cm.getLine(match.to.line).length <= maxHighlightLen) marks.push(cm.markText(match.to, Pos(match.to.line, match.to.ch + 1), {\n className: style\n }));\n }\n }\n if (marks.length) {\n // Kludge to work around the IE bug from issue #1193, where text\n // input stops going to the textarea whenever this fires.\n if (ie_lt8 && cm.state.focused) cm.focus();\n var clear = function() {\n cm.operation(function() {\n for(var i = 0; i < marks.length; i++)marks[i].clear();\n });\n };\n if (autoclear) setTimeout(clear, 800);\n else return clear;\n }\n }\n function doMatchBrackets(cm) {\n cm.operation(function() {\n if (cm.state.matchBrackets.currentlyHighlighted) {\n cm.state.matchBrackets.currentlyHighlighted();\n cm.state.matchBrackets.currentlyHighlighted = null;\n }\n cm.state.matchBrackets.currentlyHighlighted = matchBrackets(cm, false, cm.state.matchBrackets);\n });\n }\n function clearHighlighted(cm) {\n if (cm.state.matchBrackets && cm.state.matchBrackets.currentlyHighlighted) {\n cm.state.matchBrackets.currentlyHighlighted();\n cm.state.matchBrackets.currentlyHighlighted = null;\n }\n }\n CodeMirror.defineOption(\"matchBrackets\", false, function(cm, val, old) {\n if (old && old != CodeMirror.Init) {\n cm.off(\"cursorActivity\", doMatchBrackets);\n cm.off(\"focus\", doMatchBrackets);\n cm.off(\"blur\", clearHighlighted);\n clearHighlighted(cm);\n }\n if (val) {\n cm.state.matchBrackets = typeof val == \"object\" ? val : {};\n cm.on(\"cursorActivity\", doMatchBrackets);\n cm.on(\"focus\", doMatchBrackets);\n cm.on(\"blur\", clearHighlighted);\n }\n });\n CodeMirror.defineExtension(\"matchBrackets\", function() {\n matchBrackets(this, true);\n });\n CodeMirror.defineExtension(\"findMatchingBracket\", function(pos, config, oldConfig) {\n // Backwards-compatibility kludge\n if (oldConfig || typeof config == \"boolean\") {\n if (!oldConfig) config = config ? {\n strict: true\n } : null;\n else {\n oldConfig.strict = config;\n config = oldConfig;\n }\n }\n return findMatchingBracket(this, pos, config);\n });\n CodeMirror.defineExtension(\"scanForBracket\", function(pos, dir, style, config) {\n return scanForBracket(this, pos, dir, style, config);\n });\n});\n\n\n\n// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n(function(mod) {\n mod((parcelRequire(\"kiHo9\")));\n})(function(CodeMirror) {\n var defaults = {\n pairs: \"()[]{}''\\\"\\\"\",\n closeBefore: \")]}'\\\":;>\",\n triples: \"\",\n explode: \"[]{}\"\n };\n var Pos = CodeMirror.Pos;\n CodeMirror.defineOption(\"autoCloseBrackets\", false, function(cm, val, old) {\n if (old && old != CodeMirror.Init) {\n cm.removeKeyMap(keyMap);\n cm.state.closeBrackets = null;\n }\n if (val) {\n ensureBound(getOption(val, \"pairs\"));\n cm.state.closeBrackets = val;\n cm.addKeyMap(keyMap);\n }\n });\n function getOption(conf, name) {\n if (name == \"pairs\" && typeof conf == \"string\") return conf;\n if (typeof conf == \"object\" && conf[name] != null) return conf[name];\n return defaults[name];\n }\n var keyMap = {\n Backspace: handleBackspace,\n Enter: handleEnter\n };\n function ensureBound(chars) {\n for(var i = 0; i < chars.length; i++){\n var ch = chars.charAt(i), key = \"'\" + ch + \"'\";\n if (!keyMap[key]) keyMap[key] = handler(ch);\n }\n }\n ensureBound(defaults.pairs + \"`\");\n function handler(ch) {\n return function(cm) {\n return handleChar(cm, ch);\n };\n }\n function getConfig(cm) {\n var deflt = cm.state.closeBrackets;\n if (!deflt || deflt.override) return deflt;\n var mode = cm.getModeAt(cm.getCursor());\n return mode.closeBrackets || deflt;\n }\n function handleBackspace(cm) {\n var conf = getConfig(cm);\n if (!conf || cm.getOption(\"disableInput\")) return CodeMirror.Pass;\n var pairs = getOption(conf, \"pairs\");\n var ranges = cm.listSelections();\n for(var i = 0; i < ranges.length; i++){\n if (!ranges[i].empty()) return CodeMirror.Pass;\n var around = charsAround(cm, ranges[i].head);\n if (!around || pairs.indexOf(around) % 2 != 0) return CodeMirror.Pass;\n }\n for(var i = ranges.length - 1; i >= 0; i--){\n var cur = ranges[i].head;\n cm.replaceRange(\"\", Pos(cur.line, cur.ch - 1), Pos(cur.line, cur.ch + 1), \"+delete\");\n }\n }\n function handleEnter(cm) {\n var conf = getConfig(cm);\n var explode = conf && getOption(conf, \"explode\");\n if (!explode || cm.getOption(\"disableInput\")) return CodeMirror.Pass;\n var ranges = cm.listSelections();\n for(var i = 0; i < ranges.length; i++){\n if (!ranges[i].empty()) return CodeMirror.Pass;\n var around = charsAround(cm, ranges[i].head);\n if (!around || explode.indexOf(around) % 2 != 0) return CodeMirror.Pass;\n }\n cm.operation(function() {\n var linesep = cm.lineSeparator() || \"\\n\";\n cm.replaceSelection(linesep + linesep, null);\n moveSel(cm, -1);\n ranges = cm.listSelections();\n for(var i = 0; i < ranges.length; i++){\n var line = ranges[i].head.line;\n cm.indentLine(line, null, true);\n cm.indentLine(line + 1, null, true);\n }\n });\n }\n function moveSel(cm, dir) {\n var newRanges = [], ranges = cm.listSelections(), primary = 0;\n for(var i = 0; i < ranges.length; i++){\n var range = ranges[i];\n if (range.head == cm.getCursor()) primary = i;\n var pos = range.head.ch || dir > 0 ? {\n line: range.head.line,\n ch: range.head.ch + dir\n } : {\n line: range.head.line - 1\n };\n newRanges.push({\n anchor: pos,\n head: pos\n });\n }\n cm.setSelections(newRanges, primary);\n }\n function contractSelection(sel) {\n var inverted = CodeMirror.cmpPos(sel.anchor, sel.head) > 0;\n return {\n anchor: new Pos(sel.anchor.line, sel.anchor.ch + (inverted ? -1 : 1)),\n head: new Pos(sel.head.line, sel.head.ch + (inverted ? 1 : -1))\n };\n }\n function handleChar(cm, ch) {\n var conf = getConfig(cm);\n if (!conf || cm.getOption(\"disableInput\")) return CodeMirror.Pass;\n var pairs = getOption(conf, \"pairs\");\n var pos = pairs.indexOf(ch);\n if (pos == -1) return CodeMirror.Pass;\n var closeBefore = getOption(conf, \"closeBefore\");\n var triples = getOption(conf, \"triples\");\n var identical = pairs.charAt(pos + 1) == ch;\n var ranges = cm.listSelections();\n var opening = pos % 2 == 0;\n var type;\n for(var i = 0; i < ranges.length; i++){\n var range = ranges[i], cur = range.head, curType;\n var next = cm.getRange(cur, Pos(cur.line, cur.ch + 1));\n if (opening && !range.empty()) curType = \"surround\";\n else if ((identical || !opening) && next == ch) {\n if (identical && stringStartsAfter(cm, cur)) curType = \"both\";\n else if (triples.indexOf(ch) >= 0 && cm.getRange(cur, Pos(cur.line, cur.ch + 3)) == ch + ch + ch) curType = \"skipThree\";\n else curType = \"skip\";\n } else if (identical && cur.ch > 1 && triples.indexOf(ch) >= 0 && cm.getRange(Pos(cur.line, cur.ch - 2), cur) == ch + ch) {\n if (cur.ch > 2 && /\\bstring/.test(cm.getTokenTypeAt(Pos(cur.line, cur.ch - 2)))) return CodeMirror.Pass;\n curType = \"addFour\";\n } else if (identical) {\n var prev = cur.ch == 0 ? \" \" : cm.getRange(Pos(cur.line, cur.ch - 1), cur);\n if (!CodeMirror.isWordChar(next) && prev != ch && !CodeMirror.isWordChar(prev)) curType = \"both\";\n else return CodeMirror.Pass;\n } else if (opening && (next.length === 0 || /\\s/.test(next) || closeBefore.indexOf(next) > -1)) curType = \"both\";\n else return CodeMirror.Pass;\n if (!type) type = curType;\n else if (type != curType) return CodeMirror.Pass;\n }\n var left = pos % 2 ? pairs.charAt(pos - 1) : ch;\n var right = pos % 2 ? ch : pairs.charAt(pos + 1);\n cm.operation(function() {\n if (type == \"skip\") moveSel(cm, 1);\n else if (type == \"skipThree\") moveSel(cm, 3);\n else if (type == \"surround\") {\n var sels = cm.getSelections();\n for(var i = 0; i < sels.length; i++)sels[i] = left + sels[i] + right;\n cm.replaceSelections(sels, \"around\");\n sels = cm.listSelections().slice();\n for(var i = 0; i < sels.length; i++)sels[i] = contractSelection(sels[i]);\n cm.setSelections(sels);\n } else if (type == \"both\") {\n cm.replaceSelection(left + right, null);\n cm.triggerElectric(left + right);\n moveSel(cm, -1);\n } else if (type == \"addFour\") {\n cm.replaceSelection(left + left + left + left, \"before\");\n moveSel(cm, 1);\n }\n });\n }\n function charsAround(cm, pos) {\n var str = cm.getRange(Pos(pos.line, pos.ch - 1), Pos(pos.line, pos.ch + 1));\n return str.length == 2 ? str : null;\n }\n function stringStartsAfter(cm, pos) {\n var token = cm.getTokenAt(Pos(pos.line, pos.ch + 1));\n return /\\bstring/.test(token.type) && token.start == pos.ch && (pos.ch == 0 || !/\\bstring/.test(cm.getTokenTypeAt(pos)));\n }\n});\n\n\n\n// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/5/LICENSE\n(function(mod) {\n mod((parcelRequire(\"kiHo9\")));\n})(function(CodeMirror) {\n \"use strict\";\n function wordObj(words) {\n var o = {};\n for(var i = 0, e = words.length; i < e; ++i)o[words[i]] = true;\n return o;\n }\n var keywordList = [\n \"alias\",\n \"and\",\n \"BEGIN\",\n \"begin\",\n \"break\",\n \"case\",\n \"class\",\n \"def\",\n \"defined?\",\n \"do\",\n \"else\",\n \"elsif\",\n \"END\",\n \"end\",\n \"ensure\",\n \"false\",\n \"for\",\n \"if\",\n \"in\",\n \"module\",\n \"next\",\n \"not\",\n \"or\",\n \"redo\",\n \"rescue\",\n \"retry\",\n \"return\",\n \"self\",\n \"super\",\n \"then\",\n \"true\",\n \"undef\",\n \"unless\",\n \"until\",\n \"when\",\n \"while\",\n \"yield\",\n \"nil\",\n \"raise\",\n \"throw\",\n \"catch\",\n \"fail\",\n \"loop\",\n \"callcc\",\n \"caller\",\n \"lambda\",\n \"proc\",\n \"public\",\n \"protected\",\n \"private\",\n \"require\",\n \"load\",\n \"require_relative\",\n \"extend\",\n \"autoload\",\n \"__END__\",\n \"__FILE__\",\n \"__LINE__\",\n \"__dir__\"\n ], keywords = wordObj(keywordList);\n var indentWords = wordObj([\n \"def\",\n \"class\",\n \"case\",\n \"for\",\n \"while\",\n \"until\",\n \"module\",\n \"catch\",\n \"loop\",\n \"proc\",\n \"begin\"\n ]);\n var dedentWords = wordObj([\n \"end\",\n \"until\"\n ]);\n var opening = {\n \"[\": \"]\",\n \"{\": \"}\",\n \"(\": \")\"\n };\n var closing = {\n \"]\": \"[\",\n \"}\": \"{\",\n \")\": \"(\"\n };\n CodeMirror.defineMode(\"ruby\", function(config) {\n var curPunc;\n function chain(newtok, stream, state) {\n state.tokenize.push(newtok);\n return newtok(stream, state);\n }\n function tokenBase(stream, state) {\n if (stream.sol() && stream.match(\"=begin\") && stream.eol()) {\n state.tokenize.push(readBlockComment);\n return \"comment\";\n }\n if (stream.eatSpace()) return null;\n var ch = stream.next(), m;\n if (ch == \"`\" || ch == \"'\" || ch == '\"') return chain(readQuoted(ch, \"string\", ch == '\"' || ch == \"`\"), stream, state);\n else if (ch == \"/\") {\n if (regexpAhead(stream)) return chain(readQuoted(ch, \"string-2\", true), stream, state);\n else return \"operator\";\n } else if (ch == \"%\") {\n var style = \"string\", embed = true;\n if (stream.eat(\"s\")) style = \"atom\";\n else if (stream.eat(/[WQ]/)) style = \"string\";\n else if (stream.eat(/[r]/)) style = \"string-2\";\n else if (stream.eat(/[wxq]/)) {\n style = \"string\";\n embed = false;\n }\n var delim = stream.eat(/[^\\w\\s=]/);\n if (!delim) return \"operator\";\n if (opening.propertyIsEnumerable(delim)) delim = opening[delim];\n return chain(readQuoted(delim, style, embed, true), stream, state);\n } else if (ch == \"#\") {\n stream.skipToEnd();\n return \"comment\";\n } else if (ch == \"<\" && (m = stream.match(/^<([-~])[\\`\\\"\\']?([a-zA-Z_?]\\w*)[\\`\\\"\\']?(?:;|$)/))) return chain(readHereDoc(m[2], m[1]), stream, state);\n else if (ch == \"0\") {\n if (stream.eat(\"x\")) stream.eatWhile(/[\\da-fA-F]/);\n else if (stream.eat(\"b\")) stream.eatWhile(/[01]/);\n else stream.eatWhile(/[0-7]/);\n return \"number\";\n } else if (/\\d/.test(ch)) {\n stream.match(/^[\\d_]*(?:\\.[\\d_]+)?(?:[eE][+\\-]?[\\d_]+)?/);\n return \"number\";\n } else if (ch == \"?\") {\n while(stream.match(/^\\\\[CM]-/));\n if (stream.eat(\"\\\\\")) stream.eatWhile(/\\w/);\n else stream.next();\n return \"string\";\n } else if (ch == \":\") {\n if (stream.eat(\"'\")) return chain(readQuoted(\"'\", \"atom\", false), stream, state);\n if (stream.eat('\"')) return chain(readQuoted('\"', \"atom\", true), stream, state);\n // :> :>> :< :<< are valid symbols\n if (stream.eat(/[\\<\\>]/)) {\n stream.eat(/[\\<\\>]/);\n return \"atom\";\n }\n // :+ :- :/ :* :| :& :! are valid symbols\n if (stream.eat(/[\\+\\-\\*\\/\\&\\|\\:\\!]/)) return \"atom\";\n // Symbols can't start by a digit\n if (stream.eat(/[a-zA-Z$@_\\xa1-\\uffff]/)) {\n stream.eatWhile(/[\\w$\\xa1-\\uffff]/);\n // Only one ? ! = is allowed and only as the last character\n stream.eat(/[\\?\\!\\=]/);\n return \"atom\";\n }\n return \"operator\";\n } else if (ch == \"@\" && stream.match(/^@?[a-zA-Z_\\xa1-\\uffff]/)) {\n stream.eat(\"@\");\n stream.eatWhile(/[\\w\\xa1-\\uffff]/);\n return \"variable-2\";\n } else if (ch == \"$\") {\n if (stream.eat(/[a-zA-Z_]/)) stream.eatWhile(/[\\w]/);\n else if (stream.eat(/\\d/)) stream.eat(/\\d/);\n else stream.next(); // Must be a special global like $: or $!\n return \"variable-3\";\n } else if (/[a-zA-Z_\\xa1-\\uffff]/.test(ch)) {\n stream.eatWhile(/[\\w\\xa1-\\uffff]/);\n stream.eat(/[\\?\\!]/);\n if (stream.eat(\":\")) return \"atom\";\n return \"ident\";\n } else if (ch == \"|\" && (state.varList || state.lastTok == \"{\" || state.lastTok == \"do\")) {\n curPunc = \"|\";\n return null;\n } else if (/[\\(\\)\\[\\]{}\\\\;]/.test(ch)) {\n curPunc = ch;\n return null;\n } else if (ch == \"-\" && stream.eat(\">\")) return \"arrow\";\n else if (/[=+\\-\\/*:\\.^%<>~|]/.test(ch)) {\n var more = stream.eatWhile(/[=+\\-\\/*:\\.^%<>~|]/);\n if (ch == \".\" && !more) curPunc = \".\";\n return \"operator\";\n } else return null;\n }\n function regexpAhead(stream) {\n var start = stream.pos, depth = 0, next, found = false, escaped = false;\n while((next = stream.next()) != null)if (!escaped) {\n if (\"[{(\".indexOf(next) > -1) depth++;\n else if (\"]})\".indexOf(next) > -1) {\n depth--;\n if (depth < 0) break;\n } else if (next == \"/\" && depth == 0) {\n found = true;\n break;\n }\n escaped = next == \"\\\\\";\n } else escaped = false;\n stream.backUp(stream.pos - start);\n return found;\n }\n function tokenBaseUntilBrace(depth) {\n if (!depth) depth = 1;\n return function(stream, state) {\n if (stream.peek() == \"}\") {\n if (depth == 1) {\n state.tokenize.pop();\n return state.tokenize[state.tokenize.length - 1](stream, state);\n } else state.tokenize[state.tokenize.length - 1] = tokenBaseUntilBrace(depth - 1);\n } else if (stream.peek() == \"{\") state.tokenize[state.tokenize.length - 1] = tokenBaseUntilBrace(depth + 1);\n return tokenBase(stream, state);\n };\n }\n function tokenBaseOnce() {\n var alreadyCalled = false;\n return function(stream, state) {\n if (alreadyCalled) {\n state.tokenize.pop();\n return state.tokenize[state.tokenize.length - 1](stream, state);\n }\n alreadyCalled = true;\n return tokenBase(stream, state);\n };\n }\n function readQuoted(quote, style, embed, unescaped) {\n return function(stream, state) {\n var escaped = false, ch;\n if (state.context.type === \"read-quoted-paused\") {\n state.context = state.context.prev;\n stream.eat(\"}\");\n }\n while((ch = stream.next()) != null){\n if (ch == quote && (unescaped || !escaped)) {\n state.tokenize.pop();\n break;\n }\n if (embed && ch == \"#\" && !escaped) {\n if (stream.eat(\"{\")) {\n if (quote == \"}\") state.context = {\n prev: state.context,\n type: \"read-quoted-paused\"\n };\n state.tokenize.push(tokenBaseUntilBrace());\n break;\n } else if (/[@\\$]/.test(stream.peek())) {\n state.tokenize.push(tokenBaseOnce());\n break;\n }\n }\n escaped = !escaped && ch == \"\\\\\";\n }\n return style;\n };\n }\n function readHereDoc(phrase, mayIndent) {\n return function(stream, state) {\n if (mayIndent) stream.eatSpace();\n if (stream.match(phrase)) state.tokenize.pop();\n else stream.skipToEnd();\n return \"string\";\n };\n }\n function readBlockComment(stream, state) {\n if (stream.sol() && stream.match(\"=end\") && stream.eol()) state.tokenize.pop();\n stream.skipToEnd();\n return \"comment\";\n }\n return {\n startState: function() {\n return {\n tokenize: [\n tokenBase\n ],\n indented: 0,\n context: {\n type: \"top\",\n indented: -config.indentUnit\n },\n continuedLine: false,\n lastTok: null,\n varList: false\n };\n },\n token: function(stream, state) {\n curPunc = null;\n if (stream.sol()) state.indented = stream.indentation();\n var style = state.tokenize[state.tokenize.length - 1](stream, state), kwtype;\n var thisTok = curPunc;\n if (style == \"ident\") {\n var word = stream.current();\n style = state.lastTok == \".\" ? \"property\" : keywords.propertyIsEnumerable(stream.current()) ? \"keyword\" : /^[A-Z]/.test(word) ? \"tag\" : state.lastTok == \"def\" || state.lastTok == \"class\" || state.varList ? \"def\" : \"variable\";\n if (style == \"keyword\") {\n thisTok = word;\n if (indentWords.propertyIsEnumerable(word)) kwtype = \"indent\";\n else if (dedentWords.propertyIsEnumerable(word)) kwtype = \"dedent\";\n else if ((word == \"if\" || word == \"unless\") && stream.column() == stream.indentation()) kwtype = \"indent\";\n else if (word == \"do\" && state.context.indented < state.indented) kwtype = \"indent\";\n }\n }\n if (curPunc || style && style != \"comment\") state.lastTok = thisTok;\n if (curPunc == \"|\") state.varList = !state.varList;\n if (kwtype == \"indent\" || /[\\(\\[\\{]/.test(curPunc)) state.context = {\n prev: state.context,\n type: curPunc || style,\n indented: state.indented\n };\n else if ((kwtype == \"dedent\" || /[\\)\\]\\}]/.test(curPunc)) && state.context.prev) state.context = state.context.prev;\n if (stream.eol()) state.continuedLine = curPunc == \"\\\\\" || style == \"operator\";\n return style;\n },\n indent: function(state, textAfter) {\n if (state.tokenize[state.tokenize.length - 1] != tokenBase) return CodeMirror.Pass;\n var firstChar = textAfter && textAfter.charAt(0);\n var ct = state.context;\n var closed = ct.type == closing[firstChar] || ct.type == \"keyword\" && /^(?:end|until|else|elsif|when|rescue)\\b/.test(textAfter);\n return ct.indented + (closed ? 0 : config.indentUnit) + (state.continuedLine ? config.indentUnit : 0);\n },\n electricInput: /^\\s*(?:end|rescue|elsif|else|\\})$/,\n lineComment: \"#\",\n fold: \"indent\"\n };\n });\n CodeMirror.defineMIME(\"text/x-ruby\", \"ruby\");\n CodeMirror.registerHelper(\"hintWords\", \"ruby\", keywordList);\n});\n\n\n/*!\n * Bootstrap v5.3.3 (https://getbootstrap.com/)\n * Copyright 2011-2024 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */ var $d37552697cc5ea39$exports = {};\n\n$parcel$export($d37552697cc5ea39$exports, \"popperGenerator\", () => $b3c2fd6800546b4b$export$ed5e13716264f202);\n$parcel$export($d37552697cc5ea39$exports, \"detectOverflow\", () => $f765731200b57f98$export$2e2bcd8739ae039);\n$parcel$export($d37552697cc5ea39$exports, \"createPopperBase\", () => $b3c2fd6800546b4b$export$8f7491d57c8f97a9);\n$parcel$export($d37552697cc5ea39$exports, \"createPopper\", () => $1bf0bf541303046d$export$8f7491d57c8f97a9);\n$parcel$export($d37552697cc5ea39$exports, \"createPopperLite\", () => $cff5cce2532d9fa1$export$8f7491d57c8f97a9);\nvar $f5c54167a3c62105$exports = {};\n\n$parcel$export($f5c54167a3c62105$exports, \"top\", () => $f5c54167a3c62105$export$1e95b668f3b82d);\n$parcel$export($f5c54167a3c62105$exports, \"bottom\", () => $f5c54167a3c62105$export$40e543e69a8b3fbb);\n$parcel$export($f5c54167a3c62105$exports, \"right\", () => $f5c54167a3c62105$export$79ffe56a765070d2);\n$parcel$export($f5c54167a3c62105$exports, \"left\", () => $f5c54167a3c62105$export$eabcd2c8791e7bf4);\n$parcel$export($f5c54167a3c62105$exports, \"auto\", () => $f5c54167a3c62105$export$dfb5619354ba860);\n$parcel$export($f5c54167a3c62105$exports, \"basePlacements\", () => $f5c54167a3c62105$export$aec2ce47c367b8c3);\n$parcel$export($f5c54167a3c62105$exports, \"start\", () => $f5c54167a3c62105$export$b3571188c770cc5a);\n$parcel$export($f5c54167a3c62105$exports, \"end\", () => $f5c54167a3c62105$export$bd5df0f255a350f8);\n$parcel$export($f5c54167a3c62105$exports, \"clippingParents\", () => $f5c54167a3c62105$export$390fd549c5303b4d);\n$parcel$export($f5c54167a3c62105$exports, \"viewport\", () => $f5c54167a3c62105$export$d7b7311ec04a3e8f);\n$parcel$export($f5c54167a3c62105$exports, \"popper\", () => $f5c54167a3c62105$export$ae5ab1c730825774);\n$parcel$export($f5c54167a3c62105$exports, \"reference\", () => $f5c54167a3c62105$export$ca50aac9f3ba507f);\n$parcel$export($f5c54167a3c62105$exports, \"variationPlacements\", () => $f5c54167a3c62105$export$368f9a87e87fa4e1);\n$parcel$export($f5c54167a3c62105$exports, \"placements\", () => $f5c54167a3c62105$export$803cd8101b6c182b);\n$parcel$export($f5c54167a3c62105$exports, \"beforeRead\", () => $f5c54167a3c62105$export$421679a7c3d56e);\n$parcel$export($f5c54167a3c62105$exports, \"read\", () => $f5c54167a3c62105$export$aafa59e2e03f2942);\n$parcel$export($f5c54167a3c62105$exports, \"afterRead\", () => $f5c54167a3c62105$export$6964f6c886723980);\n$parcel$export($f5c54167a3c62105$exports, \"beforeMain\", () => $f5c54167a3c62105$export$c65e99957a05207c);\n$parcel$export($f5c54167a3c62105$exports, \"main\", () => $f5c54167a3c62105$export$f22da7240b7add18);\n$parcel$export($f5c54167a3c62105$exports, \"afterMain\", () => $f5c54167a3c62105$export$bab79516f2d662fe);\n$parcel$export($f5c54167a3c62105$exports, \"beforeWrite\", () => $f5c54167a3c62105$export$8d4d2d70e7d46032);\n$parcel$export($f5c54167a3c62105$exports, \"write\", () => $f5c54167a3c62105$export$68d8715fc104d294);\n$parcel$export($f5c54167a3c62105$exports, \"afterWrite\", () => $f5c54167a3c62105$export$70a6e5159acce2e6);\n$parcel$export($f5c54167a3c62105$exports, \"modifierPhases\", () => $f5c54167a3c62105$export$d087d3878fdf71d5);\nvar $f5c54167a3c62105$export$1e95b668f3b82d = \"top\";\nvar $f5c54167a3c62105$export$40e543e69a8b3fbb = \"bottom\";\nvar $f5c54167a3c62105$export$79ffe56a765070d2 = \"right\";\nvar $f5c54167a3c62105$export$eabcd2c8791e7bf4 = \"left\";\nvar $f5c54167a3c62105$export$dfb5619354ba860 = \"auto\";\nvar $f5c54167a3c62105$export$aec2ce47c367b8c3 = [\n $f5c54167a3c62105$export$1e95b668f3b82d,\n $f5c54167a3c62105$export$40e543e69a8b3fbb,\n $f5c54167a3c62105$export$79ffe56a765070d2,\n $f5c54167a3c62105$export$eabcd2c8791e7bf4\n];\nvar $f5c54167a3c62105$export$b3571188c770cc5a = \"start\";\nvar $f5c54167a3c62105$export$bd5df0f255a350f8 = \"end\";\nvar $f5c54167a3c62105$export$390fd549c5303b4d = \"clippingParents\";\nvar $f5c54167a3c62105$export$d7b7311ec04a3e8f = \"viewport\";\nvar $f5c54167a3c62105$export$ae5ab1c730825774 = \"popper\";\nvar $f5c54167a3c62105$export$ca50aac9f3ba507f = \"reference\";\nvar $f5c54167a3c62105$export$368f9a87e87fa4e1 = /*#__PURE__*/ $f5c54167a3c62105$export$aec2ce47c367b8c3.reduce(function(acc, placement) {\n return acc.concat([\n placement + \"-\" + $f5c54167a3c62105$export$b3571188c770cc5a,\n placement + \"-\" + $f5c54167a3c62105$export$bd5df0f255a350f8\n ]);\n}, []);\nvar $f5c54167a3c62105$export$803cd8101b6c182b = /*#__PURE__*/ [].concat($f5c54167a3c62105$export$aec2ce47c367b8c3, [\n $f5c54167a3c62105$export$dfb5619354ba860\n]).reduce(function(acc, placement) {\n return acc.concat([\n placement,\n placement + \"-\" + $f5c54167a3c62105$export$b3571188c770cc5a,\n placement + \"-\" + $f5c54167a3c62105$export$bd5df0f255a350f8\n ]);\n}, []); // modifiers that need to read the DOM\nvar $f5c54167a3c62105$export$421679a7c3d56e = \"beforeRead\";\nvar $f5c54167a3c62105$export$aafa59e2e03f2942 = \"read\";\nvar $f5c54167a3c62105$export$6964f6c886723980 = \"afterRead\"; // pure-logic modifiers\nvar $f5c54167a3c62105$export$c65e99957a05207c = \"beforeMain\";\nvar $f5c54167a3c62105$export$f22da7240b7add18 = \"main\";\nvar $f5c54167a3c62105$export$bab79516f2d662fe = \"afterMain\"; // modifier with the purpose to write to the DOM (or write into a framework state)\nvar $f5c54167a3c62105$export$8d4d2d70e7d46032 = \"beforeWrite\";\nvar $f5c54167a3c62105$export$68d8715fc104d294 = \"write\";\nvar $f5c54167a3c62105$export$70a6e5159acce2e6 = \"afterWrite\";\nvar $f5c54167a3c62105$export$d087d3878fdf71d5 = [\n $f5c54167a3c62105$export$421679a7c3d56e,\n $f5c54167a3c62105$export$aafa59e2e03f2942,\n $f5c54167a3c62105$export$6964f6c886723980,\n $f5c54167a3c62105$export$c65e99957a05207c,\n $f5c54167a3c62105$export$f22da7240b7add18,\n $f5c54167a3c62105$export$bab79516f2d662fe,\n $f5c54167a3c62105$export$8d4d2d70e7d46032,\n $f5c54167a3c62105$export$68d8715fc104d294,\n $f5c54167a3c62105$export$70a6e5159acce2e6\n];\n\n\nvar $1341d386dda6ba3e$exports = {};\n\n$parcel$export($1341d386dda6ba3e$exports, \"applyStyles\", () => $83c1fc4c4e58d7dd$export$2e2bcd8739ae039);\n$parcel$export($1341d386dda6ba3e$exports, \"arrow\", () => $1992f2d714808ab6$export$2e2bcd8739ae039);\n$parcel$export($1341d386dda6ba3e$exports, \"computeStyles\", () => $c8f8eadcf7685dc5$export$2e2bcd8739ae039);\n$parcel$export($1341d386dda6ba3e$exports, \"eventListeners\", () => $ff355aafd082b0cd$export$2e2bcd8739ae039);\n$parcel$export($1341d386dda6ba3e$exports, \"flip\", () => $b1f32a1d9525a032$export$2e2bcd8739ae039);\n$parcel$export($1341d386dda6ba3e$exports, \"hide\", () => $174d14927bb4f43b$export$2e2bcd8739ae039);\n$parcel$export($1341d386dda6ba3e$exports, \"offset\", () => $7c04da2e958a3fe8$export$2e2bcd8739ae039);\n$parcel$export($1341d386dda6ba3e$exports, \"popperOffsets\", () => $e92fb10df1450f31$export$2e2bcd8739ae039);\n$parcel$export($1341d386dda6ba3e$exports, \"preventOverflow\", () => $3295dac8746ffe59$export$2e2bcd8739ae039);\nfunction $4f30cf0ce50e075e$export$2e2bcd8739ae039(element) {\n return element ? (element.nodeName || \"\").toLowerCase() : null;\n}\n\n\nfunction $df9341392e6ed7b1$export$2e2bcd8739ae039(node) {\n if (node == null) return window;\n if (node.toString() !== \"[object Window]\") {\n var ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n return node;\n}\n\n\nfunction $d98cb23738a6d9d0$export$45a5e7f76e0caa8d(node) {\n var OwnElement = (0, $df9341392e6ed7b1$export$2e2bcd8739ae039)(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n}\nfunction $d98cb23738a6d9d0$export$1b3bfaa9684536aa(node) {\n var OwnElement = (0, $df9341392e6ed7b1$export$2e2bcd8739ae039)(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n}\nfunction $d98cb23738a6d9d0$export$af51f0f06c0f328a(node) {\n // IE 11 has no ShadowRoot\n if (typeof ShadowRoot === \"undefined\") return false;\n var OwnElement = (0, $df9341392e6ed7b1$export$2e2bcd8739ae039)(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\n\n// and applies them to the HTMLElements such as popper and arrow\nfunction $83c1fc4c4e58d7dd$var$applyStyles(_ref) {\n var state = _ref.state;\n Object.keys(state.elements).forEach(function(name) {\n var style = state.styles[name] || {};\n var attributes = state.attributes[name] || {};\n var element = state.elements[name]; // arrow is optional + virtual elements\n if (!(0, $d98cb23738a6d9d0$export$1b3bfaa9684536aa)(element) || !(0, $4f30cf0ce50e075e$export$2e2bcd8739ae039)(element)) return;\n // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe[cannot-write]\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function(name) {\n var value = attributes[name];\n if (value === false) element.removeAttribute(name);\n else element.setAttribute(name, value === true ? \"\" : value);\n });\n });\n}\nfunction $83c1fc4c4e58d7dd$var$effect(_ref2) {\n var state = _ref2.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: \"0\",\n top: \"0\",\n margin: \"0\"\n },\n arrow: {\n position: \"absolute\"\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n state.styles = initialStyles;\n if (state.elements.arrow) Object.assign(state.elements.arrow.style, initialStyles.arrow);\n return function() {\n Object.keys(state.elements).forEach(function(name) {\n var element = state.elements[name];\n var attributes = state.attributes[name] || {};\n var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n var style = styleProperties.reduce(function(style, property) {\n style[property] = \"\";\n return style;\n }, {}); // arrow is optional + virtual elements\n if (!(0, $d98cb23738a6d9d0$export$1b3bfaa9684536aa)(element) || !(0, $4f30cf0ce50e075e$export$2e2bcd8739ae039)(element)) return;\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function(attribute) {\n element.removeAttribute(attribute);\n });\n });\n };\n} // eslint-disable-next-line import/no-unused-modules\nvar $83c1fc4c4e58d7dd$export$2e2bcd8739ae039 = {\n name: \"applyStyles\",\n enabled: true,\n phase: \"write\",\n fn: $83c1fc4c4e58d7dd$var$applyStyles,\n effect: $83c1fc4c4e58d7dd$var$effect,\n requires: [\n \"computeStyles\"\n ]\n};\n\n\n\nfunction $afe288682115fde3$export$2e2bcd8739ae039(placement) {\n return placement.split(\"-\")[0];\n}\n\n\n\nvar $7e23bad950468b82$export$8960430cfd85939f = Math.max;\nvar $7e23bad950468b82$export$96ec731ed4dcb222 = Math.min;\nvar $7e23bad950468b82$export$2077e0241d6afd3c = Math.round;\n\n\n\nfunction $90ccbd5892233dd2$export$2e2bcd8739ae039() {\n var uaData = navigator.userAgentData;\n if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) return uaData.brands.map(function(item) {\n return item.brand + \"/\" + item.version;\n }).join(\" \");\n return navigator.userAgent;\n}\n\n\nfunction $993d40d65cc118cd$export$2e2bcd8739ae039() {\n return !/^((?!chrome|android).)*safari/i.test((0, $90ccbd5892233dd2$export$2e2bcd8739ae039)());\n}\n\n\nfunction $84019ab652aa921b$export$2e2bcd8739ae039(element, includeScale, isFixedStrategy) {\n if (includeScale === void 0) includeScale = false;\n if (isFixedStrategy === void 0) isFixedStrategy = false;\n var clientRect = element.getBoundingClientRect();\n var scaleX = 1;\n var scaleY = 1;\n if (includeScale && (0, $d98cb23738a6d9d0$export$1b3bfaa9684536aa)(element)) {\n scaleX = element.offsetWidth > 0 ? (0, $7e23bad950468b82$export$2077e0241d6afd3c)(clientRect.width) / element.offsetWidth || 1 : 1;\n scaleY = element.offsetHeight > 0 ? (0, $7e23bad950468b82$export$2077e0241d6afd3c)(clientRect.height) / element.offsetHeight || 1 : 1;\n }\n var _ref = (0, $d98cb23738a6d9d0$export$45a5e7f76e0caa8d)(element) ? (0, $df9341392e6ed7b1$export$2e2bcd8739ae039)(element) : window, visualViewport = _ref.visualViewport;\n var addVisualOffsets = !(0, $993d40d65cc118cd$export$2e2bcd8739ae039)() && isFixedStrategy;\n var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;\n var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;\n var width = clientRect.width / scaleX;\n var height = clientRect.height / scaleY;\n return {\n width: width,\n height: height,\n top: y,\n right: x + width,\n bottom: y + height,\n left: x,\n x: x,\n y: y\n };\n}\n\n\nfunction $30ced62b744c6cfe$export$2e2bcd8739ae039(element) {\n var clientRect = (0, $84019ab652aa921b$export$2e2bcd8739ae039)(element); // Use the clientRect sizes if it's not been transformed.\n // Fixes https://github.com/popperjs/popper-core/issues/1223\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n if (Math.abs(clientRect.width - width) <= 1) width = clientRect.width;\n if (Math.abs(clientRect.height - height) <= 1) height = clientRect.height;\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: width,\n height: height\n };\n}\n\n\n\nfunction $d63950b756706495$export$2e2bcd8739ae039(parent, child) {\n var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n if (parent.contains(child)) return true;\n else if (rootNode && (0, $d98cb23738a6d9d0$export$af51f0f06c0f328a)(rootNode)) {\n var next = child;\n do {\n if (next && parent.isSameNode(next)) return true;\n // $FlowFixMe[prop-missing]: need a better way to handle this...\n next = next.parentNode || next.host;\n }while (next);\n } // Give up, the result is false\n return false;\n}\n\n\n\n\n\nfunction $41cae7042543c5d5$export$2e2bcd8739ae039(element) {\n return (0, $df9341392e6ed7b1$export$2e2bcd8739ae039)(element).getComputedStyle(element);\n}\n\n\n\n\nfunction $6829c22fb01dde5a$export$2e2bcd8739ae039(element) {\n return [\n \"table\",\n \"td\",\n \"th\"\n ].indexOf((0, $4f30cf0ce50e075e$export$2e2bcd8739ae039)(element)) >= 0;\n}\n\n\n\n\nfunction $433af39bc2fae35d$export$2e2bcd8739ae039(element) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return (((0, $d98cb23738a6d9d0$export$45a5e7f76e0caa8d)(element) ? element.ownerDocument : element.document) || window.document).documentElement;\n}\n\n\n\nfunction $17f6a21d28fc02f5$export$2e2bcd8739ae039(element) {\n if ((0, $4f30cf0ce50e075e$export$2e2bcd8739ae039)(element) === \"html\") return element;\n return(// $FlowFixMe[incompatible-return]\n // $FlowFixMe[prop-missing]\n element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n element.parentNode || ((0, $d98cb23738a6d9d0$export$af51f0f06c0f328a)(element) ? element.host : null) || // ShadowRoot detected\n // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n (0, $433af39bc2fae35d$export$2e2bcd8739ae039)(element) // fallback\n );\n}\n\n\n\nfunction $a56b734280245ffb$var$getTrueOffsetParent(element) {\n if (!(0, $d98cb23738a6d9d0$export$1b3bfaa9684536aa)(element) || // https://github.com/popperjs/popper-core/issues/837\n (0, $41cae7042543c5d5$export$2e2bcd8739ae039)(element).position === \"fixed\") return null;\n return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\nfunction $a56b734280245ffb$var$getContainingBlock(element) {\n var isFirefox = /firefox/i.test((0, $90ccbd5892233dd2$export$2e2bcd8739ae039)());\n var isIE = /Trident/i.test((0, $90ccbd5892233dd2$export$2e2bcd8739ae039)());\n if (isIE && (0, $d98cb23738a6d9d0$export$1b3bfaa9684536aa)(element)) {\n // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n var elementCss = (0, $41cae7042543c5d5$export$2e2bcd8739ae039)(element);\n if (elementCss.position === \"fixed\") return null;\n }\n var currentNode = (0, $17f6a21d28fc02f5$export$2e2bcd8739ae039)(element);\n if ((0, $d98cb23738a6d9d0$export$af51f0f06c0f328a)(currentNode)) currentNode = currentNode.host;\n while((0, $d98cb23738a6d9d0$export$1b3bfaa9684536aa)(currentNode) && [\n \"html\",\n \"body\"\n ].indexOf((0, $4f30cf0ce50e075e$export$2e2bcd8739ae039)(currentNode)) < 0){\n var css = (0, $41cae7042543c5d5$export$2e2bcd8739ae039)(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n if (css.transform !== \"none\" || css.perspective !== \"none\" || css.contain === \"paint\" || [\n \"transform\",\n \"perspective\"\n ].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === \"filter\" || isFirefox && css.filter && css.filter !== \"none\") return currentNode;\n else currentNode = currentNode.parentNode;\n }\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\nfunction $a56b734280245ffb$export$2e2bcd8739ae039(element) {\n var window = (0, $df9341392e6ed7b1$export$2e2bcd8739ae039)(element);\n var offsetParent = $a56b734280245ffb$var$getTrueOffsetParent(element);\n while(offsetParent && (0, $6829c22fb01dde5a$export$2e2bcd8739ae039)(offsetParent) && (0, $41cae7042543c5d5$export$2e2bcd8739ae039)(offsetParent).position === \"static\")offsetParent = $a56b734280245ffb$var$getTrueOffsetParent(offsetParent);\n if (offsetParent && ((0, $4f30cf0ce50e075e$export$2e2bcd8739ae039)(offsetParent) === \"html\" || (0, $4f30cf0ce50e075e$export$2e2bcd8739ae039)(offsetParent) === \"body\" && (0, $41cae7042543c5d5$export$2e2bcd8739ae039)(offsetParent).position === \"static\")) return window;\n return offsetParent || $a56b734280245ffb$var$getContainingBlock(element) || window;\n}\n\n\nfunction $b518c35b71cf930f$export$2e2bcd8739ae039(placement) {\n return [\n \"top\",\n \"bottom\"\n ].indexOf(placement) >= 0 ? \"x\" : \"y\";\n}\n\n\n\nfunction $b6f0b0266e764faa$export$f28d906d67a997f3(min, value, max) {\n return (0, $7e23bad950468b82$export$8960430cfd85939f)(min, (0, $7e23bad950468b82$export$96ec731ed4dcb222)(value, max));\n}\nfunction $b6f0b0266e764faa$export$86c8af6d3ef0b4a(min, value, max) {\n var v = $b6f0b0266e764faa$export$f28d906d67a997f3(min, value, max);\n return v > max ? max : v;\n}\n\n\nfunction $683c5e26d5f8bfe5$export$2e2bcd8739ae039() {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n}\n\n\nfunction $387b887da02b7e69$export$2e2bcd8739ae039(paddingObject) {\n return Object.assign({}, (0, $683c5e26d5f8bfe5$export$2e2bcd8739ae039)(), paddingObject);\n}\n\n\nfunction $4d11a6decde23bf9$export$2e2bcd8739ae039(value, keys) {\n return keys.reduce(function(hashMap, key) {\n hashMap[key] = value;\n return hashMap;\n }, {});\n}\n\n\n\nvar $1992f2d714808ab6$var$toPaddingObject = function toPaddingObject(padding, state) {\n padding = typeof padding === \"function\" ? padding(Object.assign({}, state.rects, {\n placement: state.placement\n })) : padding;\n return (0, $387b887da02b7e69$export$2e2bcd8739ae039)(typeof padding !== \"number\" ? padding : (0, $4d11a6decde23bf9$export$2e2bcd8739ae039)(padding, (0, $f5c54167a3c62105$export$aec2ce47c367b8c3)));\n};\nfunction $1992f2d714808ab6$var$arrow(_ref) {\n var _state$modifiersData$;\n var state = _ref.state, name = _ref.name, options = _ref.options;\n var arrowElement = state.elements.arrow;\n var popperOffsets = state.modifiersData.popperOffsets;\n var basePlacement = (0, $afe288682115fde3$export$2e2bcd8739ae039)(state.placement);\n var axis = (0, $b518c35b71cf930f$export$2e2bcd8739ae039)(basePlacement);\n var isVertical = [\n (0, $f5c54167a3c62105$export$eabcd2c8791e7bf4),\n (0, $f5c54167a3c62105$export$79ffe56a765070d2)\n ].indexOf(basePlacement) >= 0;\n var len = isVertical ? \"height\" : \"width\";\n if (!arrowElement || !popperOffsets) return;\n var paddingObject = $1992f2d714808ab6$var$toPaddingObject(options.padding, state);\n var arrowRect = (0, $30ced62b744c6cfe$export$2e2bcd8739ae039)(arrowElement);\n var minProp = axis === \"y\" ? (0, $f5c54167a3c62105$export$1e95b668f3b82d) : (0, $f5c54167a3c62105$export$eabcd2c8791e7bf4);\n var maxProp = axis === \"y\" ? (0, $f5c54167a3c62105$export$40e543e69a8b3fbb) : (0, $f5c54167a3c62105$export$79ffe56a765070d2);\n var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n var arrowOffsetParent = (0, $a56b734280245ffb$export$2e2bcd8739ae039)(arrowElement);\n var clientSize = arrowOffsetParent ? axis === \"y\" ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n // outside of the popper bounds\n var min = paddingObject[minProp];\n var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n var offset = (0, $b6f0b0266e764faa$export$f28d906d67a997f3)(min, center, max); // Prevents breaking syntax highlighting...\n var axisProp = axis;\n state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\nfunction $1992f2d714808ab6$var$effect(_ref2) {\n var state = _ref2.state, options = _ref2.options;\n var _options$element = options.element, arrowElement = _options$element === void 0 ? \"[data-popper-arrow]\" : _options$element;\n if (arrowElement == null) return;\n // CSS selector\n if (typeof arrowElement === \"string\") {\n arrowElement = state.elements.popper.querySelector(arrowElement);\n if (!arrowElement) return;\n }\n if (!(0, $d63950b756706495$export$2e2bcd8739ae039)(state.elements.popper, arrowElement)) return;\n state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\nvar $1992f2d714808ab6$export$2e2bcd8739ae039 = {\n name: \"arrow\",\n enabled: true,\n phase: \"main\",\n fn: $1992f2d714808ab6$var$arrow,\n effect: $1992f2d714808ab6$var$effect,\n requires: [\n \"popperOffsets\"\n ],\n requiresIfExists: [\n \"preventOverflow\"\n ]\n};\n\n\n\n\n\n\n\n\nfunction $7b08f0526e425773$export$2e2bcd8739ae039(placement) {\n return placement.split(\"-\")[1];\n}\n\n\n\nvar $c8f8eadcf7685dc5$var$unsetSides = {\n top: \"auto\",\n right: \"auto\",\n bottom: \"auto\",\n left: \"auto\"\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\nfunction $c8f8eadcf7685dc5$var$roundOffsetsByDPR(_ref, win) {\n var x = _ref.x, y = _ref.y;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: (0, $7e23bad950468b82$export$2077e0241d6afd3c)(x * dpr) / dpr || 0,\n y: (0, $7e23bad950468b82$export$2077e0241d6afd3c)(y * dpr) / dpr || 0\n };\n}\nfunction $c8f8eadcf7685dc5$export$378fa78a8fea596f(_ref2) {\n var _Object$assign2;\n var popper = _ref2.popper, popperRect = _ref2.popperRect, placement = _ref2.placement, variation = _ref2.variation, offsets = _ref2.offsets, position = _ref2.position, gpuAcceleration = _ref2.gpuAcceleration, adaptive = _ref2.adaptive, roundOffsets = _ref2.roundOffsets, isFixed = _ref2.isFixed;\n var _offsets$x = offsets.x, x = _offsets$x === void 0 ? 0 : _offsets$x, _offsets$y = offsets.y, y = _offsets$y === void 0 ? 0 : _offsets$y;\n var _ref3 = typeof roundOffsets === \"function\" ? roundOffsets({\n x: x,\n y: y\n }) : {\n x: x,\n y: y\n };\n x = _ref3.x;\n y = _ref3.y;\n var hasX = offsets.hasOwnProperty(\"x\");\n var hasY = offsets.hasOwnProperty(\"y\");\n var sideX = (0, $f5c54167a3c62105$export$eabcd2c8791e7bf4);\n var sideY = (0, $f5c54167a3c62105$export$1e95b668f3b82d);\n var win = window;\n if (adaptive) {\n var offsetParent = (0, $a56b734280245ffb$export$2e2bcd8739ae039)(popper);\n var heightProp = \"clientHeight\";\n var widthProp = \"clientWidth\";\n if (offsetParent === (0, $df9341392e6ed7b1$export$2e2bcd8739ae039)(popper)) {\n offsetParent = (0, $433af39bc2fae35d$export$2e2bcd8739ae039)(popper);\n if ((0, $41cae7042543c5d5$export$2e2bcd8739ae039)(offsetParent).position !== \"static\" && position === \"absolute\") {\n heightProp = \"scrollHeight\";\n widthProp = \"scrollWidth\";\n }\n } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n offsetParent;\n if (placement === (0, $f5c54167a3c62105$export$1e95b668f3b82d) || (placement === (0, $f5c54167a3c62105$export$eabcd2c8791e7bf4) || placement === (0, $f5c54167a3c62105$export$79ffe56a765070d2)) && variation === (0, $f5c54167a3c62105$export$bd5df0f255a350f8)) {\n sideY = (0, $f5c54167a3c62105$export$40e543e69a8b3fbb);\n var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : offsetParent[heightProp];\n y -= offsetY - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n if (placement === (0, $f5c54167a3c62105$export$eabcd2c8791e7bf4) || (placement === (0, $f5c54167a3c62105$export$1e95b668f3b82d) || placement === (0, $f5c54167a3c62105$export$40e543e69a8b3fbb)) && variation === (0, $f5c54167a3c62105$export$bd5df0f255a350f8)) {\n sideX = (0, $f5c54167a3c62105$export$79ffe56a765070d2);\n var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : offsetParent[widthProp];\n x -= offsetX - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n var commonStyles = Object.assign({\n position: position\n }, adaptive && $c8f8eadcf7685dc5$var$unsetSides);\n var _ref4 = roundOffsets === true ? $c8f8eadcf7685dc5$var$roundOffsetsByDPR({\n x: x,\n y: y\n }, (0, $df9341392e6ed7b1$export$2e2bcd8739ae039)(popper)) : {\n x: x,\n y: y\n };\n x = _ref4.x;\n y = _ref4.y;\n if (gpuAcceleration) {\n var _Object$assign;\n return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? \"0\" : \"\", _Object$assign[sideX] = hasX ? \"0\" : \"\", _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n }\n return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : \"\", _Object$assign2[sideX] = hasX ? x + \"px\" : \"\", _Object$assign2.transform = \"\", _Object$assign2));\n}\nfunction $c8f8eadcf7685dc5$var$computeStyles(_ref5) {\n var state = _ref5.state, options = _ref5.options;\n var _options$gpuAccelerat = options.gpuAcceleration, gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat, _options$adaptive = options.adaptive, adaptive = _options$adaptive === void 0 ? true : _options$adaptive, _options$roundOffsets = options.roundOffsets, roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n var commonStyles = {\n placement: (0, $afe288682115fde3$export$2e2bcd8739ae039)(state.placement),\n variation: (0, $7b08f0526e425773$export$2e2bcd8739ae039)(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration: gpuAcceleration,\n isFixed: state.options.strategy === \"fixed\"\n };\n if (state.modifiersData.popperOffsets != null) state.styles.popper = Object.assign({}, state.styles.popper, $c8f8eadcf7685dc5$export$378fa78a8fea596f(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive: adaptive,\n roundOffsets: roundOffsets\n })));\n if (state.modifiersData.arrow != null) state.styles.arrow = Object.assign({}, state.styles.arrow, $c8f8eadcf7685dc5$export$378fa78a8fea596f(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.arrow,\n position: \"absolute\",\n adaptive: false,\n roundOffsets: roundOffsets\n })));\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n \"data-popper-placement\": state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\nvar $c8f8eadcf7685dc5$export$2e2bcd8739ae039 = {\n name: \"computeStyles\",\n enabled: true,\n phase: \"beforeWrite\",\n fn: $c8f8eadcf7685dc5$var$computeStyles,\n data: {}\n};\n\n\n\nvar $ff355aafd082b0cd$var$passive = {\n passive: true\n};\nfunction $ff355aafd082b0cd$var$effect(_ref) {\n var state = _ref.state, instance = _ref.instance, options = _ref.options;\n var _options$scroll = options.scroll, scroll = _options$scroll === void 0 ? true : _options$scroll, _options$resize = options.resize, resize = _options$resize === void 0 ? true : _options$resize;\n var window = (0, $df9341392e6ed7b1$export$2e2bcd8739ae039)(state.elements.popper);\n var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n if (scroll) scrollParents.forEach(function(scrollParent) {\n scrollParent.addEventListener(\"scroll\", instance.update, $ff355aafd082b0cd$var$passive);\n });\n if (resize) window.addEventListener(\"resize\", instance.update, $ff355aafd082b0cd$var$passive);\n return function() {\n if (scroll) scrollParents.forEach(function(scrollParent) {\n scrollParent.removeEventListener(\"scroll\", instance.update, $ff355aafd082b0cd$var$passive);\n });\n if (resize) window.removeEventListener(\"resize\", instance.update, $ff355aafd082b0cd$var$passive);\n };\n} // eslint-disable-next-line import/no-unused-modules\nvar $ff355aafd082b0cd$export$2e2bcd8739ae039 = {\n name: \"eventListeners\",\n enabled: true,\n phase: \"write\",\n fn: function fn() {},\n effect: $ff355aafd082b0cd$var$effect,\n data: {}\n};\n\n\nvar $825ae98fe4f5d029$var$hash = {\n left: \"right\",\n right: \"left\",\n bottom: \"top\",\n top: \"bottom\"\n};\nfunction $825ae98fe4f5d029$export$2e2bcd8739ae039(placement) {\n return placement.replace(/left|right|bottom|top/g, function(matched) {\n return $825ae98fe4f5d029$var$hash[matched];\n });\n}\n\n\n\nvar $76c023b5f4bd6339$var$hash = {\n start: \"end\",\n end: \"start\"\n};\nfunction $76c023b5f4bd6339$export$2e2bcd8739ae039(placement) {\n return placement.replace(/start|end/g, function(matched) {\n return $76c023b5f4bd6339$var$hash[matched];\n });\n}\n\n\n\n\n\n\n\n\nfunction $68a584be1dc90596$export$2e2bcd8739ae039(node) {\n var win = (0, $df9341392e6ed7b1$export$2e2bcd8739ae039)(node);\n var scrollLeft = win.pageXOffset;\n var scrollTop = win.pageYOffset;\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n}\n\n\nfunction $943aee5c7065ad53$export$2e2bcd8739ae039(element) {\n // If has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n // Popper 1 is broken in this case and never had a bug report so let's assume\n // it's not an issue. I don't think anyone ever specifies width on \n // anyway.\n // Browsers where the left scrollbar doesn't cause an issue report `0` for\n // this (e.g. Edge 2019, IE11, Safari)\n return (0, $84019ab652aa921b$export$2e2bcd8739ae039)((0, $433af39bc2fae35d$export$2e2bcd8739ae039)(element)).left + (0, $68a584be1dc90596$export$2e2bcd8739ae039)(element).scrollLeft;\n}\n\n\n\nfunction $7b0a0ce1fa68929f$export$2e2bcd8739ae039(element, strategy) {\n var win = (0, $df9341392e6ed7b1$export$2e2bcd8739ae039)(element);\n var html = (0, $433af39bc2fae35d$export$2e2bcd8739ae039)(element);\n var visualViewport = win.visualViewport;\n var width = html.clientWidth;\n var height = html.clientHeight;\n var x = 0;\n var y = 0;\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n var layoutViewport = (0, $993d40d65cc118cd$export$2e2bcd8739ae039)();\n if (layoutViewport || !layoutViewport && strategy === \"fixed\") {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n return {\n width: width,\n height: height,\n x: x + (0, $943aee5c7065ad53$export$2e2bcd8739ae039)(element),\n y: y\n };\n}\n\n\n\n\n\n\n\nfunction $3e70615fb3e74824$export$2e2bcd8739ae039(element) {\n var _element$ownerDocumen;\n var html = (0, $433af39bc2fae35d$export$2e2bcd8739ae039)(element);\n var winScroll = (0, $68a584be1dc90596$export$2e2bcd8739ae039)(element);\n var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n var width = (0, $7e23bad950468b82$export$8960430cfd85939f)(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n var height = (0, $7e23bad950468b82$export$8960430cfd85939f)(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n var x = -winScroll.scrollLeft + (0, $943aee5c7065ad53$export$2e2bcd8739ae039)(element);\n var y = -winScroll.scrollTop;\n if ((0, $41cae7042543c5d5$export$2e2bcd8739ae039)(body || html).direction === \"rtl\") x += (0, $7e23bad950468b82$export$8960430cfd85939f)(html.clientWidth, body ? body.clientWidth : 0) - width;\n return {\n width: width,\n height: height,\n x: x,\n y: y\n };\n}\n\n\n\n\nfunction $18583dfdff147fd4$export$2e2bcd8739ae039(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n var _getComputedStyle = (0, $41cae7042543c5d5$export$2e2bcd8739ae039)(element), overflow = _getComputedStyle.overflow, overflowX = _getComputedStyle.overflowX, overflowY = _getComputedStyle.overflowY;\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}\n\n\n\n\nfunction $3eb5703c925e0e5d$export$2e2bcd8739ae039(node) {\n if ([\n \"html\",\n \"body\",\n \"#document\"\n ].indexOf((0, $4f30cf0ce50e075e$export$2e2bcd8739ae039)(node)) >= 0) // $FlowFixMe[incompatible-return]: assume body is always available\n return node.ownerDocument.body;\n if ((0, $d98cb23738a6d9d0$export$1b3bfaa9684536aa)(node) && (0, $18583dfdff147fd4$export$2e2bcd8739ae039)(node)) return node;\n return $3eb5703c925e0e5d$export$2e2bcd8739ae039((0, $17f6a21d28fc02f5$export$2e2bcd8739ae039)(node));\n}\n\n\n\n\n\nfunction $a621d360f1a81b88$export$2e2bcd8739ae039(element, list) {\n var _element$ownerDocumen;\n if (list === void 0) list = [];\n var scrollParent = (0, $3eb5703c925e0e5d$export$2e2bcd8739ae039)(element);\n var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n var win = (0, $df9341392e6ed7b1$export$2e2bcd8739ae039)(scrollParent);\n var target = isBody ? [\n win\n ].concat(win.visualViewport || [], (0, $18583dfdff147fd4$export$2e2bcd8739ae039)(scrollParent) ? scrollParent : []) : scrollParent;\n var updatedList = list.concat(target);\n return isBody ? updatedList : updatedList.concat($a621d360f1a81b88$export$2e2bcd8739ae039((0, $17f6a21d28fc02f5$export$2e2bcd8739ae039)(target)));\n}\n\n\n\n\n\n\n\n\n\n\nfunction $b0d5f0927fb8bf5c$export$2e2bcd8739ae039(rect) {\n return Object.assign({}, rect, {\n left: rect.x,\n top: rect.y,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n });\n}\n\n\n\nfunction $631049efb60e96c6$var$getInnerBoundingClientRect(element, strategy) {\n var rect = (0, $84019ab652aa921b$export$2e2bcd8739ae039)(element, false, strategy === \"fixed\");\n rect.top = rect.top + element.clientTop;\n rect.left = rect.left + element.clientLeft;\n rect.bottom = rect.top + element.clientHeight;\n rect.right = rect.left + element.clientWidth;\n rect.width = element.clientWidth;\n rect.height = element.clientHeight;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\nfunction $631049efb60e96c6$var$getClientRectFromMixedType(element, clippingParent, strategy) {\n return clippingParent === (0, $f5c54167a3c62105$export$d7b7311ec04a3e8f) ? (0, $b0d5f0927fb8bf5c$export$2e2bcd8739ae039)((0, $7b0a0ce1fa68929f$export$2e2bcd8739ae039)(element, strategy)) : (0, $d98cb23738a6d9d0$export$45a5e7f76e0caa8d)(clippingParent) ? $631049efb60e96c6$var$getInnerBoundingClientRect(clippingParent, strategy) : (0, $b0d5f0927fb8bf5c$export$2e2bcd8739ae039)((0, $3e70615fb3e74824$export$2e2bcd8739ae039)((0, $433af39bc2fae35d$export$2e2bcd8739ae039)(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\nfunction $631049efb60e96c6$var$getClippingParents(element) {\n var clippingParents = (0, $a621d360f1a81b88$export$2e2bcd8739ae039)((0, $17f6a21d28fc02f5$export$2e2bcd8739ae039)(element));\n var canEscapeClipping = [\n \"absolute\",\n \"fixed\"\n ].indexOf((0, $41cae7042543c5d5$export$2e2bcd8739ae039)(element).position) >= 0;\n var clipperElement = canEscapeClipping && (0, $d98cb23738a6d9d0$export$1b3bfaa9684536aa)(element) ? (0, $a56b734280245ffb$export$2e2bcd8739ae039)(element) : element;\n if (!(0, $d98cb23738a6d9d0$export$45a5e7f76e0caa8d)(clipperElement)) return [];\n // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n return clippingParents.filter(function(clippingParent) {\n return (0, $d98cb23738a6d9d0$export$45a5e7f76e0caa8d)(clippingParent) && (0, $d63950b756706495$export$2e2bcd8739ae039)(clippingParent, clipperElement) && (0, $4f30cf0ce50e075e$export$2e2bcd8739ae039)(clippingParent) !== \"body\";\n });\n} // Gets the maximum area that the element is visible in due to any number of\nfunction $631049efb60e96c6$export$2e2bcd8739ae039(element, boundary, rootBoundary, strategy) {\n var mainClippingParents = boundary === \"clippingParents\" ? $631049efb60e96c6$var$getClippingParents(element) : [].concat(boundary);\n var clippingParents = [].concat(mainClippingParents, [\n rootBoundary\n ]);\n var firstClippingParent = clippingParents[0];\n var clippingRect = clippingParents.reduce(function(accRect, clippingParent) {\n var rect = $631049efb60e96c6$var$getClientRectFromMixedType(element, clippingParent, strategy);\n accRect.top = (0, $7e23bad950468b82$export$8960430cfd85939f)(rect.top, accRect.top);\n accRect.right = (0, $7e23bad950468b82$export$96ec731ed4dcb222)(rect.right, accRect.right);\n accRect.bottom = (0, $7e23bad950468b82$export$96ec731ed4dcb222)(rect.bottom, accRect.bottom);\n accRect.left = (0, $7e23bad950468b82$export$8960430cfd85939f)(rect.left, accRect.left);\n return accRect;\n }, $631049efb60e96c6$var$getClientRectFromMixedType(element, firstClippingParent, strategy));\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n return clippingRect;\n}\n\n\n\n\n\n\n\n\nfunction $03cba2f7a1498b5f$export$2e2bcd8739ae039(_ref) {\n var reference = _ref.reference, element = _ref.element, placement = _ref.placement;\n var basePlacement = placement ? (0, $afe288682115fde3$export$2e2bcd8739ae039)(placement) : null;\n var variation = placement ? (0, $7b08f0526e425773$export$2e2bcd8739ae039)(placement) : null;\n var commonX = reference.x + reference.width / 2 - element.width / 2;\n var commonY = reference.y + reference.height / 2 - element.height / 2;\n var offsets;\n switch(basePlacement){\n case 0, $f5c54167a3c62105$export$1e95b668f3b82d:\n offsets = {\n x: commonX,\n y: reference.y - element.height\n };\n break;\n case 0, $f5c54167a3c62105$export$40e543e69a8b3fbb:\n offsets = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n case 0, $f5c54167a3c62105$export$79ffe56a765070d2:\n offsets = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n case 0, $f5c54167a3c62105$export$eabcd2c8791e7bf4:\n offsets = {\n x: reference.x - element.width,\n y: commonY\n };\n break;\n default:\n offsets = {\n x: reference.x,\n y: reference.y\n };\n }\n var mainAxis = basePlacement ? (0, $b518c35b71cf930f$export$2e2bcd8739ae039)(basePlacement) : null;\n if (mainAxis != null) {\n var len = mainAxis === \"y\" ? \"height\" : \"width\";\n switch(variation){\n case 0, $f5c54167a3c62105$export$b3571188c770cc5a:\n offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n break;\n case 0, $f5c54167a3c62105$export$bd5df0f255a350f8:\n offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n break;\n default:\n }\n }\n return offsets;\n}\n\n\n\n\n\n\n\nfunction $f765731200b57f98$export$2e2bcd8739ae039(state, options) {\n if (options === void 0) options = {};\n var _options = options, _options$placement = _options.placement, placement = _options$placement === void 0 ? state.placement : _options$placement, _options$strategy = _options.strategy, strategy = _options$strategy === void 0 ? state.strategy : _options$strategy, _options$boundary = _options.boundary, boundary = _options$boundary === void 0 ? (0, $f5c54167a3c62105$export$390fd549c5303b4d) : _options$boundary, _options$rootBoundary = _options.rootBoundary, rootBoundary = _options$rootBoundary === void 0 ? (0, $f5c54167a3c62105$export$d7b7311ec04a3e8f) : _options$rootBoundary, _options$elementConte = _options.elementContext, elementContext = _options$elementConte === void 0 ? (0, $f5c54167a3c62105$export$ae5ab1c730825774) : _options$elementConte, _options$altBoundary = _options.altBoundary, altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary, _options$padding = _options.padding, padding = _options$padding === void 0 ? 0 : _options$padding;\n var paddingObject = (0, $387b887da02b7e69$export$2e2bcd8739ae039)(typeof padding !== \"number\" ? padding : (0, $4d11a6decde23bf9$export$2e2bcd8739ae039)(padding, (0, $f5c54167a3c62105$export$aec2ce47c367b8c3)));\n var altContext = elementContext === (0, $f5c54167a3c62105$export$ae5ab1c730825774) ? (0, $f5c54167a3c62105$export$ca50aac9f3ba507f) : (0, $f5c54167a3c62105$export$ae5ab1c730825774);\n var popperRect = state.rects.popper;\n var element = state.elements[altBoundary ? altContext : elementContext];\n var clippingClientRect = (0, $631049efb60e96c6$export$2e2bcd8739ae039)((0, $d98cb23738a6d9d0$export$45a5e7f76e0caa8d)(element) ? element : element.contextElement || (0, $433af39bc2fae35d$export$2e2bcd8739ae039)(state.elements.popper), boundary, rootBoundary, strategy);\n var referenceClientRect = (0, $84019ab652aa921b$export$2e2bcd8739ae039)(state.elements.reference);\n var popperOffsets = (0, $03cba2f7a1498b5f$export$2e2bcd8739ae039)({\n reference: referenceClientRect,\n element: popperRect,\n strategy: \"absolute\",\n placement: placement\n });\n var popperClientRect = (0, $b0d5f0927fb8bf5c$export$2e2bcd8739ae039)(Object.assign({}, popperRect, popperOffsets));\n var elementClientRect = elementContext === (0, $f5c54167a3c62105$export$ae5ab1c730825774) ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n // 0 or negative = within the clipping rect\n var overflowOffsets = {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n };\n var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n if (elementContext === (0, $f5c54167a3c62105$export$ae5ab1c730825774) && offsetData) {\n var offset = offsetData[placement];\n Object.keys(overflowOffsets).forEach(function(key) {\n var multiply = [\n (0, $f5c54167a3c62105$export$79ffe56a765070d2),\n (0, $f5c54167a3c62105$export$40e543e69a8b3fbb)\n ].indexOf(key) >= 0 ? 1 : -1;\n var axis = [\n (0, $f5c54167a3c62105$export$1e95b668f3b82d),\n (0, $f5c54167a3c62105$export$40e543e69a8b3fbb)\n ].indexOf(key) >= 0 ? \"y\" : \"x\";\n overflowOffsets[key] += offset[axis] * multiply;\n });\n }\n return overflowOffsets;\n}\n\n\n\n\n\n\nfunction $dbd70d4ba9902caa$export$2e2bcd8739ae039(state, options) {\n if (options === void 0) options = {};\n var _options = options, placement = _options.placement, boundary = _options.boundary, rootBoundary = _options.rootBoundary, padding = _options.padding, flipVariations = _options.flipVariations, _options$allowedAutoP = _options.allowedAutoPlacements, allowedAutoPlacements = _options$allowedAutoP === void 0 ? (0, $f5c54167a3c62105$export$803cd8101b6c182b) : _options$allowedAutoP;\n var variation = (0, $7b08f0526e425773$export$2e2bcd8739ae039)(placement);\n var placements = variation ? flipVariations ? (0, $f5c54167a3c62105$export$368f9a87e87fa4e1) : (0, $f5c54167a3c62105$export$368f9a87e87fa4e1).filter(function(placement) {\n return (0, $7b08f0526e425773$export$2e2bcd8739ae039)(placement) === variation;\n }) : (0, $f5c54167a3c62105$export$aec2ce47c367b8c3);\n var allowedPlacements = placements.filter(function(placement) {\n return allowedAutoPlacements.indexOf(placement) >= 0;\n });\n if (allowedPlacements.length === 0) allowedPlacements = placements;\n // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n var overflows = allowedPlacements.reduce(function(acc, placement) {\n acc[placement] = (0, $f765731200b57f98$export$2e2bcd8739ae039)(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding\n })[(0, $afe288682115fde3$export$2e2bcd8739ae039)(placement)];\n return acc;\n }, {});\n return Object.keys(overflows).sort(function(a, b) {\n return overflows[a] - overflows[b];\n });\n}\n\n\n\n\nfunction $b1f32a1d9525a032$var$getExpandedFallbackPlacements(placement) {\n if ((0, $afe288682115fde3$export$2e2bcd8739ae039)(placement) === (0, $f5c54167a3c62105$export$dfb5619354ba860)) return [];\n var oppositePlacement = (0, $825ae98fe4f5d029$export$2e2bcd8739ae039)(placement);\n return [\n (0, $76c023b5f4bd6339$export$2e2bcd8739ae039)(placement),\n oppositePlacement,\n (0, $76c023b5f4bd6339$export$2e2bcd8739ae039)(oppositePlacement)\n ];\n}\nfunction $b1f32a1d9525a032$var$flip(_ref) {\n var state = _ref.state, options = _ref.options, name = _ref.name;\n if (state.modifiersData[name]._skip) return;\n var _options$mainAxis = options.mainAxis, checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, _options$altAxis = options.altAxis, checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis, specifiedFallbackPlacements = options.fallbackPlacements, padding = options.padding, boundary = options.boundary, rootBoundary = options.rootBoundary, altBoundary = options.altBoundary, _options$flipVariatio = options.flipVariations, flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio, allowedAutoPlacements = options.allowedAutoPlacements;\n var preferredPlacement = state.options.placement;\n var basePlacement = (0, $afe288682115fde3$export$2e2bcd8739ae039)(preferredPlacement);\n var isBasePlacement = basePlacement === preferredPlacement;\n var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [\n (0, $825ae98fe4f5d029$export$2e2bcd8739ae039)(preferredPlacement)\n ] : $b1f32a1d9525a032$var$getExpandedFallbackPlacements(preferredPlacement));\n var placements = [\n preferredPlacement\n ].concat(fallbackPlacements).reduce(function(acc, placement) {\n return acc.concat((0, $afe288682115fde3$export$2e2bcd8739ae039)(placement) === (0, $f5c54167a3c62105$export$dfb5619354ba860) ? (0, $dbd70d4ba9902caa$export$2e2bcd8739ae039)(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n flipVariations: flipVariations,\n allowedAutoPlacements: allowedAutoPlacements\n }) : placement);\n }, []);\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var checksMap = new Map();\n var makeFallbackChecks = true;\n var firstFittingPlacement = placements[0];\n for(var i = 0; i < placements.length; i++){\n var placement = placements[i];\n var _basePlacement = (0, $afe288682115fde3$export$2e2bcd8739ae039)(placement);\n var isStartVariation = (0, $7b08f0526e425773$export$2e2bcd8739ae039)(placement) === (0, $f5c54167a3c62105$export$b3571188c770cc5a);\n var isVertical = [\n (0, $f5c54167a3c62105$export$1e95b668f3b82d),\n (0, $f5c54167a3c62105$export$40e543e69a8b3fbb)\n ].indexOf(_basePlacement) >= 0;\n var len = isVertical ? \"width\" : \"height\";\n var overflow = (0, $f765731200b57f98$export$2e2bcd8739ae039)(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n altBoundary: altBoundary,\n padding: padding\n });\n var mainVariationSide = isVertical ? isStartVariation ? (0, $f5c54167a3c62105$export$79ffe56a765070d2) : (0, $f5c54167a3c62105$export$eabcd2c8791e7bf4) : isStartVariation ? (0, $f5c54167a3c62105$export$40e543e69a8b3fbb) : (0, $f5c54167a3c62105$export$1e95b668f3b82d);\n if (referenceRect[len] > popperRect[len]) mainVariationSide = (0, $825ae98fe4f5d029$export$2e2bcd8739ae039)(mainVariationSide);\n var altVariationSide = (0, $825ae98fe4f5d029$export$2e2bcd8739ae039)(mainVariationSide);\n var checks = [];\n if (checkMainAxis) checks.push(overflow[_basePlacement] <= 0);\n if (checkAltAxis) checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n if (checks.every(function(check) {\n return check;\n })) {\n firstFittingPlacement = placement;\n makeFallbackChecks = false;\n break;\n }\n checksMap.set(placement, checks);\n }\n if (makeFallbackChecks) {\n // `2` may be desired in some cases – research later\n var numberOfChecks = flipVariations ? 3 : 1;\n var _loop = function _loop(_i) {\n var fittingPlacement = placements.find(function(placement) {\n var checks = checksMap.get(placement);\n if (checks) return checks.slice(0, _i).every(function(check) {\n return check;\n });\n });\n if (fittingPlacement) {\n firstFittingPlacement = fittingPlacement;\n return \"break\";\n }\n };\n for(var _i = numberOfChecks; _i > 0; _i--){\n var _ret = _loop(_i);\n if (_ret === \"break\") break;\n }\n }\n if (state.placement !== firstFittingPlacement) {\n state.modifiersData[name]._skip = true;\n state.placement = firstFittingPlacement;\n state.reset = true;\n }\n} // eslint-disable-next-line import/no-unused-modules\nvar $b1f32a1d9525a032$export$2e2bcd8739ae039 = {\n name: \"flip\",\n enabled: true,\n phase: \"main\",\n fn: $b1f32a1d9525a032$var$flip,\n requiresIfExists: [\n \"offset\"\n ],\n data: {\n _skip: false\n }\n};\n\n\n\n\nfunction $174d14927bb4f43b$var$getSideOffsets(overflow, rect, preventedOffsets) {\n if (preventedOffsets === void 0) preventedOffsets = {\n x: 0,\n y: 0\n };\n return {\n top: overflow.top - rect.height - preventedOffsets.y,\n right: overflow.right - rect.width + preventedOffsets.x,\n bottom: overflow.bottom - rect.height + preventedOffsets.y,\n left: overflow.left - rect.width - preventedOffsets.x\n };\n}\nfunction $174d14927bb4f43b$var$isAnySideFullyClipped(overflow) {\n return [\n (0, $f5c54167a3c62105$export$1e95b668f3b82d),\n (0, $f5c54167a3c62105$export$79ffe56a765070d2),\n (0, $f5c54167a3c62105$export$40e543e69a8b3fbb),\n (0, $f5c54167a3c62105$export$eabcd2c8791e7bf4)\n ].some(function(side) {\n return overflow[side] >= 0;\n });\n}\nfunction $174d14927bb4f43b$var$hide(_ref) {\n var state = _ref.state, name = _ref.name;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var preventedOffsets = state.modifiersData.preventOverflow;\n var referenceOverflow = (0, $f765731200b57f98$export$2e2bcd8739ae039)(state, {\n elementContext: \"reference\"\n });\n var popperAltOverflow = (0, $f765731200b57f98$export$2e2bcd8739ae039)(state, {\n altBoundary: true\n });\n var referenceClippingOffsets = $174d14927bb4f43b$var$getSideOffsets(referenceOverflow, referenceRect);\n var popperEscapeOffsets = $174d14927bb4f43b$var$getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n var isReferenceHidden = $174d14927bb4f43b$var$isAnySideFullyClipped(referenceClippingOffsets);\n var hasPopperEscaped = $174d14927bb4f43b$var$isAnySideFullyClipped(popperEscapeOffsets);\n state.modifiersData[name] = {\n referenceClippingOffsets: referenceClippingOffsets,\n popperEscapeOffsets: popperEscapeOffsets,\n isReferenceHidden: isReferenceHidden,\n hasPopperEscaped: hasPopperEscaped\n };\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n \"data-popper-reference-hidden\": isReferenceHidden,\n \"data-popper-escaped\": hasPopperEscaped\n });\n} // eslint-disable-next-line import/no-unused-modules\nvar $174d14927bb4f43b$export$2e2bcd8739ae039 = {\n name: \"hide\",\n enabled: true,\n phase: \"main\",\n requiresIfExists: [\n \"preventOverflow\"\n ],\n fn: $174d14927bb4f43b$var$hide\n};\n\n\n\n\nfunction $7c04da2e958a3fe8$export$7fa02d8595b015ed(placement, rects, offset) {\n var basePlacement = (0, $afe288682115fde3$export$2e2bcd8739ae039)(placement);\n var invertDistance = [\n (0, $f5c54167a3c62105$export$eabcd2c8791e7bf4),\n (0, $f5c54167a3c62105$export$1e95b668f3b82d)\n ].indexOf(basePlacement) >= 0 ? -1 : 1;\n var _ref = typeof offset === \"function\" ? offset(Object.assign({}, rects, {\n placement: placement\n })) : offset, skidding = _ref[0], distance = _ref[1];\n skidding = skidding || 0;\n distance = (distance || 0) * invertDistance;\n return [\n (0, $f5c54167a3c62105$export$eabcd2c8791e7bf4),\n (0, $f5c54167a3c62105$export$79ffe56a765070d2)\n ].indexOf(basePlacement) >= 0 ? {\n x: distance,\n y: skidding\n } : {\n x: skidding,\n y: distance\n };\n}\nfunction $7c04da2e958a3fe8$var$offset(_ref2) {\n var state = _ref2.state, options = _ref2.options, name = _ref2.name;\n var _options$offset = options.offset, offset = _options$offset === void 0 ? [\n 0,\n 0\n ] : _options$offset;\n var data = (0, $f5c54167a3c62105$export$803cd8101b6c182b).reduce(function(acc, placement) {\n acc[placement] = $7c04da2e958a3fe8$export$7fa02d8595b015ed(placement, state.rects, offset);\n return acc;\n }, {});\n var _data$state$placement = data[state.placement], x = _data$state$placement.x, y = _data$state$placement.y;\n if (state.modifiersData.popperOffsets != null) {\n state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n }\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\nvar $7c04da2e958a3fe8$export$2e2bcd8739ae039 = {\n name: \"offset\",\n enabled: true,\n phase: \"main\",\n requires: [\n \"popperOffsets\"\n ],\n fn: $7c04da2e958a3fe8$var$offset\n};\n\n\n\nfunction $e92fb10df1450f31$var$popperOffsets(_ref) {\n var state = _ref.state, name = _ref.name;\n // Offsets are the actual position the popper needs to have to be\n // properly positioned near its reference element\n // This is the most basic placement, and will be adjusted by\n // the modifiers in the next step\n state.modifiersData[name] = (0, $03cba2f7a1498b5f$export$2e2bcd8739ae039)({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: \"absolute\",\n placement: state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\nvar $e92fb10df1450f31$export$2e2bcd8739ae039 = {\n name: \"popperOffsets\",\n enabled: true,\n phase: \"read\",\n fn: $e92fb10df1450f31$var$popperOffsets,\n data: {}\n};\n\n\n\n\n\nfunction $d8b68132b61080af$export$2e2bcd8739ae039(axis) {\n return axis === \"x\" ? \"y\" : \"x\";\n}\n\n\n\n\n\n\n\n\n\nfunction $3295dac8746ffe59$var$preventOverflow(_ref) {\n var state = _ref.state, options = _ref.options, name = _ref.name;\n var _options$mainAxis = options.mainAxis, checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, _options$altAxis = options.altAxis, checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis, boundary = options.boundary, rootBoundary = options.rootBoundary, altBoundary = options.altBoundary, padding = options.padding, _options$tether = options.tether, tether = _options$tether === void 0 ? true : _options$tether, _options$tetherOffset = options.tetherOffset, tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n var overflow = (0, $f765731200b57f98$export$2e2bcd8739ae039)(state, {\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n altBoundary: altBoundary\n });\n var basePlacement = (0, $afe288682115fde3$export$2e2bcd8739ae039)(state.placement);\n var variation = (0, $7b08f0526e425773$export$2e2bcd8739ae039)(state.placement);\n var isBasePlacement = !variation;\n var mainAxis = (0, $b518c35b71cf930f$export$2e2bcd8739ae039)(basePlacement);\n var altAxis = (0, $d8b68132b61080af$export$2e2bcd8739ae039)(mainAxis);\n var popperOffsets = state.modifiersData.popperOffsets;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var tetherOffsetValue = typeof tetherOffset === \"function\" ? tetherOffset(Object.assign({}, state.rects, {\n placement: state.placement\n })) : tetherOffset;\n var normalizedTetherOffsetValue = typeof tetherOffsetValue === \"number\" ? {\n mainAxis: tetherOffsetValue,\n altAxis: tetherOffsetValue\n } : Object.assign({\n mainAxis: 0,\n altAxis: 0\n }, tetherOffsetValue);\n var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;\n var data = {\n x: 0,\n y: 0\n };\n if (!popperOffsets) return;\n if (checkMainAxis) {\n var _offsetModifierState$;\n var mainSide = mainAxis === \"y\" ? (0, $f5c54167a3c62105$export$1e95b668f3b82d) : (0, $f5c54167a3c62105$export$eabcd2c8791e7bf4);\n var altSide = mainAxis === \"y\" ? (0, $f5c54167a3c62105$export$40e543e69a8b3fbb) : (0, $f5c54167a3c62105$export$79ffe56a765070d2);\n var len = mainAxis === \"y\" ? \"height\" : \"width\";\n var offset = popperOffsets[mainAxis];\n var min = offset + overflow[mainSide];\n var max = offset - overflow[altSide];\n var additive = tether ? -popperRect[len] / 2 : 0;\n var minLen = variation === (0, $f5c54167a3c62105$export$b3571188c770cc5a) ? referenceRect[len] : popperRect[len];\n var maxLen = variation === (0, $f5c54167a3c62105$export$b3571188c770cc5a) ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n // outside the reference bounds\n var arrowElement = state.elements.arrow;\n var arrowRect = tether && arrowElement ? (0, $30ced62b744c6cfe$export$2e2bcd8739ae039)(arrowElement) : {\n width: 0,\n height: 0\n };\n var arrowPaddingObject = state.modifiersData[\"arrow#persistent\"] ? state.modifiersData[\"arrow#persistent\"].padding : (0, $683c5e26d5f8bfe5$export$2e2bcd8739ae039)();\n var arrowPaddingMin = arrowPaddingObject[mainSide];\n var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n // to include its full size in the calculation. If the reference is small\n // and near the edge of a boundary, the popper can overflow even if the\n // reference is not overflowing as well (e.g. virtual elements with no\n // width or height)\n var arrowLen = (0, $b6f0b0266e764faa$export$f28d906d67a997f3)(0, referenceRect[len], arrowRect[len]);\n var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;\n var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;\n var arrowOffsetParent = state.elements.arrow && (0, $a56b734280245ffb$export$2e2bcd8739ae039)(state.elements.arrow);\n var clientOffset = arrowOffsetParent ? mainAxis === \"y\" ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;\n var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;\n var tetherMax = offset + maxOffset - offsetModifierValue;\n var preventedOffset = (0, $b6f0b0266e764faa$export$f28d906d67a997f3)(tether ? (0, $7e23bad950468b82$export$96ec731ed4dcb222)(min, tetherMin) : min, offset, tether ? (0, $7e23bad950468b82$export$8960430cfd85939f)(max, tetherMax) : max);\n popperOffsets[mainAxis] = preventedOffset;\n data[mainAxis] = preventedOffset - offset;\n }\n if (checkAltAxis) {\n var _offsetModifierState$2;\n var _mainSide = mainAxis === \"x\" ? (0, $f5c54167a3c62105$export$1e95b668f3b82d) : (0, $f5c54167a3c62105$export$eabcd2c8791e7bf4);\n var _altSide = mainAxis === \"x\" ? (0, $f5c54167a3c62105$export$40e543e69a8b3fbb) : (0, $f5c54167a3c62105$export$79ffe56a765070d2);\n var _offset = popperOffsets[altAxis];\n var _len = altAxis === \"y\" ? \"height\" : \"width\";\n var _min = _offset + overflow[_mainSide];\n var _max = _offset - overflow[_altSide];\n var isOriginSide = [\n (0, $f5c54167a3c62105$export$1e95b668f3b82d),\n (0, $f5c54167a3c62105$export$eabcd2c8791e7bf4)\n ].indexOf(basePlacement) !== -1;\n var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;\n var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;\n var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;\n var _preventedOffset = tether && isOriginSide ? (0, $b6f0b0266e764faa$export$86c8af6d3ef0b4a)(_tetherMin, _offset, _tetherMax) : (0, $b6f0b0266e764faa$export$f28d906d67a997f3)(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);\n popperOffsets[altAxis] = _preventedOffset;\n data[altAxis] = _preventedOffset - _offset;\n }\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\nvar $3295dac8746ffe59$export$2e2bcd8739ae039 = {\n name: \"preventOverflow\",\n enabled: true,\n phase: \"main\",\n fn: $3295dac8746ffe59$var$preventOverflow,\n requiresIfExists: [\n \"offset\"\n ]\n};\n\n\n\n\n\n\n\n\nfunction $9102221f9e13ae54$export$2e2bcd8739ae039(element) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n}\n\n\nfunction $ca14c6927ef497ac$export$2e2bcd8739ae039(node) {\n if (node === (0, $df9341392e6ed7b1$export$2e2bcd8739ae039)(node) || !(0, $d98cb23738a6d9d0$export$1b3bfaa9684536aa)(node)) return (0, $68a584be1dc90596$export$2e2bcd8739ae039)(node);\n else return (0, $9102221f9e13ae54$export$2e2bcd8739ae039)(node);\n}\n\n\n\n\n\n\n\n\nfunction $34abf65a06d63352$var$isElementScaled(element) {\n var rect = element.getBoundingClientRect();\n var scaleX = (0, $7e23bad950468b82$export$2077e0241d6afd3c)(rect.width) / element.offsetWidth || 1;\n var scaleY = (0, $7e23bad950468b82$export$2077e0241d6afd3c)(rect.height) / element.offsetHeight || 1;\n return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\nfunction $34abf65a06d63352$export$2e2bcd8739ae039(elementOrVirtualElement, offsetParent, isFixed) {\n if (isFixed === void 0) isFixed = false;\n var isOffsetParentAnElement = (0, $d98cb23738a6d9d0$export$1b3bfaa9684536aa)(offsetParent);\n var offsetParentIsScaled = (0, $d98cb23738a6d9d0$export$1b3bfaa9684536aa)(offsetParent) && $34abf65a06d63352$var$isElementScaled(offsetParent);\n var documentElement = (0, $433af39bc2fae35d$export$2e2bcd8739ae039)(offsetParent);\n var rect = (0, $84019ab652aa921b$export$2e2bcd8739ae039)(elementOrVirtualElement, offsetParentIsScaled, isFixed);\n var scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n var offsets = {\n x: 0,\n y: 0\n };\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if ((0, $4f30cf0ce50e075e$export$2e2bcd8739ae039)(offsetParent) !== \"body\" || // https://github.com/popperjs/popper-core/issues/1078\n (0, $18583dfdff147fd4$export$2e2bcd8739ae039)(documentElement)) scroll = (0, $ca14c6927ef497ac$export$2e2bcd8739ae039)(offsetParent);\n if ((0, $d98cb23738a6d9d0$export$1b3bfaa9684536aa)(offsetParent)) {\n offsets = (0, $84019ab652aa921b$export$2e2bcd8739ae039)(offsetParent, true);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement) offsets.x = (0, $943aee5c7065ad53$export$2e2bcd8739ae039)(documentElement);\n }\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}\n\n\n\n\n\n\nfunction $0baf5472b5ad4a5a$var$order(modifiers) {\n var map = new Map();\n var visited = new Set();\n var result = [];\n modifiers.forEach(function(modifier) {\n map.set(modifier.name, modifier);\n }); // On visiting object, check for its dependencies and visit them recursively\n function sort(modifier) {\n visited.add(modifier.name);\n var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n requires.forEach(function(dep) {\n if (!visited.has(dep)) {\n var depModifier = map.get(dep);\n if (depModifier) sort(depModifier);\n }\n });\n result.push(modifier);\n }\n modifiers.forEach(function(modifier) {\n if (!visited.has(modifier.name)) // check for visited object\n sort(modifier);\n });\n return result;\n}\nfunction $0baf5472b5ad4a5a$export$2e2bcd8739ae039(modifiers) {\n // order based on dependencies\n var orderedModifiers = $0baf5472b5ad4a5a$var$order(modifiers); // order based on phase\n return (0, $f5c54167a3c62105$export$d087d3878fdf71d5).reduce(function(acc, phase) {\n return acc.concat(orderedModifiers.filter(function(modifier) {\n return modifier.phase === phase;\n }));\n }, []);\n}\n\n\nfunction $9b65b878009bf47f$export$2e2bcd8739ae039(fn) {\n var pending;\n return function() {\n if (!pending) pending = new Promise(function(resolve) {\n Promise.resolve().then(function() {\n pending = undefined;\n resolve(fn());\n });\n });\n return pending;\n };\n}\n\n\nfunction $46d929ffbbd3136a$export$2e2bcd8739ae039(modifiers) {\n var merged = modifiers.reduce(function(merged, current) {\n var existing = merged[current.name];\n merged[current.name] = existing ? Object.assign({}, existing, current, {\n options: Object.assign({}, existing.options, current.options),\n data: Object.assign({}, existing.data, current.data)\n }) : current;\n return merged;\n }, {}); // IE11 does not support Object.values\n return Object.keys(merged).map(function(key) {\n return merged[key];\n });\n}\n\n\n\n\nvar $b3c2fd6800546b4b$var$DEFAULT_OPTIONS = {\n placement: \"bottom\",\n modifiers: [],\n strategy: \"absolute\"\n};\nfunction $b3c2fd6800546b4b$var$areValidElements() {\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++)args[_key] = arguments[_key];\n return !args.some(function(element) {\n return !(element && typeof element.getBoundingClientRect === \"function\");\n });\n}\nfunction $b3c2fd6800546b4b$export$ed5e13716264f202(generatorOptions) {\n if (generatorOptions === void 0) generatorOptions = {};\n var _generatorOptions = generatorOptions, _generatorOptions$def = _generatorOptions.defaultModifiers, defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def, _generatorOptions$def2 = _generatorOptions.defaultOptions, defaultOptions = _generatorOptions$def2 === void 0 ? $b3c2fd6800546b4b$var$DEFAULT_OPTIONS : _generatorOptions$def2;\n return function createPopper(reference, popper, options) {\n if (options === void 0) options = defaultOptions;\n var state = {\n placement: \"bottom\",\n orderedModifiers: [],\n options: Object.assign({}, $b3c2fd6800546b4b$var$DEFAULT_OPTIONS, defaultOptions),\n modifiersData: {},\n elements: {\n reference: reference,\n popper: popper\n },\n attributes: {},\n styles: {}\n };\n var effectCleanupFns = [];\n var isDestroyed = false;\n var instance = {\n state: state,\n setOptions: function setOptions(setOptionsAction) {\n var options = typeof setOptionsAction === \"function\" ? setOptionsAction(state.options) : setOptionsAction;\n cleanupModifierEffects();\n state.options = Object.assign({}, defaultOptions, state.options, options);\n state.scrollParents = {\n reference: (0, $d98cb23738a6d9d0$export$45a5e7f76e0caa8d)(reference) ? (0, $a621d360f1a81b88$export$2e2bcd8739ae039)(reference) : reference.contextElement ? (0, $a621d360f1a81b88$export$2e2bcd8739ae039)(reference.contextElement) : [],\n popper: (0, $a621d360f1a81b88$export$2e2bcd8739ae039)(popper)\n }; // Orders the modifiers based on their dependencies and `phase`\n // properties\n var orderedModifiers = (0, $0baf5472b5ad4a5a$export$2e2bcd8739ae039)((0, $46d929ffbbd3136a$export$2e2bcd8739ae039)([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n state.orderedModifiers = orderedModifiers.filter(function(m) {\n return m.enabled;\n });\n runModifierEffects();\n return instance.update();\n },\n // Sync update – it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate: function forceUpdate() {\n if (isDestroyed) return;\n var _state$elements = state.elements, reference = _state$elements.reference, popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n // anymore\n if (!$b3c2fd6800546b4b$var$areValidElements(reference, popper)) return;\n // Store the reference and popper rects to be read by modifiers\n state.rects = {\n reference: (0, $34abf65a06d63352$export$2e2bcd8739ae039)(reference, (0, $a56b734280245ffb$export$2e2bcd8739ae039)(popper), state.options.strategy === \"fixed\"),\n popper: (0, $30ced62b744c6cfe$export$2e2bcd8739ae039)(popper)\n }; // Modifiers have the ability to reset the current update cycle. The\n // most common use case for this is the `flip` modifier changing the\n // placement, which then needs to re-run all the modifiers, because the\n // logic was previously ran for the previous placement and is therefore\n // stale/incorrect\n state.reset = false;\n state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n // is filled with the initial data specified by the modifier. This means\n // it doesn't persist and is fresh on each update.\n // To ensure persistent data, use `${name}#persistent`\n state.orderedModifiers.forEach(function(modifier) {\n return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n });\n for(var index = 0; index < state.orderedModifiers.length; index++){\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n var _state$orderedModifie = state.orderedModifiers[index], fn = _state$orderedModifie.fn, _state$orderedModifie2 = _state$orderedModifie.options, _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2, name = _state$orderedModifie.name;\n if (typeof fn === \"function\") state = fn({\n state: state,\n options: _options,\n name: name,\n instance: instance\n }) || state;\n }\n },\n // Async and optimistically optimized update – it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: (0, $9b65b878009bf47f$export$2e2bcd8739ae039)(function() {\n return new Promise(function(resolve) {\n instance.forceUpdate();\n resolve(state);\n });\n }),\n destroy: function destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n }\n };\n if (!$b3c2fd6800546b4b$var$areValidElements(reference, popper)) return instance;\n instance.setOptions(options).then(function(state) {\n if (!isDestroyed && options.onFirstUpdate) options.onFirstUpdate(state);\n }); // Modifiers have the ability to execute arbitrary code before the first\n // update cycle runs. They will be executed in the same order as the update\n // cycle. This is useful when a modifier adds some persistent data that\n // other modifiers need to use, but the modifier is run after the dependent\n // one.\n function runModifierEffects() {\n state.orderedModifiers.forEach(function(_ref) {\n var name = _ref.name, _ref$options = _ref.options, options = _ref$options === void 0 ? {} : _ref$options, effect = _ref.effect;\n if (typeof effect === \"function\") {\n var cleanupFn = effect({\n state: state,\n name: name,\n instance: instance,\n options: options\n });\n var noopFn = function noopFn() {};\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n function cleanupModifierEffects() {\n effectCleanupFns.forEach(function(fn) {\n return fn();\n });\n effectCleanupFns = [];\n }\n return instance;\n };\n}\nvar $b3c2fd6800546b4b$export$8f7491d57c8f97a9 = /*#__PURE__*/ $b3c2fd6800546b4b$export$ed5e13716264f202(); // eslint-disable-next-line import/no-unused-modules\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar $1bf0bf541303046d$export$d34966752335dd47 = [\n (0, $ff355aafd082b0cd$export$2e2bcd8739ae039),\n (0, $e92fb10df1450f31$export$2e2bcd8739ae039),\n (0, $c8f8eadcf7685dc5$export$2e2bcd8739ae039),\n (0, $83c1fc4c4e58d7dd$export$2e2bcd8739ae039),\n (0, $7c04da2e958a3fe8$export$2e2bcd8739ae039),\n (0, $b1f32a1d9525a032$export$2e2bcd8739ae039),\n (0, $3295dac8746ffe59$export$2e2bcd8739ae039),\n (0, $1992f2d714808ab6$export$2e2bcd8739ae039),\n (0, $174d14927bb4f43b$export$2e2bcd8739ae039)\n];\nvar $1bf0bf541303046d$export$8f7491d57c8f97a9 = /*#__PURE__*/ (0, $b3c2fd6800546b4b$export$ed5e13716264f202)({\n defaultModifiers: $1bf0bf541303046d$export$d34966752335dd47\n}); // eslint-disable-next-line import/no-unused-modules\n\n\n\n\n\n\n\nvar $cff5cce2532d9fa1$export$d34966752335dd47 = [\n (0, $ff355aafd082b0cd$export$2e2bcd8739ae039),\n (0, $e92fb10df1450f31$export$2e2bcd8739ae039),\n (0, $c8f8eadcf7685dc5$export$2e2bcd8739ae039),\n (0, $83c1fc4c4e58d7dd$export$2e2bcd8739ae039)\n];\nvar $cff5cce2532d9fa1$export$8f7491d57c8f97a9 = /*#__PURE__*/ (0, $b3c2fd6800546b4b$export$ed5e13716264f202)({\n defaultModifiers: $cff5cce2532d9fa1$export$d34966752335dd47\n}); // eslint-disable-next-line import/no-unused-modules\n\n\n$parcel$exportWildcard($d37552697cc5ea39$exports, $f5c54167a3c62105$exports);\n$parcel$exportWildcard($d37552697cc5ea39$exports, $1341d386dda6ba3e$exports);\n\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/data.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */ /**\n * Constants\n */ const $91ca15859685b28b$var$elementMap = new Map();\nconst $91ca15859685b28b$var$Data = {\n set (element, key, instance) {\n if (!$91ca15859685b28b$var$elementMap.has(element)) $91ca15859685b28b$var$elementMap.set(element, new Map());\n const instanceMap = $91ca15859685b28b$var$elementMap.get(element);\n // make it clear we only want one instance per element\n // can be removed later when multiple key/instances are fine to be used\n if (!instanceMap.has(key) && instanceMap.size !== 0) {\n // eslint-disable-next-line no-console\n console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`);\n return;\n }\n instanceMap.set(key, instance);\n },\n get (element, key) {\n if ($91ca15859685b28b$var$elementMap.has(element)) return $91ca15859685b28b$var$elementMap.get(element).get(key) || null;\n return null;\n },\n remove (element, key) {\n if (!$91ca15859685b28b$var$elementMap.has(element)) return;\n const instanceMap = $91ca15859685b28b$var$elementMap.get(element);\n instanceMap.delete(key);\n // free up element references if there are no instances left for an element\n if (instanceMap.size === 0) $91ca15859685b28b$var$elementMap.delete(element);\n }\n};\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */ const $91ca15859685b28b$var$MAX_UID = 1000000;\nconst $91ca15859685b28b$var$MILLISECONDS_MULTIPLIER = 1000;\nconst $91ca15859685b28b$var$TRANSITION_END = \"transitionend\";\n/**\n * Properly escape IDs selectors to handle weird IDs\n * @param {string} selector\n * @returns {string}\n */ const $91ca15859685b28b$var$parseSelector = (selector)=>{\n if (selector && window.CSS && window.CSS.escape) // document.querySelector needs escaping to handle IDs (html5+) containing for instance /\n selector = selector.replace(/#([^\\s\"#']+)/g, (match, id)=>`#${CSS.escape(id)}`);\n return selector;\n};\n// Shout-out Angus Croll (https://goo.gl/pxwQGp)\nconst $91ca15859685b28b$var$toType = (object)=>{\n if (object === null || object === undefined) return `${object}`;\n return Object.prototype.toString.call(object).match(/\\s([a-z]+)/i)[1].toLowerCase();\n};\n/**\n * Public Util API\n */ const $91ca15859685b28b$var$getUID = (prefix)=>{\n do prefix += Math.floor(Math.random() * $91ca15859685b28b$var$MAX_UID);\n while (document.getElementById(prefix));\n return prefix;\n};\nconst $91ca15859685b28b$var$getTransitionDurationFromElement = (element)=>{\n if (!element) return 0;\n // Get transition-duration of the element\n let { transitionDuration: transitionDuration, transitionDelay: transitionDelay } = window.getComputedStyle(element);\n const floatTransitionDuration = Number.parseFloat(transitionDuration);\n const floatTransitionDelay = Number.parseFloat(transitionDelay);\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) return 0;\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(\",\")[0];\n transitionDelay = transitionDelay.split(\",\")[0];\n return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * $91ca15859685b28b$var$MILLISECONDS_MULTIPLIER;\n};\nconst $91ca15859685b28b$var$triggerTransitionEnd = (element)=>{\n element.dispatchEvent(new Event($91ca15859685b28b$var$TRANSITION_END));\n};\nconst $91ca15859685b28b$var$isElement = (object)=>{\n if (!object || typeof object !== \"object\") return false;\n if (typeof object.jquery !== \"undefined\") object = object[0];\n return typeof object.nodeType !== \"undefined\";\n};\nconst $91ca15859685b28b$var$getElement = (object)=>{\n // it's a jQuery object or a node element\n if ($91ca15859685b28b$var$isElement(object)) return object.jquery ? object[0] : object;\n if (typeof object === \"string\" && object.length > 0) return document.querySelector($91ca15859685b28b$var$parseSelector(object));\n return null;\n};\nconst $91ca15859685b28b$var$isVisible = (element)=>{\n if (!$91ca15859685b28b$var$isElement(element) || element.getClientRects().length === 0) return false;\n const elementIsVisible = getComputedStyle(element).getPropertyValue(\"visibility\") === \"visible\";\n // Handle `details` element as its content may falsie appear visible when it is closed\n const closedDetails = element.closest(\"details:not([open])\");\n if (!closedDetails) return elementIsVisible;\n if (closedDetails !== element) {\n const summary = element.closest(\"summary\");\n if (summary && summary.parentNode !== closedDetails) return false;\n if (summary === null) return false;\n }\n return elementIsVisible;\n};\nconst $91ca15859685b28b$var$isDisabled = (element)=>{\n if (!element || element.nodeType !== Node.ELEMENT_NODE) return true;\n if (element.classList.contains(\"disabled\")) return true;\n if (typeof element.disabled !== \"undefined\") return element.disabled;\n return element.hasAttribute(\"disabled\") && element.getAttribute(\"disabled\") !== \"false\";\n};\nconst $91ca15859685b28b$var$findShadowRoot = (element)=>{\n if (!document.documentElement.attachShadow) return null;\n // Can find the shadow root otherwise it'll return the document\n if (typeof element.getRootNode === \"function\") {\n const root = element.getRootNode();\n return root instanceof ShadowRoot ? root : null;\n }\n if (element instanceof ShadowRoot) return element;\n // when we don't find a shadow root\n if (!element.parentNode) return null;\n return $91ca15859685b28b$var$findShadowRoot(element.parentNode);\n};\nconst $91ca15859685b28b$var$noop = ()=>{};\n/**\n * Trick to restart an element's animation\n *\n * @param {HTMLElement} element\n * @return void\n *\n * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\n */ const $91ca15859685b28b$var$reflow = (element)=>{\n element.offsetHeight; // eslint-disable-line no-unused-expressions\n};\nconst $91ca15859685b28b$var$getjQuery = ()=>{\n if (window.jQuery && !document.body.hasAttribute(\"data-bs-no-jquery\")) return window.jQuery;\n return null;\n};\nconst $91ca15859685b28b$var$DOMContentLoadedCallbacks = [];\nconst $91ca15859685b28b$var$onDOMContentLoaded = (callback)=>{\n if (document.readyState === \"loading\") {\n // add listener on the first call when the document is in loading state\n if (!$91ca15859685b28b$var$DOMContentLoadedCallbacks.length) document.addEventListener(\"DOMContentLoaded\", ()=>{\n for (const callback of $91ca15859685b28b$var$DOMContentLoadedCallbacks)callback();\n });\n $91ca15859685b28b$var$DOMContentLoadedCallbacks.push(callback);\n } else callback();\n};\nconst $91ca15859685b28b$var$isRTL = ()=>document.documentElement.dir === \"rtl\";\nconst $91ca15859685b28b$var$defineJQueryPlugin = (plugin)=>{\n $91ca15859685b28b$var$onDOMContentLoaded(()=>{\n const $ = $91ca15859685b28b$var$getjQuery();\n /* istanbul ignore if */ if ($) {\n const name = plugin.NAME;\n const JQUERY_NO_CONFLICT = $.fn[name];\n $.fn[name] = plugin.jQueryInterface;\n $.fn[name].Constructor = plugin;\n $.fn[name].noConflict = ()=>{\n $.fn[name] = JQUERY_NO_CONFLICT;\n return plugin.jQueryInterface;\n };\n }\n });\n};\nconst $91ca15859685b28b$var$execute = (possibleCallback, args = [], defaultValue = possibleCallback)=>{\n return typeof possibleCallback === \"function\" ? possibleCallback(...args) : defaultValue;\n};\nconst $91ca15859685b28b$var$executeAfterTransition = (callback, transitionElement, waitForTransition = true)=>{\n if (!waitForTransition) {\n $91ca15859685b28b$var$execute(callback);\n return;\n }\n const durationPadding = 5;\n const emulatedDuration = $91ca15859685b28b$var$getTransitionDurationFromElement(transitionElement) + durationPadding;\n let called = false;\n const handler = ({ target: target })=>{\n if (target !== transitionElement) return;\n called = true;\n transitionElement.removeEventListener($91ca15859685b28b$var$TRANSITION_END, handler);\n $91ca15859685b28b$var$execute(callback);\n };\n transitionElement.addEventListener($91ca15859685b28b$var$TRANSITION_END, handler);\n setTimeout(()=>{\n if (!called) $91ca15859685b28b$var$triggerTransitionEnd(transitionElement);\n }, emulatedDuration);\n};\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list The list of elements\n * @param activeElement The active element\n * @param shouldGetNext Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */ const $91ca15859685b28b$var$getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed)=>{\n const listLength = list.length;\n let index = list.indexOf(activeElement);\n // if the element does not exist in the list return an element\n // depending on the direction and if cycle is allowed\n if (index === -1) return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0];\n index += shouldGetNext ? 1 : -1;\n if (isCycleAllowed) index = (index + listLength) % listLength;\n return list[Math.max(0, Math.min(index, listLength - 1))];\n};\n/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */ /**\n * Constants\n */ const $91ca15859685b28b$var$namespaceRegex = /[^.]*(?=\\..*)\\.|.*/;\nconst $91ca15859685b28b$var$stripNameRegex = /\\..*/;\nconst $91ca15859685b28b$var$stripUidRegex = /::\\d+$/;\nconst $91ca15859685b28b$var$eventRegistry = {}; // Events storage\nlet $91ca15859685b28b$var$uidEvent = 1;\nconst $91ca15859685b28b$var$customEvents = {\n mouseenter: \"mouseover\",\n mouseleave: \"mouseout\"\n};\nconst $91ca15859685b28b$var$nativeEvents = new Set([\n \"click\",\n \"dblclick\",\n \"mouseup\",\n \"mousedown\",\n \"contextmenu\",\n \"mousewheel\",\n \"DOMMouseScroll\",\n \"mouseover\",\n \"mouseout\",\n \"mousemove\",\n \"selectstart\",\n \"selectend\",\n \"keydown\",\n \"keypress\",\n \"keyup\",\n \"orientationchange\",\n \"touchstart\",\n \"touchmove\",\n \"touchend\",\n \"touchcancel\",\n \"pointerdown\",\n \"pointermove\",\n \"pointerup\",\n \"pointerleave\",\n \"pointercancel\",\n \"gesturestart\",\n \"gesturechange\",\n \"gestureend\",\n \"focus\",\n \"blur\",\n \"change\",\n \"reset\",\n \"select\",\n \"submit\",\n \"focusin\",\n \"focusout\",\n \"load\",\n \"unload\",\n \"beforeunload\",\n \"resize\",\n \"move\",\n \"DOMContentLoaded\",\n \"readystatechange\",\n \"error\",\n \"abort\",\n \"scroll\"\n]);\n/**\n * Private methods\n */ function $91ca15859685b28b$var$makeEventUid(element, uid) {\n return uid && `${uid}::${$91ca15859685b28b$var$uidEvent++}` || element.uidEvent || $91ca15859685b28b$var$uidEvent++;\n}\nfunction $91ca15859685b28b$var$getElementEvents(element) {\n const uid = $91ca15859685b28b$var$makeEventUid(element);\n element.uidEvent = uid;\n $91ca15859685b28b$var$eventRegistry[uid] = $91ca15859685b28b$var$eventRegistry[uid] || {};\n return $91ca15859685b28b$var$eventRegistry[uid];\n}\nfunction $91ca15859685b28b$var$bootstrapHandler(element, fn) {\n return function handler(event) {\n $91ca15859685b28b$var$hydrateObj(event, {\n delegateTarget: element\n });\n if (handler.oneOff) $91ca15859685b28b$var$EventHandler.off(element, event.type, fn);\n return fn.apply(element, [\n event\n ]);\n };\n}\nfunction $91ca15859685b28b$var$bootstrapDelegationHandler(element, selector, fn) {\n return function handler(event) {\n const domElements = element.querySelectorAll(selector);\n for(let { target: target } = event; target && target !== this; target = target.parentNode)for (const domElement of domElements){\n if (domElement !== target) continue;\n $91ca15859685b28b$var$hydrateObj(event, {\n delegateTarget: target\n });\n if (handler.oneOff) $91ca15859685b28b$var$EventHandler.off(element, event.type, selector, fn);\n return fn.apply(target, [\n event\n ]);\n }\n };\n}\nfunction $91ca15859685b28b$var$findHandler(events, callable, delegationSelector = null) {\n return Object.values(events).find((event)=>event.callable === callable && event.delegationSelector === delegationSelector);\n}\nfunction $91ca15859685b28b$var$normalizeParameters(originalTypeEvent, handler, delegationFunction) {\n const isDelegated = typeof handler === \"string\";\n // TODO: tooltip passes `false` instead of selector, so we need to check\n const callable = isDelegated ? delegationFunction : handler || delegationFunction;\n let typeEvent = $91ca15859685b28b$var$getTypeEvent(originalTypeEvent);\n if (!$91ca15859685b28b$var$nativeEvents.has(typeEvent)) typeEvent = originalTypeEvent;\n return [\n isDelegated,\n callable,\n typeEvent\n ];\n}\nfunction $91ca15859685b28b$var$addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) {\n if (typeof originalTypeEvent !== \"string\" || !element) return;\n let [isDelegated, callable, typeEvent] = $91ca15859685b28b$var$normalizeParameters(originalTypeEvent, handler, delegationFunction);\n // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position\n // this prevents the handler from being dispatched the same way as mouseover or mouseout does\n if (originalTypeEvent in $91ca15859685b28b$var$customEvents) {\n const wrapFunction = (fn)=>{\n return function(event) {\n if (!event.relatedTarget || event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget)) return fn.call(this, event);\n };\n };\n callable = wrapFunction(callable);\n }\n const events = $91ca15859685b28b$var$getElementEvents(element);\n const handlers = events[typeEvent] || (events[typeEvent] = {});\n const previousFunction = $91ca15859685b28b$var$findHandler(handlers, callable, isDelegated ? handler : null);\n if (previousFunction) {\n previousFunction.oneOff = previousFunction.oneOff && oneOff;\n return;\n }\n const uid = $91ca15859685b28b$var$makeEventUid(callable, originalTypeEvent.replace($91ca15859685b28b$var$namespaceRegex, \"\"));\n const fn = isDelegated ? $91ca15859685b28b$var$bootstrapDelegationHandler(element, handler, callable) : $91ca15859685b28b$var$bootstrapHandler(element, callable);\n fn.delegationSelector = isDelegated ? handler : null;\n fn.callable = callable;\n fn.oneOff = oneOff;\n fn.uidEvent = uid;\n handlers[uid] = fn;\n element.addEventListener(typeEvent, fn, isDelegated);\n}\nfunction $91ca15859685b28b$var$removeHandler(element, events, typeEvent, handler, delegationSelector) {\n const fn = $91ca15859685b28b$var$findHandler(events[typeEvent], handler, delegationSelector);\n if (!fn) return;\n element.removeEventListener(typeEvent, fn, Boolean(delegationSelector));\n delete events[typeEvent][fn.uidEvent];\n}\nfunction $91ca15859685b28b$var$removeNamespacedHandlers(element, events, typeEvent, namespace) {\n const storeElementEvent = events[typeEvent] || {};\n for (const [handlerKey, event] of Object.entries(storeElementEvent))if (handlerKey.includes(namespace)) $91ca15859685b28b$var$removeHandler(element, events, typeEvent, event.callable, event.delegationSelector);\n}\nfunction $91ca15859685b28b$var$getTypeEvent(event) {\n // allow to get the native events from namespaced events ('click.bs.button' --> 'click')\n event = event.replace($91ca15859685b28b$var$stripNameRegex, \"\");\n return $91ca15859685b28b$var$customEvents[event] || event;\n}\nconst $91ca15859685b28b$var$EventHandler = {\n on (element, event, handler, delegationFunction) {\n $91ca15859685b28b$var$addHandler(element, event, handler, delegationFunction, false);\n },\n one (element, event, handler, delegationFunction) {\n $91ca15859685b28b$var$addHandler(element, event, handler, delegationFunction, true);\n },\n off (element, originalTypeEvent, handler, delegationFunction) {\n if (typeof originalTypeEvent !== \"string\" || !element) return;\n const [isDelegated, callable, typeEvent] = $91ca15859685b28b$var$normalizeParameters(originalTypeEvent, handler, delegationFunction);\n const inNamespace = typeEvent !== originalTypeEvent;\n const events = $91ca15859685b28b$var$getElementEvents(element);\n const storeElementEvent = events[typeEvent] || {};\n const isNamespace = originalTypeEvent.startsWith(\".\");\n if (typeof callable !== \"undefined\") {\n // Simplest case: handler is passed, remove that listener ONLY.\n if (!Object.keys(storeElementEvent).length) return;\n $91ca15859685b28b$var$removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null);\n return;\n }\n if (isNamespace) for (const elementEvent of Object.keys(events))$91ca15859685b28b$var$removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1));\n for (const [keyHandlers, event] of Object.entries(storeElementEvent)){\n const handlerKey = keyHandlers.replace($91ca15859685b28b$var$stripUidRegex, \"\");\n if (!inNamespace || originalTypeEvent.includes(handlerKey)) $91ca15859685b28b$var$removeHandler(element, events, typeEvent, event.callable, event.delegationSelector);\n }\n },\n trigger (element, event, args) {\n if (typeof event !== \"string\" || !element) return null;\n const $ = $91ca15859685b28b$var$getjQuery();\n const typeEvent = $91ca15859685b28b$var$getTypeEvent(event);\n const inNamespace = event !== typeEvent;\n let jQueryEvent = null;\n let bubbles = true;\n let nativeDispatch = true;\n let defaultPrevented = false;\n if (inNamespace && $) {\n jQueryEvent = $.Event(event, args);\n $(element).trigger(jQueryEvent);\n bubbles = !jQueryEvent.isPropagationStopped();\n nativeDispatch = !jQueryEvent.isImmediatePropagationStopped();\n defaultPrevented = jQueryEvent.isDefaultPrevented();\n }\n const evt = $91ca15859685b28b$var$hydrateObj(new Event(event, {\n bubbles: bubbles,\n cancelable: true\n }), args);\n if (defaultPrevented) evt.preventDefault();\n if (nativeDispatch) element.dispatchEvent(evt);\n if (evt.defaultPrevented && jQueryEvent) jQueryEvent.preventDefault();\n return evt;\n }\n};\nfunction $91ca15859685b28b$var$hydrateObj(obj, meta = {}) {\n for (const [key, value] of Object.entries(meta))try {\n obj[key] = value;\n } catch (_unused) {\n Object.defineProperty(obj, key, {\n configurable: true,\n get () {\n return value;\n }\n });\n }\n return obj;\n}\n/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/manipulator.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */ function $91ca15859685b28b$var$normalizeData(value) {\n if (value === \"true\") return true;\n if (value === \"false\") return false;\n if (value === Number(value).toString()) return Number(value);\n if (value === \"\" || value === \"null\") return null;\n if (typeof value !== \"string\") return value;\n try {\n return JSON.parse(decodeURIComponent(value));\n } catch (_unused) {\n return value;\n }\n}\nfunction $91ca15859685b28b$var$normalizeDataKey(key) {\n return key.replace(/[A-Z]/g, (chr)=>`-${chr.toLowerCase()}`);\n}\nconst $91ca15859685b28b$var$Manipulator = {\n setDataAttribute (element, key, value) {\n element.setAttribute(`data-bs-${$91ca15859685b28b$var$normalizeDataKey(key)}`, value);\n },\n removeDataAttribute (element, key) {\n element.removeAttribute(`data-bs-${$91ca15859685b28b$var$normalizeDataKey(key)}`);\n },\n getDataAttributes (element) {\n if (!element) return {};\n const attributes = {};\n const bsKeys = Object.keys(element.dataset).filter((key)=>key.startsWith(\"bs\") && !key.startsWith(\"bsConfig\"));\n for (const key of bsKeys){\n let pureKey = key.replace(/^bs/, \"\");\n pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length);\n attributes[pureKey] = $91ca15859685b28b$var$normalizeData(element.dataset[key]);\n }\n return attributes;\n },\n getDataAttribute (element, key) {\n return $91ca15859685b28b$var$normalizeData(element.getAttribute(`data-bs-${$91ca15859685b28b$var$normalizeDataKey(key)}`));\n }\n};\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/config.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */ /**\n * Class definition\n */ class $91ca15859685b28b$var$Config {\n // Getters\n static get Default() {\n return {};\n }\n static get DefaultType() {\n return {};\n }\n static get NAME() {\n throw new Error('You have to implement the static method \"NAME\", for each component!');\n }\n _getConfig(config) {\n config = this._mergeConfigObj(config);\n config = this._configAfterMerge(config);\n this._typeCheckConfig(config);\n return config;\n }\n _configAfterMerge(config) {\n return config;\n }\n _mergeConfigObj(config, element) {\n const jsonConfig = $91ca15859685b28b$var$isElement(element) ? $91ca15859685b28b$var$Manipulator.getDataAttribute(element, \"config\") : {}; // try to parse\n return {\n ...this.constructor.Default,\n ...typeof jsonConfig === \"object\" ? jsonConfig : {},\n ...$91ca15859685b28b$var$isElement(element) ? $91ca15859685b28b$var$Manipulator.getDataAttributes(element) : {},\n ...typeof config === \"object\" ? config : {}\n };\n }\n _typeCheckConfig(config, configTypes = this.constructor.DefaultType) {\n for (const [property, expectedTypes] of Object.entries(configTypes)){\n const value = config[property];\n const valueType = $91ca15859685b28b$var$isElement(value) ? \"element\" : $91ca15859685b28b$var$toType(value);\n if (!new RegExp(expectedTypes).test(valueType)) throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`);\n }\n }\n}\n/**\n * --------------------------------------------------------------------------\n * Bootstrap base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */ /**\n * Constants\n */ const $91ca15859685b28b$var$VERSION = \"5.3.3\";\n/**\n * Class definition\n */ class $91ca15859685b28b$var$BaseComponent extends $91ca15859685b28b$var$Config {\n constructor(element, config){\n super();\n element = $91ca15859685b28b$var$getElement(element);\n if (!element) return;\n this._element = element;\n this._config = this._getConfig(config);\n $91ca15859685b28b$var$Data.set(this._element, this.constructor.DATA_KEY, this);\n }\n // Public\n dispose() {\n $91ca15859685b28b$var$Data.remove(this._element, this.constructor.DATA_KEY);\n $91ca15859685b28b$var$EventHandler.off(this._element, this.constructor.EVENT_KEY);\n for (const propertyName of Object.getOwnPropertyNames(this))this[propertyName] = null;\n }\n _queueCallback(callback, element, isAnimated = true) {\n $91ca15859685b28b$var$executeAfterTransition(callback, element, isAnimated);\n }\n _getConfig(config) {\n config = this._mergeConfigObj(config, this._element);\n config = this._configAfterMerge(config);\n this._typeCheckConfig(config);\n return config;\n }\n // Static\n static getInstance(element) {\n return $91ca15859685b28b$var$Data.get($91ca15859685b28b$var$getElement(element), this.DATA_KEY);\n }\n static getOrCreateInstance(element, config = {}) {\n return this.getInstance(element) || new this(element, typeof config === \"object\" ? config : null);\n }\n static get VERSION() {\n return $91ca15859685b28b$var$VERSION;\n }\n static get DATA_KEY() {\n return `bs.${this.NAME}`;\n }\n static get EVENT_KEY() {\n return `.${this.DATA_KEY}`;\n }\n static eventName(name) {\n return `${name}${this.EVENT_KEY}`;\n }\n}\n/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/selector-engine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */ const $91ca15859685b28b$var$getSelector = (element)=>{\n let selector = element.getAttribute(\"data-bs-target\");\n if (!selector || selector === \"#\") {\n let hrefAttribute = element.getAttribute(\"href\");\n // The only valid content that could double as a selector are IDs or classes,\n // so everything starting with `#` or `.`. If a \"real\" URL is used as the selector,\n // `document.querySelector` will rightfully complain it is invalid.\n // See https://github.com/twbs/bootstrap/issues/32273\n if (!hrefAttribute || !hrefAttribute.includes(\"#\") && !hrefAttribute.startsWith(\".\")) return null;\n // Just in case some CMS puts out a full URL with the anchor appended\n if (hrefAttribute.includes(\"#\") && !hrefAttribute.startsWith(\"#\")) hrefAttribute = `#${hrefAttribute.split(\"#\")[1]}`;\n selector = hrefAttribute && hrefAttribute !== \"#\" ? hrefAttribute.trim() : null;\n }\n return selector ? selector.split(\",\").map((sel)=>$91ca15859685b28b$var$parseSelector(sel)).join(\",\") : null;\n};\nconst $91ca15859685b28b$var$SelectorEngine = {\n find (selector, element = document.documentElement) {\n return [].concat(...Element.prototype.querySelectorAll.call(element, selector));\n },\n findOne (selector, element = document.documentElement) {\n return Element.prototype.querySelector.call(element, selector);\n },\n children (element, selector) {\n return [].concat(...element.children).filter((child)=>child.matches(selector));\n },\n parents (element, selector) {\n const parents = [];\n let ancestor = element.parentNode.closest(selector);\n while(ancestor){\n parents.push(ancestor);\n ancestor = ancestor.parentNode.closest(selector);\n }\n return parents;\n },\n prev (element, selector) {\n let previous = element.previousElementSibling;\n while(previous){\n if (previous.matches(selector)) return [\n previous\n ];\n previous = previous.previousElementSibling;\n }\n return [];\n },\n // TODO: this is now unused; remove later along with prev()\n next (element, selector) {\n let next = element.nextElementSibling;\n while(next){\n if (next.matches(selector)) return [\n next\n ];\n next = next.nextElementSibling;\n }\n return [];\n },\n focusableChildren (element) {\n const focusables = [\n \"a\",\n \"button\",\n \"input\",\n \"textarea\",\n \"select\",\n \"details\",\n \"[tabindex]\",\n '[contenteditable=\"true\"]'\n ].map((selector)=>`${selector}:not([tabindex^=\"-\"])`).join(\",\");\n return this.find(focusables, element).filter((el)=>!$91ca15859685b28b$var$isDisabled(el) && $91ca15859685b28b$var$isVisible(el));\n },\n getSelectorFromElement (element) {\n const selector = $91ca15859685b28b$var$getSelector(element);\n if (selector) return $91ca15859685b28b$var$SelectorEngine.findOne(selector) ? selector : null;\n return null;\n },\n getElementFromSelector (element) {\n const selector = $91ca15859685b28b$var$getSelector(element);\n return selector ? $91ca15859685b28b$var$SelectorEngine.findOne(selector) : null;\n },\n getMultipleElementsFromSelector (element) {\n const selector = $91ca15859685b28b$var$getSelector(element);\n return selector ? $91ca15859685b28b$var$SelectorEngine.find(selector) : [];\n }\n};\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/component-functions.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */ const $91ca15859685b28b$var$enableDismissTrigger = (component, method = \"hide\")=>{\n const clickEvent = `click.dismiss${component.EVENT_KEY}`;\n const name = component.NAME;\n $91ca15859685b28b$var$EventHandler.on(document, clickEvent, `[data-bs-dismiss=\"${name}\"]`, function(event) {\n if ([\n \"A\",\n \"AREA\"\n ].includes(this.tagName)) event.preventDefault();\n if ($91ca15859685b28b$var$isDisabled(this)) return;\n const target = $91ca15859685b28b$var$SelectorEngine.getElementFromSelector(this) || this.closest(`.${name}`);\n const instance = component.getOrCreateInstance(target);\n // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method\n instance[method]();\n });\n};\n/**\n * --------------------------------------------------------------------------\n * Bootstrap alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */ /**\n * Constants\n */ const $91ca15859685b28b$var$NAME$f = \"alert\";\nconst $91ca15859685b28b$var$DATA_KEY$a = \"bs.alert\";\nconst $91ca15859685b28b$var$EVENT_KEY$b = `.${$91ca15859685b28b$var$DATA_KEY$a}`;\nconst $91ca15859685b28b$var$EVENT_CLOSE = `close${$91ca15859685b28b$var$EVENT_KEY$b}`;\nconst $91ca15859685b28b$var$EVENT_CLOSED = `closed${$91ca15859685b28b$var$EVENT_KEY$b}`;\nconst $91ca15859685b28b$var$CLASS_NAME_FADE$5 = \"fade\";\nconst $91ca15859685b28b$var$CLASS_NAME_SHOW$8 = \"show\";\n/**\n * Class definition\n */ class $91ca15859685b28b$export$caec2af78bcc877f extends $91ca15859685b28b$var$BaseComponent {\n // Getters\n static get NAME() {\n return $91ca15859685b28b$var$NAME$f;\n }\n // Public\n close() {\n const closeEvent = $91ca15859685b28b$var$EventHandler.trigger(this._element, $91ca15859685b28b$var$EVENT_CLOSE);\n if (closeEvent.defaultPrevented) return;\n this._element.classList.remove($91ca15859685b28b$var$CLASS_NAME_SHOW$8);\n const isAnimated = this._element.classList.contains($91ca15859685b28b$var$CLASS_NAME_FADE$5);\n this._queueCallback(()=>this._destroyElement(), this._element, isAnimated);\n }\n // Private\n _destroyElement() {\n this._element.remove();\n $91ca15859685b28b$var$EventHandler.trigger(this._element, $91ca15859685b28b$var$EVENT_CLOSED);\n this.dispose();\n }\n // Static\n static jQueryInterface(config) {\n return this.each(function() {\n const data = $91ca15859685b28b$export$caec2af78bcc877f.getOrCreateInstance(this);\n if (typeof config !== \"string\") return;\n if (data[config] === undefined || config.startsWith(\"_\") || config === \"constructor\") throw new TypeError(`No method named \"${config}\"`);\n data[config](this);\n });\n }\n}\n/**\n * Data API implementation\n */ $91ca15859685b28b$var$enableDismissTrigger($91ca15859685b28b$export$caec2af78bcc877f, \"close\");\n/**\n * jQuery\n */ $91ca15859685b28b$var$defineJQueryPlugin($91ca15859685b28b$export$caec2af78bcc877f);\n/**\n * --------------------------------------------------------------------------\n * Bootstrap button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */ /**\n * Constants\n */ const $91ca15859685b28b$var$NAME$e = \"button\";\nconst $91ca15859685b28b$var$DATA_KEY$9 = \"bs.button\";\nconst $91ca15859685b28b$var$EVENT_KEY$a = `.${$91ca15859685b28b$var$DATA_KEY$9}`;\nconst $91ca15859685b28b$var$DATA_API_KEY$6 = \".data-api\";\nconst $91ca15859685b28b$var$CLASS_NAME_ACTIVE$3 = \"active\";\nconst $91ca15859685b28b$var$SELECTOR_DATA_TOGGLE$5 = '[data-bs-toggle=\"button\"]';\nconst $91ca15859685b28b$var$EVENT_CLICK_DATA_API$6 = `click${$91ca15859685b28b$var$EVENT_KEY$a}${$91ca15859685b28b$var$DATA_API_KEY$6}`;\n/**\n * Class definition\n */ class $91ca15859685b28b$export$353f5b6fc5456de1 extends $91ca15859685b28b$var$BaseComponent {\n // Getters\n static get NAME() {\n return $91ca15859685b28b$var$NAME$e;\n }\n // Public\n toggle() {\n // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method\n this._element.setAttribute(\"aria-pressed\", this._element.classList.toggle($91ca15859685b28b$var$CLASS_NAME_ACTIVE$3));\n }\n // Static\n static jQueryInterface(config) {\n return this.each(function() {\n const data = $91ca15859685b28b$export$353f5b6fc5456de1.getOrCreateInstance(this);\n if (config === \"toggle\") data[config]();\n });\n }\n}\n/**\n * Data API implementation\n */ $91ca15859685b28b$var$EventHandler.on(document, $91ca15859685b28b$var$EVENT_CLICK_DATA_API$6, $91ca15859685b28b$var$SELECTOR_DATA_TOGGLE$5, (event)=>{\n event.preventDefault();\n const button = event.target.closest($91ca15859685b28b$var$SELECTOR_DATA_TOGGLE$5);\n const data = $91ca15859685b28b$export$353f5b6fc5456de1.getOrCreateInstance(button);\n data.toggle();\n});\n/**\n * jQuery\n */ $91ca15859685b28b$var$defineJQueryPlugin($91ca15859685b28b$export$353f5b6fc5456de1);\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/swipe.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */ /**\n * Constants\n */ const $91ca15859685b28b$var$NAME$d = \"swipe\";\nconst $91ca15859685b28b$var$EVENT_KEY$9 = \".bs.swipe\";\nconst $91ca15859685b28b$var$EVENT_TOUCHSTART = `touchstart${$91ca15859685b28b$var$EVENT_KEY$9}`;\nconst $91ca15859685b28b$var$EVENT_TOUCHMOVE = `touchmove${$91ca15859685b28b$var$EVENT_KEY$9}`;\nconst $91ca15859685b28b$var$EVENT_TOUCHEND = `touchend${$91ca15859685b28b$var$EVENT_KEY$9}`;\nconst $91ca15859685b28b$var$EVENT_POINTERDOWN = `pointerdown${$91ca15859685b28b$var$EVENT_KEY$9}`;\nconst $91ca15859685b28b$var$EVENT_POINTERUP = `pointerup${$91ca15859685b28b$var$EVENT_KEY$9}`;\nconst $91ca15859685b28b$var$POINTER_TYPE_TOUCH = \"touch\";\nconst $91ca15859685b28b$var$POINTER_TYPE_PEN = \"pen\";\nconst $91ca15859685b28b$var$CLASS_NAME_POINTER_EVENT = \"pointer-event\";\nconst $91ca15859685b28b$var$SWIPE_THRESHOLD = 40;\nconst $91ca15859685b28b$var$Default$c = {\n endCallback: null,\n leftCallback: null,\n rightCallback: null\n};\nconst $91ca15859685b28b$var$DefaultType$c = {\n endCallback: \"(function|null)\",\n leftCallback: \"(function|null)\",\n rightCallback: \"(function|null)\"\n};\n/**\n * Class definition\n */ class $91ca15859685b28b$var$Swipe extends $91ca15859685b28b$var$Config {\n constructor(element, config){\n super();\n this._element = element;\n if (!element || !$91ca15859685b28b$var$Swipe.isSupported()) return;\n this._config = this._getConfig(config);\n this._deltaX = 0;\n this._supportPointerEvents = Boolean(window.PointerEvent);\n this._initEvents();\n }\n // Getters\n static get Default() {\n return $91ca15859685b28b$var$Default$c;\n }\n static get DefaultType() {\n return $91ca15859685b28b$var$DefaultType$c;\n }\n static get NAME() {\n return $91ca15859685b28b$var$NAME$d;\n }\n // Public\n dispose() {\n $91ca15859685b28b$var$EventHandler.off(this._element, $91ca15859685b28b$var$EVENT_KEY$9);\n }\n // Private\n _start(event) {\n if (!this._supportPointerEvents) {\n this._deltaX = event.touches[0].clientX;\n return;\n }\n if (this._eventIsPointerPenTouch(event)) this._deltaX = event.clientX;\n }\n _end(event) {\n if (this._eventIsPointerPenTouch(event)) this._deltaX = event.clientX - this._deltaX;\n this._handleSwipe();\n $91ca15859685b28b$var$execute(this._config.endCallback);\n }\n _move(event) {\n this._deltaX = event.touches && event.touches.length > 1 ? 0 : event.touches[0].clientX - this._deltaX;\n }\n _handleSwipe() {\n const absDeltaX = Math.abs(this._deltaX);\n if (absDeltaX <= $91ca15859685b28b$var$SWIPE_THRESHOLD) return;\n const direction = absDeltaX / this._deltaX;\n this._deltaX = 0;\n if (!direction) return;\n $91ca15859685b28b$var$execute(direction > 0 ? this._config.rightCallback : this._config.leftCallback);\n }\n _initEvents() {\n if (this._supportPointerEvents) {\n $91ca15859685b28b$var$EventHandler.on(this._element, $91ca15859685b28b$var$EVENT_POINTERDOWN, (event)=>this._start(event));\n $91ca15859685b28b$var$EventHandler.on(this._element, $91ca15859685b28b$var$EVENT_POINTERUP, (event)=>this._end(event));\n this._element.classList.add($91ca15859685b28b$var$CLASS_NAME_POINTER_EVENT);\n } else {\n $91ca15859685b28b$var$EventHandler.on(this._element, $91ca15859685b28b$var$EVENT_TOUCHSTART, (event)=>this._start(event));\n $91ca15859685b28b$var$EventHandler.on(this._element, $91ca15859685b28b$var$EVENT_TOUCHMOVE, (event)=>this._move(event));\n $91ca15859685b28b$var$EventHandler.on(this._element, $91ca15859685b28b$var$EVENT_TOUCHEND, (event)=>this._end(event));\n }\n }\n _eventIsPointerPenTouch(event) {\n return this._supportPointerEvents && (event.pointerType === $91ca15859685b28b$var$POINTER_TYPE_PEN || event.pointerType === $91ca15859685b28b$var$POINTER_TYPE_TOUCH);\n }\n // Static\n static isSupported() {\n return \"ontouchstart\" in document.documentElement || navigator.maxTouchPoints > 0;\n }\n}\n/**\n * --------------------------------------------------------------------------\n * Bootstrap carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */ /**\n * Constants\n */ const $91ca15859685b28b$var$NAME$c = \"carousel\";\nconst $91ca15859685b28b$var$DATA_KEY$8 = \"bs.carousel\";\nconst $91ca15859685b28b$var$EVENT_KEY$8 = `.${$91ca15859685b28b$var$DATA_KEY$8}`;\nconst $91ca15859685b28b$var$DATA_API_KEY$5 = \".data-api\";\nconst $91ca15859685b28b$var$ARROW_LEFT_KEY$1 = \"ArrowLeft\";\nconst $91ca15859685b28b$var$ARROW_RIGHT_KEY$1 = \"ArrowRight\";\nconst $91ca15859685b28b$var$TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch\nconst $91ca15859685b28b$var$ORDER_NEXT = \"next\";\nconst $91ca15859685b28b$var$ORDER_PREV = \"prev\";\nconst $91ca15859685b28b$var$DIRECTION_LEFT = \"left\";\nconst $91ca15859685b28b$var$DIRECTION_RIGHT = \"right\";\nconst $91ca15859685b28b$var$EVENT_SLIDE = `slide${$91ca15859685b28b$var$EVENT_KEY$8}`;\nconst $91ca15859685b28b$var$EVENT_SLID = `slid${$91ca15859685b28b$var$EVENT_KEY$8}`;\nconst $91ca15859685b28b$var$EVENT_KEYDOWN$1 = `keydown${$91ca15859685b28b$var$EVENT_KEY$8}`;\nconst $91ca15859685b28b$var$EVENT_MOUSEENTER$1 = `mouseenter${$91ca15859685b28b$var$EVENT_KEY$8}`;\nconst $91ca15859685b28b$var$EVENT_MOUSELEAVE$1 = `mouseleave${$91ca15859685b28b$var$EVENT_KEY$8}`;\nconst $91ca15859685b28b$var$EVENT_DRAG_START = `dragstart${$91ca15859685b28b$var$EVENT_KEY$8}`;\nconst $91ca15859685b28b$var$EVENT_LOAD_DATA_API$3 = `load${$91ca15859685b28b$var$EVENT_KEY$8}${$91ca15859685b28b$var$DATA_API_KEY$5}`;\nconst $91ca15859685b28b$var$EVENT_CLICK_DATA_API$5 = `click${$91ca15859685b28b$var$EVENT_KEY$8}${$91ca15859685b28b$var$DATA_API_KEY$5}`;\nconst $91ca15859685b28b$var$CLASS_NAME_CAROUSEL = \"carousel\";\nconst $91ca15859685b28b$var$CLASS_NAME_ACTIVE$2 = \"active\";\nconst $91ca15859685b28b$var$CLASS_NAME_SLIDE = \"slide\";\nconst $91ca15859685b28b$var$CLASS_NAME_END = \"carousel-item-end\";\nconst $91ca15859685b28b$var$CLASS_NAME_START = \"carousel-item-start\";\nconst $91ca15859685b28b$var$CLASS_NAME_NEXT = \"carousel-item-next\";\nconst $91ca15859685b28b$var$CLASS_NAME_PREV = \"carousel-item-prev\";\nconst $91ca15859685b28b$var$SELECTOR_ACTIVE = \".active\";\nconst $91ca15859685b28b$var$SELECTOR_ITEM = \".carousel-item\";\nconst $91ca15859685b28b$var$SELECTOR_ACTIVE_ITEM = $91ca15859685b28b$var$SELECTOR_ACTIVE + $91ca15859685b28b$var$SELECTOR_ITEM;\nconst $91ca15859685b28b$var$SELECTOR_ITEM_IMG = \".carousel-item img\";\nconst $91ca15859685b28b$var$SELECTOR_INDICATORS = \".carousel-indicators\";\nconst $91ca15859685b28b$var$SELECTOR_DATA_SLIDE = \"[data-bs-slide], [data-bs-slide-to]\";\nconst $91ca15859685b28b$var$SELECTOR_DATA_RIDE = '[data-bs-ride=\"carousel\"]';\nconst $91ca15859685b28b$var$KEY_TO_DIRECTION = {\n [$91ca15859685b28b$var$ARROW_LEFT_KEY$1]: $91ca15859685b28b$var$DIRECTION_RIGHT,\n [$91ca15859685b28b$var$ARROW_RIGHT_KEY$1]: $91ca15859685b28b$var$DIRECTION_LEFT\n};\nconst $91ca15859685b28b$var$Default$b = {\n interval: 5000,\n keyboard: true,\n pause: \"hover\",\n ride: false,\n touch: true,\n wrap: true\n};\nconst $91ca15859685b28b$var$DefaultType$b = {\n interval: \"(number|boolean)\",\n // TODO:v6 remove boolean support\n keyboard: \"boolean\",\n pause: \"(string|boolean)\",\n ride: \"(boolean|string)\",\n touch: \"boolean\",\n wrap: \"boolean\"\n};\n/**\n * Class definition\n */ class $91ca15859685b28b$export$144901db2ea8e967 extends $91ca15859685b28b$var$BaseComponent {\n constructor(element, config){\n super(element, config);\n this._interval = null;\n this._activeElement = null;\n this._isSliding = false;\n this.touchTimeout = null;\n this._swipeHelper = null;\n this._indicatorsElement = $91ca15859685b28b$var$SelectorEngine.findOne($91ca15859685b28b$var$SELECTOR_INDICATORS, this._element);\n this._addEventListeners();\n if (this._config.ride === $91ca15859685b28b$var$CLASS_NAME_CAROUSEL) this.cycle();\n }\n // Getters\n static get Default() {\n return $91ca15859685b28b$var$Default$b;\n }\n static get DefaultType() {\n return $91ca15859685b28b$var$DefaultType$b;\n }\n static get NAME() {\n return $91ca15859685b28b$var$NAME$c;\n }\n // Public\n next() {\n this._slide($91ca15859685b28b$var$ORDER_NEXT);\n }\n nextWhenVisible() {\n // FIXME TODO use `document.visibilityState`\n // Don't call next when the page isn't visible\n // or the carousel or its parent isn't visible\n if (!document.hidden && $91ca15859685b28b$var$isVisible(this._element)) this.next();\n }\n prev() {\n this._slide($91ca15859685b28b$var$ORDER_PREV);\n }\n pause() {\n if (this._isSliding) $91ca15859685b28b$var$triggerTransitionEnd(this._element);\n this._clearInterval();\n }\n cycle() {\n this._clearInterval();\n this._updateInterval();\n this._interval = setInterval(()=>this.nextWhenVisible(), this._config.interval);\n }\n _maybeEnableCycle() {\n if (!this._config.ride) return;\n if (this._isSliding) {\n $91ca15859685b28b$var$EventHandler.one(this._element, $91ca15859685b28b$var$EVENT_SLID, ()=>this.cycle());\n return;\n }\n this.cycle();\n }\n to(index) {\n const items = this._getItems();\n if (index > items.length - 1 || index < 0) return;\n if (this._isSliding) {\n $91ca15859685b28b$var$EventHandler.one(this._element, $91ca15859685b28b$var$EVENT_SLID, ()=>this.to(index));\n return;\n }\n const activeIndex = this._getItemIndex(this._getActive());\n if (activeIndex === index) return;\n const order = index > activeIndex ? $91ca15859685b28b$var$ORDER_NEXT : $91ca15859685b28b$var$ORDER_PREV;\n this._slide(order, items[index]);\n }\n dispose() {\n if (this._swipeHelper) this._swipeHelper.dispose();\n super.dispose();\n }\n // Private\n _configAfterMerge(config) {\n config.defaultInterval = config.interval;\n return config;\n }\n _addEventListeners() {\n if (this._config.keyboard) $91ca15859685b28b$var$EventHandler.on(this._element, $91ca15859685b28b$var$EVENT_KEYDOWN$1, (event)=>this._keydown(event));\n if (this._config.pause === \"hover\") {\n $91ca15859685b28b$var$EventHandler.on(this._element, $91ca15859685b28b$var$EVENT_MOUSEENTER$1, ()=>this.pause());\n $91ca15859685b28b$var$EventHandler.on(this._element, $91ca15859685b28b$var$EVENT_MOUSELEAVE$1, ()=>this._maybeEnableCycle());\n }\n if (this._config.touch && $91ca15859685b28b$var$Swipe.isSupported()) this._addTouchEventListeners();\n }\n _addTouchEventListeners() {\n for (const img of $91ca15859685b28b$var$SelectorEngine.find($91ca15859685b28b$var$SELECTOR_ITEM_IMG, this._element))$91ca15859685b28b$var$EventHandler.on(img, $91ca15859685b28b$var$EVENT_DRAG_START, (event)=>event.preventDefault());\n const endCallBack = ()=>{\n if (this._config.pause !== \"hover\") return;\n // If it's a touch-enabled device, mouseenter/leave are fired as\n // part of the mouse compatibility events on first tap - the carousel\n // would stop cycling until user tapped out of it;\n // here, we listen for touchend, explicitly pause the carousel\n // (as if it's the second time we tap on it, mouseenter compat event\n // is NOT fired) and after a timeout (to allow for mouse compatibility\n // events to fire) we explicitly restart cycling\n this.pause();\n if (this.touchTimeout) clearTimeout(this.touchTimeout);\n this.touchTimeout = setTimeout(()=>this._maybeEnableCycle(), $91ca15859685b28b$var$TOUCHEVENT_COMPAT_WAIT + this._config.interval);\n };\n const swipeConfig = {\n leftCallback: ()=>this._slide(this._directionToOrder($91ca15859685b28b$var$DIRECTION_LEFT)),\n rightCallback: ()=>this._slide(this._directionToOrder($91ca15859685b28b$var$DIRECTION_RIGHT)),\n endCallback: endCallBack\n };\n this._swipeHelper = new $91ca15859685b28b$var$Swipe(this._element, swipeConfig);\n }\n _keydown(event) {\n if (/input|textarea/i.test(event.target.tagName)) return;\n const direction = $91ca15859685b28b$var$KEY_TO_DIRECTION[event.key];\n if (direction) {\n event.preventDefault();\n this._slide(this._directionToOrder(direction));\n }\n }\n _getItemIndex(element) {\n return this._getItems().indexOf(element);\n }\n _setActiveIndicatorElement(index) {\n if (!this._indicatorsElement) return;\n const activeIndicator = $91ca15859685b28b$var$SelectorEngine.findOne($91ca15859685b28b$var$SELECTOR_ACTIVE, this._indicatorsElement);\n activeIndicator.classList.remove($91ca15859685b28b$var$CLASS_NAME_ACTIVE$2);\n activeIndicator.removeAttribute(\"aria-current\");\n const newActiveIndicator = $91ca15859685b28b$var$SelectorEngine.findOne(`[data-bs-slide-to=\"${index}\"]`, this._indicatorsElement);\n if (newActiveIndicator) {\n newActiveIndicator.classList.add($91ca15859685b28b$var$CLASS_NAME_ACTIVE$2);\n newActiveIndicator.setAttribute(\"aria-current\", \"true\");\n }\n }\n _updateInterval() {\n const element = this._activeElement || this._getActive();\n if (!element) return;\n const elementInterval = Number.parseInt(element.getAttribute(\"data-bs-interval\"), 10);\n this._config.interval = elementInterval || this._config.defaultInterval;\n }\n _slide(order, element = null) {\n if (this._isSliding) return;\n const activeElement = this._getActive();\n const isNext = order === $91ca15859685b28b$var$ORDER_NEXT;\n const nextElement = element || $91ca15859685b28b$var$getNextActiveElement(this._getItems(), activeElement, isNext, this._config.wrap);\n if (nextElement === activeElement) return;\n const nextElementIndex = this._getItemIndex(nextElement);\n const triggerEvent = (eventName)=>{\n return $91ca15859685b28b$var$EventHandler.trigger(this._element, eventName, {\n relatedTarget: nextElement,\n direction: this._orderToDirection(order),\n from: this._getItemIndex(activeElement),\n to: nextElementIndex\n });\n };\n const slideEvent = triggerEvent($91ca15859685b28b$var$EVENT_SLIDE);\n if (slideEvent.defaultPrevented) return;\n if (!activeElement || !nextElement) // Some weirdness is happening, so we bail\n // TODO: change tests that use empty divs to avoid this check\n return;\n const isCycling = Boolean(this._interval);\n this.pause();\n this._isSliding = true;\n this._setActiveIndicatorElement(nextElementIndex);\n this._activeElement = nextElement;\n const directionalClassName = isNext ? $91ca15859685b28b$var$CLASS_NAME_START : $91ca15859685b28b$var$CLASS_NAME_END;\n const orderClassName = isNext ? $91ca15859685b28b$var$CLASS_NAME_NEXT : $91ca15859685b28b$var$CLASS_NAME_PREV;\n nextElement.classList.add(orderClassName);\n $91ca15859685b28b$var$reflow(nextElement);\n activeElement.classList.add(directionalClassName);\n nextElement.classList.add(directionalClassName);\n const completeCallBack = ()=>{\n nextElement.classList.remove(directionalClassName, orderClassName);\n nextElement.classList.add($91ca15859685b28b$var$CLASS_NAME_ACTIVE$2);\n activeElement.classList.remove($91ca15859685b28b$var$CLASS_NAME_ACTIVE$2, orderClassName, directionalClassName);\n this._isSliding = false;\n triggerEvent($91ca15859685b28b$var$EVENT_SLID);\n };\n this._queueCallback(completeCallBack, activeElement, this._isAnimated());\n if (isCycling) this.cycle();\n }\n _isAnimated() {\n return this._element.classList.contains($91ca15859685b28b$var$CLASS_NAME_SLIDE);\n }\n _getActive() {\n return $91ca15859685b28b$var$SelectorEngine.findOne($91ca15859685b28b$var$SELECTOR_ACTIVE_ITEM, this._element);\n }\n _getItems() {\n return $91ca15859685b28b$var$SelectorEngine.find($91ca15859685b28b$var$SELECTOR_ITEM, this._element);\n }\n _clearInterval() {\n if (this._interval) {\n clearInterval(this._interval);\n this._interval = null;\n }\n }\n _directionToOrder(direction) {\n if ($91ca15859685b28b$var$isRTL()) return direction === $91ca15859685b28b$var$DIRECTION_LEFT ? $91ca15859685b28b$var$ORDER_PREV : $91ca15859685b28b$var$ORDER_NEXT;\n return direction === $91ca15859685b28b$var$DIRECTION_LEFT ? $91ca15859685b28b$var$ORDER_NEXT : $91ca15859685b28b$var$ORDER_PREV;\n }\n _orderToDirection(order) {\n if ($91ca15859685b28b$var$isRTL()) return order === $91ca15859685b28b$var$ORDER_PREV ? $91ca15859685b28b$var$DIRECTION_LEFT : $91ca15859685b28b$var$DIRECTION_RIGHT;\n return order === $91ca15859685b28b$var$ORDER_PREV ? $91ca15859685b28b$var$DIRECTION_RIGHT : $91ca15859685b28b$var$DIRECTION_LEFT;\n }\n // Static\n static jQueryInterface(config) {\n return this.each(function() {\n const data = $91ca15859685b28b$export$144901db2ea8e967.getOrCreateInstance(this, config);\n if (typeof config === \"number\") {\n data.to(config);\n return;\n }\n if (typeof config === \"string\") {\n if (data[config] === undefined || config.startsWith(\"_\") || config === \"constructor\") throw new TypeError(`No method named \"${config}\"`);\n data[config]();\n }\n });\n }\n}\n/**\n * Data API implementation\n */ $91ca15859685b28b$var$EventHandler.on(document, $91ca15859685b28b$var$EVENT_CLICK_DATA_API$5, $91ca15859685b28b$var$SELECTOR_DATA_SLIDE, function(event) {\n const target = $91ca15859685b28b$var$SelectorEngine.getElementFromSelector(this);\n if (!target || !target.classList.contains($91ca15859685b28b$var$CLASS_NAME_CAROUSEL)) return;\n event.preventDefault();\n const carousel = $91ca15859685b28b$export$144901db2ea8e967.getOrCreateInstance(target);\n const slideIndex = this.getAttribute(\"data-bs-slide-to\");\n if (slideIndex) {\n carousel.to(slideIndex);\n carousel._maybeEnableCycle();\n return;\n }\n if ($91ca15859685b28b$var$Manipulator.getDataAttribute(this, \"slide\") === \"next\") {\n carousel.next();\n carousel._maybeEnableCycle();\n return;\n }\n carousel.prev();\n carousel._maybeEnableCycle();\n});\n$91ca15859685b28b$var$EventHandler.on(window, $91ca15859685b28b$var$EVENT_LOAD_DATA_API$3, ()=>{\n const carousels = $91ca15859685b28b$var$SelectorEngine.find($91ca15859685b28b$var$SELECTOR_DATA_RIDE);\n for (const carousel of carousels)$91ca15859685b28b$export$144901db2ea8e967.getOrCreateInstance(carousel);\n});\n/**\n * jQuery\n */ $91ca15859685b28b$var$defineJQueryPlugin($91ca15859685b28b$export$144901db2ea8e967);\n/**\n * --------------------------------------------------------------------------\n * Bootstrap collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */ /**\n * Constants\n */ const $91ca15859685b28b$var$NAME$b = \"collapse\";\nconst $91ca15859685b28b$var$DATA_KEY$7 = \"bs.collapse\";\nconst $91ca15859685b28b$var$EVENT_KEY$7 = `.${$91ca15859685b28b$var$DATA_KEY$7}`;\nconst $91ca15859685b28b$var$DATA_API_KEY$4 = \".data-api\";\nconst $91ca15859685b28b$var$EVENT_SHOW$6 = `show${$91ca15859685b28b$var$EVENT_KEY$7}`;\nconst $91ca15859685b28b$var$EVENT_SHOWN$6 = `shown${$91ca15859685b28b$var$EVENT_KEY$7}`;\nconst $91ca15859685b28b$var$EVENT_HIDE$6 = `hide${$91ca15859685b28b$var$EVENT_KEY$7}`;\nconst $91ca15859685b28b$var$EVENT_HIDDEN$6 = `hidden${$91ca15859685b28b$var$EVENT_KEY$7}`;\nconst $91ca15859685b28b$var$EVENT_CLICK_DATA_API$4 = `click${$91ca15859685b28b$var$EVENT_KEY$7}${$91ca15859685b28b$var$DATA_API_KEY$4}`;\nconst $91ca15859685b28b$var$CLASS_NAME_SHOW$7 = \"show\";\nconst $91ca15859685b28b$var$CLASS_NAME_COLLAPSE = \"collapse\";\nconst $91ca15859685b28b$var$CLASS_NAME_COLLAPSING = \"collapsing\";\nconst $91ca15859685b28b$var$CLASS_NAME_COLLAPSED = \"collapsed\";\nconst $91ca15859685b28b$var$CLASS_NAME_DEEPER_CHILDREN = `:scope .${$91ca15859685b28b$var$CLASS_NAME_COLLAPSE} .${$91ca15859685b28b$var$CLASS_NAME_COLLAPSE}`;\nconst $91ca15859685b28b$var$CLASS_NAME_HORIZONTAL = \"collapse-horizontal\";\nconst $91ca15859685b28b$var$WIDTH = \"width\";\nconst $91ca15859685b28b$var$HEIGHT = \"height\";\nconst $91ca15859685b28b$var$SELECTOR_ACTIVES = \".collapse.show, .collapse.collapsing\";\nconst $91ca15859685b28b$var$SELECTOR_DATA_TOGGLE$4 = '[data-bs-toggle=\"collapse\"]';\nconst $91ca15859685b28b$var$Default$a = {\n parent: null,\n toggle: true\n};\nconst $91ca15859685b28b$var$DefaultType$a = {\n parent: \"(null|element)\",\n toggle: \"boolean\"\n};\n/**\n * Class definition\n */ class $91ca15859685b28b$export$78768a9af065a7b extends $91ca15859685b28b$var$BaseComponent {\n constructor(element, config){\n super(element, config);\n this._isTransitioning = false;\n this._triggerArray = [];\n const toggleList = $91ca15859685b28b$var$SelectorEngine.find($91ca15859685b28b$var$SELECTOR_DATA_TOGGLE$4);\n for (const elem of toggleList){\n const selector = $91ca15859685b28b$var$SelectorEngine.getSelectorFromElement(elem);\n const filterElement = $91ca15859685b28b$var$SelectorEngine.find(selector).filter((foundElement)=>foundElement === this._element);\n if (selector !== null && filterElement.length) this._triggerArray.push(elem);\n }\n this._initializeChildren();\n if (!this._config.parent) this._addAriaAndCollapsedClass(this._triggerArray, this._isShown());\n if (this._config.toggle) this.toggle();\n }\n // Getters\n static get Default() {\n return $91ca15859685b28b$var$Default$a;\n }\n static get DefaultType() {\n return $91ca15859685b28b$var$DefaultType$a;\n }\n static get NAME() {\n return $91ca15859685b28b$var$NAME$b;\n }\n // Public\n toggle() {\n if (this._isShown()) this.hide();\n else this.show();\n }\n show() {\n if (this._isTransitioning || this._isShown()) return;\n let activeChildren = [];\n // find active children\n if (this._config.parent) activeChildren = this._getFirstLevelChildren($91ca15859685b28b$var$SELECTOR_ACTIVES).filter((element)=>element !== this._element).map((element)=>$91ca15859685b28b$export$78768a9af065a7b.getOrCreateInstance(element, {\n toggle: false\n }));\n if (activeChildren.length && activeChildren[0]._isTransitioning) return;\n const startEvent = $91ca15859685b28b$var$EventHandler.trigger(this._element, $91ca15859685b28b$var$EVENT_SHOW$6);\n if (startEvent.defaultPrevented) return;\n for (const activeInstance of activeChildren)activeInstance.hide();\n const dimension = this._getDimension();\n this._element.classList.remove($91ca15859685b28b$var$CLASS_NAME_COLLAPSE);\n this._element.classList.add($91ca15859685b28b$var$CLASS_NAME_COLLAPSING);\n this._element.style[dimension] = 0;\n this._addAriaAndCollapsedClass(this._triggerArray, true);\n this._isTransitioning = true;\n const complete = ()=>{\n this._isTransitioning = false;\n this._element.classList.remove($91ca15859685b28b$var$CLASS_NAME_COLLAPSING);\n this._element.classList.add($91ca15859685b28b$var$CLASS_NAME_COLLAPSE, $91ca15859685b28b$var$CLASS_NAME_SHOW$7);\n this._element.style[dimension] = \"\";\n $91ca15859685b28b$var$EventHandler.trigger(this._element, $91ca15859685b28b$var$EVENT_SHOWN$6);\n };\n const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);\n const scrollSize = `scroll${capitalizedDimension}`;\n this._queueCallback(complete, this._element, true);\n this._element.style[dimension] = `${this._element[scrollSize]}px`;\n }\n hide() {\n if (this._isTransitioning || !this._isShown()) return;\n const startEvent = $91ca15859685b28b$var$EventHandler.trigger(this._element, $91ca15859685b28b$var$EVENT_HIDE$6);\n if (startEvent.defaultPrevented) return;\n const dimension = this._getDimension();\n this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`;\n $91ca15859685b28b$var$reflow(this._element);\n this._element.classList.add($91ca15859685b28b$var$CLASS_NAME_COLLAPSING);\n this._element.classList.remove($91ca15859685b28b$var$CLASS_NAME_COLLAPSE, $91ca15859685b28b$var$CLASS_NAME_SHOW$7);\n for (const trigger of this._triggerArray){\n const element = $91ca15859685b28b$var$SelectorEngine.getElementFromSelector(trigger);\n if (element && !this._isShown(element)) this._addAriaAndCollapsedClass([\n trigger\n ], false);\n }\n this._isTransitioning = true;\n const complete = ()=>{\n this._isTransitioning = false;\n this._element.classList.remove($91ca15859685b28b$var$CLASS_NAME_COLLAPSING);\n this._element.classList.add($91ca15859685b28b$var$CLASS_NAME_COLLAPSE);\n $91ca15859685b28b$var$EventHandler.trigger(this._element, $91ca15859685b28b$var$EVENT_HIDDEN$6);\n };\n this._element.style[dimension] = \"\";\n this._queueCallback(complete, this._element, true);\n }\n _isShown(element = this._element) {\n return element.classList.contains($91ca15859685b28b$var$CLASS_NAME_SHOW$7);\n }\n // Private\n _configAfterMerge(config) {\n config.toggle = Boolean(config.toggle); // Coerce string values\n config.parent = $91ca15859685b28b$var$getElement(config.parent);\n return config;\n }\n _getDimension() {\n return this._element.classList.contains($91ca15859685b28b$var$CLASS_NAME_HORIZONTAL) ? $91ca15859685b28b$var$WIDTH : $91ca15859685b28b$var$HEIGHT;\n }\n _initializeChildren() {\n if (!this._config.parent) return;\n const children = this._getFirstLevelChildren($91ca15859685b28b$var$SELECTOR_DATA_TOGGLE$4);\n for (const element of children){\n const selected = $91ca15859685b28b$var$SelectorEngine.getElementFromSelector(element);\n if (selected) this._addAriaAndCollapsedClass([\n element\n ], this._isShown(selected));\n }\n }\n _getFirstLevelChildren(selector) {\n const children = $91ca15859685b28b$var$SelectorEngine.find($91ca15859685b28b$var$CLASS_NAME_DEEPER_CHILDREN, this._config.parent);\n // remove children if greater depth\n return $91ca15859685b28b$var$SelectorEngine.find(selector, this._config.parent).filter((element)=>!children.includes(element));\n }\n _addAriaAndCollapsedClass(triggerArray, isOpen) {\n if (!triggerArray.length) return;\n for (const element of triggerArray){\n element.classList.toggle($91ca15859685b28b$var$CLASS_NAME_COLLAPSED, !isOpen);\n element.setAttribute(\"aria-expanded\", isOpen);\n }\n }\n // Static\n static jQueryInterface(config) {\n const _config = {};\n if (typeof config === \"string\" && /show|hide/.test(config)) _config.toggle = false;\n return this.each(function() {\n const data = $91ca15859685b28b$export$78768a9af065a7b.getOrCreateInstance(this, _config);\n if (typeof config === \"string\") {\n if (typeof data[config] === \"undefined\") throw new TypeError(`No method named \"${config}\"`);\n data[config]();\n }\n });\n }\n}\n/**\n * Data API implementation\n */ $91ca15859685b28b$var$EventHandler.on(document, $91ca15859685b28b$var$EVENT_CLICK_DATA_API$4, $91ca15859685b28b$var$SELECTOR_DATA_TOGGLE$4, function(event) {\n // preventDefault only for elements (which change the URL) not inside the collapsible element\n if (event.target.tagName === \"A\" || event.delegateTarget && event.delegateTarget.tagName === \"A\") event.preventDefault();\n for (const element of $91ca15859685b28b$var$SelectorEngine.getMultipleElementsFromSelector(this))$91ca15859685b28b$export$78768a9af065a7b.getOrCreateInstance(element, {\n toggle: false\n }).toggle();\n});\n/**\n * jQuery\n */ $91ca15859685b28b$var$defineJQueryPlugin($91ca15859685b28b$export$78768a9af065a7b);\n/**\n * --------------------------------------------------------------------------\n * Bootstrap dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */ /**\n * Constants\n */ const $91ca15859685b28b$var$NAME$a = \"dropdown\";\nconst $91ca15859685b28b$var$DATA_KEY$6 = \"bs.dropdown\";\nconst $91ca15859685b28b$var$EVENT_KEY$6 = `.${$91ca15859685b28b$var$DATA_KEY$6}`;\nconst $91ca15859685b28b$var$DATA_API_KEY$3 = \".data-api\";\nconst $91ca15859685b28b$var$ESCAPE_KEY$2 = \"Escape\";\nconst $91ca15859685b28b$var$TAB_KEY$1 = \"Tab\";\nconst $91ca15859685b28b$var$ARROW_UP_KEY$1 = \"ArrowUp\";\nconst $91ca15859685b28b$var$ARROW_DOWN_KEY$1 = \"ArrowDown\";\nconst $91ca15859685b28b$var$RIGHT_MOUSE_BUTTON = 2; // MouseEvent.button value for the secondary button, usually the right button\nconst $91ca15859685b28b$var$EVENT_HIDE$5 = `hide${$91ca15859685b28b$var$EVENT_KEY$6}`;\nconst $91ca15859685b28b$var$EVENT_HIDDEN$5 = `hidden${$91ca15859685b28b$var$EVENT_KEY$6}`;\nconst $91ca15859685b28b$var$EVENT_SHOW$5 = `show${$91ca15859685b28b$var$EVENT_KEY$6}`;\nconst $91ca15859685b28b$var$EVENT_SHOWN$5 = `shown${$91ca15859685b28b$var$EVENT_KEY$6}`;\nconst $91ca15859685b28b$var$EVENT_CLICK_DATA_API$3 = `click${$91ca15859685b28b$var$EVENT_KEY$6}${$91ca15859685b28b$var$DATA_API_KEY$3}`;\nconst $91ca15859685b28b$var$EVENT_KEYDOWN_DATA_API = `keydown${$91ca15859685b28b$var$EVENT_KEY$6}${$91ca15859685b28b$var$DATA_API_KEY$3}`;\nconst $91ca15859685b28b$var$EVENT_KEYUP_DATA_API = `keyup${$91ca15859685b28b$var$EVENT_KEY$6}${$91ca15859685b28b$var$DATA_API_KEY$3}`;\nconst $91ca15859685b28b$var$CLASS_NAME_SHOW$6 = \"show\";\nconst $91ca15859685b28b$var$CLASS_NAME_DROPUP = \"dropup\";\nconst $91ca15859685b28b$var$CLASS_NAME_DROPEND = \"dropend\";\nconst $91ca15859685b28b$var$CLASS_NAME_DROPSTART = \"dropstart\";\nconst $91ca15859685b28b$var$CLASS_NAME_DROPUP_CENTER = \"dropup-center\";\nconst $91ca15859685b28b$var$CLASS_NAME_DROPDOWN_CENTER = \"dropdown-center\";\nconst $91ca15859685b28b$var$SELECTOR_DATA_TOGGLE$3 = '[data-bs-toggle=\"dropdown\"]:not(.disabled):not(:disabled)';\nconst $91ca15859685b28b$var$SELECTOR_DATA_TOGGLE_SHOWN = `${$91ca15859685b28b$var$SELECTOR_DATA_TOGGLE$3}.${$91ca15859685b28b$var$CLASS_NAME_SHOW$6}`;\nconst $91ca15859685b28b$var$SELECTOR_MENU = \".dropdown-menu\";\nconst $91ca15859685b28b$var$SELECTOR_NAVBAR = \".navbar\";\nconst $91ca15859685b28b$var$SELECTOR_NAVBAR_NAV = \".navbar-nav\";\nconst $91ca15859685b28b$var$SELECTOR_VISIBLE_ITEMS = \".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)\";\nconst $91ca15859685b28b$var$PLACEMENT_TOP = $91ca15859685b28b$var$isRTL() ? \"top-end\" : \"top-start\";\nconst $91ca15859685b28b$var$PLACEMENT_TOPEND = $91ca15859685b28b$var$isRTL() ? \"top-start\" : \"top-end\";\nconst $91ca15859685b28b$var$PLACEMENT_BOTTOM = $91ca15859685b28b$var$isRTL() ? \"bottom-end\" : \"bottom-start\";\nconst $91ca15859685b28b$var$PLACEMENT_BOTTOMEND = $91ca15859685b28b$var$isRTL() ? \"bottom-start\" : \"bottom-end\";\nconst $91ca15859685b28b$var$PLACEMENT_RIGHT = $91ca15859685b28b$var$isRTL() ? \"left-start\" : \"right-start\";\nconst $91ca15859685b28b$var$PLACEMENT_LEFT = $91ca15859685b28b$var$isRTL() ? \"right-start\" : \"left-start\";\nconst $91ca15859685b28b$var$PLACEMENT_TOPCENTER = \"top\";\nconst $91ca15859685b28b$var$PLACEMENT_BOTTOMCENTER = \"bottom\";\nconst $91ca15859685b28b$var$Default$9 = {\n autoClose: true,\n boundary: \"clippingParents\",\n display: \"dynamic\",\n offset: [\n 0,\n 2\n ],\n popperConfig: null,\n reference: \"toggle\"\n};\nconst $91ca15859685b28b$var$DefaultType$9 = {\n autoClose: \"(boolean|string)\",\n boundary: \"(string|element)\",\n display: \"string\",\n offset: \"(array|string|function)\",\n popperConfig: \"(null|object|function)\",\n reference: \"(string|element|object)\"\n};\n/**\n * Class definition\n */ class $91ca15859685b28b$export$931cbfb6bfb85fc extends $91ca15859685b28b$var$BaseComponent {\n constructor(element, config){\n super(element, config);\n this._popper = null;\n this._parent = this._element.parentNode; // dropdown wrapper\n // TODO: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/\n this._menu = $91ca15859685b28b$var$SelectorEngine.next(this._element, $91ca15859685b28b$var$SELECTOR_MENU)[0] || $91ca15859685b28b$var$SelectorEngine.prev(this._element, $91ca15859685b28b$var$SELECTOR_MENU)[0] || $91ca15859685b28b$var$SelectorEngine.findOne($91ca15859685b28b$var$SELECTOR_MENU, this._parent);\n this._inNavbar = this._detectNavbar();\n }\n // Getters\n static get Default() {\n return $91ca15859685b28b$var$Default$9;\n }\n static get DefaultType() {\n return $91ca15859685b28b$var$DefaultType$9;\n }\n static get NAME() {\n return $91ca15859685b28b$var$NAME$a;\n }\n // Public\n toggle() {\n return this._isShown() ? this.hide() : this.show();\n }\n show() {\n if ($91ca15859685b28b$var$isDisabled(this._element) || this._isShown()) return;\n const relatedTarget = {\n relatedTarget: this._element\n };\n const showEvent = $91ca15859685b28b$var$EventHandler.trigger(this._element, $91ca15859685b28b$var$EVENT_SHOW$5, relatedTarget);\n if (showEvent.defaultPrevented) return;\n this._createPopper();\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if (\"ontouchstart\" in document.documentElement && !this._parent.closest($91ca15859685b28b$var$SELECTOR_NAVBAR_NAV)) for (const element of [].concat(...document.body.children))$91ca15859685b28b$var$EventHandler.on(element, \"mouseover\", $91ca15859685b28b$var$noop);\n this._element.focus();\n this._element.setAttribute(\"aria-expanded\", true);\n this._menu.classList.add($91ca15859685b28b$var$CLASS_NAME_SHOW$6);\n this._element.classList.add($91ca15859685b28b$var$CLASS_NAME_SHOW$6);\n $91ca15859685b28b$var$EventHandler.trigger(this._element, $91ca15859685b28b$var$EVENT_SHOWN$5, relatedTarget);\n }\n hide() {\n if ($91ca15859685b28b$var$isDisabled(this._element) || !this._isShown()) return;\n const relatedTarget = {\n relatedTarget: this._element\n };\n this._completeHide(relatedTarget);\n }\n dispose() {\n if (this._popper) this._popper.destroy();\n super.dispose();\n }\n update() {\n this._inNavbar = this._detectNavbar();\n if (this._popper) this._popper.update();\n }\n // Private\n _completeHide(relatedTarget) {\n const hideEvent = $91ca15859685b28b$var$EventHandler.trigger(this._element, $91ca15859685b28b$var$EVENT_HIDE$5, relatedTarget);\n if (hideEvent.defaultPrevented) return;\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if (\"ontouchstart\" in document.documentElement) for (const element of [].concat(...document.body.children))$91ca15859685b28b$var$EventHandler.off(element, \"mouseover\", $91ca15859685b28b$var$noop);\n if (this._popper) this._popper.destroy();\n this._menu.classList.remove($91ca15859685b28b$var$CLASS_NAME_SHOW$6);\n this._element.classList.remove($91ca15859685b28b$var$CLASS_NAME_SHOW$6);\n this._element.setAttribute(\"aria-expanded\", \"false\");\n $91ca15859685b28b$var$Manipulator.removeDataAttribute(this._menu, \"popper\");\n $91ca15859685b28b$var$EventHandler.trigger(this._element, $91ca15859685b28b$var$EVENT_HIDDEN$5, relatedTarget);\n }\n _getConfig(config) {\n config = super._getConfig(config);\n if (typeof config.reference === \"object\" && !$91ca15859685b28b$var$isElement(config.reference) && typeof config.reference.getBoundingClientRect !== \"function\") // Popper virtual elements require a getBoundingClientRect method\n throw new TypeError(`${$91ca15859685b28b$var$NAME$a.toUpperCase()}: Option \"reference\" provided type \"object\" without a required \"getBoundingClientRect\" method.`);\n return config;\n }\n _createPopper() {\n if (typeof $d37552697cc5ea39$exports === \"undefined\") throw new TypeError(\"Bootstrap's dropdowns require Popper (https://popper.js.org)\");\n let referenceElement = this._element;\n if (this._config.reference === \"parent\") referenceElement = this._parent;\n else if ($91ca15859685b28b$var$isElement(this._config.reference)) referenceElement = $91ca15859685b28b$var$getElement(this._config.reference);\n else if (typeof this._config.reference === \"object\") referenceElement = this._config.reference;\n const popperConfig = this._getPopperConfig();\n this._popper = $d37552697cc5ea39$exports.createPopper(referenceElement, this._menu, popperConfig);\n }\n _isShown() {\n return this._menu.classList.contains($91ca15859685b28b$var$CLASS_NAME_SHOW$6);\n }\n _getPlacement() {\n const parentDropdown = this._parent;\n if (parentDropdown.classList.contains($91ca15859685b28b$var$CLASS_NAME_DROPEND)) return $91ca15859685b28b$var$PLACEMENT_RIGHT;\n if (parentDropdown.classList.contains($91ca15859685b28b$var$CLASS_NAME_DROPSTART)) return $91ca15859685b28b$var$PLACEMENT_LEFT;\n if (parentDropdown.classList.contains($91ca15859685b28b$var$CLASS_NAME_DROPUP_CENTER)) return $91ca15859685b28b$var$PLACEMENT_TOPCENTER;\n if (parentDropdown.classList.contains($91ca15859685b28b$var$CLASS_NAME_DROPDOWN_CENTER)) return $91ca15859685b28b$var$PLACEMENT_BOTTOMCENTER;\n // We need to trim the value because custom properties can also include spaces\n const isEnd = getComputedStyle(this._menu).getPropertyValue(\"--bs-position\").trim() === \"end\";\n if (parentDropdown.classList.contains($91ca15859685b28b$var$CLASS_NAME_DROPUP)) return isEnd ? $91ca15859685b28b$var$PLACEMENT_TOPEND : $91ca15859685b28b$var$PLACEMENT_TOP;\n return isEnd ? $91ca15859685b28b$var$PLACEMENT_BOTTOMEND : $91ca15859685b28b$var$PLACEMENT_BOTTOM;\n }\n _detectNavbar() {\n return this._element.closest($91ca15859685b28b$var$SELECTOR_NAVBAR) !== null;\n }\n _getOffset() {\n const { offset: offset } = this._config;\n if (typeof offset === \"string\") return offset.split(\",\").map((value)=>Number.parseInt(value, 10));\n if (typeof offset === \"function\") return (popperData)=>offset(popperData, this._element);\n return offset;\n }\n _getPopperConfig() {\n const defaultBsPopperConfig = {\n placement: this._getPlacement(),\n modifiers: [\n {\n name: \"preventOverflow\",\n options: {\n boundary: this._config.boundary\n }\n },\n {\n name: \"offset\",\n options: {\n offset: this._getOffset()\n }\n }\n ]\n };\n // Disable Popper if we have a static display or Dropdown is in Navbar\n if (this._inNavbar || this._config.display === \"static\") {\n $91ca15859685b28b$var$Manipulator.setDataAttribute(this._menu, \"popper\", \"static\"); // TODO: v6 remove\n defaultBsPopperConfig.modifiers = [\n {\n name: \"applyStyles\",\n enabled: false\n }\n ];\n }\n return {\n ...defaultBsPopperConfig,\n ...$91ca15859685b28b$var$execute(this._config.popperConfig, [\n defaultBsPopperConfig\n ])\n };\n }\n _selectMenuItem({ key: key, target: target }) {\n const items = $91ca15859685b28b$var$SelectorEngine.find($91ca15859685b28b$var$SELECTOR_VISIBLE_ITEMS, this._menu).filter((element)=>$91ca15859685b28b$var$isVisible(element));\n if (!items.length) return;\n // if target isn't included in items (e.g. when expanding the dropdown)\n // allow cycling to get the last item in case key equals ARROW_UP_KEY\n $91ca15859685b28b$var$getNextActiveElement(items, target, key === $91ca15859685b28b$var$ARROW_DOWN_KEY$1, !items.includes(target)).focus();\n }\n // Static\n static jQueryInterface(config) {\n return this.each(function() {\n const data = $91ca15859685b28b$export$931cbfb6bfb85fc.getOrCreateInstance(this, config);\n if (typeof config !== \"string\") return;\n if (typeof data[config] === \"undefined\") throw new TypeError(`No method named \"${config}\"`);\n data[config]();\n });\n }\n static clearMenus(event) {\n if (event.button === $91ca15859685b28b$var$RIGHT_MOUSE_BUTTON || event.type === \"keyup\" && event.key !== $91ca15859685b28b$var$TAB_KEY$1) return;\n const openToggles = $91ca15859685b28b$var$SelectorEngine.find($91ca15859685b28b$var$SELECTOR_DATA_TOGGLE_SHOWN);\n for (const toggle of openToggles){\n const context = $91ca15859685b28b$export$931cbfb6bfb85fc.getInstance(toggle);\n if (!context || context._config.autoClose === false) continue;\n const composedPath = event.composedPath();\n const isMenuTarget = composedPath.includes(context._menu);\n if (composedPath.includes(context._element) || context._config.autoClose === \"inside\" && !isMenuTarget || context._config.autoClose === \"outside\" && isMenuTarget) continue;\n // Tab navigation through the dropdown menu or events from contained inputs shouldn't close the menu\n if (context._menu.contains(event.target) && (event.type === \"keyup\" && event.key === $91ca15859685b28b$var$TAB_KEY$1 || /input|select|option|textarea|form/i.test(event.target.tagName))) continue;\n const relatedTarget = {\n relatedTarget: context._element\n };\n if (event.type === \"click\") relatedTarget.clickEvent = event;\n context._completeHide(relatedTarget);\n }\n }\n static dataApiKeydownHandler(event) {\n // If not an UP | DOWN | ESCAPE key => not a dropdown command\n // If input/textarea && if key is other than ESCAPE => not a dropdown command\n const isInput = /input|textarea/i.test(event.target.tagName);\n const isEscapeEvent = event.key === $91ca15859685b28b$var$ESCAPE_KEY$2;\n const isUpOrDownEvent = [\n $91ca15859685b28b$var$ARROW_UP_KEY$1,\n $91ca15859685b28b$var$ARROW_DOWN_KEY$1\n ].includes(event.key);\n if (!isUpOrDownEvent && !isEscapeEvent) return;\n if (isInput && !isEscapeEvent) return;\n event.preventDefault();\n // TODO: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/\n const getToggleButton = this.matches($91ca15859685b28b$var$SELECTOR_DATA_TOGGLE$3) ? this : $91ca15859685b28b$var$SelectorEngine.prev(this, $91ca15859685b28b$var$SELECTOR_DATA_TOGGLE$3)[0] || $91ca15859685b28b$var$SelectorEngine.next(this, $91ca15859685b28b$var$SELECTOR_DATA_TOGGLE$3)[0] || $91ca15859685b28b$var$SelectorEngine.findOne($91ca15859685b28b$var$SELECTOR_DATA_TOGGLE$3, event.delegateTarget.parentNode);\n const instance = $91ca15859685b28b$export$931cbfb6bfb85fc.getOrCreateInstance(getToggleButton);\n if (isUpOrDownEvent) {\n event.stopPropagation();\n instance.show();\n instance._selectMenuItem(event);\n return;\n }\n if (instance._isShown()) {\n // else is escape and we check if it is shown\n event.stopPropagation();\n instance.hide();\n getToggleButton.focus();\n }\n }\n}\n/**\n * Data API implementation\n */ $91ca15859685b28b$var$EventHandler.on(document, $91ca15859685b28b$var$EVENT_KEYDOWN_DATA_API, $91ca15859685b28b$var$SELECTOR_DATA_TOGGLE$3, $91ca15859685b28b$export$931cbfb6bfb85fc.dataApiKeydownHandler);\n$91ca15859685b28b$var$EventHandler.on(document, $91ca15859685b28b$var$EVENT_KEYDOWN_DATA_API, $91ca15859685b28b$var$SELECTOR_MENU, $91ca15859685b28b$export$931cbfb6bfb85fc.dataApiKeydownHandler);\n$91ca15859685b28b$var$EventHandler.on(document, $91ca15859685b28b$var$EVENT_CLICK_DATA_API$3, $91ca15859685b28b$export$931cbfb6bfb85fc.clearMenus);\n$91ca15859685b28b$var$EventHandler.on(document, $91ca15859685b28b$var$EVENT_KEYUP_DATA_API, $91ca15859685b28b$export$931cbfb6bfb85fc.clearMenus);\n$91ca15859685b28b$var$EventHandler.on(document, $91ca15859685b28b$var$EVENT_CLICK_DATA_API$3, $91ca15859685b28b$var$SELECTOR_DATA_TOGGLE$3, function(event) {\n event.preventDefault();\n $91ca15859685b28b$export$931cbfb6bfb85fc.getOrCreateInstance(this).toggle();\n});\n/**\n * jQuery\n */ $91ca15859685b28b$var$defineJQueryPlugin($91ca15859685b28b$export$931cbfb6bfb85fc);\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/backdrop.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */ /**\n * Constants\n */ const $91ca15859685b28b$var$NAME$9 = \"backdrop\";\nconst $91ca15859685b28b$var$CLASS_NAME_FADE$4 = \"fade\";\nconst $91ca15859685b28b$var$CLASS_NAME_SHOW$5 = \"show\";\nconst $91ca15859685b28b$var$EVENT_MOUSEDOWN = `mousedown.bs.${$91ca15859685b28b$var$NAME$9}`;\nconst $91ca15859685b28b$var$Default$8 = {\n className: \"modal-backdrop\",\n clickCallback: null,\n isAnimated: false,\n isVisible: true,\n // if false, we use the backdrop helper without adding any element to the dom\n rootElement: \"body\" // give the choice to place backdrop under different elements\n};\nconst $91ca15859685b28b$var$DefaultType$8 = {\n className: \"string\",\n clickCallback: \"(function|null)\",\n isAnimated: \"boolean\",\n isVisible: \"boolean\",\n rootElement: \"(element|string)\"\n};\n/**\n * Class definition\n */ class $91ca15859685b28b$var$Backdrop extends $91ca15859685b28b$var$Config {\n constructor(config){\n super();\n this._config = this._getConfig(config);\n this._isAppended = false;\n this._element = null;\n }\n // Getters\n static get Default() {\n return $91ca15859685b28b$var$Default$8;\n }\n static get DefaultType() {\n return $91ca15859685b28b$var$DefaultType$8;\n }\n static get NAME() {\n return $91ca15859685b28b$var$NAME$9;\n }\n // Public\n show(callback) {\n if (!this._config.isVisible) {\n $91ca15859685b28b$var$execute(callback);\n return;\n }\n this._append();\n const element = this._getElement();\n if (this._config.isAnimated) $91ca15859685b28b$var$reflow(element);\n element.classList.add($91ca15859685b28b$var$CLASS_NAME_SHOW$5);\n this._emulateAnimation(()=>{\n $91ca15859685b28b$var$execute(callback);\n });\n }\n hide(callback) {\n if (!this._config.isVisible) {\n $91ca15859685b28b$var$execute(callback);\n return;\n }\n this._getElement().classList.remove($91ca15859685b28b$var$CLASS_NAME_SHOW$5);\n this._emulateAnimation(()=>{\n this.dispose();\n $91ca15859685b28b$var$execute(callback);\n });\n }\n dispose() {\n if (!this._isAppended) return;\n $91ca15859685b28b$var$EventHandler.off(this._element, $91ca15859685b28b$var$EVENT_MOUSEDOWN);\n this._element.remove();\n this._isAppended = false;\n }\n // Private\n _getElement() {\n if (!this._element) {\n const backdrop = document.createElement(\"div\");\n backdrop.className = this._config.className;\n if (this._config.isAnimated) backdrop.classList.add($91ca15859685b28b$var$CLASS_NAME_FADE$4);\n this._element = backdrop;\n }\n return this._element;\n }\n _configAfterMerge(config) {\n // use getElement() with the default \"body\" to get a fresh Element on each instantiation\n config.rootElement = $91ca15859685b28b$var$getElement(config.rootElement);\n return config;\n }\n _append() {\n if (this._isAppended) return;\n const element = this._getElement();\n this._config.rootElement.append(element);\n $91ca15859685b28b$var$EventHandler.on(element, $91ca15859685b28b$var$EVENT_MOUSEDOWN, ()=>{\n $91ca15859685b28b$var$execute(this._config.clickCallback);\n });\n this._isAppended = true;\n }\n _emulateAnimation(callback) {\n $91ca15859685b28b$var$executeAfterTransition(callback, this._getElement(), this._config.isAnimated);\n }\n}\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/focustrap.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */ /**\n * Constants\n */ const $91ca15859685b28b$var$NAME$8 = \"focustrap\";\nconst $91ca15859685b28b$var$DATA_KEY$5 = \"bs.focustrap\";\nconst $91ca15859685b28b$var$EVENT_KEY$5 = `.${$91ca15859685b28b$var$DATA_KEY$5}`;\nconst $91ca15859685b28b$var$EVENT_FOCUSIN$2 = `focusin${$91ca15859685b28b$var$EVENT_KEY$5}`;\nconst $91ca15859685b28b$var$EVENT_KEYDOWN_TAB = `keydown.tab${$91ca15859685b28b$var$EVENT_KEY$5}`;\nconst $91ca15859685b28b$var$TAB_KEY = \"Tab\";\nconst $91ca15859685b28b$var$TAB_NAV_FORWARD = \"forward\";\nconst $91ca15859685b28b$var$TAB_NAV_BACKWARD = \"backward\";\nconst $91ca15859685b28b$var$Default$7 = {\n autofocus: true,\n trapElement: null // The element to trap focus inside of\n};\nconst $91ca15859685b28b$var$DefaultType$7 = {\n autofocus: \"boolean\",\n trapElement: \"element\"\n};\n/**\n * Class definition\n */ class $91ca15859685b28b$var$FocusTrap extends $91ca15859685b28b$var$Config {\n constructor(config){\n super();\n this._config = this._getConfig(config);\n this._isActive = false;\n this._lastTabNavDirection = null;\n }\n // Getters\n static get Default() {\n return $91ca15859685b28b$var$Default$7;\n }\n static get DefaultType() {\n return $91ca15859685b28b$var$DefaultType$7;\n }\n static get NAME() {\n return $91ca15859685b28b$var$NAME$8;\n }\n // Public\n activate() {\n if (this._isActive) return;\n if (this._config.autofocus) this._config.trapElement.focus();\n $91ca15859685b28b$var$EventHandler.off(document, $91ca15859685b28b$var$EVENT_KEY$5); // guard against infinite focus loop\n $91ca15859685b28b$var$EventHandler.on(document, $91ca15859685b28b$var$EVENT_FOCUSIN$2, (event)=>this._handleFocusin(event));\n $91ca15859685b28b$var$EventHandler.on(document, $91ca15859685b28b$var$EVENT_KEYDOWN_TAB, (event)=>this._handleKeydown(event));\n this._isActive = true;\n }\n deactivate() {\n if (!this._isActive) return;\n this._isActive = false;\n $91ca15859685b28b$var$EventHandler.off(document, $91ca15859685b28b$var$EVENT_KEY$5);\n }\n // Private\n _handleFocusin(event) {\n const { trapElement: trapElement } = this._config;\n if (event.target === document || event.target === trapElement || trapElement.contains(event.target)) return;\n const elements = $91ca15859685b28b$var$SelectorEngine.focusableChildren(trapElement);\n if (elements.length === 0) trapElement.focus();\n else if (this._lastTabNavDirection === $91ca15859685b28b$var$TAB_NAV_BACKWARD) elements[elements.length - 1].focus();\n else elements[0].focus();\n }\n _handleKeydown(event) {\n if (event.key !== $91ca15859685b28b$var$TAB_KEY) return;\n this._lastTabNavDirection = event.shiftKey ? $91ca15859685b28b$var$TAB_NAV_BACKWARD : $91ca15859685b28b$var$TAB_NAV_FORWARD;\n }\n}\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/scrollBar.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */ /**\n * Constants\n */ const $91ca15859685b28b$var$SELECTOR_FIXED_CONTENT = \".fixed-top, .fixed-bottom, .is-fixed, .sticky-top\";\nconst $91ca15859685b28b$var$SELECTOR_STICKY_CONTENT = \".sticky-top\";\nconst $91ca15859685b28b$var$PROPERTY_PADDING = \"padding-right\";\nconst $91ca15859685b28b$var$PROPERTY_MARGIN = \"margin-right\";\n/**\n * Class definition\n */ class $91ca15859685b28b$var$ScrollBarHelper {\n constructor(){\n this._element = document.body;\n }\n // Public\n getWidth() {\n // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes\n const documentWidth = document.documentElement.clientWidth;\n return Math.abs(window.innerWidth - documentWidth);\n }\n hide() {\n const width = this.getWidth();\n this._disableOverFlow();\n // give padding to element to balance the hidden scrollbar width\n this._setElementAttributes(this._element, $91ca15859685b28b$var$PROPERTY_PADDING, (calculatedValue)=>calculatedValue + width);\n // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth\n this._setElementAttributes($91ca15859685b28b$var$SELECTOR_FIXED_CONTENT, $91ca15859685b28b$var$PROPERTY_PADDING, (calculatedValue)=>calculatedValue + width);\n this._setElementAttributes($91ca15859685b28b$var$SELECTOR_STICKY_CONTENT, $91ca15859685b28b$var$PROPERTY_MARGIN, (calculatedValue)=>calculatedValue - width);\n }\n reset() {\n this._resetElementAttributes(this._element, \"overflow\");\n this._resetElementAttributes(this._element, $91ca15859685b28b$var$PROPERTY_PADDING);\n this._resetElementAttributes($91ca15859685b28b$var$SELECTOR_FIXED_CONTENT, $91ca15859685b28b$var$PROPERTY_PADDING);\n this._resetElementAttributes($91ca15859685b28b$var$SELECTOR_STICKY_CONTENT, $91ca15859685b28b$var$PROPERTY_MARGIN);\n }\n isOverflowing() {\n return this.getWidth() > 0;\n }\n // Private\n _disableOverFlow() {\n this._saveInitialAttribute(this._element, \"overflow\");\n this._element.style.overflow = \"hidden\";\n }\n _setElementAttributes(selector, styleProperty, callback) {\n const scrollbarWidth = this.getWidth();\n const manipulationCallBack = (element)=>{\n if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) return;\n this._saveInitialAttribute(element, styleProperty);\n const calculatedValue = window.getComputedStyle(element).getPropertyValue(styleProperty);\n element.style.setProperty(styleProperty, `${callback(Number.parseFloat(calculatedValue))}px`);\n };\n this._applyManipulationCallback(selector, manipulationCallBack);\n }\n _saveInitialAttribute(element, styleProperty) {\n const actualValue = element.style.getPropertyValue(styleProperty);\n if (actualValue) $91ca15859685b28b$var$Manipulator.setDataAttribute(element, styleProperty, actualValue);\n }\n _resetElementAttributes(selector, styleProperty) {\n const manipulationCallBack = (element)=>{\n const value = $91ca15859685b28b$var$Manipulator.getDataAttribute(element, styleProperty);\n // We only want to remove the property if the value is `null`; the value can also be zero\n if (value === null) {\n element.style.removeProperty(styleProperty);\n return;\n }\n $91ca15859685b28b$var$Manipulator.removeDataAttribute(element, styleProperty);\n element.style.setProperty(styleProperty, value);\n };\n this._applyManipulationCallback(selector, manipulationCallBack);\n }\n _applyManipulationCallback(selector, callBack) {\n if ($91ca15859685b28b$var$isElement(selector)) {\n callBack(selector);\n return;\n }\n for (const sel of $91ca15859685b28b$var$SelectorEngine.find(selector, this._element))callBack(sel);\n }\n}\n/**\n * --------------------------------------------------------------------------\n * Bootstrap modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */ /**\n * Constants\n */ const $91ca15859685b28b$var$NAME$7 = \"modal\";\nconst $91ca15859685b28b$var$DATA_KEY$4 = \"bs.modal\";\nconst $91ca15859685b28b$var$EVENT_KEY$4 = `.${$91ca15859685b28b$var$DATA_KEY$4}`;\nconst $91ca15859685b28b$var$DATA_API_KEY$2 = \".data-api\";\nconst $91ca15859685b28b$var$ESCAPE_KEY$1 = \"Escape\";\nconst $91ca15859685b28b$var$EVENT_HIDE$4 = `hide${$91ca15859685b28b$var$EVENT_KEY$4}`;\nconst $91ca15859685b28b$var$EVENT_HIDE_PREVENTED$1 = `hidePrevented${$91ca15859685b28b$var$EVENT_KEY$4}`;\nconst $91ca15859685b28b$var$EVENT_HIDDEN$4 = `hidden${$91ca15859685b28b$var$EVENT_KEY$4}`;\nconst $91ca15859685b28b$var$EVENT_SHOW$4 = `show${$91ca15859685b28b$var$EVENT_KEY$4}`;\nconst $91ca15859685b28b$var$EVENT_SHOWN$4 = `shown${$91ca15859685b28b$var$EVENT_KEY$4}`;\nconst $91ca15859685b28b$var$EVENT_RESIZE$1 = `resize${$91ca15859685b28b$var$EVENT_KEY$4}`;\nconst $91ca15859685b28b$var$EVENT_CLICK_DISMISS = `click.dismiss${$91ca15859685b28b$var$EVENT_KEY$4}`;\nconst $91ca15859685b28b$var$EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${$91ca15859685b28b$var$EVENT_KEY$4}`;\nconst $91ca15859685b28b$var$EVENT_KEYDOWN_DISMISS$1 = `keydown.dismiss${$91ca15859685b28b$var$EVENT_KEY$4}`;\nconst $91ca15859685b28b$var$EVENT_CLICK_DATA_API$2 = `click${$91ca15859685b28b$var$EVENT_KEY$4}${$91ca15859685b28b$var$DATA_API_KEY$2}`;\nconst $91ca15859685b28b$var$CLASS_NAME_OPEN = \"modal-open\";\nconst $91ca15859685b28b$var$CLASS_NAME_FADE$3 = \"fade\";\nconst $91ca15859685b28b$var$CLASS_NAME_SHOW$4 = \"show\";\nconst $91ca15859685b28b$var$CLASS_NAME_STATIC = \"modal-static\";\nconst $91ca15859685b28b$var$OPEN_SELECTOR$1 = \".modal.show\";\nconst $91ca15859685b28b$var$SELECTOR_DIALOG = \".modal-dialog\";\nconst $91ca15859685b28b$var$SELECTOR_MODAL_BODY = \".modal-body\";\nconst $91ca15859685b28b$var$SELECTOR_DATA_TOGGLE$2 = '[data-bs-toggle=\"modal\"]';\nconst $91ca15859685b28b$var$Default$6 = {\n backdrop: true,\n focus: true,\n keyboard: true\n};\nconst $91ca15859685b28b$var$DefaultType$6 = {\n backdrop: \"(boolean|string)\",\n focus: \"boolean\",\n keyboard: \"boolean\"\n};\n/**\n * Class definition\n */ class $91ca15859685b28b$export$2b77a92f1a5ad772 extends $91ca15859685b28b$var$BaseComponent {\n constructor(element, config){\n super(element, config);\n this._dialog = $91ca15859685b28b$var$SelectorEngine.findOne($91ca15859685b28b$var$SELECTOR_DIALOG, this._element);\n this._backdrop = this._initializeBackDrop();\n this._focustrap = this._initializeFocusTrap();\n this._isShown = false;\n this._isTransitioning = false;\n this._scrollBar = new $91ca15859685b28b$var$ScrollBarHelper();\n this._addEventListeners();\n }\n // Getters\n static get Default() {\n return $91ca15859685b28b$var$Default$6;\n }\n static get DefaultType() {\n return $91ca15859685b28b$var$DefaultType$6;\n }\n static get NAME() {\n return $91ca15859685b28b$var$NAME$7;\n }\n // Public\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget);\n }\n show(relatedTarget) {\n if (this._isShown || this._isTransitioning) return;\n const showEvent = $91ca15859685b28b$var$EventHandler.trigger(this._element, $91ca15859685b28b$var$EVENT_SHOW$4, {\n relatedTarget: relatedTarget\n });\n if (showEvent.defaultPrevented) return;\n this._isShown = true;\n this._isTransitioning = true;\n this._scrollBar.hide();\n document.body.classList.add($91ca15859685b28b$var$CLASS_NAME_OPEN);\n this._adjustDialog();\n this._backdrop.show(()=>this._showElement(relatedTarget));\n }\n hide() {\n if (!this._isShown || this._isTransitioning) return;\n const hideEvent = $91ca15859685b28b$var$EventHandler.trigger(this._element, $91ca15859685b28b$var$EVENT_HIDE$4);\n if (hideEvent.defaultPrevented) return;\n this._isShown = false;\n this._isTransitioning = true;\n this._focustrap.deactivate();\n this._element.classList.remove($91ca15859685b28b$var$CLASS_NAME_SHOW$4);\n this._queueCallback(()=>this._hideModal(), this._element, this._isAnimated());\n }\n dispose() {\n $91ca15859685b28b$var$EventHandler.off(window, $91ca15859685b28b$var$EVENT_KEY$4);\n $91ca15859685b28b$var$EventHandler.off(this._dialog, $91ca15859685b28b$var$EVENT_KEY$4);\n this._backdrop.dispose();\n this._focustrap.deactivate();\n super.dispose();\n }\n handleUpdate() {\n this._adjustDialog();\n }\n // Private\n _initializeBackDrop() {\n return new $91ca15859685b28b$var$Backdrop({\n isVisible: Boolean(this._config.backdrop),\n // 'static' option will be translated to true, and booleans will keep their value,\n isAnimated: this._isAnimated()\n });\n }\n _initializeFocusTrap() {\n return new $91ca15859685b28b$var$FocusTrap({\n trapElement: this._element\n });\n }\n _showElement(relatedTarget) {\n // try to append dynamic modal\n if (!document.body.contains(this._element)) document.body.append(this._element);\n this._element.style.display = \"block\";\n this._element.removeAttribute(\"aria-hidden\");\n this._element.setAttribute(\"aria-modal\", true);\n this._element.setAttribute(\"role\", \"dialog\");\n this._element.scrollTop = 0;\n const modalBody = $91ca15859685b28b$var$SelectorEngine.findOne($91ca15859685b28b$var$SELECTOR_MODAL_BODY, this._dialog);\n if (modalBody) modalBody.scrollTop = 0;\n $91ca15859685b28b$var$reflow(this._element);\n this._element.classList.add($91ca15859685b28b$var$CLASS_NAME_SHOW$4);\n const transitionComplete = ()=>{\n if (this._config.focus) this._focustrap.activate();\n this._isTransitioning = false;\n $91ca15859685b28b$var$EventHandler.trigger(this._element, $91ca15859685b28b$var$EVENT_SHOWN$4, {\n relatedTarget: relatedTarget\n });\n };\n this._queueCallback(transitionComplete, this._dialog, this._isAnimated());\n }\n _addEventListeners() {\n $91ca15859685b28b$var$EventHandler.on(this._element, $91ca15859685b28b$var$EVENT_KEYDOWN_DISMISS$1, (event)=>{\n if (event.key !== $91ca15859685b28b$var$ESCAPE_KEY$1) return;\n if (this._config.keyboard) {\n this.hide();\n return;\n }\n this._triggerBackdropTransition();\n });\n $91ca15859685b28b$var$EventHandler.on(window, $91ca15859685b28b$var$EVENT_RESIZE$1, ()=>{\n if (this._isShown && !this._isTransitioning) this._adjustDialog();\n });\n $91ca15859685b28b$var$EventHandler.on(this._element, $91ca15859685b28b$var$EVENT_MOUSEDOWN_DISMISS, (event)=>{\n // a bad trick to segregate clicks that may start inside dialog but end outside, and avoid listen to scrollbar clicks\n $91ca15859685b28b$var$EventHandler.one(this._element, $91ca15859685b28b$var$EVENT_CLICK_DISMISS, (event2)=>{\n if (this._element !== event.target || this._element !== event2.target) return;\n if (this._config.backdrop === \"static\") {\n this._triggerBackdropTransition();\n return;\n }\n if (this._config.backdrop) this.hide();\n });\n });\n }\n _hideModal() {\n this._element.style.display = \"none\";\n this._element.setAttribute(\"aria-hidden\", true);\n this._element.removeAttribute(\"aria-modal\");\n this._element.removeAttribute(\"role\");\n this._isTransitioning = false;\n this._backdrop.hide(()=>{\n document.body.classList.remove($91ca15859685b28b$var$CLASS_NAME_OPEN);\n this._resetAdjustments();\n this._scrollBar.reset();\n $91ca15859685b28b$var$EventHandler.trigger(this._element, $91ca15859685b28b$var$EVENT_HIDDEN$4);\n });\n }\n _isAnimated() {\n return this._element.classList.contains($91ca15859685b28b$var$CLASS_NAME_FADE$3);\n }\n _triggerBackdropTransition() {\n const hideEvent = $91ca15859685b28b$var$EventHandler.trigger(this._element, $91ca15859685b28b$var$EVENT_HIDE_PREVENTED$1);\n if (hideEvent.defaultPrevented) return;\n const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\n const initialOverflowY = this._element.style.overflowY;\n // return if the following background transition hasn't yet completed\n if (initialOverflowY === \"hidden\" || this._element.classList.contains($91ca15859685b28b$var$CLASS_NAME_STATIC)) return;\n if (!isModalOverflowing) this._element.style.overflowY = \"hidden\";\n this._element.classList.add($91ca15859685b28b$var$CLASS_NAME_STATIC);\n this._queueCallback(()=>{\n this._element.classList.remove($91ca15859685b28b$var$CLASS_NAME_STATIC);\n this._queueCallback(()=>{\n this._element.style.overflowY = initialOverflowY;\n }, this._dialog);\n }, this._dialog);\n this._element.focus();\n }\n /**\n * The following methods are used to handle overflowing modals\n */ _adjustDialog() {\n const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\n const scrollbarWidth = this._scrollBar.getWidth();\n const isBodyOverflowing = scrollbarWidth > 0;\n if (isBodyOverflowing && !isModalOverflowing) {\n const property = $91ca15859685b28b$var$isRTL() ? \"paddingLeft\" : \"paddingRight\";\n this._element.style[property] = `${scrollbarWidth}px`;\n }\n if (!isBodyOverflowing && isModalOverflowing) {\n const property = $91ca15859685b28b$var$isRTL() ? \"paddingRight\" : \"paddingLeft\";\n this._element.style[property] = `${scrollbarWidth}px`;\n }\n }\n _resetAdjustments() {\n this._element.style.paddingLeft = \"\";\n this._element.style.paddingRight = \"\";\n }\n // Static\n static jQueryInterface(config, relatedTarget) {\n return this.each(function() {\n const data = $91ca15859685b28b$export$2b77a92f1a5ad772.getOrCreateInstance(this, config);\n if (typeof config !== \"string\") return;\n if (typeof data[config] === \"undefined\") throw new TypeError(`No method named \"${config}\"`);\n data[config](relatedTarget);\n });\n }\n}\n/**\n * Data API implementation\n */ $91ca15859685b28b$var$EventHandler.on(document, $91ca15859685b28b$var$EVENT_CLICK_DATA_API$2, $91ca15859685b28b$var$SELECTOR_DATA_TOGGLE$2, function(event) {\n const target = $91ca15859685b28b$var$SelectorEngine.getElementFromSelector(this);\n if ([\n \"A\",\n \"AREA\"\n ].includes(this.tagName)) event.preventDefault();\n $91ca15859685b28b$var$EventHandler.one(target, $91ca15859685b28b$var$EVENT_SHOW$4, (showEvent)=>{\n if (showEvent.defaultPrevented) // only register focus restorer if modal will actually get shown\n return;\n $91ca15859685b28b$var$EventHandler.one(target, $91ca15859685b28b$var$EVENT_HIDDEN$4, ()=>{\n if ($91ca15859685b28b$var$isVisible(this)) this.focus();\n });\n });\n // avoid conflict when clicking modal toggler while another one is open\n const alreadyOpen = $91ca15859685b28b$var$SelectorEngine.findOne($91ca15859685b28b$var$OPEN_SELECTOR$1);\n if (alreadyOpen) $91ca15859685b28b$export$2b77a92f1a5ad772.getInstance(alreadyOpen).hide();\n const data = $91ca15859685b28b$export$2b77a92f1a5ad772.getOrCreateInstance(target);\n data.toggle(this);\n});\n$91ca15859685b28b$var$enableDismissTrigger($91ca15859685b28b$export$2b77a92f1a5ad772);\n/**\n * jQuery\n */ $91ca15859685b28b$var$defineJQueryPlugin($91ca15859685b28b$export$2b77a92f1a5ad772);\n/**\n * --------------------------------------------------------------------------\n * Bootstrap offcanvas.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */ /**\n * Constants\n */ const $91ca15859685b28b$var$NAME$6 = \"offcanvas\";\nconst $91ca15859685b28b$var$DATA_KEY$3 = \"bs.offcanvas\";\nconst $91ca15859685b28b$var$EVENT_KEY$3 = `.${$91ca15859685b28b$var$DATA_KEY$3}`;\nconst $91ca15859685b28b$var$DATA_API_KEY$1 = \".data-api\";\nconst $91ca15859685b28b$var$EVENT_LOAD_DATA_API$2 = `load${$91ca15859685b28b$var$EVENT_KEY$3}${$91ca15859685b28b$var$DATA_API_KEY$1}`;\nconst $91ca15859685b28b$var$ESCAPE_KEY = \"Escape\";\nconst $91ca15859685b28b$var$CLASS_NAME_SHOW$3 = \"show\";\nconst $91ca15859685b28b$var$CLASS_NAME_SHOWING$1 = \"showing\";\nconst $91ca15859685b28b$var$CLASS_NAME_HIDING = \"hiding\";\nconst $91ca15859685b28b$var$CLASS_NAME_BACKDROP = \"offcanvas-backdrop\";\nconst $91ca15859685b28b$var$OPEN_SELECTOR = \".offcanvas.show\";\nconst $91ca15859685b28b$var$EVENT_SHOW$3 = `show${$91ca15859685b28b$var$EVENT_KEY$3}`;\nconst $91ca15859685b28b$var$EVENT_SHOWN$3 = `shown${$91ca15859685b28b$var$EVENT_KEY$3}`;\nconst $91ca15859685b28b$var$EVENT_HIDE$3 = `hide${$91ca15859685b28b$var$EVENT_KEY$3}`;\nconst $91ca15859685b28b$var$EVENT_HIDE_PREVENTED = `hidePrevented${$91ca15859685b28b$var$EVENT_KEY$3}`;\nconst $91ca15859685b28b$var$EVENT_HIDDEN$3 = `hidden${$91ca15859685b28b$var$EVENT_KEY$3}`;\nconst $91ca15859685b28b$var$EVENT_RESIZE = `resize${$91ca15859685b28b$var$EVENT_KEY$3}`;\nconst $91ca15859685b28b$var$EVENT_CLICK_DATA_API$1 = `click${$91ca15859685b28b$var$EVENT_KEY$3}${$91ca15859685b28b$var$DATA_API_KEY$1}`;\nconst $91ca15859685b28b$var$EVENT_KEYDOWN_DISMISS = `keydown.dismiss${$91ca15859685b28b$var$EVENT_KEY$3}`;\nconst $91ca15859685b28b$var$SELECTOR_DATA_TOGGLE$1 = '[data-bs-toggle=\"offcanvas\"]';\nconst $91ca15859685b28b$var$Default$5 = {\n backdrop: true,\n keyboard: true,\n scroll: false\n};\nconst $91ca15859685b28b$var$DefaultType$5 = {\n backdrop: \"(boolean|string)\",\n keyboard: \"boolean\",\n scroll: \"boolean\"\n};\n/**\n * Class definition\n */ class $91ca15859685b28b$export$591ca0244c9dfcd4 extends $91ca15859685b28b$var$BaseComponent {\n constructor(element, config){\n super(element, config);\n this._isShown = false;\n this._backdrop = this._initializeBackDrop();\n this._focustrap = this._initializeFocusTrap();\n this._addEventListeners();\n }\n // Getters\n static get Default() {\n return $91ca15859685b28b$var$Default$5;\n }\n static get DefaultType() {\n return $91ca15859685b28b$var$DefaultType$5;\n }\n static get NAME() {\n return $91ca15859685b28b$var$NAME$6;\n }\n // Public\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget);\n }\n show(relatedTarget) {\n if (this._isShown) return;\n const showEvent = $91ca15859685b28b$var$EventHandler.trigger(this._element, $91ca15859685b28b$var$EVENT_SHOW$3, {\n relatedTarget: relatedTarget\n });\n if (showEvent.defaultPrevented) return;\n this._isShown = true;\n this._backdrop.show();\n if (!this._config.scroll) new $91ca15859685b28b$var$ScrollBarHelper().hide();\n this._element.setAttribute(\"aria-modal\", true);\n this._element.setAttribute(\"role\", \"dialog\");\n this._element.classList.add($91ca15859685b28b$var$CLASS_NAME_SHOWING$1);\n const completeCallBack = ()=>{\n if (!this._config.scroll || this._config.backdrop) this._focustrap.activate();\n this._element.classList.add($91ca15859685b28b$var$CLASS_NAME_SHOW$3);\n this._element.classList.remove($91ca15859685b28b$var$CLASS_NAME_SHOWING$1);\n $91ca15859685b28b$var$EventHandler.trigger(this._element, $91ca15859685b28b$var$EVENT_SHOWN$3, {\n relatedTarget: relatedTarget\n });\n };\n this._queueCallback(completeCallBack, this._element, true);\n }\n hide() {\n if (!this._isShown) return;\n const hideEvent = $91ca15859685b28b$var$EventHandler.trigger(this._element, $91ca15859685b28b$var$EVENT_HIDE$3);\n if (hideEvent.defaultPrevented) return;\n this._focustrap.deactivate();\n this._element.blur();\n this._isShown = false;\n this._element.classList.add($91ca15859685b28b$var$CLASS_NAME_HIDING);\n this._backdrop.hide();\n const completeCallback = ()=>{\n this._element.classList.remove($91ca15859685b28b$var$CLASS_NAME_SHOW$3, $91ca15859685b28b$var$CLASS_NAME_HIDING);\n this._element.removeAttribute(\"aria-modal\");\n this._element.removeAttribute(\"role\");\n if (!this._config.scroll) new $91ca15859685b28b$var$ScrollBarHelper().reset();\n $91ca15859685b28b$var$EventHandler.trigger(this._element, $91ca15859685b28b$var$EVENT_HIDDEN$3);\n };\n this._queueCallback(completeCallback, this._element, true);\n }\n dispose() {\n this._backdrop.dispose();\n this._focustrap.deactivate();\n super.dispose();\n }\n // Private\n _initializeBackDrop() {\n const clickCallback = ()=>{\n if (this._config.backdrop === \"static\") {\n $91ca15859685b28b$var$EventHandler.trigger(this._element, $91ca15859685b28b$var$EVENT_HIDE_PREVENTED);\n return;\n }\n this.hide();\n };\n // 'static' option will be translated to true, and booleans will keep their value\n const isVisible = Boolean(this._config.backdrop);\n return new $91ca15859685b28b$var$Backdrop({\n className: $91ca15859685b28b$var$CLASS_NAME_BACKDROP,\n isVisible: isVisible,\n isAnimated: true,\n rootElement: this._element.parentNode,\n clickCallback: isVisible ? clickCallback : null\n });\n }\n _initializeFocusTrap() {\n return new $91ca15859685b28b$var$FocusTrap({\n trapElement: this._element\n });\n }\n _addEventListeners() {\n $91ca15859685b28b$var$EventHandler.on(this._element, $91ca15859685b28b$var$EVENT_KEYDOWN_DISMISS, (event)=>{\n if (event.key !== $91ca15859685b28b$var$ESCAPE_KEY) return;\n if (this._config.keyboard) {\n this.hide();\n return;\n }\n $91ca15859685b28b$var$EventHandler.trigger(this._element, $91ca15859685b28b$var$EVENT_HIDE_PREVENTED);\n });\n }\n // Static\n static jQueryInterface(config) {\n return this.each(function() {\n const data = $91ca15859685b28b$export$591ca0244c9dfcd4.getOrCreateInstance(this, config);\n if (typeof config !== \"string\") return;\n if (data[config] === undefined || config.startsWith(\"_\") || config === \"constructor\") throw new TypeError(`No method named \"${config}\"`);\n data[config](this);\n });\n }\n}\n/**\n * Data API implementation\n */ $91ca15859685b28b$var$EventHandler.on(document, $91ca15859685b28b$var$EVENT_CLICK_DATA_API$1, $91ca15859685b28b$var$SELECTOR_DATA_TOGGLE$1, function(event) {\n const target = $91ca15859685b28b$var$SelectorEngine.getElementFromSelector(this);\n if ([\n \"A\",\n \"AREA\"\n ].includes(this.tagName)) event.preventDefault();\n if ($91ca15859685b28b$var$isDisabled(this)) return;\n $91ca15859685b28b$var$EventHandler.one(target, $91ca15859685b28b$var$EVENT_HIDDEN$3, ()=>{\n // focus on trigger when it is closed\n if ($91ca15859685b28b$var$isVisible(this)) this.focus();\n });\n // avoid conflict when clicking a toggler of an offcanvas, while another is open\n const alreadyOpen = $91ca15859685b28b$var$SelectorEngine.findOne($91ca15859685b28b$var$OPEN_SELECTOR);\n if (alreadyOpen && alreadyOpen !== target) $91ca15859685b28b$export$591ca0244c9dfcd4.getInstance(alreadyOpen).hide();\n const data = $91ca15859685b28b$export$591ca0244c9dfcd4.getOrCreateInstance(target);\n data.toggle(this);\n});\n$91ca15859685b28b$var$EventHandler.on(window, $91ca15859685b28b$var$EVENT_LOAD_DATA_API$2, ()=>{\n for (const selector of $91ca15859685b28b$var$SelectorEngine.find($91ca15859685b28b$var$OPEN_SELECTOR))$91ca15859685b28b$export$591ca0244c9dfcd4.getOrCreateInstance(selector).show();\n});\n$91ca15859685b28b$var$EventHandler.on(window, $91ca15859685b28b$var$EVENT_RESIZE, ()=>{\n for (const element of $91ca15859685b28b$var$SelectorEngine.find(\"[aria-modal][class*=show][class*=offcanvas-]\"))if (getComputedStyle(element).position !== \"fixed\") $91ca15859685b28b$export$591ca0244c9dfcd4.getOrCreateInstance(element).hide();\n});\n$91ca15859685b28b$var$enableDismissTrigger($91ca15859685b28b$export$591ca0244c9dfcd4);\n/**\n * jQuery\n */ $91ca15859685b28b$var$defineJQueryPlugin($91ca15859685b28b$export$591ca0244c9dfcd4);\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */ // js-docs-start allow-list\nconst $91ca15859685b28b$var$ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i;\nconst $91ca15859685b28b$var$DefaultAllowlist = {\n // Global attributes allowed on any supplied element below.\n \"*\": [\n \"class\",\n \"dir\",\n \"id\",\n \"lang\",\n \"role\",\n $91ca15859685b28b$var$ARIA_ATTRIBUTE_PATTERN\n ],\n a: [\n \"target\",\n \"href\",\n \"title\",\n \"rel\"\n ],\n area: [],\n b: [],\n br: [],\n col: [],\n code: [],\n dd: [],\n div: [],\n dl: [],\n dt: [],\n em: [],\n hr: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n i: [],\n img: [\n \"src\",\n \"srcset\",\n \"alt\",\n \"title\",\n \"width\",\n \"height\"\n ],\n li: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n small: [],\n span: [],\n sub: [],\n sup: [],\n strong: [],\n u: [],\n ul: []\n};\n// js-docs-end allow-list\nconst $91ca15859685b28b$var$uriAttributes = new Set([\n \"background\",\n \"cite\",\n \"href\",\n \"itemtype\",\n \"longdesc\",\n \"poster\",\n \"src\",\n \"xlink:href\"\n]);\n/**\n * A pattern that recognizes URLs that are safe wrt. XSS in URL navigation\n * contexts.\n *\n * Shout-out to Angular https://github.com/angular/angular/blob/15.2.8/packages/core/src/sanitization/url_sanitizer.ts#L38\n */ // eslint-disable-next-line unicorn/better-regex\nconst $91ca15859685b28b$var$SAFE_URL_PATTERN = /^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i;\nconst $91ca15859685b28b$var$allowedAttribute = (attribute, allowedAttributeList)=>{\n const attributeName = attribute.nodeName.toLowerCase();\n if (allowedAttributeList.includes(attributeName)) {\n if ($91ca15859685b28b$var$uriAttributes.has(attributeName)) return Boolean($91ca15859685b28b$var$SAFE_URL_PATTERN.test(attribute.nodeValue));\n return true;\n }\n // Check if a regular expression validates the attribute.\n return allowedAttributeList.filter((attributeRegex)=>attributeRegex instanceof RegExp).some((regex)=>regex.test(attributeName));\n};\nfunction $91ca15859685b28b$var$sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) {\n if (!unsafeHtml.length) return unsafeHtml;\n if (sanitizeFunction && typeof sanitizeFunction === \"function\") return sanitizeFunction(unsafeHtml);\n const domParser = new window.DOMParser();\n const createdDocument = domParser.parseFromString(unsafeHtml, \"text/html\");\n const elements = [].concat(...createdDocument.body.querySelectorAll(\"*\"));\n for (const element of elements){\n const elementName = element.nodeName.toLowerCase();\n if (!Object.keys(allowList).includes(elementName)) {\n element.remove();\n continue;\n }\n const attributeList = [].concat(...element.attributes);\n const allowedAttributes = [].concat(allowList[\"*\"] || [], allowList[elementName] || []);\n for (const attribute of attributeList)if (!$91ca15859685b28b$var$allowedAttribute(attribute, allowedAttributes)) element.removeAttribute(attribute.nodeName);\n }\n return createdDocument.body.innerHTML;\n}\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/template-factory.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */ /**\n * Constants\n */ const $91ca15859685b28b$var$NAME$5 = \"TemplateFactory\";\nconst $91ca15859685b28b$var$Default$4 = {\n allowList: $91ca15859685b28b$var$DefaultAllowlist,\n content: {},\n // { selector : text , selector2 : text2 , }\n extraClass: \"\",\n html: false,\n sanitize: true,\n sanitizeFn: null,\n template: \"
\"\n};\nconst $91ca15859685b28b$var$DefaultType$4 = {\n allowList: \"object\",\n content: \"object\",\n extraClass: \"(string|function)\",\n html: \"boolean\",\n sanitize: \"boolean\",\n sanitizeFn: \"(null|function)\",\n template: \"string\"\n};\nconst $91ca15859685b28b$var$DefaultContentType = {\n entry: \"(string|element|function|null)\",\n selector: \"(string|element)\"\n};\n/**\n * Class definition\n */ class $91ca15859685b28b$var$TemplateFactory extends $91ca15859685b28b$var$Config {\n constructor(config){\n super();\n this._config = this._getConfig(config);\n }\n // Getters\n static get Default() {\n return $91ca15859685b28b$var$Default$4;\n }\n static get DefaultType() {\n return $91ca15859685b28b$var$DefaultType$4;\n }\n static get NAME() {\n return $91ca15859685b28b$var$NAME$5;\n }\n // Public\n getContent() {\n return Object.values(this._config.content).map((config)=>this._resolvePossibleFunction(config)).filter(Boolean);\n }\n hasContent() {\n return this.getContent().length > 0;\n }\n changeContent(content) {\n this._checkContent(content);\n this._config.content = {\n ...this._config.content,\n ...content\n };\n return this;\n }\n toHtml() {\n const templateWrapper = document.createElement(\"div\");\n templateWrapper.innerHTML = this._maybeSanitize(this._config.template);\n for (const [selector, text] of Object.entries(this._config.content))this._setContent(templateWrapper, text, selector);\n const template = templateWrapper.children[0];\n const extraClass = this._resolvePossibleFunction(this._config.extraClass);\n if (extraClass) template.classList.add(...extraClass.split(\" \"));\n return template;\n }\n // Private\n _typeCheckConfig(config) {\n super._typeCheckConfig(config);\n this._checkContent(config.content);\n }\n _checkContent(arg) {\n for (const [selector, content] of Object.entries(arg))super._typeCheckConfig({\n selector: selector,\n entry: content\n }, $91ca15859685b28b$var$DefaultContentType);\n }\n _setContent(template, content, selector) {\n const templateElement = $91ca15859685b28b$var$SelectorEngine.findOne(selector, template);\n if (!templateElement) return;\n content = this._resolvePossibleFunction(content);\n if (!content) {\n templateElement.remove();\n return;\n }\n if ($91ca15859685b28b$var$isElement(content)) {\n this._putElementInTemplate($91ca15859685b28b$var$getElement(content), templateElement);\n return;\n }\n if (this._config.html) {\n templateElement.innerHTML = this._maybeSanitize(content);\n return;\n }\n templateElement.textContent = content;\n }\n _maybeSanitize(arg) {\n return this._config.sanitize ? $91ca15859685b28b$var$sanitizeHtml(arg, this._config.allowList, this._config.sanitizeFn) : arg;\n }\n _resolvePossibleFunction(arg) {\n return $91ca15859685b28b$var$execute(arg, [\n this\n ]);\n }\n _putElementInTemplate(element, templateElement) {\n if (this._config.html) {\n templateElement.innerHTML = \"\";\n templateElement.append(element);\n return;\n }\n templateElement.textContent = element.textContent;\n }\n}\n/**\n * --------------------------------------------------------------------------\n * Bootstrap tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */ /**\n * Constants\n */ const $91ca15859685b28b$var$NAME$4 = \"tooltip\";\nconst $91ca15859685b28b$var$DISALLOWED_ATTRIBUTES = new Set([\n \"sanitize\",\n \"allowList\",\n \"sanitizeFn\"\n]);\nconst $91ca15859685b28b$var$CLASS_NAME_FADE$2 = \"fade\";\nconst $91ca15859685b28b$var$CLASS_NAME_MODAL = \"modal\";\nconst $91ca15859685b28b$var$CLASS_NAME_SHOW$2 = \"show\";\nconst $91ca15859685b28b$var$SELECTOR_TOOLTIP_INNER = \".tooltip-inner\";\nconst $91ca15859685b28b$var$SELECTOR_MODAL = `.${$91ca15859685b28b$var$CLASS_NAME_MODAL}`;\nconst $91ca15859685b28b$var$EVENT_MODAL_HIDE = \"hide.bs.modal\";\nconst $91ca15859685b28b$var$TRIGGER_HOVER = \"hover\";\nconst $91ca15859685b28b$var$TRIGGER_FOCUS = \"focus\";\nconst $91ca15859685b28b$var$TRIGGER_CLICK = \"click\";\nconst $91ca15859685b28b$var$TRIGGER_MANUAL = \"manual\";\nconst $91ca15859685b28b$var$EVENT_HIDE$2 = \"hide\";\nconst $91ca15859685b28b$var$EVENT_HIDDEN$2 = \"hidden\";\nconst $91ca15859685b28b$var$EVENT_SHOW$2 = \"show\";\nconst $91ca15859685b28b$var$EVENT_SHOWN$2 = \"shown\";\nconst $91ca15859685b28b$var$EVENT_INSERTED = \"inserted\";\nconst $91ca15859685b28b$var$EVENT_CLICK$1 = \"click\";\nconst $91ca15859685b28b$var$EVENT_FOCUSIN$1 = \"focusin\";\nconst $91ca15859685b28b$var$EVENT_FOCUSOUT$1 = \"focusout\";\nconst $91ca15859685b28b$var$EVENT_MOUSEENTER = \"mouseenter\";\nconst $91ca15859685b28b$var$EVENT_MOUSELEAVE = \"mouseleave\";\nconst $91ca15859685b28b$var$AttachmentMap = {\n AUTO: \"auto\",\n TOP: \"top\",\n RIGHT: $91ca15859685b28b$var$isRTL() ? \"left\" : \"right\",\n BOTTOM: \"bottom\",\n LEFT: $91ca15859685b28b$var$isRTL() ? \"right\" : \"left\"\n};\nconst $91ca15859685b28b$var$Default$3 = {\n allowList: $91ca15859685b28b$var$DefaultAllowlist,\n animation: true,\n boundary: \"clippingParents\",\n container: false,\n customClass: \"\",\n delay: 0,\n fallbackPlacements: [\n \"top\",\n \"right\",\n \"bottom\",\n \"left\"\n ],\n html: false,\n offset: [\n 0,\n 6\n ],\n placement: \"top\",\n popperConfig: null,\n sanitize: true,\n sanitizeFn: null,\n selector: false,\n template: '
',\n title: \"\",\n trigger: \"hover focus\"\n};\nconst $91ca15859685b28b$var$DefaultType$3 = {\n allowList: \"object\",\n animation: \"boolean\",\n boundary: \"(string|element)\",\n container: \"(string|element|boolean)\",\n customClass: \"(string|function)\",\n delay: \"(number|object)\",\n fallbackPlacements: \"array\",\n html: \"boolean\",\n offset: \"(array|string|function)\",\n placement: \"(string|function)\",\n popperConfig: \"(null|object|function)\",\n sanitize: \"boolean\",\n sanitizeFn: \"(null|function)\",\n selector: \"(string|boolean)\",\n template: \"string\",\n title: \"(string|element|function)\",\n trigger: \"string\"\n};\n/**\n * Class definition\n */ class $91ca15859685b28b$export$28c660c63b792dea extends $91ca15859685b28b$var$BaseComponent {\n constructor(element, config){\n if (typeof $d37552697cc5ea39$exports === \"undefined\") throw new TypeError(\"Bootstrap's tooltips require Popper (https://popper.js.org)\");\n super(element, config);\n // Private\n this._isEnabled = true;\n this._timeout = 0;\n this._isHovered = null;\n this._activeTrigger = {};\n this._popper = null;\n this._templateFactory = null;\n this._newContent = null;\n // Protected\n this.tip = null;\n this._setListeners();\n if (!this._config.selector) this._fixTitle();\n }\n // Getters\n static get Default() {\n return $91ca15859685b28b$var$Default$3;\n }\n static get DefaultType() {\n return $91ca15859685b28b$var$DefaultType$3;\n }\n static get NAME() {\n return $91ca15859685b28b$var$NAME$4;\n }\n // Public\n enable() {\n this._isEnabled = true;\n }\n disable() {\n this._isEnabled = false;\n }\n toggleEnabled() {\n this._isEnabled = !this._isEnabled;\n }\n toggle() {\n if (!this._isEnabled) return;\n this._activeTrigger.click = !this._activeTrigger.click;\n if (this._isShown()) {\n this._leave();\n return;\n }\n this._enter();\n }\n dispose() {\n clearTimeout(this._timeout);\n $91ca15859685b28b$var$EventHandler.off(this._element.closest($91ca15859685b28b$var$SELECTOR_MODAL), $91ca15859685b28b$var$EVENT_MODAL_HIDE, this._hideModalHandler);\n if (this._element.getAttribute(\"data-bs-original-title\")) this._element.setAttribute(\"title\", this._element.getAttribute(\"data-bs-original-title\"));\n this._disposePopper();\n super.dispose();\n }\n show() {\n if (this._element.style.display === \"none\") throw new Error(\"Please use show on visible elements\");\n if (!(this._isWithContent() && this._isEnabled)) return;\n const showEvent = $91ca15859685b28b$var$EventHandler.trigger(this._element, this.constructor.eventName($91ca15859685b28b$var$EVENT_SHOW$2));\n const shadowRoot = $91ca15859685b28b$var$findShadowRoot(this._element);\n const isInTheDom = (shadowRoot || this._element.ownerDocument.documentElement).contains(this._element);\n if (showEvent.defaultPrevented || !isInTheDom) return;\n // TODO: v6 remove this or make it optional\n this._disposePopper();\n const tip = this._getTipElement();\n this._element.setAttribute(\"aria-describedby\", tip.getAttribute(\"id\"));\n const { container: container } = this._config;\n if (!this._element.ownerDocument.documentElement.contains(this.tip)) {\n container.append(tip);\n $91ca15859685b28b$var$EventHandler.trigger(this._element, this.constructor.eventName($91ca15859685b28b$var$EVENT_INSERTED));\n }\n this._popper = this._createPopper(tip);\n tip.classList.add($91ca15859685b28b$var$CLASS_NAME_SHOW$2);\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if (\"ontouchstart\" in document.documentElement) for (const element of [].concat(...document.body.children))$91ca15859685b28b$var$EventHandler.on(element, \"mouseover\", $91ca15859685b28b$var$noop);\n const complete = ()=>{\n $91ca15859685b28b$var$EventHandler.trigger(this._element, this.constructor.eventName($91ca15859685b28b$var$EVENT_SHOWN$2));\n if (this._isHovered === false) this._leave();\n this._isHovered = false;\n };\n this._queueCallback(complete, this.tip, this._isAnimated());\n }\n hide() {\n if (!this._isShown()) return;\n const hideEvent = $91ca15859685b28b$var$EventHandler.trigger(this._element, this.constructor.eventName($91ca15859685b28b$var$EVENT_HIDE$2));\n if (hideEvent.defaultPrevented) return;\n const tip = this._getTipElement();\n tip.classList.remove($91ca15859685b28b$var$CLASS_NAME_SHOW$2);\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if (\"ontouchstart\" in document.documentElement) for (const element of [].concat(...document.body.children))$91ca15859685b28b$var$EventHandler.off(element, \"mouseover\", $91ca15859685b28b$var$noop);\n this._activeTrigger[$91ca15859685b28b$var$TRIGGER_CLICK] = false;\n this._activeTrigger[$91ca15859685b28b$var$TRIGGER_FOCUS] = false;\n this._activeTrigger[$91ca15859685b28b$var$TRIGGER_HOVER] = false;\n this._isHovered = null; // it is a trick to support manual triggering\n const complete = ()=>{\n if (this._isWithActiveTrigger()) return;\n if (!this._isHovered) this._disposePopper();\n this._element.removeAttribute(\"aria-describedby\");\n $91ca15859685b28b$var$EventHandler.trigger(this._element, this.constructor.eventName($91ca15859685b28b$var$EVENT_HIDDEN$2));\n };\n this._queueCallback(complete, this.tip, this._isAnimated());\n }\n update() {\n if (this._popper) this._popper.update();\n }\n // Protected\n _isWithContent() {\n return Boolean(this._getTitle());\n }\n _getTipElement() {\n if (!this.tip) this.tip = this._createTipElement(this._newContent || this._getContentForTemplate());\n return this.tip;\n }\n _createTipElement(content) {\n const tip = this._getTemplateFactory(content).toHtml();\n // TODO: remove this check in v6\n if (!tip) return null;\n tip.classList.remove($91ca15859685b28b$var$CLASS_NAME_FADE$2, $91ca15859685b28b$var$CLASS_NAME_SHOW$2);\n // TODO: v6 the following can be achieved with CSS only\n tip.classList.add(`bs-${this.constructor.NAME}-auto`);\n const tipId = $91ca15859685b28b$var$getUID(this.constructor.NAME).toString();\n tip.setAttribute(\"id\", tipId);\n if (this._isAnimated()) tip.classList.add($91ca15859685b28b$var$CLASS_NAME_FADE$2);\n return tip;\n }\n setContent(content) {\n this._newContent = content;\n if (this._isShown()) {\n this._disposePopper();\n this.show();\n }\n }\n _getTemplateFactory(content) {\n if (this._templateFactory) this._templateFactory.changeContent(content);\n else this._templateFactory = new $91ca15859685b28b$var$TemplateFactory({\n ...this._config,\n content: // the `content` var has to be after `this._config`\n // to override config.content in case of popover\n content,\n extraClass: this._resolvePossibleFunction(this._config.customClass)\n });\n return this._templateFactory;\n }\n _getContentForTemplate() {\n return {\n [$91ca15859685b28b$var$SELECTOR_TOOLTIP_INNER]: this._getTitle()\n };\n }\n _getTitle() {\n return this._resolvePossibleFunction(this._config.title) || this._element.getAttribute(\"data-bs-original-title\");\n }\n // Private\n _initializeOnDelegatedTarget(event) {\n return this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig());\n }\n _isAnimated() {\n return this._config.animation || this.tip && this.tip.classList.contains($91ca15859685b28b$var$CLASS_NAME_FADE$2);\n }\n _isShown() {\n return this.tip && this.tip.classList.contains($91ca15859685b28b$var$CLASS_NAME_SHOW$2);\n }\n _createPopper(tip) {\n const placement = $91ca15859685b28b$var$execute(this._config.placement, [\n this,\n tip,\n this._element\n ]);\n const attachment = $91ca15859685b28b$var$AttachmentMap[placement.toUpperCase()];\n return $d37552697cc5ea39$exports.createPopper(this._element, tip, this._getPopperConfig(attachment));\n }\n _getOffset() {\n const { offset: offset } = this._config;\n if (typeof offset === \"string\") return offset.split(\",\").map((value)=>Number.parseInt(value, 10));\n if (typeof offset === \"function\") return (popperData)=>offset(popperData, this._element);\n return offset;\n }\n _resolvePossibleFunction(arg) {\n return $91ca15859685b28b$var$execute(arg, [\n this._element\n ]);\n }\n _getPopperConfig(attachment) {\n const defaultBsPopperConfig = {\n placement: attachment,\n modifiers: [\n {\n name: \"flip\",\n options: {\n fallbackPlacements: this._config.fallbackPlacements\n }\n },\n {\n name: \"offset\",\n options: {\n offset: this._getOffset()\n }\n },\n {\n name: \"preventOverflow\",\n options: {\n boundary: this._config.boundary\n }\n },\n {\n name: \"arrow\",\n options: {\n element: `.${this.constructor.NAME}-arrow`\n }\n },\n {\n name: \"preSetPlacement\",\n enabled: true,\n phase: \"beforeMain\",\n fn: (data)=>{\n // Pre-set Popper's placement attribute in order to read the arrow sizes properly.\n // Otherwise, Popper mixes up the width and height dimensions since the initial arrow style is for top placement\n this._getTipElement().setAttribute(\"data-popper-placement\", data.state.placement);\n }\n }\n ]\n };\n return {\n ...defaultBsPopperConfig,\n ...$91ca15859685b28b$var$execute(this._config.popperConfig, [\n defaultBsPopperConfig\n ])\n };\n }\n _setListeners() {\n const triggers = this._config.trigger.split(\" \");\n for (const trigger of triggers){\n if (trigger === \"click\") $91ca15859685b28b$var$EventHandler.on(this._element, this.constructor.eventName($91ca15859685b28b$var$EVENT_CLICK$1), this._config.selector, (event)=>{\n const context = this._initializeOnDelegatedTarget(event);\n context.toggle();\n });\n else if (trigger !== $91ca15859685b28b$var$TRIGGER_MANUAL) {\n const eventIn = trigger === $91ca15859685b28b$var$TRIGGER_HOVER ? this.constructor.eventName($91ca15859685b28b$var$EVENT_MOUSEENTER) : this.constructor.eventName($91ca15859685b28b$var$EVENT_FOCUSIN$1);\n const eventOut = trigger === $91ca15859685b28b$var$TRIGGER_HOVER ? this.constructor.eventName($91ca15859685b28b$var$EVENT_MOUSELEAVE) : this.constructor.eventName($91ca15859685b28b$var$EVENT_FOCUSOUT$1);\n $91ca15859685b28b$var$EventHandler.on(this._element, eventIn, this._config.selector, (event)=>{\n const context = this._initializeOnDelegatedTarget(event);\n context._activeTrigger[event.type === \"focusin\" ? $91ca15859685b28b$var$TRIGGER_FOCUS : $91ca15859685b28b$var$TRIGGER_HOVER] = true;\n context._enter();\n });\n $91ca15859685b28b$var$EventHandler.on(this._element, eventOut, this._config.selector, (event)=>{\n const context = this._initializeOnDelegatedTarget(event);\n context._activeTrigger[event.type === \"focusout\" ? $91ca15859685b28b$var$TRIGGER_FOCUS : $91ca15859685b28b$var$TRIGGER_HOVER] = context._element.contains(event.relatedTarget);\n context._leave();\n });\n }\n }\n this._hideModalHandler = ()=>{\n if (this._element) this.hide();\n };\n $91ca15859685b28b$var$EventHandler.on(this._element.closest($91ca15859685b28b$var$SELECTOR_MODAL), $91ca15859685b28b$var$EVENT_MODAL_HIDE, this._hideModalHandler);\n }\n _fixTitle() {\n const title = this._element.getAttribute(\"title\");\n if (!title) return;\n if (!this._element.getAttribute(\"aria-label\") && !this._element.textContent.trim()) this._element.setAttribute(\"aria-label\", title);\n this._element.setAttribute(\"data-bs-original-title\", title); // DO NOT USE IT. Is only for backwards compatibility\n this._element.removeAttribute(\"title\");\n }\n _enter() {\n if (this._isShown() || this._isHovered) {\n this._isHovered = true;\n return;\n }\n this._isHovered = true;\n this._setTimeout(()=>{\n if (this._isHovered) this.show();\n }, this._config.delay.show);\n }\n _leave() {\n if (this._isWithActiveTrigger()) return;\n this._isHovered = false;\n this._setTimeout(()=>{\n if (!this._isHovered) this.hide();\n }, this._config.delay.hide);\n }\n _setTimeout(handler, timeout) {\n clearTimeout(this._timeout);\n this._timeout = setTimeout(handler, timeout);\n }\n _isWithActiveTrigger() {\n return Object.values(this._activeTrigger).includes(true);\n }\n _getConfig(config) {\n const dataAttributes = $91ca15859685b28b$var$Manipulator.getDataAttributes(this._element);\n for (const dataAttribute of Object.keys(dataAttributes))if ($91ca15859685b28b$var$DISALLOWED_ATTRIBUTES.has(dataAttribute)) delete dataAttributes[dataAttribute];\n config = {\n ...dataAttributes,\n ...typeof config === \"object\" && config ? config : {}\n };\n config = this._mergeConfigObj(config);\n config = this._configAfterMerge(config);\n this._typeCheckConfig(config);\n return config;\n }\n _configAfterMerge(config) {\n config.container = config.container === false ? document.body : $91ca15859685b28b$var$getElement(config.container);\n if (typeof config.delay === \"number\") config.delay = {\n show: config.delay,\n hide: config.delay\n };\n if (typeof config.title === \"number\") config.title = config.title.toString();\n if (typeof config.content === \"number\") config.content = config.content.toString();\n return config;\n }\n _getDelegateConfig() {\n const config = {};\n for (const [key, value] of Object.entries(this._config))if (this.constructor.Default[key] !== value) config[key] = value;\n config.selector = false;\n config.trigger = \"manual\";\n // In the future can be replaced with:\n // const keysWithDifferentValues = Object.entries(this._config).filter(entry => this.constructor.Default[entry[0]] !== this._config[entry[0]])\n // `Object.fromEntries(keysWithDifferentValues)`\n return config;\n }\n _disposePopper() {\n if (this._popper) {\n this._popper.destroy();\n this._popper = null;\n }\n if (this.tip) {\n this.tip.remove();\n this.tip = null;\n }\n }\n // Static\n static jQueryInterface(config) {\n return this.each(function() {\n const data = $91ca15859685b28b$export$28c660c63b792dea.getOrCreateInstance(this, config);\n if (typeof config !== \"string\") return;\n if (typeof data[config] === \"undefined\") throw new TypeError(`No method named \"${config}\"`);\n data[config]();\n });\n }\n}\n/**\n * jQuery\n */ $91ca15859685b28b$var$defineJQueryPlugin($91ca15859685b28b$export$28c660c63b792dea);\n/**\n * --------------------------------------------------------------------------\n * Bootstrap popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */ /**\n * Constants\n */ const $91ca15859685b28b$var$NAME$3 = \"popover\";\nconst $91ca15859685b28b$var$SELECTOR_TITLE = \".popover-header\";\nconst $91ca15859685b28b$var$SELECTOR_CONTENT = \".popover-body\";\nconst $91ca15859685b28b$var$Default$2 = {\n ...$91ca15859685b28b$export$28c660c63b792dea.Default,\n content: \"\",\n offset: [\n 0,\n 8\n ],\n placement: \"right\",\n template: '

',\n trigger: \"click\"\n};\nconst $91ca15859685b28b$var$DefaultType$2 = {\n ...$91ca15859685b28b$export$28c660c63b792dea.DefaultType,\n content: \"(null|string|element|function)\"\n};\n/**\n * Class definition\n */ class $91ca15859685b28b$export$5b6b19405a83ff9d extends $91ca15859685b28b$export$28c660c63b792dea {\n // Getters\n static get Default() {\n return $91ca15859685b28b$var$Default$2;\n }\n static get DefaultType() {\n return $91ca15859685b28b$var$DefaultType$2;\n }\n static get NAME() {\n return $91ca15859685b28b$var$NAME$3;\n }\n // Overrides\n _isWithContent() {\n return this._getTitle() || this._getContent();\n }\n // Private\n _getContentForTemplate() {\n return {\n [$91ca15859685b28b$var$SELECTOR_TITLE]: this._getTitle(),\n [$91ca15859685b28b$var$SELECTOR_CONTENT]: this._getContent()\n };\n }\n _getContent() {\n return this._resolvePossibleFunction(this._config.content);\n }\n // Static\n static jQueryInterface(config) {\n return this.each(function() {\n const data = $91ca15859685b28b$export$5b6b19405a83ff9d.getOrCreateInstance(this, config);\n if (typeof config !== \"string\") return;\n if (typeof data[config] === \"undefined\") throw new TypeError(`No method named \"${config}\"`);\n data[config]();\n });\n }\n}\n/**\n * jQuery\n */ $91ca15859685b28b$var$defineJQueryPlugin($91ca15859685b28b$export$5b6b19405a83ff9d);\n/**\n * --------------------------------------------------------------------------\n * Bootstrap scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */ /**\n * Constants\n */ const $91ca15859685b28b$var$NAME$2 = \"scrollspy\";\nconst $91ca15859685b28b$var$DATA_KEY$2 = \"bs.scrollspy\";\nconst $91ca15859685b28b$var$EVENT_KEY$2 = `.${$91ca15859685b28b$var$DATA_KEY$2}`;\nconst $91ca15859685b28b$var$DATA_API_KEY = \".data-api\";\nconst $91ca15859685b28b$var$EVENT_ACTIVATE = `activate${$91ca15859685b28b$var$EVENT_KEY$2}`;\nconst $91ca15859685b28b$var$EVENT_CLICK = `click${$91ca15859685b28b$var$EVENT_KEY$2}`;\nconst $91ca15859685b28b$var$EVENT_LOAD_DATA_API$1 = `load${$91ca15859685b28b$var$EVENT_KEY$2}${$91ca15859685b28b$var$DATA_API_KEY}`;\nconst $91ca15859685b28b$var$CLASS_NAME_DROPDOWN_ITEM = \"dropdown-item\";\nconst $91ca15859685b28b$var$CLASS_NAME_ACTIVE$1 = \"active\";\nconst $91ca15859685b28b$var$SELECTOR_DATA_SPY = '[data-bs-spy=\"scroll\"]';\nconst $91ca15859685b28b$var$SELECTOR_TARGET_LINKS = \"[href]\";\nconst $91ca15859685b28b$var$SELECTOR_NAV_LIST_GROUP = \".nav, .list-group\";\nconst $91ca15859685b28b$var$SELECTOR_NAV_LINKS = \".nav-link\";\nconst $91ca15859685b28b$var$SELECTOR_NAV_ITEMS = \".nav-item\";\nconst $91ca15859685b28b$var$SELECTOR_LIST_ITEMS = \".list-group-item\";\nconst $91ca15859685b28b$var$SELECTOR_LINK_ITEMS = `${$91ca15859685b28b$var$SELECTOR_NAV_LINKS}, ${$91ca15859685b28b$var$SELECTOR_NAV_ITEMS} > ${$91ca15859685b28b$var$SELECTOR_NAV_LINKS}, ${$91ca15859685b28b$var$SELECTOR_LIST_ITEMS}`;\nconst $91ca15859685b28b$var$SELECTOR_DROPDOWN = \".dropdown\";\nconst $91ca15859685b28b$var$SELECTOR_DROPDOWN_TOGGLE$1 = \".dropdown-toggle\";\nconst $91ca15859685b28b$var$Default$1 = {\n offset: null,\n // TODO: v6 @deprecated, keep it for backwards compatibility reasons\n rootMargin: \"0px 0px -25%\",\n smoothScroll: false,\n target: null,\n threshold: [\n 0.1,\n 0.5,\n 1\n ]\n};\nconst $91ca15859685b28b$var$DefaultType$1 = {\n offset: \"(number|null)\",\n // TODO v6 @deprecated, keep it for backwards compatibility reasons\n rootMargin: \"string\",\n smoothScroll: \"boolean\",\n target: \"element\",\n threshold: \"array\"\n};\n/**\n * Class definition\n */ class $91ca15859685b28b$export$a6472a5298a374be extends $91ca15859685b28b$var$BaseComponent {\n constructor(element, config){\n super(element, config);\n // this._element is the observablesContainer and config.target the menu links wrapper\n this._targetLinks = new Map();\n this._observableSections = new Map();\n this._rootElement = getComputedStyle(this._element).overflowY === \"visible\" ? null : this._element;\n this._activeTarget = null;\n this._observer = null;\n this._previousScrollData = {\n visibleEntryTop: 0,\n parentScrollTop: 0\n };\n this.refresh(); // initialize\n }\n // Getters\n static get Default() {\n return $91ca15859685b28b$var$Default$1;\n }\n static get DefaultType() {\n return $91ca15859685b28b$var$DefaultType$1;\n }\n static get NAME() {\n return $91ca15859685b28b$var$NAME$2;\n }\n // Public\n refresh() {\n this._initializeTargetsAndObservables();\n this._maybeEnableSmoothScroll();\n if (this._observer) this._observer.disconnect();\n else this._observer = this._getNewObserver();\n for (const section of this._observableSections.values())this._observer.observe(section);\n }\n dispose() {\n this._observer.disconnect();\n super.dispose();\n }\n // Private\n _configAfterMerge(config) {\n // TODO: on v6 target should be given explicitly & remove the {target: 'ss-target'} case\n config.target = $91ca15859685b28b$var$getElement(config.target) || document.body;\n // TODO: v6 Only for backwards compatibility reasons. Use rootMargin only\n config.rootMargin = config.offset ? `${config.offset}px 0px -30%` : config.rootMargin;\n if (typeof config.threshold === \"string\") config.threshold = config.threshold.split(\",\").map((value)=>Number.parseFloat(value));\n return config;\n }\n _maybeEnableSmoothScroll() {\n if (!this._config.smoothScroll) return;\n // unregister any previous listeners\n $91ca15859685b28b$var$EventHandler.off(this._config.target, $91ca15859685b28b$var$EVENT_CLICK);\n $91ca15859685b28b$var$EventHandler.on(this._config.target, $91ca15859685b28b$var$EVENT_CLICK, $91ca15859685b28b$var$SELECTOR_TARGET_LINKS, (event)=>{\n const observableSection = this._observableSections.get(event.target.hash);\n if (observableSection) {\n event.preventDefault();\n const root = this._rootElement || window;\n const height = observableSection.offsetTop - this._element.offsetTop;\n if (root.scrollTo) {\n root.scrollTo({\n top: height,\n behavior: \"smooth\"\n });\n return;\n }\n // Chrome 60 doesn't support `scrollTo`\n root.scrollTop = height;\n }\n });\n }\n _getNewObserver() {\n const options = {\n root: this._rootElement,\n threshold: this._config.threshold,\n rootMargin: this._config.rootMargin\n };\n return new IntersectionObserver((entries)=>this._observerCallback(entries), options);\n }\n // The logic of selection\n _observerCallback(entries) {\n const targetElement = (entry)=>this._targetLinks.get(`#${entry.target.id}`);\n const activate = (entry)=>{\n this._previousScrollData.visibleEntryTop = entry.target.offsetTop;\n this._process(targetElement(entry));\n };\n const parentScrollTop = (this._rootElement || document.documentElement).scrollTop;\n const userScrollsDown = parentScrollTop >= this._previousScrollData.parentScrollTop;\n this._previousScrollData.parentScrollTop = parentScrollTop;\n for (const entry of entries){\n if (!entry.isIntersecting) {\n this._activeTarget = null;\n this._clearActiveClass(targetElement(entry));\n continue;\n }\n const entryIsLowerThanPrevious = entry.target.offsetTop >= this._previousScrollData.visibleEntryTop;\n // if we are scrolling down, pick the bigger offsetTop\n if (userScrollsDown && entryIsLowerThanPrevious) {\n activate(entry);\n // if parent isn't scrolled, let's keep the first visible item, breaking the iteration\n if (!parentScrollTop) return;\n continue;\n }\n // if we are scrolling up, pick the smallest offsetTop\n if (!userScrollsDown && !entryIsLowerThanPrevious) activate(entry);\n }\n }\n _initializeTargetsAndObservables() {\n this._targetLinks = new Map();\n this._observableSections = new Map();\n const targetLinks = $91ca15859685b28b$var$SelectorEngine.find($91ca15859685b28b$var$SELECTOR_TARGET_LINKS, this._config.target);\n for (const anchor of targetLinks){\n // ensure that the anchor has an id and is not disabled\n if (!anchor.hash || $91ca15859685b28b$var$isDisabled(anchor)) continue;\n const observableSection = $91ca15859685b28b$var$SelectorEngine.findOne(decodeURI(anchor.hash), this._element);\n // ensure that the observableSection exists & is visible\n if ($91ca15859685b28b$var$isVisible(observableSection)) {\n this._targetLinks.set(decodeURI(anchor.hash), anchor);\n this._observableSections.set(anchor.hash, observableSection);\n }\n }\n }\n _process(target) {\n if (this._activeTarget === target) return;\n this._clearActiveClass(this._config.target);\n this._activeTarget = target;\n target.classList.add($91ca15859685b28b$var$CLASS_NAME_ACTIVE$1);\n this._activateParents(target);\n $91ca15859685b28b$var$EventHandler.trigger(this._element, $91ca15859685b28b$var$EVENT_ACTIVATE, {\n relatedTarget: target\n });\n }\n _activateParents(target) {\n // Activate dropdown parents\n if (target.classList.contains($91ca15859685b28b$var$CLASS_NAME_DROPDOWN_ITEM)) {\n $91ca15859685b28b$var$SelectorEngine.findOne($91ca15859685b28b$var$SELECTOR_DROPDOWN_TOGGLE$1, target.closest($91ca15859685b28b$var$SELECTOR_DROPDOWN)).classList.add($91ca15859685b28b$var$CLASS_NAME_ACTIVE$1);\n return;\n }\n for (const listGroup of $91ca15859685b28b$var$SelectorEngine.parents(target, $91ca15859685b28b$var$SELECTOR_NAV_LIST_GROUP))// Set triggered links parents as active\n // With both