HEX
Server: Apache
System: Linux pdx1-shared-a1-38 6.6.104-grsec-jammy+ #3 SMP Tue Sep 16 00:28:11 UTC 2025 x86_64
User: mmickelson (3396398)
PHP: 8.1.31
Disabled: NONE
Upload Files
File: //usr/share/nodejs/turbolinks/dist/turbolinks.js
var Turbolinks=function(modules){var installedModules={};function __webpack_require__(moduleId){if(installedModules[moduleId]){return installedModules[moduleId].exports}var module=installedModules[moduleId]={i:moduleId,l:false,exports:{}};modules[moduleId].call(module.exports,module,module.exports,__webpack_require__);module.l=true;return module.exports}__webpack_require__.m=modules;__webpack_require__.c=installedModules;__webpack_require__.d=function(exports,name,getter){if(!__webpack_require__.o(exports,name)){Object.defineProperty(exports,name,{enumerable:true,get:getter})}};__webpack_require__.r=function(exports){if(typeof Symbol!=="undefined"&&Symbol.toStringTag){Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"})}Object.defineProperty(exports,"__esModule",{value:true})};__webpack_require__.t=function(value,mode){if(mode&1)value=__webpack_require__(value);if(mode&8)return value;if(mode&4&&typeof value==="object"&&value&&value.__esModule)return value;var ns=Object.create(null);__webpack_require__.r(ns);Object.defineProperty(ns,"default",{enumerable:true,value:value});if(mode&2&&typeof value!="string")for(var key in value)__webpack_require__.d(ns,key,function(key){return value[key]}.bind(null,key));return ns};__webpack_require__.n=function(module){var getter=module&&module.__esModule?function getDefault(){return module["default"]}:function getModuleExports(){return module};__webpack_require__.d(getter,"a",getter);return getter};__webpack_require__.o=function(object,property){return Object.prototype.hasOwnProperty.call(object,property)};__webpack_require__.p="";return __webpack_require__(__webpack_require__.s="./src/turbolinks/index.js")}({"./src/turbolinks/browser_adapter.js":function(module,exports,__webpack_require__){eval('/* WEBPACK VAR INJECTION */(function(Turbolinks) {// Generated by CoffeeScript 1.12.8\n(function() {\n  var bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };\n\n  __webpack_require__(/*! ./http_request */ "./src/turbolinks/http_request.js");\n\n  __webpack_require__(/*! ./progress_bar */ "./src/turbolinks/progress_bar.js");\n\n  Turbolinks.BrowserAdapter = (function() {\n    var NETWORK_FAILURE, TIMEOUT_FAILURE, ref;\n\n    ref = Turbolinks.HttpRequest, NETWORK_FAILURE = ref.NETWORK_FAILURE, TIMEOUT_FAILURE = ref.TIMEOUT_FAILURE;\n\n    function BrowserAdapter(controller) {\n      this.controller = controller;\n      this.showProgressBar = bind(this.showProgressBar, this);\n      this.progressBar = new Turbolinks.ProgressBar;\n    }\n\n    BrowserAdapter.prototype.visitProposedToLocationWithAction = function(location, action) {\n      return this.controller.startVisitToLocationWithAction(location, action);\n    };\n\n    BrowserAdapter.prototype.visitStarted = function(visit) {\n      visit.issueRequest();\n      visit.changeHistory();\n      return visit.loadCachedSnapshot();\n    };\n\n    BrowserAdapter.prototype.visitRequestStarted = function(visit) {\n      this.progressBar.setValue(0);\n      if (visit.hasCachedSnapshot() || visit.action !== "restore") {\n        return this.showProgressBarAfterDelay();\n      } else {\n        return this.showProgressBar();\n      }\n    };\n\n    BrowserAdapter.prototype.visitRequestProgressed = function(visit) {\n      return this.progressBar.setValue(visit.progress);\n    };\n\n    BrowserAdapter.prototype.visitRequestCompleted = function(visit) {\n      return visit.loadResponse();\n    };\n\n    BrowserAdapter.prototype.visitRequestFailedWithStatusCode = function(visit, statusCode) {\n      switch (statusCode) {\n        case NETWORK_FAILURE:\n        case TIMEOUT_FAILURE:\n          return this.reload();\n        default:\n          return visit.loadResponse();\n      }\n    };\n\n    BrowserAdapter.prototype.visitRequestFinished = function(visit) {\n      return this.hideProgressBar();\n    };\n\n    BrowserAdapter.prototype.visitCompleted = function(visit) {\n      return visit.followRedirect();\n    };\n\n    BrowserAdapter.prototype.pageInvalidated = function() {\n      return this.reload();\n    };\n\n    BrowserAdapter.prototype.showProgressBarAfterDelay = function() {\n      return this.progressBarTimeout = setTimeout(this.showProgressBar, this.controller.progressBarDelay);\n    };\n\n    BrowserAdapter.prototype.showProgressBar = function() {\n      return this.progressBar.show();\n    };\n\n    BrowserAdapter.prototype.hideProgressBar = function() {\n      this.progressBar.hide();\n      return clearTimeout(this.progressBarTimeout);\n    };\n\n    BrowserAdapter.prototype.reload = function() {\n      return window.location.reload();\n    };\n\n    return BrowserAdapter;\n\n  })();\n\n}).call(this);\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./ */ "./src/turbolinks/index.js")))\n\n//# sourceURL=webpack://Turbolinks/./src/turbolinks/browser_adapter.js?')},"./src/turbolinks/controller.js":function(module,exports,__webpack_require__){eval('/* WEBPACK VAR INJECTION */(function(Turbolinks) {// Generated by CoffeeScript 1.12.8\n(function() {\n  var bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };\n\n  __webpack_require__(/*! ./location */ "./src/turbolinks/location.js");\n\n  __webpack_require__(/*! ./browser_adapter */ "./src/turbolinks/browser_adapter.js");\n\n  __webpack_require__(/*! ./history */ "./src/turbolinks/history.js");\n\n  __webpack_require__(/*! ./view */ "./src/turbolinks/view.js");\n\n  __webpack_require__(/*! ./scroll_manager */ "./src/turbolinks/scroll_manager.js");\n\n  __webpack_require__(/*! ./snapshot_cache */ "./src/turbolinks/snapshot_cache.js");\n\n  __webpack_require__(/*! ./visit */ "./src/turbolinks/visit.js");\n\n  Turbolinks.Controller = (function() {\n    function Controller() {\n      this.clickBubbled = bind(this.clickBubbled, this);\n      this.clickCaptured = bind(this.clickCaptured, this);\n      this.pageLoaded = bind(this.pageLoaded, this);\n      this.history = new Turbolinks.History(this);\n      this.view = new Turbolinks.View(this);\n      this.scrollManager = new Turbolinks.ScrollManager(this);\n      this.restorationData = {};\n      this.clearCache();\n      this.setProgressBarDelay(500);\n    }\n\n    Controller.prototype.start = function() {\n      if (Turbolinks.supported && !this.started) {\n        addEventListener("click", this.clickCaptured, true);\n        addEventListener("DOMContentLoaded", this.pageLoaded, false);\n        this.scrollManager.start();\n        this.startHistory();\n        this.started = true;\n        return this.enabled = true;\n      }\n    };\n\n    Controller.prototype.disable = function() {\n      return this.enabled = false;\n    };\n\n    Controller.prototype.stop = function() {\n      if (this.started) {\n        removeEventListener("click", this.clickCaptured, true);\n        removeEventListener("DOMContentLoaded", this.pageLoaded, false);\n        this.scrollManager.stop();\n        this.stopHistory();\n        return this.started = false;\n      }\n    };\n\n    Controller.prototype.clearCache = function() {\n      return this.cache = new Turbolinks.SnapshotCache(10);\n    };\n\n    Controller.prototype.visit = function(location, options) {\n      var action, ref;\n      if (options == null) {\n        options = {};\n      }\n      location = Turbolinks.Location.wrap(location);\n      if (this.applicationAllowsVisitingLocation(location)) {\n        if (this.locationIsVisitable(location)) {\n          action = (ref = options.action) != null ? ref : "advance";\n          return this.adapter.visitProposedToLocationWithAction(location, action);\n        } else {\n          return window.location = location;\n        }\n      }\n    };\n\n    Controller.prototype.startVisitToLocationWithAction = function(location, action, restorationIdentifier) {\n      var restorationData;\n      if (Turbolinks.supported) {\n        restorationData = this.getRestorationDataForIdentifier(restorationIdentifier);\n        return this.startVisit(location, action, {\n          restorationData: restorationData\n        });\n      } else {\n        return window.location = location;\n      }\n    };\n\n    Controller.prototype.setProgressBarDelay = function(delay) {\n      return this.progressBarDelay = delay;\n    };\n\n    Controller.prototype.startHistory = function() {\n      this.location = Turbolinks.Location.wrap(window.location);\n      this.restorationIdentifier = Turbolinks.uuid();\n      this.history.start();\n      return this.history.replace(this.location, this.restorationIdentifier);\n    };\n\n    Controller.prototype.stopHistory = function() {\n      return this.history.stop();\n    };\n\n    Controller.prototype.pushHistoryWithLocationAndRestorationIdentifier = function(location, restorationIdentifier1) {\n      this.restorationIdentifier = restorationIdentifier1;\n      this.location = Turbolinks.Location.wrap(location);\n      return this.history.push(this.location, this.restorationIdentifier);\n    };\n\n    Controller.prototype.replaceHistoryWithLocationAndRestorationIdentifier = function(location, restorationIdentifier1) {\n      this.restorationIdentifier = restorationIdentifier1;\n      this.location = Turbolinks.Location.wrap(location);\n      return this.history.replace(this.location, this.restorationIdentifier);\n    };\n\n    Controller.prototype.historyPoppedToLocationWithRestorationIdentifier = function(location, restorationIdentifier1) {\n      var restorationData;\n      this.restorationIdentifier = restorationIdentifier1;\n      if (this.enabled) {\n        restorationData = this.getRestorationDataForIdentifier(this.restorationIdentifier);\n        this.startVisit(location, "restore", {\n          restorationIdentifier: this.restorationIdentifier,\n          restorationData: restorationData,\n          historyChanged: true\n        });\n        return this.location = Turbolinks.Location.wrap(location);\n      } else {\n        return this.adapter.pageInvalidated();\n      }\n    };\n\n    Controller.prototype.getCachedSnapshotForLocation = function(location) {\n      var ref;\n      return (ref = this.cache.get(location)) != null ? ref.clone() : void 0;\n    };\n\n    Controller.prototype.shouldCacheSnapshot = function() {\n      return this.view.getSnapshot().isCacheable();\n    };\n\n    Controller.prototype.cacheSnapshot = function() {\n      var location, snapshot;\n      if (this.shouldCacheSnapshot()) {\n        this.notifyApplicationBeforeCachingSnapshot();\n        snapshot = this.view.getSnapshot();\n        location = this.lastRenderedLocation;\n        return Turbolinks.defer((function(_this) {\n          return function() {\n            return _this.cache.put(location, snapshot.clone());\n          };\n        })(this));\n      }\n    };\n\n    Controller.prototype.scrollToAnchor = function(anchor) {\n      var element;\n      if (element = this.view.getElementForAnchor(anchor)) {\n        return this.scrollToElement(element);\n      } else {\n        return this.scrollToPosition({\n          x: 0,\n          y: 0\n        });\n      }\n    };\n\n    Controller.prototype.scrollToElement = function(element) {\n      return this.scrollManager.scrollToElement(element);\n    };\n\n    Controller.prototype.scrollToPosition = function(position) {\n      return this.scrollManager.scrollToPosition(position);\n    };\n\n    Controller.prototype.scrollPositionChanged = function(scrollPosition) {\n      var restorationData;\n      restorationData = this.getCurrentRestorationData();\n      return restorationData.scrollPosition = scrollPosition;\n    };\n\n    Controller.prototype.render = function(options, callback) {\n      return this.view.render(options, callback);\n    };\n\n    Controller.prototype.viewInvalidated = function() {\n      return this.adapter.pageInvalidated();\n    };\n\n    Controller.prototype.viewWillRender = function(newBody) {\n      return this.notifyApplicationBeforeRender(newBody);\n    };\n\n    Controller.prototype.viewRendered = function() {\n      this.lastRenderedLocation = this.currentVisit.location;\n      return this.notifyApplicationAfterRender();\n    };\n\n    Controller.prototype.pageLoaded = function() {\n      this.lastRenderedLocation = this.location;\n      return this.notifyApplicationAfterPageLoad();\n    };\n\n    Controller.prototype.clickCaptured = function() {\n      removeEventListener("click", this.clickBubbled, false);\n      return addEventListener("click", this.clickBubbled, false);\n    };\n\n    Controller.prototype.clickBubbled = function(event) {\n      var action, link, location;\n      if (this.enabled && this.clickEventIsSignificant(event)) {\n        if (link = this.getVisitableLinkForNode(event.target)) {\n          if (location = this.getVisitableLocationForLink(link)) {\n            if (this.applicationAllowsFollowingLinkToLocation(link, location)) {\n              event.preventDefault();\n              action = this.getActionForLink(link);\n              return this.visit(location, {\n                action: action\n              });\n            }\n          }\n        }\n      }\n    };\n\n    Controller.prototype.applicationAllowsFollowingLinkToLocation = function(link, location) {\n      var event;\n      event = this.notifyApplicationAfterClickingLinkToLocation(link, location);\n      return !event.defaultPrevented;\n    };\n\n    Controller.prototype.applicationAllowsVisitingLocation = function(location) {\n      var event;\n      event = this.notifyApplicationBeforeVisitingLocation(location);\n      return !event.defaultPrevented;\n    };\n\n    Controller.prototype.notifyApplicationAfterClickingLinkToLocation = function(link, location) {\n      return Turbolinks.dispatch("turbolinks:click", {\n        target: link,\n        data: {\n          url: location.absoluteURL\n        },\n        cancelable: true\n      });\n    };\n\n    Controller.prototype.notifyApplicationBeforeVisitingLocation = function(location) {\n      return Turbolinks.dispatch("turbolinks:before-visit", {\n        data: {\n          url: location.absoluteURL\n        },\n        cancelable: true\n      });\n    };\n\n    Controller.prototype.notifyApplicationAfterVisitingLocation = function(location) {\n      return Turbolinks.dispatch("turbolinks:visit", {\n        data: {\n          url: location.absoluteURL\n        }\n      });\n    };\n\n    Controller.prototype.notifyApplicationBeforeCachingSnapshot = function() {\n      return Turbolinks.dispatch("turbolinks:before-cache");\n    };\n\n    Controller.prototype.notifyApplicationBeforeRender = function(newBody) {\n      return Turbolinks.dispatch("turbolinks:before-render", {\n        data: {\n          newBody: newBody\n        }\n      });\n    };\n\n    Controller.prototype.notifyApplicationAfterRender = function() {\n      return Turbolinks.dispatch("turbolinks:render");\n    };\n\n    Controller.prototype.notifyApplicationAfterPageLoad = function(timing) {\n      if (timing == null) {\n        timing = {};\n      }\n      return Turbolinks.dispatch("turbolinks:load", {\n        data: {\n          url: this.location.absoluteURL,\n          timing: timing\n        }\n      });\n    };\n\n    Controller.prototype.startVisit = function(location, action, properties) {\n      var ref;\n      if ((ref = this.currentVisit) != null) {\n        ref.cancel();\n      }\n      this.currentVisit = this.createVisit(location, action, properties);\n      this.currentVisit.start();\n      return this.notifyApplicationAfterVisitingLocation(location);\n    };\n\n    Controller.prototype.createVisit = function(location, action, arg) {\n      var historyChanged, ref, restorationData, restorationIdentifier, visit;\n      ref = arg != null ? arg : {}, restorationIdentifier = ref.restorationIdentifier, restorationData = ref.restorationData, historyChanged = ref.historyChanged;\n      visit = new Turbolinks.Visit(this, location, action);\n      visit.restorationIdentifier = restorationIdentifier != null ? restorationIdentifier : Turbolinks.uuid();\n      visit.restorationData = Turbolinks.copyObject(restorationData);\n      visit.historyChanged = historyChanged;\n      visit.referrer = this.location;\n      return visit;\n    };\n\n    Controller.prototype.visitCompleted = function(visit) {\n      return this.notifyApplicationAfterPageLoad(visit.getTimingMetrics());\n    };\n\n    Controller.prototype.clickEventIsSignificant = function(event) {\n      return !(event.defaultPrevented || event.target.isContentEditable || event.which > 1 || event.altKey || event.ctrlKey || event.metaKey || event.shiftKey);\n    };\n\n    Controller.prototype.getVisitableLinkForNode = function(node) {\n      if (this.nodeIsVisitable(node)) {\n        return Turbolinks.closest(node, "a[href]:not([target]):not([download])");\n      }\n    };\n\n    Controller.prototype.getVisitableLocationForLink = function(link) {\n      var location;\n      location = new Turbolinks.Location(link.getAttribute("href"));\n      if (this.locationIsVisitable(location)) {\n        return location;\n      }\n    };\n\n    Controller.prototype.getActionForLink = function(link) {\n      var ref;\n      return (ref = link.getAttribute("data-turbolinks-action")) != null ? ref : "advance";\n    };\n\n    Controller.prototype.nodeIsVisitable = function(node) {\n      var container;\n      if (container = Turbolinks.closest(node, "[data-turbolinks]")) {\n        return container.getAttribute("data-turbolinks") !== "false";\n      } else {\n        return true;\n      }\n    };\n\n    Controller.prototype.locationIsVisitable = function(location) {\n      return location.isPrefixedBy(this.view.getRootLocation()) && location.isHTML();\n    };\n\n    Controller.prototype.getCurrentRestorationData = function() {\n      return this.getRestorationDataForIdentifier(this.restorationIdentifier);\n    };\n\n    Controller.prototype.getRestorationDataForIdentifier = function(identifier) {\n      var base;\n      return (base = this.restorationData)[identifier] != null ? base[identifier] : base[identifier] = {};\n    };\n\n    return Controller;\n\n  })();\n\n}).call(this);\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./ */ "./src/turbolinks/index.js")))\n\n//# sourceURL=webpack://Turbolinks/./src/turbolinks/controller.js?')},"./src/turbolinks/error_renderer.js":function(module,exports,__webpack_require__){eval('/* WEBPACK VAR INJECTION */(function(Turbolinks) {// Generated by CoffeeScript 1.12.8\n(function() {\n  var extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n    hasProp = {}.hasOwnProperty;\n\n  __webpack_require__(/*! ./renderer */ "./src/turbolinks/renderer.js");\n\n  Turbolinks.ErrorRenderer = (function(superClass) {\n    extend(ErrorRenderer, superClass);\n\n    function ErrorRenderer(html) {\n      var htmlElement;\n      htmlElement = document.createElement("html");\n      htmlElement.innerHTML = html;\n      this.newHead = htmlElement.querySelector("head");\n      this.newBody = htmlElement.querySelector("body");\n    }\n\n    ErrorRenderer.prototype.render = function(callback) {\n      return this.renderView((function(_this) {\n        return function() {\n          _this.replaceHeadAndBody();\n          _this.activateBodyScriptElements();\n          return callback();\n        };\n      })(this));\n    };\n\n    ErrorRenderer.prototype.replaceHeadAndBody = function() {\n      var body, head;\n      head = document.head, body = document.body;\n      head.parentNode.replaceChild(this.newHead, head);\n      return body.parentNode.replaceChild(this.newBody, body);\n    };\n\n    ErrorRenderer.prototype.activateBodyScriptElements = function() {\n      var element, i, len, ref, replaceableElement, results;\n      ref = this.getScriptElements();\n      results = [];\n      for (i = 0, len = ref.length; i < len; i++) {\n        replaceableElement = ref[i];\n        element = this.createScriptElement(replaceableElement);\n        results.push(replaceableElement.parentNode.replaceChild(element, replaceableElement));\n      }\n      return results;\n    };\n\n    ErrorRenderer.prototype.getScriptElements = function() {\n      return document.documentElement.querySelectorAll("script");\n    };\n\n    return ErrorRenderer;\n\n  })(Turbolinks.Renderer);\n\n}).call(this);\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./ */ "./src/turbolinks/index.js")))\n\n//# sourceURL=webpack://Turbolinks/./src/turbolinks/error_renderer.js?')},"./src/turbolinks/head_details.js":function(module,exports,__webpack_require__){eval('/* WEBPACK VAR INJECTION */(function(Turbolinks) {// Generated by CoffeeScript 1.12.8\n(function() {\n  Turbolinks.HeadDetails = (function() {\n    var elementIsMetaElementWithName, elementIsScript, elementIsStylesheet, elementIsTracked, elementType;\n\n    HeadDetails.fromHeadElement = function(headElement) {\n      var ref;\n      return new this((ref = headElement != null ? headElement.childNodes : void 0) != null ? ref : []);\n    };\n\n    function HeadDetails(childNodes) {\n      var base, data, i, key, len, node;\n      this.elements = {};\n      for (i = 0, len = childNodes.length; i < len; i++) {\n        node = childNodes[i];\n        if (!(node.nodeType === Node.ELEMENT_NODE)) {\n          continue;\n        }\n        key = node.outerHTML;\n        data = (base = this.elements)[key] != null ? base[key] : base[key] = {\n          type: elementType(node),\n          tracked: elementIsTracked(node),\n          elements: []\n        };\n        data.elements.push(node);\n      }\n    }\n\n    HeadDetails.prototype.hasElementWithKey = function(key) {\n      return key in this.elements;\n    };\n\n    HeadDetails.prototype.getTrackedElementSignature = function() {\n      var key, tracked;\n      return ((function() {\n        var ref, results;\n        ref = this.elements;\n        results = [];\n        for (key in ref) {\n          tracked = ref[key].tracked;\n          if (tracked) {\n            results.push(key);\n          }\n        }\n        return results;\n      }).call(this)).join("");\n    };\n\n    HeadDetails.prototype.getScriptElementsNotInDetails = function(headDetails) {\n      return this.getElementsMatchingTypeNotInDetails("script", headDetails);\n    };\n\n    HeadDetails.prototype.getStylesheetElementsNotInDetails = function(headDetails) {\n      return this.getElementsMatchingTypeNotInDetails("stylesheet", headDetails);\n    };\n\n    HeadDetails.prototype.getElementsMatchingTypeNotInDetails = function(matchedType, headDetails) {\n      var elements, key, ref, ref1, results, type;\n      ref = this.elements;\n      results = [];\n      for (key in ref) {\n        ref1 = ref[key], type = ref1.type, elements = ref1.elements;\n        if (type === matchedType && !headDetails.hasElementWithKey(key)) {\n          results.push(elements[0]);\n        }\n      }\n      return results;\n    };\n\n    HeadDetails.prototype.getProvisionalElements = function() {\n      var elements, key, provisionalElements, ref, ref1, tracked, type;\n      provisionalElements = [];\n      ref = this.elements;\n      for (key in ref) {\n        ref1 = ref[key], type = ref1.type, tracked = ref1.tracked, elements = ref1.elements;\n        if ((type == null) && !tracked) {\n          provisionalElements.push.apply(provisionalElements, elements);\n        } else if (elements.length > 1) {\n          provisionalElements.push.apply(provisionalElements, elements.slice(1));\n        }\n      }\n      return provisionalElements;\n    };\n\n    HeadDetails.prototype.getMetaValue = function(name) {\n      var ref;\n      return (ref = this.findMetaElementByName(name)) != null ? ref.getAttribute("content") : void 0;\n    };\n\n    HeadDetails.prototype.findMetaElementByName = function(name) {\n      var element, elements, key, ref;\n      element = void 0;\n      ref = this.elements;\n      for (key in ref) {\n        elements = ref[key].elements;\n        if (elementIsMetaElementWithName(elements[0], name)) {\n          element = elements[0];\n        }\n      }\n      return element;\n    };\n\n    elementType = function(element) {\n      if (elementIsScript(element)) {\n        return "script";\n      } else if (elementIsStylesheet(element)) {\n        return "stylesheet";\n      }\n    };\n\n    elementIsTracked = function(element) {\n      return element.getAttribute("data-turbolinks-track") === "reload";\n    };\n\n    elementIsScript = function(element) {\n      var tagName;\n      tagName = element.tagName.toLowerCase();\n      return tagName === "script";\n    };\n\n    elementIsStylesheet = function(element) {\n      var tagName;\n      tagName = element.tagName.toLowerCase();\n      return tagName === "style" || (tagName === "link" && element.getAttribute("rel") === "stylesheet");\n    };\n\n    elementIsMetaElementWithName = function(element, name) {\n      var tagName;\n      tagName = element.tagName.toLowerCase();\n      return tagName === "meta" && element.getAttribute("name") === name;\n    };\n\n    return HeadDetails;\n\n  })();\n\n}).call(this);\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./ */ "./src/turbolinks/index.js")))\n\n//# sourceURL=webpack://Turbolinks/./src/turbolinks/head_details.js?')},"./src/turbolinks/helpers.js":function(module,exports,__webpack_require__){eval('/* WEBPACK VAR INJECTION */(function(Turbolinks) {// Generated by CoffeeScript 1.12.8\n(function() {\n  var closest, match, preventDefaultSupported,\n    slice = [].slice;\n\n  Turbolinks.copyObject = function(object) {\n    var key, result, value;\n    result = {};\n    for (key in object) {\n      value = object[key];\n      result[key] = value;\n    }\n    return result;\n  };\n\n  Turbolinks.closest = function(element, selector) {\n    return closest.call(element, selector);\n  };\n\n  closest = (function() {\n    var html, ref;\n    html = document.documentElement;\n    return (ref = html.closest) != null ? ref : function(selector) {\n      var node;\n      node = this;\n      while (node) {\n        if (node.nodeType === Node.ELEMENT_NODE && match.call(node, selector)) {\n          return node;\n        }\n        node = node.parentNode;\n      }\n    };\n  })();\n\n  Turbolinks.defer = function(callback) {\n    return setTimeout(callback, 1);\n  };\n\n  Turbolinks.throttle = function(fn) {\n    var request;\n    request = null;\n    return function() {\n      var args;\n      args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n      return request != null ? request : request = requestAnimationFrame((function(_this) {\n        return function() {\n          request = null;\n          return fn.apply(_this, args);\n        };\n      })(this));\n    };\n  };\n\n  Turbolinks.dispatch = function(eventName, arg) {\n    var cancelable, data, event, preventDefault, ref, target;\n    ref = arg != null ? arg : {}, target = ref.target, cancelable = ref.cancelable, data = ref.data;\n    event = document.createEvent("Events");\n    event.initEvent(eventName, true, cancelable === true);\n    event.data = data != null ? data : {};\n    if (event.cancelable && !preventDefaultSupported) {\n      preventDefault = event.preventDefault;\n      event.preventDefault = function() {\n        if (!this.defaultPrevented) {\n          Object.defineProperty(this, "defaultPrevented", {\n            get: function() {\n              return true;\n            }\n          });\n        }\n        return preventDefault.call(this);\n      };\n    }\n    (target != null ? target : document).dispatchEvent(event);\n    return event;\n  };\n\n  preventDefaultSupported = (function() {\n    var event;\n    event = document.createEvent("Events");\n    event.initEvent("test", true, true);\n    event.preventDefault();\n    return event.defaultPrevented;\n  })();\n\n  Turbolinks.match = function(element, selector) {\n    return match.call(element, selector);\n  };\n\n  match = (function() {\n    var html, ref, ref1, ref2;\n    html = document.documentElement;\n    return (ref = (ref1 = (ref2 = html.matchesSelector) != null ? ref2 : html.webkitMatchesSelector) != null ? ref1 : html.msMatchesSelector) != null ? ref : html.mozMatchesSelector;\n  })();\n\n  Turbolinks.uuid = function() {\n    var i, j, result;\n    result = "";\n    for (i = j = 1; j <= 36; i = ++j) {\n      if (i === 9 || i === 14 || i === 19 || i === 24) {\n        result += "-";\n      } else if (i === 15) {\n        result += "4";\n      } else if (i === 20) {\n        result += (Math.floor(Math.random() * 4) + 8).toString(16);\n      } else {\n        result += Math.floor(Math.random() * 15).toString(16);\n      }\n    }\n    return result;\n  };\n\n}).call(this);\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./ */ "./src/turbolinks/index.js")))\n\n//# sourceURL=webpack://Turbolinks/./src/turbolinks/helpers.js?')},"./src/turbolinks/history.js":function(module,exports,__webpack_require__){eval('/* WEBPACK VAR INJECTION */(function(Turbolinks) {// Generated by CoffeeScript 1.12.8\n(function() {\n  var bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };\n\n  Turbolinks.History = (function() {\n    function History(delegate) {\n      this.delegate = delegate;\n      this.onPageLoad = bind(this.onPageLoad, this);\n      this.onPopState = bind(this.onPopState, this);\n    }\n\n    History.prototype.start = function() {\n      if (!this.started) {\n        addEventListener("popstate", this.onPopState, false);\n        addEventListener("load", this.onPageLoad, false);\n        return this.started = true;\n      }\n    };\n\n    History.prototype.stop = function() {\n      if (this.started) {\n        removeEventListener("popstate", this.onPopState, false);\n        removeEventListener("load", this.onPageLoad, false);\n        return this.started = false;\n      }\n    };\n\n    History.prototype.push = function(location, restorationIdentifier) {\n      location = Turbolinks.Location.wrap(location);\n      return this.update("push", location, restorationIdentifier);\n    };\n\n    History.prototype.replace = function(location, restorationIdentifier) {\n      location = Turbolinks.Location.wrap(location);\n      return this.update("replace", location, restorationIdentifier);\n    };\n\n    History.prototype.onPopState = function(event) {\n      var location, ref, restorationIdentifier, turbolinks;\n      if (this.shouldHandlePopState()) {\n        if (turbolinks = (ref = event.state) != null ? ref.turbolinks : void 0) {\n          location = Turbolinks.Location.wrap(window.location);\n          restorationIdentifier = turbolinks.restorationIdentifier;\n          return this.delegate.historyPoppedToLocationWithRestorationIdentifier(location, restorationIdentifier);\n        }\n      }\n    };\n\n    History.prototype.onPageLoad = function(event) {\n      return Turbolinks.defer((function(_this) {\n        return function() {\n          return _this.pageLoaded = true;\n        };\n      })(this));\n    };\n\n    History.prototype.shouldHandlePopState = function() {\n      return this.pageIsLoaded();\n    };\n\n    History.prototype.pageIsLoaded = function() {\n      return this.pageLoaded || document.readyState === "complete";\n    };\n\n    History.prototype.update = function(method, location, restorationIdentifier) {\n      var state;\n      state = {\n        turbolinks: {\n          restorationIdentifier: restorationIdentifier\n        }\n      };\n      return history[method + "State"](state, null, location);\n    };\n\n    return History;\n\n  })();\n\n}).call(this);\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./ */ "./src/turbolinks/index.js")))\n\n//# sourceURL=webpack://Turbolinks/./src/turbolinks/history.js?')},"./src/turbolinks/http_request.js":function(module,exports,__webpack_require__){eval('/* WEBPACK VAR INJECTION */(function(Turbolinks) {// Generated by CoffeeScript 1.12.8\n(function() {\n  var bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };\n\n  Turbolinks.HttpRequest = (function() {\n    HttpRequest.NETWORK_FAILURE = 0;\n\n    HttpRequest.TIMEOUT_FAILURE = -1;\n\n    HttpRequest.timeout = 60;\n\n    function HttpRequest(delegate, location, referrer) {\n      this.delegate = delegate;\n      this.requestCanceled = bind(this.requestCanceled, this);\n      this.requestTimedOut = bind(this.requestTimedOut, this);\n      this.requestFailed = bind(this.requestFailed, this);\n      this.requestLoaded = bind(this.requestLoaded, this);\n      this.requestProgressed = bind(this.requestProgressed, this);\n      this.url = Turbolinks.Location.wrap(location).requestURL;\n      this.referrer = Turbolinks.Location.wrap(referrer).absoluteURL;\n      this.createXHR();\n    }\n\n    HttpRequest.prototype.send = function() {\n      var base;\n      if (this.xhr && !this.sent) {\n        this.notifyApplicationBeforeRequestStart();\n        this.setProgress(0);\n        this.xhr.send();\n        this.sent = true;\n        return typeof (base = this.delegate).requestStarted === "function" ? base.requestStarted() : void 0;\n      }\n    };\n\n    HttpRequest.prototype.cancel = function() {\n      if (this.xhr && this.sent) {\n        return this.xhr.abort();\n      }\n    };\n\n    HttpRequest.prototype.requestProgressed = function(event) {\n      if (event.lengthComputable) {\n        return this.setProgress(event.loaded / event.total);\n      }\n    };\n\n    HttpRequest.prototype.requestLoaded = function() {\n      return this.endRequest((function(_this) {\n        return function() {\n          var ref;\n          if ((200 <= (ref = _this.xhr.status) && ref < 300)) {\n            return _this.delegate.requestCompletedWithResponse(_this.xhr.responseText, _this.xhr.getResponseHeader("Turbolinks-Location"));\n          } else {\n            _this.failed = true;\n            return _this.delegate.requestFailedWithStatusCode(_this.xhr.status, _this.xhr.responseText);\n          }\n        };\n      })(this));\n    };\n\n    HttpRequest.prototype.requestFailed = function() {\n      return this.endRequest((function(_this) {\n        return function() {\n          _this.failed = true;\n          return _this.delegate.requestFailedWithStatusCode(_this.constructor.NETWORK_FAILURE);\n        };\n      })(this));\n    };\n\n    HttpRequest.prototype.requestTimedOut = function() {\n      return this.endRequest((function(_this) {\n        return function() {\n          _this.failed = true;\n          return _this.delegate.requestFailedWithStatusCode(_this.constructor.TIMEOUT_FAILURE);\n        };\n      })(this));\n    };\n\n    HttpRequest.prototype.requestCanceled = function() {\n      return this.endRequest();\n    };\n\n    HttpRequest.prototype.notifyApplicationBeforeRequestStart = function() {\n      return Turbolinks.dispatch("turbolinks:request-start", {\n        data: {\n          url: this.url,\n          xhr: this.xhr\n        }\n      });\n    };\n\n    HttpRequest.prototype.notifyApplicationAfterRequestEnd = function() {\n      return Turbolinks.dispatch("turbolinks:request-end", {\n        data: {\n          url: this.url,\n          xhr: this.xhr\n        }\n      });\n    };\n\n    HttpRequest.prototype.createXHR = function() {\n      this.xhr = new XMLHttpRequest;\n      this.xhr.open("GET", this.url, true);\n      this.xhr.timeout = this.constructor.timeout * 1000;\n      this.xhr.setRequestHeader("Accept", "text/html, application/xhtml+xml");\n      this.xhr.setRequestHeader("Turbolinks-Referrer", this.referrer);\n      this.xhr.onprogress = this.requestProgressed;\n      this.xhr.onload = this.requestLoaded;\n      this.xhr.onerror = this.requestFailed;\n      this.xhr.ontimeout = this.requestTimedOut;\n      return this.xhr.onabort = this.requestCanceled;\n    };\n\n    HttpRequest.prototype.endRequest = function(callback) {\n      if (this.xhr) {\n        this.notifyApplicationAfterRequestEnd();\n        if (callback != null) {\n          callback.call(this);\n        }\n        return this.destroy();\n      }\n    };\n\n    HttpRequest.prototype.setProgress = function(progress) {\n      var base;\n      this.progress = progress;\n      return typeof (base = this.delegate).requestProgressed === "function" ? base.requestProgressed(this.progress) : void 0;\n    };\n\n    HttpRequest.prototype.destroy = function() {\n      var base;\n      this.setProgress(1);\n      if (typeof (base = this.delegate).requestFinished === "function") {\n        base.requestFinished();\n      }\n      this.delegate = null;\n      return this.xhr = null;\n    };\n\n    return HttpRequest;\n\n  })();\n\n}).call(this);\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./ */ "./src/turbolinks/index.js")))\n\n//# sourceURL=webpack://Turbolinks/./src/turbolinks/http_request.js?')},"./src/turbolinks/index.js":function(module,exports,__webpack_require__){eval('/* WEBPACK VAR INJECTION */(function(Turbolinks) {// Generated by CoffeeScript 1.12.8\n(function() {\n  this.Turbolinks = {\n    supported: (function() {\n      return (window.history.pushState != null) && (window.requestAnimationFrame != null) && (window.addEventListener != null);\n    })(),\n    visit: function(location, options) {\n      return Turbolinks.controller.visit(location, options);\n    },\n    clearCache: function() {\n      return Turbolinks.controller.clearCache();\n    },\n    setProgressBarDelay: function(delay) {\n      return Turbolinks.controller.setProgressBarDelay(delay);\n    }\n  };\n\n  module.exports = this.Turbolinks;\n\n  window.Turbolinks = this.Turbolinks;\n\n  __webpack_require__(/*! ./helpers */ "./src/turbolinks/helpers.js");\n\n  __webpack_require__(/*! ./controller */ "./src/turbolinks/controller.js");\n\n  __webpack_require__(/*! ./script_warning */ "./src/turbolinks/script_warning.js");\n\n  __webpack_require__(/*! ./start */ "./src/turbolinks/start.js");\n\n}).call(this);\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./ */ "./src/turbolinks/index.js")))\n\n//# sourceURL=webpack://Turbolinks/./src/turbolinks/index.js?')},"./src/turbolinks/location.js":function(module,exports,__webpack_require__){eval('/* WEBPACK VAR INJECTION */(function(Turbolinks) {// Generated by CoffeeScript 1.12.8\n(function() {\n  Turbolinks.Location = (function() {\n    var addTrailingSlash, getPrefixURL, stringEndsWith, stringStartsWith;\n\n    Location.wrap = function(value) {\n      if (value instanceof this) {\n        return value;\n      } else {\n        return new this(value);\n      }\n    };\n\n    function Location(url) {\n      var anchorLength, linkWithAnchor;\n      if (url == null) {\n        url = "";\n      }\n      linkWithAnchor = document.createElement("a");\n      linkWithAnchor.href = url.toString();\n      this.absoluteURL = linkWithAnchor.href;\n      anchorLength = linkWithAnchor.hash.length;\n      if (anchorLength < 2) {\n        this.requestURL = this.absoluteURL;\n      } else {\n        this.requestURL = this.absoluteURL.slice(0, -anchorLength);\n        this.anchor = linkWithAnchor.hash.slice(1);\n      }\n    }\n\n    Location.prototype.getOrigin = function() {\n      return this.absoluteURL.split("/", 3).join("/");\n    };\n\n    Location.prototype.getPath = function() {\n      var ref, ref1;\n      return (ref = (ref1 = this.requestURL.match(/\\/\\/[^\\/]*(\\/[^?;]*)/)) != null ? ref1[1] : void 0) != null ? ref : "/";\n    };\n\n    Location.prototype.getPathComponents = function() {\n      return this.getPath().split("/").slice(1);\n    };\n\n    Location.prototype.getLastPathComponent = function() {\n      return this.getPathComponents().slice(-1)[0];\n    };\n\n    Location.prototype.getExtension = function() {\n      var ref, ref1;\n      return (ref = (ref1 = this.getLastPathComponent().match(/\\.[^.]*$/)) != null ? ref1[0] : void 0) != null ? ref : "";\n    };\n\n    Location.prototype.isHTML = function() {\n      return this.getExtension().match(/^(?:|\\.(?:htm|html|xhtml))$/);\n    };\n\n    Location.prototype.isPrefixedBy = function(location) {\n      var prefixURL;\n      prefixURL = getPrefixURL(location);\n      return this.isEqualTo(location) || stringStartsWith(this.absoluteURL, prefixURL);\n    };\n\n    Location.prototype.isEqualTo = function(location) {\n      return this.absoluteURL === (location != null ? location.absoluteURL : void 0);\n    };\n\n    Location.prototype.toCacheKey = function() {\n      return this.requestURL;\n    };\n\n    Location.prototype.toJSON = function() {\n      return this.absoluteURL;\n    };\n\n    Location.prototype.toString = function() {\n      return this.absoluteURL;\n    };\n\n    Location.prototype.valueOf = function() {\n      return this.absoluteURL;\n    };\n\n    getPrefixURL = function(location) {\n      return addTrailingSlash(location.getOrigin() + location.getPath());\n    };\n\n    addTrailingSlash = function(url) {\n      if (stringEndsWith(url, "/")) {\n        return url;\n      } else {\n        return url + "/";\n      }\n    };\n\n    stringStartsWith = function(string, prefix) {\n      return string.slice(0, prefix.length) === prefix;\n    };\n\n    stringEndsWith = function(string, suffix) {\n      return string.slice(-suffix.length) === suffix;\n    };\n\n    return Location;\n\n  })();\n\n}).call(this);\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./ */ "./src/turbolinks/index.js")))\n\n//# sourceURL=webpack://Turbolinks/./src/turbolinks/location.js?')},"./src/turbolinks/progress_bar.js":function(module,exports,__webpack_require__){eval('/* WEBPACK VAR INJECTION */(function(Turbolinks) {// Generated by CoffeeScript 1.12.8\n(function() {\n  var bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };\n\n  Turbolinks.ProgressBar = (function() {\n    var ANIMATION_DURATION;\n\n    ANIMATION_DURATION = 300;\n\n    ProgressBar.defaultCSS = ".turbolinks-progress-bar {\\n  position: fixed;\\n  display: block;\\n  top: 0;\\n  left: 0;\\n  height: 3px;\\n  background: #0076ff;\\n  z-index: 9999;\\n  transition: width " + ANIMATION_DURATION + "ms ease-out, opacity " + (ANIMATION_DURATION / 2) + "ms " + (ANIMATION_DURATION / 2) + "ms ease-in;\\n  transform: translate3d(0, 0, 0);\\n}";\n\n    function ProgressBar() {\n      this.trickle = bind(this.trickle, this);\n      this.stylesheetElement = this.createStylesheetElement();\n      this.progressElement = this.createProgressElement();\n    }\n\n    ProgressBar.prototype.show = function() {\n      if (!this.visible) {\n        this.visible = true;\n        this.installStylesheetElement();\n        this.installProgressElement();\n        return this.startTrickling();\n      }\n    };\n\n    ProgressBar.prototype.hide = function() {\n      if (this.visible && !this.hiding) {\n        this.hiding = true;\n        return this.fadeProgressElement((function(_this) {\n          return function() {\n            _this.uninstallProgressElement();\n            _this.stopTrickling();\n            _this.visible = false;\n            return _this.hiding = false;\n          };\n        })(this));\n      }\n    };\n\n    ProgressBar.prototype.setValue = function(value) {\n      this.value = value;\n      return this.refresh();\n    };\n\n    ProgressBar.prototype.installStylesheetElement = function() {\n      return document.head.insertBefore(this.stylesheetElement, document.head.firstChild);\n    };\n\n    ProgressBar.prototype.installProgressElement = function() {\n      this.progressElement.style.width = 0;\n      this.progressElement.style.opacity = 1;\n      document.documentElement.insertBefore(this.progressElement, document.body);\n      return this.refresh();\n    };\n\n    ProgressBar.prototype.fadeProgressElement = function(callback) {\n      this.progressElement.style.opacity = 0;\n      return setTimeout(callback, ANIMATION_DURATION * 1.5);\n    };\n\n    ProgressBar.prototype.uninstallProgressElement = function() {\n      if (this.progressElement.parentNode) {\n        return document.documentElement.removeChild(this.progressElement);\n      }\n    };\n\n    ProgressBar.prototype.startTrickling = function() {\n      return this.trickleInterval != null ? this.trickleInterval : this.trickleInterval = setInterval(this.trickle, ANIMATION_DURATION);\n    };\n\n    ProgressBar.prototype.stopTrickling = function() {\n      clearInterval(this.trickleInterval);\n      return this.trickleInterval = null;\n    };\n\n    ProgressBar.prototype.trickle = function() {\n      return this.setValue(this.value + Math.random() / 100);\n    };\n\n    ProgressBar.prototype.refresh = function() {\n      return requestAnimationFrame((function(_this) {\n        return function() {\n          return _this.progressElement.style.width = (10 + (_this.value * 90)) + "%";\n        };\n      })(this));\n    };\n\n    ProgressBar.prototype.createStylesheetElement = function() {\n      var element;\n      element = document.createElement("style");\n      element.type = "text/css";\n      element.textContent = this.constructor.defaultCSS;\n      return element;\n    };\n\n    ProgressBar.prototype.createProgressElement = function() {\n      var element;\n      element = document.createElement("div");\n      element.className = "turbolinks-progress-bar";\n      return element;\n    };\n\n    return ProgressBar;\n\n  })();\n\n}).call(this);\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./ */ "./src/turbolinks/index.js")))\n\n//# sourceURL=webpack://Turbolinks/./src/turbolinks/progress_bar.js?')},"./src/turbolinks/renderer.js":function(module,exports,__webpack_require__){eval('/* WEBPACK VAR INJECTION */(function(Turbolinks) {// Generated by CoffeeScript 1.12.8\n(function() {\n  var slice = [].slice;\n\n  Turbolinks.Renderer = (function() {\n    var copyElementAttributes;\n\n    function Renderer() {}\n\n    Renderer.render = function() {\n      var args, callback, delegate, renderer;\n      delegate = arguments[0], callback = arguments[1], args = 3 <= arguments.length ? slice.call(arguments, 2) : [];\n      renderer = (function(func, args, ctor) {\n        ctor.prototype = func.prototype;\n        var child = new ctor, result = func.apply(child, args);\n        return Object(result) === result ? result : child;\n      })(this, args, function(){});\n      renderer.delegate = delegate;\n      renderer.render(callback);\n      return renderer;\n    };\n\n    Renderer.prototype.renderView = function(callback) {\n      this.delegate.viewWillRender(this.newBody);\n      callback();\n      return this.delegate.viewRendered(this.newBody);\n    };\n\n    Renderer.prototype.invalidateView = function() {\n      return this.delegate.viewInvalidated();\n    };\n\n    Renderer.prototype.createScriptElement = function(element) {\n      var createdScriptElement;\n      if (element.getAttribute("data-turbolinks-eval") === "false") {\n        return element;\n      } else {\n        createdScriptElement = document.createElement("script");\n        createdScriptElement.textContent = element.textContent;\n        createdScriptElement.async = false;\n        copyElementAttributes(createdScriptElement, element);\n        return createdScriptElement;\n      }\n    };\n\n    copyElementAttributes = function(destinationElement, sourceElement) {\n      var i, len, name, ref, ref1, results, value;\n      ref = sourceElement.attributes;\n      results = [];\n      for (i = 0, len = ref.length; i < len; i++) {\n        ref1 = ref[i], name = ref1.name, value = ref1.value;\n        results.push(destinationElement.setAttribute(name, value));\n      }\n      return results;\n    };\n\n    return Renderer;\n\n  })();\n\n}).call(this);\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./ */ "./src/turbolinks/index.js")))\n\n//# sourceURL=webpack://Turbolinks/./src/turbolinks/renderer.js?')},"./src/turbolinks/script_warning.js":function(module,exports){eval('// Generated by CoffeeScript 1.12.8\n(function() {\n  (function() {\n    var element, script;\n    if (!(element = script = document.currentScript)) {\n      return;\n    }\n    if (script.hasAttribute("data-turbolinks-suppress-warning")) {\n      return;\n    }\n    while (element = element.parentNode) {\n      if (element === document.body) {\n        return console.warn("You are loading Turbolinks from a <script> element inside the <body> element. This is probably not what you meant to do!\\n\\nLoad your application’s JavaScript bundle inside the <head> element instead. <script> elements in <body> are evaluated with each page change.\\n\\nFor more information, see: https://github.com/turbolinks/turbolinks#working-with-script-elements\\n\\n——\\nSuppress this warning by adding a `data-turbolinks-suppress-warning` attribute to: %s", script.outerHTML);\n      }\n    }\n  })();\n\n}).call(this);\n\n\n//# sourceURL=webpack://Turbolinks/./src/turbolinks/script_warning.js?')},"./src/turbolinks/scroll_manager.js":function(module,exports,__webpack_require__){eval('/* WEBPACK VAR INJECTION */(function(Turbolinks) {// Generated by CoffeeScript 1.12.8\n(function() {\n  var bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };\n\n  Turbolinks.ScrollManager = (function() {\n    function ScrollManager(delegate) {\n      this.delegate = delegate;\n      this.onScroll = bind(this.onScroll, this);\n      this.onScroll = Turbolinks.throttle(this.onScroll);\n    }\n\n    ScrollManager.prototype.start = function() {\n      if (!this.started) {\n        addEventListener("scroll", this.onScroll, false);\n        this.onScroll();\n        return this.started = true;\n      }\n    };\n\n    ScrollManager.prototype.stop = function() {\n      if (this.started) {\n        removeEventListener("scroll", this.onScroll, false);\n        return this.started = false;\n      }\n    };\n\n    ScrollManager.prototype.scrollToElement = function(element) {\n      return element.scrollIntoView();\n    };\n\n    ScrollManager.prototype.scrollToPosition = function(arg) {\n      var x, y;\n      x = arg.x, y = arg.y;\n      return window.scrollTo(x, y);\n    };\n\n    ScrollManager.prototype.onScroll = function(event) {\n      return this.updatePosition({\n        x: window.pageXOffset,\n        y: window.pageYOffset\n      });\n    };\n\n    ScrollManager.prototype.updatePosition = function(position) {\n      var ref;\n      this.position = position;\n      return (ref = this.delegate) != null ? ref.scrollPositionChanged(this.position) : void 0;\n    };\n\n    return ScrollManager;\n\n  })();\n\n}).call(this);\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./ */ "./src/turbolinks/index.js")))\n\n//# sourceURL=webpack://Turbolinks/./src/turbolinks/scroll_manager.js?')},"./src/turbolinks/snapshot.js":function(module,exports,__webpack_require__){eval('/* WEBPACK VAR INJECTION */(function(Turbolinks) {// Generated by CoffeeScript 1.12.8\n(function() {\n  __webpack_require__(/*! ./head_details */ "./src/turbolinks/head_details.js");\n\n  Turbolinks.Snapshot = (function() {\n    Snapshot.wrap = function(value) {\n      if (value instanceof this) {\n        return value;\n      } else if (typeof value === "string") {\n        return this.fromHTMLString(value);\n      } else {\n        return this.fromHTMLElement(value);\n      }\n    };\n\n    Snapshot.fromHTMLString = function(html) {\n      var htmlElement;\n      htmlElement = document.createElement("html");\n      htmlElement.innerHTML = html;\n      return this.fromHTMLElement(htmlElement);\n    };\n\n    Snapshot.fromHTMLElement = function(htmlElement) {\n      var bodyElement, headDetails, headElement, ref;\n      headElement = htmlElement.querySelector("head");\n      bodyElement = (ref = htmlElement.querySelector("body")) != null ? ref : document.createElement("body");\n      headDetails = Turbolinks.HeadDetails.fromHeadElement(headElement);\n      return new this(headDetails, bodyElement);\n    };\n\n    function Snapshot(headDetails1, bodyElement1) {\n      this.headDetails = headDetails1;\n      this.bodyElement = bodyElement1;\n    }\n\n    Snapshot.prototype.clone = function() {\n      return new this.constructor(this.headDetails, this.bodyElement.cloneNode(true));\n    };\n\n    Snapshot.prototype.getRootLocation = function() {\n      var ref, root;\n      root = (ref = this.getSetting("root")) != null ? ref : "/";\n      return new Turbolinks.Location(root);\n    };\n\n    Snapshot.prototype.getCacheControlValue = function() {\n      return this.getSetting("cache-control");\n    };\n\n    Snapshot.prototype.getElementForAnchor = function(anchor) {\n      try {\n        return this.bodyElement.querySelector("[id=\'" + anchor + "\'], a[name=\'" + anchor + "\']");\n      } catch (error) {}\n    };\n\n    Snapshot.prototype.getPermanentElements = function() {\n      return this.bodyElement.querySelectorAll("[id][data-turbolinks-permanent]");\n    };\n\n    Snapshot.prototype.getPermanentElementById = function(id) {\n      return this.bodyElement.querySelector("#" + id + "[data-turbolinks-permanent]");\n    };\n\n    Snapshot.prototype.getPermanentElementsPresentInSnapshot = function(snapshot) {\n      var element, i, len, ref, results;\n      ref = this.getPermanentElements();\n      results = [];\n      for (i = 0, len = ref.length; i < len; i++) {\n        element = ref[i];\n        if (snapshot.getPermanentElementById(element.id)) {\n          results.push(element);\n        }\n      }\n      return results;\n    };\n\n    Snapshot.prototype.findFirstAutofocusableElement = function() {\n      return this.bodyElement.querySelector("[autofocus]");\n    };\n\n    Snapshot.prototype.hasAnchor = function(anchor) {\n      return this.getElementForAnchor(anchor) != null;\n    };\n\n    Snapshot.prototype.isPreviewable = function() {\n      return this.getCacheControlValue() !== "no-preview";\n    };\n\n    Snapshot.prototype.isCacheable = function() {\n      return this.getCacheControlValue() !== "no-cache";\n    };\n\n    Snapshot.prototype.isVisitable = function() {\n      return this.getSetting("visit-control") !== "reload";\n    };\n\n    Snapshot.prototype.getSetting = function(name) {\n      return this.headDetails.getMetaValue("turbolinks-" + name);\n    };\n\n    return Snapshot;\n\n  })();\n\n}).call(this);\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./ */ "./src/turbolinks/index.js")))\n\n//# sourceURL=webpack://Turbolinks/./src/turbolinks/snapshot.js?')},"./src/turbolinks/snapshot_cache.js":function(module,exports,__webpack_require__){eval('/* WEBPACK VAR INJECTION */(function(Turbolinks) {// Generated by CoffeeScript 1.12.8\n(function() {\n  Turbolinks.SnapshotCache = (function() {\n    var keyForLocation;\n\n    function SnapshotCache(size) {\n      this.size = size;\n      this.keys = [];\n      this.snapshots = {};\n    }\n\n    SnapshotCache.prototype.has = function(location) {\n      var key;\n      key = keyForLocation(location);\n      return key in this.snapshots;\n    };\n\n    SnapshotCache.prototype.get = function(location) {\n      var snapshot;\n      if (!this.has(location)) {\n        return;\n      }\n      snapshot = this.read(location);\n      this.touch(location);\n      return snapshot;\n    };\n\n    SnapshotCache.prototype.put = function(location, snapshot) {\n      this.write(location, snapshot);\n      this.touch(location);\n      return snapshot;\n    };\n\n    SnapshotCache.prototype.read = function(location) {\n      var key;\n      key = keyForLocation(location);\n      return this.snapshots[key];\n    };\n\n    SnapshotCache.prototype.write = function(location, snapshot) {\n      var key;\n      key = keyForLocation(location);\n      return this.snapshots[key] = snapshot;\n    };\n\n    SnapshotCache.prototype.touch = function(location) {\n      var index, key;\n      key = keyForLocation(location);\n      index = this.keys.indexOf(key);\n      if (index > -1) {\n        this.keys.splice(index, 1);\n      }\n      this.keys.unshift(key);\n      return this.trim();\n    };\n\n    SnapshotCache.prototype.trim = function() {\n      var i, key, len, ref, results;\n      ref = this.keys.splice(this.size);\n      results = [];\n      for (i = 0, len = ref.length; i < len; i++) {\n        key = ref[i];\n        results.push(delete this.snapshots[key]);\n      }\n      return results;\n    };\n\n    keyForLocation = function(location) {\n      return Turbolinks.Location.wrap(location).toCacheKey();\n    };\n\n    return SnapshotCache;\n\n  })();\n\n}).call(this);\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./ */ "./src/turbolinks/index.js")))\n\n//# sourceURL=webpack://Turbolinks/./src/turbolinks/snapshot_cache.js?')},"./src/turbolinks/snapshot_renderer.js":function(module,exports,__webpack_require__){eval('/* WEBPACK VAR INJECTION */(function(Turbolinks) {// Generated by CoffeeScript 1.12.8\n(function() {\n  var createPlaceholderForPermanentElement, replaceElementWithElement,\n    extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n    hasProp = {}.hasOwnProperty;\n\n  __webpack_require__(/*! ./renderer */ "./src/turbolinks/renderer.js");\n\n  Turbolinks.SnapshotRenderer = (function(superClass) {\n    extend(SnapshotRenderer, superClass);\n\n    function SnapshotRenderer(currentSnapshot, newSnapshot, isPreview) {\n      this.currentSnapshot = currentSnapshot;\n      this.newSnapshot = newSnapshot;\n      this.isPreview = isPreview;\n      this.currentHeadDetails = this.currentSnapshot.headDetails;\n      this.newHeadDetails = this.newSnapshot.headDetails;\n      this.currentBody = this.currentSnapshot.bodyElement;\n      this.newBody = this.newSnapshot.bodyElement;\n    }\n\n    SnapshotRenderer.prototype.render = function(callback) {\n      if (this.shouldRender()) {\n        this.mergeHead();\n        return this.renderView((function(_this) {\n          return function() {\n            _this.replaceBody();\n            if (!_this.isPreview) {\n              _this.focusFirstAutofocusableElement();\n            }\n            return callback();\n          };\n        })(this));\n      } else {\n        return this.invalidateView();\n      }\n    };\n\n    SnapshotRenderer.prototype.mergeHead = function() {\n      this.copyNewHeadStylesheetElements();\n      this.copyNewHeadScriptElements();\n      this.removeCurrentHeadProvisionalElements();\n      return this.copyNewHeadProvisionalElements();\n    };\n\n    SnapshotRenderer.prototype.replaceBody = function() {\n      var placeholders;\n      placeholders = this.relocateCurrentBodyPermanentElements();\n      this.activateNewBodyScriptElements();\n      this.assignNewBody();\n      return this.replacePlaceholderElementsWithClonedPermanentElements(placeholders);\n    };\n\n    SnapshotRenderer.prototype.shouldRender = function() {\n      return this.newSnapshot.isVisitable() && this.trackedElementsAreIdentical();\n    };\n\n    SnapshotRenderer.prototype.trackedElementsAreIdentical = function() {\n      return this.currentHeadDetails.getTrackedElementSignature() === this.newHeadDetails.getTrackedElementSignature();\n    };\n\n    SnapshotRenderer.prototype.copyNewHeadStylesheetElements = function() {\n      var element, i, len, ref, results;\n      ref = this.getNewHeadStylesheetElements();\n      results = [];\n      for (i = 0, len = ref.length; i < len; i++) {\n        element = ref[i];\n        results.push(document.head.appendChild(element));\n      }\n      return results;\n    };\n\n    SnapshotRenderer.prototype.copyNewHeadScriptElements = function() {\n      var element, i, len, ref, results;\n      ref = this.getNewHeadScriptElements();\n      results = [];\n      for (i = 0, len = ref.length; i < len; i++) {\n        element = ref[i];\n        results.push(document.head.appendChild(this.createScriptElement(element)));\n      }\n      return results;\n    };\n\n    SnapshotRenderer.prototype.removeCurrentHeadProvisionalElements = function() {\n      var element, i, len, ref, results;\n      ref = this.getCurrentHeadProvisionalElements();\n      results = [];\n      for (i = 0, len = ref.length; i < len; i++) {\n        element = ref[i];\n        results.push(document.head.removeChild(element));\n      }\n      return results;\n    };\n\n    SnapshotRenderer.prototype.copyNewHeadProvisionalElements = function() {\n      var element, i, len, ref, results;\n      ref = this.getNewHeadProvisionalElements();\n      results = [];\n      for (i = 0, len = ref.length; i < len; i++) {\n        element = ref[i];\n        results.push(document.head.appendChild(element));\n      }\n      return results;\n    };\n\n    SnapshotRenderer.prototype.relocateCurrentBodyPermanentElements = function() {\n      var i, len, newElement, permanentElement, placeholder, ref, results;\n      ref = this.getCurrentBodyPermanentElements();\n      results = [];\n      for (i = 0, len = ref.length; i < len; i++) {\n        permanentElement = ref[i];\n        placeholder = createPlaceholderForPermanentElement(permanentElement);\n        newElement = this.newSnapshot.getPermanentElementById(permanentElement.id);\n        replaceElementWithElement(permanentElement, placeholder.element);\n        replaceElementWithElement(newElement, permanentElement);\n        results.push(placeholder);\n      }\n      return results;\n    };\n\n    SnapshotRenderer.prototype.replacePlaceholderElementsWithClonedPermanentElements = function(placeholders) {\n      var clonedElement, element, i, len, permanentElement, ref, results;\n      results = [];\n      for (i = 0, len = placeholders.length; i < len; i++) {\n        ref = placeholders[i], element = ref.element, permanentElement = ref.permanentElement;\n        clonedElement = permanentElement.cloneNode(true);\n        results.push(replaceElementWithElement(element, clonedElement));\n      }\n      return results;\n    };\n\n    SnapshotRenderer.prototype.activateNewBodyScriptElements = function() {\n      var activatedScriptElement, i, inertScriptElement, len, ref, results;\n      ref = this.getNewBodyScriptElements();\n      results = [];\n      for (i = 0, len = ref.length; i < len; i++) {\n        inertScriptElement = ref[i];\n        activatedScriptElement = this.createScriptElement(inertScriptElement);\n        results.push(replaceElementWithElement(inertScriptElement, activatedScriptElement));\n      }\n      return results;\n    };\n\n    SnapshotRenderer.prototype.assignNewBody = function() {\n      return document.body = this.newBody;\n    };\n\n    SnapshotRenderer.prototype.focusFirstAutofocusableElement = function() {\n      var ref;\n      return (ref = this.newSnapshot.findFirstAutofocusableElement()) != null ? ref.focus() : void 0;\n    };\n\n    SnapshotRenderer.prototype.getNewHeadStylesheetElements = function() {\n      return this.newHeadDetails.getStylesheetElementsNotInDetails(this.currentHeadDetails);\n    };\n\n    SnapshotRenderer.prototype.getNewHeadScriptElements = function() {\n      return this.newHeadDetails.getScriptElementsNotInDetails(this.currentHeadDetails);\n    };\n\n    SnapshotRenderer.prototype.getCurrentHeadProvisionalElements = function() {\n      return this.currentHeadDetails.getProvisionalElements();\n    };\n\n    SnapshotRenderer.prototype.getNewHeadProvisionalElements = function() {\n      return this.newHeadDetails.getProvisionalElements();\n    };\n\n    SnapshotRenderer.prototype.getCurrentBodyPermanentElements = function() {\n      return this.currentSnapshot.getPermanentElementsPresentInSnapshot(this.newSnapshot);\n    };\n\n    SnapshotRenderer.prototype.getNewBodyScriptElements = function() {\n      return this.newBody.querySelectorAll("script");\n    };\n\n    return SnapshotRenderer;\n\n  })(Turbolinks.Renderer);\n\n  createPlaceholderForPermanentElement = function(permanentElement) {\n    var element;\n    element = document.createElement("meta");\n    element.setAttribute("name", "turbolinks-permanent-placeholder");\n    element.setAttribute("content", permanentElement.id);\n    return {\n      element: element,\n      permanentElement: permanentElement\n    };\n  };\n\n  replaceElementWithElement = function(fromElement, toElement) {\n    var parentElement;\n    if (parentElement = fromElement.parentNode) {\n      return parentElement.replaceChild(toElement, fromElement);\n    }\n  };\n\n}).call(this);\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./ */ "./src/turbolinks/index.js")))\n\n//# sourceURL=webpack://Turbolinks/./src/turbolinks/snapshot_renderer.js?')},"./src/turbolinks/start.js":function(module,exports,__webpack_require__){eval('/* WEBPACK VAR INJECTION */(function(Turbolinks) {// Generated by CoffeeScript 1.12.8\n(function() {\n  var createController, installTurbolinks, moduleIsInstalled;\n\n  Turbolinks.start = function() {\n    if (installTurbolinks()) {\n      if (Turbolinks.controller == null) {\n        Turbolinks.controller = createController();\n      }\n      return Turbolinks.controller.start();\n    }\n  };\n\n  installTurbolinks = function() {\n    if (window.Turbolinks == null) {\n      window.Turbolinks = Turbolinks;\n    }\n    return moduleIsInstalled();\n  };\n\n  createController = function() {\n    var controller;\n    controller = new Turbolinks.Controller;\n    controller.adapter = new Turbolinks.BrowserAdapter(controller);\n    return controller;\n  };\n\n  moduleIsInstalled = function() {\n    return window.Turbolinks === Turbolinks;\n  };\n\n  if (moduleIsInstalled()) {\n    Turbolinks.start();\n  }\n\n}).call(this);\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./ */ "./src/turbolinks/index.js")))\n\n//# sourceURL=webpack://Turbolinks/./src/turbolinks/start.js?')},"./src/turbolinks/view.js":function(module,exports,__webpack_require__){eval('/* WEBPACK VAR INJECTION */(function(Turbolinks) {// Generated by CoffeeScript 1.12.8\n(function() {\n  __webpack_require__(/*! ./snapshot */ "./src/turbolinks/snapshot.js");\n\n  __webpack_require__(/*! ./snapshot_renderer */ "./src/turbolinks/snapshot_renderer.js");\n\n  __webpack_require__(/*! ./error_renderer */ "./src/turbolinks/error_renderer.js");\n\n  Turbolinks.View = (function() {\n    function View(delegate) {\n      this.delegate = delegate;\n      this.htmlElement = document.documentElement;\n    }\n\n    View.prototype.getRootLocation = function() {\n      return this.getSnapshot().getRootLocation();\n    };\n\n    View.prototype.getElementForAnchor = function(anchor) {\n      return this.getSnapshot().getElementForAnchor(anchor);\n    };\n\n    View.prototype.getSnapshot = function() {\n      return Turbolinks.Snapshot.fromHTMLElement(this.htmlElement);\n    };\n\n    View.prototype.render = function(arg, callback) {\n      var error, isPreview, snapshot;\n      snapshot = arg.snapshot, error = arg.error, isPreview = arg.isPreview;\n      this.markAsPreview(isPreview);\n      if (snapshot != null) {\n        return this.renderSnapshot(snapshot, isPreview, callback);\n      } else {\n        return this.renderError(error, callback);\n      }\n    };\n\n    View.prototype.markAsPreview = function(isPreview) {\n      if (isPreview) {\n        return this.htmlElement.setAttribute("data-turbolinks-preview", "");\n      } else {\n        return this.htmlElement.removeAttribute("data-turbolinks-preview");\n      }\n    };\n\n    View.prototype.renderSnapshot = function(snapshot, isPreview, callback) {\n      return Turbolinks.SnapshotRenderer.render(this.delegate, callback, this.getSnapshot(), Turbolinks.Snapshot.wrap(snapshot), isPreview);\n    };\n\n    View.prototype.renderError = function(error, callback) {\n      return Turbolinks.ErrorRenderer.render(this.delegate, callback, error);\n    };\n\n    return View;\n\n  })();\n\n}).call(this);\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./ */ "./src/turbolinks/index.js")))\n\n//# sourceURL=webpack://Turbolinks/./src/turbolinks/view.js?')},"./src/turbolinks/visit.js":function(module,exports,__webpack_require__){eval('/* WEBPACK VAR INJECTION */(function(Turbolinks) {// Generated by CoffeeScript 1.12.8\n(function() {\n  var bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };\n\n  __webpack_require__(/*! ./http_request */ "./src/turbolinks/http_request.js");\n\n  Turbolinks.Visit = (function() {\n    var getHistoryMethodForAction;\n\n    function Visit(controller, location, action1) {\n      this.controller = controller;\n      this.action = action1;\n      this.performScroll = bind(this.performScroll, this);\n      this.identifier = Turbolinks.uuid();\n      this.location = Turbolinks.Location.wrap(location);\n      this.adapter = this.controller.adapter;\n      this.state = "initialized";\n      this.timingMetrics = {};\n    }\n\n    Visit.prototype.start = function() {\n      if (this.state === "initialized") {\n        this.recordTimingMetric("visitStart");\n        this.state = "started";\n        return this.adapter.visitStarted(this);\n      }\n    };\n\n    Visit.prototype.cancel = function() {\n      var ref;\n      if (this.state === "started") {\n        if ((ref = this.request) != null) {\n          ref.cancel();\n        }\n        this.cancelRender();\n        return this.state = "canceled";\n      }\n    };\n\n    Visit.prototype.complete = function() {\n      var base;\n      if (this.state === "started") {\n        this.recordTimingMetric("visitEnd");\n        this.state = "completed";\n        if (typeof (base = this.adapter).visitCompleted === "function") {\n          base.visitCompleted(this);\n        }\n        return this.controller.visitCompleted(this);\n      }\n    };\n\n    Visit.prototype.fail = function() {\n      var base;\n      if (this.state === "started") {\n        this.state = "failed";\n        return typeof (base = this.adapter).visitFailed === "function" ? base.visitFailed(this) : void 0;\n      }\n    };\n\n    Visit.prototype.changeHistory = function() {\n      var actionForHistory, method;\n      if (!this.historyChanged) {\n        actionForHistory = this.location.isEqualTo(this.referrer) ? "replace" : this.action;\n        method = getHistoryMethodForAction(actionForHistory);\n        this.controller[method](this.location, this.restorationIdentifier);\n        return this.historyChanged = true;\n      }\n    };\n\n    Visit.prototype.issueRequest = function() {\n      if (this.shouldIssueRequest() && (this.request == null)) {\n        this.progress = 0;\n        this.request = new Turbolinks.HttpRequest(this, this.location, this.referrer);\n        return this.request.send();\n      }\n    };\n\n    Visit.prototype.getCachedSnapshot = function() {\n      var snapshot;\n      if (snapshot = this.controller.getCachedSnapshotForLocation(this.location)) {\n        if ((this.location.anchor == null) || snapshot.hasAnchor(this.location.anchor)) {\n          if (this.action === "restore" || snapshot.isPreviewable()) {\n            return snapshot;\n          }\n        }\n      }\n    };\n\n    Visit.prototype.hasCachedSnapshot = function() {\n      return this.getCachedSnapshot() != null;\n    };\n\n    Visit.prototype.loadCachedSnapshot = function() {\n      var isPreview, snapshot;\n      if (snapshot = this.getCachedSnapshot()) {\n        isPreview = this.shouldIssueRequest();\n        return this.render(function() {\n          var base;\n          this.cacheSnapshot();\n          this.controller.render({\n            snapshot: snapshot,\n            isPreview: isPreview\n          }, this.performScroll);\n          if (typeof (base = this.adapter).visitRendered === "function") {\n            base.visitRendered(this);\n          }\n          if (!isPreview) {\n            return this.complete();\n          }\n        });\n      }\n    };\n\n    Visit.prototype.loadResponse = function() {\n      if (this.response != null) {\n        return this.render(function() {\n          var base, base1;\n          this.cacheSnapshot();\n          if (this.request.failed) {\n            this.controller.render({\n              error: this.response\n            }, this.performScroll);\n            if (typeof (base = this.adapter).visitRendered === "function") {\n              base.visitRendered(this);\n            }\n            return this.fail();\n          } else {\n            this.controller.render({\n              snapshot: this.response\n            }, this.performScroll);\n            if (typeof (base1 = this.adapter).visitRendered === "function") {\n              base1.visitRendered(this);\n            }\n            return this.complete();\n          }\n        });\n      }\n    };\n\n    Visit.prototype.followRedirect = function() {\n      if (this.redirectedToLocation && !this.followedRedirect) {\n        this.location = this.redirectedToLocation;\n        this.controller.replaceHistoryWithLocationAndRestorationIdentifier(this.redirectedToLocation, this.restorationIdentifier);\n        return this.followedRedirect = true;\n      }\n    };\n\n    Visit.prototype.requestStarted = function() {\n      var base;\n      this.recordTimingMetric("requestStart");\n      return typeof (base = this.adapter).visitRequestStarted === "function" ? base.visitRequestStarted(this) : void 0;\n    };\n\n    Visit.prototype.requestProgressed = function(progress) {\n      var base;\n      this.progress = progress;\n      return typeof (base = this.adapter).visitRequestProgressed === "function" ? base.visitRequestProgressed(this) : void 0;\n    };\n\n    Visit.prototype.requestCompletedWithResponse = function(response, redirectedToLocation) {\n      this.response = response;\n      if (redirectedToLocation != null) {\n        this.redirectedToLocation = Turbolinks.Location.wrap(redirectedToLocation);\n      }\n      return this.adapter.visitRequestCompleted(this);\n    };\n\n    Visit.prototype.requestFailedWithStatusCode = function(statusCode, response) {\n      this.response = response;\n      return this.adapter.visitRequestFailedWithStatusCode(this, statusCode);\n    };\n\n    Visit.prototype.requestFinished = function() {\n      var base;\n      this.recordTimingMetric("requestEnd");\n      return typeof (base = this.adapter).visitRequestFinished === "function" ? base.visitRequestFinished(this) : void 0;\n    };\n\n    Visit.prototype.performScroll = function() {\n      if (!this.scrolled) {\n        if (this.action === "restore") {\n          this.scrollToRestoredPosition() || this.scrollToTop();\n        } else {\n          this.scrollToAnchor() || this.scrollToTop();\n        }\n        return this.scrolled = true;\n      }\n    };\n\n    Visit.prototype.scrollToRestoredPosition = function() {\n      var position, ref;\n      position = (ref = this.restorationData) != null ? ref.scrollPosition : void 0;\n      if (position != null) {\n        this.controller.scrollToPosition(position);\n        return true;\n      }\n    };\n\n    Visit.prototype.scrollToAnchor = function() {\n      if (this.location.anchor != null) {\n        this.controller.scrollToAnchor(this.location.anchor);\n        return true;\n      }\n    };\n\n    Visit.prototype.scrollToTop = function() {\n      return this.controller.scrollToPosition({\n        x: 0,\n        y: 0\n      });\n    };\n\n    Visit.prototype.recordTimingMetric = function(name) {\n      var base;\n      return (base = this.timingMetrics)[name] != null ? base[name] : base[name] = new Date().getTime();\n    };\n\n    Visit.prototype.getTimingMetrics = function() {\n      return Turbolinks.copyObject(this.timingMetrics);\n    };\n\n    getHistoryMethodForAction = function(action) {\n      switch (action) {\n        case "replace":\n          return "replaceHistoryWithLocationAndRestorationIdentifier";\n        case "advance":\n        case "restore":\n          return "pushHistoryWithLocationAndRestorationIdentifier";\n      }\n    };\n\n    Visit.prototype.shouldIssueRequest = function() {\n      if (this.action === "restore") {\n        return !this.hasCachedSnapshot();\n      } else {\n        return true;\n      }\n    };\n\n    Visit.prototype.cacheSnapshot = function() {\n      if (!this.snapshotCached) {\n        this.controller.cacheSnapshot();\n        return this.snapshotCached = true;\n      }\n    };\n\n    Visit.prototype.render = function(callback) {\n      this.cancelRender();\n      return this.frame = requestAnimationFrame((function(_this) {\n        return function() {\n          _this.frame = null;\n          return callback.call(_this);\n        };\n      })(this));\n    };\n\n    Visit.prototype.cancelRender = function() {\n      if (this.frame) {\n        return cancelAnimationFrame(this.frame);\n      }\n    };\n\n    return Visit;\n\n  })();\n\n}).call(this);\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./ */ "./src/turbolinks/index.js")))\n\n//# sourceURL=webpack://Turbolinks/./src/turbolinks/visit.js?')}});