{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/@stimulus/core/dist/src/event_listener.js","webpack:///./node_modules/@stimulus/core/dist/src/dispatcher.js","webpack:///./node_modules/@stimulus/core/dist/src/action_descriptor.js","webpack:///./node_modules/@stimulus/core/dist/src/action.js","webpack:///./node_modules/@stimulus/core/dist/src/binding.js","webpack:///./node_modules/@stimulus/mutation-observers/dist/src/element_observer.js","webpack:///./node_modules/@stimulus/mutation-observers/dist/src/attribute_observer.js","webpack:///./node_modules/@stimulus/multimap/dist/src/set_operations.js","webpack:///./node_modules/@stimulus/multimap/dist/src/multimap.js","webpack:///./node_modules/@stimulus/multimap/dist/src/indexed_multimap.js","webpack:///./node_modules/@stimulus/mutation-observers/dist/src/token_list_observer.js","webpack:///./node_modules/@stimulus/mutation-observers/dist/src/value_list_observer.js","webpack:///./node_modules/@stimulus/core/dist/src/binding_observer.js","webpack:///./node_modules/@stimulus/core/dist/src/context.js","webpack:///./node_modules/@stimulus/core/dist/src/definition.js","webpack:///./node_modules/@stimulus/core/dist/src/module.js","webpack:///./node_modules/@stimulus/core/dist/src/data_map.js","webpack:///./node_modules/@stimulus/core/dist/src/selectors.js","webpack:///./node_modules/@stimulus/core/dist/src/target_set.js","webpack:///./node_modules/@stimulus/core/dist/src/scope.js","webpack:///./node_modules/@stimulus/core/dist/src/scope_observer.js","webpack:///./node_modules/@stimulus/core/dist/src/router.js","webpack:///./node_modules/@stimulus/core/dist/src/schema.js","webpack:///./node_modules/@stimulus/core/dist/src/application.js","webpack:///./node_modules/@stimulus/core/dist/src/target_properties.js","webpack:///./node_modules/@stimulus/core/dist/src/controller.js","webpack:///./app/javascript/controllers/datatables_controller.js","webpack:///./app/javascript/controllers/dropzone_controller.js","webpack:///./app/javascript/lib/local_storage_helper.js","webpack:///./app/javascript/lib/AdReformDirectUpload.js","webpack:///./app/javascript/controllers/capturable/files_controller.js","webpack:///./app/javascript/lib/Organization.js","webpack:///./app/javascript/lib/apply_mode_helper.js","webpack:///./app/javascript/controllers/select2_controller.js","webpack:///./app/javascript/controllers/select2/sites_controller.js","webpack:///./app/javascript/lib/User.js","webpack:///./node_modules/@appsignal/core/dist/esm/utils/environment.js","webpack:///./node_modules/unfetch/dist/unfetch.module.js","webpack:///./node_modules/isomorphic-unfetch/browser.js","webpack:///./node_modules/codemirror/lib/codemirror.js","webpack:///./node_modules/@rails/activestorage/app/assets/javascripts/activestorage.js","webpack:///./node_modules/process/browser.js","webpack:///(webpack)/buildin/global.js","webpack:///./app/javascript/controllers sync _controller\\.js$","webpack:///./app/javascript/controllers/ad_channel_controller.js","webpack:///./app/javascript/controllers/ad_chooser_controller.js","webpack:///./app/javascript/controllers/ad_chooser_modal_controller.js","webpack:///./app/javascript/controllers/ad_txt_editor_controller.js","webpack:///./app/javascript/controllers/adblockers_controller.js","webpack:///./app/javascript/controllers/ads_controller.js","webpack:///./app/javascript/controllers/cable/ad_previews_controller.js","webpack:///./app/javascript/controllers/capturable/frames_controller.js","webpack:///./app/javascript/controllers/capturable/html_zips_controller.js","webpack:///./app/javascript/controllers/capturable/image_files_controller.js","webpack:///./app/javascript/controllers/capturable/native_displays_controller.js","webpack:///./app/javascript/controllers/capturable/video_files_controller.js","webpack:///./app/javascript/controllers/clipboard_controller.js","webpack:///./app/javascript/controllers/copy_and_open_url_controller.js","webpack:///./app/javascript/controllers/csv_imports_controller.js","webpack:///./app/javascript/controllers/datatables/ads_controller.js","webpack:///./app/javascript/controllers/datatables/campaigns_controller.js","webpack:///./app/javascript/controllers/datatables/deliveries_controller.js","webpack:///./app/javascript/controllers/datatables/pending_sets_controller.js","webpack:///./app/javascript/controllers/datatables/scheduled_sets_controller.js","webpack:///./app/javascript/controllers/datatables/screenshots_controller.js","webpack:///./app/javascript/controllers/datatables/sites_controller.js","webpack:///./app/javascript/controllers/datatables/webhooks_controller.js","webpack:///./app/javascript/controllers/datatables/website_screenshots_controller.js","webpack:///./app/javascript/controllers/daterangepicker_controller.js","webpack:///./app/javascript/controllers/device_frame_controller.js","webpack:///./app/javascript/controllers/drafts_controller.js","webpack:///./app/javascript/controllers/failed_import_controller.js","webpack:///./app/javascript/controllers/feature_flags_controller.js","webpack:///./app/javascript/controllers/filters_controller.js","webpack:///./app/javascript/controllers/input_disabler_controller.js","webpack:///./app/javascript/controllers/input_switcher_controller.js","webpack:///./app/javascript/controllers/intercom_articles_controller.js","webpack:///./app/javascript/controllers/notifications_controller.js","webpack:///./app/javascript/controllers/perfcascade_controller.js","webpack:///./app/javascript/controllers/powerpoint_imports_controller.js","webpack:///./app/javascript/controllers/presentations_controller.js","webpack:///./app/javascript/controllers/range_slider_controller.js","webpack:///./app/javascript/controllers/s3_connector_controller.js","webpack:///./app/javascript/controllers/screenshot_sets_controller.js","webpack:///./app/javascript/controllers/screenshots/workflow_controller.js","webpack:///./app/javascript/controllers/screenshots_controller.js","webpack:///./app/javascript/controllers/select2/campaigns_controller.js","webpack:///./app/javascript/controllers/select2/sites_url_value_controller.js","webpack:///./app/javascript/controllers/selectpicker_controller.js","webpack:///./app/javascript/controllers/shareable_link_controller.js","webpack:///./app/javascript/controllers/site_apply_mode_controller.js","webpack:///./app/javascript/controllers/site_list_controller.js","webpack:///./app/javascript/controllers/site_lists_apply_mode_controller.js","webpack:///./app/javascript/controllers/sites_bulk_form_controller.js","webpack:///./app/javascript/controllers/spreadsheet_imports_controller.js","webpack:///./app/javascript/controllers/tally_controller.js","webpack:///./app/javascript/controllers/utm_controller.js","webpack:///./app/javascript/controllers/wrapper_type_controller.js","webpack:///./node_modules/tslib/tslib.es6.js","webpack:///./node_modules/@appsignal/core/dist/esm/utils/functional.js","webpack:///./node_modules/@appsignal/core/dist/esm/utils/hashmap.js","webpack:///./node_modules/@appsignal/core/dist/esm/utils/error.js","webpack:///./node_modules/@appsignal/core/dist/esm/utils/async.js","webpack:///./node_modules/@appsignal/core/dist/esm/serializable.js","webpack:///./node_modules/@appsignal/javascript/dist/esm/environment.js","webpack:///./node_modules/@appsignal/javascript/dist/esm/transports/xdomain.js","webpack:///./node_modules/@appsignal/javascript/dist/esm/transports/xhr.js","webpack:///./node_modules/@appsignal/javascript/dist/esm/transports/fetch.js","webpack:///./node_modules/@appsignal/javascript/dist/esm/transports/node.js","webpack:///./node_modules/@appsignal/javascript/dist/esm/api.js","webpack:///./node_modules/@appsignal/core/dist/esm/utils/url.js","webpack:///./node_modules/@appsignal/javascript/dist/esm/span.js","webpack:///./node_modules/@appsignal/javascript/dist/esm/queue.js","webpack:///./node_modules/@appsignal/javascript/dist/esm/dispatcher.js","webpack:///./node_modules/@appsignal/javascript/dist/esm/index.js","webpack:///./node_modules/@appsignal/javascript/dist/esm/version.js","webpack:///./node_modules/@appsignal/plugin-window-events/dist/esm/index.js","webpack:///./node_modules/@appsignal/plugin-path-decorator/dist/esm/index.js","webpack:///./app/javascript/lib/App.js","webpack:///./app/javascript/packs/application.js","webpack:///./node_modules/@appsignal/stimulus/dist/esm/index.js","webpack:///./node_modules/@stimulus/webpack-helpers/dist/index.js","webpack:///./node_modules/posthog-js/dist/module.js","webpack:///./app/javascript/controllers/posthog_controller.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","EventListener","eventTarget","eventName","this","unorderedBindings","Set","connect","addEventListener","disconnect","removeEventListener","bindingConnected","binding","add","bindingDisconnected","delete","handleEvent","event","extendedEvent","stopImmediatePropagation_1","stopImmediatePropagation","assign","immediatePropagationStopped","extendEvent","_i","_a","bindings","length","Array","from","sort","left","right","leftIndex","index","rightIndex","configurable","Dispatcher","application","eventListenerMaps","Map","started","start","eventListeners","forEach","eventListener","stop","values","reduce","listeners","map","concat","fetchEventListenerForBinding","handleError","error","message","detail","fetchEventListener","eventListenerMap","fetchEventListenerMapForEventTarget","createEventListener","set","descriptorPattern","parseEventTarget","eventTargetName","window","document","Action","element","descriptor","tagName","toLowerCase","defaultEventNames","getDefaultEventNameForElement","identifier","methodName","forToken","token","descriptorString","content","matches","trim","match","toString","eventNameSuffix","e","getAttribute","Error","Binding","context","action","willBeInvokedByEvent","invokeWithEvent","method","controller","target","Element","contains","scope","containsElement","ElementObserver","delegate","_this","elements","mutationObserver","MutationObserver","mutations","processMutations","observe","attributes","childList","subtree","refresh","takeRecords","matchElementsInTree","has","removeElement","_b","_c","addElement","mutations_1","mutation","processMutation","type","processAttributeChange","attributeName","processRemovedNodes","removedNodes","processAddedNodes","addedNodes","node","elementAttributeChanged","matchElement","nodes","elementFromNode","processTree","elementIsActive","tree","processor","nodeType","Node","ELEMENT_NODE","isConnected","elementMatched","elementUnmatched","AttributeObserver","elementObserver","hasAttribute","querySelectorAll","selector","elementMatchedAttribute","elementUnmatchedAttribute","elementAttributeValueChanged","fetch","del","size","prune","extendStatics","Multimap","valuesByKey","hasKey","hasValue","some","getValuesForKey","getKeysForValue","filter","__extends","setPrototypeOf","__proto__","b","__","constructor","_super","IndexedMultimap","keysByValue","keys","TokenListObserver","attributeObserver","tokensByElement","tokensMatched","readTokensForElement","refreshTokensForElement","unmatchedTokens","matchedTokens","tokensUnmatched","tokens","tokenMatched","tokenUnmatched","previousTokens","currentTokens","firstDifferingIndex","Math","max","_","findIndex","tokensAreEqual","slice","tokenString","split","parseTokenString","ValueListObserver","tokenListObserver","parseResultsByToken","WeakMap","valuesByTokenByElement","fetchParseResultForToken","fetchValuesByTokenForElement","elementMatchedValue","elementUnmatchedValue","parseResult","parseToken","valuesByToken","parseValueForToken","BindingObserver","bindingsByAction","valueListObserver","actionAttribute","disconnectAllActions","schema","connectAction","disconnectAction","clear","Context","controllerConstructor","bindingObserver","dispatcher","initialize","parentElement","blessControllerConstructor","extend","bless","extendWithReflect","Controller","_newTarget","Reflect","construct","arguments","a","apply","Module","definition","blessDefinition","contextsByScope","connectedContexts","connectContextForScope","fetchContextForScope","disconnectContextForScope","DataMap","getFormattedKey","setAttribute","removeAttribute","replace","char","attributeValueContainsToken","TargetSet","targetName","find","targetNames","getSelectorForTargetNames","findElement","findAll","findAllElements","getSelectorForTargetName","join","targetDescriptor","targetAttribute","Scope","targets","data","head","tail","filterElements","closest","controllerSelector","controllerAttribute","ScopeObserver","scopesByIdentifierByElement","scopeReferenceCounts","scopesByIdentifier","fetchScopesByIdentifierForElement","referenceCount","scopeConnected","scopeDisconnected","Router","scopeObserver","modulesByIdentifier","contexts","loadDefinition","unloadIdentifier","connectModule","disconnectModule","getContextForElementAndIdentifier","defaultSchema","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","step","next","rejected","result","done","then","__generator","body","f","y","g","label","sent","trys","ops","verb","iterator","v","op","TypeError","pop","push","Application","documentElement","router","readyState","register","load","rest","isArray","unload","getControllerForElementAndIdentifier","console","defineTargetProperties","ancestors","getPrototypeOf","getAncestorsForConstructor","getOwnTargetNamesForConstructor","getTargetNamesForConstructor","properties","charAt","toUpperCase","capitalize","_default","_Controller","_classCallCheck","_callSuper","_inherits","$","fn","DataTable","ext","classes","sWrapper","dtOptions","JSON","parse","config","defaultOptions","dataTable","tableTarget","bulkDestroyPath","selected","setRowsSelectable","initializeBulkTooltips","resetBulkEdit","destroyBeforeCache","hideSelectAllInfo","destroy","each","bulkTargets","tooltip","title","trigger","animation","drawCallback","settings","selectedAllData","currentPageRows","select","selectAllRows","hasInfoRowsTarget","infoRowsTarget","text","deselectAllRowsPage","on","language","paginate","previous","zeroRecords","controllerName","lengthMenu","search","searchPlaceholder","processing","faicon","pulse","fw","buttons","serverSide","paging","pagingType","pageLength","ordering","info","style","dom","retrieve","stateSave","stateDuration","stateSaveCallback","saveState","stateLoadCallback","loadState","stateLoaded","handleStateLoaded","localStorage","setItem","getStateKey","stringify","cleanupOldStates","startsWith","removeItem","time","getItem","sInstance","tableSelector","rowId","id","$row","removeClass","toggleClass","controlBulkEditButton","page","recordsTotal","rows","ids","toArray","row","showSelectAllInfo","deselect","recordCount","selectedRows","confirm","ajax","url","destroyAllParams","complete","location","reload","hasDeselectAllButtonTarget","rowsSelected","hasClass","prop","disableDeselectAll","addClass","disable","deselectAllButtonTarget","draw","showClearSearchButton","hideClearSearchButton","hasSelectAllInfoTarget","selectAllInfoTarget","html","selectAllRowsTarget","deselectAllRowsTarget","alertText","append","column","params","all","hasClearSearchButtonTarget","clearSearchButtonTarget","classList","remove","redraw","undefined","hasSearchTarget","searchTarget","savedData","highlightElement","hasColumnFilterTarget","columns","columnDef","aoColumns","columnName","columnFilterTarget","columnFilterTargets","dataset","refreshSelectPicker","isSelectpicker","selectpicker","setTimeout","_this2","clearSearch","includes","dropzone","createDropzone","attachEvents","acceptedFiles","Dropzone","inputTarget","autoProcessQueue","autoQueue","dictDefaultMessage","headers","getMetaValue","maxFiles","parallelUploads","uploadMultiple","paramName","hiddenInputContainer","addRemoveLinks","timeout","dz","attachRemovedFileEvents","attachErrorEvents","attachSuccessEvents","attachSendingEvents","file","xhr","formData","input","_destroy_path","response","noty","success","errorMessage","_typeof","removeFile","attr","getQueuedFiles","getAcceptedFiles","getOptionOrUseDefault","optionName","defaultValue","parseInt","root","querySelector","preventDefault","currentTarget","bindSubmitEvent","processQueue","emptyQueue","submitForm","log","LocalStorageHelper","storedValue","retrievedObject","getStoredValue","isJsonLocalStorage","convertStringToJson","App","currentOrganizationId","_defineProperty","getKey","getDefaultValue","storeValue","storedKeyValue","setStoredValue","AdReformDirectUpload","directUploadUrl","form","directUpload","DirectUpload","uploader","blob","emitDropzoneError","hiddenInput","createBlobInputHidden","signed_id","blob_signed_id","emitDropzoneSuccess","hiddenField","createElement","appendChild","bindProgressEvent","upload","uploadRequestDidProgress","previewTemplate","progress","loaded","total","width","status","ERROR","emit","SUCCESS","_DropzoneController","attachAddedFileEvents","accepted","uploadFile","enableSubmitButton","_this3","abort","hasAcceptedFiles","disableSubmitButton","adIds","appendValue","idsToAdd","adIdsTarget","submitTarget","disableDropzoneHiddenFileInput","submitParams","options","submitData","dataType","onSubmitError","responseJSON","storeAdIds","ad_ids","onSubmitSuccess","enableDropzoneHiddenFileInput","_objectSpread","submitDefaultParams","submitCustomParams","createDraftSetAndRedirect","Routes","draft_organization_campaign_screenshot_sets_path","campaignId","draftSetSubmitParams","href","redirectLocation","wizard","w","param","_this4","files","blob_signed_ids","invalidFile","hiddenFileInput","disabled","serialize","DropzoneController","getContext","HTMLMetaElement","exists","current","ApplyModeHelper","fields","sites","j","appendOrSelectOption","siteList","field","site","option","val","newSiteOption","Option","select2","order","array","randomIndex","currentIndex","floor","random","_ref","errors","multiple","term","processResults","results","mergedOptions","_Select2Controller","placeholder","tags","delay","pagination","createTag","newTag","bindEvents","createSite","Select2Controller","isNodeEnv","process","getGlobalObject","global","self","XMLHttpRequest","u","ok","statusText","responseURL","responseText","json","Blob","clone","entries","open","onload","getAllResponseHeaders","onerror","withCredentials","credentials","setRequestHeader","send","default","userAgent","navigator","platform","gecko","test","ie_upto10","ie_11up","exec","edge","ie","ie_version","documentMode","webkit","qtwebkit","chrome","chrome_version","presto","safari","vendor","mac_geMountainLion","phantom","ios","maxTouchPoints","android","mobile","mac","chromeOS","windows","presto_version","Number","flipCtrlCmd","captureRightClick","classTest","cls","RegExp","range","rmClass","className","after","removeChildren","count","childNodes","removeChild","firstChild","removeChildrenAndAdd","parent","elt","tag","cssText","createTextNode","eltP","child","parentNode","host","activeElt","activeElement","shadowRoot","joinClasses","as","createRange","end","endNode","setEnd","setStart","createTextRange","moveToElementText","collapse","moveEnd","moveStart","selectInput","args","copyObj","obj","overwrite","countColumn","string","tabSize","startIndex","startValue","nextTab","indexOf","selectionStart","selectionEnd","_e","Delayed","handler","onTimeout","Date","ms","clearTimeout","scrollerGap","Pass","sel_dontScroll","scroll","sel_mouse","origin","sel_move","findColumn","goal","pos","col","skipped","min","spaceStrs","spaceStr","lst","arr","out","insertSorted","score","priority","splice","nothing","createObj","base","props","inst","nonASCIISingleCaseWordChar","isWordCharBasic","ch","isWordChar","helper","source","isEmpty","extendingChars","isExtendingChar","charCodeAt","skipExtendingChars","str","dir","findFirst","pred","to","midF","mid","ceil","iterateBidiSections","found","part","level","bidiOther","getBidiPartAt","sticky","cur","bidiOrdering","lowTypes","arabicTypes","charType","code","bidiRE","isNeutral","isStrong","countsAsLeft","countsAsNum","BidiSpan","direction","outerType","len","types","i$1","prev","i$2","type$1","i$3","prev$1","type$2","i$4","type$3","i$5","cur$1","type$4","i$6","end$1","before","replace$1","j$1","i$7","at","isRTL","j$2","nstart","unshift","reverse","getOrder","line","noHandlers","emitter","attachEvent","_handlers","getHandlers","off","detachEvent","signal","handlers","signalDOMEvent","cm","override","defaultPrevented","e_defaultPrevented","codemirrorIgnore","signalCursorActivity","cursorActivity","curOp","cursorActivityHandlers","hasHandler","eventMixin","ctor","e_preventDefault","returnValue","e_stopPropagation","stopPropagation","cancelBubble","e_stop","e_target","srcElement","e_button","which","button","ctrlKey","zwspSupported","badBidiRects","dragAndDrop","div","zeroWidthElement","measure","offsetHeight","offsetWidth","hasBadBidiRects","txt","r0","getBoundingClientRect","r1","splitLinesAuto","nl","rt","hasSelection","getSelection","te","ownerDocument","selection","compareEndPoints","hasCopyEvent","oncopy","badZoomedRects","hasBadZoomedRects","normal","fromRange","abs","modes","mimeModes","defineMode","dependencies","defineMIME","mime","spec","resolveMode","getMode","mfactory","modeObj","modeExtensions","exts","helperType","modeProps","prop$1","extendMode","copyState","state","nstate","innerMode","startState","a1","a2","StringStream","lineOracle","lastColumnPos","lastColumnValue","lineStart","getLine","doc","first","chunk","lines","children","sz","chunkSize","getBetween","iter","getLines","updateLineHeight","height","diff","lineNo","no","lineAtHeight","h","outer","lh","isLine","lineNumberFor","String","lineNumberFormatter","firstLineNumber","Pos","cmp","equalCursorPos","copyPos","x","maxPos","minPos","clipLine","clipPos","last","clipToLen","linelen","clipPosArray","eol","sol","peek","eat","eatWhile","eatSpace","skipToEnd","skipTo","backUp","indentation","pattern","consume","caseInsensitive","cased","substr","hideFirstChars","inner","lookAhead","oracle","baseToken","SavedContext","maxLookAhead","baseTokens","baseTokenPos","highlightLine","forceToEnd","st","modeGen","lineClasses","runMode","loop","overlay","overlays","i_end","opaque","styles","bgClass","textClass","getLineStyles","updateFrontier","getContextBefore","resetState","maxHighlightLength","stateAfter","save","styleClasses","highlightFrontier","modeFrontier","precise","display","findStartLine","saved","fromSaved","processLine","viewFrom","viewTo","nextLine","startAt","stream","callBlankLine","readToken","blankLine","copy","Token","takeToken","asArray","extractLineClasses","output","lineClass","flattenSpans","curStart","curStyle","addModeClass","mName","minindent","minline","lim","indented","retreatFrontier","sawReadOnlySpans","sawCollapsedSpans","seeReadOnlySpans","seeCollapsedSpans","MarkedSpan","marker","getMarkedSpanFor","spans","span","removeMarkedSpan","addMarkedSpan","inThisOp","WeakSet","markedSpans","attachLine","markedSpansBefore","old","startCh","isInsert","nw","inclusiveLeft","insertLeft","endsAfter","inclusiveRight","markedSpansAfter","endCh","startsBefore","stretchSpansOverChange","change","full","oldFirst","oldLast","sameLine","offset","span$1","clearEmptySpans","newMarkers","gapMarkers","gap","clearWhenEmpty","removeReadOnlyRanges","markers","mark","readOnly","parts","mk","newParts","dfrom","dto","detachMarkedSpans","detachLine","attachMarkedSpans","extraLeft","extraRight","compareCollapsedMarkers","lenDiff","aPos","bPos","fromCmp","toCmp","collapsedSpanAtSide","sps","sp","collapsed","collapsedSpanAtStart","collapsedSpanAtEnd","collapsedSpanAround","conflictingCollapsedRange","visualLine","merged","visualLineEnd","visualLineContinued","visualLineNo","lineN","vis","visualLineEndNo","lastLine","lineIsHidden","widgetNode","lineIsHiddenInner","heightAtLine","lineObj","lineLength","found$1","findMaxLine","maxLine","maxLineLength","maxLineChanged","Line","estimateHeight","updateLine","estHeight","cleanUpLine","styleToClassCache","styleToClassCacheWithMode","interpretTokenStyle","cache","buildLineContent","lineView","builder","pre","trailingSpace","splitSpaces","getOption","addToken","buildToken","buildTokenBadBidi","insertLineContent","externalMeasured","maps","caches","lastChild","defaultSpecialCharPlaceholder","startStyle","endStyle","css","displayText","special","specialChars","mustWrap","createDocumentFragment","lastIndex","txt$1","tabWidth","specialCharPlaceholder","fullStyle","trailingBefore","spaceBefore","buildCollapsedSpan","ignoreWidget","widget","needsContentAttribute","setUneditable","allText","spanStyle","spanEndStyle","spanStartStyle","nextChange","Infinity","foundBookmarks","endStyles","upto","tokenText","LineView","hidden","buildViewArray","nextPos","view","operationGroup","pushOperation","ownsGroup","delayedCallbacks","fireCallbacksForOps","group","callbacks","cursorActivityCalled","finishOperation","endCb","orphanDelayedCallbacks","signalLater","list","fireOrphanDelayed","delayed","updateLineForChanges","dims","changes","updateLineText","updateLineGutter","updateLineClasses","updateLineWidgets","ensureLineWrapped","replaceChild","zIndex","updateLineBackground","background","wrap","insertBefore","getLineContent","built","wrapClass","gutter","gutterBackground","gutterClass","fixedGutter","fixedPos","gutterTotalWidth","gutterMarkers","lineNumbers","wrap$1","gutterWrap","lineNumber","gutterLeft","lineNumInnerWidth","k","gutterSpecs","gutterWidth","alignable","isWidget","nextSibling","insertLineWidgets","buildLineElement","insertLineWidgetsFor","allowAbove","widgets","ws","handleMouseEvents","positionLineWidget","above","noHScroll","wrapperWidth","coverGutter","paddingLeft","position","marginLeft","widgetHeight","parentStyle","gutters","wrapper","clientWidth","eventInWidget","sizer","mover","paddingTop","lineSpace","offsetTop","paddingVert","paddingH","cachedPaddingH","getComputedStyle","currentStyle","paddingRight","isNaN","scrollGap","nativeBarWidth","displayWidth","scroller","barWidth","displayHeight","clientHeight","barHeight","ensureLineHeights","rect","wrapping","lineWrapping","curWidth","heights","rects","getClientRects","bottom","top","mapFromLineView","updateExternalMeasurement","lineMeasure","measureChar","bias","measureCharPrepared","prepareMeasureForLine","findViewForLine","findViewIndex","getDimensions","forceUpdate","hasHeights","prepared","varHeight","measureCharInner","bogus","rtop","rbottom","measureText","nullRect","nodeAndOffsetInLineMap","mStart","mEnd","coverStart","coverEnd","getUsefulRect","place","maybeUpdateRectForZooming","rSpan","charWidth","rbot","bot","singleCursorHeightPerLine","screen","logicalXDPI","deviceXDPI","scaleX","scaleY","logicalYDPI","deviceYDPI","clearLineMeasurementCacheFor","clearLineMeasurementCache","externalMeasure","clearCaches","cachedCharWidth","cachedTextHeight","lineNumChars","pageScrollX","pageXOffset","scrollLeft","pageScrollY","marginTop","pageYOffset","scrollTop","widgetTopHeight","intoCoordSystem","includeWidgets","yOff","viewOffset","lOff","xOff","fromCoordSystem","coords","localBox","lineSpaceBox","charCoords","cursorCoords","preparedMeasure","getBidi","partPos","invert","other","estimateCoords","PosWithInfo","outside","xRel","coordsChar","coordsCharInner","rangeEnd","wrappedLineExtent","begin","wrappedLineExtentChar","boxIsAfter","box","ltr","coordsBidiPartWrapped","coordsBidiPart","baseX","chAround","boxAround","atLeft","atStart","_lineNo","ref","closestDist","endX","dist","textHeight","anchor","clientLeft","offsetLeft","compensateForHScroll","th","perLine","widgetsHeight","estimateLineHeights","est","posFromMouse","liberal","forRect","space","clientX","clientY","e$1","colDiff","round","regChange","lendiff","updateLineNumbers","viewChanged","resetView","cut","viewCuttingPoint","cut$1","cutTop","cutBot","regLineChange","oldN","newN","adjustView","countDirtyView","dirty","updateSelection","showSelection","prepareSelection","primary","curFragment","cursors","selFragment","customCursor","$customCursor","sel","ranges","primIndex","empty","drawSelectionCursor","showCursorWhenSelecting","drawSelectionRange","cursor","cursorHeight","getWrapperElement","charPos","defaultCharWidth","otherCursor","cmpCoords","fragment","padding","leftSide","rightSide","sizerWidth","docLTR","drawForLine","fromArg","toArg","lineLen","wrapX","side","extent","fromPos","toPos","openStart","openEnd","openRight","topLeft","topRight","botLeft","botRight","sFrom","sTo","fromLine","toLine","singleVLine","leftEnd","rightStart","restartBlink","focused","clearInterval","blinker","cursorDiv","visibility","cursorBlinkRate","setInterval","hasFocus","onBlur","ensureFocus","focus","onFocus","delayBlurEvent","delayingBlurEvent","draggingText","selForContextMenu","reset","receivedFocus","shift","updateHeightsInViewport","prevBottom","lineDiv","viewTop","oldHeight","mustScroll","updateWidgetHeight","chWidth","visibleLines","viewport","ensure","ensureFrom","ensureTo","maybeScrollWindow","doScroll","innerHeight","scrollNode","scrollIntoView","scrollPosIntoView","margin","limit","changed","endCoords","scrollPos","calculateScrollPos","startTop","startLeft","updateScrollTop","setScrollLeft","snapMargin","screentop","docBottom","atTop","atBottom","newTop","gutterSpace","screenleft","screenw","tooWide","addToScrollTop","resolveScrollToPos","ensureCursorVisible","getCursor","scrollToPos","cursorScrollMargin","scrollToCoords","scrollToRange","scrollToCoordsRange","sPos","updateDisplaySimple","setScrollTop","startWorker","forceScroll","scrollHeight","scrollbars","isScroller","scrollWidth","alignHorizontally","measureForScrollbars","gutterW","docH","viewHeight","viewWidth","barLeft","docHeight","NativeScrollbars","vert","horiz","tabIndex","checkedZeroWidth","minHeight","minWidth","update","needsH","needsV","sWidth","totalHeight","totalWidth","zeroWidthHack","disableHoriz","enableZeroWidthBar","disableVert","pointerEvents","bar","maybeDisable","elementFromPoint","NullScrollbars","updateScrollbars","startWidth","startHeight","updateScrollbarsInner","sizes","paddingBottom","heightForcer","borderBottom","scrollbarFiller","coverGutterNextToScrollbar","gutterFiller","scrollbarModel","initScrollbars","scrollbarStyle","axis","nextOpId","startOperation","updateInput","typing","changeObjs","selectionChanged","updateMaxLine","markArrays","endOperation","endOperations","endOperation_R1","endOperation_W1","endOperation_R2","endOperation_W2","endOperation_finish","maybeClipScrollbars","mustUpdate","DisplayUpdate","updatedDisplay","updateDisplayIfNeeded","barMeasure","adjustWidthTo","maxScrollLeft","preparedSelection","takeFocus","setDocumentHeight","postUpdateDisplay","wheelStartX","wheelStartY","maybeHiddenMarkers","unhidden","maybeUnhiddenMarkers","finish","runInOp","operation","methodOp","docMethodOp","highlight","highlightWorker","workTime","changedLines","oldStyles","highlighted","oldCls","newCls","ischange","workDelay","force","visible","editorIsHidden","wrapperHeight","oldDisplayWidth","events","scrollbarsClipped","marginBottom","borderRightWidth","selectionSnapshot","active","anchorNode","anchorOffset","focusNode","focusOffset","restoreSelection","snapshot","nodeName","removeAllRanges","addRange","renderedView","maybeUpdateLineNumberWidth","viewportMargin","different","lastWrapHeight","lastWrapWidth","toUpdate","selSnapshot","patchDisplay","selectionDiv","reportedViewFrom","reportedViewTo","updateNumbersFrom","container","rm","currentWheelTarget","updateNumber","updateGutterSpace","alignWidgets","comp","align","innerW","lineGutter","lineNumWidth","getGutters","sawLineNumbers","renderGutters","specs","gElt","updateGutters","Display","draggable","wheelDX","wheelDY","activeTouch","init","wheelSamples","wheelPixelsPerUnit","wheelEventDelta","dx","wheelDeltaX","dy","wheelDeltaY","HORIZONTAL_AXIS","VERTICAL_AXIS","wheelDelta","wheelEventPixels","delta","onScrollWheel","chromeScrollHack","pixelsPerUnit","deltaMode","deltaX","deltaY","canScrollX","canScrollY","pixels","movedX","movedY","sample","Selection","equals","here","there","deepCopy","Range","somethingSelected","normalizeSelection","mayTouch","selectionsMayTouch","prim","inv","simpleSelection","changeEnd","adjustForChange","computeSelAfterChange","offsetPos","computeReplacedSel","hint","oldPrev","newPrev","loadMode","modeOption","resetModeState","isWholeLineUpdate","wholeLineUpdateBefore","updateDoc","spansFor","linesFor","firstLine","lastText","lastSpans","nlines","insert","added","added$1","added$2","linkedDocs","sharedHistOnly","propagate","skip","sharedHist","linked","rel","shared","attachDoc","setDirectionClass","directionChanged","History","undone","undoDepth","lastModTime","lastSelTime","lastOp","lastSelOp","lastOrigin","lastSelOrigin","generation","maxGeneration","historyChangeFromChange","histChange","attachLocalSpans","clearSelectionEvents","lastChangeEvent","hist","addChangeToHistory","selAfter","opId","history","historyEventDelay","pushSelectionToHistory","selectionEventCanBeMerged","addSelectionToHistory","clearRedo","dest","existing","removeClearedSpans","explicitlyCleared","getOldSpans","mergeOldSpans","stretched","oldCur","stretchCur","copyHistoryArray","newGroup","instantiateSel","newChanges","extendRange","posBefore","extendSelection","setSelection","extendSelections","heads","replaceOneSelection","setSimpleSelection","filterSelectionChange","setSelectionReplaceHistory","setSelectionNoUndo","NaN","setSelectionInner","skipAtomicInSelection","reCheckSelection","mayClear","newAnchor","skipAtomic","newHead","skipAtomicInner","oldPos","preventCursorLeft","selectLeft","preventCursorRight","selectRight","atomic","near","movePos","far","cantEdit","selectAll","filterChange","canceled","cancel","makeChange","ignoreReadOnly","suppressEdits","makeChangeInner","makeChangeSingleDoc","rebased","rebaseHist","makeChangeFromHistory","allowSelectionOnly","suppress","antiChanges","returned","shiftDoc","distance","removed","makeChangeSingleDocInEditor","recomputeMaxLength","checkWidthStart","changesHandler","changeHandler","replaceRange","splitLines","rebaseHistSelSingle","rebaseHistArray","sub","copied","changeLine","handle","changeType","LeafChunk","BranchChunk","removeInner","insertInner","iterN","remaining","leaf","maybeSpill","me","sibling","myIndex","used","LineWidget","opt","adjustScrollWhenAboveVisible","addLineWidget","insertAt","aboveVisible","this$1","oldH","nextMarkerId","TextMarker","markText","markTextShared","replacedWith","addToHistory","curLine","clearOnEnter","clearHistory","withOp","visual","dHeight","SharedTextMarker","cloneNode","isParent","findSharedMarkers","findMarks","copySharedMarkers","mFrom","mTo","subMark","detachSharedMarkers","subMarker","nextDocId","Doc","lineSep","cleanGeneration","getValue","lineSeparator","setValue","getRange","getLineHandle","getLineNumber","getLineHandleVisualStart","lineCount","listSelections","setCursor","extendSelectionsBy","setSelections","addSelection","getSelections","replaceSelection","dup","replaceSelections","newSel","undo","redo","undoSelection","redoSelection","setExtending","getExtending","historySize","markClean","changeGeneration","forceSplit","isClean","gen","getHistory","setHistory","histData","setGutterMarker","gutterID","clearGutter","lineInfo","addLineClass","where","removeLineClass","removeLineWidget","setBookmark","realOpts","findMarksAt","getAllMarks","posFromIndex","sepSize","indexFromPos","copyHistory","linkedDoc","unlinkDoc","CodeMirror","splitIds","iterLinkedDocs","getEditor","setDirection","eachLine","lastDrop","onDrop","clearDragCursor","dataTransfer","isReadOnly","FileReader","File","read","markAsReadAndPasteIfAllFilesAreRead","readTextFromFile","allowDropFileTypes","reader","readAsText","text$1","getData","onDragStart","setData","effectAllowed","setDragImage","img","src","_top","onDragOver","frag","dragCursor","forEachCodeMirror","getElementsByClassName","byClass","editors","globalsRegistered","ensureGlobalHandlers","registerGlobalHandlers","resizeTimer","onResize","setSize","keyNames","fromCharCode","keyMap","normalizeKeyName","alt","ctrl","cmd","mod","normalizeKeyMap","keymap","keyname","lookupKey","getKeyMap","fallthrough","isModifierKey","keyCode","addModifierNames","noShift","altKey","metaKey","shiftKey","keyName","altGraphKey","deleteNearSelection","compute","kill","toKill","replaced","moveCharLogically","moveLogically","endOfLine","visually","prep","targetTop","moveVisually","bidi","mv","getWrappedLineExtent","moveInStorageOrder","searchInVisualLine","getRes","res","nextCh","basic","pcDefault","emacsy","macDefault","commands","singleSelection","killLine","deleteLine","delLineLeft","delWrappedLineLeft","delWrappedLineRight","rightPos","goDocStart","goDocEnd","goLineStart","goLineStartSmart","lineStartSmart","goLineEnd","lineEnd","goLineRight","goLineLeft","goLineLeftSmart","goLineUp","moveV","goLineDown","goPageUp","goPageDown","goCharLeft","moveH","goCharRight","goColumnLeft","goColumnRight","goWordLeft","goGroupRight","goGroupLeft","goWordRight","delCharBefore","deleteH","delCharAfter","delWordBefore","delWordAfter","delGroupBefore","delGroupAfter","indentAuto","indentSelection","indentMore","indentLess","insertTab","insertSoftTab","spaces","defaultTab","execCommand","transposeChars","newlineAndIndent","sels","indentLine","openLine","toggleOverwrite","firstNonWS","inWS","doHandleBinding","bound","dropShift","ensurePolled","prevShift","lookupKeyForEditor","keyMaps","extraKeys","stopSeq","dispatchKey","seq","keySeq","dispatchKeyInner","handleKeyBinding","motion","handleCharBinding","lastStoppedKey","onKeyDown","getField","handled","showCrossHair","up","onKeyUp","onKeyPress","charCode","lastClick","lastDoubleClick","DOUBLECLICK_DELAY","PastClick","clickRepeat","now","compare","onMouseDown","supportsTouch","clickInGutter","repeat","selectingText","handleMappedButton","leftButtonDown","onContextMenu","configureMouse","unit","addNew","moveOnDrag","contained","behavior","dragDrop","leftButtonStartDrag","leftButtonSelect","moved","dragEnd","mouseMove","dragStart","preventScroll","e2","rangeForUnit","findWordAt","ourRange","ourIndex","startSel","lastPos","extendTo","startCol","posCol","leftPos","oldRange","ranges$1","bidiSimplify","editorSize","counter","curCount","move","anchorLine","boundary","headIndex","usePart","gutterEvent","prevent","mX","mY","touches","lineBox","contextMenuInGutter","themeChanged","theme","Init","defaults","optionHandlers","defineOptions","deflt","notOnInit","defineOption","newBreaks","getInputField","spellcheck","autocorrect","autocapitalize","detach","attach","wrappingChanged","integer","blur","readOnlyChanged","screenReaderLabelChanged","dragDropChanged","resetPosition","funcs","dragFunctions","toggle","enter","over","leave","drop","inputStyles","inputStyle","pasteIncoming","cutIncoming","autofocus","registerEventHandlers","finishInit","initHooks","textRendering","word","touchFinished","prevTouch","finishTouch","isMouseLikeTouchEvent","touch","radiusX","radiusY","farAway","pageX","pageY","inp","how","aggressive","indent","curSpace","curSpaceString","indentUnit","indentString","indentWithTabs","pos$1","defineInitHook","lastCopied","setLastCopied","newLastCopied","applyTextInput","inserted","deleted","recent","paste","textLines","multiPaste","pasteLinesPerSelection","lineWise","changeEvent","triggerElectric","handlePaste","pasted","clipboardData","disableInput","electricChars","smartIndent","getModeAt","electricInput","copyableRanges","lineRange","disableBrowserMagic","hiddenTextarea","border","addEditorMethods","helpers","setOption","getDoc","addKeyMap","removeKeyMap","addOverlay","modeSpec","removeOverlay","newRanges","getTokenAt","getLineTokens","getTokenTypeAt","getHelper","getHelpers","help","_global","getStateAfter","defaultTextHeight","getViewport","addWidget","vspace","hspace","triggerOnKeyDown","triggerOnKeyPress","triggerOnKeyUp","triggerOnMouseDown","findPosH","amount","hitSide","rtlMoveVisually","findPosV","goalColumn","goals","headPos","startChar","check","scrollTo","getScrollInfo","interpret","swapDoc","phrase","phraseText","phrases","getScrollerElement","getGutterElement","registerHelper","registerGlobalHelper","predicate","origDir","lineDir","findNextLine","moveOnce","boundToLine","astral","sawType","pageSize","moveAmount","ContentEditableInput","lastAnchorNode","lastAnchorOffset","lastFocusNode","lastFocusOffset","polling","composing","gracePeriod","readDOMTimeout","posToDOM","isInGutter","scan","badPos","bad","domTextBetween","closing","extraLinebreak","recognizeMarker","close","addText","walk","cmText","markerID","isBlock","textContent","nodeValue","domToPos","lineNode","locateNodeInLineView","textNode","topNode","curNode","previousSibling","dist$1","belongsToInput","onCopyCut","lineWiseCopyCut","clearData","kludge","hadFocus","showPrimarySelection","contentEditable","updateFromDOM","readFromDOMSoon","forceCompositionEnd","showMultipleSelections","curAnchor","curFocus","rng","rangeCount","getRangeAt","startGracePeriod","rememberSelection","selectionInEditor","commonAncestorContainer","poll","pollSelection","pollInterval","pollContent","fromIndex","fromNode","toNode","toIndex","newText","oldText","cutFront","cutEnd","oldTop","maxCutFront","newBot","oldBot","maxCutEnd","chFrom","chTo","TextareaInput","prevInput","pollingFast","fromTextArea","textarea","tabindex","realSubmit","leaveSubmitMethodAlone","submit","wrappedSubmit","getTextArea","toTextArea","addLegacyProps","cmpPos","createField","prepareCopyCut","fastPoll","dispatchEvent","Event","_display","moveInputWithCursor","wrapOff","lineOff","teTop","teLeft","drawn","contextMenuPending","slowPoll","missed","same","resetSelectionOnContextMenu","oldScrollY","oldCSS","oldWrapperCSS","wrapperBox","offsetParent","scrollY","rehide","detectingSelectAll","prepareSelectAllHack","mouseup","extval","dontDelegate","defineExtension","func","defineDocExtension","version","factory","createCommonjsModule","sparkMd5","hex_chr","md5cycle","md5blk","md5blks","md5blk_array","md51","tmp","lo","hi","substring","md51_array","subarray","Uint8Array","rhex","hex","toUtf8","unescape","encodeURIComponent","utf8Str2ArrayBuffer","returnUInt8Array","buff","ArrayBuffer","arrayBuffer2Utf8Str","concatenateArrayBuffers","second","byteLength","buffer","hexToBinaryString","bytes","SparkMD5","clamp","num","targetArray","sourceArray","appendBinary","contents","_buff","_length","_hash","raw","ret","_finish","getState","hash","setState","hashBinary","classCallCheck","instance","Constructor","createClass","defineProperties","writable","protoProps","staticProps","fileSlice","mozSlice","webkitSlice","FileChecksum","chunkCount","chunkIndex","callback","md5Buffer","fileReader","fileReaderDidLoad","fileReaderDidError","readNextChunk","binaryDigest","base64digest","btoa","readAsArrayBuffer","findElements","toArray$1","eventInit","bubbles","cancelable","createEvent","initEvent","BlobRecord","checksum","filename","content_type","byte_size","responseType","csrfToken","requestDidLoad","requestDidError","direct_upload","directUploadData","toJSON","_xhr","BlobUpload","_blob$directUploadDat","notify","_len","messages","_key","DirectUploadController","dispatch","insertAdjacentElement","dispatchError","alert","inputSelector","DirectUploadsController","inputs","controllers","createDirectUploadControllers","startNextController","processingAttribute","submitButtonsByForm","didClick","didSubmitForm","didSubmitRemoteElement","handleFormSubmissionEvent","enable","click","autostart","ActiveStorage","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","currentQueue","queue","draining","queueIndex","cleanUpNextTick","drainQueue","run","runClearTimeout","Item","noop","nextTick","browser","env","argv","versions","addListener","once","removeListener","removeAllListeners","prependListener","prependOnceListener","cwd","chdir","umask","Function","webpackContext","req","webpackContextResolve","channel","cable","subscriptions","ad_id","connected","disconnected","received","handleMessage","hasAssetTarget","updateContentFromData","asset","assetTarget","hasFramesTarget","frames","framesTarget","hasPerformanceMetricsTarget","performance_metrics","performanceMetricsTarget","hasVideoTarget","video","videoTarget","initTooltipsAndPopovers","templateData","innerHTML","generateScreenshotsButton","enabledText","cocoonEvent","adContainer","addSiteButtonTargets","link","organization_campaign_ad_previews_path","adSelectedEvent","adId","refreshAdPreview","detachAdSelectedListener","adModalClosedEvent","adSelect","organization_campaign_ad_preview_path","modal","hideModal","textareaTarget","codeEditor","initCodeMirror","highlightLines","editor","styleSelectedText","codemirrorEditor","errorsAndWarnings","colorClass","iconClass","placement","faIcon","popover","checkAdBlock","FuckAdBlock","checkOnLoad","resetOnEnd","onDetected","notifyUser","notifyIntercom","getMessage","layout","closeWith","getKBButton","getKnowledgeBaseUrl","Intercom","serializeArray","hasAdPreviewTarget","hasPagexrayTarget","hasLandingPageTarget","_connected","_disconnect","_received","perform","listen","unselectAllFrames","selectFrame","enableFrameIdInput","disableAllFrameIdInputs","unselectAllFrameCards","framesTargets","inputsTargets","_FilesController","FilesController","FormData","processData","contentType","previewFrameTarget","setPreviewFrameThenSubmit","set_frame_organization_campaign_video_files_path","preview_frame","previewFrame","clipboard","writeText","AdsController","_DatatablesController","customButtons","exportOptions","customConfig","_get","_getPrototypeOf","$button","recapture_bulk_organization_campaign_ads_path","download_bulk_organization_campaign_ads_path","DatatablesController","CampaignsController","record_count","campaignIds","campaign_ids","new_organization_campaign_download_path","filterColumn","clientColumnIndex","clientFilterValue","clientFilterTarget","_CampaignsController","DeliveriesController","delivery_id","resend_organization_webhook_path","webhookId","PendingSetsController","reviewerColumnIndex","assignedFilterValue","sourceColumnIndex","sourceFilterValue","organizationColumnIndex","organizationFilterValue","assignedFilterTarget","sourceFilterTarget","organizationFilterTarget","_PendingSetsController","ScheduledSetsController","_ScheduledSetsController","ScreenshotsController","screenshotSetIds","screenshot_ids","new_organization_campaign_presentation_path","regenerate_organization_campaign_screenshot_sets_path","screenshot_set_ids","selectedScreenshotSetIds","draft_organization_campaign_screenshot_downloads_path","uniqueSort","selectedRowValues","SitesController","sites_ids","edit_bulk_organization_sites_path","sitesIds","tagsModal","sitesParams","tagList","tagListInput","siteId","add_tag_list","update_bulk_organization_sites_path","closeModal","tagsinput","tagsModalTarget","tagListInputTarget","WebhooksController","WebsiteScreenshotsController","daterangepicker","createDateRangePicker","startDate","hasStartDateTarget","startDateTarget","moment","format","bindEvent","setDefaultValues","ev","picker","setValueOnInit","setDeviceFrameValue","deviceFrameTarget","checked","_regeneratorRuntime","asyncIterator","define","Generator","makeInvokeMethod","tryCatch","arg","GeneratorFunction","GeneratorFunctionPrototype","defineIteratorMethods","_invoke","AsyncIterator","invoke","__await","callInvokeWithMethodAndArg","maybeInvokeDelegate","_sent","dispatchException","abrupt","resultName","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","displayName","isGeneratorFunction","awrap","async","rval","delegateYield","asyncGeneratorStep","_next","_throw","_defineProperties","_toPropertyKey","ReferenceError","_assertThisInitialized","_possibleConstructorReturn","_isNativeReflectConstruct","Boolean","valueOf","_setPrototypeOf","toPrimitive","_toPrimitive","subClass","superClass","_callee","path","_context","alertTarget","ignorePath","notifySuccess","notifyError","t0","_ignore","err","_x","contentTarget","checkbox","feature","enabled","organization_id","Organization","_toggleFeature","filterIndex","loadFilters","filters","filterOr","filterAnd","addFilterToForm","addContent","getElementById","operator","filterTemplateTarget","filterFieldsTarget","insertAdjacentHTML","enablerTarget","disablerTarget","enableIsChecked","inputContainerTarget","show","disableIsChecked","hide","is","inputDisabled","articleId","notificationHtml","DOMParser","parseFromString","perfCascadeSvg","perfCascade","fromHar","showIndicatorIcons","legendHolder","legendTarget","containerTarget","setPowerPointTemplateValue","setLogoVisibility","getTemplateValue","templateValue","displayLogoField","customLogoInputTarget","toggleCurrentLogo","customLogoContainerTarget","templateTarget","hasTemplateTarget","card","screenshotId","screenshotIdsTarget","existingField","customLogoChangedTarget","hasCurrentLogoTarget","currentLogoTarget","labelSuffix","labelTarget","iamCredentialsFieldsTarget","s3BucketPolicyFieldsTarget","accessKeyIdTarget","secretAccessKeyTarget","tomorrow","setHours","setDate","getDate","DateTimePicker","datePickerSelector","hiddenInputSelector","initDate","timePickerSelector","datepicker","bindDatePicker","hasRecaptureAdsTarget","recaptureAdsTarget","item","setDeviceForNewSiteField","hasDefaultDeviceSelectorTarget","savedDeviceMode","enabledOptions","defaultDeviceSelectorTarget","valueToSet","updateAllDeviceSelections","nextWeekday","getNextWeekday","singleDatePicker","autoApply","showDropdowns","minDate","maxYear","isInvalidDate","date","isoWeekday","new_static_modal_organization_site_lists_path","initSelectPickers","nextDate","updateDeviceSelection","specificDeviceSelect","deviceMode","setSmartDevice","setSpecificDevice","adDimensions","getAdDimensions","deviceKinds","adSizeDeviceKindMap","updateDeviceSelectOptions","deviceId","deviceSelect","findDeviceSelect","warn","cocoonItem","parents","selectedMode","hasAdSelectTarget","adSelectTargets","deviceIds","kind","deviceKindIdMap","selectedDeviceId","defaultDeviceId","adOption","dimensions","sourceTarget","toggleGamSiteWarning","filtersContainerTarget","gamSiteWarningTarget","newOptionForNewTag","_SitesController","defaultConfig","selectpickerApi","setInitialValue","iconBase","tickIcon","showTick","supported","setTooltipTitle","organization_campaign_ad_preview_converter_path","initializeSelect2","siteTagTarget","dropdownParent","search_organization_site_tags_path","templateResult","small","filterSiteTag","listTarget","el","createSites","siteFields","sitelist","sitesData","create_bulk_organization_sites_path","addNonExistingToSelect2","shuffle","setSelectedValue","displayErrors","tagsValue","search_organization_sites_path","strategy","tagListTarget","orderTargets","hasKindTarget","kindTarget","toggleKind","create_static_modal_organization_site_lists_path","siteListFields","fetchSitesFromList","members_organization_site_list_path","initializeTagsInputs","site_fields_organization_sites_path","Accept","newFormPlaceholderTarget","initializeLastTagsInput","nestedFields","tagsInputs","lastTagInput","formTarget","resetModalBodyHTML","setModalBodyHTML","formIframe","modalBody","parseUrlParams","setFieldValues","fieldTargets","fieldValue","querystring","pair","_pair$split2","_slicedToArray","sessionStorage","setWrapperTypeValue","toggleContainers","wrapperTypeTarget","wrapperTypeValue","toggleOsContainer","toggleTimestampContainer","hasOsOptionsContainerTarget","osOptionsContainerTarget","timestampContainerTarget","__assign","__values","__read","ar","__spread","compose","toHashMap","getStacktrace","stacktrace","stack","Serializable","_data","Environment","transport","globals","product","protocol","hostname","jest","XDomainRequest","supportsPromises","XDomainTransport","rx","XHRTransport","req_1","onreadystatechange","DONE","FetchTransport","NodeTransport","request","write","PushApi","_uri","uri","_apiKey","_clientVersion","_transport","_createTransport","_url","auth","_authorization","api_key","Span","timestamp","getTime","namespace","backtrace","setAction","setNamespace","setError","isError","setTags","toHashMapString","setParams","setBreadcrumbs","breadcrumbs","Queue","drain","api","_retries","_timerID","_duration","_api","_queue","initialDuration","schedule","expDuration","e_2_1","e_2","_d","pow","return","Appsignal","VERSION","ignored","_breadcrumbs","_hooks","decorators","overrides","_env","revision","ignoreErrors","_dispatcher","_options","tagsOrFn","error_1","_createSpanFromError","catch","sendError","use","plugin","createSpan","environment","e_1","addDecorator","decorator","addOverride","demo","demo_sample","addBreadcrumb","breadcrumb","crumb","metadata","category","ctx","opts","onunhandledrejection","onError","unhandledRejection","lineno","colno","_reasonFromError","reason","seenValue","seenKey","pathname","appContext","appsignal","windowEventsPlugin","pathDecoratorPlugin","userContext","User","user_id","intercom_user_id","user_email","email","approver","orgContext","organization_name","organization_slug","slug","prevHandler","framework","installErrorHandler","require","logicalName","identifierForContextKey","definitionForModuleAndIdentifier","definitionForModuleWithContextAndKey","definitionsFromContext","globalThis","AbortController","DEBUG","LIB_VERSION","D","Q","O","S","X","critical","E","U","N","F","R","C","T","GZipJS","Base64","M","A","L","q","B","H","W","z","V","G","J","Y","_log","POSTHOG_DEBUG","__rrweb_original__","uninitializedWarning","K","disable_external_dependency_loading","crossOrigin","Z","getOwnPropertySymbols","getOwnPropertyDescriptor","ee","getOwnPropertyDescriptors","__PosthogExtensions__","loadExternalDependency","requestRouter","endpointFor","loadSiteApp","se","re","ne","oe","ae","le","ue","ce","de","he","pe","ve","ge","fe","be","ye","we","Se","Ee","ke","xe","Ie","Pe","Fe","Re","Ce","Te","$e","Me","Ae","Oe","Le","De","Ne","qe","Be","He","Ue","_override_warning","featureFlagEventHandlers","reloadFeatureFlagsQueued","reloadFeatureFlagsInAction","getFlags","getFlagVariants","get_property","enabledFlags","overriddenFlags","finalFlags","getFlagPayloads","reloadFeatureFlags","_startReloadTimer","setAnonymousDistinctId","$anon_distinct_id","setReloadingPaused","resetRequestQueue","_reloadFeatureFlagsRequest","advanced_disable_feature_flags","distinct_id","get_distinct_id","groups","getGroups","person_properties","group_properties","disable_flags","_send_request","compression","disable_compression","feature_flag_request_timeout_ms","statusCode","receivedFeatureFlags","getFeatureFlag","decideEndpointWasHit","send_event","persistence","capture","$feature_flag","$feature_flag_response","getFeatureFlagPayload","isFeatureEnabled","addFeatureFlagsHandler","removeFeatureFlagsHandler","featureFlags","featureFlagPayloads","errorsWhileComputingFlags","_fireFeatureFlagsCallbacks","__loaded","unregister","onFeatureFlags","flags","flagVariants","_prepareFeatureFlagsForCallbacks","updateEarlyAccessFeatureEnrollment","$feature_enrollment","$set","setPersonPropertiesForFlags","getEarlyAccessFeatures","earlyAccessFeatures","errorsLoading","resetPersonPropertiesForFlags","setGroupPropertiesForFlags","resetGroupPropertiesForFlags","trunc","isInteger","isFinite","We","ze","fromFieldsV7","RangeError","compareTo","sign","je","Qe","generate","generateOrAbort","resetCounter","nextUint32","Ve","Ge","UUIDV7_DENY_WEAK_RNG","crypto","getRandomValues","Uint32Array","Je","Ye","Ke","Ze","tt","is_supported","cookie","decodeURIComponent","et","setTime","toUTCString","it","nt","ot","lt","ut","ct","dt","ht","pt","vt","gt","ft","mt","bt","yt","wt","St","Et","kt","xt","It","Pt","Ft","Rt","Ct","Tt","$t","Mt","At","Ot","Lt","Dt","Nt","qt","Bt","Ht","Ut","Wt","zt","jt","Vt","Gt","Qt","Jt","Yt","Xt","Kt","Zt","ei","ti","ii","si","ri","ni","ai","oi","li","Mozilla","ui","ci","di","campaignParams","_campaignParamsFromUrl","URL","_searchEngine","_searchInfoFromReferrer","$search_engine","referrer","ph_keyword","searchInfo","browserVersion","parseFloat","browserLanguage","userLanguage","os","device","deviceType","referringDomain","referrerInfo","$referrer","$referring_domain","initialPersonInfo","initialPersonPropsFromInfo","$initial_referrer","$initial_referring_domain","$initial_current_url","$initial_host","$initial_pathname","timezone","Intl","DateTimeFormat","resolvedOptions","timeZone","$os","$os_version","$browser","$device","$device_type","$timezone","$current_url","$host","$pathname","$raw_user_agent","$browser_version","$browser_language","$screen_height","$screen_width","$viewport_height","$viewport_width","innerWidth","$lib","$lib_version","$insert_id","$time","people_properties","pi","vi","campaign_params_saved","persistence_name","storage","buildStorage","debug","update_config","expire_days","cross_subdomain","secure","register_once","default_expiry","update_campaign_params","custom_campaign_params","update_search_keyword","update_referrer_info","set_initial_person_info","get_referrer_info","get_initial_props","safe_merge","cookie_expiration","set_disabled","disable_persistence","set_cross_subdomain","cross_subdomain_cookie","set_secure","secure_cookie","get_cross_subdomain","set_event_timer","remove_event_timer","set_property","gi","fi","sessionId","windowId","flatMap","mi","DomContentLoaded","Load","FullSnapshot","IncrementalSnapshot","Meta","Custom","Plugin","bi","Mutation","MouseMove","MouseInteraction","Scroll","ViewportResize","Input","TouchMove","MediaInteraction","StyleSheetRule","CanvasMutation","Font","Log","Drag","StyleDeclaration","AdoptedStyleSheet","CustomElement","yi","wi","Si","Ei","ki","xi","Ii","Pi","baseVal","Fi","Ui","Ri","Ai","Oi","Ci","composedPath","Ti","$i","Li","Di","Ni","qi","Bi","Hi","Wi","zi","ji","tag_name","attr_class","nth_child","nth_of_type","attr_id","localeCompare","Vi","$el_text","attr__href","Gi","attr__id","attr__class","Qi","Ji","Yi","initiatorTypes","maskRequestFn","recordHeaders","recordBody","recordInitialRequests","recordPerformance","performanceEntryTypeToObserve","payloadSizeLimitBytes","payloadHostDenyList","Xi","Ki","Zi","es","ts","ss","rs","mutationBuckets","refillRate","bucketSize","rrweb","mirror","getNode","getId","removes","texts","adds","numberOfChanges","getNodeOrRelevantParent","loggedTracker","onBlockedNode","refillBuckets","Uint16Array","ls","us","cs","ds","hs","_s","ps","vs","gs","fs","bs","ys","Ss","Es","ks","xs","Is","Ps","Fs","Rs","Cs","Ts","$s","Ms","I","As","Os","Ls","Ds","mem","Ns","qs","mtime","Bs","Hs","Us","TextEncoder","encode","zs","js","rrwebMethod","enqueuedAt","attempt","Vs","Gs","Qs","Js","matching","Ys","sessionIdleThresholdMilliseconds","session_recording","session_idle_threshold_ms","rrwebRecord","record","_captureStarted","sessionManager","fullSnapshotIntervalMillis","triggerStatus","full_snapshot_interval_millis","isSampled","sessionDuration","sessionStartTimestamp","checkAndGetSessionAndWindowId","isRecordingEnabled","disable_session_recording","isConsoleLogCaptureEnabled","enable_recording_console_log","canvasRecording","captureCanvas","recordCanvas","canvasFps","fps","canvasQuality","quality","networkPayloadCapture","capture_performance","network_timing","capturePerformance","sampleRate","minimumDuration","receivedDecide","_linkedFlag","_linkedFlagSeen","_urlBlocked","urlTriggerStatus","_urlTriggers","eventTriggerStatus","_eventTriggers","_flushBuffer","_tryAddCustomEvent","visibilityState","_endpoint","stopRrweb","clearBuffer","sessionTimeoutMs","startIfEnabledOrStop","_startCapture","_onBeforeUnload","_onOffline","_onOnline","_onVisibilityChange","_setupSampling","_addEventTriggerListener","_removePageViewCaptureHook","_addCaptureHook","_maskUrl","_onSessionIdListener","onSessionId","changeReason","stopRecording","_fullSnapshotTimer","_removeEventTriggerCaptureHook","_samplingSessionListener","makeSamplingDecision","_reportStarted","afterDecideResponse","_persistDecideResponse","sessionRecording","linkedFlag","endpoint","flag","variant","linkedVariant","urlTriggers","urlBlocklist","_urlBlocklist","eventTriggers","minimumDurationMilliseconds","consoleLogRecordingEnabled","_persistDecideOnSessionListener","onRRwebEmit","payload","trace","consent","isOptedOut","_onScriptLoaded","isInteractiveEvent","_updateWindowAndSessionIds","isIdle","_lastActivityTimestamp","eventTimestamp","lastActivityTimestamp","threshold","bufferLength","bufferSize","_scheduleFullSnapshot","_tryRRWebMethod","queuedRRWebEvents","addCustomEvent","_tryTakeFullSnapshot","takeFullSnapshot","blockClass","blockSelector","ignoreClass","maskTextClass","maskTextSelector","maskTextFn","maskAllInputs","maskInputOptions","password","maskInputFn","slimDOMOptions","collectFonts","inlineStylesheet","recordCrossOriginIframes","sampling","canvas","dataURLOptions","mutationRateLimiter","__mutationRateLimiterRefillRate","__mutationRateLimiterBucketSize","_gatherRRWebPlugins","plugins","sessionRecordingOptions","activePlugins","rrwebPlugins","getRecordConsolePlugin","getRecordNetworkPlugin","_forceAllowLocalhostNetworkCapture","requestBody","requestHeaders","responseBody","responseHeaders","maskNetworkRequestFn","maskCapturedNetworkRequestFn","_processQueuedEvents","_lastHref","_pageViewFallBack","_checkUrlTriggerConditions","throttleMutations","compress_events","cv","$snapshot_bytes","$snapshot_data","$session_id","$window_id","_captureSnapshotBuffered","capture_pageview","flushBufferTimer","_captureSnapshot","_noTruncate","_batchKey","skip_client_rate_limiting","_pauseRecording","_resumeRecording","_activateTrigger","overrideLinkedFlag","overrideSampling","overrideTrigger","register_for_session","$session_recording_start_reason","Xs","_hasBootstrappedFeatureFlags","advanced_disable_feature_flags_on_first_load","parseDecideResponse","_afterDecideResponse","siteApps","opt_in_site_apps","Ks","Zs","er","UNINITIALIZED","LOADING","LOADED","tr","setToolbarState","ph_toolbar_state","getToolbarState","maybeLoadToolbar","atob","desiredHash","replaceState","userIntent","loadToolbar","_callLoadToolbar","ph_load_toolbar","ph_load_editor","region","advanced_disable_toolbar_metrics","apiURL","instrument","_loadEditor","maybeLoadEditor","ir","sendRequest","enqueue","flushTimeout","setFlushTimeout","clearFlushTimeout","formatQueue","isPaused","flushTimeoutMs","batchKey","sr","rr","nr","_t","or","estimatedSize","Headers","keepalive","finally","sendBeacon","beacon","cr","lr","ur","areWeOnline","onLine","flush","retriableRequest","retriesPerformedSoFar","propertyIsEnumerable","retry_count","retryAt","requestOptions","isPolling","poller","pollIntervalMs","dr","_windowId","_sessionId","_sessionStartTimestamp","_sessionActivityTimestamp","_sessionIdGenerator","_windowIdGenerator","session_idle_timeout_seconds","_sessionTimeoutMs","_window_id_storage_key","_primary_window_exists_storage_key","_canUseSessionStorage","bootstrap","sessionID","_setSessionId","_listenToReloadWindow","_sessionIdChangedHandlers","_setWindowId","_getWindowId","_getSessionId","resetSessionId","noSessionId","activityTimeout","sessionPastMaximumLength","US","EU","CUSTOM","hr","_r","apiHost","api_host","uiHost","ui_host","_regionCache","fr","mr","br","pr","vr","organization","projectId","prefix","severityAllowList","sessionRecordingStarted","get_session_replay_url","withTimestamp","exception","$exception_message","$exception_type","$exception_personURL","$exception_level","$exception_list","$sentry_event_id","event_id","$sentry_exception","$sentry_exception_message","$sentry_exception_type","$sentry_tags","$sentry_url","exceptions","sendExceptionEvent","gr","setupOnce","wr","_instance","doPageView","_previousPageViewProperties","_currentPath","scrollManager","resetContext","_prevPageviewTimestamp","doPageLeave","maxScrollHeight","lastScrollY","maxScrollY","maxContentHeight","lastContentY","maxContentY","$prev_pageview_last_scroll","$prev_pageview_last_scroll_percentage","$prev_pageview_max_scroll","$prev_pageview_max_scroll_percentage","$prev_pageview_last_content","$prev_pageview_last_content_percentage","$prev_pageview_max_content","$prev_pageview_max_content_percentage","$prev_pageview_pathname","$prev_pageview_duration","Popover","API","Widget","Open","MultipleChoice","SingleChoice","Rating","Link","NextQuestion","End","ResponseBased","SpecificQuestion","Sr","Er","checkStepEvent","checkStepUrl","checkStepElement","actionEvents","actionRegistry","steps","autocapture","setElementSelectors","checkAction","_debugEventEmitter","_addActionHook","onAction","checkStep","matchString","url_matching","escapeStringRegexp","getElementsList","href_matching","text_matching","$element_selectors","$elements","kr","eventToSurveys","actionToSurveys","setupEventBasedSurveys","setupActionBasedSurveys","conditions","actions","actionMatcher","onEvent","SURVEY_SHOWN_EVENT_NAME","$survey_id","_updateActivatedSurveys","getSurveys","getEventToSurveys","_getActionMatcher","xr","Ir","Pr","Fr","Rr","Cr","Tr","$r","Mr","Ar","Or","Lr","Dr","Nr","qr","__k","__b","__e","__d","__c","__v","__i","__u","vnode","Br","Hr","Ur","Wr","zr","jr","__r","debounceRendering","__P","en","__n","ownerSVGElement","tn","Vr","Jr","nn","Gr","rn","Qr","Yr","setProperty","Xr","Zr","Kr","contextType","__E","render","__h","_sb","__s","getDerivedStateFromProps","componentWillMount","componentDidMount","componentWillReceiveProps","shouldComponentUpdate","componentWillUpdate","componentDidUpdate","getChildContext","getSnapshotBeforeUpdate","localName","createElementNS","__html","sn","diffed","unmount","componentWillUnmount","getDerivedStateFromError","componentDidCatch","isPreviewMode","previewPageIndex","handleCloseSurveyPopup","isPopup","Consumer","Provider","an","ln","icontains","not_icontains","regex","not_regex","exact","is_not","un","_surveyEventReceiver","_decideServerResponse","surveys","loadIfEnabled","generateSurveys","disable_surveys","_surveyManager","getActiveMatchingSurveys","start_date","end_date","urlMatchType","linked_flag_key","targeting_flag_key","internal_targeting_flag_key","feature_flag_keys","_canActivateRepeatedly","checkFlags","every","getNextSurveyStep","questions","branching","choices","responseValues","scale","canActivateRepeatedly","canRenderSurvey","renderSurvey","cn","quota_limited","serverLimits","captureEventsPerSecond","rate_limiting","events_per_second","captureEventsBurstLimit","events_burst_limit","lastEventRateLimited","clientRateLimitContext","isRateLimited","$$client_ingestion_warning_message","remainingTokens","isServerRateLimited","dn","initialPathName","hn","_getStoredProps","_sessionSourceParamGenerator","_persistence","_sessionIdManager","_onSessionIdCallback","getSessionProps","$client_session_initial_referring_host","$client_session_initial_pathname","$client_session_initial_utm_source","utm_source","$client_session_initial_utm_campaign","utm_campaign","$client_session_initial_utm_medium","utm_medium","$client_session_initial_utm_content","utm_content","$client_session_initial_utm_term","utm_term","_n","pn","vn","userAgentData","brands","brand","webdriver","gn","clicks","isRageClick","Rn","mn","bn","capture_dead_clicks","yn","lazyLoadedDeadClicksAutocapture","_lazyLoadedDeadClicksAutocapture","isEnabled","onCapture","startIfEnabled","captureDeadClicks","loadScript","initDeadClicksAutocapture","__onCapture","wn","_enabledServerSide","flushIntervalMilliseconds","capture_heatmaps","flush_interval_milliseconds","enable_heatmaps","_initialized","_setupListeners","_flushInterval","deadClicksCapture","getAndClearBuffer","heatmaps","_onDeadClick","_onClick","originalEvent","_onMouseMove","_getProperties","scrollX","scrollElement","target_fixed","rageclicks","_capture","_mouseMoveTimeout","$heatmap_data","Sn","_updateScrollData","startMeasuringScrollPosition","scroll_root_selector","En","kn","previousElementSibling","In","maskAllElementAttributes","maskAllText","elementAttributeIgnoreList","elementsChainAsString","xn","explicitNoCapture","$event_type","$ce_version","$elements_chain","$external_click_url","Pn","_elementSelectors","url_allowlist","url_ignorelist","_addDomEventHandlers","isBrowserSupported","_captureEvent","capture_copied_text","_elementsChainAsString","autocapture_opt_out","_isDisabledServerSide","getElementSelectors","advanced_disable_decide","MouseEvent","rageclick","dom_event_allowlist","getPropertyValue","element_allowlist","css_selector_allowlist","Mi","mask_all_element_attributes","mask_all_text","element_attribute_ignorelist","$selected_content","$copy_type","Fn","_restoreXHRPatch","tracingHeadersPatchFns","_patchXHR","_restoreFetchPatch","_patchFetch","_loadScript","__add_tracing_headers","_startCapturing","PENDING","DENIED","GRANTED","Cn","getDnt","storedConsent","opt_out_capturing_by_default","isOptedIn","optInOut","storageKey","opt_out_capturing_cookie_prefix","_storage","opt_out_capturing_persistence_type","respect_dnt","doNotTrack","msDoNotTrack","Tn","$n","hasHandlers","isCapturing","errorWrappingFunctions","wrapOnError","wrapUnhandledRejection","unwrapOnError","captureException","unwrapUnhandledRejection","stopCapturing","remoteEnabled","__POSTHOG_INSTRUMENTED__","originalOnUnhandledRejectionHandler","startCapturing","autocaptureExceptions","Mn","An","On","metrics","firstMetricTimestamp","_delayedFlushTimer","_currentURL","_maxAllowedValue","_flushToCapture","flushToCaptureTimeoutMs","attribution","interactionTargetElement","allowedMetrics","postHogWebVitalsCallbacks","onLCP","onCLS","onFCP","onINP","_addToBuffer","web_vitals_allowed_metrics","web_vitals_delayed_flush_ms","__web_vitals_max_value","web_vitals","Ln","Dn","getWebExperiments","logInfo","_flagToExperiments","feature_flag_key","_featureFlags","variants","applyTransforms","transforms","matchesTestVariant","applyFeatureFlagChanges","disable_web_experiments","_is_bot","previewWebExperiment","getWindowLocation","showPreviewWebExperiment","getWebExperimentsAndEvaluateDisplayLogic","experiments","matchUrlConditions","matchUTMConditions","utm","innerText","$web_experiment_name","$web_experiment_variant","$web_experiment_preview","$web_experiment_document_url","$web_experiment_elements_modified","custom_blocked_useragents","Nn","qn","Bn","Hn","Un","Wn","store_google","save_referrer","capture_pageleave","verbose","upgrade","ip","opt_out_persistence_by_default","opt_out_useragent_filter","property_denylist","sanitize_properties","request_headers","inapp_protocol","inapp_link_new_window","request_batching","properties_string_max_length","on_request_error","get_device_id","_onCapture","person_profiles","before_send","zn","process_person","xhr_headers","cookie_name","disable_cookie","property_blacklist","jn","_forceAllowLocalhost","__forceAllowLocalhost","Vn","SentryIntegration","sentryIntegration","processEvent","__request_queue","analyticsDefaultEndpoint","_initialPageviewCaptured","_initialPersonProfilesConfig","toolbar","pageViewManager","rateLimiter","people","setPersonProperties","set_once","_init","_triggered_notifs","set_config","on_xhr_error","sessionPersistence","_requestQueue","_send_retriable_request","_retryQueue","sessionPropsManager","disable_scroll_properties","webVitalsAutocapture","exceptionObserver","deadClicksAutocapture","thisC","_sync_opt_out_with_persistence","distinctID","isIdentifiedID","$device_id","_handle_unload","segment","anonymousId","user","userId","identify","_calculate_event_properties","isLoaded","track","yr","_loaded","supportedCompression","analytics","defaultIdentifiedOnly","_start_queue_if_opted_in","_captureInitialPageview","has_opted_out_capturing","_dom_loaded","_shouldCapturePageleave","api_transport","ver","checkForLimiting","_execute_array","uuid","$lib_rate_limit_remaining_tokens","_calculate_set_once_properties","$set_once","$event_time_override_provided","$event_time_override_system_time","_runBeforeSend","_internalEventEmitter","send_instantly","$lib_custom_api_host","__preview_send_client_session_params","$duration","toFixed","$browser_type","$is_identified","_isIdentified","_hasPersonProcessing","$process_person_profile","_requirePersonProcessing","unregister_for_session","_register_single","$user_id","$had_persisted_distinct_id","$groups","$group_type","$group_key","$group_set","resetGroups","get_session_id","timestampLookBack","alias","oldConfig","newConfig","startSessionRecording","linked_flag","url_trigger","event_trigger","stopSessionRecording","parseErrorAsProperties","syntheticException","mechanism","synthetic","getSessionProperty","createPersonProfile","opt_in_capturing","captureEventName","captureProperties","opt_out_capturing","has_opted_in_capturing","clear_opt_in_out_capturing","Gn","Qn","_this$projectKey","projectKey","posthog","handlePosthogLoaded","identifyUser","sessionUrl","startRecording","updateIntegrations","identifyOrganization","posthog_session_url"],"mappings":"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","file":"js/application-413c1e294f87aff91731.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/packs/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 73);\n","var EventListener = /** @class */function () {\n function EventListener(eventTarget, eventName) {\n this.eventTarget = eventTarget;\n this.eventName = eventName;\n this.unorderedBindings = new Set();\n }\n EventListener.prototype.connect = function () {\n this.eventTarget.addEventListener(this.eventName, this, false);\n };\n EventListener.prototype.disconnect = function () {\n this.eventTarget.removeEventListener(this.eventName, this, false);\n };\n // Binding observer delegate\n /** @hidden */\n EventListener.prototype.bindingConnected = function (binding) {\n this.unorderedBindings.add(binding);\n };\n /** @hidden */\n EventListener.prototype.bindingDisconnected = function (binding) {\n this.unorderedBindings.delete(binding);\n };\n EventListener.prototype.handleEvent = function (event) {\n var extendedEvent = extendEvent(event);\n for (var _i = 0, _a = this.bindings; _i < _a.length; _i++) {\n var binding = _a[_i];\n if (extendedEvent.immediatePropagationStopped) {\n break;\n } else {\n binding.handleEvent(extendedEvent);\n }\n }\n };\n Object.defineProperty(EventListener.prototype, \"bindings\", {\n get: function () {\n return Array.from(this.unorderedBindings).sort(function (left, right) {\n var leftIndex = left.index,\n rightIndex = right.index;\n return leftIndex < rightIndex ? -1 : leftIndex > rightIndex ? 1 : 0;\n });\n },\n enumerable: true,\n configurable: true\n });\n return EventListener;\n}();\nexport { EventListener };\nfunction extendEvent(event) {\n if (\"immediatePropagationStopped\" in event) {\n return event;\n } else {\n var stopImmediatePropagation_1 = event.stopImmediatePropagation;\n return Object.assign(event, {\n immediatePropagationStopped: false,\n stopImmediatePropagation: function () {\n this.immediatePropagationStopped = true;\n stopImmediatePropagation_1.call(this);\n }\n });\n }\n}","import { EventListener } from \"./event_listener\";\nvar Dispatcher = /** @class */function () {\n function Dispatcher(application) {\n this.application = application;\n this.eventListenerMaps = new Map();\n this.started = false;\n }\n Dispatcher.prototype.start = function () {\n if (!this.started) {\n this.started = true;\n this.eventListeners.forEach(function (eventListener) {\n return eventListener.connect();\n });\n }\n };\n Dispatcher.prototype.stop = function () {\n if (this.started) {\n this.started = false;\n this.eventListeners.forEach(function (eventListener) {\n return eventListener.disconnect();\n });\n }\n };\n Object.defineProperty(Dispatcher.prototype, \"eventListeners\", {\n get: function () {\n return Array.from(this.eventListenerMaps.values()).reduce(function (listeners, map) {\n return listeners.concat(Array.from(map.values()));\n }, []);\n },\n enumerable: true,\n configurable: true\n });\n // Binding observer delegate\n /** @hidden */\n Dispatcher.prototype.bindingConnected = function (binding) {\n this.fetchEventListenerForBinding(binding).bindingConnected(binding);\n };\n /** @hidden */\n Dispatcher.prototype.bindingDisconnected = function (binding) {\n this.fetchEventListenerForBinding(binding).bindingDisconnected(binding);\n };\n // Error handling\n Dispatcher.prototype.handleError = function (error, message, detail) {\n if (detail === void 0) {\n detail = {};\n }\n this.application.handleError(error, \"Error \" + message, detail);\n };\n Dispatcher.prototype.fetchEventListenerForBinding = function (binding) {\n var eventTarget = binding.eventTarget,\n eventName = binding.eventName;\n return this.fetchEventListener(eventTarget, eventName);\n };\n Dispatcher.prototype.fetchEventListener = function (eventTarget, eventName) {\n var eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);\n var eventListener = eventListenerMap.get(eventName);\n if (!eventListener) {\n eventListener = this.createEventListener(eventTarget, eventName);\n eventListenerMap.set(eventName, eventListener);\n }\n return eventListener;\n };\n Dispatcher.prototype.createEventListener = function (eventTarget, eventName) {\n var eventListener = new EventListener(eventTarget, eventName);\n if (this.started) {\n eventListener.connect();\n }\n return eventListener;\n };\n Dispatcher.prototype.fetchEventListenerMapForEventTarget = function (eventTarget) {\n var eventListenerMap = this.eventListenerMaps.get(eventTarget);\n if (!eventListenerMap) {\n eventListenerMap = new Map();\n this.eventListenerMaps.set(eventTarget, eventListenerMap);\n }\n return eventListenerMap;\n };\n return Dispatcher;\n}();\nexport { Dispatcher };","// capture nos.: 12 23 4 43 1 5 56 7 76\nvar descriptorPattern = /^((.+?)(@(window|document))?->)?(.+?)(#(.+))?$/;\nexport function parseDescriptorString(descriptorString) {\n var source = descriptorString.trim();\n var matches = source.match(descriptorPattern) || [];\n return {\n eventTarget: parseEventTarget(matches[4]),\n eventName: matches[2],\n identifier: matches[5],\n methodName: matches[7]\n };\n}\nfunction parseEventTarget(eventTargetName) {\n if (eventTargetName == \"window\") {\n return window;\n } else if (eventTargetName == \"document\") {\n return document;\n }\n}\nexport function stringifyEventTarget(eventTarget) {\n if (eventTarget == window) {\n return \"window\";\n } else if (eventTarget == document) {\n return \"document\";\n }\n}","import { parseDescriptorString, stringifyEventTarget } from \"./action_descriptor\";\nvar Action = /** @class */function () {\n function Action(element, index, descriptor) {\n this.element = element;\n this.index = index;\n this.eventTarget = descriptor.eventTarget || element;\n this.eventName = descriptor.eventName || getDefaultEventNameForElement(element) || error(\"missing event name\");\n this.identifier = descriptor.identifier || error(\"missing identifier\");\n this.methodName = descriptor.methodName || error(\"missing method name\");\n }\n Action.forToken = function (token) {\n return new this(token.element, token.index, parseDescriptorString(token.content));\n };\n Action.prototype.toString = function () {\n var eventNameSuffix = this.eventTargetName ? \"@\" + this.eventTargetName : \"\";\n return \"\" + this.eventName + eventNameSuffix + \"->\" + this.identifier + \"#\" + this.methodName;\n };\n Object.defineProperty(Action.prototype, \"eventTargetName\", {\n get: function () {\n return stringifyEventTarget(this.eventTarget);\n },\n enumerable: true,\n configurable: true\n });\n return Action;\n}();\nexport { Action };\nvar defaultEventNames = {\n \"a\": function (e) {\n return \"click\";\n },\n \"button\": function (e) {\n return \"click\";\n },\n \"form\": function (e) {\n return \"submit\";\n },\n \"input\": function (e) {\n return e.getAttribute(\"type\") == \"submit\" ? \"click\" : \"change\";\n },\n \"select\": function (e) {\n return \"change\";\n },\n \"textarea\": function (e) {\n return \"change\";\n }\n};\nexport function getDefaultEventNameForElement(element) {\n var tagName = element.tagName.toLowerCase();\n if (tagName in defaultEventNames) {\n return defaultEventNames[tagName](element);\n }\n}\nfunction error(message) {\n throw new Error(message);\n}","var Binding = /** @class */function () {\n function Binding(context, action) {\n this.context = context;\n this.action = action;\n }\n Object.defineProperty(Binding.prototype, \"index\", {\n get: function () {\n return this.action.index;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"eventTarget\", {\n get: function () {\n return this.action.eventTarget;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"identifier\", {\n get: function () {\n return this.context.identifier;\n },\n enumerable: true,\n configurable: true\n });\n Binding.prototype.handleEvent = function (event) {\n if (this.willBeInvokedByEvent(event)) {\n this.invokeWithEvent(event);\n }\n };\n Object.defineProperty(Binding.prototype, \"eventName\", {\n get: function () {\n return this.action.eventName;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"method\", {\n get: function () {\n var method = this.controller[this.methodName];\n if (typeof method == \"function\") {\n return method;\n }\n throw new Error(\"Action \\\"\" + this.action + \"\\\" references undefined method \\\"\" + this.methodName + \"\\\"\");\n },\n enumerable: true,\n configurable: true\n });\n Binding.prototype.invokeWithEvent = function (event) {\n try {\n this.method.call(this.controller, event);\n } catch (error) {\n var _a = this,\n identifier = _a.identifier,\n controller = _a.controller,\n element = _a.element,\n index = _a.index;\n var detail = {\n identifier: identifier,\n controller: controller,\n element: element,\n index: index,\n event: event\n };\n this.context.handleError(error, \"invoking action \\\"\" + this.action + \"\\\"\", detail);\n }\n };\n Binding.prototype.willBeInvokedByEvent = function (event) {\n var eventTarget = event.target;\n if (this.element === eventTarget) {\n return true;\n } else if (eventTarget instanceof Element && this.element.contains(eventTarget)) {\n return this.scope.containsElement(eventTarget);\n } else {\n return true;\n }\n };\n Object.defineProperty(Binding.prototype, \"controller\", {\n get: function () {\n return this.context.controller;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"methodName\", {\n get: function () {\n return this.action.methodName;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"element\", {\n get: function () {\n return this.scope.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"scope\", {\n get: function () {\n return this.context.scope;\n },\n enumerable: true,\n configurable: true\n });\n return Binding;\n}();\nexport { Binding };","var ElementObserver = /** @class */function () {\n function ElementObserver(element, delegate) {\n var _this = this;\n this.element = element;\n this.started = false;\n this.delegate = delegate;\n this.elements = new Set();\n this.mutationObserver = new MutationObserver(function (mutations) {\n return _this.processMutations(mutations);\n });\n }\n ElementObserver.prototype.start = function () {\n if (!this.started) {\n this.started = true;\n this.mutationObserver.observe(this.element, {\n attributes: true,\n childList: true,\n subtree: true\n });\n this.refresh();\n }\n };\n ElementObserver.prototype.stop = function () {\n if (this.started) {\n this.mutationObserver.takeRecords();\n this.mutationObserver.disconnect();\n this.started = false;\n }\n };\n ElementObserver.prototype.refresh = function () {\n if (this.started) {\n var matches = new Set(this.matchElementsInTree());\n for (var _i = 0, _a = Array.from(this.elements); _i < _a.length; _i++) {\n var element = _a[_i];\n if (!matches.has(element)) {\n this.removeElement(element);\n }\n }\n for (var _b = 0, _c = Array.from(matches); _b < _c.length; _b++) {\n var element = _c[_b];\n this.addElement(element);\n }\n }\n };\n // Mutation record processing\n ElementObserver.prototype.processMutations = function (mutations) {\n if (this.started) {\n for (var _i = 0, mutations_1 = mutations; _i < mutations_1.length; _i++) {\n var mutation = mutations_1[_i];\n this.processMutation(mutation);\n }\n }\n };\n ElementObserver.prototype.processMutation = function (mutation) {\n if (mutation.type == \"attributes\") {\n this.processAttributeChange(mutation.target, mutation.attributeName);\n } else if (mutation.type == \"childList\") {\n this.processRemovedNodes(mutation.removedNodes);\n this.processAddedNodes(mutation.addedNodes);\n }\n };\n ElementObserver.prototype.processAttributeChange = function (node, attributeName) {\n var element = node;\n if (this.elements.has(element)) {\n if (this.delegate.elementAttributeChanged && this.matchElement(element)) {\n this.delegate.elementAttributeChanged(element, attributeName);\n } else {\n this.removeElement(element);\n }\n } else if (this.matchElement(element)) {\n this.addElement(element);\n }\n };\n ElementObserver.prototype.processRemovedNodes = function (nodes) {\n for (var _i = 0, _a = Array.from(nodes); _i < _a.length; _i++) {\n var node = _a[_i];\n var element = this.elementFromNode(node);\n if (element) {\n this.processTree(element, this.removeElement);\n }\n }\n };\n ElementObserver.prototype.processAddedNodes = function (nodes) {\n for (var _i = 0, _a = Array.from(nodes); _i < _a.length; _i++) {\n var node = _a[_i];\n var element = this.elementFromNode(node);\n if (element && this.elementIsActive(element)) {\n this.processTree(element, this.addElement);\n }\n }\n };\n // Element matching\n ElementObserver.prototype.matchElement = function (element) {\n return this.delegate.matchElement(element);\n };\n ElementObserver.prototype.matchElementsInTree = function (tree) {\n if (tree === void 0) {\n tree = this.element;\n }\n return this.delegate.matchElementsInTree(tree);\n };\n ElementObserver.prototype.processTree = function (tree, processor) {\n for (var _i = 0, _a = this.matchElementsInTree(tree); _i < _a.length; _i++) {\n var element = _a[_i];\n processor.call(this, element);\n }\n };\n ElementObserver.prototype.elementFromNode = function (node) {\n if (node.nodeType == Node.ELEMENT_NODE) {\n return node;\n }\n };\n ElementObserver.prototype.elementIsActive = function (element) {\n if (element.isConnected != this.element.isConnected) {\n return false;\n } else {\n return this.element.contains(element);\n }\n };\n // Element tracking\n ElementObserver.prototype.addElement = function (element) {\n if (!this.elements.has(element)) {\n if (this.elementIsActive(element)) {\n this.elements.add(element);\n if (this.delegate.elementMatched) {\n this.delegate.elementMatched(element);\n }\n }\n }\n };\n ElementObserver.prototype.removeElement = function (element) {\n if (this.elements.has(element)) {\n this.elements.delete(element);\n if (this.delegate.elementUnmatched) {\n this.delegate.elementUnmatched(element);\n }\n }\n };\n return ElementObserver;\n}();\nexport { ElementObserver };","import { ElementObserver } from \"./element_observer\";\nvar AttributeObserver = /** @class */function () {\n function AttributeObserver(element, attributeName, delegate) {\n this.attributeName = attributeName;\n this.delegate = delegate;\n this.elementObserver = new ElementObserver(element, this);\n }\n Object.defineProperty(AttributeObserver.prototype, \"element\", {\n get: function () {\n return this.elementObserver.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AttributeObserver.prototype, \"selector\", {\n get: function () {\n return \"[\" + this.attributeName + \"]\";\n },\n enumerable: true,\n configurable: true\n });\n AttributeObserver.prototype.start = function () {\n this.elementObserver.start();\n };\n AttributeObserver.prototype.stop = function () {\n this.elementObserver.stop();\n };\n AttributeObserver.prototype.refresh = function () {\n this.elementObserver.refresh();\n };\n Object.defineProperty(AttributeObserver.prototype, \"started\", {\n get: function () {\n return this.elementObserver.started;\n },\n enumerable: true,\n configurable: true\n });\n // Element observer delegate\n AttributeObserver.prototype.matchElement = function (element) {\n return element.hasAttribute(this.attributeName);\n };\n AttributeObserver.prototype.matchElementsInTree = function (tree) {\n var match = this.matchElement(tree) ? [tree] : [];\n var matches = Array.from(tree.querySelectorAll(this.selector));\n return match.concat(matches);\n };\n AttributeObserver.prototype.elementMatched = function (element) {\n if (this.delegate.elementMatchedAttribute) {\n this.delegate.elementMatchedAttribute(element, this.attributeName);\n }\n };\n AttributeObserver.prototype.elementUnmatched = function (element) {\n if (this.delegate.elementUnmatchedAttribute) {\n this.delegate.elementUnmatchedAttribute(element, this.attributeName);\n }\n };\n AttributeObserver.prototype.elementAttributeChanged = function (element, attributeName) {\n if (this.delegate.elementAttributeValueChanged && this.attributeName == attributeName) {\n this.delegate.elementAttributeValueChanged(element, attributeName);\n }\n };\n return AttributeObserver;\n}();\nexport { AttributeObserver };","export function add(map, key, value) {\n fetch(map, key).add(value);\n}\nexport function del(map, key, value) {\n fetch(map, key).delete(value);\n prune(map, key);\n}\nexport function fetch(map, key) {\n var values = map.get(key);\n if (!values) {\n values = new Set();\n map.set(key, values);\n }\n return values;\n}\nexport function prune(map, key) {\n var values = map.get(key);\n if (values != null && values.size == 0) {\n map.delete(key);\n }\n}","import { add, del } from \"./set_operations\";\nvar Multimap = /** @class */function () {\n function Multimap() {\n this.valuesByKey = new Map();\n }\n Object.defineProperty(Multimap.prototype, \"values\", {\n get: function () {\n var sets = Array.from(this.valuesByKey.values());\n return sets.reduce(function (values, set) {\n return values.concat(Array.from(set));\n }, []);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Multimap.prototype, \"size\", {\n get: function () {\n var sets = Array.from(this.valuesByKey.values());\n return sets.reduce(function (size, set) {\n return size + set.size;\n }, 0);\n },\n enumerable: true,\n configurable: true\n });\n Multimap.prototype.add = function (key, value) {\n add(this.valuesByKey, key, value);\n };\n Multimap.prototype.delete = function (key, value) {\n del(this.valuesByKey, key, value);\n };\n Multimap.prototype.has = function (key, value) {\n var values = this.valuesByKey.get(key);\n return values != null && values.has(value);\n };\n Multimap.prototype.hasKey = function (key) {\n return this.valuesByKey.has(key);\n };\n Multimap.prototype.hasValue = function (value) {\n var sets = Array.from(this.valuesByKey.values());\n return sets.some(function (set) {\n return set.has(value);\n });\n };\n Multimap.prototype.getValuesForKey = function (key) {\n var values = this.valuesByKey.get(key);\n return values ? Array.from(values) : [];\n };\n Multimap.prototype.getKeysForValue = function (value) {\n return Array.from(this.valuesByKey).filter(function (_a) {\n var key = _a[0],\n values = _a[1];\n return values.has(value);\n }).map(function (_a) {\n var key = _a[0],\n values = _a[1];\n return key;\n });\n };\n return Multimap;\n}();\nexport { Multimap };","var __extends = this && this.__extends || function () {\n var extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nimport { Multimap } from \"./multimap\";\nimport { add, del } from \"./set_operations\";\nvar IndexedMultimap = /** @class */function (_super) {\n __extends(IndexedMultimap, _super);\n function IndexedMultimap() {\n var _this = _super.call(this) || this;\n _this.keysByValue = new Map();\n return _this;\n }\n Object.defineProperty(IndexedMultimap.prototype, \"values\", {\n get: function () {\n return Array.from(this.keysByValue.keys());\n },\n enumerable: true,\n configurable: true\n });\n IndexedMultimap.prototype.add = function (key, value) {\n _super.prototype.add.call(this, key, value);\n add(this.keysByValue, value, key);\n };\n IndexedMultimap.prototype.delete = function (key, value) {\n _super.prototype.delete.call(this, key, value);\n del(this.keysByValue, value, key);\n };\n IndexedMultimap.prototype.hasValue = function (value) {\n return this.keysByValue.has(value);\n };\n IndexedMultimap.prototype.getKeysForValue = function (value) {\n var set = this.keysByValue.get(value);\n return set ? Array.from(set) : [];\n };\n return IndexedMultimap;\n}(Multimap);\nexport { IndexedMultimap };","import { AttributeObserver } from \"./attribute_observer\";\nimport { Multimap } from \"@stimulus/multimap\";\nvar TokenListObserver = /** @class */function () {\n function TokenListObserver(element, attributeName, delegate) {\n this.attributeObserver = new AttributeObserver(element, attributeName, this);\n this.delegate = delegate;\n this.tokensByElement = new Multimap();\n }\n Object.defineProperty(TokenListObserver.prototype, \"started\", {\n get: function () {\n return this.attributeObserver.started;\n },\n enumerable: true,\n configurable: true\n });\n TokenListObserver.prototype.start = function () {\n this.attributeObserver.start();\n };\n TokenListObserver.prototype.stop = function () {\n this.attributeObserver.stop();\n };\n TokenListObserver.prototype.refresh = function () {\n this.attributeObserver.refresh();\n };\n Object.defineProperty(TokenListObserver.prototype, \"element\", {\n get: function () {\n return this.attributeObserver.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TokenListObserver.prototype, \"attributeName\", {\n get: function () {\n return this.attributeObserver.attributeName;\n },\n enumerable: true,\n configurable: true\n });\n // Attribute observer delegate\n TokenListObserver.prototype.elementMatchedAttribute = function (element) {\n this.tokensMatched(this.readTokensForElement(element));\n };\n TokenListObserver.prototype.elementAttributeValueChanged = function (element) {\n var _a = this.refreshTokensForElement(element),\n unmatchedTokens = _a[0],\n matchedTokens = _a[1];\n this.tokensUnmatched(unmatchedTokens);\n this.tokensMatched(matchedTokens);\n };\n TokenListObserver.prototype.elementUnmatchedAttribute = function (element) {\n this.tokensUnmatched(this.tokensByElement.getValuesForKey(element));\n };\n TokenListObserver.prototype.tokensMatched = function (tokens) {\n var _this = this;\n tokens.forEach(function (token) {\n return _this.tokenMatched(token);\n });\n };\n TokenListObserver.prototype.tokensUnmatched = function (tokens) {\n var _this = this;\n tokens.forEach(function (token) {\n return _this.tokenUnmatched(token);\n });\n };\n TokenListObserver.prototype.tokenMatched = function (token) {\n this.delegate.tokenMatched(token);\n this.tokensByElement.add(token.element, token);\n };\n TokenListObserver.prototype.tokenUnmatched = function (token) {\n this.delegate.tokenUnmatched(token);\n this.tokensByElement.delete(token.element, token);\n };\n TokenListObserver.prototype.refreshTokensForElement = function (element) {\n var previousTokens = this.tokensByElement.getValuesForKey(element);\n var currentTokens = this.readTokensForElement(element);\n var firstDifferingIndex = zip(previousTokens, currentTokens).findIndex(function (_a) {\n var previousToken = _a[0],\n currentToken = _a[1];\n return !tokensAreEqual(previousToken, currentToken);\n });\n if (firstDifferingIndex == -1) {\n return [[], []];\n } else {\n return [previousTokens.slice(firstDifferingIndex), currentTokens.slice(firstDifferingIndex)];\n }\n };\n TokenListObserver.prototype.readTokensForElement = function (element) {\n var attributeName = this.attributeName;\n var tokenString = element.getAttribute(attributeName) || \"\";\n return parseTokenString(tokenString, element, attributeName);\n };\n return TokenListObserver;\n}();\nexport { TokenListObserver };\nfunction parseTokenString(tokenString, element, attributeName) {\n return tokenString.trim().split(/\\s+/).filter(function (content) {\n return content.length;\n }).map(function (content, index) {\n return {\n element: element,\n attributeName: attributeName,\n content: content,\n index: index\n };\n });\n}\nfunction zip(left, right) {\n var length = Math.max(left.length, right.length);\n return Array.from({\n length: length\n }, function (_, index) {\n return [left[index], right[index]];\n });\n}\nfunction tokensAreEqual(left, right) {\n return left && right && left.index == right.index && left.content == right.content;\n}","import { TokenListObserver } from \"./token_list_observer\";\nvar ValueListObserver = /** @class */function () {\n function ValueListObserver(element, attributeName, delegate) {\n this.tokenListObserver = new TokenListObserver(element, attributeName, this);\n this.delegate = delegate;\n this.parseResultsByToken = new WeakMap();\n this.valuesByTokenByElement = new WeakMap();\n }\n Object.defineProperty(ValueListObserver.prototype, \"started\", {\n get: function () {\n return this.tokenListObserver.started;\n },\n enumerable: true,\n configurable: true\n });\n ValueListObserver.prototype.start = function () {\n this.tokenListObserver.start();\n };\n ValueListObserver.prototype.stop = function () {\n this.tokenListObserver.stop();\n };\n ValueListObserver.prototype.refresh = function () {\n this.tokenListObserver.refresh();\n };\n Object.defineProperty(ValueListObserver.prototype, \"element\", {\n get: function () {\n return this.tokenListObserver.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ValueListObserver.prototype, \"attributeName\", {\n get: function () {\n return this.tokenListObserver.attributeName;\n },\n enumerable: true,\n configurable: true\n });\n ValueListObserver.prototype.tokenMatched = function (token) {\n var element = token.element;\n var value = this.fetchParseResultForToken(token).value;\n if (value) {\n this.fetchValuesByTokenForElement(element).set(token, value);\n this.delegate.elementMatchedValue(element, value);\n }\n };\n ValueListObserver.prototype.tokenUnmatched = function (token) {\n var element = token.element;\n var value = this.fetchParseResultForToken(token).value;\n if (value) {\n this.fetchValuesByTokenForElement(element).delete(token);\n this.delegate.elementUnmatchedValue(element, value);\n }\n };\n ValueListObserver.prototype.fetchParseResultForToken = function (token) {\n var parseResult = this.parseResultsByToken.get(token);\n if (!parseResult) {\n parseResult = this.parseToken(token);\n this.parseResultsByToken.set(token, parseResult);\n }\n return parseResult;\n };\n ValueListObserver.prototype.fetchValuesByTokenForElement = function (element) {\n var valuesByToken = this.valuesByTokenByElement.get(element);\n if (!valuesByToken) {\n valuesByToken = new Map();\n this.valuesByTokenByElement.set(element, valuesByToken);\n }\n return valuesByToken;\n };\n ValueListObserver.prototype.parseToken = function (token) {\n try {\n var value = this.delegate.parseValueForToken(token);\n return {\n value: value\n };\n } catch (error) {\n return {\n error: error\n };\n }\n };\n return ValueListObserver;\n}();\nexport { ValueListObserver };","import { Action } from \"./action\";\nimport { Binding } from \"./binding\";\nimport { ValueListObserver } from \"@stimulus/mutation-observers\";\nvar BindingObserver = /** @class */function () {\n function BindingObserver(context, delegate) {\n this.context = context;\n this.delegate = delegate;\n this.bindingsByAction = new Map();\n }\n BindingObserver.prototype.start = function () {\n if (!this.valueListObserver) {\n this.valueListObserver = new ValueListObserver(this.element, this.actionAttribute, this);\n this.valueListObserver.start();\n }\n };\n BindingObserver.prototype.stop = function () {\n if (this.valueListObserver) {\n this.valueListObserver.stop();\n delete this.valueListObserver;\n this.disconnectAllActions();\n }\n };\n Object.defineProperty(BindingObserver.prototype, \"element\", {\n get: function () {\n return this.context.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BindingObserver.prototype, \"identifier\", {\n get: function () {\n return this.context.identifier;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BindingObserver.prototype, \"actionAttribute\", {\n get: function () {\n return this.schema.actionAttribute;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BindingObserver.prototype, \"schema\", {\n get: function () {\n return this.context.schema;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BindingObserver.prototype, \"bindings\", {\n get: function () {\n return Array.from(this.bindingsByAction.values());\n },\n enumerable: true,\n configurable: true\n });\n BindingObserver.prototype.connectAction = function (action) {\n var binding = new Binding(this.context, action);\n this.bindingsByAction.set(action, binding);\n this.delegate.bindingConnected(binding);\n };\n BindingObserver.prototype.disconnectAction = function (action) {\n var binding = this.bindingsByAction.get(action);\n if (binding) {\n this.bindingsByAction.delete(action);\n this.delegate.bindingDisconnected(binding);\n }\n };\n BindingObserver.prototype.disconnectAllActions = function () {\n var _this = this;\n this.bindings.forEach(function (binding) {\n return _this.delegate.bindingDisconnected(binding);\n });\n this.bindingsByAction.clear();\n };\n // Value observer delegate\n BindingObserver.prototype.parseValueForToken = function (token) {\n var action = Action.forToken(token);\n if (action.identifier == this.identifier) {\n return action;\n }\n };\n BindingObserver.prototype.elementMatchedValue = function (element, action) {\n this.connectAction(action);\n };\n BindingObserver.prototype.elementUnmatchedValue = function (element, action) {\n this.disconnectAction(action);\n };\n return BindingObserver;\n}();\nexport { BindingObserver };","import { BindingObserver } from \"./binding_observer\";\nvar Context = /** @class */function () {\n function Context(module, scope) {\n this.module = module;\n this.scope = scope;\n this.controller = new module.controllerConstructor(this);\n this.bindingObserver = new BindingObserver(this, this.dispatcher);\n try {\n this.controller.initialize();\n } catch (error) {\n this.handleError(error, \"initializing controller\");\n }\n }\n Context.prototype.connect = function () {\n this.bindingObserver.start();\n try {\n this.controller.connect();\n } catch (error) {\n this.handleError(error, \"connecting controller\");\n }\n };\n Context.prototype.disconnect = function () {\n try {\n this.controller.disconnect();\n } catch (error) {\n this.handleError(error, \"disconnecting controller\");\n }\n this.bindingObserver.stop();\n };\n Object.defineProperty(Context.prototype, \"application\", {\n get: function () {\n return this.module.application;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Context.prototype, \"identifier\", {\n get: function () {\n return this.module.identifier;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Context.prototype, \"schema\", {\n get: function () {\n return this.application.schema;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Context.prototype, \"dispatcher\", {\n get: function () {\n return this.application.dispatcher;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Context.prototype, \"element\", {\n get: function () {\n return this.scope.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Context.prototype, \"parentElement\", {\n get: function () {\n return this.element.parentElement;\n },\n enumerable: true,\n configurable: true\n });\n // Error handling\n Context.prototype.handleError = function (error, message, detail) {\n if (detail === void 0) {\n detail = {};\n }\n var _a = this,\n identifier = _a.identifier,\n controller = _a.controller,\n element = _a.element;\n detail = Object.assign({\n identifier: identifier,\n controller: controller,\n element: element\n }, detail);\n this.application.handleError(error, \"Error \" + message, detail);\n };\n return Context;\n}();\nexport { Context };","var __extends = this && this.__extends || function () {\n var extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n/** @hidden */\nexport function blessDefinition(definition) {\n return {\n identifier: definition.identifier,\n controllerConstructor: blessControllerConstructor(definition.controllerConstructor)\n };\n}\nfunction blessControllerConstructor(controllerConstructor) {\n var constructor = extend(controllerConstructor);\n constructor.bless();\n return constructor;\n}\nvar extend = function () {\n function extendWithReflect(constructor) {\n function Controller() {\n var _newTarget = this && this instanceof Controller ? this.constructor : void 0;\n return Reflect.construct(constructor, arguments, _newTarget);\n }\n Controller.prototype = Object.create(constructor.prototype, {\n constructor: {\n value: Controller\n }\n });\n Reflect.setPrototypeOf(Controller, constructor);\n return Controller;\n }\n function testReflectExtension() {\n var a = function () {\n this.a.call(this);\n };\n var b = extendWithReflect(a);\n b.prototype.a = function () {};\n return new b();\n }\n try {\n testReflectExtension();\n return extendWithReflect;\n } catch (error) {\n return function (constructor) {\n return /** @class */function (_super) {\n __extends(Controller, _super);\n function Controller() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return Controller;\n }(constructor);\n };\n }\n}();","import { Context } from \"./context\";\nimport { blessDefinition } from \"./definition\";\nvar Module = /** @class */function () {\n function Module(application, definition) {\n this.application = application;\n this.definition = blessDefinition(definition);\n this.contextsByScope = new WeakMap();\n this.connectedContexts = new Set();\n }\n Object.defineProperty(Module.prototype, \"identifier\", {\n get: function () {\n return this.definition.identifier;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Module.prototype, \"controllerConstructor\", {\n get: function () {\n return this.definition.controllerConstructor;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Module.prototype, \"contexts\", {\n get: function () {\n return Array.from(this.connectedContexts);\n },\n enumerable: true,\n configurable: true\n });\n Module.prototype.connectContextForScope = function (scope) {\n var context = this.fetchContextForScope(scope);\n this.connectedContexts.add(context);\n context.connect();\n };\n Module.prototype.disconnectContextForScope = function (scope) {\n var context = this.contextsByScope.get(scope);\n if (context) {\n this.connectedContexts.delete(context);\n context.disconnect();\n }\n };\n Module.prototype.fetchContextForScope = function (scope) {\n var context = this.contextsByScope.get(scope);\n if (!context) {\n context = new Context(this, scope);\n this.contextsByScope.set(scope, context);\n }\n return context;\n };\n return Module;\n}();\nexport { Module };","var DataMap = /** @class */function () {\n function DataMap(scope) {\n this.scope = scope;\n }\n Object.defineProperty(DataMap.prototype, \"element\", {\n get: function () {\n return this.scope.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DataMap.prototype, \"identifier\", {\n get: function () {\n return this.scope.identifier;\n },\n enumerable: true,\n configurable: true\n });\n DataMap.prototype.get = function (key) {\n key = this.getFormattedKey(key);\n return this.element.getAttribute(key);\n };\n DataMap.prototype.set = function (key, value) {\n key = this.getFormattedKey(key);\n this.element.setAttribute(key, value);\n return this.get(key);\n };\n DataMap.prototype.has = function (key) {\n key = this.getFormattedKey(key);\n return this.element.hasAttribute(key);\n };\n DataMap.prototype.delete = function (key) {\n if (this.has(key)) {\n key = this.getFormattedKey(key);\n this.element.removeAttribute(key);\n return true;\n } else {\n return false;\n }\n };\n DataMap.prototype.getFormattedKey = function (key) {\n return \"data-\" + this.identifier + \"-\" + dasherize(key);\n };\n return DataMap;\n}();\nexport { DataMap };\nfunction dasherize(value) {\n return value.replace(/([A-Z])/g, function (_, char) {\n return \"-\" + char.toLowerCase();\n });\n}","/** @hidden */\nexport function attributeValueContainsToken(attributeName, token) {\n return \"[\" + attributeName + \"~=\\\"\" + token + \"\\\"]\";\n}","import { attributeValueContainsToken } from \"./selectors\";\nvar TargetSet = /** @class */function () {\n function TargetSet(scope) {\n this.scope = scope;\n }\n Object.defineProperty(TargetSet.prototype, \"element\", {\n get: function () {\n return this.scope.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TargetSet.prototype, \"identifier\", {\n get: function () {\n return this.scope.identifier;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TargetSet.prototype, \"schema\", {\n get: function () {\n return this.scope.schema;\n },\n enumerable: true,\n configurable: true\n });\n TargetSet.prototype.has = function (targetName) {\n return this.find(targetName) != null;\n };\n TargetSet.prototype.find = function () {\n var targetNames = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n targetNames[_i] = arguments[_i];\n }\n var selector = this.getSelectorForTargetNames(targetNames);\n return this.scope.findElement(selector);\n };\n TargetSet.prototype.findAll = function () {\n var targetNames = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n targetNames[_i] = arguments[_i];\n }\n var selector = this.getSelectorForTargetNames(targetNames);\n return this.scope.findAllElements(selector);\n };\n TargetSet.prototype.getSelectorForTargetNames = function (targetNames) {\n var _this = this;\n return targetNames.map(function (targetName) {\n return _this.getSelectorForTargetName(targetName);\n }).join(\", \");\n };\n TargetSet.prototype.getSelectorForTargetName = function (targetName) {\n var targetDescriptor = this.identifier + \".\" + targetName;\n return attributeValueContainsToken(this.schema.targetAttribute, targetDescriptor);\n };\n return TargetSet;\n}();\nexport { TargetSet };","import { DataMap } from \"./data_map\";\nimport { TargetSet } from \"./target_set\";\nimport { attributeValueContainsToken } from \"./selectors\";\nvar Scope = /** @class */function () {\n function Scope(schema, identifier, element) {\n this.schema = schema;\n this.identifier = identifier;\n this.element = element;\n this.targets = new TargetSet(this);\n this.data = new DataMap(this);\n }\n Scope.prototype.findElement = function (selector) {\n return this.findAllElements(selector)[0];\n };\n Scope.prototype.findAllElements = function (selector) {\n var head = this.element.matches(selector) ? [this.element] : [];\n var tail = this.filterElements(Array.from(this.element.querySelectorAll(selector)));\n return head.concat(tail);\n };\n Scope.prototype.filterElements = function (elements) {\n var _this = this;\n return elements.filter(function (element) {\n return _this.containsElement(element);\n });\n };\n Scope.prototype.containsElement = function (element) {\n return element.closest(this.controllerSelector) === this.element;\n };\n Object.defineProperty(Scope.prototype, \"controllerSelector\", {\n get: function () {\n return attributeValueContainsToken(this.schema.controllerAttribute, this.identifier);\n },\n enumerable: true,\n configurable: true\n });\n return Scope;\n}();\nexport { Scope };","import { Scope } from \"./scope\";\nimport { ValueListObserver } from \"@stimulus/mutation-observers\";\nvar ScopeObserver = /** @class */function () {\n function ScopeObserver(element, schema, delegate) {\n this.element = element;\n this.schema = schema;\n this.delegate = delegate;\n this.valueListObserver = new ValueListObserver(this.element, this.controllerAttribute, this);\n this.scopesByIdentifierByElement = new WeakMap();\n this.scopeReferenceCounts = new WeakMap();\n }\n ScopeObserver.prototype.start = function () {\n this.valueListObserver.start();\n };\n ScopeObserver.prototype.stop = function () {\n this.valueListObserver.stop();\n };\n Object.defineProperty(ScopeObserver.prototype, \"controllerAttribute\", {\n get: function () {\n return this.schema.controllerAttribute;\n },\n enumerable: true,\n configurable: true\n });\n // Value observer delegate\n /** @hidden */\n ScopeObserver.prototype.parseValueForToken = function (token) {\n var element = token.element,\n identifier = token.content;\n var scopesByIdentifier = this.fetchScopesByIdentifierForElement(element);\n var scope = scopesByIdentifier.get(identifier);\n if (!scope) {\n scope = new Scope(this.schema, identifier, element);\n scopesByIdentifier.set(identifier, scope);\n }\n return scope;\n };\n /** @hidden */\n ScopeObserver.prototype.elementMatchedValue = function (element, value) {\n var referenceCount = (this.scopeReferenceCounts.get(value) || 0) + 1;\n this.scopeReferenceCounts.set(value, referenceCount);\n if (referenceCount == 1) {\n this.delegate.scopeConnected(value);\n }\n };\n /** @hidden */\n ScopeObserver.prototype.elementUnmatchedValue = function (element, value) {\n var referenceCount = this.scopeReferenceCounts.get(value);\n if (referenceCount) {\n this.scopeReferenceCounts.set(value, referenceCount - 1);\n if (referenceCount == 1) {\n this.delegate.scopeDisconnected(value);\n }\n }\n };\n ScopeObserver.prototype.fetchScopesByIdentifierForElement = function (element) {\n var scopesByIdentifier = this.scopesByIdentifierByElement.get(element);\n if (!scopesByIdentifier) {\n scopesByIdentifier = new Map();\n this.scopesByIdentifierByElement.set(element, scopesByIdentifier);\n }\n return scopesByIdentifier;\n };\n return ScopeObserver;\n}();\nexport { ScopeObserver };","import { Module } from \"./module\";\nimport { Multimap } from \"@stimulus/multimap\";\nimport { ScopeObserver } from \"./scope_observer\";\nvar Router = /** @class */function () {\n function Router(application) {\n this.application = application;\n this.scopeObserver = new ScopeObserver(this.element, this.schema, this);\n this.scopesByIdentifier = new Multimap();\n this.modulesByIdentifier = new Map();\n }\n Object.defineProperty(Router.prototype, \"element\", {\n get: function () {\n return this.application.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Router.prototype, \"schema\", {\n get: function () {\n return this.application.schema;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Router.prototype, \"controllerAttribute\", {\n get: function () {\n return this.schema.controllerAttribute;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Router.prototype, \"modules\", {\n get: function () {\n return Array.from(this.modulesByIdentifier.values());\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Router.prototype, \"contexts\", {\n get: function () {\n return this.modules.reduce(function (contexts, module) {\n return contexts.concat(module.contexts);\n }, []);\n },\n enumerable: true,\n configurable: true\n });\n Router.prototype.start = function () {\n this.scopeObserver.start();\n };\n Router.prototype.stop = function () {\n this.scopeObserver.stop();\n };\n Router.prototype.loadDefinition = function (definition) {\n this.unloadIdentifier(definition.identifier);\n var module = new Module(this.application, definition);\n this.connectModule(module);\n };\n Router.prototype.unloadIdentifier = function (identifier) {\n var module = this.modulesByIdentifier.get(identifier);\n if (module) {\n this.disconnectModule(module);\n }\n };\n Router.prototype.getContextForElementAndIdentifier = function (element, identifier) {\n var module = this.modulesByIdentifier.get(identifier);\n if (module) {\n return module.contexts.find(function (context) {\n return context.element == element;\n });\n }\n };\n // Error handler delegate\n /** @hidden */\n Router.prototype.handleError = function (error, message, detail) {\n this.application.handleError(error, message, detail);\n };\n // Scope observer delegate\n /** @hidden */\n Router.prototype.scopeConnected = function (scope) {\n this.scopesByIdentifier.add(scope.identifier, scope);\n var module = this.modulesByIdentifier.get(scope.identifier);\n if (module) {\n module.connectContextForScope(scope);\n }\n };\n /** @hidden */\n Router.prototype.scopeDisconnected = function (scope) {\n this.scopesByIdentifier.delete(scope.identifier, scope);\n var module = this.modulesByIdentifier.get(scope.identifier);\n if (module) {\n module.disconnectContextForScope(scope);\n }\n };\n // Modules\n Router.prototype.connectModule = function (module) {\n this.modulesByIdentifier.set(module.identifier, module);\n var scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n scopes.forEach(function (scope) {\n return module.connectContextForScope(scope);\n });\n };\n Router.prototype.disconnectModule = function (module) {\n this.modulesByIdentifier.delete(module.identifier);\n var scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n scopes.forEach(function (scope) {\n return module.disconnectContextForScope(scope);\n });\n };\n return Router;\n}();\nexport { Router };","export var defaultSchema = {\n controllerAttribute: \"data-controller\",\n actionAttribute: \"data-action\",\n targetAttribute: \"data-target\"\n};","var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : new P(function (resolve) {\n resolve(result.value);\n }).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = this && this.__generator || function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function () {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = y[op[0] & 2 ? \"return\" : op[0] ? \"throw\" : \"next\"]) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [0, t.value];\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\nimport { Dispatcher } from \"./dispatcher\";\nimport { Router } from \"./router\";\nimport { defaultSchema } from \"./schema\";\nvar Application = /** @class */function () {\n function Application(element, schema) {\n if (element === void 0) {\n element = document.documentElement;\n }\n if (schema === void 0) {\n schema = defaultSchema;\n }\n this.element = element;\n this.schema = schema;\n this.dispatcher = new Dispatcher(this);\n this.router = new Router(this);\n }\n Application.start = function (element, schema) {\n var application = new Application(element, schema);\n application.start();\n return application;\n };\n Application.prototype.start = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n return [4 /*yield*/, domReady()];\n case 1:\n _a.sent();\n this.router.start();\n this.dispatcher.start();\n return [2 /*return*/];\n }\n });\n });\n };\n Application.prototype.stop = function () {\n this.router.stop();\n this.dispatcher.stop();\n };\n Application.prototype.register = function (identifier, controllerConstructor) {\n this.load({\n identifier: identifier,\n controllerConstructor: controllerConstructor\n });\n };\n Application.prototype.load = function (head) {\n var _this = this;\n var rest = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n rest[_i - 1] = arguments[_i];\n }\n var definitions = Array.isArray(head) ? head : [head].concat(rest);\n definitions.forEach(function (definition) {\n return _this.router.loadDefinition(definition);\n });\n };\n Application.prototype.unload = function (head) {\n var _this = this;\n var rest = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n rest[_i - 1] = arguments[_i];\n }\n var identifiers = Array.isArray(head) ? head : [head].concat(rest);\n identifiers.forEach(function (identifier) {\n return _this.router.unloadIdentifier(identifier);\n });\n };\n Object.defineProperty(Application.prototype, \"controllers\", {\n // Controllers\n get: function () {\n return this.router.contexts.map(function (context) {\n return context.controller;\n });\n },\n enumerable: true,\n configurable: true\n });\n Application.prototype.getControllerForElementAndIdentifier = function (element, identifier) {\n var context = this.router.getContextForElementAndIdentifier(element, identifier);\n return context ? context.controller : null;\n };\n // Error handling\n Application.prototype.handleError = function (error, message, detail) {\n console.error(\"%s\\n\\n%o\\n\\n%o\", message, error, detail);\n };\n return Application;\n}();\nexport { Application };\nfunction domReady() {\n return new Promise(function (resolve) {\n if (document.readyState == \"loading\") {\n document.addEventListener(\"DOMContentLoaded\", resolve);\n } else {\n resolve();\n }\n });\n}","/** @hidden */\nexport function defineTargetProperties(constructor) {\n var prototype = constructor.prototype;\n var targetNames = getTargetNamesForConstructor(constructor);\n targetNames.forEach(function (name) {\n var _a;\n return defineLinkedProperties(prototype, (_a = {}, _a[name + \"Target\"] = {\n get: function () {\n var target = this.targets.find(name);\n if (target) {\n return target;\n } else {\n throw new Error(\"Missing target element \\\"\" + this.identifier + \".\" + name + \"\\\"\");\n }\n }\n }, _a[name + \"Targets\"] = {\n get: function () {\n return this.targets.findAll(name);\n }\n }, _a[\"has\" + capitalize(name) + \"Target\"] = {\n get: function () {\n return this.targets.has(name);\n }\n }, _a));\n });\n}\nfunction getTargetNamesForConstructor(constructor) {\n var ancestors = getAncestorsForConstructor(constructor);\n return Array.from(ancestors.reduce(function (targetNames, constructor) {\n getOwnTargetNamesForConstructor(constructor).forEach(function (name) {\n return targetNames.add(name);\n });\n return targetNames;\n }, new Set()));\n}\nfunction getAncestorsForConstructor(constructor) {\n var ancestors = [];\n while (constructor) {\n ancestors.push(constructor);\n constructor = Object.getPrototypeOf(constructor);\n }\n return ancestors;\n}\nfunction getOwnTargetNamesForConstructor(constructor) {\n var definition = constructor[\"targets\"];\n return Array.isArray(definition) ? definition : [];\n}\nfunction defineLinkedProperties(object, properties) {\n Object.keys(properties).forEach(function (name) {\n if (!(name in object)) {\n var descriptor = properties[name];\n Object.defineProperty(object, name, descriptor);\n }\n });\n}\nfunction capitalize(name) {\n return name.charAt(0).toUpperCase() + name.slice(1);\n}","import { defineTargetProperties } from \"./target_properties\";\nvar Controller = /** @class */function () {\n function Controller(context) {\n this.context = context;\n }\n Controller.bless = function () {\n defineTargetProperties(this);\n };\n Object.defineProperty(Controller.prototype, \"application\", {\n get: function () {\n return this.context.application;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Controller.prototype, \"scope\", {\n get: function () {\n return this.context.scope;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Controller.prototype, \"element\", {\n get: function () {\n return this.scope.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Controller.prototype, \"identifier\", {\n get: function () {\n return this.scope.identifier;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Controller.prototype, \"targets\", {\n get: function () {\n return this.scope.targets;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Controller.prototype, \"data\", {\n get: function () {\n return this.scope.data;\n },\n enumerable: true,\n configurable: true\n });\n Controller.prototype.initialize = function () {\n // Override in your subclass to set up initial controller state\n };\n Controller.prototype.connect = function () {\n // Override in your subclass to respond when the controller is connected to the DOM\n };\n Controller.prototype.disconnect = function () {\n // Override in your subclass to respond when the controller is disconnected from the DOM\n };\n Controller.targets = [];\n return Controller;\n}();\nexport { Controller };","import { Controller } from \"stimulus\"\n\nexport default class extends Controller {\n static targets = [\n \"table\", \"selectAllButton\", \"deselectAllButton\", \"bulk\", \"selectAllInfo\", \"infoContainer\",\n \"infoRows\", \"selectAllRows\", \"deselectAllRows\", \"search\", \"clearSearchButton\",\n \"columnFilter\"\n ]\n\n initialize() {\n $.extend($.fn.DataTable.ext.classes, {\n sWrapper: \"dataTables_wrapper\"\n });\n const dtOptions = this.data.has('config') ? JSON.parse(this.data.get('config')) : {}\n this.config = $.extend(true, this.defaultOptions(), dtOptions)\n this.dataTable = $(this.tableTarget).DataTable(this.config)\n this.bulkDestroyPath = this.data.has('bulk-destroy-path') ? this.data.get('bulk-destroy-path') : ''\n this.selected = new Set()\n this.setRowsSelectable()\n this.initializeBulkTooltips()\n this.resetBulkEdit()\n this.destroyBeforeCache()\n this.hideSelectAllInfo()\n }\n\n destroyBeforeCache() {\n let controller = this\n document.addEventListener(\"turbolinks:before-cache\", function () {\n controller.destroy()\n })\n }\n\n initializeBulkTooltips() {\n $.each(this.bulkTargets, function () {\n $(this).tooltip({\n title: 'Select one or more rows to perform this action',\n trigger: 'hover focus',\n animation: false\n })\n })\n }\n\n disconnect() {\n this.destroy()\n }\n\n destroy() {\n this.dataTable.destroy()\n }\n\n get controllerName() {\n return this.element.getAttribute('data-controller')\n }\n\n defaultOptions() {\n var controller = this\n return {\n drawCallback(settings) {\n if (controller.selectedAllData) {\n controller.currentPageRows.select()\n controller.selectAllRows()\n } else if (controller.hasInfoRowsTarget && controller.infoRowsTarget.text != '') {\n controller.deselectAllRowsPage()\n }\n\n $(controller.tableTarget).on('page.dt', function () {\n controller.resetBulkEdit()\n });\n },\n language: {\n paginate: {\n next: '»',\n previous: '«'\n },\n zeroRecords: function() {\n return `

There are no items matching this criteria

` +\n ``\n },\n lengthMenu: \"_MENU_ rows per page\",\n search: '',\n searchPlaceholder: 'Search',\n processing: `
${window.faicon('spinner', { pulse: true, fw: true, size: '2x' })}
`\n },\n buttons: [],\n serverSide: true,\n processing: true,\n search: true,\n paging: true,\n pagingType: 'simple_numbers',\n pageLength: 10,\n lengthMenu: [5, 10, 25, 50],\n ordering: false,\n info: true,\n select: {\n style: 'multi'\n },\n dom: \"<'card border-0'\" +\n \"<'card-block p-0 pt-3'<'row-fluid'<'alert alert-info d-none'>><'row-fluid'tr>>\" +\n \"<'card-footer bg-white border-0 px-0'<'float-left'l><'float-right'p>>>\",\n retrieve: true,\n stateSave: false,\n stateDuration: 7200, // 2 hours\n stateSaveCallback: function (settings, data) {\n controller.saveState(settings, data)\n },\n stateLoadCallback: function (settings) {\n return controller.loadState(settings);\n },\n stateLoaded: function (settings, data) {\n controller.handleStateLoaded(settings, data);\n }\n }\n }\n\n saveState(settings, data) {\n try {\n localStorage.setItem(this.getStateKey(settings), JSON.stringify(data));\n } catch (e) {\n if (e.name === 'QuotaExceededError') {\n this.cleanupOldStates(settings, data);\n } else {\n console.error('Error saving datatable state:', e);\n }\n }\n }\n\n cleanupOldStates(settings, data) {\n // Clear all existing datatable states\n Object.keys(localStorage)\n .filter(key => key.startsWith('datatables-'))\n .forEach(key => localStorage.removeItem(key));\n\n try {\n localStorage.setItem(this.getStateKey(settings), JSON.stringify(data));\n } catch (e) {\n console.error('Unable to store datatable state: storage full');\n }\n }\n\n getAllDatatableStates() {\n return Object.keys(localStorage)\n .filter(key => key.startsWith('datatables-'))\n .map(key => ({\n key: key,\n time: JSON.parse(localStorage.getItem(key)).time\n }))\n .sort((a, b) => a.time - b.time); // Sort by time ascending\n }\n\n getStateKey(settings) {\n return 'datatables-' + settings.sInstance;\n }\n\n setRowsSelectable() {\n var controller = this;\n $(controller.tableSelector + ' tbody').on('click', 'tr', function () {\n var rowId = this.id;\n var $row = $(this);\n\n if ($row.find('td.dataTables_empty').length > 0) {\n // this is the \"empty table\" message, so don't select any rows\n controller.selected = []\n $row.removeClass('selected')\n return;\n } else if (controller.selected.has(rowId)) {\n controller.selected.delete(rowId)\n } else {\n controller.selected.add(rowId)\n }\n $row.toggleClass('selected')\n controller.hideSelectAllInfo()\n controller.controlBulkEditButton(controller.selected.size)\n });\n }\n\n get tableSelector() {\n return `[id=\"${this.tableTarget.id}\"]`\n }\n\n get recordsTotal() {\n return this.dataTable.page.info().recordsTotal\n }\n\n get currentPageRows() {\n return this.dataTable.rows({ page: 'current' })\n }\n\n get selectedRows() {\n return this.dataTable.rows({ selected: true }).ids().toArray()\n }\n\n selectedRowValues(key) {\n return this.dataTable.rows({ selected: true }).data().toArray().map(row => row[key])\n }\n\n selectAllRowsPage() {\n this.currentPageRows.select()\n this.selected = new Set(this.currentPageRows.ids().toArray())\n this.controlBulkEditButton(this.selected.size)\n this.showSelectAllInfo()\n }\n\n deselectAllRowsPage() {\n this.currentPageRows.deselect()\n this.resetBulkEdit()\n this.hideSelectAllInfo()\n }\n\n deleteAll() {\n var controller = this\n var recordCount = this.selectedAllData ? this.recordsTotal : this.selectedRows.length\n\n if (recordCount > 0) {\n var conf = confirm(\"Are you sure you want to delete \" + recordCount + \" record(s)?\")\n if (conf) {\n $.ajax({\n url: controller.bulkDestroyPath,\n method: 'DELETE',\n data: controller.destroyAllParams,\n complete: function () {\n window.location.reload()\n }\n })\n }\n }\n }\n\n resetBulkEdit() {\n if (this.hasDeselectAllButtonTarget) {\n this.selected = new Set()\n this.controlBulkEditButton(0)\n }\n }\n\n controlBulkEditButton(rowsSelected) {\n if (rowsSelected > 0) {\n $.each(this.bulkTargets, function () {\n if ($(this).hasClass('disabled')) {\n $(this).removeClass('disabled')\n $(this).prop('disabled', false)\n $(this).tooltip('disable')\n }\n })\n this.disableDeselectAll(false)\n } else {\n $.each(this.bulkTargets, function () {\n $(this).addClass('disabled')\n $(this).prop('disabled', true)\n $(this).tooltip('toggleEnabled')\n })\n this.disableDeselectAll(true)\n }\n }\n\n disableDeselectAll(disable) {\n if (this.hasDeselectAllButtonTarget) {\n if(disable) {\n $(this.deselectAllButtonTarget).addClass('disabled')\n } else {\n $(this.deselectAllButtonTarget).removeClass('disabled')\n }\n $(this.deselectAllButtonTarget).prop('disabled', disable)\n }\n }\n\n search(event) {\n this.deselectAllRowsPage()\n this.dataTable.search(event.target.value).draw()\n if (event.target.value) {\n this.showClearSearchButton()\n } else {\n this.hideClearSearchButton()\n }\n }\n\n showSelectAllInfo() {\n if (this.hasSelectAllInfoTarget) {\n $(this.selectAllInfoTarget).removeClass('d-none')\n if (this.recordsTotal > this.selectedRows.length) {\n $(this.infoRowsTarget).html('')\n $(this.infoRowsTarget).text(this.selectedRows.length + ' rows on this page are selected. ')\n $(this.selectAllRowsTarget).removeClass('d-none')\n $(this.selectAllRowsTarget).text('Select all ' + this.recordsTotal + ' rows in this table. ')\n $(this.deselectAllRowsTarget).addClass('d-none')\n } else {\n $(this.infoRowsTarget).html('')\n var alertText = 'All ' + this.recordsTotal + ' rows in this table are selected.'\n $(this.infoRowsTarget).append(alertText, ' ')\n $(this.selectAllRowsTarget).addClass('d-none')\n $(this.deselectAllRowsTarget).addClass('d-none')\n }\n }\n }\n\n hideSelectAllInfo() {\n this.selectedAllData = false\n if (this.hasSelectAllInfoTarget) {\n $(this.selectAllInfoTarget).addClass('d-none')\n }\n }\n\n selectAllRows() {\n this.selectedAllData = true\n $(this.infoRowsTarget).text('All ' + this.recordsTotal + ' rows in this table are selected. ')\n $(this.selectAllRowsTarget).text('')\n $(this.deselectAllRowsTarget).removeClass('d-none')\n }\n\n deselectAllRows() {\n this.selectedAllData = false\n if (this.hasSelectAllInfoTarget) {\n $(this.selectAllInfoTarget).addClass('d-none')\n this.currentPageRows.deselect()\n this.resetBulkEdit()\n }\n }\n\n filterColumn(index, value) {\n this.dataTable\n .column( index )\n .search( value )\n .draw();\n }\n\n get destroyAllParams() {\n var params = { 'ids': this.selectedRows }\n if (this.selectedAllData) {\n params = { all: true }\n }\n return params\n }\n\n showClearSearchButton() {\n if (this.hasClearSearchButtonTarget) {\n this.clearSearchButtonTarget.classList.remove('d-none')\n }\n }\n\n hideClearSearchButton() {\n if (this.hasClearSearchButtonTarget) {\n this.clearSearchButtonTarget.classList.add('d-none')\n }\n }\n\n clearSearch(redraw = true) {\n if (this.hasSearchTarget) {\n this.searchTarget.value = ''\n this.dataTable.search('')\n this.hideClearSearchButton()\n if (redraw) {\n this.dataTable.draw()\n }\n }\n }\n\n loadState(settings) {\n const savedData = localStorage.getItem(this.getStateKey(settings));\n if (savedData) {\n return JSON.parse(savedData);\n }\n return null;\n }\n\n handleStateLoaded(settings, data) {\n // Handle search box\n if (this.hasSearchTarget && data.search.search && data.search.search.length > 0) {\n this.searchTarget.value = data.search.search;\n this.showClearSearchButton()\n this.highlightElement(this.searchTarget)\n }\n\n // Handle column filters\n if (this.hasColumnFilterTarget) {\n data.columns.forEach((column, index) => {\n if (column.search.search) {\n const columnDef = settings.aoColumns[index];\n const columnName = columnDef.data || columnDef.name;\n \n const columnFilterTarget = this.columnFilterTargets.find(target => \n target.dataset.column === columnName\n )\n \n if (columnFilterTarget && columnFilterTarget.value !== column.search.search) {\n columnFilterTarget.value = column.search.search;\n \n // Check for selectpicker controller instead of class\n this.refreshSelectPicker(columnFilterTarget)\n this.highlightElement(columnFilterTarget)\n }\n }\n })\n }\n }\n\n highlightElement(element) {\n if (this.isSelectpicker(element)) {\n $(element).selectpicker('setStyle', 'border-primary text-primary font-weight-bold', 'add');\n $(element).selectpicker('refresh');\n setTimeout(() => {\n $(element).selectpicker('setStyle', 'border-primary text-primary font-weight-bold', 'remove');\n $(element).selectpicker('refresh');\n }, 3000);\n } else {\n $(element).addClass('border-primary text-primary font-weight-bold');\n setTimeout(() => {\n $(element).removeClass('border-primary text-primary font-weight-bold');\n }, 3000);\n }\n }\n\n clearAllSearches() {\n this.dataTable\n .columns().search('')\n \n if (this.hasColumnFilterTarget) {\n this.columnFilterTargets.forEach(target => {\n target.value = ''\n this.refreshSelectPicker(target)\n })\n }\n // Clear search box and redraw table\n this.clearSearch(false)\n this.dataTable.draw()\n }\n\n isSelectpicker(target) {\n return target.hasAttribute('data-controller') && \n target.getAttribute('data-controller').includes('selectpicker');\n }\n\n refreshSelectPicker(target) {\n if (this.isSelectpicker(target)) {\n $(target).selectpicker('refresh');\n }\n }\n}\n\n","import { Controller } from \"stimulus\"\n\nexport default class extends Controller {\n static targets = [\"input\"]\n\n connect() {\n this.dropzone = this.createDropzone()\n this.attachEvents(this.dropzone)\n }\n\n disconnect() {\n this.dropzone = null\n }\n\n createDropzone() {\n var controller = this;\n var acceptedFiles = this.acceptedFiles();\n\n return new Dropzone(controller.inputTarget, {\n autoProcessQueue: controller.data.get('autoProcessQueue'),\n autoQueue: this.autoQueue,\n dictDefaultMessage: controller.data.get(\"defaultMessage\"),\n headers: { \"X-CSRF-Token\": this.getMetaValue(\"csrf-token\") },\n maxFiles: this.maxFiles,\n parallelUploads: this.parallelUploads,\n acceptedFiles: acceptedFiles,\n uploadMultiple: this.maxFiles > 1 ? true : false,\n url: controller.data.get(\"url\"),\n paramName: controller.data.get(\"paramName\"),\n hiddenInputContainer: controller.data.get(\"inputContainer\"),\n addRemoveLinks: true,\n timeout: this.timeout,\n method: this.method\n });\n }\n\n attachEvents(dz) { \n this.attachRemovedFileEvents(dz)\n this.attachErrorEvents(dz)\n this.attachSuccessEvents(dz)\n this.attachSendingEvents(dz)\n }\n\n attachSendingEvents(dz) {\n if (this.data.get('includeHiddenInputs')) {\n dz.on(\"sending\", (file, xhr, formData) => {\n // append hidden inputs to the form data\n const form = this.element.closest('form');\n const hiddenInputs = form.querySelectorAll('input[type=\"hidden\"]');\n hiddenInputs.forEach(input => {\n if (input.name) {\n formData.append(input.name, input.value);\n }\n });\n });\n }\n }\n\n attachRemovedFileEvents(dz) {\n dz.on(\"removedfile\", (file) => {\n if (file.hasOwnProperty('_destroy_path')) {\n $.ajax({\n type: 'DELETE',\n url: file._destroy_path,\n error: function(response) {\n noty({ text: response.message })\n },\n success: function(response) {\n noty({\n text: response.message,\n type: 'success'\n })\n }\n })\n }\n })\n }\n\n attachErrorEvents(dz) {\n dz.on(\"error\", (file, errorMessage, xhr) => {\n if (typeof errorMessage === \"object\") {\n errorMessage = errorMessage.error.split(',').join(\", \")\n }\n noty({text: errorMessage})\n dz.removeFile(file);\n $(\".save\").attr(\"disabled\", false)\n })\n }\n\n attachSuccessEvents(dz) {\n if (this.maxFiles == 1) {\n dz.on(\"success\", (file, response) => {\n noty({\n text: 'File successfully uploaded, redirecting',\n type: 'success'\n })\n window.location = response.location\n })\n } else {\n dz.on(\"successmultiple\", (file, response) => {\n if (dz.getQueuedFiles().length == 0) {\n noty({\n text: dz.getAcceptedFiles().length + ' file(s) successfully uploaded',\n type: 'success'\n })\n\n if (response.location) {\n window.location = response.location\n }\n }\n })\n }\n }\n\n get method() {\n return this.data.has('method') ? this.data.get('method') : 'post';\n }\n\n get timeout() {\n return this.getOptionOrUseDefault('timeout', 30000);\n }\n\n get maxFiles() {\n return this.getOptionOrUseDefault('maxFiles', 1);\n }\n\n get parallelUploads() {\n return this.getOptionOrUseDefault('parallelUploads', this.maxFiles);\n }\n\n get autoQueue(){\n return this.getOptionOrUseDefault('autoQueue', true);\n }\n\n getOptionOrUseDefault(optionName, defaultValue) {\n return (this.data.has(optionName) ? parseInt(this.data.get(optionName)) : defaultValue);\n }\n\n getMetaValue(name) {\n const element = this.findElement(document.head, `meta[name=\"${name}\"]`)\n if (element) {\n return element.getAttribute(\"content\")\n }\n }\n\n findElement(root, selector) {\n if (typeof root == \"string\") {\n selector = root\n root = document\n }\n return root.querySelector(selector)\n }\n\n submit(event) {\n event.preventDefault()\n var target = $(event.currentTarget)\n this.bindSubmitEvent(target)\n\n\n if (this.dropzone.getQueuedFiles().length > 0) {\n $(\".save\").attr(\"disabled\", true)\n this.dropzone.processQueue()\n } else {\n this.emptyQueue()\n }\n }\n\n bindSubmitEvent(target) {\n var controller = this\n // send all the form data along with the file:\n this.dropzone.on(\"sending\", (data, xhr, formData) => {\n controller.submitForm(controller, target, formData)\n })\n }\n\n acceptedFiles() {\n if (this.data.get('acceptedFiles')) {\n return this.data.get('acceptedFiles')\n } else {\n console.log('Implement in subclass: acceptedFiles')\n }\n }\n\n emptyQueue() {\n console.log('Implement in subclass: This queue is empty')\n }\n\n submitForm(controller, target, formData) {\n console.log('Implement in subclass: Submit form')\n }\n}\n","export const LocalStorageHelper = {\n storedValue(data) {\n var retrievedObject = this.getStoredValue(data);\n if (!this.isJsonLocalStorage(data)) {\n this.convertStringToJson(data);\n retrievedObject = this.getStoredValue(data);\n }\n\n // when the local storage is empty\n if (retrievedObject === null) {\n return null;\n }\n\n var parsedConfig = JSON.parse(retrievedObject);\n return parsedConfig[App.currentOrganizationId()];\n },\n\n isJsonLocalStorage(data) {\n try {\n var retrievedObject = this.getStoredValue(data);\n JSON.parse(retrievedObject);\n } catch (e) {\n return false;\n }\n return true;\n },\n\n convertStringToJson(data) {\n var value = { [App.currentOrganizationId()]: this.getStoredValue(data) };\n localStorage.setItem(this.getKey(data), JSON.stringify(value));\n },\n\n getStoredValue(data) {\n var value = localStorage.getItem(this.getKey(data));\n // https://developer.mozilla.org/en-US/docs/Web/API/Storage/getItem#return_value\n if (value === null) {\n value = this.getDefaultValue(data);\n }\n return value;\n },\n\n getKey(data) {\n return data.get('key');\n },\n\n getDefaultValue(data) {\n return data.get('default-value');\n },\n\n storeValue(data, value) {\n var keys = this.storedKeyValue(data) || {};\n\n keys[App.currentOrganizationId()] = value;\n this.setStoredValue(data, JSON.stringify(keys));\n },\n\n storedKeyValue(data) {\n var retrievedObject = this.getStoredValue(data);\n if (this.isJsonLocalStorage(data)) {\n return JSON.parse(retrievedObject) || {};\n } else {\n // when the local storage is empty\n // we need to return an object with the current organization id\n if (typeof retrievedObject === 'string') {\n retrievedObject = { [App.currentOrganizationId()]: retrievedObject };\n }\n return retrievedObject || {};\n }\n },\n\n setStoredValue(data, value) {\n localStorage.setItem(this.getKey(data), value);\n }\n};\n","import { DirectUpload } from \"@rails/activestorage\"\n\nexport default class AdReformDirectUpload {\n constructor(directUploadUrl, paramName, form, dropzone, file) {\n this.form = form\n this.paramName = paramName\n this.dropzone = dropzone\n this.file = file\n this.directUpload = new DirectUpload(file, directUploadUrl, this)\n }\n\n start() {\n this.file.uploader = this\n this.directUpload.create((error, blob) => {\n if (error) {\n this.emitDropzoneError(\"We had trouble uploading that file. Please try again or contact support@adreform.com\")\n } else {\n this.hiddenInput = this.createBlobInputHidden(blob.signed_id)\n this.file.blob_signed_id = blob.signed_id\n this.emitDropzoneSuccess()\n }\n })\n }\n\n createBlobInputHidden(value) {\n const hiddenField = document.createElement('input')\n hiddenField.type = 'hidden'\n hiddenField.name = this.paramName\n hiddenField.value = value\n this.form.appendChild(hiddenField)\n\n return hiddenField\n }\n\n directUploadWillStoreFileWithXHR(xhr) {\n this.bindProgressEvent(xhr)\n }\n\n bindProgressEvent(xhr) {\n this.xhr = xhr\n this.xhr.upload.addEventListener(\"progress\", event => this.uploadRequestDidProgress(event))\n }\n\n uploadRequestDidProgress(event) {\n const element = this.file.previewTemplate\n const progress = event.loaded / event.total * 100\n element.querySelector(\".dz-upload\").style.width = `${progress}%`\n }\n\n emitDropzoneError(error) {\n this.file.status = Dropzone.ERROR\n this.dropzone.emit(\"error\", this.file, error)\n this.dropzone.emit(\"complete\", this.file)\n }\n\n emitDropzoneSuccess() {\n this.file.status = Dropzone.SUCCESS\n this.dropzone.emit(\"success\", this.file)\n this.dropzone.emit(\"complete\", this.file)\n }\n}\n","import DropzoneController from \"../dropzone_controller\"\nimport AdReformDirectUpload from \"lib/AdReformDirectUpload\"\n\nexport default class extends DropzoneController {\n static targets = [\"input\", \"submit\", \"adIds\"]\n\n attachEvents(dz) {\n this.attachAddedFileEvents(dz)\n this.attachSuccessEvents(dz)\n this.attachRemovedFileEvents(dz)\n this.attachErrorEvents(dz)\n }\n\n attachAddedFileEvents(dz) {\n dz.on(\"addedfile\", (file) => {\n setTimeout(() => { file.accepted && this.uploadFile(file) }, 500)\n })\n }\n\n attachSuccessEvents(dz) {\n dz.on('success', (file) => {\n noty({ text: \"File uploaded\", type: 'success' })\n })\n\n dz.on(\"queuecomplete\", (file) => {\n this.enableSubmitButton()\n })\n }\n\n attachErrorEvents(dz) {\n dz.on('error', function (file, error) {\n if(error){\n noty({ text: error, type: 'error'})\n }\n dz.removeFile(file);\n });\n }\n\n attachRemovedFileEvents(dz) {\n dz.on(\"removedfile\", (file) => {\n file.uploader && $(file.uploader.hiddenInput).remove()\n file.uploader && file.uploader.xhr && file.uploader.xhr.abort()\n if (!this.hasAcceptedFiles) {\n this.disableSubmitButton();\n }\n })\n }\n\n uploadFile(file) {\n this.disableSubmitButton();\n new AdReformDirectUpload( this.directUploadUrl, this.paramName, this.element, this.dropzone, file ).start()\n }\n\n get hasAcceptedFiles() {\n return (this.dropzone.getAcceptedFiles().length > 0)\n }\n\n //ignore html data options, must be false to work properly\n get autoQueue() {\n return false\n }\n\n storeAdIds(adIds) {\n let idsToAdd = adIds.join(',')\n let appendValue;\n if (this.adIdsTarget.value.length > 0) {\n appendValue = `,${idsToAdd}`\n } else {\n appendValue = idsToAdd\n }\n this.adIdsTarget.value += appendValue\n }\n\n get adIds() {\n return this.adIdsTarget.value.split(',')\n }\n\n disableSubmitButton() {\n $(this.submitTarget)\n .attr(\"disabled\", true)\n .addClass('disabled')\n }\n\n enableSubmitButton() {\n $(this.submitTarget)\n .attr(\"disabled\", false)\n .removeClass('disabled')\n }\n\n submit(event) {\n event.preventDefault()\n\n var controller = this\n controller.disableSubmitButton();\n\n this.disableDropzoneHiddenFileInput()\n\n if(this.hasAcceptedFiles){\n $.ajax(this.submitParams);\n }else{\n this.emptyQueue()\n }\n }\n\n get submitDefaultParams(){\n return {\n type: 'POST',\n context: this,\n url: this.dropzone.options.url,\n data: this.submitData,\n dataType: \"json\",\n error: function (response) {\n this.onSubmitError(response.responseJSON)\n },\n success: function (response) {\n this.storeAdIds(response.ad_ids)\n this.onSubmitSuccess()\n },\n complete: function () {\n this.enableDropzoneHiddenFileInput()\n }\n }\n }\n\n get submitParams(){\n return {...this.submitDefaultParams, ...this.submitCustomParams}\n }\n\n get submitCustomParams(){\n return {}\n }\n\n onSubmitSuccess() {\n this.createDraftSetAndRedirect()\n }\n\n createDraftSetAndRedirect() {\n var url = Routes.draft_organization_campaign_screenshot_sets_path(App.currentOrganizationId(), this.campaignId)\n var controller = this\n $.ajax({\n data: this.draftSetSubmitParams,\n url: url,\n method: 'POST',\n dataType: 'json',\n error: function (xhr) {\n noty({ text: xhr.responseJSON.error })\n },\n success: function (response) {\n window.location.href = controller.redirectLocation(response.location)\n }\n })\n }\n\n redirectLocation(location) {\n const params = this.wizard ? { w: 1 } : {}\n return `${location}?${$.param(params)}`\n }\n\n onSubmitError(response){\n let invalidFiles = this.dropzone.files.filter(file => { return response.blob_signed_ids.includes(file.blob_signed_id)})\n\n invalidFiles.forEach( invalidFile => {\n invalidFile.status = Dropzone.ERROR\n //empty string so the errorHandler event won't display anything\n this.dropzone.emit(\"error\", invalidFile, \"\")\n })\n\n let errors = response.error.split(\",\")\n errors.forEach( error => {\n noty({ text: error})\n })\n\n this.enableSubmitButton()\n }\n\n disableDropzoneHiddenFileInput(){\n // we must prevent the file from being submitted, since our form will be submitted with a hidden field with `blob.signed_id` as value\n // we cannot remove it cause dropzone will manipulate it in some internal event handlers\n this.dropzone.hiddenFileInput.disabled = true\n }\n\n enableDropzoneHiddenFileInput(){\n //we have to enable it again so the element will be 'clickable'\n this.dropzone.hiddenFileInput.disabled = false\n }\n\n get submitData() {\n return $(this.element).serialize();\n }\n\n\n get draftSetSubmitParams() {\n var params = $.param({ad_ids: this.adIds})\n return params\n }\n\n get campaignId(){\n return this.data.get(\"campaign-id\")\n }\n\n get directUploadUrl(){\n return this.data.get(\"direct-upload-url\")\n }\n\n get paramName(){\n return this.data.get(\"paramName\")\n }\n\n get wizard() {\n return (this.data.get(\"wizard\") == \"true\")\n }\n}\n","export default {\n getContext() {\n const context = document.querySelector('meta[name=\"organization-context\"]');\n if (context && context instanceof window.HTMLMetaElement) {\n return context.dataset;\n }\n return null;\n },\n\n get exists() {\n return this.getContext() != null;\n },\n\n get current() {\n return this.exists ? this.getContext() : {}\n },\n};\n","export class ApplyModeHelper {\n static addNonExistingToSelect2(fields, sites) {\n for (let i = 0; i < fields.length; i++) {\n for (let j = 0; j < sites.length; j++) {\n this.appendOrSelectOption(fields[i], sites[j])\n }\n }\n }\n\n static setSelectedValue(fields, siteList) {\n let j = 0\n for (let i = 0; i < fields.length; i++) {\n this.appendOrSelectOption(fields[i], siteList[j])\n if (j >= (siteList.length - 1)) {\n j = 0\n } else {\n j = j + 1\n }\n }\n }\n\n static appendOrSelectOption(field, site) {\n let option = $(field).find(\"option:contains('\" + site + \"')\").val()\n if (option == undefined) {\n let newSiteOption = new Option(site.url, site.id, true, true)\n $(field).append(newSiteOption).trigger('change')\n } else {\n $(field).select2('trigger', 'select', {\n data: { id: option }\n })\n }\n }\n\n // https://stackoverflow.com/questions/2450954/how-to-randomize-shuffle-a-javascript-array\n static shuffle(order, array) {\n if (order == 'random') {\n let currentIndex = array.length, randomIndex\n // While there remain elements to shuffle.\n while (currentIndex != 0) {\n // Pick a remaining element.\n randomIndex = Math.floor(Math.random() * currentIndex)\n currentIndex--\n // And swap it with the current element.\n [array[currentIndex], array[randomIndex]] = [array[randomIndex], array[currentIndex]]\n }\n }\n return array\n }\n\n static displayErrors(xhr) {\n let errors = xhr.responseJSON.errors\n errors.forEach(error => {\n noty({ text: error })\n })\n }\n}\n","import { Controller } from \"stimulus\"\n\nexport default class extends Controller {\n static targets = [\"input\"]\n\n get options() {\n return {};\n }\n\n get defaultOptions() {\n return {\n multiple: false,\n ajax: {\n url: this.data.get('url'),\n dataType: 'json',\n data: function (params) {\n var query = {\n search: params.term\n }\n // Query parameters will be ?search=[term]\n return query\n },\n processResults: function (data) {\n // Transforms the top-level key of the response object from 'data' to 'results'\n return {\n results: data\n }\n }\n },\n }\n }\n\n get mergedOptions() {\n return $.extend(true, this.defaultOptions, this.options);\n }\n\n initialize() {\n this.select2 = $(this.inputTarget).select2(this.mergedOptions)\n }\n\n disconnect() {\n this.select2.select2('destroy')\n }\n}\n","import Select2Controller from \"../select2_controller\"\n\nexport default class extends Select2Controller {\n get options() {\n return {\n width: '100%',\n placeholder: 'Select site',\n tags: true,\n ajax: {\n delay: 250, // wait 250 milliseconds before triggering the request\n data: function (params) {\n var query = {\n value: params.term,\n page: params.page || 1\n }\n return query\n },\n processResults: function (data) {\n // Transforms the top-level key of the response object from 'data' to 'results'\n return {\n results: data.results,\n pagination: data.pagination\n }\n }\n },\n createTag: function (params) {\n var term = $.trim(params.term)\n\n if (term === '') {\n return null\n }\n\n return {\n id: term,\n text: term,\n newTag: true\n }\n }\n }\n }\n\n initialize() {\n this.select2 = $(this.inputTarget).select2(this.mergedOptions)\n this.bindEvents()\n }\n\n bindEvents() {\n var controller = this\n this.select2.on('select2:select', function (e) {\n var data = e.params.data\n if (data.newTag) {\n controller.createSite(data)\n }\n })\n }\n\n createSite(data) {\n var controller = this\n\n $.ajax({\n url: controller.data.get('url-create'),\n dataType: \"json\",\n type: 'POST',\n data: {\n 'sites[]': {'url': data.text}\n },\n error: function (xhr) {\n let errors = xhr.responseJSON.errors\n errors.forEach(error => {\n noty({ text: error })\n })\n controller.select2.val(null).trigger('change') // clear selected option\n },\n success: function (response) {\n let site = response[0]\n var newSiteOption = new Option(site.url, site.id, true, true)\n controller.select2.append(newSiteOption).trigger('change')\n },\n complete: function() {\n data.newTag = false\n }\n })\n }\n}\n","export default {\n getContext() {\n const context = document.querySelector('meta[name=\"user-context\"]');\n if (context && context instanceof window.HTMLMetaElement) {\n return context.dataset;\n }\n return null;\n },\n\n get exists() {\n return this.getContext() != null;\n },\n\n get current() {\n return this.exists ? this.getContext() : {}\n }\n};\n","export function isNodeEnv() {\n return Object.prototype.toString.call(typeof process !== \"undefined\" ? process : 0) === \"[object process]\";\n}\nexport function getGlobalObject() {\n return isNodeEnv() ? global : typeof window !== \"undefined\" ? window : typeof self !== \"undefined\" ? self : {};\n}","export default function (e, n) {\n return n = n || {}, new Promise(function (t, r) {\n var s = new XMLHttpRequest(),\n o = [],\n u = [],\n i = {},\n a = function () {\n return {\n ok: 2 == (s.status / 100 | 0),\n statusText: s.statusText,\n status: s.status,\n url: s.responseURL,\n text: function () {\n return Promise.resolve(s.responseText);\n },\n json: function () {\n return Promise.resolve(s.responseText).then(JSON.parse);\n },\n blob: function () {\n return Promise.resolve(new Blob([s.response]));\n },\n clone: a,\n headers: {\n keys: function () {\n return o;\n },\n entries: function () {\n return u;\n },\n get: function (e) {\n return i[e.toLowerCase()];\n },\n has: function (e) {\n return e.toLowerCase() in i;\n }\n }\n };\n };\n for (var l in s.open(n.method || \"get\", e, !0), s.onload = function () {\n s.getAllResponseHeaders().replace(/^(.*?):[^\\S\\n]*([\\s\\S]*?)$/gm, function (e, n, t) {\n o.push(n = n.toLowerCase()), u.push([n, t]), i[n] = i[n] ? i[n] + \",\" + t : t;\n }), t(a());\n }, s.onerror = r, s.withCredentials = \"include\" == n.credentials, n.headers) s.setRequestHeader(l, n.headers[l]);\n s.send(n.body || null);\n });\n}","module.exports = self.fetch || (self.fetch = require('unfetch').default || require('unfetch'));","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n// This is CodeMirror (https://codemirror.net), a code editor\n// implemented in JavaScript on top of the browser's DOM.\n//\n// You can find some technical background for some of the code below\n// at http://marijnhaverbeke.nl/blog/#cm-internals .\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : (global = global || self, global.CodeMirror = factory());\n})(this, function () {\n 'use strict';\n\n // Kludges for bugs and behavior differences that can't be feature\n // detected are enabled based on userAgent etc sniffing.\n var userAgent = navigator.userAgent;\n var platform = navigator.platform;\n 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) {\n presto_version = Number(presto_version[1]);\n }\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) {\n e.removeChild(e.firstChild);\n }\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) {\n e.className = className;\n }\n if (style) {\n e.style.cssText = style;\n }\n if (typeof content == \"string\") {\n e.appendChild(document.createTextNode(content));\n } else if (content) {\n for (var i = 0; i < content.length; ++i) {\n e.appendChild(content[i]);\n }\n }\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) {\n 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 {\n 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 }\n function contains(parent, child) {\n if (child.nodeType == 3)\n // Android browser always returns false when child is a textnode\n {\n child = child.parentNode;\n }\n if (parent.contains) {\n return parent.contains(child);\n }\n do {\n if (child.nodeType == 11) {\n child = child.host;\n }\n if (child == parent) {\n return true;\n }\n } while (child = child.parentNode);\n }\n function activeElt() {\n // IE and Edge may throw an \"Unspecified Error\" when accessing document.activeElement.\n // IE < 10 will throw when accessed while the page is loading or in an iframe.\n // IE > 9 and Edge will throw when accessed in an iframe if document.body is unavailable.\n var activeElement;\n try {\n activeElement = document.activeElement;\n } catch (e) {\n activeElement = document.body || null;\n }\n while (activeElement && activeElement.shadowRoot && activeElement.shadowRoot.activeElement) {\n activeElement = activeElement.shadowRoot.activeElement;\n }\n return activeElement;\n }\n function addClass(node, cls) {\n var current = node.className;\n if (!classTest(cls).test(current)) {\n node.className += (current ? \" \" : \"\") + cls;\n }\n }\n function joinClasses(a, b) {\n var as = a.split(\" \");\n for (var i = 0; i < as.length; i++) {\n if (as[i] && !classTest(as[i]).test(b)) {\n b += \" \" + as[i];\n }\n }\n return b;\n }\n var selectInput = function (node) {\n node.select();\n };\n if (ios)\n // Mobile Safari apparently has a bug where select() is broken.\n {\n selectInput = function (node) {\n node.selectionStart = 0;\n node.selectionEnd = node.value.length;\n };\n } else if (ie)\n // Suppress mysterious IE10 errors\n {\n selectInput = function (node) {\n try {\n node.select();\n } catch (_e) {}\n };\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) {\n target = {};\n }\n for (var prop in obj) {\n if (obj.hasOwnProperty(prop) && (overwrite !== false || !target.hasOwnProperty(prop))) {\n target[prop] = obj[prop];\n }\n }\n return target;\n }\n\n // Counts the column offset in a string, taking tabs into account.\n // Used mostly to find indentation.\n function countColumn(string, end, tabSize, startIndex, startValue) {\n if (end == null) {\n end = string.search(/[^\\s\\u00a0]/);\n if (end == -1) {\n end = string.length;\n }\n }\n for (var i = startIndex || 0, n = startValue || 0;;) {\n var nextTab = string.indexOf(\"\\t\", i);\n if (nextTab < 0 || nextTab >= end) {\n return n + (end - i);\n }\n 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()) {\n self.f();\n } else {\n setTimeout(self.handler, self.time - +new Date());\n }\n };\n Delayed.prototype.set = function (ms, f) {\n this.f = f;\n var time = +new Date() + ms;\n if (!this.id || time < this.time) {\n clearTimeout(this.id);\n this.id = setTimeout(this.handler, ms);\n this.time = time;\n }\n };\n function indexOf(array, elt) {\n for (var i = 0; i < array.length; ++i) {\n if (array[i] == elt) {\n return i;\n }\n }\n return -1;\n }\n\n // Number of pixels added to scroller and sizer to hide scrollbar\n var scrollerGap = 50;\n\n // Returned or thrown by various protocols to signal 'I'm not\n // handling this'.\n var Pass = {\n toString: function () {\n return \"CodeMirror.Pass\";\n }\n };\n\n // Reused option objects for setSelection & friends\n var sel_dontScroll = {\n scroll: false\n },\n sel_mouse = {\n origin: \"*mouse\"\n },\n sel_move = {\n origin: \"+move\"\n };\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) {\n nextTab = string.length;\n }\n var skipped = nextTab - pos;\n if (nextTab == string.length || col + skipped >= goal) {\n return pos + Math.min(skipped, goal - col);\n }\n col += nextTab - pos;\n col += tabSize - col % tabSize;\n pos = nextTab + 1;\n if (col >= goal) {\n return pos;\n }\n }\n }\n var spaceStrs = [\"\"];\n function spaceStr(n) {\n while (spaceStrs.length <= n) {\n spaceStrs.push(lst(spaceStrs) + \" \");\n }\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++) {\n out[i] = f(array[i], i);\n }\n return out;\n }\n function insertSorted(array, value, score) {\n var pos = 0,\n priority = score(value);\n while (pos < array.length && score(array[pos]) <= priority) {\n pos++;\n }\n array.splice(pos, 0, value);\n }\n function nothing() {}\n function createObj(base, props) {\n var inst;\n if (Object.create) {\n inst = Object.create(base);\n } else {\n nothing.prototype = base;\n inst = new nothing();\n }\n if (props) {\n copyObj(props, inst);\n }\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) {\n return isWordCharBasic(ch);\n }\n if (helper.source.indexOf(\"\\\\w\") > -1 && isWordCharBasic(ch)) {\n return true;\n }\n return helper.test(ch);\n }\n function isEmpty(obj) {\n for (var n in obj) {\n if (obj.hasOwnProperty(n) && obj[n]) {\n return false;\n }\n }\n return true;\n }\n\n // Extending unicode characters. A series of a non-extending char +\n // any number of extending chars is treated as a single unit as far\n // as editing and measuring is concerned. This is not fully correct,\n // since some scripts/fonts/browsers also treat other configurations\n // of code points as a group.\n var extendingChars = /[\\u0300-\\u036f\\u0483-\\u0489\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u065e\\u0670\\u06d6-\\u06dc\\u06de-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07eb-\\u07f3\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0900-\\u0902\\u093c\\u0941-\\u0948\\u094d\\u0951-\\u0955\\u0962\\u0963\\u0981\\u09bc\\u09be\\u09c1-\\u09c4\\u09cd\\u09d7\\u09e2\\u09e3\\u0a01\\u0a02\\u0a3c\\u0a41\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a70\\u0a71\\u0a75\\u0a81\\u0a82\\u0abc\\u0ac1-\\u0ac5\\u0ac7\\u0ac8\\u0acd\\u0ae2\\u0ae3\\u0b01\\u0b3c\\u0b3e\\u0b3f\\u0b41-\\u0b44\\u0b4d\\u0b56\\u0b57\\u0b62\\u0b63\\u0b82\\u0bbe\\u0bc0\\u0bcd\\u0bd7\\u0c3e-\\u0c40\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0cbc\\u0cbf\\u0cc2\\u0cc6\\u0ccc\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0d3e\\u0d41-\\u0d44\\u0d4d\\u0d57\\u0d62\\u0d63\\u0dca\\u0dcf\\u0dd2-\\u0dd4\\u0dd6\\u0ddf\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0eb1\\u0eb4-\\u0eb9\\u0ebb\\u0ebc\\u0ec8-\\u0ecd\\u0f18\\u0f19\\u0f35\\u0f37\\u0f39\\u0f71-\\u0f7e\\u0f80-\\u0f84\\u0f86\\u0f87\\u0f90-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u102d-\\u1030\\u1032-\\u1037\\u1039\\u103a\\u103d\\u103e\\u1058\\u1059\\u105e-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108d\\u109d\\u135f\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b7-\\u17bd\\u17c6\\u17c9-\\u17d3\\u17dd\\u180b-\\u180d\\u18a9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193b\\u1a17\\u1a18\\u1a56\\u1a58-\\u1a5e\\u1a60\\u1a62\\u1a65-\\u1a6c\\u1a73-\\u1a7c\\u1a7f\\u1b00-\\u1b03\\u1b34\\u1b36-\\u1b3a\\u1b3c\\u1b42\\u1b6b-\\u1b73\\u1b80\\u1b81\\u1ba2-\\u1ba5\\u1ba8\\u1ba9\\u1c2c-\\u1c33\\u1c36\\u1c37\\u1cd0-\\u1cd2\\u1cd4-\\u1ce0\\u1ce2-\\u1ce8\\u1ced\\u1dc0-\\u1de6\\u1dfd-\\u1dff\\u200c\\u200d\\u20d0-\\u20f0\\u2cef-\\u2cf1\\u2de0-\\u2dff\\u302a-\\u302f\\u3099\\u309a\\ua66f-\\ua672\\ua67c\\ua67d\\ua6f0\\ua6f1\\ua802\\ua806\\ua80b\\ua825\\ua826\\ua8c4\\ua8e0-\\ua8f1\\ua926-\\ua92d\\ua947-\\ua951\\ua980-\\ua982\\ua9b3\\ua9b6-\\ua9b9\\ua9bc\\uaa29-\\uaa2e\\uaa31\\uaa32\\uaa35\\uaa36\\uaa43\\uaa4c\\uaab0\\uaab2-\\uaab4\\uaab7\\uaab8\\uaabe\\uaabf\\uaac1\\uabe5\\uabe8\\uabed\\udc00-\\udfff\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe26\\uff9e\\uff9f]/;\n function isExtendingChar(ch) {\n return ch.charCodeAt(0) >= 768 && extendingChars.test(ch);\n }\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))) {\n pos += dir;\n }\n return pos;\n }\n\n // Returns the value from the range [`from`; `to`] that satisfies\n // `pred` and is closest to `from`. Assumes that at least `to`\n // satisfies `pred`. Supports `from` being greater than `to`.\n function findFirst(pred, from, to) {\n // At any point we are certain `to` satisfies `pred`, don't know\n // whether `from` does.\n var dir = from > to ? -1 : 1;\n for (;;) {\n if (from == to) {\n return from;\n }\n var midF = (from + to) / 2,\n mid = dir < 0 ? Math.ceil(midF) : Math.floor(midF);\n if (mid == from) {\n return pred(mid) ? from : to;\n }\n if (pred(mid)) {\n to = mid;\n } else {\n from = mid + dir;\n }\n }\n }\n\n // BIDI HELPERS\n\n function iterateBidiSections(order, from, to, f) {\n if (!order) {\n return f(from, to, \"ltr\", 0);\n }\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) {\n f(from, to, \"ltr\");\n }\n }\n var bidiOther = null;\n function getBidiPartAt(order, ch, sticky) {\n var found;\n bidiOther = null;\n for (var i = 0; i < order.length; ++i) {\n var cur = order[i];\n if (cur.from < ch && cur.to > ch) {\n return i;\n }\n if (cur.to == ch) {\n if (cur.from != cur.to && sticky == \"before\") {\n found = i;\n } else {\n bidiOther = i;\n }\n }\n if (cur.from == ch) {\n if (cur.from != cur.to && sticky != \"before\") {\n found = i;\n } else {\n bidiOther = i;\n }\n }\n }\n return found != null ? found : bidiOther;\n }\n\n // Bidirectional ordering algorithm\n // See http://unicode.org/reports/tr9/tr9-13.html for the algorithm\n // that this (partially) implements.\n\n // One-char codes used for character types:\n // L (L): Left-to-Right\n // R (R): Right-to-Left\n // r (AL): Right-to-Left Arabic\n // 1 (EN): European Number\n // + (ES): European Number Separator\n // % (ET): European Number Terminator\n // n (AN): Arabic Number\n // , (CS): Common Number Separator\n // m (NSM): Non-Spacing Mark\n // b (BN): Boundary Neutral\n // s (B): Paragraph Separator\n // t (S): Segment Separator\n // w (WS): Whitespace\n // N (ON): Other Neutrals\n\n // Returns null if characters are ordered as they appear\n // (left-to-right), or an array of sections ({from, to, level}\n // objects) in the order in which they occur visually.\n var bidiOrdering = function () {\n // Character types for codepoints 0 to 0xff\n var lowTypes = \"bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN\";\n // Character types for codepoints 0x600 to 0x6f9\n var arabicTypes = \"nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111\";\n function charType(code) {\n if (code <= 0xf7) {\n return lowTypes.charAt(code);\n } else if (0x590 <= code && code <= 0x5f4) {\n return \"R\";\n } else if (0x600 <= code && code <= 0x6f9) {\n return arabicTypes.charAt(code - 0x600);\n } else if (0x6ee <= code && code <= 0x8ac) {\n return \"r\";\n } else if (0x2000 <= code && code <= 0x200b) {\n return \"w\";\n } else if (code == 0x200c) {\n return \"b\";\n } else {\n return \"L\";\n }\n }\n var bidiRE = /[\\u0590-\\u05f4\\u0600-\\u06ff\\u0700-\\u08ac]/;\n var isNeutral = /[stwN]/,\n isStrong = /[LRr]/,\n countsAsLeft = /[Lb1n]/,\n 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)) {\n return false;\n }\n var len = str.length,\n types = [];\n for (var i = 0; i < len; ++i) {\n types.push(charType(str.charCodeAt(i)));\n }\n\n // W1. Examine each non-spacing mark (NSM) in the level run, and\n // change the type of the NSM to the type of the previous\n // character. If the NSM is at the start of the level run, it will\n // get the type of sor.\n for (var i$1 = 0, prev = outerType; i$1 < len; ++i$1) {\n var type = types[i$1];\n if (type == \"m\") {\n types[i$1] = prev;\n } else {\n prev = type;\n }\n }\n\n // W2. Search backwards from each instance of a European number\n // until the first strong type (R, L, AL, or sor) is found. If an\n // AL is found, change the type of the European number to Arabic\n // number.\n // W3. Change all ALs to R.\n for (var i$2 = 0, cur = outerType; i$2 < len; ++i$2) {\n var type$1 = types[i$2];\n if (type$1 == \"1\" && cur == \"r\") {\n types[i$2] = \"n\";\n } else if (isStrong.test(type$1)) {\n cur = type$1;\n if (type$1 == \"r\") {\n types[i$2] = \"R\";\n }\n }\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\") {\n types[i$3] = \"1\";\n } else if (type$2 == \",\" && prev$1 == types[i$3 + 1] && (prev$1 == \"1\" || prev$1 == \"n\")) {\n types[i$3] = prev$1;\n }\n prev$1 = type$2;\n }\n\n // W5. A sequence of European terminators adjacent to European\n // numbers changes to all European numbers.\n // W6. Otherwise, separators and terminators change to Other\n // Neutral.\n for (var i$4 = 0; i$4 < len; ++i$4) {\n var type$3 = types[i$4];\n if (type$3 == \",\") {\n 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) {\n types[j] = replace;\n }\n i$4 = end - 1;\n }\n }\n\n // W7. Search backwards from each instance of a European number\n // until the first strong type (R, L, or sor) is found. If an L is\n // found, then change the type of the European number to L.\n for (var i$5 = 0, cur$1 = outerType; i$5 < len; ++i$5) {\n var type$4 = types[i$5];\n if (cur$1 == \"L\" && type$4 == \"1\") {\n types[i$5] = \"L\";\n } else if (isStrong.test(type$4)) {\n cur$1 = type$4;\n }\n }\n\n // N1. A sequence of neutrals takes the direction of the\n // surrounding strong text if the text on both sides has the same\n // direction. European and Arabic numbers act as if they were R in\n // terms of their influence on neutrals. Start-of-level-run (sor)\n // and end-of-level-run (eor) are used at level run boundaries.\n // N2. Any remaining neutrals take the embedding direction.\n for (var i$6 = 0; i$6 < len; ++i$6) {\n if (isNeutral.test(types[i$6])) {\n var end$1 = void 0;\n for (end$1 = i$6 + 1; end$1 < len && isNeutral.test(types[end$1]); ++end$1) {}\n var before = (i$6 ? types[i$6 - 1] : outerType) == \"L\";\n var after = (end$1 < len ? types[end$1] : outerType) == \"L\";\n var replace$1 = before == after ? before ? \"L\" : \"R\" : outerType;\n for (var j$1 = i$6; j$1 < end$1; ++j$1) {\n types[j$1] = replace$1;\n }\n i$6 = end$1 - 1;\n }\n }\n\n // Here we depart from the documented algorithm, in order to avoid\n // building up an actual levels array. Since there are only three\n // levels (0, 1, 2) in an implementation that doesn't take\n // explicit embedding into account, we can build up the order on\n // the fly, without following the level-based algorithm.\n var order = [],\n m;\n for (var i$7 = 0; i$7 < len;) {\n if (countsAsLeft.test(types[i$7])) {\n var start = i$7;\n for (++i$7; i$7 < len && countsAsLeft.test(types[i$7]); ++i$7) {}\n order.push(new BidiSpan(0, start, i$7));\n } else {\n var pos = i$7,\n at = order.length,\n isRTL = direction == \"rtl\" ? 1 : 0;\n for (++i$7; i$7 < len && types[i$7] != \"L\"; ++i$7) {}\n for (var j$2 = pos; j$2 < i$7;) {\n if (countsAsNum.test(types[j$2])) {\n if (pos < j$2) {\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 {\n ++j$2;\n }\n }\n if (pos < i$7) {\n order.splice(at, 0, new BidiSpan(1, pos, i$7));\n }\n }\n }\n if (direction == \"ltr\") {\n if (order[0].level == 1 && (m = str.match(/^\\s+/))) {\n order[0].from = m[0].length;\n order.unshift(new BidiSpan(0, 0, m[0].length));\n }\n if (lst(order).level == 1 && (m = str.match(/\\s+$/))) {\n lst(order).to -= m[0].length;\n order.push(new BidiSpan(0, len - m[0].length, len));\n }\n }\n return direction == \"rtl\" ? order.reverse() : order;\n };\n }();\n\n // Get the bidi ordering for the given line (and cache it). Returns\n // false for lines that are fully left-to-right, and an array of\n // BidiSpan objects otherwise.\n function getOrder(line, direction) {\n var order = line.order;\n if (order == null) {\n order = line.order = bidiOrdering(line.text, direction);\n }\n return order;\n }\n\n // EVENT HANDLING\n\n // Lightweight event framework. on/off also work on DOM nodes,\n // registering native DOM handlers.\n\n var noHandlers = [];\n var on = function (emitter, type, f) {\n if (emitter.addEventListener) {\n emitter.addEventListener(type, f, false);\n } else if (emitter.attachEvent) {\n emitter.attachEvent(\"on\" + type, f);\n } else {\n var map = emitter._handlers || (emitter._handlers = {});\n map[type] = (map[type] || noHandlers).concat(f);\n }\n };\n function getHandlers(emitter, type) {\n return emitter._handlers && emitter._handlers[type] || noHandlers;\n }\n function off(emitter, type, f) {\n if (emitter.removeEventListener) {\n emitter.removeEventListener(type, f, false);\n } else if (emitter.detachEvent) {\n emitter.detachEvent(\"on\" + type, f);\n } else {\n var map = emitter._handlers,\n arr = map && map[type];\n if (arr) {\n var index = indexOf(arr, f);\n if (index > -1) {\n map[type] = arr.slice(0, index).concat(arr.slice(index + 1));\n }\n }\n }\n }\n function signal(emitter, type /*, values...*/) {\n var handlers = getHandlers(emitter, type);\n if (!handlers.length) {\n return;\n }\n var args = Array.prototype.slice.call(arguments, 2);\n for (var i = 0; i < handlers.length; ++i) {\n handlers[i].apply(null, args);\n }\n }\n\n // The DOM events that CodeMirror handles can be overridden by\n // registering a (non-DOM) handler on the editor for the event name,\n // and preventDefault-ing the event in that handler.\n function signalDOMEvent(cm, e, override) {\n if (typeof e == \"string\") {\n e = {\n type: e,\n preventDefault: function () {\n this.defaultPrevented = true;\n }\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) {\n return;\n }\n var set = cm.curOp.cursorActivityHandlers || (cm.curOp.cursorActivityHandlers = []);\n for (var i = 0; i < arr.length; ++i) {\n if (indexOf(set, arr[i]) == -1) {\n set.push(arr[i]);\n }\n }\n }\n function hasHandler(emitter, type) {\n return getHandlers(emitter, type).length > 0;\n }\n\n // Add on and off methods to a constructor's prototype, to make\n // registering events on such objects more convenient.\n function eventMixin(ctor) {\n ctor.prototype.on = function (type, f) {\n on(this, type, f);\n };\n ctor.prototype.off = function (type, f) {\n off(this, type, f);\n };\n }\n\n // Due to the fact that we still support jurassic IE versions, some\n // compatibility wrappers are needed.\n\n function e_preventDefault(e) {\n if (e.preventDefault) {\n e.preventDefault();\n } else {\n e.returnValue = false;\n }\n }\n function e_stopPropagation(e) {\n if (e.stopPropagation) {\n e.stopPropagation();\n } else {\n e.cancelBubble = true;\n }\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) {\n b = 1;\n } else if (e.button & 2) {\n b = 3;\n } else if (e.button & 4) {\n b = 2;\n }\n }\n if (mac && e.ctrlKey && b == 1) {\n b = 3;\n }\n return b;\n }\n\n // Detect drag-and-drop\n var dragAndDrop = function () {\n // There is *some* kind of drag-and-drop support in IE6-8, but I\n // couldn't get it to work yet.\n if (ie && ie_version < 9) {\n return false;\n }\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\", \"\\u200b\");\n removeChildrenAndAdd(measure, elt(\"span\", [test, document.createTextNode(\"x\")]));\n if (measure.firstChild.offsetHeight != 0) {\n zwspSupported = test.offsetWidth <= 1 && test.offsetHeight > 2 && !(ie && ie_version < 8);\n }\n }\n var node = zwspSupported ? elt(\"span\", \"\\u200b\") : elt(\"span\", \"\\u00a0\", null, \"display: inline-block; width: 1px; margin-right: -1px\");\n node.setAttribute(\"cm-text\", \"\");\n return node;\n }\n\n // Feature-detect IE's crummy client rect reporting for bidi text\n var badBidiRects;\n function hasBadBidiRects(measure) {\n if (badBidiRects != null) {\n return badBidiRects;\n }\n var txt = removeChildrenAndAdd(measure, document.createTextNode(\"A\\u062eA\"));\n var r0 = range(txt, 0, 1).getBoundingClientRect();\n var r1 = range(txt, 1, 2).getBoundingClientRect();\n removeChildren(measure);\n if (!r0 || r0.left == r0.right) {\n return false;\n } // Safari returns null in some cases (#2780)\n return badBidiRects = r1.right - r0.right < 3;\n }\n\n // See if \"\".split is the broken IE version, if so, provide an\n // alternative way to split lines.\n var splitLinesAuto = \"\\n\\nb\".split(/\\n/).length != 3 ? function (string) {\n var pos = 0,\n result = [],\n l = string.length;\n while (pos <= l) {\n var nl = string.indexOf(\"\\n\", pos);\n if (nl == -1) {\n nl = string.length;\n }\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) {\n return false;\n }\n return range.compareEndPoints(\"StartToEnd\", range) != 0;\n };\n var hasCopyEvent = function () {\n var e = elt(\"div\");\n if (\"oncopy\" in e) {\n return true;\n }\n e.setAttribute(\"oncopy\", \"return;\");\n return typeof e.oncopy == \"function\";\n }();\n var badZoomedRects = null;\n function hasBadZoomedRects(measure) {\n if (badZoomedRects != null) {\n return badZoomedRects;\n }\n var node = removeChildrenAndAdd(measure, elt(\"span\", \"x\"));\n var normal = node.getBoundingClientRect();\n var fromRange = range(node, 0, 1).getBoundingClientRect();\n return badZoomedRects = Math.abs(normal.left - fromRange.left) > 1;\n }\n\n // Known modes, by name and by MIME\n var modes = {},\n mimeModes = {};\n\n // Extra arguments are stored as the mode's dependencies, which is\n // used by (legacy) mechanisms like loadmode.js to automatically\n // load a mode. (Preferred mechanism is the require/define calls.)\n function defineMode(name, mode) {\n if (arguments.length > 2) {\n mode.dependencies = Array.prototype.slice.call(arguments, 2);\n }\n modes[name] = mode;\n }\n function defineMIME(mime, spec) {\n mimeModes[mime] = spec;\n }\n\n // Given a MIME type, a {name, ...options} config object, or a name\n // string, return a mode config object.\n function resolveMode(spec) {\n if (typeof spec == \"string\" && mimeModes.hasOwnProperty(spec)) {\n spec = mimeModes[spec];\n } else if (spec && typeof spec.name == \"string\" && mimeModes.hasOwnProperty(spec.name)) {\n var found = mimeModes[spec.name];\n if (typeof found == \"string\") {\n found = {\n name: found\n };\n }\n spec = createObj(found, spec);\n spec.name = found.name;\n } else if (typeof spec == \"string\" && /^[\\w\\-]+\\/[\\w\\-]+\\+xml$/.test(spec)) {\n return resolveMode(\"application/xml\");\n } else if (typeof spec == \"string\" && /^[\\w\\-]+\\/[\\w\\-]+\\+json$/.test(spec)) {\n return resolveMode(\"application/json\");\n }\n if (typeof spec == \"string\") {\n return {\n name: spec\n };\n } else {\n return spec || {\n name: \"null\"\n };\n }\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) {\n return getMode(options, \"text/plain\");\n }\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)) {\n continue;\n }\n if (modeObj.hasOwnProperty(prop)) {\n modeObj[\"_\" + prop] = modeObj[prop];\n }\n modeObj[prop] = exts[prop];\n }\n }\n modeObj.name = spec.name;\n if (spec.helperType) {\n modeObj.helperType = spec.helperType;\n }\n if (spec.modeProps) {\n for (var prop$1 in spec.modeProps) {\n modeObj[prop$1] = spec.modeProps[prop$1];\n }\n }\n return modeObj;\n }\n\n // This can be used to attach properties to mode objects from\n // outside the actual mode definition.\n var modeExtensions = {};\n function extendMode(mode, properties) {\n var exts = modeExtensions.hasOwnProperty(mode) ? modeExtensions[mode] : modeExtensions[mode] = {};\n copyObj(properties, exts);\n }\n function copyState(mode, state) {\n if (state === true) {\n return state;\n }\n if (mode.copyState) {\n return mode.copyState(state);\n }\n var nstate = {};\n for (var n in state) {\n var val = state[n];\n if (val instanceof Array) {\n val = val.concat([]);\n }\n nstate[n] = val;\n }\n return nstate;\n }\n\n // Given a mode and a state (for that mode), find the inner mode and\n // state at the position that the state refers to.\n function innerMode(mode, state) {\n var info;\n while (mode.innerMode) {\n info = mode.innerMode(state);\n if (!info || info.mode == mode) {\n break;\n }\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\n // STRING STREAM\n\n // Fed to the mode parsers, provides helper functions to make\n // parsers more succinct.\n\n var StringStream = function (string, tabSize, lineOracle) {\n this.pos = this.start = 0;\n this.string = string;\n this.tabSize = tabSize || 8;\n this.lastColumnPos = this.lastColumnValue = 0;\n this.lineStart = 0;\n this.lineOracle = lineOracle;\n };\n 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) {\n return this.string.charAt(this.pos++);\n }\n };\n StringStream.prototype.eat = function (match) {\n var ch = this.string.charAt(this.pos);\n var ok;\n if (typeof match == \"string\") {\n ok = ch == match;\n } else {\n ok = ch && (match.test ? match.test(ch) : match(ch));\n }\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))) {\n ++this.pos;\n }\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) {\n this.pos += pattern.length;\n }\n return true;\n }\n } else {\n var match = this.string.slice(this.pos).match(pattern);\n if (match && match.index > 0) {\n return null;\n }\n if (match && consume !== false) {\n this.pos += match[0].length;\n }\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\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) {\n throw new Error(\"There is no line \" + (n + doc.first) + \" in the document.\");\n }\n var chunk = doc;\n while (!chunk.lines) {\n for (var i = 0;; ++i) {\n var child = chunk.children[i],\n sz = child.chunkSize();\n if (n < sz) {\n chunk = child;\n break;\n }\n n -= sz;\n }\n }\n return chunk.lines[n];\n }\n\n // Get the part of a document between two positions, as an array of\n // strings.\n function getBetween(doc, start, end) {\n var out = [],\n n = start.line;\n doc.iter(start.line, end.line + 1, function (line) {\n var text = line.text;\n if (n == end.line) {\n text = text.slice(0, end.ch);\n }\n if (n == start.line) {\n text = text.slice(start.ch);\n }\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\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) {\n for (var n = line; n; n = n.parent) {\n n.height += diff;\n }\n }\n }\n\n // Given a line object, find its line number by walking up through\n // its parent links.\n function lineNo(line) {\n if (line.parent == null) {\n return null;\n }\n var cur = line.parent,\n no = indexOf(cur.lines, line);\n for (var chunk = cur.parent; chunk; cur = chunk, chunk = chunk.parent) {\n for (var i = 0;; ++i) {\n if (chunk.children[i] == cur) {\n break;\n }\n no += chunk.children[i].chunkSize();\n }\n }\n return no + cur.first;\n }\n\n // Find the line at the given vertical position, using the height\n // information in the document tree.\n function lineAtHeight(chunk, h) {\n var n = chunk.first;\n outer: do {\n for (var i$1 = 0; i$1 < chunk.children.length; ++i$1) {\n var child = chunk.children[i$1],\n 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],\n lh = line.height;\n if (h < lh) {\n break;\n }\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\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)) {\n return new Pos(line, ch, sticky);\n }\n this.line = line;\n this.ch = ch;\n this.sticky = sticky;\n }\n\n // Compare two positions, return 0 if they are the same, a negative\n // number when a is less, and a positive number otherwise.\n function cmp(a, b) {\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\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) {\n return Pos(doc.first, 0);\n }\n var last = doc.first + doc.size - 1;\n if (pos.line > last) {\n return Pos(last, getLine(doc, last).text.length);\n }\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) {\n return Pos(pos.line, linelen);\n } else if (ch < 0) {\n return Pos(pos.line, 0);\n } else {\n return pos;\n }\n }\n function clipPosArray(doc, array) {\n var out = [];\n for (var i = 0; i < array.length; i++) {\n out[i] = clipPos(doc, array[i]);\n }\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) {\n this.maxLookAhead = n;\n }\n return line;\n };\n Context.prototype.baseToken = function (n) {\n if (!this.baseTokens) {\n return null;\n }\n while (this.baseTokens[this.baseTokenPos] <= n) {\n this.baseTokenPos += 2;\n }\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) {\n this.maxLookAhead--;\n }\n };\n Context.fromSaved = function (doc, saved, line) {\n if (saved instanceof SavedContext) {\n return new Context(doc, copyState(doc.mode, saved.state), line, saved.lookAhead);\n } else {\n return new Context(doc, copyState(doc.mode, saved), line);\n }\n };\n Context.prototype.save = function (copy) {\n var state = copy !== false ? copyState(this.doc.mode, this.state) : this.state;\n return this.maxLookAhead > 0 ? new SavedContext(state, this.maxLookAhead) : state;\n };\n\n // Compute a style array (an array starting with a mode generation\n // -- for invalidation -- followed by pairs of end positions and\n // style strings), which is used to highlight the tokens on the\n // line.\n function highlightLine(cm, line, context, forceToEnd) {\n // A styles array always starts with a number identifying the\n // mode/overlays that it is based on (for easy invalidation).\n var st = [cm.state.modeGen],\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\n // Run overlays, adjust style array.\n var loop = function (o) {\n context.baseTokens = st;\n var overlay = cm.state.overlays[o],\n i = 1,\n at = 0;\n context.state = true;\n runMode(cm, line.text, overlay.mode, context, function (end, style) {\n var start = i;\n // Ensure there's a token end at the current position, and that i points at it\n while (at < end) {\n var i_end = st[i];\n if (i_end > end) {\n st.splice(i, 1, end, st[i + 1], i_end);\n }\n i += 2;\n at = Math.min(end, i_end);\n }\n if (!style) {\n return;\n }\n if (overlay.opaque) {\n st.splice(start, i - start, end, \"overlay \" + style);\n i = start + 2;\n } else {\n for (; start < i; start += 2) {\n var cur = st[start + 1];\n st[start + 1] = (cur ? cur + \" \" : \"\") + \"overlay \" + style;\n }\n }\n }, lineClasses);\n context.state = state;\n context.baseTokens = null;\n context.baseTokenPos = 1;\n };\n 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) {\n context.state = resetState;\n }\n line.stateAfter = context.save(!resetState);\n line.styles = result.styles;\n if (result.classes) {\n line.styleClasses = result.classes;\n } else if (line.styleClasses) {\n line.styleClasses = null;\n }\n if (updateFrontier === cm.doc.highlightFrontier) {\n cm.doc.modeFrontier = Math.max(cm.doc.modeFrontier, ++cm.doc.highlightFrontier);\n }\n }\n return line.styles;\n }\n function getContextBefore(cm, n, precise) {\n var doc = cm.doc,\n display = cm.display;\n if (!doc.mode.startState) {\n return new Context(doc, true, n);\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) {\n doc.modeFrontier = context.line;\n }\n return context;\n }\n\n // Lightweight form of highlight -- proceed over this line and\n // update state, but don't save a style array. Used for lines that\n // aren't currently visible.\n function processLine(cm, text, context, startAt) {\n var mode = cm.doc.mode;\n var stream = new StringStream(text, cm.options.tabSize, context);\n stream.start = stream.pos = startAt || 0;\n if (text == \"\") {\n callBlankLine(mode, context.state);\n }\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) {\n return mode.blankLine(state);\n }\n if (!mode.innerMode) {\n return;\n }\n var inner = innerMode(mode, state);\n if (inner.mode.blankLine) {\n return inner.mode.blankLine(inner.state);\n }\n }\n function readToken(mode, stream, state, inner) {\n for (var i = 0; i < 10; i++) {\n if (inner) {\n inner[0] = innerMode(mode, state).mode;\n }\n var style = mode.token(stream, state);\n if (stream.pos > stream.start) {\n return style;\n }\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\n // Utility for getTokenAt and getLineTokens\n function takeToken(cm, pos, precise, asArray) {\n var doc = cm.doc,\n mode = doc.mode,\n style;\n pos = clipPos(doc, pos);\n var line = getLine(doc, pos.line),\n context = getContextBefore(cm, pos.line, precise);\n var stream = new StringStream(line.text, cm.options.tabSize, context),\n tokens;\n if (asArray) {\n tokens = [];\n }\n while ((asArray || stream.pos < pos.ch) && !stream.eol()) {\n stream.start = stream.pos;\n style = readToken(mode, stream, context.state);\n if (asArray) {\n tokens.push(new Token(stream, style, copyState(doc.mode, context.state)));\n }\n }\n return asArray ? tokens : new Token(stream, style, context.state);\n }\n function extractLineClasses(type, output) {\n if (type) {\n for (;;) {\n var lineClass = type.match(/(?:^|\\s+)line-(background-)?(\\S+)/);\n if (!lineClass) {\n break;\n }\n type = type.slice(0, lineClass.index) + type.slice(lineClass.index + lineClass[0].length);\n var prop = lineClass[1] ? \"bgClass\" : \"textClass\";\n if (output[prop] == null) {\n output[prop] = lineClass[2];\n } else if (!new RegExp(\"(?:^|\\\\s)\" + lineClass[2] + \"(?:$|\\\\s)\").test(output[prop])) {\n output[prop] += \" \" + lineClass[2];\n }\n }\n }\n return type;\n }\n\n // Run the given mode's parser over a line, calling f for each token.\n function runMode(cm, text, mode, context, f, lineClasses, forceToEnd) {\n var flattenSpans = mode.flattenSpans;\n if (flattenSpans == null) {\n flattenSpans = cm.options.flattenSpans;\n }\n var curStart = 0,\n curStyle = null;\n var stream = new StringStream(text, cm.options.tabSize, context),\n style;\n var inner = cm.options.addModeClass && [null];\n if (text == \"\") {\n extractLineClasses(callBlankLine(mode, context.state), lineClasses);\n }\n while (!stream.eol()) {\n if (stream.pos > cm.options.maxHighlightLength) {\n flattenSpans = false;\n if (forceToEnd) {\n processLine(cm, text, context, stream.pos);\n }\n stream.pos = text.length;\n style = null;\n } else {\n style = extractLineClasses(readToken(mode, stream, context.state, inner), lineClasses);\n }\n if (inner) {\n var mName = inner[0].name;\n if (mName) {\n style = \"m-\" + (style ? mName + \" \" + style : mName);\n }\n }\n if (!flattenSpans || curStyle != style) {\n while (curStart < stream.start) {\n curStart = Math.min(stream.start, curStart + 5000);\n f(curStart, curStyle);\n }\n curStyle = style;\n }\n stream.start = stream.pos;\n }\n while (curStart < stream.pos) {\n // Webkit seems to refuse to render text nodes longer than 57444\n // characters, and returns inaccurate measurements in nodes\n // starting around 5000 chars.\n var pos = Math.min(stream.pos, curStart + 5000);\n f(pos, curStyle);\n curStart = pos;\n }\n }\n\n // Finds the line to start with when starting a parse. Tries to\n // find a line with a stateAfter, so that it can start with a\n // valid state. If that fails, it returns the line with the\n // smallest indentation, which tends to need the least context to\n // parse correctly.\n function findStartLine(cm, n, precise) {\n var minindent,\n minline,\n 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) {\n return doc.first;\n }\n var line = getLine(doc, search - 1),\n after = line.stateAfter;\n if (after && (!precise || search + (after instanceof SavedContext ? after.lookAhead : 0) <= doc.modeFrontier)) {\n return search;\n }\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) {\n return;\n }\n var start = doc.first;\n for (var line = n - 1; line > start; line--) {\n var saved = getLine(doc, line).stateAfter;\n // change is on 3\n // state on line 1 looked ahead 2 -- so saw 3\n // test 1 + 2 < 3 should cover this\n if (saved && (!(saved instanceof SavedContext) || line + saved.lookAhead < n)) {\n start = line + 1;\n break;\n }\n }\n doc.highlightFrontier = Math.min(doc.highlightFrontier, start);\n }\n\n // Optimize some code when these features are not used.\n var sawReadOnlySpans = false,\n sawCollapsedSpans = false;\n function seeReadOnlySpans() {\n sawReadOnlySpans = true;\n }\n function seeCollapsedSpans() {\n sawCollapsedSpans = true;\n }\n\n // TEXTMARKER SPANS\n\n function MarkedSpan(marker, from, to) {\n this.marker = marker;\n this.from = from;\n this.to = to;\n }\n\n // Search an array of spans for a span matching the given marker.\n function getMarkedSpanFor(spans, marker) {\n if (spans) {\n for (var i = 0; i < spans.length; ++i) {\n var span = spans[i];\n if (span.marker == marker) {\n return span;\n }\n }\n }\n }\n\n // Remove a span from an array, returning undefined if no spans are\n // left (we don't store arrays for lines without spans).\n function removeMarkedSpan(spans, span) {\n var r;\n for (var i = 0; i < spans.length; ++i) {\n if (spans[i] != span) {\n (r || (r = [])).push(spans[i]);\n }\n }\n return r;\n }\n\n // Add a span to a line.\n function addMarkedSpan(line, span, op) {\n var inThisOp = op && window.WeakSet && (op.markedSpans || (op.markedSpans = new WeakSet()));\n if (inThisOp && line.markedSpans && inThisOp.has(line.markedSpans)) {\n line.markedSpans.push(span);\n } else {\n line.markedSpans = line.markedSpans ? line.markedSpans.concat([span]) : [span];\n if (inThisOp) {\n inThisOp.add(line.markedSpans);\n }\n }\n span.marker.attachLine(line);\n }\n\n // Used for the algorithm that adjusts markers for a change in the\n // document. These functions cut an array of spans at a given\n // character position, returning an array of remaining chunks (or\n // undefined if nothing remains).\n function markedSpansBefore(old, startCh, isInsert) {\n var nw;\n if (old) {\n for (var i = 0; i < old.length; ++i) {\n var span = old[i],\n 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 }\n return nw;\n }\n function markedSpansAfter(old, endCh, isInsert) {\n var nw;\n if (old) {\n for (var i = 0; i < old.length; ++i) {\n var span = old[i],\n 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 }\n return nw;\n }\n\n // Given a change object, compute the new set of marker spans that\n // cover the line in which the change took place. Removes spans\n // entirely within the change, reconnects spans belonging to the\n // same marker that appear on both sides of the change, and cuts off\n // spans partially within the change. Returns an array of span\n // arrays with one element for each line in (after) the change.\n function stretchSpansOverChange(doc, change) {\n if (change.full) {\n return null;\n }\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) {\n return null;\n }\n var startCh = change.from.ch,\n endCh = change.to.ch,\n isInsert = cmp(change.from, change.to) == 0;\n // Get the spans that 'stick out' on both sides\n var first = markedSpansBefore(oldFirst, startCh, isInsert);\n var last = markedSpansAfter(oldLast, endCh, isInsert);\n\n // Next, merge those two ends\n var sameLine = change.text.length == 1,\n offset = lst(change.text).length + (sameLine ? startCh : 0);\n if (first) {\n // Fix up .to properties of first\n for (var i = 0; i < first.length; ++i) {\n var span = first[i];\n if (span.to == null) {\n var found = getMarkedSpanFor(last, span.marker);\n if (!found) {\n span.to = startCh;\n } else if (sameLine) {\n span.to = found.to == null ? null : found.to + offset;\n }\n }\n }\n }\n if (last) {\n // Fix up .from in last (or move them into first in case of sameLine)\n for (var i$1 = 0; i$1 < last.length; ++i$1) {\n var span$1 = last[i$1];\n if (span$1.to != null) {\n span$1.to += offset;\n }\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) {\n (first || (first = [])).push(span$1);\n }\n }\n } else {\n span$1.from += offset;\n if (sameLine) {\n (first || (first = [])).push(span$1);\n }\n }\n }\n }\n // Make sure we didn't create any zero-length spans\n if (first) {\n first = clearEmptySpans(first);\n }\n if (last && last != first) {\n last = clearEmptySpans(last);\n }\n var newMarkers = [first];\n if (!sameLine) {\n // Fill gap with whole-line-spans\n var gap = change.text.length - 2,\n gapMarkers;\n if (gap > 0 && first) {\n for (var i$2 = 0; i$2 < first.length; ++i$2) {\n if (first[i$2].to == null) {\n (gapMarkers || (gapMarkers = [])).push(new MarkedSpan(first[i$2].marker, null, null));\n }\n }\n }\n for (var i$3 = 0; i$3 < gap; ++i$3) {\n newMarkers.push(gapMarkers);\n }\n newMarkers.push(last);\n }\n return newMarkers;\n }\n\n // Remove spans that are empty and don't have a clearWhenEmpty\n // option of false.\n function clearEmptySpans(spans) {\n for (var i = 0; i < spans.length; ++i) {\n var span = spans[i];\n if (span.from != null && span.from == span.to && span.marker.clearWhenEmpty !== false) {\n spans.splice(i--, 1);\n }\n }\n if (!spans.length) {\n return null;\n }\n return spans;\n }\n\n // Used to 'clip' out readOnly ranges when making a change.\n function removeReadOnlyRanges(doc, from, to) {\n var markers = null;\n doc.iter(from.line, to.line + 1, function (line) {\n if (line.markedSpans) {\n for (var i = 0; i < line.markedSpans.length; ++i) {\n var mark = line.markedSpans[i].marker;\n if (mark.readOnly && (!markers || indexOf(markers, mark) == -1)) {\n (markers || (markers = [])).push(mark);\n }\n }\n }\n });\n if (!markers) {\n return null;\n }\n var parts = [{\n from: from,\n to: to\n }];\n for (var i = 0; i < markers.length; ++i) {\n var mk = markers[i],\n 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) {\n continue;\n }\n var newParts = [j, 1],\n dfrom = cmp(p.from, m.from),\n dto = cmp(p.to, m.to);\n if (dfrom < 0 || !mk.inclusiveLeft && !dfrom) {\n newParts.push({\n from: p.from,\n to: m.from\n });\n }\n if (dto > 0 || !mk.inclusiveRight && !dto) {\n newParts.push({\n from: m.to,\n to: p.to\n });\n }\n parts.splice.apply(parts, newParts);\n j += newParts.length - 3;\n }\n }\n return parts;\n }\n\n // Connect or disconnect spans from a line.\n function detachMarkedSpans(line) {\n var spans = line.markedSpans;\n if (!spans) {\n return;\n }\n for (var i = 0; i < spans.length; ++i) {\n spans[i].marker.detachLine(line);\n }\n line.markedSpans = null;\n }\n function attachMarkedSpans(line, spans) {\n if (!spans) {\n return;\n }\n for (var i = 0; i < spans.length; ++i) {\n spans[i].marker.attachLine(line);\n }\n line.markedSpans = spans;\n }\n\n // Helpers used when computing which overlapping collapsed span\n // counts as the larger one.\n function extraLeft(marker) {\n return marker.inclusiveLeft ? -1 : 0;\n }\n function extraRight(marker) {\n return marker.inclusiveRight ? 1 : 0;\n }\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) {\n return lenDiff;\n }\n var aPos = a.find(),\n bPos = b.find();\n var fromCmp = cmp(aPos.from, bPos.from) || extraLeft(a) - extraLeft(b);\n if (fromCmp) {\n return -fromCmp;\n }\n var toCmp = cmp(aPos.to, bPos.to) || extraRight(a) - extraRight(b);\n if (toCmp) {\n return toCmp;\n }\n return b.id - a.id;\n }\n\n // Find out whether a line ends or starts in a collapsed span. If\n // so, return the marker for that span.\n function collapsedSpanAtSide(line, start) {\n var sps = sawCollapsedSpans && line.markedSpans,\n found;\n if (sps) {\n 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)) {\n found = sp.marker;\n }\n }\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,\n found;\n if (sps) {\n 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)) {\n found = sp.marker;\n }\n }\n }\n return found;\n }\n\n // Test whether there exists a collapsed span that partially\n // overlaps (covers the start or end, but not both) of a new span.\n // Such overlap is not allowed.\n function conflictingCollapsedRange(doc, lineNo, from, to, marker) {\n var line = getLine(doc, lineNo);\n var sps = sawCollapsedSpans && line.markedSpans;\n if (sps) {\n for (var i = 0; i < sps.length; ++i) {\n var sp = sps[i];\n if (!sp.marker.collapsed) {\n continue;\n }\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) {\n continue;\n }\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)) {\n return true;\n }\n }\n }\n }\n\n // A visual line is a line as drawn on the screen. Folding, for\n // example, can cause multiple logical lines to appear on the same\n // visual line. This finds the start of the visual line that the\n // given line is part of (usually that is the line itself).\n function visualLine(line) {\n var merged;\n while (merged = collapsedSpanAtStart(line)) {\n line = merged.find(-1, true).line;\n }\n return line;\n }\n function visualLineEnd(line) {\n var merged;\n while (merged = collapsedSpanAtEnd(line)) {\n line = merged.find(1, true).line;\n }\n return line;\n }\n\n // Returns an array of logical lines that continue the visual line\n // started by the argument, or undefined if there are no such lines.\n function visualLineContinued(line) {\n var merged, lines;\n while (merged = collapsedSpanAtEnd(line)) {\n line = merged.find(1, true).line;\n (lines || (lines = [])).push(line);\n }\n return lines;\n }\n\n // Get the line number of the start of the visual line that the\n // given line number is part of.\n function visualLineNo(doc, lineN) {\n var line = getLine(doc, lineN),\n vis = visualLine(line);\n if (line == vis) {\n return lineN;\n }\n return lineNo(vis);\n }\n\n // Get the line number of the start of the next visual line after\n // the given line.\n function visualLineEndNo(doc, lineN) {\n if (lineN > doc.lastLine()) {\n return lineN;\n }\n var line = getLine(doc, lineN),\n merged;\n if (!lineIsHidden(doc, line)) {\n return lineN;\n }\n while (merged = collapsedSpanAtEnd(line)) {\n line = merged.find(1, true).line;\n }\n return lineNo(line) + 1;\n }\n\n // Compute whether a line is hidden. Lines count as hidden when they\n // are part of a visual line that starts with another line, or when\n // they are entirely covered by collapsed, non-widget span.\n function lineIsHidden(doc, line) {\n var sps = sawCollapsedSpans && line.markedSpans;\n if (sps) {\n for (var sp = void 0, i = 0; i < sps.length; ++i) {\n sp = sps[i];\n if (!sp.marker.collapsed) {\n continue;\n }\n if (sp.from == null) {\n return true;\n }\n if (sp.marker.widgetNode) {\n continue;\n }\n if (sp.from == 0 && sp.marker.inclusiveLeft && lineIsHiddenInner(doc, line, sp)) {\n return true;\n }\n }\n }\n }\n function lineIsHiddenInner(doc, line, span) {\n if (span.to == null) {\n var end = span.marker.find(1, true);\n return lineIsHiddenInner(doc, end.line, getMarkedSpanFor(end.line.markedSpans, span.marker));\n }\n if (span.marker.inclusiveRight && span.to == line.text.length) {\n return true;\n }\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)) {\n return true;\n }\n }\n }\n\n // Find the height above the given line.\n function heightAtLine(lineObj) {\n lineObj = visualLine(lineObj);\n var h = 0,\n chunk = lineObj.parent;\n for (var i = 0; i < chunk.lines.length; ++i) {\n var line = chunk.lines[i];\n if (line == lineObj) {\n break;\n } else {\n h += line.height;\n }\n }\n for (var p = chunk.parent; p; chunk = p, p = chunk.parent) {\n for (var i$1 = 0; i$1 < p.children.length; ++i$1) {\n var cur = p.children[i$1];\n if (cur == chunk) {\n break;\n } else {\n h += cur.height;\n }\n }\n }\n return h;\n }\n\n // Compute the character length of a line, taking into account\n // collapsed ranges (see markText) that might hide parts, and join\n // other lines onto it.\n function lineLength(line) {\n if (line.height == 0) {\n return 0;\n }\n var len = line.text.length,\n merged,\n cur = line;\n while (merged = collapsedSpanAtStart(cur)) {\n var found = merged.find(0, true);\n cur = found.from.line;\n len += found.from.ch - found.to.ch;\n }\n cur = line;\n while (merged = collapsedSpanAtEnd(cur)) {\n var found$1 = merged.find(0, true);\n len -= cur.text.length - found$1.from.ch;\n cur = found$1.to.line;\n len += cur.text.length - found$1.to.ch;\n }\n return len;\n }\n\n // Find the longest line in the document.\n function findMaxLine(cm) {\n var d = cm.display,\n doc = cm.doc;\n d.maxLine = getLine(doc, doc.first);\n d.maxLineLength = lineLength(d.maxLine);\n d.maxLineChanged = true;\n doc.iter(function (line) {\n var len = lineLength(line);\n if (len > d.maxLineLength) {\n d.maxLineLength = len;\n d.maxLine = line;\n }\n });\n }\n\n // LINE DATA STRUCTURE\n\n // Line objects. These hold state related to a line, including\n // highlighting info (the styles array).\n var Line = function (text, markedSpans, estimateHeight) {\n this.text = text;\n attachMarkedSpans(this, markedSpans);\n this.height = estimateHeight ? estimateHeight(this) : 1;\n };\n Line.prototype.lineNo = function () {\n return lineNo(this);\n };\n eventMixin(Line);\n\n // Change the content (text, markers) of a line. Automatically\n // invalidates cached information and tries to re-estimate the\n // line's height.\n function updateLine(line, text, markedSpans, estimateHeight) {\n line.text = text;\n if (line.stateAfter) {\n line.stateAfter = null;\n }\n if (line.styles) {\n line.styles = null;\n }\n if (line.order != null) {\n line.order = null;\n }\n detachMarkedSpans(line);\n attachMarkedSpans(line, markedSpans);\n var estHeight = estimateHeight ? estimateHeight(line) : 1;\n if (estHeight != line.height) {\n updateLineHeight(line, estHeight);\n }\n }\n\n // Detach a line from the document tree and its markers.\n function cleanUpLine(line) {\n line.parent = null;\n detachMarkedSpans(line);\n }\n\n // Convert a style as returned by a mode (either null, or a string\n // containing one or more styles) to a CSS style. This is cached,\n // and also looks for line-wide styles.\n var styleToClassCache = {},\n styleToClassCacheWithMode = {};\n function interpretTokenStyle(style, options) {\n if (!style || /^\\s*$/.test(style)) {\n return null;\n }\n var cache = options.addModeClass ? styleToClassCacheWithMode : styleToClassCache;\n return cache[style] || (cache[style] = style.replace(/\\S+/g, \"cm-$&\"));\n }\n\n // Render the DOM representation of the text of a line. Also builds\n // up a 'line map', which points at the DOM nodes that represent\n // specific stretches of text, and is used by the measuring code.\n // The returned object contains the DOM node, this map, and\n // information about line-wide styles that were set by the mode.\n function buildLineContent(cm, lineView) {\n // The padding-right forces the element to have a 'border', which\n // is needed on Webkit to be able to get line-level bounding\n // rectangles for it (in measureChar).\n var content = eltP(\"span\", null, null, webkit ? \"padding-right: .1px\" : null);\n var builder = {\n pre: eltP(\"pre\", [content], \"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\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,\n order = void 0;\n builder.pos = 0;\n builder.addToken = buildToken;\n // Optionally wire in some hacks into the token-rendering\n // algorithm, to deal with browser quirks.\n if (hasBadBidiRects(cm.display.measure) && (order = getOrder(line, cm.doc.direction))) {\n builder.addToken = buildTokenBadBidi(builder.addToken, order);\n }\n builder.map = [];\n var allowFrontierUpdate = lineView != cm.display.externalMeasured && lineNo(line);\n insertLineContent(line, builder, getLineStyles(cm, line, allowFrontierUpdate));\n if (line.styleClasses) {\n if (line.styleClasses.bgClass) {\n builder.bgClass = joinClasses(line.styleClasses.bgClass, builder.bgClass || \"\");\n }\n if (line.styleClasses.textClass) {\n builder.textClass = joinClasses(line.styleClasses.textClass, builder.textClass || \"\");\n }\n }\n\n // Ensure at least a single node is present, for measuring.\n if (builder.map.length == 0) {\n builder.map.push(0, 0, builder.content.appendChild(zeroWidthElement(cm.display.measure)));\n }\n\n // Store the map and a cache object for the current logical line\n if (i == 0) {\n lineView.measure.map = builder.map;\n lineView.measure.cache = {};\n } else {\n (lineView.measure.maps || (lineView.measure.maps = [])).push(builder.map);\n (lineView.measure.caches || (lineView.measure.caches = [])).push({});\n }\n }\n\n // See issue #2901\n if (webkit) {\n var last = builder.content.lastChild;\n if (/\\bcm-tab\\b/.test(last.className) || last.querySelector && last.querySelector(\".cm-tab\")) {\n builder.content.className = \"cm-tab-wrap-hack\";\n }\n }\n signal(cm, \"renderLine\", cm, lineView.line, builder.pre);\n if (builder.pre.className) {\n builder.textClass = joinClasses(builder.pre.className, builder.textClass || \"\");\n }\n return builder;\n }\n function defaultSpecialCharPlaceholder(ch) {\n var token = elt(\"span\", \"\\u2022\", \"cm-invalidchar\");\n token.title = \"\\\\u\" + ch.charCodeAt(0).toString(16);\n token.setAttribute(\"aria-label\", token.title);\n return token;\n }\n\n // Build up the DOM representation for a single token, and add it to\n // the line map. Takes care to render special characters separately.\n function buildToken(builder, text, style, startStyle, endStyle, css, attributes) {\n if (!text) {\n return;\n }\n var displayText = builder.splitSpaces ? splitSpaces(text, builder.trailingSpace) : text;\n var special = builder.cm.state.specialChars,\n 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) {\n mustWrap = true;\n }\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) {\n content.appendChild(elt(\"span\", [txt]));\n } else {\n content.appendChild(txt);\n }\n builder.map.push(builder.pos, builder.pos + skipped, txt);\n builder.col += skipped;\n builder.pos += skipped;\n }\n if (!m) {\n break;\n }\n pos += skipped + 1;\n var txt$1 = void 0;\n if (m[0] == \"\\t\") {\n var tabSize = builder.cm.options.tabSize,\n tabWidth = tabSize - builder.col % tabSize;\n txt$1 = content.appendChild(elt(\"span\", spaceStr(tabWidth), \"cm-tab\"));\n txt$1.setAttribute(\"role\", \"presentation\");\n txt$1.setAttribute(\"cm-text\", \"\\t\");\n builder.col += tabWidth;\n } else if (m[0] == \"\\r\" || m[0] == \"\\n\") {\n txt$1 = content.appendChild(elt(\"span\", m[0] == \"\\r\" ? \"\\u240d\" : \"\\u2424\", \"cm-invalidchar\"));\n txt$1.setAttribute(\"cm-text\", m[0]);\n builder.col += 1;\n } else {\n txt$1 = builder.cm.options.specialCharPlaceholder(m[0]);\n txt$1.setAttribute(\"cm-text\", m[0]);\n if (ie && ie_version < 9) {\n content.appendChild(elt(\"span\", [txt$1]));\n } else {\n content.appendChild(txt$1);\n }\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) {\n fullStyle += startStyle;\n }\n if (endStyle) {\n fullStyle += endStyle;\n }\n var token = elt(\"span\", [content], fullStyle, css);\n if (attributes) {\n for (var attr in attributes) {\n if (attributes.hasOwnProperty(attr) && attr != \"style\" && attr != \"class\") {\n token.setAttribute(attr, attributes[attr]);\n }\n }\n }\n return builder.content.appendChild(token);\n }\n builder.content.appendChild(content);\n }\n\n // Change some spaces to NBSP to prevent the browser from collapsing\n // trailing spaces at the end of a line when rendering text (issue #1362).\n function splitSpaces(text, trailingBefore) {\n if (text.length > 1 && !/ /.test(text)) {\n return text;\n }\n var spaceBefore = trailingBefore,\n result = \"\";\n for (var i = 0; i < text.length; i++) {\n var ch = text.charAt(i);\n if (ch == \" \" && spaceBefore && (i == text.length - 1 || text.charCodeAt(i + 1) == 32)) {\n ch = \"\\u00a0\";\n }\n result += ch;\n spaceBefore = ch == \" \";\n }\n return result;\n }\n\n // Work around nonsense dimensions being reported for stretches of\n // right-to-left text.\n function buildTokenBadBidi(inner, order) {\n return function (builder, text, style, startStyle, endStyle, css, attributes) {\n style = style ? style + \" cm-force-border\" : \"cm-force-border\";\n var start = builder.pos,\n 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) {\n break;\n }\n }\n if (part.to >= end) {\n return inner(builder, text, style, startStyle, endStyle, css, attributes);\n }\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) {\n builder.map.push(builder.pos, builder.pos + size, widget);\n }\n if (!ignoreWidget && builder.cm.display.input.needsContentAttribute) {\n if (!widget) {\n widget = builder.content.appendChild(document.createElement(\"span\"));\n }\n widget.setAttribute(\"cm-marker\", marker.id);\n }\n if (widget) {\n builder.cm.display.input.setUneditable(widget);\n builder.content.appendChild(widget);\n }\n builder.pos += size;\n builder.trailingSpace = false;\n }\n\n // Outputs a number of spans to make up a line, taking highlighting\n // and marked text into account.\n function insertLineContent(line, builder, styles) {\n var spans = line.markedSpans,\n allText = line.text,\n at = 0;\n if (!spans) {\n for (var i$1 = 1; i$1 < styles.length; i$1 += 2) {\n builder.addToken(builder, allText.slice(at, at = styles[i$1]), interpretTokenStyle(styles[i$1 + 1], builder.cm.options));\n }\n return;\n }\n var len = allText.length,\n pos = 0,\n i = 1,\n text = \"\",\n style,\n css;\n var nextChange = 0,\n spanStyle,\n spanEndStyle,\n spanStartStyle,\n collapsed,\n attributes;\n for (;;) {\n if (nextChange == pos) {\n // Update current marker set\n spanStyle = spanEndStyle = spanStartStyle = css = \"\";\n attributes = null;\n collapsed = null;\n nextChange = Infinity;\n var foundBookmarks = [],\n endStyles = void 0;\n for (var j = 0; j < spans.length; ++j) {\n var sp = spans[j],\n m = sp.marker;\n if (m.type == \"bookmark\" && sp.from == pos && m.widgetNode) {\n foundBookmarks.push(m);\n } else if (sp.from <= pos && (sp.to == null || sp.to > pos || m.collapsed && sp.to == pos && sp.from == pos)) {\n if (sp.to != null && sp.to != pos && nextChange > sp.to) {\n nextChange = sp.to;\n spanEndStyle = \"\";\n }\n if (m.className) {\n spanStyle += \" \" + m.className;\n }\n if (m.css) {\n css = (css ? css + \";\" : \"\") + m.css;\n }\n if (m.startStyle && sp.from == pos) {\n spanStartStyle += \" \" + m.startStyle;\n }\n if (m.endStyle && sp.to == nextChange) {\n (endStyles || (endStyles = [])).push(m.endStyle, sp.to);\n }\n // support for the old title property\n // https://github.com/codemirror/CodeMirror/pull/5673\n if (m.title) {\n (attributes || (attributes = {})).title = m.title;\n }\n if (m.attributes) {\n for (var attr in m.attributes) {\n (attributes || (attributes = {}))[attr] = m.attributes[attr];\n }\n }\n if (m.collapsed && (!collapsed || compareCollapsedMarkers(collapsed.marker, m) < 0)) {\n collapsed = sp;\n }\n } else if (sp.from > pos && nextChange > sp.from) {\n nextChange = sp.from;\n }\n }\n if (endStyles) {\n for (var j$1 = 0; j$1 < endStyles.length; j$1 += 2) {\n if (endStyles[j$1 + 1] == nextChange) {\n spanEndStyle += \" \" + endStyles[j$1];\n }\n }\n }\n if (!collapsed || collapsed.from == pos) {\n for (var j$2 = 0; j$2 < foundBookmarks.length; ++j$2) {\n buildCollapsedSpan(builder, 0, foundBookmarks[j$2]);\n }\n }\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) {\n return;\n }\n if (collapsed.to == pos) {\n collapsed = false;\n }\n }\n }\n if (pos >= len) {\n break;\n }\n var upto = Math.min(len, nextChange);\n while (true) {\n if (text) {\n var end = pos + text.length;\n if (!collapsed) {\n var tokenText = end > upto ? text.slice(0, upto - pos) : text;\n builder.addToken(builder, tokenText, style ? style + spanStyle : spanStyle, 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\n // These objects are used to represent the visible (currently drawn)\n // part of the document. A LineView may correspond to multiple\n // logical lines, if those are connected by collapsed ranges.\n function LineView(doc, line, lineN) {\n // The starting line\n this.line = line;\n // Continuing lines, if any\n this.rest = visualLineContinued(line);\n // Number of logical lines in this visual line\n this.size = this.rest ? lineNo(lst(this.rest)) - lineN + 1 : 1;\n this.node = this.text = null;\n this.hidden = lineIsHidden(doc, line);\n }\n\n // Create a range of LineView objects for the given lines.\n function buildViewArray(cm, from, to) {\n var array = [],\n 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) {\n operationGroup.ops.push(op);\n } else {\n op.ownsGroup = operationGroup = {\n ops: [op],\n delayedCallbacks: []\n };\n }\n }\n function fireCallbacksForOps(group) {\n // Calls delayed callbacks and cursorActivity handlers until no\n // new ones appear\n var callbacks = group.delayedCallbacks,\n i = 0;\n do {\n for (; i < callbacks.length; i++) {\n callbacks[i].call(null);\n }\n for (var j = 0; j < group.ops.length; j++) {\n var op = group.ops[j];\n if (op.cursorActivityHandlers) {\n while (op.cursorActivityCalled < op.cursorActivityHandlers.length) {\n op.cursorActivityHandlers[op.cursorActivityCalled++].call(null, op.cm);\n }\n }\n }\n } while (i < callbacks.length);\n }\n function finishOperation(op, endCb) {\n var group = op.ownsGroup;\n if (!group) {\n return;\n }\n try {\n fireCallbacksForOps(group);\n } finally {\n operationGroup = null;\n endCb(group);\n }\n }\n var orphanDelayedCallbacks = null;\n\n // Often, we want to signal events at a point where we are in the\n // middle of some work, but don't want the handler to start calling\n // other methods on the editor, which might be in an inconsistent\n // state or simply not expect any other events to happen.\n // signalLater looks whether there are any handlers, and schedules\n // them to be executed when the last operation ends, or, if no\n // operation is active, when a timeout fires.\n function signalLater(emitter, type /*, values...*/) {\n var arr = getHandlers(emitter, type);\n if (!arr.length) {\n return;\n }\n var args = Array.prototype.slice.call(arguments, 2),\n list;\n if (operationGroup) {\n list = operationGroup.delayedCallbacks;\n } else if (orphanDelayedCallbacks) {\n list = orphanDelayedCallbacks;\n } else {\n list = orphanDelayedCallbacks = [];\n setTimeout(fireOrphanDelayed, 0);\n }\n var loop = function (i) {\n list.push(function () {\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) {\n delayed[i]();\n }\n }\n\n // When an aspect of a line changes, a string is added to\n // lineView.changes. This updates the relevant part of the line's\n // DOM structure.\n function updateLineForChanges(cm, lineView, lineN, dims) {\n for (var j = 0; j < lineView.changes.length; j++) {\n var type = lineView.changes[j];\n if (type == \"text\") {\n updateLineText(cm, lineView);\n } else if (type == \"gutter\") {\n updateLineGutter(cm, lineView, lineN, dims);\n } else if (type == \"class\") {\n updateLineClasses(cm, lineView);\n } else if (type == \"widget\") {\n updateLineWidgets(cm, lineView, dims);\n }\n }\n lineView.changes = null;\n }\n\n // Lines with gutter elements, widgets or a background class need to\n // be wrapped, and have the extra elements added to the wrapper div\n function ensureLineWrapped(lineView) {\n if (lineView.node == lineView.text) {\n lineView.node = elt(\"div\", null, null, \"position: relative\");\n if (lineView.text.parentNode) {\n lineView.text.parentNode.replaceChild(lineView.node, lineView.text);\n }\n lineView.node.appendChild(lineView.text);\n if (ie && ie_version < 8) {\n lineView.node.style.zIndex = 2;\n }\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) {\n cls += \" CodeMirror-linebackground\";\n }\n if (lineView.background) {\n if (cls) {\n 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\n // Wrapper around buildLineContent which will reuse the structure\n // in display.externalMeasured when possible.\n function getLineContent(cm, lineView) {\n var ext = cm.display.externalMeasured;\n if (ext && ext.line == lineView.line) {\n cm.display.externalMeasured = null;\n lineView.measure = ext.measure;\n return ext.built;\n }\n return buildLineContent(cm, lineView);\n }\n\n // Redraw the line's text. Interacts with the background and text\n // classes because the mode may output tokens that influence these\n // classes.\n function updateLineText(cm, lineView) {\n var cls = lineView.text.className;\n var built = getLineContent(cm, lineView);\n if (lineView.text == lineView.node) {\n lineView.node = built.pre;\n }\n lineView.text.parentNode.replaceChild(built.pre, lineView.text);\n lineView.text = built.pre;\n if (built.bgClass != lineView.bgClass || built.textClass != lineView.textClass) {\n lineView.bgClass = built.bgClass;\n lineView.textClass = built.textClass;\n updateLineClasses(cm, lineView);\n } else if (cls) {\n lineView.text.className = cls;\n }\n }\n function updateLineClasses(cm, lineView) {\n updateLineBackground(cm, lineView);\n if (lineView.line.wrapClass) {\n ensureLineWrapped(lineView).className = lineView.line.wrapClass;\n } else if (lineView.node != lineView.text) {\n lineView.node.className = \"\";\n }\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) {\n gutterWrap.className += \" \" + lineView.line.gutterClass;\n }\n if (cm.options.lineNumbers && (!markers || !markers[\"CodeMirror-linenumbers\"])) {\n 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 }\n if (markers) {\n for (var k = 0; k < cm.display.gutterSpecs.length; ++k) {\n var id = cm.display.gutterSpecs[k].className,\n found = markers.hasOwnProperty(id) && markers[id];\n if (found) {\n gutterWrap.appendChild(elt(\"div\", [found], \"CodeMirror-gutter-elt\", \"left: \" + dims.gutterLeft[id] + \"px; width: \" + dims.gutterWidth[id] + \"px\"));\n }\n }\n }\n }\n }\n function updateLineWidgets(cm, lineView, dims) {\n if (lineView.alignable) {\n lineView.alignable = null;\n }\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)) {\n lineView.node.removeChild(node);\n }\n }\n insertLineWidgets(cm, lineView, dims);\n }\n\n // Build a line's DOM representation from scratch\n function buildLineElement(cm, lineView, lineN, dims) {\n var built = getLineContent(cm, lineView);\n lineView.text = lineView.node = built.pre;\n if (built.bgClass) {\n lineView.bgClass = built.bgClass;\n }\n if (built.textClass) {\n lineView.textClass = built.textClass;\n }\n updateLineClasses(cm, lineView);\n updateLineGutter(cm, lineView, lineN, dims);\n insertLineWidgets(cm, lineView, dims);\n return lineView.node;\n }\n\n // A lineView may contain multiple logical lines (when merged by\n // collapsed spans). The widgets for all of them need to be drawn.\n function insertLineWidgets(cm, lineView, dims) {\n insertLineWidgetsFor(cm, lineView.line, lineView, dims, true);\n if (lineView.rest) {\n for (var i = 0; i < lineView.rest.length; i++) {\n insertLineWidgetsFor(cm, lineView.rest[i], lineView, dims, false);\n }\n }\n }\n function insertLineWidgetsFor(cm, line, lineView, dims, allowAbove) {\n if (!line.widgets) {\n return;\n }\n var wrap = ensureLineWrapped(lineView);\n for (var i = 0, ws = line.widgets; i < ws.length; ++i) {\n var widget = ws[i],\n node = elt(\"div\", [widget.node], \"CodeMirror-linewidget\" + (widget.className ? \" \" + widget.className : \"\"));\n if (!widget.handleMouseEvents) {\n node.setAttribute(\"cm-ignore-events\", \"true\");\n }\n positionLineWidget(widget, node, lineView, dims);\n cm.display.input.setUneditable(node);\n if (allowAbove && widget.above) {\n wrap.insertBefore(node, lineView.gutter || lineView.text);\n } else {\n wrap.appendChild(node);\n }\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) {\n node.style.marginLeft = -dims.gutterTotalWidth + \"px\";\n }\n }\n }\n function widgetHeight(widget) {\n if (widget.height != null) {\n return widget.height;\n }\n var cm = widget.doc.cm;\n if (!cm) {\n return 0;\n }\n if (!contains(document.body, widget.node)) {\n var parentStyle = \"position: relative;\";\n if (widget.coverGutter) {\n parentStyle += \"margin-left: -\" + cm.display.gutters.offsetWidth + \"px;\";\n }\n if (widget.noHScroll) {\n parentStyle += \"width: \" + cm.display.wrapper.clientWidth + \"px;\";\n }\n removeChildrenAndAdd(cm.display.measure, elt(\"div\", [widget.node], null, parentStyle));\n }\n return widget.height = widget.node.parentNode.offsetHeight;\n }\n\n // Return true when the given mouse event happened in a widget\n function eventInWidget(display, e) {\n for (var n = e_target(e); n != display.wrapper; n = n.parentNode) {\n if (!n || n.nodeType == 1 && n.getAttribute(\"cm-ignore-events\") == \"true\" || n.parentNode == display.sizer && n != display.mover) {\n return true;\n }\n }\n }\n\n // POSITION MEASUREMENT\n\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) {\n return display.cachedPaddingH;\n }\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)) {\n display.cachedPaddingH = data;\n }\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\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],\n next = rects[i + 1];\n if (Math.abs(cur.bottom - next.bottom) > 2) {\n heights.push((cur.bottom + next.top) / 2 - rect.top);\n }\n }\n }\n heights.push(rect.bottom - rect.top);\n }\n }\n\n // Find a line map (mapping character offsets to text nodes) and a\n // measurement cache for the given line number. (A line view might\n // contain multiple lines when collapsed ranges are present.)\n function mapFromLineView(lineView, line, lineN) {\n if (lineView.line == line) {\n return {\n map: lineView.measure.map,\n cache: lineView.measure.cache\n };\n }\n if (lineView.rest) {\n for (var i = 0; i < lineView.rest.length; i++) {\n if (lineView.rest[i] == line) {\n return {\n map: lineView.measure.maps[i],\n cache: lineView.measure.caches[i]\n };\n }\n }\n for (var i$1 = 0; i$1 < lineView.rest.length; i$1++) {\n if (lineNo(lineView.rest[i$1]) > lineN) {\n return {\n map: lineView.measure.maps[i$1],\n cache: lineView.measure.caches[i$1],\n before: true\n };\n }\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\n // Get a {top, bottom, left, right} box (in line-local coordinates)\n // for a given character.\n function measureChar(cm, line, ch, bias) {\n return measureCharPrepared(cm, prepareMeasureForLine(cm, line), ch, bias);\n }\n\n // Find a line view that corresponds to the given line number.\n function findViewForLine(cm, lineN) {\n if (lineN >= cm.display.viewFrom && lineN < cm.display.viewTo) {\n return cm.display.view[findViewIndex(cm, lineN)];\n }\n var ext = cm.display.externalMeasured;\n if (ext && lineN >= ext.lineN && lineN < ext.lineN + ext.size) {\n return ext;\n }\n }\n\n // Measurement can be split in two steps, the set-up work that\n // applies to the whole line, and the measurement of the actual\n // character. Functions like coordsChar, that need to do a lot of\n // measurements in a row, can thus ensure that the set-up work is\n // only done once.\n function prepareMeasureForLine(cm, line) {\n var lineN = lineNo(line);\n var view = findViewForLine(cm, lineN);\n if (view && !view.text) {\n view = null;\n } else if (view && view.changes) {\n updateLineForChanges(cm, view, lineN, getDimensions(cm));\n cm.curOp.forceUpdate = true;\n }\n if (!view) {\n view = updateExternalMeasurement(cm, line);\n }\n var info = mapFromLineView(view, line, lineN);\n return {\n line: line,\n view: view,\n rect: null,\n map: info.map,\n cache: info.cache,\n before: info.before,\n hasHeights: false\n };\n }\n\n // Given a prepared measurement object, measures the position of an\n // actual character (or fetches it from the cache).\n function measureCharPrepared(cm, prepared, ch, bias, varHeight) {\n if (prepared.before) {\n ch = -1;\n }\n var key = ch + (bias || \"\"),\n found;\n if (prepared.cache.hasOwnProperty(key)) {\n found = prepared.cache[key];\n } else {\n if (!prepared.rect) {\n prepared.rect = prepared.view.text.getBoundingClientRect();\n }\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) {\n prepared.cache[key] = found;\n }\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) {\n collapse = \"right\";\n }\n }\n if (start != null) {\n node = map[i + 2];\n if (mStart == mEnd && bias == (node.insertLeft ? \"left\" : \"right\")) {\n collapse = bias;\n }\n if (bias == \"left\" && start == 0) {\n while (i && map[i - 2] == map[i - 3] && map[i - 1].insertLeft) {\n node = map[(i -= 3) + 2];\n collapse = \"left\";\n }\n }\n if (bias == \"right\" && start == mEnd - mStart) {\n while (i < map.length - 3 && map[i + 3] == map[i + 4] && !map[i + 5].insertLeft) {\n node = map[(i += 3) + 2];\n collapse = \"right\";\n }\n }\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\") {\n for (var i = 0; i < rects.length; i++) {\n if ((rect = rects[i]).left != rect.right) {\n break;\n }\n }\n } else {\n for (var i$1 = rects.length - 1; i$1 >= 0; i$1--) {\n if ((rect = rects[i$1]).left != rect.right) {\n break;\n }\n }\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,\n start = place.start,\n end = place.end,\n collapse = place.collapse;\n var rect;\n if (node.nodeType == 3) {\n // If it is a text node, use a range to retrieve the coordinates.\n for (var i$1 = 0; i$1 < 4; i$1++) {\n // Retry a maximum of 4 times when nonsense rectangles are returned\n while (start && isExtendingChar(prepared.line.text.charAt(place.coverStart + start))) {\n --start;\n }\n while (place.coverStart + end < place.coverEnd && isExtendingChar(prepared.line.text.charAt(place.coverStart + end))) {\n ++end;\n }\n if (ie && ie_version < 9 && start == 0 && end == place.coverEnd - place.coverStart) {\n rect = node.parentNode.getBoundingClientRect();\n } else {\n rect = getUsefulRect(range(node, start, end).getClientRects(), bias);\n }\n if (rect.left || rect.right || start == 0) {\n break;\n }\n end = start;\n start = start - 1;\n collapse = \"right\";\n }\n if (ie && ie_version < 11) {\n rect = maybeUpdateRectForZooming(cm.display.measure, rect);\n }\n } else {\n // If it is a widget, simply get the box for the whole widget.\n if (start > 0) {\n collapse = bias = \"right\";\n }\n var rects;\n if (cm.options.lineWrapping && (rects = node.getClientRects()).length > 1) {\n rect = rects[bias == \"right\" ? rects.length - 1 : 0];\n } else {\n rect = node.getBoundingClientRect();\n }\n }\n if (ie && ie_version < 9 && !start && (!rect || !rect.left && !rect.right)) {\n var rSpan = node.parentNode.getClientRects()[0];\n if (rSpan) {\n rect = {\n left: rSpan.left,\n right: rSpan.left + charWidth(cm.display),\n top: rSpan.top,\n bottom: rSpan.bottom\n };\n } else {\n rect = nullRect;\n }\n }\n var rtop = rect.top - prepared.rect.top,\n 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]) {\n break;\n }\n }\n var top = i ? heights[i - 1] : 0,\n 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) {\n result.bogus = true;\n }\n if (!cm.options.singleCursorHeightPerLine) {\n result.rtop = rtop;\n result.rbottom = rbot;\n }\n return result;\n }\n\n // Work around problem with bounding client rects on ranges being\n // returned incorrectly when zoomed on IE10 and below.\n function maybeUpdateRectForZooming(measure, rect) {\n if (!window.screen || screen.logicalXDPI == null || screen.logicalXDPI == screen.deviceXDPI || !hasBadZoomedRects(measure)) {\n return rect;\n }\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) {\n for (var i = 0; i < lineView.rest.length; i++) {\n lineView.measure.caches[i] = {};\n }\n }\n }\n }\n function clearLineMeasurementCache(cm) {\n cm.display.externalMeasure = null;\n removeChildren(cm.display.lineMeasure);\n for (var i = 0; i < cm.display.view.length; i++) {\n clearLineMeasurementCacheFor(cm.display.view[i]);\n }\n }\n function clearCaches(cm) {\n clearLineMeasurementCache(cm);\n cm.display.cachedCharWidth = cm.display.cachedTextHeight = cm.display.cachedPaddingH = null;\n if (!cm.options.lineWrapping) {\n cm.display.maxLineChanged = true;\n }\n cm.display.lineNumChars = null;\n }\n function pageScrollX() {\n // Work around https://bugs.chromium.org/p/chromium/issues/detail?id=489206\n // which causes page_Offset and bounding client rects to use\n // different reference viewports and invalidate our calculations.\n if (chrome && android) {\n return -(document.body.getBoundingClientRect().left - parseInt(getComputedStyle(document.body).marginLeft));\n }\n return window.pageXOffset || (document.documentElement || document.body).scrollLeft;\n }\n function pageScrollY() {\n if (chrome && android) {\n return -(document.body.getBoundingClientRect().top - parseInt(getComputedStyle(document.body).marginTop));\n }\n return window.pageYOffset || (document.documentElement || document.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) {\n if (widgets[i].above) {\n height += widgetHeight(widgets[i]);\n }\n }\n }\n return height;\n }\n\n // Converts a {top, bottom, left, right} box from line-local\n // coordinates into another coordinate system. Context may be one of\n // \"line\", \"div\" (display.lineDiv), \"local\"./null (editor), \"window\",\n // or \"page\".\n function intoCoordSystem(cm, lineObj, rect, context, includeWidgets) {\n if (!includeWidgets) {\n var height = widgetTopHeight(lineObj);\n rect.top += height;\n rect.bottom += height;\n }\n if (context == \"line\") {\n return rect;\n }\n if (!context) {\n context = \"local\";\n }\n var yOff = heightAtLine(lineObj);\n if (context == \"local\") {\n yOff += paddingTop(cm.display);\n } else {\n yOff -= cm.display.viewOffset;\n }\n if (context == \"page\" || context == \"window\") {\n var lOff = cm.display.lineSpace.getBoundingClientRect();\n yOff += lOff.top + (context == \"window\" ? 0 : pageScrollY());\n var xOff = lOff.left + (context == \"window\" ? 0 : pageScrollX());\n rect.left += xOff;\n rect.right += xOff;\n }\n rect.top += yOff;\n rect.bottom += yOff;\n return rect;\n }\n\n // Coverts a box from \"div\" coords to another coordinate system.\n // Context may be \"window\", \"page\", \"div\", or \"local\"./null.\n function fromCoordSystem(cm, coords, context) {\n if (context == \"div\") {\n return coords;\n }\n var left = coords.left,\n top = coords.top;\n // First move into \"page\" coordinate system\n if (context == \"page\") {\n left -= pageScrollX();\n top -= pageScrollY();\n } else if (context == \"local\" || !context) {\n var localBox = cm.display.sizer.getBoundingClientRect();\n left += localBox.left;\n top += localBox.top;\n }\n 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) {\n lineObj = getLine(cm.doc, pos.line);\n }\n return intoCoordSystem(cm, lineObj, measureChar(cm, lineObj, pos.ch, bias), context);\n }\n\n // Returns a box for a given cursor position, which may have an\n // 'other' property containing the position of the secondary cursor\n // on a bidi boundary.\n // A cursor Pos(line, char, \"before\") is on the same visual line as `char - 1`\n // and after `char - 1` in writing order of `char - 1`\n // A cursor Pos(line, char, \"after\") is on the same visual line as `char`\n // and before `char` in writing order of `char`\n // Examples (upper-case letters are RTL, lower-case are LTR):\n // Pos(0, 1, ...)\n // before after\n // ab a|b a|b\n // aB a|B aB|\n // Ab |Ab A|b\n // AB B|A B|A\n // Every position after the last character on a line is considered to stick\n // to the last character on the line.\n function cursorCoords(cm, pos, context, lineObj, preparedMeasure, varHeight) {\n lineObj = lineObj || getLine(cm.doc, pos.line);\n if (!preparedMeasure) {\n preparedMeasure = prepareMeasureForLine(cm, lineObj);\n }\n function get(ch, right) {\n var m = measureCharPrepared(cm, preparedMeasure, ch, right ? \"right\" : \"left\", varHeight);\n if (right) {\n m.left = m.right;\n } else {\n m.right = m.left;\n }\n return intoCoordSystem(cm, lineObj, m, context);\n }\n var order = getOrder(lineObj, cm.doc.direction),\n ch = pos.ch,\n 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) {\n return get(sticky == \"before\" ? ch - 1 : ch, sticky == \"before\");\n }\n function getBidi(ch, partPos, invert) {\n var part = order[partPos],\n 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) {\n val.other = getBidi(ch, other, sticky != \"before\");\n }\n return val;\n }\n\n // Used to cheaply estimate the coordinates for a position. Used for\n // intermediate scroll updates.\n function estimateCoords(cm, pos) {\n var left = 0;\n pos = clipPos(cm.doc, pos);\n if (!cm.options.lineWrapping) {\n left = charWidth(cm.display) * pos.ch;\n }\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\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) {\n pos.outside = outside;\n }\n return pos;\n }\n\n // Compute the character position closest to the given coordinates.\n // Input must be lineSpace-local (\"div\" coordinate system).\n function coordsChar(cm, x, y) {\n var doc = cm.doc;\n y += cm.display.viewOffset;\n if (y < 0) {\n return PosWithInfo(doc.first, 0, null, -1, -1);\n }\n var lineN = lineAtHeight(doc, y),\n last = doc.first + doc.size - 1;\n if (lineN > last) {\n return PosWithInfo(doc.first + doc.size - 1, getLine(doc, last).text.length, null, 1, 1);\n }\n if (x < 0) {\n x = 0;\n }\n var lineObj = getLine(doc, lineN);\n for (;;) {\n var found = coordsCharInner(cm, lineObj, lineN, x, y);\n var collapsed = collapsedSpanAround(lineObj, found.ch + (found.xRel > 0 || found.outside > 0 ? 1 : 0));\n if (!collapsed) {\n return found;\n }\n var rangeEnd = collapsed.find(1);\n if (rangeEnd.line == lineN) {\n return rangeEnd;\n }\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) {\n preparedMeasure = prepareMeasureForLine(cm, lineObj);\n }\n var targetTop = intoCoordSystem(cm, lineObj, measureCharPrepared(cm, preparedMeasure, target), \"line\").top;\n return wrappedLineExtent(cm, lineObj, preparedMeasure, targetTop);\n }\n\n // Returns true if the given side of a box is after the given\n // coordinates, in top-to-bottom, left-to-right order.\n function boxIsAfter(box, x, y, left) {\n return box.bottom <= y ? false : box.top > y ? true : (left ? box.left : box.right) > x;\n }\n 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,\n end = lineObj.text.length,\n 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\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,\n 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)) {\n return false;\n }\n if (box.top <= y && box.left <= x) {\n chAround = ch;\n boxAround = box;\n }\n return true;\n }, begin, end);\n var baseX,\n sticky,\n 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,\n 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)) {\n ch++;\n }\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],\n 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) {\n part = order[index - 1];\n }\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))) {\n end--;\n }\n var part = null,\n closestDist = null;\n for (var i = 0; i < order.length; i++) {\n var p = order[i];\n if (p.from >= end || p.to <= begin) {\n continue;\n }\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) {\n part = order[order.length - 1];\n }\n // Clip the part to the wrapped line.\n if (part.from < begin) {\n part = {\n from: begin,\n to: part.to,\n level: part.level\n };\n }\n if (part.to > end) {\n part = {\n from: part.from,\n to: end,\n level: part.level\n };\n }\n return part;\n }\n var measureText;\n // Compute the default text height.\n function textHeight(display) {\n if (display.cachedTextHeight != null) {\n return display.cachedTextHeight;\n }\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) {\n display.cachedTextHeight = height;\n }\n removeChildren(display.measure);\n return height || 1;\n }\n\n // Compute the default character width.\n function charWidth(display) {\n if (display.cachedCharWidth != null) {\n return display.cachedCharWidth;\n }\n var anchor = elt(\"span\", \"xxxxxxxxxx\");\n var pre = elt(\"pre\", [anchor], \"CodeMirror-line-like\");\n removeChildrenAndAdd(display.measure, pre);\n var rect = anchor.getBoundingClientRect(),\n width = (rect.right - rect.left) / 10;\n if (width > 2) {\n display.cachedCharWidth = width;\n }\n return width || 10;\n }\n\n // Do a bulk-read of the DOM positions and sizes needed to draw the\n // view, so that we don't interleave reading and writing to the DOM.\n function getDimensions(cm) {\n var d = cm.display,\n left = {},\n 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\n // Computes display.scroller.scrollLeft + display.gutters.offsetWidth,\n // but using getBoundingClientRect to get a sub-pixel-accurate\n // result.\n function compensateForHScroll(display) {\n return display.scroller.getBoundingClientRect().left - display.sizer.getBoundingClientRect().left;\n }\n\n // Returns a function that estimates the height of a line, to use as\n // first approximation until the line becomes visible (and is thus\n // properly measurable).\n function estimateHeight(cm) {\n var th = textHeight(cm.display),\n 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)) {\n return 0;\n }\n var widgetsHeight = 0;\n if (line.widgets) {\n for (var i = 0; i < line.widgets.length; i++) {\n if (line.widgets[i].height) {\n widgetsHeight += line.widgets[i].height;\n }\n }\n }\n if (wrapping) {\n return widgetsHeight + (Math.ceil(line.text.length / perLine) || 1) * th;\n } else {\n return widgetsHeight + th;\n }\n };\n }\n function estimateLineHeights(cm) {\n var doc = cm.doc,\n est = estimateHeight(cm);\n doc.iter(function (line) {\n var estHeight = est(line);\n if (estHeight != line.height) {\n updateLineHeight(line, estHeight);\n }\n });\n }\n\n // Given a mouse event, find the corresponding position. If liberal\n // is false, it checks whether a gutter or scrollbar was clicked,\n // and returns null if it was. forRect is used by rectangular\n // selections, and tries to estimate a character position even for\n // coordinates beyond the right of the text.\n function posFromMouse(cm, e, liberal, forRect) {\n var display = cm.display;\n if (!liberal && e_target(e).getAttribute(\"cm-not-content\") == \"true\") {\n return null;\n }\n var x,\n y,\n 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),\n line;\n if (forRect && coords.xRel > 0 && (line = getLine(cm.doc, coords.line).text).length == coords.ch) {\n var colDiff = countColumn(line, line.length, cm.options.tabSize) - line.length;\n coords = Pos(coords.line, Math.max(0, Math.round((x - paddingH(cm.display).left) / charWidth(cm.display)) - colDiff));\n }\n return coords;\n }\n\n // Find the view element corresponding to a given line. Return null\n // when the line isn't visible.\n function findViewIndex(cm, n) {\n if (n >= cm.display.viewTo) {\n return null;\n }\n n -= cm.display.viewFrom;\n if (n < 0) {\n return null;\n }\n var view = cm.display.view;\n for (var i = 0; i < view.length; i++) {\n n -= view[i].size;\n if (n < 0) {\n return i;\n }\n }\n }\n\n // Updates the display.view data structure for a given change to the\n // document. From and to are in pre-change coordinates. Lendiff is\n // the amount of lines added or subtracted by the change. This is\n // used for changes that span multiple lines, or change the way\n // lines are divided into visual lines. regLineChange (below)\n // registers single-line changes.\n function regChange(cm, from, to, lendiff) {\n if (from == null) {\n from = cm.doc.first;\n }\n if (to == null) {\n to = cm.doc.first + cm.doc.size;\n }\n if (!lendiff) {\n lendiff = 0;\n }\n var display = cm.display;\n if (lendiff && to < display.viewTo && (display.updateLineNumbers == null || display.updateLineNumbers > from)) {\n display.updateLineNumbers = from;\n }\n cm.curOp.viewChanged = true;\n if (from >= display.viewTo) {\n // Change after\n if (sawCollapsedSpans && visualLineNo(cm.doc, from) < display.viewTo) {\n resetView(cm);\n }\n } else if (to <= display.viewFrom) {\n // Change before\n if (sawCollapsedSpans && visualLineEndNo(cm.doc, to + lendiff) > display.viewFrom) {\n resetView(cm);\n } else {\n display.viewFrom += lendiff;\n display.viewTo += lendiff;\n }\n } else if (from <= display.viewFrom && to >= display.viewTo) {\n // Full overlap\n resetView(cm);\n } else if (from <= display.viewFrom) {\n // Top overlap\n var cut = viewCuttingPoint(cm, to, to + lendiff, 1);\n if (cut) {\n display.view = display.view.slice(cut.index);\n display.viewFrom = cut.lineN;\n display.viewTo += lendiff;\n } else {\n resetView(cm);\n }\n } else if (to >= display.viewTo) {\n // Bottom overlap\n var cut$1 = viewCuttingPoint(cm, from, from, -1);\n if (cut$1) {\n display.view = display.view.slice(0, cut$1.index);\n display.viewTo = cut$1.lineN;\n } else {\n resetView(cm);\n }\n } else {\n // Gap in the middle\n var cutTop = viewCuttingPoint(cm, from, from, -1);\n var cutBot = viewCuttingPoint(cm, to, to + lendiff, 1);\n if (cutTop && cutBot) {\n display.view = display.view.slice(0, cutTop.index).concat(buildViewArray(cm, cutTop.lineN, cutBot.lineN)).concat(display.view.slice(cutBot.index));\n display.viewTo += lendiff;\n } else {\n resetView(cm);\n }\n }\n var ext = display.externalMeasured;\n if (ext) {\n if (to < ext.lineN) {\n ext.lineN += lendiff;\n } else if (from < ext.lineN + ext.size) {\n display.externalMeasured = null;\n }\n }\n }\n\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,\n ext = cm.display.externalMeasured;\n if (ext && line >= ext.lineN && line < ext.lineN + ext.size) {\n display.externalMeasured = null;\n }\n if (line < display.viewFrom || line >= display.viewTo) {\n return;\n }\n var lineView = display.view[findViewIndex(cm, line)];\n if (lineView.node == null) {\n return;\n }\n var arr = lineView.changes || (lineView.changes = []);\n if (indexOf(arr, type) == -1) {\n arr.push(type);\n }\n }\n\n // Clear the view.\n function resetView(cm) {\n cm.display.viewFrom = cm.display.viewTo = cm.doc.first;\n cm.display.view = [];\n cm.display.viewOffset = 0;\n }\n function viewCuttingPoint(cm, oldN, newN, dir) {\n var index = findViewIndex(cm, oldN),\n diff,\n view = cm.display.view;\n if (!sawCollapsedSpans || newN == cm.doc.first + cm.doc.size) {\n return {\n index: index,\n lineN: newN\n };\n }\n var n = cm.display.viewFrom;\n for (var i = 0; i < index; i++) {\n n += view[i].size;\n }\n if (n != oldN) {\n if (dir > 0) {\n if (index == view.length - 1) {\n return null;\n }\n diff = n + view[index].size - oldN;\n index++;\n } else {\n diff = n - oldN;\n }\n oldN += diff;\n newN += diff;\n }\n while (visualLineNo(cm.doc, newN) != newN) {\n if (index == (dir < 0 ? 0 : view.length - 1)) {\n return null;\n }\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\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,\n view = display.view;\n if (view.length == 0 || from >= display.viewTo || to <= display.viewFrom) {\n display.view = buildViewArray(cm, from, to);\n display.viewFrom = from;\n } else {\n if (display.viewFrom > from) {\n display.view = buildViewArray(cm, from, display.viewFrom).concat(display.view);\n } else if (display.viewFrom < from) {\n display.view = display.view.slice(findViewIndex(cm, from));\n }\n display.viewFrom = from;\n if (display.viewTo < to) {\n display.view = display.view.concat(buildViewArray(cm, display.viewTo, to));\n } else if (display.viewTo > to) {\n display.view = display.view.slice(0, findViewIndex(cm, to));\n }\n }\n display.viewTo = to;\n }\n\n // Count the number of lines in the view whose DOM representation is\n // out of date (or nonexistent).\n function countDirtyView(cm) {\n var view = cm.display.view,\n dirty = 0;\n for (var i = 0; i < view.length; i++) {\n var lineView = view[i];\n if (!lineView.hidden && (!lineView.node || lineView.changes)) {\n ++dirty;\n }\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,\n result = {};\n var curFragment = result.cursors = document.createDocumentFragment();\n var selFragment = result.selection = document.createDocumentFragment();\n var customCursor = cm.options.$customCursor;\n if (customCursor) {\n primary = true;\n }\n for (var i = 0; i < doc.sel.ranges.length; i++) {\n if (!primary && i == doc.sel.primIndex) {\n continue;\n }\n var range = doc.sel.ranges[i];\n if (range.from().line >= cm.display.viewTo || range.to().line < cm.display.viewFrom) {\n continue;\n }\n var collapsed = range.empty();\n if (customCursor) {\n var head = customCursor(cm, range);\n if (head) {\n drawSelectionCursor(cm, head, curFragment);\n }\n } else if (collapsed || cm.options.showCursorWhenSelecting) {\n drawSelectionCursor(cm, range.head, curFragment);\n }\n if (!collapsed) {\n drawSelectionRange(cm, range, selFragment);\n }\n }\n return result;\n }\n\n // Draws a cursor for the given range\n function drawSelectionCursor(cm, head, output) {\n var pos = cursorCoords(cm, head, \"div\", null, null, !cm.options.singleCursorHeightPerLine);\n var cursor = output.appendChild(elt(\"div\", \"\\u00a0\", \"CodeMirror-cursor\"));\n cursor.style.left = pos.left + \"px\";\n cursor.style.top = pos.top + \"px\";\n cursor.style.height = Math.max(0, pos.bottom - pos.top) * cm.options.cursorHeight + \"px\";\n 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\", \"\\u00a0\", \"CodeMirror-cursor CodeMirror-secondarycursor\"));\n otherCursor.style.display = \"\";\n otherCursor.style.left = pos.other.left + \"px\";\n otherCursor.style.top = pos.other.top + \"px\";\n otherCursor.style.height = (pos.other.bottom - pos.other.top) * .85 + \"px\";\n }\n }\n function cmpCoords(a, b) {\n return a.top - b.top || a.left - b.left;\n }\n\n // Draws the given range as a highlighted selection\n function drawSelectionRange(cm, range, output) {\n var display = cm.display,\n doc = cm.doc;\n var fragment = document.createDocumentFragment();\n var padding = paddingH(cm.display),\n 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) {\n top = 0;\n }\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,\n openEnd = toArg == null && to == lineLen;\n var first = i == 0,\n last = !order || i == order.length - 1;\n if (toPos.top - fromPos.top <= 3) {\n // Single line\n var openLeft = (docLTR ? openStart : openEnd) && first;\n var openRight = (docLTR ? openEnd : openStart) && last;\n var left = openLeft ? leftSide : (ltr ? fromPos : toPos).left;\n var right = openRight ? rightSide : (ltr ? toPos : fromPos).right;\n add(left, fromPos.top, right - left, fromPos.bottom);\n } else {\n // Multiple lines\n var topLeft, topRight, botLeft, botRight;\n if (ltr) {\n topLeft = docLTR && openStart && first ? leftSide : fromPos.left;\n topRight = docLTR ? rightSide : wrapX(from, dir, \"before\");\n botLeft = docLTR ? leftSide : wrapX(to, dir, \"after\");\n botRight = docLTR && openEnd && last ? rightSide : toPos.right;\n } else {\n topLeft = !docLTR ? leftSide : wrapX(from, dir, \"before\");\n topRight = !docLTR && openStart && first ? rightSide : fromPos.right;\n botLeft = !docLTR && openEnd && last ? leftSide : toPos.left;\n botRight = !docLTR ? rightSide : wrapX(to, dir, \"after\");\n }\n add(topLeft, fromPos.top, topRight - topLeft, fromPos.bottom);\n if (fromPos.bottom < toPos.top) {\n add(leftSide, fromPos.bottom, null, toPos.top);\n }\n add(botLeft, toPos.top, botRight - botLeft, toPos.bottom);\n }\n if (!start || cmpCoords(fromPos, start) < 0) {\n start = fromPos;\n }\n if (cmpCoords(toPos, start) < 0) {\n start = toPos;\n }\n if (!end || cmpCoords(fromPos, end) < 0) {\n end = fromPos;\n }\n if (cmpCoords(toPos, end) < 0) {\n end = toPos;\n }\n });\n return {\n start: start,\n end: end\n };\n }\n var sFrom = range.from(),\n sTo = range.to();\n if (sFrom.line == sTo.line) {\n drawForLine(sFrom.line, sFrom.ch, sTo.ch);\n } else {\n var fromLine = getLine(doc, sFrom.line),\n toLine = getLine(doc, sTo.line);\n var singleVLine = visualLine(fromLine) == visualLine(toLine);\n var leftEnd = drawForLine(sFrom.line, sFrom.ch, singleVLine ? fromLine.text.length + 1 : null).end;\n var rightStart = drawForLine(sTo.line, singleVLine ? 0 : null, sTo.ch).start;\n if (singleVLine) {\n if (leftEnd.top < rightStart.top - 2) {\n add(leftEnd.right, leftEnd.top, null, leftEnd.bottom);\n add(leftSide, rightStart.top, rightStart.left, rightStart.bottom);\n } else {\n add(leftEnd.right, leftEnd.top, rightStart.left - leftEnd.right, leftEnd.bottom);\n }\n }\n if (leftEnd.bottom < rightStart.top) {\n add(leftSide, leftEnd.bottom, null, rightStart.top);\n }\n }\n output.appendChild(fragment);\n }\n\n // Cursor-blinking\n function restartBlink(cm) {\n if (!cm.state.focused) {\n return;\n }\n var display = cm.display;\n clearInterval(display.blinker);\n var on = true;\n display.cursorDiv.style.visibility = \"\";\n if (cm.options.cursorBlinkRate > 0) {\n display.blinker = setInterval(function () {\n if (!cm.hasFocus()) {\n onBlur(cm);\n }\n display.cursorDiv.style.visibility = (on = !on) ? \"\" : \"hidden\";\n }, cm.options.cursorBlinkRate);\n } else if (cm.options.cursorBlinkRate < 0) {\n display.cursorDiv.style.visibility = \"hidden\";\n }\n }\n function ensureFocus(cm) {\n if (!cm.hasFocus()) {\n cm.display.input.focus();\n if (!cm.state.focused) {\n onFocus(cm);\n }\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) {\n onBlur(cm);\n }\n }\n }, 100);\n }\n function onFocus(cm, e) {\n if (cm.state.delayingBlurEvent && !cm.state.draggingText) {\n cm.state.delayingBlurEvent = false;\n }\n if (cm.options.readOnly == \"nocursor\") {\n return;\n }\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) {\n 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) {\n return;\n }\n if (cm.state.focused) {\n signal(cm, \"blur\", cm, e);\n cm.state.focused = false;\n rmClass(cm.display.wrapper, \"CodeMirror-focused\");\n }\n clearInterval(cm.display.blinker);\n setTimeout(function () {\n if (!cm.state.focused) {\n cm.display.shift = false;\n }\n }, 150);\n }\n\n // Read the actual heights of the rendered lines, and update their\n // stored heights to match.\n function updateHeightsInViewport(cm) {\n var display = cm.display;\n var prevBottom = display.lineDiv.offsetTop;\n var viewTop = Math.max(0, display.scroller.getBoundingClientRect().top);\n var oldHeight = display.lineDiv.getBoundingClientRect().top;\n var mustScroll = 0;\n for (var i = 0; i < display.view.length; i++) {\n var cur = display.view[i],\n wrapping = cm.options.lineWrapping;\n var height = void 0,\n width = 0;\n if (cur.hidden) {\n continue;\n }\n oldHeight += cur.line.height;\n if (ie && ie_version < 8) {\n var bot = cur.node.offsetTop + cur.node.offsetHeight;\n height = bot - prevBottom;\n prevBottom = bot;\n } else {\n var box = cur.node.getBoundingClientRect();\n height = box.bottom - box.top;\n // Check that lines don't extend past the right of the current\n // editor width\n if (!wrapping && cur.text.firstChild) {\n width = cur.text.firstChild.getBoundingClientRect().right - box.left - 1;\n }\n }\n var diff = cur.line.height - height;\n if (diff > .005 || diff < -.005) {\n if (oldHeight < viewTop) {\n mustScroll -= diff;\n }\n updateLineHeight(cur.line, height);\n updateWidgetHeight(cur.line);\n if (cur.rest) {\n for (var j = 0; j < cur.rest.length; j++) {\n updateWidgetHeight(cur.rest[j]);\n }\n }\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) {\n display.scroller.scrollTop += mustScroll;\n }\n }\n\n // Read and store the height of line widgets associated with the\n // given line.\n function updateWidgetHeight(line) {\n if (line.widgets) {\n for (var i = 0; i < line.widgets.length; ++i) {\n var w = line.widgets[i],\n parent = w.node.parentNode;\n if (parent) {\n w.height = parent.offsetHeight;\n }\n }\n }\n }\n\n // Compute the lines that are visible in a given viewport (defaults\n // the the current scroll position). viewport may contain top,\n // height, and ensure (see op.scrollToPos) properties.\n function visibleLines(display, doc, viewport) {\n var top = viewport && viewport.top != null ? Math.max(0, viewport.top) : display.scroller.scrollTop;\n top = Math.floor(top - paddingTop(display));\n var bottom = viewport && viewport.bottom != null ? viewport.bottom : top + display.wrapper.clientHeight;\n var from = lineAtHeight(doc, top),\n 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,\n 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\n // SCROLLING THINGS INTO VIEW\n\n // If an editor sits on the top or bottom of the window, partially\n // scrolled out of view, this ensures that the cursor is visible.\n function maybeScrollWindow(cm, rect) {\n if (signalDOMEvent(cm, \"scrollCursorIntoView\")) {\n return;\n }\n var display = cm.display,\n box = display.sizer.getBoundingClientRect(),\n doScroll = null;\n if (rect.top + box.top < 0) {\n doScroll = true;\n } else if (rect.bottom + box.top > (window.innerHeight || document.documentElement.clientHeight)) {\n doScroll = false;\n }\n if (doScroll != null && !phantom) {\n var scrollNode = elt(\"div\", \"\\u200b\", null, \"position: absolute;\\n top: \" + (rect.top - display.viewOffset - paddingTop(cm.display)) + \"px;\\n height: \" + (rect.bottom - rect.top + scrollGap(cm) + display.barHeight) + \"px;\\n left: \" + rect.left + \"px; width: \" + Math.max(2, rect.right - rect.left) + \"px;\");\n cm.display.lineSpace.appendChild(scrollNode);\n scrollNode.scrollIntoView(doScroll);\n cm.display.lineSpace.removeChild(scrollNode);\n }\n }\n\n // Scroll a given position into view (immediately), verifying that\n // it actually became visible (as line heights are accurately\n // measured, the position of something may 'drift' during drawing).\n function scrollPosIntoView(cm, pos, end, margin) {\n if (margin == null) {\n margin = 0;\n }\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,\n startLeft = cm.doc.scrollLeft;\n if (scrollPos.scrollTop != null) {\n updateScrollTop(cm, scrollPos.scrollTop);\n if (Math.abs(cm.doc.scrollTop - startTop) > 1) {\n changed = true;\n }\n }\n if (scrollPos.scrollLeft != null) {\n setScrollLeft(cm, scrollPos.scrollLeft);\n if (Math.abs(cm.doc.scrollLeft - startLeft) > 1) {\n changed = true;\n }\n }\n if (!changed) {\n break;\n }\n }\n return rect;\n }\n\n // Scroll a given set of coordinates into view (immediately).\n function scrollIntoView(cm, rect) {\n var scrollPos = calculateScrollPos(cm, rect);\n if (scrollPos.scrollTop != null) {\n updateScrollTop(cm, scrollPos.scrollTop);\n }\n if (scrollPos.scrollLeft != null) {\n setScrollLeft(cm, scrollPos.scrollLeft);\n }\n }\n\n // Calculate a new scroll position needed to scroll the given\n // rectangle into view. Returns an object with scrollTop and\n // scrollLeft properties. When these are undefined, the\n // vertical/horizontal position does not need to be adjusted.\n function calculateScrollPos(cm, rect) {\n var display = cm.display,\n snapMargin = textHeight(cm.display);\n if (rect.top < 0) {\n rect.top = 0;\n }\n var screentop = cm.curOp && cm.curOp.scrollTop != null ? cm.curOp.scrollTop : display.scroller.scrollTop;\n var screen = displayHeight(cm),\n result = {};\n if (rect.bottom - rect.top > screen) {\n rect.bottom = rect.top + screen;\n }\n var docBottom = cm.doc.height + paddingVert(display);\n var atTop = rect.top < snapMargin,\n atBottom = rect.bottom > docBottom - snapMargin;\n if (rect.top < screentop) {\n result.scrollTop = atTop ? 0 : rect.top;\n } else if (rect.bottom > screentop + screen) {\n var newTop = Math.min(rect.top, (atBottom ? docBottom : rect.bottom) - screen);\n if (newTop != screentop) {\n result.scrollTop = newTop;\n }\n }\n var gutterSpace = cm.options.fixedGutter ? 0 : display.gutters.offsetWidth;\n var screenleft = cm.curOp && cm.curOp.scrollLeft != null ? cm.curOp.scrollLeft : display.scroller.scrollLeft - gutterSpace;\n var screenw = displayWidth(cm) - display.gutters.offsetWidth;\n var tooWide = rect.right - rect.left > screenw;\n if (tooWide) {\n rect.right = rect.left + screenw;\n }\n if (rect.left < 10) {\n result.scrollLeft = 0;\n } else if (rect.left < screenleft) {\n result.scrollLeft = Math.max(0, rect.left + gutterSpace - (tooWide ? 0 : 10));\n } else if (rect.right > screenw + screenleft - 3) {\n result.scrollLeft = rect.right + (tooWide ? 0 : 10) - screenw;\n }\n return result;\n }\n\n // Store a relative adjustment to the scroll position in the current\n // operation (to be applied when the operation finishes).\n function addToScrollTop(cm, top) {\n if (top == null) {\n return;\n }\n resolveScrollToPos(cm);\n cm.curOp.scrollTop = (cm.curOp.scrollTop == null ? cm.doc.scrollTop : cm.curOp.scrollTop) + top;\n }\n\n // Make sure that at the end of the operation the current cursor is\n // shown.\n function ensureCursorVisible(cm) {\n resolveScrollToPos(cm);\n var cur = cm.getCursor();\n cm.curOp.scrollToPos = {\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) {\n resolveScrollToPos(cm);\n }\n if (x != null) {\n cm.curOp.scrollLeft = x;\n }\n if (y != null) {\n cm.curOp.scrollTop = y;\n }\n }\n function scrollToRange(cm, range) {\n resolveScrollToPos(cm);\n cm.curOp.scrollToPos = range;\n }\n\n // When an operation has its scrollToPos property set, and another\n // scroll action is applied before the end of the operation, this\n // 'simulates' scrolling that position into view in a cheap way, so\n // that the effect of intermediate scroll commands is not ignored.\n function resolveScrollToPos(cm) {\n var range = cm.curOp.scrollToPos;\n if (range) {\n cm.curOp.scrollToPos = null;\n var from = estimateCoords(cm, range.from),\n 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\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) {\n return;\n }\n if (!gecko) {\n updateDisplaySimple(cm, {\n top: val\n });\n }\n setScrollTop(cm, val, true);\n if (gecko) {\n updateDisplaySimple(cm);\n }\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) {\n return;\n }\n cm.doc.scrollTop = val;\n cm.display.scrollbars.setScrollTop(val);\n if (cm.display.scroller.scrollTop != val) {\n cm.display.scroller.scrollTop = val;\n }\n }\n\n // Sync scroller and scrollbar, ensure the gutter elements are\n // aligned.\n function setScrollLeft(cm, val, isScroller, forceScroll) {\n val = Math.max(0, Math.min(val, cm.display.scroller.scrollWidth - cm.display.scroller.clientWidth));\n if ((isScroller ? val == cm.doc.scrollLeft : Math.abs(cm.doc.scrollLeft - val) < 2) && !forceScroll) {\n return;\n }\n cm.doc.scrollLeft = val;\n alignHorizontally(cm);\n if (cm.display.scroller.scrollLeft != val) {\n cm.display.scroller.scrollLeft = val;\n }\n cm.display.scrollbars.setScrollLeft(val);\n }\n\n // SCROLLBARS\n\n // Prepare DOM reads needed to update the scrollbars. Done in one\n // shot to minimize update/measure roundtrips.\n function measureForScrollbars(cm) {\n var d = cm.display,\n 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\", [elt(\"div\", null, null, \"min-width: 1px\")], \"CodeMirror-vscrollbar\");\n var horiz = this.horiz = elt(\"div\", [elt(\"div\", null, null, \"height: 100%; min-height: 1px\")], \"CodeMirror-hscrollbar\");\n vert.tabIndex = horiz.tabIndex = -1;\n place(vert);\n place(horiz);\n on(vert, \"scroll\", function () {\n if (vert.clientHeight) {\n scroll(vert.scrollTop, \"vertical\");\n }\n });\n on(horiz, \"scroll\", function () {\n if (horiz.clientWidth) {\n scroll(horiz.scrollLeft, \"horizontal\");\n }\n });\n this.checkedZeroWidth = false;\n // Need to set a minimum width to see the scrollbar on IE7 (but must not set it on IE8).\n if (ie && ie_version < 8) {\n this.horiz.style.minHeight = this.vert.style.minWidth = \"18px\";\n }\n };\n NativeScrollbars.prototype.update = function (measure) {\n var needsH = measure.scrollWidth > measure.clientWidth + 1;\n var needsV = measure.scrollHeight > measure.clientHeight + 1;\n var sWidth = measure.nativeBarWidth;\n 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) {\n this.zeroWidthHack();\n }\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) {\n this.horiz.scrollLeft = pos;\n }\n if (this.disableHoriz) {\n this.enableZeroWidthBar(this.horiz, this.disableHoriz, \"horiz\");\n }\n };\n NativeScrollbars.prototype.setScrollTop = function (pos) {\n if (this.vert.scrollTop != pos) {\n this.vert.scrollTop = pos;\n }\n if (this.disableVert) {\n this.enableZeroWidthBar(this.vert, this.disableVert, \"vert\");\n }\n };\n NativeScrollbars.prototype.zeroWidthHack = function () {\n var w = mac && !mac_geMountainLion ? \"12px\" : \"18px\";\n this.horiz.style.height = this.vert.style.width = w;\n this.horiz.style.pointerEvents = this.vert.style.pointerEvents = \"none\";\n this.disableHoriz = new Delayed();\n this.disableVert = new Delayed();\n };\n NativeScrollbars.prototype.enableZeroWidthBar = function (bar, delay, type) {\n bar.style.pointerEvents = \"auto\";\n function maybeDisable() {\n // To find out whether the scrollbar is still visible, we\n // check whether the element under the pixel in the bottom\n // right corner of the scrollbar box is the scrollbar box\n // itself (when the bar is still visible) or its filler child\n // (when the bar is hidden). If it is still visible, we keep\n // it enabled, if it's hidden, we disable pointer events.\n var box = bar.getBoundingClientRect();\n var elt = type == \"vert\" ? document.elementFromPoint(box.right - 1, (box.top + box.bottom) / 2) : document.elementFromPoint((box.right + box.left) / 2, box.bottom - 1);\n if (elt != bar) {\n bar.style.pointerEvents = \"none\";\n } else {\n delay.set(1000, maybeDisable);\n }\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) {\n measure = measureForScrollbars(cm);\n }\n var startWidth = cm.display.barWidth,\n startHeight = cm.display.barHeight;\n updateScrollbarsInner(cm, measure);\n for (var i = 0; i < 4 && startWidth != cm.display.barWidth || startHeight != cm.display.barHeight; i++) {\n if (startWidth != cm.display.barWidth && cm.options.lineWrapping) {\n updateHeightsInViewport(cm);\n }\n updateScrollbarsInner(cm, measureForScrollbars(cm));\n startWidth = cm.display.barWidth;\n startHeight = cm.display.barHeight;\n }\n }\n\n // Re-synchronize the fake scrollbars with the actual size of the\n // content.\n function updateScrollbarsInner(cm, measure) {\n var d = cm.display;\n var sizes = d.scrollbars.update(measure);\n 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 {\n d.scrollbarFiller.style.display = \"\";\n }\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 {\n d.gutterFiller.style.display = \"\";\n }\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) {\n rmClass(cm.display.wrapper, cm.display.scrollbars.addClass);\n }\n }\n cm.display.scrollbars = new scrollbarModel[cm.options.scrollbarStyle](function (node) {\n cm.display.wrapper.insertBefore(node, cm.display.scrollbarFiller);\n // Prevent clicks in the scrollbars from killing focus\n on(node, \"mousedown\", function () {\n if (cm.state.focused) {\n setTimeout(function () {\n return cm.display.input.focus();\n }, 0);\n }\n });\n node.setAttribute(\"cm-not-content\", \"true\");\n }, function (pos, axis) {\n if (axis == \"horizontal\") {\n setScrollLeft(cm, pos);\n } else {\n updateScrollTop(cm, pos);\n }\n }, cm);\n if (cm.display.scrollbars.addClass) {\n addClass(cm.display.wrapper, cm.display.scrollbars.addClass);\n }\n }\n\n // Operations are used to wrap a series of changes to the editor\n // state in such a way that each change won't have to update the\n // cursor and display (which would be awkward, slow, and\n // error-prone). Instead, display updates are batched and then all\n // combined and executed at once.\n\n var nextOpId = 0;\n // Start a new operation.\n function startOperation(cm) {\n cm.curOp = {\n cm: cm,\n viewChanged: false,\n // Flag that indicates that lines might need to be redrawn\n startHeight: cm.doc.height,\n // Used to detect need to update scrollbar\n forceUpdate: false,\n // Used to force a redraw\n updateInput: 0,\n // Whether to reset the input textarea\n typing: false,\n // Whether this reset should be careful to leave existing text (for compositing)\n changeObjs: null,\n // Accumulated changes, for firing change events\n cursorActivityHandlers: null,\n // Set of handlers to fire cursorActivity on\n cursorActivityCalled: 0,\n // Tracks which cursorActivity handlers have been called already\n selectionChanged: false,\n // Whether the selection needs to be redrawn\n updateMaxLine: false,\n // Set when the widest line needs to be determined anew\n scrollLeft: null,\n scrollTop: null,\n // Intermediate scroll position, not pushed to DOM yet\n scrollToPos: null,\n // Used to scroll to a specific position\n focus: false,\n id: ++nextOpId,\n // Unique ID\n markArrays: null // Used by addMarkedSpan\n };\n pushOperation(cm.curOp);\n }\n\n // Finish an operation, updating the display and signalling delayed events\n function endOperation(cm) {\n var op = cm.curOp;\n if (op) {\n finishOperation(op, function (group) {\n for (var i = 0; i < group.ops.length; i++) {\n group.ops[i].cm.curOp = null;\n }\n endOperations(group);\n });\n }\n }\n\n // The DOM updates done when an operation finishes are batched so\n // that the minimum number of relayouts are required.\n function endOperations(group) {\n var ops = group.ops;\n for (var i = 0; i < ops.length; i++)\n // Read DOM\n {\n endOperation_R1(ops[i]);\n }\n for (var i$1 = 0; i$1 < ops.length; i$1++)\n // Write DOM (maybe)\n {\n endOperation_W1(ops[i$1]);\n }\n for (var i$2 = 0; i$2 < ops.length; i$2++)\n // Read DOM\n {\n endOperation_R2(ops[i$2]);\n }\n for (var i$3 = 0; i$3 < ops.length; i$3++)\n // Write DOM (maybe)\n {\n endOperation_W2(ops[i$3]);\n }\n for (var i$4 = 0; i$4 < ops.length; i$4++)\n // Read DOM\n {\n endOperation_finish(ops[i$4]);\n }\n }\n function endOperation_R1(op) {\n var cm = op.cm,\n display = cm.display;\n maybeClipScrollbars(cm);\n if (op.updateMaxLine) {\n findMaxLine(cm);\n }\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,\n display = cm.display;\n if (op.updatedDisplay) {\n updateHeightsInViewport(cm);\n }\n op.barMeasure = measureForScrollbars(cm);\n\n // If the max line changed since it was last measured, measure it,\n // and ensure the document's width matches it.\n // updateDisplay_W2 will use these properties to do the actual resizing\n if (display.maxLineChanged && !cm.options.lineWrapping) {\n op.adjustWidthTo = measureChar(cm, display.maxLine, display.maxLine.text.length).left + 3;\n cm.display.sizerWidth = op.adjustWidthTo;\n op.barMeasure.scrollWidth = 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) {\n op.preparedSelection = display.input.prepareSelection();\n }\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) {\n setScrollLeft(cm, Math.min(cm.display.scroller.scrollLeft, op.maxScrollLeft), true);\n }\n cm.display.maxLineChanged = false;\n }\n var takeFocus = op.focus && op.focus == activeElt();\n if (op.preparedSelection) {\n cm.display.input.showSelection(op.preparedSelection, takeFocus);\n }\n if (op.updatedDisplay || op.startHeight != cm.doc.height) {\n updateScrollbars(cm, op.barMeasure);\n }\n if (op.updatedDisplay) {\n setDocumentHeight(cm, op.barMeasure);\n }\n if (op.selectionChanged) {\n restartBlink(cm);\n }\n if (cm.state.focused && op.updateInput) {\n cm.display.input.reset(op.typing);\n }\n if (takeFocus) {\n ensureFocus(op.cm);\n }\n }\n function endOperation_finish(op) {\n var cm = op.cm,\n display = cm.display,\n doc = cm.doc;\n if (op.updatedDisplay) {\n postUpdateDisplay(cm, op.update);\n }\n\n // Abort mouse wheel delta measurement, when scrolling explicitly\n if (display.wheelStartX != null && (op.scrollTop != null || op.scrollLeft != null || op.scrollToPos)) {\n display.wheelStartX = display.wheelStartY = null;\n }\n\n // Propagate the scroll position to the actual DOM scroller\n if (op.scrollTop != null) {\n setScrollTop(cm, op.scrollTop, op.forceScroll);\n }\n if (op.scrollLeft != null) {\n setScrollLeft(cm, op.scrollLeft, true, true);\n }\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\n // Fire events for markers that are hidden/unidden by editing or\n // undoing\n var hidden = op.maybeHiddenMarkers,\n unhidden = op.maybeUnhiddenMarkers;\n if (hidden) {\n for (var i = 0; i < hidden.length; ++i) {\n if (!hidden[i].lines.length) {\n signal(hidden[i], \"hide\");\n }\n }\n }\n if (unhidden) {\n for (var i$1 = 0; i$1 < unhidden.length; ++i$1) {\n if (unhidden[i$1].lines.length) {\n signal(unhidden[i$1], \"unhide\");\n }\n }\n }\n if (display.wrapper.offsetHeight) {\n doc.scrollTop = cm.display.scroller.scrollTop;\n }\n\n // Fire change events, and delayed event handlers\n if (op.changeObjs) {\n signal(cm, \"changes\", cm, op.changeObjs);\n }\n if (op.update) {\n op.update.finish();\n }\n }\n\n // Run the given function in an operation\n function runInOp(cm, f) {\n if (cm.curOp) {\n return f();\n }\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) {\n return f.apply(cm, arguments);\n }\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) {\n return f.apply(this, arguments);\n }\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) {\n return f.apply(this, arguments);\n }\n startOperation(cm);\n try {\n return f.apply(this, arguments);\n } finally {\n endOperation(cm);\n }\n };\n }\n\n // HIGHLIGHT WORKER\n\n function startWorker(cm, time) {\n if (cm.doc.highlightFrontier < cm.display.viewTo) {\n cm.state.highlight.set(time, bind(highlightWorker, cm));\n }\n }\n function highlightWorker(cm) {\n var doc = cm.doc;\n if (doc.highlightFrontier >= cm.display.viewTo) {\n return;\n }\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 // Visible\n var oldStyles = line.styles;\n var resetState = line.text.length > cm.options.maxHighlightLength ? copyState(doc.mode, context.state) : null;\n var highlighted = highlightLine(cm, line, context, true);\n if (resetState) {\n context.state = resetState;\n }\n line.styles = highlighted.styles;\n var oldCls = line.styleClasses,\n newCls = highlighted.classes;\n if (newCls) {\n line.styleClasses = newCls;\n } else if (oldCls) {\n line.styleClasses = null;\n }\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) {\n ischange = oldStyles[i] != line.styles[i];\n }\n if (ischange) {\n changedLines.push(context.line);\n }\n line.stateAfter = context.save();\n context.nextLine();\n } else {\n if (line.text.length <= cm.options.maxHighlightLength) {\n processLine(cm, line.text, context);\n }\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) {\n runInOp(cm, function () {\n for (var i = 0; i < changedLines.length; i++) {\n regLineChange(cm, changedLines[i], \"text\");\n }\n });\n }\n }\n\n // DISPLAY DRAWING\n\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)) {\n this.events.push(arguments);\n }\n };\n DisplayUpdate.prototype.finish = function () {\n for (var i = 0; i < this.events.length; i++) {\n signal.apply(null, this.events[i]);\n }\n };\n function maybeClipScrollbars(cm) {\n var display = cm.display;\n if (!display.scrollbarsClipped && display.scroller.offsetWidth) {\n display.nativeBarWidth = display.scroller.offsetWidth - display.scroller.clientWidth;\n display.heightForcer.style.height = scrollGap(cm) + \"px\";\n display.sizer.style.marginBottom = -display.nativeBarWidth + \"px\";\n display.sizer.style.borderRightWidth = scrollGap(cm) + \"px\";\n display.scrollbarsClipped = true;\n }\n }\n function selectionSnapshot(cm) {\n if (cm.hasFocus()) {\n return null;\n }\n var active = activeElt();\n if (!active || !contains(cm.display.lineDiv, active)) {\n return null;\n }\n var result = {\n activeElt: active\n };\n if (window.getSelection) {\n var sel = window.getSelection();\n if (sel.anchorNode && sel.extend && contains(cm.display.lineDiv, sel.anchorNode)) {\n result.anchorNode = sel.anchorNode;\n result.anchorOffset = sel.anchorOffset;\n result.focusNode = sel.focusNode;\n result.focusOffset = sel.focusOffset;\n }\n }\n return result;\n }\n function restoreSelection(snapshot) {\n if (!snapshot || !snapshot.activeElt || snapshot.activeElt == activeElt()) {\n return;\n }\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 sel = window.getSelection(),\n range = document.createRange();\n range.setEnd(snapshot.anchorNode, snapshot.anchorOffset);\n range.collapse(false);\n sel.removeAllRanges();\n sel.addRange(range);\n sel.extend(snapshot.focusNode, snapshot.focusOffset);\n }\n }\n\n // Does the actual updating of the line display. Bails out\n // (returning false) when there is nothing to be done and forced is\n // false.\n function updateDisplayIfNeeded(cm, update) {\n var display = cm.display,\n doc = cm.doc;\n if (update.editorIsHidden) {\n resetView(cm);\n return false;\n }\n\n // Bail out if the visible area is already rendered and nothing changed.\n if (!update.force && update.visible.from >= display.viewFrom && update.visible.to <= display.viewTo && (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo) && display.renderedView == display.view && countDirtyView(cm) == 0) {\n return false;\n }\n if (maybeUpdateLineNumberWidth(cm)) {\n resetView(cm);\n update.dims = getDimensions(cm);\n }\n\n // Compute a suitable new viewport (from & to)\n var end = doc.first + doc.size;\n var from = Math.max(update.visible.from - cm.options.viewportMargin, doc.first);\n var to = Math.min(end, update.visible.to + cm.options.viewportMargin);\n if (display.viewFrom < from && from - display.viewFrom < 20) {\n from = Math.max(doc.first, display.viewFrom);\n }\n if (display.viewTo > to && display.viewTo - to < 20) {\n to = Math.min(end, display.viewTo);\n }\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)) {\n return false;\n }\n\n // For big changes, we hide the enclosing element during the\n // update, since that speeds up the operations on most browsers.\n var selSnapshot = selectionSnapshot(cm);\n if (toUpdate > 4) {\n display.lineDiv.style.display = \"none\";\n }\n patchDisplay(cm, display.updateLineNumbers, update.dims);\n if (toUpdate > 4) {\n display.lineDiv.style.display = \"\";\n }\n display.renderedView = display.view;\n // There might have been a widget with a focused element that got\n // hidden or updated, if so re-focus it.\n restoreSelection(selSnapshot);\n\n // Prevent selection and cursors from interfering with the scroll\n // width and height.\n removeChildren(display.cursorDiv);\n removeChildren(display.selectionDiv);\n display.gutters.style.height = display.sizer.style.minHeight = 0;\n 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) {\n viewport = {\n top: Math.min(cm.doc.height + paddingVert(cm.display) - displayHeight(cm), viewport.top)\n };\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) {\n break;\n }\n } else if (first) {\n update.visible = visibleLines(cm.display, cm.doc, viewport);\n }\n if (!updateDisplayIfNeeded(cm, update)) {\n break;\n }\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\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,\n lineNumbers = cm.options.lineNumbers;\n var container = display.lineDiv,\n 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) {\n node.style.display = \"none\";\n } else {\n node.parentNode.removeChild(node);\n }\n return next;\n }\n var view = display.view,\n lineN = display.viewFrom;\n // Loop over the elements in the view, syncing cur (the DOM nodes\n // in display.lineDiv) with the view as we go.\n for (var i = 0; i < view.length; i++) {\n var lineView = view[i];\n if (lineView.hidden) ;else if (!lineView.node || lineView.node.parentNode != container) {\n // Not drawn yet\n var node = buildLineElement(cm, lineView, lineN, dims);\n container.insertBefore(node, cur);\n } else {\n // Already drawn\n while (cur != lineView.node) {\n cur = rm(cur);\n }\n var updateNumber = lineNumbers && updateNumbersFrom != null && updateNumbersFrom <= lineN && lineView.lineNumber;\n if (lineView.changes) {\n if (indexOf(lineView.changes, \"gutter\") > -1) {\n updateNumber = false;\n }\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) {\n cur = rm(cur);\n }\n }\n function updateGutterSpace(display) {\n var width = display.gutters.offsetWidth;\n display.sizer.style.marginLeft = width + \"px\";\n // Send an event to consumers responding to changes in gutter width.\n signalLater(display, \"gutterChanged\", display);\n }\n function setDocumentHeight(cm, measure) {\n cm.display.sizer.style.minHeight = measure.docHeight + \"px\";\n cm.display.heightForcer.style.top = measure.docHeight + \"px\";\n cm.display.gutters.style.height = measure.docHeight + cm.display.barHeight + scrollGap(cm) + \"px\";\n }\n\n // Re-align line numbers and gutter marks to compensate for\n // horizontal scrolling.\n function alignHorizontally(cm) {\n var display = cm.display,\n view = display.view;\n if (!display.alignWidgets && (!display.gutters.firstChild || !cm.options.fixedGutter)) {\n return;\n }\n var comp = compensateForHScroll(display) - display.scroller.scrollLeft + cm.doc.scrollLeft;\n var gutterW = display.gutters.offsetWidth,\n left = comp + \"px\";\n for (var i = 0; i < view.length; i++) {\n if (!view[i].hidden) {\n if (cm.options.fixedGutter) {\n if (view[i].gutter) {\n view[i].gutter.style.left = left;\n }\n if (view[i].gutterBackground) {\n view[i].gutterBackground.style.left = left;\n }\n }\n var align = view[i].alignable;\n if (align) {\n for (var j = 0; j < align.length; j++) {\n align[j].style.left = left;\n }\n }\n }\n }\n if (cm.options.fixedGutter) {\n display.gutters.style.left = comp + gutterW + \"px\";\n }\n }\n\n // Used to ensure that the line number gutter is still the right\n // size for the current document size. Returns true when an update\n // is needed.\n function maybeUpdateLineNumberWidth(cm) {\n if (!cm.options.lineNumbers) {\n return false;\n }\n var doc = cm.doc,\n last = lineNumberFor(cm.options, doc.first + doc.size - 1),\n display = cm.display;\n if (last.length != display.lineNumChars) {\n var test = display.measure.appendChild(elt(\"div\", [elt(\"div\", last)], \"CodeMirror-linenumber CodeMirror-gutter-elt\"));\n var innerW = test.firstChild.offsetWidth,\n 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 = [],\n sawLineNumbers = false;\n for (var i = 0; i < gutters.length; i++) {\n var name = gutters[i],\n style = null;\n if (typeof name != \"string\") {\n style = name.style;\n name = name.className;\n }\n if (name == \"CodeMirror-linenumbers\") {\n if (!lineNumbers) {\n continue;\n } else {\n sawLineNumbers = true;\n }\n }\n result.push({\n className: name,\n style: style\n });\n }\n if (lineNumbers && !sawLineNumbers) {\n result.push({\n className: \"CodeMirror-linenumbers\",\n style: null\n });\n }\n return result;\n }\n\n // Rebuild the gutter elements, ensure the margin to the left of the\n // code matches their width.\n function renderGutters(display) {\n var gutters = display.gutters,\n 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) {\n gElt.style.cssText = style;\n }\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\n // The display handles the DOM integration, both for input reading\n // and content drawing. It holds references to DOM nodes and\n // display-related state.\n\n function Display(place, doc, input, options) {\n var d = this;\n this.input = input;\n\n // Covers bottom-right square when both scrollbars are present.\n d.scrollbarFiller = elt(\"div\", null, \"CodeMirror-scrollbar-filler\");\n d.scrollbarFiller.setAttribute(\"cm-not-content\", \"true\");\n // Covers bottom of gutter when coverGutterNextToScrollbar is on\n // and h scrollbar is present.\n d.gutterFiller = elt(\"div\", null, \"CodeMirror-gutter-filler\");\n d.gutterFiller.setAttribute(\"cm-not-content\", \"true\");\n // Will contain the actual code, positioned to cover the viewport.\n d.lineDiv = eltP(\"div\", null, \"CodeMirror-code\");\n // Elements are added to these to represent selection and cursors.\n d.selectionDiv = elt(\"div\", null, null, \"position: relative; z-index: 1\");\n d.cursorDiv = elt(\"div\", null, \"CodeMirror-cursors\");\n // A visibility: hidden element used to find the size of things.\n d.measure = elt(\"div\", null, \"CodeMirror-measure\");\n // When lines outside of the viewport are measured, they are drawn in this.\n d.lineMeasure = elt(\"div\", null, \"CodeMirror-measure\");\n // Wraps everything that needs to exist inside the vertically-padded coordinate system\n d.lineSpace = eltP(\"div\", [d.measure, d.lineMeasure, d.selectionDiv, d.cursorDiv, d.lineDiv], null, \"position: relative; outline: none\");\n var lines = eltP(\"div\", [d.lineSpace], \"CodeMirror-lines\");\n // Moved around its parent to cover visible view.\n d.mover = elt(\"div\", [lines], null, \"position: relative\");\n // Set to the height of the document, allowing scrolling.\n d.sizer = elt(\"div\", [d.mover], \"CodeMirror-sizer\");\n d.sizerWidth = null;\n // Behavior of elts with overflow: auto and padding is\n // inconsistent across browsers. This is used to ensure the\n // scrollable area is big enough.\n d.heightForcer = elt(\"div\", null, null, \"position: absolute; height: \" + scrollerGap + \"px; width: 1px;\");\n // Will contain the gutters, if any.\n d.gutters = elt(\"div\", null, \"CodeMirror-gutters\");\n d.lineGutter = null;\n // Actual scrollable element.\n d.scroller = elt(\"div\", [d.sizer, d.heightForcer, d.gutters], \"CodeMirror-scroll\");\n d.scroller.setAttribute(\"tabIndex\", \"-1\");\n // The element in which the editor lives.\n d.wrapper = elt(\"div\", [d.scrollbarFiller, d.gutterFiller, d.scroller], \"CodeMirror\");\n\n // This attribute is respected by automatic translation systems such as Google Translate,\n // and may also be respected by tools used by human translators.\n d.wrapper.setAttribute('translate', 'no');\n\n // Work around IE7 z-index bug (not perfect, hence IE7 not really being supported)\n if (ie && ie_version < 8) {\n d.gutters.style.zIndex = -1;\n d.scroller.style.paddingRight = 0;\n }\n if (!webkit && !(gecko && mobile)) {\n d.scroller.draggable = true;\n }\n if (place) {\n if (place.appendChild) {\n place.appendChild(d.wrapper);\n } else {\n place(d.wrapper);\n }\n }\n\n // Current rendered range (may be bigger than the view window).\n d.viewFrom = d.viewTo = doc.first;\n d.reportedViewFrom = d.reportedViewTo = doc.first;\n // Information about the rendered lines.\n d.view = [];\n d.renderedView = null;\n // Holds info about a single rendered line when it was rendered\n // for measurement, while not in view.\n d.externalMeasured = null;\n // Empty space (in pixels) above the view\n d.viewOffset = 0;\n d.lastWrapHeight = d.lastWrapWidth = 0;\n d.updateLineNumbers = null;\n d.nativeBarWidth = d.barHeight = d.barWidth = 0;\n d.scrollbarsClipped = false;\n\n // Used to only resize the line number gutter when necessary (when\n // the amount of lines crosses a boundary that makes its width change)\n d.lineNumWidth = d.lineNumInnerWidth = d.lineNumChars = null;\n // Set to true when a non-horizontal-scrolling line widget is\n // added. As an optimization, line widget aligning is skipped when\n // this is false.\n d.alignWidgets = false;\n d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null;\n\n // Tracks the maximum line length so that the horizontal scrollbar\n // can be kept static when scrolling.\n d.maxLine = null;\n d.maxLineLength = 0;\n d.maxLineChanged = false;\n\n // Used for measuring wheel scrolling granularity\n d.wheelDX = d.wheelDY = d.wheelStartX = d.wheelStartY = null;\n\n // True when shift is held down.\n d.shift = false;\n\n // Used to track whether anything happened since the context menu\n // was opened.\n d.selForContextMenu = null;\n d.activeTouch = null;\n d.gutterSpecs = getGutters(options.gutters, options.lineNumbers);\n renderGutters(d);\n input.init(d);\n }\n\n // Since the delta values reported on mouse wheel events are\n // unstandardized between browsers and even browser versions, and\n // generally horribly unpredictable, this code starts by measuring\n // the scroll effect that the first few mouse wheel events have,\n // and, from that, detects the way it can convert deltas to pixel\n // offsets afterwards.\n //\n // The reason we want to know the amount a wheel event will scroll\n // is that it gives us a chance to update the display before the\n // actual scrolling happens, reducing flickering.\n\n var wheelSamples = 0,\n 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) {\n wheelPixelsPerUnit = -.53;\n } else if (gecko) {\n wheelPixelsPerUnit = 15;\n } else if (chrome) {\n wheelPixelsPerUnit = -.7;\n } else if (safari) {\n wheelPixelsPerUnit = -1 / 3;\n }\n function wheelEventDelta(e) {\n var dx = e.wheelDeltaX,\n dy = e.wheelDeltaY;\n if (dx == null && e.detail && e.axis == e.HORIZONTAL_AXIS) {\n dx = e.detail;\n }\n if (dy == null && e.detail && e.axis == e.VERTICAL_AXIS) {\n dy = e.detail;\n } else if (dy == null) {\n dy = e.wheelDelta;\n }\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) {\n cm.display.sizer.style.pointerEvents = \"none\";\n } else {\n clearTimeout(cm.display.chromeScrollHack);\n }\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),\n dx = delta.x,\n 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,\n 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)) {\n return;\n }\n\n // Webkit browsers on OS X abort momentum scrolls when the target\n // of the scroll event is removed from the scrollable element.\n // This hack (see related code in patchDisplay) makes sure the\n // element is kept around.\n if (dy && mac && webkit) {\n outer: for (var cur = e.target, view = display.view; cur != scroll; cur = cur.parentNode) {\n for (var i = 0; i < view.length; i++) {\n if (view[i].node == cur) {\n cm.display.currentWheelTarget = cur;\n break outer;\n }\n }\n }\n }\n\n // On some browsers, horizontal scrolling will cause redraws to\n // happen before the gutter has been realigned, causing it to\n // wriggle around in a most unseemly way. When we have an\n // estimated pixels/delta value, we just handle horizontal\n // scrolling entirely here. It'll be slightly off from native, but\n // better than glitching out.\n if (dx && !gecko && !presto && pixelsPerUnit != null) {\n if (dy && canScrollY) {\n updateScrollTop(cm, Math.max(0, scroll.scrollTop + dy * pixelsPerUnit));\n }\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) {\n e_preventDefault(e);\n }\n display.wheelStartX = null; // Abort measurement, if in progress\n return;\n }\n\n // 'Project' the visible viewport to cover the area that is being\n // scrolled into view (if we know enough to estimate it).\n if (dy && pixelsPerUnit != null) {\n var pixels = dy * pixelsPerUnit;\n var top = cm.doc.scrollTop,\n bot = top + display.wrapper.clientHeight;\n if (pixels < 0) {\n top = Math.max(0, top + pixels - 50);\n } else {\n bot = Math.min(cm.doc.height, bot + pixels + 50);\n }\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) {\n return;\n }\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) {\n return;\n }\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\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) {\n return true;\n }\n if (other.primIndex != this.primIndex || other.ranges.length != this.ranges.length) {\n return false;\n }\n for (var i = 0; i < this.ranges.length; i++) {\n var here = this.ranges[i],\n there = other.ranges[i];\n if (!equalCursorPos(here.anchor, there.anchor) || !equalCursorPos(here.head, there.head)) {\n return false;\n }\n }\n return true;\n };\n Selection.prototype.deepCopy = function () {\n var out = [];\n for (var i = 0; i < this.ranges.length; i++) {\n out[i] = new Range(copyPos(this.ranges[i].anchor), copyPos(this.ranges[i].head));\n }\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()) {\n return true;\n }\n }\n return false;\n };\n Selection.prototype.contains = function (pos, end) {\n if (!end) {\n end = pos;\n }\n for (var i = 0; i < this.ranges.length; i++) {\n var range = this.ranges[i];\n if (cmp(end, range.from()) >= 0 && cmp(pos, range.to()) <= 0) {\n return i;\n }\n }\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\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],\n 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()),\n to = maxPos(prev.to(), cur.to());\n var inv = prev.empty() ? cur.from() == cur.head : prev.from() == prev.head;\n if (i <= primIndex) {\n --primIndex;\n }\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([new Range(anchor, head || anchor)], 0);\n }\n\n // Compute the position of the end of a change (its 'to' property\n // refers to the pre-change end).\n function changeEnd(change) {\n if (!change.text) {\n return change.to;\n }\n return Pos(change.from.line + change.text.length - 1, lst(change.text).length + (change.text.length == 1 ? change.from.ch : 0));\n }\n\n // Adjust a position to refer to the post-change position of the\n // same text, or the end of the change if the change covers it.\n function adjustForChange(pos, change) {\n if (cmp(pos, change.from) < 0) {\n return pos;\n }\n if (cmp(pos, change.to) <= 0) {\n return changeEnd(change);\n }\n var line = pos.line + change.text.length - (change.to.line - change.from.line) - 1,\n ch = pos.ch;\n if (pos.line == change.to.line) {\n ch += changeEnd(change).ch - change.to.ch;\n }\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) {\n return Pos(nw.line, pos.ch - old.ch + nw.ch);\n } else {\n return Pos(nw.line + (pos.line - old.line), pos.ch);\n }\n }\n\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),\n 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],\n inv = cmp(range.head, range.anchor) < 0;\n out[i] = new Range(inv ? to : from, inv ? from : to);\n } else {\n out[i] = new Range(from, from);\n }\n }\n return new Selection(out, doc.sel.primIndex);\n }\n\n // Used to get the editor into a consistent state again when options change.\n\n function loadMode(cm) {\n cm.doc.mode = getMode(cm.options, cm.doc.modeOption);\n resetModeState(cm);\n }\n function resetModeState(cm) {\n cm.doc.iter(function (line) {\n if (line.stateAfter) {\n line.stateAfter = null;\n }\n if (line.styles) {\n line.styles = null;\n }\n });\n cm.doc.modeFrontier = cm.doc.highlightFrontier = cm.doc.first;\n startWorker(cm, 100);\n cm.state.modeGen++;\n if (cm.curOp) {\n regChange(cm);\n }\n }\n\n // DOCUMENT DATA STRUCTURE\n\n // By default, updates that start and end at the beginning of a line\n // are treated specially, in order to make the association of line\n // widgets and marker elements with the text behave more intuitive.\n function isWholeLineUpdate(doc, change) {\n return change.from.ch == 0 && change.to.ch == 0 && lst(change.text) == \"\" && (!doc.cm || doc.cm.options.wholeLineUpdateBefore);\n }\n\n // Perform a change on the document data structure.\n function updateDoc(doc, change, markedSpans, estimateHeight) {\n function spansFor(n) {\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) {\n result.push(new Line(text[i], spansFor(i), estimateHeight));\n }\n return result;\n }\n var from = change.from,\n to = change.to,\n text = change.text;\n var firstLine = getLine(doc, from.line),\n lastLine = getLine(doc, to.line);\n var lastText = lst(text),\n lastSpans = spansFor(text.length - 1),\n nlines = to.line - from.line;\n\n // Adjust the line structure\n if (change.full) {\n doc.insert(0, linesFor(0, text.length));\n doc.remove(text.length, doc.size - text.length);\n } else if (isWholeLineUpdate(doc, change)) {\n // This is a whole-line replace. Treated specially to make\n // sure line objects move the way they are supposed to.\n var added = linesFor(0, text.length - 1);\n update(lastLine, lastLine.text, lastSpans);\n if (nlines) {\n doc.remove(from.line, nlines);\n }\n if (added.length) {\n doc.insert(from.line, added);\n }\n } else if (firstLine == lastLine) {\n if (text.length == 1) {\n update(firstLine, firstLine.text.slice(0, from.ch) + lastText + firstLine.text.slice(to.ch), lastSpans);\n } else {\n var added$1 = linesFor(1, text.length - 1);\n added$1.push(new Line(lastText + firstLine.text.slice(to.ch), lastSpans, estimateHeight));\n update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0));\n doc.insert(from.line + 1, added$1);\n }\n } else if (text.length == 1) {\n update(firstLine, firstLine.text.slice(0, from.ch) + text[0] + lastLine.text.slice(to.ch), spansFor(0));\n doc.remove(from.line + 1, nlines);\n } else {\n update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0));\n update(lastLine, lastText + lastLine.text.slice(to.ch), lastSpans);\n var added$2 = linesFor(1, text.length - 1);\n if (nlines > 1) {\n doc.remove(from.line + 1, nlines - 1);\n }\n doc.insert(from.line + 1, added$2);\n }\n signalLater(doc, \"change\", doc, change);\n }\n\n // Call f for all linked documents.\n function linkedDocs(doc, f, sharedHistOnly) {\n function propagate(doc, skip, sharedHist) {\n if (doc.linked) {\n for (var i = 0; i < doc.linked.length; ++i) {\n var rel = doc.linked[i];\n if (rel.doc == skip) {\n continue;\n }\n var shared = sharedHist && rel.sharedHist;\n if (sharedHistOnly && !shared) {\n continue;\n }\n f(rel.doc, shared);\n propagate(rel.doc, doc, shared);\n }\n }\n }\n propagate(doc, null, true);\n }\n\n // Attach a document to an editor.\n function attachDoc(cm, doc) {\n if (doc.cm) {\n throw new Error(\"This document is already in use.\");\n }\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) {\n findMaxLine(cm);\n }\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\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\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) {\n array.pop();\n } else {\n break;\n }\n }\n }\n\n // Find the top change event in the history. Pop off selection\n // events that are in the way.\n function lastChangeEvent(hist, force) {\n if (force) {\n clearSelectionEvents(hist.done);\n return lst(hist.done);\n } else if (hist.done.length && !lst(hist.done).ranges) {\n return lst(hist.done);\n } else if (hist.done.length > 1 && !hist.done[hist.done.length - 2].ranges) {\n hist.done.pop();\n return lst(hist.done);\n }\n }\n\n // Register a change in the history. Merges changes that are within\n // a single operation, or are close together with an origin that\n // allows merging (starting with \"+\") into a single event.\n function addChangeToHistory(doc, change, selAfter, opId) {\n var hist = doc.history;\n hist.undone.length = 0;\n var time = +new Date(),\n 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) {\n // Optimized case for simple insertion -- don't want to add\n // new changesets for every character typed\n last.to = changeEnd(change);\n } else {\n // Add new sub-event\n cur.changes.push(historyChangeFromChange(doc, change));\n }\n } else {\n // Can not be merged, start a new event.\n var before = lst(hist.done);\n if (!before || !before.ranges) {\n pushSelectionToHistory(doc.sel, hist.done);\n }\n cur = {\n changes: [historyChangeFromChange(doc, change)],\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) {\n hist.done.shift();\n }\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) {\n signal(doc, \"historyAdded\");\n }\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\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,\n origin = options && options.origin;\n\n // A new event is started when the previous origin does not match\n // the current, or the origins don't allow matching. Origins\n // starting with * are always merged, those starting with + are\n // merged when similar and close together in time.\n if (opId == hist.lastSelOp || origin && hist.lastSelOrigin == origin && (hist.lastModTime == hist.lastSelTime && hist.lastOrigin == origin || selectionEventCanBeMerged(doc, origin, lst(hist.done), sel))) {\n hist.done[hist.done.length - 1] = sel;\n } else {\n pushSelectionToHistory(sel, hist.done);\n }\n hist.lastSelTime = +new Date();\n hist.lastSelOrigin = origin;\n hist.lastSelOp = opId;\n if (options && options.clearRedo !== false) {\n clearSelectionEvents(hist.undone);\n }\n }\n function pushSelectionToHistory(sel, dest) {\n var top = lst(dest);\n if (!(top && top.ranges && top.equals(sel))) {\n dest.push(sel);\n }\n }\n\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 n = 0;\n doc.iter(Math.max(doc.first, from), Math.min(doc.first + doc.size, to), function (line) {\n if (line.markedSpans) {\n (existing || (existing = change[\"spans_\" + doc.id] = {}))[n] = line.markedSpans;\n }\n ++n;\n });\n }\n\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) {\n return null;\n }\n var out;\n for (var i = 0; i < spans.length; ++i) {\n if (spans[i].marker.explicitlyCleared) {\n if (!out) {\n out = spans.slice(0, i);\n }\n } else if (out) {\n out.push(spans[i]);\n }\n }\n return !out ? spans : out.length ? out : null;\n }\n\n // Retrieve and filter the old marked spans stored in a change event.\n function getOldSpans(doc, change) {\n var found = change[\"spans_\" + doc.id];\n if (!found) {\n return null;\n }\n var nw = [];\n for (var i = 0; i < change.text.length; ++i) {\n nw.push(removeClearedSpans(found[i]));\n }\n return nw;\n }\n\n // Used for un/re-doing changes from the history. Combines the\n // result of computing the existing spans with the set of spans that\n // existed in the history (so that deleting around a span and then\n // undoing brings back the span).\n function mergeOldSpans(doc, change) {\n var old = getOldSpans(doc, change);\n var stretched = stretchSpansOverChange(doc, change);\n if (!old) {\n return stretched;\n }\n if (!stretched) {\n return old;\n }\n for (var i = 0; i < old.length; ++i) {\n var oldCur = old[i],\n stretchCur = stretched[i];\n if (oldCur && stretchCur) {\n spans: for (var j = 0; j < stretchCur.length; ++j) {\n var span = stretchCur[j];\n for (var k = 0; k < oldCur.length; ++k) {\n if (oldCur[k].marker == span.marker) {\n continue spans;\n }\n }\n oldCur.push(span);\n }\n } else if (stretchCur) {\n old[i] = stretchCur;\n }\n }\n return old;\n }\n\n // Used both to provide a JSON-safe object in .getHistory, and, when\n // detaching a document, to split the history in two\n function copyHistoryArray(events, newGroup, instantiateSel) {\n var copy = [];\n for (var i = 0; i < events.length; ++i) {\n var event = events[i];\n if (event.ranges) {\n copy.push(instantiateSel ? Selection.prototype.deepCopy.call(event) : event);\n continue;\n }\n var changes = event.changes,\n newChanges = [];\n copy.push({\n changes: newChanges\n });\n for (var j = 0; j < changes.length; ++j) {\n var change = changes[j],\n m = void 0;\n newChanges.push({\n from: change.from,\n to: change.to,\n text: change.text\n });\n if (newGroup) {\n 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 }\n return copy;\n }\n\n // The 'scroll' parameter given to many of these indicated whether\n // the new cursor position should be scrolled into view after\n // modifying the selection.\n\n // If shift is held or the extend flag is set, extends a range to\n // include a given position (and optionally a second position).\n // Otherwise, simply returns the range between the given positions.\n // Used for cursor motion and such.\n function extendRange(range, head, other, extend) {\n if (extend) {\n var anchor = range.anchor;\n if (other) {\n var posBefore = cmp(head, anchor) < 0;\n if (posBefore != cmp(other, anchor) < 0) {\n anchor = head;\n head = other;\n } else if (posBefore != cmp(head, other) < 0) {\n head = other;\n }\n }\n return new Range(anchor, head);\n } else {\n return new Range(other || head, head);\n }\n }\n\n // Extend the primary selection range, discard the rest.\n function extendSelection(doc, head, other, options, extend) {\n if (extend == null) {\n extend = doc.cm && (doc.cm.display.shift || doc.extend);\n }\n setSelection(doc, new Selection([extendRange(doc.sel.primary(), head, other, extend)], 0), options);\n }\n\n // Extend all selections (pos is an array of selections with length\n // equal the number of selections)\n function extendSelections(doc, heads, options) {\n var out = [];\n var extend = doc.cm && (doc.cm.display.shift || doc.extend);\n for (var i = 0; i < doc.sel.ranges.length; i++) {\n out[i] = extendRange(doc.sel.ranges[i], heads[i], null, extend);\n }\n var newSel = normalizeSelection(doc.cm, out, doc.sel.primIndex);\n setSelection(doc, newSel, options);\n }\n\n // Updates a single range in the selection.\n function replaceOneSelection(doc, i, range, options) {\n var ranges = doc.sel.ranges.slice(0);\n ranges[i] = range;\n setSelection(doc, normalizeSelection(doc.cm, ranges, doc.sel.primIndex), options);\n }\n\n // Reset the selection to a single range.\n function setSimpleSelection(doc, anchor, head, options) {\n setSelection(doc, simpleSelection(anchor, head), options);\n }\n\n // Give beforeSelectionChange handlers a change to influence a\n // selection update.\n function filterSelectionChange(doc, sel, options) {\n var obj = {\n ranges: sel.ranges,\n update: function (ranges) {\n this.ranges = [];\n for (var i = 0; i < ranges.length; i++) {\n this.ranges[i] = new Range(clipPos(doc, ranges[i].anchor), clipPos(doc, ranges[i].head));\n }\n },\n origin: options && options.origin\n };\n signal(doc, \"beforeSelectionChange\", doc, obj);\n if (doc.cm) {\n signal(doc.cm, \"beforeSelectionChange\", doc.cm, obj);\n }\n if (obj.ranges != sel.ranges) {\n return normalizeSelection(doc.cm, obj.ranges, obj.ranges.length - 1);\n } else {\n return sel;\n }\n }\n function setSelectionReplaceHistory(doc, sel, options) {\n var done = doc.history.done,\n last = lst(done);\n if (last && last.ranges) {\n done[done.length - 1] = sel;\n setSelectionNoUndo(doc, sel, options);\n } else {\n setSelection(doc, sel, options);\n }\n }\n\n // Set a new selection.\n function setSelection(doc, sel, options) {\n setSelectionNoUndo(doc, sel, options);\n addSelectionToHistory(doc, doc.sel, doc.cm ? doc.cm.curOp.id : NaN, options);\n }\n function setSelectionNoUndo(doc, sel, options) {\n if (hasHandler(doc, \"beforeSelectionChange\") || doc.cm && hasHandler(doc.cm, \"beforeSelectionChange\")) {\n sel = filterSelectionChange(doc, sel, options);\n }\n var bias = options && options.bias || (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\") {\n ensureCursorVisible(doc.cm);\n }\n }\n function setSelectionInner(doc, sel) {\n if (sel.equals(doc.sel)) {\n return;\n }\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\n // Verify that the selection does not partially select any atomic\n // marked ranges.\n function reCheckSelection(doc) {\n setSelectionInner(doc, skipAtomicInSelection(doc, doc.sel, null, false));\n }\n\n // Return a selection that does not partially select any atomic\n // ranges.\n function skipAtomicInSelection(doc, sel, bias, mayClear) {\n var out;\n for (var i = 0; i < sel.ranges.length; i++) {\n var range = sel.ranges[i];\n var old = sel.ranges.length == doc.sel.ranges.length && doc.sel.ranges[i];\n var newAnchor = skipAtomic(doc, range.anchor, old && old.anchor, bias, mayClear);\n var newHead = skipAtomic(doc, range.head, old && old.head, bias, mayClear);\n if (out || newAnchor != range.anchor || newHead != range.head) {\n if (!out) {\n out = sel.ranges.slice(0, i);\n }\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) {\n for (var i = 0; i < line.markedSpans.length; ++i) {\n var sp = line.markedSpans[i],\n m = sp.marker;\n\n // Determine if we should prevent the cursor being placed to the left/right of an atomic marker\n // Historically this was determined using the inclusiveLeft/Right option, but the new way to control it\n // is with selectLeft/Right\n var preventCursorLeft = \"selectLeft\" in m ? !m.selectLeft : m.inclusiveLeft;\n var preventCursorRight = \"selectRight\" in m ? !m.selectRight : m.inclusiveRight;\n 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) {\n break;\n } else {\n --i;\n continue;\n }\n }\n }\n if (!m.atomic) {\n continue;\n }\n if (oldPos) {\n var near = m.find(dir < 0 ? 1 : -1),\n diff = void 0;\n if (dir < 0 ? preventCursorRight : preventCursorLeft) {\n near = movePos(doc, near, -dir, near && near.line == pos.line ? line : null);\n }\n if (near && near.line == pos.line && (diff = cmp(near, oldPos)) && (dir < 0 ? diff < 0 : diff > 0)) {\n return skipAtomicInner(doc, near, pos, dir, mayClear);\n }\n }\n var far = m.find(dir < 0 ? -1 : 1);\n if (dir < 0 ? preventCursorLeft : preventCursorRight) {\n far = movePos(doc, far, dir, far.line == pos.line ? line : null);\n }\n return far ? skipAtomicInner(doc, far, pos, dir, mayClear) : null;\n }\n }\n }\n return pos;\n }\n\n // Ensure a given position is not inside an atomic range.\n function skipAtomic(doc, pos, oldPos, bias, mayClear) {\n var dir = bias || 1;\n var found = skipAtomicInner(doc, pos, oldPos, dir, mayClear) || !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) {\n return clipPos(doc, Pos(pos.line - 1));\n } else {\n return null;\n }\n } else if (dir > 0 && pos.ch == (line || getLine(doc, pos.line)).text.length) {\n if (pos.line < doc.first + doc.size - 1) {\n return Pos(pos.line + 1, 0);\n } else {\n return null;\n }\n } else {\n return new Pos(pos.line, pos.ch + dir);\n }\n }\n function selectAll(cm) {\n cm.setSelection(Pos(cm.firstLine(), 0), Pos(cm.lastLine()), sel_dontScroll);\n }\n\n // UPDATING\n\n // Allow \"beforeChange\" event handlers to influence a change\n function filterChange(doc, change, update) {\n var obj = {\n canceled: false,\n from: change.from,\n to: change.to,\n text: change.text,\n origin: change.origin,\n cancel: function () {\n return obj.canceled = true;\n }\n };\n if (update) {\n obj.update = function (from, to, text, origin) {\n if (from) {\n obj.from = clipPos(doc, from);\n }\n if (to) {\n obj.to = clipPos(doc, to);\n }\n if (text) {\n obj.text = text;\n }\n if (origin !== undefined) {\n obj.origin = origin;\n }\n };\n }\n signal(doc, \"beforeChange\", doc, obj);\n if (doc.cm) {\n signal(doc.cm, \"beforeChange\", doc.cm, obj);\n }\n if (obj.canceled) {\n if (doc.cm) {\n doc.cm.curOp.updateInput = 2;\n }\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\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) {\n return operation(doc.cm, makeChange)(doc, change, ignoreReadOnly);\n }\n if (doc.cm.state.suppressEdits) {\n return;\n }\n }\n if (hasHandler(doc, \"beforeChange\") || doc.cm && hasHandler(doc.cm, \"beforeChange\")) {\n change = filterChange(doc, change, true);\n if (!change) {\n return;\n }\n }\n\n // Possibly split or suppress the update based on the presence\n // of read-only spans in its range.\n var split = sawReadOnlySpans && !ignoreReadOnly && removeReadOnlyRanges(doc, change.from, change.to);\n if (split) {\n for (var i = split.length - 1; i >= 0; --i) {\n makeChangeInner(doc, {\n from: split[i].from,\n to: split[i].to,\n text: i ? [\"\"] : change.text,\n origin: change.origin\n });\n }\n } else {\n makeChangeInner(doc, change);\n }\n }\n function makeChangeInner(doc, change) {\n if (change.text.length == 1 && change.text[0] == \"\" && cmp(change.from, change.to) == 0) {\n return;\n }\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\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) {\n return;\n }\n var hist = doc.history,\n event,\n selAfter = doc.sel;\n var source = type == \"undo\" ? hist.done : hist.undone,\n dest = type == \"undo\" ? hist.undone : hist.done;\n\n // Verify that there is a useable event (so that ctrl-z won't\n // needlessly clear selection events)\n var i = 0;\n for (; i < source.length; i++) {\n event = source[i];\n if (allowSelectionOnly ? event.ranges && !event.equals(doc.sel) : !event.ranges) {\n break;\n }\n }\n if (i == source.length) {\n return;\n }\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 {\n break;\n }\n }\n\n // Build up a reverse change object to add to the opposite history\n // stack (redo when undoing, and vice versa).\n var antiChanges = [];\n pushSelectionToHistory(selAfter, dest);\n dest.push({\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) {\n doc.cm.scrollIntoView({\n from: change.from,\n to: changeEnd(change)\n });\n }\n var rebased = [];\n\n // Propagate to the linked documents\n linkedDocs(doc, function (doc, sharedHist) {\n if (!sharedHist && indexOf(rebased, doc.history) == -1) {\n rebaseHist(doc.history, change);\n rebased.push(doc.history);\n }\n makeChangeSingleDoc(doc, change, null, mergeOldSpans(doc, change));\n });\n };\n 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\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) {\n return;\n }\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++) {\n regLineChange(doc.cm, l, \"gutter\");\n }\n }\n }\n\n // More lower-level change function, handling only a single document\n // (not linked ones).\n function makeChangeSingleDoc(doc, change, selAfter, spans) {\n if (doc.cm && !doc.cm.curOp) {\n return operation(doc.cm, makeChangeSingleDoc)(doc, change, selAfter, spans);\n }\n if (change.to.line < doc.first) {\n shiftDoc(doc, change.text.length - 1 - (change.to.line - change.from.line));\n return;\n }\n if (change.from.line > doc.lastLine()) {\n return;\n }\n\n // Clip the change to the size of this doc\n if (change.from.line < doc.first) {\n var shift = change.text.length - 1 - (doc.first - change.from.line);\n shiftDoc(doc, shift);\n change = {\n from: Pos(doc.first, 0),\n to: Pos(change.to.line + shift, change.to.ch),\n text: [lst(change.text)],\n origin: change.origin\n };\n }\n var last = doc.lastLine();\n if (change.to.line > last) {\n change = {\n from: change.from,\n to: Pos(last, getLine(doc, last).text.length),\n text: [change.text[0]],\n origin: change.origin\n };\n }\n change.removed = getBetween(doc, change.from, change.to);\n if (!selAfter) {\n selAfter = computeSelAfterChange(doc, change);\n }\n if (doc.cm) {\n makeChangeSingleDocInEditor(doc.cm, change, spans);\n } else {\n updateDoc(doc, change, spans);\n }\n setSelectionNoUndo(doc, selAfter, sel_dontScroll);\n if (doc.cantEdit && skipAtomic(doc, Pos(doc.firstLine(), 0))) {\n doc.cantEdit = false;\n }\n }\n\n // Handle the interaction of a change to a document with the editor\n // that this document is part of.\n function makeChangeSingleDocInEditor(cm, change, spans) {\n var doc = cm.doc,\n display = cm.display,\n from = change.from,\n to = change.to;\n var recomputeMaxLength = false,\n 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) {\n signalCursorActivity(cm);\n }\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) {\n cm.curOp.updateMaxLine = true;\n }\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) {\n regChange(cm);\n } else if (from.line == to.line && change.text.length == 1 && !isWholeLineUpdate(cm.doc, change)) {\n regLineChange(cm, from.line, \"text\");\n } else {\n regChange(cm, from.line, to.line + 1, lendiff);\n }\n var changesHandler = hasHandler(cm, \"changes\"),\n 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) {\n signalLater(cm, \"change\", cm, obj);\n }\n if (changesHandler) {\n (cm.curOp.changeObjs || (cm.curOp.changeObjs = [])).push(obj);\n }\n }\n cm.display.selForContextMenu = null;\n }\n function replaceRange(doc, code, from, to, origin) {\n var assign;\n if (!to) {\n to = from;\n }\n if (cmp(to, from) < 0) {\n assign = [to, from], from = assign[0], to = assign[1];\n }\n if (typeof code == \"string\") {\n code = doc.splitLines(code);\n }\n makeChange(doc, {\n from: from,\n to: to,\n text: code,\n origin: origin\n });\n }\n\n // Rebasing/resetting history to deal with externally-sourced changes\n\n function rebaseHistSelSingle(pos, from, to, diff) {\n if (to < pos.line) {\n pos.line += diff;\n } else if (from < pos.line) {\n pos.line = from;\n pos.ch = 0;\n }\n }\n\n // Tries to rebase an array of history events given a change in the\n // document. If the change touches the same lines as the event, the\n // event, and everything 'behind' it, is discarded. If the change is\n // before the event, the event's positions are updated. Uses a\n // copy-on-write scheme for the positions, to avoid having to\n // reallocate them all on every rebase, but also avoid problems with\n // shared position objects being unsafely updated.\n function rebaseHistArray(array, from, to, diff) {\n for (var i = 0; i < array.length; ++i) {\n var sub = array[i],\n 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,\n to = change.to.line,\n diff = change.text.length - (to - from) - 1;\n rebaseHistArray(hist.done, from, to, diff);\n rebaseHistArray(hist.undone, from, to, diff);\n }\n\n // Utility for applying a change to a line by handle or number,\n // returning the number and optionally registering the line as\n // changed.\n function changeLine(doc, handle, changeType, op) {\n var no = handle,\n line = handle;\n if (typeof handle == \"number\") {\n line = getLine(doc, clipLine(doc, handle));\n } else {\n no = lineNo(handle);\n }\n if (no == null) {\n return null;\n }\n if (op(line, no) && doc.cm) {\n regLineChange(doc.cm, no, changeType);\n }\n return line;\n }\n\n // The document is represented as a BTree consisting of leaves, with\n // chunk of lines in them, and branches, with up to ten leaves or\n // other branch nodes below them. The top node is always a branch\n // node, and is the document object itself (meaning it has\n // additional methods and properties).\n //\n // All nodes have parent links. The tree is used both to go from\n // line numbers to line objects, and to go from objects to numbers.\n // It also indexes by height, and is used to convert between height\n // and line object, and to find the total height of the document.\n //\n // See also http://marijnhaverbeke.nl/blog/codemirror-line-tree.html\n\n function LeafChunk(lines) {\n this.lines = lines;\n this.parent = null;\n var height = 0;\n for (var i = 0; i < lines.length; ++i) {\n lines[i].parent = this;\n height += lines[i].height;\n }\n this.height = height;\n }\n 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) {\n lines[i].parent = this;\n }\n },\n // Used to iterate over a part of the tree.\n iterN: function (at, n, op) {\n for (var e = at + n; at < e; ++at) {\n if (op(this.lines[at])) {\n return true;\n }\n }\n }\n };\n function BranchChunk(children) {\n this.children = children;\n var size = 0,\n 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],\n sz = child.chunkSize();\n if (at < sz) {\n var rm = Math.min(n, sz - at),\n 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) {\n break;\n }\n at = 0;\n } else {\n at -= sz;\n }\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 = [new LeafChunk(lines)];\n this.children[0].parent = this;\n }\n },\n collapse: function (lines) {\n for (var i = 0; i < this.children.length; ++i) {\n this.children[i].collapse(lines);\n }\n },\n insertInner: function (at, lines, height) {\n this.size += lines.length;\n this.height += height;\n for (var i = 0; i < this.children.length; ++i) {\n var child = this.children[i],\n 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) {\n return;\n }\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 // Become the parent node\n var copy = new BranchChunk(me.children);\n copy.parent = me;\n me.children = [copy, sibling];\n me = copy;\n } else {\n me.size -= sibling.size;\n me.height -= sibling.height;\n var myIndex = indexOf(me.parent.children, me);\n me.parent.children.splice(myIndex + 1, 0, sibling);\n }\n sibling.parent = me.parent;\n } while (me.children.length > 10);\n me.parent.maybeSpill();\n },\n iterN: function (at, n, op) {\n for (var i = 0; i < this.children.length; ++i) {\n var child = this.children[i],\n sz = child.chunkSize();\n if (at < sz) {\n var used = Math.min(n, sz - at);\n if (child.iterN(at, used, op)) {\n return true;\n }\n if ((n -= used) == 0) {\n break;\n }\n at = 0;\n } else {\n at -= sz;\n }\n }\n }\n };\n\n // Line widgets are block elements displayed above or below a line.\n\n var LineWidget = function (doc, node, options) {\n if (options) {\n for (var opt in options) {\n if (options.hasOwnProperty(opt)) {\n this[opt] = options[opt];\n }\n }\n }\n this.doc = doc;\n this.node = node;\n };\n LineWidget.prototype.clear = function () {\n var cm = this.doc.cm,\n ws = this.line.widgets,\n line = this.line,\n no = lineNo(line);\n if (no == null || !ws) {\n return;\n }\n for (var i = 0; i < ws.length; ++i) {\n if (ws[i] == this) {\n ws.splice(i--, 1);\n }\n }\n if (!ws.length) {\n line.widgets = null;\n }\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,\n cm = this.doc.cm,\n line = this.line;\n this.height = null;\n var diff = widgetHeight(this) - oldH;\n if (!diff) {\n return;\n }\n if (!lineIsHidden(this.doc, line)) {\n updateLineHeight(line, line.height + diff);\n }\n if (cm) {\n runInOp(cm, function () {\n cm.curOp.forceUpdate = true;\n adjustScrollWhenAboveVisible(cm, line, diff);\n signalLater(cm, \"lineWidgetChanged\", cm, this$1, lineNo(line));\n });\n }\n };\n eventMixin(LineWidget);\n function adjustScrollWhenAboveVisible(cm, line, diff) {\n if (heightAtLine(line) < (cm.curOp && cm.curOp.scrollTop || cm.doc.scrollTop)) {\n addToScrollTop(cm, diff);\n }\n }\n function addLineWidget(doc, handle, node, options) {\n var widget = new LineWidget(doc, node, options);\n var cm = doc.cm;\n if (cm && widget.noHScroll) {\n cm.display.alignWidgets = true;\n }\n changeLine(doc, handle, \"widget\", function (line) {\n var widgets = line.widgets || (line.widgets = []);\n if (widget.insertAt == null) {\n widgets.push(widget);\n } else {\n widgets.splice(Math.min(widgets.length, Math.max(0, widget.insertAt)), 0, widget);\n }\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) {\n addToScrollTop(cm, widget.height);\n }\n cm.curOp.forceUpdate = true;\n }\n return true;\n });\n if (cm) {\n signalLater(cm, \"lineWidgetAdded\", cm, widget, typeof handle == \"number\" ? handle : lineNo(handle));\n }\n return widget;\n }\n\n // TEXTMARKERS\n\n // Created with markText and setBookmark methods. A TextMarker is a\n // handle that can be used to clear or find a marked position in the\n // document. Line objects hold arrays (markedSpans) containing\n // {from, to, marker} object pointing to such marker objects, and\n // indicating that such a marker is present on that line. Multiple\n // lines may point to the same marker when it spans across lines.\n // The spans will have null for their from/to properties when the\n // marker continues beyond the start/end of the line. Markers have\n // links back to the lines they currently touch.\n\n // Collapsed markers have unique ids, in order to be able to order\n // them, which is needed for uniquely determining an outer marker\n // when they overlap (they may nest, but not partially overlap).\n var nextMarkerId = 0;\n var TextMarker = function (doc, type) {\n this.lines = [];\n this.type = type;\n this.doc = doc;\n this.id = ++nextMarkerId;\n };\n\n // Clear the marker.\n TextMarker.prototype.clear = function () {\n if (this.explicitlyCleared) {\n return;\n }\n var cm = this.doc.cm,\n withOp = cm && !cm.curOp;\n if (withOp) {\n startOperation(cm);\n }\n if (hasHandler(this, \"clear\")) {\n var found = this.find();\n if (found) {\n signalLater(this, \"clear\", found.from, found.to);\n }\n }\n var min = null,\n 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) {\n regLineChange(cm, lineNo(line), \"text\");\n } else if (cm) {\n if (span.to != null) {\n max = lineNo(line);\n }\n if (span.from != null) {\n min = lineNo(line);\n }\n }\n line.markedSpans = removeMarkedSpan(line.markedSpans, span);\n if (span.from == null && this.collapsed && !lineIsHidden(this.doc, line) && cm) {\n updateLineHeight(line, textHeight(cm.display));\n }\n }\n if (cm && this.collapsed && !cm.options.lineWrapping) {\n for (var i$1 = 0; i$1 < this.lines.length; ++i$1) {\n var visual = visualLine(this.lines[i$1]),\n len = lineLength(visual);\n if (len > cm.display.maxLineLength) {\n cm.display.maxLine = visual;\n cm.display.maxLineLength = len;\n cm.display.maxLineChanged = true;\n }\n }\n }\n if (min != null && cm && this.collapsed) {\n regChange(cm, min, max + 1);\n }\n this.lines.length = 0;\n this.explicitlyCleared = true;\n if (this.atomic && this.doc.cantEdit) {\n this.doc.cantEdit = false;\n if (cm) {\n reCheckSelection(cm.doc);\n }\n }\n if (cm) {\n signalLater(cm, \"markerCleared\", cm, this, min, max);\n }\n if (withOp) {\n endOperation(cm);\n }\n if (this.parent) {\n this.parent.clear();\n }\n };\n\n // Find the position of the marker in the document. Returns a {from,\n // to} object by default. Side can be passed to get a specific side\n // -- 0 (both), -1 (left), or 1 (right). When lineObj is true, the\n // Pos objects returned contain a line object, rather than a line\n // number (used to prevent looking up the same line twice).\n TextMarker.prototype.find = function (side, lineObj) {\n if (side == null && this.type == \"bookmark\") {\n side = 1;\n }\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) {\n return from;\n }\n }\n if (span.to != null) {\n to = Pos(lineObj ? line : lineNo(line), span.to);\n if (side == 1) {\n return to;\n }\n }\n }\n return from && {\n from: from,\n to: to\n };\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),\n widget = this,\n cm = this.doc.cm;\n if (!pos || !cm) {\n return;\n }\n runInOp(cm, function () {\n var line = pos.line,\n lineN = lineNo(pos.line);\n var view = findViewForLine(cm, lineN);\n if (view) {\n clearLineMeasurementCacheFor(view);\n cm.curOp.selectionChanged = cm.curOp.forceUpdate = true;\n }\n cm.curOp.updateMaxLine = true;\n if (!lineIsHidden(widget.doc, line) && widget.height != null) {\n var oldHeight = widget.height;\n widget.height = null;\n var dHeight = widgetHeight(widget) - oldHeight;\n if (dHeight) {\n updateLineHeight(line, line.height + dHeight);\n }\n }\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) {\n (op.maybeUnhiddenMarkers || (op.maybeUnhiddenMarkers = [])).push(this);\n }\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\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) {\n return markTextShared(doc, from, to, options, type);\n }\n // Ensure we are in an operation.\n if (doc.cm && !doc.cm.curOp) {\n return operation(doc.cm, markText)(doc, from, to, options, type);\n }\n var marker = new TextMarker(doc, type),\n diff = cmp(from, to);\n if (options) {\n copyObj(options, marker, false);\n }\n // Don't connect empty markers unless clearWhenEmpty is false\n if (diff > 0 || diff == 0 && marker.clearWhenEmpty !== false) {\n return marker;\n }\n if (marker.replacedWith) {\n // Showing up as a widget implies collapsed (widget replaces text)\n marker.collapsed = true;\n marker.widgetNode = eltP(\"span\", [marker.replacedWith], \"CodeMirror-widget\");\n if (!options.handleMouseEvents) {\n marker.widgetNode.setAttribute(\"cm-ignore-events\", \"true\");\n }\n if (options.insertLeft) {\n marker.widgetNode.insertLeft = true;\n }\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)) {\n throw new Error(\"Inserting collapsed marker partially overlapping an existing one\");\n }\n seeCollapsedSpans();\n }\n if (marker.addToHistory) {\n addChangeToHistory(doc, {\n from: from,\n to: to,\n origin: \"markText\"\n }, doc.sel, NaN);\n }\n var curLine = from.line,\n cm = doc.cm,\n updateMaxLine;\n doc.iter(curLine, to.line + 1, function (line) {\n if (cm && marker.collapsed && !cm.options.lineWrapping && visualLine(line) == cm.display.maxLine) {\n updateMaxLine = true;\n }\n if (marker.collapsed && curLine != from.line) {\n updateLineHeight(line, 0);\n }\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) {\n doc.iter(from.line, to.line + 1, function (line) {\n if (lineIsHidden(doc, line)) {\n updateLineHeight(line, 0);\n }\n });\n }\n if (marker.clearOnEnter) {\n on(marker, \"beforeCursorEnter\", function () {\n return marker.clear();\n });\n }\n if (marker.readOnly) {\n seeReadOnlySpans();\n if (doc.history.done.length || doc.history.undone.length) {\n doc.clearHistory();\n }\n }\n if (marker.collapsed) {\n marker.id = ++nextMarkerId;\n marker.atomic = true;\n }\n if (cm) {\n // Sync editor state\n if (updateMaxLine) {\n cm.curOp.updateMaxLine = true;\n }\n if (marker.collapsed) {\n regChange(cm, from.line, to.line + 1);\n } else if (marker.className || marker.startStyle || marker.endStyle || marker.css || marker.attributes || marker.title) {\n for (var i = from.line; i <= to.line; i++) {\n regLineChange(cm, i, \"text\");\n }\n }\n if (marker.atomic) {\n reCheckSelection(cm.doc);\n }\n signalLater(cm, \"markerAdded\", cm, marker);\n }\n return marker;\n }\n\n // SHARED TEXTMARKERS\n\n // A shared marker spans multiple linked documents. It is\n // implemented as a meta-marker-object controlling multiple normal\n // markers.\n var SharedTextMarker = function (markers, primary) {\n this.markers = markers;\n this.primary = primary;\n for (var i = 0; i < markers.length; ++i) {\n markers[i].parent = this;\n }\n };\n SharedTextMarker.prototype.clear = function () {\n if (this.explicitlyCleared) {\n return;\n }\n this.explicitlyCleared = true;\n for (var i = 0; i < this.markers.length; ++i) {\n this.markers[i].clear();\n }\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 = [markText(doc, from, to, options, type)],\n primary = markers[0];\n var widget = options.widgetNode;\n linkedDocs(doc, function (doc) {\n if (widget) {\n options.widgetNode = widget.cloneNode(true);\n }\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) {\n return;\n }\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],\n pos = marker.find();\n var mFrom = doc.clipPos(pos.from),\n 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],\n linked = [marker.primary.doc];\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)) {\n return new Doc(text, mode, firstLine, lineSep, direction);\n }\n if (firstLine == null) {\n firstLine = 0;\n }\n BranchChunk.call(this, [new LeafChunk([new Line(\"\", null)])]);\n this.first = firstLine;\n this.scrollTop = this.scrollLeft = 0;\n this.cantEdit = false;\n this.cleanGeneration = 1;\n this.modeFrontier = this.highlightFrontier = firstLine;\n var start = Pos(firstLine, 0);\n this.sel = simpleSelection(start);\n this.history = new History(null);\n this.id = ++nextDocId;\n this.modeOption = mode;\n this.lineSep = lineSep;\n this.direction = direction == \"rtl\" ? \"rtl\" : \"ltr\";\n this.extend = false;\n if (typeof text == \"string\") {\n text = this.splitLines(text);\n }\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) {\n this.iterN(from - this.first, to - from, op);\n } else {\n this.iterN(this.first, this.first + this.size, from);\n }\n },\n // Non-public interface for adding and removing lines.\n insert: function (at, lines) {\n var height = 0;\n for (var i = 0; i < lines.length; ++i) {\n height += lines[i].height;\n }\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\n getValue: function (lineSep) {\n var lines = getLines(this, this.first, this.first + this.size);\n if (lineSep === false) {\n return lines;\n }\n return lines.join(lineSep || this.lineSeparator());\n },\n setValue: docMethodOp(function (code) {\n var top = Pos(this.first, 0),\n 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) {\n scrollToCoords(this.cm, 0, 0);\n }\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) {\n return lines;\n }\n if (lineSep === '') {\n return lines.join('');\n }\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)) {\n return getLine(this, line);\n }\n },\n getLineNumber: function (line) {\n return lineNo(line);\n },\n getLineHandleVisualStart: function (line) {\n if (typeof line == \"number\") {\n line = getLine(this, line);\n }\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(),\n pos;\n if (start == null || start == \"head\") {\n pos = range.head;\n } else if (start == \"anchor\") {\n pos = range.anchor;\n } else if (start == \"end\" || start == \"to\" || start === false) {\n pos = range.to();\n } else {\n pos = range.from();\n }\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) {\n return;\n }\n var out = [];\n for (var i = 0; i < ranges.length; i++) {\n out[i] = new Range(clipPos(this, ranges[i].anchor), clipPos(this, ranges[i].head || ranges[i].anchor));\n }\n if (primary == null) {\n primary = Math.min(ranges.length - 1, this.sel.primIndex);\n }\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,\n 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) {\n return lines;\n } else {\n return lines.join(lineSep || this.lineSeparator());\n }\n },\n getSelections: function (lineSep) {\n var parts = [],\n 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) {\n sel = sel.join(lineSep || this.lineSeparator());\n }\n parts[i] = sel;\n }\n return parts;\n },\n replaceSelection: function (code, collapse, origin) {\n var dup = [];\n for (var i = 0; i < this.sel.ranges.length; i++) {\n dup[i] = code;\n }\n this.replaceSelections(dup, collapse, origin || \"+input\");\n },\n replaceSelections: docMethodOp(function (code, collapse, origin) {\n var changes = [],\n 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--) {\n makeChange(this, changes[i$1]);\n }\n if (newSel) {\n setSelectionReplaceHistory(this, newSel);\n } else if (this.cm) {\n ensureCursorVisible(this.cm);\n }\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,\n done = 0,\n undone = 0;\n for (var i = 0; i < hist.done.length; i++) {\n if (!hist.done[i].ranges) {\n ++done;\n }\n }\n for (var i$1 = 0; i$1 < hist.undone.length; i$1++) {\n if (!hist.undone[i$1].ranges) {\n ++undone;\n }\n }\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) {\n this.history.lastOp = this.history.lastSelOp = this.history.lastOrigin = null;\n }\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)) {\n line.gutterMarkers = null;\n }\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]) {\n changeLine(this$1, line, \"gutter\", function () {\n line.gutterMarkers[gutterID] = null;\n if (isEmpty(line.gutterMarkers)) {\n line.gutterMarkers = null;\n }\n return true;\n });\n }\n });\n }),\n lineInfo: function (line) {\n var n;\n if (typeof line == \"number\") {\n if (!isLine(this, line)) {\n return null;\n }\n n = line;\n line = getLine(this, line);\n if (!line) {\n return null;\n }\n } else {\n n = lineNo(line);\n if (n == null) {\n return null;\n }\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]) {\n line[prop] = cls;\n } else if (classTest(cls).test(line[prop])) {\n return false;\n } else {\n line[prop] += \" \" + cls;\n }\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) {\n return false;\n } else if (cls == null) {\n line[prop] = null;\n } else {\n var found = cur.match(classTest(cls));\n if (!found) {\n return false;\n }\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 = [],\n spans = getLine(this, pos.line).markedSpans;\n if (spans) {\n 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)) {\n markers.push(span.marker.parent || span.marker);\n }\n }\n }\n return markers;\n },\n findMarks: function (from, to, filter) {\n from = clipPos(this, from);\n to = clipPos(this, to);\n var found = [],\n lineNo = from.line;\n this.iter(from.line, to.line + 1, function (line) {\n var spans = line.markedSpans;\n if (spans) {\n 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))) {\n found.push(span.marker.parent || span.marker);\n }\n }\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) {\n if (sps[i].from != null) {\n markers.push(sps[i].marker);\n }\n }\n }\n });\n return markers;\n },\n posFromIndex: function (off) {\n var ch,\n lineNo = this.first,\n 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) {\n return 0;\n }\n var sepSize = this.lineSeparator().length;\n this.iter(this.first, coords.line, function (line) {\n // iter aborts when callback returns a truthy value\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) {\n options = {};\n }\n var from = this.first,\n to = this.first + this.size;\n if (options.from != null && options.from > from) {\n from = options.from;\n }\n if (options.to != null && options.to < to) {\n to = options.to;\n }\n var copy = new Doc(getLines(this, from, to), options.mode || this.modeOption, from, this.lineSep, this.direction);\n if (options.sharedHist) {\n copy.history = this.history;\n }\n (this.linked || (this.linked = [])).push({\n doc: copy,\n sharedHist: options.sharedHist\n });\n copy.linked = [{\n doc: this,\n isParent: true,\n sharedHist: options.sharedHist\n }];\n copySharedMarkers(copy, findSharedMarkers(this));\n return copy;\n },\n unlinkDoc: function (other) {\n if (other instanceof CodeMirror) {\n other = other.doc;\n }\n if (this.linked) {\n for (var i = 0; i < this.linked.length; ++i) {\n var link = this.linked[i];\n if (link.doc != other) {\n continue;\n }\n this.linked.splice(i, 1);\n other.unlinkDoc(this);\n detachSharedMarkers(findSharedMarkers(this));\n break;\n }\n }\n // If the histories were shared, split them again\n if (other.history == this.history) {\n var splitIds = [other.id];\n linkedDocs(other, function (doc) {\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) {\n return str.split(this.lineSep);\n }\n return splitLinesAuto(str);\n },\n lineSeparator: function () {\n return this.lineSep || \"\\n\";\n },\n setDirection: docMethodOp(function (dir) {\n if (dir != \"rtl\") {\n dir = \"ltr\";\n }\n if (dir == this.direction) {\n return;\n }\n this.direction = dir;\n this.iter(function (line) {\n return line.order = null;\n });\n if (this.cm) {\n directionChanged(this.cm);\n }\n })\n });\n\n // Public alias.\n Doc.prototype.eachLine = Doc.prototype.iter;\n\n // Kludge to work around strange IE behavior where it'll sometimes\n // re-fire a series of drag-related events right after the drop (#1551)\n var lastDrop = 0;\n function onDrop(e) {\n var cm = this;\n clearDragCursor(cm);\n if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e)) {\n return;\n }\n e_preventDefault(e);\n if (ie) {\n lastDrop = +new Date();\n }\n var pos = posFromMouse(cm, e, true),\n files = e.dataTransfer.files;\n if (!pos || cm.isReadOnly()) {\n return;\n }\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,\n text = Array(n),\n read = 0;\n var markAsReadAndPasteIfAllFilesAreRead = function () {\n if (++read == n) {\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 };\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++) {\n readTextFromFile(files[i], i);\n }\n } else {\n // Normal drop\n // Don't do a replace if the drop happened inside of the selected text.\n if (cm.state.draggingText && cm.doc.sel.contains(pos) > -1) {\n cm.state.draggingText(e);\n // Ensure the editor is re-focused\n setTimeout(function () {\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) {\n selected = cm.listSelections();\n }\n setSelectionNoUndo(cm.doc, simpleSelection(pos, pos));\n if (selected) {\n for (var i$1 = 0; i$1 < selected.length; ++i$1) {\n replaceRange(cm.doc, \"\", selected[i$1].anchor, selected[i$1].head, \"drag\");\n }\n }\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)) {\n return;\n }\n e.dataTransfer.setData(\"Text\", cm.getSelection());\n e.dataTransfer.effectAllowed = \"copyMove\";\n\n // Use dummy image instead of default browsers image.\n // Recent Safari (~6.0.2) have a tendency to segfault when this happens, so we don't do it there.\n if (e.dataTransfer.setDragImage && !safari) {\n var img = elt(\"img\", null, null, \"position: fixed; left: 0; top: 0;\");\n img.src = \"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\";\n if (presto) {\n img.width = img.height = 1;\n cm.display.wrapper.appendChild(img);\n // Force a relayout, or Opera won't use our image for some obscure reason\n img._top = img.offsetTop;\n }\n e.dataTransfer.setDragImage(img, 0, 0);\n if (presto) {\n img.parentNode.removeChild(img);\n }\n }\n }\n function onDragOver(cm, e) {\n var pos = posFromMouse(cm, e);\n if (!pos) {\n return;\n }\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\n // These must be handled carefully, because naively registering a\n // handler for each editor will cause the editors to never be\n // garbage collected.\n\n function forEachCodeMirror(f) {\n if (!document.getElementsByClassName) {\n return;\n }\n var byClass = document.getElementsByClassName(\"CodeMirror\"),\n editors = [];\n for (var i = 0; i < byClass.length; i++) {\n var cm = byClass[i].CodeMirror;\n if (cm) {\n editors.push(cm);\n }\n }\n if (editors.length) {\n editors[0].operation(function () {\n for (var i = 0; i < editors.length; i++) {\n f(editors[i]);\n }\n });\n }\n }\n var globalsRegistered = false;\n function ensureGlobalHandlers() {\n if (globalsRegistered) {\n return;\n }\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) {\n resizeTimer = setTimeout(function () {\n resizeTimer = null;\n forEachCodeMirror(onResize);\n }, 100);\n }\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\n // Number keys\n for (var i = 0; i < 10; i++) {\n keyNames[i + 48] = keyNames[i + 96] = String(i);\n }\n // Alphabetic keys\n for (var i$1 = 65; i$1 <= 90; i$1++) {\n keyNames[i$1] = String.fromCharCode(i$1);\n }\n // Function keys\n for (var i$2 = 1; i$2 <= 12; i$2++) {\n keyNames[i$2 + 111] = keyNames[i$2 + 63235] = \"F\" + i$2;\n }\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\": [\"basic\", \"emacsy\"]\n };\n keyMap[\"default\"] = mac ? keyMap.macDefault : keyMap.pcDefault;\n\n // KEYMAP DISPATCH\n\n function normalizeKeyName(name) {\n var parts = name.split(/-(?!$)/);\n name = parts[parts.length - 1];\n var alt, ctrl, shift, cmd;\n for (var i = 0; i < parts.length - 1; i++) {\n var mod = parts[i];\n if (/^(cmd|meta|m)$/i.test(mod)) {\n cmd = true;\n } else if (/^a(lt)?$/i.test(mod)) {\n alt = true;\n } else if (/^(c|ctrl|control)$/i.test(mod)) {\n ctrl = true;\n } else if (/^s(hift)?$/i.test(mod)) {\n shift = true;\n } else {\n throw new Error(\"Unrecognized modifier name: \" + mod);\n }\n }\n if (alt) {\n name = \"Alt-\" + name;\n }\n if (ctrl) {\n name = \"Ctrl-\" + name;\n }\n if (cmd) {\n name = \"Cmd-\" + name;\n }\n if (shift) {\n name = \"Shift-\" + name;\n }\n return name;\n }\n\n // This is a kludge to keep keymaps mostly working as raw objects\n // (backwards compatibility) while at the same time support features\n // like normalization and multi-stroke key bindings. It compiles a\n // new normalized keymap, and then updates the old object to reflect\n // this.\n function normalizeKeyMap(keymap) {\n var copy = {};\n for (var keyname in keymap) {\n if (keymap.hasOwnProperty(keyname)) {\n var value = keymap[keyname];\n if (/^(name|fallthrough|(de|at)tach)$/.test(keyname)) {\n continue;\n }\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,\n 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) {\n copy[name] = val;\n } else if (prev != val) {\n throw new Error(\"Inconsistent bindings for \" + name);\n }\n }\n delete keymap[keyname];\n }\n }\n for (var prop in copy) {\n keymap[prop] = copy[prop];\n }\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) {\n return \"nothing\";\n }\n if (found === \"...\") {\n return \"multi\";\n }\n if (found != null && handle(found)) {\n return \"handled\";\n }\n if (map.fallthrough) {\n if (Object.prototype.toString.call(map.fallthrough) != \"[object Array]\") {\n return lookupKey(key, map.fallthrough, handle, context);\n }\n for (var i = 0; i < map.fallthrough.length; i++) {\n var result = lookupKey(key, map.fallthrough[i], handle, context);\n if (result) {\n return result;\n }\n }\n }\n }\n\n // Modifier key presses don't count as 'real' key presses for the\n // purpose of keymap fallthrough.\n function isModifierKey(value) {\n var name = typeof value == \"string\" ? value : keyNames[value.keyCode];\n return name == \"Ctrl\" || name == \"Alt\" || name == \"Shift\" || name == \"Mod\";\n }\n function addModifierNames(name, event, noShift) {\n var base = name;\n if (event.altKey && base != \"Alt\") {\n name = \"Alt-\" + name;\n }\n if ((flipCtrlCmd ? event.metaKey : event.ctrlKey) && base != \"Ctrl\") {\n name = \"Ctrl-\" + name;\n }\n if ((flipCtrlCmd ? event.ctrlKey : event.metaKey) && base != \"Mod\") {\n name = \"Cmd-\" + name;\n }\n if (!noShift && event.shiftKey && base != \"Shift\") {\n name = \"Shift-\" + name;\n }\n return name;\n }\n\n // Look up the name of a key as indicated by an event object.\n function keyName(event, noShift) {\n if (presto && event.keyCode == 34 && event[\"char\"]) {\n return false;\n }\n var name = keyNames[event.keyCode];\n if (name == null || event.altGraphKey) {\n return false;\n }\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) {\n name = event.code;\n }\n return addModifierNames(name, event, noShift);\n }\n function getKeyMap(val) {\n return typeof val == \"string\" ? keyMap[val] : val;\n }\n\n // Helper for deleting text near the selection(s), used to implement\n // backspace, delete, and similar functionality.\n function deleteNearSelection(cm, compute) {\n var ranges = cm.doc.sel.ranges,\n kill = [];\n // Build up a set of ranges to kill first, merging overlapping\n // ranges.\n for (var i = 0; i < ranges.length; i++) {\n var toKill = compute(ranges[i]);\n while (kill.length && cmp(toKill.from, lst(kill).to) <= 0) {\n var replaced = kill.pop();\n if (cmp(replaced.from, toKill.from) < 0) {\n toKill.from = replaced.from;\n break;\n }\n }\n kill.push(toKill);\n }\n // Next, remove those actual ranges.\n runInOp(cm, function () {\n for (var i = kill.length - 1; i >= 0; i--) {\n replaceRange(cm.doc, \"\", kill[i].from, kill[i].to, \"+delete\");\n }\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\") {\n dir = -dir;\n }\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\") {\n ch = moveCharLogically(lineObj, ch, 1);\n }\n } else {\n ch = dir < 0 ? part.to : part.from;\n }\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) {\n return moveLogically(line, start, dir);\n }\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),\n part = bidi[partPos];\n if (cm.doc.direction == \"ltr\" && part.level % 2 == 0 && (dir > 0 ? part.to > start.ch : part.from < start.ch)) {\n // Case 1: We move within an ltr part in an ltr editor. Even with wrapped lines,\n // nothing interesting happens.\n return moveLogically(line, start, dir);\n }\n 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) {\n return {\n begin: 0,\n end: line.text.length\n };\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\n // Case 3: Could not move within this bidi part in this visual line, so leave\n // the current bidi part\n\n var searchInVisualLine = function (partPos, dir, wrappedLineExtent) {\n var getRes = function (ch, moveInStorageOrder) {\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) {\n return getRes(ch, moveInStorageOrder);\n }\n ch = moveInStorageOrder ? part.from : mv(part.to, -1);\n if (wrappedLineExtent.begin <= ch && ch < wrappedLineExtent.end) {\n return getRes(ch, moveInStorageOrder);\n }\n }\n };\n\n // Case 3a: Look for other bidi parts on the same visual line\n var res = searchInVisualLine(partPos + dir, dir, wrappedLineExtent);\n if (res) {\n return res;\n }\n\n // Case 3b: Look for other bidi parts on the next visual line\n var nextCh = dir > 0 ? wrappedLineExtent.end : mv(wrappedLineExtent.begin, -1);\n if (nextCh != null && !(dir > 0 && nextCh == line.text.length)) {\n res = searchInVisualLine(dir > 0 ? 0 : bidi.length - 1, dir, getWrappedLineExtent(nextCh));\n if (res) {\n return res;\n }\n }\n\n // Case 4: Nowhere to move\n return null;\n }\n\n // Commands are parameter-less actions that can be performed on an\n // editor, mostly used for keybindings.\n var commands = {\n selectAll: selectAll,\n singleSelection: function (cm) {\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()) {\n return {\n from: range.head,\n to: Pos(range.head.line + 1, 0)\n };\n } else {\n return {\n from: range.head,\n to: Pos(range.head.line, len)\n };\n }\n } else {\n return {\n from: range.from(),\n to: range.to()\n };\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/)) {\n return lineStartSmart(cm, range.head);\n }\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 = [],\n ranges = cm.listSelections(),\n 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()) {\n cm.indentSelection(\"add\");\n } else {\n cm.execCommand(\"insertTab\");\n }\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(),\n newSel = [];\n for (var i = 0; i < ranges.length; i++) {\n if (!ranges[i].empty()) {\n continue;\n }\n var cur = ranges[i].head,\n line = getLine(cm.doc, cur.line).text;\n if (line) {\n if (cur.ch == line.length) {\n cur = new Pos(cur.line, cur.ch - 1);\n }\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--) {\n cm.replaceRange(cm.doc.lineSeparator(), sels[i].anchor, sels[i].head, \"+input\");\n }\n sels = cm.listSelections();\n for (var i$1 = 0; i$1 < sels.length; i$1++) {\n cm.indentLine(sels[i$1].from().line, null, true);\n }\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) {\n lineN = lineNo(visual);\n }\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) {\n lineN = lineNo(visual);\n }\n return endOfLine(true, cm, line, lineN, -1);\n }\n function lineStartSmart(cm, pos) {\n var start = lineStart(cm, pos.line);\n var line = getLine(cm.doc, start.line);\n var order = getOrder(line, cm.doc.direction);\n if (!order || order[0].level == 0) {\n var firstNonWS = Math.max(start.ch, line.text.search(/\\S/));\n var inWS = pos.line == start.line && pos.ch <= firstNonWS && pos.ch;\n return Pos(start.line, inWS ? 0 : firstNonWS, start.sticky);\n }\n return start;\n }\n\n // Run a handler that was bound to a key.\n function doHandleBinding(cm, bound, dropShift) {\n if (typeof bound == \"string\") {\n bound = commands[bound];\n if (!bound) {\n return false;\n }\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,\n done = false;\n try {\n if (cm.isReadOnly()) {\n cm.state.suppressEdits = true;\n }\n if (dropShift) {\n cm.display.shift = false;\n }\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) {\n return result;\n }\n }\n return cm.options.extraKeys && lookupKey(name, cm.options.extraKeys, handle, cm) || lookupKey(name, cm.options.keyMap, handle, cm);\n }\n\n // Note that, despite the name, this function is also used to check\n // for bound mouse clicks.\n\n var stopSeq = new Delayed();\n function dispatchKey(cm, name, e, handle) {\n var seq = cm.state.keySeq;\n if (seq) {\n if (isModifierKey(name)) {\n return \"handled\";\n }\n if (/\\'$/.test(name)) {\n cm.state.keySeq = null;\n } else {\n stopSeq.set(50, function () {\n if (cm.state.keySeq == seq) {\n cm.state.keySeq = null;\n cm.display.input.reset();\n }\n });\n }\n if (dispatchKeyInner(cm, seq + \" \" + name, e, handle)) {\n return true;\n }\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\") {\n cm.state.keySeq = name;\n }\n if (result == \"handled\") {\n signalLater(cm, \"keyHandled\", cm, name, e);\n }\n if (result == \"handled\" || result == \"multi\") {\n e_preventDefault(e);\n restartBlink(cm);\n }\n return !!result;\n }\n\n // Handle a key from the keydown event.\n function handleKeyBinding(cm, e) {\n var name = keyName(e, true);\n if (!name) {\n return false;\n }\n if (e.shiftKey && !cm.state.keySeq) {\n // First try to resolve full name (including 'Shift-'). Failing\n // that, see if there is a cursor-motion command (starting with\n // 'go') bound to the keyname without 'Shift-'.\n return dispatchKey(cm, \"Shift-\" + name, e, function (b) {\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) {\n return doHandleBinding(cm, b);\n }\n });\n } else {\n return dispatchKey(cm, name, e, function (b) {\n return doHandleBinding(cm, b);\n });\n }\n }\n\n // Handle a key from the keypress event\n function handleCharBinding(cm, e, ch) {\n return dispatchKey(cm, \"'\" + ch + \"'\", e, function (b) {\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()) {\n return;\n }\n cm.curOp.focus = activeElt();\n if (signalDOMEvent(cm, e)) {\n return;\n }\n // IE does strange things with escape.\n if (ie && ie_version < 11 && e.keyCode == 27) {\n e.returnValue = false;\n }\n var code = e.keyCode;\n cm.display.shift = code == 16 || e.shiftKey;\n var handled = handleKeyBinding(cm, e);\n if (presto) {\n lastStoppedKey = handled ? code : null;\n // Opera has no cut event... we try to at least catch the key combo\n if (!handled && code == 88 && !hasCopyEvent && (mac ? e.metaKey : e.ctrlKey)) {\n cm.replaceSelection(\"\", null, \"cut\");\n }\n }\n if (gecko && !mac && !handled && code == 46 && e.shiftKey && !e.ctrlKey && document.execCommand) {\n document.execCommand(\"cut\");\n }\n\n // Turn mouse into crosshair when Alt is held on Mac.\n if (code == 18 && !/\\bCodeMirror-crosshair\\b/.test(cm.display.lineDiv.className)) {\n showCrossHair(cm);\n }\n }\n function showCrossHair(cm) {\n var lineDiv = cm.display.lineDiv;\n addClass(lineDiv, \"CodeMirror-crosshair\");\n 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) {\n this.doc.sel.shift = false;\n }\n signalDOMEvent(this, e);\n }\n function onKeyPress(e) {\n var cm = this;\n if (e.target && e.target != cm.display.input.getField()) {\n return;\n }\n if (eventInWidget(cm.display, e) || signalDOMEvent(cm, e) || e.ctrlKey && !e.altKey || mac && e.metaKey) {\n return;\n }\n var keyCode = e.keyCode,\n 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)) {\n return;\n }\n var ch = String.fromCharCode(charCode == null ? keyCode : charCode);\n // Some browsers fire keypress events for backspace\n if (ch == \"\\x08\") {\n return;\n }\n if (handleCharBinding(cm, e, ch)) {\n return;\n }\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\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,\n display = cm.display;\n if (signalDOMEvent(cm, e) || display.activeTouch && display.input.supportsTouch()) {\n return;\n }\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)) {\n return;\n }\n var pos = posFromMouse(cm, e),\n button = e_button(e),\n repeat = pos ? clickRepeat(pos, button) : \"single\";\n window.focus();\n\n // #3261: make sure, that we're not starting a second selection\n if (button == 1 && cm.state.selectingText) {\n cm.state.selectingText(e);\n }\n if (pos && handleMappedButton(cm, button, pos, repeat, e)) {\n return;\n }\n if (button == 1) {\n if (pos) {\n leftButtonDown(cm, pos, repeat, e);\n } else if (e_target(e) == display.scroller) {\n e_preventDefault(e);\n }\n } else if (button == 2) {\n if (pos) {\n extendSelection(cm.doc, pos);\n }\n setTimeout(function () {\n return display.input.focus();\n }, 20);\n } else if (button == 3) {\n if (captureRightClick) {\n cm.display.input.onContextMenu(e);\n } else {\n delayBlurEvent(cm);\n }\n }\n }\n function handleMappedButton(cm, button, pos, repeat, event) {\n var name = \"Click\";\n if (repeat == \"double\") {\n name = \"Double\" + name;\n } else if (repeat == \"triple\") {\n name = \"Triple\" + name;\n }\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\") {\n bound = commands[bound];\n }\n if (!bound) {\n return false;\n }\n var done = false;\n try {\n if (cm.isReadOnly()) {\n cm.state.suppressEdits = true;\n }\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) {\n value.extend = cm.doc.extend || event.shiftKey;\n }\n if (value.addNew == null) {\n value.addNew = mac ? event.metaKey : event.ctrlKey;\n }\n if (value.moveOnDrag == null) {\n value.moveOnDrag = !(mac ? event.altKey : event.ctrlKey);\n }\n return value;\n }\n function leftButtonDown(cm, pos, repeat, event) {\n if (ie) {\n setTimeout(bind(ensureFocus, cm), 0);\n } else {\n cm.curOp.focus = activeElt();\n }\n var behavior = configureMouse(cm, repeat, event);\n var sel = cm.doc.sel,\n 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)) {\n leftButtonStartDrag(cm, event, pos, behavior);\n } else {\n leftButtonSelect(cm, event, pos, behavior);\n }\n }\n\n // Start a text drag. When it ends, see if any dragging actually\n // happen, and treat as a click if it didn't.\n function leftButtonStartDrag(cm, event, pos, behavior) {\n var display = cm.display,\n moved = false;\n var dragEnd = operation(cm, function (e) {\n if (webkit) {\n display.scroller.draggable = false;\n }\n cm.state.draggingText = false;\n if (cm.state.delayingBlurEvent) {\n if (cm.hasFocus()) {\n cm.state.delayingBlurEvent = false;\n } else {\n delayBlurEvent(cm);\n }\n }\n off(display.wrapper.ownerDocument, \"mouseup\", dragEnd);\n off(display.wrapper.ownerDocument, \"mousemove\", mouseMove);\n off(display.scroller, \"dragstart\", dragStart);\n off(display.scroller, \"drop\", dragEnd);\n if (!moved) {\n e_preventDefault(e);\n if (!behavior.addNew) {\n extendSelection(cm.doc, pos, null, null, behavior.extend);\n }\n // Work around unexplainable focus problem in IE9 (#2127) and Chrome (#3081)\n if (webkit && !safari || ie && ie_version == 9) {\n setTimeout(function () {\n display.wrapper.ownerDocument.body.focus({\n preventScroll: true\n });\n display.input.focus();\n }, 20);\n } else {\n display.input.focus();\n }\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) {\n display.scroller.draggable = true;\n }\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) {\n display.scroller.dragDrop();\n }\n }\n function rangeForUnit(cm, pos, unit) {\n if (unit == \"char\") {\n return new Range(pos, pos);\n }\n if (unit == \"word\") {\n return cm.findWordAt(pos);\n }\n if (unit == \"line\") {\n return new Range(Pos(pos.line, 0), clipPos(cm.doc, Pos(pos.line + 1, 0)));\n }\n var result = unit(cm, pos);\n return new Range(result.from, result.to);\n }\n\n // Normal selection, as opposed to text dragging.\n function leftButtonSelect(cm, event, start, behavior) {\n if (ie) {\n delayBlurEvent(cm);\n }\n var display = cm.display,\n doc = cm.doc;\n e_preventDefault(event);\n var ourRange,\n ourIndex,\n startSel = doc.sel,\n ranges = startSel.ranges;\n if (behavior.addNew && !behavior.extend) {\n ourIndex = doc.sel.contains(start);\n if (ourIndex > -1) {\n ourRange = ranges[ourIndex];\n } else {\n ourRange = new Range(start, start);\n }\n } else {\n ourRange = doc.sel.primary();\n ourIndex = doc.sel.primIndex;\n }\n if (behavior.unit == \"rectangle\") {\n if (!behavior.addNew) {\n ourRange = new Range(start, start);\n }\n start = posFromMouse(cm, event, true, true);\n ourIndex = -1;\n } else {\n var range = rangeForUnit(cm, start, behavior.unit);\n if (behavior.extend) {\n ourRange = extendRange(ourRange, range.anchor, range.head, behavior.extend);\n } else {\n ourRange = range;\n }\n }\n if (!behavior.addNew) {\n ourIndex = 0;\n setSelection(doc, new Selection([ourRange], 0), sel_mouse);\n startSel = doc.sel;\n } else if (ourIndex == -1) {\n ourIndex = ranges.length;\n setSelection(doc, normalizeSelection(cm, ranges.concat([ourRange]), ourIndex), {\n scroll: false,\n origin: \"*mouse\"\n });\n } else if (ranges.length > 1 && ranges[ourIndex].empty() && behavior.unit == \"char\" && !behavior.extend) {\n setSelection(doc, normalizeSelection(cm, ranges.slice(0, ourIndex).concat(ranges.slice(ourIndex + 1)), 0), {\n scroll: false,\n origin: \"*mouse\"\n });\n startSel = doc.sel;\n } else {\n replaceOneSelection(doc, ourIndex, ourRange, sel_mouse);\n }\n var lastPos = start;\n function extendTo(pos) {\n if (cmp(lastPos, pos) == 0) {\n return;\n }\n lastPos = pos;\n if (behavior.unit == \"rectangle\") {\n var ranges = [],\n tabSize = cm.options.tabSize;\n var startCol = countColumn(getLine(doc, start.line).text, start.ch, tabSize);\n var posCol = countColumn(getLine(doc, pos.line).text, pos.ch, tabSize);\n var left = Math.min(startCol, posCol),\n 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, line).text,\n leftPos = findColumn(text, left, tabSize);\n if (left == right) {\n ranges.push(new Range(Pos(line, leftPos), Pos(line, leftPos)));\n } else if (text.length > leftPos) {\n ranges.push(new Range(Pos(line, leftPos), Pos(line, findColumn(text, right, tabSize))));\n }\n }\n if (!ranges.length) {\n ranges.push(new Range(start, start));\n }\n setSelection(doc, 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,\n head;\n if (cmp(range.anchor, anchor) > 0) {\n head = range.head;\n anchor = minPos(oldRange.from(), range.anchor);\n } else {\n head = range.anchor;\n anchor = maxPos(oldRange.to(), range.head);\n }\n var ranges$1 = startSel.ranges.slice(0);\n ranges$1[ourIndex] = bidiSimplify(cm, new Range(clipPos(doc, anchor), head));\n setSelection(doc, normalizeSelection(cm, ranges$1, ourIndex), sel_mouse);\n }\n }\n 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) {\n return;\n }\n if (cmp(cur, lastPos) != 0) {\n cm.curOp.focus = activeElt();\n extendTo(cur);\n var visible = visibleLines(display, doc);\n if (cur.line >= visible.to || cur.line < visible.from) {\n setTimeout(operation(cm, function () {\n if (counter == curCount) {\n extend(e);\n }\n }), 150);\n }\n } else {\n var outside = e.clientY < editorSize.top ? -20 : e.clientY > editorSize.bottom ? 20 : 0;\n if (outside) {\n setTimeout(operation(cm, function () {\n if (counter != curCount) {\n return;\n }\n display.scroller.scrollTop += outside;\n extend(e);\n }), 50);\n }\n }\n }\n function done(e) {\n cm.state.selectingText = false;\n counter = Infinity;\n // If e is null or undefined we interpret this as someone trying\n // to explicitly cancel the selection rather than the user\n // letting go of the mouse button.\n if (e) {\n e_preventDefault(e);\n display.input.focus();\n }\n off(display.wrapper.ownerDocument, \"mousemove\", move);\n off(display.wrapper.ownerDocument, \"mouseup\", up);\n doc.history.lastSelOrigin = null;\n }\n var move = operation(cm, function (e) {\n if (e.buttons === 0 || !e_button(e)) {\n done(e);\n } else {\n extend(e);\n }\n });\n var up = operation(cm, done);\n cm.state.selectingText = up;\n on(display.wrapper.ownerDocument, \"mousemove\", move);\n on(display.wrapper.ownerDocument, \"mouseup\", up);\n }\n\n // Used when mouse-selecting to adjust the anchor to the proper side\n // of a bidi jump depending on the visual position of the head.\n function bidiSimplify(cm, range) {\n var anchor = range.anchor;\n var head = range.head;\n var anchorLine = getLine(cm.doc, anchor.line);\n if (cmp(anchor, head) == 0 && anchor.sticky == head.sticky) {\n return range;\n }\n var order = getOrder(anchorLine);\n if (!order) {\n return range;\n }\n var index = getBidiPartAt(order, anchor.ch, anchor.sticky),\n part = order[index];\n if (part.from != anchor.ch && part.to != anchor.ch) {\n return range;\n }\n var boundary = index + (part.from == anchor.ch == (part.level != 1) ? 0 : 1);\n if (boundary == 0 || boundary == order.length) {\n return range;\n }\n\n // Compute the relative visual position of the head compared to the\n // anchor (<0 is to the left, >0 to the right)\n var leftSide;\n if (head.line != anchor.line) {\n leftSide = (head.line - anchor.line) * (cm.doc.direction == \"ltr\" ? 1 : -1) > 0;\n } else {\n var headIndex = getBidiPartAt(order, head.ch, head.sticky);\n var dir = headIndex - index || (head.ch - anchor.ch) * (part.level == 1 ? -1 : 1);\n if (headIndex == boundary - 1 || headIndex == boundary) {\n leftSide = dir < 0;\n } else {\n leftSide = dir > 0;\n }\n }\n var usePart = order[boundary + (leftSide ? -1 : 0)];\n var from = leftSide == (usePart.level == 1);\n var ch = from ? usePart.from : usePart.to,\n sticky = from ? \"after\" : \"before\";\n return anchor.ch == ch && anchor.sticky == sticky ? range : new Range(new Pos(anchor.line, ch, sticky), head);\n }\n\n // Determines whether an event happened in the gutter, and fires the\n // handlers for the corresponding event.\n function gutterEvent(cm, e, type, prevent) {\n var mX, mY;\n if (e.touches) {\n mX = e.touches[0].clientX;\n mY = e.touches[0].clientY;\n } else {\n try {\n mX = e.clientX;\n mY = e.clientY;\n } catch (e$1) {\n return false;\n }\n }\n if (mX >= Math.floor(cm.display.gutters.getBoundingClientRect().right)) {\n return false;\n }\n if (prevent) {\n e_preventDefault(e);\n }\n var display = cm.display;\n var lineBox = display.lineDiv.getBoundingClientRect();\n if (mY > lineBox.bottom || !hasHandler(cm, type)) {\n return e_defaultPrevented(e);\n }\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\n // CONTEXT MENU HANDLING\n\n // To make the context menu work, we need to briefly unhide the\n // textarea (making it as unobtrusive as possible) to let the\n // right-click take effect on it.\n function onContextMenu(cm, e) {\n if (eventInWidget(cm.display, e) || contextMenuInGutter(cm, e)) {\n return;\n }\n if (signalDOMEvent(cm, e, \"contextmenu\")) {\n return;\n }\n if (!captureRightClick) {\n cm.display.input.onContextMenu(e);\n }\n }\n function contextMenuInGutter(cm, e) {\n if (!hasHandler(cm, \"gutterContextMenu\")) {\n return false;\n }\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) {\n optionHandlers[name] = notOnInit ? function (cm, val, old) {\n if (old != Init) {\n handle(cm, val, old);\n }\n } : handle;\n }\n }\n CodeMirror.defineOption = option;\n\n // Passed to option handlers when there is no old value.\n CodeMirror.Init = Init;\n\n // These two are, on init, called from the constructor because they\n // have to be initialized before the editor can start at all.\n option(\"value\", \"\", function (cm, val) {\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) {\n return;\n }\n var newBreaks = [],\n 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) {\n break;\n }\n pos = found + val.length;\n newBreaks.push(Pos(lineNo, found));\n }\n lineNo++;\n });\n for (var i = newBreaks.length - 1; i >= 0; i--) {\n replaceRange(cm.doc, val, newBreaks[i], Pos(newBreaks[i].line, newBreaks[i].ch + val.length));\n }\n });\n option(\"specialChars\", /[\\u0000-\\u001f\\u007f-\\u009f\\u00ad\\u061c\\u200b\\u200e\\u200f\\u2028\\u2029\\ufeff\\ufff9-\\ufffc]/g, function (cm, val, old) {\n cm.state.specialChars = new RegExp(val.source + (val.test(\"\\t\") ? \"\" : \"|\\t\"), \"g\");\n if (old != Init) {\n cm.refresh();\n }\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 }, 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) {\n prev.detach(cm, next);\n }\n if (next.attach) {\n next.attach(cm, prev || null);\n }\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) {\n cm.display.input.reset();\n }\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) {\n cm.display.input.resetPosition();\n }\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\n // A CodeMirror instance represents an editor. This is the object\n // that user code is usually dealing with.\n\n function CodeMirror(place, options) {\n var this$1 = this;\n if (!(this instanceof CodeMirror)) {\n return new CodeMirror(place, options);\n }\n this.options = options = options ? copyObj(options) : {};\n // Determine effective options based on given values and defaults.\n copyObj(defaults, options, false);\n var doc = options.value;\n if (typeof doc == \"string\") {\n doc = new Doc(doc, options.mode, null, options.lineSeparator, options.direction);\n } else if (options.mode) {\n doc.modeOption = options.mode;\n }\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) {\n this.display.wrapper.className += \" CodeMirror-wrap\";\n }\n initScrollbars(this);\n this.state = {\n keyMaps: [],\n // stores maps added by addKeyMap\n overlays: [],\n // highlighting overlays, as added by addOverlay\n modeGen: 0,\n // bumped when mode/overlay changes, used to invalidate highlighting info\n overwrite: false,\n delayingBlurEvent: false,\n focused: false,\n suppressEdits: false,\n // used to disable editing during key handlers when in readOnly mode\n pasteIncoming: -1,\n cutIncoming: -1,\n // help recognize paste/cut edits in input.poll\n selectingText: false,\n draggingText: false,\n highlight: new Delayed(),\n // stores highlight worker timeout\n keySeq: null,\n // Unfinished key sequence\n specialChars: null\n };\n if (options.autofocus && !mobile) {\n display.input.focus();\n }\n\n // Override magic textarea content restore that IE sometimes does\n // on our hidden textarea on reload\n if (ie && ie_version < 11) {\n setTimeout(function () {\n return this$1.display.input.reset(true);\n }, 20);\n }\n registerEventHandlers(this);\n ensureGlobalHandlers();\n startOperation(this);\n this.curOp.forceUpdate = true;\n attachDoc(this, doc);\n if (options.autofocus && !mobile || this.hasFocus()) {\n setTimeout(function () {\n if (this$1.hasFocus() && !this$1.state.focused) {\n onFocus(this$1);\n }\n }, 20);\n } else {\n onBlur(this);\n }\n for (var opt in optionHandlers) {\n if (optionHandlers.hasOwnProperty(opt)) {\n optionHandlers[opt](this, options[opt], Init);\n }\n }\n maybeUpdateLineNumberWidth(this);\n if (options.finishInit) {\n options.finishInit(this);\n }\n for (var i = 0; i < initHooks.length; ++i) {\n initHooks[i](this);\n }\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\") {\n display.lineDiv.style.textRendering = \"auto\";\n }\n }\n\n // The default configuration options.\n CodeMirror.defaults = defaults;\n // Functions to run when options are changed.\n CodeMirror.optionHandlers = optionHandlers;\n\n // Attach the necessary event handlers when initializing the editor\n function registerEventHandlers(cm) {\n var d = cm.display;\n on(d.scroller, \"mousedown\", operation(cm, onMouseDown));\n // Older IE's will not fire a second mousedown for a double click\n if (ie && ie_version < 11) {\n on(d.scroller, \"dblclick\", operation(cm, function (e) {\n if (signalDOMEvent(cm, e)) {\n return;\n }\n var pos = posFromMouse(cm, e);\n if (!pos || clickInGutter(cm, e) || eventInWidget(cm.display, e)) {\n return;\n }\n e_preventDefault(e);\n var word = cm.findWordAt(pos);\n extendSelection(cm.doc, word.anchor, word.head);\n }));\n } else {\n on(d.scroller, \"dblclick\", function (e) {\n return signalDOMEvent(cm, e) || e_preventDefault(e);\n });\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)) {\n onContextMenu(cm, e);\n }\n });\n\n // Used to suppress mouse event handling when a touch happens\n var touchFinished,\n 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) {\n return false;\n }\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) {\n return true;\n }\n var dx = other.left - touch.left,\n dy = other.top - touch.top;\n return dx * dx + dy * dy > 20 * 20;\n }\n on(d.scroller, \"touchstart\", function (e) {\n if (!signalDOMEvent(cm, e) && !isMouseLikeTouchEvent(e) && !clickInGutter(cm, e)) {\n d.input.ensurePolled();\n clearTimeout(touchFinished);\n var now = +new Date();\n d.activeTouch = {\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) {\n d.activeTouch.moved = true;\n }\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\"),\n range;\n if (!touch.prev || farAway(touch, touch.prev))\n // Single tap\n {\n range = new Range(pos, pos);\n } else if (!touch.prev.prev || farAway(touch, touch.prev.prev))\n // Double tap\n {\n range = cm.findWordAt(pos);\n } else\n // Triple tap\n {\n range = new Range(Pos(pos.line, 0), clipPos(cm.doc, Pos(pos.line + 1, 0)));\n }\n cm.setSelection(range.anchor, range.head);\n cm.focus();\n e_preventDefault(e);\n }\n finishTouch();\n });\n on(d.scroller, \"touchcancel\", finishTouch);\n\n // Sync scrolling between fake scrollbars and real scrollable\n // area, ensure viewport is updated when scrolling.\n on(d.scroller, \"scroll\", function () {\n if (d.scroller.clientHeight) {\n updateScrollTop(cm, d.scroller.scrollTop);\n setScrollLeft(cm, d.scroller.scrollLeft, true);\n signal(cm, \"scroll\", cm);\n }\n });\n\n // Listen to wheel events in order to try and update the viewport on time.\n on(d.scroller, \"mousewheel\", function (e) {\n return onScrollWheel(cm, e);\n });\n on(d.scroller, \"DOMMouseScroll\", function (e) {\n return onScrollWheel(cm, e);\n });\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)) {\n e_stop(e);\n }\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)) {\n clearDragCursor(cm);\n }\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\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,\n state;\n if (how == null) {\n how = \"add\";\n }\n if (how == \"smart\") {\n // Fall back to \"prev\" when the mode doesn't have an indentation\n // method.\n if (!doc.mode.indent) {\n how = \"prev\";\n } else {\n state = getContextBefore(cm, n).state;\n }\n }\n var tabSize = cm.options.tabSize;\n var line = getLine(doc, n),\n curSpace = countColumn(line.text, null, tabSize);\n if (line.stateAfter) {\n line.stateAfter = null;\n }\n var curSpaceString = line.text.match(/^\\s*/)[0],\n 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) {\n return;\n }\n how = \"prev\";\n }\n }\n if (how == \"prev\") {\n if (n > doc.first) {\n indentation = countColumn(getLine(doc, n - 1).text, null, tabSize);\n } else {\n indentation = 0;\n }\n } else if (how == \"add\") {\n indentation = curSpace + cm.options.indentUnit;\n } else if (how == \"subtract\") {\n indentation = curSpace - cm.options.indentUnit;\n } else if (typeof how == \"number\") {\n indentation = curSpace + how;\n }\n indentation = Math.max(0, indentation);\n var indentString = \"\",\n pos = 0;\n if (cm.options.indentWithTabs) {\n for (var i = Math.floor(indentation / tabSize); i; --i) {\n pos += tabSize;\n indentString += \"\\t\";\n }\n }\n if (pos < indentation) {\n indentString += spaceStr(indentation - pos);\n }\n if (indentString != curSpaceString) {\n replaceRange(doc, indentString, Pos(n, 0), Pos(n, curSpaceString.length), \"+input\");\n line.stateAfter = null;\n return true;\n } else {\n // Ensure that, if the cursor was in the whitespace at the start\n // of the line, it is moved to the end of that space.\n for (var i$1 = 0; i$1 < doc.sel.ranges.length; i$1++) {\n var range = doc.sel.ranges[i$1];\n if (range.head.line == n && range.head.ch < curSpaceString.length) {\n var pos$1 = Pos(n, curSpaceString.length);\n replaceOneSelection(doc, i$1, new Range(pos$1, pos$1));\n break;\n }\n }\n }\n }\n\n // This will be set to a {lineWise: bool, text: [string]} object, so\n // that, when pasting, we know what kind of selections the copied\n // text was made out of.\n var lastCopied = null;\n 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) {\n sel = doc.sel;\n }\n var recent = +new Date() - 200;\n var paste = origin == \"paste\" || cm.state.pasteIncoming > recent;\n var textLines = splitLinesAuto(inserted),\n multiPaste = null;\n // When pasting N lines into N selections, insert one line per selection\n if (paste && sel.ranges.length > 1) {\n if (lastCopied && lastCopied.text.join(\"\\n\") == inserted) {\n if (sel.ranges.length % lastCopied.text.length == 0) {\n multiPaste = [];\n for (var i = 0; i < lastCopied.text.length; i++) {\n multiPaste.push(doc.splitLines(lastCopied.text[i]));\n }\n }\n } else if (textLines.length == sel.ranges.length && cm.options.pasteLinesPerSelection) {\n multiPaste = map(textLines, function (l) {\n return [l];\n });\n }\n }\n var updateInput = cm.curOp.updateInput;\n // Normal behavior is to insert the new text into every selection\n for (var i$1 = sel.ranges.length - 1; i$1 >= 0; i$1--) {\n var range = sel.ranges[i$1];\n var from = range.from(),\n to = range.to();\n if (range.empty()) {\n if (deleted && deleted > 0)\n // Handle deletion\n {\n from = Pos(from.line, from.ch - deleted);\n } else if (cm.state.overwrite && !paste)\n // Handle overwrite\n {\n to = Pos(to.line, Math.min(getLine(doc, to.line).text.length, to.ch + lst(textLines).length));\n } else if (paste && lastCopied && lastCopied.lineWise && lastCopied.text.join(\"\\n\") == textLines.join(\"\\n\")) {\n from = to = Pos(from.line, 0);\n }\n }\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) {\n triggerElectric(cm, inserted);\n }\n ensureCursorVisible(cm);\n if (cm.curOp.updateInput < 2) {\n cm.curOp.updateInput = updateInput;\n }\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()) {\n runInOp(cm, function () {\n return applyTextInput(cm, pasted, 0, null, \"paste\");\n });\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) {\n return;\n }\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) {\n continue;\n }\n var mode = cm.getModeAt(range.head);\n var indented = false;\n if (mode.electricChars) {\n for (var j = 0; j < mode.electricChars.length; j++) {\n if (inserted.indexOf(mode.electricChars.charAt(j)) > -1) {\n indented = indentLine(cm, range.head.line, \"smart\");\n break;\n }\n }\n } else if (mode.electricInput) {\n if (mode.electricInput.test(getLine(cm.doc, range.head.line).text.slice(0, range.head.ch))) {\n indented = indentLine(cm, range.head.line, \"smart\");\n }\n }\n if (indented) {\n signalLater(cm, \"electricInput\", cm, range.head.line);\n }\n }\n }\n function copyableRanges(cm) {\n var text = [],\n 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 ? \"\" : \"off\");\n field.setAttribute(\"autocapitalize\", autocapitalize ? \"\" : \"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\", [te], null, \"overflow: hidden; position: relative; width: 3px; height: 0px;\");\n // The textarea is kept positioned near the cursor to prevent the\n // fact that it'll be scrolled into view on input from scrolling\n // our fake cursor out of view. On webkit, when wrap=off, paste is\n // very slow. So make the area wide instead.\n if (webkit) {\n te.style.width = \"1000px\";\n } else {\n te.setAttribute(\"wrap\", \"off\");\n }\n // If border: 0; -- iOS fails to open keyboard (issue #1287)\n if (ios) {\n te.style.border = \"1px solid black\";\n }\n disableBrowserMagic(te);\n return div;\n }\n\n // The publicly visible API. Note that methodOp(f) means\n // 'wrap f in an operation, performed on its `this` parameter'.\n\n // This is not the complete set of editor methods. Most of the\n // methods defined on the Doc type are also injected into\n // CodeMirror.prototype, for backwards compatibility and\n // convenience.\n\n function addEditorMethods(CodeMirror) {\n var optionHandlers = CodeMirror.optionHandlers;\n var helpers = CodeMirror.helpers = {};\n CodeMirror.prototype = {\n constructor: CodeMirror,\n focus: function () {\n window.focus();\n this.display.input.focus();\n },\n setOption: function (option, value) {\n var options = this.options,\n old = options[option];\n if (options[option] == value && option != \"mode\") {\n return;\n }\n options[option] = value;\n if (optionHandlers.hasOwnProperty(option)) {\n operation(this, optionHandlers[option])(this, value, old);\n }\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) {\n if (maps[i] == map || maps[i].name == map) {\n maps.splice(i, 1);\n return true;\n }\n }\n },\n addOverlay: methodOp(function (spec, options) {\n var mode = spec.token ? spec : CodeMirror.getMode(this.options, spec);\n if (mode.startState) {\n throw new Error(\"Overlays may not be stateful.\");\n }\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) {\n dir = this.options.smartIndent ? \"smart\" : \"prev\";\n } else {\n dir = dir ? \"add\" : \"subtract\";\n }\n }\n if (isLine(this.doc, n)) {\n indentLine(this, n, dir, aggressive);\n }\n }),\n indentSelection: methodOp(function (how) {\n var ranges = this.doc.sel.ranges,\n 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(),\n to = range.to();\n var start = Math.max(end, from.line);\n end = Math.min(this.lastLine(), to.line - (to.ch ? 0 : 1)) + 1;\n for (var j = start; j < end; ++j) {\n indentLine(this, j, how);\n }\n var newRanges = this.doc.sel.ranges;\n if (from.ch == 0 && ranges.length == newRanges.length && newRanges[i].from().ch > 0) {\n replaceOneSelection(this.doc, i, new Range(from, newRanges[i].to()), sel_dontScroll);\n }\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) {\n ensureCursorVisible(this);\n }\n }\n }\n }),\n // Fetch the parser token for a given character. Useful for hacks\n // that want to inspect the mode state (say, for completion).\n getTokenAt: function (pos, precise) {\n return takeToken(this, pos, precise);\n },\n 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,\n after = (styles.length - 1) / 2,\n ch = pos.ch;\n var type;\n if (ch == 0) {\n type = styles[2];\n } else {\n for (;;) {\n var mid = before + after >> 1;\n if ((mid ? styles[mid * 2 - 1] : 0) >= ch) {\n after = mid;\n } else if (styles[mid * 2 + 1] < ch) {\n before = mid + 1;\n } else {\n type = styles[mid * 2 + 2];\n break;\n }\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) {\n return mode;\n }\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)) {\n return found;\n }\n var help = helpers[type],\n mode = this.getModeAt(pos);\n if (typeof mode[type] == \"string\") {\n if (help[mode[type]]) {\n found.push(help[mode[type]]);\n }\n } else if (mode[type]) {\n for (var i = 0; i < mode[type].length; i++) {\n var val = help[mode[type][i]];\n if (val) {\n found.push(val);\n }\n }\n } else if (mode.helperType && help[mode.helperType]) {\n found.push(help[mode.helperType]);\n } else if (help[mode.name]) {\n found.push(help[mode.name]);\n }\n for (var i$1 = 0; i$1 < help._global.length; i$1++) {\n var cur = help._global[i$1];\n if (cur.pred(mode, this) && indexOf(found, cur.val) == -1) {\n found.push(cur.val);\n }\n }\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,\n range = this.doc.sel.primary();\n if (start == null) {\n pos = range.head;\n } else if (typeof start == \"object\") {\n pos = clipPos(this.doc, start);\n } else {\n pos = start ? range.from() : range.to();\n }\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,\n lineObj;\n if (typeof line == \"number\") {\n var last = this.doc.first + this.doc.size - 1;\n if (line < this.doc.first) {\n line = this.doc.first;\n } else if (line > last) {\n line = last;\n end = true;\n }\n lineObj = getLine(this.doc, line);\n } else {\n lineObj = line;\n }\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,\n left = pos.left;\n node.style.position = \"absolute\";\n node.setAttribute(\"cm-ignore-events\", \"true\");\n this.display.input.setUneditable(node);\n display.sizer.appendChild(node);\n if (vert == \"over\") {\n top = pos.top;\n } else if (vert == \"above\" || vert == \"near\") {\n var vspace = Math.max(display.wrapper.clientHeight, this.doc.height),\n hspace = Math.max(display.sizer.clientWidth, display.lineSpace.clientWidth);\n // Default to positioning above (if specified and possible); otherwise default to positioning below\n if ((vert == 'above' || pos.bottom + node.offsetHeight > vspace) && pos.top > node.offsetHeight) {\n top = pos.top - node.offsetHeight;\n } else if (pos.bottom + node.offsetHeight <= vspace) {\n top = pos.bottom;\n }\n if (left + node.offsetWidth > hspace) {\n left = hspace - node.offsetWidth;\n }\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\") {\n left = 0;\n } else if (horiz == \"middle\") {\n left = (display.sizer.clientWidth - node.offsetWidth) / 2;\n }\n node.style.left = left + \"px\";\n }\n if (scroll) {\n scrollIntoView(this, {\n left: left,\n top: top,\n right: left + node.offsetWidth,\n bottom: top + node.offsetHeight\n });\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)) {\n return commands[cmd].call(null, this);\n }\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) {\n break;\n }\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()) {\n return findPosH(this$1.doc, range.head, dir, unit, this$1.options.rtlMoveVisually);\n } else {\n return dir < 0 ? range.from() : range.to();\n }\n }, sel_move);\n }),\n deleteH: methodOp(function (dir, unit) {\n var sel = this.doc.sel,\n doc = this.doc;\n if (sel.somethingSelected()) {\n doc.replaceSelection(\"\", null, \"+delete\");\n } else {\n deleteNearSelection(this, function (range) {\n var other = findPosH(doc, range.head, dir, unit, false);\n return dir < 0 ? {\n from: other,\n to: range.head\n } : {\n from: range.head,\n to: other\n };\n });\n }\n }),\n findPosV: function (from, amount, unit, goalColumn) {\n var dir = 1,\n 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) {\n x = coords.left;\n } else {\n coords.left = x;\n }\n cur = findPosV(this, coords, dir, unit);\n if (cur.hitSide) {\n break;\n }\n }\n return cur;\n },\n moveV: methodOp(function (dir, unit) {\n var this$1 = this;\n var doc = this.doc,\n goals = [];\n var collapse = !this.display.shift && !doc.extend && doc.sel.somethingSelected();\n doc.extendSelectionsBy(function (range) {\n if (collapse) {\n return dir < 0 ? range.from() : range.to();\n }\n var headPos = cursorCoords(this$1, range.head, \"div\");\n if (range.goalColumn != null) {\n headPos.left = range.goalColumn;\n }\n goals.push(headPos.left);\n var pos = findPosV(this$1, headPos, dir, unit);\n if (unit == \"page\" && range == doc.sel.primary()) {\n addToScrollTop(this$1, charCoords(this$1, pos, \"div\").top - headPos.top);\n }\n return pos;\n }, sel_move);\n if (goals.length) {\n for (var i = 0; i < doc.sel.ranges.length; i++) {\n doc.sel.ranges[i].goalColumn = goals[i];\n }\n }\n }),\n // Find the word at the given position (as returned by coordsChar).\n findWordAt: function (pos) {\n var doc = this.doc,\n line = getLine(doc, pos.line).text;\n var start = pos.ch,\n end = pos.ch;\n if (line) {\n var helper = this.getHelper(pos, \"wordChars\");\n if ((pos.sticky == \"before\" || end == line.length) && start) {\n --start;\n } else {\n ++end;\n }\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))) {\n --start;\n }\n while (end < line.length && check(line.charAt(end))) {\n ++end;\n }\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) {\n return;\n }\n if (this.state.overwrite = !this.state.overwrite) {\n addClass(this.display.cursorDiv, \"CodeMirror-overwrite\");\n } else {\n rmClass(this.display.cursorDiv, \"CodeMirror-overwrite\");\n }\n signal(this, \"overwriteToggle\", this, this.state.overwrite);\n },\n hasFocus: function () {\n return this.display.input.getField() == activeElt();\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) {\n margin = this.options.cursorScrollMargin;\n }\n } else if (typeof range == \"number\") {\n range = {\n from: Pos(range, 0),\n to: null\n };\n } else if (range.from == null) {\n range = {\n from: range,\n to: null\n };\n }\n if (!range.to) {\n range.to = range.from;\n }\n range.margin = margin || 0;\n if (range.from.line != null) {\n scrollToRange(this, range);\n } else {\n scrollToCoordsRange(this, range.from, range.to, range.margin);\n }\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) {\n this.display.wrapper.style.width = interpret(width);\n }\n if (height != null) {\n this.display.wrapper.style.height = interpret(height);\n }\n if (this.options.lineWrapping) {\n clearLineMeasurementCache(this);\n }\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++) {\n if (line.widgets[i].noHScroll) {\n regLineChange(this$1, lineNo, \"widget\");\n break;\n }\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) {\n estimateLineHeights(this);\n }\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) {\n this.state.selectingText();\n }\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)) {\n helpers[type] = CodeMirror[type] = {\n _global: []\n };\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\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) {\n return false;\n }\n pos = new Pos(l, pos.ch, pos.sticky);\n return lineObj = getLine(doc, l);\n }\n function moveOnce(boundToLine) {\n var next;\n if (unit == \"codepoint\") {\n var ch = lineObj.text.charCodeAt(pos.ch + (dir > 0 ? 0 : -1));\n if (isNaN(ch)) {\n next = null;\n } else {\n var astral = dir > 0 ? ch >= 0xD800 && ch < 0xDC00 : ch >= 0xDC00 && ch < 0xDFFF;\n next = new Pos(pos.line, Math.max(0, Math.min(lineObj.text.length, pos.ch + dir * (astral ? 2 : 1))), -dir);\n }\n } else if (visually) {\n next = moveVisually(doc.cm, lineObj, pos, dir);\n } else {\n next = moveLogically(lineObj, pos, dir);\n }\n if (next == null) {\n if (!boundToLine && findNextLine()) {\n pos = endOfLine(visually, doc.cm, lineObj, pos.line, lineDir);\n } else {\n return false;\n }\n } else {\n pos = next;\n }\n return true;\n }\n if (unit == \"char\" || unit == \"codepoint\") {\n moveOnce();\n } else if (unit == \"column\") {\n moveOnce(true);\n } else if (unit == \"word\" || unit == \"group\") {\n var sawType = null,\n 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)) {\n break;\n }\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) {\n type = \"s\";\n }\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) {\n sawType = type;\n }\n if (dir > 0 && !moveOnce(!first)) {\n break;\n }\n }\n }\n var result = skipAtomic(doc, pos, oldPos, origDir, true);\n if (equalCursorPos(oldPos, result)) {\n result.hitSide = true;\n }\n return result;\n }\n\n // For relative vertical movement. Dir may be -1 or 1. Unit can be\n // \"page\" or \"line\". The resulting position will have a hitSide=true\n // property if it reached the end of the document.\n function findPosV(cm, pos, dir, unit) {\n var doc = cm.doc,\n x = pos.left,\n y;\n if (unit == \"page\") {\n var pageSize = Math.min(cm.display.wrapper.clientHeight, window.innerHeight || document.documentElement.clientHeight);\n var moveAmount = Math.max(pageSize - .5 * textHeight(cm.display), 3);\n y = (dir > 0 ? pos.bottom : pos.top) + dir * moveAmount;\n } else if (unit == \"line\") {\n y = dir > 0 ? pos.bottom + 3 : pos.top - 3;\n }\n var target;\n for (;;) {\n target = coordsChar(cm, x, y);\n if (!target.outside) {\n break;\n }\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\n // CONTENTEDITABLE INPUT STYLE\n\n var ContentEditableInput = function (cm) {\n this.cm = cm;\n this.lastAnchorNode = this.lastAnchorOffset = this.lastFocusNode = this.lastFocusOffset = null;\n this.polling = new Delayed();\n this.composing = null;\n this.gracePeriod = false;\n this.readDOMTimeout = null;\n };\n ContentEditableInput.prototype.init = function (display) {\n var this$1 = this;\n var input = this,\n 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) {\n return true;\n }\n if (/\\bCodeMirror-(?:line)?widget\\b/.test(t.className)) {\n break;\n }\n }\n return false;\n }\n on(div, \"paste\", function (e) {\n if (!belongsToInput(e) || signalDOMEvent(cm, e) || handlePaste(e, cm)) {\n return;\n }\n // IE doesn't fire input events, so we schedule a read for the pasted content in this way\n if (ie_version <= 11) {\n setTimeout(operation(cm, function () {\n return this$1.updateFromDOM();\n }), 20);\n }\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) {\n this$1.composing = {\n data: e.data,\n done: false\n };\n }\n });\n on(div, \"compositionend\", function (e) {\n if (this$1.composing) {\n if (e.data != this$1.composing.data) {\n this$1.readFromDOMSoon();\n }\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) {\n this$1.readFromDOMSoon();\n }\n });\n function onCopyCut(e) {\n if (!belongsToInput(e) || signalDOMEvent(cm, e)) {\n return;\n }\n if (cm.somethingSelected()) {\n setLastCopied({\n lineWise: false,\n text: cm.getSelections()\n });\n if (e.type == \"cut\") {\n cm.replaceSelection(\"\", null, \"cut\");\n }\n } else if (!cm.options.lineWiseCopyCut) {\n return;\n } else {\n var ranges = copyableRanges(cm);\n setLastCopied({\n lineWise: true,\n text: ranges.text\n });\n if (e.type == \"cut\") {\n cm.operation(function () {\n cm.setSelections(ranges.ranges, 0, sel_dontScroll);\n cm.replaceSelection(\"\", null, \"cut\");\n });\n }\n }\n if (e.clipboardData) {\n e.clipboardData.clearData();\n var content = lastCopied.text.join(\"\\n\");\n // iOS exposes the clipboard API, but seems to discard content inserted into it\n e.clipboardData.setData(\"Text\", content);\n if (e.clipboardData.getData(\"Text\") == content) {\n e.preventDefault();\n return;\n }\n }\n // Old-fashioned briefly-focus-a-textarea hack\n var kludge = hiddenTextarea(),\n te = kludge.firstChild;\n cm.display.lineSpace.insertBefore(kludge, cm.display.lineSpace.firstChild);\n te.value = lastCopied.text.join(\"\\n\");\n var hadFocus = activeElt();\n selectInput(te);\n setTimeout(function () {\n cm.display.lineSpace.removeChild(kludge);\n hadFocus.focus();\n if (hadFocus == div) {\n input.showPrimarySelection();\n }\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) {\n this.div.setAttribute('aria-label', label);\n } else {\n this.div.removeAttribute('aria-label');\n }\n };\n ContentEditableInput.prototype.prepareSelection = function () {\n var result = prepareSelection(this.cm, false);\n result.focus = activeElt() == this.div;\n return result;\n };\n ContentEditableInput.prototype.showSelection = function (info, takeFocus) {\n if (!info || !this.cm.display.view.length) {\n return;\n }\n if (info.focus || takeFocus) {\n this.showPrimarySelection();\n }\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(),\n cm = this.cm,\n prim = cm.doc.sel.primary();\n var from = prim.from(),\n 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) {\n return;\n }\n var view = cm.display.view;\n var start = from.line >= cm.display.viewFrom && posToDOM(cm, from) || {\n node: view[0].measure.map[2],\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),\n 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) {\n sel.addRange(old);\n } else if (gecko) {\n this.startGracePeriod();\n }\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()) {\n this$1.cm.operation(function () {\n return this$1.cm.curOp.selectionChanged = true;\n });\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) {\n return false;\n }\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) {\n this.showSelection(this.prepareSelection(), true);\n }\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()) {\n setTimeout(function () {\n return this$1.pollSelection();\n }, 20);\n } else {\n runInOp(this.cm, function () {\n return input.cm.curOp.selectionChanged = true;\n });\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()) {\n return;\n }\n var sel = this.getSelection(),\n 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) {\n return;\n }\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) {\n runInOp(cm, function () {\n setSelection(cm.doc, simpleSelection(anchor, head), sel_dontScroll);\n if (anchor.bad || head.bad) {\n cm.curOp.selectionChanged = true;\n }\n });\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,\n display = cm.display,\n sel = cm.doc.sel.primary();\n var from = sel.from(),\n to = sel.to();\n if (from.ch == 0 && from.line > cm.firstLine()) {\n from = Pos(from.line - 1, getLine(cm.doc, from.line - 1).length);\n }\n if (to.ch == getLine(cm.doc, to.line).text.length && to.line < cm.lastLine()) {\n to = Pos(to.line + 1, 0);\n }\n if (from.line < display.viewFrom || to.line > display.viewTo - 1) {\n return false;\n }\n var fromIndex, fromLine, fromNode;\n if (from.line == display.viewFrom || (fromIndex = findViewIndex(cm, from.line)) == 0) {\n fromLine = lineNo(display.view[0].line);\n fromNode = display.view[0].node;\n } else {\n fromLine = lineNo(display.view[fromIndex].line);\n fromNode = display.view[fromIndex - 1].node.nextSibling;\n }\n var toIndex = findViewIndex(cm, to.line);\n var toLine, toNode;\n if (toIndex == display.view.length - 1) {\n toLine = display.viewTo - 1;\n toNode = display.lineDiv.lastChild;\n } else {\n toLine = lineNo(display.view[toIndex + 1].line) - 1;\n toNode = display.view[toIndex + 1].node.previousSibling;\n }\n if (!fromNode) {\n return false;\n }\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 {\n break;\n }\n }\n var cutFront = 0,\n cutEnd = 0;\n var newTop = newText[0],\n oldTop = oldText[0],\n maxCutFront = Math.min(newTop.length, oldTop.length);\n while (cutFront < maxCutFront && newTop.charCodeAt(cutFront) == oldTop.charCodeAt(cutFront)) {\n ++cutFront;\n }\n var newBot = lst(newText),\n 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)) {\n ++cutEnd;\n }\n // Try to move start of change to start of selection if ambiguous\n if (newText.length == 1 && oldText.length == 1 && fromLine == from.line) {\n while (cutFront && cutFront > from.ch && newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1)) {\n cutFront--;\n cutEnd++;\n }\n }\n newText[newText.length - 1] = newBot.slice(0, newBot.length - cutEnd).replace(/^\\u200b+/, \"\");\n newText[0] = newText[0].slice(cutFront).replace(/\\u200b+$/, \"\");\n 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) {\n return;\n }\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) {\n return;\n }\n this.readDOMTimeout = setTimeout(function () {\n this$1.readDOMTimeout = null;\n if (this$1.composing) {\n if (this$1.composing.done) {\n this$1.composing = null;\n } else {\n return;\n }\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()) {\n runInOp(this.cm, function () {\n return regChange(this$1.cm);\n });\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) {\n return;\n }\n e.preventDefault();\n if (!this.cm.isReadOnly()) {\n operation(this.cm, applyTextInput)(this.cm, String.fromCharCode(e.charCode == null ? e.keyCode : e.charCode), 0);\n }\n };\n ContentEditableInput.prototype.readOnlyChanged = function (val) {\n this.div.contentEditable = String(val != \"nocursor\");\n };\n 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) {\n return null;\n }\n var line = getLine(cm.doc, pos.line);\n var info = mapFromLineView(view, line, pos.line);\n var order = getOrder(line, cm.doc.direction),\n 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)) {\n return true;\n }\n }\n return false;\n }\n function badPos(pos, bad) {\n if (bad) {\n pos.bad = true;\n }\n return pos;\n }\n function domTextBetween(cm, from, to, fromLine, toLine) {\n var text = \"\",\n closing = false,\n lineSep = cm.doc.lineSeparator(),\n 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) {\n text += lineSep;\n }\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\"),\n range;\n if (markerID) {\n var found = cm.findMarks(Pos(fromLine, 0), Pos(toLine + 1, 0), recognizeMarker(+markerID));\n if (found.length && (range = found[0].find(0))) {\n addText(getBetween(cm.doc, range.from, range.to).join(lineSep));\n }\n return;\n }\n if (node.getAttribute(\"contenteditable\") == \"false\") {\n return;\n }\n var isBlock = /^(pre|div|p|li|table|br)$/i.test(node.nodeName);\n if (!/^br$/i.test(node.nodeName) && node.textContent.length == 0) {\n return;\n }\n if (isBlock) {\n close();\n }\n for (var i = 0; i < node.childNodes.length; i++) {\n walk(node.childNodes[i]);\n }\n if (/^(pre|p)$/i.test(node.nodeName)) {\n extraLinebreak = true;\n }\n if (isBlock) {\n closing = true;\n }\n } else if (node.nodeType == 3) {\n addText(node.nodeValue.replace(/\\u200b/g, \"\").replace(/\\u00a0/g, \" \"));\n }\n }\n for (;;) {\n walk(from);\n if (from == to) {\n break;\n }\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) {\n return badPos(cm.clipPos(Pos(cm.display.viewTo - 1)), true);\n }\n node = null;\n offset = 0;\n } else {\n for (lineNode = node;; lineNode = lineNode.parentNode) {\n if (!lineNode || lineNode == cm.display.lineDiv) {\n return null;\n }\n if (lineNode.parentNode && lineNode.parentNode == cm.display.lineDiv) {\n break;\n }\n }\n }\n for (var i = 0; i < cm.display.view.length; i++) {\n var lineView = cm.display.view[i];\n if (lineView.node == lineNode) {\n return locateNodeInLineView(lineView, node, offset);\n }\n }\n }\n function locateNodeInLineView(lineView, node, offset) {\n var wrapper = lineView.text.firstChild,\n bad = false;\n if (!node || !contains(wrapper, node)) {\n return badPos(Pos(lineNo(lineView.line), 0), true);\n }\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,\n topNode = node;\n if (!textNode && node.childNodes.length == 1 && node.firstChild.nodeType == 3) {\n textNode = node.firstChild;\n if (offset) {\n offset = textNode.nodeValue.length;\n }\n }\n while (topNode.parentNode != wrapper) {\n topNode = topNode.parentNode;\n }\n var measure = lineView.measure,\n 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) {\n ch = map[j + (offset ? 1 : 0)];\n }\n return Pos(line, ch);\n }\n }\n }\n }\n var found = find(textNode, topNode, offset);\n if (found) {\n return badPos(found, bad);\n }\n\n // FIXME this is all really shaky. might handle the few cases it needs to handle, but likely to cause problems\n for (var after = topNode.nextSibling, dist = textNode ? textNode.nodeValue.length - offset : 0; after; after = after.nextSibling) {\n found = find(after, after.firstChild, 0);\n if (found) {\n return badPos(Pos(found.line, found.ch - dist), bad);\n } else {\n dist += after.textContent.length;\n }\n }\n for (var before = topNode.previousSibling, dist$1 = offset; before; before = before.previousSibling) {\n found = find(before, before.firstChild, -1);\n if (found) {\n return badPos(Pos(found.line, found.ch + dist$1), bad);\n } else {\n dist$1 += before.textContent.length;\n }\n }\n }\n\n // TEXTAREA INPUT STYLE\n\n var TextareaInput = function (cm) {\n this.cm = cm;\n // See input.poll and input.reset\n this.prevInput = \"\";\n\n // Flag that indicates whether we expect input to appear real soon\n // now (after some event like 'keypress' or 'input') and are\n // polling intensively.\n this.pollingFast = false;\n // Self-resetting timeout for the poller\n this.polling = new Delayed();\n // Used to work around IE issue with selection being forgotten when focus moves away from textarea\n this.hasSelection = false;\n this.composing = null;\n };\n TextareaInput.prototype.init = function (display) {\n var this$1 = this;\n var input = this,\n cm = this.cm;\n this.createField(display);\n var te = this.textarea;\n display.wrapper.insertBefore(this.wrapper, display.wrapper.firstChild);\n\n // Needed to hide big blue blinking cursor on Mobile Safari (doesn't seem to work in iOS 8 anymore)\n if (ios) {\n te.style.width = \"0px\";\n }\n on(te, \"input\", function () {\n if (ie && ie_version >= 9 && this$1.hasSelection) {\n this$1.hasSelection = null;\n }\n input.poll();\n });\n on(te, \"paste\", function (e) {\n if (signalDOMEvent(cm, e) || handlePaste(e, cm)) {\n return;\n }\n cm.state.pasteIncoming = +new Date();\n input.fastPoll();\n });\n function prepareCopyCut(e) {\n if (signalDOMEvent(cm, e)) {\n return;\n }\n if (cm.somethingSelected()) {\n setLastCopied({\n lineWise: false,\n text: cm.getSelections()\n });\n } else if (!cm.options.lineWiseCopyCut) {\n return;\n } else {\n var ranges = copyableRanges(cm);\n setLastCopied({\n lineWise: true,\n text: ranges.text\n });\n if (e.type == \"cut\") {\n cm.setSelections(ranges.ranges, null, sel_dontScroll);\n } else {\n input.prevInput = \"\";\n te.value = ranges.text.join(\"\\n\");\n selectInput(te);\n }\n }\n if (e.type == \"cut\") {\n cm.state.cutIncoming = +new Date();\n }\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)) {\n return;\n }\n if (!te.dispatchEvent) {\n cm.state.pasteIncoming = +new Date();\n input.focus();\n return;\n }\n\n // Pass the `paste` event to the textarea so it's handled by its event listener.\n var event = new Event(\"paste\");\n event.clipboardData = e.clipboardData;\n te.dispatchEvent(event);\n });\n\n // Prevent normal selection in the editor (we handle our own)\n on(display.lineSpace, \"selectstart\", function (e) {\n if (!eventInWidget(display, e)) {\n e_preventDefault(e);\n }\n });\n on(te, \"compositionstart\", function () {\n var start = cm.getCursor(\"from\");\n if (input.composing) {\n input.composing.range.clear();\n }\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 };\n TextareaInput.prototype.screenReaderLabelChanged = function (label) {\n // Label for screenreaders, accessibility\n if (label) {\n this.textarea.setAttribute('aria-label', label);\n } else {\n this.textarea.removeAttribute('aria-label');\n }\n };\n TextareaInput.prototype.prepareSelection = function () {\n // Redraw the selection and/or cursor\n var cm = this.cm,\n display = cm.display,\n doc = cm.doc;\n var result = prepareSelection(cm);\n\n // Move the hidden textarea near the cursor to prevent scrolling artifacts\n if (cm.options.moveInputWithCursor) {\n var headPos = cursorCoords(cm, doc.sel.primary().head, \"div\");\n var wrapOff = display.wrapper.getBoundingClientRect(),\n 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,\n display = cm.display;\n removeChildrenAndAdd(display.cursorDiv, drawn.cursors);\n removeChildrenAndAdd(display.selectionDiv, drawn.selection);\n if (drawn.teTop != null) {\n this.wrapper.style.top = drawn.teTop + \"px\";\n this.wrapper.style.left = drawn.teLeft + \"px\";\n }\n };\n\n // Reset the input to correspond to the selection (or to be empty,\n // when not typing and nothing is selected)\n TextareaInput.prototype.reset = function (typing) {\n if (this.contextMenuPending || this.composing) {\n return;\n }\n var cm = this.cm;\n if (cm.somethingSelected()) {\n this.prevInput = \"\";\n var content = cm.getSelection();\n this.textarea.value = content;\n if (cm.state.focused) {\n selectInput(this.textarea);\n }\n if (ie && ie_version >= 9) {\n this.hasSelection = content;\n }\n } else if (!typing) {\n this.prevInput = this.textarea.value = \"\";\n if (ie && ie_version >= 9) {\n this.hasSelection = null;\n }\n }\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)) {\n try {\n this.textarea.focus();\n } catch (e) {} // IE8 will throw if the textarea is display: none or not in DOM\n }\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\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) {\n return;\n }\n this.polling.set(this.cm.options.pollInterval, function () {\n this$1.poll();\n if (this$1.cm.state.focused) {\n this$1.slowPoll();\n }\n });\n };\n\n // When an event has just come in that is likely to add or change\n // something in the input textarea, we poll faster, to ensure that\n // the change appears on the screen quickly.\n TextareaInput.prototype.fastPoll = function () {\n var missed = false,\n 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\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,\n input = this.textarea,\n prevInput = this.prevInput;\n // Since this is called a *lot*, try to bail out as cheaply as\n // possible when it is clear that nothing happened. hasSelection\n // will be the case when there is a lot of text in the textarea,\n // in which case reading its value would be expensive.\n if (this.contextMenuPending || !cm.state.focused || hasSelection(input) && !prevInput && !this.composing || cm.isReadOnly() || cm.options.disableInput || cm.state.keySeq) {\n return false;\n }\n var text = input.value;\n // If nothing changed, bail.\n if (text == prevInput && !cm.somethingSelected()) {\n return false;\n }\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) {\n prevInput = \"\\u200b\";\n }\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,\n l = Math.min(prevInput.length, text.length);\n while (same < l && prevInput.charCodeAt(same) == text.charCodeAt(same)) {\n ++same;\n }\n runInOp(cm, function () {\n applyTextInput(cm, text.slice(same), prevInput.length - same, null, this$1.composing ? \"*compose\" : null);\n\n // Don't leave long text in the textarea, since it makes further polling slow\n if (text.length > 1000 || text.indexOf(\"\\n\") > -1) {\n input.value = this$1.prevInput = \"\";\n } else {\n this$1.prevInput = text;\n }\n if (this$1.composing) {\n this$1.composing.range.clear();\n this$1.composing.range = cm.markText(this$1.composing.start, cm.getCursor(\"to\"), {\n className: \"CodeMirror-composing\"\n });\n }\n });\n return true;\n };\n TextareaInput.prototype.ensurePolled = function () {\n if (this.pollingFast && this.poll()) {\n this.pollingFast = false;\n }\n };\n TextareaInput.prototype.onKeyPress = function () {\n if (ie && ie_version >= 9) {\n this.hasSelection = null;\n }\n this.fastPoll();\n };\n TextareaInput.prototype.onContextMenu = function (e) {\n var input = this,\n cm = input.cm,\n display = cm.display,\n te = input.textarea;\n if (input.contextMenuPending) {\n input.contextMenuPending();\n }\n var pos = posFromMouse(cm, e),\n scrollPos = display.scroller.scrollTop;\n if (!pos || presto) {\n return;\n } // Opera is difficult.\n\n // Reset the current text selection only if the click is done outside of the selection\n // and 'resetSelectionOnContextMenu' option is true.\n var reset = cm.options.resetSelectionOnContextMenu;\n if (reset && cm.doc.sel.contains(pos) == -1) {\n operation(cm, setSelection)(cm.doc, simpleSelection(pos), sel_dontScroll);\n }\n var oldCSS = te.style.cssText,\n 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) {\n oldScrollY = window.scrollY;\n } // Work around Chrome issue (#2712)\n display.input.focus();\n if (webkit) {\n window.scrollTo(null, oldScrollY);\n }\n display.input.reset();\n // Adds \"Select all\" to context menu in FF\n if (!cm.somethingSelected()) {\n te.value = input.prevInput = \" \";\n }\n input.contextMenuPending = rehide;\n display.selForContextMenu = cm.doc.sel;\n clearTimeout(display.detectingSelectAll);\n\n // Select-all will be greyed out if there's nothing to select, so\n // this adds a zero-width space so that we can later check whether\n // it got selected.\n function prepareSelectAllHack() {\n if (te.selectionStart != null) {\n var selected = cm.somethingSelected();\n var extval = \"\\u200b\" + (selected ? te.value : \"\");\n te.value = \"\\u21da\"; // Used to catch context-menu undo\n te.value = extval;\n input.prevInput = selected ? \"\" : \"\\u200b\";\n te.selectionStart = 1;\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) {\n return;\n }\n input.contextMenuPending = false;\n input.wrapper.style.cssText = oldWrapperCSS;\n te.style.cssText = oldCSS;\n if (ie && ie_version < 9) {\n display.scrollbars.setScrollTop(display.scroller.scrollTop = scrollPos);\n }\n\n // Try to detect the user choosing select-all\n if (te.selectionStart != null) {\n if (!ie || ie && ie_version < 9) {\n prepareSelectAllHack();\n }\n var i = 0,\n poll = function () {\n if (display.selForContextMenu == cm.doc.sel && te.selectionStart == 0 && te.selectionEnd > 0 && input.prevInput == \"\\u200b\") {\n operation(cm, selectAll)(cm);\n } else if (i++ < 10) {\n display.detectingSelectAll = setTimeout(poll, 500);\n } else {\n display.selForContextMenu = null;\n display.input.reset();\n }\n };\n display.detectingSelectAll = setTimeout(poll, 200);\n }\n }\n if (ie && ie_version >= 9) {\n prepareSelectAllHack();\n }\n if (captureRightClick) {\n e_stop(e);\n var mouseup = function () {\n off(window, \"mouseup\", mouseup);\n setTimeout(rehide, 20);\n };\n on(window, \"mouseup\", mouseup);\n } else {\n setTimeout(rehide, 50);\n }\n };\n TextareaInput.prototype.readOnlyChanged = function (val) {\n if (!val) {\n this.reset();\n }\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) {\n options.tabindex = textarea.tabIndex;\n }\n if (!options.placeholder && textarea.placeholder) {\n options.placeholder = textarea.placeholder;\n }\n // Set autofocus to true if this textarea is focused, or if it has\n // autofocus and no other element is focused.\n if (options.autofocus == null) {\n var hasFocus = activeElt();\n options.autofocus = hasFocus == textarea || 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\") {\n textarea.form.submit = realSubmit;\n }\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\n // EDITOR CONSTRUCTOR\n\n defineOptions(CodeMirror);\n addEditorMethods(CodeMirror);\n\n // Set up methods on CodeMirror's prototype to redirect to the editor's document.\n var dontDelegate = \"iter insert remove copy getEditor constructor\".split(\" \");\n for (var prop in Doc.prototype) {\n if (Doc.prototype.hasOwnProperty(prop) && indexOf(dontDelegate, prop) < 0) {\n CodeMirror.prototype[prop] = function (method) {\n return function () {\n return method.apply(this.doc, arguments);\n };\n }(Doc.prototype[prop]);\n }\n }\n eventMixin(Doc);\n CodeMirror.inputStyles = {\n \"textarea\": TextareaInput,\n \"contenteditable\": ContentEditableInput\n };\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\") {\n CodeMirror.defaults.mode = name;\n }\n defineMode.apply(this, arguments);\n };\n CodeMirror.defineMIME = defineMIME;\n\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\n // EXTENSIONS\n\n CodeMirror.defineExtension = function (name, func) {\n CodeMirror.prototype[name] = func;\n };\n CodeMirror.defineDocExtension = function (name, func) {\n Doc.prototype[name] = func;\n };\n CodeMirror.fromTextArea = fromTextArea;\n addLegacyProps(CodeMirror);\n CodeMirror.version = \"5.65.5\";\n return CodeMirror;\n});","(function (global, factory) {\n typeof exports === \"object\" && typeof module !== \"undefined\" ? factory(exports) : typeof define === \"function\" && define.amd ? define([\"exports\"], factory) : factory(global.ActiveStorage = {});\n})(this, function (exports) {\n \"use strict\";\n\n function createCommonjsModule(fn, module) {\n return module = {\n exports: {}\n }, fn(module, module.exports), module.exports;\n }\n var sparkMd5 = createCommonjsModule(function (module, exports) {\n (function (factory) {\n {\n module.exports = factory();\n }\n })(function (undefined) {\n var hex_chr = [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\"];\n function md5cycle(x, k) {\n var a = x[0],\n b = x[1],\n c = x[2],\n d = x[3];\n a += (b & c | ~b & d) + k[0] - 680876936 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[1] - 389564586 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[2] + 606105819 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[3] - 1044525330 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[4] - 176418897 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[5] + 1200080426 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[6] - 1473231341 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[7] - 45705983 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[8] + 1770035416 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[9] - 1958414417 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[10] - 42063 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[11] - 1990404162 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[12] + 1804603682 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[13] - 40341101 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[14] - 1502002290 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[15] + 1236535329 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & d | c & ~d) + k[1] - 165796510 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[6] - 1069501632 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[11] + 643717713 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[0] - 373897302 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[5] - 701558691 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[10] + 38016083 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[15] - 660478335 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[4] - 405537848 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[9] + 568446438 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[14] - 1019803690 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[3] - 187363961 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[8] + 1163531501 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[13] - 1444681467 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[2] - 51403784 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[7] + 1735328473 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[12] - 1926607734 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b ^ c ^ d) + k[5] - 378558 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[8] - 2022574463 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[11] + 1839030562 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[14] - 35309556 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[1] - 1530992060 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[4] + 1272893353 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[7] - 155497632 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[10] - 1094730640 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[13] + 681279174 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[0] - 358537222 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[3] - 722521979 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[6] + 76029189 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[9] - 640364487 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[12] - 421815835 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[15] + 530742520 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[2] - 995338651 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (c ^ (b | ~d)) + k[0] - 198630844 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[7] + 1126891415 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[14] - 1416354905 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[5] - 57434055 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[12] + 1700485571 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[3] - 1894986606 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[10] - 1051523 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[1] - 2054922799 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[8] + 1873313359 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[15] - 30611744 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[6] - 1560198380 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[13] + 1309151649 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[4] - 145523070 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[11] - 1120210379 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[2] + 718787259 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[9] - 343485551 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n x[0] = a + x[0] | 0;\n x[1] = b + x[1] | 0;\n x[2] = c + x[2] | 0;\n x[3] = d + x[3] | 0;\n }\n function md5blk(s) {\n var md5blks = [],\n i;\n for (i = 0; i < 64; i += 4) {\n md5blks[i >> 2] = s.charCodeAt(i) + (s.charCodeAt(i + 1) << 8) + (s.charCodeAt(i + 2) << 16) + (s.charCodeAt(i + 3) << 24);\n }\n return md5blks;\n }\n function md5blk_array(a) {\n var md5blks = [],\n i;\n for (i = 0; i < 64; i += 4) {\n md5blks[i >> 2] = a[i] + (a[i + 1] << 8) + (a[i + 2] << 16) + (a[i + 3] << 24);\n }\n return md5blks;\n }\n function md51(s) {\n var n = s.length,\n state = [1732584193, -271733879, -1732584194, 271733878],\n i,\n length,\n tail,\n tmp,\n lo,\n hi;\n for (i = 64; i <= n; i += 64) {\n md5cycle(state, md5blk(s.substring(i - 64, i)));\n }\n s = s.substring(i - 64);\n length = s.length;\n tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= s.charCodeAt(i) << (i % 4 << 3);\n }\n tail[i >> 2] |= 128 << (i % 4 << 3);\n if (i > 55) {\n md5cycle(state, tail);\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n tmp = n * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n tail[14] = lo;\n tail[15] = hi;\n md5cycle(state, tail);\n return state;\n }\n function md51_array(a) {\n var n = a.length,\n state = [1732584193, -271733879, -1732584194, 271733878],\n i,\n length,\n tail,\n tmp,\n lo,\n hi;\n for (i = 64; i <= n; i += 64) {\n md5cycle(state, md5blk_array(a.subarray(i - 64, i)));\n }\n a = i - 64 < n ? a.subarray(i - 64) : new Uint8Array(0);\n length = a.length;\n tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= a[i] << (i % 4 << 3);\n }\n tail[i >> 2] |= 128 << (i % 4 << 3);\n if (i > 55) {\n md5cycle(state, tail);\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n tmp = n * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n tail[14] = lo;\n tail[15] = hi;\n md5cycle(state, tail);\n return state;\n }\n function rhex(n) {\n var s = \"\",\n j;\n for (j = 0; j < 4; j += 1) {\n s += hex_chr[n >> j * 8 + 4 & 15] + hex_chr[n >> j * 8 & 15];\n }\n return s;\n }\n function hex(x) {\n var i;\n for (i = 0; i < x.length; i += 1) {\n x[i] = rhex(x[i]);\n }\n return x.join(\"\");\n }\n if (hex(md51(\"hello\")) !== \"5d41402abc4b2a76b9719d911017c592\") ;\n if (typeof ArrayBuffer !== \"undefined\" && !ArrayBuffer.prototype.slice) {\n (function () {\n function clamp(val, length) {\n val = val | 0 || 0;\n if (val < 0) {\n return Math.max(val + length, 0);\n }\n return Math.min(val, length);\n }\n ArrayBuffer.prototype.slice = function (from, to) {\n var length = this.byteLength,\n begin = clamp(from, length),\n end = length,\n num,\n target,\n targetArray,\n sourceArray;\n if (to !== undefined) {\n end = clamp(to, length);\n }\n if (begin > end) {\n return new ArrayBuffer(0);\n }\n num = end - begin;\n target = new ArrayBuffer(num);\n targetArray = new Uint8Array(target);\n sourceArray = new Uint8Array(this, begin, num);\n targetArray.set(sourceArray);\n return target;\n };\n })();\n }\n function toUtf8(str) {\n if (/[\\u0080-\\uFFFF]/.test(str)) {\n str = unescape(encodeURIComponent(str));\n }\n return str;\n }\n function utf8Str2ArrayBuffer(str, returnUInt8Array) {\n var length = str.length,\n buff = new ArrayBuffer(length),\n arr = new Uint8Array(buff),\n i;\n for (i = 0; i < length; i += 1) {\n arr[i] = str.charCodeAt(i);\n }\n return returnUInt8Array ? arr : buff;\n }\n function arrayBuffer2Utf8Str(buff) {\n return String.fromCharCode.apply(null, new Uint8Array(buff));\n }\n function concatenateArrayBuffers(first, second, returnUInt8Array) {\n var result = new Uint8Array(first.byteLength + second.byteLength);\n result.set(new Uint8Array(first));\n result.set(new Uint8Array(second), first.byteLength);\n return returnUInt8Array ? result : result.buffer;\n }\n function hexToBinaryString(hex) {\n var bytes = [],\n length = hex.length,\n x;\n for (x = 0; x < length - 1; x += 2) {\n bytes.push(parseInt(hex.substr(x, 2), 16));\n }\n return String.fromCharCode.apply(String, bytes);\n }\n function SparkMD5() {\n this.reset();\n }\n SparkMD5.prototype.append = function (str) {\n this.appendBinary(toUtf8(str));\n return this;\n };\n SparkMD5.prototype.appendBinary = function (contents) {\n this._buff += contents;\n this._length += contents.length;\n var length = this._buff.length,\n i;\n for (i = 64; i <= length; i += 64) {\n md5cycle(this._hash, md5blk(this._buff.substring(i - 64, i)));\n }\n this._buff = this._buff.substring(i - 64);\n return this;\n };\n SparkMD5.prototype.end = function (raw) {\n var buff = this._buff,\n length = buff.length,\n i,\n tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n ret;\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= buff.charCodeAt(i) << (i % 4 << 3);\n }\n this._finish(tail, length);\n ret = hex(this._hash);\n if (raw) {\n ret = hexToBinaryString(ret);\n }\n this.reset();\n return ret;\n };\n SparkMD5.prototype.reset = function () {\n this._buff = \"\";\n this._length = 0;\n this._hash = [1732584193, -271733879, -1732584194, 271733878];\n return this;\n };\n SparkMD5.prototype.getState = function () {\n return {\n buff: this._buff,\n length: this._length,\n hash: this._hash\n };\n };\n SparkMD5.prototype.setState = function (state) {\n this._buff = state.buff;\n this._length = state.length;\n this._hash = state.hash;\n return this;\n };\n SparkMD5.prototype.destroy = function () {\n delete this._hash;\n delete this._buff;\n delete this._length;\n };\n SparkMD5.prototype._finish = function (tail, length) {\n var i = length,\n tmp,\n lo,\n hi;\n tail[i >> 2] |= 128 << (i % 4 << 3);\n if (i > 55) {\n md5cycle(this._hash, tail);\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n tmp = this._length * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n tail[14] = lo;\n tail[15] = hi;\n md5cycle(this._hash, tail);\n };\n SparkMD5.hash = function (str, raw) {\n return SparkMD5.hashBinary(toUtf8(str), raw);\n };\n SparkMD5.hashBinary = function (content, raw) {\n var hash = md51(content),\n ret = hex(hash);\n return raw ? hexToBinaryString(ret) : ret;\n };\n SparkMD5.ArrayBuffer = function () {\n this.reset();\n };\n SparkMD5.ArrayBuffer.prototype.append = function (arr) {\n var buff = concatenateArrayBuffers(this._buff.buffer, arr, true),\n length = buff.length,\n i;\n this._length += arr.byteLength;\n for (i = 64; i <= length; i += 64) {\n md5cycle(this._hash, md5blk_array(buff.subarray(i - 64, i)));\n }\n this._buff = i - 64 < length ? new Uint8Array(buff.buffer.slice(i - 64)) : new Uint8Array(0);\n return this;\n };\n SparkMD5.ArrayBuffer.prototype.end = function (raw) {\n var buff = this._buff,\n length = buff.length,\n tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n i,\n ret;\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= buff[i] << (i % 4 << 3);\n }\n this._finish(tail, length);\n ret = hex(this._hash);\n if (raw) {\n ret = hexToBinaryString(ret);\n }\n this.reset();\n return ret;\n };\n SparkMD5.ArrayBuffer.prototype.reset = function () {\n this._buff = new Uint8Array(0);\n this._length = 0;\n this._hash = [1732584193, -271733879, -1732584194, 271733878];\n return this;\n };\n SparkMD5.ArrayBuffer.prototype.getState = function () {\n var state = SparkMD5.prototype.getState.call(this);\n state.buff = arrayBuffer2Utf8Str(state.buff);\n return state;\n };\n SparkMD5.ArrayBuffer.prototype.setState = function (state) {\n state.buff = utf8Str2ArrayBuffer(state.buff, true);\n return SparkMD5.prototype.setState.call(this, state);\n };\n SparkMD5.ArrayBuffer.prototype.destroy = SparkMD5.prototype.destroy;\n SparkMD5.ArrayBuffer.prototype._finish = SparkMD5.prototype._finish;\n SparkMD5.ArrayBuffer.hash = function (arr, raw) {\n var hash = md51_array(new Uint8Array(arr)),\n ret = hex(hash);\n return raw ? hexToBinaryString(ret) : ret;\n };\n return SparkMD5;\n });\n });\n var classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n };\n var createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n var fileSlice = File.prototype.slice || File.prototype.mozSlice || File.prototype.webkitSlice;\n var FileChecksum = function () {\n createClass(FileChecksum, null, [{\n key: \"create\",\n value: function create(file, callback) {\n var instance = new FileChecksum(file);\n instance.create(callback);\n }\n }]);\n function FileChecksum(file) {\n classCallCheck(this, FileChecksum);\n this.file = file;\n this.chunkSize = 2097152;\n this.chunkCount = Math.ceil(this.file.size / this.chunkSize);\n this.chunkIndex = 0;\n }\n createClass(FileChecksum, [{\n key: \"create\",\n value: function create(callback) {\n var _this = this;\n this.callback = callback;\n this.md5Buffer = new sparkMd5.ArrayBuffer();\n this.fileReader = new FileReader();\n this.fileReader.addEventListener(\"load\", function (event) {\n return _this.fileReaderDidLoad(event);\n });\n this.fileReader.addEventListener(\"error\", function (event) {\n return _this.fileReaderDidError(event);\n });\n this.readNextChunk();\n }\n }, {\n key: \"fileReaderDidLoad\",\n value: function fileReaderDidLoad(event) {\n this.md5Buffer.append(event.target.result);\n if (!this.readNextChunk()) {\n var binaryDigest = this.md5Buffer.end(true);\n var base64digest = btoa(binaryDigest);\n this.callback(null, base64digest);\n }\n }\n }, {\n key: \"fileReaderDidError\",\n value: function fileReaderDidError(event) {\n this.callback(\"Error reading \" + this.file.name);\n }\n }, {\n key: \"readNextChunk\",\n value: function readNextChunk() {\n if (this.chunkIndex < this.chunkCount || this.chunkIndex == 0 && this.chunkCount == 0) {\n var start = this.chunkIndex * this.chunkSize;\n var end = Math.min(start + this.chunkSize, this.file.size);\n var bytes = fileSlice.call(this.file, start, end);\n this.fileReader.readAsArrayBuffer(bytes);\n this.chunkIndex++;\n return true;\n } else {\n return false;\n }\n }\n }]);\n return FileChecksum;\n }();\n function getMetaValue(name) {\n var element = findElement(document.head, 'meta[name=\"' + name + '\"]');\n if (element) {\n return element.getAttribute(\"content\");\n }\n }\n function findElements(root, selector) {\n if (typeof root == \"string\") {\n selector = root;\n root = document;\n }\n var elements = root.querySelectorAll(selector);\n return toArray$1(elements);\n }\n function findElement(root, selector) {\n if (typeof root == \"string\") {\n selector = root;\n root = document;\n }\n return root.querySelector(selector);\n }\n function dispatchEvent(element, type) {\n var eventInit = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var disabled = element.disabled;\n var bubbles = eventInit.bubbles,\n cancelable = eventInit.cancelable,\n detail = eventInit.detail;\n var event = document.createEvent(\"Event\");\n event.initEvent(type, bubbles || true, cancelable || true);\n event.detail = detail || {};\n try {\n element.disabled = false;\n element.dispatchEvent(event);\n } finally {\n element.disabled = disabled;\n }\n return event;\n }\n function toArray$1(value) {\n if (Array.isArray(value)) {\n return value;\n } else if (Array.from) {\n return Array.from(value);\n } else {\n return [].slice.call(value);\n }\n }\n var BlobRecord = function () {\n function BlobRecord(file, checksum, url) {\n var _this = this;\n classCallCheck(this, BlobRecord);\n this.file = file;\n this.attributes = {\n filename: file.name,\n content_type: file.type || \"application/octet-stream\",\n byte_size: file.size,\n checksum: checksum\n };\n this.xhr = new XMLHttpRequest();\n this.xhr.open(\"POST\", url, true);\n this.xhr.responseType = \"json\";\n this.xhr.setRequestHeader(\"Content-Type\", \"application/json\");\n this.xhr.setRequestHeader(\"Accept\", \"application/json\");\n this.xhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\n var csrfToken = getMetaValue(\"csrf-token\");\n if (csrfToken != undefined) {\n this.xhr.setRequestHeader(\"X-CSRF-Token\", csrfToken);\n }\n this.xhr.addEventListener(\"load\", function (event) {\n return _this.requestDidLoad(event);\n });\n this.xhr.addEventListener(\"error\", function (event) {\n return _this.requestDidError(event);\n });\n }\n createClass(BlobRecord, [{\n key: \"create\",\n value: function create(callback) {\n this.callback = callback;\n this.xhr.send(JSON.stringify({\n blob: this.attributes\n }));\n }\n }, {\n key: \"requestDidLoad\",\n value: function requestDidLoad(event) {\n if (this.status >= 200 && this.status < 300) {\n var response = this.response;\n var direct_upload = response.direct_upload;\n delete response.direct_upload;\n this.attributes = response;\n this.directUploadData = direct_upload;\n this.callback(null, this.toJSON());\n } else {\n this.requestDidError(event);\n }\n }\n }, {\n key: \"requestDidError\",\n value: function requestDidError(event) {\n this.callback('Error creating Blob for \"' + this.file.name + '\". Status: ' + this.status);\n }\n }, {\n key: \"toJSON\",\n value: function toJSON() {\n var result = {};\n for (var key in this.attributes) {\n result[key] = this.attributes[key];\n }\n return result;\n }\n }, {\n key: \"status\",\n get: function get$$1() {\n return this.xhr.status;\n }\n }, {\n key: \"response\",\n get: function get$$1() {\n var _xhr = this.xhr,\n responseType = _xhr.responseType,\n response = _xhr.response;\n if (responseType == \"json\") {\n return response;\n } else {\n return JSON.parse(response);\n }\n }\n }]);\n return BlobRecord;\n }();\n var BlobUpload = function () {\n function BlobUpload(blob) {\n var _this = this;\n classCallCheck(this, BlobUpload);\n this.blob = blob;\n this.file = blob.file;\n var _blob$directUploadDat = blob.directUploadData,\n url = _blob$directUploadDat.url,\n headers = _blob$directUploadDat.headers;\n this.xhr = new XMLHttpRequest();\n this.xhr.open(\"PUT\", url, true);\n this.xhr.responseType = \"text\";\n for (var key in headers) {\n this.xhr.setRequestHeader(key, headers[key]);\n }\n this.xhr.addEventListener(\"load\", function (event) {\n return _this.requestDidLoad(event);\n });\n this.xhr.addEventListener(\"error\", function (event) {\n return _this.requestDidError(event);\n });\n }\n createClass(BlobUpload, [{\n key: \"create\",\n value: function create(callback) {\n this.callback = callback;\n this.xhr.send(this.file.slice());\n }\n }, {\n key: \"requestDidLoad\",\n value: function requestDidLoad(event) {\n var _xhr = this.xhr,\n status = _xhr.status,\n response = _xhr.response;\n if (status >= 200 && status < 300) {\n this.callback(null, response);\n } else {\n this.requestDidError(event);\n }\n }\n }, {\n key: \"requestDidError\",\n value: function requestDidError(event) {\n this.callback('Error storing \"' + this.file.name + '\". Status: ' + this.xhr.status);\n }\n }]);\n return BlobUpload;\n }();\n var id = 0;\n var DirectUpload = function () {\n function DirectUpload(file, url, delegate) {\n classCallCheck(this, DirectUpload);\n this.id = ++id;\n this.file = file;\n this.url = url;\n this.delegate = delegate;\n }\n createClass(DirectUpload, [{\n key: \"create\",\n value: function create(callback) {\n var _this = this;\n FileChecksum.create(this.file, function (error, checksum) {\n if (error) {\n callback(error);\n return;\n }\n var blob = new BlobRecord(_this.file, checksum, _this.url);\n notify(_this.delegate, \"directUploadWillCreateBlobWithXHR\", blob.xhr);\n blob.create(function (error) {\n if (error) {\n callback(error);\n } else {\n var upload = new BlobUpload(blob);\n notify(_this.delegate, \"directUploadWillStoreFileWithXHR\", upload.xhr);\n upload.create(function (error) {\n if (error) {\n callback(error);\n } else {\n callback(null, blob.toJSON());\n }\n });\n }\n });\n });\n }\n }]);\n return DirectUpload;\n }();\n function notify(object, methodName) {\n if (object && typeof object[methodName] == \"function\") {\n for (var _len = arguments.length, messages = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n messages[_key - 2] = arguments[_key];\n }\n return object[methodName].apply(object, messages);\n }\n }\n var DirectUploadController = function () {\n function DirectUploadController(input, file) {\n classCallCheck(this, DirectUploadController);\n this.input = input;\n this.file = file;\n this.directUpload = new DirectUpload(this.file, this.url, this);\n this.dispatch(\"initialize\");\n }\n createClass(DirectUploadController, [{\n key: \"start\",\n value: function start(callback) {\n var _this = this;\n var hiddenInput = document.createElement(\"input\");\n hiddenInput.type = \"hidden\";\n hiddenInput.name = this.input.name;\n this.input.insertAdjacentElement(\"beforebegin\", hiddenInput);\n this.dispatch(\"start\");\n this.directUpload.create(function (error, attributes) {\n if (error) {\n hiddenInput.parentNode.removeChild(hiddenInput);\n _this.dispatchError(error);\n } else {\n hiddenInput.value = attributes.signed_id;\n }\n _this.dispatch(\"end\");\n callback(error);\n });\n }\n }, {\n key: \"uploadRequestDidProgress\",\n value: function uploadRequestDidProgress(event) {\n var progress = event.loaded / event.total * 100;\n if (progress) {\n this.dispatch(\"progress\", {\n progress: progress\n });\n }\n }\n }, {\n key: \"dispatch\",\n value: function dispatch(name) {\n var detail = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n detail.file = this.file;\n detail.id = this.directUpload.id;\n return dispatchEvent(this.input, \"direct-upload:\" + name, {\n detail: detail\n });\n }\n }, {\n key: \"dispatchError\",\n value: function dispatchError(error) {\n var event = this.dispatch(\"error\", {\n error: error\n });\n if (!event.defaultPrevented) {\n alert(error);\n }\n }\n }, {\n key: \"directUploadWillCreateBlobWithXHR\",\n value: function directUploadWillCreateBlobWithXHR(xhr) {\n this.dispatch(\"before-blob-request\", {\n xhr: xhr\n });\n }\n }, {\n key: \"directUploadWillStoreFileWithXHR\",\n value: function directUploadWillStoreFileWithXHR(xhr) {\n var _this2 = this;\n this.dispatch(\"before-storage-request\", {\n xhr: xhr\n });\n xhr.upload.addEventListener(\"progress\", function (event) {\n return _this2.uploadRequestDidProgress(event);\n });\n }\n }, {\n key: \"url\",\n get: function get$$1() {\n return this.input.getAttribute(\"data-direct-upload-url\");\n }\n }]);\n return DirectUploadController;\n }();\n var inputSelector = \"input[type=file][data-direct-upload-url]:not([disabled])\";\n var DirectUploadsController = function () {\n function DirectUploadsController(form) {\n classCallCheck(this, DirectUploadsController);\n this.form = form;\n this.inputs = findElements(form, inputSelector).filter(function (input) {\n return input.files.length;\n });\n }\n createClass(DirectUploadsController, [{\n key: \"start\",\n value: function start(callback) {\n var _this = this;\n var controllers = this.createDirectUploadControllers();\n var startNextController = function startNextController() {\n var controller = controllers.shift();\n if (controller) {\n controller.start(function (error) {\n if (error) {\n callback(error);\n _this.dispatch(\"end\");\n } else {\n startNextController();\n }\n });\n } else {\n callback();\n _this.dispatch(\"end\");\n }\n };\n this.dispatch(\"start\");\n startNextController();\n }\n }, {\n key: \"createDirectUploadControllers\",\n value: function createDirectUploadControllers() {\n var controllers = [];\n this.inputs.forEach(function (input) {\n toArray$1(input.files).forEach(function (file) {\n var controller = new DirectUploadController(input, file);\n controllers.push(controller);\n });\n });\n return controllers;\n }\n }, {\n key: \"dispatch\",\n value: function dispatch(name) {\n var detail = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return dispatchEvent(this.form, \"direct-uploads:\" + name, {\n detail: detail\n });\n }\n }]);\n return DirectUploadsController;\n }();\n var processingAttribute = \"data-direct-uploads-processing\";\n var submitButtonsByForm = new WeakMap();\n var started = false;\n function start() {\n if (!started) {\n started = true;\n document.addEventListener(\"click\", didClick, true);\n document.addEventListener(\"submit\", didSubmitForm);\n document.addEventListener(\"ajax:before\", didSubmitRemoteElement);\n }\n }\n function didClick(event) {\n var target = event.target;\n if ((target.tagName == \"INPUT\" || target.tagName == \"BUTTON\") && target.type == \"submit\" && target.form) {\n submitButtonsByForm.set(target.form, target);\n }\n }\n function didSubmitForm(event) {\n handleFormSubmissionEvent(event);\n }\n function didSubmitRemoteElement(event) {\n if (event.target.tagName == \"FORM\") {\n handleFormSubmissionEvent(event);\n }\n }\n function handleFormSubmissionEvent(event) {\n var form = event.target;\n if (form.hasAttribute(processingAttribute)) {\n event.preventDefault();\n return;\n }\n var controller = new DirectUploadsController(form);\n var inputs = controller.inputs;\n if (inputs.length) {\n event.preventDefault();\n form.setAttribute(processingAttribute, \"\");\n inputs.forEach(disable);\n controller.start(function (error) {\n form.removeAttribute(processingAttribute);\n if (error) {\n inputs.forEach(enable);\n } else {\n submitForm(form);\n }\n });\n }\n }\n function submitForm(form) {\n var button = submitButtonsByForm.get(form) || findElement(form, \"input[type=submit], button[type=submit]\");\n if (button) {\n var _button = button,\n disabled = _button.disabled;\n button.disabled = false;\n button.focus();\n button.click();\n button.disabled = disabled;\n } else {\n button = document.createElement(\"input\");\n button.type = \"submit\";\n button.style.display = \"none\";\n form.appendChild(button);\n button.click();\n form.removeChild(button);\n }\n submitButtonsByForm.delete(form);\n }\n function disable(input) {\n input.disabled = true;\n }\n function enable(input) {\n input.disabled = false;\n }\n function autostart() {\n if (window.ActiveStorage) {\n start();\n }\n }\n setTimeout(autostart, 1);\n exports.start = start;\n exports.DirectUpload = DirectUpload;\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n});","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout() {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n})();\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch (e) {\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch (e) {\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e) {\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e) {\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n var len = queue.length;\n while (len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\nfunction noop() {}\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\nprocess.listeners = function (name) {\n return [];\n};\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\nprocess.cwd = function () {\n return '/';\n};\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function () {\n return 0;\n};","var g;\n\n// This works in non-strict mode\ng = function () {\n return this;\n}();\ntry {\n // This works if eval is allowed (see CSP)\n g = g || new Function(\"return this\")();\n} catch (e) {\n // This works if the window reference is available\n if (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;","var map = {\n\t\"./ad_channel_controller.js\": 19,\n\t\"./ad_chooser_controller.js\": 20,\n\t\"./ad_chooser_modal_controller.js\": 21,\n\t\"./ad_txt_editor_controller.js\": 22,\n\t\"./adblockers_controller.js\": 23,\n\t\"./ads_controller.js\": 24,\n\t\"./cable/ad_previews_controller.js\": 25,\n\t\"./capturable/files_controller.js\": 4,\n\t\"./capturable/frames_controller.js\": 26,\n\t\"./capturable/html_zips_controller.js\": 27,\n\t\"./capturable/image_files_controller.js\": 28,\n\t\"./capturable/native_displays_controller.js\": 29,\n\t\"./capturable/video_files_controller.js\": 30,\n\t\"./clipboard_controller.js\": 31,\n\t\"./copy_and_open_url_controller.js\": 32,\n\t\"./csv_imports_controller.js\": 33,\n\t\"./datatables/ads_controller.js\": 34,\n\t\"./datatables/campaigns_controller.js\": 35,\n\t\"./datatables/deliveries_controller.js\": 36,\n\t\"./datatables/pending_sets_controller.js\": 37,\n\t\"./datatables/scheduled_sets_controller.js\": 38,\n\t\"./datatables/screenshots_controller.js\": 39,\n\t\"./datatables/sites_controller.js\": 40,\n\t\"./datatables/webhooks_controller.js\": 41,\n\t\"./datatables/website_screenshots_controller.js\": 42,\n\t\"./datatables_controller.js\": 1,\n\t\"./daterangepicker_controller.js\": 43,\n\t\"./device_frame_controller.js\": 44,\n\t\"./drafts_controller.js\": 45,\n\t\"./dropzone_controller.js\": 2,\n\t\"./failed_import_controller.js\": 46,\n\t\"./feature_flags_controller.js\": 47,\n\t\"./filters_controller.js\": 48,\n\t\"./input_disabler_controller.js\": 49,\n\t\"./input_switcher_controller.js\": 50,\n\t\"./intercom_articles_controller.js\": 51,\n\t\"./notifications_controller.js\": 52,\n\t\"./perfcascade_controller.js\": 53,\n\t\"./posthog_controller.js\": 74,\n\t\"./powerpoint_imports_controller.js\": 54,\n\t\"./presentations_controller.js\": 55,\n\t\"./range_slider_controller.js\": 56,\n\t\"./s3_connector_controller.js\": 57,\n\t\"./screenshot_sets_controller.js\": 58,\n\t\"./screenshots/workflow_controller.js\": 59,\n\t\"./screenshots_controller.js\": 60,\n\t\"./select2/campaigns_controller.js\": 61,\n\t\"./select2/sites_controller.js\": 8,\n\t\"./select2/sites_url_value_controller.js\": 62,\n\t\"./select2_controller.js\": 7,\n\t\"./selectpicker_controller.js\": 63,\n\t\"./shareable_link_controller.js\": 64,\n\t\"./site_apply_mode_controller.js\": 65,\n\t\"./site_list_controller.js\": 66,\n\t\"./site_lists_apply_mode_controller.js\": 67,\n\t\"./sites_bulk_form_controller.js\": 68,\n\t\"./spreadsheet_imports_controller.js\": 69,\n\t\"./tally_controller.js\": 70,\n\t\"./utm_controller.js\": 71,\n\t\"./wrapper_type_controller.js\": 72\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 18;","import { Controller } from \"stimulus\"\n\nexport default class extends Controller {\n static targets = [\n \"frames\", \n \"video\", \n \"asset\",\n \"performanceMetrics\"\n ]\n\n connect() {\n this.channel = App.cable.subscriptions.create(\n { channel: \"AdChannel\", ad_id: this.data.get('adId') },\n {\n connected: () => console.log('AdChannel connected'),\n disconnected: () => console.log('AdChannel disconnected'),\n received: (data) => this.handleMessage(data)\n }\n )\n }\n\n disconnect() {\n if (this.channel) {\n App.cable.subscriptions.remove(this.channel)\n }\n }\n\n handleMessage(data) {\n if (this.hasAssetTarget) this.updateContentFromData(data.asset, this.assetTarget)\n if (this.hasFramesTarget) this.updateContentFromData(data.frames, this.framesTarget)\n if (this.hasPerformanceMetricsTarget) this.updateContentFromData(data.performance_metrics, this.performanceMetricsTarget)\n if (this.hasVideoTarget) this.updateContentFromData(data.video, this.videoTarget)\n App.initTooltipsAndPopovers()\n }\n\n updateContentFromData(templateData, target) { \n if (templateData && target) {\n target.innerHTML = templateData\n }\n }\n\n handleGenerateScreenshotsButton(data) {\n const button = this.generateScreenshotsButton\n if (!button || !button.classList.contains('disabled')) return\n console.log(`button.dataset.enabledText: ${button.dataset.enabledText}`)\n\n if (data.status === 'uploaded') {\n button.innerHTML = window.faicon('plus', { text: button.dataset.enabledText })\n button.classList.remove('disabled')\n }\n }\n\n get generateScreenshotsButton() {\n return document.querySelector(`[data-ad-id=\"${this.data.get('adId')}\"][data-target=\"ad-channel.generateScreenshotsButton\"]`)\n }\n}\n","import { Controller } from \"stimulus\"\n\nexport default class extends Controller {\n static targets = [\"addSiteButton\"]\n\n initialize() {\n this.cocoonEvent()\n this.adContainer = $(this.element.firstChild).find('[data-ad-id=\"true\"]')\n }\n\n cocoonEvent() {\n var controller = this\n $(controller.addSiteButtonTargets).\n data(\"association-insertion-method\", 'append').\n data(\"association-insertion-node\", function (link) {\n return link.closest(controller.data.get('container')).find(controller.data.get('form'))\n });\n }\n\n openModal(e) {\n e.preventDefault()\n var controller = this\n\n $.ajax({\n type: 'GET',\n url: Routes.organization_campaign_ad_previews_path(App.currentOrganizationId(), controller.campaignId),\n success: function () {\n $(document).on(controller.adSelectedEvent, function(event, adId) {\n controller.refreshAdPreview(adId)\n controller.detachAdSelectedListener()\n })\n\n $(document).on(controller.adModalClosedEvent, function(event) {\n controller.detachAdSelectedListener()\n })\n }\n });\n }\n\n detachAdSelectedListener() {\n $(document).off(this.adSelectedEvent)\n }\n\n refreshAdPreview(adId) {\n const adSelect = this.adContainer[0];\n adSelect.value = adId;\n adSelect.dispatchEvent(new Event('change', { bubbles: true }));\n\n var coverContainer = $(this.element.firstChild).find('[data-is=\"cover-container\"]')\n coverContainer.attr(\"data-selected-ad\", adId)\n\n $.ajax({\n type: 'GET',\n url: Routes.organization_campaign_ad_preview_path(App.currentOrganizationId(), this.campaignId, adId),\n success: function () {\n App.initTooltipsAndPopovers()\n }\n });\n }\n\n get campaignId() {\n return this.data.get('campaign')\n }\n\n get adSelectedEvent() {\n return 'ad_chooser_modal.ad_selected'\n }\n\n get adModalClosedEvent() {\n return 'ad_chooser_modal.closed'\n }\n}\n","import { Controller } from \"stimulus\"\n\nexport default class extends Controller {\n initialize() {\n $(this.element).modal()\n }\n\n closeModal() {\n $(document).trigger('ad_chooser_modal.closed');\n this.hideModal()\n }\n\n selectAd(event) {\n event.preventDefault()\n $(document).trigger('ad_chooser_modal.ad_selected', event.currentTarget.dataset.adId);\n this.hideModal()\n }\n\n hideModal() {\n $(this.element).modal('hide')\n }\n}\n","import { Controller } from \"stimulus\"\nimport CodeMirror from \"codemirror/lib/codemirror\"\n\nexport default class extends Controller {\n static targets = [\"textarea\"]\n\n connect() {\n if (!this.textareaTarget.dataset.codeEditor) {\n this.initCodeMirror()\n this.highlightLines()\n }\n }\n\n disconnect() {\n if (this.editor) {\n this.editor.toTextArea()\n }\n }\n\n initCodeMirror() {\n this.editor = CodeMirror.fromTextArea(this.textareaTarget, {\n lineNumbers: true,\n readOnly: true,\n styleSelectedText: true,\n gutters: ['errors-and-warnings', 'CodeMirror-linenumbers']\n })\n this.textareaTarget.dataset.codemirrorEditor = true\n }\n\n highlightLines() {\n const errorsAndWarnings = JSON.parse(this.textareaTarget.dataset.errorsAndWarnings || '[]')\n \n errorsAndWarnings.forEach(obj => {\n const colorClass = obj.status === 'warning' ? 'yellow' : 'red'\n const iconClass = obj.status === 'warning' ? 'exclamation-circle' : 'times-circle'\n\n this.editor.addLineClass(obj.index, 'wrap', `bg-${colorClass}`)\n\n const marker = document.createElement('div')\n marker.classList.add(colorClass)\n marker.dataset.toggle = 'popover'\n marker.dataset.trigger = 'hover'\n marker.dataset.placement = 'top'\n marker.dataset.content = obj.messages.join('
')\n marker.dataset.html = 'true'\n marker.innerHTML = this.faIcon(iconClass)\n\n $(marker).popover({ animation: false })\n this.editor.setGutterMarker(obj.index, 'errors-and-warnings', marker)\n })\n }\n\n faIcon(iconClass) {\n return ``\n }\n} \n","import { Controller } from \"stimulus\"\n\nexport default class extends Controller {\n\n initialize() {\n var controller = this;\n var checkAdBlock = new FuckAdBlock({checkOnLoad: false, resetOnEnd: true});\n checkAdBlock.check(true);\n checkAdBlock.onDetected(function() {\n controller.notifyUser();\n controller.notifyIntercom();\n });\n }\n\n notifyUser() {\n var controller = this;\n noty({\n text: controller.getMessage(),\n layout: 'bottomLeft',\n type: 'warning',\n closeWith: ['click', 'button'],\n timeout: false\n });\n }\n\n getMessage() {\n return \"
👋 It looks like you're using an ad blocker. Please exclude our domain from your ad blocker to ensure that our service works as expected. \" + this.getKBButton() +\"
\";\n }\n\n getKBButton() {\n return \"
Learn more\";\n }\n\n getKnowledgeBaseUrl() {\n return \"http://help.adreform.com/en/articles/4281510\";\n }\n\n notifyIntercom() {\n Intercom('trackEvent', 'received ad block notice');\n }\n}\n","import DropzoneController from \"./dropzone_controller\"\n\nexport default class extends DropzoneController {\n static targets = [\"input\"]\n\n acceptedFiles() {\n return \"image/jpeg,image/jpg,image/png,image/gif\"\n }\n\n emptyQueue() {\n this.element.submit()\n }\n\n submitForm(controller, target, formData) {\n var fields = $(controller.element).serializeArray()\n $.each(fields, function (i, field) {\n formData.append(field.name, field.value);\n });\n }\n}\n","import { Controller } from \"stimulus\"\n\nexport default class extends Controller {\n static targets = [\"adPreview\", \"pagexray\", \"landingPage\", \"imagePreview\", \"script\", \"networkTimeline\", \"livePreview\"]\n\n initialize() {\n if ( this.hasAdPreviewTarget || this.hasPagexrayTarget || this.hasLandingPageTarget ) {\n this.channel = App.cable.subscriptions.create({ channel: 'AdPreviewChannel', id: this.data.get('previewId') }, {\n connected: this._connected.bind(this),\n disconnected: this._disconnect.bind(this),\n received: this._received.bind(this)\n })\n }\n }\n\n listen() {\n if (this.channel) {\n this.channel.perform('follow', { id: this.data.get('previewId') })\n }\n }\n\n _connected() {\n this.listen()\n }\n\n _disconnect() {\n App.cable.subscriptions.remove(this.channel)\n }\n\n _received(data){\n let targetName = data.target+\"Target\"\n $(this[targetName]).html(data['rendered_partial'])\n }\n}\n","import { Controller } from \"stimulus\"\n\nexport default class extends Controller {\n static targets = [\"frames\", \"inputs\", \"submit\"];\n \n onClickFrame(event){\n this.unselectAllFrames();\n this.selectFrame(event.currentTarget);\n }\n\n selectFrame(target){\n this.enableSubmitButton();\n this.enableFrameIdInput(target);\n $(target).addClass(\"capturable-frame-card-selected\");\n }\n\n unselectAllFrames(){\n this.disableSubmitButton();\n this.disableAllFrameIdInputs();\n this.unselectAllFrameCards();\n }\n\n unselectAllFrameCards(){\n $(this.framesTargets).removeClass(\"capturable-frame-card-selected\");\n }\n\n disableAllFrameIdInputs(){\n $(this.inputsTargets).prop(\"disabled\", \"disabled\"); \n }\n\n disableSubmitButton(){\n this.submitTarget.disabled = true;\n }\n\n enableSubmitButton(){\n this.submitTarget.disabled = false;\n }\n\n enableFrameIdInput(target){\n $(target).children(\"input.frame-id\")[0].disabled = false;\n }\n}\n","import FilesController from \"./files_controller\"\n\nexport default class extends FilesController {\n acceptedFiles() {\n return \".zip,application/zip,application/x-zip-compressed,\" +\n \"multipart/x-zip,application/octet-stream,application/x-compressed\"\n }\n\n emptyQueue() {\n noty({ text: 'Please provide a zip file' })\n }\n}\n","import FilesController from \"./files_controller\"\n\nexport default class extends FilesController {\n\n acceptedFiles() {\n return \"image/jpeg,image/jpg,image/png,image/gif\"\n }\n\n emptyQueue() {\n noty({ text: 'Please provide an image file' })\n }\n}\n","import FilesController from \"./files_controller\"\n\nexport default class extends FilesController {\n static targets = [\"input\", \"logo\"]\n\n acceptedFiles() {\n return \"image/jpeg,image/jpg,image/png,image/gif\"\n }\n\n emptyQueue() {\n noty({ text: 'Please provide an image file' })\n this.enableDropzoneHiddenFileInput();\n }\n\n get submitData() {\n return new FormData(this.element);\n }\n\n get submitCustomParams() {\n return { \n processData: false,\n contentType: false\n }\n }\n}\n","import FilesController from \"./files_controller\"\n\nexport default class extends FilesController {\n static targets = [\"input\", \"submit\", \"adIds\", \"previewFrame\", \"form\"]\n\n acceptedFiles() {\n return \"video/mp4,video/mpeg,video/webm\"\n }\n\n emptyQueue() {\n noty({ text: 'Please provide a video file' })\n }\n\n get previewFrame() {\n return $(this.previewFrameTarget).val()\n }\n\n onSubmitSuccess() {\n // set preview frame and then, if successful, call the original/regular file submit behavior\n this.setPreviewFrameThenSubmit()\n }\n\n setPreviewFrameThenSubmit() {\n let controller = this\n $.ajax({\n type: 'PUT',\n url: Routes.set_frame_organization_campaign_video_files_path(App.currentOrganizationId(), controller.campaignId),\n data: { preview_frame: controller.previewFrame, ad_ids: controller.adIds },\n error: function(response) {\n controller.enableSubmitButton()\n noty({ text: response.message })\n },\n success: function(response) {\n controller.createDraftSetAndRedirect()\n }\n })\n }\n}\n","import { Controller } from \"stimulus\"\n\nexport default class extends Controller {\n\n copy(event) {\n var target = $(event.currentTarget)\n navigator.clipboard.writeText(target.data('clipboard-text'))\n var title = target.data('original-title')\n target.tooltip({ animation: false }).attr('data-original-title', 'copied!').tooltip('show')\n setTimeout(function () {\n target.attr('data-original-title', title)\n target.tooltip('hide')\n }, 1000)\n }\n}\n","import { Controller } from \"stimulus\"\n\nexport default class extends Controller {\n run(event) {\n event.preventDefault()\n var target = $(event.currentTarget)\n navigator.clipboard.writeText(this.data.get('text'))\n window.open(this.data.get('url'), '_blank')\n }\n}\n","import DropzoneController from \"./dropzone_controller\"\n\nexport default class extends DropzoneController {\n static targets = [\"input\"]\n\n acceptedFiles() {\n return \".csv,text/csv,text/plain,application/vnd.ms-excel,application/octet-stream\"\n }\n\n emptyQueue() {\n noty({ text: 'Please provide a CSV file' })\n }\n\n submitForm(controller, target, formData) {\n var fields = $(controller.element).serializeArray()\n $.each(fields, function (i, field) {\n formData.append(field.name, field.value);\n });\n }\n}\n","import DatatablesController from \"../datatables_controller\"\n\nexport default class AdsController extends DatatablesController {\n\n initialize() {\n var config = JSON.parse(this.data.get('config'))\n var customButtons = {\n buttons: {\n buttons: [\n {\n extend: 'collection',\n text: 'Export',\n className: 'hidden',\n buttons: [\n {\n extend: 'csvHtml5',\n text: faicon('table', { text: 'CSV' }),\n exportOptions: {\n columns: ['ad_name_or_id:name', 'external_id:name', 'landing_page_url:name', 'kind:name', 'screenshot_count:name', 'created_at:name']\n }\n },\n {\n extend: 'excelHtml5',\n text: faicon('file-excel-o', { text: 'Excel' }),\n exportOptions: {\n columns: ['ad_name_or_id:name', 'external_id:name', 'landing_page_url:name', 'kind:name', 'screenshot_count:name', 'created_at:name']\n }\n }\n ]\n }\n ]\n }\n }\n var customConfig = $.extend(true, config, customButtons)\n this.data.set('config', JSON.stringify(customConfig));\n\n super.initialize()\n }\n\n createDraftScreenshotSet(event) {\n var $button = $(event.target)\n\n $button.addClass('disabled').prop('disabled', true)\n\n var campaignId = this.data.get('campaign-id')\n var params = { ad_ids: this.selectedRows }\n if (this.selectedAllData) {\n params = { all: true }\n }\n var url = Routes.draft_organization_campaign_screenshot_sets_path(App.currentOrganizationId(), campaignId)\n\n $.ajax({\n data: params,\n url: url,\n method: 'POST',\n dataType: 'json',\n error: function (xhr) {\n $button.removeClass('disabled').prop('disabled', false)\n noty({ text: xhr.responseJSON.error })\n },\n success: function (response) {\n window.location.href = response.location\n }\n })\n }\n\n bulkRecapture(event) {\n event.preventDefault()\n var $button = $(event.target)\n\n $button.addClass('disabled').prop('disabled', true)\n\n var campaignId = this.data.get('campaign-id')\n var params = { ad_ids: this.selectedRows }\n if (this.selectedAllData) {\n params = { all: true }\n }\n\n var url = Routes.recapture_bulk_organization_campaign_ads_path(App.currentOrganizationId(), campaignId)\n\n $.ajax({\n data: params,\n url: url,\n method: 'POST',\n dataType: 'json',\n error: function(xhr) {\n $button.removeClass('disabled').prop('disabled', false)\n noty({ text: xhr.responseJSON.error })\n },\n success: function(response) {\n noty({ text: response.message, type: 'success' })\n window.location.reload()\n }\n })\n }\n\n download() {\n var campaignId = this.data.get('campaign-id')\n var params = { 'ids': this.selectedRows }\n if (this.selectedAllData) {\n params = { all: true }\n }\n\n var url = Routes.download_bulk_organization_campaign_ads_path(App.currentOrganizationId(), campaignId, params)\n window.location.href = url\n }\n\n exportCSV() {\n this.dataTable.button('.buttons-csv').trigger();\n }\n\n exportExcel() {\n this.dataTable.button('.buttons-excel').trigger();\n }\n}\n","import DatatablesController from \"../datatables_controller\"\n\nexport default class CampaignsController extends DatatablesController {\n static targets = [ ...super.targets, \"clientFilter\" ]\n\n download() {\n var controller = this\n\n if (!this.selectedAllData && (!this.selectedRows || this.selectedRows.length === 0)) {\n noty({\n text: 'Please select at least one campaign to download!'\n })\n return\n }\n\n if (this.selectedAllData) {\n var params = { all: true, record_count: this.recordsTotal }\n } else {\n var campaignIds = this.selectedRows\n var params = { all: false, record_count: campaignIds.length, campaign_ids: campaignIds }\n }\n\n $.ajax({\n url: Routes.new_organization_campaign_download_path(App.currentOrganizationId()),\n method: 'GET',\n data: params,\n complete: function () {\n controller.deselectAllRowsPage()\n }\n })\n }\n\n filterClient() {\n this.filterColumn(this.clientColumnIndex, this.clientFilterValue)\n }\n\n get clientColumnIndex() {\n return this.config.columns.findIndex(column => column.data === 'client_id')\n }\n\n get clientFilterValue() {\n return $(this.clientFilterTarget).val()\n }\n}\n","import DatatablesController from \"../datatables_controller\"\n\nexport default class DeliveriesController extends DatatablesController {\n\n resend(event) {\n var params = { delivery_id: event.target.dataset.id }\n var url = Routes.resend_organization_webhook_path(App.currentOrganizationId(), event.target.dataset.webhookId)\n $.ajax({\n data: params,\n url: url,\n method: 'POST',\n dataType: 'json',\n error: function (xhr) {\n noty({ text: xhr.responseJSON.error })\n },\n success: function (response) {\n noty({ type: 'success', text: response.message })\n window.location.href = response.location\n }\n })\n }\n}\n","import DatatablesController from \"../datatables_controller\"\n\nexport default class PendingSetsController extends DatatablesController {\n static targets = [ ...super.targets, \"assignedFilter\", \"sourceFilter\", \"organizationFilter\" ]\n\n filterAssigned() {\n this.filterColumn(this.reviewerColumnIndex, this.assignedFilterValue)\n }\n\n filterSource(){\n this.filterColumn(this.sourceColumnIndex, this.sourceFilterValue)\n }\n\n filterOrganization() {\n this.filterColumn(this.organizationColumnIndex, this.organizationFilterValue)\n }\n\n refreshData() {\n this.dataTable.ajax.reload()\n }\n\n get reviewerColumnIndex() {\n return this.config.columns.findIndex(column => column.data === 'reviewer')\n }\n\n get sourceColumnIndex() {\n return this.config.columns.findIndex(column => column.data === 'source')\n }\n\n get organizationColumnIndex() {\n return this.config.columns.findIndex(column => column.data === 'organization')\n }\n\n get assignedFilterValue() {\n return $(this.assignedFilterTarget).val()\n }\n\n get sourceFilterValue() {\n return $(this.sourceFilterTarget).val()\n }\n\n get organizationFilterValue() {\n return $(this.organizationFilterTarget).val()\n }\n}\n","import DatatablesController from \"../datatables_controller\"\n\nexport default class ScheduledSetsController extends DatatablesController {\n static targets = [ ...super.targets, \"organizationFilter\" ]\n\n filterOrganization() {\n this.filterColumn(this.organizationColumnIndex, this.organizationFilterValue)\n }\n\n get organizationColumnIndex() {\n return this.config.columns.findIndex(column => column.data === 'organization')\n }\n\n get organizationFilterValue() {\n return $(this.organizationFilterTarget).val()\n }\n}\n","import DatatablesController from \"../datatables_controller\"\n\nexport default class ScreenshotsController extends DatatablesController {\n createPresentation() {\n var controller = this\n var campaignId = this.data.get('campaign-id')\n\n if (this.selectedAllData) {\n var params = { all: true, record_count: this.recordsTotal }\n params['screenshot_set_ids'] = this.screenshotSetIds\n } else {\n var params = {\n all: false,\n record_count: this.selectedRows.length,\n screenshot_ids: this.selectedRows\n }\n }\n\n $.ajax({\n data: params,\n url: Routes.new_organization_campaign_presentation_path(App.currentOrganizationId(), campaignId),\n method: 'GET',\n complete: function () {\n controller.deselectAllRowsPage()\n }\n })\n }\n\n regenerate() {\n var campaignId = this.data.get('campaign-id')\n var recordCount = this.selectedAllData ? this.recordsTotal : this.selectedRows.length\n var params = { 'screenshot_set_ids': this.screenshotSetIds }\n\n if (this.selectedAllData) {\n params = { all: true }\n } else {\n params['screenshot_ids'] = this.selectedRows\n }\n\n var conf = confirm(\"This will replace existing images for the selected screenshots. Are you sure you want to regenerate \" + recordCount + \" screenshot(s)?\")\n if (conf) {\n $.ajax({\n url: Routes.regenerate_organization_campaign_screenshot_sets_path(App.currentOrganizationId(), campaignId),\n method: 'PUT',\n data: params,\n complete: function () {\n window.location.reload()\n }\n })\n }\n }\n\n download() {\n var controller = this\n var campaignId = this.data.get('campaign-id')\n\n if (this.selectedAllData) {\n var params = {\n all: true,\n record_count: this.recordsTotal,\n screenshot_set_ids: this.screenshotSetIds\n }\n } else {\n var params = {\n all: false,\n record_count: this.selectedRows.length,\n screenshot_set_ids: this.selectedScreenshotSetIds,\n screenshot_ids: this.selectedRows\n }\n }\n\n $.ajax({\n url: Routes.draft_organization_campaign_screenshot_downloads_path(App.currentOrganizationId(), campaignId),\n method: 'POST',\n data: params,\n complete: function () {\n controller.deselectAllRowsPage()\n }\n })\n }\n\n get selectedScreenshotSetIds() {\n return $.uniqueSort(this.selectedRowValues('set_id'))\n }\n\n get screenshotSetIds() {\n if (this.data.has('screenshot-set-ids')) {\n return JSON.parse(this.data.get('screenshot-set-ids'))\n }\n }\n\n get destroyAllParams() {\n var params = { 'ids': this.selectedRows }\n if (this.selectedAllData) {\n params = { all: true }\n params['screenshot_set_ids'] = this.screenshotSetIds\n }\n return params\n }\n}\n","import DatatablesController from \"../datatables_controller\"\n\nexport default class SitesController extends DatatablesController {\n static targets = [\"tagsModal\", \"tagListInput\"]\n\n bulkEdit() {\n var params = { sites_ids: Array.from(this.selected) }\n window.location.href = Routes.edit_bulk_organization_sites_path(App.currentOrganizationId(), params)\n }\n\n openTagsModal() {\n this.sitesIds = Array.from(this.selected) || []\n this.tagsModal.modal('show')\n }\n\n submitTagsModal() {\n var sitesParams = {}\n var tagList = this.tagListInput.val()\n var controller = this\n\n $.each(controller.sitesIds, function(index, siteId){\n sitesParams[siteId] = { add_tag_list: tagList }\n })\n\n $.ajax({\n data: { sites: sitesParams },\n url: Routes.update_bulk_organization_sites_path(App.currentOrganizationId()),\n method: 'put',\n error: function(xhr) {\n alert('Something went wrong')\n },\n success: function (data) {\n controller.dataTable.ajax.reload()\n controller.closeModal()\n }\n })\n }\n\n closeModal() {\n this.tagsModal.modal('hide')\n this.tagListInput.tagsinput('removeAll')\n }\n\n get tagsModal() {\n return $(this.tagsModalTarget)\n }\n\n get tagListInput() {\n return $(this.tagListInputTarget)\n }\n}\n","import DatatablesController from \"../datatables_controller\"\n\nexport default class WebhooksController extends DatatablesController {\n}\n","import DatatablesController from \"../datatables_controller\"\n\nexport default class WebsiteScreenshotsController extends DatatablesController {\n}\n","import { Controller } from \"stimulus\"\n\nexport default class extends Controller {\n static targets = [\"input\", \"startDate\"]\n\n connect() {\n this.daterangepicker = this.createDateRangePicker()\n }\n\n createDateRangePicker() {\n var options = JSON.parse(this.data.get('options'))\n var startDate = this.hasStartDateTarget && this.startDateTarget.value != '' ? moment(this.startDateTarget.value) : moment()\n\n $(this.inputTarget).daterangepicker(options)\n\n var format = options[\"locale\"][\"format\"]\n this.bindEvent(format);\n this.setDefaultValues(this, startDate, format);\n }\n\n bindEvent(format) {\n var controller = this\n $(this.inputTarget).on('apply.daterangepicker', function (ev, picker) {\n controller.setDefaultValues(controller, picker.startDate, format);\n })\n }\n\n setDefaultValues(controller, start, format) {\n $('#' + controller.inputTarget.id + ' span').html(start.format(format));\n // ISO8601 without convert to UTC\n $(controller.data.get('hidden')).val(start.format('YYYY-MM-DD[T]HH:mm:ss.SSSZZ'))\n }\n}\n","import { Controller } from \"stimulus\"\nimport { LocalStorageHelper } from \"../lib/local_storage_helper\"\n\nexport default class extends Controller {\n static targets = [\"deviceFrame\"]\n\n initialize() {\n if (this.setValueOnInit()) {\n this.setDeviceFrameValue(this.data)\n }\n }\n\n setValueOnInit() {\n return this.data.get('set-value-on-init') == 'true'\n }\n\n setDeviceFrameValue(data) {\n let value = LocalStorageHelper.storedValue(data)\n if (value != null) {\n $(this.deviceFrameTarget).prop('checked', value === \"true\")\n }\n }\n\n storeValue() {\n LocalStorageHelper.storeValue(this.data, this.deviceFrameTarget.checked.toString())\n }\n}\n","import { Controller } from \"stimulus\"\n\nexport default class extends Controller {\n\n createDraftScreenshotSet(event) {\n var $button = $(event.target)\n\n $button.addClass('disabled').prop('disabled', true)\n\n var campaignId = this.data.get('campaign-id')\n var params = { ad_ids: JSON.parse(this.data.get('ad-ids')) }\n var url = Routes.draft_organization_campaign_screenshot_sets_path(App.currentOrganizationId(), campaignId)\n\n $.ajax({\n data: params,\n url: url,\n method: 'POST',\n dataType: 'json',\n error: function (xhr) {\n $button.removeClass('disabled').prop('disabled', false)\n noty({ text: xhr.responseJSON.error })\n },\n success: function (response) {\n window.location.href = response.location\n }\n })\n }\n\n}\n","import { Controller } from \"stimulus\"\n\nexport default class extends Controller {\n static targets = [\"alert\"]\n\n async ignore(event) {\n event.preventDefault()\n const alert = this.alertTarget\n const path = alert.dataset.ignorePath\n console.log('path', path)\n\n try {\n const response = await fetch(path, {\n method: 'PUT',\n headers: {\n \"X-CSRF-Token\": document.querySelector(\"[name='csrf-token']\").content,\n \"Accept\": \"application/json\"\n },\n credentials: 'same-origin'\n })\n \n if (response.ok) {\n alert.remove()\n this.notifySuccess()\n } else {\n this.notifyError()\n }\n } catch (error) {\n this.notifyError()\n }\n }\n\n notifySuccess() {\n noty({ text: 'Message ignored', type: 'information' })\n }\n\n notifyError() {\n noty({ text: 'We had trouble ignoring the message. If it persists, please contact support@adreform.com' })\n }\n}\n","import { Controller } from \"stimulus\"\nimport Organization from \"../lib/Organization\"\n\nexport default class extends Controller {\n static targets = [\"content\", \"checkbox\"]\n\n connect() {\n const isOpen = localStorage.getItem('dev-feature-flags-open') === 'true'\n if (!isOpen) {\n this.contentTarget.classList.add(\"d-none\")\n }\n }\n\n toggle() {\n this.contentTarget.classList.toggle(\"d-none\")\n localStorage.setItem('dev-feature-flags-open', !this.contentTarget.classList.contains(\"d-none\"))\n }\n\n async toggleFeature(event) {\n const checkbox = event.target\n const feature = checkbox.dataset.feature\n const enabled = checkbox.checked\n\n if (!Organization.exists) return\n\n const organization_id = Organization.current.id\n\n try {\n const response = await fetch('/dev/feature_flags', {\n method: 'PATCH',\n headers: {\n 'Content-Type': 'application/json',\n 'X-CSRF-Token': document.querySelector('meta[name=\"csrf-token\"]').content\n },\n body: JSON.stringify({ feature, enabled, organization_id })\n })\n\n if (!response.ok) throw new Error(`Network response was not ok: ${response.statusText}`)\n \n noty({\n text: `${feature} ${enabled ? 'enabled' : 'disabled'} for ${Organization.current.name}`,\n layout: 'bottomCenter',\n type: enabled ? 'success' : 'warning'\n });\n } catch (error) {\n console.error('Error:', error)\n // Revert checkbox state on error\n checkbox.checked = !enabled\n noty({\n text: 'Error toggling feature flag',\n layout: 'bottomCenter',\n type: 'error'\n });\n }\n }\n} \n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\"filterFields\", \"filterTemplate\"];\n\n initialize() {\n this.filterIndex = 0\n this.loadFilters();\n }\n\n loadFilters() {\n const filters = JSON.parse(this.data.get(\"filters\"));\n const element = this.data.get(\"element\");\n // if no filters, return\n if(Object.keys(filters).length === 0) return;\n\n filters['or'].forEach((filterOr) => {\n filterOr['and'].forEach((filterAnd) => {\n this.addFilterToForm(element, filterAnd);\n });\n });\n }\n\n addFilterToForm(element, filter) {\n this.addContent();\n document.getElementById(`${element}_[${this.filterIndex}][field]`).value = filter.field;\n document.getElementById(`${element}_[${this.filterIndex}][operator]`).value = filter.operator;\n document.getElementById(`${element}_[${this.filterIndex}][value]`).value = filter.value;\n this.filterIndex++;\n }\n\n addFilter(event) {\n event.preventDefault();\n this.filterIndex++;\n this.addContent();\n }\n\n addContent() {\n const content = this.filterTemplateTarget.innerHTML.replace(/index/g, this.filterIndex);\n this.filterFieldsTarget.insertAdjacentHTML(\"beforeend\", content);\n }\n\n removeFilter(event) {\n event.preventDefault();\n\n const filterFields = event.target.closest(\".filter-fields\");\n filterFields.remove();\n }\n}\n","import { Controller } from \"stimulus\"\n\nexport default class extends Controller {\n static targets = [\"disabler\", \"enabler\", \"inputContainer\", \"input\"]\n\n initialize() {\n let controller = this\n controller.toggle()\n $(this.enablerTarget).on('change', function() {\n controller.toggle()\n })\n \n $(this.disablerTarget).on('change', function() {\n controller.toggle()\n })\n }\n\n toggle() {\n if (this.enableIsChecked) {\n $(this.inputContainerTarget).show()\n $(this.inputTarget).prop('disabled', false)\n }\n \n if (this.disableIsChecked) {\n $(this.inputContainerTarget).hide()\n $(this.inputTarget).prop('disabled', true)\n }\n }\n\n get enableIsChecked() {\n return $(this.enablerTarget).is(':checked')\n }\n\n get disableIsChecked() {\n return $(this.disablerTarget).is(':checked')\n }\n}\n","import { Controller } from \"stimulus\"\n\nexport default class extends Controller {\n static targets = ['input']\n\n toggle() {\n if (this.inputDisabled) {\n this.inputTarget.disabled = false\n this.inputTarget.placeholder = ''\n } else {\n this.inputTarget.disabled = true\n this.inputTarget.value = ''\n this.inputTarget.placeholder = '**********'\n }\n }\n\n get inputDisabled() {\n return this.inputTarget.disabled\n }\n}\n","import { Controller } from \"stimulus\"\n\nexport default class extends Controller {\n get articleId() {\n return this.data.get('id')\n }\n\n show() {\n Intercom('showArticle', this.articleId)\n }\n}\n","import { Controller } from \"stimulus\"\n\nexport default class extends Controller {\n initialize() {\n this.channel = App.cable.subscriptions.create({ channel: 'NotificationChannel' }, {\n received(data) {\n let html = new DOMParser().parseFromString( data['notification'], 'text/html');\n const notificationHtml = html.body.firstChild;\n\n noty({\n text: notificationHtml,\n layout: 'bottomLeft',\n type: 'notification',\n closeWith: ['click', 'button'],\n timeout: false\n });\n }\n })\n }\n\n disconnect() {\n App.cable.subscriptions.remove(this.channel)\n }\n}\n","import { Controller } from \"stimulus\"\n\nexport default class extends Controller {\n static targets = [\"legend\", \"container\"]\n initialize() {\n /** pass HAR and options to `newPerfCascadeHar` to generate the SVG element*/\n const perfCascadeSvg = perfCascade.fromHar(JSON.parse(this.data.get(\"harJson\")), {\n showIndicatorIcons: false,\n legendHolder: this.legendTarget\n })\n /** append SVG to page - that's it */\n $(this.containerTarget).html(perfCascadeSvg)\n } \n}\n","import DropzoneController from \"./dropzone_controller\"\n\nexport default class extends DropzoneController {\n static targets = [\"input\"]\n\n acceptedFiles() {\n return \"application/vnd.openxmlformats-officedocument.presentationml.presentation\"\n }\n\n emptyQueue() {\n noty({ text: 'Please provide a PPT or PPTX file' })\n }\n\n submitForm(controller, target, formData) {\n var fields = $(controller.element).serializeArray()\n $.each(fields, function (i, field) {\n formData.append(field.name, field.value);\n });\n }\n}\n","import { Controller } from \"stimulus\"\nimport { LocalStorageHelper } from \"../lib/local_storage_helper\"\n\nexport default class extends Controller {\n static targets = [\"customLogoContainer\", \"customLogoChanged\", \"customLogoInput\", \"template\", \"screenshotIds\", \"screenshotCard\", \"removeLogoButton\", \"currentLogo\"]\n\n initialize() {\n if (this.setValueOnInit()) {\n this.setPowerPointTemplateValue(this.data)\n }\n this.setLogoVisibility(this.getTemplateValue())\n }\n\n setValueOnInit() {\n return this.data.get('set-value-on-init') == 'true'\n }\n\n displayLogoField() {\n return this.data.get('display-logo-field') == 'true'\n }\n\n toggleLogo(event) {\n this.setLogoVisibility(event.currentTarget.value)\n }\n\n setLogoVisibility(templateValue) {\n if (this.displayLogoField()) {\n $(this.customLogoInputTarget).show();\n this.toggleCurrentLogo(false)\n } else {\n $(this.customLogoInputTarget).hide();\n this.toggleCurrentLogo(true)\n }\n\n if (templateValue == '') { // None\n $(this.customLogoContainerTarget).show()\n } else {\n $(this.customLogoContainerTarget).hide()\n }\n }\n\n setPowerPointTemplateValue(data) {\n let value = LocalStorageHelper.storedValue(data)\n if (value != null) {\n $(this.templateTarget).selectpicker('val', value)\n }\n }\n\n storeValue() {\n LocalStorageHelper.storeValue(this.data, this.getTemplateValue())\n }\n\n getTemplateValue() {\n if (this.hasTemplateTarget) {\n return this.templateTarget.value\n } else {\n return ''\n }\n }\n\n toggleScreenshot(event) {\n const card = event.currentTarget\n const screenshotId = card.dataset.screenshotId\n card.classList.toggle('selected')\n card.classList.toggle('border-primary', card.classList.contains('selected'))\n\n if (card.classList.contains('selected')) {\n // Create and append hidden input field\n const hiddenField = document.createElement('input')\n hiddenField.type = 'hidden'\n hiddenField.name = 'screenshot_ids[]'\n hiddenField.value = screenshotId\n hiddenField.dataset.screenshotId = screenshotId\n this.screenshotIdsTarget.appendChild(hiddenField)\n } else {\n // Remove hidden input field\n const existingField = this.screenshotIdsTarget.querySelector(`input[data-screenshot-id=\"${screenshotId}\"]`)\n if (existingField) {\n existingField.remove()\n }\n }\n }\n\n removeCustomLogo(event) {\n event.preventDefault()\n\n // Hide logo preview\n this.toggleCurrentLogo(false)\n\n // Show file input using jQuery like setLogoVisibility\n $(this.customLogoInputTarget).show()\n\n // Mark as changed\n this.customLogoChangedTarget.value = true\n }\n\n toggleCurrentLogo(display) {\n if (this.hasCurrentLogoTarget) {\n if (display) {\n $(this.currentLogoTarget).show()\n } else {\n $(this.currentLogoTarget).hide()\n }\n }\n }\n}\n","import { Controller } from \"stimulus\"\n\nexport default class extends Controller {\n static targets = [\"input\", \"label\"]\n\n updateLabel(){\n var labelSuffix = '';\n\n if (this.data.has(\"label-sufix\")) {\n labelSuffix = this.data.get(\"label-sufix\")\n if (this.inputTarget.value > 1) {\n if (this.data.has(\"label-sufix-plural\")) {\n labelSuffix = this.data.get(\"label-sufix-plural\");\n } else {\n labelSuffix += 's';\n }\n }\n }\n\n this.labelTarget.innerHTML = this.inputTarget.value +\" \"+ labelSuffix;\n }\n}\n","import { Controller } from \"stimulus\"\n\nexport default class extends Controller {\n static targets = [\"iamCredentialsFields\", \"s3BucketPolicyFields\", \"accessKeyId\", \"secretAccessKey\"]\n\n toggleAccessTypeFields(){\n this.iamCredentialsFieldsTarget.classList.toggle('hidden');\n this.s3BucketPolicyFieldsTarget.classList.toggle('hidden');\n this.accessKeyIdTarget.disabled = !this.accessKeyIdTarget.disabled;\n this.secretAccessKeyTarget.disabled = !this.secretAccessKeyTarget.disabled;\n }\n}\n","import { Controller } from \"stimulus\"\nimport { LocalStorageHelper } from \"../lib/local_storage_helper\"\n\nexport default class extends Controller {\n static targets = [\"startDate\", \"recaptureAds\", \"adSelect\", \"deviceSelect\", \"defaultDeviceSelector\"]\n\n initialize() {\n let tomorrow = new Date()\n tomorrow.setHours(0,0,0,0)\n tomorrow.setDate(tomorrow.getDate() + 1)\n\n new DateTimePicker({\n datePickerSelector: '[data-is=scheduled-on-date-input]',\n hiddenInputSelector: '[data-is=scheduled-on-input]',\n initDate: tomorrow,\n timePickerSelector: '[data-is=scheduled-on-time-input]',\n datepicker: {\n startDate: tomorrow\n }\n })\n\n if(this.hasStartDateTarget) {\n this.bindDatePicker(this.startDateTarget)\n }\n\n if(this.hasRecaptureAdsTarget) {\n $(this.recaptureAdsTarget).closest('.recapture-ads-wrapper').hide()\n }\n\n $(this.element).on('cocoon:after-insert', (event, item) => {\n this.setDeviceForNewSiteField(item)\n })\n }\n\n connect() {\n if (this.hasDefaultDeviceSelectorTarget) {\n const savedDeviceMode = LocalStorageHelper.storedValue(\n { get: (key) => key === 'key' ? 'screenshot_request.default_device' : null }\n )\n\n // Get all enabled options\n const enabledOptions = $(this.defaultDeviceSelectorTarget).find('option:not(:disabled)').map(function() {\n return this.value;\n }).get();\n\n // Set the value to savedDeviceMode if it's enabled, otherwise use 'automatic' or the first enabled option\n let valueToSet = 'automatic';\n if (enabledOptions.includes(savedDeviceMode)) {\n valueToSet = savedDeviceMode;\n } else if (!enabledOptions.includes('automatic')) {\n valueToSet = enabledOptions[0] || '';\n }\n\n $(this.defaultDeviceSelectorTarget).selectpicker('val', valueToSet);\n $(this.defaultDeviceSelectorTarget).selectpicker('refresh');\n\n // Trigger updateAllDeviceSelections after setting the initial value\n this.updateAllDeviceSelections()\n }\n }\n\n bindDatePicker(element) {\n // The next weekday after today\n let nextWeekday = this.getNextWeekday(moment())\n\n $(element).daterangepicker({\n singleDatePicker: true,\n autoApply: true,\n showDropdowns: true,\n minDate: nextWeekday,\n // The result of tomorrow.format('YYYY') is a string representation of the year.\n // The second argument to parseInt, 10, specifies the radix (base) for the conversion.\n // E.g.: Today is 2024-06-04 => nextWeekday.format('YYYY') is 2024 => parseInt(nextWeekday.format('YYYY'),10) + 1 is 2025\n maxYear: parseInt(nextWeekday.format('YYYY'),10) + 1,\n isInvalidDate: function(date) {\n return date.isoWeekday() > 5\n },\n })\n }\n\n siteListModal(event) {\n event.preventDefault()\n \n $.ajax({\n url: Routes.new_static_modal_organization_site_lists_path(App.currentOrganizationId()),\n method: 'GET',\n success: function () {\n App.initSelectPickers()\n }\n })\n }\n\n getNextWeekday(date) {\n // Clone the original date + add 1 day\n let nextDate = moment(date).add(1, 'days');\n\n // Add 1 day to the current date until the weekday is between 1 (Monday) and 5 (Friday)\n while (nextDate.isoWeekday() > 5) {\n nextDate.add(1, 'days');\n }\n\n return nextDate;\n }\n\n toggleRecaptureAd(event) {\n // get the value of the selected option\n let value = event.target.value;\n // find the wrapper element\n let wrapper = $(this.recaptureAdsTarget).closest('.recapture-ads-wrapper')\n if (value === 'never') {\n wrapper.hide()\n } else {\n wrapper.show()\n }\n }\n\n adChanged(event) {\n this.updateDeviceSelection(event.target)\n }\n\n updateDeviceSelection(adSelect, specificDeviceSelect = null) {\n const adId = adSelect?.value\n if (!adId) return\n\n const deviceMode = this.defaultDeviceSelectorTarget.value\n\n if (deviceMode === 'automatic') {\n this.setSmartDevice(adSelect, specificDeviceSelect)\n } else {\n this.setSpecificDevice(deviceMode, adSelect, specificDeviceSelect)\n }\n }\n\n setSmartDevice(adSelect, specificDeviceSelect = null) {\n const adDimensions = this.getAdDimensions(adSelect.value, adSelect)\n const deviceKinds = this.adSizeDeviceKindMap[adDimensions] || []\n\n if (!Array.isArray(deviceKinds)) {\n console.error(`Invalid device kinds for dimensions ${adDimensions}:`, deviceKinds)\n return\n }\n this.updateDeviceSelectOptions(deviceKinds, adSelect, specificDeviceSelect)\n }\n\n setSpecificDevice(deviceId, adSelect, specificDeviceSelect = null) {\n const deviceSelect = specificDeviceSelect || this.findDeviceSelect(adSelect)\n\n if (!deviceSelect) {\n console.warn(\"Device select not found\")\n return\n }\n\n $(deviceSelect).selectpicker('val', [deviceId])\n $(deviceSelect).selectpicker('refresh')\n }\n\n setDeviceForNewSiteField(cocoonItem) {\n const adSelect = cocoonItem.parents('[data-controller=\"ad-chooser\"]').find('[data-target=\"screenshot-sets.adSelect\"]').get(0)\n const deviceSelect = cocoonItem.find('[data-target=\"screenshot-sets.deviceSelect\"]').get(0)\n\n if (deviceSelect) {\n this.updateDeviceSelection(adSelect, deviceSelect)\n }\n }\n\n setDefaultDevice(event) {\n const selectedMode = event.target.value\n LocalStorageHelper.storeValue(\n { get: (key) => key === 'key' ? 'screenshot_request.default_device' : null },\n selectedMode\n )\n\n this.updateAllDeviceSelections()\n }\n\n updateAllDeviceSelections() {\n if (this.hasAdSelectTarget) {\n this.adSelectTargets.forEach(adSelect => {\n this.updateDeviceSelection(adSelect)\n })\n }\n }\n\n updateDeviceSelectOptions(deviceKinds, adSelect, specificDeviceSelect = null) {\n const deviceSelect = specificDeviceSelect || this.findDeviceSelect(adSelect)\n\n if (!deviceSelect) {\n console.warn(\"Device select not found\")\n return\n }\n\n // Get device IDs from deviceKinds\n const deviceIds = deviceKinds.map(kind => this.deviceKindIdMap[kind]).filter(id => id)\n\n // Randomly pick one device ID if there are multiple, otherwise use the default\n const selectedDeviceId = deviceIds.length > 0 ? deviceIds[Math.floor(Math.random() * deviceIds.length)] : this.defaultDeviceId\n\n $(deviceSelect).selectpicker('val', [selectedDeviceId])\n $(deviceSelect).selectpicker('refresh')\n }\n\n findDeviceSelect(adSelect) {\n let deviceSelect = adSelect.closest('.nested-fields').querySelectorAll('[data-target=\"screenshot-sets.deviceSelect\"]')\n\n return deviceSelect\n }\n\n getAdDimensions(adId, adSelect) {\n const adOption = adSelect.querySelector(`option[value=\"${adId}\"]`)\n return adOption ? adOption.dataset.dimensions : null\n }\n\n get adSizeDeviceKindMap() {\n return this.data.has('adSizeDeviceKind') ? JSON.parse(this.data.get('adSizeDeviceKind')) : {}\n }\n\n get deviceKindIdMap() {\n return this.data.has('deviceKindIdMap') ? JSON.parse(this.data.get('deviceKindIdMap')) : {}\n }\n\n get defaultDeviceId() {\n return this.data.has('defaultDeviceId') ? this.data.get('defaultDeviceId') : null\n }\n}\n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\"input\", \"filtersContainer\", \"gamSiteWarning\", \"source\"]\n\n initialize() {\n var controller = this\n $(this.inputTarget).on('change', (e) => {\n controller.toggle(e.target)\n });\n this.toggle(this.inputTarget)\n\n $(this.sourceTarget).on('change', (e) => {\n controller.toggleGamSiteWarning()\n });\n this.toggleGamSiteWarning()\n }\n\n toggle(target) {\n var filter = $(target).val()\n if (filter == 'all') {\n $(this.filtersContainerTarget).hide()\n } else {\n $(this.filtersContainerTarget).show()\n }\n }\n\n toggleGamSiteWarning(){\n if(this.sourceTarget.value == 'gam'){\n $(this.gamSiteWarningTarget).show()\n } else {\n $(this.gamSiteWarningTarget).hide()\n }\n }\n}\n","import DropzoneController from \"./dropzone_controller\"\n\nexport default class extends DropzoneController {\n\n acceptedFiles() {\n return \"image/jpeg,image/jpg,image/png,image/gif\"\n }\n\n emptyQueue() {\n noty({ text: 'Please provide an image file' })\n }\n\n submitForm(controller, target, formData) {\n formData.append(\"screenshot[site_id]\", $('#screenshot_site_id').val())\n formData.append(\"screenshot[device_id]\", $('#screenshot_device_id').val())\n formData.append(\"screenshot[requester_id]\", $('#screenshot_requester_id').val())\n if ($(\"#screenshot_notify\").is(':checked')) {\n formData.append(\"screenshot[notify]\", true)\n }\n formData.append(\"add_another\", target.data(\"add-another\"))\n }\n}\n","import Select2Controller from \"../select2_controller\"\n\nexport default class extends Select2Controller {\n\n get options() {\n return {\n placeholder: '(optional) Associate this campaign with a client',\n tags: true,\n createTag: function (params) {\n var term = $.trim(params.term)\n\n if (term === '') {\n return null\n }\n\n return {\n id: term,\n text: term,\n newTag: true // add additional parameters\n }\n }\n }\n }\n\n initialize() {\n this.select2 = $(this.inputTarget).select2(this.mergedOptions)\n this.bindEvents()\n }\n\n bindEvents() {\n var controller = this\n this.select2.on('select2:select', function (e) {\n var data = e.params.data\n if (data.newTag) {\n $.ajax({\n url: controller.data.get('url-create'),\n dataType: \"json\",\n type: 'POST',\n data: {\n 'client': { 'name': data.text }\n },\n error: function (xhr) {\n noty({ text: xhr.responseText })\n // clear selected option\n controller.select2.val(null).trigger('change')\n data.newTag = false\n },\n success: function (response) {\n var newOptionForNewTag = new Option(response.name, response.id, true, true)\n controller.select2.append(newOptionForNewTag).trigger('change')\n data.newTag = false\n }\n })\n }\n })\n }\n}\n","import SitesController from \"./sites_controller\"\n\nexport default class extends SitesController {\n get options() {\n return {\n width: '100%',\n placeholder: 'Select site',\n tags: true,\n ajax: {\n delay: 250, // wait 250 milliseconds before triggering the request\n data: function (params) {\n var query = {\n value: params.term,\n page: params.page || 1\n }\n return query\n },\n processResults: function (data) {\n // Transforms the top-level key of the response object from 'data' to 'results'\n return {\n results: $.map(data.results, function (obj) {\n return { id: obj.text, text: obj.text }\n }),\n pagination: data.pagination\n }\n }\n },\n createTag: function (params) {\n var term = $.trim(params.term)\n\n if (term === '') {\n return null\n }\n\n return {\n id: term,\n text: term,\n newTag: true\n }\n }\n }\n }\n\n createSite(data) {\n var controller = this\n\n $.ajax({\n url: controller.data.get('url-create'),\n dataType: \"json\",\n type: 'POST',\n data: {\n 'sites[]': { 'url': data.text }\n },\n error: function (xhr) {\n let error = xhr.responseJSON.errors.map(function (error) {\n return `URL ${error.url.join(', ')}`\n })\n noty({ text: error })\n controller.select2.val(null).trigger('change') // clear selected option\n },\n success: function (response) {\n let site = response[0]\n var newSiteOption = new Option(site.url, site.url, true, true)\n controller.select2.append(newSiteOption).trigger('change')\n },\n complete: function () {\n data.newTag = false\n }\n })\n }\n}\n","import { Controller } from \"stimulus\"\n\nexport default class extends Controller {\n initialize() {\n const customConfig = this.data.has('config') ? JSON.parse(this.data.get('config')) : {}\n this.config = $.extend(true, this.defaultConfig(), customConfig)\n this.selectpickerApi = $(this.element).selectpicker(this.config)\n this.setInitialValue()\n }\n\n setInitialValue() {\n if ( this.data.has('value') ) {\n this.selectpickerApi.selectpicker('val', this.data.get('value'));\n }\n }\n\n defaultConfig() {\n return {\n iconBase: 'fa',\n tickIcon: 'fa-check',\n showTick: true,\n width: 'fit'\n }\n }\n}\n","import { Controller } from \"stimulus\"\n\nexport default class extends Controller {\n static targets = [\"input\", \"container\"]\n\n initialize() {\n this.supported = this.data.get('supported')\n this.toggle()\n }\n\n toggle() {\n if (this.supported === 'true') {\n $(this.inputTarget).removeClass('disabled')\n this.setTooltipTitle('Copy the link to share this view')\n } else {\n $(this.inputTarget).addClass('disabled')\n this.setTooltipTitle('We currently do not support sharing this type of ad')\n }\n }\n\n copy() {\n var controller = this\n if (this.supported === 'true') {\n var campaignId = this.data.get('campaignId')\n var adId = this.data.get('adId')\n var url = Routes.organization_campaign_ad_preview_converter_path(App.currentOrganizationId(), campaignId, adId)\n\n $.ajax({\n url: url,\n method: 'POST',\n dataType: 'json',\n error: function (xhr) {\n noty({ text: xhr.responseJSON.error })\n },\n success: function (xhr) {\n navigator.clipboard.writeText(xhr.location)\n controller.setTooltipTitle('copied!')\n $(controller.containerTarget).tooltip('show')\n window.open(xhr.location, '_blank')\n }\n })\n }\n }\n\n setTooltipTitle(title) {\n $(this.containerTarget).tooltip({ animation: false, placement: 'bottom' }).attr('data-original-title', title)\n }\n}\n","import SitesController from \"./select2/sites_controller\"\nimport { ApplyModeHelper } from \"../lib/apply_mode_helper\";\n\nexport default class extends SitesController {\n static targets = [\"list\", \"order\", \"siteTag\", \"tagList\"]\n\n // override SitesController initialize\n initialize() {\n this.initializeSelect2()\n this.bindEvents()\n }\n\n initializeSelect2() {\n this.select2 = $(this.siteTagTarget).select2({\n width: '100%',\n placeholder: 'Uses sites from a tag',\n dropdownParent: $('#smart-site-modal'),\n ajax: {\n delay: 250, // wait 250 milliseconds before triggering the request\n url: Routes.search_organization_site_tags_path(App.currentOrganizationId()),\n dataType: 'json',\n data: function (params) {\n var query = {\n value: params.term\n }\n return query\n }\n },\n templateResult: function (data) {\n var result = $(\"\" + data.text +\"\")\n var label = data.count == 1 ? 'site' : 'sites'\n var small = $(\" \" + data.count + \" \" + label + \"\")\n result.append(small)\n\n return result\n }\n })\n }\n\n bindEvents() {\n var controller = this\n this.select2.on('select2:select', function (e) {\n controller.filterSiteTag(e)\n })\n }\n\n setOrder(event) {\n this.order = $(event.currentTarget).val()\n }\n\n copySites() {\n var siteList = $(this.listTarget).val().split(/\\n/)\n // remove empty elements from an array\n siteList = siteList.filter(function (el) { return el; })\n\n if (siteList.length > 0) {\n this.createSites(this.siteFields, siteList, this.order)\n $(this.element).modal('hide')\n } else {\n noty({ text: 'Please provide a site' })\n }\n }\n\n createSites(fields, sitelist, order) {\n var controller = this\n var sitesData = []\n for (let i = 0; i < sitelist.length; i++) {\n sitesData.push({ url: sitelist[i] })\n }\n\n $.ajax({\n type: 'POST',\n url: Routes.create_bulk_organization_sites_path(App.currentOrganizationId()),\n data: JSON.stringify({ 'sites': sitesData, 'tag_list': controller.tagList }),\n contentType: 'application/json',\n dataType: 'json',\n success: function (sites) {\n ApplyModeHelper.addNonExistingToSelect2(fields, sites)\n ApplyModeHelper.shuffle(order, sitelist)\n ApplyModeHelper.setSelectedValue(fields, sitelist)\n },\n error: function (xhr) {\n ApplyModeHelper.displayErrors(xhr)\n }\n })\n }\n\n filterSiteTag(event) {\n var tagsValue = $(event.target).val()\n if (tagsValue != null) {\n var controller = this\n $.ajax({\n type: 'GET',\n url: Routes.search_organization_sites_path(App.currentOrganizationId()),\n dataType: 'json',\n data: $.param({ value: tagsValue, strategy: 'tags' }),\n success: function (data) {\n var sites = \"\"\n $.map(data.results, function (obj) {\n sites = sites + obj.text + \"\\n\"\n })\n $(controller.listTarget).val(sites).trigger('focus')\n }\n })\n }\n }\n\n clearContent() {\n $(this.siteTagTarget).val('').trigger('change')\n $(this.listTarget).val('')\n $(this.tagListTarget).tagsinput('removeAll')\n this.order = 'sequential'\n $(this.orderTargets).filter(\"[value='\" + this.order + \"']\").prop(\"checked\", true)\n }\n\n get siteFields() {\n return $(\"[data-target='select2--sites.input']\")\n }\n\n get tagList() {\n return $(this.tagListTarget).val()\n }\n}\n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = ['kind', 'list']\n\n initialize() {\n var controller = this\n if(this.hasKindTarget) {\n $(this.kindTarget).on('change', (e) => {\n controller.toggleKind(e.target)\n });\n\n this.toggleKind(this.kindTarget)\n }\n }\n\n toggleKind(target) {\n var kind = $(target).val()\n if (kind == 'static') {\n $('#dynamic').hide()\n $('#static').show()\n } else {\n $('#static').hide()\n $('#dynamic').show()\n }\n }\n\n createSiteList(event) {\n event.preventDefault();\n\n // check if urls are provided\n var urls = $('#sites_list_urls').val()\n if (urls.trim() == '') {\n noty({ text: 'Please provide a list of URLs' })\n return false\n }\n\n var controller = this\n // Get the form element\n const form = event.target.closest(\"form\");\n\n $.ajax({\n url: Routes.create_static_modal_organization_site_lists_path(App.currentOrganizationId()),\n method: 'POST',\n dataType: 'json',\n data: $(form).serialize(),\n success: function (siteList) {\n controller.appendOrSelectOption(controller.siteListFields, siteList)\n $('#site-list-modal').modal('hide')\n }, error: function (data) {\n noty({ text: data.responseJSON.error })\n }\n })\n }\n\n appendOrSelectOption(field, siteList) {\n let option = $(field).find(\"option:contains('\" + siteList + \"')\").val()\n if (option == undefined) {\n let newSiteOption = new Option(siteList.name, siteList.id, true, true)\n $(field).append(newSiteOption).trigger('change')\n } else {\n $(field).select2('trigger', 'select', {\n data: { id: option }\n })\n }\n }\n\n get siteListFields() {\n return $(\"[data-target='select2.input site-lists-apply-mode.list']\")\n }\n}\n","import { Controller } from \"stimulus\";\nimport { ApplyModeHelper } from \"../lib/apply_mode_helper\";\n\nexport default class extends Controller {\n static targets = [\"list\"]\n\n initialize() {\n var controller = this\n $(this.listTarget).on('change', (e) => {\n controller.fetchSitesFromList(e)\n });\n }\n\n fetchSitesFromList(event) {\n var list = $(event.target).val()\n if (list != '') {\n var controller = this\n $.ajax({\n type: 'GET',\n data: { limit: controller.siteFields.length },\n url: Routes.members_organization_site_list_path(App.currentOrganizationId(), list),\n dataType: 'json',\n success: function (sites) {\n ApplyModeHelper.addNonExistingToSelect2(controller.siteFields, sites)\n ApplyModeHelper.setSelectedValue(controller.siteFields, sites)\n },\n error: function (xhr) {\n ApplyModeHelper.displayErrors(xhr)\n }\n })\n }\n }\n\n get siteFields() {\n return $(\"[data-target='select2--sites.input']\")\n }\n}\n","import { Controller } from \"stimulus\"\n\nexport default class extends Controller {\n static targets = [\"form\", \"newFormPlaceholder\"]\n \n connect() {\n this.initializeTagsInputs()\n }\n \n addSite(event) {\n event.preventDefault()\n \n fetch(Routes.site_fields_organization_sites_path(App.currentOrganizationId()), {\n headers: { Accept: \"text/html\" }\n })\n .then(response => response.text())\n .then(html => {\n this.newFormPlaceholderTarget.insertAdjacentHTML('beforebegin', html)\n this.initializeLastTagsInput()\n })\n }\n \n removeSite(event) {\n event.preventDefault()\n const nestedFields = event.target.closest('.nested-site-fields')\n if (nestedFields) {\n nestedFields.remove()\n }\n }\n \n initializeTagsInputs() {\n this.tagsInputs.forEach(input => {\n $(input).tagsinput()\n })\n }\n \n initializeLastTagsInput() {\n const lastTagInput = this.tagsInputs[this.tagsInputs.length - 1]\n if (lastTagInput) {\n $(lastTagInput).tagsinput()\n }\n }\n\n get tagsInputs() {\n return this.formTarget.querySelectorAll('[data-role=\"tagsinput\"]')\n }\n} \n","import DropzoneController from \"./dropzone_controller\"\n\nexport default class extends DropzoneController {\n static targets = [\"input\"]\n\n acceptedFiles() {\n if (this.data.has(\"acceptedFiles\")) {\n return this.data.get(\"acceptedFiles\");\n }\n return \"application/x-ole-storage,application/vnd.ms-excel,application/vnd.ms-office,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\";\n }\n\n emptyQueue() {\n noty({ text: 'Please provide a XLS or XLSX file' })\n }\n\n submitForm(controller, target, formData) {\n var fields = $(controller.element).serializeArray()\n $.each(fields, function (i, field) {\n formData.append(field.name, field.value);\n });\n }\n}\n","import { Controller } from \"stimulus\"\n\nexport default class extends Controller {\n initialize() {\n let controller = this\n this.modal.on('hide.bs.modal', () => {\n controller.resetModalBodyHTML()\n })\n }\n\n get modalBody() {\n return this.modal.find(\".modal-body\")\n }\n\n get modal() {\n return $(this.data.get('modal'))\n }\n\n get formIframe() {\n return ``\n }\n\n openPopup() {\n this.modal.modal('show')\n this.setModalBodyHTML(this.formIframe)\n }\n\n setModalBodyHTML(html) {\n this.data.set('original-content', this.modalBody.html())\n this.modalBody.html(html)\n }\n\n resetModalBodyHTML() {\n if (this.data.has('original-content')) {\n this.modalBody.html(this.data.get('original-content'))\n }\n }\n}\n","import { Controller } from \"stimulus\"\n\nexport default class extends Controller {\n static targets = [ \"field\" ]\n\n initialize() {\n this.parseUrlParams();\n }\n\n connect() {\n this.setFieldValues();\n }\n\n setFieldValues() {\n // if a utm param matches a field's name, set value of that field to the param value\n var self = this;\n this.fieldTargets.forEach(function(field) {\n var fieldValue = self.getItem(field.name);\n\n if (fieldValue) {\n field.value = fieldValue;\n } else {\n field.value = '';\n }\n });\n }\n\n parseUrlParams() {\n var self = this;\n var location = window.location.toString();\n var querystring = location.split(\"?\");\n if (querystring.length > 1) {\n var pairs = querystring[1].split(\"&\");\n pairs.forEach(function(pair) {\n var name, value;\n [name, value] = pair.split(\"=\");\n self.setItem(name, value)\n });\n }\n }\n\n setItem(key, value) {\n if (sessionStorage.getItem('utm-' + key) === null) {\n sessionStorage.setItem('utm-' + key, value);\n }\n }\n\n getItem(key) {\n return sessionStorage.getItem('utm-' + key);\n }\n}\n\n","import { Controller } from \"stimulus\"\nimport { LocalStorageHelper } from \"../lib/local_storage_helper\";\n\nexport default class extends Controller {\n static targets = [\"wrapperType\", \"container\", \"osOptionsContainer\", \"timestampContainer\"]\n\n initialize() {\n if (this.setValueOnInit()) {\n this.setWrapperTypeValue(this.data)\n }\n // passing null as event to toggleContainers to use the stored value\n this.toggleContainers(null)\n }\n\n setValueOnInit() {\n return this.data.get('set-value-on-init') == 'true'\n }\n\n setWrapperTypeValue(data) {\n let value = LocalStorageHelper.storedValue(data)\n if (value != null) {\n $(this.wrapperTypeTarget).selectpicker('val', value)\n }\n }\n\n storeValue() {\n LocalStorageHelper.storeValue(this.data, this.wrapperTypeTarget.value)\n }\n\n toggleContainers(event) {\n const wrapperTypeValue = event ? event.currentTarget.value : this.wrapperTypeTarget.value\n this.toggleOsContainer(wrapperTypeValue)\n this.toggleTimestampContainer(wrapperTypeValue)\n }\n\n toggleOsContainer(wrapperTypeValue) {\n if(this.hasOsOptionsContainerTarget) {\n if (wrapperTypeValue == 'os') {\n $(this.osOptionsContainerTarget).show()\n } else {\n $(this.osOptionsContainerTarget).hide()\n }\n }\n }\n\n toggleTimestampContainer(wrapperTypeValue) {\n if(this.hasOsOptionsContainerTarget) {\n if (wrapperTypeValue == 'os' || wrapperTypeValue == 'device_os') {\n $(this.timestampContainerTarget).show()\n } else {\n $(this.timestampContainerTarget).hide()\n }\n }\n }\n\n displayContainer(event) {\n if ($(event.currentTarget).is(':checked')) {\n $(this.containerTarget).show()\n } else {\n $(this.containerTarget).hide()\n }\n }\n}\n","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\n/* global Reflect, Promise */\n\nvar extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n};\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\nexport var __assign = function () {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n}\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\nexport function __param(paramIndex, decorator) {\n return function (target, key) {\n decorator(target, key, paramIndex);\n };\n}\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\nexport function __generator(thisArg, body) {\n var _ = {\n label: 0,\n sent: function () {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n}\nexport var __createBinding = Object.create ? function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = {\n enumerable: true,\n get: function () {\n return m[k];\n }\n };\n }\n Object.defineProperty(o, k2, desc);\n} : function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n};\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator,\n m = s && o[s],\n i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return {\n value: o && o[i++],\n done: !o\n };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++) for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) r[k] = a[j];\n return r;\n}\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []),\n i,\n q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () {\n return this;\n }, i;\n function verb(n) {\n if (g[n]) i[n] = function (v) {\n return new Promise(function (a, b) {\n q.push([n, v, a, b]) > 1 || resume(n, v);\n });\n };\n }\n function resume(n, v) {\n try {\n step(g[n](v));\n } catch (e) {\n settle(q[0][3], e);\n }\n }\n function step(r) {\n r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r);\n }\n function fulfill(value) {\n resume(\"next\", value);\n }\n function reject(value) {\n resume(\"throw\", value);\n }\n function settle(f, v) {\n if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]);\n }\n}\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) {\n throw e;\n }), verb(\"return\"), i[Symbol.iterator] = function () {\n return this;\n }, i;\n function verb(n, f) {\n i[n] = o[n] ? function (v) {\n return (p = !p) ? {\n value: __await(o[n](v)),\n done: n === \"return\"\n } : f ? f(v) : v;\n } : f;\n }\n}\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator],\n i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () {\n return this;\n }, i);\n function verb(n) {\n i[n] = o[n] && function (v) {\n return new Promise(function (resolve, reject) {\n v = o[n](v), settle(resolve, reject, v.done, v.value);\n });\n };\n }\n function settle(resolve, reject, d, v) {\n Promise.resolve(v).then(function (v) {\n resolve({\n value: v,\n done: d\n });\n }, reject);\n }\n}\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", {\n value: raw\n });\n } else {\n cooked.raw = raw;\n }\n return cooked;\n}\n;\nvar __setModuleDefault = Object.create ? function (o, v) {\n Object.defineProperty(o, \"default\", {\n enumerable: true,\n value: v\n });\n} : function (o, v) {\n o[\"default\"] = v;\n};\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\nexport function __importDefault(mod) {\n return mod && mod.__esModule ? mod : {\n default: mod\n };\n}\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value), value;\n}\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || typeof receiver !== \"object\" && typeof receiver !== \"function\") throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}","import { __read, __spread } from \"tslib\";\nexport function compose() {\n var funcs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n funcs[_i] = arguments[_i];\n }\n if (funcs.length === 0) {\n return function (arg) {\n return arg;\n };\n }\n if (funcs.length === 1) {\n return funcs[0];\n }\n return funcs.reduce(function (a, b) {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return a(b.apply(void 0, __spread(args)));\n };\n });\n}","export function toHashMapString(obj) {\n if (!obj) return;\n Object.keys(obj).forEach(function (k) {\n if (typeof obj[k] === \"object\") {\n obj[k] = JSON.stringify(obj[k]);\n }\n obj[k] = String(obj[k]);\n });\n return obj;\n}\nexport function toHashMap(obj) {\n if (!obj) return;\n Object.keys(obj).forEach(function (k) {\n if (typeof obj[k] === \"string\" || typeof obj[k] === \"boolean\" || typeof obj[k] === \"number\") {\n return;\n }\n obj[k] = JSON.stringify(obj[k]);\n });\n return obj;\n}","export function isError(error) {\n return typeof error.message !== \"undefined\" && (typeof error.stacktrace !== \"undefined\" || typeof error[\"opera#sourceloc\"] !== \"undefined\" || typeof error.stack !== \"undefined\");\n}\nexport function getStacktrace(error) {\n if (typeof error.stacktrace !== \"undefined\" || typeof error[\"opera#sourceloc\"] !== \"undefined\") {\n var _a = error.stacktrace,\n stacktrace = _a === void 0 ? \"\" : _a;\n return stacktrace.split(\"\\n\").filter(function (line) {\n return line !== \"\";\n });\n } else if (error.stack) {\n var _b = error.stack,\n stack = _b === void 0 ? \"\" : _b;\n return stack.split(\"\\n\").filter(function (line) {\n return line !== \"\";\n });\n } else {\n return [\"No stacktrace available\"];\n }\n}","export var isAsync = function (fn) {\n return fn.constructor.name === \"AsyncFunction\";\n};","var Serializable = function () {\n function Serializable(data) {\n this._data = data;\n }\n Serializable.prototype.toJSON = function () {\n return JSON.stringify(this._data);\n };\n Serializable.prototype.serialize = function () {\n return this._data;\n };\n return Serializable;\n}();\nexport { Serializable };","import { getGlobalObject, isNodeEnv } from \"@appsignal/core\";\nvar Environment = function () {\n function Environment() {}\n Environment.serialize = function () {\n return {\n transport: this.transport(),\n origin: this.origin()\n };\n };\n Environment.origin = function () {\n var globals = getGlobalObject();\n if (!globals.navigator || globals.navigator.product === \"ReactNative\" && !globals.location) {\n return \"\";\n }\n return globals.location.origin || globals.location.protocol + \"//\" + globals.location.hostname;\n };\n Environment.transport = function () {\n var globals = getGlobalObject();\n if (isNodeEnv() && typeof jest === \"undefined\") {\n return \"NodeHTTP\";\n } else if (globals.XDomainRequest) {\n return \"XDomainRequest\";\n } else if (globals.XMLHttpRequest && !globals.fetch) {\n return \"XMLHttpRequest\";\n } else {\n return \"fetch\";\n }\n };\n Environment.supportsPromises = function () {\n var globals = getGlobalObject();\n return \"Promise\" in globals && \"resolve\" in globals.Promise && \"reject\" in globals.Promise && \"all\" in globals.Promise && \"race\" in globals.Promise && function () {\n var resolve;\n new globals.Promise(function (r) {\n resolve = r;\n });\n return typeof resolve === \"function\";\n }();\n };\n return Environment;\n}();\nexport { Environment };","var XDomainTransport = function () {\n function XDomainTransport(url) {\n this.url = url;\n }\n XDomainTransport.prototype.send = function (data) {\n var _this = this;\n return new Promise(function (resolve, reject) {\n var _a;\n var req = new XDomainRequest();\n var rx = new RegExp(\"^https?:\");\n req.onload = function () {\n return resolve({});\n };\n req.open(\"POST\", _this.url.replace(rx, (_a = window === null || window === void 0 ? void 0 : window.location) === null || _a === void 0 ? void 0 : _a.protocol));\n setTimeout(function () {\n try {\n req.send(data);\n } catch (e) {\n reject(e);\n }\n }, 0);\n });\n };\n return XDomainTransport;\n}();\nexport { XDomainTransport };","var XHRTransport = function () {\n function XHRTransport(url) {\n this.url = url;\n }\n XHRTransport.prototype.send = function (data) {\n var _this = this;\n return new Promise(function (resolve, reject) {\n try {\n var req_1 = new XMLHttpRequest();\n req_1.onreadystatechange = function () {\n if (req_1.readyState === XMLHttpRequest.DONE) {\n resolve({});\n }\n };\n req_1.open(\"POST\", _this.url);\n req_1.send(data);\n } catch (e) {\n reject(e);\n }\n });\n };\n return XHRTransport;\n}();\nexport { XHRTransport };","import { __awaiter, __generator } from \"tslib\";\nvar FetchTransport = function () {\n function FetchTransport(url, headers) {\n this.url = url;\n }\n FetchTransport.prototype.send = function (data) {\n return __awaiter(this, void 0, void 0, function () {\n var res, statusText, ok;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n return [4, fetch(this.url, {\n method: \"POST\",\n body: data\n })];\n case 1:\n res = _a.sent();\n statusText = res.statusText, ok = res.ok;\n return [2, ok ? Promise.resolve({}) : Promise.reject({\n statusText: statusText\n })];\n }\n });\n });\n };\n return FetchTransport;\n}();\nexport { FetchTransport };","import https from \"https\";\nvar NodeTransport = function () {\n function NodeTransport(url) {\n this.url = url;\n }\n NodeTransport.prototype.send = function (data) {\n var _this = this;\n var options = {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Content-Length\": data.length\n }\n };\n return new Promise(function (resolve, reject) {\n var req = https.request(_this.url, options, function () {}).on(\"error\", function (error) {\n return reject(error);\n });\n req.write(data);\n req.end();\n resolve({});\n });\n };\n return NodeTransport;\n}();\nexport { NodeTransport };","import { __awaiter, __generator } from \"tslib\";\nimport { urlEncode } from \"@appsignal/core\";\nimport { Environment } from \"./environment\";\nimport { XDomainTransport } from \"./transports/xdomain\";\nimport { XHRTransport } from \"./transports/xhr\";\nimport { FetchTransport } from \"./transports/fetch\";\nimport { NodeTransport } from \"./transports/node\";\nvar PushApi = function () {\n function PushApi(options) {\n this._uri = options.uri || \"https://appsignal-endpoint.net/collect\";\n this._apiKey = options.key;\n this._clientVersion = options.version;\n this._transport = this._createTransport(this._url());\n }\n PushApi.prototype.push = function (span) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n return [4, this._transport.send(span.toJSON())];\n case 1:\n _a.sent();\n return [2, span];\n }\n });\n });\n };\n PushApi.prototype._createTransport = function (url) {\n switch (Environment.transport()) {\n case \"XDomainRequest\":\n return new XDomainTransport(url);\n case \"XMLHttpRequest\":\n return new XHRTransport(url);\n case \"NodeHTTP\":\n return new NodeTransport(url);\n default:\n return new FetchTransport(url);\n }\n };\n PushApi.prototype._url = function () {\n var auth = this._authorization();\n return this._uri + \"?\" + urlEncode(auth);\n };\n PushApi.prototype._authorization = function () {\n return {\n api_key: this._apiKey,\n version: this._clientVersion\n };\n };\n return PushApi;\n}();\nexport { PushApi };","export function urlEncode(object) {\n return Object.keys(object).map(function (key) {\n return encodeURIComponent(key) + \"=\" + encodeURIComponent(object[key]);\n }).join(\"&\");\n}","import { __assign, __extends } from \"tslib\";\nimport { Serializable, getStacktrace, toHashMapString, isError } from \"@appsignal/core\";\nvar Span = function (_super) {\n __extends(Span, _super);\n function Span(span) {\n return _super.call(this, __assign({\n timestamp: Math.round(new Date().getTime() / 1000),\n namespace: \"frontend\",\n error: {\n name: \"NullError\",\n message: \"No error has been set\",\n backtrace: []\n }\n }, span)) || this;\n }\n Span.prototype.setAction = function (name) {\n if (!name || typeof name !== \"string\") {\n return this;\n }\n this._data.action = name;\n return this;\n };\n Span.prototype.setNamespace = function (name) {\n if (!name || typeof name !== \"string\") {\n return this;\n }\n this._data.namespace = name;\n return this;\n };\n Span.prototype.setError = function (error) {\n if (!error || !isError(error)) return this;\n this._data.error = {\n name: error.name || \"[unknown]\",\n message: error.message,\n backtrace: getStacktrace(error)\n };\n return this;\n };\n Span.prototype.setTags = function (tags) {\n this._data.tags = __assign(__assign({}, this._data.tags), toHashMapString(tags));\n return this;\n };\n Span.prototype.setParams = function (params) {\n this._data.params = __assign(__assign({}, this._data.params), params);\n return this;\n };\n Span.prototype.setBreadcrumbs = function (breadcrumbs) {\n this._data.breadcrumbs = breadcrumbs;\n return this;\n };\n return Span;\n}(Serializable);\nexport { Span };","import { __generator, __read, __spread } from \"tslib\";\nvar Queue = function () {\n function Queue(data) {\n this._data = data || [];\n }\n Queue.prototype.clear = function () {\n this._data = [];\n };\n Queue.prototype.values = function () {\n return this._data;\n };\n Queue.prototype.push = function (item) {\n var _a;\n return Array.isArray(item) ? (_a = this._data).push.apply(_a, __spread(item)) : this._data.push(item);\n };\n Queue.prototype.drain = function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!(this._data.length > 0)) return [3, 2];\n return [4, this._data.shift()];\n case 1:\n _a.sent();\n return [3, 0];\n case 2:\n return [2];\n }\n });\n };\n return Queue;\n}();\nexport { Queue };","import { __assign, __awaiter, __generator, __values } from \"tslib\";\nimport { getGlobalObject } from \"@appsignal/core\";\nvar Dispatcher = function () {\n function Dispatcher(queue, api, options) {\n this._retries = 0;\n this._timerID = 0;\n this._duration = 0;\n this._api = api;\n this._queue = queue;\n this.options = __assign({\n limit: 5,\n initialDuration: 1000\n }, options);\n this.reset();\n }\n Dispatcher.prototype.schedule = function (time) {\n var _this = this;\n if (time === void 0) {\n time = this._duration;\n }\n var globals = getGlobalObject();\n var BACKOFF_FACTOR = 1.3;\n var cb = function () {\n return __awaiter(_this, void 0, void 0, function () {\n var _a, _b, span, e_1, expDuration, e_2_1;\n var e_2, _c;\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0:\n _d.trys.push([0, 7, 8, 9]);\n _a = __values(this._queue.drain()), _b = _a.next();\n _d.label = 1;\n case 1:\n if (!!_b.done) return [3, 6];\n span = _b.value;\n if (!span) return [2];\n _d.label = 2;\n case 2:\n _d.trys.push([2, 4,, 5]);\n return [4, this._api.push(span)];\n case 3:\n _d.sent();\n return [3, 5];\n case 4:\n e_1 = _d.sent();\n expDuration = Math.floor(Math.pow(time, BACKOFF_FACTOR));\n this._retries = this._retries - 1;\n if (this._retries === 0) {\n this.reset();\n } else {\n this._queue.push(span);\n this._timerID = this.schedule(expDuration);\n }\n return [2];\n case 5:\n _b = _a.next();\n return [3, 1];\n case 6:\n return [3, 9];\n case 7:\n e_2_1 = _d.sent();\n e_2 = {\n error: e_2_1\n };\n return [3, 9];\n case 8:\n try {\n if (_b && !_b.done && (_c = _a.return)) _c.call(_a);\n } finally {\n if (e_2) throw e_2.error;\n }\n return [7];\n case 9:\n this.reset();\n return [2];\n }\n });\n });\n };\n return globals.setTimeout(cb, time);\n };\n Dispatcher.prototype.reset = function () {\n var _a = this.options,\n limit = _a.limit,\n initialDuration = _a.initialDuration;\n this._retries = limit;\n this._duration = initialDuration;\n };\n return Dispatcher;\n}();\nexport { Dispatcher };","import { __assign, __awaiter, __generator, __read, __spread } from \"tslib\";\nimport { compose, toHashMap } from \"@appsignal/core\";\nimport { VERSION } from \"./version\";\nimport { PushApi } from \"./api\";\nimport { Environment } from \"./environment\";\nimport { Span } from \"./span\";\nimport { Queue } from \"./queue\";\nimport { Dispatcher } from \"./dispatcher\";\nvar Appsignal = function () {\n function Appsignal(options) {\n this.VERSION = VERSION;\n this.ignored = [];\n this._breadcrumbs = [];\n this._hooks = {\n decorators: Array(),\n overrides: Array()\n };\n this._env = Environment.serialize();\n this._queue = new Queue([]);\n var _a = options.key,\n key = _a === void 0 ? \"\" : _a,\n uri = options.uri,\n revision = options.revision,\n ignoreErrors = options.ignoreErrors;\n if (revision && typeof revision !== \"string\") {\n options.revision = String(revision);\n }\n if (key === \"\") {\n console.info(\"[APPSIGNAL]: Started in development mode.\");\n }\n this._api = new PushApi({\n key: key,\n uri: uri,\n version: this.VERSION\n });\n if (ignoreErrors && Array.isArray(ignoreErrors)) {\n this.ignored = ignoreErrors;\n }\n this._dispatcher = new Dispatcher(this._queue, this._api);\n this._options = options;\n }\n Appsignal.prototype.send = function (data, tagsOrFn, namespace) {\n var _this = this;\n if (!(data instanceof Error) && !(data instanceof Span)) {\n console.error(\"[APPSIGNAL]: Can't send error, given error is not a valid type\");\n return;\n }\n if (this.ignored.length !== 0) {\n if (data instanceof Error && this.ignored.some(function (el) {\n return el.test(data.message);\n })) {\n console.warn(\"[APPSIGNAL]: Ignored an error: \" + data.message);\n return;\n }\n if (data instanceof Span) {\n var error_1 = data.serialize().error;\n if (error_1.message && this.ignored.some(function (el) {\n return el.test(error_1.message);\n })) {\n console.warn(\"[APPSIGNAL]: Ignored a span: \" + error_1.message);\n return;\n }\n }\n }\n var span = data instanceof Span ? data : this._createSpanFromError(data);\n if (this._hooks.decorators.length > 0) {\n compose.apply(void 0, __spread(this._hooks.decorators))(span);\n }\n if (tagsOrFn) {\n if (typeof tagsOrFn === \"function\") {\n var callback = tagsOrFn;\n callback(span);\n } else {\n console.warn(\"[APPSIGNAL]: DEPRECATED: Calling the `send`/`sendError` function with a tags object is deprecated. Use the callback argument instead.\");\n var tags = toHashMap(tagsOrFn) || {};\n span.setTags(tags);\n }\n }\n if (namespace) {\n console.warn(\"[APPSIGNAL]: DEPRECATED: Calling the `send`/`sendError` function with a namespace is deprecated. Use the callback argument instead.\");\n span.setNamespace(namespace);\n }\n if (this._breadcrumbs.length > 0) span.setBreadcrumbs(this._breadcrumbs);\n if (this._hooks.overrides.length > 0) {\n compose.apply(void 0, __spread(this._hooks.overrides))(span);\n }\n if (Environment.supportsPromises()) {\n this._breadcrumbs = [];\n if (!this._options.key) {\n console.warn(\"[APPSIGNAL]: Span not sent because we're in development mode:\", span);\n if (data instanceof Error) {\n throw data;\n }\n } else {\n return this._api.push(span).catch(function () {\n _this._queue.push(span);\n setTimeout(function () {\n return _this._dispatcher.schedule();\n }, 0);\n });\n }\n } else {\n console.error(\"[APPSIGNAL]: Error not sent. A Promise polyfill is required.\");\n return;\n }\n };\n Appsignal.prototype.sendError = function (error, tagsOrFn, namespace) {\n return this.send(error, tagsOrFn, namespace);\n };\n Appsignal.prototype.use = function (plugin) {\n plugin.call(this);\n };\n Appsignal.prototype.createSpan = function (fn) {\n var _a = this._options,\n _b = _a.revision,\n revision = _b === void 0 ? \"\" : _b,\n namespace = _a.namespace;\n var span = new Span({\n environment: this._env,\n revision: revision\n });\n if (namespace) span.setNamespace(namespace);\n if (fn && typeof fn === \"function\") fn(span);\n return span;\n };\n Appsignal.prototype.wrap = function (fn, tagsOrFn, namespace) {\n return __awaiter(this, void 0, void 0, function () {\n var e_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 2,, 4]);\n return [4, fn()];\n case 1:\n return [2, _a.sent()];\n case 2:\n e_1 = _a.sent();\n return [4, this.sendError(e_1, tagsOrFn, namespace)];\n case 3:\n _a.sent();\n return [2, Promise.reject(e_1)];\n case 4:\n return [2];\n }\n });\n });\n };\n Appsignal.prototype.addDecorator = function (decorator) {\n this._hooks.decorators.push(decorator);\n };\n Appsignal.prototype.addOverride = function (override) {\n this._hooks.overrides.push(override);\n };\n Appsignal.prototype.demo = function () {\n var span = this._createSpanFromError(new Error(\"Hello world! This is an error used for demonstration purposes.\"));\n span.setAction(\"TestAction\").setParams({\n path: \"/hello\",\n method: \"GET\"\n }).setTags({\n demo_sample: \"true\"\n });\n this.send(span);\n };\n Appsignal.prototype.addBreadcrumb = function (breadcrumb) {\n var crumb = __assign(__assign({\n timestamp: Math.round(new Date().getTime() / 1000)\n }, breadcrumb), {\n metadata: toHashMap(breadcrumb.metadata)\n });\n if (!crumb.category) {\n console.warn(\"[APPSIGNAL]: Breadcrumb not added. `category` is missing.\");\n return;\n }\n if (!crumb.action) {\n console.warn(\"[APPSIGNAL]: Breadcrumb not added. `action` is missing.\");\n return;\n }\n if (this._breadcrumbs.length === 20) {\n this._breadcrumbs.pop();\n }\n this._breadcrumbs.unshift(crumb);\n };\n Appsignal.prototype._createSpanFromError = function (error) {\n var event = this.createSpan();\n event.setError(error);\n return event;\n };\n return Appsignal;\n}();\nexport default Appsignal;","export var VERSION = \"1.3.22\";","var __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nfunction windowEventsPlugin(options) {\n var ctx = window;\n var opts = __assign({\n onerror: true,\n onunhandledrejection: true\n }, options);\n return function () {\n var self = this;\n var prev = {\n onError: ctx.onerror,\n unhandledRejection: ctx.onunhandledrejection\n };\n function _onErrorHandler(event, source, lineno, colno, error) {\n var span = self.createSpan();\n if (typeof event === \"string\" && lineno === 0 && /Script error\\.?/.test(event)) {\n console.warn(\"[APPSIGNAL]: Cross-domain or eval script error detected, error ignored\");\n } else {\n if (error) {\n span.setError(error);\n } else {\n span.setError({\n name: \"Error\",\n message: typeof event === \"string\" ? event : 'An HTML onerror=\"\" handler failed to execute',\n stack: \"at \" + source + \":\" + lineno + (colno ? \":\" + colno : \"\")\n });\n }\n self.send(span);\n }\n if (typeof prev.onError === \"function\") {\n prev.onError.apply(this, arguments);\n }\n }\n function _onUnhandledRejectionHandler(error) {\n var _a;\n var span = self.createSpan();\n span.setError({\n name: \"UnhandledPromiseRejectionError\",\n message: _reasonFromError(error),\n stack: ((_a = error === null || error === void 0 ? void 0 : error.reason) === null || _a === void 0 ? void 0 : _a.stack) || \"No stacktrace available\"\n });\n self.send(span);\n if (typeof prev.unhandledRejection === \"function\") {\n prev.unhandledRejection.apply(this, arguments);\n }\n }\n if (opts.onerror) {\n ctx.onerror = _onErrorHandler;\n }\n if (opts.onunhandledrejection) {\n ctx.onunhandledrejection = _onUnhandledRejectionHandler;\n }\n };\n function _reasonFromError(error) {\n if (!error) {\n return undefined;\n }\n if (typeof error.reason === \"string\") {\n return error.reason;\n }\n return JSON.stringify(error.reason, circularReplacer());\n }\n function circularReplacer() {\n var seenValue = [];\n var seenKey = [];\n return function (key, value) {\n if (typeof value === \"object\" && value !== null) {\n var i = seenValue.indexOf(value);\n if (i !== -1) {\n return \"[cyclic value: \" + (seenKey[i] || \"root object\") + \"]\";\n } else {\n seenValue.push(value);\n seenKey.push(key);\n }\n }\n return value;\n };\n }\n}\nexport var plugin = windowEventsPlugin;","function pathDecoratorPlugin(options) {\n return function () {\n var decorator = function (span) {\n return span.setTags({\n path: window.location.pathname\n });\n };\n this.addDecorator(decorator);\n };\n}\nexport var plugin = pathDecoratorPlugin;","export default {\n getContext() {\n const context = document.querySelector('meta[name=\"app-context\"]');\n if (context && context instanceof window.HTMLMetaElement) {\n return context.dataset;\n }\n return null;\n },\n};\n","/* eslint no-console:0 */\n// This file is automatically compiled by Webpack, along with any other files\n// present in this directory. You're encouraged to place your actual application logic in\n// a relevant structure within app/javascript and only use these pack files to reference\n// that code so it'll be compiled.\n//\n// To reference this file, add <%= javascript_pack_tag 'application' %> to the appropriate\n// layout file, like app/views/layouts/application.html.erb\n// Load all the controllers within this directory and all subdirectories.\n// Controller files must be named *_controller.js.\n\nimport { Application } from \"stimulus\"\nimport { definitionsFromContext } from \"stimulus/webpack-helpers\"\n\nimport Appsignal from \"@appsignal/javascript\"\nimport { installErrorHandler } from \"@appsignal/stimulus\"\nimport { plugin as windowEventsPlugin } from \"@appsignal/plugin-window-events\"\nimport { plugin as pathDecoratorPlugin } from \"@appsignal/plugin-path-decorator\"\n\nimport User from \"../lib/User\"\nimport Organization from \"../lib/Organization\"\nimport App from \"../lib/App\"\n\nconst appContext = App.getContext()\n\nconst appsignal = new Appsignal({\n key: appContext.key,\n revision: appContext.revision\n})\n\nappsignal.use(windowEventsPlugin())\nappsignal.use(pathDecoratorPlugin())\n\nconst userContext = User.getContext()\n\nif (userContext) {\n appsignal.addDecorator((span) => {\n return span.setTags({\n user_id: userContext.id,\n intercom_user_id: userContext.id,\n user_email: userContext.email,\n root: userContext.root,\n approver: userContext.approver\n })\n })\n}\n\nconst orgContext = Organization.getContext();\n\nif (orgContext) {\n appsignal.addDecorator((span) => {\n return span.setTags({\n organization_id: orgContext.id,\n organization_name: orgContext.name,\n organization_slug: orgContext.slug\n })\n })\n}\n\nwindow.Appsignal = appsignal\n\nconst application = Application.start()\ninstallErrorHandler(appsignal, application)\nconst context = require.context(\"controllers\", true, /_controller\\.js$/)\napplication.load(definitionsFromContext(context))\n","export function installErrorHandler(appsignal, application) {\n var prevHandler = application.handleError;\n application.handleError = function (error, message) {\n var span = appsignal.createSpan(function (span) {\n return span.setTags({\n framework: \"Stimulus\",\n message: message\n }).setError(error);\n });\n appsignal.send(span);\n if (prevHandler && typeof prevHandler === \"function\") {\n prevHandler.apply(this, arguments);\n }\n };\n}","export function definitionsFromContext(context) {\n return context.keys().map(function (key) {\n return definitionForModuleWithContextAndKey(context, key);\n }).filter(function (value) {\n return value;\n });\n}\nfunction definitionForModuleWithContextAndKey(context, key) {\n var identifier = identifierForContextKey(key);\n if (identifier) {\n return definitionForModuleAndIdentifier(context(key), identifier);\n }\n}\nfunction definitionForModuleAndIdentifier(module, identifier) {\n var controllerConstructor = module.default;\n if (typeof controllerConstructor == \"function\") {\n return {\n identifier: identifier,\n controllerConstructor: controllerConstructor\n };\n }\n}\nexport function identifierForContextKey(key) {\n var logicalName = (key.match(/^(?:\\.\\/)?(.+)(?:[_-]controller\\..+?)$/) || [])[1];\n if (logicalName) {\n return logicalName.replace(/_/g, \"-\").replace(/\\//g, \"--\");\n }\n}","var e = \"undefined\" != typeof window ? window : void 0,\n t = \"undefined\" != typeof globalThis ? globalThis : e,\n i = Array.prototype,\n s = i.forEach,\n r = i.indexOf,\n n = null == t ? void 0 : t.navigator,\n o = null == t ? void 0 : t.document,\n a = null == t ? void 0 : t.location,\n l = null == t ? void 0 : t.fetch,\n u = null != t && t.XMLHttpRequest && \"withCredentials\" in new t.XMLHttpRequest() ? t.XMLHttpRequest : void 0,\n c = null == t ? void 0 : t.AbortController,\n d = null == n ? void 0 : n.userAgent,\n h = null != e ? e : {},\n _ = {\n DEBUG: !1,\n LIB_VERSION: \"1.188.0\"\n },\n p = {},\n v = function (e) {\n return e.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, \"\");\n };\nfunction g(e, t, i) {\n if (D(e)) if (s && e.forEach === s) e.forEach(t, i);else if (\"length\" in e && e.length === +e.length) for (var r = 0, n = e.length; r < n; r++) if (r in e && t.call(i, e[r], r) === p) return;\n}\nfunction f(e, t, i) {\n if (!j(e)) {\n if (D(e)) return g(e, t, i);\n if (Q(e)) {\n for (var s of e.entries()) if (t.call(i, s[1], s[0]) === p) return;\n } else for (var r in e) if (O.call(e, r) && t.call(i, e[r], r) === p) return;\n }\n}\nvar m = function (e) {\n for (var t = arguments.length, i = new Array(t > 1 ? t - 1 : 0), s = 1; s < t; s++) i[s - 1] = arguments[s];\n return g(i, function (t) {\n for (var i in t) void 0 !== t[i] && (e[i] = t[i]);\n }), e;\n};\nfunction b(e, t) {\n return -1 !== e.indexOf(t);\n}\nfunction y(e) {\n for (var t = Object.keys(e), i = t.length, s = new Array(i); i--;) s[i] = [t[i], e[t[i]]];\n return s;\n}\nvar w = function (e) {\n try {\n return e();\n } catch (e) {\n return;\n }\n },\n S = function (e) {\n return function () {\n try {\n for (var t = arguments.length, i = new Array(t), s = 0; s < t; s++) i[s] = arguments[s];\n return e.apply(this, i);\n } catch (e) {\n X.critical(\"Implementation error. Please turn on debug mode and open a ticket on https://app.posthog.com/home#panel=support%3Asupport%3A.\"), X.critical(e);\n }\n };\n },\n E = function (e) {\n var t = {};\n return f(e, function (e, i) {\n U(e) && e.length > 0 && (t[i] = e);\n }), t;\n },\n k = function (e) {\n return e.replace(/^\\$/, \"\");\n };\nfunction x(e, t) {\n return i = e, s = e => U(e) && !z(t) ? e.slice(0, t) : e, r = new Set(), function e(t, i) {\n return t !== Object(t) ? s ? s(t, i) : t : r.has(t) ? void 0 : (r.add(t), D(t) ? (n = [], g(t, t => {\n n.push(e(t));\n })) : (n = {}, f(t, (t, i) => {\n r.has(t) || (n[i] = e(t, i));\n })), n);\n var n;\n }(i);\n var i, s, r;\n}\nvar I = function (e) {\n var t,\n i,\n s,\n r,\n n = \"\";\n for (t = i = 0, s = (e = (e + \"\").replace(/\\r\\n/g, \"\\n\").replace(/\\r/g, \"\\n\")).length, r = 0; r < s; r++) {\n var o = e.charCodeAt(r),\n a = null;\n o < 128 ? i++ : a = o > 127 && o < 2048 ? String.fromCharCode(o >> 6 | 192, 63 & o | 128) : String.fromCharCode(o >> 12 | 224, o >> 6 & 63 | 128, 63 & o | 128), z(a) || (i > t && (n += e.substring(t, i)), n += a, t = i = r + 1);\n }\n return i > t && (n += e.substring(t, e.length)), n;\n },\n P = function () {\n function t(e) {\n return e && (e.preventDefault = t.preventDefault, e.stopPropagation = t.stopPropagation), e;\n }\n return t.preventDefault = function () {\n this.returnValue = !1;\n }, t.stopPropagation = function () {\n this.cancelBubble = !0;\n }, function (i, s, r, n, o) {\n if (i) {\n if (i.addEventListener && !n) i.addEventListener(s, r, !!o);else {\n var a = \"on\" + s,\n l = i[a];\n i[a] = function (i, s, r) {\n return function (n) {\n if (n = n || t(null == e ? void 0 : e.event)) {\n var o,\n a = !0;\n N(r) && (o = r(n));\n var l = s.call(i, n);\n return !1 !== o && !1 !== l || (a = !1), a;\n }\n };\n }(i, r, l);\n }\n } else X.error(\"No valid element provided to register_event\");\n };\n }();\nfunction F(e, t) {\n for (var i = 0; i < e.length; i++) if (t(e[i])) return e[i];\n}\nvar R,\n C = \"$copy_autocapture\",\n T = [\"$snapshot\", \"$pageview\", \"$pageleave\", \"$set\", \"survey dismissed\", \"survey sent\", \"survey shown\", \"$identify\", \"$groupidentify\", \"$create_alias\", \"$$client_ingestion_warning\", \"$web_experiment_applied\", \"$feature_enrollment_update\", \"$feature_flag_called\"];\n!function (e) {\n e.GZipJS = \"gzip-js\", e.Base64 = \"base64\";\n}(R || (R = {}));\nvar $ = [\"fatal\", \"error\", \"warning\", \"log\", \"info\", \"debug\"],\n M = Array.isArray,\n A = Object.prototype,\n O = A.hasOwnProperty,\n L = A.toString,\n D = M || function (e) {\n return \"[object Array]\" === L.call(e);\n },\n N = e => \"function\" == typeof e,\n q = e => e === Object(e) && !D(e),\n B = e => {\n if (q(e)) {\n for (var t in e) if (O.call(e, t)) return !1;\n return !0;\n }\n return !1;\n },\n H = e => void 0 === e,\n U = e => \"[object String]\" == L.call(e),\n W = e => U(e) && 0 === e.trim().length,\n z = e => null === e,\n j = e => H(e) || z(e),\n V = e => \"[object Number]\" == L.call(e),\n G = e => \"[object Boolean]\" === L.call(e),\n Q = e => e instanceof FormData,\n J = e => b(T, e),\n Y = \"[PostHog.js]\",\n X = {\n _log: function (t) {\n if (e && (_.DEBUG || h.POSTHOG_DEBUG) && !H(e.console) && e.console) {\n for (var i = (\"__rrweb_original__\" in e.console[t]) ? e.console[t].__rrweb_original__ : e.console[t], s = arguments.length, r = new Array(s > 1 ? s - 1 : 0), n = 1; n < s; n++) r[n - 1] = arguments[n];\n i(Y, ...r);\n }\n },\n info: function () {\n for (var e = arguments.length, t = new Array(e), i = 0; i < e; i++) t[i] = arguments[i];\n X._log(\"log\", ...t);\n },\n warn: function () {\n for (var e = arguments.length, t = new Array(e), i = 0; i < e; i++) t[i] = arguments[i];\n X._log(\"warn\", ...t);\n },\n error: function () {\n for (var e = arguments.length, t = new Array(e), i = 0; i < e; i++) t[i] = arguments[i];\n X._log(\"error\", ...t);\n },\n critical: function () {\n for (var e = arguments.length, t = new Array(e), i = 0; i < e; i++) t[i] = arguments[i];\n console.error(Y, ...t);\n },\n uninitializedWarning: e => {\n X.error(\"You must initialize PostHog before calling \".concat(e));\n }\n },\n K = (e, t, i) => {\n if (e.config.disable_external_dependency_loading) return X.warn(\"\".concat(t, \" was requested but loading of external scripts is disabled.\")), i(\"Loading of external scripts is disabled\");\n var s = () => {\n if (!o) return i(\"document not found\");\n var e = o.createElement(\"script\");\n e.type = \"text/javascript\", e.crossOrigin = \"anonymous\", e.src = t, e.onload = e => i(void 0, e), e.onerror = e => i(e);\n var s,\n r = o.querySelectorAll(\"body > script\");\n r.length > 0 ? null === (s = r[0].parentNode) || void 0 === s || s.insertBefore(e, r[0]) : o.body.appendChild(e);\n };\n null != o && o.body ? s() : null == o || o.addEventListener(\"DOMContentLoaded\", s);\n };\nfunction Z(e, t) {\n var i = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var s = Object.getOwnPropertySymbols(e);\n t && (s = s.filter(function (t) {\n return Object.getOwnPropertyDescriptor(e, t).enumerable;\n })), i.push.apply(i, s);\n }\n return i;\n}\nfunction ee(e) {\n for (var t = 1; t < arguments.length; t++) {\n var i = null != arguments[t] ? arguments[t] : {};\n t % 2 ? Z(Object(i), !0).forEach(function (t) {\n te(e, t, i[t]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(i)) : Z(Object(i)).forEach(function (t) {\n Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(i, t));\n });\n }\n return e;\n}\nfunction te(e, t, i) {\n return t in e ? Object.defineProperty(e, t, {\n value: i,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : e[t] = i, e;\n}\nfunction ie(e, t) {\n if (null == e) return {};\n var i,\n s,\n r = function (e, t) {\n if (null == e) return {};\n var i,\n s,\n r = {},\n n = Object.keys(e);\n for (s = 0; s < n.length; s++) i = n[s], t.indexOf(i) >= 0 || (r[i] = e[i]);\n return r;\n }(e, t);\n if (Object.getOwnPropertySymbols) {\n var n = Object.getOwnPropertySymbols(e);\n for (s = 0; s < n.length; s++) i = n[s], t.indexOf(i) >= 0 || Object.prototype.propertyIsEnumerable.call(e, i) && (r[i] = e[i]);\n }\n return r;\n}\nh.__PosthogExtensions__ = h.__PosthogExtensions__ || {}, h.__PosthogExtensions__.loadExternalDependency = (e, t, i) => {\n var s = \"/static/\".concat(t, \".js\") + \"?v=\".concat(e.version);\n if (\"toolbar\" === t) {\n var r = 3e5,\n n = Math.floor(Date.now() / r) * r;\n s = \"\".concat(s, \"&t=\").concat(n);\n }\n var o = e.requestRouter.endpointFor(\"assets\", s);\n K(e, o, i);\n}, h.__PosthogExtensions__.loadSiteApp = (e, t, i) => {\n var s = e.requestRouter.endpointFor(\"api\", t);\n K(e, s, i);\n};\nvar se = \"$people_distinct_id\",\n re = \"__alias\",\n ne = \"__timers\",\n oe = \"$autocapture_disabled_server_side\",\n ae = \"$heatmaps_enabled_server_side\",\n le = \"$exception_capture_enabled_server_side\",\n ue = \"$web_vitals_enabled_server_side\",\n ce = \"$dead_clicks_enabled_server_side\",\n de = \"$web_vitals_allowed_metrics\",\n he = \"$session_recording_enabled_server_side\",\n _e = \"$console_log_recording_enabled_server_side\",\n pe = \"$session_recording_network_payload_capture\",\n ve = \"$session_recording_canvas_recording\",\n ge = \"$replay_sample_rate\",\n fe = \"$replay_minimum_duration\",\n me = \"$sesid\",\n be = \"$session_is_sampled\",\n ye = \"$session_recording_url_trigger_activated_session\",\n we = \"$session_recording_event_trigger_activated_session\",\n Se = \"$enabled_feature_flags\",\n Ee = \"$early_access_features\",\n ke = \"$stored_person_properties\",\n xe = \"$stored_group_properties\",\n Ie = \"$surveys\",\n Pe = \"$surveys_activated\",\n Fe = \"$flag_call_reported\",\n Re = \"$user_state\",\n Ce = \"$client_session_props\",\n Te = \"$capture_rate_limit\",\n $e = \"$initial_campaign_params\",\n Me = \"$initial_referrer_info\",\n Ae = \"$initial_person_info\",\n Oe = \"$epp\",\n Le = \"__POSTHOG_TOOLBAR__\",\n De = [se, re, \"__cmpns\", ne, he, ae, me, Se, Re, Ee, xe, ke, Ie, Fe, Ce, Te, $e, Me, Oe],\n Ne = \"$active_feature_flags\",\n qe = \"$override_feature_flags\",\n Be = \"$feature_flag_payloads\",\n He = e => {\n var t = {};\n for (var [i, s] of y(e || {})) s && (t[i] = s);\n return t;\n };\nclass Ue {\n constructor(e) {\n this.instance = e, this._override_warning = !1, this.featureFlagEventHandlers = [], this.reloadFeatureFlagsQueued = !1, this.reloadFeatureFlagsInAction = !1;\n }\n getFlags() {\n return Object.keys(this.getFlagVariants());\n }\n getFlagVariants() {\n var e = this.instance.get_property(Se),\n t = this.instance.get_property(qe);\n if (!t) return e || {};\n for (var i = m({}, e), s = Object.keys(t), r = 0; r < s.length; r++) i[s[r]] = t[s[r]];\n return this._override_warning || (X.warn(\" Overriding feature flags!\", {\n enabledFlags: e,\n overriddenFlags: t,\n finalFlags: i\n }), this._override_warning = !0), i;\n }\n getFlagPayloads() {\n return this.instance.get_property(Be) || {};\n }\n reloadFeatureFlags() {\n this.reloadFeatureFlagsQueued || (this.reloadFeatureFlagsQueued = !0, this._startReloadTimer());\n }\n setAnonymousDistinctId(e) {\n this.$anon_distinct_id = e;\n }\n setReloadingPaused(e) {\n this.reloadFeatureFlagsInAction = e;\n }\n resetRequestQueue() {\n this.reloadFeatureFlagsQueued = !1;\n }\n _startReloadTimer() {\n this.reloadFeatureFlagsQueued && !this.reloadFeatureFlagsInAction && setTimeout(() => {\n !this.reloadFeatureFlagsInAction && this.reloadFeatureFlagsQueued && (this.reloadFeatureFlagsQueued = !1, this._reloadFeatureFlagsRequest());\n }, 5);\n }\n _reloadFeatureFlagsRequest() {\n if (!this.instance.config.advanced_disable_feature_flags) {\n this.setReloadingPaused(!0);\n var e = this.instance.config.token,\n t = this.instance.get_property(ke),\n i = this.instance.get_property(xe),\n s = {\n token: e,\n distinct_id: this.instance.get_distinct_id(),\n groups: this.instance.getGroups(),\n $anon_distinct_id: this.$anon_distinct_id,\n person_properties: t,\n group_properties: i,\n disable_flags: this.instance.config.advanced_disable_feature_flags || void 0\n };\n this.instance._send_request({\n method: \"POST\",\n url: this.instance.requestRouter.endpointFor(\"api\", \"/decide/?v=3\"),\n data: s,\n compression: this.instance.config.disable_compression ? void 0 : R.Base64,\n timeout: this.instance.config.feature_flag_request_timeout_ms,\n callback: e => {\n var t;\n this.setReloadingPaused(!1);\n var i = !0;\n 200 === e.statusCode && (this.$anon_distinct_id = void 0, i = !1), this.receivedFeatureFlags(null !== (t = e.json) && void 0 !== t ? t : {}, i), this._startReloadTimer();\n }\n });\n }\n }\n getFeatureFlag(e) {\n var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};\n if (this.instance.decideEndpointWasHit || this.getFlags() && this.getFlags().length > 0) {\n var i,\n s = this.getFlagVariants()[e],\n r = \"\".concat(s),\n n = this.instance.get_property(Fe) || {};\n if (t.send_event || !(\"send_event\" in t)) if (!(e in n) || !n[e].includes(r)) D(n[e]) ? n[e].push(r) : n[e] = [r], null === (i = this.instance.persistence) || void 0 === i || i.register({\n [Fe]: n\n }), this.instance.capture(\"$feature_flag_called\", {\n $feature_flag: e,\n $feature_flag_response: s\n });\n return s;\n }\n X.warn('getFeatureFlag for key \"' + e + \"\\\" failed. Feature flags didn't load in time.\");\n }\n getFeatureFlagPayload(e) {\n return this.getFlagPayloads()[e];\n }\n isFeatureEnabled(e) {\n var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};\n if (this.instance.decideEndpointWasHit || this.getFlags() && this.getFlags().length > 0) return !!this.getFeatureFlag(e, t);\n X.warn('isFeatureEnabled for key \"' + e + \"\\\" failed. Feature flags didn't load in time.\");\n }\n addFeatureFlagsHandler(e) {\n this.featureFlagEventHandlers.push(e);\n }\n removeFeatureFlagsHandler(e) {\n this.featureFlagEventHandlers = this.featureFlagEventHandlers.filter(t => t !== e);\n }\n receivedFeatureFlags(e, t) {\n if (this.instance.persistence) {\n this.instance.decideEndpointWasHit = !0;\n var i = this.getFlagVariants(),\n s = this.getFlagPayloads();\n !function (e, t) {\n var i = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {},\n s = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : {},\n r = e.featureFlags,\n n = e.featureFlagPayloads;\n if (r) if (D(r)) {\n var o = {};\n if (r) for (var a = 0; a < r.length; a++) o[r[a]] = !0;\n t && t.register({\n [Ne]: r,\n [Se]: o\n });\n } else {\n var l = r,\n u = n;\n e.errorsWhileComputingFlags && (l = ee(ee({}, i), l), u = ee(ee({}, s), u)), t && t.register({\n [Ne]: Object.keys(He(l)),\n [Se]: l || {},\n [Be]: u || {}\n });\n }\n }(e, this.instance.persistence, i, s), this._fireFeatureFlagsCallbacks(t);\n }\n }\n override(e) {\n var t = arguments.length > 1 && void 0 !== arguments[1] && arguments[1];\n if (!this.instance.__loaded || !this.instance.persistence) return X.uninitializedWarning(\"posthog.feature_flags.override\");\n if (this._override_warning = t, !1 === e) this.instance.persistence.unregister(qe);else if (D(e)) {\n for (var i = {}, s = 0; s < e.length; s++) i[e[s]] = !0;\n this.instance.persistence.register({\n [qe]: i\n });\n } else this.instance.persistence.register({\n [qe]: e\n });\n }\n onFeatureFlags(e) {\n if (this.addFeatureFlagsHandler(e), this.instance.decideEndpointWasHit) {\n var {\n flags: t,\n flagVariants: i\n } = this._prepareFeatureFlagsForCallbacks();\n e(t, i);\n }\n return () => this.removeFeatureFlagsHandler(e);\n }\n updateEarlyAccessFeatureEnrollment(e, t) {\n var i,\n s = {\n [\"$feature_enrollment/\".concat(e)]: t\n };\n this.instance.capture(\"$feature_enrollment_update\", {\n $feature_flag: e,\n $feature_enrollment: t,\n $set: s\n }), this.setPersonPropertiesForFlags(s, !1);\n var r = ee(ee({}, this.getFlagVariants()), {}, {\n [e]: t\n });\n null === (i = this.instance.persistence) || void 0 === i || i.register({\n [Ne]: Object.keys(He(r)),\n [Se]: r\n }), this._fireFeatureFlagsCallbacks();\n }\n getEarlyAccessFeatures(e) {\n var t = arguments.length > 1 && void 0 !== arguments[1] && arguments[1],\n i = this.instance.get_property(Ee);\n if (i && !t) return e(i);\n this.instance._send_request({\n transport: \"XHR\",\n url: this.instance.requestRouter.endpointFor(\"api\", \"/api/early_access_features/?token=\".concat(this.instance.config.token)),\n method: \"GET\",\n callback: t => {\n var i;\n if (t.json) {\n var s = t.json.earlyAccessFeatures;\n return null === (i = this.instance.persistence) || void 0 === i || i.register({\n [Ee]: s\n }), e(s);\n }\n }\n });\n }\n _prepareFeatureFlagsForCallbacks() {\n var e = this.getFlags(),\n t = this.getFlagVariants();\n return {\n flags: e.filter(e => t[e]),\n flagVariants: Object.keys(t).filter(e => t[e]).reduce((e, i) => (e[i] = t[i], e), {})\n };\n }\n _fireFeatureFlagsCallbacks(e) {\n var {\n flags: t,\n flagVariants: i\n } = this._prepareFeatureFlagsForCallbacks();\n this.featureFlagEventHandlers.forEach(s => s(t, i, {\n errorsLoading: e\n }));\n }\n setPersonPropertiesForFlags(e) {\n var t = !(arguments.length > 1 && void 0 !== arguments[1]) || arguments[1],\n i = this.instance.get_property(ke) || {};\n this.instance.register({\n [ke]: ee(ee({}, i), e)\n }), t && this.instance.reloadFeatureFlags();\n }\n resetPersonPropertiesForFlags() {\n this.instance.unregister(ke);\n }\n setGroupPropertiesForFlags(e) {\n var t = !(arguments.length > 1 && void 0 !== arguments[1]) || arguments[1],\n i = this.instance.get_property(xe) || {};\n 0 !== Object.keys(i).length && Object.keys(i).forEach(t => {\n i[t] = ee(ee({}, i[t]), e[t]), delete e[t];\n }), this.instance.register({\n [xe]: ee(ee({}, i), e)\n }), t && this.instance.reloadFeatureFlags();\n }\n resetGroupPropertiesForFlags(e) {\n if (e) {\n var t = this.instance.get_property(xe) || {};\n this.instance.register({\n [xe]: ee(ee({}, t), {}, {\n [e]: {}\n })\n });\n } else this.instance.unregister(xe);\n }\n}\nMath.trunc || (Math.trunc = function (e) {\n return e < 0 ? Math.ceil(e) : Math.floor(e);\n}), Number.isInteger || (Number.isInteger = function (e) {\n return V(e) && isFinite(e) && Math.floor(e) === e;\n});\nvar We = \"0123456789abcdef\";\nclass ze {\n constructor(e) {\n if (this.bytes = e, 16 !== e.length) throw new TypeError(\"not 128-bit length\");\n }\n static fromFieldsV7(e, t, i, s) {\n if (!Number.isInteger(e) || !Number.isInteger(t) || !Number.isInteger(i) || !Number.isInteger(s) || e < 0 || t < 0 || i < 0 || s < 0 || e > 0xffffffffffff || t > 4095 || i > 1073741823 || s > 4294967295) throw new RangeError(\"invalid field value\");\n var r = new Uint8Array(16);\n return r[0] = e / Math.pow(2, 40), r[1] = e / Math.pow(2, 32), r[2] = e / Math.pow(2, 24), r[3] = e / Math.pow(2, 16), r[4] = e / Math.pow(2, 8), r[5] = e, r[6] = 112 | t >>> 8, r[7] = t, r[8] = 128 | i >>> 24, r[9] = i >>> 16, r[10] = i >>> 8, r[11] = i, r[12] = s >>> 24, r[13] = s >>> 16, r[14] = s >>> 8, r[15] = s, new ze(r);\n }\n toString() {\n for (var e = \"\", t = 0; t < this.bytes.length; t++) e = e + We.charAt(this.bytes[t] >>> 4) + We.charAt(15 & this.bytes[t]), 3 !== t && 5 !== t && 7 !== t && 9 !== t || (e += \"-\");\n if (36 !== e.length) throw new Error(\"Invalid UUIDv7 was generated\");\n return e;\n }\n clone() {\n return new ze(this.bytes.slice(0));\n }\n equals(e) {\n return 0 === this.compareTo(e);\n }\n compareTo(e) {\n for (var t = 0; t < 16; t++) {\n var i = this.bytes[t] - e.bytes[t];\n if (0 !== i) return Math.sign(i);\n }\n return 0;\n }\n}\nclass je {\n constructor() {\n te(this, \"timestamp\", 0), te(this, \"counter\", 0), te(this, \"random\", new Qe());\n }\n generate() {\n var e = this.generateOrAbort();\n if (H(e)) {\n this.timestamp = 0;\n var t = this.generateOrAbort();\n if (H(t)) throw new Error(\"Could not generate UUID after timestamp reset\");\n return t;\n }\n return e;\n }\n generateOrAbort() {\n var e = Date.now();\n if (e > this.timestamp) this.timestamp = e, this.resetCounter();else {\n if (!(e + 1e4 > this.timestamp)) return;\n this.counter++, this.counter > 4398046511103 && (this.timestamp++, this.resetCounter());\n }\n return ze.fromFieldsV7(this.timestamp, Math.trunc(this.counter / Math.pow(2, 30)), this.counter & Math.pow(2, 30) - 1, this.random.nextUint32());\n }\n resetCounter() {\n this.counter = 1024 * this.random.nextUint32() + (1023 & this.random.nextUint32());\n }\n}\nvar Ve,\n Ge = e => {\n if (\"undefined\" != typeof UUIDV7_DENY_WEAK_RNG && UUIDV7_DENY_WEAK_RNG) throw new Error(\"no cryptographically strong RNG available\");\n for (var t = 0; t < e.length; t++) e[t] = 65536 * Math.trunc(65536 * Math.random()) + Math.trunc(65536 * Math.random());\n return e;\n };\ne && !H(e.crypto) && crypto.getRandomValues && (Ge = e => crypto.getRandomValues(e));\nclass Qe {\n constructor() {\n te(this, \"buffer\", new Uint32Array(8)), te(this, \"cursor\", 1 / 0);\n }\n nextUint32() {\n return this.cursor >= this.buffer.length && (Ge(this.buffer), this.cursor = 0), this.buffer[this.cursor++];\n }\n}\nvar Je = () => Ye().toString(),\n Ye = () => (Ve || (Ve = new je())).generate(),\n Xe = \"Thu, 01 Jan 1970 00:00:00 GMT\",\n Ke = \"\";\nvar Ze = /[a-z0-9][a-z0-9-]+\\.[a-z]{2,}$/i;\nfunction et(e, t) {\n if (t) {\n var i = function (e) {\n var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : o;\n if (Ke) return Ke;\n if (!t) return \"\";\n if ([\"localhost\", \"127.0.0.1\"].includes(e)) return \"\";\n for (var i = e.split(\".\"), s = Math.min(i.length, 8), r = \"dmn_chk_\" + Je(), n = new RegExp(\"(^|;)\\\\s*\" + r + \"=1\"); !Ke && s--;) {\n var a = i.slice(s).join(\".\"),\n l = r + \"=1;domain=.\" + a;\n t.cookie = l, n.test(t.cookie) && (t.cookie = l + \";expires=\" + Xe, Ke = a);\n }\n return Ke;\n }(e);\n if (!i) {\n var s = (e => {\n var t = e.match(Ze);\n return t ? t[0] : \"\";\n })(e);\n s !== i && X.info(\"Warning: cookie subdomain discovery mismatch\", s, i), i = s;\n }\n return i ? \"; domain=.\" + i : \"\";\n }\n return \"\";\n}\nvar tt = {\n is_supported: () => !!o,\n error: function (e) {\n X.error(\"cookieStore error: \" + e);\n },\n get: function (e) {\n if (o) {\n try {\n for (var t = e + \"=\", i = o.cookie.split(\";\").filter(e => e.length), s = 0; s < i.length; s++) {\n for (var r = i[s]; \" \" == r.charAt(0);) r = r.substring(1, r.length);\n if (0 === r.indexOf(t)) return decodeURIComponent(r.substring(t.length, r.length));\n }\n } catch (e) {}\n return null;\n }\n },\n parse: function (e) {\n var t;\n try {\n t = JSON.parse(tt.get(e)) || {};\n } catch (e) {}\n return t;\n },\n set: function (e, t, i, s, r) {\n if (o) try {\n var n = \"\",\n a = \"\",\n l = et(o.location.hostname, s);\n if (i) {\n var u = new Date();\n u.setTime(u.getTime() + 24 * i * 60 * 60 * 1e3), n = \"; expires=\" + u.toUTCString();\n }\n r && (a = \"; secure\");\n var c = e + \"=\" + encodeURIComponent(JSON.stringify(t)) + n + \"; SameSite=Lax; path=/\" + l + a;\n return c.length > 3686.4 && X.warn(\"cookieStore warning: large cookie, len=\" + c.length), o.cookie = c, c;\n } catch (e) {\n return;\n }\n },\n remove: function (e, t) {\n try {\n tt.set(e, \"\", -1, t);\n } catch (e) {\n return;\n }\n }\n },\n it = null,\n st = {\n is_supported: function () {\n if (!z(it)) return it;\n var t = !0;\n if (H(e)) t = !1;else try {\n var i = \"__mplssupport__\";\n st.set(i, \"xyz\"), '\"xyz\"' !== st.get(i) && (t = !1), st.remove(i);\n } catch (e) {\n t = !1;\n }\n return t || X.error(\"localStorage unsupported; falling back to cookie store\"), it = t, t;\n },\n error: function (e) {\n X.error(\"localStorage error: \" + e);\n },\n get: function (t) {\n try {\n return null == e ? void 0 : e.localStorage.getItem(t);\n } catch (e) {\n st.error(e);\n }\n return null;\n },\n parse: function (e) {\n try {\n return JSON.parse(st.get(e)) || {};\n } catch (e) {}\n return null;\n },\n set: function (t, i) {\n try {\n null == e || e.localStorage.setItem(t, JSON.stringify(i));\n } catch (e) {\n st.error(e);\n }\n },\n remove: function (t) {\n try {\n null == e || e.localStorage.removeItem(t);\n } catch (e) {\n st.error(e);\n }\n }\n },\n rt = [\"distinct_id\", me, be, Oe],\n nt = ee(ee({}, st), {}, {\n parse: function (e) {\n try {\n var t = {};\n try {\n t = tt.parse(e) || {};\n } catch (e) {}\n var i = m(t, JSON.parse(st.get(e) || \"{}\"));\n return st.set(e, i), i;\n } catch (e) {}\n return null;\n },\n set: function (e, t, i, s, r, n) {\n try {\n st.set(e, t, void 0, void 0, n);\n var o = {};\n rt.forEach(e => {\n t[e] && (o[e] = t[e]);\n }), Object.keys(o).length && tt.set(e, o, i, s, r, n);\n } catch (e) {\n st.error(e);\n }\n },\n remove: function (t, i) {\n try {\n null == e || e.localStorage.removeItem(t), tt.remove(t, i);\n } catch (e) {\n st.error(e);\n }\n }\n }),\n ot = {},\n at = {\n is_supported: function () {\n return !0;\n },\n error: function (e) {\n X.error(\"memoryStorage error: \" + e);\n },\n get: function (e) {\n return ot[e] || null;\n },\n parse: function (e) {\n return ot[e] || null;\n },\n set: function (e, t) {\n ot[e] = t;\n },\n remove: function (e) {\n delete ot[e];\n }\n },\n lt = null,\n ut = {\n is_supported: function () {\n if (!z(lt)) return lt;\n if (lt = !0, H(e)) lt = !1;else try {\n var t = \"__support__\";\n ut.set(t, \"xyz\"), '\"xyz\"' !== ut.get(t) && (lt = !1), ut.remove(t);\n } catch (e) {\n lt = !1;\n }\n return lt;\n },\n error: function (e) {\n X.error(\"sessionStorage error: \", e);\n },\n get: function (t) {\n try {\n return null == e ? void 0 : e.sessionStorage.getItem(t);\n } catch (e) {\n ut.error(e);\n }\n return null;\n },\n parse: function (e) {\n try {\n return JSON.parse(ut.get(e)) || null;\n } catch (e) {}\n return null;\n },\n set: function (t, i) {\n try {\n null == e || e.sessionStorage.setItem(t, JSON.stringify(i));\n } catch (e) {\n ut.error(e);\n }\n },\n remove: function (t) {\n try {\n null == e || e.sessionStorage.removeItem(t);\n } catch (e) {\n ut.error(e);\n }\n }\n },\n ct = [\"localhost\", \"127.0.0.1\"],\n dt = e => {\n var t = null == o ? void 0 : o.createElement(\"a\");\n return H(t) ? null : (t.href = e, t);\n },\n ht = function (e, t) {\n return !!function (e) {\n try {\n new RegExp(e);\n } catch (e) {\n return !1;\n }\n return !0;\n }(t) && new RegExp(t).test(e);\n },\n _t = function (e) {\n var t,\n i,\n s = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : \"&\",\n r = [];\n return f(e, function (e, s) {\n H(e) || H(s) || \"undefined\" === s || (t = encodeURIComponent((e => e instanceof File)(e) ? e.name : e.toString()), i = encodeURIComponent(s), r[r.length] = i + \"=\" + t);\n }), r.join(s);\n },\n pt = function (e, t) {\n for (var i, s = ((e.split(\"#\")[0] || \"\").split(\"?\")[1] || \"\").split(\"&\"), r = 0; r < s.length; r++) {\n var n = s[r].split(\"=\");\n if (n[0] === t) {\n i = n;\n break;\n }\n }\n if (!D(i) || i.length < 2) return \"\";\n var o = i[1];\n try {\n o = decodeURIComponent(o);\n } catch (e) {\n X.error(\"Skipping decoding for malformed query param: \" + o);\n }\n return o.replace(/\\+/g, \" \");\n },\n vt = function (e, t) {\n var i = e.match(new RegExp(t + \"=([^&]*)\"));\n return i ? i[1] : null;\n },\n gt = \"Mobile\",\n ft = \"iOS\",\n mt = \"Android\",\n bt = \"Tablet\",\n yt = mt + \" \" + bt,\n wt = \"iPad\",\n St = \"Apple\",\n Et = St + \" Watch\",\n kt = \"Safari\",\n xt = \"BlackBerry\",\n It = \"Samsung\",\n Pt = It + \"Browser\",\n Ft = It + \" Internet\",\n Rt = \"Chrome\",\n Ct = Rt + \" OS\",\n Tt = Rt + \" \" + ft,\n $t = \"Internet Explorer\",\n Mt = $t + \" \" + gt,\n At = \"Opera\",\n Ot = At + \" Mini\",\n Lt = \"Edge\",\n Dt = \"Microsoft \" + Lt,\n Nt = \"Firefox\",\n qt = Nt + \" \" + ft,\n Bt = \"Nintendo\",\n Ht = \"PlayStation\",\n Ut = \"Xbox\",\n Wt = mt + \" \" + gt,\n zt = gt + \" \" + kt,\n jt = \"Windows\",\n Vt = jt + \" Phone\",\n Gt = \"Nokia\",\n Qt = \"Ouya\",\n Jt = \"Generic\",\n Yt = Jt + \" \" + gt.toLowerCase(),\n Xt = Jt + \" \" + bt.toLowerCase(),\n Kt = \"Konqueror\",\n Zt = \"(\\\\d+(\\\\.\\\\d+)?)\",\n ei = new RegExp(\"Version/\" + Zt),\n ti = new RegExp(Ut, \"i\"),\n ii = new RegExp(Ht + \" \\\\w+\", \"i\"),\n si = new RegExp(Bt + \" \\\\w+\", \"i\"),\n ri = new RegExp(xt + \"|PlayBook|BB10\", \"i\"),\n ni = {\n \"NT3.51\": \"NT 3.11\",\n \"NT4.0\": \"NT 4.0\",\n \"5.0\": \"2000\",\n 5.1: \"XP\",\n 5.2: \"XP\",\n \"6.0\": \"Vista\",\n 6.1: \"7\",\n 6.2: \"8\",\n 6.3: \"8.1\",\n 6.4: \"10\",\n \"10.0\": \"10\"\n };\nvar oi = (e, t) => t && b(t, St) || function (e) {\n return b(e, kt) && !b(e, Rt) && !b(e, mt);\n }(e),\n ai = function (e, t) {\n return t = t || \"\", b(e, \" OPR/\") && b(e, \"Mini\") ? Ot : b(e, \" OPR/\") ? At : ri.test(e) ? xt : b(e, \"IE\" + gt) || b(e, \"WPDesktop\") ? Mt : b(e, Pt) ? Ft : b(e, Lt) || b(e, \"Edg/\") ? Dt : b(e, \"FBIOS\") ? \"Facebook \" + gt : b(e, \"UCWEB\") || b(e, \"UCBrowser\") ? \"UC Browser\" : b(e, \"CriOS\") ? Tt : b(e, \"CrMo\") ? Rt : b(e, mt) && b(e, kt) ? Wt : b(e, Rt) ? Rt : b(e, \"FxiOS\") ? qt : b(e.toLowerCase(), Kt.toLowerCase()) ? Kt : oi(e, t) ? b(e, gt) ? zt : kt : b(e, Nt) ? Nt : b(e, \"MSIE\") || b(e, \"Trident/\") ? $t : b(e, \"Gecko\") ? Nt : \"\";\n },\n li = {\n [Mt]: [new RegExp(\"rv:\" + Zt)],\n [Dt]: [new RegExp(Lt + \"?\\\\/\" + Zt)],\n [Rt]: [new RegExp(\"(\" + Rt + \"|CrMo)\\\\/\" + Zt)],\n [Tt]: [new RegExp(\"CriOS\\\\/\" + Zt)],\n \"UC Browser\": [new RegExp(\"(UCBrowser|UCWEB)\\\\/\" + Zt)],\n [kt]: [ei],\n [zt]: [ei],\n [At]: [new RegExp(\"(Opera|OPR)\\\\/\" + Zt)],\n [Nt]: [new RegExp(Nt + \"\\\\/\" + Zt)],\n [qt]: [new RegExp(\"FxiOS\\\\/\" + Zt)],\n [Kt]: [new RegExp(\"Konqueror[:/]?\" + Zt, \"i\")],\n [xt]: [new RegExp(xt + \" \" + Zt), ei],\n [Wt]: [new RegExp(\"android\\\\s\" + Zt, \"i\")],\n [Ft]: [new RegExp(Pt + \"\\\\/\" + Zt)],\n [$t]: [new RegExp(\"(rv:|MSIE )\" + Zt)],\n Mozilla: [new RegExp(\"rv:\" + Zt)]\n },\n ui = [[new RegExp(Ut + \"; \" + Ut + \" (.*?)[);]\", \"i\"), e => [Ut, e && e[1] || \"\"]], [new RegExp(Bt, \"i\"), [Bt, \"\"]], [new RegExp(Ht, \"i\"), [Ht, \"\"]], [ri, [xt, \"\"]], [new RegExp(jt, \"i\"), (e, t) => {\n if (/Phone/.test(t) || /WPDesktop/.test(t)) return [Vt, \"\"];\n if (new RegExp(gt).test(t) && !/IEMobile\\b/.test(t)) return [jt + \" \" + gt, \"\"];\n var i = /Windows NT ([0-9.]+)/i.exec(t);\n if (i && i[1]) {\n var s = i[1],\n r = ni[s] || \"\";\n return /arm/i.test(t) && (r = \"RT\"), [jt, r];\n }\n return [jt, \"\"];\n }], [/((iPhone|iPad|iPod).*?OS (\\d+)_(\\d+)_?(\\d+)?|iPhone)/, e => {\n if (e && e[3]) {\n var t = [e[3], e[4], e[5] || \"0\"];\n return [ft, t.join(\".\")];\n }\n return [ft, \"\"];\n }], [/(watch.*\\/(\\d+\\.\\d+\\.\\d+)|watch os,(\\d+\\.\\d+),)/i, e => {\n var t = \"\";\n return e && e.length >= 3 && (t = H(e[2]) ? e[3] : e[2]), [\"watchOS\", t];\n }], [new RegExp(\"(\" + mt + \" (\\\\d+)\\\\.(\\\\d+)\\\\.?(\\\\d+)?|\" + mt + \")\", \"i\"), e => {\n if (e && e[2]) {\n var t = [e[2], e[3], e[4] || \"0\"];\n return [mt, t.join(\".\")];\n }\n return [mt, \"\"];\n }], [/Mac OS X (\\d+)[_.](\\d+)[_.]?(\\d+)?/i, e => {\n var t = [\"Mac OS X\", \"\"];\n if (e && e[1]) {\n var i = [e[1], e[2], e[3] || \"0\"];\n t[1] = i.join(\".\");\n }\n return t;\n }], [/Mac/i, [\"Mac OS X\", \"\"]], [/CrOS/, [Ct, \"\"]], [/Linux|debian/i, [\"Linux\", \"\"]]],\n ci = function (e) {\n return si.test(e) ? Bt : ii.test(e) ? Ht : ti.test(e) ? Ut : new RegExp(Qt, \"i\").test(e) ? Qt : new RegExp(\"(\" + Vt + \"|WPDesktop)\", \"i\").test(e) ? Vt : /iPad/.test(e) ? wt : /iPod/.test(e) ? \"iPod Touch\" : /iPhone/.test(e) ? \"iPhone\" : /(watch)(?: ?os[,/]|\\d,\\d\\/)[\\d.]+/i.test(e) ? Et : ri.test(e) ? xt : /(kobo)\\s(ereader|touch)/i.test(e) ? \"Kobo\" : new RegExp(Gt, \"i\").test(e) ? Gt : /(kf[a-z]{2}wi|aeo[c-r]{2})( bui|\\))/i.test(e) || /(kf[a-z]+)( bui|\\)).+silk\\//i.test(e) ? \"Kindle Fire\" : /(Android|ZTE)/i.test(e) ? !new RegExp(gt).test(e) || /(9138B|TB782B|Nexus [97]|pixel c|HUAWEISHT|BTV|noble nook|smart ultra 6)/i.test(e) ? /pixel[\\daxl ]{1,6}/i.test(e) && !/pixel c/i.test(e) || /(huaweimed-al00|tah-|APA|SM-G92|i980|zte|U304AA)/i.test(e) || /lmy47v/i.test(e) && !/QTAQZ3/i.test(e) ? mt : yt : mt : new RegExp(\"(pda|\" + gt + \")\", \"i\").test(e) ? Yt : new RegExp(bt, \"i\").test(e) && !new RegExp(bt + \" pc\", \"i\").test(e) ? Xt : \"\";\n },\n di = \"https?://(.*)\",\n hi = [\"utm_source\", \"utm_medium\", \"utm_campaign\", \"utm_content\", \"utm_term\", \"gclid\", \"gad_source\", \"gclsrc\", \"dclid\", \"gbraid\", \"wbraid\", \"fbclid\", \"msclkid\", \"twclid\", \"li_fat_id\", \"mc_cid\", \"igshid\", \"ttclid\", \"rdt_cid\"],\n _i = {\n campaignParams: function (e) {\n return o ? this._campaignParamsFromUrl(o.URL, e) : {};\n },\n _campaignParamsFromUrl: function (e, t) {\n var i = hi.concat(t || []),\n s = {};\n return f(i, function (t) {\n var i = pt(e, t);\n s[t] = i || null;\n }), s;\n },\n _searchEngine: function (e) {\n return e ? 0 === e.search(di + \"google.([^/?]*)\") ? \"google\" : 0 === e.search(di + \"bing.com\") ? \"bing\" : 0 === e.search(di + \"yahoo.com\") ? \"yahoo\" : 0 === e.search(di + \"duckduckgo.com\") ? \"duckduckgo\" : null : null;\n },\n _searchInfoFromReferrer: function (e) {\n var t = _i._searchEngine(e),\n i = \"yahoo\" != t ? \"q\" : \"p\",\n s = {};\n if (!z(t)) {\n s.$search_engine = t;\n var r = o ? pt(o.referrer, i) : \"\";\n r.length && (s.ph_keyword = r);\n }\n return s;\n },\n searchInfo: function () {\n var e = null == o ? void 0 : o.referrer;\n return e ? this._searchInfoFromReferrer(e) : {};\n },\n browser: ai,\n browserVersion: function (e, t) {\n var i = ai(e, t),\n s = li[i];\n if (H(s)) return null;\n for (var r = 0; r < s.length; r++) {\n var n = s[r],\n o = e.match(n);\n if (o) return parseFloat(o[o.length - 2]);\n }\n return null;\n },\n browserLanguage: function () {\n return navigator.language || navigator.userLanguage;\n },\n os: function (e) {\n for (var t = 0; t < ui.length; t++) {\n var [i, s] = ui[t],\n r = i.exec(e),\n n = r && (N(s) ? s(r, e) : s);\n if (n) return n;\n }\n return [\"\", \"\"];\n },\n device: ci,\n deviceType: function (e) {\n var t = ci(e);\n return t === wt || t === yt || \"Kobo\" === t || \"Kindle Fire\" === t || t === Xt ? bt : t === Bt || t === Ut || t === Ht || t === Qt ? \"Console\" : t === Et ? \"Wearable\" : t ? gt : \"Desktop\";\n },\n referrer: function () {\n return (null == o ? void 0 : o.referrer) || \"$direct\";\n },\n referringDomain: function () {\n var e;\n return null != o && o.referrer && (null === (e = dt(o.referrer)) || void 0 === e ? void 0 : e.host) || \"$direct\";\n },\n referrerInfo: function () {\n return {\n $referrer: this.referrer(),\n $referring_domain: this.referringDomain()\n };\n },\n initialPersonInfo: function () {\n return {\n r: this.referrer(),\n u: null == a ? void 0 : a.href\n };\n },\n initialPersonPropsFromInfo: function (e) {\n var t,\n {\n r: i,\n u: s\n } = e,\n r = {\n $initial_referrer: i,\n $initial_referring_domain: null == i ? void 0 : \"$direct\" == i ? \"$direct\" : null === (t = dt(i)) || void 0 === t ? void 0 : t.host\n };\n if (s) {\n r.$initial_current_url = s;\n var n = dt(s);\n r.$initial_host = null == n ? void 0 : n.host, r.$initial_pathname = null == n ? void 0 : n.pathname, f(this._campaignParamsFromUrl(s), function (e, t) {\n r[\"$initial_\" + k(t)] = e;\n });\n }\n i && f(this._searchInfoFromReferrer(i), function (e, t) {\n r[\"$initial_\" + k(t)] = e;\n });\n return r;\n },\n timezone: function () {\n try {\n return Intl.DateTimeFormat().resolvedOptions().timeZone;\n } catch (e) {\n return;\n }\n },\n properties: function () {\n if (!d) return {};\n var [t, i] = _i.os(d);\n return m(E({\n $os: t,\n $os_version: i,\n $browser: _i.browser(d, navigator.vendor),\n $device: _i.device(d),\n $device_type: _i.deviceType(d),\n $timezone: _i.timezone()\n }), {\n $current_url: null == a ? void 0 : a.href,\n $host: null == a ? void 0 : a.host,\n $pathname: null == a ? void 0 : a.pathname,\n $raw_user_agent: d.length > 1e3 ? d.substring(0, 997) + \"...\" : d,\n $browser_version: _i.browserVersion(d, navigator.vendor),\n $browser_language: _i.browserLanguage(),\n $screen_height: null == e ? void 0 : e.screen.height,\n $screen_width: null == e ? void 0 : e.screen.width,\n $viewport_height: null == e ? void 0 : e.innerHeight,\n $viewport_width: null == e ? void 0 : e.innerWidth,\n $lib: \"web\",\n $lib_version: _.LIB_VERSION,\n $insert_id: Math.random().toString(36).substring(2, 10) + Math.random().toString(36).substring(2, 10),\n $time: Date.now() / 1e3\n });\n },\n people_properties: function () {\n if (!d) return {};\n var [e, t] = _i.os(d);\n return m(E({\n $os: e,\n $os_version: t,\n $browser: _i.browser(d, navigator.vendor)\n }), {\n $browser_version: _i.browserVersion(d, navigator.vendor)\n });\n }\n },\n pi = [\"cookie\", \"localstorage\", \"localstorage+cookie\", \"sessionstorage\", \"memory\"];\nclass vi {\n constructor(e) {\n this.config = e, this.props = {}, this.campaign_params_saved = !1, this.name = (e => {\n var t = \"\";\n return e.token && (t = e.token.replace(/\\+/g, \"PL\").replace(/\\//g, \"SL\").replace(/=/g, \"EQ\")), e.persistence_name ? \"ph_\" + e.persistence_name : \"ph_\" + t + \"_posthog\";\n })(e), this.storage = this.buildStorage(e), this.load(), e.debug && X.info(\"Persistence loaded\", e.persistence, ee({}, this.props)), this.update_config(e, e), this.save();\n }\n buildStorage(e) {\n -1 === pi.indexOf(e.persistence.toLowerCase()) && (X.critical(\"Unknown persistence type \" + e.persistence + \"; falling back to localStorage+cookie\"), e.persistence = \"localStorage+cookie\");\n var t = e.persistence.toLowerCase();\n return \"localstorage\" === t && st.is_supported() ? st : \"localstorage+cookie\" === t && nt.is_supported() ? nt : \"sessionstorage\" === t && ut.is_supported() ? ut : \"memory\" === t ? at : \"cookie\" === t ? tt : nt.is_supported() ? nt : tt;\n }\n properties() {\n var e = {};\n return f(this.props, function (t, i) {\n if (i === Se && q(t)) for (var s = Object.keys(t), n = 0; n < s.length; n++) e[\"$feature/\".concat(s[n])] = t[s[n]];else a = i, l = !1, (z(o = De) ? l : r && o.indexOf === r ? -1 != o.indexOf(a) : (f(o, function (e) {\n if (l || (l = e === a)) return p;\n }), l)) || (e[i] = t);\n var o, a, l;\n }), e;\n }\n load() {\n if (!this.disabled) {\n var e = this.storage.parse(this.name);\n e && (this.props = m({}, e));\n }\n }\n save() {\n this.disabled || this.storage.set(this.name, this.props, this.expire_days, this.cross_subdomain, this.secure, this.config.debug);\n }\n remove() {\n this.storage.remove(this.name, !1), this.storage.remove(this.name, !0);\n }\n clear() {\n this.remove(), this.props = {};\n }\n register_once(e, t, i) {\n if (q(e)) {\n H(t) && (t = \"None\"), this.expire_days = H(i) ? this.default_expiry : i;\n var s = !1;\n if (f(e, (e, i) => {\n this.props.hasOwnProperty(i) && this.props[i] !== t || (this.props[i] = e, s = !0);\n }), s) return this.save(), !0;\n }\n return !1;\n }\n register(e, t) {\n if (q(e)) {\n this.expire_days = H(t) ? this.default_expiry : t;\n var i = !1;\n if (f(e, (t, s) => {\n e.hasOwnProperty(s) && this.props[s] !== t && (this.props[s] = t, i = !0);\n }), i) return this.save(), !0;\n }\n return !1;\n }\n unregister(e) {\n e in this.props && (delete this.props[e], this.save());\n }\n update_campaign_params() {\n if (!this.campaign_params_saved) {\n var e = _i.campaignParams(this.config.custom_campaign_params);\n B(E(e)) || this.register(_i.campaignParams(this.config.custom_campaign_params)), this.campaign_params_saved = !0;\n }\n }\n update_search_keyword() {\n this.register(_i.searchInfo());\n }\n update_referrer_info() {\n this.register_once(_i.referrerInfo(), void 0);\n }\n set_initial_person_info() {\n this.props[$e] || this.props[Me] || this.register_once({\n [Ae]: _i.initialPersonInfo()\n }, void 0);\n }\n get_referrer_info() {\n return E({\n $referrer: this.props.$referrer,\n $referring_domain: this.props.$referring_domain\n });\n }\n get_initial_props() {\n var e = {};\n f([Me, $e], t => {\n var i = this.props[t];\n i && f(i, function (t, i) {\n e[\"$initial_\" + k(i)] = t;\n });\n });\n var t = this.props[Ae];\n if (t) {\n var i = _i.initialPersonPropsFromInfo(t);\n m(e, i);\n }\n return e;\n }\n safe_merge(e) {\n return f(this.props, function (t, i) {\n i in e || (e[i] = t);\n }), e;\n }\n update_config(e, t) {\n if (this.default_expiry = this.expire_days = e.cookie_expiration, this.set_disabled(e.disable_persistence), this.set_cross_subdomain(e.cross_subdomain_cookie), this.set_secure(e.secure_cookie), e.persistence !== t.persistence) {\n var i = this.buildStorage(e),\n s = this.props;\n this.clear(), this.storage = i, this.props = s, this.save();\n }\n }\n set_disabled(e) {\n this.disabled = e, this.disabled ? this.remove() : this.save();\n }\n set_cross_subdomain(e) {\n e !== this.cross_subdomain && (this.cross_subdomain = e, this.remove(), this.save());\n }\n get_cross_subdomain() {\n return !!this.cross_subdomain;\n }\n set_secure(e) {\n e !== this.secure && (this.secure = e, this.remove(), this.save());\n }\n set_event_timer(e, t) {\n var i = this.props[ne] || {};\n i[e] = t, this.props[ne] = i, this.save();\n }\n remove_event_timer(e) {\n var t = (this.props[ne] || {})[e];\n return H(t) || (delete this.props[ne][e], this.save()), t;\n }\n get_property(e) {\n return this.props[e];\n }\n set_property(e, t) {\n this.props[e] = t, this.save();\n }\n}\nfunction gi(e) {\n var t, i;\n return (null === (t = JSON.stringify(e, (i = [], function (e, t) {\n if (q(t)) {\n for (; i.length > 0 && i.at(-1) !== this;) i.pop();\n return i.includes(t) ? \"[Circular]\" : (i.push(t), t);\n }\n return t;\n }))) || void 0 === t ? void 0 : t.length) || 0;\n}\nfunction fi(e) {\n var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 6606028.8;\n if (e.size >= t && e.data.length > 1) {\n var i = Math.floor(e.data.length / 2),\n s = e.data.slice(0, i),\n r = e.data.slice(i);\n return [fi({\n size: gi(s),\n data: s,\n sessionId: e.sessionId,\n windowId: e.windowId\n }), fi({\n size: gi(r),\n data: r,\n sessionId: e.sessionId,\n windowId: e.windowId\n })].flatMap(e => e);\n }\n return [e];\n}\nvar mi = (e => (e[e.DomContentLoaded = 0] = \"DomContentLoaded\", e[e.Load = 1] = \"Load\", e[e.FullSnapshot = 2] = \"FullSnapshot\", e[e.IncrementalSnapshot = 3] = \"IncrementalSnapshot\", e[e.Meta = 4] = \"Meta\", e[e.Custom = 5] = \"Custom\", e[e.Plugin = 6] = \"Plugin\", e))(mi || {}),\n bi = (e => (e[e.Mutation = 0] = \"Mutation\", e[e.MouseMove = 1] = \"MouseMove\", e[e.MouseInteraction = 2] = \"MouseInteraction\", e[e.Scroll = 3] = \"Scroll\", e[e.ViewportResize = 4] = \"ViewportResize\", e[e.Input = 5] = \"Input\", e[e.TouchMove = 6] = \"TouchMove\", e[e.MediaInteraction = 7] = \"MediaInteraction\", e[e.StyleSheetRule = 8] = \"StyleSheetRule\", e[e.CanvasMutation = 9] = \"CanvasMutation\", e[e.Font = 10] = \"Font\", e[e.Log = 11] = \"Log\", e[e.Drag = 12] = \"Drag\", e[e.StyleDeclaration = 13] = \"StyleDeclaration\", e[e.Selection = 14] = \"Selection\", e[e.AdoptedStyleSheet = 15] = \"AdoptedStyleSheet\", e[e.CustomElement = 16] = \"CustomElement\", e))(bi || {});\nfunction yi(e) {\n var t;\n return e.id === Le || !(null === (t = e.closest) || void 0 === t || !t.call(e, \".toolbar-global-fade-container\"));\n}\nfunction wi(e) {\n return !!e && 1 === e.nodeType;\n}\nfunction Si(e, t) {\n return !!e && !!e.tagName && e.tagName.toLowerCase() === t.toLowerCase();\n}\nfunction Ei(e) {\n return !!e && 3 === e.nodeType;\n}\nfunction ki(e) {\n return !!e && 11 === e.nodeType;\n}\nfunction xi(e) {\n return e ? v(e).split(/\\s+/) : [];\n}\nfunction Ii(t) {\n var i = null == e ? void 0 : e.location.href;\n return !!(i && t && t.some(e => i.match(e)));\n}\nfunction Pi(e) {\n var t = \"\";\n switch (typeof e.className) {\n case \"string\":\n t = e.className;\n break;\n case \"object\":\n t = (e.className && \"baseVal\" in e.className ? e.className.baseVal : null) || e.getAttribute(\"class\") || \"\";\n break;\n default:\n t = \"\";\n }\n return xi(t);\n}\nfunction Fi(e) {\n return j(e) ? null : v(e).split(/(\\s+)/).filter(e => Ui(e)).join(\"\").replace(/[\\r\\n]/g, \" \").replace(/[ ]+/g, \" \").substring(0, 255);\n}\nfunction Ri(e) {\n var t = \"\";\n return Ai(e) && !Oi(e) && e.childNodes && e.childNodes.length && f(e.childNodes, function (e) {\n var i;\n Ei(e) && e.textContent && (t += null !== (i = Fi(e.textContent)) && void 0 !== i ? i : \"\");\n }), v(t);\n}\nfunction Ci(e) {\n return H(e.target) ? e.srcElement || null : null !== (t = e.target) && void 0 !== t && t.shadowRoot ? e.composedPath()[0] || null : e.target || null;\n var t;\n}\nvar Ti = [\"a\", \"button\", \"form\", \"input\", \"select\", \"textarea\", \"label\"];\nfunction $i(e) {\n var t = e.parentNode;\n return !(!t || !wi(t)) && t;\n}\nfunction Mi(t, i) {\n var s = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : void 0,\n r = arguments.length > 3 ? arguments[3] : void 0,\n n = arguments.length > 4 ? arguments[4] : void 0;\n if (!e || !t || Si(t, \"html\") || !wi(t)) return !1;\n if (null != s && s.url_allowlist && !Ii(s.url_allowlist)) return !1;\n if (null != s && s.url_ignorelist && Ii(s.url_ignorelist)) return !1;\n if (null != s && s.dom_event_allowlist) {\n var o = s.dom_event_allowlist;\n if (o && !o.some(e => i.type === e)) return !1;\n }\n for (var a = !1, l = [t], u = !0, c = t; c.parentNode && !Si(c, \"body\");) if (ki(c.parentNode)) l.push(c.parentNode.host), c = c.parentNode.host;else {\n if (!(u = $i(c))) break;\n if (r || Ti.indexOf(u.tagName.toLowerCase()) > -1) a = !0;else {\n var d = e.getComputedStyle(u);\n d && \"pointer\" === d.getPropertyValue(\"cursor\") && (a = !0);\n }\n l.push(u), c = u;\n }\n if (!function (e, t) {\n var i = null == t ? void 0 : t.element_allowlist;\n if (H(i)) return !0;\n var s = function (e) {\n if (i.some(t => e.tagName.toLowerCase() === t)) return {\n v: !0\n };\n };\n for (var r of e) {\n var n = s(r);\n if (\"object\" == typeof n) return n.v;\n }\n return !1;\n }(l, s)) return !1;\n if (!function (e, t) {\n var i = null == t ? void 0 : t.css_selector_allowlist;\n if (H(i)) return !0;\n var s = function (e) {\n if (i.some(t => e.matches(t))) return {\n v: !0\n };\n };\n for (var r of e) {\n var n = s(r);\n if (\"object\" == typeof n) return n.v;\n }\n return !1;\n }(l, s)) return !1;\n var h = e.getComputedStyle(t);\n if (h && \"pointer\" === h.getPropertyValue(\"cursor\") && \"click\" === i.type) return !0;\n var _ = t.tagName.toLowerCase();\n switch (_) {\n case \"html\":\n return !1;\n case \"form\":\n return (n || [\"submit\"]).indexOf(i.type) >= 0;\n case \"input\":\n case \"select\":\n case \"textarea\":\n return (n || [\"change\", \"click\"]).indexOf(i.type) >= 0;\n default:\n return a ? (n || [\"click\"]).indexOf(i.type) >= 0 : (n || [\"click\"]).indexOf(i.type) >= 0 && (Ti.indexOf(_) > -1 || \"true\" === t.getAttribute(\"contenteditable\"));\n }\n}\nfunction Ai(e) {\n for (var t = e; t.parentNode && !Si(t, \"body\"); t = t.parentNode) {\n var i = Pi(t);\n if (b(i, \"ph-sensitive\") || b(i, \"ph-no-capture\")) return !1;\n }\n if (b(Pi(e), \"ph-include\")) return !0;\n var s = e.type || \"\";\n if (U(s)) switch (s.toLowerCase()) {\n case \"hidden\":\n case \"password\":\n return !1;\n }\n var r = e.name || e.id || \"\";\n if (U(r)) {\n if (/^cc|cardnum|ccnum|creditcard|csc|cvc|cvv|exp|pass|pwd|routing|seccode|securitycode|securitynum|socialsec|socsec|ssn/i.test(r.replace(/[^a-zA-Z0-9]/g, \"\"))) return !1;\n }\n return !0;\n}\nfunction Oi(e) {\n return !!(Si(e, \"input\") && ![\"button\", \"checkbox\", \"submit\", \"reset\"].includes(e.type) || Si(e, \"select\") || Si(e, \"textarea\") || \"true\" === e.getAttribute(\"contenteditable\"));\n}\nvar Li = \"(4[0-9]{12}(?:[0-9]{3})?)|(5[1-5][0-9]{14})|(6(?:011|5[0-9]{2})[0-9]{12})|(3[47][0-9]{13})|(3(?:0[0-5]|[68][0-9])[0-9]{11})|((?:2131|1800|35[0-9]{3})[0-9]{11})\",\n Di = new RegExp(\"^(?:\".concat(Li, \")$\")),\n Ni = new RegExp(Li),\n qi = \"\\\\d{3}-?\\\\d{2}-?\\\\d{4}\",\n Bi = new RegExp(\"^(\".concat(qi, \")$\")),\n Hi = new RegExp(\"(\".concat(qi, \")\"));\nfunction Ui(e) {\n var t = !(arguments.length > 1 && void 0 !== arguments[1]) || arguments[1];\n if (j(e)) return !1;\n if (U(e)) {\n if (e = v(e), (t ? Di : Ni).test((e || \"\").replace(/[- ]/g, \"\"))) return !1;\n if ((t ? Bi : Hi).test(e)) return !1;\n }\n return !0;\n}\nfunction Wi(e) {\n var t = Ri(e);\n return Ui(t = \"\".concat(t, \" \").concat(zi(e)).trim()) ? t : \"\";\n}\nfunction zi(e) {\n var t = \"\";\n return e && e.childNodes && e.childNodes.length && f(e.childNodes, function (e) {\n var i;\n if (e && \"span\" === (null === (i = e.tagName) || void 0 === i ? void 0 : i.toLowerCase())) try {\n var s = Ri(e);\n t = \"\".concat(t, \" \").concat(s).trim(), e.childNodes && e.childNodes.length && (t = \"\".concat(t, \" \").concat(zi(e)).trim());\n } catch (e) {\n X.error(e);\n }\n }), t;\n}\nfunction ji(e) {\n return function (e) {\n var t = e.map(e => {\n var t,\n i,\n s = \"\";\n if (e.tag_name && (s += e.tag_name), e.attr_class) for (var r of (e.attr_class.sort(), e.attr_class)) s += \".\".concat(r.replace(/\"/g, \"\"));\n var n = ee(ee(ee(ee({}, e.text ? {\n text: e.text\n } : {}), {}, {\n \"nth-child\": null !== (t = e.nth_child) && void 0 !== t ? t : 0,\n \"nth-of-type\": null !== (i = e.nth_of_type) && void 0 !== i ? i : 0\n }, e.href ? {\n href: e.href\n } : {}), e.attr_id ? {\n attr_id: e.attr_id\n } : {}), e.attributes),\n o = {};\n return y(n).sort((e, t) => {\n var [i] = e,\n [s] = t;\n return i.localeCompare(s);\n }).forEach(e => {\n var [t, i] = e;\n return o[Vi(t.toString())] = Vi(i.toString());\n }), s += \":\", s += y(n).map(e => {\n var [t, i] = e;\n return \"\".concat(t, '=\"').concat(i, '\"');\n }).join(\"\");\n });\n return t.join(\";\");\n }(function (e) {\n return e.map(e => {\n var t,\n i,\n s = {\n text: null === (t = e.$el_text) || void 0 === t ? void 0 : t.slice(0, 400),\n tag_name: e.tag_name,\n href: null === (i = e.attr__href) || void 0 === i ? void 0 : i.slice(0, 2048),\n attr_class: Gi(e),\n attr_id: e.attr__id,\n nth_child: e.nth_child,\n nth_of_type: e.nth_of_type,\n attributes: {}\n };\n return y(e).filter(e => {\n var [t] = e;\n return 0 === t.indexOf(\"attr__\");\n }).forEach(e => {\n var [t, i] = e;\n return s.attributes[t] = i;\n }), s;\n });\n }(e));\n}\nfunction Vi(e) {\n return e.replace(/\"|\\\\\"/g, '\\\\\"');\n}\nfunction Gi(e) {\n var t = e.attr__class;\n return t ? D(t) ? t : xi(t) : void 0;\n}\nvar Qi = \"[SessionRecording]\",\n Ji = \"redacted\",\n Yi = {\n initiatorTypes: [\"audio\", \"beacon\", \"body\", \"css\", \"early-hint\", \"embed\", \"fetch\", \"frame\", \"iframe\", \"icon\", \"image\", \"img\", \"input\", \"link\", \"navigation\", \"object\", \"ping\", \"script\", \"track\", \"video\", \"xmlhttprequest\"],\n maskRequestFn: e => e,\n recordHeaders: !1,\n recordBody: !1,\n recordInitialRequests: !1,\n recordPerformance: !1,\n performanceEntryTypeToObserve: [\"first-input\", \"navigation\", \"paint\", \"resource\"],\n payloadSizeLimitBytes: 1e6,\n payloadHostDenyList: [\".lr-ingest.io\", \".ingest.sentry.io\"]\n },\n Xi = [\"authorization\", \"x-forwarded-for\", \"authorization\", \"cookie\", \"set-cookie\", \"x-api-key\", \"x-real-ip\", \"remote-addr\", \"forwarded\", \"proxy-authorization\", \"x-csrf-token\", \"x-csrftoken\", \"x-xsrf-token\"],\n Ki = [\"password\", \"secret\", \"passwd\", \"api_key\", \"apikey\", \"auth\", \"credentials\", \"mysql_pwd\", \"privatekey\", \"private_key\", \"token\"],\n Zi = [\"/s/\", \"/e/\", \"/i/\"];\nfunction es(e, t, i, s) {\n if (j(e)) return e;\n var r = (null == t ? void 0 : t[\"content-length\"]) || function (e) {\n return new Blob([e]).size;\n }(e);\n return U(r) && (r = parseInt(r)), r > i ? Qi + \" \".concat(s, \" body too large to record (\").concat(r, \" bytes)\") : e;\n}\nfunction ts(e, t) {\n if (j(e)) return e;\n var i = e;\n return Ui(i, !1) || (i = Qi + \" \" + t + \" body \" + Ji), f(Ki, e => {\n var s, r;\n null !== (s = i) && void 0 !== s && s.length && -1 !== (null === (r = i) || void 0 === r ? void 0 : r.indexOf(e)) && (i = Qi + \" \" + t + \" body \" + Ji + \" as might contain: \" + e);\n }), i;\n}\nvar is = (e, t) => {\n var i,\n s,\n r,\n n = {\n payloadSizeLimitBytes: Yi.payloadSizeLimitBytes,\n performanceEntryTypeToObserve: [...Yi.performanceEntryTypeToObserve],\n payloadHostDenyList: [...(t.payloadHostDenyList || []), ...Yi.payloadHostDenyList]\n },\n o = !1 !== e.session_recording.recordHeaders && t.recordHeaders,\n a = !1 !== e.session_recording.recordBody && t.recordBody,\n l = !1 !== e.capture_performance && t.recordPerformance,\n u = (i = n, r = Math.min(1e6, null !== (s = i.payloadSizeLimitBytes) && void 0 !== s ? s : 1e6), e => (null != e && e.requestBody && (e.requestBody = es(e.requestBody, e.requestHeaders, r, \"Request\")), null != e && e.responseBody && (e.responseBody = es(e.responseBody, e.responseHeaders, r, \"Response\")), e)),\n c = e => {\n return u((e => {\n var t = dt(e.name);\n if (!(t && t.pathname && Zi.some(e => 0 === t.pathname.indexOf(e)))) return e;\n })((i = (t = e).requestHeaders, j(i) || f(Object.keys(null != i ? i : {}), e => {\n Xi.includes(e.toLowerCase()) && (i[e] = Ji);\n }), t)));\n var t, i;\n },\n d = N(e.session_recording.maskNetworkRequestFn);\n return d && N(e.session_recording.maskCapturedNetworkRequestFn) && X.warn(\"Both `maskNetworkRequestFn` and `maskCapturedNetworkRequestFn` are defined. `maskNetworkRequestFn` will be ignored.\"), d && (e.session_recording.maskCapturedNetworkRequestFn = t => {\n var i = e.session_recording.maskNetworkRequestFn({\n url: t.name\n });\n return ee(ee({}, t), {}, {\n name: null == i ? void 0 : i.url\n });\n }), n.maskRequestFn = N(e.session_recording.maskCapturedNetworkRequestFn) ? t => {\n var i,\n s,\n r,\n n = c(t);\n return n && null !== (i = null === (s = (r = e.session_recording).maskCapturedNetworkRequestFn) || void 0 === s ? void 0 : s.call(r, n)) && void 0 !== i ? i : void 0;\n } : e => function (e) {\n if (!H(e)) return e.requestBody = ts(e.requestBody, \"Request\"), e.responseBody = ts(e.responseBody, \"Response\"), e;\n }(c(e)), ee(ee(ee({}, Yi), n), {}, {\n recordHeaders: o,\n recordBody: a,\n recordPerformance: l,\n recordInitialRequests: l\n });\n};\nfunction ss(e, t, i, s) {\n return t > i && (X.warn(\"min cannot be greater than max.\"), t = i), V(e) ? e > i ? (s && X.warn(s + \" cannot be greater than max: \" + i + \". Using max value instead.\"), i) : e < t ? (s && X.warn(s + \" cannot be less than min: \" + t + \". Using min value instead.\"), t) : e : (s && X.warn(s + \" must be a number. Defaulting to max value:\" + i), i);\n}\nclass rs {\n constructor(e) {\n var t,\n i,\n s = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};\n te(this, \"bucketSize\", 100), te(this, \"refillRate\", 10), te(this, \"mutationBuckets\", {}), te(this, \"loggedTracker\", {}), te(this, \"refillBuckets\", () => {\n Object.keys(this.mutationBuckets).forEach(e => {\n this.mutationBuckets[e] = this.mutationBuckets[e] + this.refillRate, this.mutationBuckets[e] >= this.bucketSize && delete this.mutationBuckets[e];\n });\n }), te(this, \"getNodeOrRelevantParent\", e => {\n var t = this.rrweb.mirror.getNode(e);\n if (\"svg\" !== (null == t ? void 0 : t.nodeName) && t instanceof Element) {\n var i = t.closest(\"svg\");\n if (i) return [this.rrweb.mirror.getId(i), i];\n }\n return [e, t];\n }), te(this, \"numberOfChanges\", e => {\n var t, i, s, r, n, o, a, l;\n return (null !== (t = null === (i = e.removes) || void 0 === i ? void 0 : i.length) && void 0 !== t ? t : 0) + (null !== (s = null === (r = e.attributes) || void 0 === r ? void 0 : r.length) && void 0 !== s ? s : 0) + (null !== (n = null === (o = e.texts) || void 0 === o ? void 0 : o.length) && void 0 !== n ? n : 0) + (null !== (a = null === (l = e.adds) || void 0 === l ? void 0 : l.length) && void 0 !== a ? a : 0);\n }), te(this, \"throttleMutations\", e => {\n if (3 !== e.type || 0 !== e.data.source) return e;\n var t = e.data,\n i = this.numberOfChanges(t);\n t.attributes && (t.attributes = t.attributes.filter(e => {\n var t,\n i,\n s,\n [r, n] = this.getNodeOrRelevantParent(e.id);\n if (0 === this.mutationBuckets[r]) return !1;\n (this.mutationBuckets[r] = null !== (t = this.mutationBuckets[r]) && void 0 !== t ? t : this.bucketSize, this.mutationBuckets[r] = Math.max(this.mutationBuckets[r] - 1, 0), 0 === this.mutationBuckets[r]) && (this.loggedTracker[r] || (this.loggedTracker[r] = !0, null === (i = (s = this.options).onBlockedNode) || void 0 === i || i.call(s, r, n)));\n return e;\n }));\n var s = this.numberOfChanges(t);\n return 0 !== s || i === s ? e : void 0;\n }), this.rrweb = e, this.options = s, this.refillRate = ss(null !== (t = this.options.refillRate) && void 0 !== t ? t : this.refillRate, 0, 100, \"mutation throttling refill rate\"), this.bucketSize = ss(null !== (i = this.options.bucketSize) && void 0 !== i ? i : this.bucketSize, 0, 100, \"mutation throttling bucket size\"), setInterval(() => {\n this.refillBuckets();\n }, 1e3);\n }\n}\nvar ns = Uint8Array,\n os = Uint16Array,\n as = Uint32Array,\n ls = new ns([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, 0, 0, 0]),\n us = new ns([0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 0, 0]),\n cs = new ns([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]),\n ds = function (e, t) {\n for (var i = new os(31), s = 0; s < 31; ++s) i[s] = t += 1 << e[s - 1];\n var r = new as(i[30]);\n for (s = 1; s < 30; ++s) for (var n = i[s]; n < i[s + 1]; ++n) r[n] = n - i[s] << 5 | s;\n return [i, r];\n },\n hs = ds(ls, 2),\n _s = hs[0],\n ps = hs[1];\n_s[28] = 258, ps[258] = 28;\nfor (var vs = ds(us, 0)[1], gs = new os(32768), fs = 0; fs < 32768; ++fs) {\n var ms = (43690 & fs) >>> 1 | (21845 & fs) << 1;\n ms = (61680 & (ms = (52428 & ms) >>> 2 | (13107 & ms) << 2)) >>> 4 | (3855 & ms) << 4, gs[fs] = ((65280 & ms) >>> 8 | (255 & ms) << 8) >>> 1;\n}\nvar bs = function (e, t, i) {\n for (var s = e.length, r = 0, n = new os(t); r < s; ++r) ++n[e[r] - 1];\n var o,\n a = new os(t);\n for (r = 0; r < t; ++r) a[r] = a[r - 1] + n[r - 1] << 1;\n if (i) {\n o = new os(1 << t);\n var l = 15 - t;\n for (r = 0; r < s; ++r) if (e[r]) for (var u = r << 4 | e[r], c = t - e[r], d = a[e[r] - 1]++ << c, h = d | (1 << c) - 1; d <= h; ++d) o[gs[d] >>> l] = u;\n } else for (o = new os(s), r = 0; r < s; ++r) o[r] = gs[a[e[r] - 1]++] >>> 15 - e[r];\n return o;\n },\n ys = new ns(288);\nfor (fs = 0; fs < 144; ++fs) ys[fs] = 8;\nfor (fs = 144; fs < 256; ++fs) ys[fs] = 9;\nfor (fs = 256; fs < 280; ++fs) ys[fs] = 7;\nfor (fs = 280; fs < 288; ++fs) ys[fs] = 8;\nvar ws = new ns(32);\nfor (fs = 0; fs < 32; ++fs) ws[fs] = 5;\nvar Ss = bs(ys, 9, 0),\n Es = bs(ws, 5, 0),\n ks = function (e) {\n return (e / 8 >> 0) + (7 & e && 1);\n },\n xs = function (e, t, i) {\n (null == i || i > e.length) && (i = e.length);\n var s = new (e instanceof os ? os : e instanceof as ? as : ns)(i - t);\n return s.set(e.subarray(t, i)), s;\n },\n Is = function (e, t, i) {\n i <<= 7 & t;\n var s = t / 8 >> 0;\n e[s] |= i, e[s + 1] |= i >>> 8;\n },\n Ps = function (e, t, i) {\n i <<= 7 & t;\n var s = t / 8 >> 0;\n e[s] |= i, e[s + 1] |= i >>> 8, e[s + 2] |= i >>> 16;\n },\n Fs = function (e, t) {\n for (var i = [], s = 0; s < e.length; ++s) e[s] && i.push({\n s: s,\n f: e[s]\n });\n var r = i.length,\n n = i.slice();\n if (!r) return [new ns(0), 0];\n if (1 == r) {\n var o = new ns(i[0].s + 1);\n return o[i[0].s] = 1, [o, 1];\n }\n i.sort(function (e, t) {\n return e.f - t.f;\n }), i.push({\n s: -1,\n f: 25001\n });\n var a = i[0],\n l = i[1],\n u = 0,\n c = 1,\n d = 2;\n for (i[0] = {\n s: -1,\n f: a.f + l.f,\n l: a,\n r: l\n }; c != r - 1;) a = i[i[u].f < i[d].f ? u++ : d++], l = i[u != c && i[u].f < i[d].f ? u++ : d++], i[c++] = {\n s: -1,\n f: a.f + l.f,\n l: a,\n r: l\n };\n var h = n[0].s;\n for (s = 1; s < r; ++s) n[s].s > h && (h = n[s].s);\n var _ = new os(h + 1),\n p = Rs(i[c - 1], _, 0);\n if (p > t) {\n s = 0;\n var v = 0,\n g = p - t,\n f = 1 << g;\n for (n.sort(function (e, t) {\n return _[t.s] - _[e.s] || e.f - t.f;\n }); s < r; ++s) {\n var m = n[s].s;\n if (!(_[m] > t)) break;\n v += f - (1 << p - _[m]), _[m] = t;\n }\n for (v >>>= g; v > 0;) {\n var b = n[s].s;\n _[b] < t ? v -= 1 << t - _[b]++ - 1 : ++s;\n }\n for (; s >= 0 && v; --s) {\n var y = n[s].s;\n _[y] == t && (--_[y], ++v);\n }\n p = t;\n }\n return [new ns(_), p];\n },\n Rs = function (e, t, i) {\n return -1 == e.s ? Math.max(Rs(e.l, t, i + 1), Rs(e.r, t, i + 1)) : t[e.s] = i;\n },\n Cs = function (e) {\n for (var t = e.length; t && !e[--t];);\n for (var i = new os(++t), s = 0, r = e[0], n = 1, o = function (e) {\n i[s++] = e;\n }, a = 1; a <= t; ++a) if (e[a] == r && a != t) ++n;else {\n if (!r && n > 2) {\n for (; n > 138; n -= 138) o(32754);\n n > 2 && (o(n > 10 ? n - 11 << 5 | 28690 : n - 3 << 5 | 12305), n = 0);\n } else if (n > 3) {\n for (o(r), --n; n > 6; n -= 6) o(8304);\n n > 2 && (o(n - 3 << 5 | 8208), n = 0);\n }\n for (; n--;) o(r);\n n = 1, r = e[a];\n }\n return [i.subarray(0, s), t];\n },\n Ts = function (e, t) {\n for (var i = 0, s = 0; s < t.length; ++s) i += e[s] * t[s];\n return i;\n },\n $s = function (e, t, i) {\n var s = i.length,\n r = ks(t + 2);\n e[r] = 255 & s, e[r + 1] = s >>> 8, e[r + 2] = 255 ^ e[r], e[r + 3] = 255 ^ e[r + 1];\n for (var n = 0; n < s; ++n) e[r + n + 4] = i[n];\n return 8 * (r + 4 + s);\n },\n Ms = function (e, t, i, s, r, n, o, a, l, u, c) {\n Is(t, c++, i), ++r[256];\n for (var d = Fs(r, 15), h = d[0], _ = d[1], p = Fs(n, 15), v = p[0], g = p[1], f = Cs(h), m = f[0], b = f[1], y = Cs(v), w = y[0], S = y[1], E = new os(19), k = 0; k < m.length; ++k) E[31 & m[k]]++;\n for (k = 0; k < w.length; ++k) E[31 & w[k]]++;\n for (var x = Fs(E, 7), I = x[0], P = x[1], F = 19; F > 4 && !I[cs[F - 1]]; --F);\n var R,\n C,\n T,\n $,\n M = u + 5 << 3,\n A = Ts(r, ys) + Ts(n, ws) + o,\n O = Ts(r, h) + Ts(n, v) + o + 14 + 3 * F + Ts(E, I) + (2 * E[16] + 3 * E[17] + 7 * E[18]);\n if (M <= A && M <= O) return $s(t, c, e.subarray(l, l + u));\n if (Is(t, c, 1 + (O < A)), c += 2, O < A) {\n R = bs(h, _, 0), C = h, T = bs(v, g, 0), $ = v;\n var L = bs(I, P, 0);\n Is(t, c, b - 257), Is(t, c + 5, S - 1), Is(t, c + 10, F - 4), c += 14;\n for (k = 0; k < F; ++k) Is(t, c + 3 * k, I[cs[k]]);\n c += 3 * F;\n for (var D = [m, w], N = 0; N < 2; ++N) {\n var q = D[N];\n for (k = 0; k < q.length; ++k) {\n var B = 31 & q[k];\n Is(t, c, L[B]), c += I[B], B > 15 && (Is(t, c, q[k] >>> 5 & 127), c += q[k] >>> 12);\n }\n }\n } else R = Ss, C = ys, T = Es, $ = ws;\n for (k = 0; k < a; ++k) if (s[k] > 255) {\n B = s[k] >>> 18 & 31;\n Ps(t, c, R[B + 257]), c += C[B + 257], B > 7 && (Is(t, c, s[k] >>> 23 & 31), c += ls[B]);\n var H = 31 & s[k];\n Ps(t, c, T[H]), c += $[H], H > 3 && (Ps(t, c, s[k] >>> 5 & 8191), c += us[H]);\n } else Ps(t, c, R[s[k]]), c += C[s[k]];\n return Ps(t, c, R[256]), c + C[256];\n },\n As = new as([65540, 131080, 131088, 131104, 262176, 1048704, 1048832, 2114560, 2117632]),\n Os = function () {\n for (var e = new as(256), t = 0; t < 256; ++t) {\n for (var i = t, s = 9; --s;) i = (1 & i && 3988292384) ^ i >>> 1;\n e[t] = i;\n }\n return e;\n }(),\n Ls = function () {\n var e = 4294967295;\n return {\n p: function (t) {\n for (var i = e, s = 0; s < t.length; ++s) i = Os[255 & i ^ t[s]] ^ i >>> 8;\n e = i;\n },\n d: function () {\n return 4294967295 ^ e;\n }\n };\n },\n Ds = function (e, t, i, s, r) {\n return function (e, t, i, s, r, n) {\n var o = e.length,\n a = new ns(s + o + 5 * (1 + Math.floor(o / 7e3)) + r),\n l = a.subarray(s, a.length - r),\n u = 0;\n if (!t || o < 8) for (var c = 0; c <= o; c += 65535) {\n var d = c + 65535;\n d < o ? u = $s(l, u, e.subarray(c, d)) : (l[c] = n, u = $s(l, u, e.subarray(c, o)));\n } else {\n for (var h = As[t - 1], _ = h >>> 13, p = 8191 & h, v = (1 << i) - 1, g = new os(32768), f = new os(v + 1), m = Math.ceil(i / 3), b = 2 * m, y = function (t) {\n return (e[t] ^ e[t + 1] << m ^ e[t + 2] << b) & v;\n }, w = new as(25e3), S = new os(288), E = new os(32), k = 0, x = 0, I = (c = 0, 0), P = 0, F = 0; c < o; ++c) {\n var R = y(c),\n C = 32767 & c,\n T = f[R];\n if (g[C] = T, f[R] = C, P <= c) {\n var $ = o - c;\n if ((k > 7e3 || I > 24576) && $ > 423) {\n u = Ms(e, l, 0, w, S, E, x, I, F, c - F, u), I = k = x = 0, F = c;\n for (var M = 0; M < 286; ++M) S[M] = 0;\n for (M = 0; M < 30; ++M) E[M] = 0;\n }\n var A = 2,\n O = 0,\n L = p,\n D = C - T & 32767;\n if ($ > 2 && R == y(c - D)) for (var N = Math.min(_, $) - 1, q = Math.min(32767, c), B = Math.min(258, $); D <= q && --L && C != T;) {\n if (e[c + A] == e[c + A - D]) {\n for (var H = 0; H < B && e[c + H] == e[c + H - D]; ++H);\n if (H > A) {\n if (A = H, O = D, H > N) break;\n var U = Math.min(D, H - 2),\n W = 0;\n for (M = 0; M < U; ++M) {\n var z = c - D + M + 32768 & 32767,\n j = z - g[z] + 32768 & 32767;\n j > W && (W = j, T = z);\n }\n }\n }\n D += (C = T) - (T = g[C]) + 32768 & 32767;\n }\n if (O) {\n w[I++] = 268435456 | ps[A] << 18 | vs[O];\n var V = 31 & ps[A],\n G = 31 & vs[O];\n x += ls[V] + us[G], ++S[257 + V], ++E[G], P = c + A, ++k;\n } else w[I++] = e[c], ++S[e[c]];\n }\n }\n u = Ms(e, l, n, w, S, E, x, I, F, c - F, u);\n }\n return xs(a, 0, s + ks(u) + r);\n }(e, null == t.level ? 6 : t.level, null == t.mem ? Math.ceil(1.5 * Math.max(8, Math.min(13, Math.log(e.length)))) : 12 + t.mem, i, s, !r);\n },\n Ns = function (e, t, i) {\n for (; i; ++t) e[t] = i, i >>>= 8;\n },\n qs = function (e, t) {\n var i = t.filename;\n if (e[0] = 31, e[1] = 139, e[2] = 8, e[8] = t.level < 2 ? 4 : 9 == t.level ? 2 : 0, e[9] = 3, 0 != t.mtime && Ns(e, 4, Math.floor(new Date(t.mtime || Date.now()) / 1e3)), i) {\n e[3] = 8;\n for (var s = 0; s <= i.length; ++s) e[s + 10] = i.charCodeAt(s);\n }\n },\n Bs = function (e) {\n return 10 + (e.filename && e.filename.length + 1 || 0);\n };\nfunction Hs(e, t) {\n void 0 === t && (t = {});\n var i = Ls(),\n s = e.length;\n i.p(e);\n var r = Ds(e, t, Bs(t), 8),\n n = r.length;\n return qs(r, t), Ns(r, n - 8, i.d()), Ns(r, n - 4, s), r;\n}\nfunction Us(e, t) {\n var i = e.length;\n if (\"undefined\" != typeof TextEncoder) return new TextEncoder().encode(e);\n for (var s = new ns(e.length + (e.length >>> 1)), r = 0, n = function (e) {\n s[r++] = e;\n }, o = 0; o < i; ++o) {\n if (r + 5 > s.length) {\n var a = new ns(r + 8 + (i - o << 1));\n a.set(s), s = a;\n }\n var l = e.charCodeAt(o);\n l < 128 || t ? n(l) : l < 2048 ? (n(192 | l >>> 6), n(128 | 63 & l)) : l > 55295 && l < 57344 ? (n(240 | (l = 65536 + (1047552 & l) | 1023 & e.charCodeAt(++o)) >>> 18), n(128 | l >>> 12 & 63), n(128 | l >>> 6 & 63), n(128 | 63 & l)) : (n(224 | l >>> 12), n(128 | l >>> 6 & 63), n(128 | 63 & l));\n }\n return xs(s, 0, r);\n}\nvar Ws = 3e5,\n zs = [bi.MouseMove, bi.MouseInteraction, bi.Scroll, bi.ViewportResize, bi.Input, bi.TouchMove, bi.MediaInteraction, bi.Drag],\n js = e => ({\n rrwebMethod: e,\n enqueuedAt: Date.now(),\n attempt: 1\n }),\n Vs = \"[SessionRecording]\";\nfunction Gs(e) {\n return function (e, t) {\n for (var i = \"\", s = 0; s < e.length;) {\n var r = e[s++];\n r < 128 || t ? i += String.fromCharCode(r) : r < 224 ? i += String.fromCharCode((31 & r) << 6 | 63 & e[s++]) : r < 240 ? i += String.fromCharCode((15 & r) << 12 | (63 & e[s++]) << 6 | 63 & e[s++]) : (r = ((15 & r) << 18 | (63 & e[s++]) << 12 | (63 & e[s++]) << 6 | 63 & e[s++]) - 65536, i += String.fromCharCode(55296 | r >> 10, 56320 | 1023 & r));\n }\n return i;\n }(Hs(Us(JSON.stringify(e))), !0);\n}\nfunction Qs(e) {\n return e.type === mi.Custom && \"sessionIdle\" === e.data.tag;\n}\nfunction Js(e, t) {\n return t.some(t => \"regex\" === t.matching && new RegExp(t.url).test(e));\n}\nclass Ys {\n get sessionIdleThresholdMilliseconds() {\n return this.instance.config.session_recording.session_idle_threshold_ms || 3e5;\n }\n get rrwebRecord() {\n var e, t;\n return null == h || null === (e = h.__PosthogExtensions__) || void 0 === e || null === (t = e.rrweb) || void 0 === t ? void 0 : t.record;\n }\n get started() {\n return this._captureStarted;\n }\n get sessionManager() {\n if (!this.instance.sessionManager) throw new Error(Vs + \" must be started with a valid sessionManager.\");\n return this.instance.sessionManager;\n }\n get fullSnapshotIntervalMillis() {\n var e, t;\n return \"trigger_pending\" === this.triggerStatus ? 6e4 : null !== (e = null === (t = this.instance.config.session_recording) || void 0 === t ? void 0 : t.full_snapshot_interval_millis) && void 0 !== e ? e : Ws;\n }\n get isSampled() {\n var e = this.instance.get_property(be);\n return G(e) ? e : null;\n }\n get sessionDuration() {\n var e,\n t,\n i = null === (e = this.buffer) || void 0 === e ? void 0 : e.data[(null === (t = this.buffer) || void 0 === t ? void 0 : t.data.length) - 1],\n {\n sessionStartTimestamp: s\n } = this.sessionManager.checkAndGetSessionAndWindowId(!0);\n return i ? i.timestamp - s : null;\n }\n get isRecordingEnabled() {\n var t = !!this.instance.get_property(he),\n i = !this.instance.config.disable_session_recording;\n return e && t && i;\n }\n get isConsoleLogCaptureEnabled() {\n var e = !!this.instance.get_property(_e),\n t = this.instance.config.enable_recording_console_log;\n return null != t ? t : e;\n }\n get canvasRecording() {\n var e,\n t,\n i,\n s,\n r,\n n,\n o = this.instance.config.session_recording.captureCanvas,\n a = this.instance.get_property(ve),\n l = null !== (e = null !== (t = null == o ? void 0 : o.recordCanvas) && void 0 !== t ? t : null == a ? void 0 : a.enabled) && void 0 !== e && e,\n u = null !== (i = null !== (s = null == o ? void 0 : o.canvasFps) && void 0 !== s ? s : null == a ? void 0 : a.fps) && void 0 !== i ? i : 0,\n c = null !== (r = null !== (n = null == o ? void 0 : o.canvasQuality) && void 0 !== n ? n : null == a ? void 0 : a.quality) && void 0 !== r ? r : 0;\n return {\n enabled: l,\n fps: ss(u, 0, 12, \"canvas recording fps\"),\n quality: ss(c, 0, 1, \"canvas recording quality\")\n };\n }\n get networkPayloadCapture() {\n var e,\n t,\n i = this.instance.get_property(pe),\n s = {\n recordHeaders: null === (e = this.instance.config.session_recording) || void 0 === e ? void 0 : e.recordHeaders,\n recordBody: null === (t = this.instance.config.session_recording) || void 0 === t ? void 0 : t.recordBody\n },\n r = (null == s ? void 0 : s.recordHeaders) || (null == i ? void 0 : i.recordHeaders),\n n = (null == s ? void 0 : s.recordBody) || (null == i ? void 0 : i.recordBody),\n o = q(this.instance.config.capture_performance) ? this.instance.config.capture_performance.network_timing : this.instance.config.capture_performance,\n a = !!(G(o) ? o : null == i ? void 0 : i.capturePerformance);\n return r || n || a ? {\n recordHeaders: r,\n recordBody: n,\n recordPerformance: a\n } : void 0;\n }\n get sampleRate() {\n var e = this.instance.get_property(ge);\n return V(e) ? e : null;\n }\n get minimumDuration() {\n var e = this.instance.get_property(fe);\n return V(e) ? e : null;\n }\n get status() {\n return this.receivedDecide ? this.isRecordingEnabled ? j(this._linkedFlag) || this._linkedFlagSeen ? \"trigger_pending\" === this.triggerStatus ? \"buffering\" : this._urlBlocked ? \"paused\" : G(this.isSampled) ? this.isSampled ? \"sampled\" : \"disabled\" : \"active\" : \"buffering\" : \"disabled\" : \"buffering\";\n }\n get urlTriggerStatus() {\n var e;\n return 0 === this._urlTriggers.length ? \"trigger_disabled\" : (null === (e = this.instance) || void 0 === e ? void 0 : e.get_property(ye)) === this.sessionId ? \"trigger_activated\" : \"trigger_pending\";\n }\n get eventTriggerStatus() {\n var e;\n return 0 === this._eventTriggers.length ? \"trigger_disabled\" : (null === (e = this.instance) || void 0 === e ? void 0 : e.get_property(we)) === this.sessionId ? \"trigger_activated\" : \"trigger_pending\";\n }\n get triggerStatus() {\n var e = \"trigger_activated\" === this.eventTriggerStatus || \"trigger_activated\" === this.urlTriggerStatus,\n t = \"trigger_pending\" === this.eventTriggerStatus || \"trigger_pending\" === this.urlTriggerStatus;\n return e ? \"trigger_activated\" : t ? \"trigger_pending\" : \"trigger_disabled\";\n }\n constructor(e) {\n if (te(this, \"queuedRRWebEvents\", []), te(this, \"isIdle\", !1), te(this, \"_linkedFlagSeen\", !1), te(this, \"_lastActivityTimestamp\", Date.now()), te(this, \"_linkedFlag\", null), te(this, \"_removePageViewCaptureHook\", void 0), te(this, \"_onSessionIdListener\", void 0), te(this, \"_persistDecideOnSessionListener\", void 0), te(this, \"_samplingSessionListener\", void 0), te(this, \"_urlTriggers\", []), te(this, \"_urlBlocklist\", []), te(this, \"_urlBlocked\", !1), te(this, \"_eventTriggers\", []), te(this, \"_removeEventTriggerCaptureHook\", void 0), te(this, \"_forceAllowLocalhostNetworkCapture\", !1), te(this, \"_onBeforeUnload\", () => {\n this._flushBuffer();\n }), te(this, \"_onOffline\", () => {\n this._tryAddCustomEvent(\"browser offline\", {});\n }), te(this, \"_onOnline\", () => {\n this._tryAddCustomEvent(\"browser online\", {});\n }), te(this, \"_onVisibilityChange\", () => {\n if (null != o && o.visibilityState) {\n var e = \"window \" + o.visibilityState;\n this._tryAddCustomEvent(e, {});\n }\n }), this.instance = e, this._captureStarted = !1, this._endpoint = \"/s/\", this.stopRrweb = void 0, this.receivedDecide = !1, !this.instance.sessionManager) throw X.error(Vs + \" started without valid sessionManager\"), new Error(Vs + \" started without valid sessionManager. This is a bug.\");\n var {\n sessionId: t,\n windowId: i\n } = this.sessionManager.checkAndGetSessionAndWindowId();\n this.sessionId = t, this.windowId = i, this.buffer = this.clearBuffer(), this.sessionIdleThresholdMilliseconds >= this.sessionManager.sessionTimeoutMs && X.warn(Vs + \" session_idle_threshold_ms (\".concat(this.sessionIdleThresholdMilliseconds, \") is greater than the session timeout (\").concat(this.sessionManager.sessionTimeoutMs, \"). Session will never be detected as idle\"));\n }\n startIfEnabledOrStop(t) {\n this.isRecordingEnabled ? (this._startCapture(t), null == e || e.addEventListener(\"beforeunload\", this._onBeforeUnload), null == e || e.addEventListener(\"offline\", this._onOffline), null == e || e.addEventListener(\"online\", this._onOnline), null == e || e.addEventListener(\"visibilitychange\", this._onVisibilityChange), this._setupSampling(), this._addEventTriggerListener(), j(this._removePageViewCaptureHook) && (this._removePageViewCaptureHook = this.instance._addCaptureHook(t => {\n try {\n if (\"$pageview\" === t) {\n var i = e ? this._maskUrl(e.location.href) : \"\";\n if (!i) return;\n this._tryAddCustomEvent(\"$pageview\", {\n href: i\n });\n }\n } catch (e) {\n X.error(\"Could not add $pageview to rrweb session\", e);\n }\n })), this._onSessionIdListener || (this._onSessionIdListener = this.sessionManager.onSessionId((e, t, i) => {\n var s, r, n, o;\n i && (this._tryAddCustomEvent(\"$session_id_change\", {\n sessionId: e,\n windowId: t,\n changeReason: i\n }), null === (s = this.instance) || void 0 === s || null === (r = s.persistence) || void 0 === r || r.unregister(we), null === (n = this.instance) || void 0 === n || null === (o = n.persistence) || void 0 === o || o.unregister(ye));\n }))) : this.stopRecording();\n }\n stopRecording() {\n var t, i, s, r;\n this._captureStarted && this.stopRrweb && (this.stopRrweb(), this.stopRrweb = void 0, this._captureStarted = !1, null == e || e.removeEventListener(\"beforeunload\", this._onBeforeUnload), null == e || e.removeEventListener(\"offline\", this._onOffline), null == e || e.removeEventListener(\"online\", this._onOnline), null == e || e.removeEventListener(\"visibilitychange\", this._onVisibilityChange), this.clearBuffer(), clearInterval(this._fullSnapshotTimer), null === (t = this._removePageViewCaptureHook) || void 0 === t || t.call(this), this._removePageViewCaptureHook = void 0, null === (i = this._removeEventTriggerCaptureHook) || void 0 === i || i.call(this), this._removeEventTriggerCaptureHook = void 0, null === (s = this._onSessionIdListener) || void 0 === s || s.call(this), this._onSessionIdListener = void 0, null === (r = this._samplingSessionListener) || void 0 === r || r.call(this), this._samplingSessionListener = void 0, X.info(Vs + \" stopped\"));\n }\n makeSamplingDecision(e) {\n var t,\n i = this.sessionId !== e,\n s = this.sampleRate;\n if (V(s)) {\n var r,\n n = this.isSampled,\n o = i || !G(n);\n if (o) r = Math.random() < s;else r = n;\n o && (r ? this._reportStarted(\"sampled\") : X.warn(Vs + \" Sample rate (\".concat(s, \") has determined that this sessionId (\").concat(e, \") will not be sent to the server.\")), this._tryAddCustomEvent(\"samplingDecisionMade\", {\n sampleRate: s,\n isSampled: r\n })), null === (t = this.instance.persistence) || void 0 === t || t.register({\n [be]: r\n });\n } else {\n var a;\n null === (a = this.instance.persistence) || void 0 === a || a.register({\n [be]: null\n });\n }\n }\n afterDecideResponse(e) {\n var t, i, s, r, n, o;\n (this._persistDecideResponse(e), this._linkedFlag = (null === (t = e.sessionRecording) || void 0 === t ? void 0 : t.linkedFlag) || null, null !== (i = e.sessionRecording) && void 0 !== i && i.endpoint) && (this._endpoint = null === (o = e.sessionRecording) || void 0 === o ? void 0 : o.endpoint);\n if (this._setupSampling(), !j(this._linkedFlag) && !this._linkedFlagSeen) {\n var a = U(this._linkedFlag) ? this._linkedFlag : this._linkedFlag.flag,\n l = U(this._linkedFlag) ? null : this._linkedFlag.variant;\n this.instance.onFeatureFlags((e, t) => {\n var i = q(t) && a in t,\n s = l ? t[a] === l : i;\n s && this._reportStarted(\"linked_flag_matched\", {\n linkedFlag: a,\n linkedVariant: l\n }), this._linkedFlagSeen = s;\n });\n }\n null !== (s = e.sessionRecording) && void 0 !== s && s.urlTriggers && (this._urlTriggers = e.sessionRecording.urlTriggers), null !== (r = e.sessionRecording) && void 0 !== r && r.urlBlocklist && (this._urlBlocklist = e.sessionRecording.urlBlocklist), null !== (n = e.sessionRecording) && void 0 !== n && n.eventTriggers && (this._eventTriggers = e.sessionRecording.eventTriggers), this.receivedDecide = !0, this.startIfEnabledOrStop();\n }\n _setupSampling() {\n V(this.sampleRate) && j(this._samplingSessionListener) && (this._samplingSessionListener = this.sessionManager.onSessionId(e => {\n this.makeSamplingDecision(e);\n }));\n }\n _persistDecideResponse(e) {\n if (this.instance.persistence) {\n var t,\n i = this.instance.persistence,\n s = () => {\n var t,\n s,\n r,\n n,\n o,\n a,\n l,\n u = null === (t = e.sessionRecording) || void 0 === t ? void 0 : t.sampleRate,\n c = j(u) ? null : parseFloat(u),\n d = null === (s = e.sessionRecording) || void 0 === s ? void 0 : s.minimumDurationMilliseconds;\n i.register({\n [he]: !!e.sessionRecording,\n [_e]: null === (r = e.sessionRecording) || void 0 === r ? void 0 : r.consoleLogRecordingEnabled,\n [pe]: ee({\n capturePerformance: e.capturePerformance\n }, null === (n = e.sessionRecording) || void 0 === n ? void 0 : n.networkPayloadCapture),\n [ve]: {\n enabled: null === (o = e.sessionRecording) || void 0 === o ? void 0 : o.recordCanvas,\n fps: null === (a = e.sessionRecording) || void 0 === a ? void 0 : a.canvasFps,\n quality: null === (l = e.sessionRecording) || void 0 === l ? void 0 : l.canvasQuality\n },\n [ge]: c,\n [fe]: H(d) ? null : d\n });\n };\n s(), null === (t = this._persistDecideOnSessionListener) || void 0 === t || t.call(this), this._persistDecideOnSessionListener = this.sessionManager.onSessionId(s);\n }\n }\n log(e) {\n var t,\n i = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : \"log\";\n null === (t = this.instance.sessionRecording) || void 0 === t || t.onRRwebEmit({\n type: 6,\n data: {\n plugin: \"rrweb/console@1\",\n payload: {\n level: i,\n trace: [],\n payload: [JSON.stringify(e)]\n }\n },\n timestamp: Date.now()\n });\n }\n _startCapture(e) {\n if (!H(Object.assign) && !H(Array.from) && !(this._captureStarted || this.instance.config.disable_session_recording || this.instance.consent.isOptedOut())) {\n var t, i;\n if (this._captureStarted = !0, this.sessionManager.checkAndGetSessionAndWindowId(), this.rrwebRecord) this._onScriptLoaded();else null === (t = h.__PosthogExtensions__) || void 0 === t || null === (i = t.loadExternalDependency) || void 0 === i || i.call(t, this.instance, \"recorder\", e => {\n if (e) return X.error(Vs + \" could not load recorder\", e);\n this._onScriptLoaded();\n });\n X.info(Vs + \" starting\"), \"active\" === this.status && this._reportStarted(e || \"recording_initialized\");\n }\n }\n isInteractiveEvent(e) {\n var t;\n return 3 === e.type && -1 !== zs.indexOf(null === (t = e.data) || void 0 === t ? void 0 : t.source);\n }\n _updateWindowAndSessionIds(e) {\n var t = this.isInteractiveEvent(e);\n t || this.isIdle || e.timestamp - this._lastActivityTimestamp > this.sessionIdleThresholdMilliseconds && (this.isIdle = !0, clearInterval(this._fullSnapshotTimer), this._tryAddCustomEvent(\"sessionIdle\", {\n eventTimestamp: e.timestamp,\n lastActivityTimestamp: this._lastActivityTimestamp,\n threshold: this.sessionIdleThresholdMilliseconds,\n bufferLength: this.buffer.data.length,\n bufferSize: this.buffer.size\n }), this._flushBuffer());\n var i = !1;\n if (t && (this._lastActivityTimestamp = e.timestamp, this.isIdle && (this.isIdle = !1, this._tryAddCustomEvent(\"sessionNoLongerIdle\", {\n reason: \"user activity\",\n type: e.type\n }), i = !0)), !this.isIdle) {\n var {\n windowId: s,\n sessionId: r\n } = this.sessionManager.checkAndGetSessionAndWindowId(!t, e.timestamp),\n n = this.sessionId !== r,\n o = this.windowId !== s;\n this.windowId = s, this.sessionId = r, n || o ? (this.stopRecording(), this.startIfEnabledOrStop(\"session_id_changed\")) : i && this._scheduleFullSnapshot();\n }\n }\n _tryRRWebMethod(e) {\n try {\n return e.rrwebMethod(), !0;\n } catch (t) {\n return this.queuedRRWebEvents.length < 10 ? this.queuedRRWebEvents.push({\n enqueuedAt: e.enqueuedAt || Date.now(),\n attempt: e.attempt++,\n rrwebMethod: e.rrwebMethod\n }) : X.warn(Vs + \" could not emit queued rrweb event.\", t, e), !1;\n }\n }\n _tryAddCustomEvent(e, t) {\n return this._tryRRWebMethod(js(() => this.rrwebRecord.addCustomEvent(e, t)));\n }\n _tryTakeFullSnapshot() {\n return this._tryRRWebMethod(js(() => this.rrwebRecord.takeFullSnapshot()));\n }\n _onScriptLoaded() {\n var e,\n t = {\n blockClass: \"ph-no-capture\",\n blockSelector: void 0,\n ignoreClass: \"ph-ignore-input\",\n maskTextClass: \"ph-mask\",\n maskTextSelector: void 0,\n maskTextFn: void 0,\n maskAllInputs: !0,\n maskInputOptions: {\n password: !0\n },\n maskInputFn: void 0,\n slimDOMOptions: {},\n collectFonts: !1,\n inlineStylesheet: !0,\n recordCrossOriginIframes: !1\n },\n i = this.instance.config.session_recording;\n for (var [s, r] of Object.entries(i || {})) s in t && (\"maskInputOptions\" === s ? t.maskInputOptions = ee({\n password: !0\n }, r) : t[s] = r);\n if (this.canvasRecording && this.canvasRecording.enabled && (t.recordCanvas = !0, t.sampling = {\n canvas: this.canvasRecording.fps\n }, t.dataURLOptions = {\n type: \"image/webp\",\n quality: this.canvasRecording.quality\n }), this.rrwebRecord) {\n this.mutationRateLimiter = null !== (e = this.mutationRateLimiter) && void 0 !== e ? e : new rs(this.rrwebRecord, {\n refillRate: this.instance.config.session_recording.__mutationRateLimiterRefillRate,\n bucketSize: this.instance.config.session_recording.__mutationRateLimiterBucketSize,\n onBlockedNode: (e, t) => {\n var i = \"Too many mutations on node '\".concat(e, \"'. Rate limiting. This could be due to SVG animations or something similar\");\n X.info(i, {\n node: t\n }), this.log(Vs + \" \" + i, \"warn\");\n }\n });\n var n = this._gatherRRWebPlugins();\n this.stopRrweb = this.rrwebRecord(ee({\n emit: e => {\n this.onRRwebEmit(e);\n },\n plugins: n\n }, t)), this._lastActivityTimestamp = Date.now(), this.isIdle = !1, this._tryAddCustomEvent(\"$session_options\", {\n sessionRecordingOptions: t,\n activePlugins: n.map(e => null == e ? void 0 : e.name)\n }), this._tryAddCustomEvent(\"$posthog_config\", {\n config: this.instance.config\n });\n } else X.error(Vs + \"onScriptLoaded was called but rrwebRecord is not available. This indicates something has gone wrong.\");\n }\n _scheduleFullSnapshot() {\n if (this._fullSnapshotTimer && clearInterval(this._fullSnapshotTimer), !this.isIdle) {\n var e = this.fullSnapshotIntervalMillis;\n e && (this._fullSnapshotTimer = setInterval(() => {\n this._tryTakeFullSnapshot();\n }, e));\n }\n }\n _gatherRRWebPlugins() {\n var e,\n t,\n i,\n s,\n r = [],\n n = null === (e = h.__PosthogExtensions__) || void 0 === e || null === (t = e.rrwebPlugins) || void 0 === t ? void 0 : t.getRecordConsolePlugin;\n n && this.isConsoleLogCaptureEnabled && r.push(n());\n var o = null === (i = h.__PosthogExtensions__) || void 0 === i || null === (s = i.rrwebPlugins) || void 0 === s ? void 0 : s.getRecordNetworkPlugin;\n this.networkPayloadCapture && N(o) && (!ct.includes(location.hostname) || this._forceAllowLocalhostNetworkCapture ? r.push(o(is(this.instance.config, this.networkPayloadCapture))) : X.info(Vs + \" NetworkCapture not started because we are on localhost.\"));\n return r;\n }\n onRRwebEmit(e) {\n var t;\n if (this._processQueuedEvents(), e && q(e)) {\n if (e.type === mi.Meta) {\n var i = this._maskUrl(e.data.href);\n if (this._lastHref = i, !i) return;\n e.data.href = i;\n } else this._pageViewFallBack();\n if (this._checkUrlTriggerConditions(), \"paused\" !== this.status || function (e) {\n return e.type === mi.Custom && \"recording paused\" === e.data.tag;\n }(e)) {\n e.type === mi.FullSnapshot && this._scheduleFullSnapshot(), e.type === mi.FullSnapshot && \"trigger_pending\" === this.triggerStatus && this.clearBuffer();\n var s = this.mutationRateLimiter ? this.mutationRateLimiter.throttleMutations(e) : e;\n if (s) {\n var r = function (e) {\n var t = e;\n if (t && q(t) && 6 === t.type && q(t.data) && \"rrweb/console@1\" === t.data.plugin) {\n t.data.payload.payload.length > 10 && (t.data.payload.payload = t.data.payload.payload.slice(0, 10), t.data.payload.payload.push(\"...[truncated]\"));\n for (var i = [], s = 0; s < t.data.payload.payload.length; s++) t.data.payload.payload[s] && t.data.payload.payload[s].length > 2e3 ? i.push(t.data.payload.payload[s].slice(0, 2e3) + \"...[truncated]\") : i.push(t.data.payload.payload[s]);\n return t.data.payload.payload = i, e;\n }\n return e;\n }(s);\n if (this._updateWindowAndSessionIds(r), !this.isIdle || Qs(r)) {\n if (Qs(r)) {\n var n = r.data.payload;\n if (n) {\n var o = n.lastActivityTimestamp,\n a = n.threshold;\n r.timestamp = o + a;\n }\n }\n var l = null === (t = this.instance.config.session_recording.compress_events) || void 0 === t || t ? function (e) {\n if (gi(e) < 1024) return e;\n try {\n if (e.type === mi.FullSnapshot) return ee(ee({}, e), {}, {\n data: Gs(e.data),\n cv: \"2024-10\"\n });\n if (e.type === mi.IncrementalSnapshot && e.data.source === bi.Mutation) return ee(ee({}, e), {}, {\n cv: \"2024-10\",\n data: ee(ee({}, e.data), {}, {\n texts: Gs(e.data.texts),\n attributes: Gs(e.data.attributes),\n removes: Gs(e.data.removes),\n adds: Gs(e.data.adds)\n })\n });\n if (e.type === mi.IncrementalSnapshot && e.data.source === bi.StyleSheetRule) return ee(ee({}, e), {}, {\n cv: \"2024-10\",\n data: ee(ee({}, e.data), {}, {\n adds: Gs(e.data.adds),\n removes: Gs(e.data.removes)\n })\n });\n } catch (e) {\n X.error(Vs + \" could not compress event - will use uncompressed event\", e);\n }\n return e;\n }(r) : r,\n u = {\n $snapshot_bytes: gi(l),\n $snapshot_data: l,\n $session_id: this.sessionId,\n $window_id: this.windowId\n };\n \"disabled\" !== this.status ? this._captureSnapshotBuffered(u) : this.clearBuffer();\n }\n }\n }\n }\n }\n _pageViewFallBack() {\n if (!this.instance.config.capture_pageview && e) {\n var t = this._maskUrl(e.location.href);\n this._lastHref !== t && (this._tryAddCustomEvent(\"$url_changed\", {\n href: t\n }), this._lastHref = t);\n }\n }\n _processQueuedEvents() {\n if (this.queuedRRWebEvents.length) {\n var e = [...this.queuedRRWebEvents];\n this.queuedRRWebEvents = [], e.forEach(e => {\n Date.now() - e.enqueuedAt <= 2e3 && this._tryRRWebMethod(e);\n });\n }\n }\n _maskUrl(e) {\n var t = this.instance.config.session_recording;\n if (t.maskNetworkRequestFn) {\n var i,\n s = {\n url: e\n };\n return null === (i = s = t.maskNetworkRequestFn(s)) || void 0 === i ? void 0 : i.url;\n }\n return e;\n }\n clearBuffer() {\n return this.buffer = {\n size: 0,\n data: [],\n sessionId: this.sessionId,\n windowId: this.windowId\n }, this.buffer;\n }\n _flushBuffer() {\n this.flushBufferTimer && (clearTimeout(this.flushBufferTimer), this.flushBufferTimer = void 0);\n var e = this.minimumDuration,\n t = this.sessionDuration,\n i = V(t) && t >= 0,\n s = V(e) && i && t < e;\n if (\"buffering\" === this.status || s) return this.flushBufferTimer = setTimeout(() => {\n this._flushBuffer();\n }, 2e3), this.buffer;\n this.buffer.data.length > 0 && fi(this.buffer).forEach(e => {\n this._captureSnapshot({\n $snapshot_bytes: e.size,\n $snapshot_data: e.data,\n $session_id: e.sessionId,\n $window_id: e.windowId\n });\n });\n return this.clearBuffer();\n }\n _captureSnapshotBuffered(e) {\n var t,\n i = 2 + ((null === (t = this.buffer) || void 0 === t ? void 0 : t.data.length) || 0);\n !this.isIdle && (this.buffer.size + e.$snapshot_bytes + i > 943718.4 || this.buffer.sessionId !== this.sessionId) && (this.buffer = this._flushBuffer()), this.buffer.size += e.$snapshot_bytes, this.buffer.data.push(e.$snapshot_data), this.flushBufferTimer || this.isIdle || (this.flushBufferTimer = setTimeout(() => {\n this._flushBuffer();\n }, 2e3));\n }\n _captureSnapshot(e) {\n this.instance.capture(\"$snapshot\", e, {\n _url: this.instance.requestRouter.endpointFor(\"api\", this._endpoint),\n _noTruncate: !0,\n _batchKey: \"recordings\",\n skip_client_rate_limiting: !0\n });\n }\n _checkUrlTriggerConditions() {\n if (void 0 !== e && e.location.href) {\n var t = e.location.href,\n i = \"paused\" === this.status,\n s = Js(t, this._urlBlocklist);\n s && !i ? this._pauseRecording() : !s && i && this._resumeRecording(), Js(t, this._urlTriggers) && this._activateTrigger(\"url\");\n }\n }\n _activateTrigger(e) {\n var t, i;\n \"trigger_pending\" === this.triggerStatus && (null === (t = this.instance) || void 0 === t || null === (i = t.persistence) || void 0 === i || i.register({\n [\"url\" === e ? ye : we]: this.sessionId\n }), this._flushBuffer(), this._reportStarted(e + \"_trigger_matched\"));\n }\n _pauseRecording() {\n var e, t;\n \"paused\" !== this.status && (this._urlBlocked = !0, null == o || null === (e = o.body) || void 0 === e || null === (t = e.classList) || void 0 === t || t.add(\"ph-no-capture\"), clearInterval(this._fullSnapshotTimer), setTimeout(() => {\n this._flushBuffer();\n }, 100), X.info(Vs + \" recording paused due to URL blocker\"), this._tryAddCustomEvent(\"recording paused\", {\n reason: \"url blocker\"\n }));\n }\n _resumeRecording() {\n var e, t;\n \"paused\" === this.status && (this._urlBlocked = !1, null == o || null === (e = o.body) || void 0 === e || null === (t = e.classList) || void 0 === t || t.remove(\"ph-no-capture\"), this._tryTakeFullSnapshot(), this._scheduleFullSnapshot(), this._tryAddCustomEvent(\"recording resumed\", {\n reason: \"left blocked url\"\n }), X.info(Vs + \" recording resumed\"));\n }\n _addEventTriggerListener() {\n 0 !== this._eventTriggers.length && j(this._removeEventTriggerCaptureHook) && (this._removeEventTriggerCaptureHook = this.instance.on(\"eventCaptured\", e => {\n try {\n this._eventTriggers.includes(e.event) && this._activateTrigger(\"event\");\n } catch (e) {\n X.error(Vs + \"Could not activate event trigger\", e);\n }\n }));\n }\n overrideLinkedFlag() {\n this._linkedFlagSeen = !0, this._reportStarted(\"linked_flag_overridden\");\n }\n overrideSampling() {\n var e;\n null === (e = this.instance.persistence) || void 0 === e || e.register({\n [be]: !0\n }), this._reportStarted(\"sampling_overridden\");\n }\n overrideTrigger(e) {\n this._activateTrigger(e);\n }\n _reportStarted(e, t) {\n this.instance.register_for_session({\n $session_recording_start_reason: e\n }), X.info(Vs + \" \" + e.replace(\"_\", \" \"), t), b([\"recording_initialized\", \"session_id_changed\"], e) || this._tryAddCustomEvent(e, t);\n }\n}\nclass Xs {\n constructor(e) {\n this.instance = e, this.instance.decideEndpointWasHit = this.instance._hasBootstrappedFeatureFlags();\n }\n call() {\n var e = {\n token: this.instance.config.token,\n distinct_id: this.instance.get_distinct_id(),\n groups: this.instance.getGroups(),\n person_properties: this.instance.get_property(ke),\n group_properties: this.instance.get_property(xe),\n disable_flags: this.instance.config.advanced_disable_feature_flags || this.instance.config.advanced_disable_feature_flags_on_first_load || void 0\n };\n this.instance._send_request({\n method: \"POST\",\n url: this.instance.requestRouter.endpointFor(\"api\", \"/decide/?v=3\"),\n data: e,\n compression: this.instance.config.disable_compression ? void 0 : R.Base64,\n timeout: this.instance.config.feature_flag_request_timeout_ms,\n callback: e => this.parseDecideResponse(e.json)\n });\n }\n parseDecideResponse(e) {\n var t = this;\n this.instance.featureFlags.setReloadingPaused(!1), this.instance.featureFlags._startReloadTimer();\n var i = !e;\n if (this.instance.config.advanced_disable_feature_flags_on_first_load || this.instance.config.advanced_disable_feature_flags || this.instance.featureFlags.receivedFeatureFlags(null != e ? e : {}, i), i) X.error(\"Failed to fetch feature flags from PostHog.\");else {\n if (!o || !o.body) return X.info(\"document not ready yet, trying again in 500 milliseconds...\"), void setTimeout(() => {\n this.parseDecideResponse(e);\n }, 500);\n if (this.instance._afterDecideResponse(e), e.siteApps) if (this.instance.config.opt_in_site_apps) {\n var s = function (e, i) {\n var s, r;\n h[\"__$$ph_site_app_\".concat(e)] = t.instance, null === (s = h.__PosthogExtensions__) || void 0 === s || null === (r = s.loadSiteApp) || void 0 === r || r.call(s, t.instance, i, t => {\n if (t) return X.error(\"Error while initializing PostHog app with config id \".concat(e), t);\n });\n };\n for (var {\n id: r,\n url: n\n } of e.siteApps) s(r, n);\n } else e.siteApps.length > 0 && X.error('PostHog site apps are disabled. Enable the \"opt_in_site_apps\" config to proceed.');\n }\n }\n}\nvar Ks,\n Zs = null != e && e.location ? vt(e.location.hash, \"__posthog\") || vt(location.hash, \"state\") : null,\n er = \"_postHogToolbarParams\";\n!function (e) {\n e[e.UNINITIALIZED = 0] = \"UNINITIALIZED\", e[e.LOADING = 1] = \"LOADING\", e[e.LOADED = 2] = \"LOADED\";\n}(Ks || (Ks = {}));\nclass tr {\n constructor(e) {\n this.instance = e;\n }\n setToolbarState(e) {\n h.ph_toolbar_state = e;\n }\n getToolbarState() {\n var e;\n return null !== (e = h.ph_toolbar_state) && void 0 !== e ? e : Ks.UNINITIALIZED;\n }\n maybeLoadToolbar() {\n var t,\n i,\n s = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : void 0,\n r = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : void 0,\n n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : void 0;\n if (!e || !o) return !1;\n s = null !== (t = s) && void 0 !== t ? t : e.location, n = null !== (i = n) && void 0 !== i ? i : e.history;\n try {\n if (!r) {\n try {\n e.localStorage.setItem(\"test\", \"test\"), e.localStorage.removeItem(\"test\");\n } catch (e) {\n return !1;\n }\n r = null == e ? void 0 : e.localStorage;\n }\n var a,\n l = Zs || vt(s.hash, \"__posthog\") || vt(s.hash, \"state\"),\n u = l ? w(() => JSON.parse(atob(decodeURIComponent(l)))) || w(() => JSON.parse(decodeURIComponent(l))) : null;\n return u && \"ph_authorize\" === u.action ? ((a = u).source = \"url\", a && Object.keys(a).length > 0 && (u.desiredHash ? s.hash = u.desiredHash : n ? n.replaceState(n.state, \"\", s.pathname + s.search) : s.hash = \"\")) : ((a = JSON.parse(r.getItem(er) || \"{}\")).source = \"localstorage\", delete a.userIntent), !(!a.token || this.instance.config.token !== a.token) && (this.loadToolbar(a), !0);\n } catch (e) {\n return !1;\n }\n }\n _callLoadToolbar(e) {\n (h.ph_load_toolbar || h.ph_load_editor)(e, this.instance);\n }\n loadToolbar(t) {\n var i = !(null == o || !o.getElementById(Le));\n if (!e || i) return !1;\n var s = \"custom\" === this.instance.requestRouter.region && this.instance.config.advanced_disable_toolbar_metrics,\n r = ee(ee({\n token: this.instance.config.token\n }, t), {}, {\n apiURL: this.instance.requestRouter.endpointFor(\"ui\")\n }, s ? {\n instrument: !1\n } : {});\n if (e.localStorage.setItem(er, JSON.stringify(ee(ee({}, r), {}, {\n source: void 0\n }))), this.getToolbarState() === Ks.LOADED) this._callLoadToolbar(r);else if (this.getToolbarState() === Ks.UNINITIALIZED) {\n var n, a;\n this.setToolbarState(Ks.LOADING), null === (n = h.__PosthogExtensions__) || void 0 === n || null === (a = n.loadExternalDependency) || void 0 === a || a.call(n, this.instance, \"toolbar\", e => {\n if (e) return X.error(\"Failed to load toolbar\", e), void this.setToolbarState(Ks.UNINITIALIZED);\n this.setToolbarState(Ks.LOADED), this._callLoadToolbar(r);\n }), P(e, \"turbolinks:load\", () => {\n this.setToolbarState(Ks.UNINITIALIZED), this.loadToolbar(r);\n });\n }\n return !0;\n }\n _loadEditor(e) {\n return this.loadToolbar(e);\n }\n maybeLoadEditor() {\n var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : void 0,\n t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : void 0,\n i = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : void 0;\n return this.maybeLoadToolbar(e, t, i);\n }\n}\nclass ir {\n constructor(e) {\n te(this, \"isPaused\", !0), te(this, \"queue\", []), te(this, \"flushTimeoutMs\", 3e3), this.sendRequest = e;\n }\n enqueue(e) {\n this.queue.push(e), this.flushTimeout || this.setFlushTimeout();\n }\n unload() {\n this.clearFlushTimeout();\n var e = this.queue.length > 0 ? this.formatQueue() : {},\n t = Object.values(e),\n i = [...t.filter(e => 0 === e.url.indexOf(\"/e\")), ...t.filter(e => 0 !== e.url.indexOf(\"/e\"))];\n i.map(e => {\n this.sendRequest(ee(ee({}, e), {}, {\n transport: \"sendBeacon\"\n }));\n });\n }\n enable() {\n this.isPaused = !1, this.setFlushTimeout();\n }\n setFlushTimeout() {\n var e = this;\n this.isPaused || (this.flushTimeout = setTimeout(() => {\n if (this.clearFlushTimeout(), this.queue.length > 0) {\n var t = this.formatQueue(),\n i = function (i) {\n var s = t[i],\n r = new Date().getTime();\n s.data && D(s.data) && f(s.data, e => {\n e.offset = Math.abs(e.timestamp - r), delete e.timestamp;\n }), e.sendRequest(s);\n };\n for (var s in t) i(s);\n }\n }, this.flushTimeoutMs));\n }\n clearFlushTimeout() {\n clearTimeout(this.flushTimeout), this.flushTimeout = void 0;\n }\n formatQueue() {\n var e = {};\n return f(this.queue, t => {\n var i,\n s = t,\n r = (s ? s.batchKey : null) || s.url;\n H(e[r]) && (e[r] = ee(ee({}, s), {}, {\n data: []\n })), null === (i = e[r].data) || void 0 === i || i.push(s.data);\n }), this.queue = [], e;\n }\n}\nvar sr = !!u || !!l,\n rr = \"text/plain\",\n nr = (e, t) => {\n var [i, s] = e.split(\"?\"),\n r = ee({}, t);\n null == s || s.split(\"&\").forEach(e => {\n var [t] = e.split(\"=\");\n delete r[t];\n });\n var n = _t(r);\n return n = n ? (s ? s + \"&\" : \"\") + n : s, \"\".concat(i, \"?\").concat(n);\n },\n or = e => {\n var {\n data: t,\n compression: i\n } = e;\n if (t) {\n if (i === R.GZipJS) {\n var s = Hs(Us(JSON.stringify(t)), {\n mtime: 0\n }),\n r = new Blob([s], {\n type: rr\n });\n return {\n contentType: rr,\n body: r,\n estimatedSize: r.size\n };\n }\n if (i === R.Base64) {\n var n = function (e) {\n var t,\n i,\n s,\n r,\n n,\n o = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\",\n a = 0,\n l = 0,\n u = \"\",\n c = [];\n if (!e) return e;\n e = I(e);\n do {\n t = (n = e.charCodeAt(a++) << 16 | e.charCodeAt(a++) << 8 | e.charCodeAt(a++)) >> 18 & 63, i = n >> 12 & 63, s = n >> 6 & 63, r = 63 & n, c[l++] = o.charAt(t) + o.charAt(i) + o.charAt(s) + o.charAt(r);\n } while (a < e.length);\n switch (u = c.join(\"\"), e.length % 3) {\n case 1:\n u = u.slice(0, -2) + \"==\";\n break;\n case 2:\n u = u.slice(0, -1) + \"=\";\n }\n return u;\n }(JSON.stringify(t)),\n o = (e => \"data=\" + encodeURIComponent(\"string\" == typeof e ? e : JSON.stringify(e)))(n);\n return {\n contentType: \"application/x-www-form-urlencoded\",\n body: o,\n estimatedSize: new Blob([o]).size\n };\n }\n var a = JSON.stringify(t);\n return {\n contentType: \"application/json\",\n body: a,\n estimatedSize: new Blob([a]).size\n };\n }\n },\n ar = [];\nu && ar.push({\n transport: \"XHR\",\n method: e => {\n var t,\n i = new u();\n i.open(e.method || \"GET\", e.url, !0);\n var {\n contentType: s,\n body: r\n } = null !== (t = or(e)) && void 0 !== t ? t : {};\n f(e.headers, function (e, t) {\n i.setRequestHeader(t, e);\n }), s && i.setRequestHeader(\"Content-Type\", s), e.timeout && (i.timeout = e.timeout), i.withCredentials = !0, i.onreadystatechange = () => {\n if (4 === i.readyState) {\n var t,\n s = {\n statusCode: i.status,\n text: i.responseText\n };\n if (200 === i.status) try {\n s.json = JSON.parse(i.responseText);\n } catch (e) {}\n null === (t = e.callback) || void 0 === t || t.call(e, s);\n }\n }, i.send(r);\n }\n}), l && ar.push({\n transport: \"fetch\",\n method: e => {\n var t,\n i,\n {\n contentType: s,\n body: r,\n estimatedSize: n\n } = null !== (t = or(e)) && void 0 !== t ? t : {},\n o = new Headers();\n f(e.headers, function (e, t) {\n o.append(t, e);\n }), s && o.append(\"Content-Type\", s);\n var a = e.url,\n u = null;\n if (c) {\n var d = new c();\n u = {\n signal: d.signal,\n timeout: setTimeout(() => d.abort(), e.timeout)\n };\n }\n l(a, {\n method: (null == e ? void 0 : e.method) || \"GET\",\n headers: o,\n keepalive: \"POST\" === e.method && (n || 0) < 52428.8,\n body: r,\n signal: null === (i = u) || void 0 === i ? void 0 : i.signal\n }).then(t => t.text().then(i => {\n var s,\n r = {\n statusCode: t.status,\n text: i\n };\n if (200 === t.status) try {\n r.json = JSON.parse(i);\n } catch (e) {\n X.error(e);\n }\n null === (s = e.callback) || void 0 === s || s.call(e, r);\n })).catch(t => {\n var i;\n X.error(t), null === (i = e.callback) || void 0 === i || i.call(e, {\n statusCode: 0,\n text: t\n });\n }).finally(() => u ? clearTimeout(u.timeout) : null);\n }\n}), null != n && n.sendBeacon && ar.push({\n transport: \"sendBeacon\",\n method: e => {\n var t = nr(e.url, {\n beacon: \"1\"\n });\n try {\n var i,\n {\n contentType: s,\n body: r\n } = null !== (i = or(e)) && void 0 !== i ? i : {},\n o = \"string\" == typeof r ? new Blob([r], {\n type: s\n }) : r;\n n.sendBeacon(t, o);\n } catch (e) {}\n }\n});\nvar lr = [\"retriesPerformedSoFar\"];\nclass ur {\n constructor(t) {\n te(this, \"isPolling\", !1), te(this, \"pollIntervalMs\", 3e3), te(this, \"queue\", []), this.instance = t, this.queue = [], this.areWeOnline = !0, !H(e) && \"onLine\" in e.navigator && (this.areWeOnline = e.navigator.onLine, e.addEventListener(\"online\", () => {\n this.areWeOnline = !0, this.flush();\n }), e.addEventListener(\"offline\", () => {\n this.areWeOnline = !1;\n }));\n }\n retriableRequest(e) {\n var {\n retriesPerformedSoFar: t\n } = e,\n i = ie(e, lr);\n V(t) && t > 0 && (i.url = nr(i.url, {\n retry_count: t\n })), this.instance._send_request(ee(ee({}, i), {}, {\n callback: e => {\n var s;\n 200 !== e.statusCode && (e.statusCode < 400 || e.statusCode >= 500) && (null != t ? t : 0) < 10 ? this.enqueue(ee({\n retriesPerformedSoFar: t\n }, i)) : null === (s = i.callback) || void 0 === s || s.call(i, e);\n }\n }));\n }\n enqueue(e) {\n var t = e.retriesPerformedSoFar || 0;\n e.retriesPerformedSoFar = t + 1;\n var i = function (e) {\n var t = 3e3 * Math.pow(2, e),\n i = t / 2,\n s = Math.min(18e5, t),\n r = (Math.random() - .5) * (s - i);\n return Math.ceil(s + r);\n }(t),\n s = Date.now() + i;\n this.queue.push({\n retryAt: s,\n requestOptions: e\n });\n var r = \"Enqueued failed request for retry in \".concat(i);\n navigator.onLine || (r += \" (Browser is offline)\"), X.warn(r), this.isPolling || (this.isPolling = !0, this.poll());\n }\n poll() {\n this.poller && clearTimeout(this.poller), this.poller = setTimeout(() => {\n this.areWeOnline && this.queue.length > 0 && this.flush(), this.poll();\n }, this.pollIntervalMs);\n }\n flush() {\n var e = Date.now(),\n t = [],\n i = this.queue.filter(i => i.retryAt < e || (t.push(i), !1));\n if (this.queue = t, i.length > 0) for (var {\n requestOptions: s\n } of i) this.retriableRequest(s);\n }\n unload() {\n for (var {\n requestOptions: e\n } of (this.poller && (clearTimeout(this.poller), this.poller = void 0), this.queue)) try {\n this.instance._send_request(ee(ee({}, e), {}, {\n transport: \"sendBeacon\"\n }));\n } catch (e) {\n X.error(e);\n }\n this.queue = [];\n }\n}\nvar cr;\nclass dr {\n constructor(e, t, i, s) {\n var r;\n te(this, \"_sessionIdChangedHandlers\", []), this.config = e, this.persistence = t, this._windowId = void 0, this._sessionId = void 0, this._sessionStartTimestamp = null, this._sessionActivityTimestamp = null, this._sessionIdGenerator = i || Je, this._windowIdGenerator = s || Je;\n var n = e.persistence_name || e.token,\n o = e.session_idle_timeout_seconds || 1800;\n if (this._sessionTimeoutMs = 1e3 * ss(o, 60, 1800, \"session_idle_timeout_seconds\"), this._window_id_storage_key = \"ph_\" + n + \"_window_id\", this._primary_window_exists_storage_key = \"ph_\" + n + \"_primary_window_exists\", this._canUseSessionStorage()) {\n var a = ut.parse(this._window_id_storage_key),\n l = ut.parse(this._primary_window_exists_storage_key);\n a && !l ? this._windowId = a : ut.remove(this._window_id_storage_key), ut.set(this._primary_window_exists_storage_key, !0);\n }\n if (null !== (r = this.config.bootstrap) && void 0 !== r && r.sessionID) try {\n var u = (e => {\n var t = e.replace(/-/g, \"\");\n if (32 !== t.length) throw new Error(\"Not a valid UUID\");\n if (\"7\" !== t[12]) throw new Error(\"Not a UUIDv7\");\n return parseInt(t.substring(0, 12), 16);\n })(this.config.bootstrap.sessionID);\n this._setSessionId(this.config.bootstrap.sessionID, new Date().getTime(), u);\n } catch (e) {\n X.error(\"Invalid sessionID in bootstrap\", e);\n }\n this._listenToReloadWindow();\n }\n get sessionTimeoutMs() {\n return this._sessionTimeoutMs;\n }\n onSessionId(e) {\n return H(this._sessionIdChangedHandlers) && (this._sessionIdChangedHandlers = []), this._sessionIdChangedHandlers.push(e), this._sessionId && e(this._sessionId, this._windowId), () => {\n this._sessionIdChangedHandlers = this._sessionIdChangedHandlers.filter(t => t !== e);\n };\n }\n _canUseSessionStorage() {\n return \"memory\" !== this.config.persistence && !this.persistence.disabled && ut.is_supported();\n }\n _setWindowId(e) {\n e !== this._windowId && (this._windowId = e, this._canUseSessionStorage() && ut.set(this._window_id_storage_key, e));\n }\n _getWindowId() {\n return this._windowId ? this._windowId : this._canUseSessionStorage() ? ut.parse(this._window_id_storage_key) : null;\n }\n _setSessionId(e, t, i) {\n e === this._sessionId && t === this._sessionActivityTimestamp && i === this._sessionStartTimestamp || (this._sessionStartTimestamp = i, this._sessionActivityTimestamp = t, this._sessionId = e, this.persistence.register({\n [me]: [t, e, i]\n }));\n }\n _getSessionId() {\n if (this._sessionId && this._sessionActivityTimestamp && this._sessionStartTimestamp) return [this._sessionActivityTimestamp, this._sessionId, this._sessionStartTimestamp];\n var e = this.persistence.props[me];\n return D(e) && 2 === e.length && e.push(e[0]), e || [0, null, 0];\n }\n resetSessionId() {\n this._setSessionId(null, null, null);\n }\n _listenToReloadWindow() {\n null == e || e.addEventListener(\"beforeunload\", () => {\n this._canUseSessionStorage() && ut.remove(this._primary_window_exists_storage_key);\n });\n }\n checkAndGetSessionAndWindowId() {\n var e = arguments.length > 0 && void 0 !== arguments[0] && arguments[0],\n t = (arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null) || new Date().getTime(),\n [i, s, r] = this._getSessionId(),\n n = this._getWindowId(),\n o = V(r) && r > 0 && Math.abs(t - r) > 864e5,\n a = !1,\n l = !s,\n u = !e && Math.abs(t - i) > this.sessionTimeoutMs;\n l || u || o ? (s = this._sessionIdGenerator(), n = this._windowIdGenerator(), X.info(\"[SessionId] new session ID generated\", {\n sessionId: s,\n windowId: n,\n changeReason: {\n noSessionId: l,\n activityTimeout: u,\n sessionPastMaximumLength: o\n }\n }), r = t, a = !0) : n || (n = this._windowIdGenerator(), a = !0);\n var c = 0 === i || !e || o ? t : i,\n d = 0 === r ? new Date().getTime() : r;\n return this._setWindowId(n), this._setSessionId(s, c, d), a && this._sessionIdChangedHandlers.forEach(e => e(s, n, a ? {\n noSessionId: l,\n activityTimeout: u,\n sessionPastMaximumLength: o\n } : void 0)), {\n sessionId: s,\n windowId: n,\n sessionStartTimestamp: d,\n changeReason: a ? {\n noSessionId: l,\n activityTimeout: u,\n sessionPastMaximumLength: o\n } : void 0,\n lastActivityTimestamp: i\n };\n }\n}\n!function (e) {\n e.US = \"us\", e.EU = \"eu\", e.CUSTOM = \"custom\";\n}(cr || (cr = {}));\nvar hr = \"i.posthog.com\";\nclass _r {\n constructor(e) {\n te(this, \"_regionCache\", {}), this.instance = e;\n }\n get apiHost() {\n var e = this.instance.config.api_host.trim().replace(/\\/$/, \"\");\n return \"https://app.posthog.com\" === e ? \"https://us.i.posthog.com\" : e;\n }\n get uiHost() {\n var e,\n t = null === (e = this.instance.config.ui_host) || void 0 === e ? void 0 : e.replace(/\\/$/, \"\");\n return t || (t = this.apiHost.replace(\".\".concat(hr), \".posthog.com\")), \"https://app.posthog.com\" === t ? \"https://us.posthog.com\" : t;\n }\n get region() {\n return this._regionCache[this.apiHost] || (/https:\\/\\/(app|us|us-assets)(\\.i)?\\.posthog\\.com/i.test(this.apiHost) ? this._regionCache[this.apiHost] = cr.US : /https:\\/\\/(eu|eu-assets)(\\.i)?\\.posthog\\.com/i.test(this.apiHost) ? this._regionCache[this.apiHost] = cr.EU : this._regionCache[this.apiHost] = cr.CUSTOM), this._regionCache[this.apiHost];\n }\n endpointFor(e) {\n var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : \"\";\n if (t && (t = \"/\" === t[0] ? t : \"/\".concat(t)), \"ui\" === e) return this.uiHost + t;\n if (this.region === cr.CUSTOM) return this.apiHost + t;\n var i = hr + t;\n switch (e) {\n case \"assets\":\n return \"https://\".concat(this.region, \"-assets.\").concat(i);\n case \"api\":\n return \"https://\".concat(this.region, \".\").concat(i);\n }\n }\n}\nvar pr = \"posthog-js\";\nfunction vr(e) {\n var {\n organization: t,\n projectId: i,\n prefix: s,\n severityAllowList: r = [\"error\"]\n } = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};\n return n => {\n var o, a, l, u, c;\n if (!(\"*\" === r || r.includes(n.level)) || !e.__loaded) return n;\n n.tags || (n.tags = {});\n var d = e.requestRouter.endpointFor(\"ui\", \"/project/\".concat(e.config.token, \"/person/\").concat(e.get_distinct_id()));\n n.tags[\"PostHog Person URL\"] = d, e.sessionRecordingStarted() && (n.tags[\"PostHog Recording URL\"] = e.get_session_replay_url({\n withTimestamp: !0\n }));\n var h = (null === (o = n.exception) || void 0 === o ? void 0 : o.values) || [];\n h.map(e => {\n e.stacktrace && (e.stacktrace.type = \"raw\");\n });\n var _ = {\n $exception_message: (null === (a = h[0]) || void 0 === a ? void 0 : a.value) || n.message,\n $exception_type: null === (l = h[0]) || void 0 === l ? void 0 : l.type,\n $exception_personURL: d,\n $exception_level: n.level,\n $exception_list: h,\n $sentry_event_id: n.event_id,\n $sentry_exception: n.exception,\n $sentry_exception_message: (null === (u = h[0]) || void 0 === u ? void 0 : u.value) || n.message,\n $sentry_exception_type: null === (c = h[0]) || void 0 === c ? void 0 : c.type,\n $sentry_tags: n.tags\n };\n return t && i && (_.$sentry_url = (s || \"https://sentry.io/organizations/\") + t + \"/issues/?project=\" + i + \"&query=\" + n.event_id), e.exceptions.sendExceptionEvent(_), n;\n };\n}\nclass gr {\n constructor(e, t, i, s, r) {\n this.name = pr, this.setupOnce = function (n) {\n n(vr(e, {\n organization: t,\n projectId: i,\n prefix: s,\n severityAllowList: r\n }));\n };\n }\n}\nvar fr, mr, br;\nfunction yr(e, t) {\n var i = e.config.segment;\n if (!i) return t();\n !function (e, t) {\n var i = e.config.segment;\n if (!i) return t();\n var s = i => {\n var s = () => i.anonymousId() || Je();\n e.config.get_device_id = s, i.id() && (e.register({\n distinct_id: i.id(),\n $device_id: s()\n }), e.persistence.set_property(Re, \"identified\")), t();\n },\n r = i.user();\n \"then\" in r && N(r.then) ? r.then(e => s(e)) : s(r);\n }(e, () => {\n i.register((e => {\n Promise && Promise.resolve || X.warn(\"This browser does not have Promise support, and can not use the segment integration\");\n var t = (t, i) => {\n var s;\n if (!i) return t;\n t.event.userId || t.event.anonymousId === e.get_distinct_id() || (X.info(\"Segment integration does not have a userId set, resetting PostHog\"), e.reset()), t.event.userId && t.event.userId !== e.get_distinct_id() && (X.info(\"Segment integration has a userId set, identifying with PostHog\"), e.identify(t.event.userId));\n var r = e._calculate_event_properties(i, null !== (s = t.event.properties) && void 0 !== s ? s : {}, new Date());\n return t.event.properties = Object.assign({}, r, t.event.properties), t;\n };\n return {\n name: \"PostHog JS\",\n type: \"enrichment\",\n version: \"1.0.0\",\n isLoaded: () => !0,\n load: () => Promise.resolve(),\n track: e => t(e, e.event.event),\n page: e => t(e, \"$pageview\"),\n identify: e => t(e, \"$identify\"),\n screen: e => t(e, \"$screen\")\n };\n })(e)).then(() => {\n t();\n });\n });\n}\nclass wr {\n constructor(e) {\n this._instance = e;\n }\n doPageView(t) {\n var i,\n s = this._previousPageViewProperties(t);\n return this._currentPath = null !== (i = null == e ? void 0 : e.location.pathname) && void 0 !== i ? i : \"\", this._instance.scrollManager.resetContext(), this._prevPageviewTimestamp = t, s;\n }\n doPageLeave(e) {\n return this._previousPageViewProperties(e);\n }\n _previousPageViewProperties(e) {\n var t = this._currentPath,\n i = this._prevPageviewTimestamp,\n s = this._instance.scrollManager.getContext();\n if (!i) return {};\n var r = {};\n if (s) {\n var {\n maxScrollHeight: n,\n lastScrollY: o,\n maxScrollY: a,\n maxContentHeight: l,\n lastContentY: u,\n maxContentY: c\n } = s;\n if (!(H(n) || H(o) || H(a) || H(l) || H(u) || H(c))) n = Math.ceil(n), o = Math.ceil(o), a = Math.ceil(a), l = Math.ceil(l), u = Math.ceil(u), c = Math.ceil(c), r = {\n $prev_pageview_last_scroll: o,\n $prev_pageview_last_scroll_percentage: n <= 1 ? 1 : ss(o / n, 0, 1),\n $prev_pageview_max_scroll: a,\n $prev_pageview_max_scroll_percentage: n <= 1 ? 1 : ss(a / n, 0, 1),\n $prev_pageview_last_content: u,\n $prev_pageview_last_content_percentage: l <= 1 ? 1 : ss(u / l, 0, 1),\n $prev_pageview_max_content: c,\n $prev_pageview_max_content_percentage: l <= 1 ? 1 : ss(c / l, 0, 1)\n };\n }\n return t && (r.$prev_pageview_pathname = t), i && (r.$prev_pageview_duration = (e.getTime() - i.getTime()) / 1e3), r;\n }\n}\n!function (e) {\n e.Popover = \"popover\", e.API = \"api\", e.Widget = \"widget\";\n}(fr || (fr = {})), function (e) {\n e.Open = \"open\", e.MultipleChoice = \"multiple_choice\", e.SingleChoice = \"single_choice\", e.Rating = \"rating\", e.Link = \"link\";\n}(mr || (mr = {})), function (e) {\n e.NextQuestion = \"next_question\", e.End = \"end\", e.ResponseBased = \"response_based\", e.SpecificQuestion = \"specific_question\";\n}(br || (br = {}));\nclass Sr {\n constructor() {\n te(this, \"events\", {}), this.events = {};\n }\n on(e, t) {\n return this.events[e] || (this.events[e] = []), this.events[e].push(t), () => {\n this.events[e] = this.events[e].filter(e => e !== t);\n };\n }\n emit(e, t) {\n for (var i of this.events[e] || []) i(t);\n for (var s of this.events[\"*\"] || []) s(e, t);\n }\n}\nclass Er {\n constructor(e) {\n te(this, \"_debugEventEmitter\", new Sr()), te(this, \"checkStep\", (e, t) => this.checkStepEvent(e, t) && this.checkStepUrl(e, t) && this.checkStepElement(e, t)), te(this, \"checkStepEvent\", (e, t) => null == t || !t.event || (null == e ? void 0 : e.event) === (null == t ? void 0 : t.event)), this.instance = e, this.actionEvents = new Set(), this.actionRegistry = new Set();\n }\n init() {\n var e;\n if (!H(null === (e = this.instance) || void 0 === e ? void 0 : e._addCaptureHook)) {\n var t;\n null === (t = this.instance) || void 0 === t || t._addCaptureHook((e, t) => {\n this.on(e, t);\n });\n }\n }\n register(e) {\n var t, i;\n if (!H(null === (t = this.instance) || void 0 === t ? void 0 : t._addCaptureHook) && (e.forEach(e => {\n var t, i;\n null === (t = this.actionRegistry) || void 0 === t || t.add(e), null === (i = e.steps) || void 0 === i || i.forEach(e => {\n var t;\n null === (t = this.actionEvents) || void 0 === t || t.add((null == e ? void 0 : e.event) || \"\");\n });\n }), null !== (i = this.instance) && void 0 !== i && i.autocapture)) {\n var s,\n r = new Set();\n e.forEach(e => {\n var t;\n null === (t = e.steps) || void 0 === t || t.forEach(e => {\n null != e && e.selector && r.add(null == e ? void 0 : e.selector);\n });\n }), null === (s = this.instance) || void 0 === s || s.autocapture.setElementSelectors(r);\n }\n }\n on(e, t) {\n var i;\n null != t && 0 != e.length && (this.actionEvents.has(e) || this.actionEvents.has(null == t ? void 0 : t.event)) && this.actionRegistry && (null === (i = this.actionRegistry) || void 0 === i ? void 0 : i.size) > 0 && this.actionRegistry.forEach(e => {\n this.checkAction(t, e) && this._debugEventEmitter.emit(\"actionCaptured\", e.name);\n });\n }\n _addActionHook(e) {\n this.onAction(\"actionCaptured\", t => e(t));\n }\n checkAction(e, t) {\n if (null == (null == t ? void 0 : t.steps)) return !1;\n for (var i of t.steps) if (this.checkStep(e, i)) return !0;\n return !1;\n }\n onAction(e, t) {\n return this._debugEventEmitter.on(e, t);\n }\n checkStepUrl(e, t) {\n if (null != t && t.url) {\n var i,\n s = null == e || null === (i = e.properties) || void 0 === i ? void 0 : i.$current_url;\n if (!s || \"string\" != typeof s) return !1;\n if (!Er.matchString(s, null == t ? void 0 : t.url, (null == t ? void 0 : t.url_matching) || \"contains\")) return !1;\n }\n return !0;\n }\n static matchString(t, i, s) {\n switch (s) {\n case \"regex\":\n return !!e && ht(t, i);\n case \"exact\":\n return i === t;\n case \"contains\":\n var r = Er.escapeStringRegexp(i).replace(/_/g, \".\").replace(/%/g, \".*\");\n return ht(t, r);\n default:\n return !1;\n }\n }\n static escapeStringRegexp(e) {\n return e.replace(/[|\\\\{}()[\\]^$+*?.]/g, \"\\\\$&\").replace(/-/g, \"\\\\x2d\");\n }\n checkStepElement(e, t) {\n if ((null != t && t.href || null != t && t.tag_name || null != t && t.text) && !this.getElementsList(e).some(e => !(null != t && t.href && !Er.matchString(e.href || \"\", null == t ? void 0 : t.href, (null == t ? void 0 : t.href_matching) || \"exact\")) && (null == t || !t.tag_name || e.tag_name === (null == t ? void 0 : t.tag_name)) && !(null != t && t.text && !Er.matchString(e.text || \"\", null == t ? void 0 : t.text, (null == t ? void 0 : t.text_matching) || \"exact\") && !Er.matchString(e.$el_text || \"\", null == t ? void 0 : t.text, (null == t ? void 0 : t.text_matching) || \"exact\")))) return !1;\n if (null != t && t.selector) {\n var i,\n s = null == e || null === (i = e.properties) || void 0 === i ? void 0 : i.$element_selectors;\n if (!s) return !1;\n if (!s.includes(null == t ? void 0 : t.selector)) return !1;\n }\n return !0;\n }\n getElementsList(e) {\n return null == (null == e ? void 0 : e.properties.$elements) ? [] : null == e ? void 0 : e.properties.$elements;\n }\n}\nclass kr {\n constructor(e) {\n this.instance = e, this.eventToSurveys = new Map(), this.actionToSurveys = new Map();\n }\n register(e) {\n var t;\n H(null === (t = this.instance) || void 0 === t ? void 0 : t._addCaptureHook) || (this.setupEventBasedSurveys(e), this.setupActionBasedSurveys(e));\n }\n setupActionBasedSurveys(e) {\n var t = e.filter(e => {\n var t, i, s, r;\n return (null === (t = e.conditions) || void 0 === t ? void 0 : t.actions) && (null === (i = e.conditions) || void 0 === i || null === (s = i.actions) || void 0 === s || null === (r = s.values) || void 0 === r ? void 0 : r.length) > 0;\n });\n if (0 !== t.length) {\n if (null == this.actionMatcher) {\n this.actionMatcher = new Er(this.instance), this.actionMatcher.init();\n this.actionMatcher._addActionHook(e => {\n this.onAction(e);\n });\n }\n t.forEach(e => {\n var t, i, s, r, n, o, a, l, u, c;\n e.conditions && null !== (t = e.conditions) && void 0 !== t && t.actions && null !== (i = e.conditions) && void 0 !== i && null !== (s = i.actions) && void 0 !== s && s.values && (null === (r = e.conditions) || void 0 === r || null === (n = r.actions) || void 0 === n || null === (o = n.values) || void 0 === o ? void 0 : o.length) > 0 && (null === (a = this.actionMatcher) || void 0 === a || a.register(e.conditions.actions.values), null === (l = e.conditions) || void 0 === l || null === (u = l.actions) || void 0 === u || null === (c = u.values) || void 0 === c || c.forEach(t => {\n if (t && t.name) {\n var i = this.actionToSurveys.get(t.name);\n i && i.push(e.id), this.actionToSurveys.set(t.name, i || [e.id]);\n }\n }));\n });\n }\n }\n setupEventBasedSurveys(e) {\n var t;\n if (0 !== e.filter(e => {\n var t, i, s, r;\n return (null === (t = e.conditions) || void 0 === t ? void 0 : t.events) && (null === (i = e.conditions) || void 0 === i || null === (s = i.events) || void 0 === s || null === (r = s.values) || void 0 === r ? void 0 : r.length) > 0;\n }).length) {\n null === (t = this.instance) || void 0 === t || t._addCaptureHook((e, t) => {\n this.onEvent(e, t);\n }), e.forEach(e => {\n var t, i, s;\n null === (t = e.conditions) || void 0 === t || null === (i = t.events) || void 0 === i || null === (s = i.values) || void 0 === s || s.forEach(t => {\n if (t && t.name) {\n var i = this.eventToSurveys.get(t.name);\n i && i.push(e.id), this.eventToSurveys.set(t.name, i || [e.id]);\n }\n });\n });\n }\n }\n onEvent(e, t) {\n var i,\n s,\n r = (null === (i = this.instance) || void 0 === i || null === (s = i.persistence) || void 0 === s ? void 0 : s.props[Pe]) || [];\n if (kr.SURVEY_SHOWN_EVENT_NAME == e && t && r.length > 0) {\n var n,\n o = null == t || null === (n = t.properties) || void 0 === n ? void 0 : n.$survey_id;\n if (o) {\n var a = r.indexOf(o);\n a >= 0 && (r.splice(a, 1), this._updateActivatedSurveys(r));\n }\n } else this.eventToSurveys.has(e) && this._updateActivatedSurveys(r.concat(this.eventToSurveys.get(e) || []));\n }\n onAction(e) {\n var t,\n i,\n s = (null === (t = this.instance) || void 0 === t || null === (i = t.persistence) || void 0 === i ? void 0 : i.props[Pe]) || [];\n this.actionToSurveys.has(e) && this._updateActivatedSurveys(s.concat(this.actionToSurveys.get(e) || []));\n }\n _updateActivatedSurveys(e) {\n var t, i;\n null === (t = this.instance) || void 0 === t || null === (i = t.persistence) || void 0 === i || i.register({\n [Pe]: [...new Set(e)]\n });\n }\n getSurveys() {\n var e,\n t,\n i = null === (e = this.instance) || void 0 === e || null === (t = e.persistence) || void 0 === t ? void 0 : t.props[Pe];\n return i || [];\n }\n getEventToSurveys() {\n return this.eventToSurveys;\n }\n _getActionMatcher() {\n return this.actionMatcher;\n }\n}\nte(kr, \"SURVEY_SHOWN_EVENT_NAME\", \"survey shown\");\nvar xr,\n Ir,\n Pr,\n Fr,\n Rr,\n Cr,\n Tr,\n $r,\n Mr = {},\n Ar = [],\n Or = /acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,\n Lr = Array.isArray;\nfunction Dr(e, t) {\n for (var i in t) e[i] = t[i];\n return e;\n}\nfunction Nr(e) {\n var t = e.parentNode;\n t && t.removeChild(e);\n}\nfunction qr(e, t, i, s, r) {\n var n = {\n type: e,\n props: t,\n key: i,\n ref: s,\n __k: null,\n __: null,\n __b: 0,\n __e: null,\n __d: void 0,\n __c: null,\n constructor: void 0,\n __v: null == r ? ++Pr : r,\n __i: -1,\n __u: 0\n };\n return null == r && null != Ir.vnode && Ir.vnode(n), n;\n}\nfunction Br(e) {\n return e.children;\n}\nfunction Hr(e, t) {\n this.props = e, this.context = t;\n}\nfunction Ur(e, t) {\n if (null == t) return e.__ ? Ur(e.__, e.__i + 1) : null;\n for (var i; t < e.__k.length; t++) if (null != (i = e.__k[t]) && null != i.__e) return i.__e;\n return \"function\" == typeof e.type ? Ur(e) : null;\n}\nfunction Wr(e) {\n var t, i;\n if (null != (e = e.__) && null != e.__c) {\n for (e.__e = e.__c.base = null, t = 0; t < e.__k.length; t++) if (null != (i = e.__k[t]) && null != i.__e) {\n e.__e = e.__c.base = i.__e;\n break;\n }\n return Wr(e);\n }\n}\nfunction zr(e) {\n (!e.__d && (e.__d = !0) && Fr.push(e) && !jr.__r++ || Rr !== Ir.debounceRendering) && ((Rr = Ir.debounceRendering) || Cr)(jr);\n}\nfunction jr() {\n var e, t, i, s, r, n, o, a, l;\n for (Fr.sort(Tr); e = Fr.shift();) e.__d && (t = Fr.length, s = void 0, n = (r = (i = e).__v).__e, a = [], l = [], (o = i.__P) && ((s = Dr({}, r)).__v = r.__v + 1, Ir.vnode && Ir.vnode(s), en(o, s, r, i.__n, void 0 !== o.ownerSVGElement, 32 & r.__u ? [n] : null, a, null == n ? Ur(r) : n, !!(32 & r.__u), l), s.__.__k[s.__i] = s, tn(a, s, l), s.__e != n && Wr(s)), Fr.length > t && Fr.sort(Tr));\n jr.__r = 0;\n}\nfunction Vr(e, t, i, s, r, n, o, a, l, u, c) {\n var d,\n h,\n _,\n p,\n v,\n g = s && s.__k || Ar,\n f = t.length;\n for (i.__d = l, Gr(i, t, g), l = i.__d, d = 0; d < f; d++) null != (_ = i.__k[d]) && \"boolean\" != typeof _ && \"function\" != typeof _ && (h = -1 === _.__i ? Mr : g[_.__i] || Mr, _.__i = d, en(e, _, h, r, n, o, a, l, u, c), p = _.__e, _.ref && h.ref != _.ref && (h.ref && rn(h.ref, null, _), c.push(_.ref, _.__c || p, _)), null == v && null != p && (v = p), 65536 & _.__u || h.__k === _.__k ? l = Qr(_, l, e) : \"function\" == typeof _.type && void 0 !== _.__d ? l = _.__d : p && (l = p.nextSibling), _.__d = void 0, _.__u &= -196609);\n i.__d = l, i.__e = v;\n}\nfunction Gr(e, t, i) {\n var s,\n r,\n n,\n o,\n a,\n l = t.length,\n u = i.length,\n c = u,\n d = 0;\n for (e.__k = [], s = 0; s < l; s++) null != (r = e.__k[s] = null == (r = t[s]) || \"boolean\" == typeof r || \"function\" == typeof r ? null : \"string\" == typeof r || \"number\" == typeof r || \"bigint\" == typeof r || r.constructor == String ? qr(null, r, null, null, r) : Lr(r) ? qr(Br, {\n children: r\n }, null, null, null) : void 0 === r.constructor && r.__b > 0 ? qr(r.type, r.props, r.key, r.ref ? r.ref : null, r.__v) : r) ? (r.__ = e, r.__b = e.__b + 1, a = Jr(r, i, o = s + d, c), r.__i = a, n = null, -1 !== a && (c--, (n = i[a]) && (n.__u |= 131072)), null == n || null === n.__v ? (-1 == a && d--, \"function\" != typeof r.type && (r.__u |= 65536)) : a !== o && (a === o + 1 ? d++ : a > o ? c > l - o ? d += a - o : d-- : d = a < o && a == o - 1 ? a - o : 0, a !== s + d && (r.__u |= 65536))) : (n = i[s]) && null == n.key && n.__e && (n.__e == e.__d && (e.__d = Ur(n)), nn(n, n, !1), i[s] = null, c--);\n if (c) for (s = 0; s < u; s++) null != (n = i[s]) && 0 == (131072 & n.__u) && (n.__e == e.__d && (e.__d = Ur(n)), nn(n, n));\n}\nfunction Qr(e, t, i) {\n var s, r;\n if (\"function\" == typeof e.type) {\n for (s = e.__k, r = 0; s && r < s.length; r++) s[r] && (s[r].__ = e, t = Qr(s[r], t, i));\n return t;\n }\n return e.__e != t && (i.insertBefore(e.__e, t || null), t = e.__e), t && t.nextSibling;\n}\nfunction Jr(e, t, i, s) {\n var r = e.key,\n n = e.type,\n o = i - 1,\n a = i + 1,\n l = t[i];\n if (null === l || l && r == l.key && n === l.type) return i;\n if (s > (null != l && 0 == (131072 & l.__u) ? 1 : 0)) for (; o >= 0 || a < t.length;) {\n if (o >= 0) {\n if ((l = t[o]) && 0 == (131072 & l.__u) && r == l.key && n === l.type) return o;\n o--;\n }\n if (a < t.length) {\n if ((l = t[a]) && 0 == (131072 & l.__u) && r == l.key && n === l.type) return a;\n a++;\n }\n }\n return -1;\n}\nfunction Yr(e, t, i) {\n \"-\" === t[0] ? e.setProperty(t, null == i ? \"\" : i) : e[t] = null == i ? \"\" : \"number\" != typeof i || Or.test(t) ? i : i + \"px\";\n}\nfunction Xr(e, t, i, s, r) {\n var n;\n e: if (\"style\" === t) {\n if (\"string\" == typeof i) e.style.cssText = i;else {\n if (\"string\" == typeof s && (e.style.cssText = s = \"\"), s) for (t in s) i && t in i || Yr(e.style, t, \"\");\n if (i) for (t in i) s && i[t] === s[t] || Yr(e.style, t, i[t]);\n }\n } else if (\"o\" === t[0] && \"n\" === t[1]) n = t !== (t = t.replace(/(PointerCapture)$|Capture$/, \"$1\")), t = t.toLowerCase() in e ? t.toLowerCase().slice(2) : t.slice(2), e.l || (e.l = {}), e.l[t + n] = i, i ? s ? i.u = s.u : (i.u = Date.now(), e.addEventListener(t, n ? Zr : Kr, n)) : e.removeEventListener(t, n ? Zr : Kr, n);else {\n if (r) t = t.replace(/xlink(H|:h)/, \"h\").replace(/sName$/, \"s\");else if (\"width\" !== t && \"height\" !== t && \"href\" !== t && \"list\" !== t && \"form\" !== t && \"tabIndex\" !== t && \"download\" !== t && \"rowSpan\" !== t && \"colSpan\" !== t && \"role\" !== t && t in e) try {\n e[t] = null == i ? \"\" : i;\n break e;\n } catch (e) {}\n \"function\" == typeof i || (null == i || !1 === i && \"-\" !== t[4] ? e.removeAttribute(t) : e.setAttribute(t, i));\n }\n}\nfunction Kr(e) {\n var t = this.l[e.type + !1];\n if (e.t) {\n if (e.t <= t.u) return;\n } else e.t = Date.now();\n return t(Ir.event ? Ir.event(e) : e);\n}\nfunction Zr(e) {\n return this.l[e.type + !0](Ir.event ? Ir.event(e) : e);\n}\nfunction en(e, t, i, s, r, n, o, a, l, u) {\n var c,\n d,\n h,\n _,\n p,\n v,\n g,\n f,\n m,\n b,\n y,\n w,\n S,\n E,\n k,\n x = t.type;\n if (void 0 !== t.constructor) return null;\n 128 & i.__u && (l = !!(32 & i.__u), n = [a = t.__e = i.__e]), (c = Ir.__b) && c(t);\n e: if (\"function\" == typeof x) try {\n if (f = t.props, m = (c = x.contextType) && s[c.__c], b = c ? m ? m.props.value : c.__ : s, i.__c ? g = (d = t.__c = i.__c).__ = d.__E : (\"prototype\" in x && x.prototype.render ? t.__c = d = new x(f, b) : (t.__c = d = new Hr(f, b), d.constructor = x, d.render = on), m && m.sub(d), d.props = f, d.state || (d.state = {}), d.context = b, d.__n = s, h = d.__d = !0, d.__h = [], d._sb = []), null == d.__s && (d.__s = d.state), null != x.getDerivedStateFromProps && (d.__s == d.state && (d.__s = Dr({}, d.__s)), Dr(d.__s, x.getDerivedStateFromProps(f, d.__s))), _ = d.props, p = d.state, d.__v = t, h) null == x.getDerivedStateFromProps && null != d.componentWillMount && d.componentWillMount(), null != d.componentDidMount && d.__h.push(d.componentDidMount);else {\n if (null == x.getDerivedStateFromProps && f !== _ && null != d.componentWillReceiveProps && d.componentWillReceiveProps(f, b), !d.__e && (null != d.shouldComponentUpdate && !1 === d.shouldComponentUpdate(f, d.__s, b) || t.__v === i.__v)) {\n for (t.__v !== i.__v && (d.props = f, d.state = d.__s, d.__d = !1), t.__e = i.__e, t.__k = i.__k, t.__k.forEach(function (e) {\n e && (e.__ = t);\n }), y = 0; y < d._sb.length; y++) d.__h.push(d._sb[y]);\n d._sb = [], d.__h.length && o.push(d);\n break e;\n }\n null != d.componentWillUpdate && d.componentWillUpdate(f, d.__s, b), null != d.componentDidUpdate && d.__h.push(function () {\n d.componentDidUpdate(_, p, v);\n });\n }\n if (d.context = b, d.props = f, d.__P = e, d.__e = !1, w = Ir.__r, S = 0, \"prototype\" in x && x.prototype.render) {\n for (d.state = d.__s, d.__d = !1, w && w(t), c = d.render(d.props, d.state, d.context), E = 0; E < d._sb.length; E++) d.__h.push(d._sb[E]);\n d._sb = [];\n } else do {\n d.__d = !1, w && w(t), c = d.render(d.props, d.state, d.context), d.state = d.__s;\n } while (d.__d && ++S < 25);\n d.state = d.__s, null != d.getChildContext && (s = Dr(Dr({}, s), d.getChildContext())), h || null == d.getSnapshotBeforeUpdate || (v = d.getSnapshotBeforeUpdate(_, p)), Vr(e, Lr(k = null != c && c.type === Br && null == c.key ? c.props.children : c) ? k : [k], t, i, s, r, n, o, a, l, u), d.base = t.__e, t.__u &= -161, d.__h.length && o.push(d), g && (d.__E = d.__ = null);\n } catch (e) {\n t.__v = null, l || null != n ? (t.__e = a, t.__u |= l ? 160 : 32, n[n.indexOf(a)] = null) : (t.__e = i.__e, t.__k = i.__k), Ir.__e(e, t, i);\n } else null == n && t.__v === i.__v ? (t.__k = i.__k, t.__e = i.__e) : t.__e = sn(i.__e, t, i, s, r, n, o, l, u);\n (c = Ir.diffed) && c(t);\n}\nfunction tn(e, t, i) {\n t.__d = void 0;\n for (var s = 0; s < i.length; s++) rn(i[s], i[++s], i[++s]);\n Ir.__c && Ir.__c(t, e), e.some(function (t) {\n try {\n e = t.__h, t.__h = [], e.some(function (e) {\n e.call(t);\n });\n } catch (e) {\n Ir.__e(e, t.__v);\n }\n });\n}\nfunction sn(e, t, i, s, r, n, o, a, l) {\n var u,\n c,\n d,\n h,\n _,\n p,\n v,\n g = i.props,\n f = t.props,\n m = t.type;\n if (\"svg\" === m && (r = !0), null != n) for (u = 0; u < n.length; u++) if ((_ = n[u]) && \"setAttribute\" in _ == !!m && (m ? _.localName === m : 3 === _.nodeType)) {\n e = _, n[u] = null;\n break;\n }\n if (null == e) {\n if (null === m) return document.createTextNode(f);\n e = r ? document.createElementNS(\"http://www.w3.org/2000/svg\", m) : document.createElement(m, f.is && f), n = null, a = !1;\n }\n if (null === m) g === f || a && e.data === f || (e.data = f);else {\n if (n = n && xr.call(e.childNodes), g = i.props || Mr, !a && null != n) for (g = {}, u = 0; u < e.attributes.length; u++) g[(_ = e.attributes[u]).name] = _.value;\n for (u in g) _ = g[u], \"children\" == u || (\"dangerouslySetInnerHTML\" == u ? d = _ : \"key\" === u || u in f || Xr(e, u, null, _, r));\n for (u in f) _ = f[u], \"children\" == u ? h = _ : \"dangerouslySetInnerHTML\" == u ? c = _ : \"value\" == u ? p = _ : \"checked\" == u ? v = _ : \"key\" === u || a && \"function\" != typeof _ || g[u] === _ || Xr(e, u, _, g[u], r);\n if (c) a || d && (c.__html === d.__html || c.__html === e.innerHTML) || (e.innerHTML = c.__html), t.__k = [];else if (d && (e.innerHTML = \"\"), Vr(e, Lr(h) ? h : [h], t, i, s, r && \"foreignObject\" !== m, n, o, n ? n[0] : i.__k && Ur(i, 0), a, l), null != n) for (u = n.length; u--;) null != n[u] && Nr(n[u]);\n a || (u = \"value\", void 0 !== p && (p !== e[u] || \"progress\" === m && !p || \"option\" === m && p !== g[u]) && Xr(e, u, p, g[u], !1), u = \"checked\", void 0 !== v && v !== e[u] && Xr(e, u, v, g[u], !1));\n }\n return e;\n}\nfunction rn(e, t, i) {\n try {\n \"function\" == typeof e ? e(t) : e.current = t;\n } catch (e) {\n Ir.__e(e, i);\n }\n}\nfunction nn(e, t, i) {\n var s, r;\n if (Ir.unmount && Ir.unmount(e), (s = e.ref) && (s.current && s.current !== e.__e || rn(s, null, t)), null != (s = e.__c)) {\n if (s.componentWillUnmount) try {\n s.componentWillUnmount();\n } catch (e) {\n Ir.__e(e, t);\n }\n s.base = s.__P = null, e.__c = void 0;\n }\n if (s = e.__k) for (r = 0; r < s.length; r++) s[r] && nn(s[r], t, i || \"function\" != typeof e.type);\n i || null == e.__e || Nr(e.__e), e.__ = e.__e = e.__d = void 0;\n}\nfunction on(e, t, i) {\n return this.constructor(e, i);\n}\nxr = Ar.slice, Ir = {\n __e: function (e, t, i, s) {\n for (var r, n, o; t = t.__;) if ((r = t.__c) && !r.__) try {\n if ((n = r.constructor) && null != n.getDerivedStateFromError && (r.setState(n.getDerivedStateFromError(e)), o = r.__d), null != r.componentDidCatch && (r.componentDidCatch(e, s || {}), o = r.__d), o) return r.__E = r;\n } catch (t) {\n e = t;\n }\n throw e;\n }\n}, Pr = 0, Hr.prototype.setState = function (e, t) {\n var i;\n i = null != this.__s && this.__s !== this.state ? this.__s : this.__s = Dr({}, this.state), \"function\" == typeof e && (e = e(Dr({}, i), this.props)), e && Dr(i, e), null != e && this.__v && (t && this._sb.push(t), zr(this));\n}, Hr.prototype.forceUpdate = function (e) {\n this.__v && (this.__e = !0, e && this.__h.push(e), zr(this));\n}, Hr.prototype.render = Br, Fr = [], Cr = \"function\" == typeof Promise ? Promise.prototype.then.bind(Promise.resolve()) : setTimeout, Tr = function (e, t) {\n return e.__v.__b - t.__v.__b;\n}, jr.__r = 0, $r = 0;\n!function (e, t) {\n var i = {\n __c: t = \"__cC\" + $r++,\n __: e,\n Consumer: function (e, t) {\n return e.children(t);\n },\n Provider: function (e) {\n var i, s;\n return this.getChildContext || (i = [], (s = {})[t] = this, this.getChildContext = function () {\n return s;\n }, this.shouldComponentUpdate = function (e) {\n this.props.value !== e.value && i.some(function (e) {\n e.__e = !0, zr(e);\n });\n }, this.sub = function (e) {\n i.push(e);\n var t = e.componentWillUnmount;\n e.componentWillUnmount = function () {\n i.splice(i.indexOf(e), 1), t && t.call(e);\n };\n }), e.children;\n }\n };\n i.Provider.__ = i.Consumer.contextType = i;\n}({\n isPreviewMode: !1,\n previewPageIndex: 0,\n handleCloseSurveyPopup: () => {},\n isPopup: !0\n});\nvar an = \"[Surveys]\",\n ln = {\n icontains: t => !!e && e.location.href.toLowerCase().indexOf(t.toLowerCase()) > -1,\n not_icontains: t => !!e && -1 === e.location.href.toLowerCase().indexOf(t.toLowerCase()),\n regex: t => !!e && ht(e.location.href, t),\n not_regex: t => !!e && !ht(e.location.href, t),\n exact: t => (null == e ? void 0 : e.location.href) === t,\n is_not: t => (null == e ? void 0 : e.location.href) !== t\n };\nclass un {\n constructor(e) {\n this.instance = e, this._surveyEventReceiver = null;\n }\n afterDecideResponse(e) {\n this._decideServerResponse = !!e.surveys, this.loadIfEnabled();\n }\n reset() {\n localStorage.removeItem(\"lastSeenSurveyDate\");\n var e = (() => {\n for (var e = [], t = 0; t < localStorage.length; t++) {\n var i = localStorage.key(t);\n null != i && i.startsWith(\"seenSurvey_\") && e.push(i);\n }\n return e;\n })();\n e.forEach(e => localStorage.removeItem(e));\n }\n loadIfEnabled() {\n var e,\n t,\n i,\n s = null == h || null === (e = h.__PosthogExtensions__) || void 0 === e ? void 0 : e.generateSurveys;\n this.instance.config.disable_surveys || !this._decideServerResponse || s || (null == this._surveyEventReceiver && (this._surveyEventReceiver = new kr(this.instance)), null === (t = h.__PosthogExtensions__) || void 0 === t || null === (i = t.loadExternalDependency) || void 0 === i || i.call(t, this.instance, \"surveys\", e => {\n var t, i;\n if (e) return X.error(an, \"Could not load surveys script\", e);\n this._surveyManager = null === (t = h.__PosthogExtensions__) || void 0 === t || null === (i = t.generateSurveys) || void 0 === i ? void 0 : i.call(t, this.instance);\n }));\n }\n getSurveys(e) {\n var t = arguments.length > 1 && void 0 !== arguments[1] && arguments[1];\n if (this.instance.config.disable_surveys) return e([]);\n null == this._surveyEventReceiver && (this._surveyEventReceiver = new kr(this.instance));\n var i = this.instance.get_property(Ie);\n if (i && !t) return e(i);\n this.instance._send_request({\n url: this.instance.requestRouter.endpointFor(\"api\", \"/api/surveys/?token=\".concat(this.instance.config.token)),\n method: \"GET\",\n transport: \"XHR\",\n callback: t => {\n var i;\n if (200 !== t.statusCode || !t.json) return e([]);\n var s,\n r = t.json.surveys || [],\n n = r.filter(e => {\n var t, i, s, r, n, o, a, l, u, c, d, h;\n return (null === (t = e.conditions) || void 0 === t ? void 0 : t.events) && (null === (i = e.conditions) || void 0 === i || null === (s = i.events) || void 0 === s ? void 0 : s.values) && (null === (r = e.conditions) || void 0 === r || null === (n = r.events) || void 0 === n || null === (o = n.values) || void 0 === o ? void 0 : o.length) > 0 || (null === (a = e.conditions) || void 0 === a ? void 0 : a.actions) && (null === (l = e.conditions) || void 0 === l || null === (u = l.actions) || void 0 === u ? void 0 : u.values) && (null === (c = e.conditions) || void 0 === c || null === (d = c.actions) || void 0 === d || null === (h = d.values) || void 0 === h ? void 0 : h.length) > 0;\n });\n n.length > 0 && (null === (s = this._surveyEventReceiver) || void 0 === s || s.register(n));\n return null === (i = this.instance.persistence) || void 0 === i || i.register({\n [Ie]: r\n }), e(r);\n }\n });\n }\n getActiveMatchingSurveys(e) {\n var t = arguments.length > 1 && void 0 !== arguments[1] && arguments[1];\n this.getSurveys(t => {\n var i,\n s = t.filter(e => !(!e.start_date || e.end_date)).filter(e => {\n var t, i, s, r;\n if (!e.conditions) return !0;\n var n = null === (t = e.conditions) || void 0 === t || !t.url || ln[null !== (i = null === (s = e.conditions) || void 0 === s ? void 0 : s.urlMatchType) && void 0 !== i ? i : \"icontains\"](e.conditions.url),\n a = null === (r = e.conditions) || void 0 === r || !r.selector || (null == o ? void 0 : o.querySelector(e.conditions.selector));\n return n && a;\n }),\n r = null === (i = this._surveyEventReceiver) || void 0 === i ? void 0 : i.getSurveys(),\n n = s.filter(e => {\n var t, i, s, n, o, a, l, u, c, d, h;\n if (!(e.linked_flag_key || e.targeting_flag_key || e.internal_targeting_flag_key || null !== (t = e.feature_flag_keys) && void 0 !== t && t.length)) return !0;\n var _ = !e.linked_flag_key || this.instance.featureFlags.isFeatureEnabled(e.linked_flag_key),\n p = !e.targeting_flag_key || this.instance.featureFlags.isFeatureEnabled(e.targeting_flag_key),\n v = (null === (i = e.conditions) || void 0 === i ? void 0 : i.events) && (null === (s = e.conditions) || void 0 === s || null === (n = s.events) || void 0 === n ? void 0 : n.values) && (null === (o = e.conditions) || void 0 === o || null === (a = o.events) || void 0 === a ? void 0 : a.values.length) > 0,\n g = (null === (l = e.conditions) || void 0 === l ? void 0 : l.actions) && (null === (u = e.conditions) || void 0 === u || null === (c = u.actions) || void 0 === c ? void 0 : c.values) && (null === (d = e.conditions) || void 0 === d || null === (h = d.actions) || void 0 === h ? void 0 : h.values.length) > 0,\n f = !v && !g || (null == r ? void 0 : r.includes(e.id)),\n m = this._canActivateRepeatedly(e),\n b = !(e.internal_targeting_flag_key && !m) || this.instance.featureFlags.isFeatureEnabled(e.internal_targeting_flag_key),\n y = this.checkFlags(e);\n return _ && p && b && f && y;\n });\n return e(n);\n }, t);\n }\n checkFlags(e) {\n var t;\n return null === (t = e.feature_flag_keys) || void 0 === t || !t.length || e.feature_flag_keys.every(e => {\n var {\n key: t,\n value: i\n } = e;\n return !t || !i || this.instance.featureFlags.isFeatureEnabled(i);\n });\n }\n getNextSurveyStep(e, t, i) {\n var s,\n r = e.questions[t],\n n = t + 1;\n if (null === (s = r.branching) || void 0 === s || !s.type) return t === e.questions.length - 1 ? br.End : n;\n if (r.branching.type === br.End) return br.End;\n if (r.branching.type === br.SpecificQuestion) {\n if (Number.isInteger(r.branching.index)) return r.branching.index;\n } else if (r.branching.type === br.ResponseBased) {\n if (r.type === mr.SingleChoice) {\n var o,\n a,\n l = r.choices.indexOf(\"\".concat(i));\n if (null !== (o = r.branching) && void 0 !== o && null !== (a = o.responseValues) && void 0 !== a && a.hasOwnProperty(l)) {\n var u = r.branching.responseValues[l];\n return Number.isInteger(u) ? u : u === br.End ? br.End : n;\n }\n } else if (r.type === mr.Rating) {\n var c, d;\n if (\"number\" != typeof i || !Number.isInteger(i)) throw new Error(\"The response type must be an integer\");\n var h = function (e, t) {\n if (3 === t) {\n if (e < 1 || e > 3) throw new Error(\"The response must be in range 1-3\");\n return 1 === e ? \"negative\" : 2 === e ? \"neutral\" : \"positive\";\n }\n if (5 === t) {\n if (e < 1 || e > 5) throw new Error(\"The response must be in range 1-5\");\n return e <= 2 ? \"negative\" : 3 === e ? \"neutral\" : \"positive\";\n }\n if (7 === t) {\n if (e < 1 || e > 7) throw new Error(\"The response must be in range 1-7\");\n return e <= 3 ? \"negative\" : 4 === e ? \"neutral\" : \"positive\";\n }\n if (10 === t) {\n if (e < 0 || e > 10) throw new Error(\"The response must be in range 0-10\");\n return e <= 6 ? \"detractors\" : e <= 8 ? \"passives\" : \"promoters\";\n }\n throw new Error(\"The scale must be one of: 3, 5, 7, 10\");\n }(i, r.scale);\n if (null !== (c = r.branching) && void 0 !== c && null !== (d = c.responseValues) && void 0 !== d && d.hasOwnProperty(h)) {\n var _ = r.branching.responseValues[h];\n return Number.isInteger(_) ? _ : _ === br.End ? br.End : n;\n }\n }\n return n;\n }\n return X.warn(an, \"Falling back to next question index due to unexpected branching type\"), n;\n }\n _canActivateRepeatedly(e) {\n var t;\n return j(null === (t = h.__PosthogExtensions__) || void 0 === t ? void 0 : t.canActivateRepeatedly) ? (X.warn(an, \"canActivateRepeatedly is not defined, must init before calling\"), !1) : h.__PosthogExtensions__.canActivateRepeatedly(e);\n }\n canRenderSurvey(e) {\n j(this._surveyManager) ? X.warn(an, \"canActivateRepeatedly is not defined, must init before calling\") : this.getSurveys(t => {\n var i = t.filter(t => t.id === e)[0];\n this._surveyManager.canRenderSurvey(i);\n });\n }\n renderSurvey(e, t) {\n j(this._surveyManager) ? X.warn(an, \"canActivateRepeatedly is not defined, must init before calling\") : this.getSurveys(i => {\n var s = i.filter(t => t.id === e)[0];\n this._surveyManager.renderSurvey(s, null == o ? void 0 : o.querySelector(t));\n });\n }\n}\nclass cn {\n constructor(e) {\n var t, i;\n te(this, \"serverLimits\", {}), te(this, \"lastEventRateLimited\", !1), te(this, \"checkForLimiting\", e => {\n var t = e.text;\n if (t && t.length) try {\n (JSON.parse(t).quota_limited || []).forEach(e => {\n X.info(\"[RateLimiter] \".concat(e || \"events\", \" is quota limited.\")), this.serverLimits[e] = new Date().getTime() + 6e4;\n });\n } catch (e) {\n return void X.warn('[RateLimiter] could not rate limit - continuing. Error: \"'.concat(null == e ? void 0 : e.message, '\"'), {\n text: t\n });\n }\n }), this.instance = e, this.captureEventsPerSecond = (null === (t = e.config.rate_limiting) || void 0 === t ? void 0 : t.events_per_second) || 10, this.captureEventsBurstLimit = Math.max((null === (i = e.config.rate_limiting) || void 0 === i ? void 0 : i.events_burst_limit) || 10 * this.captureEventsPerSecond, this.captureEventsPerSecond), this.lastEventRateLimited = this.clientRateLimitContext(!0).isRateLimited;\n }\n clientRateLimitContext() {\n var e,\n t,\n i,\n s = arguments.length > 0 && void 0 !== arguments[0] && arguments[0],\n r = new Date().getTime(),\n n = null !== (e = null === (t = this.instance.persistence) || void 0 === t ? void 0 : t.get_property(Te)) && void 0 !== e ? e : {\n tokens: this.captureEventsBurstLimit,\n last: r\n };\n n.tokens += (r - n.last) / 1e3 * this.captureEventsPerSecond, n.last = r, n.tokens > this.captureEventsBurstLimit && (n.tokens = this.captureEventsBurstLimit);\n var o = n.tokens < 1;\n return o || s || (n.tokens = Math.max(0, n.tokens - 1)), !o || this.lastEventRateLimited || s || this.instance.capture(\"$$client_ingestion_warning\", {\n $$client_ingestion_warning_message: \"posthog-js client rate limited. Config is set to \".concat(this.captureEventsPerSecond, \" events per second and \").concat(this.captureEventsBurstLimit, \" events burst limit.\")\n }, {\n skip_client_rate_limiting: !0\n }), this.lastEventRateLimited = o, null === (i = this.instance.persistence) || void 0 === i || i.set_property(Te, n), {\n isRateLimited: o,\n remainingTokens: n.tokens\n };\n }\n isServerRateLimited(e) {\n var t = this.serverLimits[e || \"events\"] || !1;\n return !1 !== t && new Date().getTime() < t;\n }\n}\nvar dn = () => ee({\n initialPathName: (null == a ? void 0 : a.pathname) || \"\",\n referringDomain: _i.referringDomain()\n}, _i.campaignParams());\nclass hn {\n constructor(e, t, i) {\n te(this, \"_onSessionIdCallback\", e => {\n var t = this._getStoredProps();\n if (!t || t.sessionId !== e) {\n var i = {\n sessionId: e,\n props: this._sessionSourceParamGenerator()\n };\n this._persistence.register({\n [Ce]: i\n });\n }\n }), this._sessionIdManager = e, this._persistence = t, this._sessionSourceParamGenerator = i || dn, this._sessionIdManager.onSessionId(this._onSessionIdCallback);\n }\n _getStoredProps() {\n return this._persistence.props[Ce];\n }\n getSessionProps() {\n var e,\n t = null === (e = this._getStoredProps()) || void 0 === e ? void 0 : e.props;\n return t ? {\n $client_session_initial_referring_host: t.referringDomain,\n $client_session_initial_pathname: t.initialPathName,\n $client_session_initial_utm_source: t.utm_source,\n $client_session_initial_utm_campaign: t.utm_campaign,\n $client_session_initial_utm_medium: t.utm_medium,\n $client_session_initial_utm_content: t.utm_content,\n $client_session_initial_utm_term: t.utm_term\n } : {};\n }\n}\nvar _n = [\"ahrefsbot\", \"ahrefssiteaudit\", \"applebot\", \"baiduspider\", \"bingbot\", \"bingpreview\", \"bot.htm\", \"bot.php\", \"crawler\", \"deepscan\", \"duckduckbot\", \"facebookexternal\", \"facebookcatalog\", \"gptbot\", \"http://yandex.com/bots\", \"hubspot\", \"ia_archiver\", \"linkedinbot\", \"mj12bot\", \"msnbot\", \"nessus\", \"petalbot\", \"pinterest\", \"prerender\", \"rogerbot\", \"screaming frog\", \"semrushbot\", \"sitebulb\", \"slurp\", \"turnitin\", \"twitterbot\", \"vercelbot\", \"yahoo! slurp\", \"yandexbot\", \"headlesschrome\", \"cypress\", \"Google-HotelAdsVerifier\", \"adsbot-google\", \"apis-google\", \"duplexweb-google\", \"feedfetcher-google\", \"google favicon\", \"google web preview\", \"google-read-aloud\", \"googlebot\", \"googleweblight\", \"mediapartners-google\", \"storebot-google\", \"Bytespider;\"],\n pn = function (e, t) {\n if (!e) return !1;\n var i = e.toLowerCase();\n return _n.concat(t || []).some(e => {\n var t = e.toLowerCase();\n return -1 !== i.indexOf(t);\n });\n },\n vn = function (e, t) {\n if (!e) return !1;\n var i = e.userAgent;\n if (i && pn(i, t)) return !0;\n try {\n var s = null == e ? void 0 : e.userAgentData;\n if (null != s && s.brands && s.brands.some(e => pn(null == e ? void 0 : e.brand, t))) return !0;\n } catch (e) {}\n return !!e.webdriver;\n };\nclass gn {\n constructor() {\n this.clicks = [];\n }\n isRageClick(e, t, i) {\n var s = this.clicks[this.clicks.length - 1];\n if (s && Math.abs(e - s.x) + Math.abs(t - s.y) < 30 && i - s.timestamp < 1e3) {\n if (this.clicks.push({\n x: e,\n y: t,\n timestamp: i\n }), 3 === this.clicks.length) return !0;\n } else this.clicks = [{\n x: e,\n y: t,\n timestamp: i\n }];\n return !1;\n }\n}\nvar fn = \"[Dead Clicks]\",\n mn = () => !0,\n bn = e => {\n var t,\n i = !(null === (t = e.instance.persistence) || void 0 === t || !t.get_property(ce)),\n s = e.instance.config.capture_dead_clicks;\n return G(s) ? s : i;\n };\nclass yn {\n get lazyLoadedDeadClicksAutocapture() {\n return this._lazyLoadedDeadClicksAutocapture;\n }\n constructor(e, t, i) {\n this.instance = e, this.isEnabled = t, this.onCapture = i, this.startIfEnabled();\n }\n afterDecideResponse(e) {\n this.instance.persistence && this.instance.persistence.register({\n [ce]: null == e ? void 0 : e.captureDeadClicks\n }), this.startIfEnabled();\n }\n startIfEnabled() {\n this.isEnabled(this) && this.loadScript(() => {\n this.start();\n });\n }\n loadScript(e) {\n var t, i, s;\n null !== (t = h.__PosthogExtensions__) && void 0 !== t && t.initDeadClicksAutocapture && e(), null === (i = h.__PosthogExtensions__) || void 0 === i || null === (s = i.loadExternalDependency) || void 0 === s || s.call(i, this.instance, \"dead-clicks-autocapture\", t => {\n t ? X.error(fn + \" failed to load script\", t) : e();\n });\n }\n start() {\n var e;\n if (o) {\n if (!this._lazyLoadedDeadClicksAutocapture && null !== (e = h.__PosthogExtensions__) && void 0 !== e && e.initDeadClicksAutocapture) {\n var t = q(this.instance.config.capture_dead_clicks) ? this.instance.config.capture_dead_clicks : {};\n t.__onCapture = this.onCapture, this._lazyLoadedDeadClicksAutocapture = h.__PosthogExtensions__.initDeadClicksAutocapture(this.instance, t), this._lazyLoadedDeadClicksAutocapture.start(o), X.info(\"\".concat(fn, \" starting...\"));\n }\n } else X.error(fn + \" `document` not found. Cannot start.\");\n }\n stop() {\n this._lazyLoadedDeadClicksAutocapture && (this._lazyLoadedDeadClicksAutocapture.stop(), this._lazyLoadedDeadClicksAutocapture = void 0, X.info(\"\".concat(fn, \" stopping...\")));\n }\n}\nclass wn {\n constructor(t) {\n var i;\n te(this, \"rageclicks\", new gn()), te(this, \"_enabledServerSide\", !1), te(this, \"_initialized\", !1), te(this, \"_flushInterval\", null), this.instance = t, this._enabledServerSide = !(null === (i = this.instance.persistence) || void 0 === i || !i.props[ae]), null == e || e.addEventListener(\"beforeunload\", () => {\n this.flush();\n });\n }\n get flushIntervalMilliseconds() {\n var e = 5e3;\n return q(this.instance.config.capture_heatmaps) && this.instance.config.capture_heatmaps.flush_interval_milliseconds && (e = this.instance.config.capture_heatmaps.flush_interval_milliseconds), e;\n }\n get isEnabled() {\n return H(this.instance.config.capture_heatmaps) ? H(this.instance.config.enable_heatmaps) ? this._enabledServerSide : this.instance.config.enable_heatmaps : !1 !== this.instance.config.capture_heatmaps;\n }\n startIfEnabled() {\n if (this.isEnabled) {\n if (this._initialized) return;\n X.info(\"[heatmaps] starting...\"), this._setupListeners(), this._flushInterval = setInterval(this.flush.bind(this), this.flushIntervalMilliseconds);\n } else {\n var e, t;\n clearInterval(null !== (e = this._flushInterval) && void 0 !== e ? e : void 0), null === (t = this.deadClicksCapture) || void 0 === t || t.stop(), this.getAndClearBuffer();\n }\n }\n afterDecideResponse(e) {\n var t = !!e.heatmaps;\n this.instance.persistence && this.instance.persistence.register({\n [ae]: t\n }), this._enabledServerSide = t, this.startIfEnabled();\n }\n getAndClearBuffer() {\n var e = this.buffer;\n return this.buffer = void 0, e;\n }\n _onDeadClick(e) {\n this._onClick(e.originalEvent, \"deadclick\");\n }\n _setupListeners() {\n e && o && (P(o, \"click\", t => this._onClick(t || (null == e ? void 0 : e.event)), !1, !0), P(o, \"mousemove\", t => this._onMouseMove(t || (null == e ? void 0 : e.event)), !1, !0), this.deadClicksCapture = new yn(this.instance, mn, this._onDeadClick.bind(this)), this.deadClicksCapture.startIfEnabled(), this._initialized = !0);\n }\n _getProperties(t, i) {\n var s = this.instance.scrollManager.scrollY(),\n r = this.instance.scrollManager.scrollX(),\n n = this.instance.scrollManager.scrollElement(),\n o = function (t, i, s) {\n for (var r = t; r && wi(r) && !Si(r, \"body\");) {\n if (r === s) return !1;\n if (b(i, null == e ? void 0 : e.getComputedStyle(r).position)) return !0;\n r = $i(r);\n }\n return !1;\n }(Ci(t), [\"fixed\", \"sticky\"], n);\n return {\n x: t.clientX + (o ? 0 : r),\n y: t.clientY + (o ? 0 : s),\n target_fixed: o,\n type: i\n };\n }\n _onClick(e) {\n var t,\n i = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : \"click\";\n if (!yi(e.target)) {\n var s = this._getProperties(e, i);\n null !== (t = this.rageclicks) && void 0 !== t && t.isRageClick(e.clientX, e.clientY, new Date().getTime()) && this._capture(ee(ee({}, s), {}, {\n type: \"rageclick\"\n })), this._capture(s);\n }\n }\n _onMouseMove(e) {\n yi(e.target) || (clearTimeout(this._mouseMoveTimeout), this._mouseMoveTimeout = setTimeout(() => {\n this._capture(this._getProperties(e, \"mousemove\"));\n }, 500));\n }\n _capture(t) {\n if (e) {\n var i = e.location.href;\n this.buffer = this.buffer || {}, this.buffer[i] || (this.buffer[i] = []), this.buffer[i].push(t);\n }\n }\n flush() {\n this.buffer && !B(this.buffer) && this.instance.capture(\"$$heatmap\", {\n $heatmap_data: this.getAndClearBuffer()\n });\n }\n}\nclass Sn {\n constructor(e) {\n te(this, \"_updateScrollData\", () => {\n var e, t, i, s;\n this.context || (this.context = {});\n var r = this.scrollElement(),\n n = this.scrollY(),\n o = r ? Math.max(0, r.scrollHeight - r.clientHeight) : 0,\n a = n + ((null == r ? void 0 : r.clientHeight) || 0),\n l = (null == r ? void 0 : r.scrollHeight) || 0;\n this.context.lastScrollY = Math.ceil(n), this.context.maxScrollY = Math.max(n, null !== (e = this.context.maxScrollY) && void 0 !== e ? e : 0), this.context.maxScrollHeight = Math.max(o, null !== (t = this.context.maxScrollHeight) && void 0 !== t ? t : 0), this.context.lastContentY = a, this.context.maxContentY = Math.max(a, null !== (i = this.context.maxContentY) && void 0 !== i ? i : 0), this.context.maxContentHeight = Math.max(l, null !== (s = this.context.maxContentHeight) && void 0 !== s ? s : 0);\n }), this.instance = e;\n }\n getContext() {\n return this.context;\n }\n resetContext() {\n var e = this.context;\n return setTimeout(this._updateScrollData, 0), e;\n }\n startMeasuringScrollPosition() {\n null == e || e.addEventListener(\"scroll\", this._updateScrollData, !0), null == e || e.addEventListener(\"scrollend\", this._updateScrollData, !0), null == e || e.addEventListener(\"resize\", this._updateScrollData);\n }\n scrollElement() {\n if (!this.instance.config.scroll_root_selector) return null == e ? void 0 : e.document.documentElement;\n var t = D(this.instance.config.scroll_root_selector) ? this.instance.config.scroll_root_selector : [this.instance.config.scroll_root_selector];\n for (var i of t) {\n var s = null == e ? void 0 : e.document.querySelector(i);\n if (s) return s;\n }\n }\n scrollY() {\n if (this.instance.config.scroll_root_selector) {\n var t = this.scrollElement();\n return t && t.scrollTop || 0;\n }\n return e && (e.scrollY || e.pageYOffset || e.document.documentElement.scrollTop) || 0;\n }\n scrollX() {\n if (this.instance.config.scroll_root_selector) {\n var t = this.scrollElement();\n return t && t.scrollLeft || 0;\n }\n return e && (e.scrollX || e.pageXOffset || e.document.documentElement.scrollLeft) || 0;\n }\n}\nfunction En(e, t) {\n return t.length > e ? t.slice(0, e) + \"...\" : t;\n}\nfunction kn(e) {\n if (e.previousElementSibling) return e.previousElementSibling;\n var t = e;\n do {\n t = t.previousSibling;\n } while (t && !wi(t));\n return t;\n}\nfunction xn(e, t, i, s) {\n var r = e.tagName.toLowerCase(),\n n = {\n tag_name: r\n };\n Ti.indexOf(r) > -1 && !i && (\"a\" === r.toLowerCase() || \"button\" === r.toLowerCase() ? n.$el_text = En(1024, Wi(e)) : n.$el_text = En(1024, Ri(e)));\n var o = Pi(e);\n o.length > 0 && (n.classes = o.filter(function (e) {\n return \"\" !== e;\n })), f(e.attributes, function (i) {\n var r;\n if ((!Oi(e) || -1 !== [\"name\", \"id\", \"class\", \"aria-label\"].indexOf(i.name)) && (null == s || !s.includes(i.name)) && !t && Ui(i.value) && (r = i.name, !U(r) || \"_ngcontent\" !== r.substring(0, 10) && \"_nghost\" !== r.substring(0, 7))) {\n var o = i.value;\n \"class\" === i.name && (o = xi(o).join(\" \")), n[\"attr__\" + i.name] = En(1024, o);\n }\n });\n for (var a = 1, l = 1, u = e; u = kn(u);) a++, u.tagName === e.tagName && l++;\n return n.nth_child = a, n.nth_of_type = l, n;\n}\nfunction In(t, i) {\n for (var s, r, {\n e: n,\n maskAllElementAttributes: o,\n maskAllText: a,\n elementAttributeIgnoreList: l,\n elementsChainAsString: u\n } = i, c = [t], d = t; d.parentNode && !Si(d, \"body\");) ki(d.parentNode) ? (c.push(d.parentNode.host), d = d.parentNode.host) : (c.push(d.parentNode), d = d.parentNode);\n var h,\n _ = [],\n p = {},\n v = !1,\n g = !1;\n if (f(c, e => {\n var t = Ai(e);\n \"a\" === e.tagName.toLowerCase() && (v = e.getAttribute(\"href\"), v = t && v && Ui(v) && v), b(Pi(e), \"ph-no-capture\") && (g = !0), _.push(xn(e, o, a, l));\n var i = function (e) {\n if (!Ai(e)) return {};\n var t = {};\n return f(e.attributes, function (e) {\n if (e.name && 0 === e.name.indexOf(\"data-ph-capture-attribute\")) {\n var i = e.name.replace(\"data-ph-capture-attribute-\", \"\"),\n s = e.value;\n i && s && Ui(s) && (t[i] = s);\n }\n }), t;\n }(e);\n m(p, i);\n }), g) return {\n props: {},\n explicitNoCapture: g\n };\n if (a || (\"a\" === t.tagName.toLowerCase() || \"button\" === t.tagName.toLowerCase() ? _[0].$el_text = Wi(t) : _[0].$el_text = Ri(t)), v) {\n var y, w;\n _[0].attr__href = v;\n var S = null === (y = dt(v)) || void 0 === y ? void 0 : y.host,\n E = null == e || null === (w = e.location) || void 0 === w ? void 0 : w.host;\n S && E && S !== E && (h = v);\n }\n return {\n props: m({\n $event_type: n.type,\n $ce_version: 1\n }, u ? {\n $elements_chain: ji(_)\n } : {\n $elements: _\n }, null !== (s = _[0]) && void 0 !== s && s.$el_text ? {\n $el_text: null === (r = _[0]) || void 0 === r ? void 0 : r.$el_text\n } : {}, h && \"click\" === n.type ? {\n $external_click_url: h\n } : {}, p)\n };\n}\nclass Pn {\n constructor(e) {\n te(this, \"_initialized\", !1), te(this, \"_isDisabledServerSide\", null), te(this, \"rageclicks\", new gn()), te(this, \"_elementsChainAsString\", !1), this.instance = e, this._elementSelectors = null;\n }\n get config() {\n var e,\n t,\n i = q(this.instance.config.autocapture) ? this.instance.config.autocapture : {};\n return i.url_allowlist = null === (e = i.url_allowlist) || void 0 === e ? void 0 : e.map(e => new RegExp(e)), i.url_ignorelist = null === (t = i.url_ignorelist) || void 0 === t ? void 0 : t.map(e => new RegExp(e)), i;\n }\n _addDomEventHandlers() {\n if (this.isBrowserSupported()) {\n if (e && o) {\n var t = t => {\n t = t || (null == e ? void 0 : e.event);\n try {\n this._captureEvent(t);\n } catch (e) {\n X.error(\"Failed to capture event\", e);\n }\n },\n i = t => {\n t = t || (null == e ? void 0 : e.event), this._captureEvent(t, C);\n };\n P(o, \"submit\", t, !1, !0), P(o, \"change\", t, !1, !0), P(o, \"click\", t, !1, !0), this.config.capture_copied_text && (P(o, \"copy\", i, !1, !0), P(o, \"cut\", i, !1, !0));\n }\n } else X.info(\"Disabling Automatic Event Collection because this browser is not supported\");\n }\n startIfEnabled() {\n this.isEnabled && !this._initialized && (this._addDomEventHandlers(), this._initialized = !0);\n }\n afterDecideResponse(e) {\n e.elementsChainAsString && (this._elementsChainAsString = e.elementsChainAsString), this.instance.persistence && this.instance.persistence.register({\n [oe]: !!e.autocapture_opt_out\n }), this._isDisabledServerSide = !!e.autocapture_opt_out, this.startIfEnabled();\n }\n setElementSelectors(e) {\n this._elementSelectors = e;\n }\n getElementSelectors(e) {\n var t,\n i = [];\n return null === (t = this._elementSelectors) || void 0 === t || t.forEach(t => {\n var s = null == o ? void 0 : o.querySelectorAll(t);\n null == s || s.forEach(s => {\n e === s && i.push(t);\n });\n }), i;\n }\n get isEnabled() {\n var e,\n t,\n i = null === (e = this.instance.persistence) || void 0 === e ? void 0 : e.props[oe],\n s = this._isDisabledServerSide;\n if (z(s) && !G(i) && !this.instance.config.advanced_disable_decide) return !1;\n var r = null !== (t = this._isDisabledServerSide) && void 0 !== t ? t : !!i;\n return !!this.instance.config.autocapture && !r;\n }\n _captureEvent(t) {\n var i = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : \"$autocapture\";\n if (this.isEnabled) {\n var s,\n r = Ci(t);\n if (Ei(r) && (r = r.parentNode || null), \"$autocapture\" === i && \"click\" === t.type && t instanceof MouseEvent) this.instance.config.rageclick && null !== (s = this.rageclicks) && void 0 !== s && s.isRageClick(t.clientX, t.clientY, new Date().getTime()) && this._captureEvent(t, \"$rageclick\");\n var n = i === C;\n if (r && Mi(r, t, this.config, n, n ? [\"copy\", \"cut\"] : void 0)) {\n var {\n props: o,\n explicitNoCapture: a\n } = In(r, {\n e: t,\n maskAllElementAttributes: this.instance.config.mask_all_element_attributes,\n maskAllText: this.instance.config.mask_all_text,\n elementAttributeIgnoreList: this.config.element_attribute_ignorelist,\n elementsChainAsString: this._elementsChainAsString\n });\n if (a) return !1;\n var l = this.getElementSelectors(r);\n if (l && l.length > 0 && (o.$element_selectors = l), i === C) {\n var u,\n c = Fi(null == e || null === (u = e.getSelection()) || void 0 === u ? void 0 : u.toString()),\n d = t.type || \"clipboard\";\n if (!c) return !1;\n o.$selected_content = c, o.$copy_type = d;\n }\n return this.instance.capture(i, o), !0;\n }\n }\n }\n isBrowserSupported() {\n return N(null == o ? void 0 : o.querySelectorAll);\n }\n}\nclass Fn {\n constructor(e) {\n te(this, \"_restoreXHRPatch\", void 0), te(this, \"_restoreFetchPatch\", void 0), te(this, \"_startCapturing\", () => {\n var e, t, i, s;\n H(this._restoreXHRPatch) && (null === (e = h.__PosthogExtensions__) || void 0 === e || null === (t = e.tracingHeadersPatchFns) || void 0 === t || t._patchXHR(this.instance.sessionManager));\n H(this._restoreFetchPatch) && (null === (i = h.__PosthogExtensions__) || void 0 === i || null === (s = i.tracingHeadersPatchFns) || void 0 === s || s._patchFetch(this.instance.sessionManager));\n }), this.instance = e;\n }\n _loadScript(e) {\n var t, i, s;\n null !== (t = h.__PosthogExtensions__) && void 0 !== t && t.tracingHeadersPatchFns && e(), null === (i = h.__PosthogExtensions__) || void 0 === i || null === (s = i.loadExternalDependency) || void 0 === s || s.call(i, this.instance, \"tracing-headers\", t => {\n if (t) return X.error(\"[TRACING-HEADERS] failed to load script\", t);\n e();\n });\n }\n startIfEnabledOrStop() {\n var e, t;\n this.instance.config.__add_tracing_headers ? this._loadScript(this._startCapturing) : (null === (e = this._restoreXHRPatch) || void 0 === e || e.call(this), null === (t = this._restoreFetchPatch) || void 0 === t || t.call(this), this._restoreXHRPatch = void 0, this._restoreFetchPatch = void 0);\n }\n}\nvar Rn;\n!function (e) {\n e[e.PENDING = -1] = \"PENDING\", e[e.DENIED = 0] = \"DENIED\", e[e.GRANTED = 1] = \"GRANTED\";\n}(Rn || (Rn = {}));\nclass Cn {\n constructor(e) {\n this.instance = e;\n }\n get config() {\n return this.instance.config;\n }\n get consent() {\n return this.getDnt() ? Rn.DENIED : this.storedConsent;\n }\n isOptedOut() {\n return this.consent === Rn.DENIED || this.consent === Rn.PENDING && this.config.opt_out_capturing_by_default;\n }\n isOptedIn() {\n return !this.isOptedOut();\n }\n optInOut(e) {\n this.storage.set(this.storageKey, e ? 1 : 0, this.config.cookie_expiration, this.config.cross_subdomain_cookie, this.config.secure_cookie);\n }\n reset() {\n this.storage.remove(this.storageKey, this.config.cross_subdomain_cookie);\n }\n get storageKey() {\n var {\n token: e,\n opt_out_capturing_cookie_prefix: t\n } = this.instance.config;\n return (t || \"__ph_opt_in_out_\") + e;\n }\n get storedConsent() {\n var e = this.storage.get(this.storageKey);\n return \"1\" === e ? Rn.GRANTED : \"0\" === e ? Rn.DENIED : Rn.PENDING;\n }\n get storage() {\n if (!this._storage) {\n var e = this.config.opt_out_capturing_persistence_type;\n this._storage = \"localStorage\" === e ? st : tt;\n var t = \"localStorage\" === e ? tt : st;\n t.get(this.storageKey) && (this._storage.get(this.storageKey) || this.optInOut(\"1\" === t.get(this.storageKey)), t.remove(this.storageKey, this.config.cross_subdomain_cookie));\n }\n return this._storage;\n }\n getDnt() {\n return !!this.config.respect_dnt && !!F([null == n ? void 0 : n.doNotTrack, null == n ? void 0 : n.msDoNotTrack, h.doNotTrack], e => b([!0, 1, \"1\", \"yes\"], e));\n }\n}\nvar Tn = \"[Exception Autocapture]\";\nclass $n {\n constructor(t) {\n var i;\n te(this, \"originalOnUnhandledRejectionHandler\", void 0), te(this, \"startCapturing\", () => {\n var t, i, s, r;\n if (e && this.isEnabled && !this.hasHandlers && !this.isCapturing) {\n var n = null === (t = h.__PosthogExtensions__) || void 0 === t || null === (i = t.errorWrappingFunctions) || void 0 === i ? void 0 : i.wrapOnError,\n o = null === (s = h.__PosthogExtensions__) || void 0 === s || null === (r = s.errorWrappingFunctions) || void 0 === r ? void 0 : r.wrapUnhandledRejection;\n if (n && o) try {\n this.unwrapOnError = n(this.captureException.bind(this)), this.unwrapUnhandledRejection = o(this.captureException.bind(this));\n } catch (e) {\n X.error(Tn + \" failed to start\", e), this.stopCapturing();\n } else X.error(Tn + \" failed to load error wrapping functions - cannot start\");\n }\n }), this.instance = t, this.remoteEnabled = !(null === (i = this.instance.persistence) || void 0 === i || !i.props[le]), this.startIfEnabled();\n }\n get isEnabled() {\n var e;\n return null !== (e = this.remoteEnabled) && void 0 !== e && e;\n }\n get isCapturing() {\n var t;\n return !(null == e || null === (t = e.onerror) || void 0 === t || !t.__POSTHOG_INSTRUMENTED__);\n }\n get hasHandlers() {\n return this.originalOnUnhandledRejectionHandler || this.unwrapOnError;\n }\n startIfEnabled() {\n this.isEnabled && !this.isCapturing && (X.info(Tn + \" enabled, starting...\"), this.loadScript(this.startCapturing));\n }\n loadScript(e) {\n var t, i;\n this.hasHandlers && e(), null === (t = h.__PosthogExtensions__) || void 0 === t || null === (i = t.loadExternalDependency) || void 0 === i || i.call(t, this.instance, \"exception-autocapture\", t => {\n if (t) return X.error(Tn + \" failed to load script\", t);\n e();\n });\n }\n stopCapturing() {\n var e, t;\n null === (e = this.unwrapOnError) || void 0 === e || e.call(this), null === (t = this.unwrapUnhandledRejection) || void 0 === t || t.call(this);\n }\n afterDecideResponse(e) {\n var t = e.autocaptureExceptions;\n this.remoteEnabled = !!t || !1, this.instance.persistence && this.instance.persistence.register({\n [le]: this.remoteEnabled\n }), this.startIfEnabled();\n }\n captureException(e) {\n var t = this.instance.requestRouter.endpointFor(\"ui\");\n e.$exception_personURL = \"\".concat(t, \"/project/\").concat(this.instance.config.token, \"/person/\").concat(this.instance.get_distinct_id()), this.instance.exceptions.sendExceptionEvent(e);\n }\n}\nvar Mn = 9e5,\n An = \"[Web Vitals]\";\nclass On {\n constructor(e) {\n var t;\n te(this, \"_enabledServerSide\", !1), te(this, \"_initialized\", !1), te(this, \"buffer\", {\n url: void 0,\n metrics: [],\n firstMetricTimestamp: void 0\n }), te(this, \"_flushToCapture\", () => {\n clearTimeout(this._delayedFlushTimer), 0 !== this.buffer.metrics.length && (this.instance.capture(\"$web_vitals\", this.buffer.metrics.reduce((e, t) => ee(ee({}, e), {}, {\n [\"$web_vitals_\".concat(t.name, \"_event\")]: ee({}, t),\n [\"$web_vitals_\".concat(t.name, \"_value\")]: t.value\n }), {})), this.buffer = {\n url: void 0,\n metrics: [],\n firstMetricTimestamp: void 0\n });\n }), te(this, \"_addToBuffer\", e => {\n var t,\n i = null === (t = this.instance.sessionManager) || void 0 === t ? void 0 : t.checkAndGetSessionAndWindowId(!0);\n if (H(i)) X.error(An + \"Could not read session ID. Dropping metrics!\");else {\n this.buffer = this.buffer || {\n url: void 0,\n metrics: [],\n firstMetricTimestamp: void 0\n };\n var s = this._currentURL();\n if (!H(s)) if (j(null == e ? void 0 : e.name) || j(null == e ? void 0 : e.value)) X.error(An + \"Invalid metric received\", e);else if (this._maxAllowedValue && e.value >= this._maxAllowedValue) X.error(An + \"Ignoring metric with value >= \" + this._maxAllowedValue, e);else this.buffer.url !== s && (this._flushToCapture(), this._delayedFlushTimer = setTimeout(this._flushToCapture, this.flushToCaptureTimeoutMs)), H(this.buffer.url) && (this.buffer.url = s), this.buffer.firstMetricTimestamp = H(this.buffer.firstMetricTimestamp) ? Date.now() : this.buffer.firstMetricTimestamp, e.attribution && e.attribution.interactionTargetElement && (e.attribution.interactionTargetElement = void 0), this.buffer.metrics.push(ee(ee({}, e), {}, {\n $current_url: s,\n $session_id: i.sessionId,\n $window_id: i.windowId,\n timestamp: Date.now()\n })), this.buffer.metrics.length === this.allowedMetrics.length && this._flushToCapture();\n }\n }), te(this, \"_startCapturing\", () => {\n var e,\n t,\n i,\n s,\n r = h.__PosthogExtensions__;\n H(r) || H(r.postHogWebVitalsCallbacks) || ({\n onLCP: e,\n onCLS: t,\n onFCP: i,\n onINP: s\n } = r.postHogWebVitalsCallbacks), e && t && i && s ? (this.allowedMetrics.indexOf(\"LCP\") > -1 && e(this._addToBuffer.bind(this)), this.allowedMetrics.indexOf(\"CLS\") > -1 && t(this._addToBuffer.bind(this)), this.allowedMetrics.indexOf(\"FCP\") > -1 && i(this._addToBuffer.bind(this)), this.allowedMetrics.indexOf(\"INP\") > -1 && s(this._addToBuffer.bind(this)), this._initialized = !0) : X.error(An + \"web vitals callbacks not loaded - not starting\");\n }), this.instance = e, this._enabledServerSide = !(null === (t = this.instance.persistence) || void 0 === t || !t.props[ue]), this.startIfEnabled();\n }\n get allowedMetrics() {\n var e,\n t,\n i = q(this.instance.config.capture_performance) ? null === (e = this.instance.config.capture_performance) || void 0 === e ? void 0 : e.web_vitals_allowed_metrics : void 0;\n return H(i) ? (null === (t = this.instance.persistence) || void 0 === t ? void 0 : t.props[de]) || [\"CLS\", \"FCP\", \"INP\", \"LCP\"] : i;\n }\n get flushToCaptureTimeoutMs() {\n return (q(this.instance.config.capture_performance) ? this.instance.config.capture_performance.web_vitals_delayed_flush_ms : void 0) || 5e3;\n }\n get _maxAllowedValue() {\n var e = q(this.instance.config.capture_performance) && V(this.instance.config.capture_performance.__web_vitals_max_value) ? this.instance.config.capture_performance.__web_vitals_max_value : Mn;\n return 0 < e && e <= 6e4 ? Mn : e;\n }\n get isEnabled() {\n var e = q(this.instance.config.capture_performance) ? this.instance.config.capture_performance.web_vitals : void 0;\n return G(e) ? e : this._enabledServerSide;\n }\n startIfEnabled() {\n this.isEnabled && !this._initialized && (X.info(An + \" enabled, starting...\"), this.loadScript(this._startCapturing));\n }\n afterDecideResponse(e) {\n var t = q(e.capturePerformance) && !!e.capturePerformance.web_vitals,\n i = q(e.capturePerformance) ? e.capturePerformance.web_vitals_allowed_metrics : void 0;\n this.instance.persistence && (this.instance.persistence.register({\n [ue]: t\n }), this.instance.persistence.register({\n [de]: i\n })), this._enabledServerSide = t, this.startIfEnabled();\n }\n loadScript(e) {\n var t, i, s;\n null !== (t = h.__PosthogExtensions__) && void 0 !== t && t.postHogWebVitalsCallbacks && e(), null === (i = h.__PosthogExtensions__) || void 0 === i || null === (s = i.loadExternalDependency) || void 0 === s || s.call(i, this.instance, \"web-vitals\", t => {\n t ? X.error(An + \" failed to load script\", t) : e();\n });\n }\n _currentURL() {\n var t = e ? e.location.href : void 0;\n return t || X.error(An + \"Could not determine current URL\"), t;\n }\n}\nvar Ln = {\n icontains: (t, i) => !!e && i.href.toLowerCase().indexOf(t.toLowerCase()) > -1,\n not_icontains: (t, i) => !!e && -1 === i.href.toLowerCase().indexOf(t.toLowerCase()),\n regex: (t, i) => !!e && ht(i.href, t),\n not_regex: (t, i) => !!e && !ht(i.href, t),\n exact: (e, t) => t.href === e,\n is_not: (e, t) => t.href !== e\n};\nclass Dn {\n constructor(e) {\n var t = this;\n te(this, \"getWebExperimentsAndEvaluateDisplayLogic\", function () {\n var e = arguments.length > 0 && void 0 !== arguments[0] && arguments[0];\n t.getWebExperiments(e => {\n Dn.logInfo(\"retrieved web experiments from the server\"), t._flagToExperiments = new Map(), e.forEach(e => {\n if (e.feature_flag_key && t._featureFlags && t._featureFlags[e.feature_flag_key]) {\n var i;\n if (t._flagToExperiments) Dn.logInfo(\"setting flag key \", e.feature_flag_key, \" to web experiment \", e), null === (i = t._flagToExperiments) || void 0 === i || i.set(e.feature_flag_key, e);\n var s = t._featureFlags[e.feature_flag_key];\n s && e.variants[s] && t.applyTransforms(e.name, s, e.variants[s].transforms);\n } else if (e.variants) for (var r in e.variants) {\n var n = e.variants[r];\n Dn.matchesTestVariant(n) && t.applyTransforms(e.name, r, n.transforms);\n }\n });\n }, e);\n }), this.instance = e;\n this.instance.onFeatureFlags && this.instance.onFeatureFlags(e => {\n this.applyFeatureFlagChanges(e);\n }), this._flagToExperiments = new Map();\n }\n applyFeatureFlagChanges(e) {\n j(this._flagToExperiments) || this.instance.config.disable_web_experiments || (Dn.logInfo(\"applying feature flags\", e), e.forEach(e => {\n var t;\n if (this._flagToExperiments && null !== (t = this._flagToExperiments) && void 0 !== t && t.has(e)) {\n var i,\n s = this.instance.getFeatureFlag(e),\n r = null === (i = this._flagToExperiments) || void 0 === i ? void 0 : i.get(e);\n s && null != r && r.variants[s] && this.applyTransforms(r.name, s, r.variants[s].transforms);\n }\n }));\n }\n afterDecideResponse(e) {\n this._is_bot() ? Dn.logInfo(\"Refusing to render web experiment since the viewer is a likely bot\") : (this._featureFlags = e.featureFlags, this.loadIfEnabled(), this.previewWebExperiment());\n }\n previewWebExperiment() {\n var e = Dn.getWindowLocation();\n if (null != e && e.search) {\n var t = pt(null == e ? void 0 : e.search, \"__experiment_id\"),\n i = pt(null == e ? void 0 : e.search, \"__experiment_variant\");\n t && i && (Dn.logInfo(\"previewing web experiments \".concat(t, \" && \").concat(i)), this.getWebExperiments(e => {\n this.showPreviewWebExperiment(parseInt(t), i, e);\n }, !1, !0));\n }\n }\n loadIfEnabled() {\n this.instance.config.disable_web_experiments || this.getWebExperimentsAndEvaluateDisplayLogic();\n }\n getWebExperiments(e, t, i) {\n if (this.instance.config.disable_web_experiments && !i) return e([]);\n var s = this.instance.get_property(\"$web_experiments\");\n if (s && !t) return e(s);\n this.instance._send_request({\n url: this.instance.requestRouter.endpointFor(\"api\", \"/api/web_experiments/?token=\".concat(this.instance.config.token)),\n method: \"GET\",\n transport: \"XHR\",\n callback: t => {\n if (200 !== t.statusCode || !t.json) return e([]);\n var i = t.json.experiments || [];\n return e(i);\n }\n });\n }\n showPreviewWebExperiment(e, t, i) {\n var s = i.filter(t => t.id === e);\n s && s.length > 0 && (Dn.logInfo(\"Previewing web experiment [\".concat(s[0].name, \"] with variant [\").concat(t, \"]\")), this.applyTransforms(s[0].name, t, s[0].variants[t].transforms, !0));\n }\n static matchesTestVariant(e) {\n return !j(e.conditions) && Dn.matchUrlConditions(e) && Dn.matchUTMConditions(e);\n }\n static matchUrlConditions(e) {\n var t;\n if (j(e.conditions) || j(null === (t = e.conditions) || void 0 === t ? void 0 : t.url)) return !0;\n var i,\n s,\n r,\n n = Dn.getWindowLocation();\n return !!n && (null === (i = e.conditions) || void 0 === i || !i.url || Ln[null !== (s = null === (r = e.conditions) || void 0 === r ? void 0 : r.urlMatchType) && void 0 !== s ? s : \"icontains\"](e.conditions.url, n));\n }\n static getWindowLocation() {\n return null == e ? void 0 : e.location;\n }\n static matchUTMConditions(e) {\n var t;\n if (j(e.conditions) || j(null === (t = e.conditions) || void 0 === t ? void 0 : t.utm)) return !0;\n var i = _i.campaignParams();\n if (i.utm_source) {\n var s,\n r,\n n,\n o,\n a,\n l,\n u,\n c,\n d,\n h,\n _,\n p,\n v,\n g,\n f,\n m,\n b = null === (s = e.conditions) || void 0 === s || null === (r = s.utm) || void 0 === r || !r.utm_campaign || (null === (n = e.conditions) || void 0 === n || null === (o = n.utm) || void 0 === o ? void 0 : o.utm_campaign) == i.utm_campaign,\n y = null === (a = e.conditions) || void 0 === a || null === (l = a.utm) || void 0 === l || !l.utm_source || (null === (u = e.conditions) || void 0 === u || null === (c = u.utm) || void 0 === c ? void 0 : c.utm_source) == i.utm_source,\n w = null === (d = e.conditions) || void 0 === d || null === (h = d.utm) || void 0 === h || !h.utm_medium || (null === (_ = e.conditions) || void 0 === _ || null === (p = _.utm) || void 0 === p ? void 0 : p.utm_medium) == i.utm_medium,\n S = null === (v = e.conditions) || void 0 === v || null === (g = v.utm) || void 0 === g || !g.utm_term || (null === (f = e.conditions) || void 0 === f || null === (m = f.utm) || void 0 === m ? void 0 : m.utm_term) == i.utm_term;\n return b && w && S && y;\n }\n return !1;\n }\n static logInfo(e) {\n for (var t = arguments.length, i = new Array(t > 1 ? t - 1 : 0), s = 1; s < t; s++) i[s - 1] = arguments[s];\n X.info(\"[WebExperiments] \".concat(e), i);\n }\n applyTransforms(e, t, i, s) {\n var r;\n this._is_bot() ? Dn.logInfo(\"Refusing to render web experiment since the viewer is a likely bot\") : \"control\" !== t ? i.forEach(i => {\n if (i.selector) {\n var r;\n Dn.logInfo(\"applying transform of variant \".concat(t, \" for experiment \").concat(e, \" \"), i);\n var n,\n o = 0,\n a = null === (r = document) || void 0 === r ? void 0 : r.querySelectorAll(i.selector);\n if (null == a || a.forEach(e => {\n var t = e;\n o += 1, i.attributes && i.attributes.forEach(e => {\n switch (e.name) {\n case \"text\":\n t.innerText = e.value;\n break;\n case \"html\":\n t.innerHTML = e.value;\n break;\n case \"cssClass\":\n t.className = e.value;\n break;\n default:\n t.setAttribute(e.name, e.value);\n }\n }), i.text && (t.innerText = i.text), i.html && (t.parentElement ? t.parentElement.innerHTML = i.html : t.innerHTML = i.html), i.css && t.setAttribute(\"style\", i.css);\n }), this.instance && this.instance.capture) this.instance.capture(\"$web_experiment_applied\", {\n $web_experiment_name: e,\n $web_experiment_variant: t,\n $web_experiment_preview: s,\n $web_experiment_document_url: null === (n = Dn.getWindowLocation()) || void 0 === n ? void 0 : n.href,\n $web_experiment_elements_modified: o\n });\n }\n }) : (Dn.logInfo(\"Control variants leave the page unmodified.\"), this.instance && this.instance.capture && this.instance.capture(\"$web_experiment_applied\", {\n $web_experiment_name: e,\n $web_experiment_preview: s,\n $web_experiment_variant: t,\n $web_experiment_document_url: null === (r = Dn.getWindowLocation()) || void 0 === r ? void 0 : r.href,\n $web_experiment_elements_modified: 0\n }));\n }\n _is_bot() {\n return n && this.instance ? vn(n, this.instance.config.custom_blocked_useragents) : void 0;\n }\n}\nclass Nn {\n constructor(e) {\n this.instance = e;\n }\n sendExceptionEvent(e) {\n this.instance.capture(\"$exception\", e, {\n _noTruncate: !0,\n _batchKey: \"exceptionEvent\"\n });\n }\n}\nvar qn = {},\n Bn = () => {},\n Hn = \"posthog\",\n Un = !sr && -1 === (null == d ? void 0 : d.indexOf(\"MSIE\")) && -1 === (null == d ? void 0 : d.indexOf(\"Mozilla\")),\n Wn = () => {\n var t, i, s;\n return {\n api_host: \"https://us.i.posthog.com\",\n ui_host: null,\n token: \"\",\n autocapture: !0,\n rageclick: !0,\n cross_subdomain_cookie: (i = null == o ? void 0 : o.location, s = null == i ? void 0 : i.hostname, !!U(s) && \"herokuapp.com\" !== s.split(\".\").slice(-2).join(\".\")),\n persistence: \"localStorage+cookie\",\n persistence_name: \"\",\n loaded: Bn,\n store_google: !0,\n custom_campaign_params: [],\n custom_blocked_useragents: [],\n save_referrer: !0,\n capture_pageview: !0,\n capture_pageleave: \"if_capture_pageview\",\n debug: a && U(null == a ? void 0 : a.search) && -1 !== a.search.indexOf(\"__posthog_debug=true\") || !1,\n verbose: !1,\n cookie_expiration: 365,\n upgrade: !1,\n disable_session_recording: !1,\n disable_persistence: !1,\n disable_web_experiments: !0,\n disable_surveys: !1,\n enable_recording_console_log: void 0,\n secure_cookie: \"https:\" === (null == e || null === (t = e.location) || void 0 === t ? void 0 : t.protocol),\n ip: !0,\n opt_out_capturing_by_default: !1,\n opt_out_persistence_by_default: !1,\n opt_out_useragent_filter: !1,\n opt_out_capturing_persistence_type: \"localStorage\",\n opt_out_capturing_cookie_prefix: null,\n opt_in_site_apps: !1,\n property_denylist: [],\n respect_dnt: !1,\n sanitize_properties: null,\n request_headers: {},\n inapp_protocol: \"//\",\n inapp_link_new_window: !1,\n request_batching: !0,\n properties_string_max_length: 65535,\n session_recording: {},\n mask_all_element_attributes: !1,\n mask_all_text: !1,\n advanced_disable_decide: !1,\n advanced_disable_feature_flags: !1,\n advanced_disable_feature_flags_on_first_load: !1,\n advanced_disable_toolbar_metrics: !1,\n feature_flag_request_timeout_ms: 3e3,\n on_request_error: e => {\n var t = \"Bad HTTP status: \" + e.statusCode + \" \" + e.text;\n X.error(t);\n },\n get_device_id: e => e,\n _onCapture: Bn,\n capture_performance: void 0,\n name: \"posthog\",\n bootstrap: {},\n disable_compression: !1,\n session_idle_timeout_seconds: 1800,\n person_profiles: \"identified_only\",\n __add_tracing_headers: !1,\n before_send: void 0\n };\n },\n zn = e => {\n var t = {};\n H(e.process_person) || (t.person_profiles = e.process_person), H(e.xhr_headers) || (t.request_headers = e.xhr_headers), H(e.cookie_name) || (t.persistence_name = e.cookie_name), H(e.disable_cookie) || (t.disable_persistence = e.disable_cookie);\n var i = m({}, t, e);\n return D(e.property_blacklist) && (H(e.property_denylist) ? i.property_denylist = e.property_blacklist : D(e.property_denylist) ? i.property_denylist = [...e.property_blacklist, ...e.property_denylist] : X.error(\"Invalid value for property_denylist config: \" + e.property_denylist)), i;\n };\nclass jn {\n constructor() {\n te(this, \"__forceAllowLocalhost\", !1);\n }\n get _forceAllowLocalhost() {\n return this.__forceAllowLocalhost;\n }\n set _forceAllowLocalhost(e) {\n X.error(\"WebPerformanceObserver is deprecated and has no impact on network capture. Use `_forceAllowLocalhostNetworkCapture` on `posthog.sessionRecording`\"), this.__forceAllowLocalhost = e;\n }\n}\nclass Vn {\n constructor() {\n te(this, \"webPerformance\", new jn()), te(this, \"version\", _.LIB_VERSION), te(this, \"_internalEventEmitter\", new Sr()), this.config = Wn(), this.decideEndpointWasHit = !1, this.SentryIntegration = gr, this.sentryIntegration = e => function (e, t) {\n var i = vr(e, t);\n return {\n name: pr,\n processEvent: e => i(e)\n };\n }(this, e), this.__request_queue = [], this.__loaded = !1, this.analyticsDefaultEndpoint = \"/e/\", this._initialPageviewCaptured = !1, this._initialPersonProfilesConfig = null, this.featureFlags = new Ue(this), this.toolbar = new tr(this), this.scrollManager = new Sn(this), this.pageViewManager = new wr(this), this.surveys = new un(this), this.experiments = new Dn(this), this.exceptions = new Nn(this), this.rateLimiter = new cn(this), this.requestRouter = new _r(this), this.consent = new Cn(this), this.people = {\n set: (e, t, i) => {\n var s = U(e) ? {\n [e]: t\n } : e;\n this.setPersonProperties(s), null == i || i({});\n },\n set_once: (e, t, i) => {\n var s = U(e) ? {\n [e]: t\n } : e;\n this.setPersonProperties(void 0, s), null == i || i({});\n }\n }, this.on(\"eventCaptured\", e => X.info('send \"'.concat(null == e ? void 0 : e.event, '\"'), e));\n }\n init(e, t, i) {\n if (i && i !== Hn) {\n var s,\n r = null !== (s = qn[i]) && void 0 !== s ? s : new Vn();\n return r._init(e, t, i), qn[i] = r, qn[Hn][i] = r, r;\n }\n return this._init(e, t, i);\n }\n _init(t) {\n var i,\n s,\n r = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},\n n = arguments.length > 2 ? arguments[2] : void 0;\n if (H(t) || W(t)) return X.critical(\"PostHog was initialized without a token. This likely indicates a misconfiguration. Please check the first argument passed to posthog.init()\"), this;\n if (this.__loaded) return X.warn(\"You have already initialized PostHog! Re-initializing is a no-op\"), this;\n this.__loaded = !0, this.config = {}, this._triggered_notifs = [], r.person_profiles && (this._initialPersonProfilesConfig = r.person_profiles), this.set_config(m({}, Wn(), zn(r), {\n name: n,\n token: t\n })), this.config.on_xhr_error && X.error(\"[posthog] on_xhr_error is deprecated. Use on_request_error instead\"), this.compression = r.disable_compression ? void 0 : R.GZipJS, this.persistence = new vi(this.config), this.sessionPersistence = \"sessionStorage\" === this.config.persistence || \"memory\" === this.config.persistence ? this.persistence : new vi(ee(ee({}, this.config), {}, {\n persistence: \"sessionStorage\"\n }));\n var o = ee({}, this.persistence.props),\n a = ee({}, this.sessionPersistence.props);\n if (this._requestQueue = new ir(e => this._send_retriable_request(e)), this._retryQueue = new ur(this), this.__request_queue = [], this.sessionManager = new dr(this.config, this.persistence), this.sessionPropsManager = new hn(this.sessionManager, this.persistence), new Fn(this).startIfEnabledOrStop(), this.sessionRecording = new Ys(this), this.sessionRecording.startIfEnabledOrStop(), this.config.disable_scroll_properties || this.scrollManager.startMeasuringScrollPosition(), this.autocapture = new Pn(this), this.autocapture.startIfEnabled(), this.surveys.loadIfEnabled(), this.heatmaps = new wn(this), this.heatmaps.startIfEnabled(), this.webVitalsAutocapture = new On(this), this.exceptionObserver = new $n(this), this.exceptionObserver.startIfEnabled(), this.deadClicksAutocapture = new yn(this, bn), this.deadClicksAutocapture.startIfEnabled(), _.DEBUG = _.DEBUG || this.config.debug, _.DEBUG && X.info(\"Starting in debug mode\", {\n this: this,\n config: r,\n thisC: ee({}, this.config),\n p: o,\n s: a\n }), this._sync_opt_out_with_persistence(), void 0 !== (null === (i = r.bootstrap) || void 0 === i ? void 0 : i.distinctID)) {\n var l,\n u,\n c = this.config.get_device_id(Je()),\n d = null !== (l = r.bootstrap) && void 0 !== l && l.isIdentifiedID ? c : r.bootstrap.distinctID;\n this.persistence.set_property(Re, null !== (u = r.bootstrap) && void 0 !== u && u.isIdentifiedID ? \"identified\" : \"anonymous\"), this.register({\n distinct_id: r.bootstrap.distinctID,\n $device_id: d\n });\n }\n if (this._hasBootstrappedFeatureFlags()) {\n var h,\n p,\n v = Object.keys((null === (h = r.bootstrap) || void 0 === h ? void 0 : h.featureFlags) || {}).filter(e => {\n var t, i;\n return !(null === (t = r.bootstrap) || void 0 === t || null === (i = t.featureFlags) || void 0 === i || !i[e]);\n }).reduce((e, t) => {\n var i, s;\n return e[t] = (null === (i = r.bootstrap) || void 0 === i || null === (s = i.featureFlags) || void 0 === s ? void 0 : s[t]) || !1, e;\n }, {}),\n g = Object.keys((null === (p = r.bootstrap) || void 0 === p ? void 0 : p.featureFlagPayloads) || {}).filter(e => v[e]).reduce((e, t) => {\n var i, s, n, o;\n null !== (i = r.bootstrap) && void 0 !== i && null !== (s = i.featureFlagPayloads) && void 0 !== s && s[t] && (e[t] = null === (n = r.bootstrap) || void 0 === n || null === (o = n.featureFlagPayloads) || void 0 === o ? void 0 : o[t]);\n return e;\n }, {});\n this.featureFlags.receivedFeatureFlags({\n featureFlags: v,\n featureFlagPayloads: g\n });\n }\n if (!this.get_distinct_id()) {\n var f = this.config.get_device_id(Je());\n this.register_once({\n distinct_id: f,\n $device_id: f\n }, \"\"), this.persistence.set_property(Re, \"anonymous\");\n }\n return null == e || null === (s = e.addEventListener) || void 0 === s || s.call(e, \"onpagehide\" in self ? \"pagehide\" : \"unload\", this._handle_unload.bind(this)), this.toolbar.maybeLoadToolbar(), r.segment ? yr(this, () => this._loaded()) : this._loaded(), N(this.config._onCapture) && this.config._onCapture !== Bn && (X.warn(\"onCapture is deprecated. Please use `before_send` instead\"), this.on(\"eventCaptured\", e => this.config._onCapture(e.event, e))), this;\n }\n _afterDecideResponse(e) {\n var t, i, s, r, n, o, a, l, u;\n this.compression = void 0, e.supportedCompression && !this.config.disable_compression && (this.compression = b(e.supportedCompression, R.GZipJS) ? R.GZipJS : b(e.supportedCompression, R.Base64) ? R.Base64 : void 0), null !== (t = e.analytics) && void 0 !== t && t.endpoint && (this.analyticsDefaultEndpoint = e.analytics.endpoint), this.set_config({\n person_profiles: this._initialPersonProfilesConfig ? this._initialPersonProfilesConfig : e.defaultIdentifiedOnly ? \"identified_only\" : \"always\"\n }), null === (i = this.sessionRecording) || void 0 === i || i.afterDecideResponse(e), null === (s = this.autocapture) || void 0 === s || s.afterDecideResponse(e), null === (r = this.heatmaps) || void 0 === r || r.afterDecideResponse(e), null === (n = this.experiments) || void 0 === n || n.afterDecideResponse(e), null === (o = this.surveys) || void 0 === o || o.afterDecideResponse(e), null === (a = this.webVitalsAutocapture) || void 0 === a || a.afterDecideResponse(e), null === (l = this.exceptionObserver) || void 0 === l || l.afterDecideResponse(e), null === (u = this.deadClicksAutocapture) || void 0 === u || u.afterDecideResponse(e);\n }\n _loaded() {\n var e = this.config.advanced_disable_decide;\n e || this.featureFlags.setReloadingPaused(!0);\n try {\n this.config.loaded(this);\n } catch (e) {\n X.critical(\"`loaded` function failed\", e);\n }\n this._start_queue_if_opted_in(), this.config.capture_pageview && setTimeout(() => {\n this.consent.isOptedIn() && this._captureInitialPageview();\n }, 1), e || (new Xs(this).call(), this.featureFlags.resetRequestQueue());\n }\n _start_queue_if_opted_in() {\n var e;\n this.has_opted_out_capturing() || this.config.request_batching && (null === (e = this._requestQueue) || void 0 === e || e.enable());\n }\n _dom_loaded() {\n this.has_opted_out_capturing() || g(this.__request_queue, e => this._send_retriable_request(e)), this.__request_queue = [], this._start_queue_if_opted_in();\n }\n _handle_unload() {\n var e, t;\n this.config.request_batching ? (this._shouldCapturePageleave() && this.capture(\"$pageleave\"), null === (e = this._requestQueue) || void 0 === e || e.unload(), null === (t = this._retryQueue) || void 0 === t || t.unload()) : this._shouldCapturePageleave() && this.capture(\"$pageleave\", null, {\n transport: \"sendBeacon\"\n });\n }\n _send_request(e) {\n this.__loaded && (Un ? this.__request_queue.push(e) : this.rateLimiter.isServerRateLimited(e.batchKey) || (e.transport = e.transport || this.config.api_transport, e.url = nr(e.url, {\n ip: this.config.ip ? 1 : 0\n }), e.headers = ee({}, this.config.request_headers), e.compression = \"best-available\" === e.compression ? this.compression : e.compression, (e => {\n var t,\n i,\n s,\n r = ee({}, e);\n r.timeout = r.timeout || 6e4, r.url = nr(r.url, {\n _: new Date().getTime().toString(),\n ver: _.LIB_VERSION,\n compression: r.compression\n });\n var n = null !== (t = r.transport) && void 0 !== t ? t : \"XHR\",\n o = null !== (i = null === (s = F(ar, e => e.transport === n)) || void 0 === s ? void 0 : s.method) && void 0 !== i ? i : ar[0].method;\n if (!o) throw new Error(\"No available transport method\");\n o(r);\n })(ee(ee({}, e), {}, {\n callback: t => {\n var i, s, r;\n (this.rateLimiter.checkForLimiting(t), t.statusCode >= 400) && (null === (s = (r = this.config).on_request_error) || void 0 === s || s.call(r, t));\n null === (i = e.callback) || void 0 === i || i.call(e, t);\n }\n }))));\n }\n _send_retriable_request(e) {\n this._retryQueue ? this._retryQueue.retriableRequest(e) : this._send_request(e);\n }\n _execute_array(e) {\n var t,\n i = [],\n s = [],\n r = [];\n g(e, e => {\n e && (t = e[0], D(t) ? r.push(e) : N(e) ? e.call(this) : D(e) && \"alias\" === t ? i.push(e) : D(e) && -1 !== t.indexOf(\"capture\") && N(this[t]) ? r.push(e) : s.push(e));\n });\n var n = function (e, t) {\n g(e, function (e) {\n if (D(e[0])) {\n var i = t;\n f(e, function (e) {\n i = i[e[0]].apply(i, e.slice(1));\n });\n } else this[e[0]].apply(this, e.slice(1));\n }, t);\n };\n n(i, this), n(s, this), n(r, this);\n }\n _hasBootstrappedFeatureFlags() {\n var e, t;\n return (null === (e = this.config.bootstrap) || void 0 === e ? void 0 : e.featureFlags) && Object.keys(null === (t = this.config.bootstrap) || void 0 === t ? void 0 : t.featureFlags).length > 0 || !1;\n }\n push(e) {\n this._execute_array([e]);\n }\n capture(e, t, i) {\n var s;\n if (this.__loaded && this.persistence && this.sessionPersistence && this._requestQueue) {\n if (!this.consent.isOptedOut()) if (!H(e) && U(e)) {\n if (this.config.opt_out_useragent_filter || !this._is_bot()) {\n var r = null != i && i.skip_client_rate_limiting ? void 0 : this.rateLimiter.clientRateLimitContext();\n if (null == r || !r.isRateLimited) {\n this.sessionPersistence.update_search_keyword(), this.config.store_google && this.sessionPersistence.update_campaign_params(), this.config.save_referrer && this.sessionPersistence.update_referrer_info(), (this.config.store_google || this.config.save_referrer) && this.persistence.set_initial_person_info();\n var n = new Date(),\n o = (null == i ? void 0 : i.timestamp) || n,\n a = {\n uuid: Je(),\n event: e,\n properties: this._calculate_event_properties(e, t || {}, o)\n };\n r && (a.properties.$lib_rate_limit_remaining_tokens = r.remainingTokens), (null == i ? void 0 : i.$set) && (a.$set = null == i ? void 0 : i.$set);\n var l = this._calculate_set_once_properties(null == i ? void 0 : i.$set_once);\n l && (a.$set_once = l), (a = x(a, null != i && i._noTruncate ? null : this.config.properties_string_max_length)).timestamp = o, H(null == i ? void 0 : i.timestamp) || (a.properties.$event_time_override_provided = !0, a.properties.$event_time_override_system_time = n);\n var u = ee(ee({}, a.properties.$set), a.$set);\n if (B(u) || this.setPersonPropertiesForFlags(u), !j(this.config.before_send)) {\n var c = this._runBeforeSend(a);\n if (!c) return;\n a = c;\n }\n this._internalEventEmitter.emit(\"eventCaptured\", a);\n var d = {\n method: \"POST\",\n url: null !== (s = null == i ? void 0 : i._url) && void 0 !== s ? s : this.requestRouter.endpointFor(\"api\", this.analyticsDefaultEndpoint),\n data: a,\n compression: \"best-available\",\n batchKey: null == i ? void 0 : i._batchKey\n };\n return !this.config.request_batching || i && (null == i || !i._batchKey) || null != i && i.send_instantly ? this._send_retriable_request(d) : this._requestQueue.enqueue(d), a;\n }\n X.critical(\"This capture call is ignored due to client rate limiting.\");\n }\n } else X.error(\"No event name provided to posthog.capture\");\n } else X.uninitializedWarning(\"posthog.capture\");\n }\n _addCaptureHook(e) {\n return this.on(\"eventCaptured\", t => e(t.event, t));\n }\n _calculate_event_properties(e, t, i) {\n if (i = i || new Date(), !this.persistence || !this.sessionPersistence) return t;\n var s = this.persistence.remove_event_timer(e),\n r = ee({}, t);\n if (r.token = this.config.token, \"$snapshot\" === e) {\n var n = ee(ee({}, this.persistence.properties()), this.sessionPersistence.properties());\n return r.distinct_id = n.distinct_id, (!U(r.distinct_id) && !V(r.distinct_id) || W(r.distinct_id)) && X.error(\"Invalid distinct_id for replay event. This indicates a bug in your implementation\"), r;\n }\n var a = _i.properties();\n if (this.sessionManager) {\n var {\n sessionId: l,\n windowId: u\n } = this.sessionManager.checkAndGetSessionAndWindowId();\n r.$session_id = l, r.$window_id = u;\n }\n if (this.requestRouter.region === cr.CUSTOM && (r.$lib_custom_api_host = this.config.api_host), this.sessionPropsManager && this.config.__preview_send_client_session_params && (\"$pageview\" === e || \"$pageleave\" === e || \"$autocapture\" === e)) {\n var c = this.sessionPropsManager.getSessionProps();\n r = m(r, c);\n }\n if (!this.config.disable_scroll_properties) {\n var h = {};\n \"$pageview\" === e ? h = this.pageViewManager.doPageView(i) : \"$pageleave\" === e && (h = this.pageViewManager.doPageLeave(i)), r = m(r, h);\n }\n if (\"$pageview\" === e && o && (r.title = o.title), !H(s)) {\n var _ = i.getTime() - s;\n r.$duration = parseFloat((_ / 1e3).toFixed(3));\n }\n d && this.config.opt_out_useragent_filter && (r.$browser_type = this._is_bot() ? \"bot\" : \"browser\"), (r = m({}, a, this.persistence.properties(), this.sessionPersistence.properties(), r)).$is_identified = this._isIdentified(), D(this.config.property_denylist) ? f(this.config.property_denylist, function (e) {\n delete r[e];\n }) : X.error(\"Invalid value for property_denylist config: \" + this.config.property_denylist + \" or property_blacklist config: \" + this.config.property_blacklist);\n var p = this.config.sanitize_properties;\n p && (r = p(r, e));\n var v = this._hasPersonProcessing();\n return r.$process_person_profile = v, v && this._requirePersonProcessing(\"_calculate_event_properties\"), r;\n }\n _calculate_set_once_properties(e) {\n if (!this.persistence || !this._hasPersonProcessing()) return e;\n var t = m({}, this.persistence.get_initial_props(), e || {}),\n i = this.config.sanitize_properties;\n return i && (t = i(t, \"$set_once\")), B(t) ? void 0 : t;\n }\n register(e, t) {\n var i;\n null === (i = this.persistence) || void 0 === i || i.register(e, t);\n }\n register_once(e, t, i) {\n var s;\n null === (s = this.persistence) || void 0 === s || s.register_once(e, t, i);\n }\n register_for_session(e) {\n var t;\n null === (t = this.sessionPersistence) || void 0 === t || t.register(e);\n }\n unregister(e) {\n var t;\n null === (t = this.persistence) || void 0 === t || t.unregister(e);\n }\n unregister_for_session(e) {\n var t;\n null === (t = this.sessionPersistence) || void 0 === t || t.unregister(e);\n }\n _register_single(e, t) {\n this.register({\n [e]: t\n });\n }\n getFeatureFlag(e, t) {\n return this.featureFlags.getFeatureFlag(e, t);\n }\n getFeatureFlagPayload(e) {\n var t = this.featureFlags.getFeatureFlagPayload(e);\n try {\n return JSON.parse(t);\n } catch (e) {\n return t;\n }\n }\n isFeatureEnabled(e, t) {\n return this.featureFlags.isFeatureEnabled(e, t);\n }\n reloadFeatureFlags() {\n this.featureFlags.reloadFeatureFlags();\n }\n updateEarlyAccessFeatureEnrollment(e, t) {\n this.featureFlags.updateEarlyAccessFeatureEnrollment(e, t);\n }\n getEarlyAccessFeatures(e) {\n var t = arguments.length > 1 && void 0 !== arguments[1] && arguments[1];\n return this.featureFlags.getEarlyAccessFeatures(e, t);\n }\n on(e, t) {\n return this._internalEventEmitter.on(e, t);\n }\n onFeatureFlags(e) {\n return this.featureFlags.onFeatureFlags(e);\n }\n onSessionId(e) {\n var t, i;\n return null !== (t = null === (i = this.sessionManager) || void 0 === i ? void 0 : i.onSessionId(e)) && void 0 !== t ? t : () => {};\n }\n getSurveys(e) {\n var t = arguments.length > 1 && void 0 !== arguments[1] && arguments[1];\n this.surveys.getSurveys(e, t);\n }\n getActiveMatchingSurveys(e) {\n var t = arguments.length > 1 && void 0 !== arguments[1] && arguments[1];\n this.surveys.getActiveMatchingSurveys(e, t);\n }\n renderSurvey(e, t) {\n this.surveys.renderSurvey(e, t);\n }\n canRenderSurvey(e) {\n this.surveys.canRenderSurvey(e);\n }\n getNextSurveyStep(e, t, i) {\n return this.surveys.getNextSurveyStep(e, t, i);\n }\n identify(e, t, i) {\n if (!this.__loaded || !this.persistence) return X.uninitializedWarning(\"posthog.identify\");\n if (V(e) && (e = e.toString(), X.warn(\"The first argument to posthog.identify was a number, but it should be a string. It has been converted to a string.\")), e) {\n if ([\"distinct_id\", \"distinctid\"].includes(e.toLowerCase())) X.critical('The string \"'.concat(e, '\" was set in posthog.identify which indicates an error. This ID should be unique to the user and not a hardcoded string.'));else if (this._requirePersonProcessing(\"posthog.identify\")) {\n var s = this.get_distinct_id();\n if (this.register({\n $user_id: e\n }), !this.get_property(\"$device_id\")) {\n var r = s;\n this.register_once({\n $had_persisted_distinct_id: !0,\n $device_id: r\n }, \"\");\n }\n e !== s && e !== this.get_property(re) && (this.unregister(re), this.register({\n distinct_id: e\n }));\n var n = \"anonymous\" === (this.persistence.get_property(Re) || \"anonymous\");\n e !== s && n ? (this.persistence.set_property(Re, \"identified\"), this.setPersonPropertiesForFlags(t || {}, !1), this.capture(\"$identify\", {\n distinct_id: e,\n $anon_distinct_id: s\n }, {\n $set: t || {},\n $set_once: i || {}\n }), this.featureFlags.setAnonymousDistinctId(s)) : (t || i) && this.setPersonProperties(t, i), e !== s && (this.reloadFeatureFlags(), this.unregister(Fe));\n }\n } else X.error(\"Unique user id has not been set in posthog.identify\");\n }\n setPersonProperties(e, t) {\n (e || t) && this._requirePersonProcessing(\"posthog.setPersonProperties\") && (this.setPersonPropertiesForFlags(e || {}), this.capture(\"$set\", {\n $set: e || {},\n $set_once: t || {}\n }));\n }\n group(e, t, i) {\n if (e && t) {\n if (this._requirePersonProcessing(\"posthog.group\")) {\n var s = this.getGroups();\n s[e] !== t && this.resetGroupPropertiesForFlags(e), this.register({\n $groups: ee(ee({}, s), {}, {\n [e]: t\n })\n }), i && (this.capture(\"$groupidentify\", {\n $group_type: e,\n $group_key: t,\n $group_set: i\n }), this.setGroupPropertiesForFlags({\n [e]: i\n })), s[e] === t || i || this.reloadFeatureFlags();\n }\n } else X.error(\"posthog.group requires a group type and group key\");\n }\n resetGroups() {\n this.register({\n $groups: {}\n }), this.resetGroupPropertiesForFlags(), this.reloadFeatureFlags();\n }\n setPersonPropertiesForFlags(e) {\n var t = !(arguments.length > 1 && void 0 !== arguments[1]) || arguments[1];\n this._requirePersonProcessing(\"posthog.setPersonPropertiesForFlags\") && this.featureFlags.setPersonPropertiesForFlags(e, t);\n }\n resetPersonPropertiesForFlags() {\n this.featureFlags.resetPersonPropertiesForFlags();\n }\n setGroupPropertiesForFlags(e) {\n var t = !(arguments.length > 1 && void 0 !== arguments[1]) || arguments[1];\n this._requirePersonProcessing(\"posthog.setGroupPropertiesForFlags\") && this.featureFlags.setGroupPropertiesForFlags(e, t);\n }\n resetGroupPropertiesForFlags(e) {\n this.featureFlags.resetGroupPropertiesForFlags(e);\n }\n reset(e) {\n var t, i, s, r, n;\n if (X.info(\"reset\"), !this.__loaded) return X.uninitializedWarning(\"posthog.reset\");\n var o = this.get_property(\"$device_id\");\n this.consent.reset(), null === (t = this.persistence) || void 0 === t || t.clear(), null === (i = this.sessionPersistence) || void 0 === i || i.clear(), null === (s = this.surveys) || void 0 === s || s.reset(), null === (r = this.persistence) || void 0 === r || r.set_property(Re, \"anonymous\"), null === (n = this.sessionManager) || void 0 === n || n.resetSessionId();\n var a = this.config.get_device_id(Je());\n this.register_once({\n distinct_id: a,\n $device_id: e ? a : o\n }, \"\");\n }\n get_distinct_id() {\n return this.get_property(\"distinct_id\");\n }\n getGroups() {\n return this.get_property(\"$groups\") || {};\n }\n get_session_id() {\n var e, t;\n return null !== (e = null === (t = this.sessionManager) || void 0 === t ? void 0 : t.checkAndGetSessionAndWindowId(!0).sessionId) && void 0 !== e ? e : \"\";\n }\n get_session_replay_url(e) {\n if (!this.sessionManager) return \"\";\n var {\n sessionId: t,\n sessionStartTimestamp: i\n } = this.sessionManager.checkAndGetSessionAndWindowId(!0),\n s = this.requestRouter.endpointFor(\"ui\", \"/project/\".concat(this.config.token, \"/replay/\").concat(t));\n if (null != e && e.withTimestamp && i) {\n var r,\n n = null !== (r = e.timestampLookBack) && void 0 !== r ? r : 10;\n if (!i) return s;\n var o = Math.max(Math.floor((new Date().getTime() - i) / 1e3) - n, 0);\n s += \"?t=\".concat(o);\n }\n return s;\n }\n alias(e, t) {\n return e === this.get_property(se) ? (X.critical(\"Attempting to create alias for existing People user - aborting.\"), -2) : this._requirePersonProcessing(\"posthog.alias\") ? (H(t) && (t = this.get_distinct_id()), e !== t ? (this._register_single(re, e), this.capture(\"$create_alias\", {\n alias: e,\n distinct_id: t\n })) : (X.warn(\"alias matches current distinct_id - skipping api call.\"), this.identify(e), -1)) : void 0;\n }\n set_config(e) {\n var t,\n i,\n s,\n r,\n n = ee({}, this.config);\n q(e) && (m(this.config, zn(e)), null === (t = this.persistence) || void 0 === t || t.update_config(this.config, n), this.sessionPersistence = \"sessionStorage\" === this.config.persistence || \"memory\" === this.config.persistence ? this.persistence : new vi(ee(ee({}, this.config), {}, {\n persistence: \"sessionStorage\"\n })), st.is_supported() && \"true\" === st.get(\"ph_debug\") && (this.config.debug = !0), this.config.debug && (_.DEBUG = !0, X.info(\"set_config\", {\n config: e,\n oldConfig: n,\n newConfig: ee({}, this.config)\n })), null === (i = this.sessionRecording) || void 0 === i || i.startIfEnabledOrStop(), null === (s = this.autocapture) || void 0 === s || s.startIfEnabled(), null === (r = this.heatmaps) || void 0 === r || r.startIfEnabled(), this.surveys.loadIfEnabled(), this._sync_opt_out_with_persistence());\n }\n startSessionRecording(e) {\n var t = !0 === e,\n i = {\n sampling: t || !(null == e || !e.sampling),\n linked_flag: t || !(null == e || !e.linked_flag),\n url_trigger: t || !(null == e || !e.url_trigger),\n event_trigger: t || !(null == e || !e.event_trigger)\n };\n if (Object.values(i).some(Boolean)) {\n var s, r, n, o, a;\n if (null === (s = this.sessionManager) || void 0 === s || s.checkAndGetSessionAndWindowId(), i.sampling) null === (r = this.sessionRecording) || void 0 === r || r.overrideSampling();\n if (i.linked_flag) null === (n = this.sessionRecording) || void 0 === n || n.overrideLinkedFlag();\n if (i.url_trigger) null === (o = this.sessionRecording) || void 0 === o || o.overrideTrigger(\"url\");\n if (i.event_trigger) null === (a = this.sessionRecording) || void 0 === a || a.overrideTrigger(\"event\");\n }\n this.set_config({\n disable_session_recording: !1\n });\n }\n stopSessionRecording() {\n this.set_config({\n disable_session_recording: !0\n });\n }\n sessionRecordingStarted() {\n var e;\n return !(null === (e = this.sessionRecording) || void 0 === e || !e.started);\n }\n captureException(e, t) {\n var i,\n s = new Error(\"PostHog syntheticException\"),\n r = N(null === (i = h.__PosthogExtensions__) || void 0 === i ? void 0 : i.parseErrorAsProperties) ? h.__PosthogExtensions__.parseErrorAsProperties([e.message, void 0, void 0, void 0, e], {\n syntheticException: s\n }) : ee({\n $exception_level: \"error\",\n $exception_list: [{\n type: e.name,\n value: e.message,\n mechanism: {\n handled: !0,\n synthetic: !1\n }\n }]\n }, t);\n this.exceptions.sendExceptionEvent(r);\n }\n loadToolbar(e) {\n return this.toolbar.loadToolbar(e);\n }\n get_property(e) {\n var t;\n return null === (t = this.persistence) || void 0 === t ? void 0 : t.props[e];\n }\n getSessionProperty(e) {\n var t;\n return null === (t = this.sessionPersistence) || void 0 === t ? void 0 : t.props[e];\n }\n toString() {\n var e,\n t = null !== (e = this.config.name) && void 0 !== e ? e : Hn;\n return t !== Hn && (t = Hn + \".\" + t), t;\n }\n _isIdentified() {\n var e, t;\n return \"identified\" === (null === (e = this.persistence) || void 0 === e ? void 0 : e.get_property(Re)) || \"identified\" === (null === (t = this.sessionPersistence) || void 0 === t ? void 0 : t.get_property(Re));\n }\n _hasPersonProcessing() {\n var e, t, i, s;\n return !(\"never\" === this.config.person_profiles || \"identified_only\" === this.config.person_profiles && !this._isIdentified() && B(this.getGroups()) && (null === (e = this.persistence) || void 0 === e || null === (t = e.props) || void 0 === t || !t[re]) && (null === (i = this.persistence) || void 0 === i || null === (s = i.props) || void 0 === s || !s[Oe]));\n }\n _shouldCapturePageleave() {\n return !0 === this.config.capture_pageleave || \"if_capture_pageview\" === this.config.capture_pageleave && this.config.capture_pageview;\n }\n createPersonProfile() {\n this._hasPersonProcessing() || this._requirePersonProcessing(\"posthog.createPersonProfile\") && this.setPersonProperties({}, {});\n }\n _requirePersonProcessing(e) {\n return \"never\" === this.config.person_profiles ? (X.error(e + ' was called, but process_person is set to \"never\". This call will be ignored.'), !1) : (this._register_single(Oe, !0), !0);\n }\n _sync_opt_out_with_persistence() {\n var e,\n t,\n i,\n s,\n r = this.consent.isOptedOut(),\n n = this.config.opt_out_persistence_by_default,\n o = this.config.disable_persistence || r && !!n;\n (null === (e = this.persistence) || void 0 === e ? void 0 : e.disabled) !== o && (null === (i = this.persistence) || void 0 === i || i.set_disabled(o));\n (null === (t = this.sessionPersistence) || void 0 === t ? void 0 : t.disabled) !== o && (null === (s = this.sessionPersistence) || void 0 === s || s.set_disabled(o));\n }\n opt_in_capturing(e) {\n var t;\n (this.consent.optInOut(!0), this._sync_opt_out_with_persistence(), H(null == e ? void 0 : e.captureEventName) || null != e && e.captureEventName) && this.capture(null !== (t = null == e ? void 0 : e.captureEventName) && void 0 !== t ? t : \"$opt_in\", null == e ? void 0 : e.captureProperties, {\n send_instantly: !0\n });\n this.config.capture_pageview && this._captureInitialPageview();\n }\n opt_out_capturing() {\n this.consent.optInOut(!1), this._sync_opt_out_with_persistence();\n }\n has_opted_in_capturing() {\n return this.consent.isOptedIn();\n }\n has_opted_out_capturing() {\n return this.consent.isOptedOut();\n }\n clear_opt_in_out_capturing() {\n this.consent.reset(), this._sync_opt_out_with_persistence();\n }\n _is_bot() {\n return n ? vn(n, this.config.custom_blocked_useragents) : void 0;\n }\n _captureInitialPageview() {\n o && !this._initialPageviewCaptured && (this._initialPageviewCaptured = !0, this.capture(\"$pageview\", {\n title: o.title\n }, {\n send_instantly: !0\n }));\n }\n debug(t) {\n !1 === t ? (null == e || e.console.log(\"You've disabled debug mode.\"), localStorage && localStorage.removeItem(\"ph_debug\"), this.set_config({\n debug: !1\n })) : (null == e || e.console.log(\"You're now in debug mode. All calls to PostHog will be logged in your console.\\nYou can disable this with `posthog.debug(false)`.\"), localStorage && localStorage.setItem(\"ph_debug\", \"true\"), this.set_config({\n debug: !0\n }));\n }\n _runBeforeSend(e) {\n if (j(this.config.before_send)) return e;\n var t = D(this.config.before_send) ? this.config.before_send : [this.config.before_send],\n i = e;\n for (var s of t) {\n if (i = s(i), j(i)) {\n var r = \"Event '\".concat(e.event, \"' was rejected in beforeSend function\");\n return J(e.event) ? X.warn(\"\".concat(r, \". This can cause unexpected behavior.\")) : X.info(r), null;\n }\n i.properties && !B(i.properties) || X.warn(\"Event '\".concat(e.event, \"' has no properties after beforeSend function, this is likely an error.\"));\n }\n return i;\n }\n}\n!function (e, t) {\n for (var i = 0; i < t.length; i++) e.prototype[t[i]] = S(e.prototype[t[i]]);\n}(Vn, [\"identify\"]);\nvar Gn,\n Qn = (Gn = qn[Hn] = new Vn(), function () {\n function t() {\n t.done || (t.done = !0, Un = !1, f(qn, function (e) {\n e._dom_loaded();\n }));\n }\n null != o && o.addEventListener && (\"complete\" === o.readyState ? t() : o.addEventListener(\"DOMContentLoaded\", t, !1)), e && P(e, \"load\", t, !0);\n }(), Gn);\nexport { C as COPY_AUTOCAPTURE_EVENT, R as Compression, Vn as PostHog, br as SurveyQuestionBranchingType, mr as SurveyQuestionType, fr as SurveyType, Qn as default, T as knownUnsafeEditableEvent, Qn as posthog, $ as severityLevels };","import { Controller } from \"stimulus\"\nimport posthog from 'posthog-js'\nimport User from \"../lib/User\"\nimport Organization from \"../lib/Organization\"\n\nexport default class extends Controller {\n // static values = { projectKey: String } # TODO: use this when we upgrade to Stimulus 2+\n\n get projectKey() {\n return this.data.has(\"projectKey\") ? this.data.get(\"projectKey\") : null;\n }\n\n initialize() {\n if (this.projectKey?.length > 0) {\n posthog.init(this.projectKey, {\n api_host: 'https://eu.i.posthog.com',\n autocapture: false,\n capture_pageleave: false,\n capture_pageview: false,\n disable_session_recording: true,\n person_profiles: 'identified_only',\n session_recording: {\n maskAllInputs: false,\n maskInputOptions: {\n password: true\n }\n },\n loaded: (posthog) => this.handlePosthogLoaded(posthog)\n })\n }\n }\n\n handlePosthogLoaded(posthog) {\n if (!User.exists) return\n\n this.identifyUser(posthog, User.current)\n const sessionUrl = this.startRecording(posthog)\n this.updateIntegrations(sessionUrl)\n this.identifyOrganization(posthog)\n }\n\n identifyOrganization(posthog) {\n if (!Organization.exists) return\n\n posthog.group('organization', Organization.current.id)\n }\n\n identifyUser(posthog, userContext) {\n posthog.identify(userContext.id, {\n email: userContext.email,\n approver: userContext.approver,\n root: userContext.root\n })\n }\n\n startRecording(posthog) {\n posthog.startSessionRecording()\n return posthog.get_session_replay_url({ withTimestamp: true })\n }\n\n updateIntegrations(sessionUrl) {\n if (typeof window.Appsignal !== 'undefined') {\n window.Appsignal.addDecorator((span) => \n span.setTags({ posthog_session_url: sessionUrl })\n )\n }\n\n if (typeof window.Intercom !== 'undefined') {\n window.Intercom('update', { posthog_session_url: sessionUrl })\n }\n }\n}\n"],"sourceRoot":""}