{"version":3,"sources":["webpack:///./node_modules/react-router/es/Router.js","webpack:///./node_modules/react-router-dom/es/Router.js","webpack:///./node_modules/react-router-dom/es/BrowserRouter.js","webpack:///./node_modules/react-router/es/generatePath.js","webpack:///./node_modules/react-router/es/Redirect.js","webpack:///./node_modules/react-router-dom/es/Redirect.js","webpack:///./app/javascript/mastodon/features/ui/components/column_loading.js","webpack:///./app/javascript/mastodon/features/ui/components/bundle_column_error.js","webpack:///./app/javascript/mastodon/features/ui/util/react_router_helpers.js","webpack:///./app/javascript/mastodon/features/ui/components/upload_area.js","webpack:///./app/javascript/mastodon/features/ui/components/drawer_loading.js","webpack:///./app/javascript/mastodon/components/server_banner.js","webpack:///./app/javascript/mastodon/features/ui/components/compose_panel.js","webpack:///./app/javascript/mastodon/components/logo.js","webpack:///./app/javascript/mastodon/features/ui/components/disabled_account_banner.js","webpack:///./app/javascript/mastodon/features/ui/components/follow_requests_column_link.js","webpack:///./app/javascript/mastodon/features/ui/components/list_panel.js","webpack:///./app/javascript/mastodon/features/ui/components/notifications_counter_icon.js","webpack:///./app/javascript/mastodon/features/ui/components/sign_in_banner.js","webpack:///./app/javascript/mastodon/features/account/components/featured_tags.js","webpack:///./app/javascript/mastodon/features/account/containers/featured_tags_container.js","webpack:///./app/javascript/mastodon/features/account/navigation.js","webpack:///./app/javascript/mastodon/components/navigation_portal.js","webpack:///./app/javascript/mastodon/features/ui/components/navigation_panel.js","webpack:///./app/javascript/mastodon/features/ui/components/columns_area.js","webpack:///./app/javascript/mastodon/features/ui/containers/columns_area_container.js","webpack:///./app/javascript/mastodon/features/picture_in_picture/components/header.js","webpack:///./app/javascript/mastodon/features/picture_in_picture/index.js","webpack:///./app/javascript/mastodon/actions/onboarding.js","webpack:///./app/javascript/mastodon/features/ui/components/header.js","webpack:///./app/javascript/mastodon/features/ui/index.js","webpack:///./app/javascript/mastodon/components/error_boundary.js","webpack:///./app/javascript/mastodon/containers/mastodon.js","webpack:///./app/javascript/mastodon/main.js","webpack:///./node_modules/stacktrace-gps/node_modules/source-map/lib/util.js","webpack:///./node_modules/stackframe/stackframe.js","webpack:///./node_modules/stacktrace-js/stacktrace.js","webpack:///./node_modules/stacktrace-gps/node_modules/source-map/lib/source-map-generator.js","webpack:///./node_modules/stacktrace-gps/node_modules/source-map/lib/base64-vlq.js","webpack:///./node_modules/stacktrace-gps/node_modules/source-map/lib/array-set.js","webpack:///./node_modules/error-stack-parser/error-stack-parser.js","webpack:///./node_modules/stack-generator/stack-generator.js","webpack:///./node_modules/stacktrace-gps/stacktrace-gps.js","webpack:///./node_modules/stacktrace-gps/node_modules/source-map/source-map.js","webpack:///./node_modules/stacktrace-gps/node_modules/source-map/lib/base64.js","webpack:///./node_modules/stacktrace-gps/node_modules/source-map/lib/mapping-list.js","webpack:///./node_modules/stacktrace-gps/node_modules/source-map/lib/source-map-consumer.js","webpack:///./node_modules/stacktrace-gps/node_modules/source-map/lib/binary-search.js","webpack:///./node_modules/stacktrace-gps/node_modules/source-map/lib/quick-sort.js","webpack:///./node_modules/stacktrace-gps/node_modules/source-map/lib/source-node.js","webpack:///./app/javascript/mastodon/performance.js"],"names":["_extends","Object","assign","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","_classCallCheck","instance","Constructor","TypeError","_possibleConstructorReturn","self","ReferenceError","_React$Component","Router","_temp","_this","this","_len","args","Array","_key","apply","concat","state","match","computeMatch","props","history","location","pathname","subClass","superClass","create","constructor","value","enumerable","writable","configurable","setPrototypeOf","__proto__","_inherits","getChildContext","router","context","route","path","url","params","isExact","componentWillMount","_this2","_props","children","Children","count","unlisten","listen","setState","componentWillReceiveProps","nextProps","componentWillUnmount","render","only","Component","propTypes","object","isRequired","node","contextTypes","childContextTypes","BrowserRouter","createElement","patternCache","cacheCount","pattern","cacheKey","cache","compiledGenerator","compile","undefined","generator","pretty","Redirect","isStatic","staticContext","perform","componentDidMount","componentDidUpdate","prevProps","prevTo","to","nextTo","search","computeTo","_ref","computedMatch","push","replace","bool","from","string","oneOfType","defaultProps","shape","func","ColumnLoading","ImmutablePureComponent","title","icon","multiColumn","focusable","placeholder","className","PropTypes","GIF","React","PureComponent","hovering","handleMouseEnter","animate","handleMouseLeave","src","staticSrc","alt","role","onMouseEnter","onMouseLeave","autoPlayGif","CopyButton","copied","handleClick","navigator","clipboard","writeText","timeout","setTimeout","clearTimeout","onClick","id","defaultMessage","BundleColumnError","injectIntl","handleRetry","onRetry","errorType","stacktrace","body","bindToDocument","Link","classNames","Helmet","name","content","WrappedSwitch","Switch","map","child","cloneElement","WrappedRoute","hasError","renderComponent","component","componentParams","fetchComponent","loading","renderLoading","error","renderError","static","componentDidCatch","StackTrace","fromError","then","stackframes","toString","frame","join","catch","err","console","rest","Route","UploadArea","handleKeyUp","e","keyCode","active","preventDefault","stopPropagation","onClose","window","addEventListener","removeEventListener","defaultStyle","backgroundOpacity","backgroundScale","style","spring","stiffness","damping","visibility","opacity","transform","DrawerLoading","messages","defineMessages","aboutActiveUsers","ServerBanner","connect","server","getIn","dispatch","fetchServer","intl","isLoading","get","values","domain","mastodon","href","blurhash","width","size","formatMessage","ComposePanel","onFocus","changeComposing","onBlur","mountCompose","unmountCompose","signedIn","identity","openInRoute","Fragment","singleColumn","Logo","viewBox","xlinkHref","logoutMessage","logoutConfirm","DisabledAccountBanner","disabledAcct","disabledAccountId","movedToAcct","movedToAccountId","onLogout","openModal","message","confirm","closeWhenConfirm","onConfirm","logOut","handleLogOutClick","disabledAccountLink","disabledAccount","movedToAccount","includes","type","text","FollowRequestsColumnLink","ImmutableList","fetchFollowRequests","transparent","getOrderedLists","createSelector","lists","toList","filter","item","sort","a","b","localeCompare","take","ListPanel","withRouter","fetchLists","isEmpty","list","strict","ImmutablePropTypes","IconWithBadge","SignInBanner","useDispatch","openClosedRegistrationsModal","useCallback","signupButton","registrationsOpen","lastStatusAt","empty","FeaturedTags","account","featuredTags","dangerouslySetInnerHTML","__html","featuredTag","uses","withGraph","description","date","formatDate","month","day","tagged","getAccount","makeGetAccount","accountId","AccountNavigation","acct","normalizeForLookup","DefaultNavigation","showTrends","NavigationPortal","exact","home","notifications","explore","local","federated","direct","favourites","bookmarks","preferences","followsAndFollowers","about","NavigationPanel","timelinePreview","componentMap","Compose","HomeTimeline","Notifications","PublicTimeline","CommunityTimeline","HashtagTimeline","DirectTimeline","FavouritedStatuses","BookmarkedStatuses","ListTimeline","Directory","ColumnsArea","mediaQuery","matchMedia","renderComposePanel","matches","handleLayoutChange","handleWheel","_interruptScrollAnimation","setRef","columnId","supportsPassiveEvents","passive","addListener","isRtlLayout","document","getElementsByTagName","classList","contains","componentWillUpdate","removeListener","handleChildrenContentChange","modifier","scrollRight","scrollWidth","innerWidth","columns","isModalOpen","ref","column","toJS","other","SpecificComponent","modalType","forwardRef","close","Header","statusId","PictureInPicture","handleClose","removePictureInPicture","currentTime","player","volume","muted","autoPlay","inline","alwaysVisible","poster","backgroundColor","foregroundColor","accentColor","INTRODUCTION_VERSION","Account","me","beforeUnload","keyMap","help","new","forceNew","toggleComposeSpoilers","focusColumn","reply","favourite","boost","mention","open","openProfile","moveDown","moveUp","back","goToHome","goToNotifications","goToLocal","goToFederated","goToDirect","goToStart","goToFavourites","goToPinned","goToProfile","goToBlocked","goToMuted","goToRequests","toggleHidden","toggleSensitive","openMedia","SwitchingColumnsArea","c","mobile","toggle","redirect","singleUserMode","owner","initialState","accounts","username","trendsAsLanding","GettingStarted","KeyboardShortcuts","About","PrivacyPolicy","PinnedStatuses","FollowRecommendations","Explore","AccountTimeline","withReplies","Followers","Following","AccountGallery","Status","Reblogs","Favourites","FollowRequests","Blocks","DomainBlocks","FollowedTags","Mutes","Lists","UI","layout","isComposing","hasComposingText","trim","hasMediaAttachments","canUploadMore","some","x","dropdownMenuIsOpen","firstLaunch","draggingOver","handleBeforeUnload","synchronouslySubmitMarkers","returnValue","handleWindowFocus","focusApp","submitMarkers","immediate","handleWindowBlur","unfocusApp","handleDragEnter","dragTargets","indexOf","dataTransfer","types","handleDragOver","dataTransferIsText","dropEffect","handleDrop","files","uploadCompose","handleDragLeave","el","closeUploadModal","handleServiceWorkerPostMessage","data","warn","clearHeight","trailing","handleResize","layoutFromWindow","cancel","changeLayout","handleHotkeyNew","element","querySelector","focus","handleHotkeySearch","handleHotkeyForceNew","resetCompose","handleHotkeyToggleComposeSpoilers","changeComposeSpoilerness","handleHotkeyFocusColumn","index","container","status","scrollTop","offsetTop","scrollIntoView","handleHotkeyBack","goBack","setHotkeysRef","hotkeys","handleHotkeyToggleHelp","handleHotkeyGoToHome","handleHotkeyGoToNotifications","handleHotkeyGoToLocal","handleHotkeyGoToFederated","handleHotkeyGoToDirect","handleHotkeyGoToStart","handleHotkeyGoToFavourites","handleHotkeyGoToPinned","handleHotkeyGoToProfile","handleHotkeyGoToBlocked","handleHotkeyGoToMuted","handleHotkeyGoToRequests","handleDragEnd","serviceWorker","changeSetting","saveSettings","fetchMarkers","expandHomeTimeline","expandNotifications","__mousetrap__","stopCallback","tagName","handlers","attach","focused","pointerEvents","ErrorBoundary","errorMessage","stackTrace","mappedStackTrace","componentStack","handleCopyStackTrace","textarea","contents","textContent","position","appendChild","select","execCommand","removeChild","info","stack","sf","likelyBrowserAddonIssue","version","source_url","rel","localeData","getLocale","addLocaleData","siteTitle","store","configureStore","hydrateAction","hydrateStore","meta","fetchCustomEmojis","Mastodon","disabled_account_id","accessToken","access_token","permissions","disconnect","connectUserStream","shouldUpdateScroll","prevRouterProps","mastodonModalKey","locale","defaultTitle","titleTemplate","perf","require","main","start","ready","async","mountNode","getElementById","JSON","parse","getAttribute","ReactDOM","setupBrowserNotifications","Workbox","wb","registration","register","registerPushNotifications","stop","exports","getArg","aArgs","aName","aDefaultValue","Error","urlRegexp","dataUrlRegexp","urlParse","aUrl","scheme","auth","host","port","urlGenerate","aParsedUrl","normalize","aPath","part","isAbsolute","parts","split","up","splice","aRoot","aPathUrl","aRootUrl","joined","charAt","relative","level","lastIndexOf","slice","substr","supportsNullProto","s","isProtoString","charCodeAt","strcmp","aStr1","aStr2","toSetString","aStr","fromSetString","compareByOriginalPositions","mappingA","mappingB","onlyCompareOriginal","cmp","originalLine","originalColumn","generatedColumn","generatedLine","compareByGeneratedPositionsDeflated","onlyCompareGenerated","compareByGeneratedPositionsInflated","_isNumber","n","isNaN","parseFloat","isFinite","_capitalize","str","toUpperCase","substring","_getter","p","booleanProps","numericProps","stringProps","arrayProps","objectProps","StackFrame","obj","getArgs","setArgs","v","getEvalOrigin","evalOrigin","setEvalOrigin","fileName","getFileName","lineNumber","getLineNumber","columnNumber","getColumnNumber","functionName","getFunctionName","getIsEval","fromString","argsStartIndex","argsEndIndex","locationString","exec","Boolean","j","Number","k","String","ErrorStackParser","StackGenerator","StackTraceGPS","_options","stackframe","sourceCache","_generateError","_merge","first","second","forEach","prop","_isShapedLikeParsableError","_filtered","opts","generateArtificially","getSync","backtrace","gps","Promise","resolve","all","resolveOriginal","pinpoint","bind","stackFrames","instrument","fn","callback","errback","thisArg","__stacktraceOriginalFn","instrumented","deinstrument","report","errorMsg","requestOptions","reject","req","XMLHttpRequest","onerror","onreadystatechange","readyState","responseText","setRequestHeader","headers","header","reportPayload","send","stringify","base64VLQ","util","ArraySet","MappingList","SourceMapGenerator","_file","_sourceRoot","_skipValidation","_sources","_names","_mappings","_sourcesContents","_version","fromSourceMap","aSourceMapConsumer","sourceRoot","file","eachMapping","mapping","newMapping","generated","line","original","addMapping","sources","sourceFile","sourceContentFor","setSourceContent","_validateMapping","has","add","aSourceFile","aSourceContent","keys","applySourceMap","aSourceMapPath","newSources","newNames","unsortedForEach","originalPositionFor","aGenerated","aOriginal","aSource","_serializeMappings","next","nameIdx","sourceIdx","previousGeneratedColumn","previousGeneratedLine","previousOriginalColumn","previousOriginalLine","previousName","previousSource","result","mappings","toArray","len","encode","_generateSourcesContent","aSources","aSourceRoot","toJSON","names","sourcesContent","base64","aValue","digit","encoded","vlq","toVLQSigned","VLQ_BASE","decode","aIndex","aOutParam","continuation","shifted","strLen","shift","_array","_set","fromArray","aArray","aAllowDuplicates","set","getOwnPropertyNames","sStr","isDuplicate","idx","at","aIdx","FIREFOX_SAFARI_STACK_REGEXP","CHROME_IE_STACK_REGEXP","SAFARI_NATIVE_CODE_REGEXP","parseOpera","parseV8OrIE","parseFFOrSafari","extractLocation","urlLike","sanitizedLine","tokens","locationParts","pop","functionNameRegex","parseOpera9","parseOpera11","parseOpera10","lineRE","lines","argsRaw","functionCall","maxStackSize","curr","callee","test","RegExp","$1","caller","SourceMap","_xdr","_atob","b64str","atob","_parseJson","_findFunctionName","syntaxes","code","maxLines","Math","min","commentPos","m","_ensureSupportedEnvironment","defineProperty","_ensureStackFrameIsLegit","_findSourceMappingURL","lastSourceMappingUrl","matchSourceMappingUrl","sourceMappingUrlRegExp","_extractLocationInfoFromSourceMapSource","sourceMapConsumer","loc","mappedSource","sourceMapConsumerCache","ajax","_get","isDataUrl","offline","supportedEncodingRegexp","sourceMapStart","encodedSource","xhrPromise","method","_getSourceMapConsumer","sourceMappingURL","defaultSourceRoot","sourceMapConsumerPromise","sourceMapSource","SourceMapConsumer","getMappedLocation","mappedStackFrame","resolveMappedStackFrame","findFunctionName","guessedFunctionName","SourceNode","intToCharMap","number","charCode","_sorted","_last","aCallback","aThisArg","aMapping","lineA","lineB","columnA","columnB","binarySearch","quickSort","aSourceMap","sourceMap","sections","IndexedSourceMapConsumer","BasicSourceMapConsumer","Mapping","lastOffset","_sections","offset","offsetLine","offsetColumn","generatedOffset","consumer","__generatedMappings","_parseMappings","__originalMappings","_charIsMappingSeparator","GENERATED_ORDER","ORIGINAL_ORDER","GREATEST_LOWER_BOUND","LEAST_UPPER_BOUND","aContext","aOrder","_generatedMappings","_originalMappings","allGeneratedPositionsFor","needle","_findMapping","lastColumn","smc","generatedMappings","destGeneratedMappings","destOriginalMappings","srcMapping","destMapping","segment","end","cachedSegments","temp","originalMappings","aNeedle","aMappings","aLineName","aColumnName","aComparator","aBias","computeColumnSpans","nextMapping","lastGeneratedColumn","Infinity","hasContentsOfAllSources","sc","nullOnMissing","fileUriAbsPath","generatedPositionFor","sectionIndex","section","bias","every","generatedPosition","sectionMappings","adjustedMapping","recursiveSearch","aLow","aHigh","aHaystack","aCompare","mid","floor","swap","ary","y","doQuickSort","comparator","r","low","high","round","random","pivot","q","REGEX_NEWLINE","isSourceNode","aLine","aColumn","aChunks","sourceContents","fromStringWithSourceMap","aGeneratedCode","aRelativePath","remainingLines","shiftNextLine","lastGeneratedLine","lastMapping","nextLine","addMappingWithCode","aChunk","isArray","chunk","prepend","unshift","walk","aFn","aSep","newChildren","replaceRight","aPattern","aReplacement","lastChild","walkSourceContents","toStringWithSourceMap","sourceMappingActive","lastOriginalSource","lastOriginalLine","lastOriginalColumn","lastOriginalName","sourceContent","process"],"mappings":"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","file":"js/163-8f3dfae0982812dc1660.chunk.js","sourcesContent":["var _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n};\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\nimport warning from \"warning\";\nimport invariant from \"invariant\";\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\n/**\n * The public API for putting history on context.\n */\n\nvar Router = function (_React$Component) {\n _inherits(Router, _React$Component);\n function Router() {\n var _temp, _this, _ret;\n _classCallCheck(this, Router);\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.state = {\n match: _this.computeMatch(_this.props.history.location.pathname)\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n Router.prototype.getChildContext = function getChildContext() {\n return {\n router: _extends({}, this.context.router, {\n history: this.props.history,\n route: {\n location: this.props.history.location,\n match: this.state.match\n }\n })\n };\n };\n Router.prototype.computeMatch = function computeMatch(pathname) {\n return {\n path: \"/\",\n url: \"/\",\n params: {},\n isExact: pathname === \"/\"\n };\n };\n Router.prototype.componentWillMount = function componentWillMount() {\n var _this2 = this;\n var _props = this.props,\n children = _props.children,\n history = _props.history;\n invariant(children == null || React.Children.count(children) === 1, \"A may have only one child element\");\n\n // Do this here so we can setState when a changes the\n // location in componentWillMount. This happens e.g. when doing\n // server rendering using a .\n this.unlisten = history.listen(function () {\n _this2.setState({\n match: _this2.computeMatch(history.location.pathname)\n });\n });\n };\n Router.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n warning(this.props.history === nextProps.history, \"You cannot change \");\n };\n Router.prototype.componentWillUnmount = function componentWillUnmount() {\n this.unlisten();\n };\n Router.prototype.render = function render() {\n var children = this.props.children;\n return children ? React.Children.only(children) : null;\n };\n return Router;\n}(React.Component);\nRouter.propTypes = {\n history: PropTypes.object.isRequired,\n children: PropTypes.node\n};\nRouter.contextTypes = {\n router: PropTypes.object\n};\nRouter.childContextTypes = {\n router: PropTypes.object.isRequired\n};\nexport default Router;","// Written in this round about way for babel-transform-imports\nimport Router from \"react-router/es/Router\";\nexport default Router;","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\nimport warning from \"warning\";\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createBrowserHistory as createHistory } from \"history\";\nimport Router from \"./Router\";\n\n/**\n * The public API for a that uses HTML5 history.\n */\n\nvar BrowserRouter = function (_React$Component) {\n _inherits(BrowserRouter, _React$Component);\n function BrowserRouter() {\n var _temp, _this, _ret;\n _classCallCheck(this, BrowserRouter);\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.history = createHistory(_this.props), _temp), _possibleConstructorReturn(_this, _ret);\n }\n BrowserRouter.prototype.componentWillMount = function componentWillMount() {\n warning(!this.props.history, \" ignores the history prop. To use a custom history, \" + \"use `import { Router }` instead of `import { BrowserRouter as Router }`.\");\n };\n BrowserRouter.prototype.render = function render() {\n return /*#__PURE__*/React.createElement(Router, {\n history: this.history,\n children: this.props.children\n });\n };\n return BrowserRouter;\n}(React.Component);\nexport default BrowserRouter;","import pathToRegexp from \"path-to-regexp\";\nvar patternCache = {};\nvar cacheLimit = 10000;\nvar cacheCount = 0;\nvar compileGenerator = function compileGenerator(pattern) {\n var cacheKey = pattern;\n var cache = patternCache[cacheKey] || (patternCache[cacheKey] = {});\n if (cache[pattern]) return cache[pattern];\n var compiledGenerator = pathToRegexp.compile(pattern);\n if (cacheCount < cacheLimit) {\n cache[pattern] = compiledGenerator;\n cacheCount++;\n }\n return compiledGenerator;\n};\n\n/**\n * Public API for generating a URL pathname from a pattern and parameters.\n */\nvar generatePath = function generatePath() {\n var pattern = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"/\";\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (pattern === \"/\") {\n return pattern;\n }\n var generator = compileGenerator(pattern);\n return generator(params, {\n pretty: true\n });\n};\nexport default generatePath;","var _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n};\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport warning from \"warning\";\nimport invariant from \"invariant\";\nimport { createLocation, locationsAreEqual } from \"history\";\nimport generatePath from \"./generatePath\";\n\n/**\n * The public API for updating the location programmatically\n * with a component.\n */\n\nvar Redirect = function (_React$Component) {\n _inherits(Redirect, _React$Component);\n function Redirect() {\n _classCallCheck(this, Redirect);\n return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n Redirect.prototype.isStatic = function isStatic() {\n return this.context.router && this.context.router.staticContext;\n };\n Redirect.prototype.componentWillMount = function componentWillMount() {\n invariant(this.context.router, \"You should not use outside a \");\n if (this.isStatic()) this.perform();\n };\n Redirect.prototype.componentDidMount = function componentDidMount() {\n if (!this.isStatic()) this.perform();\n };\n Redirect.prototype.componentDidUpdate = function componentDidUpdate(prevProps) {\n var prevTo = createLocation(prevProps.to);\n var nextTo = createLocation(this.props.to);\n if (locationsAreEqual(prevTo, nextTo)) {\n warning(false, \"You tried to redirect to the same route you're currently on: \" + (\"\\\"\" + nextTo.pathname + nextTo.search + \"\\\"\"));\n return;\n }\n this.perform();\n };\n Redirect.prototype.computeTo = function computeTo(_ref) {\n var computedMatch = _ref.computedMatch,\n to = _ref.to;\n if (computedMatch) {\n if (typeof to === \"string\") {\n return generatePath(to, computedMatch.params);\n } else {\n return _extends({}, to, {\n pathname: generatePath(to.pathname, computedMatch.params)\n });\n }\n }\n return to;\n };\n Redirect.prototype.perform = function perform() {\n var history = this.context.router.history;\n var push = this.props.push;\n var to = this.computeTo(this.props);\n if (push) {\n history.push(to);\n } else {\n history.replace(to);\n }\n };\n Redirect.prototype.render = function render() {\n return null;\n };\n return Redirect;\n}(React.Component);\nRedirect.propTypes = {\n computedMatch: PropTypes.object,\n // private, from \n push: PropTypes.bool,\n from: PropTypes.string,\n to: PropTypes.oneOfType([PropTypes.string, PropTypes.object]).isRequired\n};\nRedirect.defaultProps = {\n push: false\n};\nRedirect.contextTypes = {\n router: PropTypes.shape({\n history: PropTypes.shape({\n push: PropTypes.func.isRequired,\n replace: PropTypes.func.isRequired\n }).isRequired,\n staticContext: PropTypes.object\n }).isRequired\n};\nexport default Redirect;","// Written in this round about way for babel-transform-imports\nimport Redirect from \"react-router/es/Redirect\";\nexport default Redirect;","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Column from '../../../components/column';\nimport ColumnHeader from '../../../components/column_header';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\n\nexport default class ColumnLoading extends ImmutablePureComponent {\n\n static propTypes = {\n title: PropTypes.oneOfType([PropTypes.node, PropTypes.string]),\n icon: PropTypes.string,\n multiColumn: PropTypes.bool,\n };\n\n static defaultProps = {\n title: '',\n icon: '',\n };\n\n render() {\n let { title, icon, multiColumn } = this.props;\n\n return (\n \n \n
\n \n );\n }\n\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { injectIntl, FormattedMessage } from 'react-intl';\nimport Column from 'mastodon/components/column';\nimport Button from 'mastodon/components/button';\nimport { Helmet } from 'react-helmet';\nimport { Link } from 'react-router-dom';\nimport classNames from 'classnames';\nimport { autoPlayGif } from 'mastodon/initial_state';\n\nclass GIF extends React.PureComponent {\n\n static propTypes = {\n src: PropTypes.string.isRequired,\n staticSrc: PropTypes.string.isRequired,\n className: PropTypes.string,\n animate: PropTypes.bool,\n };\n\n static defaultProps = {\n animate: autoPlayGif,\n };\n\n state = {\n hovering: false,\n };\n\n handleMouseEnter = () => {\n const { animate } = this.props;\n\n if (!animate) {\n this.setState({ hovering: true });\n }\n };\n\n handleMouseLeave = () => {\n const { animate } = this.props;\n\n if (!animate) {\n this.setState({ hovering: false });\n }\n };\n\n render () {\n const { src, staticSrc, className, animate } = this.props;\n const { hovering } = this.state;\n\n return (\n \n );\n }\n\n}\n\nclass CopyButton extends React.PureComponent {\n\n static propTypes = {\n children: PropTypes.node.isRequired,\n value: PropTypes.string.isRequired,\n };\n\n state = {\n copied: false,\n };\n\n handleClick = () => {\n const { value } = this.props;\n navigator.clipboard.writeText(value);\n this.setState({ copied: true });\n this.timeout = setTimeout(() => this.setState({ copied: false }), 700);\n };\n\n componentWillUnmount () {\n if (this.timeout) clearTimeout(this.timeout);\n }\n\n render () {\n const { children } = this.props;\n const { copied } = this.state;\n\n return (\n \n );\n }\n\n}\n\nexport default @injectIntl\nclass BundleColumnError extends React.PureComponent {\n\n static propTypes = {\n errorType: PropTypes.oneOf(['routing', 'network', 'error']),\n onRetry: PropTypes.func,\n intl: PropTypes.object.isRequired,\n multiColumn: PropTypes.bool,\n stacktrace: PropTypes.string,\n };\n\n static defaultProps = {\n errorType: 'routing',\n };\n\n handleRetry = () => {\n const { onRetry } = this.props;\n\n if (onRetry) {\n onRetry();\n }\n };\n\n render () {\n const { errorType, multiColumn, stacktrace } = this.props;\n\n let title, body;\n\n switch(errorType) {\n case 'routing':\n title = ;\n body = ;\n break;\n case 'network':\n title = ;\n body = ;\n break;\n case 'error':\n title = ;\n body = ;\n break;\n }\n\n return (\n \n
\n \n\n
\n

{title}

\n

{body}

\n\n
\n {errorType === 'network' && }\n {errorType === 'error' && }\n \n
\n
\n
\n\n \n \n \n
\n );\n }\n\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Switch, Route } from 'react-router-dom';\nimport StackTrace from 'stacktrace-js';\nimport ColumnLoading from '../components/column_loading';\nimport BundleColumnError from '../components/bundle_column_error';\nimport BundleContainer from '../containers/bundle_container';\n\n// Small wrapper to pass multiColumn to the route components\nexport class WrappedSwitch extends React.PureComponent {\n\n render () {\n const { multiColumn, children } = this.props;\n\n return (\n \n {React.Children.map(children, child => React.cloneElement(child, { multiColumn }))}\n \n );\n }\n\n}\n\nWrappedSwitch.propTypes = {\n multiColumn: PropTypes.bool,\n children: PropTypes.node,\n};\n\n// Small Wrapper to extract the params from the route and pass\n// them to the rendered component, together with the content to\n// be rendered inside (the children)\nexport class WrappedRoute extends React.Component {\n\n static propTypes = {\n component: PropTypes.func.isRequired,\n content: PropTypes.node,\n multiColumn: PropTypes.bool,\n componentParams: PropTypes.object,\n };\n\n static defaultProps = {\n componentParams: {},\n };\n\n static getDerivedStateFromError () {\n return {\n hasError: true,\n };\n }\n\n state = {\n hasError: false,\n stacktrace: '',\n };\n\n componentDidCatch (error) {\n StackTrace.fromError(error).then(stackframes => {\n this.setState({ stacktrace: error.toString() + '\\n' + stackframes.map(frame => frame.toString()).join('\\n') });\n }).catch(err => {\n console.error(err);\n });\n }\n\n renderComponent = ({ match }) => {\n const { component, content, multiColumn, componentParams } = this.props;\n const { hasError, stacktrace } = this.state;\n\n if (hasError) {\n return (\n \n );\n }\n\n return (\n \n {Component => {content}}\n \n );\n };\n\n renderLoading = () => {\n const { multiColumn } = this.props;\n\n return ;\n };\n\n renderError = (props) => {\n return ;\n };\n\n render () {\n const { component: Component, content, ...rest } = this.props;\n\n return ;\n }\n\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Motion from '../../ui/util/optional_motion';\nimport spring from 'react-motion/lib/spring';\nimport { FormattedMessage } from 'react-intl';\n\nexport default class UploadArea extends React.PureComponent {\n\n static propTypes = {\n active: PropTypes.bool,\n onClose: PropTypes.func,\n };\n\n handleKeyUp = (e) => {\n const keyCode = e.keyCode;\n if (this.props.active) {\n switch(keyCode) {\n case 27:\n e.preventDefault();\n e.stopPropagation();\n this.props.onClose();\n break;\n }\n }\n };\n\n componentDidMount () {\n window.addEventListener('keyup', this.handleKeyUp, false);\n }\n\n componentWillUnmount () {\n window.removeEventListener('keyup', this.handleKeyUp);\n }\n\n render () {\n const { active } = this.props;\n\n return (\n \n {({ backgroundOpacity, backgroundScale }) => (\n
\n
\n
\n
\n
\n
\n )}\n \n );\n }\n\n}\n","import React from 'react';\n\nconst DrawerLoading = () => (\n
\n
\n
\n
\n
\n);\n\nexport default DrawerLoading;\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport { FormattedMessage, defineMessages, injectIntl } from 'react-intl';\nimport { connect } from 'react-redux';\nimport { fetchServer } from 'mastodon/actions/server';\nimport ShortNumber from 'mastodon/components/short_number';\nimport Skeleton from 'mastodon/components/skeleton';\nimport Account from 'mastodon/containers/account_container';\nimport { domain } from 'mastodon/initial_state';\nimport Image from 'mastodon/components/image';\nimport { Link } from 'react-router-dom';\n\nconst messages = defineMessages({\n aboutActiveUsers: { id: 'server_banner.about_active_users', defaultMessage: 'People using this server during the last 30 days (Monthly Active Users)' },\n});\n\nconst mapStateToProps = state => ({\n server: state.getIn(['server', 'server']),\n});\n\nexport default @connect(mapStateToProps)\n@injectIntl\nclass ServerBanner extends React.PureComponent {\n\n static propTypes = {\n server: PropTypes.object,\n dispatch: PropTypes.func,\n intl: PropTypes.object,\n };\n\n componentDidMount () {\n const { dispatch } = this.props;\n dispatch(fetchServer());\n }\n\n render () {\n const { server, intl } = this.props;\n const isLoading = server.get('isLoading');\n\n return (\n
\n
\n {domain}, mastodon: Mastodon }} />\n
\n\n \n\n
\n {isLoading ? (\n <>\n \n
\n \n
\n \n \n ) : server.get('description')}\n
\n\n
\n
\n

\n\n \n
\n\n
\n

\n\n {isLoading ? (\n <>\n \n
\n \n \n ) : (\n <>\n \n
\n \n \n )}\n
\n
\n\n
\n\n \n
\n );\n }\n\n}\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport SearchContainer from 'mastodon/features/compose/containers/search_container';\nimport ComposeFormContainer from 'mastodon/features/compose/containers/compose_form_container';\nimport NavigationContainer from 'mastodon/features/compose/containers/navigation_container';\nimport LinkFooter from './link_footer';\nimport ServerBanner from 'mastodon/components/server_banner';\nimport { changeComposing, mountCompose, unmountCompose } from 'mastodon/actions/compose';\n\nexport default @connect()\nclass ComposePanel extends React.PureComponent {\n\n static contextTypes = {\n identity: PropTypes.object.isRequired,\n };\n\n static propTypes = {\n dispatch: PropTypes.func.isRequired,\n };\n\n onFocus = () => {\n const { dispatch } = this.props;\n dispatch(changeComposing(true));\n };\n\n onBlur = () => {\n const { dispatch } = this.props;\n dispatch(changeComposing(false));\n };\n\n componentDidMount () {\n const { dispatch } = this.props;\n dispatch(mountCompose());\n }\n\n componentWillUnmount () {\n const { dispatch } = this.props;\n dispatch(unmountCompose());\n }\n\n render() {\n const { signedIn } = this.context.identity;\n\n return (\n
\n \n\n {!signedIn && (\n \n \n
\n \n )}\n\n {signedIn && (\n \n \n \n \n )}\n\n \n
\n );\n }\n\n}\n","import React from 'react';\n\nconst Logo = () => (\n \n Mastodon\n \n \n);\n\nexport default Logo;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { Link } from 'react-router-dom';\nimport { FormattedMessage, defineMessages, injectIntl } from 'react-intl';\nimport { disabledAccountId, movedToAccountId, domain } from 'mastodon/initial_state';\nimport { openModal } from 'mastodon/actions/modal';\nimport { logOut } from 'mastodon/utils/log_out';\n\nconst messages = defineMessages({\n logoutMessage: { id: 'confirmations.logout.message', defaultMessage: 'Are you sure you want to log out?' },\n logoutConfirm: { id: 'confirmations.logout.confirm', defaultMessage: 'Log out' },\n});\n\nconst mapStateToProps = (state) => ({\n disabledAcct: state.getIn(['accounts', disabledAccountId, 'acct']),\n movedToAcct: movedToAccountId ? state.getIn(['accounts', movedToAccountId, 'acct']) : undefined,\n});\n\nconst mapDispatchToProps = (dispatch, { intl }) => ({\n onLogout () {\n dispatch(openModal('CONFIRM', {\n message: intl.formatMessage(messages.logoutMessage),\n confirm: intl.formatMessage(messages.logoutConfirm),\n closeWhenConfirm: false,\n onConfirm: () => logOut(),\n }));\n },\n});\n\nexport default @injectIntl\n@connect(mapStateToProps, mapDispatchToProps)\nclass DisabledAccountBanner extends React.PureComponent {\n\n static propTypes = {\n disabledAcct: PropTypes.string.isRequired,\n movedToAcct: PropTypes.string,\n onLogout: PropTypes.func.isRequired,\n intl: PropTypes.object.isRequired,\n };\n\n handleLogOutClick = e => {\n e.preventDefault();\n e.stopPropagation();\n\n this.props.onLogout();\n\n return false;\n };\n\n render () {\n const { disabledAcct, movedToAcct } = this.props;\n\n const disabledAccountLink = (\n \n {disabledAcct}@{domain}\n \n );\n\n return (\n
\n

\n {movedToAcct ? (\n {movedToAcct.includes('@') ? movedToAcct : `${movedToAcct}@${domain}`},\n }}\n />\n ) : (\n \n )}\n

\n \n \n \n \n
\n );\n }\n\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { fetchFollowRequests } from 'mastodon/actions/accounts';\nimport { connect } from 'react-redux';\nimport ColumnLink from 'mastodon/features/ui/components/column_link';\nimport IconWithBadge from 'mastodon/components/icon_with_badge';\nimport { List as ImmutableList } from 'immutable';\nimport { injectIntl, defineMessages } from 'react-intl';\n\nconst messages = defineMessages({\n text: { id: 'navigation_bar.follow_requests', defaultMessage: 'Follow requests' },\n});\n\nconst mapStateToProps = state => ({\n count: state.getIn(['user_lists', 'follow_requests', 'items'], ImmutableList()).size,\n});\n\nexport default @injectIntl\n@connect(mapStateToProps)\nclass FollowRequestsColumnLink extends React.Component {\n\n static propTypes = {\n dispatch: PropTypes.func.isRequired,\n count: PropTypes.number.isRequired,\n intl: PropTypes.object.isRequired,\n };\n\n componentDidMount () {\n const { dispatch } = this.props;\n\n dispatch(fetchFollowRequests());\n }\n\n render () {\n const { count, intl } = this.props;\n\n if (count === 0) {\n return null;\n }\n\n return (\n }\n text={intl.formatMessage(messages.text)}\n />\n );\n }\n\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { createSelector } from 'reselect';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\nimport { connect } from 'react-redux';\nimport { withRouter } from 'react-router-dom';\nimport { fetchLists } from 'mastodon/actions/lists';\nimport ColumnLink from './column_link';\n\nconst getOrderedLists = createSelector([state => state.get('lists')], lists => {\n if (!lists) {\n return lists;\n }\n\n return lists.toList().filter(item => !!item).sort((a, b) => a.get('title').localeCompare(b.get('title'))).take(4);\n});\n\nconst mapStateToProps = state => ({\n lists: getOrderedLists(state),\n});\n\nexport default @withRouter\n@connect(mapStateToProps)\nclass ListPanel extends ImmutablePureComponent {\n\n static propTypes = {\n dispatch: PropTypes.func.isRequired,\n lists: ImmutablePropTypes.list,\n };\n\n componentDidMount () {\n const { dispatch } = this.props;\n dispatch(fetchLists());\n }\n\n render () {\n const { lists } = this.props;\n\n if (!lists || lists.isEmpty()) {\n return null;\n }\n\n return (\n
\n
\n\n {lists.map(list => (\n \n ))}\n
\n );\n }\n\n}\n","import { connect } from 'react-redux';\nimport IconWithBadge from 'mastodon/components/icon_with_badge';\n\nconst mapStateToProps = state => ({\n count: state.getIn(['notifications', 'unread']),\n id: 'bell',\n});\n\nexport default connect(mapStateToProps)(IconWithBadge);\n","import React, { useCallback } from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport { useDispatch } from 'react-redux';\nimport { registrationsOpen } from 'mastodon/initial_state';\nimport { openModal } from 'mastodon/actions/modal';\n\nconst SignInBanner = () => {\n const dispatch = useDispatch();\n\n const openClosedRegistrationsModal = useCallback(\n () => dispatch(openModal('CLOSED_REGISTRATIONS')),\n [dispatch],\n );\n\n let signupButton;\n\n if (registrationsOpen) {\n signupButton = (\n \n \n \n );\n } else {\n signupButton = (\n \n );\n }\n\n return (\n
\n

\n \n {signupButton}\n
\n );\n};\n\nexport default SignInBanner;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\nimport { defineMessages, injectIntl, FormattedMessage } from 'react-intl';\nimport Hashtag from 'mastodon/components/hashtag';\n\nconst messages = defineMessages({\n lastStatusAt: { id: 'account.featured_tags.last_status_at', defaultMessage: 'Last post on {date}' },\n empty: { id: 'account.featured_tags.last_status_never', defaultMessage: 'No posts' },\n});\n\nexport default @injectIntl\nclass FeaturedTags extends ImmutablePureComponent {\n\n static contextTypes = {\n router: PropTypes.object,\n };\n\n static propTypes = {\n account: ImmutablePropTypes.map,\n featuredTags: ImmutablePropTypes.list,\n tagged: PropTypes.string,\n intl: PropTypes.object.isRequired,\n };\n\n render () {\n const { account, featuredTags, intl } = this.props;\n\n if (!account || account.get('suspended') || featuredTags.isEmpty()) {\n return null;\n }\n\n return (\n
\n

}} />

\n\n {featuredTags.take(3).map(featuredTag => (\n 0) ? intl.formatMessage(messages.lastStatusAt, { date: intl.formatDate(featuredTag.get('last_status_at'), { month: 'short', day: '2-digit' }) }) : intl.formatMessage(messages.empty)}\n />\n ))}\n
\n );\n }\n\n}\n","import { connect } from 'react-redux';\nimport FeaturedTags from '../components/featured_tags';\nimport { makeGetAccount } from 'mastodon/selectors';\nimport { List as ImmutableList } from 'immutable';\n\nconst mapStateToProps = () => {\n const getAccount = makeGetAccount();\n\n return (state, { accountId }) => ({\n account: getAccount(state, accountId),\n featuredTags: state.getIn(['user_lists', 'featured_tags', accountId, 'items'], ImmutableList()),\n });\n};\n\nexport default connect(mapStateToProps)(FeaturedTags);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport FeaturedTags from 'mastodon/features/account/containers/featured_tags_container';\nimport { normalizeForLookup } from 'mastodon/reducers/accounts_map';\n\nconst mapStateToProps = (state, { match: { params: { acct } } }) => {\n const accountId = state.getIn(['accounts_map', normalizeForLookup(acct)]);\n\n if (!accountId) {\n return {\n isLoading: true,\n };\n }\n\n return {\n accountId,\n isLoading: false,\n };\n};\n\nexport default @connect(mapStateToProps)\nclass AccountNavigation extends React.PureComponent {\n\n static propTypes = {\n match: PropTypes.shape({\n params: PropTypes.shape({\n acct: PropTypes.string,\n tagged: PropTypes.string,\n }).isRequired,\n }).isRequired,\n\n accountId: PropTypes.string,\n isLoading: PropTypes.bool,\n };\n\n render () {\n const { accountId, isLoading, match: { params: { tagged } } } = this.props;\n\n if (isLoading) {\n return null;\n }\n\n return (\n <>\n
\n \n \n );\n }\n\n}\n","import React from 'react';\nimport { Switch, Route, withRouter } from 'react-router-dom';\nimport { showTrends } from 'mastodon/initial_state';\nimport Trends from 'mastodon/features/getting_started/containers/trends_container';\nimport AccountNavigation from 'mastodon/features/account/navigation';\n\nconst DefaultNavigation = () => (\n <>\n {showTrends && (\n <>\n
\n \n \n )}\n \n);\n\nexport default @withRouter\nclass NavigationPortal extends React.PureComponent {\n\n render () {\n return (\n \n \n \n \n \n \n \n \n \n );\n }\n\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { defineMessages, injectIntl } from 'react-intl';\nimport { Link } from 'react-router-dom';\nimport Logo from 'mastodon/components/logo';\nimport { timelinePreview, showTrends } from 'mastodon/initial_state';\nimport ColumnLink from './column_link';\nimport DisabledAccountBanner from './disabled_account_banner';\nimport FollowRequestsColumnLink from './follow_requests_column_link';\nimport ListPanel from './list_panel';\nimport NotificationsCounterIcon from './notifications_counter_icon';\nimport SignInBanner from './sign_in_banner';\nimport NavigationPortal from 'mastodon/components/navigation_portal';\n\nconst messages = defineMessages({\n home: { id: 'tabs_bar.home', defaultMessage: 'Home' },\n notifications: { id: 'tabs_bar.notifications', defaultMessage: 'Notifications' },\n explore: { id: 'explore.title', defaultMessage: 'Explore' },\n local: { id: 'tabs_bar.local_timeline', defaultMessage: 'Local' },\n federated: { id: 'tabs_bar.federated_timeline', defaultMessage: 'Federated' },\n direct: { id: 'navigation_bar.direct', defaultMessage: 'Direct messages' },\n favourites: { id: 'navigation_bar.favourites', defaultMessage: 'Favourites' },\n bookmarks: { id: 'navigation_bar.bookmarks', defaultMessage: 'Bookmarks' },\n lists: { id: 'navigation_bar.lists', defaultMessage: 'Lists' },\n preferences: { id: 'navigation_bar.preferences', defaultMessage: 'Preferences' },\n followsAndFollowers: { id: 'navigation_bar.follows_and_followers', defaultMessage: 'Follows and followers' },\n about: { id: 'navigation_bar.about', defaultMessage: 'About' },\n search: { id: 'navigation_bar.search', defaultMessage: 'Search' },\n});\n\nexport default @injectIntl\nclass NavigationPanel extends React.Component {\n\n static contextTypes = {\n router: PropTypes.object.isRequired,\n identity: PropTypes.object.isRequired,\n };\n\n static propTypes = {\n intl: PropTypes.object.isRequired,\n };\n\n render () {\n const { intl } = this.props;\n const { signedIn, disabledAccountId } = this.context.identity;\n\n return (\n
\n
\n \n
\n
\n\n {signedIn && (\n \n \n } text={intl.formatMessage(messages.notifications)} />\n \n \n )}\n\n {showTrends ? (\n \n ) : (\n \n )}\n\n {(signedIn || timelinePreview) && (\n <>\n \n \n \n )}\n\n {!signedIn && (\n
\n
\n { disabledAccountId ? : }\n
\n )}\n\n {signedIn && (\n \n \n \n \n \n\n \n\n
\n\n \n
\n )}\n\n
\n
\n \n
\n\n \n
\n );\n }\n\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\nimport BundleContainer from '../containers/bundle_container';\nimport ColumnLoading from './column_loading';\nimport DrawerLoading from './drawer_loading';\nimport BundleColumnError from './bundle_column_error';\nimport {\n Compose,\n Notifications,\n HomeTimeline,\n CommunityTimeline,\n PublicTimeline,\n HashtagTimeline,\n DirectTimeline,\n FavouritedStatuses,\n BookmarkedStatuses,\n ListTimeline,\n Directory,\n} from '../../ui/util/async-components';\nimport ComposePanel from './compose_panel';\nimport NavigationPanel from './navigation_panel';\nimport { supportsPassiveEvents } from 'detect-passive-events';\nimport { scrollRight } from '../../../scroll';\n\nconst componentMap = {\n 'COMPOSE': Compose,\n 'HOME': HomeTimeline,\n 'NOTIFICATIONS': Notifications,\n 'PUBLIC': PublicTimeline,\n 'REMOTE': PublicTimeline,\n 'COMMUNITY': CommunityTimeline,\n 'HASHTAG': HashtagTimeline,\n 'DIRECT': DirectTimeline,\n 'FAVOURITES': FavouritedStatuses,\n 'BOOKMARKS': BookmarkedStatuses,\n 'LIST': ListTimeline,\n 'DIRECTORY': Directory,\n};\n\nexport default class ColumnsArea extends ImmutablePureComponent {\n\n static contextTypes = {\n router: PropTypes.object.isRequired,\n };\n\n static propTypes = {\n columns: ImmutablePropTypes.list.isRequired,\n isModalOpen: PropTypes.bool.isRequired,\n singleColumn: PropTypes.bool,\n children: PropTypes.node,\n };\n\n // Corresponds to (max-width: $no-gap-breakpoint + 285px - 1px) in SCSS\n mediaQuery = 'matchMedia' in window && window.matchMedia('(max-width: 1174px)');\n\n state = {\n renderComposePanel: !(this.mediaQuery && this.mediaQuery.matches),\n };\n\n componentDidMount() {\n if (!this.props.singleColumn) {\n this.node.addEventListener('wheel', this.handleWheel, supportsPassiveEvents ? { passive: true } : false);\n }\n\n if (this.mediaQuery) {\n if (this.mediaQuery.addEventListener) {\n this.mediaQuery.addEventListener('change', this.handleLayoutChange);\n } else {\n this.mediaQuery.addListener(this.handleLayoutChange);\n }\n this.setState({ renderComposePanel: !this.mediaQuery.matches });\n }\n\n this.isRtlLayout = document.getElementsByTagName('body')[0].classList.contains('rtl');\n }\n\n componentWillUpdate(nextProps) {\n if (this.props.singleColumn !== nextProps.singleColumn && nextProps.singleColumn) {\n this.node.removeEventListener('wheel', this.handleWheel);\n }\n }\n\n componentDidUpdate(prevProps) {\n if (this.props.singleColumn !== prevProps.singleColumn && !this.props.singleColumn) {\n this.node.addEventListener('wheel', this.handleWheel, supportsPassiveEvents ? { passive: true } : false);\n }\n }\n\n componentWillUnmount () {\n if (!this.props.singleColumn) {\n this.node.removeEventListener('wheel', this.handleWheel);\n }\n\n if (this.mediaQuery) {\n if (this.mediaQuery.removeEventListener) {\n this.mediaQuery.removeEventListener('change', this.handleLayoutChange);\n } else {\n this.mediaQuery.removeListener(this.handleLayoutChange);\n }\n }\n }\n\n handleChildrenContentChange() {\n if (!this.props.singleColumn) {\n const modifier = this.isRtlLayout ? -1 : 1;\n this._interruptScrollAnimation = scrollRight(this.node, (this.node.scrollWidth - window.innerWidth) * modifier);\n }\n }\n\n handleLayoutChange = (e) => {\n this.setState({ renderComposePanel: !e.matches });\n };\n\n handleWheel = () => {\n if (typeof this._interruptScrollAnimation !== 'function') {\n return;\n }\n\n this._interruptScrollAnimation();\n };\n\n setRef = (node) => {\n this.node = node;\n };\n\n renderLoading = columnId => () => {\n return columnId === 'COMPOSE' ? : ;\n };\n\n renderError = (props) => {\n return ;\n };\n\n render () {\n const { columns, children, singleColumn, isModalOpen } = this.props;\n const { renderComposePanel } = this.state;\n\n if (singleColumn) {\n return (\n
\n
\n
\n {renderComposePanel && }\n
\n
\n\n
\n
\n
{children}
\n
\n\n
\n
\n \n
\n
\n
\n );\n }\n\n return (\n
\n {columns.map(column => {\n const params = column.get('params', null) === null ? null : column.get('params').toJS();\n const other = params && params.other ? params.other : {};\n\n return (\n \n {SpecificComponent => }\n \n );\n })}\n\n {React.Children.map(children, child => React.cloneElement(child, { multiColumn: true }))}\n
\n );\n }\n\n}\n","import { connect } from 'react-redux';\nimport ColumnsArea from '../components/columns_area';\n\nconst mapStateToProps = state => ({\n columns: state.getIn(['settings', 'columns']),\n isModalOpen: !!state.get('modal').modalType,\n});\n\nexport default connect(mapStateToProps, null, null, { forwardRef: true })(ColumnsArea);\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport PropTypes from 'prop-types';\nimport IconButton from 'mastodon/components/icon_button';\nimport { Link } from 'react-router-dom';\nimport Avatar from 'mastodon/components/avatar';\nimport DisplayName from 'mastodon/components/display_name';\nimport { defineMessages, injectIntl } from 'react-intl';\n\nconst messages = defineMessages({\n close: { id: 'lightbox.close', defaultMessage: 'Close' },\n});\n\nconst mapStateToProps = (state, { accountId }) => ({\n account: state.getIn(['accounts', accountId]),\n});\n\nexport default @connect(mapStateToProps)\n@injectIntl\nclass Header extends ImmutablePureComponent {\n\n static propTypes = {\n accountId: PropTypes.string.isRequired,\n statusId: PropTypes.string.isRequired,\n account: ImmutablePropTypes.map.isRequired,\n onClose: PropTypes.func.isRequired,\n intl: PropTypes.object.isRequired,\n };\n\n render () {\n const { account, statusId, onClose, intl } = this.props;\n\n return (\n
\n \n \n \n \n\n \n
\n );\n }\n\n}\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport Video from 'mastodon/features/video';\nimport Audio from 'mastodon/features/audio';\nimport { removePictureInPicture } from 'mastodon/actions/picture_in_picture';\nimport Header from './components/header';\nimport Footer from './components/footer';\n\nconst mapStateToProps = state => ({\n ...state.get('picture_in_picture'),\n});\n\nexport default @connect(mapStateToProps)\nclass PictureInPicture extends React.Component {\n\n static propTypes = {\n statusId: PropTypes.string,\n accountId: PropTypes.string,\n type: PropTypes.string,\n src: PropTypes.string,\n muted: PropTypes.bool,\n volume: PropTypes.number,\n currentTime: PropTypes.number,\n poster: PropTypes.string,\n backgroundColor: PropTypes.string,\n foregroundColor: PropTypes.string,\n accentColor: PropTypes.string,\n dispatch: PropTypes.func.isRequired,\n };\n\n handleClose = () => {\n const { dispatch } = this.props;\n dispatch(removePictureInPicture());\n };\n\n render () {\n const { type, src, currentTime, accountId, statusId } = this.props;\n\n if (!currentTime) {\n return null;\n }\n\n let player;\n\n if (type === 'video') {\n player = (\n \n );\n } else if (type === 'audio') {\n player = (\n \n );\n }\n\n return (\n
\n
\n\n {player}\n\n
\n
\n );\n }\n\n}\n","import { changeSetting, saveSettings } from './settings';\n\nexport const INTRODUCTION_VERSION = 20181216044202;\n\nexport const closeOnboarding = () => dispatch => {\n dispatch(changeSetting(['introductionVersion'], INTRODUCTION_VERSION));\n dispatch(saveSettings());\n};\n","import React from 'react';\nimport Logo from 'mastodon/components/logo';\nimport { Link, withRouter } from 'react-router-dom';\nimport { FormattedMessage } from 'react-intl';\nimport { registrationsOpen, me } from 'mastodon/initial_state';\nimport Avatar from 'mastodon/components/avatar';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { openModal } from 'mastodon/actions/modal';\n\nconst Account = connect(state => ({\n account: state.getIn(['accounts', me]),\n}))(({ account }) => (\n \n \n \n));\n\nconst mapDispatchToProps = (dispatch) => ({\n openClosedRegistrationsModal() {\n dispatch(openModal('CLOSED_REGISTRATIONS'));\n },\n});\n\nexport default @withRouter\n@connect(null, mapDispatchToProps)\nclass Header extends React.PureComponent {\n\n static contextTypes = {\n identity: PropTypes.object,\n };\n\n static propTypes = {\n openClosedRegistrationsModal: PropTypes.func,\n location: PropTypes.object,\n };\n\n render () {\n const { signedIn } = this.context.identity;\n const { location, openClosedRegistrationsModal } = this.props;\n\n let content;\n\n if (signedIn) {\n content = (\n <>\n {location.pathname !== '/publish' && }\n \n \n );\n } else {\n let signupButton;\n\n if (registrationsOpen) {\n signupButton = (\n \n \n \n );\n } else {\n signupButton = (\n \n );\n }\n\n content = (\n <>\n \n {signupButton}\n \n );\n }\n\n return (\n
\n \n\n
\n {content}\n
\n
\n );\n }\n\n}\n","import classNames from 'classnames';\nimport React from 'react';\nimport { HotKeys } from 'react-hotkeys';\nimport { defineMessages, injectIntl } from 'react-intl';\nimport { connect } from 'react-redux';\nimport { Redirect, Route, withRouter } from 'react-router-dom';\nimport PropTypes from 'prop-types';\nimport NotificationsContainer from './containers/notifications_container';\nimport LoadingBarContainer from './containers/loading_bar_container';\nimport ModalContainer from './containers/modal_container';\nimport { layoutFromWindow } from 'mastodon/is_mobile';\nimport { debounce } from 'lodash';\nimport { uploadCompose, resetCompose, changeComposeSpoilerness } from '../../actions/compose';\nimport { expandHomeTimeline } from '../../actions/timelines';\nimport { expandNotifications } from '../../actions/notifications';\nimport { fetchServer } from '../../actions/server';\nimport { clearHeight } from '../../actions/height_cache';\nimport { focusApp, unfocusApp, changeLayout } from 'mastodon/actions/app';\nimport { synchronouslySubmitMarkers, submitMarkers, fetchMarkers } from 'mastodon/actions/markers';\nimport { WrappedSwitch, WrappedRoute } from './util/react_router_helpers';\nimport BundleColumnError from './components/bundle_column_error';\nimport UploadArea from './components/upload_area';\nimport ColumnsAreaContainer from './containers/columns_area_container';\nimport PictureInPicture from 'mastodon/features/picture_in_picture';\nimport {\n Compose,\n Status,\n GettingStarted,\n KeyboardShortcuts,\n PublicTimeline,\n CommunityTimeline,\n AccountTimeline,\n AccountGallery,\n HomeTimeline,\n Followers,\n Following,\n Reblogs,\n Favourites,\n DirectTimeline,\n HashtagTimeline,\n Notifications,\n FollowRequests,\n FavouritedStatuses,\n BookmarkedStatuses,\n FollowedTags,\n ListTimeline,\n Blocks,\n DomainBlocks,\n Mutes,\n PinnedStatuses,\n Lists,\n Directory,\n Explore,\n FollowRecommendations,\n About,\n PrivacyPolicy,\n} from './util/async-components';\nimport initialState, { me, owner, singleUserMode, showTrends, trendsAsLanding } from '../../initial_state';\nimport { closeOnboarding, INTRODUCTION_VERSION } from 'mastodon/actions/onboarding';\nimport Header from './components/header';\n\n// Dummy import, to make sure that ends up in the application bundle.\n// Without this it ends up in ~8 very commonly used bundles.\nimport '../../components/status';\n\nconst messages = defineMessages({\n beforeUnload: { id: 'ui.beforeunload', defaultMessage: 'Your draft will be lost if you leave Mastodon.' },\n});\n\nconst mapStateToProps = state => ({\n layout: state.getIn(['meta', 'layout']),\n isComposing: state.getIn(['compose', 'is_composing']),\n hasComposingText: state.getIn(['compose', 'text']).trim().length !== 0,\n hasMediaAttachments: state.getIn(['compose', 'media_attachments']).size > 0,\n canUploadMore: !state.getIn(['compose', 'media_attachments']).some(x => ['audio', 'video'].includes(x.get('type'))) && state.getIn(['compose', 'media_attachments']).size < 4,\n dropdownMenuIsOpen: state.getIn(['dropdown_menu', 'openId']) !== null,\n firstLaunch: state.getIn(['settings', 'introductionVersion'], 0) < INTRODUCTION_VERSION,\n username: state.getIn(['accounts', me, 'username']),\n});\n\nconst keyMap = {\n help: '?',\n new: 'n',\n search: 's',\n forceNew: 'option+n',\n toggleComposeSpoilers: 'option+x',\n focusColumn: ['1', '2', '3', '4', '5', '6', '7', '8', '9'],\n reply: 'r',\n favourite: 'f',\n boost: 'b',\n mention: 'm',\n open: ['enter', 'o'],\n openProfile: 'p',\n moveDown: ['down', 'j'],\n moveUp: ['up', 'k'],\n back: 'backspace',\n goToHome: 'g h',\n goToNotifications: 'g n',\n goToLocal: 'g l',\n goToFederated: 'g t',\n goToDirect: 'g d',\n goToStart: 'g s',\n goToFavourites: 'g f',\n goToPinned: 'g p',\n goToProfile: 'g u',\n goToBlocked: 'g b',\n goToMuted: 'g m',\n goToRequests: 'g r',\n toggleHidden: 'x',\n toggleSensitive: 'h',\n openMedia: 'e',\n};\n\nclass SwitchingColumnsArea extends React.PureComponent {\n\n static contextTypes = {\n identity: PropTypes.object,\n };\n\n static propTypes = {\n children: PropTypes.node,\n location: PropTypes.object,\n mobile: PropTypes.bool,\n };\n\n componentWillMount () {\n if (this.props.mobile) {\n document.body.classList.toggle('layout-single-column', true);\n document.body.classList.toggle('layout-multiple-columns', false);\n } else {\n document.body.classList.toggle('layout-single-column', false);\n document.body.classList.toggle('layout-multiple-columns', true);\n }\n }\n\n componentDidUpdate (prevProps) {\n if (![this.props.location.pathname, '/'].includes(prevProps.location.pathname)) {\n this.node.handleChildrenContentChange();\n }\n\n if (prevProps.mobile !== this.props.mobile) {\n document.body.classList.toggle('layout-single-column', this.props.mobile);\n document.body.classList.toggle('layout-multiple-columns', !this.props.mobile);\n }\n }\n\n setRef = c => {\n if (c) {\n this.node = c;\n }\n };\n\n render () {\n const { children, mobile } = this.props;\n const { signedIn } = this.context.identity;\n\n let redirect;\n\n if (signedIn) {\n if (mobile) {\n redirect = ;\n } else {\n redirect = ;\n }\n } else if (singleUserMode && owner && initialState?.accounts[owner]) {\n redirect = ;\n } else if (showTrends && trendsAsLanding) {\n redirect = ;\n } else {\n redirect = ;\n }\n\n return (\n \n \n {redirect}\n\n \n \n \n \n\n \n \n \n \n \n \n \n \n\n \n \n\n \n \n \n \n\n \n \n \n \n \n \n \n \n \n\n {/* Legacy routes, cannot be easily factored with other routes because they share a param name */}\n \n \n \n \n \n\n \n \n \n \n \n \n\n \n \n \n );\n }\n\n}\n\nexport default @connect(mapStateToProps)\n@injectIntl\n@withRouter\nclass UI extends React.PureComponent {\n\n static contextTypes = {\n router: PropTypes.object.isRequired,\n identity: PropTypes.object.isRequired,\n };\n\n static propTypes = {\n dispatch: PropTypes.func.isRequired,\n children: PropTypes.node,\n isComposing: PropTypes.bool,\n hasComposingText: PropTypes.bool,\n hasMediaAttachments: PropTypes.bool,\n canUploadMore: PropTypes.bool,\n location: PropTypes.object,\n intl: PropTypes.object.isRequired,\n dropdownMenuIsOpen: PropTypes.bool,\n layout: PropTypes.string.isRequired,\n firstLaunch: PropTypes.bool,\n username: PropTypes.string,\n };\n\n state = {\n draggingOver: false,\n };\n\n handleBeforeUnload = e => {\n const { intl, dispatch, isComposing, hasComposingText, hasMediaAttachments } = this.props;\n\n dispatch(synchronouslySubmitMarkers());\n\n if (isComposing && (hasComposingText || hasMediaAttachments)) {\n e.preventDefault();\n // Setting returnValue to any string causes confirmation dialog.\n // Many browsers no longer display this text to users,\n // but we set user-friendly message for other browsers, e.g. Edge.\n e.returnValue = intl.formatMessage(messages.beforeUnload);\n }\n };\n\n handleWindowFocus = () => {\n this.props.dispatch(focusApp());\n this.props.dispatch(submitMarkers({ immediate: true }));\n };\n\n handleWindowBlur = () => {\n this.props.dispatch(unfocusApp());\n };\n\n handleDragEnter = (e) => {\n e.preventDefault();\n\n if (!this.dragTargets) {\n this.dragTargets = [];\n }\n\n if (this.dragTargets.indexOf(e.target) === -1) {\n this.dragTargets.push(e.target);\n }\n\n if (e.dataTransfer && Array.from(e.dataTransfer.types).includes('Files') && this.props.canUploadMore && this.context.identity.signedIn) {\n this.setState({ draggingOver: true });\n }\n };\n\n handleDragOver = (e) => {\n if (this.dataTransferIsText(e.dataTransfer)) return false;\n\n e.preventDefault();\n e.stopPropagation();\n\n try {\n e.dataTransfer.dropEffect = 'copy';\n } catch (err) {\n\n }\n\n return false;\n };\n\n handleDrop = (e) => {\n if (this.dataTransferIsText(e.dataTransfer)) return;\n\n e.preventDefault();\n\n this.setState({ draggingOver: false });\n this.dragTargets = [];\n\n if (e.dataTransfer && e.dataTransfer.files.length >= 1 && this.props.canUploadMore && this.context.identity.signedIn) {\n this.props.dispatch(uploadCompose(e.dataTransfer.files));\n }\n };\n\n handleDragLeave = (e) => {\n e.preventDefault();\n e.stopPropagation();\n\n this.dragTargets = this.dragTargets.filter(el => el !== e.target && this.node.contains(el));\n\n if (this.dragTargets.length > 0) {\n return;\n }\n\n this.setState({ draggingOver: false });\n };\n\n dataTransferIsText = (dataTransfer) => {\n return (dataTransfer && Array.from(dataTransfer.types).filter((type) => type === 'text/plain').length === 1);\n };\n\n closeUploadModal = () => {\n this.setState({ draggingOver: false });\n };\n\n handleServiceWorkerPostMessage = ({ data }) => {\n if (data.type === 'navigate') {\n this.context.router.history.push(data.path);\n } else {\n console.warn('Unknown message type:', data.type);\n }\n };\n\n handleLayoutChange = debounce(() => {\n this.props.dispatch(clearHeight()); // The cached heights are no longer accurate, invalidate\n }, 500, {\n trailing: true,\n });\n\n handleResize = () => {\n const layout = layoutFromWindow();\n\n if (layout !== this.props.layout) {\n this.handleLayoutChange.cancel();\n this.props.dispatch(changeLayout(layout));\n } else {\n this.handleLayoutChange();\n }\n };\n\n componentDidMount () {\n const { signedIn } = this.context.identity;\n\n window.addEventListener('focus', this.handleWindowFocus, false);\n window.addEventListener('blur', this.handleWindowBlur, false);\n window.addEventListener('beforeunload', this.handleBeforeUnload, false);\n window.addEventListener('resize', this.handleResize, { passive: true });\n\n document.addEventListener('dragenter', this.handleDragEnter, false);\n document.addEventListener('dragover', this.handleDragOver, false);\n document.addEventListener('drop', this.handleDrop, false);\n document.addEventListener('dragleave', this.handleDragLeave, false);\n document.addEventListener('dragend', this.handleDragEnd, false);\n\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.addEventListener('message', this.handleServiceWorkerPostMessage);\n }\n\n // On first launch, redirect to the follow recommendations page\n if (signedIn && this.props.firstLaunch) {\n this.context.router.history.replace('/start');\n this.props.dispatch(closeOnboarding());\n }\n\n if (signedIn) {\n this.props.dispatch(fetchMarkers());\n this.props.dispatch(expandHomeTimeline());\n this.props.dispatch(expandNotifications());\n\n setTimeout(() => this.props.dispatch(fetchServer()), 3000);\n }\n\n this.hotkeys.__mousetrap__.stopCallback = (e, element) => {\n return ['TEXTAREA', 'SELECT', 'INPUT'].includes(element.tagName);\n };\n }\n\n componentWillUnmount () {\n window.removeEventListener('focus', this.handleWindowFocus);\n window.removeEventListener('blur', this.handleWindowBlur);\n window.removeEventListener('beforeunload', this.handleBeforeUnload);\n window.removeEventListener('resize', this.handleResize);\n\n document.removeEventListener('dragenter', this.handleDragEnter);\n document.removeEventListener('dragover', this.handleDragOver);\n document.removeEventListener('drop', this.handleDrop);\n document.removeEventListener('dragleave', this.handleDragLeave);\n document.removeEventListener('dragend', this.handleDragEnd);\n }\n\n setRef = c => {\n this.node = c;\n };\n\n handleHotkeyNew = e => {\n e.preventDefault();\n\n const element = this.node.querySelector('.compose-form__autosuggest-wrapper textarea');\n\n if (element) {\n element.focus();\n }\n };\n\n handleHotkeySearch = e => {\n e.preventDefault();\n\n const element = this.node.querySelector('.search__input');\n\n if (element) {\n element.focus();\n }\n };\n\n handleHotkeyForceNew = e => {\n this.handleHotkeyNew(e);\n this.props.dispatch(resetCompose());\n };\n\n handleHotkeyToggleComposeSpoilers = e => {\n e.preventDefault();\n this.props.dispatch(changeComposeSpoilerness());\n };\n\n handleHotkeyFocusColumn = e => {\n const index = (e.key * 1) + 1; // First child is drawer, skip that\n const column = this.node.querySelector(`.column:nth-child(${index})`);\n if (!column) return;\n const container = column.querySelector('.scrollable');\n\n if (container) {\n const status = container.querySelector('.focusable');\n\n if (status) {\n if (container.scrollTop > status.offsetTop) {\n status.scrollIntoView(true);\n }\n status.focus();\n }\n }\n };\n\n handleHotkeyBack = () => {\n if (window.history && window.history.state) {\n this.context.router.history.goBack();\n } else {\n this.context.router.history.push('/');\n }\n };\n\n setHotkeysRef = c => {\n this.hotkeys = c;\n };\n\n handleHotkeyToggleHelp = () => {\n if (this.props.location.pathname === '/keyboard-shortcuts') {\n this.context.router.history.goBack();\n } else {\n this.context.router.history.push('/keyboard-shortcuts');\n }\n };\n\n handleHotkeyGoToHome = () => {\n this.context.router.history.push('/home');\n };\n\n handleHotkeyGoToNotifications = () => {\n this.context.router.history.push('/notifications');\n };\n\n handleHotkeyGoToLocal = () => {\n this.context.router.history.push('/public/local');\n };\n\n handleHotkeyGoToFederated = () => {\n this.context.router.history.push('/public');\n };\n\n handleHotkeyGoToDirect = () => {\n this.context.router.history.push('/conversations');\n };\n\n handleHotkeyGoToStart = () => {\n this.context.router.history.push('/getting-started');\n };\n\n handleHotkeyGoToFavourites = () => {\n this.context.router.history.push('/favourites');\n };\n\n handleHotkeyGoToPinned = () => {\n this.context.router.history.push('/pinned');\n };\n\n handleHotkeyGoToProfile = () => {\n this.context.router.history.push(`/@${this.props.username}`);\n };\n\n handleHotkeyGoToBlocked = () => {\n this.context.router.history.push('/blocks');\n };\n\n handleHotkeyGoToMuted = () => {\n this.context.router.history.push('/mutes');\n };\n\n handleHotkeyGoToRequests = () => {\n this.context.router.history.push('/follow_requests');\n };\n\n render () {\n const { draggingOver } = this.state;\n const { children, isComposing, location, dropdownMenuIsOpen, layout } = this.props;\n\n const handlers = {\n help: this.handleHotkeyToggleHelp,\n new: this.handleHotkeyNew,\n search: this.handleHotkeySearch,\n forceNew: this.handleHotkeyForceNew,\n toggleComposeSpoilers: this.handleHotkeyToggleComposeSpoilers,\n focusColumn: this.handleHotkeyFocusColumn,\n back: this.handleHotkeyBack,\n goToHome: this.handleHotkeyGoToHome,\n goToNotifications: this.handleHotkeyGoToNotifications,\n goToLocal: this.handleHotkeyGoToLocal,\n goToFederated: this.handleHotkeyGoToFederated,\n goToDirect: this.handleHotkeyGoToDirect,\n goToStart: this.handleHotkeyGoToStart,\n goToFavourites: this.handleHotkeyGoToFavourites,\n goToPinned: this.handleHotkeyGoToPinned,\n goToProfile: this.handleHotkeyGoToProfile,\n goToBlocked: this.handleHotkeyGoToBlocked,\n goToMuted: this.handleHotkeyGoToMuted,\n goToRequests: this.handleHotkeyGoToRequests,\n };\n\n return (\n \n
\n
\n\n \n {children}\n \n\n {layout !== 'mobile' && }\n \n \n \n \n
\n
\n );\n }\n\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { FormattedMessage } from 'react-intl';\nimport { version, source_url } from 'mastodon/initial_state';\nimport StackTrace from 'stacktrace-js';\nimport { Helmet } from 'react-helmet';\n\nexport default class ErrorBoundary extends React.PureComponent {\n\n static propTypes = {\n children: PropTypes.node,\n };\n\n state = {\n hasError: false,\n errorMessage: undefined,\n stackTrace: undefined,\n mappedStackTrace: undefined,\n componentStack: undefined,\n };\n\n componentDidCatch (error, info) {\n this.setState({\n hasError: true,\n errorMessage: error.toString(),\n stackTrace: error.stack,\n componentStack: info && info.componentStack,\n mappedStackTrace: undefined,\n });\n\n StackTrace.fromError(error).then((stackframes) => {\n this.setState({\n mappedStackTrace: stackframes.map((sf) => sf.toString()).join('\\n'),\n });\n }).catch(() => {\n this.setState({\n mappedStackTrace: undefined,\n });\n });\n }\n\n handleCopyStackTrace = () => {\n const { errorMessage, stackTrace, mappedStackTrace } = this.state;\n const textarea = document.createElement('textarea');\n\n let contents = [errorMessage, stackTrace];\n if (mappedStackTrace) {\n contents.push(mappedStackTrace);\n }\n\n textarea.textContent = contents.join('\\n\\n\\n');\n textarea.style.position = 'fixed';\n\n document.body.appendChild(textarea);\n\n try {\n textarea.select();\n document.execCommand('copy');\n } catch (e) {\n\n } finally {\n document.body.removeChild(textarea);\n }\n\n this.setState({ copied: true });\n setTimeout(() => this.setState({ copied: false }), 700);\n };\n\n render() {\n const { hasError, copied, errorMessage } = this.state;\n\n if (!hasError) {\n return this.props.children;\n }\n\n const likelyBrowserAddonIssue = errorMessage && errorMessage.includes('NotFoundError');\n\n return (\n
\n
\n

\n { likelyBrowserAddonIssue ? (\n \n ) : (\n \n )}\n

\n\n

\n { likelyBrowserAddonIssue ? (\n \n ) : (\n \n )}\n

\n\n

Mastodon v{version} · ·

\n
\n\n \n \n \n
\n );\n }\n\n}\n","import PropTypes from 'prop-types';\nimport React from 'react';\nimport { Helmet } from 'react-helmet';\nimport { IntlProvider, addLocaleData } from 'react-intl';\nimport { Provider as ReduxProvider } from 'react-redux';\nimport { BrowserRouter, Route } from 'react-router-dom';\nimport { ScrollContext } from 'react-router-scroll-4';\nimport configureStore from 'mastodon/store/configureStore';\nimport UI from 'mastodon/features/ui';\nimport { fetchCustomEmojis } from 'mastodon/actions/custom_emojis';\nimport { hydrateStore } from 'mastodon/actions/store';\nimport { connectUserStream } from 'mastodon/actions/streaming';\nimport ErrorBoundary from 'mastodon/components/error_boundary';\nimport initialState, { title as siteTitle } from 'mastodon/initial_state';\nimport { getLocale } from 'mastodon/locales';\n\nconst { localeData, messages } = getLocale();\naddLocaleData(localeData);\n\nconst title = process.env.NODE_ENV === 'production' ? siteTitle : `${siteTitle} (Dev)`;\n\nexport const store = configureStore();\nconst hydrateAction = hydrateStore(initialState);\n\nstore.dispatch(hydrateAction);\nif (initialState.meta.me) {\n store.dispatch(fetchCustomEmojis());\n}\n\nconst createIdentityContext = state => ({\n signedIn: !!state.meta.me,\n accountId: state.meta.me,\n disabledAccountId: state.meta.disabled_account_id,\n accessToken: state.meta.access_token,\n permissions: state.role ? state.role.permissions : 0,\n});\n\nexport default class Mastodon extends React.PureComponent {\n\n static propTypes = {\n locale: PropTypes.string.isRequired,\n };\n\n static childContextTypes = {\n identity: PropTypes.shape({\n signedIn: PropTypes.bool.isRequired,\n accountId: PropTypes.string,\n disabledAccountId: PropTypes.string,\n accessToken: PropTypes.string,\n }).isRequired,\n };\n\n identity = createIdentityContext(initialState);\n\n getChildContext() {\n return {\n identity: this.identity,\n };\n }\n\n componentDidMount() {\n if (this.identity.signedIn) {\n this.disconnect = store.dispatch(connectUserStream());\n }\n }\n\n componentWillUnmount () {\n if (this.disconnect) {\n this.disconnect();\n this.disconnect = null;\n }\n }\n\n shouldUpdateScroll (prevRouterProps, { location }) {\n return !(location.state?.mastodonModalKey && location.state?.mastodonModalKey !== prevRouterProps?.location?.state?.mastodonModalKey);\n }\n\n render () {\n const { locale } = this.props;\n\n return (\n \n \n \n \n \n \n \n \n\n \n \n \n \n );\n }\n\n}\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { setupBrowserNotifications } from 'mastodon/actions/notifications';\nimport Mastodon, { store } from 'mastodon/containers/mastodon';\nimport { me } from 'mastodon/initial_state';\nimport ready from 'mastodon/ready';\n\nconst perf = require('mastodon/performance');\n\n/**\n * @returns {Promise}\n */\nfunction main() {\n perf.start('main()');\n\n return ready(async () => {\n const mountNode = document.getElementById('mastodon');\n const props = JSON.parse(mountNode.getAttribute('data-props'));\n\n ReactDOM.render(, mountNode);\n store.dispatch(setupBrowserNotifications());\n\n if (process.env.NODE_ENV === 'production' && me && 'serviceWorker' in navigator) {\n const { Workbox } = await import('workbox-window');\n const wb = new Workbox('/sw.js');\n /** @type {ServiceWorkerRegistration} */\n let registration;\n\n try {\n registration = await wb.register();\n } catch (err) {\n console.error(err);\n }\n\n if (registration) {\n const registerPushNotifications = await import('mastodon/actions/push_notifications');\n\n store.dispatch(registerPushNotifications.register());\n }\n }\n\n perf.stop('main()');\n });\n}\n\nexport default main;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\n/**\n * This is a helper function for getting values from parameter/options\n * objects.\n *\n * @param args The object we are extracting values from\n * @param name The name of the property we are getting.\n * @param defaultValue An optional value to return if the property is missing\n * from the object. If this is not specified and the property is missing, an\n * error will be thrown.\n */\nfunction getArg(aArgs, aName, aDefaultValue) {\n if (aName in aArgs) {\n return aArgs[aName];\n } else if (arguments.length === 3) {\n return aDefaultValue;\n } else {\n throw new Error('\"' + aName + '\" is a required argument.');\n }\n}\nexports.getArg = getArg;\nvar urlRegexp = /^(?:([\\w+\\-.]+):)?\\/\\/(?:(\\w+:\\w+)@)?([\\w.]*)(?::(\\d+))?(\\S*)$/;\nvar dataUrlRegexp = /^data:.+\\,.+$/;\nfunction urlParse(aUrl) {\n var match = aUrl.match(urlRegexp);\n if (!match) {\n return null;\n }\n return {\n scheme: match[1],\n auth: match[2],\n host: match[3],\n port: match[4],\n path: match[5]\n };\n}\nexports.urlParse = urlParse;\nfunction urlGenerate(aParsedUrl) {\n var url = '';\n if (aParsedUrl.scheme) {\n url += aParsedUrl.scheme + ':';\n }\n url += '//';\n if (aParsedUrl.auth) {\n url += aParsedUrl.auth + '@';\n }\n if (aParsedUrl.host) {\n url += aParsedUrl.host;\n }\n if (aParsedUrl.port) {\n url += \":\" + aParsedUrl.port;\n }\n if (aParsedUrl.path) {\n url += aParsedUrl.path;\n }\n return url;\n}\nexports.urlGenerate = urlGenerate;\n\n/**\n * Normalizes a path, or the path portion of a URL:\n *\n * - Replaces consecutive slashes with one slash.\n * - Removes unnecessary '.' parts.\n * - Removes unnecessary '/..' parts.\n *\n * Based on code in the Node.js 'path' core module.\n *\n * @param aPath The path or url to normalize.\n */\nfunction normalize(aPath) {\n var path = aPath;\n var url = urlParse(aPath);\n if (url) {\n if (!url.path) {\n return aPath;\n }\n path = url.path;\n }\n var isAbsolute = exports.isAbsolute(path);\n var parts = path.split(/\\/+/);\n for (var part, up = 0, i = parts.length - 1; i >= 0; i--) {\n part = parts[i];\n if (part === '.') {\n parts.splice(i, 1);\n } else if (part === '..') {\n up++;\n } else if (up > 0) {\n if (part === '') {\n // The first part is blank if the path is absolute. Trying to go\n // above the root is a no-op. Therefore we can remove all '..' parts\n // directly after the root.\n parts.splice(i + 1, up);\n up = 0;\n } else {\n parts.splice(i, 2);\n up--;\n }\n }\n }\n path = parts.join('/');\n if (path === '') {\n path = isAbsolute ? '/' : '.';\n }\n if (url) {\n url.path = path;\n return urlGenerate(url);\n }\n return path;\n}\nexports.normalize = normalize;\n\n/**\n * Joins two paths/URLs.\n *\n * @param aRoot The root path or URL.\n * @param aPath The path or URL to be joined with the root.\n *\n * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a\n * scheme-relative URL: Then the scheme of aRoot, if any, is prepended\n * first.\n * - Otherwise aPath is a path. If aRoot is a URL, then its path portion\n * is updated with the result and aRoot is returned. Otherwise the result\n * is returned.\n * - If aPath is absolute, the result is aPath.\n * - Otherwise the two paths are joined with a slash.\n * - Joining for example 'http://' and 'www.example.com' is also supported.\n */\nfunction join(aRoot, aPath) {\n if (aRoot === \"\") {\n aRoot = \".\";\n }\n if (aPath === \"\") {\n aPath = \".\";\n }\n var aPathUrl = urlParse(aPath);\n var aRootUrl = urlParse(aRoot);\n if (aRootUrl) {\n aRoot = aRootUrl.path || '/';\n }\n\n // `join(foo, '//www.example.org')`\n if (aPathUrl && !aPathUrl.scheme) {\n if (aRootUrl) {\n aPathUrl.scheme = aRootUrl.scheme;\n }\n return urlGenerate(aPathUrl);\n }\n if (aPathUrl || aPath.match(dataUrlRegexp)) {\n return aPath;\n }\n\n // `join('http://', 'www.example.com')`\n if (aRootUrl && !aRootUrl.host && !aRootUrl.path) {\n aRootUrl.host = aPath;\n return urlGenerate(aRootUrl);\n }\n var joined = aPath.charAt(0) === '/' ? aPath : normalize(aRoot.replace(/\\/+$/, '') + '/' + aPath);\n if (aRootUrl) {\n aRootUrl.path = joined;\n return urlGenerate(aRootUrl);\n }\n return joined;\n}\nexports.join = join;\nexports.isAbsolute = function (aPath) {\n return aPath.charAt(0) === '/' || !!aPath.match(urlRegexp);\n};\n\n/**\n * Make a path relative to a URL or another path.\n *\n * @param aRoot The root path or URL.\n * @param aPath The path or URL to be made relative to aRoot.\n */\nfunction relative(aRoot, aPath) {\n if (aRoot === \"\") {\n aRoot = \".\";\n }\n aRoot = aRoot.replace(/\\/$/, '');\n\n // It is possible for the path to be above the root. In this case, simply\n // checking whether the root is a prefix of the path won't work. Instead, we\n // need to remove components from the root one by one, until either we find\n // a prefix that fits, or we run out of components to remove.\n var level = 0;\n while (aPath.indexOf(aRoot + '/') !== 0) {\n var index = aRoot.lastIndexOf(\"/\");\n if (index < 0) {\n return aPath;\n }\n\n // If the only part of the root that is left is the scheme (i.e. http://,\n // file:///, etc.), one or more slashes (/), or simply nothing at all, we\n // have exhausted all components, so the path is not relative to the root.\n aRoot = aRoot.slice(0, index);\n if (aRoot.match(/^([^\\/]+:\\/)?\\/*$/)) {\n return aPath;\n }\n ++level;\n }\n\n // Make sure we add a \"../\" for each component we removed from the root.\n return Array(level + 1).join(\"../\") + aPath.substr(aRoot.length + 1);\n}\nexports.relative = relative;\nvar supportsNullProto = function () {\n var obj = Object.create(null);\n return !('__proto__' in obj);\n}();\nfunction identity(s) {\n return s;\n}\n\n/**\n * Because behavior goes wacky when you set `__proto__` on objects, we\n * have to prefix all the strings in our set with an arbitrary character.\n *\n * See https://github.com/mozilla/source-map/pull/31 and\n * https://github.com/mozilla/source-map/issues/30\n *\n * @param String aStr\n */\nfunction toSetString(aStr) {\n if (isProtoString(aStr)) {\n return '$' + aStr;\n }\n return aStr;\n}\nexports.toSetString = supportsNullProto ? identity : toSetString;\nfunction fromSetString(aStr) {\n if (isProtoString(aStr)) {\n return aStr.slice(1);\n }\n return aStr;\n}\nexports.fromSetString = supportsNullProto ? identity : fromSetString;\nfunction isProtoString(s) {\n if (!s) {\n return false;\n }\n var length = s.length;\n if (length < 9 /* \"__proto__\".length */) {\n return false;\n }\n if (s.charCodeAt(length - 1) !== 95 /* '_' */ || s.charCodeAt(length - 2) !== 95 /* '_' */ || s.charCodeAt(length - 3) !== 111 /* 'o' */ || s.charCodeAt(length - 4) !== 116 /* 't' */ || s.charCodeAt(length - 5) !== 111 /* 'o' */ || s.charCodeAt(length - 6) !== 114 /* 'r' */ || s.charCodeAt(length - 7) !== 112 /* 'p' */ || s.charCodeAt(length - 8) !== 95 /* '_' */ || s.charCodeAt(length - 9) !== 95 /* '_' */) {\n return false;\n }\n for (var i = length - 10; i >= 0; i--) {\n if (s.charCodeAt(i) !== 36 /* '$' */) {\n return false;\n }\n }\n return true;\n}\n\n/**\n * Comparator between two mappings where the original positions are compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same original source/line/column, but different generated\n * line and column the same. Useful when searching for a mapping with a\n * stubbed out mapping.\n */\nfunction compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) {\n var cmp = mappingA.source - mappingB.source;\n if (cmp !== 0) {\n return cmp;\n }\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0 || onlyCompareOriginal) {\n return cmp;\n }\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0) {\n return cmp;\n }\n cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n return mappingA.name - mappingB.name;\n}\nexports.compareByOriginalPositions = compareByOriginalPositions;\n\n/**\n * Comparator between two mappings with deflated source and name indices where\n * the generated positions are compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same generated line and column, but different\n * source/name/original line and column the same. Useful when searching for a\n * mapping with a stubbed out mapping.\n */\nfunction compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) {\n var cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0 || onlyCompareGenerated) {\n return cmp;\n }\n cmp = mappingA.source - mappingB.source;\n if (cmp !== 0) {\n return cmp;\n }\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0) {\n return cmp;\n }\n return mappingA.name - mappingB.name;\n}\nexports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated;\nfunction strcmp(aStr1, aStr2) {\n if (aStr1 === aStr2) {\n return 0;\n }\n if (aStr1 > aStr2) {\n return 1;\n }\n return -1;\n}\n\n/**\n * Comparator between two mappings with inflated source and name strings where\n * the generated positions are compared.\n */\nfunction compareByGeneratedPositionsInflated(mappingA, mappingB) {\n var cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0) {\n return cmp;\n }\n cmp = strcmp(mappingA.source, mappingB.source);\n if (cmp !== 0) {\n return cmp;\n }\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0) {\n return cmp;\n }\n return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated;","(function (root, factory) {\n 'use strict';\n\n // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers.\n\n /* istanbul ignore next */\n if (typeof define === 'function' && define.amd) {\n define('stackframe', [], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory();\n } else {\n root.StackFrame = factory();\n }\n})(this, function () {\n 'use strict';\n\n function _isNumber(n) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n }\n function _capitalize(str) {\n return str.charAt(0).toUpperCase() + str.substring(1);\n }\n function _getter(p) {\n return function () {\n return this[p];\n };\n }\n var booleanProps = ['isConstructor', 'isEval', 'isNative', 'isToplevel'];\n var numericProps = ['columnNumber', 'lineNumber'];\n var stringProps = ['fileName', 'functionName', 'source'];\n var arrayProps = ['args'];\n var objectProps = ['evalOrigin'];\n var props = booleanProps.concat(numericProps, stringProps, arrayProps, objectProps);\n function StackFrame(obj) {\n if (!obj) return;\n for (var i = 0; i < props.length; i++) {\n if (obj[props[i]] !== undefined) {\n this['set' + _capitalize(props[i])](obj[props[i]]);\n }\n }\n }\n StackFrame.prototype = {\n getArgs: function () {\n return this.args;\n },\n setArgs: function (v) {\n if (Object.prototype.toString.call(v) !== '[object Array]') {\n throw new TypeError('Args must be an Array');\n }\n this.args = v;\n },\n getEvalOrigin: function () {\n return this.evalOrigin;\n },\n setEvalOrigin: function (v) {\n if (v instanceof StackFrame) {\n this.evalOrigin = v;\n } else if (v instanceof Object) {\n this.evalOrigin = new StackFrame(v);\n } else {\n throw new TypeError('Eval Origin must be an Object or StackFrame');\n }\n },\n toString: function () {\n var fileName = this.getFileName() || '';\n var lineNumber = this.getLineNumber() || '';\n var columnNumber = this.getColumnNumber() || '';\n var functionName = this.getFunctionName() || '';\n if (this.getIsEval()) {\n if (fileName) {\n return '[eval] (' + fileName + ':' + lineNumber + ':' + columnNumber + ')';\n }\n return '[eval]:' + lineNumber + ':' + columnNumber;\n }\n if (functionName) {\n return functionName + ' (' + fileName + ':' + lineNumber + ':' + columnNumber + ')';\n }\n return fileName + ':' + lineNumber + ':' + columnNumber;\n }\n };\n StackFrame.fromString = function StackFrame$$fromString(str) {\n var argsStartIndex = str.indexOf('(');\n var argsEndIndex = str.lastIndexOf(')');\n var functionName = str.substring(0, argsStartIndex);\n var args = str.substring(argsStartIndex + 1, argsEndIndex).split(',');\n var locationString = str.substring(argsEndIndex + 1);\n if (locationString.indexOf('@') === 0) {\n var parts = /@(.+?)(?::(\\d+))?(?::(\\d+))?$/.exec(locationString, '');\n var fileName = parts[1];\n var lineNumber = parts[2];\n var columnNumber = parts[3];\n }\n return new StackFrame({\n functionName: functionName,\n args: args || undefined,\n fileName: fileName,\n lineNumber: lineNumber || undefined,\n columnNumber: columnNumber || undefined\n });\n };\n for (var i = 0; i < booleanProps.length; i++) {\n StackFrame.prototype['get' + _capitalize(booleanProps[i])] = _getter(booleanProps[i]);\n StackFrame.prototype['set' + _capitalize(booleanProps[i])] = function (p) {\n return function (v) {\n this[p] = Boolean(v);\n };\n }(booleanProps[i]);\n }\n for (var j = 0; j < numericProps.length; j++) {\n StackFrame.prototype['get' + _capitalize(numericProps[j])] = _getter(numericProps[j]);\n StackFrame.prototype['set' + _capitalize(numericProps[j])] = function (p) {\n return function (v) {\n if (!_isNumber(v)) {\n throw new TypeError(p + ' must be a Number');\n }\n this[p] = Number(v);\n };\n }(numericProps[j]);\n }\n for (var k = 0; k < stringProps.length; k++) {\n StackFrame.prototype['get' + _capitalize(stringProps[k])] = _getter(stringProps[k]);\n StackFrame.prototype['set' + _capitalize(stringProps[k])] = function (p) {\n return function (v) {\n this[p] = String(v);\n };\n }(stringProps[k]);\n }\n return StackFrame;\n});","(function (root, factory) {\n 'use strict';\n\n // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers.\n\n /* istanbul ignore next */\n if (typeof define === 'function' && define.amd) {\n define('stacktrace', ['error-stack-parser', 'stack-generator', 'stacktrace-gps'], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory(require('error-stack-parser'), require('stack-generator'), require('stacktrace-gps'));\n } else {\n root.StackTrace = factory(root.ErrorStackParser, root.StackGenerator, root.StackTraceGPS);\n }\n})(this, function StackTrace(ErrorStackParser, StackGenerator, StackTraceGPS) {\n var _options = {\n filter: function (stackframe) {\n // Filter out stackframes for this library by default\n return (stackframe.functionName || '').indexOf('StackTrace$$') === -1 && (stackframe.functionName || '').indexOf('ErrorStackParser$$') === -1 && (stackframe.functionName || '').indexOf('StackTraceGPS$$') === -1 && (stackframe.functionName || '').indexOf('StackGenerator$$') === -1;\n },\n sourceCache: {}\n };\n var _generateError = function StackTrace$$GenerateError() {\n try {\n // Error must be thrown to get stack in IE\n throw new Error();\n } catch (err) {\n return err;\n }\n };\n\n /**\n * Merge 2 given Objects. If a conflict occurs the second object wins.\n * Does not do deep merges.\n *\n * @param {Object} first base object\n * @param {Object} second overrides\n * @returns {Object} merged first and second\n * @private\n */\n function _merge(first, second) {\n var target = {};\n [first, second].forEach(function (obj) {\n for (var prop in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, prop)) {\n target[prop] = obj[prop];\n }\n }\n return target;\n });\n return target;\n }\n function _isShapedLikeParsableError(err) {\n return err.stack || err['opera#sourceloc'];\n }\n function _filtered(stackframes, filter) {\n if (typeof filter === 'function') {\n return stackframes.filter(filter);\n }\n return stackframes;\n }\n return {\n /**\n * Get a backtrace from invocation point.\n *\n * @param {Object} opts\n * @returns {Array} of StackFrame\n */\n get: function StackTrace$$get(opts) {\n var err = _generateError();\n return _isShapedLikeParsableError(err) ? this.fromError(err, opts) : this.generateArtificially(opts);\n },\n /**\n * Get a backtrace from invocation point.\n * IMPORTANT: Does not handle source maps or guess function names!\n *\n * @param {Object} opts\n * @returns {Array} of StackFrame\n */\n getSync: function StackTrace$$getSync(opts) {\n opts = _merge(_options, opts);\n var err = _generateError();\n var stack = _isShapedLikeParsableError(err) ? ErrorStackParser.parse(err) : StackGenerator.backtrace(opts);\n return _filtered(stack, opts.filter);\n },\n /**\n * Given an error object, parse it.\n *\n * @param {Error} error object\n * @param {Object} opts\n * @returns {Promise} for Array[StackFrame}\n */\n fromError: function StackTrace$$fromError(error, opts) {\n opts = _merge(_options, opts);\n var gps = new StackTraceGPS(opts);\n return new Promise(function (resolve) {\n var stackframes = _filtered(ErrorStackParser.parse(error), opts.filter);\n resolve(Promise.all(stackframes.map(function (sf) {\n return new Promise(function (resolve) {\n function resolveOriginal() {\n resolve(sf);\n }\n gps.pinpoint(sf).then(resolve, resolveOriginal)['catch'](resolveOriginal);\n });\n })));\n }.bind(this));\n },\n /**\n * Use StackGenerator to generate a backtrace.\n *\n * @param {Object} opts\n * @returns {Promise} of Array[StackFrame]\n */\n generateArtificially: function StackTrace$$generateArtificially(opts) {\n opts = _merge(_options, opts);\n var stackFrames = StackGenerator.backtrace(opts);\n if (typeof opts.filter === 'function') {\n stackFrames = stackFrames.filter(opts.filter);\n }\n return Promise.resolve(stackFrames);\n },\n /**\n * Given a function, wrap it such that invocations trigger a callback that\n * is called with a stack trace.\n *\n * @param {Function} fn to be instrumented\n * @param {Function} callback function to call with a stack trace on invocation\n * @param {Function} errback optional function to call with error if unable to get stack trace.\n * @param {Object} thisArg optional context object (e.g. window)\n */\n instrument: function StackTrace$$instrument(fn, callback, errback, thisArg) {\n if (typeof fn !== 'function') {\n throw new Error('Cannot instrument non-function object');\n } else if (typeof fn.__stacktraceOriginalFn === 'function') {\n // Already instrumented, return given Function\n return fn;\n }\n var instrumented = function StackTrace$$instrumented() {\n try {\n this.get().then(callback, errback)['catch'](errback);\n return fn.apply(thisArg || this, arguments);\n } catch (e) {\n if (_isShapedLikeParsableError(e)) {\n this.fromError(e).then(callback, errback)['catch'](errback);\n }\n throw e;\n }\n }.bind(this);\n instrumented.__stacktraceOriginalFn = fn;\n return instrumented;\n },\n /**\n * Given a function that has been instrumented,\n * revert the function to it's original (non-instrumented) state.\n *\n * @param {Function} fn to de-instrument\n */\n deinstrument: function StackTrace$$deinstrument(fn) {\n if (typeof fn !== 'function') {\n throw new Error('Cannot de-instrument non-function object');\n } else if (typeof fn.__stacktraceOriginalFn === 'function') {\n return fn.__stacktraceOriginalFn;\n } else {\n // Function not instrumented, return original\n return fn;\n }\n },\n /**\n * Given an error message and Array of StackFrames, serialize and POST to given URL.\n *\n * @param {Array} stackframes\n * @param {String} url\n * @param {String} errorMsg\n * @param {Object} requestOptions\n */\n report: function StackTrace$$report(stackframes, url, errorMsg, requestOptions) {\n return new Promise(function (resolve, reject) {\n var req = new XMLHttpRequest();\n req.onerror = reject;\n req.onreadystatechange = function onreadystatechange() {\n if (req.readyState === 4) {\n if (req.status >= 200 && req.status < 400) {\n resolve(req.responseText);\n } else {\n reject(new Error('POST to ' + url + ' failed with status: ' + req.status));\n }\n }\n };\n req.open('post', url);\n\n // Set request headers\n req.setRequestHeader('Content-Type', 'application/json');\n if (requestOptions && typeof requestOptions.headers === 'object') {\n var headers = requestOptions.headers;\n for (var header in headers) {\n if (Object.prototype.hasOwnProperty.call(headers, header)) {\n req.setRequestHeader(header, headers[header]);\n }\n }\n }\n var reportPayload = {\n stack: stackframes\n };\n if (errorMsg !== undefined && errorMsg !== null) {\n reportPayload.message = errorMsg;\n }\n req.send(JSON.stringify(reportPayload));\n });\n }\n };\n});","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar base64VLQ = require('./base64-vlq');\nvar util = require('./util');\nvar ArraySet = require('./array-set').ArraySet;\nvar MappingList = require('./mapping-list').MappingList;\n\n/**\n * An instance of the SourceMapGenerator represents a source map which is\n * being built incrementally. You may pass an object with the following\n * properties:\n *\n * - file: The filename of the generated source.\n * - sourceRoot: A root for all relative URLs in this source map.\n */\nfunction SourceMapGenerator(aArgs) {\n if (!aArgs) {\n aArgs = {};\n }\n this._file = util.getArg(aArgs, 'file', null);\n this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null);\n this._skipValidation = util.getArg(aArgs, 'skipValidation', false);\n this._sources = new ArraySet();\n this._names = new ArraySet();\n this._mappings = new MappingList();\n this._sourcesContents = null;\n}\nSourceMapGenerator.prototype._version = 3;\n\n/**\n * Creates a new SourceMapGenerator based on a SourceMapConsumer\n *\n * @param aSourceMapConsumer The SourceMap.\n */\nSourceMapGenerator.fromSourceMap = function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) {\n var sourceRoot = aSourceMapConsumer.sourceRoot;\n var generator = new SourceMapGenerator({\n file: aSourceMapConsumer.file,\n sourceRoot: sourceRoot\n });\n aSourceMapConsumer.eachMapping(function (mapping) {\n var newMapping = {\n generated: {\n line: mapping.generatedLine,\n column: mapping.generatedColumn\n }\n };\n if (mapping.source != null) {\n newMapping.source = mapping.source;\n if (sourceRoot != null) {\n newMapping.source = util.relative(sourceRoot, newMapping.source);\n }\n newMapping.original = {\n line: mapping.originalLine,\n column: mapping.originalColumn\n };\n if (mapping.name != null) {\n newMapping.name = mapping.name;\n }\n }\n generator.addMapping(newMapping);\n });\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n generator.setSourceContent(sourceFile, content);\n }\n });\n return generator;\n};\n\n/**\n * Add a single mapping from original source line and column to the generated\n * source's line and column for this source map being created. The mapping\n * object should have the following properties:\n *\n * - generated: An object with the generated line and column positions.\n * - original: An object with the original line and column positions.\n * - source: The original source file (relative to the sourceRoot).\n * - name: An optional original token name for this mapping.\n */\nSourceMapGenerator.prototype.addMapping = function SourceMapGenerator_addMapping(aArgs) {\n var generated = util.getArg(aArgs, 'generated');\n var original = util.getArg(aArgs, 'original', null);\n var source = util.getArg(aArgs, 'source', null);\n var name = util.getArg(aArgs, 'name', null);\n if (!this._skipValidation) {\n this._validateMapping(generated, original, source, name);\n }\n if (source != null) {\n source = String(source);\n if (!this._sources.has(source)) {\n this._sources.add(source);\n }\n }\n if (name != null) {\n name = String(name);\n if (!this._names.has(name)) {\n this._names.add(name);\n }\n }\n this._mappings.add({\n generatedLine: generated.line,\n generatedColumn: generated.column,\n originalLine: original != null && original.line,\n originalColumn: original != null && original.column,\n source: source,\n name: name\n });\n};\n\n/**\n * Set the source content for a source file.\n */\nSourceMapGenerator.prototype.setSourceContent = function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) {\n var source = aSourceFile;\n if (this._sourceRoot != null) {\n source = util.relative(this._sourceRoot, source);\n }\n if (aSourceContent != null) {\n // Add the source content to the _sourcesContents map.\n // Create a new _sourcesContents map if the property is null.\n if (!this._sourcesContents) {\n this._sourcesContents = Object.create(null);\n }\n this._sourcesContents[util.toSetString(source)] = aSourceContent;\n } else if (this._sourcesContents) {\n // Remove the source file from the _sourcesContents map.\n // If the _sourcesContents map is empty, set the property to null.\n delete this._sourcesContents[util.toSetString(source)];\n if (Object.keys(this._sourcesContents).length === 0) {\n this._sourcesContents = null;\n }\n }\n};\n\n/**\n * Applies the mappings of a sub-source-map for a specific source file to the\n * source map being generated. Each mapping to the supplied source file is\n * rewritten using the supplied source map. Note: The resolution for the\n * resulting mappings is the minimium of this map and the supplied map.\n *\n * @param aSourceMapConsumer The source map to be applied.\n * @param aSourceFile Optional. The filename of the source file.\n * If omitted, SourceMapConsumer's file property will be used.\n * @param aSourceMapPath Optional. The dirname of the path to the source map\n * to be applied. If relative, it is relative to the SourceMapConsumer.\n * This parameter is needed when the two source maps aren't in the same\n * directory, and the source map to be applied contains relative source\n * paths. If so, those relative source paths need to be rewritten\n * relative to the SourceMapGenerator.\n */\nSourceMapGenerator.prototype.applySourceMap = function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) {\n var sourceFile = aSourceFile;\n // If aSourceFile is omitted, we will use the file property of the SourceMap\n if (aSourceFile == null) {\n if (aSourceMapConsumer.file == null) {\n throw new Error('SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' + 'or the source map\\'s \"file\" property. Both were omitted.');\n }\n sourceFile = aSourceMapConsumer.file;\n }\n var sourceRoot = this._sourceRoot;\n // Make \"sourceFile\" relative if an absolute Url is passed.\n if (sourceRoot != null) {\n sourceFile = util.relative(sourceRoot, sourceFile);\n }\n // Applying the SourceMap can add and remove items from the sources and\n // the names array.\n var newSources = new ArraySet();\n var newNames = new ArraySet();\n\n // Find mappings for the \"sourceFile\"\n this._mappings.unsortedForEach(function (mapping) {\n if (mapping.source === sourceFile && mapping.originalLine != null) {\n // Check if it can be mapped by the source map, then update the mapping.\n var original = aSourceMapConsumer.originalPositionFor({\n line: mapping.originalLine,\n column: mapping.originalColumn\n });\n if (original.source != null) {\n // Copy mapping\n mapping.source = original.source;\n if (aSourceMapPath != null) {\n mapping.source = util.join(aSourceMapPath, mapping.source);\n }\n if (sourceRoot != null) {\n mapping.source = util.relative(sourceRoot, mapping.source);\n }\n mapping.originalLine = original.line;\n mapping.originalColumn = original.column;\n if (original.name != null) {\n mapping.name = original.name;\n }\n }\n }\n var source = mapping.source;\n if (source != null && !newSources.has(source)) {\n newSources.add(source);\n }\n var name = mapping.name;\n if (name != null && !newNames.has(name)) {\n newNames.add(name);\n }\n }, this);\n this._sources = newSources;\n this._names = newNames;\n\n // Copy sourcesContents of applied map.\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n if (aSourceMapPath != null) {\n sourceFile = util.join(aSourceMapPath, sourceFile);\n }\n if (sourceRoot != null) {\n sourceFile = util.relative(sourceRoot, sourceFile);\n }\n this.setSourceContent(sourceFile, content);\n }\n }, this);\n};\n\n/**\n * A mapping can have one of the three levels of data:\n *\n * 1. Just the generated position.\n * 2. The Generated position, original position, and original source.\n * 3. Generated and original position, original source, as well as a name\n * token.\n *\n * To maintain consistency, we validate that any new mapping being added falls\n * in to one of these categories.\n */\nSourceMapGenerator.prototype._validateMapping = function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource, aName) {\n if (aGenerated && 'line' in aGenerated && 'column' in aGenerated && aGenerated.line > 0 && aGenerated.column >= 0 && !aOriginal && !aSource && !aName) {\n // Case 1.\n return;\n } else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated && aOriginal && 'line' in aOriginal && 'column' in aOriginal && aGenerated.line > 0 && aGenerated.column >= 0 && aOriginal.line > 0 && aOriginal.column >= 0 && aSource) {\n // Cases 2 and 3.\n return;\n } else {\n throw new Error('Invalid mapping: ' + JSON.stringify({\n generated: aGenerated,\n source: aSource,\n original: aOriginal,\n name: aName\n }));\n }\n};\n\n/**\n * Serialize the accumulated mappings in to the stream of base 64 VLQs\n * specified by the source map format.\n */\nSourceMapGenerator.prototype._serializeMappings = function SourceMapGenerator_serializeMappings() {\n var previousGeneratedColumn = 0;\n var previousGeneratedLine = 1;\n var previousOriginalColumn = 0;\n var previousOriginalLine = 0;\n var previousName = 0;\n var previousSource = 0;\n var result = '';\n var next;\n var mapping;\n var nameIdx;\n var sourceIdx;\n var mappings = this._mappings.toArray();\n for (var i = 0, len = mappings.length; i < len; i++) {\n mapping = mappings[i];\n next = '';\n if (mapping.generatedLine !== previousGeneratedLine) {\n previousGeneratedColumn = 0;\n while (mapping.generatedLine !== previousGeneratedLine) {\n next += ';';\n previousGeneratedLine++;\n }\n } else {\n if (i > 0) {\n if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) {\n continue;\n }\n next += ',';\n }\n }\n next += base64VLQ.encode(mapping.generatedColumn - previousGeneratedColumn);\n previousGeneratedColumn = mapping.generatedColumn;\n if (mapping.source != null) {\n sourceIdx = this._sources.indexOf(mapping.source);\n next += base64VLQ.encode(sourceIdx - previousSource);\n previousSource = sourceIdx;\n\n // lines are stored 0-based in SourceMap spec version 3\n next += base64VLQ.encode(mapping.originalLine - 1 - previousOriginalLine);\n previousOriginalLine = mapping.originalLine - 1;\n next += base64VLQ.encode(mapping.originalColumn - previousOriginalColumn);\n previousOriginalColumn = mapping.originalColumn;\n if (mapping.name != null) {\n nameIdx = this._names.indexOf(mapping.name);\n next += base64VLQ.encode(nameIdx - previousName);\n previousName = nameIdx;\n }\n }\n result += next;\n }\n return result;\n};\nSourceMapGenerator.prototype._generateSourcesContent = function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) {\n return aSources.map(function (source) {\n if (!this._sourcesContents) {\n return null;\n }\n if (aSourceRoot != null) {\n source = util.relative(aSourceRoot, source);\n }\n var key = util.toSetString(source);\n return Object.prototype.hasOwnProperty.call(this._sourcesContents, key) ? this._sourcesContents[key] : null;\n }, this);\n};\n\n/**\n * Externalize the source map.\n */\nSourceMapGenerator.prototype.toJSON = function SourceMapGenerator_toJSON() {\n var map = {\n version: this._version,\n sources: this._sources.toArray(),\n names: this._names.toArray(),\n mappings: this._serializeMappings()\n };\n if (this._file != null) {\n map.file = this._file;\n }\n if (this._sourceRoot != null) {\n map.sourceRoot = this._sourceRoot;\n }\n if (this._sourcesContents) {\n map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot);\n }\n return map;\n};\n\n/**\n * Render the source map being generated to a string.\n */\nSourceMapGenerator.prototype.toString = function SourceMapGenerator_toString() {\n return JSON.stringify(this.toJSON());\n};\nexports.SourceMapGenerator = SourceMapGenerator;","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n *\n * Based on the Base 64 VLQ implementation in Closure Compiler:\n * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java\n *\n * Copyright 2011 The Closure Compiler Authors. All rights reserved.\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are\n * met:\n *\n * * Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above\n * copyright notice, this list of conditions and the following\n * disclaimer in the documentation and/or other materials provided\n * with the distribution.\n * * Neither the name of Google Inc. nor the names of its\n * contributors may be used to endorse or promote products derived\n * from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n * \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nvar base64 = require('./base64');\n\n// A single base 64 digit can contain 6 bits of data. For the base 64 variable\n// length quantities we use in the source map spec, the first bit is the sign,\n// the next four bits are the actual value, and the 6th bit is the\n// continuation bit. The continuation bit tells us whether there are more\n// digits in this value following this digit.\n//\n// Continuation\n// | Sign\n// | |\n// V V\n// 101011\n\nvar VLQ_BASE_SHIFT = 5;\n\n// binary: 100000\nvar VLQ_BASE = 1 << VLQ_BASE_SHIFT;\n\n// binary: 011111\nvar VLQ_BASE_MASK = VLQ_BASE - 1;\n\n// binary: 100000\nvar VLQ_CONTINUATION_BIT = VLQ_BASE;\n\n/**\n * Converts from a two-complement value to a value where the sign bit is\n * placed in the least significant bit. For example, as decimals:\n * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary)\n * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary)\n */\nfunction toVLQSigned(aValue) {\n return aValue < 0 ? (-aValue << 1) + 1 : (aValue << 1) + 0;\n}\n\n/**\n * Converts to a two-complement value from a value where the sign bit is\n * placed in the least significant bit. For example, as decimals:\n * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1\n * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2\n */\nfunction fromVLQSigned(aValue) {\n var isNegative = (aValue & 1) === 1;\n var shifted = aValue >> 1;\n return isNegative ? -shifted : shifted;\n}\n\n/**\n * Returns the base 64 VLQ encoded value.\n */\nexports.encode = function base64VLQ_encode(aValue) {\n var encoded = \"\";\n var digit;\n var vlq = toVLQSigned(aValue);\n do {\n digit = vlq & VLQ_BASE_MASK;\n vlq >>>= VLQ_BASE_SHIFT;\n if (vlq > 0) {\n // There are still more digits in this value, so we must make sure the\n // continuation bit is marked.\n digit |= VLQ_CONTINUATION_BIT;\n }\n encoded += base64.encode(digit);\n } while (vlq > 0);\n return encoded;\n};\n\n/**\n * Decodes the next base 64 VLQ value from the given string and returns the\n * value and the rest of the string via the out parameter.\n */\nexports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) {\n var strLen = aStr.length;\n var result = 0;\n var shift = 0;\n var continuation, digit;\n do {\n if (aIndex >= strLen) {\n throw new Error(\"Expected more digits in base 64 VLQ value.\");\n }\n digit = base64.decode(aStr.charCodeAt(aIndex++));\n if (digit === -1) {\n throw new Error(\"Invalid base64 digit: \" + aStr.charAt(aIndex - 1));\n }\n continuation = !!(digit & VLQ_CONTINUATION_BIT);\n digit &= VLQ_BASE_MASK;\n result = result + (digit << shift);\n shift += VLQ_BASE_SHIFT;\n } while (continuation);\n aOutParam.value = fromVLQSigned(result);\n aOutParam.rest = aIndex;\n};","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\nvar has = Object.prototype.hasOwnProperty;\n\n/**\n * A data structure which is a combination of an array and a set. Adding a new\n * member is O(1), testing for membership is O(1), and finding the index of an\n * element is O(1). Removing elements from the set is not supported. Only\n * strings are supported for membership.\n */\nfunction ArraySet() {\n this._array = [];\n this._set = Object.create(null);\n}\n\n/**\n * Static method for creating ArraySet instances from an existing array.\n */\nArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) {\n var set = new ArraySet();\n for (var i = 0, len = aArray.length; i < len; i++) {\n set.add(aArray[i], aAllowDuplicates);\n }\n return set;\n};\n\n/**\n * Return how many unique items are in this ArraySet. If duplicates have been\n * added, than those do not count towards the size.\n *\n * @returns Number\n */\nArraySet.prototype.size = function ArraySet_size() {\n return Object.getOwnPropertyNames(this._set).length;\n};\n\n/**\n * Add the given string to this set.\n *\n * @param String aStr\n */\nArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) {\n var sStr = util.toSetString(aStr);\n var isDuplicate = has.call(this._set, sStr);\n var idx = this._array.length;\n if (!isDuplicate || aAllowDuplicates) {\n this._array.push(aStr);\n }\n if (!isDuplicate) {\n this._set[sStr] = idx;\n }\n};\n\n/**\n * Is the given string a member of this set?\n *\n * @param String aStr\n */\nArraySet.prototype.has = function ArraySet_has(aStr) {\n var sStr = util.toSetString(aStr);\n return has.call(this._set, sStr);\n};\n\n/**\n * What is the index of the given string in the array?\n *\n * @param String aStr\n */\nArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) {\n var sStr = util.toSetString(aStr);\n if (has.call(this._set, sStr)) {\n return this._set[sStr];\n }\n throw new Error('\"' + aStr + '\" is not in the set.');\n};\n\n/**\n * What is the element at the given index?\n *\n * @param Number aIdx\n */\nArraySet.prototype.at = function ArraySet_at(aIdx) {\n if (aIdx >= 0 && aIdx < this._array.length) {\n return this._array[aIdx];\n }\n throw new Error('No element indexed by ' + aIdx);\n};\n\n/**\n * Returns the array representation of this set (which has the proper indices\n * indicated by indexOf). Note that this is a copy of the internal array used\n * for storing the members so that no one can mess with internal state.\n */\nArraySet.prototype.toArray = function ArraySet_toArray() {\n return this._array.slice();\n};\nexports.ArraySet = ArraySet;","(function (root, factory) {\n 'use strict';\n\n // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers.\n\n /* istanbul ignore next */\n if (typeof define === 'function' && define.amd) {\n define('error-stack-parser', ['stackframe'], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory(require('stackframe'));\n } else {\n root.ErrorStackParser = factory(root.StackFrame);\n }\n})(this, function ErrorStackParser(StackFrame) {\n 'use strict';\n\n var FIREFOX_SAFARI_STACK_REGEXP = /(^|@)\\S+:\\d+/;\n var CHROME_IE_STACK_REGEXP = /^\\s*at .*(\\S+:\\d+|\\(native\\))/m;\n var SAFARI_NATIVE_CODE_REGEXP = /^(eval@)?(\\[native code])?$/;\n return {\n /**\n * Given an Error object, extract the most information from it.\n *\n * @param {Error} error object\n * @return {Array} of StackFrames\n */\n parse: function ErrorStackParser$$parse(error) {\n if (typeof error.stacktrace !== 'undefined' || typeof error['opera#sourceloc'] !== 'undefined') {\n return this.parseOpera(error);\n } else if (error.stack && error.stack.match(CHROME_IE_STACK_REGEXP)) {\n return this.parseV8OrIE(error);\n } else if (error.stack) {\n return this.parseFFOrSafari(error);\n } else {\n throw new Error('Cannot parse given Error object');\n }\n },\n // Separate line and column numbers from a string of the form: (URI:Line:Column)\n extractLocation: function ErrorStackParser$$extractLocation(urlLike) {\n // Fail-fast but return locations like \"(native)\"\n if (urlLike.indexOf(':') === -1) {\n return [urlLike];\n }\n var regExp = /(.+?)(?::(\\d+))?(?::(\\d+))?$/;\n var parts = regExp.exec(urlLike.replace(/[()]/g, ''));\n return [parts[1], parts[2] || undefined, parts[3] || undefined];\n },\n parseV8OrIE: function ErrorStackParser$$parseV8OrIE(error) {\n var filtered = error.stack.split('\\n').filter(function (line) {\n return !!line.match(CHROME_IE_STACK_REGEXP);\n }, this);\n return filtered.map(function (line) {\n if (line.indexOf('(eval ') > -1) {\n // Throw away eval information until we implement stacktrace.js/stackframe#8\n line = line.replace(/eval code/g, 'eval').replace(/(\\(eval at [^()]*)|(\\),.*$)/g, '');\n }\n var sanitizedLine = line.replace(/^\\s+/, '').replace(/\\(eval code/g, '(');\n\n // capture and preseve the parenthesized location \"(/foo/my bar.js:12:87)\" in\n // case it has spaces in it, as the string is split on \\s+ later on\n var location = sanitizedLine.match(/ (\\((.+):(\\d+):(\\d+)\\)$)/);\n\n // remove the parenthesized location from the line, if it was matched\n sanitizedLine = location ? sanitizedLine.replace(location[0], '') : sanitizedLine;\n var tokens = sanitizedLine.split(/\\s+/).slice(1);\n // if a location was matched, pass it to extractLocation() otherwise pop the last token\n var locationParts = this.extractLocation(location ? location[1] : tokens.pop());\n var functionName = tokens.join(' ') || undefined;\n var fileName = ['eval', ''].indexOf(locationParts[0]) > -1 ? undefined : locationParts[0];\n return new StackFrame({\n functionName: functionName,\n fileName: fileName,\n lineNumber: locationParts[1],\n columnNumber: locationParts[2],\n source: line\n });\n }, this);\n },\n parseFFOrSafari: function ErrorStackParser$$parseFFOrSafari(error) {\n var filtered = error.stack.split('\\n').filter(function (line) {\n return !line.match(SAFARI_NATIVE_CODE_REGEXP);\n }, this);\n return filtered.map(function (line) {\n // Throw away eval information until we implement stacktrace.js/stackframe#8\n if (line.indexOf(' > eval') > -1) {\n line = line.replace(/ line (\\d+)(?: > eval line \\d+)* > eval:\\d+:\\d+/g, ':$1');\n }\n if (line.indexOf('@') === -1 && line.indexOf(':') === -1) {\n // Safari eval frames only have function names and nothing else\n return new StackFrame({\n functionName: line\n });\n } else {\n var functionNameRegex = /((.*\".+\"[^@]*)?[^@]*)(?:@)/;\n var matches = line.match(functionNameRegex);\n var functionName = matches && matches[1] ? matches[1] : undefined;\n var locationParts = this.extractLocation(line.replace(functionNameRegex, ''));\n return new StackFrame({\n functionName: functionName,\n fileName: locationParts[0],\n lineNumber: locationParts[1],\n columnNumber: locationParts[2],\n source: line\n });\n }\n }, this);\n },\n parseOpera: function ErrorStackParser$$parseOpera(e) {\n if (!e.stacktrace || e.message.indexOf('\\n') > -1 && e.message.split('\\n').length > e.stacktrace.split('\\n').length) {\n return this.parseOpera9(e);\n } else if (!e.stack) {\n return this.parseOpera10(e);\n } else {\n return this.parseOpera11(e);\n }\n },\n parseOpera9: function ErrorStackParser$$parseOpera9(e) {\n var lineRE = /Line (\\d+).*script (?:in )?(\\S+)/i;\n var lines = e.message.split('\\n');\n var result = [];\n for (var i = 2, len = lines.length; i < len; i += 2) {\n var match = lineRE.exec(lines[i]);\n if (match) {\n result.push(new StackFrame({\n fileName: match[2],\n lineNumber: match[1],\n source: lines[i]\n }));\n }\n }\n return result;\n },\n parseOpera10: function ErrorStackParser$$parseOpera10(e) {\n var lineRE = /Line (\\d+).*script (?:in )?(\\S+)(?:: In function (\\S+))?$/i;\n var lines = e.stacktrace.split('\\n');\n var result = [];\n for (var i = 0, len = lines.length; i < len; i += 2) {\n var match = lineRE.exec(lines[i]);\n if (match) {\n result.push(new StackFrame({\n functionName: match[3] || undefined,\n fileName: match[2],\n lineNumber: match[1],\n source: lines[i]\n }));\n }\n }\n return result;\n },\n // Opera 10.65+ Error.stack very similar to FF/Safari\n parseOpera11: function ErrorStackParser$$parseOpera11(error) {\n var filtered = error.stack.split('\\n').filter(function (line) {\n return !!line.match(FIREFOX_SAFARI_STACK_REGEXP) && !line.match(/^Error created at/);\n }, this);\n return filtered.map(function (line) {\n var tokens = line.split('@');\n var locationParts = this.extractLocation(tokens.pop());\n var functionCall = tokens.shift() || '';\n var functionName = functionCall.replace(//, '$2').replace(/\\([^)]*\\)/g, '') || undefined;\n var argsRaw;\n if (functionCall.match(/\\(([^)]*)\\)/)) {\n argsRaw = functionCall.replace(/^[^(]+\\(([^)]*)\\)$/, '$1');\n }\n var args = argsRaw === undefined || argsRaw === '[arguments not available]' ? undefined : argsRaw.split(',');\n return new StackFrame({\n functionName: functionName,\n args: args,\n fileName: locationParts[0],\n lineNumber: locationParts[1],\n columnNumber: locationParts[2],\n source: line\n });\n }, this);\n }\n };\n});","(function (root, factory) {\n 'use strict';\n\n // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers.\n\n /* istanbul ignore next */\n if (typeof define === 'function' && define.amd) {\n define('stack-generator', ['stackframe'], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory(require('stackframe'));\n } else {\n root.StackGenerator = factory(root.StackFrame);\n }\n})(this, function (StackFrame) {\n return {\n backtrace: function StackGenerator$$backtrace(opts) {\n var stack = [];\n var maxStackSize = 10;\n if (typeof opts === 'object' && typeof opts.maxStackSize === 'number') {\n maxStackSize = opts.maxStackSize;\n }\n var curr = arguments.callee;\n while (curr && stack.length < maxStackSize && curr['arguments']) {\n // Allow V8 optimizations\n var args = new Array(curr['arguments'].length);\n for (var i = 0; i < args.length; ++i) {\n args[i] = curr['arguments'][i];\n }\n if (/function(?:\\s+([\\w$]+))+\\s*\\(/.test(curr.toString())) {\n stack.push(new StackFrame({\n functionName: RegExp.$1 || undefined,\n args: args\n }));\n } else {\n stack.push(new StackFrame({\n args: args\n }));\n }\n try {\n curr = curr.caller;\n } catch (e) {\n break;\n }\n }\n return stack;\n }\n };\n});","(function (root, factory) {\n 'use strict';\n\n // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers.\n\n /* istanbul ignore next */\n if (typeof define === 'function' && define.amd) {\n define('stacktrace-gps', ['source-map', 'stackframe'], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory(require('source-map/lib/source-map-consumer'), require('stackframe'));\n } else {\n root.StackTraceGPS = factory(root.SourceMap || root.sourceMap, root.StackFrame);\n }\n})(this, function (SourceMap, StackFrame) {\n 'use strict';\n\n /**\n * Make a X-Domain request to url and callback.\n *\n * @param {String} url\n * @returns {Promise} with response text if fulfilled\n */\n function _xdr(url) {\n return new Promise(function (resolve, reject) {\n var req = new XMLHttpRequest();\n req.open('get', url);\n req.onerror = reject;\n req.onreadystatechange = function onreadystatechange() {\n if (req.readyState === 4) {\n if (req.status >= 200 && req.status < 300 || url.substr(0, 7) === 'file://' && req.responseText) {\n resolve(req.responseText);\n } else {\n reject(new Error('HTTP status: ' + req.status + ' retrieving ' + url));\n }\n }\n };\n req.send();\n });\n }\n\n /**\n * Convert a Base64-encoded string into its original representation.\n * Used for inline sourcemaps.\n *\n * @param {String} b64str Base-64 encoded string\n * @returns {String} original representation of the base64-encoded string.\n */\n function _atob(b64str) {\n if (typeof window !== 'undefined' && window.atob) {\n return window.atob(b64str);\n } else {\n throw new Error('You must supply a polyfill for window.atob in this environment');\n }\n }\n function _parseJson(string) {\n if (typeof JSON !== 'undefined' && JSON.parse) {\n return JSON.parse(string);\n } else {\n throw new Error('You must supply a polyfill for JSON.parse in this environment');\n }\n }\n function _findFunctionName(source, lineNumber /*, columnNumber*/) {\n var syntaxes = [\n // {name} = function ({args}) TODO args capture\n /['\"]?([$_A-Za-z][$_A-Za-z0-9]*)['\"]?\\s*[:=]\\s*function\\b/,\n // function {name}({args}) m[1]=name m[2]=args\n /function\\s+([^('\"`]*?)\\s*\\(([^)]*)\\)/,\n // {name} = eval()\n /['\"]?([$_A-Za-z][$_A-Za-z0-9]*)['\"]?\\s*[:=]\\s*(?:eval|new Function)\\b/,\n // fn_name() {\n /\\b(?!(?:if|for|switch|while|with|catch)\\b)(?:(?:static)\\s+)?(\\S+)\\s*\\(.*?\\)\\s*\\{/,\n // {name} = () => {\n /['\"]?([$_A-Za-z][$_A-Za-z0-9]*)['\"]?\\s*[:=]\\s*\\(.*?\\)\\s*=>/];\n var lines = source.split('\\n');\n\n // Walk backwards in the source lines until we find the line which matches one of the patterns above\n var code = '';\n var maxLines = Math.min(lineNumber, 20);\n for (var i = 0; i < maxLines; ++i) {\n // lineNo is 1-based, source[] is 0-based\n var line = lines[lineNumber - i - 1];\n var commentPos = line.indexOf('//');\n if (commentPos >= 0) {\n line = line.substr(0, commentPos);\n }\n if (line) {\n code = line + code;\n var len = syntaxes.length;\n for (var index = 0; index < len; index++) {\n var m = syntaxes[index].exec(code);\n if (m && m[1]) {\n return m[1];\n }\n }\n }\n }\n return undefined;\n }\n function _ensureSupportedEnvironment() {\n if (typeof Object.defineProperty !== 'function' || typeof Object.create !== 'function') {\n throw new Error('Unable to consume source maps in older browsers');\n }\n }\n function _ensureStackFrameIsLegit(stackframe) {\n if (typeof stackframe !== 'object') {\n throw new TypeError('Given StackFrame is not an object');\n } else if (typeof stackframe.fileName !== 'string') {\n throw new TypeError('Given file name is not a String');\n } else if (typeof stackframe.lineNumber !== 'number' || stackframe.lineNumber % 1 !== 0 || stackframe.lineNumber < 1) {\n throw new TypeError('Given line number must be a positive integer');\n } else if (typeof stackframe.columnNumber !== 'number' || stackframe.columnNumber % 1 !== 0 || stackframe.columnNumber < 0) {\n throw new TypeError('Given column number must be a non-negative integer');\n }\n return true;\n }\n function _findSourceMappingURL(source) {\n var sourceMappingUrlRegExp = /\\/\\/[#@] ?sourceMappingURL=([^\\s'\"]+)\\s*$/mg;\n var lastSourceMappingUrl;\n var matchSourceMappingUrl;\n // eslint-disable-next-line no-cond-assign\n while (matchSourceMappingUrl = sourceMappingUrlRegExp.exec(source)) {\n lastSourceMappingUrl = matchSourceMappingUrl[1];\n }\n if (lastSourceMappingUrl) {\n return lastSourceMappingUrl;\n } else {\n throw new Error('sourceMappingURL not found');\n }\n }\n function _extractLocationInfoFromSourceMapSource(stackframe, sourceMapConsumer, sourceCache) {\n return new Promise(function (resolve, reject) {\n var loc = sourceMapConsumer.originalPositionFor({\n line: stackframe.lineNumber,\n column: stackframe.columnNumber\n });\n if (loc.source) {\n // cache mapped sources\n var mappedSource = sourceMapConsumer.sourceContentFor(loc.source);\n if (mappedSource) {\n sourceCache[loc.source] = mappedSource;\n }\n resolve(\n // given stackframe and source location, update stackframe\n new StackFrame({\n functionName: loc.name || stackframe.functionName,\n args: stackframe.args,\n fileName: loc.source,\n lineNumber: loc.line,\n columnNumber: loc.column\n }));\n } else {\n reject(new Error('Could not get original source for given stackframe and source map'));\n }\n });\n }\n\n /**\n * @constructor\n * @param {Object} opts\n * opts.sourceCache = {url: \"Source String\"} => preload source cache\n * opts.sourceMapConsumerCache = {/path/file.js.map: SourceMapConsumer}\n * opts.offline = True to prevent network requests.\n * Best effort without sources or source maps.\n * opts.ajax = Promise returning function to make X-Domain requests\n */\n return function StackTraceGPS(opts) {\n if (!(this instanceof StackTraceGPS)) {\n return new StackTraceGPS(opts);\n }\n opts = opts || {};\n this.sourceCache = opts.sourceCache || {};\n this.sourceMapConsumerCache = opts.sourceMapConsumerCache || {};\n this.ajax = opts.ajax || _xdr;\n this._atob = opts.atob || _atob;\n this._get = function _get(location) {\n return new Promise(function (resolve, reject) {\n var isDataUrl = location.substr(0, 5) === 'data:';\n if (this.sourceCache[location]) {\n resolve(this.sourceCache[location]);\n } else if (opts.offline && !isDataUrl) {\n reject(new Error('Cannot make network requests in offline mode'));\n } else {\n if (isDataUrl) {\n // data URLs can have parameters.\n // see http://tools.ietf.org/html/rfc2397\n var supportedEncodingRegexp = /^data:application\\/json;([\\w=:\"-]+;)*base64,/;\n var match = location.match(supportedEncodingRegexp);\n if (match) {\n var sourceMapStart = match[0].length;\n var encodedSource = location.substr(sourceMapStart);\n var source = this._atob(encodedSource);\n this.sourceCache[location] = source;\n resolve(source);\n } else {\n reject(new Error('The encoding of the inline sourcemap is not supported'));\n }\n } else {\n var xhrPromise = this.ajax(location, {\n method: 'get'\n });\n // Cache the Promise to prevent duplicate in-flight requests\n this.sourceCache[location] = xhrPromise;\n xhrPromise.then(resolve, reject);\n }\n }\n }.bind(this));\n };\n\n /**\n * Creating SourceMapConsumers is expensive, so this wraps the creation of a\n * SourceMapConsumer in a per-instance cache.\n *\n * @param {String} sourceMappingURL = URL to fetch source map from\n * @param {String} defaultSourceRoot = Default source root for source map if undefined\n * @returns {Promise} that resolves a SourceMapConsumer\n */\n this._getSourceMapConsumer = function _getSourceMapConsumer(sourceMappingURL, defaultSourceRoot) {\n return new Promise(function (resolve) {\n if (this.sourceMapConsumerCache[sourceMappingURL]) {\n resolve(this.sourceMapConsumerCache[sourceMappingURL]);\n } else {\n var sourceMapConsumerPromise = new Promise(function (resolve, reject) {\n return this._get(sourceMappingURL).then(function (sourceMapSource) {\n if (typeof sourceMapSource === 'string') {\n sourceMapSource = _parseJson(sourceMapSource.replace(/^\\)\\]\\}'/, ''));\n }\n if (typeof sourceMapSource.sourceRoot === 'undefined') {\n sourceMapSource.sourceRoot = defaultSourceRoot;\n }\n resolve(new SourceMap.SourceMapConsumer(sourceMapSource));\n }, reject);\n }.bind(this));\n this.sourceMapConsumerCache[sourceMappingURL] = sourceMapConsumerPromise;\n resolve(sourceMapConsumerPromise);\n }\n }.bind(this));\n };\n\n /**\n * Given a StackFrame, enhance function name and use source maps for a\n * better StackFrame.\n *\n * @param {StackFrame} stackframe object\n * @returns {Promise} that resolves with with source-mapped StackFrame\n */\n this.pinpoint = function StackTraceGPS$$pinpoint(stackframe) {\n return new Promise(function (resolve, reject) {\n this.getMappedLocation(stackframe).then(function (mappedStackFrame) {\n function resolveMappedStackFrame() {\n resolve(mappedStackFrame);\n }\n this.findFunctionName(mappedStackFrame).then(resolve, resolveMappedStackFrame)\n // eslint-disable-next-line no-unexpected-multiline\n ['catch'](resolveMappedStackFrame);\n }.bind(this), reject);\n }.bind(this));\n };\n\n /**\n * Given a StackFrame, guess function name from location information.\n *\n * @param {StackFrame} stackframe\n * @returns {Promise} that resolves with enhanced StackFrame.\n */\n this.findFunctionName = function StackTraceGPS$$findFunctionName(stackframe) {\n return new Promise(function (resolve, reject) {\n _ensureStackFrameIsLegit(stackframe);\n this._get(stackframe.fileName).then(function getSourceCallback(source) {\n var lineNumber = stackframe.lineNumber;\n var columnNumber = stackframe.columnNumber;\n var guessedFunctionName = _findFunctionName(source, lineNumber, columnNumber);\n // Only replace functionName if we found something\n if (guessedFunctionName) {\n resolve(new StackFrame({\n functionName: guessedFunctionName,\n args: stackframe.args,\n fileName: stackframe.fileName,\n lineNumber: lineNumber,\n columnNumber: columnNumber\n }));\n } else {\n resolve(stackframe);\n }\n }, reject)['catch'](reject);\n }.bind(this));\n };\n\n /**\n * Given a StackFrame, seek source-mapped location and return new enhanced StackFrame.\n *\n * @param {StackFrame} stackframe\n * @returns {Promise} that resolves with enhanced StackFrame.\n */\n this.getMappedLocation = function StackTraceGPS$$getMappedLocation(stackframe) {\n return new Promise(function (resolve, reject) {\n _ensureSupportedEnvironment();\n _ensureStackFrameIsLegit(stackframe);\n var sourceCache = this.sourceCache;\n var fileName = stackframe.fileName;\n this._get(fileName).then(function (source) {\n var sourceMappingURL = _findSourceMappingURL(source);\n var isDataUrl = sourceMappingURL.substr(0, 5) === 'data:';\n var defaultSourceRoot = fileName.substring(0, fileName.lastIndexOf('/') + 1);\n if (sourceMappingURL[0] !== '/' && !isDataUrl && !/^https?:\\/\\/|^\\/\\//i.test(sourceMappingURL)) {\n sourceMappingURL = defaultSourceRoot + sourceMappingURL;\n }\n return this._getSourceMapConsumer(sourceMappingURL, defaultSourceRoot).then(function (sourceMapConsumer) {\n return _extractLocationInfoFromSourceMapSource(stackframe, sourceMapConsumer, sourceCache).then(resolve)['catch'](function () {\n resolve(stackframe);\n });\n });\n }.bind(this), reject)['catch'](reject);\n }.bind(this));\n };\n };\n});","/*\n * Copyright 2009-2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE.txt or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\nexports.SourceMapGenerator = require('./lib/source-map-generator').SourceMapGenerator;\nexports.SourceMapConsumer = require('./lib/source-map-consumer').SourceMapConsumer;\nexports.SourceNode = require('./lib/source-node').SourceNode;","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split('');\n\n/**\n * Encode an integer in the range of 0 to 63 to a single base 64 digit.\n */\nexports.encode = function (number) {\n if (0 <= number && number < intToCharMap.length) {\n return intToCharMap[number];\n }\n throw new TypeError(\"Must be between 0 and 63: \" + number);\n};\n\n/**\n * Decode a single base 64 character code digit to an integer. Returns -1 on\n * failure.\n */\nexports.decode = function (charCode) {\n var bigA = 65; // 'A'\n var bigZ = 90; // 'Z'\n\n var littleA = 97; // 'a'\n var littleZ = 122; // 'z'\n\n var zero = 48; // '0'\n var nine = 57; // '9'\n\n var plus = 43; // '+'\n var slash = 47; // '/'\n\n var littleOffset = 26;\n var numberOffset = 52;\n\n // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ\n if (bigA <= charCode && charCode <= bigZ) {\n return charCode - bigA;\n }\n\n // 26 - 51: abcdefghijklmnopqrstuvwxyz\n if (littleA <= charCode && charCode <= littleZ) {\n return charCode - littleA + littleOffset;\n }\n\n // 52 - 61: 0123456789\n if (zero <= charCode && charCode <= nine) {\n return charCode - zero + numberOffset;\n }\n\n // 62: +\n if (charCode == plus) {\n return 62;\n }\n\n // 63: /\n if (charCode == slash) {\n return 63;\n }\n\n // Invalid base64 digit.\n return -1;\n};","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2014 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\n\n/**\n * Determine whether mappingB is after mappingA with respect to generated\n * position.\n */\nfunction generatedPositionAfter(mappingA, mappingB) {\n // Optimized for most common case\n var lineA = mappingA.generatedLine;\n var lineB = mappingB.generatedLine;\n var columnA = mappingA.generatedColumn;\n var columnB = mappingB.generatedColumn;\n return lineB > lineA || lineB == lineA && columnB >= columnA || util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0;\n}\n\n/**\n * A data structure to provide a sorted view of accumulated mappings in a\n * performance conscious manner. It trades a neglibable overhead in general\n * case for a large speedup in case of mappings being added in order.\n */\nfunction MappingList() {\n this._array = [];\n this._sorted = true;\n // Serves as infimum\n this._last = {\n generatedLine: -1,\n generatedColumn: 0\n };\n}\n\n/**\n * Iterate through internal items. This method takes the same arguments that\n * `Array.prototype.forEach` takes.\n *\n * NOTE: The order of the mappings is NOT guaranteed.\n */\nMappingList.prototype.unsortedForEach = function MappingList_forEach(aCallback, aThisArg) {\n this._array.forEach(aCallback, aThisArg);\n};\n\n/**\n * Add the given source mapping.\n *\n * @param Object aMapping\n */\nMappingList.prototype.add = function MappingList_add(aMapping) {\n if (generatedPositionAfter(this._last, aMapping)) {\n this._last = aMapping;\n this._array.push(aMapping);\n } else {\n this._sorted = false;\n this._array.push(aMapping);\n }\n};\n\n/**\n * Returns the flat, sorted array of mappings. The mappings are sorted by\n * generated position.\n *\n * WARNING: This method returns internal data without copying, for\n * performance. The return value must NOT be mutated, and should be treated as\n * an immutable borrow. If you want to take ownership, you must make your own\n * copy.\n */\nMappingList.prototype.toArray = function MappingList_toArray() {\n if (!this._sorted) {\n this._array.sort(util.compareByGeneratedPositionsInflated);\n this._sorted = true;\n }\n return this._array;\n};\nexports.MappingList = MappingList;","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\nvar binarySearch = require('./binary-search');\nvar ArraySet = require('./array-set').ArraySet;\nvar base64VLQ = require('./base64-vlq');\nvar quickSort = require('./quick-sort').quickSort;\nfunction SourceMapConsumer(aSourceMap) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = JSON.parse(aSourceMap.replace(/^\\)\\]\\}'/, ''));\n }\n return sourceMap.sections != null ? new IndexedSourceMapConsumer(sourceMap) : new BasicSourceMapConsumer(sourceMap);\n}\nSourceMapConsumer.fromSourceMap = function (aSourceMap) {\n return BasicSourceMapConsumer.fromSourceMap(aSourceMap);\n};\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nSourceMapConsumer.prototype._version = 3;\n\n// `__generatedMappings` and `__originalMappings` are arrays that hold the\n// parsed mapping coordinates from the source map's \"mappings\" attribute. They\n// are lazily instantiated, accessed via the `_generatedMappings` and\n// `_originalMappings` getters respectively, and we only parse the mappings\n// and create these arrays once queried for a source location. We jump through\n// these hoops because there can be many thousands of mappings, and parsing\n// them is expensive, so we only want to do it if we must.\n//\n// Each object in the arrays is of the form:\n//\n// {\n// generatedLine: The line number in the generated code,\n// generatedColumn: The column number in the generated code,\n// source: The path to the original source file that generated this\n// chunk of code,\n// originalLine: The line number in the original source that\n// corresponds to this chunk of generated code,\n// originalColumn: The column number in the original source that\n// corresponds to this chunk of generated code,\n// name: The name of the original symbol which generated this chunk of\n// code.\n// }\n//\n// All properties except for `generatedLine` and `generatedColumn` can be\n// `null`.\n//\n// `_generatedMappings` is ordered by the generated positions.\n//\n// `_originalMappings` is ordered by the original positions.\n\nSourceMapConsumer.prototype.__generatedMappings = null;\nObject.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', {\n get: function () {\n if (!this.__generatedMappings) {\n this._parseMappings(this._mappings, this.sourceRoot);\n }\n return this.__generatedMappings;\n }\n});\nSourceMapConsumer.prototype.__originalMappings = null;\nObject.defineProperty(SourceMapConsumer.prototype, '_originalMappings', {\n get: function () {\n if (!this.__originalMappings) {\n this._parseMappings(this._mappings, this.sourceRoot);\n }\n return this.__originalMappings;\n }\n});\nSourceMapConsumer.prototype._charIsMappingSeparator = function SourceMapConsumer_charIsMappingSeparator(aStr, index) {\n var c = aStr.charAt(index);\n return c === \";\" || c === \",\";\n};\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nSourceMapConsumer.prototype._parseMappings = function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n throw new Error(\"Subclasses must implement _parseMappings\");\n};\nSourceMapConsumer.GENERATED_ORDER = 1;\nSourceMapConsumer.ORIGINAL_ORDER = 2;\nSourceMapConsumer.GREATEST_LOWER_BOUND = 1;\nSourceMapConsumer.LEAST_UPPER_BOUND = 2;\n\n/**\n * Iterate over each mapping between an original source/line/column and a\n * generated line/column in this source map.\n *\n * @param Function aCallback\n * The function that is called with each mapping.\n * @param Object aContext\n * Optional. If specified, this object will be the value of `this` every\n * time that `aCallback` is called.\n * @param aOrder\n * Either `SourceMapConsumer.GENERATED_ORDER` or\n * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to\n * iterate over the mappings sorted by the generated file's line/column\n * order or the original's source/line/column order, respectively. Defaults to\n * `SourceMapConsumer.GENERATED_ORDER`.\n */\nSourceMapConsumer.prototype.eachMapping = function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) {\n var context = aContext || null;\n var order = aOrder || SourceMapConsumer.GENERATED_ORDER;\n var mappings;\n switch (order) {\n case SourceMapConsumer.GENERATED_ORDER:\n mappings = this._generatedMappings;\n break;\n case SourceMapConsumer.ORIGINAL_ORDER:\n mappings = this._originalMappings;\n break;\n default:\n throw new Error(\"Unknown order of iteration.\");\n }\n var sourceRoot = this.sourceRoot;\n mappings.map(function (mapping) {\n var source = mapping.source === null ? null : this._sources.at(mapping.source);\n if (source != null && sourceRoot != null) {\n source = util.join(sourceRoot, source);\n }\n return {\n source: source,\n generatedLine: mapping.generatedLine,\n generatedColumn: mapping.generatedColumn,\n originalLine: mapping.originalLine,\n originalColumn: mapping.originalColumn,\n name: mapping.name === null ? null : this._names.at(mapping.name)\n };\n }, this).forEach(aCallback, context);\n};\n\n/**\n * Returns all generated line and column information for the original source,\n * line, and column provided. If no column is provided, returns all mappings\n * corresponding to a either the line we are searching for or the next\n * closest line that has any mappings. Otherwise, returns all mappings\n * corresponding to the given line and either the column we are searching for\n * or the next closest column that has any offsets.\n *\n * The only argument is an object with the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source.\n * - column: Optional. the column number in the original source.\n *\n * and an array of objects is returned, each with the following properties:\n *\n * - line: The line number in the generated source, or null.\n * - column: The column number in the generated source, or null.\n */\nSourceMapConsumer.prototype.allGeneratedPositionsFor = function SourceMapConsumer_allGeneratedPositionsFor(aArgs) {\n var line = util.getArg(aArgs, 'line');\n\n // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping\n // returns the index of the closest mapping less than the needle. By\n // setting needle.originalColumn to 0, we thus find the last mapping for\n // the given line, provided such a mapping exists.\n var needle = {\n source: util.getArg(aArgs, 'source'),\n originalLine: line,\n originalColumn: util.getArg(aArgs, 'column', 0)\n };\n if (this.sourceRoot != null) {\n needle.source = util.relative(this.sourceRoot, needle.source);\n }\n if (!this._sources.has(needle.source)) {\n return [];\n }\n needle.source = this._sources.indexOf(needle.source);\n var mappings = [];\n var index = this._findMapping(needle, this._originalMappings, \"originalLine\", \"originalColumn\", util.compareByOriginalPositions, binarySearch.LEAST_UPPER_BOUND);\n if (index >= 0) {\n var mapping = this._originalMappings[index];\n if (aArgs.column === undefined) {\n var originalLine = mapping.originalLine;\n\n // Iterate until either we run out of mappings, or we run into\n // a mapping for a different line than the one we found. Since\n // mappings are sorted, this is guaranteed to find all mappings for\n // the line we found.\n while (mapping && mapping.originalLine === originalLine) {\n mappings.push({\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n });\n mapping = this._originalMappings[++index];\n }\n } else {\n var originalColumn = mapping.originalColumn;\n\n // Iterate until either we run out of mappings, or we run into\n // a mapping for a different line than the one we were searching for.\n // Since mappings are sorted, this is guaranteed to find all mappings for\n // the line we are searching for.\n while (mapping && mapping.originalLine === line && mapping.originalColumn == originalColumn) {\n mappings.push({\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n });\n mapping = this._originalMappings[++index];\n }\n }\n }\n return mappings;\n};\nexports.SourceMapConsumer = SourceMapConsumer;\n\n/**\n * A BasicSourceMapConsumer instance represents a parsed source map which we can\n * query for information about the original file positions by giving it a file\n * position in the generated source.\n *\n * The only parameter is the raw source map (either as a JSON string, or\n * already parsed to an object). According to the spec, source maps have the\n * following attributes:\n *\n * - version: Which version of the source map spec this map is following.\n * - sources: An array of URLs to the original source files.\n * - names: An array of identifiers which can be referrenced by individual mappings.\n * - sourceRoot: Optional. The URL root from which all sources are relative.\n * - sourcesContent: Optional. An array of contents of the original source files.\n * - mappings: A string of base64 VLQs which contain the actual mappings.\n * - file: Optional. The generated file this source map is associated with.\n *\n * Here is an example source map, taken from the source map spec[0]:\n *\n * {\n * version : 3,\n * file: \"out.js\",\n * sourceRoot : \"\",\n * sources: [\"foo.js\", \"bar.js\"],\n * names: [\"src\", \"maps\", \"are\", \"fun\"],\n * mappings: \"AA,AB;;ABCDE;\"\n * }\n *\n * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1#\n */\nfunction BasicSourceMapConsumer(aSourceMap) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = JSON.parse(aSourceMap.replace(/^\\)\\]\\}'/, ''));\n }\n var version = util.getArg(sourceMap, 'version');\n var sources = util.getArg(sourceMap, 'sources');\n // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which\n // requires the array) to play nice here.\n var names = util.getArg(sourceMap, 'names', []);\n var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null);\n var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null);\n var mappings = util.getArg(sourceMap, 'mappings');\n var file = util.getArg(sourceMap, 'file', null);\n\n // Once again, Sass deviates from the spec and supplies the version as a\n // string rather than a number, so we use loose equality checking here.\n if (version != this._version) {\n throw new Error('Unsupported version: ' + version);\n }\n sources = sources.map(String)\n // Some source maps produce relative source paths like \"./foo.js\" instead of\n // \"foo.js\". Normalize these first so that future comparisons will succeed.\n // See bugzil.la/1090768.\n .map(util.normalize)\n // Always ensure that absolute sources are internally stored relative to\n // the source root, if the source root is absolute. Not doing this would\n // be particularly problematic when the source root is a prefix of the\n // source (valid, but why??). See github issue #199 and bugzil.la/1188982.\n .map(function (source) {\n return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source) ? util.relative(sourceRoot, source) : source;\n });\n\n // Pass `true` below to allow duplicate names and sources. While source maps\n // are intended to be compressed and deduplicated, the TypeScript compiler\n // sometimes generates source maps with duplicates in them. See Github issue\n // #72 and bugzil.la/889492.\n this._names = ArraySet.fromArray(names.map(String), true);\n this._sources = ArraySet.fromArray(sources, true);\n this.sourceRoot = sourceRoot;\n this.sourcesContent = sourcesContent;\n this._mappings = mappings;\n this.file = file;\n}\nBasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\nBasicSourceMapConsumer.prototype.consumer = SourceMapConsumer;\n\n/**\n * Create a BasicSourceMapConsumer from a SourceMapGenerator.\n *\n * @param SourceMapGenerator aSourceMap\n * The source map that will be consumed.\n * @returns BasicSourceMapConsumer\n */\nBasicSourceMapConsumer.fromSourceMap = function SourceMapConsumer_fromSourceMap(aSourceMap) {\n var smc = Object.create(BasicSourceMapConsumer.prototype);\n var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true);\n var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true);\n smc.sourceRoot = aSourceMap._sourceRoot;\n smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(), smc.sourceRoot);\n smc.file = aSourceMap._file;\n\n // Because we are modifying the entries (by converting string sources and\n // names to indices into the sources and names ArraySets), we have to make\n // a copy of the entry or else bad things happen. Shared mutable state\n // strikes again! See github issue #191.\n\n var generatedMappings = aSourceMap._mappings.toArray().slice();\n var destGeneratedMappings = smc.__generatedMappings = [];\n var destOriginalMappings = smc.__originalMappings = [];\n for (var i = 0, length = generatedMappings.length; i < length; i++) {\n var srcMapping = generatedMappings[i];\n var destMapping = new Mapping();\n destMapping.generatedLine = srcMapping.generatedLine;\n destMapping.generatedColumn = srcMapping.generatedColumn;\n if (srcMapping.source) {\n destMapping.source = sources.indexOf(srcMapping.source);\n destMapping.originalLine = srcMapping.originalLine;\n destMapping.originalColumn = srcMapping.originalColumn;\n if (srcMapping.name) {\n destMapping.name = names.indexOf(srcMapping.name);\n }\n destOriginalMappings.push(destMapping);\n }\n destGeneratedMappings.push(destMapping);\n }\n quickSort(smc.__originalMappings, util.compareByOriginalPositions);\n return smc;\n};\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nBasicSourceMapConsumer.prototype._version = 3;\n\n/**\n * The list of original sources.\n */\nObject.defineProperty(BasicSourceMapConsumer.prototype, 'sources', {\n get: function () {\n return this._sources.toArray().map(function (s) {\n return this.sourceRoot != null ? util.join(this.sourceRoot, s) : s;\n }, this);\n }\n});\n\n/**\n * Provide the JIT with a nice shape / hidden class.\n */\nfunction Mapping() {\n this.generatedLine = 0;\n this.generatedColumn = 0;\n this.source = null;\n this.originalLine = null;\n this.originalColumn = null;\n this.name = null;\n}\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nBasicSourceMapConsumer.prototype._parseMappings = function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n var generatedLine = 1;\n var previousGeneratedColumn = 0;\n var previousOriginalLine = 0;\n var previousOriginalColumn = 0;\n var previousSource = 0;\n var previousName = 0;\n var length = aStr.length;\n var index = 0;\n var cachedSegments = {};\n var temp = {};\n var originalMappings = [];\n var generatedMappings = [];\n var mapping, str, segment, end, value;\n while (index < length) {\n if (aStr.charAt(index) === ';') {\n generatedLine++;\n index++;\n previousGeneratedColumn = 0;\n } else if (aStr.charAt(index) === ',') {\n index++;\n } else {\n mapping = new Mapping();\n mapping.generatedLine = generatedLine;\n\n // Because each offset is encoded relative to the previous one,\n // many segments often have the same encoding. We can exploit this\n // fact by caching the parsed variable length fields of each segment,\n // allowing us to avoid a second parse if we encounter the same\n // segment again.\n for (end = index; end < length; end++) {\n if (this._charIsMappingSeparator(aStr, end)) {\n break;\n }\n }\n str = aStr.slice(index, end);\n segment = cachedSegments[str];\n if (segment) {\n index += str.length;\n } else {\n segment = [];\n while (index < end) {\n base64VLQ.decode(aStr, index, temp);\n value = temp.value;\n index = temp.rest;\n segment.push(value);\n }\n if (segment.length === 2) {\n throw new Error('Found a source, but no line and column');\n }\n if (segment.length === 3) {\n throw new Error('Found a source and line, but no column');\n }\n cachedSegments[str] = segment;\n }\n\n // Generated column.\n mapping.generatedColumn = previousGeneratedColumn + segment[0];\n previousGeneratedColumn = mapping.generatedColumn;\n if (segment.length > 1) {\n // Original source.\n mapping.source = previousSource + segment[1];\n previousSource += segment[1];\n\n // Original line.\n mapping.originalLine = previousOriginalLine + segment[2];\n previousOriginalLine = mapping.originalLine;\n // Lines are stored 0-based\n mapping.originalLine += 1;\n\n // Original column.\n mapping.originalColumn = previousOriginalColumn + segment[3];\n previousOriginalColumn = mapping.originalColumn;\n if (segment.length > 4) {\n // Original name.\n mapping.name = previousName + segment[4];\n previousName += segment[4];\n }\n }\n generatedMappings.push(mapping);\n if (typeof mapping.originalLine === 'number') {\n originalMappings.push(mapping);\n }\n }\n }\n quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated);\n this.__generatedMappings = generatedMappings;\n quickSort(originalMappings, util.compareByOriginalPositions);\n this.__originalMappings = originalMappings;\n};\n\n/**\n * Find the mapping that best matches the hypothetical \"needle\" mapping that\n * we are searching for in the given \"haystack\" of mappings.\n */\nBasicSourceMapConsumer.prototype._findMapping = function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName, aColumnName, aComparator, aBias) {\n // To return the position we are searching for, we must first find the\n // mapping for the given position and then return the opposite position it\n // points to. Because the mappings are sorted, we can use binary search to\n // find the best mapping.\n\n if (aNeedle[aLineName] <= 0) {\n throw new TypeError('Line must be greater than or equal to 1, got ' + aNeedle[aLineName]);\n }\n if (aNeedle[aColumnName] < 0) {\n throw new TypeError('Column must be greater than or equal to 0, got ' + aNeedle[aColumnName]);\n }\n return binarySearch.search(aNeedle, aMappings, aComparator, aBias);\n};\n\n/**\n * Compute the last column for each generated mapping. The last column is\n * inclusive.\n */\nBasicSourceMapConsumer.prototype.computeColumnSpans = function SourceMapConsumer_computeColumnSpans() {\n for (var index = 0; index < this._generatedMappings.length; ++index) {\n var mapping = this._generatedMappings[index];\n\n // Mappings do not contain a field for the last generated columnt. We\n // can come up with an optimistic estimate, however, by assuming that\n // mappings are contiguous (i.e. given two consecutive mappings, the\n // first mapping ends where the second one starts).\n if (index + 1 < this._generatedMappings.length) {\n var nextMapping = this._generatedMappings[index + 1];\n if (mapping.generatedLine === nextMapping.generatedLine) {\n mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1;\n continue;\n }\n }\n\n // The last mapping for each line spans the entire line.\n mapping.lastGeneratedColumn = Infinity;\n }\n};\n\n/**\n * Returns the original source, line, and column information for the generated\n * source's line and column positions provided. The only argument is an object\n * with the following properties:\n *\n * - line: The line number in the generated source.\n * - column: The column number in the generated source.\n * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n *\n * and an object is returned with the following properties:\n *\n * - source: The original source file, or null.\n * - line: The line number in the original source, or null.\n * - column: The column number in the original source, or null.\n * - name: The original identifier, or null.\n */\nBasicSourceMapConsumer.prototype.originalPositionFor = function SourceMapConsumer_originalPositionFor(aArgs) {\n var needle = {\n generatedLine: util.getArg(aArgs, 'line'),\n generatedColumn: util.getArg(aArgs, 'column')\n };\n var index = this._findMapping(needle, this._generatedMappings, \"generatedLine\", \"generatedColumn\", util.compareByGeneratedPositionsDeflated, util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND));\n if (index >= 0) {\n var mapping = this._generatedMappings[index];\n if (mapping.generatedLine === needle.generatedLine) {\n var source = util.getArg(mapping, 'source', null);\n if (source !== null) {\n source = this._sources.at(source);\n if (this.sourceRoot != null) {\n source = util.join(this.sourceRoot, source);\n }\n }\n var name = util.getArg(mapping, 'name', null);\n if (name !== null) {\n name = this._names.at(name);\n }\n return {\n source: source,\n line: util.getArg(mapping, 'originalLine', null),\n column: util.getArg(mapping, 'originalColumn', null),\n name: name\n };\n }\n }\n return {\n source: null,\n line: null,\n column: null,\n name: null\n };\n};\n\n/**\n * Return true if we have the source content for every source in the source\n * map, false otherwise.\n */\nBasicSourceMapConsumer.prototype.hasContentsOfAllSources = function BasicSourceMapConsumer_hasContentsOfAllSources() {\n if (!this.sourcesContent) {\n return false;\n }\n return this.sourcesContent.length >= this._sources.size() && !this.sourcesContent.some(function (sc) {\n return sc == null;\n });\n};\n\n/**\n * Returns the original source content. The only argument is the url of the\n * original source file. Returns null if no original source content is\n * available.\n */\nBasicSourceMapConsumer.prototype.sourceContentFor = function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n if (!this.sourcesContent) {\n return null;\n }\n if (this.sourceRoot != null) {\n aSource = util.relative(this.sourceRoot, aSource);\n }\n if (this._sources.has(aSource)) {\n return this.sourcesContent[this._sources.indexOf(aSource)];\n }\n var url;\n if (this.sourceRoot != null && (url = util.urlParse(this.sourceRoot))) {\n // XXX: file:// URIs and absolute paths lead to unexpected behavior for\n // many users. We can help them out when they expect file:// URIs to\n // behave like it would if they were running a local HTTP server. See\n // https://bugzilla.mozilla.org/show_bug.cgi?id=885597.\n var fileUriAbsPath = aSource.replace(/^file:\\/\\//, \"\");\n if (url.scheme == \"file\" && this._sources.has(fileUriAbsPath)) {\n return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)];\n }\n if ((!url.path || url.path == \"/\") && this._sources.has(\"/\" + aSource)) {\n return this.sourcesContent[this._sources.indexOf(\"/\" + aSource)];\n }\n }\n\n // This function is used recursively from\n // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we\n // don't want to throw if we can't find the source - we just want to\n // return null, so we provide a flag to exit gracefully.\n if (nullOnMissing) {\n return null;\n } else {\n throw new Error('\"' + aSource + '\" is not in the SourceMap.');\n }\n};\n\n/**\n * Returns the generated line and column information for the original source,\n * line, and column positions provided. The only argument is an object with\n * the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source.\n * - column: The column number in the original source.\n * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n *\n * and an object is returned with the following properties:\n *\n * - line: The line number in the generated source, or null.\n * - column: The column number in the generated source, or null.\n */\nBasicSourceMapConsumer.prototype.generatedPositionFor = function SourceMapConsumer_generatedPositionFor(aArgs) {\n var source = util.getArg(aArgs, 'source');\n if (this.sourceRoot != null) {\n source = util.relative(this.sourceRoot, source);\n }\n if (!this._sources.has(source)) {\n return {\n line: null,\n column: null,\n lastColumn: null\n };\n }\n source = this._sources.indexOf(source);\n var needle = {\n source: source,\n originalLine: util.getArg(aArgs, 'line'),\n originalColumn: util.getArg(aArgs, 'column')\n };\n var index = this._findMapping(needle, this._originalMappings, \"originalLine\", \"originalColumn\", util.compareByOriginalPositions, util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND));\n if (index >= 0) {\n var mapping = this._originalMappings[index];\n if (mapping.source === needle.source) {\n return {\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n };\n }\n }\n return {\n line: null,\n column: null,\n lastColumn: null\n };\n};\nexports.BasicSourceMapConsumer = BasicSourceMapConsumer;\n\n/**\n * An IndexedSourceMapConsumer instance represents a parsed source map which\n * we can query for information. It differs from BasicSourceMapConsumer in\n * that it takes \"indexed\" source maps (i.e. ones with a \"sections\" field) as\n * input.\n *\n * The only parameter is a raw source map (either as a JSON string, or already\n * parsed to an object). According to the spec for indexed source maps, they\n * have the following attributes:\n *\n * - version: Which version of the source map spec this map is following.\n * - file: Optional. The generated file this source map is associated with.\n * - sections: A list of section definitions.\n *\n * Each value under the \"sections\" field has two fields:\n * - offset: The offset into the original specified at which this section\n * begins to apply, defined as an object with a \"line\" and \"column\"\n * field.\n * - map: A source map definition. This source map could also be indexed,\n * but doesn't have to be.\n *\n * Instead of the \"map\" field, it's also possible to have a \"url\" field\n * specifying a URL to retrieve a source map from, but that's currently\n * unsupported.\n *\n * Here's an example source map, taken from the source map spec[0], but\n * modified to omit a section which uses the \"url\" field.\n *\n * {\n * version : 3,\n * file: \"app.js\",\n * sections: [{\n * offset: {line:100, column:10},\n * map: {\n * version : 3,\n * file: \"section.js\",\n * sources: [\"foo.js\", \"bar.js\"],\n * names: [\"src\", \"maps\", \"are\", \"fun\"],\n * mappings: \"AAAA,E;;ABCDE;\"\n * }\n * }],\n * }\n *\n * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt\n */\nfunction IndexedSourceMapConsumer(aSourceMap) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = JSON.parse(aSourceMap.replace(/^\\)\\]\\}'/, ''));\n }\n var version = util.getArg(sourceMap, 'version');\n var sections = util.getArg(sourceMap, 'sections');\n if (version != this._version) {\n throw new Error('Unsupported version: ' + version);\n }\n this._sources = new ArraySet();\n this._names = new ArraySet();\n var lastOffset = {\n line: -1,\n column: 0\n };\n this._sections = sections.map(function (s) {\n if (s.url) {\n // The url field will require support for asynchronicity.\n // See https://github.com/mozilla/source-map/issues/16\n throw new Error('Support for url field in sections not implemented.');\n }\n var offset = util.getArg(s, 'offset');\n var offsetLine = util.getArg(offset, 'line');\n var offsetColumn = util.getArg(offset, 'column');\n if (offsetLine < lastOffset.line || offsetLine === lastOffset.line && offsetColumn < lastOffset.column) {\n throw new Error('Section offsets must be ordered and non-overlapping.');\n }\n lastOffset = offset;\n return {\n generatedOffset: {\n // The offset fields are 0-based, but we use 1-based indices when\n // encoding/decoding from VLQ.\n generatedLine: offsetLine + 1,\n generatedColumn: offsetColumn + 1\n },\n consumer: new SourceMapConsumer(util.getArg(s, 'map'))\n };\n });\n}\nIndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\nIndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer;\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nIndexedSourceMapConsumer.prototype._version = 3;\n\n/**\n * The list of original sources.\n */\nObject.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', {\n get: function () {\n var sources = [];\n for (var i = 0; i < this._sections.length; i++) {\n for (var j = 0; j < this._sections[i].consumer.sources.length; j++) {\n sources.push(this._sections[i].consumer.sources[j]);\n }\n }\n return sources;\n }\n});\n\n/**\n * Returns the original source, line, and column information for the generated\n * source's line and column positions provided. The only argument is an object\n * with the following properties:\n *\n * - line: The line number in the generated source.\n * - column: The column number in the generated source.\n *\n * and an object is returned with the following properties:\n *\n * - source: The original source file, or null.\n * - line: The line number in the original source, or null.\n * - column: The column number in the original source, or null.\n * - name: The original identifier, or null.\n */\nIndexedSourceMapConsumer.prototype.originalPositionFor = function IndexedSourceMapConsumer_originalPositionFor(aArgs) {\n var needle = {\n generatedLine: util.getArg(aArgs, 'line'),\n generatedColumn: util.getArg(aArgs, 'column')\n };\n\n // Find the section containing the generated position we're trying to map\n // to an original position.\n var sectionIndex = binarySearch.search(needle, this._sections, function (needle, section) {\n var cmp = needle.generatedLine - section.generatedOffset.generatedLine;\n if (cmp) {\n return cmp;\n }\n return needle.generatedColumn - section.generatedOffset.generatedColumn;\n });\n var section = this._sections[sectionIndex];\n if (!section) {\n return {\n source: null,\n line: null,\n column: null,\n name: null\n };\n }\n return section.consumer.originalPositionFor({\n line: needle.generatedLine - (section.generatedOffset.generatedLine - 1),\n column: needle.generatedColumn - (section.generatedOffset.generatedLine === needle.generatedLine ? section.generatedOffset.generatedColumn - 1 : 0),\n bias: aArgs.bias\n });\n};\n\n/**\n * Return true if we have the source content for every source in the source\n * map, false otherwise.\n */\nIndexedSourceMapConsumer.prototype.hasContentsOfAllSources = function IndexedSourceMapConsumer_hasContentsOfAllSources() {\n return this._sections.every(function (s) {\n return s.consumer.hasContentsOfAllSources();\n });\n};\n\n/**\n * Returns the original source content. The only argument is the url of the\n * original source file. Returns null if no original source content is\n * available.\n */\nIndexedSourceMapConsumer.prototype.sourceContentFor = function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n var content = section.consumer.sourceContentFor(aSource, true);\n if (content) {\n return content;\n }\n }\n if (nullOnMissing) {\n return null;\n } else {\n throw new Error('\"' + aSource + '\" is not in the SourceMap.');\n }\n};\n\n/**\n * Returns the generated line and column information for the original source,\n * line, and column positions provided. The only argument is an object with\n * the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source.\n * - column: The column number in the original source.\n *\n * and an object is returned with the following properties:\n *\n * - line: The line number in the generated source, or null.\n * - column: The column number in the generated source, or null.\n */\nIndexedSourceMapConsumer.prototype.generatedPositionFor = function IndexedSourceMapConsumer_generatedPositionFor(aArgs) {\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n\n // Only consider this section if the requested source is in the list of\n // sources of the consumer.\n if (section.consumer.sources.indexOf(util.getArg(aArgs, 'source')) === -1) {\n continue;\n }\n var generatedPosition = section.consumer.generatedPositionFor(aArgs);\n if (generatedPosition) {\n var ret = {\n line: generatedPosition.line + (section.generatedOffset.generatedLine - 1),\n column: generatedPosition.column + (section.generatedOffset.generatedLine === generatedPosition.line ? section.generatedOffset.generatedColumn - 1 : 0)\n };\n return ret;\n }\n }\n return {\n line: null,\n column: null\n };\n};\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nIndexedSourceMapConsumer.prototype._parseMappings = function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n this.__generatedMappings = [];\n this.__originalMappings = [];\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n var sectionMappings = section.consumer._generatedMappings;\n for (var j = 0; j < sectionMappings.length; j++) {\n var mapping = sectionMappings[j];\n var source = section.consumer._sources.at(mapping.source);\n if (section.consumer.sourceRoot !== null) {\n source = util.join(section.consumer.sourceRoot, source);\n }\n this._sources.add(source);\n source = this._sources.indexOf(source);\n var name = section.consumer._names.at(mapping.name);\n this._names.add(name);\n name = this._names.indexOf(name);\n\n // The mappings coming from the consumer for the section have\n // generated positions relative to the start of the section, so we\n // need to offset them to be relative to the start of the concatenated\n // generated file.\n var adjustedMapping = {\n source: source,\n generatedLine: mapping.generatedLine + (section.generatedOffset.generatedLine - 1),\n generatedColumn: mapping.generatedColumn + (section.generatedOffset.generatedLine === mapping.generatedLine ? section.generatedOffset.generatedColumn - 1 : 0),\n originalLine: mapping.originalLine,\n originalColumn: mapping.originalColumn,\n name: name\n };\n this.__generatedMappings.push(adjustedMapping);\n if (typeof adjustedMapping.originalLine === 'number') {\n this.__originalMappings.push(adjustedMapping);\n }\n }\n }\n quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated);\n quickSort(this.__originalMappings, util.compareByOriginalPositions);\n};\nexports.IndexedSourceMapConsumer = IndexedSourceMapConsumer;","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nexports.GREATEST_LOWER_BOUND = 1;\nexports.LEAST_UPPER_BOUND = 2;\n\n/**\n * Recursive implementation of binary search.\n *\n * @param aLow Indices here and lower do not contain the needle.\n * @param aHigh Indices here and higher do not contain the needle.\n * @param aNeedle The element being searched for.\n * @param aHaystack The non-empty array being searched.\n * @param aCompare Function which takes two elements and returns -1, 0, or 1.\n * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n */\nfunction recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) {\n // This function terminates when one of the following is true:\n //\n // 1. We find the exact element we are looking for.\n //\n // 2. We did not find the exact element, but we can return the index of\n // the next-closest element.\n //\n // 3. We did not find the exact element, and there is no next-closest\n // element than the one we are searching for, so we return -1.\n var mid = Math.floor((aHigh - aLow) / 2) + aLow;\n var cmp = aCompare(aNeedle, aHaystack[mid], true);\n if (cmp === 0) {\n // Found the element we are looking for.\n return mid;\n } else if (cmp > 0) {\n // Our needle is greater than aHaystack[mid].\n if (aHigh - mid > 1) {\n // The element is in the upper half.\n return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias);\n }\n\n // The exact needle element was not found in this haystack. Determine if\n // we are in termination case (3) or (2) and return the appropriate thing.\n if (aBias == exports.LEAST_UPPER_BOUND) {\n return aHigh < aHaystack.length ? aHigh : -1;\n } else {\n return mid;\n }\n } else {\n // Our needle is less than aHaystack[mid].\n if (mid - aLow > 1) {\n // The element is in the lower half.\n return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias);\n }\n\n // we are in termination case (3) or (2) and return the appropriate thing.\n if (aBias == exports.LEAST_UPPER_BOUND) {\n return mid;\n } else {\n return aLow < 0 ? -1 : aLow;\n }\n }\n}\n\n/**\n * This is an implementation of binary search which will always try and return\n * the index of the closest element if there is no exact hit. This is because\n * mappings between original and generated line/col pairs are single points,\n * and there is an implicit region between each of them, so a miss just means\n * that you aren't on the very start of a region.\n *\n * @param aNeedle The element you are looking for.\n * @param aHaystack The array that is being searched.\n * @param aCompare A function which takes the needle and an element in the\n * array and returns -1, 0, or 1 depending on whether the needle is less\n * than, equal to, or greater than the element, respectively.\n * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'binarySearch.GREATEST_LOWER_BOUND'.\n */\nexports.search = function search(aNeedle, aHaystack, aCompare, aBias) {\n if (aHaystack.length === 0) {\n return -1;\n }\n var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack, aCompare, aBias || exports.GREATEST_LOWER_BOUND);\n if (index < 0) {\n return -1;\n }\n\n // We have found either the exact element, or the next-closest element than\n // the one we are searching for. However, there may be more than one such\n // element. Make sure we always return the smallest of these.\n while (index - 1 >= 0) {\n if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) {\n break;\n }\n --index;\n }\n return index;\n};","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\n// It turns out that some (most?) JavaScript engines don't self-host\n// `Array.prototype.sort`. This makes sense because C++ will likely remain\n// faster than JS when doing raw CPU-intensive sorting. However, when using a\n// custom comparator function, calling back and forth between the VM's C++ and\n// JIT'd JS is rather slow *and* loses JIT type information, resulting in\n// worse generated code for the comparator function than would be optimal. In\n// fact, when sorting with a comparator, these costs outweigh the benefits of\n// sorting in C++. By using our own JS-implemented Quick Sort (below), we get\n// a ~3500ms mean speed-up in `bench/bench.html`.\n\n/**\n * Swap the elements indexed by `x` and `y` in the array `ary`.\n *\n * @param {Array} ary\n * The array.\n * @param {Number} x\n * The index of the first item.\n * @param {Number} y\n * The index of the second item.\n */\nfunction swap(ary, x, y) {\n var temp = ary[x];\n ary[x] = ary[y];\n ary[y] = temp;\n}\n\n/**\n * Returns a random integer within the range `low .. high` inclusive.\n *\n * @param {Number} low\n * The lower bound on the range.\n * @param {Number} high\n * The upper bound on the range.\n */\nfunction randomIntInRange(low, high) {\n return Math.round(low + Math.random() * (high - low));\n}\n\n/**\n * The Quick Sort algorithm.\n *\n * @param {Array} ary\n * An array to sort.\n * @param {function} comparator\n * Function to use to compare two items.\n * @param {Number} p\n * Start index of the array\n * @param {Number} r\n * End index of the array\n */\nfunction doQuickSort(ary, comparator, p, r) {\n // If our lower bound is less than our upper bound, we (1) partition the\n // array into two pieces and (2) recurse on each half. If it is not, this is\n // the empty array and our base case.\n\n if (p < r) {\n // (1) Partitioning.\n //\n // The partitioning chooses a pivot between `p` and `r` and moves all\n // elements that are less than or equal to the pivot to the before it, and\n // all the elements that are greater than it after it. The effect is that\n // once partition is done, the pivot is in the exact place it will be when\n // the array is put in sorted order, and it will not need to be moved\n // again. This runs in O(n) time.\n\n // Always choose a random pivot so that an input array which is reverse\n // sorted does not cause O(n^2) running time.\n var pivotIndex = randomIntInRange(p, r);\n var i = p - 1;\n swap(ary, pivotIndex, r);\n var pivot = ary[r];\n\n // Immediately after `j` is incremented in this loop, the following hold\n // true:\n //\n // * Every element in `ary[p .. i]` is less than or equal to the pivot.\n //\n // * Every element in `ary[i+1 .. j-1]` is greater than the pivot.\n for (var j = p; j < r; j++) {\n if (comparator(ary[j], pivot) <= 0) {\n i += 1;\n swap(ary, i, j);\n }\n }\n swap(ary, i + 1, j);\n var q = i + 1;\n\n // (2) Recurse on each half.\n\n doQuickSort(ary, comparator, p, q - 1);\n doQuickSort(ary, comparator, q + 1, r);\n }\n}\n\n/**\n * Sort the given array in-place with the given comparator function.\n *\n * @param {Array} ary\n * An array to sort.\n * @param {function} comparator\n * Function to use to compare two items.\n */\nexports.quickSort = function (ary, comparator) {\n doQuickSort(ary, comparator, 0, ary.length - 1);\n};","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar SourceMapGenerator = require('./source-map-generator').SourceMapGenerator;\nvar util = require('./util');\n\n// Matches a Windows-style `\\r\\n` newline or a `\\n` newline used by all other\n// operating systems these days (capturing the result).\nvar REGEX_NEWLINE = /(\\r?\\n)/;\n\n// Newline character code for charCodeAt() comparisons\nvar NEWLINE_CODE = 10;\n\n// Private symbol for identifying `SourceNode`s when multiple versions of\n// the source-map library are loaded. This MUST NOT CHANGE across\n// versions!\nvar isSourceNode = \"$$$isSourceNode$$$\";\n\n/**\n * SourceNodes provide a way to abstract over interpolating/concatenating\n * snippets of generated JavaScript source code while maintaining the line and\n * column information associated with the original source code.\n *\n * @param aLine The original line number.\n * @param aColumn The original column number.\n * @param aSource The original source's filename.\n * @param aChunks Optional. An array of strings which are snippets of\n * generated JS, or other SourceNodes.\n * @param aName The original identifier.\n */\nfunction SourceNode(aLine, aColumn, aSource, aChunks, aName) {\n this.children = [];\n this.sourceContents = {};\n this.line = aLine == null ? null : aLine;\n this.column = aColumn == null ? null : aColumn;\n this.source = aSource == null ? null : aSource;\n this.name = aName == null ? null : aName;\n this[isSourceNode] = true;\n if (aChunks != null) this.add(aChunks);\n}\n\n/**\n * Creates a SourceNode from generated code and a SourceMapConsumer.\n *\n * @param aGeneratedCode The generated code\n * @param aSourceMapConsumer The SourceMap for the generated code\n * @param aRelativePath Optional. The path that relative sources in the\n * SourceMapConsumer should be relative to.\n */\nSourceNode.fromStringWithSourceMap = function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) {\n // The SourceNode we want to fill with the generated code\n // and the SourceMap\n var node = new SourceNode();\n\n // All even indices of this array are one line of the generated code,\n // while all odd indices are the newlines between two adjacent lines\n // (since `REGEX_NEWLINE` captures its match).\n // Processed fragments are removed from this array, by calling `shiftNextLine`.\n var remainingLines = aGeneratedCode.split(REGEX_NEWLINE);\n var shiftNextLine = function () {\n var lineContents = remainingLines.shift();\n // The last line of a file might not have a newline.\n var newLine = remainingLines.shift() || \"\";\n return lineContents + newLine;\n };\n\n // We need to remember the position of \"remainingLines\"\n var lastGeneratedLine = 1,\n lastGeneratedColumn = 0;\n\n // The generate SourceNodes we need a code range.\n // To extract it current and last mapping is used.\n // Here we store the last mapping.\n var lastMapping = null;\n aSourceMapConsumer.eachMapping(function (mapping) {\n if (lastMapping !== null) {\n // We add the code from \"lastMapping\" to \"mapping\":\n // First check if there is a new line in between.\n if (lastGeneratedLine < mapping.generatedLine) {\n // Associate first line with \"lastMapping\"\n addMappingWithCode(lastMapping, shiftNextLine());\n lastGeneratedLine++;\n lastGeneratedColumn = 0;\n // The remaining code is added without mapping\n } else {\n // There is no new line in between.\n // Associate the code between \"lastGeneratedColumn\" and\n // \"mapping.generatedColumn\" with \"lastMapping\"\n var nextLine = remainingLines[0];\n var code = nextLine.substr(0, mapping.generatedColumn - lastGeneratedColumn);\n remainingLines[0] = nextLine.substr(mapping.generatedColumn - lastGeneratedColumn);\n lastGeneratedColumn = mapping.generatedColumn;\n addMappingWithCode(lastMapping, code);\n // No more remaining code, continue\n lastMapping = mapping;\n return;\n }\n }\n // We add the generated code until the first mapping\n // to the SourceNode without any mapping.\n // Each line is added as separate string.\n while (lastGeneratedLine < mapping.generatedLine) {\n node.add(shiftNextLine());\n lastGeneratedLine++;\n }\n if (lastGeneratedColumn < mapping.generatedColumn) {\n var nextLine = remainingLines[0];\n node.add(nextLine.substr(0, mapping.generatedColumn));\n remainingLines[0] = nextLine.substr(mapping.generatedColumn);\n lastGeneratedColumn = mapping.generatedColumn;\n }\n lastMapping = mapping;\n }, this);\n // We have processed all mappings.\n if (remainingLines.length > 0) {\n if (lastMapping) {\n // Associate the remaining code in the current line with \"lastMapping\"\n addMappingWithCode(lastMapping, shiftNextLine());\n }\n // and add the remaining lines without any mapping\n node.add(remainingLines.join(\"\"));\n }\n\n // Copy sourcesContent into SourceNode\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n if (aRelativePath != null) {\n sourceFile = util.join(aRelativePath, sourceFile);\n }\n node.setSourceContent(sourceFile, content);\n }\n });\n return node;\n function addMappingWithCode(mapping, code) {\n if (mapping === null || mapping.source === undefined) {\n node.add(code);\n } else {\n var source = aRelativePath ? util.join(aRelativePath, mapping.source) : mapping.source;\n node.add(new SourceNode(mapping.originalLine, mapping.originalColumn, source, code, mapping.name));\n }\n }\n};\n\n/**\n * Add a chunk of generated JS to this source node.\n *\n * @param aChunk A string snippet of generated JS code, another instance of\n * SourceNode, or an array where each member is one of those things.\n */\nSourceNode.prototype.add = function SourceNode_add(aChunk) {\n if (Array.isArray(aChunk)) {\n aChunk.forEach(function (chunk) {\n this.add(chunk);\n }, this);\n } else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n if (aChunk) {\n this.children.push(aChunk);\n }\n } else {\n throw new TypeError(\"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk);\n }\n return this;\n};\n\n/**\n * Add a chunk of generated JS to the beginning of this source node.\n *\n * @param aChunk A string snippet of generated JS code, another instance of\n * SourceNode, or an array where each member is one of those things.\n */\nSourceNode.prototype.prepend = function SourceNode_prepend(aChunk) {\n if (Array.isArray(aChunk)) {\n for (var i = aChunk.length - 1; i >= 0; i--) {\n this.prepend(aChunk[i]);\n }\n } else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n this.children.unshift(aChunk);\n } else {\n throw new TypeError(\"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk);\n }\n return this;\n};\n\n/**\n * Walk over the tree of JS snippets in this node and its children. The\n * walking function is called once for each snippet of JS and is passed that\n * snippet and the its original associated source's line/column location.\n *\n * @param aFn The traversal function.\n */\nSourceNode.prototype.walk = function SourceNode_walk(aFn) {\n var chunk;\n for (var i = 0, len = this.children.length; i < len; i++) {\n chunk = this.children[i];\n if (chunk[isSourceNode]) {\n chunk.walk(aFn);\n } else {\n if (chunk !== '') {\n aFn(chunk, {\n source: this.source,\n line: this.line,\n column: this.column,\n name: this.name\n });\n }\n }\n }\n};\n\n/**\n * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between\n * each of `this.children`.\n *\n * @param aSep The separator.\n */\nSourceNode.prototype.join = function SourceNode_join(aSep) {\n var newChildren;\n var i;\n var len = this.children.length;\n if (len > 0) {\n newChildren = [];\n for (i = 0; i < len - 1; i++) {\n newChildren.push(this.children[i]);\n newChildren.push(aSep);\n }\n newChildren.push(this.children[i]);\n this.children = newChildren;\n }\n return this;\n};\n\n/**\n * Call String.prototype.replace on the very right-most source snippet. Useful\n * for trimming whitespace from the end of a source node, etc.\n *\n * @param aPattern The pattern to replace.\n * @param aReplacement The thing to replace the pattern with.\n */\nSourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) {\n var lastChild = this.children[this.children.length - 1];\n if (lastChild[isSourceNode]) {\n lastChild.replaceRight(aPattern, aReplacement);\n } else if (typeof lastChild === 'string') {\n this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement);\n } else {\n this.children.push(''.replace(aPattern, aReplacement));\n }\n return this;\n};\n\n/**\n * Set the source content for a source file. This will be added to the SourceMapGenerator\n * in the sourcesContent field.\n *\n * @param aSourceFile The filename of the source file\n * @param aSourceContent The content of the source file\n */\nSourceNode.prototype.setSourceContent = function SourceNode_setSourceContent(aSourceFile, aSourceContent) {\n this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent;\n};\n\n/**\n * Walk over the tree of SourceNodes. The walking function is called for each\n * source file content and is passed the filename and source content.\n *\n * @param aFn The traversal function.\n */\nSourceNode.prototype.walkSourceContents = function SourceNode_walkSourceContents(aFn) {\n for (var i = 0, len = this.children.length; i < len; i++) {\n if (this.children[i][isSourceNode]) {\n this.children[i].walkSourceContents(aFn);\n }\n }\n var sources = Object.keys(this.sourceContents);\n for (var i = 0, len = sources.length; i < len; i++) {\n aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]);\n }\n};\n\n/**\n * Return the string representation of this source node. Walks over the tree\n * and concatenates all the various snippets together to one string.\n */\nSourceNode.prototype.toString = function SourceNode_toString() {\n var str = \"\";\n this.walk(function (chunk) {\n str += chunk;\n });\n return str;\n};\n\n/**\n * Returns the string representation of this source node along with a source\n * map.\n */\nSourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) {\n var generated = {\n code: \"\",\n line: 1,\n column: 0\n };\n var map = new SourceMapGenerator(aArgs);\n var sourceMappingActive = false;\n var lastOriginalSource = null;\n var lastOriginalLine = null;\n var lastOriginalColumn = null;\n var lastOriginalName = null;\n this.walk(function (chunk, original) {\n generated.code += chunk;\n if (original.source !== null && original.line !== null && original.column !== null) {\n if (lastOriginalSource !== original.source || lastOriginalLine !== original.line || lastOriginalColumn !== original.column || lastOriginalName !== original.name) {\n map.addMapping({\n source: original.source,\n original: {\n line: original.line,\n column: original.column\n },\n generated: {\n line: generated.line,\n column: generated.column\n },\n name: original.name\n });\n }\n lastOriginalSource = original.source;\n lastOriginalLine = original.line;\n lastOriginalColumn = original.column;\n lastOriginalName = original.name;\n sourceMappingActive = true;\n } else if (sourceMappingActive) {\n map.addMapping({\n generated: {\n line: generated.line,\n column: generated.column\n }\n });\n lastOriginalSource = null;\n sourceMappingActive = false;\n }\n for (var idx = 0, length = chunk.length; idx < length; idx++) {\n if (chunk.charCodeAt(idx) === NEWLINE_CODE) {\n generated.line++;\n generated.column = 0;\n // Mappings end at eol\n if (idx + 1 === length) {\n lastOriginalSource = null;\n sourceMappingActive = false;\n } else if (sourceMappingActive) {\n map.addMapping({\n source: original.source,\n original: {\n line: original.line,\n column: original.column\n },\n generated: {\n line: generated.line,\n column: generated.column\n },\n name: original.name\n });\n }\n } else {\n generated.column++;\n }\n }\n });\n this.walkSourceContents(function (sourceFile, sourceContent) {\n map.setSourceContent(sourceFile, sourceContent);\n });\n return {\n code: generated.code,\n map: map\n };\n};\nexports.SourceNode = SourceNode;","//\n// Tools for performance debugging, only enabled in development mode.\n// Open up Chrome Dev Tools, then Timeline, then User Timing to see output.\n// Also see config/webpack/loaders/mark.js for the webpack loader marks.\n//\n\nlet marky;\n\nif (process.env.NODE_ENV === 'development') {\n if (typeof performance !== 'undefined' && performance.setResourceTimingBufferSize) {\n // Increase Firefox's performance entry limit; otherwise it's capped to 150.\n // See: https://bugzilla.mozilla.org/show_bug.cgi?id=1331135\n performance.setResourceTimingBufferSize(Infinity);\n }\n marky = require('marky');\n // allows us to easily do e.g. ReactPerf.printWasted() while debugging\n //window.ReactPerf = require('react-addons-perf');\n //window.ReactPerf.start();\n}\n\nexport function start(name) {\n if (process.env.NODE_ENV === 'development') {\n marky.mark(name);\n }\n}\n\nexport function stop(name) {\n if (process.env.NODE_ENV === 'development') {\n marky.stop(name);\n }\n}\n"],"sourceRoot":""}