diff --git a/client/source/sass/base/_layout.scss b/client/source/sass/base/_layout.scss index 9ab866b9..29ba1161 100644 --- a/client/source/sass/base/_layout.scss +++ b/client/source/sass/base/_layout.scss @@ -25,6 +25,30 @@ body { position: relative; } + &__loading-indicator { + align-items: center; + background: $background; + display: flex; + height: 100%; + justify-content: center; + position: fixed; + width: 100%; + z-index: 1000; + + &__wrapper { + + &-leave { + opacity: 1; + pointer-events: none; + transition: opacity 1s; + + &-active { + opacity: 0; + } + } + } + } + &__panel { display: flex; bottom: 0; diff --git a/client/source/scripts/actions/TorrentActions.js b/client/source/scripts/actions/TorrentActions.js index 3d40439d..b3662fc6 100644 --- a/client/source/scripts/actions/TorrentActions.js +++ b/client/source/scripts/actions/TorrentActions.js @@ -117,6 +117,7 @@ const TorrentActions = { }); }) .catch((error) => { + console.log(error); AppDispatcher.dispatchServerAction({ type: ActionTypes.CLIENT_FETCH_TORRENTS_ERROR, data: { diff --git a/client/source/scripts/app.js b/client/source/scripts/app.js index d52e4ec2..f1cd3285 100644 --- a/client/source/scripts/app.js +++ b/client/source/scripts/app.js @@ -3,6 +3,7 @@ import ReactDOM from 'react-dom'; import Application from './components/layout/Application'; import ApplicationContent from './components/layout/ApplicationContent'; +import ApplicationLoadingIndicator from './components/layout/ApplicationLoadingIndicator'; import Modals from './components/modals/Modals'; import Sidebar from './components/panels/Sidebar'; import TorrentActions from './actions/TorrentActions'; @@ -21,6 +22,7 @@ class FloodApp extends React.Component { render() { return ( + diff --git a/client/source/scripts/components/layout/ApplicationLoadingIndicator.js b/client/source/scripts/components/layout/ApplicationLoadingIndicator.js new file mode 100644 index 00000000..0a735e48 --- /dev/null +++ b/client/source/scripts/components/layout/ApplicationLoadingIndicator.js @@ -0,0 +1,57 @@ +import CSSTransitionGroup from 'react-addons-css-transition-group'; +import React from 'react'; + +import EventTypes from '../../constants/EventTypes'; +import LoadingIndicator from '../ui/LoadingIndicator'; +import UIStore from '../../stores/UIStore'; + +const METHODS_TO_BIND = ['handleUIDependenciesLoaded']; + +class ApplicationLoadingIndicator extends React.Component { + constructor() { + super(); + + this.state = { + dependenciesLoaded: false + }; + + METHODS_TO_BIND.forEach((method) => { + this[method] = this[method].bind(this); + }); + } + + componentDidMount() { + UIStore.listen(EventTypes.UI_DEPENDENCIES_LOADED, + this.handleUIDependenciesLoaded); + } + + handleUIDependenciesLoaded() { + this.setState({dependenciesLoaded: true}); + } + + render() { + let content; + + if (!this.state.dependenciesLoaded) { + content = ( +
+ +
+ ); + } + + console.log(this.state.dependenciesLoaded); + + return ( + + {content} + + ); + } +} + +export default ApplicationLoadingIndicator; diff --git a/client/source/scripts/components/sidebar/TransferData.js b/client/source/scripts/components/sidebar/TransferData.js index 62e95b3b..e910dd59 100644 --- a/client/source/scripts/components/sidebar/TransferData.js +++ b/client/source/scripts/components/sidebar/TransferData.js @@ -9,6 +9,7 @@ import format from '../../util/formatData'; import LineChart from '../ui/LineChart'; import LoadingIndicator from '../ui/LoadingIndicator'; import TransferDataStore from '../../stores/TransferDataStore'; +import UIStore from '../../stores/UIStore'; import Upload from '../icons/Upload'; const METHODS_TO_BIND = [ @@ -34,6 +35,7 @@ class ClientStats extends React.Component { } componentDidMount() { + UIStore.registerDependency(['transfer-data', 'transfer-history']); this.setState({ sidebarWidth: ReactDOM.findDOMNode(this).offsetWidth }); @@ -72,6 +74,10 @@ class ClientStats extends React.Component { transferDataRequestError: false, transferDataRequestSuccess: true }); + + if (!UIStore.hasSatisfiedDependencies()) { + UIStore.satisfyDependency('transfer-data'); + } } onTransferHistoryRequestSuccess() { @@ -80,6 +86,10 @@ class ClientStats extends React.Component { transferHistoryRequestSuccess: true }); } + + if (!UIStore.hasSatisfiedDependencies()) { + UIStore.satisfyDependency('transfer-history'); + } } render() { @@ -146,19 +156,10 @@ class ClientStats extends React.Component { ); } - let transitionGroupClasses = classnames('client-stats sidebar__item', { - 'is-loading': this.isLoading() - }) - return ( - +
{content} - +
); } diff --git a/client/source/scripts/components/torrent-list/TorrentList.js b/client/source/scripts/components/torrent-list/TorrentList.js index 6ca51f46..4e72a971 100644 --- a/client/source/scripts/components/torrent-list/TorrentList.js +++ b/client/source/scripts/components/torrent-list/TorrentList.js @@ -68,6 +68,7 @@ export default class TorrentListContainer extends React.Component { } componentDidMount() { + UIStore.registerDependency('torrent-list'); TorrentStore.listen(EventTypes.UI_TORRENT_SELECTION_CHANGE, this.onTorrentSelectionChange); TorrentStore.listen(EventTypes.CLIENT_TORRENTS_REQUEST_SUCCESS, this.onReceiveTorrentsSuccess); TorrentStore.listen(EventTypes.CLIENT_TORRENTS_REQUEST_ERROR, this.onReceiveTorrentsError); @@ -201,6 +202,10 @@ export default class TorrentListContainer extends React.Component { torrentRequestError: false, torrentRequestSuccess: true }); + + if (!UIStore.hasSatisfiedDependencies()) { + UIStore.satisfyDependency('torrent-list'); + } } onTorrentFilterChange() { @@ -340,17 +345,12 @@ export default class TorrentListContainer extends React.Component { } return ( - +
{content} - +
); } diff --git a/client/source/scripts/components/ui/LineChart.js b/client/source/scripts/components/ui/LineChart.js index 5419df07..125b2ed8 100644 --- a/client/source/scripts/components/ui/LineChart.js +++ b/client/source/scripts/components/ui/LineChart.js @@ -1,8 +1,27 @@ import d3 from 'd3'; import React from 'react'; +const METHODS_TO_BIND = ['renderGraphData']; + export default class LineChart extends React.Component { + constructor() { + super(); + + METHODS_TO_BIND.forEach((method) => { + this[method] = this[method].bind(this); + }); + } + + componentDidMount() { + this.renderGraphData(); + } + componentDidUpdate() { + this.renderGraphData(); + } + + renderGraphData() { + // console.log('') let graph = d3.select('#' + this.props.id); let transferData = this.props.data; let transferLimit = this.props.limit; diff --git a/client/source/scripts/constants/EventTypes.js b/client/source/scripts/constants/EventTypes.js index 0339877e..1195540c 100644 --- a/client/source/scripts/constants/EventTypes.js +++ b/client/source/scripts/constants/EventTypes.js @@ -17,6 +17,7 @@ const EventTypes = { CLIENT_TRANSFER_HISTORY_REQUEST_SUCCESS: 'CLIENT_TRANSFER_HISTORY_REQUEST_SUCCESS', CLIENT_TRANSFER_HISTORY_REQUEST_ERROR: 'CLIENT_TRANSFER_HISTORY_REQUEST_ERROR', UI_CONTEXT_MENU_CHANGE: 'UI_CONTEXT_MENU_CHANGE', + UI_DEPENDENCIES_LOADED: 'UI_DEPENDENCIES_LOADED', UI_MODAL_CHANGE: 'UI_MODAL_CHANGE', UI_LATEST_TORRENT_LOCATION_CHANGE: 'UI_LATEST_TORRENT_LOCATION_CHANGE', UI_TORRENT_DETAILS_HASH_CHANGE: 'UI_TORRENT_DETAILS_HASH_CHANGE', diff --git a/client/source/scripts/stores/TorrentStore.js b/client/source/scripts/stores/TorrentStore.js index d1ed9f04..541b1abe 100644 --- a/client/source/scripts/stores/TorrentStore.js +++ b/client/source/scripts/stores/TorrentStore.js @@ -137,6 +137,10 @@ class TorrentStoreClass extends BaseStore { this.emit(EventTypes.UI_TORRENT_SELECTION_CHANGE); } + handleFetchTorrentsError(action) { + console.log(action); + } + handleFetchTorrentsSuccess(torrents) { this.sortTorrents(torrents); this.filterTorrents(); @@ -216,7 +220,6 @@ TorrentStore.dispatcherID = AppDispatcher.register((payload) => { break; case ActionTypes.CLIENT_FETCH_TORRENTS_ERROR: TorrentStore.handleFetchTorrentsError(); - console.log(action); break; case ActionTypes.UI_CLICK_TORRENT: TorrentStore.setSelectedTorrents(action.data.event, action.data.hash); diff --git a/client/source/scripts/stores/UIStore.js b/client/source/scripts/stores/UIStore.js index 5a0f9500..57b1a8ce 100644 --- a/client/source/scripts/stores/UIStore.js +++ b/client/source/scripts/stores/UIStore.js @@ -12,6 +12,7 @@ class UIStoreClass extends BaseStore { this.activeContextMenu = null; this.activeModal = null; + this.dependencies = []; this.latestTorrentLocation = null; this.torrentDetailsHash = null; this.torrentDetailsOpen = false; @@ -63,10 +64,36 @@ class UIStoreClass extends BaseStore { this.emit(EventTypes.UI_TORRENT_DETAILS_OPEN_CHANGE); } + hasSatisfiedDependencies() { + return this.dependencies.length === 0; + } + isTorrentDetailsOpen() { return this.torrentDetailsOpen; } + registerDependency(ids) { + if (!Array.isArray(ids)) { + ids = [ids]; + } + + ids.forEach((id) => { + if (this.dependencies.indexOf(id) === -1) { + this.dependencies.push(id); + } + }); + } + + satisfyDependency(id) { + let dependencyIndex = this.dependencies.indexOf(id); + + if (dependencyIndex > -1) { + this.dependencies.splice(dependencyIndex, 1); + } + + this.verifyDependencies(); + } + setActiveContextMenu(contextMenu = {}) { this.activeContextMenu = contextMenu; this.emit(EventTypes.UI_CONTEXT_MENU_CHANGE); @@ -76,6 +103,12 @@ class UIStoreClass extends BaseStore { this.activeModal = modal; this.emit(EventTypes.UI_MODAL_CHANGE); } + + verifyDependencies() { + if (this.dependencies.length === 0) { + this.emit(EventTypes.UI_DEPENDENCIES_LOADED); + } + } } let UIStore = new UIStoreClass(); diff --git a/server/assets/app.js b/server/assets/app.js index 9bc7c300..46eec67e 100644 --- a/server/assets/app.js +++ b/server/assets/app.js @@ -44,7 +44,7 @@ /* 0 */ /***/ function(module, exports, __webpack_require__) { - eval("'use strict';\n\nvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\n\nvar _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _react = __webpack_require__(1);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = __webpack_require__(157);\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _componentsLayoutApplication = __webpack_require__(158);\n\nvar _componentsLayoutApplication2 = _interopRequireDefault(_componentsLayoutApplication);\n\nvar _componentsLayoutApplicationContent = __webpack_require__(159);\n\nvar _componentsLayoutApplicationContent2 = _interopRequireDefault(_componentsLayoutApplicationContent);\n\nvar _componentsModalsModals = __webpack_require__(160);\n\nvar _componentsModalsModals2 = _interopRequireDefault(_componentsModalsModals);\n\nvar _componentsPanelsSidebar = __webpack_require__(241);\n\nvar _componentsPanelsSidebar2 = _interopRequireDefault(_componentsPanelsSidebar);\n\nvar _actionsTorrentActions = __webpack_require__(186);\n\nvar _actionsTorrentActions2 = _interopRequireDefault(_actionsTorrentActions);\n\nvar _componentsPanelsTorrentDetailsView = __webpack_require__(267);\n\nvar _componentsPanelsTorrentDetailsView2 = _interopRequireDefault(_componentsPanelsTorrentDetailsView);\n\nvar _componentsPanelsTorrentListView = __webpack_require__(291);\n\nvar _componentsPanelsTorrentListView2 = _interopRequireDefault(_componentsPanelsTorrentListView);\n\nvar _actionsUIActions = __webpack_require__(208);\n\nvar _actionsUIActions2 = _interopRequireDefault(_actionsUIActions);\n\nvar FloodApp = (function (_React$Component) {\n _inherits(FloodApp, _React$Component);\n\n function FloodApp() {\n _classCallCheck(this, FloodApp);\n\n _get(Object.getPrototypeOf(FloodApp.prototype), 'constructor', this).apply(this, arguments);\n }\n\n _createClass(FloodApp, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n _actionsTorrentActions2['default'].fetchLatestTorrentLocation();\n window.addEventListener('click', function () {\n _actionsUIActions2['default'].dismissContextMenu();\n });\n }\n }, {\n key: 'render',\n value: function render() {\n return _react2['default'].createElement(\n _componentsLayoutApplication2['default'],\n null,\n _react2['default'].createElement(_componentsPanelsSidebar2['default'], null),\n _react2['default'].createElement(\n _componentsLayoutApplicationContent2['default'],\n null,\n _react2['default'].createElement(_componentsPanelsTorrentDetailsView2['default'], null),\n _react2['default'].createElement(_componentsPanelsTorrentListView2['default'], null)\n ),\n _react2['default'].createElement(_componentsModalsModals2['default'], null)\n );\n }\n }]);\n\n return FloodApp;\n})(_react2['default'].Component);\n\n_reactDom2['default'].render(_react2['default'].createElement(FloodApp, null), document.getElementById('app'));//@ sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9jbGllbnQvc291cmNlL3NjcmlwdHMvYXBwLmpzPzRiMTUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0FBRUEsaUNBQWlDLDJDQUEyQyxnQkFBZ0Isa0JBQWtCLE9BQU8sMkJBQTJCLHdEQUF3RCxnQ0FBZ0MsdURBQXVELDJEQUEyRCxFQUFFLEVBQUUseURBQXlELHFFQUFxRSw2REFBNkQsb0JBQW9CLEdBQUcsRUFBRTs7QUFFbGpCLHVDQUF1QyxtQkFBbUIsNEJBQTRCLGlEQUFpRCxnQkFBZ0Isa0RBQWtELDhEQUE4RCwwQkFBMEIsNENBQTRDLHVCQUF1QixrQkFBa0IsRUFBRSxPQUFPLGFBQWEsZ0JBQWdCLGdCQUFnQixlQUFlLDJCQUEyQixvQkFBb0IsRUFBRSxFQUFFLDRCQUE0QixtQkFBbUIsRUFBRSxPQUFPLHVCQUF1Qiw0QkFBNEIsa0JBQWtCLEVBQUUsOEJBQThCLEVBQUUsRUFBRTs7QUFFL29CLHNDQUFzQyx1Q0FBdUMsa0JBQWtCOztBQUUvRixpREFBaUQsMENBQTBDLDBEQUEwRCxFQUFFOztBQUV2SiwwQ0FBMEMsK0RBQStELHFHQUFxRyxFQUFFLHlFQUF5RSxlQUFlLHlFQUF5RSxFQUFFLEVBQUUsdUhBQXVIOztBQUU1ZTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUM7O0FBRUQiLCJmaWxlIjoiMC5qcyIsInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxudmFyIF9jcmVhdGVDbGFzcyA9IChmdW5jdGlvbiAoKSB7IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoJ3ZhbHVlJyBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpOyB9IH0gcmV0dXJuIGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfTsgfSkoKTtcblxudmFyIF9nZXQgPSBmdW5jdGlvbiBnZXQoX3gsIF94MiwgX3gzKSB7IHZhciBfYWdhaW4gPSB0cnVlOyBfZnVuY3Rpb246IHdoaWxlIChfYWdhaW4pIHsgdmFyIG9iamVjdCA9IF94LCBwcm9wZXJ0eSA9IF94MiwgcmVjZWl2ZXIgPSBfeDM7IF9hZ2FpbiA9IGZhbHNlOyBpZiAob2JqZWN0ID09PSBudWxsKSBvYmplY3QgPSBGdW5jdGlvbi5wcm90b3R5cGU7IHZhciBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHByb3BlcnR5KTsgaWYgKGRlc2MgPT09IHVuZGVmaW5lZCkgeyB2YXIgcGFyZW50ID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKG9iamVjdCk7IGlmIChwYXJlbnQgPT09IG51bGwpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfSBlbHNlIHsgX3ggPSBwYXJlbnQ7IF94MiA9IHByb3BlcnR5OyBfeDMgPSByZWNlaXZlcjsgX2FnYWluID0gdHJ1ZTsgZGVzYyA9IHBhcmVudCA9IHVuZGVmaW5lZDsgY29udGludWUgX2Z1bmN0aW9uOyB9IH0gZWxzZSBpZiAoJ3ZhbHVlJyBpbiBkZXNjKSB7IHJldHVybiBkZXNjLnZhbHVlOyB9IGVsc2UgeyB2YXIgZ2V0dGVyID0gZGVzYy5nZXQ7IGlmIChnZXR0ZXIgPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9IHJldHVybiBnZXR0ZXIuY2FsbChyZWNlaXZlcik7IH0gfSB9O1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyAnZGVmYXVsdCc6IG9iaiB9OyB9XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcignQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uJyk7IH0gfVxuXG5mdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHsgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSAnZnVuY3Rpb24nICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcignU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAnICsgdHlwZW9mIHN1cGVyQ2xhc3MpOyB9IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogc3ViQ2xhc3MsIGVudW1lcmFibGU6IGZhbHNlLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0gfSk7IGlmIChzdXBlckNsYXNzKSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIDogc3ViQ2xhc3MuX19wcm90b19fID0gc3VwZXJDbGFzczsgfVxuXG52YXIgX3JlYWN0ID0gcmVxdWlyZSgncmVhY3QnKTtcblxudmFyIF9yZWFjdDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9yZWFjdCk7XG5cbnZhciBfcmVhY3REb20gPSByZXF1aXJlKCdyZWFjdC1kb20nKTtcblxudmFyIF9yZWFjdERvbTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9yZWFjdERvbSk7XG5cbnZhciBfY29tcG9uZW50c0xheW91dEFwcGxpY2F0aW9uID0gcmVxdWlyZSgnLi9jb21wb25lbnRzL2xheW91dC9BcHBsaWNhdGlvbicpO1xuXG52YXIgX2NvbXBvbmVudHNMYXlvdXRBcHBsaWNhdGlvbjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jb21wb25lbnRzTGF5b3V0QXBwbGljYXRpb24pO1xuXG52YXIgX2NvbXBvbmVudHNMYXlvdXRBcHBsaWNhdGlvbkNvbnRlbnQgPSByZXF1aXJlKCcuL2NvbXBvbmVudHMvbGF5b3V0L0FwcGxpY2F0aW9uQ29udGVudCcpO1xuXG52YXIgX2NvbXBvbmVudHNMYXlvdXRBcHBsaWNhdGlvbkNvbnRlbnQyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY29tcG9uZW50c0xheW91dEFwcGxpY2F0aW9uQ29udGVudCk7XG5cbnZhciBfY29tcG9uZW50c01vZGFsc01vZGFscyA9IHJlcXVpcmUoJy4vY29tcG9uZW50cy9tb2RhbHMvTW9kYWxzJyk7XG5cbnZhciBfY29tcG9uZW50c01vZGFsc01vZGFsczIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jb21wb25lbnRzTW9kYWxzTW9kYWxzKTtcblxudmFyIF9jb21wb25lbnRzUGFuZWxzU2lkZWJhciA9IHJlcXVpcmUoJy4vY29tcG9uZW50cy9wYW5lbHMvU2lkZWJhcicpO1xuXG52YXIgX2NvbXBvbmVudHNQYW5lbHNTaWRlYmFyMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2NvbXBvbmVudHNQYW5lbHNTaWRlYmFyKTtcblxudmFyIF9hY3Rpb25zVG9ycmVudEFjdGlvbnMgPSByZXF1aXJlKCcuL2FjdGlvbnMvVG9ycmVudEFjdGlvbnMnKTtcblxudmFyIF9hY3Rpb25zVG9ycmVudEFjdGlvbnMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfYWN0aW9uc1RvcnJlbnRBY3Rpb25zKTtcblxudmFyIF9jb21wb25lbnRzUGFuZWxzVG9ycmVudERldGFpbHNWaWV3ID0gcmVxdWlyZSgnLi9jb21wb25lbnRzL3BhbmVscy9Ub3JyZW50RGV0YWlsc1ZpZXcnKTtcblxudmFyIF9jb21wb25lbnRzUGFuZWxzVG9ycmVudERldGFpbHNWaWV3MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2NvbXBvbmVudHNQYW5lbHNUb3JyZW50RGV0YWlsc1ZpZXcpO1xuXG52YXIgX2NvbXBvbmVudHNQYW5lbHNUb3JyZW50TGlzdFZpZXcgPSByZXF1aXJlKCcuL2NvbXBvbmVudHMvcGFuZWxzL1RvcnJlbnRMaXN0VmlldycpO1xuXG52YXIgX2NvbXBvbmVudHNQYW5lbHNUb3JyZW50TGlzdFZpZXcyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY29tcG9uZW50c1BhbmVsc1RvcnJlbnRMaXN0Vmlldyk7XG5cbnZhciBfYWN0aW9uc1VJQWN0aW9ucyA9IHJlcXVpcmUoJy4vYWN0aW9ucy9VSUFjdGlvbnMnKTtcblxudmFyIF9hY3Rpb25zVUlBY3Rpb25zMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2FjdGlvbnNVSUFjdGlvbnMpO1xuXG52YXIgRmxvb2RBcHAgPSAoZnVuY3Rpb24gKF9SZWFjdCRDb21wb25lbnQpIHtcbiAgX2luaGVyaXRzKEZsb29kQXBwLCBfUmVhY3QkQ29tcG9uZW50KTtcblxuICBmdW5jdGlvbiBGbG9vZEFwcCgpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgRmxvb2RBcHApO1xuXG4gICAgX2dldChPYmplY3QuZ2V0UHJvdG90eXBlT2YoRmxvb2RBcHAucHJvdG90eXBlKSwgJ2NvbnN0cnVjdG9yJywgdGhpcykuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhGbG9vZEFwcCwgW3tcbiAgICBrZXk6ICdjb21wb25lbnREaWRNb3VudCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgICAgX2FjdGlvbnNUb3JyZW50QWN0aW9uczJbJ2RlZmF1bHQnXS5mZXRjaExhdGVzdFRvcnJlbnRMb2NhdGlvbigpO1xuICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKCkge1xuICAgICAgICBfYWN0aW9uc1VJQWN0aW9uczJbJ2RlZmF1bHQnXS5kaXNtaXNzQ29udGV4dE1lbnUoKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ3JlbmRlcicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICAgIHJldHVybiBfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudChcbiAgICAgICAgX2NvbXBvbmVudHNMYXlvdXRBcHBsaWNhdGlvbjJbJ2RlZmF1bHQnXSxcbiAgICAgICAgbnVsbCxcbiAgICAgICAgX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoX2NvbXBvbmVudHNQYW5lbHNTaWRlYmFyMlsnZGVmYXVsdCddLCBudWxsKSxcbiAgICAgICAgX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgX2NvbXBvbmVudHNMYXlvdXRBcHBsaWNhdGlvbkNvbnRlbnQyWydkZWZhdWx0J10sXG4gICAgICAgICAgbnVsbCxcbiAgICAgICAgICBfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudChfY29tcG9uZW50c1BhbmVsc1RvcnJlbnREZXRhaWxzVmlldzJbJ2RlZmF1bHQnXSwgbnVsbCksXG4gICAgICAgICAgX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoX2NvbXBvbmVudHNQYW5lbHNUb3JyZW50TGlzdFZpZXcyWydkZWZhdWx0J10sIG51bGwpXG4gICAgICAgICksXG4gICAgICAgIF9yZWFjdDJbJ2RlZmF1bHQnXS5jcmVhdGVFbGVtZW50KF9jb21wb25lbnRzTW9kYWxzTW9kYWxzMlsnZGVmYXVsdCddLCBudWxsKVxuICAgICAgKTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gRmxvb2RBcHA7XG59KShfcmVhY3QyWydkZWZhdWx0J10uQ29tcG9uZW50KTtcblxuX3JlYWN0RG9tMlsnZGVmYXVsdCddLnJlbmRlcihfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudChGbG9vZEFwcCwgbnVsbCksIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhcHAnKSk7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL2NsaWVudC9zb3VyY2Uvc2NyaXB0cy9hcHAuanNcbiAqKiBtb2R1bGUgaWQgPSAwXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iXSwic291cmNlUm9vdCI6IiJ9"); + eval("'use strict';\n\nvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\n\nvar _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _react = __webpack_require__(1);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = __webpack_require__(157);\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _componentsLayoutApplication = __webpack_require__(158);\n\nvar _componentsLayoutApplication2 = _interopRequireDefault(_componentsLayoutApplication);\n\nvar _componentsLayoutApplicationContent = __webpack_require__(159);\n\nvar _componentsLayoutApplicationContent2 = _interopRequireDefault(_componentsLayoutApplicationContent);\n\nvar _componentsLayoutApplicationLoadingIndicator = __webpack_require__(302);\n\nvar _componentsLayoutApplicationLoadingIndicator2 = _interopRequireDefault(_componentsLayoutApplicationLoadingIndicator);\n\nvar _componentsModalsModals = __webpack_require__(160);\n\nvar _componentsModalsModals2 = _interopRequireDefault(_componentsModalsModals);\n\nvar _componentsPanelsSidebar = __webpack_require__(241);\n\nvar _componentsPanelsSidebar2 = _interopRequireDefault(_componentsPanelsSidebar);\n\nvar _actionsTorrentActions = __webpack_require__(186);\n\nvar _actionsTorrentActions2 = _interopRequireDefault(_actionsTorrentActions);\n\nvar _componentsPanelsTorrentDetailsView = __webpack_require__(267);\n\nvar _componentsPanelsTorrentDetailsView2 = _interopRequireDefault(_componentsPanelsTorrentDetailsView);\n\nvar _componentsPanelsTorrentListView = __webpack_require__(291);\n\nvar _componentsPanelsTorrentListView2 = _interopRequireDefault(_componentsPanelsTorrentListView);\n\nvar _actionsUIActions = __webpack_require__(208);\n\nvar _actionsUIActions2 = _interopRequireDefault(_actionsUIActions);\n\nvar FloodApp = (function (_React$Component) {\n _inherits(FloodApp, _React$Component);\n\n function FloodApp() {\n _classCallCheck(this, FloodApp);\n\n _get(Object.getPrototypeOf(FloodApp.prototype), 'constructor', this).apply(this, arguments);\n }\n\n _createClass(FloodApp, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n _actionsTorrentActions2['default'].fetchLatestTorrentLocation();\n window.addEventListener('click', function () {\n _actionsUIActions2['default'].dismissContextMenu();\n });\n }\n }, {\n key: 'render',\n value: function render() {\n return _react2['default'].createElement(\n _componentsLayoutApplication2['default'],\n null,\n _react2['default'].createElement(_componentsLayoutApplicationLoadingIndicator2['default'], null),\n _react2['default'].createElement(_componentsPanelsSidebar2['default'], null),\n _react2['default'].createElement(\n _componentsLayoutApplicationContent2['default'],\n null,\n _react2['default'].createElement(_componentsPanelsTorrentDetailsView2['default'], null),\n _react2['default'].createElement(_componentsPanelsTorrentListView2['default'], null)\n ),\n _react2['default'].createElement(_componentsModalsModals2['default'], null)\n );\n }\n }]);\n\n return FloodApp;\n})(_react2['default'].Component);\n\n_reactDom2['default'].render(_react2['default'].createElement(FloodApp, null), document.getElementById('app'));//@ sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9jbGllbnQvc291cmNlL3NjcmlwdHMvYXBwLmpzPzRiMTUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0FBRUEsaUNBQWlDLDJDQUEyQyxnQkFBZ0Isa0JBQWtCLE9BQU8sMkJBQTJCLHdEQUF3RCxnQ0FBZ0MsdURBQXVELDJEQUEyRCxFQUFFLEVBQUUseURBQXlELHFFQUFxRSw2REFBNkQsb0JBQW9CLEdBQUcsRUFBRTs7QUFFbGpCLHVDQUF1QyxtQkFBbUIsNEJBQTRCLGlEQUFpRCxnQkFBZ0Isa0RBQWtELDhEQUE4RCwwQkFBMEIsNENBQTRDLHVCQUF1QixrQkFBa0IsRUFBRSxPQUFPLGFBQWEsZ0JBQWdCLGdCQUFnQixlQUFlLDJCQUEyQixvQkFBb0IsRUFBRSxFQUFFLDRCQUE0QixtQkFBbUIsRUFBRSxPQUFPLHVCQUF1Qiw0QkFBNEIsa0JBQWtCLEVBQUUsOEJBQThCLEVBQUUsRUFBRTs7QUFFL29CLHNDQUFzQyx1Q0FBdUMsa0JBQWtCOztBQUUvRixpREFBaUQsMENBQTBDLDBEQUEwRCxFQUFFOztBQUV2SiwwQ0FBMEMsK0RBQStELHFHQUFxRyxFQUFFLHlFQUF5RSxlQUFlLHlFQUF5RSxFQUFFLEVBQUUsdUhBQXVIOztBQUU1ZTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0EsQ0FBQzs7QUFFRCIsImZpbGUiOiIwLmpzIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG52YXIgX2NyZWF0ZUNsYXNzID0gKGZ1bmN0aW9uICgpIHsgZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmICgndmFsdWUnIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7IH0gfSByZXR1cm4gZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9OyB9KSgpO1xuXG52YXIgX2dldCA9IGZ1bmN0aW9uIGdldChfeCwgX3gyLCBfeDMpIHsgdmFyIF9hZ2FpbiA9IHRydWU7IF9mdW5jdGlvbjogd2hpbGUgKF9hZ2FpbikgeyB2YXIgb2JqZWN0ID0gX3gsIHByb3BlcnR5ID0gX3gyLCByZWNlaXZlciA9IF94MzsgX2FnYWluID0gZmFsc2U7IGlmIChvYmplY3QgPT09IG51bGwpIG9iamVjdCA9IEZ1bmN0aW9uLnByb3RvdHlwZTsgdmFyIGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgcHJvcGVydHkpOyBpZiAoZGVzYyA9PT0gdW5kZWZpbmVkKSB7IHZhciBwYXJlbnQgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Yob2JqZWN0KTsgaWYgKHBhcmVudCA9PT0gbnVsbCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9IGVsc2UgeyBfeCA9IHBhcmVudDsgX3gyID0gcHJvcGVydHk7IF94MyA9IHJlY2VpdmVyOyBfYWdhaW4gPSB0cnVlOyBkZXNjID0gcGFyZW50ID0gdW5kZWZpbmVkOyBjb250aW51ZSBfZnVuY3Rpb247IH0gfSBlbHNlIGlmICgndmFsdWUnIGluIGRlc2MpIHsgcmV0dXJuIGRlc2MudmFsdWU7IH0gZWxzZSB7IHZhciBnZXR0ZXIgPSBkZXNjLmdldDsgaWYgKGdldHRlciA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH0gcmV0dXJuIGdldHRlci5jYWxsKHJlY2VpdmVyKTsgfSB9IH07XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7ICdkZWZhdWx0Jzogb2JqIH07IH1cblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKCdDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24nKTsgfSB9XG5cbmZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09ICdmdW5jdGlvbicgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKCdTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICcgKyB0eXBlb2Ygc3VwZXJDbGFzcyk7IH0gc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7IGNvbnN0cnVjdG9yOiB7IHZhbHVlOiBzdWJDbGFzcywgZW51bWVyYWJsZTogZmFsc2UsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSB9KTsgaWYgKHN1cGVyQ2xhc3MpIE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5zZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFzcykgOiBzdWJDbGFzcy5fX3Byb3RvX18gPSBzdXBlckNsYXNzOyB9XG5cbnZhciBfcmVhY3QgPSByZXF1aXJlKCdyZWFjdCcpO1xuXG52YXIgX3JlYWN0MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3JlYWN0KTtcblxudmFyIF9yZWFjdERvbSA9IHJlcXVpcmUoJ3JlYWN0LWRvbScpO1xuXG52YXIgX3JlYWN0RG9tMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3JlYWN0RG9tKTtcblxudmFyIF9jb21wb25lbnRzTGF5b3V0QXBwbGljYXRpb24gPSByZXF1aXJlKCcuL2NvbXBvbmVudHMvbGF5b3V0L0FwcGxpY2F0aW9uJyk7XG5cbnZhciBfY29tcG9uZW50c0xheW91dEFwcGxpY2F0aW9uMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2NvbXBvbmVudHNMYXlvdXRBcHBsaWNhdGlvbik7XG5cbnZhciBfY29tcG9uZW50c0xheW91dEFwcGxpY2F0aW9uQ29udGVudCA9IHJlcXVpcmUoJy4vY29tcG9uZW50cy9sYXlvdXQvQXBwbGljYXRpb25Db250ZW50Jyk7XG5cbnZhciBfY29tcG9uZW50c0xheW91dEFwcGxpY2F0aW9uQ29udGVudDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jb21wb25lbnRzTGF5b3V0QXBwbGljYXRpb25Db250ZW50KTtcblxudmFyIF9jb21wb25lbnRzTGF5b3V0QXBwbGljYXRpb25Mb2FkaW5nSW5kaWNhdG9yID0gcmVxdWlyZSgnLi9jb21wb25lbnRzL2xheW91dC9BcHBsaWNhdGlvbkxvYWRpbmdJbmRpY2F0b3InKTtcblxudmFyIF9jb21wb25lbnRzTGF5b3V0QXBwbGljYXRpb25Mb2FkaW5nSW5kaWNhdG9yMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2NvbXBvbmVudHNMYXlvdXRBcHBsaWNhdGlvbkxvYWRpbmdJbmRpY2F0b3IpO1xuXG52YXIgX2NvbXBvbmVudHNNb2RhbHNNb2RhbHMgPSByZXF1aXJlKCcuL2NvbXBvbmVudHMvbW9kYWxzL01vZGFscycpO1xuXG52YXIgX2NvbXBvbmVudHNNb2RhbHNNb2RhbHMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY29tcG9uZW50c01vZGFsc01vZGFscyk7XG5cbnZhciBfY29tcG9uZW50c1BhbmVsc1NpZGViYXIgPSByZXF1aXJlKCcuL2NvbXBvbmVudHMvcGFuZWxzL1NpZGViYXInKTtcblxudmFyIF9jb21wb25lbnRzUGFuZWxzU2lkZWJhcjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jb21wb25lbnRzUGFuZWxzU2lkZWJhcik7XG5cbnZhciBfYWN0aW9uc1RvcnJlbnRBY3Rpb25zID0gcmVxdWlyZSgnLi9hY3Rpb25zL1RvcnJlbnRBY3Rpb25zJyk7XG5cbnZhciBfYWN0aW9uc1RvcnJlbnRBY3Rpb25zMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2FjdGlvbnNUb3JyZW50QWN0aW9ucyk7XG5cbnZhciBfY29tcG9uZW50c1BhbmVsc1RvcnJlbnREZXRhaWxzVmlldyA9IHJlcXVpcmUoJy4vY29tcG9uZW50cy9wYW5lbHMvVG9ycmVudERldGFpbHNWaWV3Jyk7XG5cbnZhciBfY29tcG9uZW50c1BhbmVsc1RvcnJlbnREZXRhaWxzVmlldzIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jb21wb25lbnRzUGFuZWxzVG9ycmVudERldGFpbHNWaWV3KTtcblxudmFyIF9jb21wb25lbnRzUGFuZWxzVG9ycmVudExpc3RWaWV3ID0gcmVxdWlyZSgnLi9jb21wb25lbnRzL3BhbmVscy9Ub3JyZW50TGlzdFZpZXcnKTtcblxudmFyIF9jb21wb25lbnRzUGFuZWxzVG9ycmVudExpc3RWaWV3MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2NvbXBvbmVudHNQYW5lbHNUb3JyZW50TGlzdFZpZXcpO1xuXG52YXIgX2FjdGlvbnNVSUFjdGlvbnMgPSByZXF1aXJlKCcuL2FjdGlvbnMvVUlBY3Rpb25zJyk7XG5cbnZhciBfYWN0aW9uc1VJQWN0aW9uczIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9hY3Rpb25zVUlBY3Rpb25zKTtcblxudmFyIEZsb29kQXBwID0gKGZ1bmN0aW9uIChfUmVhY3QkQ29tcG9uZW50KSB7XG4gIF9pbmhlcml0cyhGbG9vZEFwcCwgX1JlYWN0JENvbXBvbmVudCk7XG5cbiAgZnVuY3Rpb24gRmxvb2RBcHAoKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIEZsb29kQXBwKTtcblxuICAgIF9nZXQoT2JqZWN0LmdldFByb3RvdHlwZU9mKEZsb29kQXBwLnByb3RvdHlwZSksICdjb25zdHJ1Y3RvcicsIHRoaXMpLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoRmxvb2RBcHAsIFt7XG4gICAga2V5OiAnY29tcG9uZW50RGlkTW91bnQnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICAgIF9hY3Rpb25zVG9ycmVudEFjdGlvbnMyWydkZWZhdWx0J10uZmV0Y2hMYXRlc3RUb3JyZW50TG9jYXRpb24oKTtcbiAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgX2FjdGlvbnNVSUFjdGlvbnMyWydkZWZhdWx0J10uZGlzbWlzc0NvbnRleHRNZW51KCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdyZW5kZXInLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICByZXR1cm4gX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgIF9jb21wb25lbnRzTGF5b3V0QXBwbGljYXRpb24yWydkZWZhdWx0J10sXG4gICAgICAgIG51bGwsXG4gICAgICAgIF9yZWFjdDJbJ2RlZmF1bHQnXS5jcmVhdGVFbGVtZW50KF9jb21wb25lbnRzTGF5b3V0QXBwbGljYXRpb25Mb2FkaW5nSW5kaWNhdG9yMlsnZGVmYXVsdCddLCBudWxsKSxcbiAgICAgICAgX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoX2NvbXBvbmVudHNQYW5lbHNTaWRlYmFyMlsnZGVmYXVsdCddLCBudWxsKSxcbiAgICAgICAgX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgX2NvbXBvbmVudHNMYXlvdXRBcHBsaWNhdGlvbkNvbnRlbnQyWydkZWZhdWx0J10sXG4gICAgICAgICAgbnVsbCxcbiAgICAgICAgICBfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudChfY29tcG9uZW50c1BhbmVsc1RvcnJlbnREZXRhaWxzVmlldzJbJ2RlZmF1bHQnXSwgbnVsbCksXG4gICAgICAgICAgX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoX2NvbXBvbmVudHNQYW5lbHNUb3JyZW50TGlzdFZpZXcyWydkZWZhdWx0J10sIG51bGwpXG4gICAgICAgICksXG4gICAgICAgIF9yZWFjdDJbJ2RlZmF1bHQnXS5jcmVhdGVFbGVtZW50KF9jb21wb25lbnRzTW9kYWxzTW9kYWxzMlsnZGVmYXVsdCddLCBudWxsKVxuICAgICAgKTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gRmxvb2RBcHA7XG59KShfcmVhY3QyWydkZWZhdWx0J10uQ29tcG9uZW50KTtcblxuX3JlYWN0RG9tMlsnZGVmYXVsdCddLnJlbmRlcihfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudChGbG9vZEFwcCwgbnVsbCksIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhcHAnKSk7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL2NsaWVudC9zb3VyY2Uvc2NyaXB0cy9hcHAuanNcbiAqKiBtb2R1bGUgaWQgPSAwXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iXSwic291cmNlUm9vdCI6IiJ9"); /***/ }, /* 1 */ @@ -1100,13 +1100,13 @@ /* 176 */ /***/ function(module, exports) { - eval("'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nvar EventTypes = {\n CLIENT_ADD_TORRENT_ERROR: 'CLIENT_ADD_TORRENT_ERROR',\n CLIENT_ADD_TORRENT_SUCCESS: 'CLIENT_ADD_TORRENT_SUCCESS',\n CLIENT_SET_THROTTLE_ERROR: 'CLIENT_SET_THROTTLE_ERROR',\n CLIENT_SET_THROTTLE_SUCCESS: 'CLIENT_SET_THROTTLE_SUCCESS',\n CLIENT_MOVE_TORRENTS_REQUEST_ERROR: 'CLIENT_MOVE_TORRENTS_REQUEST_ERROR',\n CLIENT_MOVE_TORRENTS_SUCCESS: 'CLIENT_MOVE_TORRENTS_SUCCESS',\n CLIENT_TORRENTS_REQUEST_ERROR: 'CLIENT_TORRENTS_REQUEST_ERROR',\n CLIENT_TORRENT_STATUS_COUNT_CHANGE: 'CLIENT_TORRENT_STATUS_COUNT_CHANGE',\n CLIENT_TORRENT_STATUS_COUNT_REQUEST_ERROR: 'CLIENT_TORRENT_STATUS_COUNT_REQUEST_ERROR',\n CLIENT_TORRENT_TRACKER_COUNT_CHANGE: 'CLIENT_TORRENT_TRACKER_COUNT_CHANGE',\n CLIENT_TORRENT_TRACKER_COUNT_REQUEST_ERROR: 'CLIENT_TORRENT_TRACKER_COUNT_REQUEST_ERROR',\n CLIENT_TORRENTS_REQUEST_SUCCESS: 'CLIENT_TORRENTS_REQUEST_SUCCESS',\n CLIENT_TORRENT_DETAILS_CHANGE: 'CLIENT_TORRENT_DETAILS_CHANGE',\n CLIENT_TRANSFER_DATA_REQUEST_SUCCESS: 'CLIENT_TRANSFER_DATA_REQUEST_SUCCESS',\n CLIENT_TRANSFER_DATA_REQUEST_ERROR: 'CLIENT_TRANSFER_DATA_REQUEST_ERROR',\n CLIENT_TRANSFER_HISTORY_REQUEST_SUCCESS: 'CLIENT_TRANSFER_HISTORY_REQUEST_SUCCESS',\n CLIENT_TRANSFER_HISTORY_REQUEST_ERROR: 'CLIENT_TRANSFER_HISTORY_REQUEST_ERROR',\n UI_CONTEXT_MENU_CHANGE: 'UI_CONTEXT_MENU_CHANGE',\n UI_MODAL_CHANGE: 'UI_MODAL_CHANGE',\n UI_LATEST_TORRENT_LOCATION_CHANGE: 'UI_LATEST_TORRENT_LOCATION_CHANGE',\n UI_TORRENT_DETAILS_HASH_CHANGE: 'UI_TORRENT_DETAILS_HASH_CHANGE',\n UI_TORRENT_DETAILS_OPEN_CHANGE: 'UI_TORRENT_DETAILS_OPEN_CHANGE',\n UI_TORRENT_SELECTION_CHANGE: 'UI_TORRENT_SELECTION_CHANGE',\n UI_TORRENTS_FILTER_CHANGE: 'UI_TORRENTS_FILTER_CHANGE',\n UI_TORRENTS_FILTER_STATUS_CHANGE: 'UI_TORRENTS_FILTER_STATUS_CHANGE',\n UI_TORRENTS_FILTER_TRACKER_CHANGE: 'UI_TORRENTS_FILTER_TRACKER_CHANGE',\n UI_TORRENTS_FILTER_SEARCH_CHANGE: 'UI_TORRENTS_FILTER_SEARCH_CHANGE',\n UI_TORRENTS_SORT_CHANGE: 'UI_TORRENTS_SORT_CHANGE'\n};\n\nexports['default'] = EventTypes;\nmodule.exports = exports['default'];//@ sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9jbGllbnQvc291cmNlL3NjcmlwdHMvY29uc3RhbnRzL0V2ZW50VHlwZXMuanM/ZTRiMyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7QUFFQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBIiwiZmlsZSI6IjE3Ni5qcyIsInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG52YXIgRXZlbnRUeXBlcyA9IHtcbiAgQ0xJRU5UX0FERF9UT1JSRU5UX0VSUk9SOiAnQ0xJRU5UX0FERF9UT1JSRU5UX0VSUk9SJyxcbiAgQ0xJRU5UX0FERF9UT1JSRU5UX1NVQ0NFU1M6ICdDTElFTlRfQUREX1RPUlJFTlRfU1VDQ0VTUycsXG4gIENMSUVOVF9TRVRfVEhST1RUTEVfRVJST1I6ICdDTElFTlRfU0VUX1RIUk9UVExFX0VSUk9SJyxcbiAgQ0xJRU5UX1NFVF9USFJPVFRMRV9TVUNDRVNTOiAnQ0xJRU5UX1NFVF9USFJPVFRMRV9TVUNDRVNTJyxcbiAgQ0xJRU5UX01PVkVfVE9SUkVOVFNfUkVRVUVTVF9FUlJPUjogJ0NMSUVOVF9NT1ZFX1RPUlJFTlRTX1JFUVVFU1RfRVJST1InLFxuICBDTElFTlRfTU9WRV9UT1JSRU5UU19TVUNDRVNTOiAnQ0xJRU5UX01PVkVfVE9SUkVOVFNfU1VDQ0VTUycsXG4gIENMSUVOVF9UT1JSRU5UU19SRVFVRVNUX0VSUk9SOiAnQ0xJRU5UX1RPUlJFTlRTX1JFUVVFU1RfRVJST1InLFxuICBDTElFTlRfVE9SUkVOVF9TVEFUVVNfQ09VTlRfQ0hBTkdFOiAnQ0xJRU5UX1RPUlJFTlRfU1RBVFVTX0NPVU5UX0NIQU5HRScsXG4gIENMSUVOVF9UT1JSRU5UX1NUQVRVU19DT1VOVF9SRVFVRVNUX0VSUk9SOiAnQ0xJRU5UX1RPUlJFTlRfU1RBVFVTX0NPVU5UX1JFUVVFU1RfRVJST1InLFxuICBDTElFTlRfVE9SUkVOVF9UUkFDS0VSX0NPVU5UX0NIQU5HRTogJ0NMSUVOVF9UT1JSRU5UX1RSQUNLRVJfQ09VTlRfQ0hBTkdFJyxcbiAgQ0xJRU5UX1RPUlJFTlRfVFJBQ0tFUl9DT1VOVF9SRVFVRVNUX0VSUk9SOiAnQ0xJRU5UX1RPUlJFTlRfVFJBQ0tFUl9DT1VOVF9SRVFVRVNUX0VSUk9SJyxcbiAgQ0xJRU5UX1RPUlJFTlRTX1JFUVVFU1RfU1VDQ0VTUzogJ0NMSUVOVF9UT1JSRU5UU19SRVFVRVNUX1NVQ0NFU1MnLFxuICBDTElFTlRfVE9SUkVOVF9ERVRBSUxTX0NIQU5HRTogJ0NMSUVOVF9UT1JSRU5UX0RFVEFJTFNfQ0hBTkdFJyxcbiAgQ0xJRU5UX1RSQU5TRkVSX0RBVEFfUkVRVUVTVF9TVUNDRVNTOiAnQ0xJRU5UX1RSQU5TRkVSX0RBVEFfUkVRVUVTVF9TVUNDRVNTJyxcbiAgQ0xJRU5UX1RSQU5TRkVSX0RBVEFfUkVRVUVTVF9FUlJPUjogJ0NMSUVOVF9UUkFOU0ZFUl9EQVRBX1JFUVVFU1RfRVJST1InLFxuICBDTElFTlRfVFJBTlNGRVJfSElTVE9SWV9SRVFVRVNUX1NVQ0NFU1M6ICdDTElFTlRfVFJBTlNGRVJfSElTVE9SWV9SRVFVRVNUX1NVQ0NFU1MnLFxuICBDTElFTlRfVFJBTlNGRVJfSElTVE9SWV9SRVFVRVNUX0VSUk9SOiAnQ0xJRU5UX1RSQU5TRkVSX0hJU1RPUllfUkVRVUVTVF9FUlJPUicsXG4gIFVJX0NPTlRFWFRfTUVOVV9DSEFOR0U6ICdVSV9DT05URVhUX01FTlVfQ0hBTkdFJyxcbiAgVUlfTU9EQUxfQ0hBTkdFOiAnVUlfTU9EQUxfQ0hBTkdFJyxcbiAgVUlfTEFURVNUX1RPUlJFTlRfTE9DQVRJT05fQ0hBTkdFOiAnVUlfTEFURVNUX1RPUlJFTlRfTE9DQVRJT05fQ0hBTkdFJyxcbiAgVUlfVE9SUkVOVF9ERVRBSUxTX0hBU0hfQ0hBTkdFOiAnVUlfVE9SUkVOVF9ERVRBSUxTX0hBU0hfQ0hBTkdFJyxcbiAgVUlfVE9SUkVOVF9ERVRBSUxTX09QRU5fQ0hBTkdFOiAnVUlfVE9SUkVOVF9ERVRBSUxTX09QRU5fQ0hBTkdFJyxcbiAgVUlfVE9SUkVOVF9TRUxFQ1RJT05fQ0hBTkdFOiAnVUlfVE9SUkVOVF9TRUxFQ1RJT05fQ0hBTkdFJyxcbiAgVUlfVE9SUkVOVFNfRklMVEVSX0NIQU5HRTogJ1VJX1RPUlJFTlRTX0ZJTFRFUl9DSEFOR0UnLFxuICBVSV9UT1JSRU5UU19GSUxURVJfU1RBVFVTX0NIQU5HRTogJ1VJX1RPUlJFTlRTX0ZJTFRFUl9TVEFUVVNfQ0hBTkdFJyxcbiAgVUlfVE9SUkVOVFNfRklMVEVSX1RSQUNLRVJfQ0hBTkdFOiAnVUlfVE9SUkVOVFNfRklMVEVSX1RSQUNLRVJfQ0hBTkdFJyxcbiAgVUlfVE9SUkVOVFNfRklMVEVSX1NFQVJDSF9DSEFOR0U6ICdVSV9UT1JSRU5UU19GSUxURVJfU0VBUkNIX0NIQU5HRScsXG4gIFVJX1RPUlJFTlRTX1NPUlRfQ0hBTkdFOiAnVUlfVE9SUkVOVFNfU09SVF9DSEFOR0UnXG59O1xuXG5leHBvcnRzWydkZWZhdWx0J10gPSBFdmVudFR5cGVzO1xubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL2NsaWVudC9zb3VyY2Uvc2NyaXB0cy9jb25zdGFudHMvRXZlbnRUeXBlcy5qc1xuICoqIG1vZHVsZSBpZCA9IDE3NlxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIl0sInNvdXJjZVJvb3QiOiIifQ=="); + eval("'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nvar EventTypes = {\n CLIENT_ADD_TORRENT_ERROR: 'CLIENT_ADD_TORRENT_ERROR',\n CLIENT_ADD_TORRENT_SUCCESS: 'CLIENT_ADD_TORRENT_SUCCESS',\n CLIENT_SET_THROTTLE_ERROR: 'CLIENT_SET_THROTTLE_ERROR',\n CLIENT_SET_THROTTLE_SUCCESS: 'CLIENT_SET_THROTTLE_SUCCESS',\n CLIENT_MOVE_TORRENTS_REQUEST_ERROR: 'CLIENT_MOVE_TORRENTS_REQUEST_ERROR',\n CLIENT_MOVE_TORRENTS_SUCCESS: 'CLIENT_MOVE_TORRENTS_SUCCESS',\n CLIENT_TORRENTS_REQUEST_ERROR: 'CLIENT_TORRENTS_REQUEST_ERROR',\n CLIENT_TORRENT_STATUS_COUNT_CHANGE: 'CLIENT_TORRENT_STATUS_COUNT_CHANGE',\n CLIENT_TORRENT_STATUS_COUNT_REQUEST_ERROR: 'CLIENT_TORRENT_STATUS_COUNT_REQUEST_ERROR',\n CLIENT_TORRENT_TRACKER_COUNT_CHANGE: 'CLIENT_TORRENT_TRACKER_COUNT_CHANGE',\n CLIENT_TORRENT_TRACKER_COUNT_REQUEST_ERROR: 'CLIENT_TORRENT_TRACKER_COUNT_REQUEST_ERROR',\n CLIENT_TORRENTS_REQUEST_SUCCESS: 'CLIENT_TORRENTS_REQUEST_SUCCESS',\n CLIENT_TORRENT_DETAILS_CHANGE: 'CLIENT_TORRENT_DETAILS_CHANGE',\n CLIENT_TRANSFER_DATA_REQUEST_SUCCESS: 'CLIENT_TRANSFER_DATA_REQUEST_SUCCESS',\n CLIENT_TRANSFER_DATA_REQUEST_ERROR: 'CLIENT_TRANSFER_DATA_REQUEST_ERROR',\n CLIENT_TRANSFER_HISTORY_REQUEST_SUCCESS: 'CLIENT_TRANSFER_HISTORY_REQUEST_SUCCESS',\n CLIENT_TRANSFER_HISTORY_REQUEST_ERROR: 'CLIENT_TRANSFER_HISTORY_REQUEST_ERROR',\n UI_CONTEXT_MENU_CHANGE: 'UI_CONTEXT_MENU_CHANGE',\n UI_DEPENDENCIES_LOADED: 'UI_DEPENDENCIES_LOADED',\n UI_MODAL_CHANGE: 'UI_MODAL_CHANGE',\n UI_LATEST_TORRENT_LOCATION_CHANGE: 'UI_LATEST_TORRENT_LOCATION_CHANGE',\n UI_TORRENT_DETAILS_HASH_CHANGE: 'UI_TORRENT_DETAILS_HASH_CHANGE',\n UI_TORRENT_DETAILS_OPEN_CHANGE: 'UI_TORRENT_DETAILS_OPEN_CHANGE',\n UI_TORRENT_SELECTION_CHANGE: 'UI_TORRENT_SELECTION_CHANGE',\n UI_TORRENTS_FILTER_CHANGE: 'UI_TORRENTS_FILTER_CHANGE',\n UI_TORRENTS_FILTER_STATUS_CHANGE: 'UI_TORRENTS_FILTER_STATUS_CHANGE',\n UI_TORRENTS_FILTER_TRACKER_CHANGE: 'UI_TORRENTS_FILTER_TRACKER_CHANGE',\n UI_TORRENTS_FILTER_SEARCH_CHANGE: 'UI_TORRENTS_FILTER_SEARCH_CHANGE',\n UI_TORRENTS_SORT_CHANGE: 'UI_TORRENTS_SORT_CHANGE'\n};\n\nexports['default'] = EventTypes;\nmodule.exports = exports['default'];//@ sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9jbGllbnQvc291cmNlL3NjcmlwdHMvY29uc3RhbnRzL0V2ZW50VHlwZXMuanM/ZTRiMyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7QUFFQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EiLCJmaWxlIjoiMTc2LmpzIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbnZhciBFdmVudFR5cGVzID0ge1xuICBDTElFTlRfQUREX1RPUlJFTlRfRVJST1I6ICdDTElFTlRfQUREX1RPUlJFTlRfRVJST1InLFxuICBDTElFTlRfQUREX1RPUlJFTlRfU1VDQ0VTUzogJ0NMSUVOVF9BRERfVE9SUkVOVF9TVUNDRVNTJyxcbiAgQ0xJRU5UX1NFVF9USFJPVFRMRV9FUlJPUjogJ0NMSUVOVF9TRVRfVEhST1RUTEVfRVJST1InLFxuICBDTElFTlRfU0VUX1RIUk9UVExFX1NVQ0NFU1M6ICdDTElFTlRfU0VUX1RIUk9UVExFX1NVQ0NFU1MnLFxuICBDTElFTlRfTU9WRV9UT1JSRU5UU19SRVFVRVNUX0VSUk9SOiAnQ0xJRU5UX01PVkVfVE9SUkVOVFNfUkVRVUVTVF9FUlJPUicsXG4gIENMSUVOVF9NT1ZFX1RPUlJFTlRTX1NVQ0NFU1M6ICdDTElFTlRfTU9WRV9UT1JSRU5UU19TVUNDRVNTJyxcbiAgQ0xJRU5UX1RPUlJFTlRTX1JFUVVFU1RfRVJST1I6ICdDTElFTlRfVE9SUkVOVFNfUkVRVUVTVF9FUlJPUicsXG4gIENMSUVOVF9UT1JSRU5UX1NUQVRVU19DT1VOVF9DSEFOR0U6ICdDTElFTlRfVE9SUkVOVF9TVEFUVVNfQ09VTlRfQ0hBTkdFJyxcbiAgQ0xJRU5UX1RPUlJFTlRfU1RBVFVTX0NPVU5UX1JFUVVFU1RfRVJST1I6ICdDTElFTlRfVE9SUkVOVF9TVEFUVVNfQ09VTlRfUkVRVUVTVF9FUlJPUicsXG4gIENMSUVOVF9UT1JSRU5UX1RSQUNLRVJfQ09VTlRfQ0hBTkdFOiAnQ0xJRU5UX1RPUlJFTlRfVFJBQ0tFUl9DT1VOVF9DSEFOR0UnLFxuICBDTElFTlRfVE9SUkVOVF9UUkFDS0VSX0NPVU5UX1JFUVVFU1RfRVJST1I6ICdDTElFTlRfVE9SUkVOVF9UUkFDS0VSX0NPVU5UX1JFUVVFU1RfRVJST1InLFxuICBDTElFTlRfVE9SUkVOVFNfUkVRVUVTVF9TVUNDRVNTOiAnQ0xJRU5UX1RPUlJFTlRTX1JFUVVFU1RfU1VDQ0VTUycsXG4gIENMSUVOVF9UT1JSRU5UX0RFVEFJTFNfQ0hBTkdFOiAnQ0xJRU5UX1RPUlJFTlRfREVUQUlMU19DSEFOR0UnLFxuICBDTElFTlRfVFJBTlNGRVJfREFUQV9SRVFVRVNUX1NVQ0NFU1M6ICdDTElFTlRfVFJBTlNGRVJfREFUQV9SRVFVRVNUX1NVQ0NFU1MnLFxuICBDTElFTlRfVFJBTlNGRVJfREFUQV9SRVFVRVNUX0VSUk9SOiAnQ0xJRU5UX1RSQU5TRkVSX0RBVEFfUkVRVUVTVF9FUlJPUicsXG4gIENMSUVOVF9UUkFOU0ZFUl9ISVNUT1JZX1JFUVVFU1RfU1VDQ0VTUzogJ0NMSUVOVF9UUkFOU0ZFUl9ISVNUT1JZX1JFUVVFU1RfU1VDQ0VTUycsXG4gIENMSUVOVF9UUkFOU0ZFUl9ISVNUT1JZX1JFUVVFU1RfRVJST1I6ICdDTElFTlRfVFJBTlNGRVJfSElTVE9SWV9SRVFVRVNUX0VSUk9SJyxcbiAgVUlfQ09OVEVYVF9NRU5VX0NIQU5HRTogJ1VJX0NPTlRFWFRfTUVOVV9DSEFOR0UnLFxuICBVSV9ERVBFTkRFTkNJRVNfTE9BREVEOiAnVUlfREVQRU5ERU5DSUVTX0xPQURFRCcsXG4gIFVJX01PREFMX0NIQU5HRTogJ1VJX01PREFMX0NIQU5HRScsXG4gIFVJX0xBVEVTVF9UT1JSRU5UX0xPQ0FUSU9OX0NIQU5HRTogJ1VJX0xBVEVTVF9UT1JSRU5UX0xPQ0FUSU9OX0NIQU5HRScsXG4gIFVJX1RPUlJFTlRfREVUQUlMU19IQVNIX0NIQU5HRTogJ1VJX1RPUlJFTlRfREVUQUlMU19IQVNIX0NIQU5HRScsXG4gIFVJX1RPUlJFTlRfREVUQUlMU19PUEVOX0NIQU5HRTogJ1VJX1RPUlJFTlRfREVUQUlMU19PUEVOX0NIQU5HRScsXG4gIFVJX1RPUlJFTlRfU0VMRUNUSU9OX0NIQU5HRTogJ1VJX1RPUlJFTlRfU0VMRUNUSU9OX0NIQU5HRScsXG4gIFVJX1RPUlJFTlRTX0ZJTFRFUl9DSEFOR0U6ICdVSV9UT1JSRU5UU19GSUxURVJfQ0hBTkdFJyxcbiAgVUlfVE9SUkVOVFNfRklMVEVSX1NUQVRVU19DSEFOR0U6ICdVSV9UT1JSRU5UU19GSUxURVJfU1RBVFVTX0NIQU5HRScsXG4gIFVJX1RPUlJFTlRTX0ZJTFRFUl9UUkFDS0VSX0NIQU5HRTogJ1VJX1RPUlJFTlRTX0ZJTFRFUl9UUkFDS0VSX0NIQU5HRScsXG4gIFVJX1RPUlJFTlRTX0ZJTFRFUl9TRUFSQ0hfQ0hBTkdFOiAnVUlfVE9SUkVOVFNfRklMVEVSX1NFQVJDSF9DSEFOR0UnLFxuICBVSV9UT1JSRU5UU19TT1JUX0NIQU5HRTogJ1VJX1RPUlJFTlRTX1NPUlRfQ0hBTkdFJ1xufTtcblxuZXhwb3J0c1snZGVmYXVsdCddID0gRXZlbnRUeXBlcztcbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9jbGllbnQvc291cmNlL3NjcmlwdHMvY29uc3RhbnRzL0V2ZW50VHlwZXMuanNcbiAqKiBtb2R1bGUgaWQgPSAxNzZcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyJdLCJzb3VyY2VSb290IjoiIn0="); /***/ }, /* 177 */ /***/ function(module, exports, __webpack_require__) { - eval("'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\n\nvar _get = function get(_x3, _x4, _x5) { var _again = true; _function: while (_again) { var object = _x3, property = _x4, receiver = _x5; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x3 = parent; _x4 = property; _x5 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _constantsActionTypes = __webpack_require__(178);\n\nvar _constantsActionTypes2 = _interopRequireDefault(_constantsActionTypes);\n\nvar _dispatcherAppDispatcher = __webpack_require__(179);\n\nvar _dispatcherAppDispatcher2 = _interopRequireDefault(_dispatcherAppDispatcher);\n\nvar _BaseStore2 = __webpack_require__(183);\n\nvar _BaseStore3 = _interopRequireDefault(_BaseStore2);\n\nvar _constantsEventTypes = __webpack_require__(176);\n\nvar _constantsEventTypes2 = _interopRequireDefault(_constantsEventTypes);\n\nvar _utilSelectTorrents = __webpack_require__(185);\n\nvar _actionsTorrentActions = __webpack_require__(186);\n\nvar _actionsTorrentActions2 = _interopRequireDefault(_actionsTorrentActions);\n\nvar _TorrentStore = __webpack_require__(201);\n\nvar _TorrentStore2 = _interopRequireDefault(_TorrentStore);\n\nvar UIStoreClass = (function (_BaseStore) {\n _inherits(UIStoreClass, _BaseStore);\n\n function UIStoreClass() {\n _classCallCheck(this, UIStoreClass);\n\n _get(Object.getPrototypeOf(UIStoreClass.prototype), 'constructor', this).call(this);\n\n this.activeContextMenu = null;\n this.activeModal = null;\n this.latestTorrentLocation = null;\n this.torrentDetailsHash = null;\n this.torrentDetailsOpen = false;\n }\n\n _createClass(UIStoreClass, [{\n key: 'closeTorrentDetailsPanel',\n value: function closeTorrentDetailsPanel() {\n if (this.torrentDetailsOpen) {\n this.torrentDetailsOpen = false;\n this.emit(_constantsEventTypes2['default'].UI_TORRENT_DETAILS_OPEN_CHANGE);\n }\n }\n }, {\n key: 'fetchLatestTorrentLocation',\n value: function fetchLatestTorrentLocation() {\n _actionsTorrentActions2['default'].fetchLatestTorrentLocation();\n }\n }, {\n key: 'getActiveContextMenu',\n value: function getActiveContextMenu() {\n return this.activeContextMenu;\n }\n }, {\n key: 'getActiveModal',\n value: function getActiveModal() {\n return this.activeModal;\n }\n }, {\n key: 'getLatestTorrentLocation',\n value: function getLatestTorrentLocation() {\n return this.latestTorrentLocation;\n }\n }, {\n key: 'getTorrentDetailsHash',\n value: function getTorrentDetailsHash() {\n return this.torrentDetailsHash;\n }\n }, {\n key: 'handleLatestTorrentLocationRequestSuccess',\n value: function handleLatestTorrentLocationRequestSuccess(location) {\n this.latestTorrentLocation = location;\n this.emit(_constantsEventTypes2['default'].UI_LATEST_TORRENT_LOCATION_CHANGE);\n }\n }, {\n key: 'handleLatestTorrentLocationRequestError',\n value: function handleLatestTorrentLocationRequestError(error) {\n console.log(error);\n }\n }, {\n key: 'handleTorrentClick',\n value: function handleTorrentClick(hash) {\n this.torrentDetailsHash = hash;\n this.emit(_constantsEventTypes2['default'].UI_TORRENT_DETAILS_HASH_CHANGE);\n }\n }, {\n key: 'handleTorrentDetailsClick',\n value: function handleTorrentDetailsClick(hash, event) {\n this.torrentDetailsOpen = !this.torrentDetailsOpen;\n this.emit(_constantsEventTypes2['default'].UI_TORRENT_DETAILS_OPEN_CHANGE);\n }\n }, {\n key: 'isTorrentDetailsOpen',\n value: function isTorrentDetailsOpen() {\n return this.torrentDetailsOpen;\n }\n }, {\n key: 'setActiveContextMenu',\n value: function setActiveContextMenu() {\n var contextMenu = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n this.activeContextMenu = contextMenu;\n this.emit(_constantsEventTypes2['default'].UI_CONTEXT_MENU_CHANGE);\n }\n }, {\n key: 'setActiveModal',\n value: function setActiveModal() {\n var modal = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n this.activeModal = modal;\n this.emit(_constantsEventTypes2['default'].UI_MODAL_CHANGE);\n }\n }]);\n\n return UIStoreClass;\n})(_BaseStore3['default']);\n\nvar UIStore = new UIStoreClass();\n\nUIStore.dispatcherID = _dispatcherAppDispatcher2['default'].register(function (payload) {\n var action = payload.action;\n var source = payload.source;\n\n switch (action.type) {\n case _constantsActionTypes2['default'].UI_CLICK_TORRENT_DETAILS:\n UIStore.handleTorrentDetailsClick(action.data.hash, action.data.event);\n break;\n case _constantsActionTypes2['default'].UI_CLICK_TORRENT:\n UIStore.handleTorrentClick(action.data.hash);\n break;\n case _constantsActionTypes2['default'].UI_DISPLAY_MODAL:\n UIStore.setActiveModal(action.data);\n break;\n case _constantsActionTypes2['default'].CLIENT_MOVE_TORRENTS_SUCCESS:\n UIStore.setActiveModal(null);\n break;\n case _constantsActionTypes2['default'].UI_DISPLAY_CONTEXT_MENU:\n UIStore.setActiveContextMenu(action.data);\n break;\n case _constantsActionTypes2['default'].UI_LATEST_TORRENT_LOCATION_REQUEST_SUCCESS:\n UIStore.handleLatestTorrentLocationRequestSuccess(action.data.path);\n break;\n case _constantsActionTypes2['default'].UI_LATEST_TORRENT_LOCATION_REQUEST_ERROR:\n UIStore.handleLatestTorrentLocationRequestError(action.error);\n break;\n }\n});\n\nexports['default'] = UIStore;\nmodule.exports = exports['default'];//@ sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9jbGllbnQvc291cmNlL3NjcmlwdHMvc3RvcmVzL1VJU3RvcmUuanM/N2FkMCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7QUFFQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRCxpQ0FBaUMsMkNBQTJDLGdCQUFnQixrQkFBa0IsT0FBTywyQkFBMkIsd0RBQXdELGdDQUFnQyx1REFBdUQsMkRBQTJELEVBQUUsRUFBRSx5REFBeUQscUVBQXFFLDZEQUE2RCxvQkFBb0IsR0FBRyxFQUFFOztBQUVsakIsd0NBQXdDLG1CQUFtQiw0QkFBNEIsa0RBQWtELGdCQUFnQixrREFBa0QsOERBQThELDBCQUEwQiw0Q0FBNEMsdUJBQXVCLGtCQUFrQixFQUFFLE9BQU8sY0FBYyxnQkFBZ0IsZ0JBQWdCLGVBQWUsMkJBQTJCLG9CQUFvQixFQUFFLEVBQUUsNEJBQTRCLG1CQUFtQixFQUFFLE9BQU8sdUJBQXVCLDRCQUE0QixrQkFBa0IsRUFBRSw4QkFBOEIsRUFBRSxFQUFFOztBQUVscEIsc0NBQXNDLHVDQUF1QyxrQkFBa0I7O0FBRS9GLGlEQUFpRCwwQ0FBMEMsMERBQTBELEVBQUU7O0FBRXZKLDBDQUEwQywrREFBK0QscUdBQXFHLEVBQUUseUVBQXlFLGVBQWUseUVBQXlFLEVBQUUsRUFBRSx1SEFBdUg7O0FBRTVlOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsZ0ZBQWdGOztBQUVoRjtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLDBFQUEwRTs7QUFFMUU7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUM7O0FBRUQ7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0EiLCJmaWxlIjoiMTc3LmpzIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcblxudmFyIF9jcmVhdGVDbGFzcyA9IChmdW5jdGlvbiAoKSB7IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoJ3ZhbHVlJyBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpOyB9IH0gcmV0dXJuIGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfTsgfSkoKTtcblxudmFyIF9nZXQgPSBmdW5jdGlvbiBnZXQoX3gzLCBfeDQsIF94NSkgeyB2YXIgX2FnYWluID0gdHJ1ZTsgX2Z1bmN0aW9uOiB3aGlsZSAoX2FnYWluKSB7IHZhciBvYmplY3QgPSBfeDMsIHByb3BlcnR5ID0gX3g0LCByZWNlaXZlciA9IF94NTsgX2FnYWluID0gZmFsc2U7IGlmIChvYmplY3QgPT09IG51bGwpIG9iamVjdCA9IEZ1bmN0aW9uLnByb3RvdHlwZTsgdmFyIGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgcHJvcGVydHkpOyBpZiAoZGVzYyA9PT0gdW5kZWZpbmVkKSB7IHZhciBwYXJlbnQgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Yob2JqZWN0KTsgaWYgKHBhcmVudCA9PT0gbnVsbCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9IGVsc2UgeyBfeDMgPSBwYXJlbnQ7IF94NCA9IHByb3BlcnR5OyBfeDUgPSByZWNlaXZlcjsgX2FnYWluID0gdHJ1ZTsgZGVzYyA9IHBhcmVudCA9IHVuZGVmaW5lZDsgY29udGludWUgX2Z1bmN0aW9uOyB9IH0gZWxzZSBpZiAoJ3ZhbHVlJyBpbiBkZXNjKSB7IHJldHVybiBkZXNjLnZhbHVlOyB9IGVsc2UgeyB2YXIgZ2V0dGVyID0gZGVzYy5nZXQ7IGlmIChnZXR0ZXIgPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9IHJldHVybiBnZXR0ZXIuY2FsbChyZWNlaXZlcik7IH0gfSB9O1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyAnZGVmYXVsdCc6IG9iaiB9OyB9XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcignQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uJyk7IH0gfVxuXG5mdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHsgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSAnZnVuY3Rpb24nICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcignU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAnICsgdHlwZW9mIHN1cGVyQ2xhc3MpOyB9IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogc3ViQ2xhc3MsIGVudW1lcmFibGU6IGZhbHNlLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0gfSk7IGlmIChzdXBlckNsYXNzKSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIDogc3ViQ2xhc3MuX19wcm90b19fID0gc3VwZXJDbGFzczsgfVxuXG52YXIgX2NvbnN0YW50c0FjdGlvblR5cGVzID0gcmVxdWlyZSgnLi4vY29uc3RhbnRzL0FjdGlvblR5cGVzJyk7XG5cbnZhciBfY29uc3RhbnRzQWN0aW9uVHlwZXMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY29uc3RhbnRzQWN0aW9uVHlwZXMpO1xuXG52YXIgX2Rpc3BhdGNoZXJBcHBEaXNwYXRjaGVyID0gcmVxdWlyZSgnLi4vZGlzcGF0Y2hlci9BcHBEaXNwYXRjaGVyJyk7XG5cbnZhciBfZGlzcGF0Y2hlckFwcERpc3BhdGNoZXIyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZGlzcGF0Y2hlckFwcERpc3BhdGNoZXIpO1xuXG52YXIgX0Jhc2VTdG9yZTIgPSByZXF1aXJlKCcuL0Jhc2VTdG9yZScpO1xuXG52YXIgX0Jhc2VTdG9yZTMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9CYXNlU3RvcmUyKTtcblxudmFyIF9jb25zdGFudHNFdmVudFR5cGVzID0gcmVxdWlyZSgnLi4vY29uc3RhbnRzL0V2ZW50VHlwZXMnKTtcblxudmFyIF9jb25zdGFudHNFdmVudFR5cGVzMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2NvbnN0YW50c0V2ZW50VHlwZXMpO1xuXG52YXIgX3V0aWxTZWxlY3RUb3JyZW50cyA9IHJlcXVpcmUoJy4uL3V0aWwvc2VsZWN0VG9ycmVudHMnKTtcblxudmFyIF9hY3Rpb25zVG9ycmVudEFjdGlvbnMgPSByZXF1aXJlKCcuLi9hY3Rpb25zL1RvcnJlbnRBY3Rpb25zJyk7XG5cbnZhciBfYWN0aW9uc1RvcnJlbnRBY3Rpb25zMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2FjdGlvbnNUb3JyZW50QWN0aW9ucyk7XG5cbnZhciBfVG9ycmVudFN0b3JlID0gcmVxdWlyZSgnLi9Ub3JyZW50U3RvcmUnKTtcblxudmFyIF9Ub3JyZW50U3RvcmUyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfVG9ycmVudFN0b3JlKTtcblxudmFyIFVJU3RvcmVDbGFzcyA9IChmdW5jdGlvbiAoX0Jhc2VTdG9yZSkge1xuICBfaW5oZXJpdHMoVUlTdG9yZUNsYXNzLCBfQmFzZVN0b3JlKTtcblxuICBmdW5jdGlvbiBVSVN0b3JlQ2xhc3MoKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFVJU3RvcmVDbGFzcyk7XG5cbiAgICBfZ2V0KE9iamVjdC5nZXRQcm90b3R5cGVPZihVSVN0b3JlQ2xhc3MucHJvdG90eXBlKSwgJ2NvbnN0cnVjdG9yJywgdGhpcykuY2FsbCh0aGlzKTtcblxuICAgIHRoaXMuYWN0aXZlQ29udGV4dE1lbnUgPSBudWxsO1xuICAgIHRoaXMuYWN0aXZlTW9kYWwgPSBudWxsO1xuICAgIHRoaXMubGF0ZXN0VG9ycmVudExvY2F0aW9uID0gbnVsbDtcbiAgICB0aGlzLnRvcnJlbnREZXRhaWxzSGFzaCA9IG51bGw7XG4gICAgdGhpcy50b3JyZW50RGV0YWlsc09wZW4gPSBmYWxzZTtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhVSVN0b3JlQ2xhc3MsIFt7XG4gICAga2V5OiAnY2xvc2VUb3JyZW50RGV0YWlsc1BhbmVsJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gY2xvc2VUb3JyZW50RGV0YWlsc1BhbmVsKCkge1xuICAgICAgaWYgKHRoaXMudG9ycmVudERldGFpbHNPcGVuKSB7XG4gICAgICAgIHRoaXMudG9ycmVudERldGFpbHNPcGVuID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZW1pdChfY29uc3RhbnRzRXZlbnRUeXBlczJbJ2RlZmF1bHQnXS5VSV9UT1JSRU5UX0RFVEFJTFNfT1BFTl9DSEFOR0UpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2ZldGNoTGF0ZXN0VG9ycmVudExvY2F0aW9uJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gZmV0Y2hMYXRlc3RUb3JyZW50TG9jYXRpb24oKSB7XG4gICAgICBfYWN0aW9uc1RvcnJlbnRBY3Rpb25zMlsnZGVmYXVsdCddLmZldGNoTGF0ZXN0VG9ycmVudExvY2F0aW9uKCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnZ2V0QWN0aXZlQ29udGV4dE1lbnUnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRBY3RpdmVDb250ZXh0TWVudSgpIHtcbiAgICAgIHJldHVybiB0aGlzLmFjdGl2ZUNvbnRleHRNZW51O1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2dldEFjdGl2ZU1vZGFsJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0QWN0aXZlTW9kYWwoKSB7XG4gICAgICByZXR1cm4gdGhpcy5hY3RpdmVNb2RhbDtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdnZXRMYXRlc3RUb3JyZW50TG9jYXRpb24nLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRMYXRlc3RUb3JyZW50TG9jYXRpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy5sYXRlc3RUb3JyZW50TG9jYXRpb247XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnZ2V0VG9ycmVudERldGFpbHNIYXNoJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0VG9ycmVudERldGFpbHNIYXNoKCkge1xuICAgICAgcmV0dXJuIHRoaXMudG9ycmVudERldGFpbHNIYXNoO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2hhbmRsZUxhdGVzdFRvcnJlbnRMb2NhdGlvblJlcXVlc3RTdWNjZXNzJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gaGFuZGxlTGF0ZXN0VG9ycmVudExvY2F0aW9uUmVxdWVzdFN1Y2Nlc3MobG9jYXRpb24pIHtcbiAgICAgIHRoaXMubGF0ZXN0VG9ycmVudExvY2F0aW9uID0gbG9jYXRpb247XG4gICAgICB0aGlzLmVtaXQoX2NvbnN0YW50c0V2ZW50VHlwZXMyWydkZWZhdWx0J10uVUlfTEFURVNUX1RPUlJFTlRfTE9DQVRJT05fQ0hBTkdFKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdoYW5kbGVMYXRlc3RUb3JyZW50TG9jYXRpb25SZXF1ZXN0RXJyb3InLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBoYW5kbGVMYXRlc3RUb3JyZW50TG9jYXRpb25SZXF1ZXN0RXJyb3IoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdoYW5kbGVUb3JyZW50Q2xpY2snLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBoYW5kbGVUb3JyZW50Q2xpY2soaGFzaCkge1xuICAgICAgdGhpcy50b3JyZW50RGV0YWlsc0hhc2ggPSBoYXNoO1xuICAgICAgdGhpcy5lbWl0KF9jb25zdGFudHNFdmVudFR5cGVzMlsnZGVmYXVsdCddLlVJX1RPUlJFTlRfREVUQUlMU19IQVNIX0NIQU5HRSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnaGFuZGxlVG9ycmVudERldGFpbHNDbGljaycsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGhhbmRsZVRvcnJlbnREZXRhaWxzQ2xpY2soaGFzaCwgZXZlbnQpIHtcbiAgICAgIHRoaXMudG9ycmVudERldGFpbHNPcGVuID0gIXRoaXMudG9ycmVudERldGFpbHNPcGVuO1xuICAgICAgdGhpcy5lbWl0KF9jb25zdGFudHNFdmVudFR5cGVzMlsnZGVmYXVsdCddLlVJX1RPUlJFTlRfREVUQUlMU19PUEVOX0NIQU5HRSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnaXNUb3JyZW50RGV0YWlsc09wZW4nLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBpc1RvcnJlbnREZXRhaWxzT3BlbigpIHtcbiAgICAgIHJldHVybiB0aGlzLnRvcnJlbnREZXRhaWxzT3BlbjtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdzZXRBY3RpdmVDb250ZXh0TWVudScsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldEFjdGl2ZUNvbnRleHRNZW51KCkge1xuICAgICAgdmFyIGNvbnRleHRNZW51ID0gYXJndW1lbnRzLmxlbmd0aCA8PSAwIHx8IGFyZ3VtZW50c1swXSA9PT0gdW5kZWZpbmVkID8ge30gOiBhcmd1bWVudHNbMF07XG5cbiAgICAgIHRoaXMuYWN0aXZlQ29udGV4dE1lbnUgPSBjb250ZXh0TWVudTtcbiAgICAgIHRoaXMuZW1pdChfY29uc3RhbnRzRXZlbnRUeXBlczJbJ2RlZmF1bHQnXS5VSV9DT05URVhUX01FTlVfQ0hBTkdFKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdzZXRBY3RpdmVNb2RhbCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldEFjdGl2ZU1vZGFsKCkge1xuICAgICAgdmFyIG1vZGFsID0gYXJndW1lbnRzLmxlbmd0aCA8PSAwIHx8IGFyZ3VtZW50c1swXSA9PT0gdW5kZWZpbmVkID8ge30gOiBhcmd1bWVudHNbMF07XG5cbiAgICAgIHRoaXMuYWN0aXZlTW9kYWwgPSBtb2RhbDtcbiAgICAgIHRoaXMuZW1pdChfY29uc3RhbnRzRXZlbnRUeXBlczJbJ2RlZmF1bHQnXS5VSV9NT0RBTF9DSEFOR0UpO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBVSVN0b3JlQ2xhc3M7XG59KShfQmFzZVN0b3JlM1snZGVmYXVsdCddKTtcblxudmFyIFVJU3RvcmUgPSBuZXcgVUlTdG9yZUNsYXNzKCk7XG5cblVJU3RvcmUuZGlzcGF0Y2hlcklEID0gX2Rpc3BhdGNoZXJBcHBEaXNwYXRjaGVyMlsnZGVmYXVsdCddLnJlZ2lzdGVyKGZ1bmN0aW9uIChwYXlsb2FkKSB7XG4gIHZhciBhY3Rpb24gPSBwYXlsb2FkLmFjdGlvbjtcbiAgdmFyIHNvdXJjZSA9IHBheWxvYWQuc291cmNlO1xuXG4gIHN3aXRjaCAoYWN0aW9uLnR5cGUpIHtcbiAgICBjYXNlIF9jb25zdGFudHNBY3Rpb25UeXBlczJbJ2RlZmF1bHQnXS5VSV9DTElDS19UT1JSRU5UX0RFVEFJTFM6XG4gICAgICBVSVN0b3JlLmhhbmRsZVRvcnJlbnREZXRhaWxzQ2xpY2soYWN0aW9uLmRhdGEuaGFzaCwgYWN0aW9uLmRhdGEuZXZlbnQpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBfY29uc3RhbnRzQWN0aW9uVHlwZXMyWydkZWZhdWx0J10uVUlfQ0xJQ0tfVE9SUkVOVDpcbiAgICAgIFVJU3RvcmUuaGFuZGxlVG9ycmVudENsaWNrKGFjdGlvbi5kYXRhLmhhc2gpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBfY29uc3RhbnRzQWN0aW9uVHlwZXMyWydkZWZhdWx0J10uVUlfRElTUExBWV9NT0RBTDpcbiAgICAgIFVJU3RvcmUuc2V0QWN0aXZlTW9kYWwoYWN0aW9uLmRhdGEpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBfY29uc3RhbnRzQWN0aW9uVHlwZXMyWydkZWZhdWx0J10uQ0xJRU5UX01PVkVfVE9SUkVOVFNfU1VDQ0VTUzpcbiAgICAgIFVJU3RvcmUuc2V0QWN0aXZlTW9kYWwobnVsbCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIF9jb25zdGFudHNBY3Rpb25UeXBlczJbJ2RlZmF1bHQnXS5VSV9ESVNQTEFZX0NPTlRFWFRfTUVOVTpcbiAgICAgIFVJU3RvcmUuc2V0QWN0aXZlQ29udGV4dE1lbnUoYWN0aW9uLmRhdGEpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBfY29uc3RhbnRzQWN0aW9uVHlwZXMyWydkZWZhdWx0J10uVUlfTEFURVNUX1RPUlJFTlRfTE9DQVRJT05fUkVRVUVTVF9TVUNDRVNTOlxuICAgICAgVUlTdG9yZS5oYW5kbGVMYXRlc3RUb3JyZW50TG9jYXRpb25SZXF1ZXN0U3VjY2VzcyhhY3Rpb24uZGF0YS5wYXRoKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgX2NvbnN0YW50c0FjdGlvblR5cGVzMlsnZGVmYXVsdCddLlVJX0xBVEVTVF9UT1JSRU5UX0xPQ0FUSU9OX1JFUVVFU1RfRVJST1I6XG4gICAgICBVSVN0b3JlLmhhbmRsZUxhdGVzdFRvcnJlbnRMb2NhdGlvblJlcXVlc3RFcnJvcihhY3Rpb24uZXJyb3IpO1xuICAgICAgYnJlYWs7XG4gIH1cbn0pO1xuXG5leHBvcnRzWydkZWZhdWx0J10gPSBVSVN0b3JlO1xubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL2NsaWVudC9zb3VyY2Uvc2NyaXB0cy9zdG9yZXMvVUlTdG9yZS5qc1xuICoqIG1vZHVsZSBpZCA9IDE3N1xuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIl0sInNvdXJjZVJvb3QiOiIifQ=="); + eval("'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\n\nvar _get = function get(_x3, _x4, _x5) { var _again = true; _function: while (_again) { var object = _x3, property = _x4, receiver = _x5; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x3 = parent; _x4 = property; _x5 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _constantsActionTypes = __webpack_require__(178);\n\nvar _constantsActionTypes2 = _interopRequireDefault(_constantsActionTypes);\n\nvar _dispatcherAppDispatcher = __webpack_require__(179);\n\nvar _dispatcherAppDispatcher2 = _interopRequireDefault(_dispatcherAppDispatcher);\n\nvar _BaseStore2 = __webpack_require__(183);\n\nvar _BaseStore3 = _interopRequireDefault(_BaseStore2);\n\nvar _constantsEventTypes = __webpack_require__(176);\n\nvar _constantsEventTypes2 = _interopRequireDefault(_constantsEventTypes);\n\nvar _utilSelectTorrents = __webpack_require__(185);\n\nvar _actionsTorrentActions = __webpack_require__(186);\n\nvar _actionsTorrentActions2 = _interopRequireDefault(_actionsTorrentActions);\n\nvar _TorrentStore = __webpack_require__(201);\n\nvar _TorrentStore2 = _interopRequireDefault(_TorrentStore);\n\nvar UIStoreClass = (function (_BaseStore) {\n _inherits(UIStoreClass, _BaseStore);\n\n function UIStoreClass() {\n _classCallCheck(this, UIStoreClass);\n\n _get(Object.getPrototypeOf(UIStoreClass.prototype), 'constructor', this).call(this);\n\n this.activeContextMenu = null;\n this.activeModal = null;\n this.dependencies = [];\n this.latestTorrentLocation = null;\n this.torrentDetailsHash = null;\n this.torrentDetailsOpen = false;\n }\n\n _createClass(UIStoreClass, [{\n key: 'closeTorrentDetailsPanel',\n value: function closeTorrentDetailsPanel() {\n if (this.torrentDetailsOpen) {\n this.torrentDetailsOpen = false;\n this.emit(_constantsEventTypes2['default'].UI_TORRENT_DETAILS_OPEN_CHANGE);\n }\n }\n }, {\n key: 'fetchLatestTorrentLocation',\n value: function fetchLatestTorrentLocation() {\n _actionsTorrentActions2['default'].fetchLatestTorrentLocation();\n }\n }, {\n key: 'getActiveContextMenu',\n value: function getActiveContextMenu() {\n return this.activeContextMenu;\n }\n }, {\n key: 'getActiveModal',\n value: function getActiveModal() {\n return this.activeModal;\n }\n }, {\n key: 'getLatestTorrentLocation',\n value: function getLatestTorrentLocation() {\n return this.latestTorrentLocation;\n }\n }, {\n key: 'getTorrentDetailsHash',\n value: function getTorrentDetailsHash() {\n return this.torrentDetailsHash;\n }\n }, {\n key: 'handleLatestTorrentLocationRequestSuccess',\n value: function handleLatestTorrentLocationRequestSuccess(location) {\n this.latestTorrentLocation = location;\n this.emit(_constantsEventTypes2['default'].UI_LATEST_TORRENT_LOCATION_CHANGE);\n }\n }, {\n key: 'handleLatestTorrentLocationRequestError',\n value: function handleLatestTorrentLocationRequestError(error) {\n console.log(error);\n }\n }, {\n key: 'handleTorrentClick',\n value: function handleTorrentClick(hash) {\n this.torrentDetailsHash = hash;\n this.emit(_constantsEventTypes2['default'].UI_TORRENT_DETAILS_HASH_CHANGE);\n }\n }, {\n key: 'handleTorrentDetailsClick',\n value: function handleTorrentDetailsClick(hash, event) {\n this.torrentDetailsOpen = !this.torrentDetailsOpen;\n this.emit(_constantsEventTypes2['default'].UI_TORRENT_DETAILS_OPEN_CHANGE);\n }\n }, {\n key: 'hasSatisfiedDependencies',\n value: function hasSatisfiedDependencies() {\n return this.dependencies.length === 0;\n }\n }, {\n key: 'isTorrentDetailsOpen',\n value: function isTorrentDetailsOpen() {\n return this.torrentDetailsOpen;\n }\n }, {\n key: 'registerDependency',\n value: function registerDependency(ids) {\n var _this = this;\n\n if (!Array.isArray(ids)) {\n ids = [ids];\n }\n\n ids.forEach(function (id) {\n if (_this.dependencies.indexOf(id) === -1) {\n _this.dependencies.push(id);\n }\n });\n }\n }, {\n key: 'satisfyDependency',\n value: function satisfyDependency(id) {\n var dependencyIndex = this.dependencies.indexOf(id);\n\n if (dependencyIndex > -1) {\n this.dependencies.splice(dependencyIndex, 1);\n }\n\n this.verifyDependencies();\n }\n }, {\n key: 'setActiveContextMenu',\n value: function setActiveContextMenu() {\n var contextMenu = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n this.activeContextMenu = contextMenu;\n this.emit(_constantsEventTypes2['default'].UI_CONTEXT_MENU_CHANGE);\n }\n }, {\n key: 'setActiveModal',\n value: function setActiveModal() {\n var modal = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n this.activeModal = modal;\n this.emit(_constantsEventTypes2['default'].UI_MODAL_CHANGE);\n }\n }, {\n key: 'verifyDependencies',\n value: function verifyDependencies() {\n if (this.dependencies.length === 0) {\n this.emit(_constantsEventTypes2['default'].UI_DEPENDENCIES_LOADED);\n }\n }\n }]);\n\n return UIStoreClass;\n})(_BaseStore3['default']);\n\nvar UIStore = new UIStoreClass();\n\nUIStore.dispatcherID = _dispatcherAppDispatcher2['default'].register(function (payload) {\n var action = payload.action;\n var source = payload.source;\n\n switch (action.type) {\n case _constantsActionTypes2['default'].UI_CLICK_TORRENT_DETAILS:\n UIStore.handleTorrentDetailsClick(action.data.hash, action.data.event);\n break;\n case _constantsActionTypes2['default'].UI_CLICK_TORRENT:\n UIStore.handleTorrentClick(action.data.hash);\n break;\n case _constantsActionTypes2['default'].UI_DISPLAY_MODAL:\n UIStore.setActiveModal(action.data);\n break;\n case _constantsActionTypes2['default'].CLIENT_MOVE_TORRENTS_SUCCESS:\n UIStore.setActiveModal(null);\n break;\n case _constantsActionTypes2['default'].UI_DISPLAY_CONTEXT_MENU:\n UIStore.setActiveContextMenu(action.data);\n break;\n case _constantsActionTypes2['default'].UI_LATEST_TORRENT_LOCATION_REQUEST_SUCCESS:\n UIStore.handleLatestTorrentLocationRequestSuccess(action.data.path);\n break;\n case _constantsActionTypes2['default'].UI_LATEST_TORRENT_LOCATION_REQUEST_ERROR:\n UIStore.handleLatestTorrentLocationRequestError(action.error);\n break;\n }\n});\n\nexports['default'] = UIStore;\nmodule.exports = exports['default'];//@ sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9jbGllbnQvc291cmNlL3NjcmlwdHMvc3RvcmVzL1VJU3RvcmUuanM/N2FkMCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7QUFFQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRCxpQ0FBaUMsMkNBQTJDLGdCQUFnQixrQkFBa0IsT0FBTywyQkFBMkIsd0RBQXdELGdDQUFnQyx1REFBdUQsMkRBQTJELEVBQUUsRUFBRSx5REFBeUQscUVBQXFFLDZEQUE2RCxvQkFBb0IsR0FBRyxFQUFFOztBQUVsakIsd0NBQXdDLG1CQUFtQiw0QkFBNEIsa0RBQWtELGdCQUFnQixrREFBa0QsOERBQThELDBCQUEwQiw0Q0FBNEMsdUJBQXVCLGtCQUFrQixFQUFFLE9BQU8sY0FBYyxnQkFBZ0IsZ0JBQWdCLGVBQWUsMkJBQTJCLG9CQUFvQixFQUFFLEVBQUUsNEJBQTRCLG1CQUFtQixFQUFFLE9BQU8sdUJBQXVCLDRCQUE0QixrQkFBa0IsRUFBRSw4QkFBOEIsRUFBRSxFQUFFOztBQUVscEIsc0NBQXNDLHVDQUF1QyxrQkFBa0I7O0FBRS9GLGlEQUFpRCwwQ0FBMEMsMERBQTBELEVBQUU7O0FBRXZKLDBDQUEwQywrREFBK0QscUdBQXFHLEVBQUUseUVBQXlFLGVBQWUseUVBQXlFLEVBQUUsRUFBRSx1SEFBdUg7O0FBRTVlOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxnRkFBZ0Y7O0FBRWhGO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsMEVBQTBFOztBQUUxRTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUM7O0FBRUQ7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0EiLCJmaWxlIjoiMTc3LmpzIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcblxudmFyIF9jcmVhdGVDbGFzcyA9IChmdW5jdGlvbiAoKSB7IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoJ3ZhbHVlJyBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpOyB9IH0gcmV0dXJuIGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfTsgfSkoKTtcblxudmFyIF9nZXQgPSBmdW5jdGlvbiBnZXQoX3gzLCBfeDQsIF94NSkgeyB2YXIgX2FnYWluID0gdHJ1ZTsgX2Z1bmN0aW9uOiB3aGlsZSAoX2FnYWluKSB7IHZhciBvYmplY3QgPSBfeDMsIHByb3BlcnR5ID0gX3g0LCByZWNlaXZlciA9IF94NTsgX2FnYWluID0gZmFsc2U7IGlmIChvYmplY3QgPT09IG51bGwpIG9iamVjdCA9IEZ1bmN0aW9uLnByb3RvdHlwZTsgdmFyIGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgcHJvcGVydHkpOyBpZiAoZGVzYyA9PT0gdW5kZWZpbmVkKSB7IHZhciBwYXJlbnQgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Yob2JqZWN0KTsgaWYgKHBhcmVudCA9PT0gbnVsbCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9IGVsc2UgeyBfeDMgPSBwYXJlbnQ7IF94NCA9IHByb3BlcnR5OyBfeDUgPSByZWNlaXZlcjsgX2FnYWluID0gdHJ1ZTsgZGVzYyA9IHBhcmVudCA9IHVuZGVmaW5lZDsgY29udGludWUgX2Z1bmN0aW9uOyB9IH0gZWxzZSBpZiAoJ3ZhbHVlJyBpbiBkZXNjKSB7IHJldHVybiBkZXNjLnZhbHVlOyB9IGVsc2UgeyB2YXIgZ2V0dGVyID0gZGVzYy5nZXQ7IGlmIChnZXR0ZXIgPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9IHJldHVybiBnZXR0ZXIuY2FsbChyZWNlaXZlcik7IH0gfSB9O1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyAnZGVmYXVsdCc6IG9iaiB9OyB9XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcignQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uJyk7IH0gfVxuXG5mdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHsgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSAnZnVuY3Rpb24nICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcignU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAnICsgdHlwZW9mIHN1cGVyQ2xhc3MpOyB9IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogc3ViQ2xhc3MsIGVudW1lcmFibGU6IGZhbHNlLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0gfSk7IGlmIChzdXBlckNsYXNzKSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIDogc3ViQ2xhc3MuX19wcm90b19fID0gc3VwZXJDbGFzczsgfVxuXG52YXIgX2NvbnN0YW50c0FjdGlvblR5cGVzID0gcmVxdWlyZSgnLi4vY29uc3RhbnRzL0FjdGlvblR5cGVzJyk7XG5cbnZhciBfY29uc3RhbnRzQWN0aW9uVHlwZXMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY29uc3RhbnRzQWN0aW9uVHlwZXMpO1xuXG52YXIgX2Rpc3BhdGNoZXJBcHBEaXNwYXRjaGVyID0gcmVxdWlyZSgnLi4vZGlzcGF0Y2hlci9BcHBEaXNwYXRjaGVyJyk7XG5cbnZhciBfZGlzcGF0Y2hlckFwcERpc3BhdGNoZXIyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZGlzcGF0Y2hlckFwcERpc3BhdGNoZXIpO1xuXG52YXIgX0Jhc2VTdG9yZTIgPSByZXF1aXJlKCcuL0Jhc2VTdG9yZScpO1xuXG52YXIgX0Jhc2VTdG9yZTMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9CYXNlU3RvcmUyKTtcblxudmFyIF9jb25zdGFudHNFdmVudFR5cGVzID0gcmVxdWlyZSgnLi4vY29uc3RhbnRzL0V2ZW50VHlwZXMnKTtcblxudmFyIF9jb25zdGFudHNFdmVudFR5cGVzMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2NvbnN0YW50c0V2ZW50VHlwZXMpO1xuXG52YXIgX3V0aWxTZWxlY3RUb3JyZW50cyA9IHJlcXVpcmUoJy4uL3V0aWwvc2VsZWN0VG9ycmVudHMnKTtcblxudmFyIF9hY3Rpb25zVG9ycmVudEFjdGlvbnMgPSByZXF1aXJlKCcuLi9hY3Rpb25zL1RvcnJlbnRBY3Rpb25zJyk7XG5cbnZhciBfYWN0aW9uc1RvcnJlbnRBY3Rpb25zMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2FjdGlvbnNUb3JyZW50QWN0aW9ucyk7XG5cbnZhciBfVG9ycmVudFN0b3JlID0gcmVxdWlyZSgnLi9Ub3JyZW50U3RvcmUnKTtcblxudmFyIF9Ub3JyZW50U3RvcmUyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfVG9ycmVudFN0b3JlKTtcblxudmFyIFVJU3RvcmVDbGFzcyA9IChmdW5jdGlvbiAoX0Jhc2VTdG9yZSkge1xuICBfaW5oZXJpdHMoVUlTdG9yZUNsYXNzLCBfQmFzZVN0b3JlKTtcblxuICBmdW5jdGlvbiBVSVN0b3JlQ2xhc3MoKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFVJU3RvcmVDbGFzcyk7XG5cbiAgICBfZ2V0KE9iamVjdC5nZXRQcm90b3R5cGVPZihVSVN0b3JlQ2xhc3MucHJvdG90eXBlKSwgJ2NvbnN0cnVjdG9yJywgdGhpcykuY2FsbCh0aGlzKTtcblxuICAgIHRoaXMuYWN0aXZlQ29udGV4dE1lbnUgPSBudWxsO1xuICAgIHRoaXMuYWN0aXZlTW9kYWwgPSBudWxsO1xuICAgIHRoaXMuZGVwZW5kZW5jaWVzID0gW107XG4gICAgdGhpcy5sYXRlc3RUb3JyZW50TG9jYXRpb24gPSBudWxsO1xuICAgIHRoaXMudG9ycmVudERldGFpbHNIYXNoID0gbnVsbDtcbiAgICB0aGlzLnRvcnJlbnREZXRhaWxzT3BlbiA9IGZhbHNlO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKFVJU3RvcmVDbGFzcywgW3tcbiAgICBrZXk6ICdjbG9zZVRvcnJlbnREZXRhaWxzUGFuZWwnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjbG9zZVRvcnJlbnREZXRhaWxzUGFuZWwoKSB7XG4gICAgICBpZiAodGhpcy50b3JyZW50RGV0YWlsc09wZW4pIHtcbiAgICAgICAgdGhpcy50b3JyZW50RGV0YWlsc09wZW4gPSBmYWxzZTtcbiAgICAgICAgdGhpcy5lbWl0KF9jb25zdGFudHNFdmVudFR5cGVzMlsnZGVmYXVsdCddLlVJX1RPUlJFTlRfREVUQUlMU19PUEVOX0NIQU5HRSk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnZmV0Y2hMYXRlc3RUb3JyZW50TG9jYXRpb24nLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBmZXRjaExhdGVzdFRvcnJlbnRMb2NhdGlvbigpIHtcbiAgICAgIF9hY3Rpb25zVG9ycmVudEFjdGlvbnMyWydkZWZhdWx0J10uZmV0Y2hMYXRlc3RUb3JyZW50TG9jYXRpb24oKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdnZXRBY3RpdmVDb250ZXh0TWVudScsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldEFjdGl2ZUNvbnRleHRNZW51KCkge1xuICAgICAgcmV0dXJuIHRoaXMuYWN0aXZlQ29udGV4dE1lbnU7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnZ2V0QWN0aXZlTW9kYWwnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRBY3RpdmVNb2RhbCgpIHtcbiAgICAgIHJldHVybiB0aGlzLmFjdGl2ZU1vZGFsO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2dldExhdGVzdFRvcnJlbnRMb2NhdGlvbicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldExhdGVzdFRvcnJlbnRMb2NhdGlvbigpIHtcbiAgICAgIHJldHVybiB0aGlzLmxhdGVzdFRvcnJlbnRMb2NhdGlvbjtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdnZXRUb3JyZW50RGV0YWlsc0hhc2gnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRUb3JyZW50RGV0YWlsc0hhc2goKSB7XG4gICAgICByZXR1cm4gdGhpcy50b3JyZW50RGV0YWlsc0hhc2g7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnaGFuZGxlTGF0ZXN0VG9ycmVudExvY2F0aW9uUmVxdWVzdFN1Y2Nlc3MnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBoYW5kbGVMYXRlc3RUb3JyZW50TG9jYXRpb25SZXF1ZXN0U3VjY2Vzcyhsb2NhdGlvbikge1xuICAgICAgdGhpcy5sYXRlc3RUb3JyZW50TG9jYXRpb24gPSBsb2NhdGlvbjtcbiAgICAgIHRoaXMuZW1pdChfY29uc3RhbnRzRXZlbnRUeXBlczJbJ2RlZmF1bHQnXS5VSV9MQVRFU1RfVE9SUkVOVF9MT0NBVElPTl9DSEFOR0UpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2hhbmRsZUxhdGVzdFRvcnJlbnRMb2NhdGlvblJlcXVlc3RFcnJvcicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGhhbmRsZUxhdGVzdFRvcnJlbnRMb2NhdGlvblJlcXVlc3RFcnJvcihlcnJvcikge1xuICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2hhbmRsZVRvcnJlbnRDbGljaycsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGhhbmRsZVRvcnJlbnRDbGljayhoYXNoKSB7XG4gICAgICB0aGlzLnRvcnJlbnREZXRhaWxzSGFzaCA9IGhhc2g7XG4gICAgICB0aGlzLmVtaXQoX2NvbnN0YW50c0V2ZW50VHlwZXMyWydkZWZhdWx0J10uVUlfVE9SUkVOVF9ERVRBSUxTX0hBU0hfQ0hBTkdFKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdoYW5kbGVUb3JyZW50RGV0YWlsc0NsaWNrJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gaGFuZGxlVG9ycmVudERldGFpbHNDbGljayhoYXNoLCBldmVudCkge1xuICAgICAgdGhpcy50b3JyZW50RGV0YWlsc09wZW4gPSAhdGhpcy50b3JyZW50RGV0YWlsc09wZW47XG4gICAgICB0aGlzLmVtaXQoX2NvbnN0YW50c0V2ZW50VHlwZXMyWydkZWZhdWx0J10uVUlfVE9SUkVOVF9ERVRBSUxTX09QRU5fQ0hBTkdFKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdoYXNTYXRpc2ZpZWREZXBlbmRlbmNpZXMnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBoYXNTYXRpc2ZpZWREZXBlbmRlbmNpZXMoKSB7XG4gICAgICByZXR1cm4gdGhpcy5kZXBlbmRlbmNpZXMubGVuZ3RoID09PSAwO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2lzVG9ycmVudERldGFpbHNPcGVuJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gaXNUb3JyZW50RGV0YWlsc09wZW4oKSB7XG4gICAgICByZXR1cm4gdGhpcy50b3JyZW50RGV0YWlsc09wZW47XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAncmVnaXN0ZXJEZXBlbmRlbmN5JyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVnaXN0ZXJEZXBlbmRlbmN5KGlkcykge1xuICAgICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGlkcykpIHtcbiAgICAgICAgaWRzID0gW2lkc107XG4gICAgICB9XG5cbiAgICAgIGlkcy5mb3JFYWNoKGZ1bmN0aW9uIChpZCkge1xuICAgICAgICBpZiAoX3RoaXMuZGVwZW5kZW5jaWVzLmluZGV4T2YoaWQpID09PSAtMSkge1xuICAgICAgICAgIF90aGlzLmRlcGVuZGVuY2llcy5wdXNoKGlkKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnc2F0aXNmeURlcGVuZGVuY3knLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzYXRpc2Z5RGVwZW5kZW5jeShpZCkge1xuICAgICAgdmFyIGRlcGVuZGVuY3lJbmRleCA9IHRoaXMuZGVwZW5kZW5jaWVzLmluZGV4T2YoaWQpO1xuXG4gICAgICBpZiAoZGVwZW5kZW5jeUluZGV4ID4gLTEpIHtcbiAgICAgICAgdGhpcy5kZXBlbmRlbmNpZXMuc3BsaWNlKGRlcGVuZGVuY3lJbmRleCwgMSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMudmVyaWZ5RGVwZW5kZW5jaWVzKCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnc2V0QWN0aXZlQ29udGV4dE1lbnUnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRBY3RpdmVDb250ZXh0TWVudSgpIHtcbiAgICAgIHZhciBjb250ZXh0TWVudSA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMCB8fCBhcmd1bWVudHNbMF0gPT09IHVuZGVmaW5lZCA/IHt9IDogYXJndW1lbnRzWzBdO1xuXG4gICAgICB0aGlzLmFjdGl2ZUNvbnRleHRNZW51ID0gY29udGV4dE1lbnU7XG4gICAgICB0aGlzLmVtaXQoX2NvbnN0YW50c0V2ZW50VHlwZXMyWydkZWZhdWx0J10uVUlfQ09OVEVYVF9NRU5VX0NIQU5HRSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnc2V0QWN0aXZlTW9kYWwnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRBY3RpdmVNb2RhbCgpIHtcbiAgICAgIHZhciBtb2RhbCA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMCB8fCBhcmd1bWVudHNbMF0gPT09IHVuZGVmaW5lZCA/IHt9IDogYXJndW1lbnRzWzBdO1xuXG4gICAgICB0aGlzLmFjdGl2ZU1vZGFsID0gbW9kYWw7XG4gICAgICB0aGlzLmVtaXQoX2NvbnN0YW50c0V2ZW50VHlwZXMyWydkZWZhdWx0J10uVUlfTU9EQUxfQ0hBTkdFKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICd2ZXJpZnlEZXBlbmRlbmNpZXMnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB2ZXJpZnlEZXBlbmRlbmNpZXMoKSB7XG4gICAgICBpZiAodGhpcy5kZXBlbmRlbmNpZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHRoaXMuZW1pdChfY29uc3RhbnRzRXZlbnRUeXBlczJbJ2RlZmF1bHQnXS5VSV9ERVBFTkRFTkNJRVNfTE9BREVEKTtcbiAgICAgIH1cbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gVUlTdG9yZUNsYXNzO1xufSkoX0Jhc2VTdG9yZTNbJ2RlZmF1bHQnXSk7XG5cbnZhciBVSVN0b3JlID0gbmV3IFVJU3RvcmVDbGFzcygpO1xuXG5VSVN0b3JlLmRpc3BhdGNoZXJJRCA9IF9kaXNwYXRjaGVyQXBwRGlzcGF0Y2hlcjJbJ2RlZmF1bHQnXS5yZWdpc3RlcihmdW5jdGlvbiAocGF5bG9hZCkge1xuICB2YXIgYWN0aW9uID0gcGF5bG9hZC5hY3Rpb247XG4gIHZhciBzb3VyY2UgPSBwYXlsb2FkLnNvdXJjZTtcblxuICBzd2l0Y2ggKGFjdGlvbi50eXBlKSB7XG4gICAgY2FzZSBfY29uc3RhbnRzQWN0aW9uVHlwZXMyWydkZWZhdWx0J10uVUlfQ0xJQ0tfVE9SUkVOVF9ERVRBSUxTOlxuICAgICAgVUlTdG9yZS5oYW5kbGVUb3JyZW50RGV0YWlsc0NsaWNrKGFjdGlvbi5kYXRhLmhhc2gsIGFjdGlvbi5kYXRhLmV2ZW50KTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgX2NvbnN0YW50c0FjdGlvblR5cGVzMlsnZGVmYXVsdCddLlVJX0NMSUNLX1RPUlJFTlQ6XG4gICAgICBVSVN0b3JlLmhhbmRsZVRvcnJlbnRDbGljayhhY3Rpb24uZGF0YS5oYXNoKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgX2NvbnN0YW50c0FjdGlvblR5cGVzMlsnZGVmYXVsdCddLlVJX0RJU1BMQVlfTU9EQUw6XG4gICAgICBVSVN0b3JlLnNldEFjdGl2ZU1vZGFsKGFjdGlvbi5kYXRhKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgX2NvbnN0YW50c0FjdGlvblR5cGVzMlsnZGVmYXVsdCddLkNMSUVOVF9NT1ZFX1RPUlJFTlRTX1NVQ0NFU1M6XG4gICAgICBVSVN0b3JlLnNldEFjdGl2ZU1vZGFsKG51bGwpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBfY29uc3RhbnRzQWN0aW9uVHlwZXMyWydkZWZhdWx0J10uVUlfRElTUExBWV9DT05URVhUX01FTlU6XG4gICAgICBVSVN0b3JlLnNldEFjdGl2ZUNvbnRleHRNZW51KGFjdGlvbi5kYXRhKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgX2NvbnN0YW50c0FjdGlvblR5cGVzMlsnZGVmYXVsdCddLlVJX0xBVEVTVF9UT1JSRU5UX0xPQ0FUSU9OX1JFUVVFU1RfU1VDQ0VTUzpcbiAgICAgIFVJU3RvcmUuaGFuZGxlTGF0ZXN0VG9ycmVudExvY2F0aW9uUmVxdWVzdFN1Y2Nlc3MoYWN0aW9uLmRhdGEucGF0aCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIF9jb25zdGFudHNBY3Rpb25UeXBlczJbJ2RlZmF1bHQnXS5VSV9MQVRFU1RfVE9SUkVOVF9MT0NBVElPTl9SRVFVRVNUX0VSUk9SOlxuICAgICAgVUlTdG9yZS5oYW5kbGVMYXRlc3RUb3JyZW50TG9jYXRpb25SZXF1ZXN0RXJyb3IoYWN0aW9uLmVycm9yKTtcbiAgICAgIGJyZWFrO1xuICB9XG59KTtcblxuZXhwb3J0c1snZGVmYXVsdCddID0gVUlTdG9yZTtcbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9jbGllbnQvc291cmNlL3NjcmlwdHMvc3RvcmVzL1VJU3RvcmUuanNcbiAqKiBtb2R1bGUgaWQgPSAxNzdcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyJdLCJzb3VyY2VSb290IjoiIn0="); /***/ }, /* 178 */ @@ -1160,7 +1160,7 @@ /* 186 */ /***/ function(module, exports, __webpack_require__) { - eval("'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _axios = __webpack_require__(187);\n\nvar _axios2 = _interopRequireDefault(_axios);\n\nvar _dispatcherAppDispatcher = __webpack_require__(179);\n\nvar _dispatcherAppDispatcher2 = _interopRequireDefault(_dispatcherAppDispatcher);\n\nvar _constantsActionTypes = __webpack_require__(178);\n\nvar _constantsActionTypes2 = _interopRequireDefault(_constantsActionTypes);\n\nvar TorrentActions = {\n addTorrentsByUrls: function addTorrentsByUrls(urls, destination) {\n _axios2['default'].post('/ui/torrent-location', {\n destination: destination\n })['catch'](function (error) {\n console.log(error);\n });\n return _axios2['default'].post('/client/add', {\n urls: urls,\n destination: destination\n }).then(function () {\n var json = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n return json.data;\n }).then(function (response) {\n _dispatcherAppDispatcher2['default'].dispatchServerAction({\n type: _constantsActionTypes2['default'].CLIENT_ADD_TORRENT_SUCCESS,\n data: {\n response: response\n }\n });\n })['catch'](function (error) {\n _dispatcherAppDispatcher2['default'].dispatchServerAction({\n type: _constantsActionTypes2['default'].CLIENT_ADD_TORRENT_ERROR,\n data: {\n error: error\n }\n });\n });\n },\n\n addTorrentsByFiles: function addTorrentsByFiles(filesData, destination) {\n _axios2['default'].post('/ui/torrent-location', {\n destination: destination\n })['catch'](function (error) {\n console.log(error);\n });\n return _axios2['default'].post('/client/add-files', filesData).then(function () {\n var json = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n return json.data;\n }).then(function (response) {\n _dispatcherAppDispatcher2['default'].dispatchServerAction({\n type: _constantsActionTypes2['default'].CLIENT_ADD_TORRENT_SUCCESS,\n data: {\n response: response\n }\n });\n })['catch'](function (error) {\n _dispatcherAppDispatcher2['default'].dispatchServerAction({\n type: _constantsActionTypes2['default'].CLIENT_ADD_TORRENT_ERROR,\n data: {\n error: error\n }\n });\n });\n },\n\n deleteTorrents: function deleteTorrents(hash) {\n return _axios2['default'].post('/client/torrents/delete', { hash: hash }).then(function () {\n var json = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n return json.data;\n }).then(function (data) {\n _dispatcherAppDispatcher2['default'].dispatchServerAction({\n type: _constantsActionTypes2['default'].CLIENT_REMOVE_TORRENT_SUCCESS,\n data: data\n });\n })['catch'](function (error) {\n _dispatcherAppDispatcher2['default'].dispatchServerAction({\n type: _constantsActionTypes2['default'].CLIENT_REMOVE_TORRENT_ERROR,\n error: error\n });\n });\n },\n\n fetchLatestTorrentLocation: function fetchLatestTorrentLocation() {\n return _axios2['default'].get('/ui/torrent-location').then(function () {\n var json = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n return json.data;\n }).then(function (data) {\n _dispatcherAppDispatcher2['default'].dispatchServerAction({\n type: _constantsActionTypes2['default'].UI_LATEST_TORRENT_LOCATION_REQUEST_SUCCESS,\n data: data\n });\n })['catch'](function (error) {\n _dispatcherAppDispatcher2['default'].dispatchServerAction({\n type: _constantsActionTypes2['default'].UI_LATEST_TORRENT_LOCATION_REQUEST_ERROR,\n error: error\n });\n });\n },\n\n fetchTorrents: function fetchTorrents() {\n return _axios2['default'].get('/client/torrents').then(function () {\n var json = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n return json.data;\n }).then(function (torrents) {\n _dispatcherAppDispatcher2['default'].dispatchServerAction({\n type: _constantsActionTypes2['default'].CLIENT_FETCH_TORRENTS_SUCCESS,\n data: {\n torrents: torrents\n }\n });\n })['catch'](function (error) {\n _dispatcherAppDispatcher2['default'].dispatchServerAction({\n type: _constantsActionTypes2['default'].CLIENT_FETCH_TORRENTS_ERROR,\n data: {\n error: error\n }\n });\n });\n },\n\n fetchTorrentDetails: function fetchTorrentDetails(hash) {\n return _axios2['default'].post('/client/torrent-details', {\n hash: hash\n }).then(function () {\n var json = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n return json.data;\n }).then(function (torrentDetails) {\n _dispatcherAppDispatcher2['default'].dispatchServerAction({\n type: _constantsActionTypes2['default'].CLIENT_FETCH_TORRENT_DETAILS_SUCCESS,\n data: {\n hash: hash,\n torrentDetails: torrentDetails\n }\n });\n })['catch'](function (error) {\n _dispatcherAppDispatcher2['default'].dispatchServerAction({\n type: _constantsActionTypes2['default'].CLIENT_FETCH_TORRENT_DETAILS_ERROR,\n data: {\n hash: hash\n }\n });\n });\n },\n\n fetchTorrentStatusCount: function fetchTorrentStatusCount() {\n return _axios2['default'].get('/client/torrents/status-count').then(function () {\n var json = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n return json.data;\n }).then(function (data) {\n _dispatcherAppDispatcher2['default'].dispatchServerAction({\n type: _constantsActionTypes2['default'].CLIENT_FETCH_TORRENT_STATUS_COUNT_REQUEST_SUCCESS,\n data: data\n });\n })['catch'](function (error) {\n _dispatcherAppDispatcher2['default'].dispatchServerAction({\n type: _constantsActionTypes2['default'].CLIENT_FETCH_TORRENT_STATUS_COUNT_REQUEST_ERROR,\n error: error\n });\n });\n },\n\n fetchTorrentTrackerCount: function fetchTorrentTrackerCount() {\n return _axios2['default'].get('/client/torrents/tracker-count').then(function () {\n var json = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n return json.data;\n }).then(function (data) {\n _dispatcherAppDispatcher2['default'].dispatchServerAction({\n type: _constantsActionTypes2['default'].CLIENT_FETCH_TORRENT_TRACKER_COUNT_REQUEST_SUCCESS,\n data: data\n });\n })['catch'](function (error) {\n _dispatcherAppDispatcher2['default'].dispatchServerAction({\n type: _constantsActionTypes2['default'].CLIENT_FETCH_TORRENT_TRACKER_COUNT_REQUEST_ERROR,\n error: error\n });\n });\n },\n\n moveTorrents: function moveTorrents(hashes, options) {\n var destination = options.destination;\n var filenames = options.filenames;\n var sources = options.sources;\n var moveFiles = options.moveFiles;\n\n return _axios2['default'].post('/client/torrents/move', { hashes: hashes, destination: destination, filenames: filenames, sources: sources, moveFiles: moveFiles }).then(function () {\n var json = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n return json.data;\n }).then(function (data) {\n _dispatcherAppDispatcher2['default'].dispatchServerAction({\n type: _constantsActionTypes2['default'].CLIENT_MOVE_TORRENTS_SUCCESS,\n data: data\n });\n })['catch'](function (error) {\n _dispatcherAppDispatcher2['default'].dispatchServerAction({\n type: _constantsActionTypes2['default'].CLIENT_MOVE_TORRENTS_ERROR,\n error: error\n });\n });\n },\n\n pauseTorrents: function pauseTorrents(hashes) {\n return _axios2['default'].post('/client/pause', {\n hashes: hashes\n }).then(function () {\n var json = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n return json.data;\n }).then(function (response) {\n _dispatcherAppDispatcher2['default'].dispatchServerAction({\n type: _constantsActionTypes2['default'].CLIENT_START_TORRENT_SUCCESS,\n data: {\n response: response\n }\n });\n })['catch'](function (error) {\n _dispatcherAppDispatcher2['default'].dispatchServerAction({\n type: _constantsActionTypes2['default'].CLIENT_START_TORRENT_ERROR,\n data: {\n error: error\n }\n });\n });\n },\n\n startTorrents: function startTorrents(hashes) {\n return _axios2['default'].post('/client/start', {\n hashes: hashes\n }).then(function () {\n var json = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n return json.data;\n }).then(function (response) {\n _dispatcherAppDispatcher2['default'].dispatchServerAction({\n type: _constantsActionTypes2['default'].CLIENT_START_TORRENT_SUCCESS,\n data: {\n response: response\n }\n });\n })['catch'](function (error) {\n _dispatcherAppDispatcher2['default'].dispatchServerAction({\n type: _constantsActionTypes2['default'].CLIENT_START_TORRENT_ERROR,\n data: {\n error: error\n }\n });\n });\n },\n\n stopTorrents: function stopTorrents(hashes) {\n return _axios2['default'].post('/client/stop', {\n hashes: hashes\n }).then(function () {\n var json = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n return json.data;\n }).then(function (response) {\n _dispatcherAppDispatcher2['default'].dispatchServerAction({\n type: _constantsActionTypes2['default'].CLIENT_STOP_TORRENT_SUCCESS,\n data: {\n response: response\n }\n });\n })['catch'](function (error) {\n _dispatcherAppDispatcher2['default'].dispatchServerAction({\n type: _constantsActionTypes2['default'].CLIENT_STOP_TORRENT_ERROR,\n data: {\n error: error\n }\n });\n });\n },\n\n setPriority: function setPriority(hash, priority) {\n return _axios2['default'].patch('/client/torrents/' + hash + '/priority', {\n hash: hash,\n priority: priority\n }).then(function () {\n var json = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n return json.data;\n }).then(function (data) {\n _dispatcherAppDispatcher2['default'].dispatchServerAction({\n type: _constantsActionTypes2['default'].CLIENT_SET_FILE_PRIORITY_SUCCESS,\n data: data\n });\n })['catch'](function (error) {\n _dispatcherAppDispatcher2['default'].dispatchServerAction({\n type: _constantsActionTypes2['default'].CLIENT_SET_FILE_PRIORITY_ERROR,\n error: error\n });\n });\n },\n\n setFilePriority: function setFilePriority(hash, fileIndices, priority) {\n return _axios2['default'].patch('/client/torrents/' + hash + '/file-priority', {\n hash: hash,\n fileIndices: fileIndices,\n priority: priority\n }).then(function () {\n var json = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n return json.data;\n }).then(function (data) {\n _dispatcherAppDispatcher2['default'].dispatchServerAction({\n type: _constantsActionTypes2['default'].CLIENT_SET_FILE_PRIORITY_SUCCESS,\n data: data\n });\n })['catch'](function (error) {\n _dispatcherAppDispatcher2['default'].dispatchServerAction({\n type: _constantsActionTypes2['default'].CLIENT_SET_FILE_PRIORITY_ERROR,\n error: error\n });\n });\n }\n};\n\nexports['default'] = TorrentActions;\nmodule.exports = exports['default'];//@ sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9jbGllbnQvc291cmNlL3NjcmlwdHMvYWN0aW9ucy9Ub3JyZW50QWN0aW9ucy5qcz8yMTA0Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztBQUVBO0FBQ0E7QUFDQSxDQUFDOztBQUVELHNDQUFzQyx1Q0FBdUMsa0JBQWtCOztBQUUvRjs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wseUVBQXlFOztBQUV6RTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTCxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEtBQUs7QUFDTDtBQUNBLHlFQUF5RTs7QUFFekU7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0wsR0FBRzs7QUFFSDtBQUNBLCtEQUErRCxhQUFhO0FBQzVFLHlFQUF5RTs7QUFFekU7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMLEdBQUc7O0FBRUg7QUFDQTtBQUNBLHlFQUF5RTs7QUFFekU7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMLEdBQUc7O0FBRUg7QUFDQTtBQUNBLHlFQUF5RTs7QUFFekU7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0wsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wseUVBQXlFOztBQUV6RTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMLEdBQUc7O0FBRUg7QUFDQTtBQUNBLHlFQUF5RTs7QUFFekU7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMLEdBQUc7O0FBRUg7QUFDQTtBQUNBLHlFQUF5RTs7QUFFekU7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSw2REFBNkQseUdBQXlHO0FBQ3RLLHlFQUF5RTs7QUFFekU7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLHlFQUF5RTs7QUFFekU7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0wsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wseUVBQXlFOztBQUV6RTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTCxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCx5RUFBeUU7O0FBRXpFO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wseUVBQXlFOztBQUV6RTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0wsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLHlFQUF5RTs7QUFFekU7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQSIsImZpbGUiOiIxODYuanMiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyAnZGVmYXVsdCc6IG9iaiB9OyB9XG5cbnZhciBfYXhpb3MgPSByZXF1aXJlKCdheGlvcycpO1xuXG52YXIgX2F4aW9zMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2F4aW9zKTtcblxudmFyIF9kaXNwYXRjaGVyQXBwRGlzcGF0Y2hlciA9IHJlcXVpcmUoJy4uL2Rpc3BhdGNoZXIvQXBwRGlzcGF0Y2hlcicpO1xuXG52YXIgX2Rpc3BhdGNoZXJBcHBEaXNwYXRjaGVyMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2Rpc3BhdGNoZXJBcHBEaXNwYXRjaGVyKTtcblxudmFyIF9jb25zdGFudHNBY3Rpb25UeXBlcyA9IHJlcXVpcmUoJy4uL2NvbnN0YW50cy9BY3Rpb25UeXBlcycpO1xuXG52YXIgX2NvbnN0YW50c0FjdGlvblR5cGVzMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2NvbnN0YW50c0FjdGlvblR5cGVzKTtcblxudmFyIFRvcnJlbnRBY3Rpb25zID0ge1xuICBhZGRUb3JyZW50c0J5VXJsczogZnVuY3Rpb24gYWRkVG9ycmVudHNCeVVybHModXJscywgZGVzdGluYXRpb24pIHtcbiAgICBfYXhpb3MyWydkZWZhdWx0J10ucG9zdCgnL3VpL3RvcnJlbnQtbG9jYXRpb24nLCB7XG4gICAgICBkZXN0aW5hdGlvbjogZGVzdGluYXRpb25cbiAgICB9KVsnY2F0Y2gnXShmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcbiAgICB9KTtcbiAgICByZXR1cm4gX2F4aW9zMlsnZGVmYXVsdCddLnBvc3QoJy9jbGllbnQvYWRkJywge1xuICAgICAgdXJsczogdXJscyxcbiAgICAgIGRlc3RpbmF0aW9uOiBkZXN0aW5hdGlvblxuICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIGpzb24gPSBhcmd1bWVudHMubGVuZ3RoIDw9IDAgfHwgYXJndW1lbnRzWzBdID09PSB1bmRlZmluZWQgPyB7fSA6IGFyZ3VtZW50c1swXTtcblxuICAgICAgcmV0dXJuIGpzb24uZGF0YTtcbiAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkge1xuICAgICAgX2Rpc3BhdGNoZXJBcHBEaXNwYXRjaGVyMlsnZGVmYXVsdCddLmRpc3BhdGNoU2VydmVyQWN0aW9uKHtcbiAgICAgICAgdHlwZTogX2NvbnN0YW50c0FjdGlvblR5cGVzMlsnZGVmYXVsdCddLkNMSUVOVF9BRERfVE9SUkVOVF9TVUNDRVNTLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgcmVzcG9uc2U6IHJlc3BvbnNlXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pWydjYXRjaCddKGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgX2Rpc3BhdGNoZXJBcHBEaXNwYXRjaGVyMlsnZGVmYXVsdCddLmRpc3BhdGNoU2VydmVyQWN0aW9uKHtcbiAgICAgICAgdHlwZTogX2NvbnN0YW50c0FjdGlvblR5cGVzMlsnZGVmYXVsdCddLkNMSUVOVF9BRERfVE9SUkVOVF9FUlJPUixcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIGVycm9yOiBlcnJvclxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSxcblxuICBhZGRUb3JyZW50c0J5RmlsZXM6IGZ1bmN0aW9uIGFkZFRvcnJlbnRzQnlGaWxlcyhmaWxlc0RhdGEsIGRlc3RpbmF0aW9uKSB7XG4gICAgX2F4aW9zMlsnZGVmYXVsdCddLnBvc3QoJy91aS90b3JyZW50LWxvY2F0aW9uJywge1xuICAgICAgZGVzdGluYXRpb246IGRlc3RpbmF0aW9uXG4gICAgfSlbJ2NhdGNoJ10oZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmxvZyhlcnJvcik7XG4gICAgfSk7XG4gICAgcmV0dXJuIF9heGlvczJbJ2RlZmF1bHQnXS5wb3N0KCcvY2xpZW50L2FkZC1maWxlcycsIGZpbGVzRGF0YSkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIganNvbiA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMCB8fCBhcmd1bWVudHNbMF0gPT09IHVuZGVmaW5lZCA/IHt9IDogYXJndW1lbnRzWzBdO1xuXG4gICAgICByZXR1cm4ganNvbi5kYXRhO1xuICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7XG4gICAgICBfZGlzcGF0Y2hlckFwcERpc3BhdGNoZXIyWydkZWZhdWx0J10uZGlzcGF0Y2hTZXJ2ZXJBY3Rpb24oe1xuICAgICAgICB0eXBlOiBfY29uc3RhbnRzQWN0aW9uVHlwZXMyWydkZWZhdWx0J10uQ0xJRU5UX0FERF9UT1JSRU5UX1NVQ0NFU1MsXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICByZXNwb25zZTogcmVzcG9uc2VcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSlbJ2NhdGNoJ10oZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICBfZGlzcGF0Y2hlckFwcERpc3BhdGNoZXIyWydkZWZhdWx0J10uZGlzcGF0Y2hTZXJ2ZXJBY3Rpb24oe1xuICAgICAgICB0eXBlOiBfY29uc3RhbnRzQWN0aW9uVHlwZXMyWydkZWZhdWx0J10uQ0xJRU5UX0FERF9UT1JSRU5UX0VSUk9SLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgZXJyb3I6IGVycm9yXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9LFxuXG4gIGRlbGV0ZVRvcnJlbnRzOiBmdW5jdGlvbiBkZWxldGVUb3JyZW50cyhoYXNoKSB7XG4gICAgcmV0dXJuIF9heGlvczJbJ2RlZmF1bHQnXS5wb3N0KCcvY2xpZW50L3RvcnJlbnRzL2RlbGV0ZScsIHsgaGFzaDogaGFzaCB9KS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBqc29uID0gYXJndW1lbnRzLmxlbmd0aCA8PSAwIHx8IGFyZ3VtZW50c1swXSA9PT0gdW5kZWZpbmVkID8ge30gOiBhcmd1bWVudHNbMF07XG5cbiAgICAgIHJldHVybiBqc29uLmRhdGE7XG4gICAgfSkudGhlbihmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgX2Rpc3BhdGNoZXJBcHBEaXNwYXRjaGVyMlsnZGVmYXVsdCddLmRpc3BhdGNoU2VydmVyQWN0aW9uKHtcbiAgICAgICAgdHlwZTogX2NvbnN0YW50c0FjdGlvblR5cGVzMlsnZGVmYXVsdCddLkNMSUVOVF9SRU1PVkVfVE9SUkVOVF9TVUNDRVNTLFxuICAgICAgICBkYXRhOiBkYXRhXG4gICAgICB9KTtcbiAgICB9KVsnY2F0Y2gnXShmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgIF9kaXNwYXRjaGVyQXBwRGlzcGF0Y2hlcjJbJ2RlZmF1bHQnXS5kaXNwYXRjaFNlcnZlckFjdGlvbih7XG4gICAgICAgIHR5cGU6IF9jb25zdGFudHNBY3Rpb25UeXBlczJbJ2RlZmF1bHQnXS5DTElFTlRfUkVNT1ZFX1RPUlJFTlRfRVJST1IsXG4gICAgICAgIGVycm9yOiBlcnJvclxuICAgICAgfSk7XG4gICAgfSk7XG4gIH0sXG5cbiAgZmV0Y2hMYXRlc3RUb3JyZW50TG9jYXRpb246IGZ1bmN0aW9uIGZldGNoTGF0ZXN0VG9ycmVudExvY2F0aW9uKCkge1xuICAgIHJldHVybiBfYXhpb3MyWydkZWZhdWx0J10uZ2V0KCcvdWkvdG9ycmVudC1sb2NhdGlvbicpLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIGpzb24gPSBhcmd1bWVudHMubGVuZ3RoIDw9IDAgfHwgYXJndW1lbnRzWzBdID09PSB1bmRlZmluZWQgPyB7fSA6IGFyZ3VtZW50c1swXTtcblxuICAgICAgcmV0dXJuIGpzb24uZGF0YTtcbiAgICB9KS50aGVuKGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICBfZGlzcGF0Y2hlckFwcERpc3BhdGNoZXIyWydkZWZhdWx0J10uZGlzcGF0Y2hTZXJ2ZXJBY3Rpb24oe1xuICAgICAgICB0eXBlOiBfY29uc3RhbnRzQWN0aW9uVHlwZXMyWydkZWZhdWx0J10uVUlfTEFURVNUX1RPUlJFTlRfTE9DQVRJT05fUkVRVUVTVF9TVUNDRVNTLFxuICAgICAgICBkYXRhOiBkYXRhXG4gICAgICB9KTtcbiAgICB9KVsnY2F0Y2gnXShmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgIF9kaXNwYXRjaGVyQXBwRGlzcGF0Y2hlcjJbJ2RlZmF1bHQnXS5kaXNwYXRjaFNlcnZlckFjdGlvbih7XG4gICAgICAgIHR5cGU6IF9jb25zdGFudHNBY3Rpb25UeXBlczJbJ2RlZmF1bHQnXS5VSV9MQVRFU1RfVE9SUkVOVF9MT0NBVElPTl9SRVFVRVNUX0VSUk9SLFxuICAgICAgICBlcnJvcjogZXJyb3JcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9LFxuXG4gIGZldGNoVG9ycmVudHM6IGZ1bmN0aW9uIGZldGNoVG9ycmVudHMoKSB7XG4gICAgcmV0dXJuIF9heGlvczJbJ2RlZmF1bHQnXS5nZXQoJy9jbGllbnQvdG9ycmVudHMnKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBqc29uID0gYXJndW1lbnRzLmxlbmd0aCA8PSAwIHx8IGFyZ3VtZW50c1swXSA9PT0gdW5kZWZpbmVkID8ge30gOiBhcmd1bWVudHNbMF07XG5cbiAgICAgIHJldHVybiBqc29uLmRhdGE7XG4gICAgfSkudGhlbihmdW5jdGlvbiAodG9ycmVudHMpIHtcbiAgICAgIF9kaXNwYXRjaGVyQXBwRGlzcGF0Y2hlcjJbJ2RlZmF1bHQnXS5kaXNwYXRjaFNlcnZlckFjdGlvbih7XG4gICAgICAgIHR5cGU6IF9jb25zdGFudHNBY3Rpb25UeXBlczJbJ2RlZmF1bHQnXS5DTElFTlRfRkVUQ0hfVE9SUkVOVFNfU1VDQ0VTUyxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIHRvcnJlbnRzOiB0b3JyZW50c1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KVsnY2F0Y2gnXShmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgIF9kaXNwYXRjaGVyQXBwRGlzcGF0Y2hlcjJbJ2RlZmF1bHQnXS5kaXNwYXRjaFNlcnZlckFjdGlvbih7XG4gICAgICAgIHR5cGU6IF9jb25zdGFudHNBY3Rpb25UeXBlczJbJ2RlZmF1bHQnXS5DTElFTlRfRkVUQ0hfVE9SUkVOVFNfRVJST1IsXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBlcnJvcjogZXJyb3JcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH0sXG5cbiAgZmV0Y2hUb3JyZW50RGV0YWlsczogZnVuY3Rpb24gZmV0Y2hUb3JyZW50RGV0YWlscyhoYXNoKSB7XG4gICAgcmV0dXJuIF9heGlvczJbJ2RlZmF1bHQnXS5wb3N0KCcvY2xpZW50L3RvcnJlbnQtZGV0YWlscycsIHtcbiAgICAgIGhhc2g6IGhhc2hcbiAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBqc29uID0gYXJndW1lbnRzLmxlbmd0aCA8PSAwIHx8IGFyZ3VtZW50c1swXSA9PT0gdW5kZWZpbmVkID8ge30gOiBhcmd1bWVudHNbMF07XG5cbiAgICAgIHJldHVybiBqc29uLmRhdGE7XG4gICAgfSkudGhlbihmdW5jdGlvbiAodG9ycmVudERldGFpbHMpIHtcbiAgICAgIF9kaXNwYXRjaGVyQXBwRGlzcGF0Y2hlcjJbJ2RlZmF1bHQnXS5kaXNwYXRjaFNlcnZlckFjdGlvbih7XG4gICAgICAgIHR5cGU6IF9jb25zdGFudHNBY3Rpb25UeXBlczJbJ2RlZmF1bHQnXS5DTElFTlRfRkVUQ0hfVE9SUkVOVF9ERVRBSUxTX1NVQ0NFU1MsXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBoYXNoOiBoYXNoLFxuICAgICAgICAgIHRvcnJlbnREZXRhaWxzOiB0b3JyZW50RGV0YWlsc1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KVsnY2F0Y2gnXShmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgIF9kaXNwYXRjaGVyQXBwRGlzcGF0Y2hlcjJbJ2RlZmF1bHQnXS5kaXNwYXRjaFNlcnZlckFjdGlvbih7XG4gICAgICAgIHR5cGU6IF9jb25zdGFudHNBY3Rpb25UeXBlczJbJ2RlZmF1bHQnXS5DTElFTlRfRkVUQ0hfVE9SUkVOVF9ERVRBSUxTX0VSUk9SLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgaGFzaDogaGFzaFxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSxcblxuICBmZXRjaFRvcnJlbnRTdGF0dXNDb3VudDogZnVuY3Rpb24gZmV0Y2hUb3JyZW50U3RhdHVzQ291bnQoKSB7XG4gICAgcmV0dXJuIF9heGlvczJbJ2RlZmF1bHQnXS5nZXQoJy9jbGllbnQvdG9ycmVudHMvc3RhdHVzLWNvdW50JykudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIganNvbiA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMCB8fCBhcmd1bWVudHNbMF0gPT09IHVuZGVmaW5lZCA/IHt9IDogYXJndW1lbnRzWzBdO1xuXG4gICAgICByZXR1cm4ganNvbi5kYXRhO1xuICAgIH0pLnRoZW4oZnVuY3Rpb24gKGRhdGEpIHtcbiAgICAgIF9kaXNwYXRjaGVyQXBwRGlzcGF0Y2hlcjJbJ2RlZmF1bHQnXS5kaXNwYXRjaFNlcnZlckFjdGlvbih7XG4gICAgICAgIHR5cGU6IF9jb25zdGFudHNBY3Rpb25UeXBlczJbJ2RlZmF1bHQnXS5DTElFTlRfRkVUQ0hfVE9SUkVOVF9TVEFUVVNfQ09VTlRfUkVRVUVTVF9TVUNDRVNTLFxuICAgICAgICBkYXRhOiBkYXRhXG4gICAgICB9KTtcbiAgICB9KVsnY2F0Y2gnXShmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgIF9kaXNwYXRjaGVyQXBwRGlzcGF0Y2hlcjJbJ2RlZmF1bHQnXS5kaXNwYXRjaFNlcnZlckFjdGlvbih7XG4gICAgICAgIHR5cGU6IF9jb25zdGFudHNBY3Rpb25UeXBlczJbJ2RlZmF1bHQnXS5DTElFTlRfRkVUQ0hfVE9SUkVOVF9TVEFUVVNfQ09VTlRfUkVRVUVTVF9FUlJPUixcbiAgICAgICAgZXJyb3I6IGVycm9yXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSxcblxuICBmZXRjaFRvcnJlbnRUcmFja2VyQ291bnQ6IGZ1bmN0aW9uIGZldGNoVG9ycmVudFRyYWNrZXJDb3VudCgpIHtcbiAgICByZXR1cm4gX2F4aW9zMlsnZGVmYXVsdCddLmdldCgnL2NsaWVudC90b3JyZW50cy90cmFja2VyLWNvdW50JykudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIganNvbiA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMCB8fCBhcmd1bWVudHNbMF0gPT09IHVuZGVmaW5lZCA/IHt9IDogYXJndW1lbnRzWzBdO1xuXG4gICAgICByZXR1cm4ganNvbi5kYXRhO1xuICAgIH0pLnRoZW4oZnVuY3Rpb24gKGRhdGEpIHtcbiAgICAgIF9kaXNwYXRjaGVyQXBwRGlzcGF0Y2hlcjJbJ2RlZmF1bHQnXS5kaXNwYXRjaFNlcnZlckFjdGlvbih7XG4gICAgICAgIHR5cGU6IF9jb25zdGFudHNBY3Rpb25UeXBlczJbJ2RlZmF1bHQnXS5DTElFTlRfRkVUQ0hfVE9SUkVOVF9UUkFDS0VSX0NPVU5UX1JFUVVFU1RfU1VDQ0VTUyxcbiAgICAgICAgZGF0YTogZGF0YVxuICAgICAgfSk7XG4gICAgfSlbJ2NhdGNoJ10oZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICBfZGlzcGF0Y2hlckFwcERpc3BhdGNoZXIyWydkZWZhdWx0J10uZGlzcGF0Y2hTZXJ2ZXJBY3Rpb24oe1xuICAgICAgICB0eXBlOiBfY29uc3RhbnRzQWN0aW9uVHlwZXMyWydkZWZhdWx0J10uQ0xJRU5UX0ZFVENIX1RPUlJFTlRfVFJBQ0tFUl9DT1VOVF9SRVFVRVNUX0VSUk9SLFxuICAgICAgICBlcnJvcjogZXJyb3JcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9LFxuXG4gIG1vdmVUb3JyZW50czogZnVuY3Rpb24gbW92ZVRvcnJlbnRzKGhhc2hlcywgb3B0aW9ucykge1xuICAgIHZhciBkZXN0aW5hdGlvbiA9IG9wdGlvbnMuZGVzdGluYXRpb247XG4gICAgdmFyIGZpbGVuYW1lcyA9IG9wdGlvbnMuZmlsZW5hbWVzO1xuICAgIHZhciBzb3VyY2VzID0gb3B0aW9ucy5zb3VyY2VzO1xuICAgIHZhciBtb3ZlRmlsZXMgPSBvcHRpb25zLm1vdmVGaWxlcztcblxuICAgIHJldHVybiBfYXhpb3MyWydkZWZhdWx0J10ucG9zdCgnL2NsaWVudC90b3JyZW50cy9tb3ZlJywgeyBoYXNoZXM6IGhhc2hlcywgZGVzdGluYXRpb246IGRlc3RpbmF0aW9uLCBmaWxlbmFtZXM6IGZpbGVuYW1lcywgc291cmNlczogc291cmNlcywgbW92ZUZpbGVzOiBtb3ZlRmlsZXMgfSkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIganNvbiA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMCB8fCBhcmd1bWVudHNbMF0gPT09IHVuZGVmaW5lZCA/IHt9IDogYXJndW1lbnRzWzBdO1xuXG4gICAgICByZXR1cm4ganNvbi5kYXRhO1xuICAgIH0pLnRoZW4oZnVuY3Rpb24gKGRhdGEpIHtcbiAgICAgIF9kaXNwYXRjaGVyQXBwRGlzcGF0Y2hlcjJbJ2RlZmF1bHQnXS5kaXNwYXRjaFNlcnZlckFjdGlvbih7XG4gICAgICAgIHR5cGU6IF9jb25zdGFudHNBY3Rpb25UeXBlczJbJ2RlZmF1bHQnXS5DTElFTlRfTU9WRV9UT1JSRU5UU19TVUNDRVNTLFxuICAgICAgICBkYXRhOiBkYXRhXG4gICAgICB9KTtcbiAgICB9KVsnY2F0Y2gnXShmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgIF9kaXNwYXRjaGVyQXBwRGlzcGF0Y2hlcjJbJ2RlZmF1bHQnXS5kaXNwYXRjaFNlcnZlckFjdGlvbih7XG4gICAgICAgIHR5cGU6IF9jb25zdGFudHNBY3Rpb25UeXBlczJbJ2RlZmF1bHQnXS5DTElFTlRfTU9WRV9UT1JSRU5UU19FUlJPUixcbiAgICAgICAgZXJyb3I6IGVycm9yXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSxcblxuICBwYXVzZVRvcnJlbnRzOiBmdW5jdGlvbiBwYXVzZVRvcnJlbnRzKGhhc2hlcykge1xuICAgIHJldHVybiBfYXhpb3MyWydkZWZhdWx0J10ucG9zdCgnL2NsaWVudC9wYXVzZScsIHtcbiAgICAgIGhhc2hlczogaGFzaGVzXG4gICAgfSkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIganNvbiA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMCB8fCBhcmd1bWVudHNbMF0gPT09IHVuZGVmaW5lZCA/IHt9IDogYXJndW1lbnRzWzBdO1xuXG4gICAgICByZXR1cm4ganNvbi5kYXRhO1xuICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7XG4gICAgICBfZGlzcGF0Y2hlckFwcERpc3BhdGNoZXIyWydkZWZhdWx0J10uZGlzcGF0Y2hTZXJ2ZXJBY3Rpb24oe1xuICAgICAgICB0eXBlOiBfY29uc3RhbnRzQWN0aW9uVHlwZXMyWydkZWZhdWx0J10uQ0xJRU5UX1NUQVJUX1RPUlJFTlRfU1VDQ0VTUyxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIHJlc3BvbnNlOiByZXNwb25zZVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KVsnY2F0Y2gnXShmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgIF9kaXNwYXRjaGVyQXBwRGlzcGF0Y2hlcjJbJ2RlZmF1bHQnXS5kaXNwYXRjaFNlcnZlckFjdGlvbih7XG4gICAgICAgIHR5cGU6IF9jb25zdGFudHNBY3Rpb25UeXBlczJbJ2RlZmF1bHQnXS5DTElFTlRfU1RBUlRfVE9SUkVOVF9FUlJPUixcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIGVycm9yOiBlcnJvclxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSxcblxuICBzdGFydFRvcnJlbnRzOiBmdW5jdGlvbiBzdGFydFRvcnJlbnRzKGhhc2hlcykge1xuICAgIHJldHVybiBfYXhpb3MyWydkZWZhdWx0J10ucG9zdCgnL2NsaWVudC9zdGFydCcsIHtcbiAgICAgIGhhc2hlczogaGFzaGVzXG4gICAgfSkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIganNvbiA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMCB8fCBhcmd1bWVudHNbMF0gPT09IHVuZGVmaW5lZCA/IHt9IDogYXJndW1lbnRzWzBdO1xuXG4gICAgICByZXR1cm4ganNvbi5kYXRhO1xuICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7XG4gICAgICBfZGlzcGF0Y2hlckFwcERpc3BhdGNoZXIyWydkZWZhdWx0J10uZGlzcGF0Y2hTZXJ2ZXJBY3Rpb24oe1xuICAgICAgICB0eXBlOiBfY29uc3RhbnRzQWN0aW9uVHlwZXMyWydkZWZhdWx0J10uQ0xJRU5UX1NUQVJUX1RPUlJFTlRfU1VDQ0VTUyxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIHJlc3BvbnNlOiByZXNwb25zZVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KVsnY2F0Y2gnXShmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgIF9kaXNwYXRjaGVyQXBwRGlzcGF0Y2hlcjJbJ2RlZmF1bHQnXS5kaXNwYXRjaFNlcnZlckFjdGlvbih7XG4gICAgICAgIHR5cGU6IF9jb25zdGFudHNBY3Rpb25UeXBlczJbJ2RlZmF1bHQnXS5DTElFTlRfU1RBUlRfVE9SUkVOVF9FUlJPUixcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIGVycm9yOiBlcnJvclxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSxcblxuICBzdG9wVG9ycmVudHM6IGZ1bmN0aW9uIHN0b3BUb3JyZW50cyhoYXNoZXMpIHtcbiAgICByZXR1cm4gX2F4aW9zMlsnZGVmYXVsdCddLnBvc3QoJy9jbGllbnQvc3RvcCcsIHtcbiAgICAgIGhhc2hlczogaGFzaGVzXG4gICAgfSkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIganNvbiA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMCB8fCBhcmd1bWVudHNbMF0gPT09IHVuZGVmaW5lZCA/IHt9IDogYXJndW1lbnRzWzBdO1xuXG4gICAgICByZXR1cm4ganNvbi5kYXRhO1xuICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7XG4gICAgICBfZGlzcGF0Y2hlckFwcERpc3BhdGNoZXIyWydkZWZhdWx0J10uZGlzcGF0Y2hTZXJ2ZXJBY3Rpb24oe1xuICAgICAgICB0eXBlOiBfY29uc3RhbnRzQWN0aW9uVHlwZXMyWydkZWZhdWx0J10uQ0xJRU5UX1NUT1BfVE9SUkVOVF9TVUNDRVNTLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgcmVzcG9uc2U6IHJlc3BvbnNlXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pWydjYXRjaCddKGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgX2Rpc3BhdGNoZXJBcHBEaXNwYXRjaGVyMlsnZGVmYXVsdCddLmRpc3BhdGNoU2VydmVyQWN0aW9uKHtcbiAgICAgICAgdHlwZTogX2NvbnN0YW50c0FjdGlvblR5cGVzMlsnZGVmYXVsdCddLkNMSUVOVF9TVE9QX1RPUlJFTlRfRVJST1IsXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBlcnJvcjogZXJyb3JcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH0sXG5cbiAgc2V0UHJpb3JpdHk6IGZ1bmN0aW9uIHNldFByaW9yaXR5KGhhc2gsIHByaW9yaXR5KSB7XG4gICAgcmV0dXJuIF9heGlvczJbJ2RlZmF1bHQnXS5wYXRjaCgnL2NsaWVudC90b3JyZW50cy8nICsgaGFzaCArICcvcHJpb3JpdHknLCB7XG4gICAgICBoYXNoOiBoYXNoLFxuICAgICAgcHJpb3JpdHk6IHByaW9yaXR5XG4gICAgfSkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIganNvbiA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMCB8fCBhcmd1bWVudHNbMF0gPT09IHVuZGVmaW5lZCA/IHt9IDogYXJndW1lbnRzWzBdO1xuXG4gICAgICByZXR1cm4ganNvbi5kYXRhO1xuICAgIH0pLnRoZW4oZnVuY3Rpb24gKGRhdGEpIHtcbiAgICAgIF9kaXNwYXRjaGVyQXBwRGlzcGF0Y2hlcjJbJ2RlZmF1bHQnXS5kaXNwYXRjaFNlcnZlckFjdGlvbih7XG4gICAgICAgIHR5cGU6IF9jb25zdGFudHNBY3Rpb25UeXBlczJbJ2RlZmF1bHQnXS5DTElFTlRfU0VUX0ZJTEVfUFJJT1JJVFlfU1VDQ0VTUyxcbiAgICAgICAgZGF0YTogZGF0YVxuICAgICAgfSk7XG4gICAgfSlbJ2NhdGNoJ10oZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICBfZGlzcGF0Y2hlckFwcERpc3BhdGNoZXIyWydkZWZhdWx0J10uZGlzcGF0Y2hTZXJ2ZXJBY3Rpb24oe1xuICAgICAgICB0eXBlOiBfY29uc3RhbnRzQWN0aW9uVHlwZXMyWydkZWZhdWx0J10uQ0xJRU5UX1NFVF9GSUxFX1BSSU9SSVRZX0VSUk9SLFxuICAgICAgICBlcnJvcjogZXJyb3JcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9LFxuXG4gIHNldEZpbGVQcmlvcml0eTogZnVuY3Rpb24gc2V0RmlsZVByaW9yaXR5KGhhc2gsIGZpbGVJbmRpY2VzLCBwcmlvcml0eSkge1xuICAgIHJldHVybiBfYXhpb3MyWydkZWZhdWx0J10ucGF0Y2goJy9jbGllbnQvdG9ycmVudHMvJyArIGhhc2ggKyAnL2ZpbGUtcHJpb3JpdHknLCB7XG4gICAgICBoYXNoOiBoYXNoLFxuICAgICAgZmlsZUluZGljZXM6IGZpbGVJbmRpY2VzLFxuICAgICAgcHJpb3JpdHk6IHByaW9yaXR5XG4gICAgfSkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIganNvbiA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMCB8fCBhcmd1bWVudHNbMF0gPT09IHVuZGVmaW5lZCA/IHt9IDogYXJndW1lbnRzWzBdO1xuXG4gICAgICByZXR1cm4ganNvbi5kYXRhO1xuICAgIH0pLnRoZW4oZnVuY3Rpb24gKGRhdGEpIHtcbiAgICAgIF9kaXNwYXRjaGVyQXBwRGlzcGF0Y2hlcjJbJ2RlZmF1bHQnXS5kaXNwYXRjaFNlcnZlckFjdGlvbih7XG4gICAgICAgIHR5cGU6IF9jb25zdGFudHNBY3Rpb25UeXBlczJbJ2RlZmF1bHQnXS5DTElFTlRfU0VUX0ZJTEVfUFJJT1JJVFlfU1VDQ0VTUyxcbiAgICAgICAgZGF0YTogZGF0YVxuICAgICAgfSk7XG4gICAgfSlbJ2NhdGNoJ10oZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICBfZGlzcGF0Y2hlckFwcERpc3BhdGNoZXIyWydkZWZhdWx0J10uZGlzcGF0Y2hTZXJ2ZXJBY3Rpb24oe1xuICAgICAgICB0eXBlOiBfY29uc3RhbnRzQWN0aW9uVHlwZXMyWydkZWZhdWx0J10uQ0xJRU5UX1NFVF9GSUxFX1BSSU9SSVRZX0VSUk9SLFxuICAgICAgICBlcnJvcjogZXJyb3JcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG59O1xuXG5leHBvcnRzWydkZWZhdWx0J10gPSBUb3JyZW50QWN0aW9ucztcbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9jbGllbnQvc291cmNlL3NjcmlwdHMvYWN0aW9ucy9Ub3JyZW50QWN0aW9ucy5qc1xuICoqIG1vZHVsZSBpZCA9IDE4NlxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIl0sInNvdXJjZVJvb3QiOiIifQ=="); + eval("'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _axios = __webpack_require__(187);\n\nvar _axios2 = _interopRequireDefault(_axios);\n\nvar _dispatcherAppDispatcher = __webpack_require__(179);\n\nvar _dispatcherAppDispatcher2 = _interopRequireDefault(_dispatcherAppDispatcher);\n\nvar _constantsActionTypes = __webpack_require__(178);\n\nvar _constantsActionTypes2 = _interopRequireDefault(_constantsActionTypes);\n\nvar TorrentActions = {\n addTorrentsByUrls: function addTorrentsByUrls(urls, destination) {\n _axios2['default'].post('/ui/torrent-location', {\n destination: destination\n })['catch'](function (error) {\n console.log(error);\n });\n return _axios2['default'].post('/client/add', {\n urls: urls,\n destination: destination\n }).then(function () {\n var json = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n return json.data;\n }).then(function (response) {\n _dispatcherAppDispatcher2['default'].dispatchServerAction({\n type: _constantsActionTypes2['default'].CLIENT_ADD_TORRENT_SUCCESS,\n data: {\n response: response\n }\n });\n })['catch'](function (error) {\n _dispatcherAppDispatcher2['default'].dispatchServerAction({\n type: _constantsActionTypes2['default'].CLIENT_ADD_TORRENT_ERROR,\n data: {\n error: error\n }\n });\n });\n },\n\n addTorrentsByFiles: function addTorrentsByFiles(filesData, destination) {\n _axios2['default'].post('/ui/torrent-location', {\n destination: destination\n })['catch'](function (error) {\n console.log(error);\n });\n return _axios2['default'].post('/client/add-files', filesData).then(function () {\n var json = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n return json.data;\n }).then(function (response) {\n _dispatcherAppDispatcher2['default'].dispatchServerAction({\n type: _constantsActionTypes2['default'].CLIENT_ADD_TORRENT_SUCCESS,\n data: {\n response: response\n }\n });\n })['catch'](function (error) {\n _dispatcherAppDispatcher2['default'].dispatchServerAction({\n type: _constantsActionTypes2['default'].CLIENT_ADD_TORRENT_ERROR,\n data: {\n error: error\n }\n });\n });\n },\n\n deleteTorrents: function deleteTorrents(hash) {\n return _axios2['default'].post('/client/torrents/delete', { hash: hash }).then(function () {\n var json = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n return json.data;\n }).then(function (data) {\n _dispatcherAppDispatcher2['default'].dispatchServerAction({\n type: _constantsActionTypes2['default'].CLIENT_REMOVE_TORRENT_SUCCESS,\n data: data\n });\n })['catch'](function (error) {\n _dispatcherAppDispatcher2['default'].dispatchServerAction({\n type: _constantsActionTypes2['default'].CLIENT_REMOVE_TORRENT_ERROR,\n error: error\n });\n });\n },\n\n fetchLatestTorrentLocation: function fetchLatestTorrentLocation() {\n return _axios2['default'].get('/ui/torrent-location').then(function () {\n var json = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n return json.data;\n }).then(function (data) {\n _dispatcherAppDispatcher2['default'].dispatchServerAction({\n type: _constantsActionTypes2['default'].UI_LATEST_TORRENT_LOCATION_REQUEST_SUCCESS,\n data: data\n });\n })['catch'](function (error) {\n _dispatcherAppDispatcher2['default'].dispatchServerAction({\n type: _constantsActionTypes2['default'].UI_LATEST_TORRENT_LOCATION_REQUEST_ERROR,\n error: error\n });\n });\n },\n\n fetchTorrents: function fetchTorrents() {\n return _axios2['default'].get('/client/torrents').then(function () {\n var json = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n return json.data;\n }).then(function (torrents) {\n _dispatcherAppDispatcher2['default'].dispatchServerAction({\n type: _constantsActionTypes2['default'].CLIENT_FETCH_TORRENTS_SUCCESS,\n data: {\n torrents: torrents\n }\n });\n })['catch'](function (error) {\n console.log(error);\n _dispatcherAppDispatcher2['default'].dispatchServerAction({\n type: _constantsActionTypes2['default'].CLIENT_FETCH_TORRENTS_ERROR,\n data: {\n error: error\n }\n });\n });\n },\n\n fetchTorrentDetails: function fetchTorrentDetails(hash) {\n return _axios2['default'].post('/client/torrent-details', {\n hash: hash\n }).then(function () {\n var json = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n return json.data;\n }).then(function (torrentDetails) {\n _dispatcherAppDispatcher2['default'].dispatchServerAction({\n type: _constantsActionTypes2['default'].CLIENT_FETCH_TORRENT_DETAILS_SUCCESS,\n data: {\n hash: hash,\n torrentDetails: torrentDetails\n }\n });\n })['catch'](function (error) {\n _dispatcherAppDispatcher2['default'].dispatchServerAction({\n type: _constantsActionTypes2['default'].CLIENT_FETCH_TORRENT_DETAILS_ERROR,\n data: {\n hash: hash\n }\n });\n });\n },\n\n fetchTorrentStatusCount: function fetchTorrentStatusCount() {\n return _axios2['default'].get('/client/torrents/status-count').then(function () {\n var json = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n return json.data;\n }).then(function (data) {\n _dispatcherAppDispatcher2['default'].dispatchServerAction({\n type: _constantsActionTypes2['default'].CLIENT_FETCH_TORRENT_STATUS_COUNT_REQUEST_SUCCESS,\n data: data\n });\n })['catch'](function (error) {\n _dispatcherAppDispatcher2['default'].dispatchServerAction({\n type: _constantsActionTypes2['default'].CLIENT_FETCH_TORRENT_STATUS_COUNT_REQUEST_ERROR,\n error: error\n });\n });\n },\n\n fetchTorrentTrackerCount: function fetchTorrentTrackerCount() {\n return _axios2['default'].get('/client/torrents/tracker-count').then(function () {\n var json = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n return json.data;\n }).then(function (data) {\n _dispatcherAppDispatcher2['default'].dispatchServerAction({\n type: _constantsActionTypes2['default'].CLIENT_FETCH_TORRENT_TRACKER_COUNT_REQUEST_SUCCESS,\n data: data\n });\n })['catch'](function (error) {\n _dispatcherAppDispatcher2['default'].dispatchServerAction({\n type: _constantsActionTypes2['default'].CLIENT_FETCH_TORRENT_TRACKER_COUNT_REQUEST_ERROR,\n error: error\n });\n });\n },\n\n moveTorrents: function moveTorrents(hashes, options) {\n var destination = options.destination;\n var filenames = options.filenames;\n var sources = options.sources;\n var moveFiles = options.moveFiles;\n\n return _axios2['default'].post('/client/torrents/move', { hashes: hashes, destination: destination, filenames: filenames, sources: sources, moveFiles: moveFiles }).then(function () {\n var json = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n return json.data;\n }).then(function (data) {\n _dispatcherAppDispatcher2['default'].dispatchServerAction({\n type: _constantsActionTypes2['default'].CLIENT_MOVE_TORRENTS_SUCCESS,\n data: data\n });\n })['catch'](function (error) {\n _dispatcherAppDispatcher2['default'].dispatchServerAction({\n type: _constantsActionTypes2['default'].CLIENT_MOVE_TORRENTS_ERROR,\n error: error\n });\n });\n },\n\n pauseTorrents: function pauseTorrents(hashes) {\n return _axios2['default'].post('/client/pause', {\n hashes: hashes\n }).then(function () {\n var json = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n return json.data;\n }).then(function (response) {\n _dispatcherAppDispatcher2['default'].dispatchServerAction({\n type: _constantsActionTypes2['default'].CLIENT_START_TORRENT_SUCCESS,\n data: {\n response: response\n }\n });\n })['catch'](function (error) {\n _dispatcherAppDispatcher2['default'].dispatchServerAction({\n type: _constantsActionTypes2['default'].CLIENT_START_TORRENT_ERROR,\n data: {\n error: error\n }\n });\n });\n },\n\n startTorrents: function startTorrents(hashes) {\n return _axios2['default'].post('/client/start', {\n hashes: hashes\n }).then(function () {\n var json = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n return json.data;\n }).then(function (response) {\n _dispatcherAppDispatcher2['default'].dispatchServerAction({\n type: _constantsActionTypes2['default'].CLIENT_START_TORRENT_SUCCESS,\n data: {\n response: response\n }\n });\n })['catch'](function (error) {\n _dispatcherAppDispatcher2['default'].dispatchServerAction({\n type: _constantsActionTypes2['default'].CLIENT_START_TORRENT_ERROR,\n data: {\n error: error\n }\n });\n });\n },\n\n stopTorrents: function stopTorrents(hashes) {\n return _axios2['default'].post('/client/stop', {\n hashes: hashes\n }).then(function () {\n var json = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n return json.data;\n }).then(function (response) {\n _dispatcherAppDispatcher2['default'].dispatchServerAction({\n type: _constantsActionTypes2['default'].CLIENT_STOP_TORRENT_SUCCESS,\n data: {\n response: response\n }\n });\n })['catch'](function (error) {\n _dispatcherAppDispatcher2['default'].dispatchServerAction({\n type: _constantsActionTypes2['default'].CLIENT_STOP_TORRENT_ERROR,\n data: {\n error: error\n }\n });\n });\n },\n\n setPriority: function setPriority(hash, priority) {\n return _axios2['default'].patch('/client/torrents/' + hash + '/priority', {\n hash: hash,\n priority: priority\n }).then(function () {\n var json = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n return json.data;\n }).then(function (data) {\n _dispatcherAppDispatcher2['default'].dispatchServerAction({\n type: _constantsActionTypes2['default'].CLIENT_SET_FILE_PRIORITY_SUCCESS,\n data: data\n });\n })['catch'](function (error) {\n _dispatcherAppDispatcher2['default'].dispatchServerAction({\n type: _constantsActionTypes2['default'].CLIENT_SET_FILE_PRIORITY_ERROR,\n error: error\n });\n });\n },\n\n setFilePriority: function setFilePriority(hash, fileIndices, priority) {\n return _axios2['default'].patch('/client/torrents/' + hash + '/file-priority', {\n hash: hash,\n fileIndices: fileIndices,\n priority: priority\n }).then(function () {\n var json = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n return json.data;\n }).then(function (data) {\n _dispatcherAppDispatcher2['default'].dispatchServerAction({\n type: _constantsActionTypes2['default'].CLIENT_SET_FILE_PRIORITY_SUCCESS,\n data: data\n });\n })['catch'](function (error) {\n _dispatcherAppDispatcher2['default'].dispatchServerAction({\n type: _constantsActionTypes2['default'].CLIENT_SET_FILE_PRIORITY_ERROR,\n error: error\n });\n });\n }\n};\n\nexports['default'] = TorrentActions;\nmodule.exports = exports['default'];//@ sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9jbGllbnQvc291cmNlL3NjcmlwdHMvYWN0aW9ucy9Ub3JyZW50QWN0aW9ucy5qcz8yMTA0Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztBQUVBO0FBQ0E7QUFDQSxDQUFDOztBQUVELHNDQUFzQyx1Q0FBdUMsa0JBQWtCOztBQUUvRjs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wseUVBQXlFOztBQUV6RTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTCxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEtBQUs7QUFDTDtBQUNBLHlFQUF5RTs7QUFFekU7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0wsR0FBRzs7QUFFSDtBQUNBLCtEQUErRCxhQUFhO0FBQzVFLHlFQUF5RTs7QUFFekU7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMLEdBQUc7O0FBRUg7QUFDQTtBQUNBLHlFQUF5RTs7QUFFekU7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMLEdBQUc7O0FBRUg7QUFDQTtBQUNBLHlFQUF5RTs7QUFFekU7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTCxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCx5RUFBeUU7O0FBRXpFO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0wsR0FBRzs7QUFFSDtBQUNBO0FBQ0EseUVBQXlFOztBQUV6RTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0wsR0FBRzs7QUFFSDtBQUNBO0FBQ0EseUVBQXlFOztBQUV6RTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0wsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLDZEQUE2RCx5R0FBeUc7QUFDdEsseUVBQXlFOztBQUV6RTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0wsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wseUVBQXlFOztBQUV6RTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTCxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCx5RUFBeUU7O0FBRXpFO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLHlFQUF5RTs7QUFFekU7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0wsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCx5RUFBeUU7O0FBRXpFO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTCxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wseUVBQXlFOztBQUV6RTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBIiwiZmlsZSI6IjE4Ni5qcyIsInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7ICdkZWZhdWx0Jzogb2JqIH07IH1cblxudmFyIF9heGlvcyA9IHJlcXVpcmUoJ2F4aW9zJyk7XG5cbnZhciBfYXhpb3MyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfYXhpb3MpO1xuXG52YXIgX2Rpc3BhdGNoZXJBcHBEaXNwYXRjaGVyID0gcmVxdWlyZSgnLi4vZGlzcGF0Y2hlci9BcHBEaXNwYXRjaGVyJyk7XG5cbnZhciBfZGlzcGF0Y2hlckFwcERpc3BhdGNoZXIyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZGlzcGF0Y2hlckFwcERpc3BhdGNoZXIpO1xuXG52YXIgX2NvbnN0YW50c0FjdGlvblR5cGVzID0gcmVxdWlyZSgnLi4vY29uc3RhbnRzL0FjdGlvblR5cGVzJyk7XG5cbnZhciBfY29uc3RhbnRzQWN0aW9uVHlwZXMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY29uc3RhbnRzQWN0aW9uVHlwZXMpO1xuXG52YXIgVG9ycmVudEFjdGlvbnMgPSB7XG4gIGFkZFRvcnJlbnRzQnlVcmxzOiBmdW5jdGlvbiBhZGRUb3JyZW50c0J5VXJscyh1cmxzLCBkZXN0aW5hdGlvbikge1xuICAgIF9heGlvczJbJ2RlZmF1bHQnXS5wb3N0KCcvdWkvdG9ycmVudC1sb2NhdGlvbicsIHtcbiAgICAgIGRlc3RpbmF0aW9uOiBkZXN0aW5hdGlvblxuICAgIH0pWydjYXRjaCddKGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xuICAgIH0pO1xuICAgIHJldHVybiBfYXhpb3MyWydkZWZhdWx0J10ucG9zdCgnL2NsaWVudC9hZGQnLCB7XG4gICAgICB1cmxzOiB1cmxzLFxuICAgICAgZGVzdGluYXRpb246IGRlc3RpbmF0aW9uXG4gICAgfSkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIganNvbiA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMCB8fCBhcmd1bWVudHNbMF0gPT09IHVuZGVmaW5lZCA/IHt9IDogYXJndW1lbnRzWzBdO1xuXG4gICAgICByZXR1cm4ganNvbi5kYXRhO1xuICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7XG4gICAgICBfZGlzcGF0Y2hlckFwcERpc3BhdGNoZXIyWydkZWZhdWx0J10uZGlzcGF0Y2hTZXJ2ZXJBY3Rpb24oe1xuICAgICAgICB0eXBlOiBfY29uc3RhbnRzQWN0aW9uVHlwZXMyWydkZWZhdWx0J10uQ0xJRU5UX0FERF9UT1JSRU5UX1NVQ0NFU1MsXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICByZXNwb25zZTogcmVzcG9uc2VcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSlbJ2NhdGNoJ10oZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICBfZGlzcGF0Y2hlckFwcERpc3BhdGNoZXIyWydkZWZhdWx0J10uZGlzcGF0Y2hTZXJ2ZXJBY3Rpb24oe1xuICAgICAgICB0eXBlOiBfY29uc3RhbnRzQWN0aW9uVHlwZXMyWydkZWZhdWx0J10uQ0xJRU5UX0FERF9UT1JSRU5UX0VSUk9SLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgZXJyb3I6IGVycm9yXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9LFxuXG4gIGFkZFRvcnJlbnRzQnlGaWxlczogZnVuY3Rpb24gYWRkVG9ycmVudHNCeUZpbGVzKGZpbGVzRGF0YSwgZGVzdGluYXRpb24pIHtcbiAgICBfYXhpb3MyWydkZWZhdWx0J10ucG9zdCgnL3VpL3RvcnJlbnQtbG9jYXRpb24nLCB7XG4gICAgICBkZXN0aW5hdGlvbjogZGVzdGluYXRpb25cbiAgICB9KVsnY2F0Y2gnXShmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcbiAgICB9KTtcbiAgICByZXR1cm4gX2F4aW9zMlsnZGVmYXVsdCddLnBvc3QoJy9jbGllbnQvYWRkLWZpbGVzJywgZmlsZXNEYXRhKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBqc29uID0gYXJndW1lbnRzLmxlbmd0aCA8PSAwIHx8IGFyZ3VtZW50c1swXSA9PT0gdW5kZWZpbmVkID8ge30gOiBhcmd1bWVudHNbMF07XG5cbiAgICAgIHJldHVybiBqc29uLmRhdGE7XG4gICAgfSkudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHtcbiAgICAgIF9kaXNwYXRjaGVyQXBwRGlzcGF0Y2hlcjJbJ2RlZmF1bHQnXS5kaXNwYXRjaFNlcnZlckFjdGlvbih7XG4gICAgICAgIHR5cGU6IF9jb25zdGFudHNBY3Rpb25UeXBlczJbJ2RlZmF1bHQnXS5DTElFTlRfQUREX1RPUlJFTlRfU1VDQ0VTUyxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIHJlc3BvbnNlOiByZXNwb25zZVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KVsnY2F0Y2gnXShmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgIF9kaXNwYXRjaGVyQXBwRGlzcGF0Y2hlcjJbJ2RlZmF1bHQnXS5kaXNwYXRjaFNlcnZlckFjdGlvbih7XG4gICAgICAgIHR5cGU6IF9jb25zdGFudHNBY3Rpb25UeXBlczJbJ2RlZmF1bHQnXS5DTElFTlRfQUREX1RPUlJFTlRfRVJST1IsXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBlcnJvcjogZXJyb3JcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH0sXG5cbiAgZGVsZXRlVG9ycmVudHM6IGZ1bmN0aW9uIGRlbGV0ZVRvcnJlbnRzKGhhc2gpIHtcbiAgICByZXR1cm4gX2F4aW9zMlsnZGVmYXVsdCddLnBvc3QoJy9jbGllbnQvdG9ycmVudHMvZGVsZXRlJywgeyBoYXNoOiBoYXNoIH0pLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIGpzb24gPSBhcmd1bWVudHMubGVuZ3RoIDw9IDAgfHwgYXJndW1lbnRzWzBdID09PSB1bmRlZmluZWQgPyB7fSA6IGFyZ3VtZW50c1swXTtcblxuICAgICAgcmV0dXJuIGpzb24uZGF0YTtcbiAgICB9KS50aGVuKGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICBfZGlzcGF0Y2hlckFwcERpc3BhdGNoZXIyWydkZWZhdWx0J10uZGlzcGF0Y2hTZXJ2ZXJBY3Rpb24oe1xuICAgICAgICB0eXBlOiBfY29uc3RhbnRzQWN0aW9uVHlwZXMyWydkZWZhdWx0J10uQ0xJRU5UX1JFTU9WRV9UT1JSRU5UX1NVQ0NFU1MsXG4gICAgICAgIGRhdGE6IGRhdGFcbiAgICAgIH0pO1xuICAgIH0pWydjYXRjaCddKGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgX2Rpc3BhdGNoZXJBcHBEaXNwYXRjaGVyMlsnZGVmYXVsdCddLmRpc3BhdGNoU2VydmVyQWN0aW9uKHtcbiAgICAgICAgdHlwZTogX2NvbnN0YW50c0FjdGlvblR5cGVzMlsnZGVmYXVsdCddLkNMSUVOVF9SRU1PVkVfVE9SUkVOVF9FUlJPUixcbiAgICAgICAgZXJyb3I6IGVycm9yXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSxcblxuICBmZXRjaExhdGVzdFRvcnJlbnRMb2NhdGlvbjogZnVuY3Rpb24gZmV0Y2hMYXRlc3RUb3JyZW50TG9jYXRpb24oKSB7XG4gICAgcmV0dXJuIF9heGlvczJbJ2RlZmF1bHQnXS5nZXQoJy91aS90b3JyZW50LWxvY2F0aW9uJykudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIganNvbiA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMCB8fCBhcmd1bWVudHNbMF0gPT09IHVuZGVmaW5lZCA/IHt9IDogYXJndW1lbnRzWzBdO1xuXG4gICAgICByZXR1cm4ganNvbi5kYXRhO1xuICAgIH0pLnRoZW4oZnVuY3Rpb24gKGRhdGEpIHtcbiAgICAgIF9kaXNwYXRjaGVyQXBwRGlzcGF0Y2hlcjJbJ2RlZmF1bHQnXS5kaXNwYXRjaFNlcnZlckFjdGlvbih7XG4gICAgICAgIHR5cGU6IF9jb25zdGFudHNBY3Rpb25UeXBlczJbJ2RlZmF1bHQnXS5VSV9MQVRFU1RfVE9SUkVOVF9MT0NBVElPTl9SRVFVRVNUX1NVQ0NFU1MsXG4gICAgICAgIGRhdGE6IGRhdGFcbiAgICAgIH0pO1xuICAgIH0pWydjYXRjaCddKGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgX2Rpc3BhdGNoZXJBcHBEaXNwYXRjaGVyMlsnZGVmYXVsdCddLmRpc3BhdGNoU2VydmVyQWN0aW9uKHtcbiAgICAgICAgdHlwZTogX2NvbnN0YW50c0FjdGlvblR5cGVzMlsnZGVmYXVsdCddLlVJX0xBVEVTVF9UT1JSRU5UX0xPQ0FUSU9OX1JFUVVFU1RfRVJST1IsXG4gICAgICAgIGVycm9yOiBlcnJvclxuICAgICAgfSk7XG4gICAgfSk7XG4gIH0sXG5cbiAgZmV0Y2hUb3JyZW50czogZnVuY3Rpb24gZmV0Y2hUb3JyZW50cygpIHtcbiAgICByZXR1cm4gX2F4aW9zMlsnZGVmYXVsdCddLmdldCgnL2NsaWVudC90b3JyZW50cycpLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIGpzb24gPSBhcmd1bWVudHMubGVuZ3RoIDw9IDAgfHwgYXJndW1lbnRzWzBdID09PSB1bmRlZmluZWQgPyB7fSA6IGFyZ3VtZW50c1swXTtcblxuICAgICAgcmV0dXJuIGpzb24uZGF0YTtcbiAgICB9KS50aGVuKGZ1bmN0aW9uICh0b3JyZW50cykge1xuICAgICAgX2Rpc3BhdGNoZXJBcHBEaXNwYXRjaGVyMlsnZGVmYXVsdCddLmRpc3BhdGNoU2VydmVyQWN0aW9uKHtcbiAgICAgICAgdHlwZTogX2NvbnN0YW50c0FjdGlvblR5cGVzMlsnZGVmYXVsdCddLkNMSUVOVF9GRVRDSF9UT1JSRU5UU19TVUNDRVNTLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgdG9ycmVudHM6IHRvcnJlbnRzXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pWydjYXRjaCddKGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xuICAgICAgX2Rpc3BhdGNoZXJBcHBEaXNwYXRjaGVyMlsnZGVmYXVsdCddLmRpc3BhdGNoU2VydmVyQWN0aW9uKHtcbiAgICAgICAgdHlwZTogX2NvbnN0YW50c0FjdGlvblR5cGVzMlsnZGVmYXVsdCddLkNMSUVOVF9GRVRDSF9UT1JSRU5UU19FUlJPUixcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIGVycm9yOiBlcnJvclxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSxcblxuICBmZXRjaFRvcnJlbnREZXRhaWxzOiBmdW5jdGlvbiBmZXRjaFRvcnJlbnREZXRhaWxzKGhhc2gpIHtcbiAgICByZXR1cm4gX2F4aW9zMlsnZGVmYXVsdCddLnBvc3QoJy9jbGllbnQvdG9ycmVudC1kZXRhaWxzJywge1xuICAgICAgaGFzaDogaGFzaFxuICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIGpzb24gPSBhcmd1bWVudHMubGVuZ3RoIDw9IDAgfHwgYXJndW1lbnRzWzBdID09PSB1bmRlZmluZWQgPyB7fSA6IGFyZ3VtZW50c1swXTtcblxuICAgICAgcmV0dXJuIGpzb24uZGF0YTtcbiAgICB9KS50aGVuKGZ1bmN0aW9uICh0b3JyZW50RGV0YWlscykge1xuICAgICAgX2Rpc3BhdGNoZXJBcHBEaXNwYXRjaGVyMlsnZGVmYXVsdCddLmRpc3BhdGNoU2VydmVyQWN0aW9uKHtcbiAgICAgICAgdHlwZTogX2NvbnN0YW50c0FjdGlvblR5cGVzMlsnZGVmYXVsdCddLkNMSUVOVF9GRVRDSF9UT1JSRU5UX0RFVEFJTFNfU1VDQ0VTUyxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIGhhc2g6IGhhc2gsXG4gICAgICAgICAgdG9ycmVudERldGFpbHM6IHRvcnJlbnREZXRhaWxzXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pWydjYXRjaCddKGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgX2Rpc3BhdGNoZXJBcHBEaXNwYXRjaGVyMlsnZGVmYXVsdCddLmRpc3BhdGNoU2VydmVyQWN0aW9uKHtcbiAgICAgICAgdHlwZTogX2NvbnN0YW50c0FjdGlvblR5cGVzMlsnZGVmYXVsdCddLkNMSUVOVF9GRVRDSF9UT1JSRU5UX0RFVEFJTFNfRVJST1IsXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBoYXNoOiBoYXNoXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9LFxuXG4gIGZldGNoVG9ycmVudFN0YXR1c0NvdW50OiBmdW5jdGlvbiBmZXRjaFRvcnJlbnRTdGF0dXNDb3VudCgpIHtcbiAgICByZXR1cm4gX2F4aW9zMlsnZGVmYXVsdCddLmdldCgnL2NsaWVudC90b3JyZW50cy9zdGF0dXMtY291bnQnKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBqc29uID0gYXJndW1lbnRzLmxlbmd0aCA8PSAwIHx8IGFyZ3VtZW50c1swXSA9PT0gdW5kZWZpbmVkID8ge30gOiBhcmd1bWVudHNbMF07XG5cbiAgICAgIHJldHVybiBqc29uLmRhdGE7XG4gICAgfSkudGhlbihmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgX2Rpc3BhdGNoZXJBcHBEaXNwYXRjaGVyMlsnZGVmYXVsdCddLmRpc3BhdGNoU2VydmVyQWN0aW9uKHtcbiAgICAgICAgdHlwZTogX2NvbnN0YW50c0FjdGlvblR5cGVzMlsnZGVmYXVsdCddLkNMSUVOVF9GRVRDSF9UT1JSRU5UX1NUQVRVU19DT1VOVF9SRVFVRVNUX1NVQ0NFU1MsXG4gICAgICAgIGRhdGE6IGRhdGFcbiAgICAgIH0pO1xuICAgIH0pWydjYXRjaCddKGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgX2Rpc3BhdGNoZXJBcHBEaXNwYXRjaGVyMlsnZGVmYXVsdCddLmRpc3BhdGNoU2VydmVyQWN0aW9uKHtcbiAgICAgICAgdHlwZTogX2NvbnN0YW50c0FjdGlvblR5cGVzMlsnZGVmYXVsdCddLkNMSUVOVF9GRVRDSF9UT1JSRU5UX1NUQVRVU19DT1VOVF9SRVFVRVNUX0VSUk9SLFxuICAgICAgICBlcnJvcjogZXJyb3JcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9LFxuXG4gIGZldGNoVG9ycmVudFRyYWNrZXJDb3VudDogZnVuY3Rpb24gZmV0Y2hUb3JyZW50VHJhY2tlckNvdW50KCkge1xuICAgIHJldHVybiBfYXhpb3MyWydkZWZhdWx0J10uZ2V0KCcvY2xpZW50L3RvcnJlbnRzL3RyYWNrZXItY291bnQnKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBqc29uID0gYXJndW1lbnRzLmxlbmd0aCA8PSAwIHx8IGFyZ3VtZW50c1swXSA9PT0gdW5kZWZpbmVkID8ge30gOiBhcmd1bWVudHNbMF07XG5cbiAgICAgIHJldHVybiBqc29uLmRhdGE7XG4gICAgfSkudGhlbihmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgX2Rpc3BhdGNoZXJBcHBEaXNwYXRjaGVyMlsnZGVmYXVsdCddLmRpc3BhdGNoU2VydmVyQWN0aW9uKHtcbiAgICAgICAgdHlwZTogX2NvbnN0YW50c0FjdGlvblR5cGVzMlsnZGVmYXVsdCddLkNMSUVOVF9GRVRDSF9UT1JSRU5UX1RSQUNLRVJfQ09VTlRfUkVRVUVTVF9TVUNDRVNTLFxuICAgICAgICBkYXRhOiBkYXRhXG4gICAgICB9KTtcbiAgICB9KVsnY2F0Y2gnXShmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgIF9kaXNwYXRjaGVyQXBwRGlzcGF0Y2hlcjJbJ2RlZmF1bHQnXS5kaXNwYXRjaFNlcnZlckFjdGlvbih7XG4gICAgICAgIHR5cGU6IF9jb25zdGFudHNBY3Rpb25UeXBlczJbJ2RlZmF1bHQnXS5DTElFTlRfRkVUQ0hfVE9SUkVOVF9UUkFDS0VSX0NPVU5UX1JFUVVFU1RfRVJST1IsXG4gICAgICAgIGVycm9yOiBlcnJvclxuICAgICAgfSk7XG4gICAgfSk7XG4gIH0sXG5cbiAgbW92ZVRvcnJlbnRzOiBmdW5jdGlvbiBtb3ZlVG9ycmVudHMoaGFzaGVzLCBvcHRpb25zKSB7XG4gICAgdmFyIGRlc3RpbmF0aW9uID0gb3B0aW9ucy5kZXN0aW5hdGlvbjtcbiAgICB2YXIgZmlsZW5hbWVzID0gb3B0aW9ucy5maWxlbmFtZXM7XG4gICAgdmFyIHNvdXJjZXMgPSBvcHRpb25zLnNvdXJjZXM7XG4gICAgdmFyIG1vdmVGaWxlcyA9IG9wdGlvbnMubW92ZUZpbGVzO1xuXG4gICAgcmV0dXJuIF9heGlvczJbJ2RlZmF1bHQnXS5wb3N0KCcvY2xpZW50L3RvcnJlbnRzL21vdmUnLCB7IGhhc2hlczogaGFzaGVzLCBkZXN0aW5hdGlvbjogZGVzdGluYXRpb24sIGZpbGVuYW1lczogZmlsZW5hbWVzLCBzb3VyY2VzOiBzb3VyY2VzLCBtb3ZlRmlsZXM6IG1vdmVGaWxlcyB9KS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBqc29uID0gYXJndW1lbnRzLmxlbmd0aCA8PSAwIHx8IGFyZ3VtZW50c1swXSA9PT0gdW5kZWZpbmVkID8ge30gOiBhcmd1bWVudHNbMF07XG5cbiAgICAgIHJldHVybiBqc29uLmRhdGE7XG4gICAgfSkudGhlbihmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgX2Rpc3BhdGNoZXJBcHBEaXNwYXRjaGVyMlsnZGVmYXVsdCddLmRpc3BhdGNoU2VydmVyQWN0aW9uKHtcbiAgICAgICAgdHlwZTogX2NvbnN0YW50c0FjdGlvblR5cGVzMlsnZGVmYXVsdCddLkNMSUVOVF9NT1ZFX1RPUlJFTlRTX1NVQ0NFU1MsXG4gICAgICAgIGRhdGE6IGRhdGFcbiAgICAgIH0pO1xuICAgIH0pWydjYXRjaCddKGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgX2Rpc3BhdGNoZXJBcHBEaXNwYXRjaGVyMlsnZGVmYXVsdCddLmRpc3BhdGNoU2VydmVyQWN0aW9uKHtcbiAgICAgICAgdHlwZTogX2NvbnN0YW50c0FjdGlvblR5cGVzMlsnZGVmYXVsdCddLkNMSUVOVF9NT1ZFX1RPUlJFTlRTX0VSUk9SLFxuICAgICAgICBlcnJvcjogZXJyb3JcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9LFxuXG4gIHBhdXNlVG9ycmVudHM6IGZ1bmN0aW9uIHBhdXNlVG9ycmVudHMoaGFzaGVzKSB7XG4gICAgcmV0dXJuIF9heGlvczJbJ2RlZmF1bHQnXS5wb3N0KCcvY2xpZW50L3BhdXNlJywge1xuICAgICAgaGFzaGVzOiBoYXNoZXNcbiAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBqc29uID0gYXJndW1lbnRzLmxlbmd0aCA8PSAwIHx8IGFyZ3VtZW50c1swXSA9PT0gdW5kZWZpbmVkID8ge30gOiBhcmd1bWVudHNbMF07XG5cbiAgICAgIHJldHVybiBqc29uLmRhdGE7XG4gICAgfSkudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHtcbiAgICAgIF9kaXNwYXRjaGVyQXBwRGlzcGF0Y2hlcjJbJ2RlZmF1bHQnXS5kaXNwYXRjaFNlcnZlckFjdGlvbih7XG4gICAgICAgIHR5cGU6IF9jb25zdGFudHNBY3Rpb25UeXBlczJbJ2RlZmF1bHQnXS5DTElFTlRfU1RBUlRfVE9SUkVOVF9TVUNDRVNTLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgcmVzcG9uc2U6IHJlc3BvbnNlXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pWydjYXRjaCddKGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgX2Rpc3BhdGNoZXJBcHBEaXNwYXRjaGVyMlsnZGVmYXVsdCddLmRpc3BhdGNoU2VydmVyQWN0aW9uKHtcbiAgICAgICAgdHlwZTogX2NvbnN0YW50c0FjdGlvblR5cGVzMlsnZGVmYXVsdCddLkNMSUVOVF9TVEFSVF9UT1JSRU5UX0VSUk9SLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgZXJyb3I6IGVycm9yXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9LFxuXG4gIHN0YXJ0VG9ycmVudHM6IGZ1bmN0aW9uIHN0YXJ0VG9ycmVudHMoaGFzaGVzKSB7XG4gICAgcmV0dXJuIF9heGlvczJbJ2RlZmF1bHQnXS5wb3N0KCcvY2xpZW50L3N0YXJ0Jywge1xuICAgICAgaGFzaGVzOiBoYXNoZXNcbiAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBqc29uID0gYXJndW1lbnRzLmxlbmd0aCA8PSAwIHx8IGFyZ3VtZW50c1swXSA9PT0gdW5kZWZpbmVkID8ge30gOiBhcmd1bWVudHNbMF07XG5cbiAgICAgIHJldHVybiBqc29uLmRhdGE7XG4gICAgfSkudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHtcbiAgICAgIF9kaXNwYXRjaGVyQXBwRGlzcGF0Y2hlcjJbJ2RlZmF1bHQnXS5kaXNwYXRjaFNlcnZlckFjdGlvbih7XG4gICAgICAgIHR5cGU6IF9jb25zdGFudHNBY3Rpb25UeXBlczJbJ2RlZmF1bHQnXS5DTElFTlRfU1RBUlRfVE9SUkVOVF9TVUNDRVNTLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgcmVzcG9uc2U6IHJlc3BvbnNlXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pWydjYXRjaCddKGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgX2Rpc3BhdGNoZXJBcHBEaXNwYXRjaGVyMlsnZGVmYXVsdCddLmRpc3BhdGNoU2VydmVyQWN0aW9uKHtcbiAgICAgICAgdHlwZTogX2NvbnN0YW50c0FjdGlvblR5cGVzMlsnZGVmYXVsdCddLkNMSUVOVF9TVEFSVF9UT1JSRU5UX0VSUk9SLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgZXJyb3I6IGVycm9yXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9LFxuXG4gIHN0b3BUb3JyZW50czogZnVuY3Rpb24gc3RvcFRvcnJlbnRzKGhhc2hlcykge1xuICAgIHJldHVybiBfYXhpb3MyWydkZWZhdWx0J10ucG9zdCgnL2NsaWVudC9zdG9wJywge1xuICAgICAgaGFzaGVzOiBoYXNoZXNcbiAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBqc29uID0gYXJndW1lbnRzLmxlbmd0aCA8PSAwIHx8IGFyZ3VtZW50c1swXSA9PT0gdW5kZWZpbmVkID8ge30gOiBhcmd1bWVudHNbMF07XG5cbiAgICAgIHJldHVybiBqc29uLmRhdGE7XG4gICAgfSkudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHtcbiAgICAgIF9kaXNwYXRjaGVyQXBwRGlzcGF0Y2hlcjJbJ2RlZmF1bHQnXS5kaXNwYXRjaFNlcnZlckFjdGlvbih7XG4gICAgICAgIHR5cGU6IF9jb25zdGFudHNBY3Rpb25UeXBlczJbJ2RlZmF1bHQnXS5DTElFTlRfU1RPUF9UT1JSRU5UX1NVQ0NFU1MsXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICByZXNwb25zZTogcmVzcG9uc2VcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSlbJ2NhdGNoJ10oZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICBfZGlzcGF0Y2hlckFwcERpc3BhdGNoZXIyWydkZWZhdWx0J10uZGlzcGF0Y2hTZXJ2ZXJBY3Rpb24oe1xuICAgICAgICB0eXBlOiBfY29uc3RhbnRzQWN0aW9uVHlwZXMyWydkZWZhdWx0J10uQ0xJRU5UX1NUT1BfVE9SUkVOVF9FUlJPUixcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIGVycm9yOiBlcnJvclxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSxcblxuICBzZXRQcmlvcml0eTogZnVuY3Rpb24gc2V0UHJpb3JpdHkoaGFzaCwgcHJpb3JpdHkpIHtcbiAgICByZXR1cm4gX2F4aW9zMlsnZGVmYXVsdCddLnBhdGNoKCcvY2xpZW50L3RvcnJlbnRzLycgKyBoYXNoICsgJy9wcmlvcml0eScsIHtcbiAgICAgIGhhc2g6IGhhc2gsXG4gICAgICBwcmlvcml0eTogcHJpb3JpdHlcbiAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBqc29uID0gYXJndW1lbnRzLmxlbmd0aCA8PSAwIHx8IGFyZ3VtZW50c1swXSA9PT0gdW5kZWZpbmVkID8ge30gOiBhcmd1bWVudHNbMF07XG5cbiAgICAgIHJldHVybiBqc29uLmRhdGE7XG4gICAgfSkudGhlbihmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgX2Rpc3BhdGNoZXJBcHBEaXNwYXRjaGVyMlsnZGVmYXVsdCddLmRpc3BhdGNoU2VydmVyQWN0aW9uKHtcbiAgICAgICAgdHlwZTogX2NvbnN0YW50c0FjdGlvblR5cGVzMlsnZGVmYXVsdCddLkNMSUVOVF9TRVRfRklMRV9QUklPUklUWV9TVUNDRVNTLFxuICAgICAgICBkYXRhOiBkYXRhXG4gICAgICB9KTtcbiAgICB9KVsnY2F0Y2gnXShmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgIF9kaXNwYXRjaGVyQXBwRGlzcGF0Y2hlcjJbJ2RlZmF1bHQnXS5kaXNwYXRjaFNlcnZlckFjdGlvbih7XG4gICAgICAgIHR5cGU6IF9jb25zdGFudHNBY3Rpb25UeXBlczJbJ2RlZmF1bHQnXS5DTElFTlRfU0VUX0ZJTEVfUFJJT1JJVFlfRVJST1IsXG4gICAgICAgIGVycm9yOiBlcnJvclxuICAgICAgfSk7XG4gICAgfSk7XG4gIH0sXG5cbiAgc2V0RmlsZVByaW9yaXR5OiBmdW5jdGlvbiBzZXRGaWxlUHJpb3JpdHkoaGFzaCwgZmlsZUluZGljZXMsIHByaW9yaXR5KSB7XG4gICAgcmV0dXJuIF9heGlvczJbJ2RlZmF1bHQnXS5wYXRjaCgnL2NsaWVudC90b3JyZW50cy8nICsgaGFzaCArICcvZmlsZS1wcmlvcml0eScsIHtcbiAgICAgIGhhc2g6IGhhc2gsXG4gICAgICBmaWxlSW5kaWNlczogZmlsZUluZGljZXMsXG4gICAgICBwcmlvcml0eTogcHJpb3JpdHlcbiAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBqc29uID0gYXJndW1lbnRzLmxlbmd0aCA8PSAwIHx8IGFyZ3VtZW50c1swXSA9PT0gdW5kZWZpbmVkID8ge30gOiBhcmd1bWVudHNbMF07XG5cbiAgICAgIHJldHVybiBqc29uLmRhdGE7XG4gICAgfSkudGhlbihmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgX2Rpc3BhdGNoZXJBcHBEaXNwYXRjaGVyMlsnZGVmYXVsdCddLmRpc3BhdGNoU2VydmVyQWN0aW9uKHtcbiAgICAgICAgdHlwZTogX2NvbnN0YW50c0FjdGlvblR5cGVzMlsnZGVmYXVsdCddLkNMSUVOVF9TRVRfRklMRV9QUklPUklUWV9TVUNDRVNTLFxuICAgICAgICBkYXRhOiBkYXRhXG4gICAgICB9KTtcbiAgICB9KVsnY2F0Y2gnXShmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgIF9kaXNwYXRjaGVyQXBwRGlzcGF0Y2hlcjJbJ2RlZmF1bHQnXS5kaXNwYXRjaFNlcnZlckFjdGlvbih7XG4gICAgICAgIHR5cGU6IF9jb25zdGFudHNBY3Rpb25UeXBlczJbJ2RlZmF1bHQnXS5DTElFTlRfU0VUX0ZJTEVfUFJJT1JJVFlfRVJST1IsXG4gICAgICAgIGVycm9yOiBlcnJvclxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cbn07XG5cbmV4cG9ydHNbJ2RlZmF1bHQnXSA9IFRvcnJlbnRBY3Rpb25zO1xubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL2NsaWVudC9zb3VyY2Uvc2NyaXB0cy9hY3Rpb25zL1RvcnJlbnRBY3Rpb25zLmpzXG4gKiogbW9kdWxlIGlkID0gMTg2XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iXSwic291cmNlUm9vdCI6IiJ9"); /***/ }, /* 187 */ @@ -1250,7 +1250,7 @@ /* 201 */ /***/ function(module, exports, __webpack_require__) { - eval("'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\n\nvar _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _lodash = __webpack_require__(161);\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _constantsActionTypes = __webpack_require__(178);\n\nvar _constantsActionTypes2 = _interopRequireDefault(_constantsActionTypes);\n\nvar _dispatcherAppDispatcher = __webpack_require__(179);\n\nvar _dispatcherAppDispatcher2 = _interopRequireDefault(_dispatcherAppDispatcher);\n\nvar _BaseStore2 = __webpack_require__(183);\n\nvar _BaseStore3 = _interopRequireDefault(_BaseStore2);\n\nvar _config = __webpack_require__(202);\n\nvar _config2 = _interopRequireDefault(_config);\n\nvar _constantsEventTypes = __webpack_require__(176);\n\nvar _constantsEventTypes2 = _interopRequireDefault(_constantsEventTypes);\n\nvar _utilFilterTorrents = __webpack_require__(203);\n\nvar _utilSearchTorrents = __webpack_require__(205);\n\nvar _utilSelectTorrents = __webpack_require__(185);\n\nvar _utilSortTorrents = __webpack_require__(206);\n\nvar _actionsTorrentActions = __webpack_require__(186);\n\nvar _actionsTorrentActions2 = _interopRequireDefault(_actionsTorrentActions);\n\nvar _TorrentFilterStore = __webpack_require__(207);\n\nvar _TorrentFilterStore2 = _interopRequireDefault(_TorrentFilterStore);\n\nvar _UIStore = __webpack_require__(177);\n\nvar _UIStore2 = _interopRequireDefault(_UIStore);\n\nvar TorrentStoreClass = (function (_BaseStore) {\n _inherits(TorrentStoreClass, _BaseStore);\n\n function TorrentStoreClass() {\n _classCallCheck(this, TorrentStoreClass);\n\n _get(Object.getPrototypeOf(TorrentStoreClass.prototype), 'constructor', this).call(this);\n\n this.filteredTorrents = {};\n this.pollTorrentDetailsIntervalID = null;\n this.pollTorrentsIntervalID = null;\n this.selectedTorrents = [];\n this.sortedTorrents = [];\n this.torrents = {};\n }\n\n _createClass(TorrentStoreClass, [{\n key: 'fetchTorrentDetails',\n value: function fetchTorrentDetails() {\n if (!this.isRequestPending('fetch-torrent-details')) {\n this.beginRequest('fetch-torrent-details');\n _actionsTorrentActions2['default'].fetchTorrentDetails(_UIStore2['default'].getTorrentDetailsHash());\n }\n\n if (this.pollTorrentDetailsIntervalID === null) {\n this.startPollingTorrentDetails();\n }\n }\n }, {\n key: 'fetchTorrents',\n value: function fetchTorrents() {\n if (!this.isRequestPending('fetch-torrents')) {\n this.beginRequest('fetch-torrents');\n _actionsTorrentActions2['default'].fetchTorrents();\n }\n\n if (this.pollTorrentsIntervalID === null) {\n this.startPollingTorrents();\n }\n }\n }, {\n key: 'filterTorrents',\n value: function filterTorrents() {\n var searchFilter = _TorrentFilterStore2['default'].getSearchFilter();\n var statusFilter = _TorrentFilterStore2['default'].getStatusFilter();\n var trackerFilter = _TorrentFilterStore2['default'].getTrackerFilter();\n\n var filteredTorrents = Object.assign([], this.sortedTorrents);\n\n if (searchFilter && searchFilter !== '') {\n filteredTorrents = (0, _utilSearchTorrents.searchTorrents)(filteredTorrents, searchFilter);\n }\n\n if (statusFilter && statusFilter !== 'all') {\n filteredTorrents = (0, _utilFilterTorrents.filterTorrents)(filteredTorrents, {\n type: 'status',\n filter: statusFilter\n });\n }\n\n if (trackerFilter && trackerFilter !== 'all') {\n filteredTorrents = (0, _utilFilterTorrents.filterTorrents)(filteredTorrents, {\n type: 'tracker',\n filter: trackerFilter\n });\n }\n\n this.filteredTorrents = filteredTorrents;\n }\n }, {\n key: 'getTorrentDetails',\n value: function getTorrentDetails(hash) {\n return this.torrents[hash].details || {};\n }\n }, {\n key: 'getSelectedTorrents',\n value: function getSelectedTorrents() {\n return this.selectedTorrents;\n }\n }, {\n key: 'getSelectedTorrentsDownloadLocations',\n value: function getSelectedTorrentsDownloadLocations() {\n var _this = this;\n\n return this.selectedTorrents.map(function (hash) {\n return _this.torrents[hash].basePath;\n });\n }\n }, {\n key: 'getSelectedTorrentsFilename',\n value: function getSelectedTorrentsFilename() {\n var _this2 = this;\n\n return this.selectedTorrents.map(function (hash) {\n return _this2.torrents[hash].filename;\n });\n }\n }, {\n key: 'handleAddTorrentError',\n value: function handleAddTorrentError() {\n this.emit(_constantsEventTypes2['default'].CLIENT_ADD_TORRENT_ERROR);\n }\n }, {\n key: 'handleAddTorrentSuccess',\n value: function handleAddTorrentSuccess() {\n this.emit(_constantsEventTypes2['default'].CLIENT_ADD_TORRENT_SUCCESS);\n }\n }, {\n key: 'getTorrent',\n value: function getTorrent(hash) {\n return this.torrents[hash];\n }\n }, {\n key: 'getAllTorrents',\n value: function getAllTorrents() {\n return this.torrents;\n }\n }, {\n key: 'getTorrents',\n value: function getTorrents() {\n if (_TorrentFilterStore2['default'].isFilterActive()) {\n return this.filteredTorrents;\n }\n\n return this.sortedTorrents;\n }\n }, {\n key: 'handleMoveTorrentsSuccess',\n value: function handleMoveTorrentsSuccess(data) {\n this.emit(_constantsEventTypes2['default'].CLIENT_MOVE_TORRENTS_SUCCESS);\n }\n }, {\n key: 'handleMoveTorrentsError',\n value: function handleMoveTorrentsError(error) {\n this.emit(_constantsEventTypes2['default'].CLIENT_MOVE_TORRENTS_REQUEST_ERROR);\n }\n }, {\n key: 'setSelectedTorrents',\n value: function setSelectedTorrents(event, hash) {\n this.selectedTorrents = (0, _utilSelectTorrents.selectTorrents)({\n event: event,\n hash: hash,\n selectedTorrents: this.selectedTorrents,\n torrentList: this.filteredTorrents\n });\n this.emit(_constantsEventTypes2['default'].UI_TORRENT_SELECTION_CHANGE);\n }\n }, {\n key: 'handleFetchTorrentsSuccess',\n value: function handleFetchTorrentsSuccess(torrents) {\n this.sortTorrents(torrents);\n this.filterTorrents();\n\n this.emit(_constantsEventTypes2['default'].CLIENT_TORRENTS_REQUEST_SUCCESS);\n this.resolveRequest('fetch-torrents');\n }\n }, {\n key: 'setTorrentDetails',\n value: function setTorrentDetails(hash, torrentDetails) {\n this.torrents[hash].details = torrentDetails;\n this.emit(_constantsEventTypes2['default'].CLIENT_TORRENT_DETAILS_CHANGE);\n this.resolveRequest('fetch-torrent-details');\n }\n }, {\n key: 'sortTorrents',\n value: function sortTorrents(torrents) {\n var torrentsSort = _TorrentFilterStore2['default'].getTorrentsSort();\n\n this.torrents = torrents;\n\n // Convert torrents hash to array and sort it.\n this.sortedTorrents = (0, _utilSortTorrents.sortTorrents)(this.torrents, { direction: torrentsSort.direction, property: torrentsSort.value });\n }\n }, {\n key: 'startPollingTorrentDetails',\n value: function startPollingTorrentDetails() {\n this.pollTorrentDetailsIntervalID = setInterval(this.fetchTorrentDetails.bind(this), _config2['default'].pollInterval);\n }\n }, {\n key: 'startPollingTorrents',\n value: function startPollingTorrents() {\n this.pollTorrentsIntervalID = setInterval(this.fetchTorrents.bind(this), _config2['default'].pollInterval);\n }\n }, {\n key: 'stopPollingTorrentDetails',\n value: function stopPollingTorrentDetails() {\n clearInterval(this.pollTorrentDetailsIntervalID);\n this.pollTorrentDetailsIntervalID = null;\n }\n }, {\n key: 'stopPollingTorrents',\n value: function stopPollingTorrents() {\n clearInterval(this.pollTorrentsIntervalID);\n this.pollTorrentsIntervalID = null;\n }\n }, {\n key: 'triggerTorrentsFilter',\n value: function triggerTorrentsFilter() {\n this.filterTorrents();\n }\n }]);\n\n return TorrentStoreClass;\n})(_BaseStore3['default']);\n\nvar TorrentStore = new TorrentStoreClass();\n\nTorrentStore.dispatcherID = _dispatcherAppDispatcher2['default'].register(function (payload) {\n var action = payload.action;\n var source = payload.source;\n\n switch (action.type) {\n case _constantsActionTypes2['default'].CLIENT_FETCH_TORRENT_DETAILS_SUCCESS:\n TorrentStore.setTorrentDetails(action.data.hash, action.data.torrentDetails);\n break;\n case _constantsActionTypes2['default'].CLIENT_ADD_TORRENT_ERROR:\n TorrentStore.handleAddTorrentError(action.error);\n break;\n case _constantsActionTypes2['default'].CLIENT_ADD_TORRENT_SUCCESS:\n TorrentStore.handleAddTorrentSuccess(action.data);\n break;\n case _constantsActionTypes2['default'].CLIENT_FETCH_TORRENTS_SUCCESS:\n TorrentStore.handleFetchTorrentsSuccess(action.data.torrents);\n break;\n case _constantsActionTypes2['default'].CLIENT_MOVE_TORRENTS_SUCCESS:\n TorrentStore.handleMoveTorrentsSuccess(action.data);\n break;\n case _constantsActionTypes2['default'].CLIENT_MOVE_TORRENTS_ERROR:\n TorrentStore.handleMoveTorrentsError(action.error);\n break;\n case _constantsActionTypes2['default'].CLIENT_FETCH_TORRENTS_ERROR:\n TorrentStore.handleFetchTorrentsError();\n console.log(action);\n break;\n case _constantsActionTypes2['default'].UI_CLICK_TORRENT:\n TorrentStore.setSelectedTorrents(action.data.event, action.data.hash);\n break;\n case _constantsActionTypes2['default'].UI_SET_TORRENT_STATUS_FILTER:\n case _constantsActionTypes2['default'].UI_SET_TORRENT_TRACKER_FILTER:\n case _constantsActionTypes2['default'].UI_SET_TORRENT_SEARCH_FILTER:\n case _constantsActionTypes2['default'].UI_SET_TORRENT_SORT:\n TorrentStore.triggerTorrentsFilter();\n break;\n case _constantsActionTypes2['default'].CLIENT_ADD_TORRENT_SUCCESS:\n case _constantsActionTypes2['default'].CLIENT_START_TORRENT_SUCCESS:\n case _constantsActionTypes2['default'].CLIENT_STOP_TORRENT_SUCCESS:\n TorrentStore.fetchTorrents();\n break;\n }\n});\n\nexports['default'] = TorrentStore;\nmodule.exports = exports['default'];//@ sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9jbGllbnQvc291cmNlL3NjcmlwdHMvc3RvcmVzL1RvcnJlbnRTdG9yZS5qcz9lMDY2Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztBQUVBO0FBQ0E7QUFDQSxDQUFDOztBQUVELGlDQUFpQywyQ0FBMkMsZ0JBQWdCLGtCQUFrQixPQUFPLDJCQUEyQix3REFBd0QsZ0NBQWdDLHVEQUF1RCwyREFBMkQsRUFBRSxFQUFFLHlEQUF5RCxxRUFBcUUsNkRBQTZELG9CQUFvQixHQUFHLEVBQUU7O0FBRWxqQix1Q0FBdUMsbUJBQW1CLDRCQUE0QixpREFBaUQsZ0JBQWdCLGtEQUFrRCw4REFBOEQsMEJBQTBCLDRDQUE0Qyx1QkFBdUIsa0JBQWtCLEVBQUUsT0FBTyxhQUFhLGdCQUFnQixnQkFBZ0IsZUFBZSwyQkFBMkIsb0JBQW9CLEVBQUUsRUFBRSw0QkFBNEIsbUJBQW1CLEVBQUUsT0FBTyx1QkFBdUIsNEJBQTRCLGtCQUFrQixFQUFFLDhCQUE4QixFQUFFLEVBQUU7O0FBRS9vQixzQ0FBc0MsdUNBQXVDLGtCQUFrQjs7QUFFL0YsaURBQWlELDBDQUEwQywwREFBMEQsRUFBRTs7QUFFdkosMENBQTBDLCtEQUErRCxxR0FBcUcsRUFBRSx5RUFBeUUsZUFBZSx5RUFBeUUsRUFBRSxFQUFFLHVIQUF1SDs7QUFFNWU7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EsZ0ZBQWdGLGtFQUFrRTtBQUNsSjtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0EsQ0FBQzs7QUFFRDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7O0FBRUQ7QUFDQSIsImZpbGUiOiIyMDEuanMiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuXG52YXIgX2NyZWF0ZUNsYXNzID0gKGZ1bmN0aW9uICgpIHsgZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmICgndmFsdWUnIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7IH0gfSByZXR1cm4gZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9OyB9KSgpO1xuXG52YXIgX2dldCA9IGZ1bmN0aW9uIGdldChfeCwgX3gyLCBfeDMpIHsgdmFyIF9hZ2FpbiA9IHRydWU7IF9mdW5jdGlvbjogd2hpbGUgKF9hZ2FpbikgeyB2YXIgb2JqZWN0ID0gX3gsIHByb3BlcnR5ID0gX3gyLCByZWNlaXZlciA9IF94MzsgX2FnYWluID0gZmFsc2U7IGlmIChvYmplY3QgPT09IG51bGwpIG9iamVjdCA9IEZ1bmN0aW9uLnByb3RvdHlwZTsgdmFyIGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgcHJvcGVydHkpOyBpZiAoZGVzYyA9PT0gdW5kZWZpbmVkKSB7IHZhciBwYXJlbnQgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Yob2JqZWN0KTsgaWYgKHBhcmVudCA9PT0gbnVsbCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9IGVsc2UgeyBfeCA9IHBhcmVudDsgX3gyID0gcHJvcGVydHk7IF94MyA9IHJlY2VpdmVyOyBfYWdhaW4gPSB0cnVlOyBkZXNjID0gcGFyZW50ID0gdW5kZWZpbmVkOyBjb250aW51ZSBfZnVuY3Rpb247IH0gfSBlbHNlIGlmICgndmFsdWUnIGluIGRlc2MpIHsgcmV0dXJuIGRlc2MudmFsdWU7IH0gZWxzZSB7IHZhciBnZXR0ZXIgPSBkZXNjLmdldDsgaWYgKGdldHRlciA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH0gcmV0dXJuIGdldHRlci5jYWxsKHJlY2VpdmVyKTsgfSB9IH07XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7ICdkZWZhdWx0Jzogb2JqIH07IH1cblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKCdDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24nKTsgfSB9XG5cbmZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09ICdmdW5jdGlvbicgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKCdTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICcgKyB0eXBlb2Ygc3VwZXJDbGFzcyk7IH0gc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7IGNvbnN0cnVjdG9yOiB7IHZhbHVlOiBzdWJDbGFzcywgZW51bWVyYWJsZTogZmFsc2UsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSB9KTsgaWYgKHN1cGVyQ2xhc3MpIE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5zZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFzcykgOiBzdWJDbGFzcy5fX3Byb3RvX18gPSBzdXBlckNsYXNzOyB9XG5cbnZhciBfbG9kYXNoID0gcmVxdWlyZSgnbG9kYXNoJyk7XG5cbnZhciBfbG9kYXNoMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2xvZGFzaCk7XG5cbnZhciBfY29uc3RhbnRzQWN0aW9uVHlwZXMgPSByZXF1aXJlKCcuLi9jb25zdGFudHMvQWN0aW9uVHlwZXMnKTtcblxudmFyIF9jb25zdGFudHNBY3Rpb25UeXBlczIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jb25zdGFudHNBY3Rpb25UeXBlcyk7XG5cbnZhciBfZGlzcGF0Y2hlckFwcERpc3BhdGNoZXIgPSByZXF1aXJlKCcuLi9kaXNwYXRjaGVyL0FwcERpc3BhdGNoZXInKTtcblxudmFyIF9kaXNwYXRjaGVyQXBwRGlzcGF0Y2hlcjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9kaXNwYXRjaGVyQXBwRGlzcGF0Y2hlcik7XG5cbnZhciBfQmFzZVN0b3JlMiA9IHJlcXVpcmUoJy4vQmFzZVN0b3JlJyk7XG5cbnZhciBfQmFzZVN0b3JlMyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX0Jhc2VTdG9yZTIpO1xuXG52YXIgX2NvbmZpZyA9IHJlcXVpcmUoJy4uLy4uLy4uLy4uL2NvbmZpZycpO1xuXG52YXIgX2NvbmZpZzIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jb25maWcpO1xuXG52YXIgX2NvbnN0YW50c0V2ZW50VHlwZXMgPSByZXF1aXJlKCcuLi9jb25zdGFudHMvRXZlbnRUeXBlcycpO1xuXG52YXIgX2NvbnN0YW50c0V2ZW50VHlwZXMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY29uc3RhbnRzRXZlbnRUeXBlcyk7XG5cbnZhciBfdXRpbEZpbHRlclRvcnJlbnRzID0gcmVxdWlyZSgnLi4vdXRpbC9maWx0ZXJUb3JyZW50cycpO1xuXG52YXIgX3V0aWxTZWFyY2hUb3JyZW50cyA9IHJlcXVpcmUoJy4uL3V0aWwvc2VhcmNoVG9ycmVudHMnKTtcblxudmFyIF91dGlsU2VsZWN0VG9ycmVudHMgPSByZXF1aXJlKCcuLi91dGlsL3NlbGVjdFRvcnJlbnRzJyk7XG5cbnZhciBfdXRpbFNvcnRUb3JyZW50cyA9IHJlcXVpcmUoJy4uL3V0aWwvc29ydFRvcnJlbnRzJyk7XG5cbnZhciBfYWN0aW9uc1RvcnJlbnRBY3Rpb25zID0gcmVxdWlyZSgnLi4vYWN0aW9ucy9Ub3JyZW50QWN0aW9ucycpO1xuXG52YXIgX2FjdGlvbnNUb3JyZW50QWN0aW9uczIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9hY3Rpb25zVG9ycmVudEFjdGlvbnMpO1xuXG52YXIgX1RvcnJlbnRGaWx0ZXJTdG9yZSA9IHJlcXVpcmUoJy4vVG9ycmVudEZpbHRlclN0b3JlJyk7XG5cbnZhciBfVG9ycmVudEZpbHRlclN0b3JlMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX1RvcnJlbnRGaWx0ZXJTdG9yZSk7XG5cbnZhciBfVUlTdG9yZSA9IHJlcXVpcmUoJy4vVUlTdG9yZScpO1xuXG52YXIgX1VJU3RvcmUyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfVUlTdG9yZSk7XG5cbnZhciBUb3JyZW50U3RvcmVDbGFzcyA9IChmdW5jdGlvbiAoX0Jhc2VTdG9yZSkge1xuICBfaW5oZXJpdHMoVG9ycmVudFN0b3JlQ2xhc3MsIF9CYXNlU3RvcmUpO1xuXG4gIGZ1bmN0aW9uIFRvcnJlbnRTdG9yZUNsYXNzKCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBUb3JyZW50U3RvcmVDbGFzcyk7XG5cbiAgICBfZ2V0KE9iamVjdC5nZXRQcm90b3R5cGVPZihUb3JyZW50U3RvcmVDbGFzcy5wcm90b3R5cGUpLCAnY29uc3RydWN0b3InLCB0aGlzKS5jYWxsKHRoaXMpO1xuXG4gICAgdGhpcy5maWx0ZXJlZFRvcnJlbnRzID0ge307XG4gICAgdGhpcy5wb2xsVG9ycmVudERldGFpbHNJbnRlcnZhbElEID0gbnVsbDtcbiAgICB0aGlzLnBvbGxUb3JyZW50c0ludGVydmFsSUQgPSBudWxsO1xuICAgIHRoaXMuc2VsZWN0ZWRUb3JyZW50cyA9IFtdO1xuICAgIHRoaXMuc29ydGVkVG9ycmVudHMgPSBbXTtcbiAgICB0aGlzLnRvcnJlbnRzID0ge307XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoVG9ycmVudFN0b3JlQ2xhc3MsIFt7XG4gICAga2V5OiAnZmV0Y2hUb3JyZW50RGV0YWlscycsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGZldGNoVG9ycmVudERldGFpbHMoKSB7XG4gICAgICBpZiAoIXRoaXMuaXNSZXF1ZXN0UGVuZGluZygnZmV0Y2gtdG9ycmVudC1kZXRhaWxzJykpIHtcbiAgICAgICAgdGhpcy5iZWdpblJlcXVlc3QoJ2ZldGNoLXRvcnJlbnQtZGV0YWlscycpO1xuICAgICAgICBfYWN0aW9uc1RvcnJlbnRBY3Rpb25zMlsnZGVmYXVsdCddLmZldGNoVG9ycmVudERldGFpbHMoX1VJU3RvcmUyWydkZWZhdWx0J10uZ2V0VG9ycmVudERldGFpbHNIYXNoKCkpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5wb2xsVG9ycmVudERldGFpbHNJbnRlcnZhbElEID09PSBudWxsKSB7XG4gICAgICAgIHRoaXMuc3RhcnRQb2xsaW5nVG9ycmVudERldGFpbHMoKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdmZXRjaFRvcnJlbnRzJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gZmV0Y2hUb3JyZW50cygpIHtcbiAgICAgIGlmICghdGhpcy5pc1JlcXVlc3RQZW5kaW5nKCdmZXRjaC10b3JyZW50cycpKSB7XG4gICAgICAgIHRoaXMuYmVnaW5SZXF1ZXN0KCdmZXRjaC10b3JyZW50cycpO1xuICAgICAgICBfYWN0aW9uc1RvcnJlbnRBY3Rpb25zMlsnZGVmYXVsdCddLmZldGNoVG9ycmVudHMoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMucG9sbFRvcnJlbnRzSW50ZXJ2YWxJRCA9PT0gbnVsbCkge1xuICAgICAgICB0aGlzLnN0YXJ0UG9sbGluZ1RvcnJlbnRzKCk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnZmlsdGVyVG9ycmVudHMnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBmaWx0ZXJUb3JyZW50cygpIHtcbiAgICAgIHZhciBzZWFyY2hGaWx0ZXIgPSBfVG9ycmVudEZpbHRlclN0b3JlMlsnZGVmYXVsdCddLmdldFNlYXJjaEZpbHRlcigpO1xuICAgICAgdmFyIHN0YXR1c0ZpbHRlciA9IF9Ub3JyZW50RmlsdGVyU3RvcmUyWydkZWZhdWx0J10uZ2V0U3RhdHVzRmlsdGVyKCk7XG4gICAgICB2YXIgdHJhY2tlckZpbHRlciA9IF9Ub3JyZW50RmlsdGVyU3RvcmUyWydkZWZhdWx0J10uZ2V0VHJhY2tlckZpbHRlcigpO1xuXG4gICAgICB2YXIgZmlsdGVyZWRUb3JyZW50cyA9IE9iamVjdC5hc3NpZ24oW10sIHRoaXMuc29ydGVkVG9ycmVudHMpO1xuXG4gICAgICBpZiAoc2VhcmNoRmlsdGVyICYmIHNlYXJjaEZpbHRlciAhPT0gJycpIHtcbiAgICAgICAgZmlsdGVyZWRUb3JyZW50cyA9ICgwLCBfdXRpbFNlYXJjaFRvcnJlbnRzLnNlYXJjaFRvcnJlbnRzKShmaWx0ZXJlZFRvcnJlbnRzLCBzZWFyY2hGaWx0ZXIpO1xuICAgICAgfVxuXG4gICAgICBpZiAoc3RhdHVzRmlsdGVyICYmIHN0YXR1c0ZpbHRlciAhPT0gJ2FsbCcpIHtcbiAgICAgICAgZmlsdGVyZWRUb3JyZW50cyA9ICgwLCBfdXRpbEZpbHRlclRvcnJlbnRzLmZpbHRlclRvcnJlbnRzKShmaWx0ZXJlZFRvcnJlbnRzLCB7XG4gICAgICAgICAgdHlwZTogJ3N0YXR1cycsXG4gICAgICAgICAgZmlsdGVyOiBzdGF0dXNGaWx0ZXJcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0cmFja2VyRmlsdGVyICYmIHRyYWNrZXJGaWx0ZXIgIT09ICdhbGwnKSB7XG4gICAgICAgIGZpbHRlcmVkVG9ycmVudHMgPSAoMCwgX3V0aWxGaWx0ZXJUb3JyZW50cy5maWx0ZXJUb3JyZW50cykoZmlsdGVyZWRUb3JyZW50cywge1xuICAgICAgICAgIHR5cGU6ICd0cmFja2VyJyxcbiAgICAgICAgICBmaWx0ZXI6IHRyYWNrZXJGaWx0ZXJcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZmlsdGVyZWRUb3JyZW50cyA9IGZpbHRlcmVkVG9ycmVudHM7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnZ2V0VG9ycmVudERldGFpbHMnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRUb3JyZW50RGV0YWlscyhoYXNoKSB7XG4gICAgICByZXR1cm4gdGhpcy50b3JyZW50c1toYXNoXS5kZXRhaWxzIHx8IHt9O1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2dldFNlbGVjdGVkVG9ycmVudHMnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRTZWxlY3RlZFRvcnJlbnRzKCkge1xuICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRUb3JyZW50cztcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdnZXRTZWxlY3RlZFRvcnJlbnRzRG93bmxvYWRMb2NhdGlvbnMnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRTZWxlY3RlZFRvcnJlbnRzRG93bmxvYWRMb2NhdGlvbnMoKSB7XG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZFRvcnJlbnRzLm1hcChmdW5jdGlvbiAoaGFzaCkge1xuICAgICAgICByZXR1cm4gX3RoaXMudG9ycmVudHNbaGFzaF0uYmFzZVBhdGg7XG4gICAgICB9KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdnZXRTZWxlY3RlZFRvcnJlbnRzRmlsZW5hbWUnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRTZWxlY3RlZFRvcnJlbnRzRmlsZW5hbWUoKSB7XG4gICAgICB2YXIgX3RoaXMyID0gdGhpcztcblxuICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRUb3JyZW50cy5tYXAoZnVuY3Rpb24gKGhhc2gpIHtcbiAgICAgICAgcmV0dXJuIF90aGlzMi50b3JyZW50c1toYXNoXS5maWxlbmFtZTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2hhbmRsZUFkZFRvcnJlbnRFcnJvcicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGhhbmRsZUFkZFRvcnJlbnRFcnJvcigpIHtcbiAgICAgIHRoaXMuZW1pdChfY29uc3RhbnRzRXZlbnRUeXBlczJbJ2RlZmF1bHQnXS5DTElFTlRfQUREX1RPUlJFTlRfRVJST1IpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2hhbmRsZUFkZFRvcnJlbnRTdWNjZXNzJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gaGFuZGxlQWRkVG9ycmVudFN1Y2Nlc3MoKSB7XG4gICAgICB0aGlzLmVtaXQoX2NvbnN0YW50c0V2ZW50VHlwZXMyWydkZWZhdWx0J10uQ0xJRU5UX0FERF9UT1JSRU5UX1NVQ0NFU1MpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2dldFRvcnJlbnQnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRUb3JyZW50KGhhc2gpIHtcbiAgICAgIHJldHVybiB0aGlzLnRvcnJlbnRzW2hhc2hdO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2dldEFsbFRvcnJlbnRzJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0QWxsVG9ycmVudHMoKSB7XG4gICAgICByZXR1cm4gdGhpcy50b3JyZW50cztcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdnZXRUb3JyZW50cycsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldFRvcnJlbnRzKCkge1xuICAgICAgaWYgKF9Ub3JyZW50RmlsdGVyU3RvcmUyWydkZWZhdWx0J10uaXNGaWx0ZXJBY3RpdmUoKSkge1xuICAgICAgICByZXR1cm4gdGhpcy5maWx0ZXJlZFRvcnJlbnRzO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5zb3J0ZWRUb3JyZW50cztcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdoYW5kbGVNb3ZlVG9ycmVudHNTdWNjZXNzJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gaGFuZGxlTW92ZVRvcnJlbnRzU3VjY2VzcyhkYXRhKSB7XG4gICAgICB0aGlzLmVtaXQoX2NvbnN0YW50c0V2ZW50VHlwZXMyWydkZWZhdWx0J10uQ0xJRU5UX01PVkVfVE9SUkVOVFNfU1VDQ0VTUyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnaGFuZGxlTW92ZVRvcnJlbnRzRXJyb3InLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBoYW5kbGVNb3ZlVG9ycmVudHNFcnJvcihlcnJvcikge1xuICAgICAgdGhpcy5lbWl0KF9jb25zdGFudHNFdmVudFR5cGVzMlsnZGVmYXVsdCddLkNMSUVOVF9NT1ZFX1RPUlJFTlRTX1JFUVVFU1RfRVJST1IpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ3NldFNlbGVjdGVkVG9ycmVudHMnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRTZWxlY3RlZFRvcnJlbnRzKGV2ZW50LCBoYXNoKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkVG9ycmVudHMgPSAoMCwgX3V0aWxTZWxlY3RUb3JyZW50cy5zZWxlY3RUb3JyZW50cykoe1xuICAgICAgICBldmVudDogZXZlbnQsXG4gICAgICAgIGhhc2g6IGhhc2gsXG4gICAgICAgIHNlbGVjdGVkVG9ycmVudHM6IHRoaXMuc2VsZWN0ZWRUb3JyZW50cyxcbiAgICAgICAgdG9ycmVudExpc3Q6IHRoaXMuZmlsdGVyZWRUb3JyZW50c1xuICAgICAgfSk7XG4gICAgICB0aGlzLmVtaXQoX2NvbnN0YW50c0V2ZW50VHlwZXMyWydkZWZhdWx0J10uVUlfVE9SUkVOVF9TRUxFQ1RJT05fQ0hBTkdFKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdoYW5kbGVGZXRjaFRvcnJlbnRzU3VjY2VzcycsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGhhbmRsZUZldGNoVG9ycmVudHNTdWNjZXNzKHRvcnJlbnRzKSB7XG4gICAgICB0aGlzLnNvcnRUb3JyZW50cyh0b3JyZW50cyk7XG4gICAgICB0aGlzLmZpbHRlclRvcnJlbnRzKCk7XG5cbiAgICAgIHRoaXMuZW1pdChfY29uc3RhbnRzRXZlbnRUeXBlczJbJ2RlZmF1bHQnXS5DTElFTlRfVE9SUkVOVFNfUkVRVUVTVF9TVUNDRVNTKTtcbiAgICAgIHRoaXMucmVzb2x2ZVJlcXVlc3QoJ2ZldGNoLXRvcnJlbnRzJyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnc2V0VG9ycmVudERldGFpbHMnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRUb3JyZW50RGV0YWlscyhoYXNoLCB0b3JyZW50RGV0YWlscykge1xuICAgICAgdGhpcy50b3JyZW50c1toYXNoXS5kZXRhaWxzID0gdG9ycmVudERldGFpbHM7XG4gICAgICB0aGlzLmVtaXQoX2NvbnN0YW50c0V2ZW50VHlwZXMyWydkZWZhdWx0J10uQ0xJRU5UX1RPUlJFTlRfREVUQUlMU19DSEFOR0UpO1xuICAgICAgdGhpcy5yZXNvbHZlUmVxdWVzdCgnZmV0Y2gtdG9ycmVudC1kZXRhaWxzJyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnc29ydFRvcnJlbnRzJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gc29ydFRvcnJlbnRzKHRvcnJlbnRzKSB7XG4gICAgICB2YXIgdG9ycmVudHNTb3J0ID0gX1RvcnJlbnRGaWx0ZXJTdG9yZTJbJ2RlZmF1bHQnXS5nZXRUb3JyZW50c1NvcnQoKTtcblxuICAgICAgdGhpcy50b3JyZW50cyA9IHRvcnJlbnRzO1xuXG4gICAgICAvLyBDb252ZXJ0IHRvcnJlbnRzIGhhc2ggdG8gYXJyYXkgYW5kIHNvcnQgaXQuXG4gICAgICB0aGlzLnNvcnRlZFRvcnJlbnRzID0gKDAsIF91dGlsU29ydFRvcnJlbnRzLnNvcnRUb3JyZW50cykodGhpcy50b3JyZW50cywgeyBkaXJlY3Rpb246IHRvcnJlbnRzU29ydC5kaXJlY3Rpb24sIHByb3BlcnR5OiB0b3JyZW50c1NvcnQudmFsdWUgfSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnc3RhcnRQb2xsaW5nVG9ycmVudERldGFpbHMnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzdGFydFBvbGxpbmdUb3JyZW50RGV0YWlscygpIHtcbiAgICAgIHRoaXMucG9sbFRvcnJlbnREZXRhaWxzSW50ZXJ2YWxJRCA9IHNldEludGVydmFsKHRoaXMuZmV0Y2hUb3JyZW50RGV0YWlscy5iaW5kKHRoaXMpLCBfY29uZmlnMlsnZGVmYXVsdCddLnBvbGxJbnRlcnZhbCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnc3RhcnRQb2xsaW5nVG9ycmVudHMnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzdGFydFBvbGxpbmdUb3JyZW50cygpIHtcbiAgICAgIHRoaXMucG9sbFRvcnJlbnRzSW50ZXJ2YWxJRCA9IHNldEludGVydmFsKHRoaXMuZmV0Y2hUb3JyZW50cy5iaW5kKHRoaXMpLCBfY29uZmlnMlsnZGVmYXVsdCddLnBvbGxJbnRlcnZhbCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnc3RvcFBvbGxpbmdUb3JyZW50RGV0YWlscycsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHN0b3BQb2xsaW5nVG9ycmVudERldGFpbHMoKSB7XG4gICAgICBjbGVhckludGVydmFsKHRoaXMucG9sbFRvcnJlbnREZXRhaWxzSW50ZXJ2YWxJRCk7XG4gICAgICB0aGlzLnBvbGxUb3JyZW50RGV0YWlsc0ludGVydmFsSUQgPSBudWxsO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ3N0b3BQb2xsaW5nVG9ycmVudHMnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzdG9wUG9sbGluZ1RvcnJlbnRzKCkge1xuICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLnBvbGxUb3JyZW50c0ludGVydmFsSUQpO1xuICAgICAgdGhpcy5wb2xsVG9ycmVudHNJbnRlcnZhbElEID0gbnVsbDtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICd0cmlnZ2VyVG9ycmVudHNGaWx0ZXInLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB0cmlnZ2VyVG9ycmVudHNGaWx0ZXIoKSB7XG4gICAgICB0aGlzLmZpbHRlclRvcnJlbnRzKCk7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFRvcnJlbnRTdG9yZUNsYXNzO1xufSkoX0Jhc2VTdG9yZTNbJ2RlZmF1bHQnXSk7XG5cbnZhciBUb3JyZW50U3RvcmUgPSBuZXcgVG9ycmVudFN0b3JlQ2xhc3MoKTtcblxuVG9ycmVudFN0b3JlLmRpc3BhdGNoZXJJRCA9IF9kaXNwYXRjaGVyQXBwRGlzcGF0Y2hlcjJbJ2RlZmF1bHQnXS5yZWdpc3RlcihmdW5jdGlvbiAocGF5bG9hZCkge1xuICB2YXIgYWN0aW9uID0gcGF5bG9hZC5hY3Rpb247XG4gIHZhciBzb3VyY2UgPSBwYXlsb2FkLnNvdXJjZTtcblxuICBzd2l0Y2ggKGFjdGlvbi50eXBlKSB7XG4gICAgY2FzZSBfY29uc3RhbnRzQWN0aW9uVHlwZXMyWydkZWZhdWx0J10uQ0xJRU5UX0ZFVENIX1RPUlJFTlRfREVUQUlMU19TVUNDRVNTOlxuICAgICAgVG9ycmVudFN0b3JlLnNldFRvcnJlbnREZXRhaWxzKGFjdGlvbi5kYXRhLmhhc2gsIGFjdGlvbi5kYXRhLnRvcnJlbnREZXRhaWxzKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgX2NvbnN0YW50c0FjdGlvblR5cGVzMlsnZGVmYXVsdCddLkNMSUVOVF9BRERfVE9SUkVOVF9FUlJPUjpcbiAgICAgIFRvcnJlbnRTdG9yZS5oYW5kbGVBZGRUb3JyZW50RXJyb3IoYWN0aW9uLmVycm9yKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgX2NvbnN0YW50c0FjdGlvblR5cGVzMlsnZGVmYXVsdCddLkNMSUVOVF9BRERfVE9SUkVOVF9TVUNDRVNTOlxuICAgICAgVG9ycmVudFN0b3JlLmhhbmRsZUFkZFRvcnJlbnRTdWNjZXNzKGFjdGlvbi5kYXRhKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgX2NvbnN0YW50c0FjdGlvblR5cGVzMlsnZGVmYXVsdCddLkNMSUVOVF9GRVRDSF9UT1JSRU5UU19TVUNDRVNTOlxuICAgICAgVG9ycmVudFN0b3JlLmhhbmRsZUZldGNoVG9ycmVudHNTdWNjZXNzKGFjdGlvbi5kYXRhLnRvcnJlbnRzKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgX2NvbnN0YW50c0FjdGlvblR5cGVzMlsnZGVmYXVsdCddLkNMSUVOVF9NT1ZFX1RPUlJFTlRTX1NVQ0NFU1M6XG4gICAgICBUb3JyZW50U3RvcmUuaGFuZGxlTW92ZVRvcnJlbnRzU3VjY2VzcyhhY3Rpb24uZGF0YSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIF9jb25zdGFudHNBY3Rpb25UeXBlczJbJ2RlZmF1bHQnXS5DTElFTlRfTU9WRV9UT1JSRU5UU19FUlJPUjpcbiAgICAgIFRvcnJlbnRTdG9yZS5oYW5kbGVNb3ZlVG9ycmVudHNFcnJvcihhY3Rpb24uZXJyb3IpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBfY29uc3RhbnRzQWN0aW9uVHlwZXMyWydkZWZhdWx0J10uQ0xJRU5UX0ZFVENIX1RPUlJFTlRTX0VSUk9SOlxuICAgICAgVG9ycmVudFN0b3JlLmhhbmRsZUZldGNoVG9ycmVudHNFcnJvcigpO1xuICAgICAgY29uc29sZS5sb2coYWN0aW9uKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgX2NvbnN0YW50c0FjdGlvblR5cGVzMlsnZGVmYXVsdCddLlVJX0NMSUNLX1RPUlJFTlQ6XG4gICAgICBUb3JyZW50U3RvcmUuc2V0U2VsZWN0ZWRUb3JyZW50cyhhY3Rpb24uZGF0YS5ldmVudCwgYWN0aW9uLmRhdGEuaGFzaCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIF9jb25zdGFudHNBY3Rpb25UeXBlczJbJ2RlZmF1bHQnXS5VSV9TRVRfVE9SUkVOVF9TVEFUVVNfRklMVEVSOlxuICAgIGNhc2UgX2NvbnN0YW50c0FjdGlvblR5cGVzMlsnZGVmYXVsdCddLlVJX1NFVF9UT1JSRU5UX1RSQUNLRVJfRklMVEVSOlxuICAgIGNhc2UgX2NvbnN0YW50c0FjdGlvblR5cGVzMlsnZGVmYXVsdCddLlVJX1NFVF9UT1JSRU5UX1NFQVJDSF9GSUxURVI6XG4gICAgY2FzZSBfY29uc3RhbnRzQWN0aW9uVHlwZXMyWydkZWZhdWx0J10uVUlfU0VUX1RPUlJFTlRfU09SVDpcbiAgICAgIFRvcnJlbnRTdG9yZS50cmlnZ2VyVG9ycmVudHNGaWx0ZXIoKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgX2NvbnN0YW50c0FjdGlvblR5cGVzMlsnZGVmYXVsdCddLkNMSUVOVF9BRERfVE9SUkVOVF9TVUNDRVNTOlxuICAgIGNhc2UgX2NvbnN0YW50c0FjdGlvblR5cGVzMlsnZGVmYXVsdCddLkNMSUVOVF9TVEFSVF9UT1JSRU5UX1NVQ0NFU1M6XG4gICAgY2FzZSBfY29uc3RhbnRzQWN0aW9uVHlwZXMyWydkZWZhdWx0J10uQ0xJRU5UX1NUT1BfVE9SUkVOVF9TVUNDRVNTOlxuICAgICAgVG9ycmVudFN0b3JlLmZldGNoVG9ycmVudHMoKTtcbiAgICAgIGJyZWFrO1xuICB9XG59KTtcblxuZXhwb3J0c1snZGVmYXVsdCddID0gVG9ycmVudFN0b3JlO1xubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL2NsaWVudC9zb3VyY2Uvc2NyaXB0cy9zdG9yZXMvVG9ycmVudFN0b3JlLmpzXG4gKiogbW9kdWxlIGlkID0gMjAxXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iXSwic291cmNlUm9vdCI6IiJ9"); + eval("'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\n\nvar _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _lodash = __webpack_require__(161);\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _constantsActionTypes = __webpack_require__(178);\n\nvar _constantsActionTypes2 = _interopRequireDefault(_constantsActionTypes);\n\nvar _dispatcherAppDispatcher = __webpack_require__(179);\n\nvar _dispatcherAppDispatcher2 = _interopRequireDefault(_dispatcherAppDispatcher);\n\nvar _BaseStore2 = __webpack_require__(183);\n\nvar _BaseStore3 = _interopRequireDefault(_BaseStore2);\n\nvar _config = __webpack_require__(202);\n\nvar _config2 = _interopRequireDefault(_config);\n\nvar _constantsEventTypes = __webpack_require__(176);\n\nvar _constantsEventTypes2 = _interopRequireDefault(_constantsEventTypes);\n\nvar _utilFilterTorrents = __webpack_require__(203);\n\nvar _utilSearchTorrents = __webpack_require__(205);\n\nvar _utilSelectTorrents = __webpack_require__(185);\n\nvar _utilSortTorrents = __webpack_require__(206);\n\nvar _actionsTorrentActions = __webpack_require__(186);\n\nvar _actionsTorrentActions2 = _interopRequireDefault(_actionsTorrentActions);\n\nvar _TorrentFilterStore = __webpack_require__(207);\n\nvar _TorrentFilterStore2 = _interopRequireDefault(_TorrentFilterStore);\n\nvar _UIStore = __webpack_require__(177);\n\nvar _UIStore2 = _interopRequireDefault(_UIStore);\n\nvar TorrentStoreClass = (function (_BaseStore) {\n _inherits(TorrentStoreClass, _BaseStore);\n\n function TorrentStoreClass() {\n _classCallCheck(this, TorrentStoreClass);\n\n _get(Object.getPrototypeOf(TorrentStoreClass.prototype), 'constructor', this).call(this);\n\n this.filteredTorrents = {};\n this.pollTorrentDetailsIntervalID = null;\n this.pollTorrentsIntervalID = null;\n this.selectedTorrents = [];\n this.sortedTorrents = [];\n this.torrents = {};\n }\n\n _createClass(TorrentStoreClass, [{\n key: 'fetchTorrentDetails',\n value: function fetchTorrentDetails() {\n if (!this.isRequestPending('fetch-torrent-details')) {\n this.beginRequest('fetch-torrent-details');\n _actionsTorrentActions2['default'].fetchTorrentDetails(_UIStore2['default'].getTorrentDetailsHash());\n }\n\n if (this.pollTorrentDetailsIntervalID === null) {\n this.startPollingTorrentDetails();\n }\n }\n }, {\n key: 'fetchTorrents',\n value: function fetchTorrents() {\n if (!this.isRequestPending('fetch-torrents')) {\n this.beginRequest('fetch-torrents');\n _actionsTorrentActions2['default'].fetchTorrents();\n }\n\n if (this.pollTorrentsIntervalID === null) {\n this.startPollingTorrents();\n }\n }\n }, {\n key: 'filterTorrents',\n value: function filterTorrents() {\n var searchFilter = _TorrentFilterStore2['default'].getSearchFilter();\n var statusFilter = _TorrentFilterStore2['default'].getStatusFilter();\n var trackerFilter = _TorrentFilterStore2['default'].getTrackerFilter();\n\n var filteredTorrents = Object.assign([], this.sortedTorrents);\n\n if (searchFilter && searchFilter !== '') {\n filteredTorrents = (0, _utilSearchTorrents.searchTorrents)(filteredTorrents, searchFilter);\n }\n\n if (statusFilter && statusFilter !== 'all') {\n filteredTorrents = (0, _utilFilterTorrents.filterTorrents)(filteredTorrents, {\n type: 'status',\n filter: statusFilter\n });\n }\n\n if (trackerFilter && trackerFilter !== 'all') {\n filteredTorrents = (0, _utilFilterTorrents.filterTorrents)(filteredTorrents, {\n type: 'tracker',\n filter: trackerFilter\n });\n }\n\n this.filteredTorrents = filteredTorrents;\n }\n }, {\n key: 'getTorrentDetails',\n value: function getTorrentDetails(hash) {\n return this.torrents[hash].details || {};\n }\n }, {\n key: 'getSelectedTorrents',\n value: function getSelectedTorrents() {\n return this.selectedTorrents;\n }\n }, {\n key: 'getSelectedTorrentsDownloadLocations',\n value: function getSelectedTorrentsDownloadLocations() {\n var _this = this;\n\n return this.selectedTorrents.map(function (hash) {\n return _this.torrents[hash].basePath;\n });\n }\n }, {\n key: 'getSelectedTorrentsFilename',\n value: function getSelectedTorrentsFilename() {\n var _this2 = this;\n\n return this.selectedTorrents.map(function (hash) {\n return _this2.torrents[hash].filename;\n });\n }\n }, {\n key: 'handleAddTorrentError',\n value: function handleAddTorrentError() {\n this.emit(_constantsEventTypes2['default'].CLIENT_ADD_TORRENT_ERROR);\n }\n }, {\n key: 'handleAddTorrentSuccess',\n value: function handleAddTorrentSuccess() {\n this.emit(_constantsEventTypes2['default'].CLIENT_ADD_TORRENT_SUCCESS);\n }\n }, {\n key: 'getTorrent',\n value: function getTorrent(hash) {\n return this.torrents[hash];\n }\n }, {\n key: 'getAllTorrents',\n value: function getAllTorrents() {\n return this.torrents;\n }\n }, {\n key: 'getTorrents',\n value: function getTorrents() {\n if (_TorrentFilterStore2['default'].isFilterActive()) {\n return this.filteredTorrents;\n }\n\n return this.sortedTorrents;\n }\n }, {\n key: 'handleMoveTorrentsSuccess',\n value: function handleMoveTorrentsSuccess(data) {\n this.emit(_constantsEventTypes2['default'].CLIENT_MOVE_TORRENTS_SUCCESS);\n }\n }, {\n key: 'handleMoveTorrentsError',\n value: function handleMoveTorrentsError(error) {\n this.emit(_constantsEventTypes2['default'].CLIENT_MOVE_TORRENTS_REQUEST_ERROR);\n }\n }, {\n key: 'setSelectedTorrents',\n value: function setSelectedTorrents(event, hash) {\n this.selectedTorrents = (0, _utilSelectTorrents.selectTorrents)({\n event: event,\n hash: hash,\n selectedTorrents: this.selectedTorrents,\n torrentList: this.filteredTorrents\n });\n this.emit(_constantsEventTypes2['default'].UI_TORRENT_SELECTION_CHANGE);\n }\n }, {\n key: 'handleFetchTorrentsError',\n value: function handleFetchTorrentsError(action) {\n console.log(action);\n }\n }, {\n key: 'handleFetchTorrentsSuccess',\n value: function handleFetchTorrentsSuccess(torrents) {\n this.sortTorrents(torrents);\n this.filterTorrents();\n\n this.emit(_constantsEventTypes2['default'].CLIENT_TORRENTS_REQUEST_SUCCESS);\n this.resolveRequest('fetch-torrents');\n }\n }, {\n key: 'setTorrentDetails',\n value: function setTorrentDetails(hash, torrentDetails) {\n this.torrents[hash].details = torrentDetails;\n this.emit(_constantsEventTypes2['default'].CLIENT_TORRENT_DETAILS_CHANGE);\n this.resolveRequest('fetch-torrent-details');\n }\n }, {\n key: 'sortTorrents',\n value: function sortTorrents(torrents) {\n var torrentsSort = _TorrentFilterStore2['default'].getTorrentsSort();\n\n this.torrents = torrents;\n\n // Convert torrents hash to array and sort it.\n this.sortedTorrents = (0, _utilSortTorrents.sortTorrents)(this.torrents, { direction: torrentsSort.direction, property: torrentsSort.value });\n }\n }, {\n key: 'startPollingTorrentDetails',\n value: function startPollingTorrentDetails() {\n this.pollTorrentDetailsIntervalID = setInterval(this.fetchTorrentDetails.bind(this), _config2['default'].pollInterval);\n }\n }, {\n key: 'startPollingTorrents',\n value: function startPollingTorrents() {\n this.pollTorrentsIntervalID = setInterval(this.fetchTorrents.bind(this), _config2['default'].pollInterval);\n }\n }, {\n key: 'stopPollingTorrentDetails',\n value: function stopPollingTorrentDetails() {\n clearInterval(this.pollTorrentDetailsIntervalID);\n this.pollTorrentDetailsIntervalID = null;\n }\n }, {\n key: 'stopPollingTorrents',\n value: function stopPollingTorrents() {\n clearInterval(this.pollTorrentsIntervalID);\n this.pollTorrentsIntervalID = null;\n }\n }, {\n key: 'triggerTorrentsFilter',\n value: function triggerTorrentsFilter() {\n this.filterTorrents();\n }\n }]);\n\n return TorrentStoreClass;\n})(_BaseStore3['default']);\n\nvar TorrentStore = new TorrentStoreClass();\n\nTorrentStore.dispatcherID = _dispatcherAppDispatcher2['default'].register(function (payload) {\n var action = payload.action;\n var source = payload.source;\n\n switch (action.type) {\n case _constantsActionTypes2['default'].CLIENT_FETCH_TORRENT_DETAILS_SUCCESS:\n TorrentStore.setTorrentDetails(action.data.hash, action.data.torrentDetails);\n break;\n case _constantsActionTypes2['default'].CLIENT_ADD_TORRENT_ERROR:\n TorrentStore.handleAddTorrentError(action.error);\n break;\n case _constantsActionTypes2['default'].CLIENT_ADD_TORRENT_SUCCESS:\n TorrentStore.handleAddTorrentSuccess(action.data);\n break;\n case _constantsActionTypes2['default'].CLIENT_FETCH_TORRENTS_SUCCESS:\n TorrentStore.handleFetchTorrentsSuccess(action.data.torrents);\n break;\n case _constantsActionTypes2['default'].CLIENT_MOVE_TORRENTS_SUCCESS:\n TorrentStore.handleMoveTorrentsSuccess(action.data);\n break;\n case _constantsActionTypes2['default'].CLIENT_MOVE_TORRENTS_ERROR:\n TorrentStore.handleMoveTorrentsError(action.error);\n break;\n case _constantsActionTypes2['default'].CLIENT_FETCH_TORRENTS_ERROR:\n TorrentStore.handleFetchTorrentsError();\n break;\n case _constantsActionTypes2['default'].UI_CLICK_TORRENT:\n TorrentStore.setSelectedTorrents(action.data.event, action.data.hash);\n break;\n case _constantsActionTypes2['default'].UI_SET_TORRENT_STATUS_FILTER:\n case _constantsActionTypes2['default'].UI_SET_TORRENT_TRACKER_FILTER:\n case _constantsActionTypes2['default'].UI_SET_TORRENT_SEARCH_FILTER:\n case _constantsActionTypes2['default'].UI_SET_TORRENT_SORT:\n TorrentStore.triggerTorrentsFilter();\n break;\n case _constantsActionTypes2['default'].CLIENT_ADD_TORRENT_SUCCESS:\n case _constantsActionTypes2['default'].CLIENT_START_TORRENT_SUCCESS:\n case _constantsActionTypes2['default'].CLIENT_STOP_TORRENT_SUCCESS:\n TorrentStore.fetchTorrents();\n break;\n }\n});\n\nexports['default'] = TorrentStore;\nmodule.exports = exports['default'];//@ sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9jbGllbnQvc291cmNlL3NjcmlwdHMvc3RvcmVzL1RvcnJlbnRTdG9yZS5qcz9lMDY2Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztBQUVBO0FBQ0E7QUFDQSxDQUFDOztBQUVELGlDQUFpQywyQ0FBMkMsZ0JBQWdCLGtCQUFrQixPQUFPLDJCQUEyQix3REFBd0QsZ0NBQWdDLHVEQUF1RCwyREFBMkQsRUFBRSxFQUFFLHlEQUF5RCxxRUFBcUUsNkRBQTZELG9CQUFvQixHQUFHLEVBQUU7O0FBRWxqQix1Q0FBdUMsbUJBQW1CLDRCQUE0QixpREFBaUQsZ0JBQWdCLGtEQUFrRCw4REFBOEQsMEJBQTBCLDRDQUE0Qyx1QkFBdUIsa0JBQWtCLEVBQUUsT0FBTyxhQUFhLGdCQUFnQixnQkFBZ0IsZUFBZSwyQkFBMkIsb0JBQW9CLEVBQUUsRUFBRSw0QkFBNEIsbUJBQW1CLEVBQUUsT0FBTyx1QkFBdUIsNEJBQTRCLGtCQUFrQixFQUFFLDhCQUE4QixFQUFFLEVBQUU7O0FBRS9vQixzQ0FBc0MsdUNBQXVDLGtCQUFrQjs7QUFFL0YsaURBQWlELDBDQUEwQywwREFBMEQsRUFBRTs7QUFFdkosMENBQTBDLCtEQUErRCxxR0FBcUcsRUFBRSx5RUFBeUUsZUFBZSx5RUFBeUUsRUFBRSxFQUFFLHVIQUF1SDs7QUFFNWU7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EsZ0ZBQWdGLGtFQUFrRTtBQUNsSjtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0EsQ0FBQzs7QUFFRDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0EiLCJmaWxlIjoiMjAxLmpzIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcblxudmFyIF9jcmVhdGVDbGFzcyA9IChmdW5jdGlvbiAoKSB7IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoJ3ZhbHVlJyBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpOyB9IH0gcmV0dXJuIGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfTsgfSkoKTtcblxudmFyIF9nZXQgPSBmdW5jdGlvbiBnZXQoX3gsIF94MiwgX3gzKSB7IHZhciBfYWdhaW4gPSB0cnVlOyBfZnVuY3Rpb246IHdoaWxlIChfYWdhaW4pIHsgdmFyIG9iamVjdCA9IF94LCBwcm9wZXJ0eSA9IF94MiwgcmVjZWl2ZXIgPSBfeDM7IF9hZ2FpbiA9IGZhbHNlOyBpZiAob2JqZWN0ID09PSBudWxsKSBvYmplY3QgPSBGdW5jdGlvbi5wcm90b3R5cGU7IHZhciBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHByb3BlcnR5KTsgaWYgKGRlc2MgPT09IHVuZGVmaW5lZCkgeyB2YXIgcGFyZW50ID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKG9iamVjdCk7IGlmIChwYXJlbnQgPT09IG51bGwpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfSBlbHNlIHsgX3ggPSBwYXJlbnQ7IF94MiA9IHByb3BlcnR5OyBfeDMgPSByZWNlaXZlcjsgX2FnYWluID0gdHJ1ZTsgZGVzYyA9IHBhcmVudCA9IHVuZGVmaW5lZDsgY29udGludWUgX2Z1bmN0aW9uOyB9IH0gZWxzZSBpZiAoJ3ZhbHVlJyBpbiBkZXNjKSB7IHJldHVybiBkZXNjLnZhbHVlOyB9IGVsc2UgeyB2YXIgZ2V0dGVyID0gZGVzYy5nZXQ7IGlmIChnZXR0ZXIgPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9IHJldHVybiBnZXR0ZXIuY2FsbChyZWNlaXZlcik7IH0gfSB9O1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyAnZGVmYXVsdCc6IG9iaiB9OyB9XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcignQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uJyk7IH0gfVxuXG5mdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHsgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSAnZnVuY3Rpb24nICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcignU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAnICsgdHlwZW9mIHN1cGVyQ2xhc3MpOyB9IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogc3ViQ2xhc3MsIGVudW1lcmFibGU6IGZhbHNlLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0gfSk7IGlmIChzdXBlckNsYXNzKSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIDogc3ViQ2xhc3MuX19wcm90b19fID0gc3VwZXJDbGFzczsgfVxuXG52YXIgX2xvZGFzaCA9IHJlcXVpcmUoJ2xvZGFzaCcpO1xuXG52YXIgX2xvZGFzaDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9sb2Rhc2gpO1xuXG52YXIgX2NvbnN0YW50c0FjdGlvblR5cGVzID0gcmVxdWlyZSgnLi4vY29uc3RhbnRzL0FjdGlvblR5cGVzJyk7XG5cbnZhciBfY29uc3RhbnRzQWN0aW9uVHlwZXMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY29uc3RhbnRzQWN0aW9uVHlwZXMpO1xuXG52YXIgX2Rpc3BhdGNoZXJBcHBEaXNwYXRjaGVyID0gcmVxdWlyZSgnLi4vZGlzcGF0Y2hlci9BcHBEaXNwYXRjaGVyJyk7XG5cbnZhciBfZGlzcGF0Y2hlckFwcERpc3BhdGNoZXIyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZGlzcGF0Y2hlckFwcERpc3BhdGNoZXIpO1xuXG52YXIgX0Jhc2VTdG9yZTIgPSByZXF1aXJlKCcuL0Jhc2VTdG9yZScpO1xuXG52YXIgX0Jhc2VTdG9yZTMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9CYXNlU3RvcmUyKTtcblxudmFyIF9jb25maWcgPSByZXF1aXJlKCcuLi8uLi8uLi8uLi9jb25maWcnKTtcblxudmFyIF9jb25maWcyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY29uZmlnKTtcblxudmFyIF9jb25zdGFudHNFdmVudFR5cGVzID0gcmVxdWlyZSgnLi4vY29uc3RhbnRzL0V2ZW50VHlwZXMnKTtcblxudmFyIF9jb25zdGFudHNFdmVudFR5cGVzMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2NvbnN0YW50c0V2ZW50VHlwZXMpO1xuXG52YXIgX3V0aWxGaWx0ZXJUb3JyZW50cyA9IHJlcXVpcmUoJy4uL3V0aWwvZmlsdGVyVG9ycmVudHMnKTtcblxudmFyIF91dGlsU2VhcmNoVG9ycmVudHMgPSByZXF1aXJlKCcuLi91dGlsL3NlYXJjaFRvcnJlbnRzJyk7XG5cbnZhciBfdXRpbFNlbGVjdFRvcnJlbnRzID0gcmVxdWlyZSgnLi4vdXRpbC9zZWxlY3RUb3JyZW50cycpO1xuXG52YXIgX3V0aWxTb3J0VG9ycmVudHMgPSByZXF1aXJlKCcuLi91dGlsL3NvcnRUb3JyZW50cycpO1xuXG52YXIgX2FjdGlvbnNUb3JyZW50QWN0aW9ucyA9IHJlcXVpcmUoJy4uL2FjdGlvbnMvVG9ycmVudEFjdGlvbnMnKTtcblxudmFyIF9hY3Rpb25zVG9ycmVudEFjdGlvbnMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfYWN0aW9uc1RvcnJlbnRBY3Rpb25zKTtcblxudmFyIF9Ub3JyZW50RmlsdGVyU3RvcmUgPSByZXF1aXJlKCcuL1RvcnJlbnRGaWx0ZXJTdG9yZScpO1xuXG52YXIgX1RvcnJlbnRGaWx0ZXJTdG9yZTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9Ub3JyZW50RmlsdGVyU3RvcmUpO1xuXG52YXIgX1VJU3RvcmUgPSByZXF1aXJlKCcuL1VJU3RvcmUnKTtcblxudmFyIF9VSVN0b3JlMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX1VJU3RvcmUpO1xuXG52YXIgVG9ycmVudFN0b3JlQ2xhc3MgPSAoZnVuY3Rpb24gKF9CYXNlU3RvcmUpIHtcbiAgX2luaGVyaXRzKFRvcnJlbnRTdG9yZUNsYXNzLCBfQmFzZVN0b3JlKTtcblxuICBmdW5jdGlvbiBUb3JyZW50U3RvcmVDbGFzcygpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgVG9ycmVudFN0b3JlQ2xhc3MpO1xuXG4gICAgX2dldChPYmplY3QuZ2V0UHJvdG90eXBlT2YoVG9ycmVudFN0b3JlQ2xhc3MucHJvdG90eXBlKSwgJ2NvbnN0cnVjdG9yJywgdGhpcykuY2FsbCh0aGlzKTtcblxuICAgIHRoaXMuZmlsdGVyZWRUb3JyZW50cyA9IHt9O1xuICAgIHRoaXMucG9sbFRvcnJlbnREZXRhaWxzSW50ZXJ2YWxJRCA9IG51bGw7XG4gICAgdGhpcy5wb2xsVG9ycmVudHNJbnRlcnZhbElEID0gbnVsbDtcbiAgICB0aGlzLnNlbGVjdGVkVG9ycmVudHMgPSBbXTtcbiAgICB0aGlzLnNvcnRlZFRvcnJlbnRzID0gW107XG4gICAgdGhpcy50b3JyZW50cyA9IHt9O1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKFRvcnJlbnRTdG9yZUNsYXNzLCBbe1xuICAgIGtleTogJ2ZldGNoVG9ycmVudERldGFpbHMnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBmZXRjaFRvcnJlbnREZXRhaWxzKCkge1xuICAgICAgaWYgKCF0aGlzLmlzUmVxdWVzdFBlbmRpbmcoJ2ZldGNoLXRvcnJlbnQtZGV0YWlscycpKSB7XG4gICAgICAgIHRoaXMuYmVnaW5SZXF1ZXN0KCdmZXRjaC10b3JyZW50LWRldGFpbHMnKTtcbiAgICAgICAgX2FjdGlvbnNUb3JyZW50QWN0aW9uczJbJ2RlZmF1bHQnXS5mZXRjaFRvcnJlbnREZXRhaWxzKF9VSVN0b3JlMlsnZGVmYXVsdCddLmdldFRvcnJlbnREZXRhaWxzSGFzaCgpKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMucG9sbFRvcnJlbnREZXRhaWxzSW50ZXJ2YWxJRCA9PT0gbnVsbCkge1xuICAgICAgICB0aGlzLnN0YXJ0UG9sbGluZ1RvcnJlbnREZXRhaWxzKCk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnZmV0Y2hUb3JyZW50cycsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGZldGNoVG9ycmVudHMoKSB7XG4gICAgICBpZiAoIXRoaXMuaXNSZXF1ZXN0UGVuZGluZygnZmV0Y2gtdG9ycmVudHMnKSkge1xuICAgICAgICB0aGlzLmJlZ2luUmVxdWVzdCgnZmV0Y2gtdG9ycmVudHMnKTtcbiAgICAgICAgX2FjdGlvbnNUb3JyZW50QWN0aW9uczJbJ2RlZmF1bHQnXS5mZXRjaFRvcnJlbnRzKCk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLnBvbGxUb3JyZW50c0ludGVydmFsSUQgPT09IG51bGwpIHtcbiAgICAgICAgdGhpcy5zdGFydFBvbGxpbmdUb3JyZW50cygpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2ZpbHRlclRvcnJlbnRzJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gZmlsdGVyVG9ycmVudHMoKSB7XG4gICAgICB2YXIgc2VhcmNoRmlsdGVyID0gX1RvcnJlbnRGaWx0ZXJTdG9yZTJbJ2RlZmF1bHQnXS5nZXRTZWFyY2hGaWx0ZXIoKTtcbiAgICAgIHZhciBzdGF0dXNGaWx0ZXIgPSBfVG9ycmVudEZpbHRlclN0b3JlMlsnZGVmYXVsdCddLmdldFN0YXR1c0ZpbHRlcigpO1xuICAgICAgdmFyIHRyYWNrZXJGaWx0ZXIgPSBfVG9ycmVudEZpbHRlclN0b3JlMlsnZGVmYXVsdCddLmdldFRyYWNrZXJGaWx0ZXIoKTtcblxuICAgICAgdmFyIGZpbHRlcmVkVG9ycmVudHMgPSBPYmplY3QuYXNzaWduKFtdLCB0aGlzLnNvcnRlZFRvcnJlbnRzKTtcblxuICAgICAgaWYgKHNlYXJjaEZpbHRlciAmJiBzZWFyY2hGaWx0ZXIgIT09ICcnKSB7XG4gICAgICAgIGZpbHRlcmVkVG9ycmVudHMgPSAoMCwgX3V0aWxTZWFyY2hUb3JyZW50cy5zZWFyY2hUb3JyZW50cykoZmlsdGVyZWRUb3JyZW50cywgc2VhcmNoRmlsdGVyKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHN0YXR1c0ZpbHRlciAmJiBzdGF0dXNGaWx0ZXIgIT09ICdhbGwnKSB7XG4gICAgICAgIGZpbHRlcmVkVG9ycmVudHMgPSAoMCwgX3V0aWxGaWx0ZXJUb3JyZW50cy5maWx0ZXJUb3JyZW50cykoZmlsdGVyZWRUb3JyZW50cywge1xuICAgICAgICAgIHR5cGU6ICdzdGF0dXMnLFxuICAgICAgICAgIGZpbHRlcjogc3RhdHVzRmlsdGVyXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBpZiAodHJhY2tlckZpbHRlciAmJiB0cmFja2VyRmlsdGVyICE9PSAnYWxsJykge1xuICAgICAgICBmaWx0ZXJlZFRvcnJlbnRzID0gKDAsIF91dGlsRmlsdGVyVG9ycmVudHMuZmlsdGVyVG9ycmVudHMpKGZpbHRlcmVkVG9ycmVudHMsIHtcbiAgICAgICAgICB0eXBlOiAndHJhY2tlcicsXG4gICAgICAgICAgZmlsdGVyOiB0cmFja2VyRmlsdGVyXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmZpbHRlcmVkVG9ycmVudHMgPSBmaWx0ZXJlZFRvcnJlbnRzO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2dldFRvcnJlbnREZXRhaWxzJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0VG9ycmVudERldGFpbHMoaGFzaCkge1xuICAgICAgcmV0dXJuIHRoaXMudG9ycmVudHNbaGFzaF0uZGV0YWlscyB8fCB7fTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdnZXRTZWxlY3RlZFRvcnJlbnRzJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0U2VsZWN0ZWRUb3JyZW50cygpIHtcbiAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkVG9ycmVudHM7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnZ2V0U2VsZWN0ZWRUb3JyZW50c0Rvd25sb2FkTG9jYXRpb25zJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0U2VsZWN0ZWRUb3JyZW50c0Rvd25sb2FkTG9jYXRpb25zKCkge1xuICAgICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRUb3JyZW50cy5tYXAoZnVuY3Rpb24gKGhhc2gpIHtcbiAgICAgICAgcmV0dXJuIF90aGlzLnRvcnJlbnRzW2hhc2hdLmJhc2VQYXRoO1xuICAgICAgfSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnZ2V0U2VsZWN0ZWRUb3JyZW50c0ZpbGVuYW1lJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0U2VsZWN0ZWRUb3JyZW50c0ZpbGVuYW1lKCkge1xuICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkVG9ycmVudHMubWFwKGZ1bmN0aW9uIChoYXNoKSB7XG4gICAgICAgIHJldHVybiBfdGhpczIudG9ycmVudHNbaGFzaF0uZmlsZW5hbWU7XG4gICAgICB9KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdoYW5kbGVBZGRUb3JyZW50RXJyb3InLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBoYW5kbGVBZGRUb3JyZW50RXJyb3IoKSB7XG4gICAgICB0aGlzLmVtaXQoX2NvbnN0YW50c0V2ZW50VHlwZXMyWydkZWZhdWx0J10uQ0xJRU5UX0FERF9UT1JSRU5UX0VSUk9SKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdoYW5kbGVBZGRUb3JyZW50U3VjY2VzcycsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGhhbmRsZUFkZFRvcnJlbnRTdWNjZXNzKCkge1xuICAgICAgdGhpcy5lbWl0KF9jb25zdGFudHNFdmVudFR5cGVzMlsnZGVmYXVsdCddLkNMSUVOVF9BRERfVE9SUkVOVF9TVUNDRVNTKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdnZXRUb3JyZW50JyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0VG9ycmVudChoYXNoKSB7XG4gICAgICByZXR1cm4gdGhpcy50b3JyZW50c1toYXNoXTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdnZXRBbGxUb3JyZW50cycsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldEFsbFRvcnJlbnRzKCkge1xuICAgICAgcmV0dXJuIHRoaXMudG9ycmVudHM7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnZ2V0VG9ycmVudHMnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRUb3JyZW50cygpIHtcbiAgICAgIGlmIChfVG9ycmVudEZpbHRlclN0b3JlMlsnZGVmYXVsdCddLmlzRmlsdGVyQWN0aXZlKCkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmlsdGVyZWRUb3JyZW50cztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXMuc29ydGVkVG9ycmVudHM7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnaGFuZGxlTW92ZVRvcnJlbnRzU3VjY2VzcycsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGhhbmRsZU1vdmVUb3JyZW50c1N1Y2Nlc3MoZGF0YSkge1xuICAgICAgdGhpcy5lbWl0KF9jb25zdGFudHNFdmVudFR5cGVzMlsnZGVmYXVsdCddLkNMSUVOVF9NT1ZFX1RPUlJFTlRTX1NVQ0NFU1MpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2hhbmRsZU1vdmVUb3JyZW50c0Vycm9yJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gaGFuZGxlTW92ZVRvcnJlbnRzRXJyb3IoZXJyb3IpIHtcbiAgICAgIHRoaXMuZW1pdChfY29uc3RhbnRzRXZlbnRUeXBlczJbJ2RlZmF1bHQnXS5DTElFTlRfTU9WRV9UT1JSRU5UU19SRVFVRVNUX0VSUk9SKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdzZXRTZWxlY3RlZFRvcnJlbnRzJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0U2VsZWN0ZWRUb3JyZW50cyhldmVudCwgaGFzaCkge1xuICAgICAgdGhpcy5zZWxlY3RlZFRvcnJlbnRzID0gKDAsIF91dGlsU2VsZWN0VG9ycmVudHMuc2VsZWN0VG9ycmVudHMpKHtcbiAgICAgICAgZXZlbnQ6IGV2ZW50LFxuICAgICAgICBoYXNoOiBoYXNoLFxuICAgICAgICBzZWxlY3RlZFRvcnJlbnRzOiB0aGlzLnNlbGVjdGVkVG9ycmVudHMsXG4gICAgICAgIHRvcnJlbnRMaXN0OiB0aGlzLmZpbHRlcmVkVG9ycmVudHNcbiAgICAgIH0pO1xuICAgICAgdGhpcy5lbWl0KF9jb25zdGFudHNFdmVudFR5cGVzMlsnZGVmYXVsdCddLlVJX1RPUlJFTlRfU0VMRUNUSU9OX0NIQU5HRSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnaGFuZGxlRmV0Y2hUb3JyZW50c0Vycm9yJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gaGFuZGxlRmV0Y2hUb3JyZW50c0Vycm9yKGFjdGlvbikge1xuICAgICAgY29uc29sZS5sb2coYWN0aW9uKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdoYW5kbGVGZXRjaFRvcnJlbnRzU3VjY2VzcycsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGhhbmRsZUZldGNoVG9ycmVudHNTdWNjZXNzKHRvcnJlbnRzKSB7XG4gICAgICB0aGlzLnNvcnRUb3JyZW50cyh0b3JyZW50cyk7XG4gICAgICB0aGlzLmZpbHRlclRvcnJlbnRzKCk7XG5cbiAgICAgIHRoaXMuZW1pdChfY29uc3RhbnRzRXZlbnRUeXBlczJbJ2RlZmF1bHQnXS5DTElFTlRfVE9SUkVOVFNfUkVRVUVTVF9TVUNDRVNTKTtcbiAgICAgIHRoaXMucmVzb2x2ZVJlcXVlc3QoJ2ZldGNoLXRvcnJlbnRzJyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnc2V0VG9ycmVudERldGFpbHMnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRUb3JyZW50RGV0YWlscyhoYXNoLCB0b3JyZW50RGV0YWlscykge1xuICAgICAgdGhpcy50b3JyZW50c1toYXNoXS5kZXRhaWxzID0gdG9ycmVudERldGFpbHM7XG4gICAgICB0aGlzLmVtaXQoX2NvbnN0YW50c0V2ZW50VHlwZXMyWydkZWZhdWx0J10uQ0xJRU5UX1RPUlJFTlRfREVUQUlMU19DSEFOR0UpO1xuICAgICAgdGhpcy5yZXNvbHZlUmVxdWVzdCgnZmV0Y2gtdG9ycmVudC1kZXRhaWxzJyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnc29ydFRvcnJlbnRzJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gc29ydFRvcnJlbnRzKHRvcnJlbnRzKSB7XG4gICAgICB2YXIgdG9ycmVudHNTb3J0ID0gX1RvcnJlbnRGaWx0ZXJTdG9yZTJbJ2RlZmF1bHQnXS5nZXRUb3JyZW50c1NvcnQoKTtcblxuICAgICAgdGhpcy50b3JyZW50cyA9IHRvcnJlbnRzO1xuXG4gICAgICAvLyBDb252ZXJ0IHRvcnJlbnRzIGhhc2ggdG8gYXJyYXkgYW5kIHNvcnQgaXQuXG4gICAgICB0aGlzLnNvcnRlZFRvcnJlbnRzID0gKDAsIF91dGlsU29ydFRvcnJlbnRzLnNvcnRUb3JyZW50cykodGhpcy50b3JyZW50cywgeyBkaXJlY3Rpb246IHRvcnJlbnRzU29ydC5kaXJlY3Rpb24sIHByb3BlcnR5OiB0b3JyZW50c1NvcnQudmFsdWUgfSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnc3RhcnRQb2xsaW5nVG9ycmVudERldGFpbHMnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzdGFydFBvbGxpbmdUb3JyZW50RGV0YWlscygpIHtcbiAgICAgIHRoaXMucG9sbFRvcnJlbnREZXRhaWxzSW50ZXJ2YWxJRCA9IHNldEludGVydmFsKHRoaXMuZmV0Y2hUb3JyZW50RGV0YWlscy5iaW5kKHRoaXMpLCBfY29uZmlnMlsnZGVmYXVsdCddLnBvbGxJbnRlcnZhbCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnc3RhcnRQb2xsaW5nVG9ycmVudHMnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzdGFydFBvbGxpbmdUb3JyZW50cygpIHtcbiAgICAgIHRoaXMucG9sbFRvcnJlbnRzSW50ZXJ2YWxJRCA9IHNldEludGVydmFsKHRoaXMuZmV0Y2hUb3JyZW50cy5iaW5kKHRoaXMpLCBfY29uZmlnMlsnZGVmYXVsdCddLnBvbGxJbnRlcnZhbCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnc3RvcFBvbGxpbmdUb3JyZW50RGV0YWlscycsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHN0b3BQb2xsaW5nVG9ycmVudERldGFpbHMoKSB7XG4gICAgICBjbGVhckludGVydmFsKHRoaXMucG9sbFRvcnJlbnREZXRhaWxzSW50ZXJ2YWxJRCk7XG4gICAgICB0aGlzLnBvbGxUb3JyZW50RGV0YWlsc0ludGVydmFsSUQgPSBudWxsO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ3N0b3BQb2xsaW5nVG9ycmVudHMnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzdG9wUG9sbGluZ1RvcnJlbnRzKCkge1xuICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLnBvbGxUb3JyZW50c0ludGVydmFsSUQpO1xuICAgICAgdGhpcy5wb2xsVG9ycmVudHNJbnRlcnZhbElEID0gbnVsbDtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICd0cmlnZ2VyVG9ycmVudHNGaWx0ZXInLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB0cmlnZ2VyVG9ycmVudHNGaWx0ZXIoKSB7XG4gICAgICB0aGlzLmZpbHRlclRvcnJlbnRzKCk7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFRvcnJlbnRTdG9yZUNsYXNzO1xufSkoX0Jhc2VTdG9yZTNbJ2RlZmF1bHQnXSk7XG5cbnZhciBUb3JyZW50U3RvcmUgPSBuZXcgVG9ycmVudFN0b3JlQ2xhc3MoKTtcblxuVG9ycmVudFN0b3JlLmRpc3BhdGNoZXJJRCA9IF9kaXNwYXRjaGVyQXBwRGlzcGF0Y2hlcjJbJ2RlZmF1bHQnXS5yZWdpc3RlcihmdW5jdGlvbiAocGF5bG9hZCkge1xuICB2YXIgYWN0aW9uID0gcGF5bG9hZC5hY3Rpb247XG4gIHZhciBzb3VyY2UgPSBwYXlsb2FkLnNvdXJjZTtcblxuICBzd2l0Y2ggKGFjdGlvbi50eXBlKSB7XG4gICAgY2FzZSBfY29uc3RhbnRzQWN0aW9uVHlwZXMyWydkZWZhdWx0J10uQ0xJRU5UX0ZFVENIX1RPUlJFTlRfREVUQUlMU19TVUNDRVNTOlxuICAgICAgVG9ycmVudFN0b3JlLnNldFRvcnJlbnREZXRhaWxzKGFjdGlvbi5kYXRhLmhhc2gsIGFjdGlvbi5kYXRhLnRvcnJlbnREZXRhaWxzKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgX2NvbnN0YW50c0FjdGlvblR5cGVzMlsnZGVmYXVsdCddLkNMSUVOVF9BRERfVE9SUkVOVF9FUlJPUjpcbiAgICAgIFRvcnJlbnRTdG9yZS5oYW5kbGVBZGRUb3JyZW50RXJyb3IoYWN0aW9uLmVycm9yKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgX2NvbnN0YW50c0FjdGlvblR5cGVzMlsnZGVmYXVsdCddLkNMSUVOVF9BRERfVE9SUkVOVF9TVUNDRVNTOlxuICAgICAgVG9ycmVudFN0b3JlLmhhbmRsZUFkZFRvcnJlbnRTdWNjZXNzKGFjdGlvbi5kYXRhKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgX2NvbnN0YW50c0FjdGlvblR5cGVzMlsnZGVmYXVsdCddLkNMSUVOVF9GRVRDSF9UT1JSRU5UU19TVUNDRVNTOlxuICAgICAgVG9ycmVudFN0b3JlLmhhbmRsZUZldGNoVG9ycmVudHNTdWNjZXNzKGFjdGlvbi5kYXRhLnRvcnJlbnRzKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgX2NvbnN0YW50c0FjdGlvblR5cGVzMlsnZGVmYXVsdCddLkNMSUVOVF9NT1ZFX1RPUlJFTlRTX1NVQ0NFU1M6XG4gICAgICBUb3JyZW50U3RvcmUuaGFuZGxlTW92ZVRvcnJlbnRzU3VjY2VzcyhhY3Rpb24uZGF0YSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIF9jb25zdGFudHNBY3Rpb25UeXBlczJbJ2RlZmF1bHQnXS5DTElFTlRfTU9WRV9UT1JSRU5UU19FUlJPUjpcbiAgICAgIFRvcnJlbnRTdG9yZS5oYW5kbGVNb3ZlVG9ycmVudHNFcnJvcihhY3Rpb24uZXJyb3IpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBfY29uc3RhbnRzQWN0aW9uVHlwZXMyWydkZWZhdWx0J10uQ0xJRU5UX0ZFVENIX1RPUlJFTlRTX0VSUk9SOlxuICAgICAgVG9ycmVudFN0b3JlLmhhbmRsZUZldGNoVG9ycmVudHNFcnJvcigpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBfY29uc3RhbnRzQWN0aW9uVHlwZXMyWydkZWZhdWx0J10uVUlfQ0xJQ0tfVE9SUkVOVDpcbiAgICAgIFRvcnJlbnRTdG9yZS5zZXRTZWxlY3RlZFRvcnJlbnRzKGFjdGlvbi5kYXRhLmV2ZW50LCBhY3Rpb24uZGF0YS5oYXNoKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgX2NvbnN0YW50c0FjdGlvblR5cGVzMlsnZGVmYXVsdCddLlVJX1NFVF9UT1JSRU5UX1NUQVRVU19GSUxURVI6XG4gICAgY2FzZSBfY29uc3RhbnRzQWN0aW9uVHlwZXMyWydkZWZhdWx0J10uVUlfU0VUX1RPUlJFTlRfVFJBQ0tFUl9GSUxURVI6XG4gICAgY2FzZSBfY29uc3RhbnRzQWN0aW9uVHlwZXMyWydkZWZhdWx0J10uVUlfU0VUX1RPUlJFTlRfU0VBUkNIX0ZJTFRFUjpcbiAgICBjYXNlIF9jb25zdGFudHNBY3Rpb25UeXBlczJbJ2RlZmF1bHQnXS5VSV9TRVRfVE9SUkVOVF9TT1JUOlxuICAgICAgVG9ycmVudFN0b3JlLnRyaWdnZXJUb3JyZW50c0ZpbHRlcigpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBfY29uc3RhbnRzQWN0aW9uVHlwZXMyWydkZWZhdWx0J10uQ0xJRU5UX0FERF9UT1JSRU5UX1NVQ0NFU1M6XG4gICAgY2FzZSBfY29uc3RhbnRzQWN0aW9uVHlwZXMyWydkZWZhdWx0J10uQ0xJRU5UX1NUQVJUX1RPUlJFTlRfU1VDQ0VTUzpcbiAgICBjYXNlIF9jb25zdGFudHNBY3Rpb25UeXBlczJbJ2RlZmF1bHQnXS5DTElFTlRfU1RPUF9UT1JSRU5UX1NVQ0NFU1M6XG4gICAgICBUb3JyZW50U3RvcmUuZmV0Y2hUb3JyZW50cygpO1xuICAgICAgYnJlYWs7XG4gIH1cbn0pO1xuXG5leHBvcnRzWydkZWZhdWx0J10gPSBUb3JyZW50U3RvcmU7XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vY2xpZW50L3NvdXJjZS9zY3JpcHRzL3N0b3Jlcy9Ub3JyZW50U3RvcmUuanNcbiAqKiBtb2R1bGUgaWQgPSAyMDFcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyJdLCJzb3VyY2VSb290IjoiIn0="); /***/ }, /* 202 */ @@ -1496,7 +1496,7 @@ /* 242 */ /***/ function(module, exports, __webpack_require__) { - eval("'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\n\nvar _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _classnames = __webpack_require__(171);\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _react = __webpack_require__(1);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = __webpack_require__(157);\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _reactAddonsCssTransitionGroup = __webpack_require__(163);\n\nvar _reactAddonsCssTransitionGroup2 = _interopRequireDefault(_reactAddonsCssTransitionGroup);\n\nvar _iconsDownload = __webpack_require__(243);\n\nvar _iconsDownload2 = _interopRequireDefault(_iconsDownload);\n\nvar _constantsEventTypes = __webpack_require__(176);\n\nvar _constantsEventTypes2 = _interopRequireDefault(_constantsEventTypes);\n\nvar _utilFormatData = __webpack_require__(244);\n\nvar _utilFormatData2 = _interopRequireDefault(_utilFormatData);\n\nvar _uiLineChart = __webpack_require__(245);\n\nvar _uiLineChart2 = _interopRequireDefault(_uiLineChart);\n\nvar _uiLoadingIndicator = __webpack_require__(247);\n\nvar _uiLoadingIndicator2 = _interopRequireDefault(_uiLoadingIndicator);\n\nvar _storesTransferDataStore = __webpack_require__(248);\n\nvar _storesTransferDataStore2 = _interopRequireDefault(_storesTransferDataStore);\n\nvar _iconsUpload = __webpack_require__(250);\n\nvar _iconsUpload2 = _interopRequireDefault(_iconsUpload);\n\nvar METHODS_TO_BIND = ['onTransferDataRequestError', 'onTransferDataRequestSuccess', 'onTransferHistoryRequestSuccess'];\n\nvar ClientStats = (function (_React$Component) {\n _inherits(ClientStats, _React$Component);\n\n function ClientStats() {\n var _this = this;\n\n _classCallCheck(this, ClientStats);\n\n _get(Object.getPrototypeOf(ClientStats.prototype), 'constructor', this).call(this);\n\n this.state = {\n sidebarWidth: 0,\n transferHistoryRequestSuccess: false,\n transferDataRequestError: false,\n transferDataRequestSuccess: false\n };\n\n METHODS_TO_BIND.forEach(function (method) {\n _this[method] = _this[method].bind(_this);\n });\n }\n\n _createClass(ClientStats, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n this.setState({\n sidebarWidth: _reactDom2['default'].findDOMNode(this).offsetWidth\n });\n _storesTransferDataStore2['default'].listen(_constantsEventTypes2['default'].CLIENT_TRANSFER_DATA_REQUEST_SUCCESS, this.onTransferDataRequestSuccess);\n _storesTransferDataStore2['default'].listen(_constantsEventTypes2['default'].CLIENT_TRANSFER_HISTORY_REQUEST_SUCCESS, this.onTransferHistoryRequestSuccess);\n _storesTransferDataStore2['default'].fetchTransferData();\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n _storesTransferDataStore2['default'].unlisten(_constantsEventTypes2['default'].CLIENT_TRANSFER_DATA_REQUEST_SUCCESS, this.onTransferDataRequestSuccess);\n }\n }, {\n key: 'isLoading',\n value: function isLoading() {\n if (!this.state.transferHistoryRequestSuccess || !this.state.transferDataRequestSuccess) {\n return true;\n }\n\n return false;\n }\n }, {\n key: 'onTransferDataRequestError',\n value: function onTransferDataRequestError() {\n this.setState({\n transferDataRequestError: true,\n transferDataRequestSuccess: false\n });\n }\n }, {\n key: 'onTransferDataRequestSuccess',\n value: function onTransferDataRequestSuccess() {\n this.setState({\n transferDataRequestError: false,\n transferDataRequestSuccess: true\n });\n }\n }, {\n key: 'onTransferHistoryRequestSuccess',\n value: function onTransferHistoryRequestSuccess() {\n if (!this.state.transferHistoryRequestSuccess) {\n this.setState({\n transferHistoryRequestSuccess: true\n });\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var content = _react2['default'].createElement(_uiLoadingIndicator2['default'], { inverse: true });\n\n if (!this.isLoading()) {\n var throttles = _storesTransferDataStore2['default'].getThrottles();\n var transferRate = _storesTransferDataStore2['default'].getTransferRate();\n var transferRates = _storesTransferDataStore2['default'].getTransferRates();\n var transferTotals = _storesTransferDataStore2['default'].getTransferTotals();\n\n var downloadRate = _utilFormatData2['default'].data(transferRate.download, '/s');\n var downloadTotal = _utilFormatData2['default'].data(transferTotals.download);\n var uploadRate = _utilFormatData2['default'].data(transferRate.upload, '/s');\n var uploadTotal = _utilFormatData2['default'].data(transferTotals.upload);\n\n content = _react2['default'].createElement(\n 'div',\n { key: 'loaded' },\n _react2['default'].createElement(\n 'div',\n { className: 'client-stat client-stat--download' },\n _react2['default'].createElement(\n 'span',\n { className: 'client-stat__icon' },\n _react2['default'].createElement(_iconsDownload2['default'], null)\n ),\n _react2['default'].createElement(\n 'div',\n { className: 'client-stat__data' },\n _react2['default'].createElement(\n 'div',\n { className: 'client-stat__data--primary' },\n downloadRate.value,\n _react2['default'].createElement(\n 'em',\n { className: 'unit' },\n downloadRate.unit\n )\n ),\n _react2['default'].createElement(\n 'div',\n { className: 'client-stat__data--secondary' },\n downloadTotal.value,\n _react2['default'].createElement(\n 'em',\n { className: 'unit' },\n downloadTotal.unit\n ),\n ' Downloaded'\n )\n ),\n _react2['default'].createElement(_uiLineChart2['default'], {\n data: transferRates.download,\n height: 100,\n id: 'graph--download',\n limit: throttles.download,\n slug: 'graph--download',\n width: this.state.sidebarWidth })\n ),\n _react2['default'].createElement(\n 'div',\n { className: 'client-stat client-stat--upload' },\n _react2['default'].createElement(\n 'span',\n { className: 'client-stat__icon' },\n _react2['default'].createElement(_iconsUpload2['default'], null)\n ),\n _react2['default'].createElement(\n 'div',\n { className: 'client-stat__data' },\n _react2['default'].createElement(\n 'div',\n { className: 'client-stat__data--primary' },\n uploadRate.value,\n _react2['default'].createElement(\n 'em',\n { className: 'unit' },\n uploadRate.unit\n )\n ),\n _react2['default'].createElement(\n 'div',\n { className: 'client-stat__data--secondary' },\n uploadTotal.value,\n _react2['default'].createElement(\n 'em',\n { className: 'unit' },\n uploadTotal.unit\n ),\n ' Uploaded'\n )\n ),\n _react2['default'].createElement(_uiLineChart2['default'], {\n data: transferRates.upload,\n height: 100,\n id: 'graph--upload',\n limit: throttles.upload,\n slug: 'graph--upload',\n width: this.state.sidebarWidth })\n )\n );\n }\n\n var transitionGroupClasses = (0, _classnames2['default'])('client-stats sidebar__item', {\n 'is-loading': this.isLoading()\n });\n\n return _react2['default'].createElement(\n _reactAddonsCssTransitionGroup2['default'],\n {\n className: transitionGroupClasses,\n component: 'div',\n transitionEnterTimeout: 3000,\n transitionLeaveTimeout: 3000,\n transitionName: 'transfer-data' },\n content\n );\n }\n }]);\n\n return ClientStats;\n})(_react2['default'].Component);\n\nClientStats.defaultProps = {\n historyLength: 1\n};\n\nexports['default'] = ClientStats;\nmodule.exports = exports['default'];//@ sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9jbGllbnQvc291cmNlL3NjcmlwdHMvY29tcG9uZW50cy9zaWRlYmFyL1RyYW5zZmVyRGF0YS5qcz9mZTM1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztBQUVBO0FBQ0E7QUFDQSxDQUFDOztBQUVELGlDQUFpQywyQ0FBMkMsZ0JBQWdCLGtCQUFrQixPQUFPLDJCQUEyQix3REFBd0QsZ0NBQWdDLHVEQUF1RCwyREFBMkQsRUFBRSxFQUFFLHlEQUF5RCxxRUFBcUUsNkRBQTZELG9CQUFvQixHQUFHLEVBQUU7O0FBRWxqQix1Q0FBdUMsbUJBQW1CLDRCQUE0QixpREFBaUQsZ0JBQWdCLGtEQUFrRCw4REFBOEQsMEJBQTBCLDRDQUE0Qyx1QkFBdUIsa0JBQWtCLEVBQUUsT0FBTyxhQUFhLGdCQUFnQixnQkFBZ0IsZUFBZSwyQkFBMkIsb0JBQW9CLEVBQUUsRUFBRSw0QkFBNEIsbUJBQW1CLEVBQUUsT0FBTyx1QkFBdUIsNEJBQTRCLGtCQUFrQixFQUFFLDhCQUE4QixFQUFFLEVBQUU7O0FBRS9vQixzQ0FBc0MsdUNBQXVDLGtCQUFrQjs7QUFFL0YsaURBQWlELDBDQUEwQywwREFBMEQsRUFBRTs7QUFFdkosMENBQTBDLCtEQUErRCxxR0FBcUcsRUFBRSx5RUFBeUUsZUFBZSx5RUFBeUUsRUFBRSxFQUFFLHVIQUF1SDs7QUFFNWU7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBLHVGQUF1RixnQkFBZ0I7O0FBRXZHO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFdBQVcsZ0JBQWdCO0FBQzNCO0FBQ0E7QUFDQSxhQUFhLGlEQUFpRDtBQUM5RDtBQUNBO0FBQ0EsZUFBZSxpQ0FBaUM7QUFDaEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLGlDQUFpQztBQUNoRDtBQUNBO0FBQ0EsaUJBQWlCLDBDQUEwQztBQUMzRDtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsb0JBQW9CO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsNENBQTRDO0FBQzdEO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixvQkFBb0I7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhDQUE4QztBQUM5QztBQUNBO0FBQ0E7QUFDQSxhQUFhLCtDQUErQztBQUM1RDtBQUNBO0FBQ0EsZUFBZSxpQ0FBaUM7QUFDaEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLGlDQUFpQztBQUNoRDtBQUNBO0FBQ0EsaUJBQWlCLDBDQUEwQztBQUMzRDtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsb0JBQW9CO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsNENBQTRDO0FBQzdEO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixvQkFBb0I7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhDQUE4QztBQUM5QztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU87O0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkM7QUFDM0M7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBOztBQUVBO0FBQ0EiLCJmaWxlIjoiMjQyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcblxudmFyIF9jcmVhdGVDbGFzcyA9IChmdW5jdGlvbiAoKSB7IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoJ3ZhbHVlJyBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpOyB9IH0gcmV0dXJuIGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfTsgfSkoKTtcblxudmFyIF9nZXQgPSBmdW5jdGlvbiBnZXQoX3gsIF94MiwgX3gzKSB7IHZhciBfYWdhaW4gPSB0cnVlOyBfZnVuY3Rpb246IHdoaWxlIChfYWdhaW4pIHsgdmFyIG9iamVjdCA9IF94LCBwcm9wZXJ0eSA9IF94MiwgcmVjZWl2ZXIgPSBfeDM7IF9hZ2FpbiA9IGZhbHNlOyBpZiAob2JqZWN0ID09PSBudWxsKSBvYmplY3QgPSBGdW5jdGlvbi5wcm90b3R5cGU7IHZhciBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHByb3BlcnR5KTsgaWYgKGRlc2MgPT09IHVuZGVmaW5lZCkgeyB2YXIgcGFyZW50ID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKG9iamVjdCk7IGlmIChwYXJlbnQgPT09IG51bGwpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfSBlbHNlIHsgX3ggPSBwYXJlbnQ7IF94MiA9IHByb3BlcnR5OyBfeDMgPSByZWNlaXZlcjsgX2FnYWluID0gdHJ1ZTsgZGVzYyA9IHBhcmVudCA9IHVuZGVmaW5lZDsgY29udGludWUgX2Z1bmN0aW9uOyB9IH0gZWxzZSBpZiAoJ3ZhbHVlJyBpbiBkZXNjKSB7IHJldHVybiBkZXNjLnZhbHVlOyB9IGVsc2UgeyB2YXIgZ2V0dGVyID0gZGVzYy5nZXQ7IGlmIChnZXR0ZXIgPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9IHJldHVybiBnZXR0ZXIuY2FsbChyZWNlaXZlcik7IH0gfSB9O1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyAnZGVmYXVsdCc6IG9iaiB9OyB9XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcignQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uJyk7IH0gfVxuXG5mdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHsgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSAnZnVuY3Rpb24nICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcignU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAnICsgdHlwZW9mIHN1cGVyQ2xhc3MpOyB9IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogc3ViQ2xhc3MsIGVudW1lcmFibGU6IGZhbHNlLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0gfSk7IGlmIChzdXBlckNsYXNzKSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIDogc3ViQ2xhc3MuX19wcm90b19fID0gc3VwZXJDbGFzczsgfVxuXG52YXIgX2NsYXNzbmFtZXMgPSByZXF1aXJlKCdjbGFzc25hbWVzJyk7XG5cbnZhciBfY2xhc3NuYW1lczIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jbGFzc25hbWVzKTtcblxudmFyIF9yZWFjdCA9IHJlcXVpcmUoJ3JlYWN0Jyk7XG5cbnZhciBfcmVhY3QyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfcmVhY3QpO1xuXG52YXIgX3JlYWN0RG9tID0gcmVxdWlyZSgncmVhY3QtZG9tJyk7XG5cbnZhciBfcmVhY3REb20yID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfcmVhY3REb20pO1xuXG52YXIgX3JlYWN0QWRkb25zQ3NzVHJhbnNpdGlvbkdyb3VwID0gcmVxdWlyZSgncmVhY3QtYWRkb25zLWNzcy10cmFuc2l0aW9uLWdyb3VwJyk7XG5cbnZhciBfcmVhY3RBZGRvbnNDc3NUcmFuc2l0aW9uR3JvdXAyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfcmVhY3RBZGRvbnNDc3NUcmFuc2l0aW9uR3JvdXApO1xuXG52YXIgX2ljb25zRG93bmxvYWQgPSByZXF1aXJlKCcuLi9pY29ucy9Eb3dubG9hZCcpO1xuXG52YXIgX2ljb25zRG93bmxvYWQyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaWNvbnNEb3dubG9hZCk7XG5cbnZhciBfY29uc3RhbnRzRXZlbnRUeXBlcyA9IHJlcXVpcmUoJy4uLy4uL2NvbnN0YW50cy9FdmVudFR5cGVzJyk7XG5cbnZhciBfY29uc3RhbnRzRXZlbnRUeXBlczIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jb25zdGFudHNFdmVudFR5cGVzKTtcblxudmFyIF91dGlsRm9ybWF0RGF0YSA9IHJlcXVpcmUoJy4uLy4uL3V0aWwvZm9ybWF0RGF0YScpO1xuXG52YXIgX3V0aWxGb3JtYXREYXRhMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3V0aWxGb3JtYXREYXRhKTtcblxudmFyIF91aUxpbmVDaGFydCA9IHJlcXVpcmUoJy4uL3VpL0xpbmVDaGFydCcpO1xuXG52YXIgX3VpTGluZUNoYXJ0MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3VpTGluZUNoYXJ0KTtcblxudmFyIF91aUxvYWRpbmdJbmRpY2F0b3IgPSByZXF1aXJlKCcuLi91aS9Mb2FkaW5nSW5kaWNhdG9yJyk7XG5cbnZhciBfdWlMb2FkaW5nSW5kaWNhdG9yMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3VpTG9hZGluZ0luZGljYXRvcik7XG5cbnZhciBfc3RvcmVzVHJhbnNmZXJEYXRhU3RvcmUgPSByZXF1aXJlKCcuLi8uLi9zdG9yZXMvVHJhbnNmZXJEYXRhU3RvcmUnKTtcblxudmFyIF9zdG9yZXNUcmFuc2ZlckRhdGFTdG9yZTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9zdG9yZXNUcmFuc2ZlckRhdGFTdG9yZSk7XG5cbnZhciBfaWNvbnNVcGxvYWQgPSByZXF1aXJlKCcuLi9pY29ucy9VcGxvYWQnKTtcblxudmFyIF9pY29uc1VwbG9hZDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9pY29uc1VwbG9hZCk7XG5cbnZhciBNRVRIT0RTX1RPX0JJTkQgPSBbJ29uVHJhbnNmZXJEYXRhUmVxdWVzdEVycm9yJywgJ29uVHJhbnNmZXJEYXRhUmVxdWVzdFN1Y2Nlc3MnLCAnb25UcmFuc2Zlckhpc3RvcnlSZXF1ZXN0U3VjY2VzcyddO1xuXG52YXIgQ2xpZW50U3RhdHMgPSAoZnVuY3Rpb24gKF9SZWFjdCRDb21wb25lbnQpIHtcbiAgX2luaGVyaXRzKENsaWVudFN0YXRzLCBfUmVhY3QkQ29tcG9uZW50KTtcblxuICBmdW5jdGlvbiBDbGllbnRTdGF0cygpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIENsaWVudFN0YXRzKTtcblxuICAgIF9nZXQoT2JqZWN0LmdldFByb3RvdHlwZU9mKENsaWVudFN0YXRzLnByb3RvdHlwZSksICdjb25zdHJ1Y3RvcicsIHRoaXMpLmNhbGwodGhpcyk7XG5cbiAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgc2lkZWJhcldpZHRoOiAwLFxuICAgICAgdHJhbnNmZXJIaXN0b3J5UmVxdWVzdFN1Y2Nlc3M6IGZhbHNlLFxuICAgICAgdHJhbnNmZXJEYXRhUmVxdWVzdEVycm9yOiBmYWxzZSxcbiAgICAgIHRyYW5zZmVyRGF0YVJlcXVlc3RTdWNjZXNzOiBmYWxzZVxuICAgIH07XG5cbiAgICBNRVRIT0RTX1RPX0JJTkQuZm9yRWFjaChmdW5jdGlvbiAobWV0aG9kKSB7XG4gICAgICBfdGhpc1ttZXRob2RdID0gX3RoaXNbbWV0aG9kXS5iaW5kKF90aGlzKTtcbiAgICB9KTtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhDbGllbnRTdGF0cywgW3tcbiAgICBrZXk6ICdjb21wb25lbnREaWRNb3VudCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIHNpZGViYXJXaWR0aDogX3JlYWN0RG9tMlsnZGVmYXVsdCddLmZpbmRET01Ob2RlKHRoaXMpLm9mZnNldFdpZHRoXG4gICAgICB9KTtcbiAgICAgIF9zdG9yZXNUcmFuc2ZlckRhdGFTdG9yZTJbJ2RlZmF1bHQnXS5saXN0ZW4oX2NvbnN0YW50c0V2ZW50VHlwZXMyWydkZWZhdWx0J10uQ0xJRU5UX1RSQU5TRkVSX0RBVEFfUkVRVUVTVF9TVUNDRVNTLCB0aGlzLm9uVHJhbnNmZXJEYXRhUmVxdWVzdFN1Y2Nlc3MpO1xuICAgICAgX3N0b3Jlc1RyYW5zZmVyRGF0YVN0b3JlMlsnZGVmYXVsdCddLmxpc3RlbihfY29uc3RhbnRzRXZlbnRUeXBlczJbJ2RlZmF1bHQnXS5DTElFTlRfVFJBTlNGRVJfSElTVE9SWV9SRVFVRVNUX1NVQ0NFU1MsIHRoaXMub25UcmFuc2Zlckhpc3RvcnlSZXF1ZXN0U3VjY2Vzcyk7XG4gICAgICBfc3RvcmVzVHJhbnNmZXJEYXRhU3RvcmUyWydkZWZhdWx0J10uZmV0Y2hUcmFuc2ZlckRhdGEoKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdjb21wb25lbnRXaWxsVW5tb3VudCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xuICAgICAgX3N0b3Jlc1RyYW5zZmVyRGF0YVN0b3JlMlsnZGVmYXVsdCddLnVubGlzdGVuKF9jb25zdGFudHNFdmVudFR5cGVzMlsnZGVmYXVsdCddLkNMSUVOVF9UUkFOU0ZFUl9EQVRBX1JFUVVFU1RfU1VDQ0VTUywgdGhpcy5vblRyYW5zZmVyRGF0YVJlcXVlc3RTdWNjZXNzKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdpc0xvYWRpbmcnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBpc0xvYWRpbmcoKSB7XG4gICAgICBpZiAoIXRoaXMuc3RhdGUudHJhbnNmZXJIaXN0b3J5UmVxdWVzdFN1Y2Nlc3MgfHwgIXRoaXMuc3RhdGUudHJhbnNmZXJEYXRhUmVxdWVzdFN1Y2Nlc3MpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdvblRyYW5zZmVyRGF0YVJlcXVlc3RFcnJvcicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG9uVHJhbnNmZXJEYXRhUmVxdWVzdEVycm9yKCkge1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIHRyYW5zZmVyRGF0YVJlcXVlc3RFcnJvcjogdHJ1ZSxcbiAgICAgICAgdHJhbnNmZXJEYXRhUmVxdWVzdFN1Y2Nlc3M6IGZhbHNlXG4gICAgICB9KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdvblRyYW5zZmVyRGF0YVJlcXVlc3RTdWNjZXNzJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gb25UcmFuc2ZlckRhdGFSZXF1ZXN0U3VjY2VzcygpIHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICB0cmFuc2ZlckRhdGFSZXF1ZXN0RXJyb3I6IGZhbHNlLFxuICAgICAgICB0cmFuc2ZlckRhdGFSZXF1ZXN0U3VjY2VzczogdHJ1ZVxuICAgICAgfSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnb25UcmFuc2Zlckhpc3RvcnlSZXF1ZXN0U3VjY2VzcycsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG9uVHJhbnNmZXJIaXN0b3J5UmVxdWVzdFN1Y2Nlc3MoKSB7XG4gICAgICBpZiAoIXRoaXMuc3RhdGUudHJhbnNmZXJIaXN0b3J5UmVxdWVzdFN1Y2Nlc3MpIHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgdHJhbnNmZXJIaXN0b3J5UmVxdWVzdFN1Y2Nlc3M6IHRydWVcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAncmVuZGVyJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgICAgdmFyIGNvbnRlbnQgPSBfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudChfdWlMb2FkaW5nSW5kaWNhdG9yMlsnZGVmYXVsdCddLCB7IGludmVyc2U6IHRydWUgfSk7XG5cbiAgICAgIGlmICghdGhpcy5pc0xvYWRpbmcoKSkge1xuICAgICAgICB2YXIgdGhyb3R0bGVzID0gX3N0b3Jlc1RyYW5zZmVyRGF0YVN0b3JlMlsnZGVmYXVsdCddLmdldFRocm90dGxlcygpO1xuICAgICAgICB2YXIgdHJhbnNmZXJSYXRlID0gX3N0b3Jlc1RyYW5zZmVyRGF0YVN0b3JlMlsnZGVmYXVsdCddLmdldFRyYW5zZmVyUmF0ZSgpO1xuICAgICAgICB2YXIgdHJhbnNmZXJSYXRlcyA9IF9zdG9yZXNUcmFuc2ZlckRhdGFTdG9yZTJbJ2RlZmF1bHQnXS5nZXRUcmFuc2ZlclJhdGVzKCk7XG4gICAgICAgIHZhciB0cmFuc2ZlclRvdGFscyA9IF9zdG9yZXNUcmFuc2ZlckRhdGFTdG9yZTJbJ2RlZmF1bHQnXS5nZXRUcmFuc2ZlclRvdGFscygpO1xuXG4gICAgICAgIHZhciBkb3dubG9hZFJhdGUgPSBfdXRpbEZvcm1hdERhdGEyWydkZWZhdWx0J10uZGF0YSh0cmFuc2ZlclJhdGUuZG93bmxvYWQsICcvcycpO1xuICAgICAgICB2YXIgZG93bmxvYWRUb3RhbCA9IF91dGlsRm9ybWF0RGF0YTJbJ2RlZmF1bHQnXS5kYXRhKHRyYW5zZmVyVG90YWxzLmRvd25sb2FkKTtcbiAgICAgICAgdmFyIHVwbG9hZFJhdGUgPSBfdXRpbEZvcm1hdERhdGEyWydkZWZhdWx0J10uZGF0YSh0cmFuc2ZlclJhdGUudXBsb2FkLCAnL3MnKTtcbiAgICAgICAgdmFyIHVwbG9hZFRvdGFsID0gX3V0aWxGb3JtYXREYXRhMlsnZGVmYXVsdCddLmRhdGEodHJhbnNmZXJUb3RhbHMudXBsb2FkKTtcblxuICAgICAgICBjb250ZW50ID0gX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgJ2RpdicsXG4gICAgICAgICAgeyBrZXk6ICdsb2FkZWQnIH0sXG4gICAgICAgICAgX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgICAnZGl2JyxcbiAgICAgICAgICAgIHsgY2xhc3NOYW1lOiAnY2xpZW50LXN0YXQgY2xpZW50LXN0YXQtLWRvd25sb2FkJyB9LFxuICAgICAgICAgICAgX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgICAgICdzcGFuJyxcbiAgICAgICAgICAgICAgeyBjbGFzc05hbWU6ICdjbGllbnQtc3RhdF9faWNvbicgfSxcbiAgICAgICAgICAgICAgX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoX2ljb25zRG93bmxvYWQyWydkZWZhdWx0J10sIG51bGwpXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgICAgICdkaXYnLFxuICAgICAgICAgICAgICB7IGNsYXNzTmFtZTogJ2NsaWVudC1zdGF0X19kYXRhJyB9LFxuICAgICAgICAgICAgICBfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgICAgICAnZGl2JyxcbiAgICAgICAgICAgICAgICB7IGNsYXNzTmFtZTogJ2NsaWVudC1zdGF0X19kYXRhLS1wcmltYXJ5JyB9LFxuICAgICAgICAgICAgICAgIGRvd25sb2FkUmF0ZS52YWx1ZSxcbiAgICAgICAgICAgICAgICBfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgICAgICAgICdlbScsXG4gICAgICAgICAgICAgICAgICB7IGNsYXNzTmFtZTogJ3VuaXQnIH0sXG4gICAgICAgICAgICAgICAgICBkb3dubG9hZFJhdGUudW5pdFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgICAgICAgJ2RpdicsXG4gICAgICAgICAgICAgICAgeyBjbGFzc05hbWU6ICdjbGllbnQtc3RhdF9fZGF0YS0tc2Vjb25kYXJ5JyB9LFxuICAgICAgICAgICAgICAgIGRvd25sb2FkVG90YWwudmFsdWUsXG4gICAgICAgICAgICAgICAgX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgICAgICAgICAnZW0nLFxuICAgICAgICAgICAgICAgICAgeyBjbGFzc05hbWU6ICd1bml0JyB9LFxuICAgICAgICAgICAgICAgICAgZG93bmxvYWRUb3RhbC51bml0XG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAnIERvd25sb2FkZWQnXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudChfdWlMaW5lQ2hhcnQyWydkZWZhdWx0J10sIHtcbiAgICAgICAgICAgICAgZGF0YTogdHJhbnNmZXJSYXRlcy5kb3dubG9hZCxcbiAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAsXG4gICAgICAgICAgICAgIGlkOiAnZ3JhcGgtLWRvd25sb2FkJyxcbiAgICAgICAgICAgICAgbGltaXQ6IHRocm90dGxlcy5kb3dubG9hZCxcbiAgICAgICAgICAgICAgc2x1ZzogJ2dyYXBoLS1kb3dubG9hZCcsXG4gICAgICAgICAgICAgIHdpZHRoOiB0aGlzLnN0YXRlLnNpZGViYXJXaWR0aCB9KVxuICAgICAgICAgICksXG4gICAgICAgICAgX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgICAnZGl2JyxcbiAgICAgICAgICAgIHsgY2xhc3NOYW1lOiAnY2xpZW50LXN0YXQgY2xpZW50LXN0YXQtLXVwbG9hZCcgfSxcbiAgICAgICAgICAgIF9yZWFjdDJbJ2RlZmF1bHQnXS5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgICAnc3BhbicsXG4gICAgICAgICAgICAgIHsgY2xhc3NOYW1lOiAnY2xpZW50LXN0YXRfX2ljb24nIH0sXG4gICAgICAgICAgICAgIF9yZWFjdDJbJ2RlZmF1bHQnXS5jcmVhdGVFbGVtZW50KF9pY29uc1VwbG9hZDJbJ2RlZmF1bHQnXSwgbnVsbClcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgICAgJ2RpdicsXG4gICAgICAgICAgICAgIHsgY2xhc3NOYW1lOiAnY2xpZW50LXN0YXRfX2RhdGEnIH0sXG4gICAgICAgICAgICAgIF9yZWFjdDJbJ2RlZmF1bHQnXS5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgICAgICdkaXYnLFxuICAgICAgICAgICAgICAgIHsgY2xhc3NOYW1lOiAnY2xpZW50LXN0YXRfX2RhdGEtLXByaW1hcnknIH0sXG4gICAgICAgICAgICAgICAgdXBsb2FkUmF0ZS52YWx1ZSxcbiAgICAgICAgICAgICAgICBfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgICAgICAgICdlbScsXG4gICAgICAgICAgICAgICAgICB7IGNsYXNzTmFtZTogJ3VuaXQnIH0sXG4gICAgICAgICAgICAgICAgICB1cGxvYWRSYXRlLnVuaXRcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIF9yZWFjdDJbJ2RlZmF1bHQnXS5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgICAgICdkaXYnLFxuICAgICAgICAgICAgICAgIHsgY2xhc3NOYW1lOiAnY2xpZW50LXN0YXRfX2RhdGEtLXNlY29uZGFyeScgfSxcbiAgICAgICAgICAgICAgICB1cGxvYWRUb3RhbC52YWx1ZSxcbiAgICAgICAgICAgICAgICBfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgICAgICAgICdlbScsXG4gICAgICAgICAgICAgICAgICB7IGNsYXNzTmFtZTogJ3VuaXQnIH0sXG4gICAgICAgICAgICAgICAgICB1cGxvYWRUb3RhbC51bml0XG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAnIFVwbG9hZGVkJ1xuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoX3VpTGluZUNoYXJ0MlsnZGVmYXVsdCddLCB7XG4gICAgICAgICAgICAgIGRhdGE6IHRyYW5zZmVyUmF0ZXMudXBsb2FkLFxuICAgICAgICAgICAgICBoZWlnaHQ6IDEwMCxcbiAgICAgICAgICAgICAgaWQ6ICdncmFwaC0tdXBsb2FkJyxcbiAgICAgICAgICAgICAgbGltaXQ6IHRocm90dGxlcy51cGxvYWQsXG4gICAgICAgICAgICAgIHNsdWc6ICdncmFwaC0tdXBsb2FkJyxcbiAgICAgICAgICAgICAgd2lkdGg6IHRoaXMuc3RhdGUuc2lkZWJhcldpZHRoIH0pXG4gICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICB2YXIgdHJhbnNpdGlvbkdyb3VwQ2xhc3NlcyA9ICgwLCBfY2xhc3NuYW1lczJbJ2RlZmF1bHQnXSkoJ2NsaWVudC1zdGF0cyBzaWRlYmFyX19pdGVtJywge1xuICAgICAgICAnaXMtbG9hZGluZyc6IHRoaXMuaXNMb2FkaW5nKClcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgIF9yZWFjdEFkZG9uc0Nzc1RyYW5zaXRpb25Hcm91cDJbJ2RlZmF1bHQnXSxcbiAgICAgICAge1xuICAgICAgICAgIGNsYXNzTmFtZTogdHJhbnNpdGlvbkdyb3VwQ2xhc3NlcyxcbiAgICAgICAgICBjb21wb25lbnQ6ICdkaXYnLFxuICAgICAgICAgIHRyYW5zaXRpb25FbnRlclRpbWVvdXQ6IDMwMDAsXG4gICAgICAgICAgdHJhbnNpdGlvbkxlYXZlVGltZW91dDogMzAwMCxcbiAgICAgICAgICB0cmFuc2l0aW9uTmFtZTogJ3RyYW5zZmVyLWRhdGEnIH0sXG4gICAgICAgIGNvbnRlbnRcbiAgICAgICk7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIENsaWVudFN0YXRzO1xufSkoX3JlYWN0MlsnZGVmYXVsdCddLkNvbXBvbmVudCk7XG5cbkNsaWVudFN0YXRzLmRlZmF1bHRQcm9wcyA9IHtcbiAgaGlzdG9yeUxlbmd0aDogMVxufTtcblxuZXhwb3J0c1snZGVmYXVsdCddID0gQ2xpZW50U3RhdHM7XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vY2xpZW50L3NvdXJjZS9zY3JpcHRzL2NvbXBvbmVudHMvc2lkZWJhci9UcmFuc2ZlckRhdGEuanNcbiAqKiBtb2R1bGUgaWQgPSAyNDJcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyJdLCJzb3VyY2VSb290IjoiIn0="); + eval("'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\n\nvar _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _classnames = __webpack_require__(171);\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _react = __webpack_require__(1);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = __webpack_require__(157);\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _reactAddonsCssTransitionGroup = __webpack_require__(163);\n\nvar _reactAddonsCssTransitionGroup2 = _interopRequireDefault(_reactAddonsCssTransitionGroup);\n\nvar _iconsDownload = __webpack_require__(243);\n\nvar _iconsDownload2 = _interopRequireDefault(_iconsDownload);\n\nvar _constantsEventTypes = __webpack_require__(176);\n\nvar _constantsEventTypes2 = _interopRequireDefault(_constantsEventTypes);\n\nvar _utilFormatData = __webpack_require__(244);\n\nvar _utilFormatData2 = _interopRequireDefault(_utilFormatData);\n\nvar _uiLineChart = __webpack_require__(245);\n\nvar _uiLineChart2 = _interopRequireDefault(_uiLineChart);\n\nvar _uiLoadingIndicator = __webpack_require__(247);\n\nvar _uiLoadingIndicator2 = _interopRequireDefault(_uiLoadingIndicator);\n\nvar _storesTransferDataStore = __webpack_require__(248);\n\nvar _storesTransferDataStore2 = _interopRequireDefault(_storesTransferDataStore);\n\nvar _storesUIStore = __webpack_require__(177);\n\nvar _storesUIStore2 = _interopRequireDefault(_storesUIStore);\n\nvar _iconsUpload = __webpack_require__(250);\n\nvar _iconsUpload2 = _interopRequireDefault(_iconsUpload);\n\nvar METHODS_TO_BIND = ['onTransferDataRequestError', 'onTransferDataRequestSuccess', 'onTransferHistoryRequestSuccess'];\n\nvar ClientStats = (function (_React$Component) {\n _inherits(ClientStats, _React$Component);\n\n function ClientStats() {\n var _this = this;\n\n _classCallCheck(this, ClientStats);\n\n _get(Object.getPrototypeOf(ClientStats.prototype), 'constructor', this).call(this);\n\n this.state = {\n sidebarWidth: 0,\n transferHistoryRequestSuccess: false,\n transferDataRequestError: false,\n transferDataRequestSuccess: false\n };\n\n METHODS_TO_BIND.forEach(function (method) {\n _this[method] = _this[method].bind(_this);\n });\n }\n\n _createClass(ClientStats, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n _storesUIStore2['default'].registerDependency(['transfer-data', 'transfer-history']);\n this.setState({\n sidebarWidth: _reactDom2['default'].findDOMNode(this).offsetWidth\n });\n _storesTransferDataStore2['default'].listen(_constantsEventTypes2['default'].CLIENT_TRANSFER_DATA_REQUEST_SUCCESS, this.onTransferDataRequestSuccess);\n _storesTransferDataStore2['default'].listen(_constantsEventTypes2['default'].CLIENT_TRANSFER_HISTORY_REQUEST_SUCCESS, this.onTransferHistoryRequestSuccess);\n _storesTransferDataStore2['default'].fetchTransferData();\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n _storesTransferDataStore2['default'].unlisten(_constantsEventTypes2['default'].CLIENT_TRANSFER_DATA_REQUEST_SUCCESS, this.onTransferDataRequestSuccess);\n }\n }, {\n key: 'isLoading',\n value: function isLoading() {\n if (!this.state.transferHistoryRequestSuccess || !this.state.transferDataRequestSuccess) {\n return true;\n }\n\n return false;\n }\n }, {\n key: 'onTransferDataRequestError',\n value: function onTransferDataRequestError() {\n this.setState({\n transferDataRequestError: true,\n transferDataRequestSuccess: false\n });\n }\n }, {\n key: 'onTransferDataRequestSuccess',\n value: function onTransferDataRequestSuccess() {\n this.setState({\n transferDataRequestError: false,\n transferDataRequestSuccess: true\n });\n\n if (!_storesUIStore2['default'].hasSatisfiedDependencies()) {\n _storesUIStore2['default'].satisfyDependency('transfer-data');\n }\n }\n }, {\n key: 'onTransferHistoryRequestSuccess',\n value: function onTransferHistoryRequestSuccess() {\n if (!this.state.transferHistoryRequestSuccess) {\n this.setState({\n transferHistoryRequestSuccess: true\n });\n }\n\n if (!_storesUIStore2['default'].hasSatisfiedDependencies()) {\n _storesUIStore2['default'].satisfyDependency('transfer-history');\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var content = _react2['default'].createElement(_uiLoadingIndicator2['default'], { inverse: true });\n\n if (!this.isLoading()) {\n var throttles = _storesTransferDataStore2['default'].getThrottles();\n var transferRate = _storesTransferDataStore2['default'].getTransferRate();\n var transferRates = _storesTransferDataStore2['default'].getTransferRates();\n var transferTotals = _storesTransferDataStore2['default'].getTransferTotals();\n\n var downloadRate = _utilFormatData2['default'].data(transferRate.download, '/s');\n var downloadTotal = _utilFormatData2['default'].data(transferTotals.download);\n var uploadRate = _utilFormatData2['default'].data(transferRate.upload, '/s');\n var uploadTotal = _utilFormatData2['default'].data(transferTotals.upload);\n\n content = _react2['default'].createElement(\n 'div',\n { key: 'loaded' },\n _react2['default'].createElement(\n 'div',\n { className: 'client-stat client-stat--download' },\n _react2['default'].createElement(\n 'span',\n { className: 'client-stat__icon' },\n _react2['default'].createElement(_iconsDownload2['default'], null)\n ),\n _react2['default'].createElement(\n 'div',\n { className: 'client-stat__data' },\n _react2['default'].createElement(\n 'div',\n { className: 'client-stat__data--primary' },\n downloadRate.value,\n _react2['default'].createElement(\n 'em',\n { className: 'unit' },\n downloadRate.unit\n )\n ),\n _react2['default'].createElement(\n 'div',\n { className: 'client-stat__data--secondary' },\n downloadTotal.value,\n _react2['default'].createElement(\n 'em',\n { className: 'unit' },\n downloadTotal.unit\n ),\n ' Downloaded'\n )\n ),\n _react2['default'].createElement(_uiLineChart2['default'], {\n data: transferRates.download,\n height: 100,\n id: 'graph--download',\n limit: throttles.download,\n slug: 'graph--download',\n width: this.state.sidebarWidth })\n ),\n _react2['default'].createElement(\n 'div',\n { className: 'client-stat client-stat--upload' },\n _react2['default'].createElement(\n 'span',\n { className: 'client-stat__icon' },\n _react2['default'].createElement(_iconsUpload2['default'], null)\n ),\n _react2['default'].createElement(\n 'div',\n { className: 'client-stat__data' },\n _react2['default'].createElement(\n 'div',\n { className: 'client-stat__data--primary' },\n uploadRate.value,\n _react2['default'].createElement(\n 'em',\n { className: 'unit' },\n uploadRate.unit\n )\n ),\n _react2['default'].createElement(\n 'div',\n { className: 'client-stat__data--secondary' },\n uploadTotal.value,\n _react2['default'].createElement(\n 'em',\n { className: 'unit' },\n uploadTotal.unit\n ),\n ' Uploaded'\n )\n ),\n _react2['default'].createElement(_uiLineChart2['default'], {\n data: transferRates.upload,\n height: 100,\n id: 'graph--upload',\n limit: throttles.upload,\n slug: 'graph--upload',\n width: this.state.sidebarWidth })\n )\n );\n }\n\n return _react2['default'].createElement(\n 'div',\n { className: 'client-stats sidebar__item' },\n content\n );\n }\n }]);\n\n return ClientStats;\n})(_react2['default'].Component);\n\nClientStats.defaultProps = {\n historyLength: 1\n};\n\nexports['default'] = ClientStats;\nmodule.exports = exports['default'];//@ sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9jbGllbnQvc291cmNlL3NjcmlwdHMvY29tcG9uZW50cy9zaWRlYmFyL1RyYW5zZmVyRGF0YS5qcz9mZTM1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztBQUVBO0FBQ0E7QUFDQSxDQUFDOztBQUVELGlDQUFpQywyQ0FBMkMsZ0JBQWdCLGtCQUFrQixPQUFPLDJCQUEyQix3REFBd0QsZ0NBQWdDLHVEQUF1RCwyREFBMkQsRUFBRSxFQUFFLHlEQUF5RCxxRUFBcUUsNkRBQTZELG9CQUFvQixHQUFHLEVBQUU7O0FBRWxqQix1Q0FBdUMsbUJBQW1CLDRCQUE0QixpREFBaUQsZ0JBQWdCLGtEQUFrRCw4REFBOEQsMEJBQTBCLDRDQUE0Qyx1QkFBdUIsa0JBQWtCLEVBQUUsT0FBTyxhQUFhLGdCQUFnQixnQkFBZ0IsZUFBZSwyQkFBMkIsb0JBQW9CLEVBQUUsRUFBRSw0QkFBNEIsbUJBQW1CLEVBQUUsT0FBTyx1QkFBdUIsNEJBQTRCLGtCQUFrQixFQUFFLDhCQUE4QixFQUFFLEVBQUU7O0FBRS9vQixzQ0FBc0MsdUNBQXVDLGtCQUFrQjs7QUFFL0YsaURBQWlELDBDQUEwQywwREFBMEQsRUFBRTs7QUFFdkosMENBQTBDLCtEQUErRCxxR0FBcUcsRUFBRSx5RUFBeUUsZUFBZSx5RUFBeUUsRUFBRSxFQUFFLHVIQUF1SDs7QUFFNWU7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSx1RkFBdUYsZ0JBQWdCOztBQUV2RztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxXQUFXLGdCQUFnQjtBQUMzQjtBQUNBO0FBQ0EsYUFBYSxpREFBaUQ7QUFDOUQ7QUFDQTtBQUNBLGVBQWUsaUNBQWlDO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxpQ0FBaUM7QUFDaEQ7QUFDQTtBQUNBLGlCQUFpQiwwQ0FBMEM7QUFDM0Q7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLG9CQUFvQjtBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLDRDQUE0QztBQUM3RDtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsb0JBQW9CO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4Q0FBOEM7QUFDOUM7QUFDQTtBQUNBO0FBQ0EsYUFBYSwrQ0FBK0M7QUFDNUQ7QUFDQTtBQUNBLGVBQWUsaUNBQWlDO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxpQ0FBaUM7QUFDaEQ7QUFDQTtBQUNBLGlCQUFpQiwwQ0FBMEM7QUFDM0Q7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLG9CQUFvQjtBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLDRDQUE0QztBQUM3RDtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsb0JBQW9CO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4Q0FBOEM7QUFDOUM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxTQUFTLDBDQUEwQztBQUNuRDtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSIsImZpbGUiOiIyNDIuanMiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuXG52YXIgX2NyZWF0ZUNsYXNzID0gKGZ1bmN0aW9uICgpIHsgZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmICgndmFsdWUnIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7IH0gfSByZXR1cm4gZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9OyB9KSgpO1xuXG52YXIgX2dldCA9IGZ1bmN0aW9uIGdldChfeCwgX3gyLCBfeDMpIHsgdmFyIF9hZ2FpbiA9IHRydWU7IF9mdW5jdGlvbjogd2hpbGUgKF9hZ2FpbikgeyB2YXIgb2JqZWN0ID0gX3gsIHByb3BlcnR5ID0gX3gyLCByZWNlaXZlciA9IF94MzsgX2FnYWluID0gZmFsc2U7IGlmIChvYmplY3QgPT09IG51bGwpIG9iamVjdCA9IEZ1bmN0aW9uLnByb3RvdHlwZTsgdmFyIGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgcHJvcGVydHkpOyBpZiAoZGVzYyA9PT0gdW5kZWZpbmVkKSB7IHZhciBwYXJlbnQgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Yob2JqZWN0KTsgaWYgKHBhcmVudCA9PT0gbnVsbCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9IGVsc2UgeyBfeCA9IHBhcmVudDsgX3gyID0gcHJvcGVydHk7IF94MyA9IHJlY2VpdmVyOyBfYWdhaW4gPSB0cnVlOyBkZXNjID0gcGFyZW50ID0gdW5kZWZpbmVkOyBjb250aW51ZSBfZnVuY3Rpb247IH0gfSBlbHNlIGlmICgndmFsdWUnIGluIGRlc2MpIHsgcmV0dXJuIGRlc2MudmFsdWU7IH0gZWxzZSB7IHZhciBnZXR0ZXIgPSBkZXNjLmdldDsgaWYgKGdldHRlciA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH0gcmV0dXJuIGdldHRlci5jYWxsKHJlY2VpdmVyKTsgfSB9IH07XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7ICdkZWZhdWx0Jzogb2JqIH07IH1cblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKCdDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24nKTsgfSB9XG5cbmZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09ICdmdW5jdGlvbicgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKCdTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICcgKyB0eXBlb2Ygc3VwZXJDbGFzcyk7IH0gc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7IGNvbnN0cnVjdG9yOiB7IHZhbHVlOiBzdWJDbGFzcywgZW51bWVyYWJsZTogZmFsc2UsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSB9KTsgaWYgKHN1cGVyQ2xhc3MpIE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5zZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFzcykgOiBzdWJDbGFzcy5fX3Byb3RvX18gPSBzdXBlckNsYXNzOyB9XG5cbnZhciBfY2xhc3NuYW1lcyA9IHJlcXVpcmUoJ2NsYXNzbmFtZXMnKTtcblxudmFyIF9jbGFzc25hbWVzMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2NsYXNzbmFtZXMpO1xuXG52YXIgX3JlYWN0ID0gcmVxdWlyZSgncmVhY3QnKTtcblxudmFyIF9yZWFjdDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9yZWFjdCk7XG5cbnZhciBfcmVhY3REb20gPSByZXF1aXJlKCdyZWFjdC1kb20nKTtcblxudmFyIF9yZWFjdERvbTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9yZWFjdERvbSk7XG5cbnZhciBfcmVhY3RBZGRvbnNDc3NUcmFuc2l0aW9uR3JvdXAgPSByZXF1aXJlKCdyZWFjdC1hZGRvbnMtY3NzLXRyYW5zaXRpb24tZ3JvdXAnKTtcblxudmFyIF9yZWFjdEFkZG9uc0Nzc1RyYW5zaXRpb25Hcm91cDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9yZWFjdEFkZG9uc0Nzc1RyYW5zaXRpb25Hcm91cCk7XG5cbnZhciBfaWNvbnNEb3dubG9hZCA9IHJlcXVpcmUoJy4uL2ljb25zL0Rvd25sb2FkJyk7XG5cbnZhciBfaWNvbnNEb3dubG9hZDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9pY29uc0Rvd25sb2FkKTtcblxudmFyIF9jb25zdGFudHNFdmVudFR5cGVzID0gcmVxdWlyZSgnLi4vLi4vY29uc3RhbnRzL0V2ZW50VHlwZXMnKTtcblxudmFyIF9jb25zdGFudHNFdmVudFR5cGVzMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2NvbnN0YW50c0V2ZW50VHlwZXMpO1xuXG52YXIgX3V0aWxGb3JtYXREYXRhID0gcmVxdWlyZSgnLi4vLi4vdXRpbC9mb3JtYXREYXRhJyk7XG5cbnZhciBfdXRpbEZvcm1hdERhdGEyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfdXRpbEZvcm1hdERhdGEpO1xuXG52YXIgX3VpTGluZUNoYXJ0ID0gcmVxdWlyZSgnLi4vdWkvTGluZUNoYXJ0Jyk7XG5cbnZhciBfdWlMaW5lQ2hhcnQyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfdWlMaW5lQ2hhcnQpO1xuXG52YXIgX3VpTG9hZGluZ0luZGljYXRvciA9IHJlcXVpcmUoJy4uL3VpL0xvYWRpbmdJbmRpY2F0b3InKTtcblxudmFyIF91aUxvYWRpbmdJbmRpY2F0b3IyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfdWlMb2FkaW5nSW5kaWNhdG9yKTtcblxudmFyIF9zdG9yZXNUcmFuc2ZlckRhdGFTdG9yZSA9IHJlcXVpcmUoJy4uLy4uL3N0b3Jlcy9UcmFuc2ZlckRhdGFTdG9yZScpO1xuXG52YXIgX3N0b3Jlc1RyYW5zZmVyRGF0YVN0b3JlMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3N0b3Jlc1RyYW5zZmVyRGF0YVN0b3JlKTtcblxudmFyIF9zdG9yZXNVSVN0b3JlID0gcmVxdWlyZSgnLi4vLi4vc3RvcmVzL1VJU3RvcmUnKTtcblxudmFyIF9zdG9yZXNVSVN0b3JlMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3N0b3Jlc1VJU3RvcmUpO1xuXG52YXIgX2ljb25zVXBsb2FkID0gcmVxdWlyZSgnLi4vaWNvbnMvVXBsb2FkJyk7XG5cbnZhciBfaWNvbnNVcGxvYWQyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaWNvbnNVcGxvYWQpO1xuXG52YXIgTUVUSE9EU19UT19CSU5EID0gWydvblRyYW5zZmVyRGF0YVJlcXVlc3RFcnJvcicsICdvblRyYW5zZmVyRGF0YVJlcXVlc3RTdWNjZXNzJywgJ29uVHJhbnNmZXJIaXN0b3J5UmVxdWVzdFN1Y2Nlc3MnXTtcblxudmFyIENsaWVudFN0YXRzID0gKGZ1bmN0aW9uIChfUmVhY3QkQ29tcG9uZW50KSB7XG4gIF9pbmhlcml0cyhDbGllbnRTdGF0cywgX1JlYWN0JENvbXBvbmVudCk7XG5cbiAgZnVuY3Rpb24gQ2xpZW50U3RhdHMoKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBDbGllbnRTdGF0cyk7XG5cbiAgICBfZ2V0KE9iamVjdC5nZXRQcm90b3R5cGVPZihDbGllbnRTdGF0cy5wcm90b3R5cGUpLCAnY29uc3RydWN0b3InLCB0aGlzKS5jYWxsKHRoaXMpO1xuXG4gICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgIHNpZGViYXJXaWR0aDogMCxcbiAgICAgIHRyYW5zZmVySGlzdG9yeVJlcXVlc3RTdWNjZXNzOiBmYWxzZSxcbiAgICAgIHRyYW5zZmVyRGF0YVJlcXVlc3RFcnJvcjogZmFsc2UsXG4gICAgICB0cmFuc2ZlckRhdGFSZXF1ZXN0U3VjY2VzczogZmFsc2VcbiAgICB9O1xuXG4gICAgTUVUSE9EU19UT19CSU5ELmZvckVhY2goZnVuY3Rpb24gKG1ldGhvZCkge1xuICAgICAgX3RoaXNbbWV0aG9kXSA9IF90aGlzW21ldGhvZF0uYmluZChfdGhpcyk7XG4gICAgfSk7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoQ2xpZW50U3RhdHMsIFt7XG4gICAga2V5OiAnY29tcG9uZW50RGlkTW91bnQnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICAgIF9zdG9yZXNVSVN0b3JlMlsnZGVmYXVsdCddLnJlZ2lzdGVyRGVwZW5kZW5jeShbJ3RyYW5zZmVyLWRhdGEnLCAndHJhbnNmZXItaGlzdG9yeSddKTtcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICBzaWRlYmFyV2lkdGg6IF9yZWFjdERvbTJbJ2RlZmF1bHQnXS5maW5kRE9NTm9kZSh0aGlzKS5vZmZzZXRXaWR0aFxuICAgICAgfSk7XG4gICAgICBfc3RvcmVzVHJhbnNmZXJEYXRhU3RvcmUyWydkZWZhdWx0J10ubGlzdGVuKF9jb25zdGFudHNFdmVudFR5cGVzMlsnZGVmYXVsdCddLkNMSUVOVF9UUkFOU0ZFUl9EQVRBX1JFUVVFU1RfU1VDQ0VTUywgdGhpcy5vblRyYW5zZmVyRGF0YVJlcXVlc3RTdWNjZXNzKTtcbiAgICAgIF9zdG9yZXNUcmFuc2ZlckRhdGFTdG9yZTJbJ2RlZmF1bHQnXS5saXN0ZW4oX2NvbnN0YW50c0V2ZW50VHlwZXMyWydkZWZhdWx0J10uQ0xJRU5UX1RSQU5TRkVSX0hJU1RPUllfUkVRVUVTVF9TVUNDRVNTLCB0aGlzLm9uVHJhbnNmZXJIaXN0b3J5UmVxdWVzdFN1Y2Nlc3MpO1xuICAgICAgX3N0b3Jlc1RyYW5zZmVyRGF0YVN0b3JlMlsnZGVmYXVsdCddLmZldGNoVHJhbnNmZXJEYXRhKCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnY29tcG9uZW50V2lsbFVubW91bnQnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICAgIF9zdG9yZXNUcmFuc2ZlckRhdGFTdG9yZTJbJ2RlZmF1bHQnXS51bmxpc3RlbihfY29uc3RhbnRzRXZlbnRUeXBlczJbJ2RlZmF1bHQnXS5DTElFTlRfVFJBTlNGRVJfREFUQV9SRVFVRVNUX1NVQ0NFU1MsIHRoaXMub25UcmFuc2ZlckRhdGFSZXF1ZXN0U3VjY2Vzcyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnaXNMb2FkaW5nJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gaXNMb2FkaW5nKCkge1xuICAgICAgaWYgKCF0aGlzLnN0YXRlLnRyYW5zZmVySGlzdG9yeVJlcXVlc3RTdWNjZXNzIHx8ICF0aGlzLnN0YXRlLnRyYW5zZmVyRGF0YVJlcXVlc3RTdWNjZXNzKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnb25UcmFuc2ZlckRhdGFSZXF1ZXN0RXJyb3InLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBvblRyYW5zZmVyRGF0YVJlcXVlc3RFcnJvcigpIHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICB0cmFuc2ZlckRhdGFSZXF1ZXN0RXJyb3I6IHRydWUsXG4gICAgICAgIHRyYW5zZmVyRGF0YVJlcXVlc3RTdWNjZXNzOiBmYWxzZVxuICAgICAgfSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnb25UcmFuc2ZlckRhdGFSZXF1ZXN0U3VjY2VzcycsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG9uVHJhbnNmZXJEYXRhUmVxdWVzdFN1Y2Nlc3MoKSB7XG4gICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgdHJhbnNmZXJEYXRhUmVxdWVzdEVycm9yOiBmYWxzZSxcbiAgICAgICAgdHJhbnNmZXJEYXRhUmVxdWVzdFN1Y2Nlc3M6IHRydWVcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoIV9zdG9yZXNVSVN0b3JlMlsnZGVmYXVsdCddLmhhc1NhdGlzZmllZERlcGVuZGVuY2llcygpKSB7XG4gICAgICAgIF9zdG9yZXNVSVN0b3JlMlsnZGVmYXVsdCddLnNhdGlzZnlEZXBlbmRlbmN5KCd0cmFuc2Zlci1kYXRhJyk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnb25UcmFuc2Zlckhpc3RvcnlSZXF1ZXN0U3VjY2VzcycsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG9uVHJhbnNmZXJIaXN0b3J5UmVxdWVzdFN1Y2Nlc3MoKSB7XG4gICAgICBpZiAoIXRoaXMuc3RhdGUudHJhbnNmZXJIaXN0b3J5UmVxdWVzdFN1Y2Nlc3MpIHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgdHJhbnNmZXJIaXN0b3J5UmVxdWVzdFN1Y2Nlc3M6IHRydWVcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGlmICghX3N0b3Jlc1VJU3RvcmUyWydkZWZhdWx0J10uaGFzU2F0aXNmaWVkRGVwZW5kZW5jaWVzKCkpIHtcbiAgICAgICAgX3N0b3Jlc1VJU3RvcmUyWydkZWZhdWx0J10uc2F0aXNmeURlcGVuZGVuY3koJ3RyYW5zZmVyLWhpc3RvcnknKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdyZW5kZXInLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICB2YXIgY29udGVudCA9IF9yZWFjdDJbJ2RlZmF1bHQnXS5jcmVhdGVFbGVtZW50KF91aUxvYWRpbmdJbmRpY2F0b3IyWydkZWZhdWx0J10sIHsgaW52ZXJzZTogdHJ1ZSB9KTtcblxuICAgICAgaWYgKCF0aGlzLmlzTG9hZGluZygpKSB7XG4gICAgICAgIHZhciB0aHJvdHRsZXMgPSBfc3RvcmVzVHJhbnNmZXJEYXRhU3RvcmUyWydkZWZhdWx0J10uZ2V0VGhyb3R0bGVzKCk7XG4gICAgICAgIHZhciB0cmFuc2ZlclJhdGUgPSBfc3RvcmVzVHJhbnNmZXJEYXRhU3RvcmUyWydkZWZhdWx0J10uZ2V0VHJhbnNmZXJSYXRlKCk7XG4gICAgICAgIHZhciB0cmFuc2ZlclJhdGVzID0gX3N0b3Jlc1RyYW5zZmVyRGF0YVN0b3JlMlsnZGVmYXVsdCddLmdldFRyYW5zZmVyUmF0ZXMoKTtcbiAgICAgICAgdmFyIHRyYW5zZmVyVG90YWxzID0gX3N0b3Jlc1RyYW5zZmVyRGF0YVN0b3JlMlsnZGVmYXVsdCddLmdldFRyYW5zZmVyVG90YWxzKCk7XG5cbiAgICAgICAgdmFyIGRvd25sb2FkUmF0ZSA9IF91dGlsRm9ybWF0RGF0YTJbJ2RlZmF1bHQnXS5kYXRhKHRyYW5zZmVyUmF0ZS5kb3dubG9hZCwgJy9zJyk7XG4gICAgICAgIHZhciBkb3dubG9hZFRvdGFsID0gX3V0aWxGb3JtYXREYXRhMlsnZGVmYXVsdCddLmRhdGEodHJhbnNmZXJUb3RhbHMuZG93bmxvYWQpO1xuICAgICAgICB2YXIgdXBsb2FkUmF0ZSA9IF91dGlsRm9ybWF0RGF0YTJbJ2RlZmF1bHQnXS5kYXRhKHRyYW5zZmVyUmF0ZS51cGxvYWQsICcvcycpO1xuICAgICAgICB2YXIgdXBsb2FkVG90YWwgPSBfdXRpbEZvcm1hdERhdGEyWydkZWZhdWx0J10uZGF0YSh0cmFuc2ZlclRvdGFscy51cGxvYWQpO1xuXG4gICAgICAgIGNvbnRlbnQgPSBfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAnZGl2JyxcbiAgICAgICAgICB7IGtleTogJ2xvYWRlZCcgfSxcbiAgICAgICAgICBfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgICdkaXYnLFxuICAgICAgICAgICAgeyBjbGFzc05hbWU6ICdjbGllbnQtc3RhdCBjbGllbnQtc3RhdC0tZG93bmxvYWQnIH0sXG4gICAgICAgICAgICBfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgICAgJ3NwYW4nLFxuICAgICAgICAgICAgICB7IGNsYXNzTmFtZTogJ2NsaWVudC1zdGF0X19pY29uJyB9LFxuICAgICAgICAgICAgICBfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudChfaWNvbnNEb3dubG9hZDJbJ2RlZmF1bHQnXSwgbnVsbClcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgICAgJ2RpdicsXG4gICAgICAgICAgICAgIHsgY2xhc3NOYW1lOiAnY2xpZW50LXN0YXRfX2RhdGEnIH0sXG4gICAgICAgICAgICAgIF9yZWFjdDJbJ2RlZmF1bHQnXS5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgICAgICdkaXYnLFxuICAgICAgICAgICAgICAgIHsgY2xhc3NOYW1lOiAnY2xpZW50LXN0YXRfX2RhdGEtLXByaW1hcnknIH0sXG4gICAgICAgICAgICAgICAgZG93bmxvYWRSYXRlLnZhbHVlLFxuICAgICAgICAgICAgICAgIF9yZWFjdDJbJ2RlZmF1bHQnXS5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgICAgICAgJ2VtJyxcbiAgICAgICAgICAgICAgICAgIHsgY2xhc3NOYW1lOiAndW5pdCcgfSxcbiAgICAgICAgICAgICAgICAgIGRvd25sb2FkUmF0ZS51bml0XG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgICAgICAnZGl2JyxcbiAgICAgICAgICAgICAgICB7IGNsYXNzTmFtZTogJ2NsaWVudC1zdGF0X19kYXRhLS1zZWNvbmRhcnknIH0sXG4gICAgICAgICAgICAgICAgZG93bmxvYWRUb3RhbC52YWx1ZSxcbiAgICAgICAgICAgICAgICBfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgICAgICAgICdlbScsXG4gICAgICAgICAgICAgICAgICB7IGNsYXNzTmFtZTogJ3VuaXQnIH0sXG4gICAgICAgICAgICAgICAgICBkb3dubG9hZFRvdGFsLnVuaXRcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICcgRG93bmxvYWRlZCdcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIF9yZWFjdDJbJ2RlZmF1bHQnXS5jcmVhdGVFbGVtZW50KF91aUxpbmVDaGFydDJbJ2RlZmF1bHQnXSwge1xuICAgICAgICAgICAgICBkYXRhOiB0cmFuc2ZlclJhdGVzLmRvd25sb2FkLFxuICAgICAgICAgICAgICBoZWlnaHQ6IDEwMCxcbiAgICAgICAgICAgICAgaWQ6ICdncmFwaC0tZG93bmxvYWQnLFxuICAgICAgICAgICAgICBsaW1pdDogdGhyb3R0bGVzLmRvd25sb2FkLFxuICAgICAgICAgICAgICBzbHVnOiAnZ3JhcGgtLWRvd25sb2FkJyxcbiAgICAgICAgICAgICAgd2lkdGg6IHRoaXMuc3RhdGUuc2lkZWJhcldpZHRoIH0pXG4gICAgICAgICAgKSxcbiAgICAgICAgICBfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgICdkaXYnLFxuICAgICAgICAgICAgeyBjbGFzc05hbWU6ICdjbGllbnQtc3RhdCBjbGllbnQtc3RhdC0tdXBsb2FkJyB9LFxuICAgICAgICAgICAgX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgICAgICdzcGFuJyxcbiAgICAgICAgICAgICAgeyBjbGFzc05hbWU6ICdjbGllbnQtc3RhdF9faWNvbicgfSxcbiAgICAgICAgICAgICAgX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoX2ljb25zVXBsb2FkMlsnZGVmYXVsdCddLCBudWxsKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIF9yZWFjdDJbJ2RlZmF1bHQnXS5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgICAnZGl2JyxcbiAgICAgICAgICAgICAgeyBjbGFzc05hbWU6ICdjbGllbnQtc3RhdF9fZGF0YScgfSxcbiAgICAgICAgICAgICAgX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgICAgICAgJ2RpdicsXG4gICAgICAgICAgICAgICAgeyBjbGFzc05hbWU6ICdjbGllbnQtc3RhdF9fZGF0YS0tcHJpbWFyeScgfSxcbiAgICAgICAgICAgICAgICB1cGxvYWRSYXRlLnZhbHVlLFxuICAgICAgICAgICAgICAgIF9yZWFjdDJbJ2RlZmF1bHQnXS5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgICAgICAgJ2VtJyxcbiAgICAgICAgICAgICAgICAgIHsgY2xhc3NOYW1lOiAndW5pdCcgfSxcbiAgICAgICAgICAgICAgICAgIHVwbG9hZFJhdGUudW5pdFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgICAgICAgJ2RpdicsXG4gICAgICAgICAgICAgICAgeyBjbGFzc05hbWU6ICdjbGllbnQtc3RhdF9fZGF0YS0tc2Vjb25kYXJ5JyB9LFxuICAgICAgICAgICAgICAgIHVwbG9hZFRvdGFsLnZhbHVlLFxuICAgICAgICAgICAgICAgIF9yZWFjdDJbJ2RlZmF1bHQnXS5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgICAgICAgJ2VtJyxcbiAgICAgICAgICAgICAgICAgIHsgY2xhc3NOYW1lOiAndW5pdCcgfSxcbiAgICAgICAgICAgICAgICAgIHVwbG9hZFRvdGFsLnVuaXRcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICcgVXBsb2FkZWQnXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudChfdWlMaW5lQ2hhcnQyWydkZWZhdWx0J10sIHtcbiAgICAgICAgICAgICAgZGF0YTogdHJhbnNmZXJSYXRlcy51cGxvYWQsXG4gICAgICAgICAgICAgIGhlaWdodDogMTAwLFxuICAgICAgICAgICAgICBpZDogJ2dyYXBoLS11cGxvYWQnLFxuICAgICAgICAgICAgICBsaW1pdDogdGhyb3R0bGVzLnVwbG9hZCxcbiAgICAgICAgICAgICAgc2x1ZzogJ2dyYXBoLS11cGxvYWQnLFxuICAgICAgICAgICAgICB3aWR0aDogdGhpcy5zdGF0ZS5zaWRlYmFyV2lkdGggfSlcbiAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudChcbiAgICAgICAgJ2RpdicsXG4gICAgICAgIHsgY2xhc3NOYW1lOiAnY2xpZW50LXN0YXRzIHNpZGViYXJfX2l0ZW0nIH0sXG4gICAgICAgIGNvbnRlbnRcbiAgICAgICk7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIENsaWVudFN0YXRzO1xufSkoX3JlYWN0MlsnZGVmYXVsdCddLkNvbXBvbmVudCk7XG5cbkNsaWVudFN0YXRzLmRlZmF1bHRQcm9wcyA9IHtcbiAgaGlzdG9yeUxlbmd0aDogMVxufTtcblxuZXhwb3J0c1snZGVmYXVsdCddID0gQ2xpZW50U3RhdHM7XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vY2xpZW50L3NvdXJjZS9zY3JpcHRzL2NvbXBvbmVudHMvc2lkZWJhci9UcmFuc2ZlckRhdGEuanNcbiAqKiBtb2R1bGUgaWQgPSAyNDJcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyJdLCJzb3VyY2VSb290IjoiIn0="); /***/ }, /* 243 */ @@ -1514,7 +1514,7 @@ /* 245 */ /***/ function(module, exports, __webpack_require__) { - eval("'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\n\nvar _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _d3 = __webpack_require__(246);\n\nvar _d32 = _interopRequireDefault(_d3);\n\nvar _react = __webpack_require__(1);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar LineChart = (function (_React$Component) {\n _inherits(LineChart, _React$Component);\n\n function LineChart() {\n _classCallCheck(this, LineChart);\n\n _get(Object.getPrototypeOf(LineChart.prototype), 'constructor', this).apply(this, arguments);\n }\n\n _createClass(LineChart, [{\n key: 'componentDidUpdate',\n value: function componentDidUpdate() {\n var graph = _d32['default'].select('#' + this.props.id);\n var transferData = this.props.data;\n var transferLimit = this.props.limit;\n var margin = {\n bottom: 10,\n top: 10\n };\n var width = this.props.width;\n var height = this.props.height;\n\n var xRange = _d32['default'].scale.linear().range([0, width]).domain([_d32['default'].min(transferData, function (dataPoint, index) {\n return index;\n }), _d32['default'].max(transferData, function (dataPoint, index) {\n return index;\n })]);\n\n var yRange = _d32['default'].scale.linear().range([height - margin.top, margin.bottom]).domain([0, _d32['default'].max(transferData, function (dataPoint, index) {\n if (dataPoint >= transferLimit[index]) {\n return dataPoint;\n } else {\n return transferLimit[index];\n }\n })]);\n\n var lineFunc = function lineFunc(interpolation) {\n return _d32['default'].svg.line().x(function (dataPoint, index) {\n return xRange(index);\n }).y(function (dataPoint) {\n return yRange(dataPoint);\n }).interpolate(interpolation);\n };\n\n var areaFunc = _d32['default'].svg.area().x(function (dataPoint, index) {\n return xRange(index);\n }).y0(height).y1(function (dataPoint) {\n return yRange(dataPoint);\n }).interpolate('basis');\n\n var transferDataLinePoints = lineFunc('basis')(transferData);\n var transferLimitLinePoints = lineFunc('step-after')(transferLimit);\n var transferDataAreaPoints = areaFunc(transferData);\n\n graph.select('g').remove();\n\n graph.append('g').append('svg:path').attr('class', 'graph__area').attr('d', transferDataAreaPoints);\n\n graph.select('g').append('svg:path').attr('class', 'graph__line graph__line--limit').attr('d', transferLimitLinePoints);\n\n graph.select('g').append('svg:path').attr('class', 'graph__line graph__line--rate').attr('d', transferDataLinePoints);\n }\n }, {\n key: 'render',\n value: function render() {\n return _react2['default'].createElement(\n 'svg',\n { className: 'graph', id: this.props.id },\n _react2['default'].createElement(\n 'defs',\n null,\n _react2['default'].createElement(\n 'linearGradient',\n { id: this.props.slug + '--gradient', x1: '0%', y1: '0%',\n x2: '0%', y2: '100%' },\n _react2['default'].createElement('stop', { className: this.props.slug + '--gradient--top', offset: '0%' }),\n _react2['default'].createElement('stop', { className: this.props.slug + '--gradient--bottom', offset: '100%' })\n )\n )\n );\n }\n }]);\n\n return LineChart;\n})(_react2['default'].Component);\n\nexports['default'] = LineChart;\nmodule.exports = exports['default'];//@ sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9jbGllbnQvc291cmNlL3NjcmlwdHMvY29tcG9uZW50cy91aS9MaW5lQ2hhcnQuanM/ZTMyMSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7QUFFQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRCxpQ0FBaUMsMkNBQTJDLGdCQUFnQixrQkFBa0IsT0FBTywyQkFBMkIsd0RBQXdELGdDQUFnQyx1REFBdUQsMkRBQTJELEVBQUUsRUFBRSx5REFBeUQscUVBQXFFLDZEQUE2RCxvQkFBb0IsR0FBRyxFQUFFOztBQUVsakIsdUNBQXVDLG1CQUFtQiw0QkFBNEIsaURBQWlELGdCQUFnQixrREFBa0QsOERBQThELDBCQUEwQiw0Q0FBNEMsdUJBQXVCLGtCQUFrQixFQUFFLE9BQU8sYUFBYSxnQkFBZ0IsZ0JBQWdCLGVBQWUsMkJBQTJCLG9CQUFvQixFQUFFLEVBQUUsNEJBQTRCLG1CQUFtQixFQUFFLE9BQU8sdUJBQXVCLDRCQUE0QixrQkFBa0IsRUFBRSw4QkFBOEIsRUFBRSxFQUFFOztBQUUvb0Isc0NBQXNDLHVDQUF1QyxrQkFBa0I7O0FBRS9GLGlEQUFpRCwwQ0FBMEMsMERBQTBELEVBQUU7O0FBRXZKLDBDQUEwQywrREFBK0QscUdBQXFHLEVBQUUseUVBQXlFLGVBQWUseUVBQXlFLEVBQUUsRUFBRSx1SEFBdUg7O0FBRTVlOztBQUVBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLE9BQU87O0FBRVA7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsU0FBUztBQUNUOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxPQUFPOztBQUVQO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyx3Q0FBd0M7QUFDakQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYixvQ0FBb0M7QUFDcEMsc0RBQXNELCtEQUErRDtBQUNySCxzREFBc0Qsb0VBQW9FO0FBQzFIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUM7O0FBRUQ7QUFDQSIsImZpbGUiOiIyNDUuanMiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuXG52YXIgX2NyZWF0ZUNsYXNzID0gKGZ1bmN0aW9uICgpIHsgZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmICgndmFsdWUnIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7IH0gfSByZXR1cm4gZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9OyB9KSgpO1xuXG52YXIgX2dldCA9IGZ1bmN0aW9uIGdldChfeCwgX3gyLCBfeDMpIHsgdmFyIF9hZ2FpbiA9IHRydWU7IF9mdW5jdGlvbjogd2hpbGUgKF9hZ2FpbikgeyB2YXIgb2JqZWN0ID0gX3gsIHByb3BlcnR5ID0gX3gyLCByZWNlaXZlciA9IF94MzsgX2FnYWluID0gZmFsc2U7IGlmIChvYmplY3QgPT09IG51bGwpIG9iamVjdCA9IEZ1bmN0aW9uLnByb3RvdHlwZTsgdmFyIGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgcHJvcGVydHkpOyBpZiAoZGVzYyA9PT0gdW5kZWZpbmVkKSB7IHZhciBwYXJlbnQgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Yob2JqZWN0KTsgaWYgKHBhcmVudCA9PT0gbnVsbCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9IGVsc2UgeyBfeCA9IHBhcmVudDsgX3gyID0gcHJvcGVydHk7IF94MyA9IHJlY2VpdmVyOyBfYWdhaW4gPSB0cnVlOyBkZXNjID0gcGFyZW50ID0gdW5kZWZpbmVkOyBjb250aW51ZSBfZnVuY3Rpb247IH0gfSBlbHNlIGlmICgndmFsdWUnIGluIGRlc2MpIHsgcmV0dXJuIGRlc2MudmFsdWU7IH0gZWxzZSB7IHZhciBnZXR0ZXIgPSBkZXNjLmdldDsgaWYgKGdldHRlciA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH0gcmV0dXJuIGdldHRlci5jYWxsKHJlY2VpdmVyKTsgfSB9IH07XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7ICdkZWZhdWx0Jzogb2JqIH07IH1cblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKCdDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24nKTsgfSB9XG5cbmZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09ICdmdW5jdGlvbicgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKCdTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICcgKyB0eXBlb2Ygc3VwZXJDbGFzcyk7IH0gc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7IGNvbnN0cnVjdG9yOiB7IHZhbHVlOiBzdWJDbGFzcywgZW51bWVyYWJsZTogZmFsc2UsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSB9KTsgaWYgKHN1cGVyQ2xhc3MpIE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5zZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFzcykgOiBzdWJDbGFzcy5fX3Byb3RvX18gPSBzdXBlckNsYXNzOyB9XG5cbnZhciBfZDMgPSByZXF1aXJlKCdkMycpO1xuXG52YXIgX2QzMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2QzKTtcblxudmFyIF9yZWFjdCA9IHJlcXVpcmUoJ3JlYWN0Jyk7XG5cbnZhciBfcmVhY3QyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfcmVhY3QpO1xuXG52YXIgTGluZUNoYXJ0ID0gKGZ1bmN0aW9uIChfUmVhY3QkQ29tcG9uZW50KSB7XG4gIF9pbmhlcml0cyhMaW5lQ2hhcnQsIF9SZWFjdCRDb21wb25lbnQpO1xuXG4gIGZ1bmN0aW9uIExpbmVDaGFydCgpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgTGluZUNoYXJ0KTtcblxuICAgIF9nZXQoT2JqZWN0LmdldFByb3RvdHlwZU9mKExpbmVDaGFydC5wcm90b3R5cGUpLCAnY29uc3RydWN0b3InLCB0aGlzKS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKExpbmVDaGFydCwgW3tcbiAgICBrZXk6ICdjb21wb25lbnREaWRVcGRhdGUnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb21wb25lbnREaWRVcGRhdGUoKSB7XG4gICAgICB2YXIgZ3JhcGggPSBfZDMyWydkZWZhdWx0J10uc2VsZWN0KCcjJyArIHRoaXMucHJvcHMuaWQpO1xuICAgICAgdmFyIHRyYW5zZmVyRGF0YSA9IHRoaXMucHJvcHMuZGF0YTtcbiAgICAgIHZhciB0cmFuc2ZlckxpbWl0ID0gdGhpcy5wcm9wcy5saW1pdDtcbiAgICAgIHZhciBtYXJnaW4gPSB7XG4gICAgICAgIGJvdHRvbTogMTAsXG4gICAgICAgIHRvcDogMTBcbiAgICAgIH07XG4gICAgICB2YXIgd2lkdGggPSB0aGlzLnByb3BzLndpZHRoO1xuICAgICAgdmFyIGhlaWdodCA9IHRoaXMucHJvcHMuaGVpZ2h0O1xuXG4gICAgICB2YXIgeFJhbmdlID0gX2QzMlsnZGVmYXVsdCddLnNjYWxlLmxpbmVhcigpLnJhbmdlKFswLCB3aWR0aF0pLmRvbWFpbihbX2QzMlsnZGVmYXVsdCddLm1pbih0cmFuc2ZlckRhdGEsIGZ1bmN0aW9uIChkYXRhUG9pbnQsIGluZGV4KSB7XG4gICAgICAgIHJldHVybiBpbmRleDtcbiAgICAgIH0pLCBfZDMyWydkZWZhdWx0J10ubWF4KHRyYW5zZmVyRGF0YSwgZnVuY3Rpb24gKGRhdGFQb2ludCwgaW5kZXgpIHtcbiAgICAgICAgcmV0dXJuIGluZGV4O1xuICAgICAgfSldKTtcblxuICAgICAgdmFyIHlSYW5nZSA9IF9kMzJbJ2RlZmF1bHQnXS5zY2FsZS5saW5lYXIoKS5yYW5nZShbaGVpZ2h0IC0gbWFyZ2luLnRvcCwgbWFyZ2luLmJvdHRvbV0pLmRvbWFpbihbMCwgX2QzMlsnZGVmYXVsdCddLm1heCh0cmFuc2ZlckRhdGEsIGZ1bmN0aW9uIChkYXRhUG9pbnQsIGluZGV4KSB7XG4gICAgICAgIGlmIChkYXRhUG9pbnQgPj0gdHJhbnNmZXJMaW1pdFtpbmRleF0pIHtcbiAgICAgICAgICByZXR1cm4gZGF0YVBvaW50O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiB0cmFuc2ZlckxpbWl0W2luZGV4XTtcbiAgICAgICAgfVxuICAgICAgfSldKTtcblxuICAgICAgdmFyIGxpbmVGdW5jID0gZnVuY3Rpb24gbGluZUZ1bmMoaW50ZXJwb2xhdGlvbikge1xuICAgICAgICByZXR1cm4gX2QzMlsnZGVmYXVsdCddLnN2Zy5saW5lKCkueChmdW5jdGlvbiAoZGF0YVBvaW50LCBpbmRleCkge1xuICAgICAgICAgIHJldHVybiB4UmFuZ2UoaW5kZXgpO1xuICAgICAgICB9KS55KGZ1bmN0aW9uIChkYXRhUG9pbnQpIHtcbiAgICAgICAgICByZXR1cm4geVJhbmdlKGRhdGFQb2ludCk7XG4gICAgICAgIH0pLmludGVycG9sYXRlKGludGVycG9sYXRpb24pO1xuICAgICAgfTtcblxuICAgICAgdmFyIGFyZWFGdW5jID0gX2QzMlsnZGVmYXVsdCddLnN2Zy5hcmVhKCkueChmdW5jdGlvbiAoZGF0YVBvaW50LCBpbmRleCkge1xuICAgICAgICByZXR1cm4geFJhbmdlKGluZGV4KTtcbiAgICAgIH0pLnkwKGhlaWdodCkueTEoZnVuY3Rpb24gKGRhdGFQb2ludCkge1xuICAgICAgICByZXR1cm4geVJhbmdlKGRhdGFQb2ludCk7XG4gICAgICB9KS5pbnRlcnBvbGF0ZSgnYmFzaXMnKTtcblxuICAgICAgdmFyIHRyYW5zZmVyRGF0YUxpbmVQb2ludHMgPSBsaW5lRnVuYygnYmFzaXMnKSh0cmFuc2ZlckRhdGEpO1xuICAgICAgdmFyIHRyYW5zZmVyTGltaXRMaW5lUG9pbnRzID0gbGluZUZ1bmMoJ3N0ZXAtYWZ0ZXInKSh0cmFuc2ZlckxpbWl0KTtcbiAgICAgIHZhciB0cmFuc2ZlckRhdGFBcmVhUG9pbnRzID0gYXJlYUZ1bmModHJhbnNmZXJEYXRhKTtcblxuICAgICAgZ3JhcGguc2VsZWN0KCdnJykucmVtb3ZlKCk7XG5cbiAgICAgIGdyYXBoLmFwcGVuZCgnZycpLmFwcGVuZCgnc3ZnOnBhdGgnKS5hdHRyKCdjbGFzcycsICdncmFwaF9fYXJlYScpLmF0dHIoJ2QnLCB0cmFuc2ZlckRhdGFBcmVhUG9pbnRzKTtcblxuICAgICAgZ3JhcGguc2VsZWN0KCdnJykuYXBwZW5kKCdzdmc6cGF0aCcpLmF0dHIoJ2NsYXNzJywgJ2dyYXBoX19saW5lIGdyYXBoX19saW5lLS1saW1pdCcpLmF0dHIoJ2QnLCB0cmFuc2ZlckxpbWl0TGluZVBvaW50cyk7XG5cbiAgICAgIGdyYXBoLnNlbGVjdCgnZycpLmFwcGVuZCgnc3ZnOnBhdGgnKS5hdHRyKCdjbGFzcycsICdncmFwaF9fbGluZSBncmFwaF9fbGluZS0tcmF0ZScpLmF0dHIoJ2QnLCB0cmFuc2ZlckRhdGFMaW5lUG9pbnRzKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdyZW5kZXInLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICByZXR1cm4gX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICdzdmcnLFxuICAgICAgICB7IGNsYXNzTmFtZTogJ2dyYXBoJywgaWQ6IHRoaXMucHJvcHMuaWQgfSxcbiAgICAgICAgX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgJ2RlZnMnLFxuICAgICAgICAgIG51bGwsXG4gICAgICAgICAgX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgICAnbGluZWFyR3JhZGllbnQnLFxuICAgICAgICAgICAgeyBpZDogdGhpcy5wcm9wcy5zbHVnICsgJy0tZ3JhZGllbnQnLCB4MTogJzAlJywgeTE6ICcwJScsXG4gICAgICAgICAgICAgIHgyOiAnMCUnLCB5MjogJzEwMCUnIH0sXG4gICAgICAgICAgICBfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudCgnc3RvcCcsIHsgY2xhc3NOYW1lOiB0aGlzLnByb3BzLnNsdWcgKyAnLS1ncmFkaWVudC0tdG9wJywgb2Zmc2V0OiAnMCUnIH0pLFxuICAgICAgICAgICAgX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoJ3N0b3AnLCB7IGNsYXNzTmFtZTogdGhpcy5wcm9wcy5zbHVnICsgJy0tZ3JhZGllbnQtLWJvdHRvbScsIG9mZnNldDogJzEwMCUnIH0pXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICApO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBMaW5lQ2hhcnQ7XG59KShfcmVhY3QyWydkZWZhdWx0J10uQ29tcG9uZW50KTtcblxuZXhwb3J0c1snZGVmYXVsdCddID0gTGluZUNoYXJ0O1xubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL2NsaWVudC9zb3VyY2Uvc2NyaXB0cy9jb21wb25lbnRzL3VpL0xpbmVDaGFydC5qc1xuICoqIG1vZHVsZSBpZCA9IDI0NVxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIl0sInNvdXJjZVJvb3QiOiIifQ=="); + eval("'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\n\nvar _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _d3 = __webpack_require__(246);\n\nvar _d32 = _interopRequireDefault(_d3);\n\nvar _react = __webpack_require__(1);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar METHODS_TO_BIND = ['renderGraphData'];\n\nvar LineChart = (function (_React$Component) {\n _inherits(LineChart, _React$Component);\n\n function LineChart() {\n var _this = this;\n\n _classCallCheck(this, LineChart);\n\n _get(Object.getPrototypeOf(LineChart.prototype), 'constructor', this).call(this);\n\n METHODS_TO_BIND.forEach(function (method) {\n _this[method] = _this[method].bind(_this);\n });\n }\n\n _createClass(LineChart, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n this.renderGraphData();\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate() {\n this.renderGraphData();\n }\n }, {\n key: 'renderGraphData',\n value: function renderGraphData() {\n // console.log('')\n var graph = _d32['default'].select('#' + this.props.id);\n var transferData = this.props.data;\n var transferLimit = this.props.limit;\n var margin = {\n bottom: 10,\n top: 10\n };\n var width = this.props.width;\n var height = this.props.height;\n\n var xRange = _d32['default'].scale.linear().range([0, width]).domain([_d32['default'].min(transferData, function (dataPoint, index) {\n return index;\n }), _d32['default'].max(transferData, function (dataPoint, index) {\n return index;\n })]);\n\n var yRange = _d32['default'].scale.linear().range([height - margin.top, margin.bottom]).domain([0, _d32['default'].max(transferData, function (dataPoint, index) {\n if (dataPoint >= transferLimit[index]) {\n return dataPoint;\n } else {\n return transferLimit[index];\n }\n })]);\n\n var lineFunc = function lineFunc(interpolation) {\n return _d32['default'].svg.line().x(function (dataPoint, index) {\n return xRange(index);\n }).y(function (dataPoint) {\n return yRange(dataPoint);\n }).interpolate(interpolation);\n };\n\n var areaFunc = _d32['default'].svg.area().x(function (dataPoint, index) {\n return xRange(index);\n }).y0(height).y1(function (dataPoint) {\n return yRange(dataPoint);\n }).interpolate('basis');\n\n var transferDataLinePoints = lineFunc('basis')(transferData);\n var transferLimitLinePoints = lineFunc('step-after')(transferLimit);\n var transferDataAreaPoints = areaFunc(transferData);\n\n graph.select('g').remove();\n\n graph.append('g').append('svg:path').attr('class', 'graph__area').attr('d', transferDataAreaPoints);\n\n graph.select('g').append('svg:path').attr('class', 'graph__line graph__line--limit').attr('d', transferLimitLinePoints);\n\n graph.select('g').append('svg:path').attr('class', 'graph__line graph__line--rate').attr('d', transferDataLinePoints);\n }\n }, {\n key: 'render',\n value: function render() {\n return _react2['default'].createElement(\n 'svg',\n { className: 'graph', id: this.props.id },\n _react2['default'].createElement(\n 'defs',\n null,\n _react2['default'].createElement(\n 'linearGradient',\n { id: this.props.slug + '--gradient', x1: '0%', y1: '0%',\n x2: '0%', y2: '100%' },\n _react2['default'].createElement('stop', { className: this.props.slug + '--gradient--top', offset: '0%' }),\n _react2['default'].createElement('stop', { className: this.props.slug + '--gradient--bottom', offset: '100%' })\n )\n )\n );\n }\n }]);\n\n return LineChart;\n})(_react2['default'].Component);\n\nexports['default'] = LineChart;\nmodule.exports = exports['default'];//@ sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9jbGllbnQvc291cmNlL3NjcmlwdHMvY29tcG9uZW50cy91aS9MaW5lQ2hhcnQuanM/ZTMyMSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7QUFFQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRCxpQ0FBaUMsMkNBQTJDLGdCQUFnQixrQkFBa0IsT0FBTywyQkFBMkIsd0RBQXdELGdDQUFnQyx1REFBdUQsMkRBQTJELEVBQUUsRUFBRSx5REFBeUQscUVBQXFFLDZEQUE2RCxvQkFBb0IsR0FBRyxFQUFFOztBQUVsakIsdUNBQXVDLG1CQUFtQiw0QkFBNEIsaURBQWlELGdCQUFnQixrREFBa0QsOERBQThELDBCQUEwQiw0Q0FBNEMsdUJBQXVCLGtCQUFrQixFQUFFLE9BQU8sYUFBYSxnQkFBZ0IsZ0JBQWdCLGVBQWUsMkJBQTJCLG9CQUFvQixFQUFFLEVBQUUsNEJBQTRCLG1CQUFtQixFQUFFLE9BQU8sdUJBQXVCLDRCQUE0QixrQkFBa0IsRUFBRSw4QkFBOEIsRUFBRSxFQUFFOztBQUUvb0Isc0NBQXNDLHVDQUF1QyxrQkFBa0I7O0FBRS9GLGlEQUFpRCwwQ0FBMEMsMERBQTBELEVBQUU7O0FBRXZKLDBDQUEwQywrREFBK0QscUdBQXFHLEVBQUUseUVBQXlFLGVBQWUseUVBQXlFLEVBQUUsRUFBRSx1SEFBdUg7O0FBRTVlOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxPQUFPOztBQUVQO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsT0FBTzs7QUFFUDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxTQUFTO0FBQ1Q7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLE9BQU87O0FBRVA7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLHdDQUF3QztBQUNqRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiLG9DQUFvQztBQUNwQyxzREFBc0QsK0RBQStEO0FBQ3JILHNEQUFzRCxvRUFBb0U7QUFDMUg7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBIiwiZmlsZSI6IjI0NS5qcyIsInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5cbnZhciBfY3JlYXRlQ2xhc3MgPSAoZnVuY3Rpb24gKCkgeyBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKCd2YWx1ZScgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9IHJldHVybiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH07IH0pKCk7XG5cbnZhciBfZ2V0ID0gZnVuY3Rpb24gZ2V0KF94LCBfeDIsIF94MykgeyB2YXIgX2FnYWluID0gdHJ1ZTsgX2Z1bmN0aW9uOiB3aGlsZSAoX2FnYWluKSB7IHZhciBvYmplY3QgPSBfeCwgcHJvcGVydHkgPSBfeDIsIHJlY2VpdmVyID0gX3gzOyBfYWdhaW4gPSBmYWxzZTsgaWYgKG9iamVjdCA9PT0gbnVsbCkgb2JqZWN0ID0gRnVuY3Rpb24ucHJvdG90eXBlOyB2YXIgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBwcm9wZXJ0eSk7IGlmIChkZXNjID09PSB1bmRlZmluZWQpIHsgdmFyIHBhcmVudCA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihvYmplY3QpOyBpZiAocGFyZW50ID09PSBudWxsKSB7IHJldHVybiB1bmRlZmluZWQ7IH0gZWxzZSB7IF94ID0gcGFyZW50OyBfeDIgPSBwcm9wZXJ0eTsgX3gzID0gcmVjZWl2ZXI7IF9hZ2FpbiA9IHRydWU7IGRlc2MgPSBwYXJlbnQgPSB1bmRlZmluZWQ7IGNvbnRpbnVlIF9mdW5jdGlvbjsgfSB9IGVsc2UgaWYgKCd2YWx1ZScgaW4gZGVzYykgeyByZXR1cm4gZGVzYy52YWx1ZTsgfSBlbHNlIHsgdmFyIGdldHRlciA9IGRlc2MuZ2V0OyBpZiAoZ2V0dGVyID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfSByZXR1cm4gZ2V0dGVyLmNhbGwocmVjZWl2ZXIpOyB9IH0gfTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgJ2RlZmF1bHQnOiBvYmogfTsgfVxuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoJ0Nhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbicpOyB9IH1cblxuZnVuY3Rpb24gX2luaGVyaXRzKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7IGlmICh0eXBlb2Ygc3VwZXJDbGFzcyAhPT0gJ2Z1bmN0aW9uJyAmJiBzdXBlckNsYXNzICE9PSBudWxsKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoJ1N1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgJyArIHR5cGVvZiBzdXBlckNsYXNzKTsgfSBzdWJDbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ2xhc3MgJiYgc3VwZXJDbGFzcy5wcm90b3R5cGUsIHsgY29uc3RydWN0b3I6IHsgdmFsdWU6IHN1YkNsYXNzLCBlbnVtZXJhYmxlOiBmYWxzZSwgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9IH0pOyBpZiAoc3VwZXJDbGFzcykgT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mKHN1YkNsYXNzLCBzdXBlckNsYXNzKSA6IHN1YkNsYXNzLl9fcHJvdG9fXyA9IHN1cGVyQ2xhc3M7IH1cblxudmFyIF9kMyA9IHJlcXVpcmUoJ2QzJyk7XG5cbnZhciBfZDMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZDMpO1xuXG52YXIgX3JlYWN0ID0gcmVxdWlyZSgncmVhY3QnKTtcblxudmFyIF9yZWFjdDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9yZWFjdCk7XG5cbnZhciBNRVRIT0RTX1RPX0JJTkQgPSBbJ3JlbmRlckdyYXBoRGF0YSddO1xuXG52YXIgTGluZUNoYXJ0ID0gKGZ1bmN0aW9uIChfUmVhY3QkQ29tcG9uZW50KSB7XG4gIF9pbmhlcml0cyhMaW5lQ2hhcnQsIF9SZWFjdCRDb21wb25lbnQpO1xuXG4gIGZ1bmN0aW9uIExpbmVDaGFydCgpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIExpbmVDaGFydCk7XG5cbiAgICBfZ2V0KE9iamVjdC5nZXRQcm90b3R5cGVPZihMaW5lQ2hhcnQucHJvdG90eXBlKSwgJ2NvbnN0cnVjdG9yJywgdGhpcykuY2FsbCh0aGlzKTtcblxuICAgIE1FVEhPRFNfVE9fQklORC5mb3JFYWNoKGZ1bmN0aW9uIChtZXRob2QpIHtcbiAgICAgIF90aGlzW21ldGhvZF0gPSBfdGhpc1ttZXRob2RdLmJpbmQoX3RoaXMpO1xuICAgIH0pO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKExpbmVDaGFydCwgW3tcbiAgICBrZXk6ICdjb21wb25lbnREaWRNb3VudCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgICAgdGhpcy5yZW5kZXJHcmFwaERhdGEoKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdjb21wb25lbnREaWRVcGRhdGUnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb21wb25lbnREaWRVcGRhdGUoKSB7XG4gICAgICB0aGlzLnJlbmRlckdyYXBoRGF0YSgpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ3JlbmRlckdyYXBoRGF0YScsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlckdyYXBoRGF0YSgpIHtcbiAgICAgIC8vIGNvbnNvbGUubG9nKCcnKVxuICAgICAgdmFyIGdyYXBoID0gX2QzMlsnZGVmYXVsdCddLnNlbGVjdCgnIycgKyB0aGlzLnByb3BzLmlkKTtcbiAgICAgIHZhciB0cmFuc2ZlckRhdGEgPSB0aGlzLnByb3BzLmRhdGE7XG4gICAgICB2YXIgdHJhbnNmZXJMaW1pdCA9IHRoaXMucHJvcHMubGltaXQ7XG4gICAgICB2YXIgbWFyZ2luID0ge1xuICAgICAgICBib3R0b206IDEwLFxuICAgICAgICB0b3A6IDEwXG4gICAgICB9O1xuICAgICAgdmFyIHdpZHRoID0gdGhpcy5wcm9wcy53aWR0aDtcbiAgICAgIHZhciBoZWlnaHQgPSB0aGlzLnByb3BzLmhlaWdodDtcblxuICAgICAgdmFyIHhSYW5nZSA9IF9kMzJbJ2RlZmF1bHQnXS5zY2FsZS5saW5lYXIoKS5yYW5nZShbMCwgd2lkdGhdKS5kb21haW4oW19kMzJbJ2RlZmF1bHQnXS5taW4odHJhbnNmZXJEYXRhLCBmdW5jdGlvbiAoZGF0YVBvaW50LCBpbmRleCkge1xuICAgICAgICByZXR1cm4gaW5kZXg7XG4gICAgICB9KSwgX2QzMlsnZGVmYXVsdCddLm1heCh0cmFuc2ZlckRhdGEsIGZ1bmN0aW9uIChkYXRhUG9pbnQsIGluZGV4KSB7XG4gICAgICAgIHJldHVybiBpbmRleDtcbiAgICAgIH0pXSk7XG5cbiAgICAgIHZhciB5UmFuZ2UgPSBfZDMyWydkZWZhdWx0J10uc2NhbGUubGluZWFyKCkucmFuZ2UoW2hlaWdodCAtIG1hcmdpbi50b3AsIG1hcmdpbi5ib3R0b21dKS5kb21haW4oWzAsIF9kMzJbJ2RlZmF1bHQnXS5tYXgodHJhbnNmZXJEYXRhLCBmdW5jdGlvbiAoZGF0YVBvaW50LCBpbmRleCkge1xuICAgICAgICBpZiAoZGF0YVBvaW50ID49IHRyYW5zZmVyTGltaXRbaW5kZXhdKSB7XG4gICAgICAgICAgcmV0dXJuIGRhdGFQb2ludDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gdHJhbnNmZXJMaW1pdFtpbmRleF07XG4gICAgICAgIH1cbiAgICAgIH0pXSk7XG5cbiAgICAgIHZhciBsaW5lRnVuYyA9IGZ1bmN0aW9uIGxpbmVGdW5jKGludGVycG9sYXRpb24pIHtcbiAgICAgICAgcmV0dXJuIF9kMzJbJ2RlZmF1bHQnXS5zdmcubGluZSgpLngoZnVuY3Rpb24gKGRhdGFQb2ludCwgaW5kZXgpIHtcbiAgICAgICAgICByZXR1cm4geFJhbmdlKGluZGV4KTtcbiAgICAgICAgfSkueShmdW5jdGlvbiAoZGF0YVBvaW50KSB7XG4gICAgICAgICAgcmV0dXJuIHlSYW5nZShkYXRhUG9pbnQpO1xuICAgICAgICB9KS5pbnRlcnBvbGF0ZShpbnRlcnBvbGF0aW9uKTtcbiAgICAgIH07XG5cbiAgICAgIHZhciBhcmVhRnVuYyA9IF9kMzJbJ2RlZmF1bHQnXS5zdmcuYXJlYSgpLngoZnVuY3Rpb24gKGRhdGFQb2ludCwgaW5kZXgpIHtcbiAgICAgICAgcmV0dXJuIHhSYW5nZShpbmRleCk7XG4gICAgICB9KS55MChoZWlnaHQpLnkxKGZ1bmN0aW9uIChkYXRhUG9pbnQpIHtcbiAgICAgICAgcmV0dXJuIHlSYW5nZShkYXRhUG9pbnQpO1xuICAgICAgfSkuaW50ZXJwb2xhdGUoJ2Jhc2lzJyk7XG5cbiAgICAgIHZhciB0cmFuc2ZlckRhdGFMaW5lUG9pbnRzID0gbGluZUZ1bmMoJ2Jhc2lzJykodHJhbnNmZXJEYXRhKTtcbiAgICAgIHZhciB0cmFuc2ZlckxpbWl0TGluZVBvaW50cyA9IGxpbmVGdW5jKCdzdGVwLWFmdGVyJykodHJhbnNmZXJMaW1pdCk7XG4gICAgICB2YXIgdHJhbnNmZXJEYXRhQXJlYVBvaW50cyA9IGFyZWFGdW5jKHRyYW5zZmVyRGF0YSk7XG5cbiAgICAgIGdyYXBoLnNlbGVjdCgnZycpLnJlbW92ZSgpO1xuXG4gICAgICBncmFwaC5hcHBlbmQoJ2cnKS5hcHBlbmQoJ3N2ZzpwYXRoJykuYXR0cignY2xhc3MnLCAnZ3JhcGhfX2FyZWEnKS5hdHRyKCdkJywgdHJhbnNmZXJEYXRhQXJlYVBvaW50cyk7XG5cbiAgICAgIGdyYXBoLnNlbGVjdCgnZycpLmFwcGVuZCgnc3ZnOnBhdGgnKS5hdHRyKCdjbGFzcycsICdncmFwaF9fbGluZSBncmFwaF9fbGluZS0tbGltaXQnKS5hdHRyKCdkJywgdHJhbnNmZXJMaW1pdExpbmVQb2ludHMpO1xuXG4gICAgICBncmFwaC5zZWxlY3QoJ2cnKS5hcHBlbmQoJ3N2ZzpwYXRoJykuYXR0cignY2xhc3MnLCAnZ3JhcGhfX2xpbmUgZ3JhcGhfX2xpbmUtLXJhdGUnKS5hdHRyKCdkJywgdHJhbnNmZXJEYXRhTGluZVBvaW50cyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAncmVuZGVyJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgICAgcmV0dXJuIF9yZWFjdDJbJ2RlZmF1bHQnXS5jcmVhdGVFbGVtZW50KFxuICAgICAgICAnc3ZnJyxcbiAgICAgICAgeyBjbGFzc05hbWU6ICdncmFwaCcsIGlkOiB0aGlzLnByb3BzLmlkIH0sXG4gICAgICAgIF9yZWFjdDJbJ2RlZmF1bHQnXS5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICdkZWZzJyxcbiAgICAgICAgICBudWxsLFxuICAgICAgICAgIF9yZWFjdDJbJ2RlZmF1bHQnXS5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgJ2xpbmVhckdyYWRpZW50JyxcbiAgICAgICAgICAgIHsgaWQ6IHRoaXMucHJvcHMuc2x1ZyArICctLWdyYWRpZW50JywgeDE6ICcwJScsIHkxOiAnMCUnLFxuICAgICAgICAgICAgICB4MjogJzAlJywgeTI6ICcxMDAlJyB9LFxuICAgICAgICAgICAgX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoJ3N0b3AnLCB7IGNsYXNzTmFtZTogdGhpcy5wcm9wcy5zbHVnICsgJy0tZ3JhZGllbnQtLXRvcCcsIG9mZnNldDogJzAlJyB9KSxcbiAgICAgICAgICAgIF9yZWFjdDJbJ2RlZmF1bHQnXS5jcmVhdGVFbGVtZW50KCdzdG9wJywgeyBjbGFzc05hbWU6IHRoaXMucHJvcHMuc2x1ZyArICctLWdyYWRpZW50LS1ib3R0b20nLCBvZmZzZXQ6ICcxMDAlJyB9KVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gTGluZUNoYXJ0O1xufSkoX3JlYWN0MlsnZGVmYXVsdCddLkNvbXBvbmVudCk7XG5cbmV4cG9ydHNbJ2RlZmF1bHQnXSA9IExpbmVDaGFydDtcbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9jbGllbnQvc291cmNlL3NjcmlwdHMvY29tcG9uZW50cy91aS9MaW5lQ2hhcnQuanNcbiAqKiBtb2R1bGUgaWQgPSAyNDVcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyJdLCJzb3VyY2VSb290IjoiIn0="); /***/ }, /* 246 */ @@ -1832,7 +1832,7 @@ /* 298 */ /***/ function(module, exports, __webpack_require__) { - eval("'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\n\nvar _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _lodash = __webpack_require__(161);\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _classnames = __webpack_require__(171);\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _reactAddonsCssTransitionGroup = __webpack_require__(163);\n\nvar _reactAddonsCssTransitionGroup2 = _interopRequireDefault(_reactAddonsCssTransitionGroup);\n\nvar _react = __webpack_require__(1);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = __webpack_require__(157);\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _uiContextMenu = __webpack_require__(299);\n\nvar _uiContextMenu2 = _interopRequireDefault(_uiContextMenu);\n\nvar _uiCustomScrollbars = __webpack_require__(220);\n\nvar _uiCustomScrollbars2 = _interopRequireDefault(_uiCustomScrollbars);\n\nvar _constantsEventTypes = __webpack_require__(176);\n\nvar _constantsEventTypes2 = _interopRequireDefault(_constantsEventTypes);\n\nvar _uiLoadingIndicator = __webpack_require__(247);\n\nvar _uiLoadingIndicator2 = _interopRequireDefault(_uiLoadingIndicator);\n\nvar _constantsPriorityLevels = __webpack_require__(275);\n\nvar _constantsPriorityLevels2 = _interopRequireDefault(_constantsPriorityLevels);\n\nvar _filesystemPriorityMeter = __webpack_require__(274);\n\nvar _filesystemPriorityMeter2 = _interopRequireDefault(_filesystemPriorityMeter);\n\nvar _Torrent = __webpack_require__(300);\n\nvar _Torrent2 = _interopRequireDefault(_Torrent);\n\nvar _actionsTorrentActions = __webpack_require__(186);\n\nvar _actionsTorrentActions2 = _interopRequireDefault(_actionsTorrentActions);\n\nvar _storesTorrentFilterStore = __webpack_require__(207);\n\nvar _storesTorrentFilterStore2 = _interopRequireDefault(_storesTorrentFilterStore);\n\nvar _storesTorrentStore = __webpack_require__(201);\n\nvar _storesTorrentStore2 = _interopRequireDefault(_storesTorrentStore);\n\nvar _actionsUIActions = __webpack_require__(208);\n\nvar _actionsUIActions2 = _interopRequireDefault(_actionsUIActions);\n\nvar _storesUIStore = __webpack_require__(177);\n\nvar _storesUIStore2 = _interopRequireDefault(_storesUIStore);\n\nvar METHODS_TO_BIND = ['bindExternalPriorityChangeHandler', 'onReceiveTorrentsError', 'onReceiveTorrentsSuccess', 'handleContextMenuItemClick', 'handleDetailsClick', 'handleRightClick', 'handleTorrentClick', 'onContextMenuChange', 'onTorrentFilterChange', 'onTorrentSelectionChange', 'getListPadding', 'getViewportLimits', 'setScrollPosition', 'setViewportHeight'];\n\nvar TorrentListContainer = (function (_React$Component) {\n _inherits(TorrentListContainer, _React$Component);\n\n function TorrentListContainer() {\n var _this = this;\n\n _classCallCheck(this, TorrentListContainer);\n\n _get(Object.getPrototypeOf(TorrentListContainer.prototype), 'constructor', this).call(this);\n\n this.state = {\n handleTorrentPriorityChange: null,\n contextMenu: null,\n maxTorrentIndex: 10,\n minTorrentIndex: 0,\n scrollPosition: 0,\n torrentCount: 0,\n torrentHeight: 64,\n torrents: null,\n torrentRequestError: false,\n torrentRequestSuccess: false,\n viewportHeight: 0\n };\n\n METHODS_TO_BIND.forEach(function (method) {\n _this[method] = _this[method].bind(_this);\n });\n\n this.setScrollPosition = _lodash2['default'].throttle(this.setScrollPosition, 100, {\n leading: true,\n trailing: true\n });\n\n this.handleWindowResize = _lodash2['default'].throttle(this.setViewportHeight, 350, {\n leading: true,\n trailing: true\n });\n }\n\n _createClass(TorrentListContainer, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n _storesTorrentStore2['default'].listen(_constantsEventTypes2['default'].UI_TORRENT_SELECTION_CHANGE, this.onTorrentSelectionChange);\n _storesTorrentStore2['default'].listen(_constantsEventTypes2['default'].CLIENT_TORRENTS_REQUEST_SUCCESS, this.onReceiveTorrentsSuccess);\n _storesTorrentStore2['default'].listen(_constantsEventTypes2['default'].CLIENT_TORRENTS_REQUEST_ERROR, this.onReceiveTorrentsError);\n _storesTorrentFilterStore2['default'].listen(_constantsEventTypes2['default'].UI_TORRENTS_FILTER_CHANGE, this.onTorrentFilterChange);\n _storesUIStore2['default'].listen(_constantsEventTypes2['default'].UI_CONTEXT_MENU_CHANGE, this.onContextMenuChange);\n _storesTorrentStore2['default'].fetchTorrents();\n window.addEventListener('resize', this.handleWindowResize);\n this.setViewportHeight();\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n window.removeEventListener('resize', this.handleWindowResize);\n _storesTorrentStore2['default'].unlisten(_constantsEventTypes2['default'].UI_TORRENT_SELECTION_CHANGE, this.onTorrentSelectionChange);\n _storesTorrentStore2['default'].unlisten(_constantsEventTypes2['default'].CLIENT_TORRENTS_REQUEST_SUCCESS, this.onReceiveTorrentsSuccess);\n _storesTorrentStore2['default'].unlisten(_constantsEventTypes2['default'].CLIENT_TORRENTS_REQUEST_ERROR, this.onReceiveTorrentsError);\n _storesTorrentFilterStore2['default'].unlisten(_constantsEventTypes2['default'].UI_TORRENTS_FILTER_CHANGE, this.onTorrentFilterChange);\n _storesUIStore2['default'].unlisten(_constantsEventTypes2['default'].UI_CONTEXT_MENU_CHANGE, this.onContextMenuChange);\n }\n }, {\n key: 'bindExternalPriorityChangeHandler',\n value: function bindExternalPriorityChangeHandler(eventHandler) {\n this.setState({ handleTorrentPriorityChange: eventHandler });\n }\n }, {\n key: 'getContextMenuItems',\n value: function getContextMenuItems(torrent) {\n var clickHandler = this.handleContextMenuItemClick;\n\n return [{\n action: 'start',\n clickHandler: clickHandler,\n label: 'Start'\n }, {\n action: 'stop',\n clickHandler: clickHandler,\n label: 'Stop'\n }, {\n action: 'pause',\n clickHandler: clickHandler,\n label: 'Pause'\n }, {\n action: 'remove',\n clickHandler: clickHandler,\n label: 'Remove'\n }, {\n type: 'separator'\n }, {\n action: 'move',\n clickHandler: clickHandler,\n label: 'Download Location...'\n }, {\n action: 'set-priority',\n clickHandler: clickHandler,\n label: 'Priority',\n labelAction: _react2['default'].createElement(_filesystemPriorityMeter2['default'], { id: torrent.hash, key: torrent.hash,\n bindExternalChangeHandler: this.bindExternalPriorityChangeHandler,\n level: torrent.priority, maxLevel: 3, priorityType: 'torrent',\n onChange: this.handleTorrentPriorityChange, showLabel: false })\n }];\n }\n }, {\n key: 'handleContextMenuItemClick',\n value: function handleContextMenuItemClick(action, event) {\n var selectedTorrents = _storesTorrentStore2['default'].getSelectedTorrents();\n switch (action) {\n case 'start':\n _actionsTorrentActions2['default'].startTorrents(selectedTorrents);\n break;\n case 'stop':\n _actionsTorrentActions2['default'].stopTorrents(selectedTorrents);\n break;\n case 'pause':\n _actionsTorrentActions2['default'].pauseTorrents(selectedTorrents);\n break;\n case 'remove':\n _actionsTorrentActions2['default'].deleteTorrents(selectedTorrents);\n break;\n case 'move':\n this.handleContextMenuMoveClick(selectedTorrents);\n break;\n case 'set-priority':\n this.state.handleTorrentPriorityChange(event);\n break;\n }\n }\n }, {\n key: 'handleContextMenuMoveClick',\n value: function handleContextMenuMoveClick(hashes) {\n _actionsUIActions2['default'].displayModal('move-torrents');\n }\n }, {\n key: 'handleDetailsClick',\n value: function handleDetailsClick(torrent, event) {\n _actionsUIActions2['default'].handleDetailsClick({\n hash: torrent.hash,\n event: event\n });\n }\n }, {\n key: 'handleRightClick',\n value: function handleRightClick(torrent, event) {\n event.preventDefault();\n\n _storesUIStore2['default'].setActiveContextMenu({\n clickPosition: {\n x: event.clientX,\n y: event.clientY\n },\n items: this.getContextMenuItems(torrent)\n });\n }\n }, {\n key: 'handleTorrentClick',\n value: function handleTorrentClick(hash, event) {\n _actionsUIActions2['default'].handleTorrentClick({ hash: hash, event: event });\n }\n }, {\n key: 'handleTorrentPriorityChange',\n value: function handleTorrentPriorityChange(hash, level) {\n _actionsTorrentActions2['default'].setPriority(hash, level);\n }\n }, {\n key: 'onContextMenuChange',\n value: function onContextMenuChange() {\n this.setState({ contextMenu: _storesUIStore2['default'].getActiveContextMenu() });\n }\n }, {\n key: 'onReceiveTorrentsError',\n value: function onReceiveTorrentsError() {\n this.setState({ torrentRequestError: true, torrentRequestSuccess: false });\n }\n }, {\n key: 'onReceiveTorrentsSuccess',\n value: function onReceiveTorrentsSuccess() {\n var torrents = _storesTorrentStore2['default'].getTorrents();\n\n this.setState({\n torrents: torrents,\n torrentCount: torrents.length,\n torrentRequestError: false,\n torrentRequestSuccess: true\n });\n }\n }, {\n key: 'onTorrentFilterChange',\n value: function onTorrentFilterChange() {\n this.forceUpdate();\n }\n }, {\n key: 'onTorrentSelectionChange',\n value: function onTorrentSelectionChange() {\n if (_storesTorrentStore2['default'].getSelectedTorrents().length !== 1) {\n _storesUIStore2['default'].closeTorrentDetailsPanel();\n }\n\n this.forceUpdate();\n }\n }, {\n key: 'getListPadding',\n value: function getListPadding(minTorrentIndex, maxTorrentIndex, torrentCount) {\n // Calculate the number of pixels to pad the visible item list.\n // If the minimum item index is less than 0, then we're already at the top\n // of the list and don't need to render any padding there.\n if (minTorrentIndex < 0) {\n minTorrentIndex = 0;\n }\n\n if (maxTorrentIndex > torrentCount) {\n maxTorrentIndex = torrentCount;\n }\n\n var hiddenBottom = torrentCount - maxTorrentIndex;\n var hiddenTop = minTorrentIndex;\n\n var bottom = hiddenBottom * this.state.torrentHeight;\n var top = hiddenTop * this.state.torrentHeight;\n\n return { bottom: bottom, top: top };\n }\n }, {\n key: 'getLoadingIndicator',\n value: function getLoadingIndicator() {\n return _react2['default'].createElement(_uiLoadingIndicator2['default'], null);\n }\n }, {\n key: 'getViewportLimits',\n value: function getViewportLimits() {\n // Calculate the number of items that should be rendered based on the height\n // of the viewport. We offset this to render a few more outide of the\n // container's dimensions, which looks nicer when the user scrolls.\n var offset = 10;\n\n // The number of elements in view is the height of the viewport divided\n // by the height of the elements.\n var elementsInView = Math.floor(this.state.viewportHeight / this.state.torrentHeight);\n\n // The minimum item index to render is the number of items above the\n // viewport's current scroll position, minus the offset.\n var minTorrentIndex = Math.floor(this.state.scrollPosition / this.state.torrentHeight) - offset;\n\n // The maximum item index to render is the minimum item rendered, plus the\n // number of items in view, plus double the offset.\n var maxTorrentIndex = minTorrentIndex + elementsInView + offset * 2;\n\n return { minTorrentIndex: minTorrentIndex, maxTorrentIndex: maxTorrentIndex };\n }\n }, {\n key: 'setScrollPosition',\n value: function setScrollPosition(scrollValues) {\n this.setState({ scrollPosition: scrollValues.scrollTop });\n }\n }, {\n key: 'setViewportHeight',\n value: function setViewportHeight() {\n if (this.refs.torrentList) {\n this.setState({\n viewportHeight: this.refs.torrentList.refs.scrollbar.getClientHeight()\n });\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var content = this.getLoadingIndicator();\n\n if (this.state.torrentRequestSuccess) {\n (function () {\n var contextMenu = null;\n var selectedTorrents = _storesTorrentStore2['default'].getSelectedTorrents();\n var torrents = _this2.state.torrents;\n var viewportLimits = _this2.getViewportLimits();\n\n var listPadding = _this2.getListPadding(viewportLimits.minTorrentIndex, viewportLimits.maxTorrentIndex, torrents.length);\n\n var maxTorrentIndex = viewportLimits.maxTorrentIndex;\n var minTorrentIndex = viewportLimits.minTorrentIndex;\n\n if (minTorrentIndex < 0) {\n minTorrentIndex = 0;\n }\n\n if (_this2.state.contextMenu != null) {\n contextMenu = _react2['default'].createElement(_uiContextMenu2['default'], { clickPosition: _this2.state.contextMenu.clickPosition,\n items: _this2.state.contextMenu.items });\n }\n\n var visibleTorrents = torrents.slice(minTorrentIndex, maxTorrentIndex);\n\n var torrentList = visibleTorrents.map(function (torrent, index) {\n var isSelected = false;\n var hash = torrent.hash;\n\n if (selectedTorrents.indexOf(hash) > -1) {\n isSelected = true;\n }\n\n return _react2['default'].createElement(_Torrent2['default'], { key: hash, torrent: torrent, selected: isSelected,\n handleClick: _this2.handleTorrentClick,\n handleRightClick: _this2.handleRightClick,\n handleDetailsClick: _this2.handleDetailsClick });\n });\n\n content = _react2['default'].createElement(\n 'ul',\n { className: 'torrent__list', key: 'torrent__list' },\n _react2['default'].createElement(\n _reactAddonsCssTransitionGroup2['default'],\n {\n transitionName: 'menu',\n transitionEnterTimeout: 250,\n transitionLeaveTimeout: 250 },\n contextMenu\n ),\n _react2['default'].createElement('li', { className: 'torrent__spacer torrent__spacer--top',\n style: { height: listPadding.top + 'px' } }),\n torrentList,\n _react2['default'].createElement('li', { className: 'torrent__spacer torrent__spacer--bottom',\n style: { height: listPadding.bottom + 'px' } })\n );\n })();\n }\n\n return _react2['default'].createElement(\n _reactAddonsCssTransitionGroup2['default'],\n {\n component: 'div',\n className: 'torrent__list__wrapper',\n transitionName: 'torrent__list--loading',\n transitionEnterTimeout: 1000,\n transitionLeaveTimeout: 1000 },\n _react2['default'].createElement(\n _uiCustomScrollbars2['default'],\n { className: 'torrent__list__wrapper--custom-scroll',\n ref: 'torrentList', scrollHandler: this.setScrollPosition },\n content\n )\n );\n }\n }]);\n\n return TorrentListContainer;\n})(_react2['default'].Component);\n\nexports['default'] = TorrentListContainer;\nmodule.exports = exports['default'];//@ sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9jbGllbnQvc291cmNlL3NjcmlwdHMvY29tcG9uZW50cy90b3JyZW50LWxpc3QvVG9ycmVudExpc3QuanM/ZDcyYyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7QUFFQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRCxpQ0FBaUMsMkNBQTJDLGdCQUFnQixrQkFBa0IsT0FBTywyQkFBMkIsd0RBQXdELGdDQUFnQyx1REFBdUQsMkRBQTJELEVBQUUsRUFBRSx5REFBeUQscUVBQXFFLDZEQUE2RCxvQkFBb0IsR0FBRyxFQUFFOztBQUVsakIsdUNBQXVDLG1CQUFtQiw0QkFBNEIsaURBQWlELGdCQUFnQixrREFBa0QsOERBQThELDBCQUEwQiw0Q0FBNEMsdUJBQXVCLGtCQUFrQixFQUFFLE9BQU8sYUFBYSxnQkFBZ0IsZ0JBQWdCLGVBQWUsMkJBQTJCLG9CQUFvQixFQUFFLEVBQUUsNEJBQTRCLG1CQUFtQixFQUFFLE9BQU8sdUJBQXVCLDRCQUE0QixrQkFBa0IsRUFBRSw4QkFBOEIsRUFBRSxFQUFFOztBQUUvb0Isc0NBQXNDLHVDQUF1QyxrQkFBa0I7O0FBRS9GLGlEQUFpRCwwQ0FBMEMsMERBQTBELEVBQUU7O0FBRXZKLDBDQUEwQywrREFBK0QscUdBQXFHLEVBQUUseUVBQXlFLGVBQWUseUVBQXlFLEVBQUUsRUFBRSx1SEFBdUg7O0FBRTVlOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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QUFvQyxFQUFFO0FBQzVEO0FBQ0EsU0FBUztBQUNUOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0NBQXdDO0FBQ3hDO0FBQ0E7QUFDQSxXQUFXO0FBQ1gsdUVBQXVFO0FBQ3ZFO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBLENBQUM7O0FBRUQ7QUFDQSIsImZpbGUiOiIyOTguanMiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuXG52YXIgX2NyZWF0ZUNsYXNzID0gKGZ1bmN0aW9uICgpIHsgZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmICgndmFsdWUnIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7IH0gfSByZXR1cm4gZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9OyB9KSgpO1xuXG52YXIgX2dldCA9IGZ1bmN0aW9uIGdldChfeCwgX3gyLCBfeDMpIHsgdmFyIF9hZ2FpbiA9IHRydWU7IF9mdW5jdGlvbjogd2hpbGUgKF9hZ2FpbikgeyB2YXIgb2JqZWN0ID0gX3gsIHByb3BlcnR5ID0gX3gyLCByZWNlaXZlciA9IF94MzsgX2FnYWluID0gZmFsc2U7IGlmIChvYmplY3QgPT09IG51bGwpIG9iamVjdCA9IEZ1bmN0aW9uLnByb3RvdHlwZTsgdmFyIGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgcHJvcGVydHkpOyBpZiAoZGVzYyA9PT0gdW5kZWZpbmVkKSB7IHZhciBwYXJlbnQgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Yob2JqZWN0KTsgaWYgKHBhcmVudCA9PT0gbnVsbCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9IGVsc2UgeyBfeCA9IHBhcmVudDsgX3gyID0gcHJvcGVydHk7IF94MyA9IHJlY2VpdmVyOyBfYWdhaW4gPSB0cnVlOyBkZXNjID0gcGFyZW50ID0gdW5kZWZpbmVkOyBjb250aW51ZSBfZnVuY3Rpb247IH0gfSBlbHNlIGlmICgndmFsdWUnIGluIGRlc2MpIHsgcmV0dXJuIGRlc2MudmFsdWU7IH0gZWxzZSB7IHZhciBnZXR0ZXIgPSBkZXNjLmdldDsgaWYgKGdldHRlciA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH0gcmV0dXJuIGdldHRlci5jYWxsKHJlY2VpdmVyKTsgfSB9IH07XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7ICdkZWZhdWx0Jzogb2JqIH07IH1cblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKCdDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24nKTsgfSB9XG5cbmZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09ICdmdW5jdGlvbicgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKCdTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICcgKyB0eXBlb2Ygc3VwZXJDbGFzcyk7IH0gc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7IGNvbnN0cnVjdG9yOiB7IHZhbHVlOiBzdWJDbGFzcywgZW51bWVyYWJsZTogZmFsc2UsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSB9KTsgaWYgKHN1cGVyQ2xhc3MpIE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5zZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFzcykgOiBzdWJDbGFzcy5fX3Byb3RvX18gPSBzdXBlckNsYXNzOyB9XG5cbnZhciBfbG9kYXNoID0gcmVxdWlyZSgnbG9kYXNoJyk7XG5cbnZhciBfbG9kYXNoMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2xvZGFzaCk7XG5cbnZhciBfY2xhc3NuYW1lcyA9IHJlcXVpcmUoJ2NsYXNzbmFtZXMnKTtcblxudmFyIF9jbGFzc25hbWVzMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2NsYXNzbmFtZXMpO1xuXG52YXIgX3JlYWN0QWRkb25zQ3NzVHJhbnNpdGlvbkdyb3VwID0gcmVxdWlyZSgncmVhY3QtYWRkb25zLWNzcy10cmFuc2l0aW9uLWdyb3VwJyk7XG5cbnZhciBfcmVhY3RBZGRvbnNDc3NUcmFuc2l0aW9uR3JvdXAyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfcmVhY3RBZGRvbnNDc3NUcmFuc2l0aW9uR3JvdXApO1xuXG52YXIgX3JlYWN0ID0gcmVxdWlyZSgncmVhY3QnKTtcblxudmFyIF9yZWFjdDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9yZWFjdCk7XG5cbnZhciBfcmVhY3REb20gPSByZXF1aXJlKCdyZWFjdC1kb20nKTtcblxudmFyIF9yZWFjdERvbTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9yZWFjdERvbSk7XG5cbnZhciBfdWlDb250ZXh0TWVudSA9IHJlcXVpcmUoJy4uL3VpL0NvbnRleHRNZW51Jyk7XG5cbnZhciBfdWlDb250ZXh0TWVudTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF91aUNvbnRleHRNZW51KTtcblxudmFyIF91aUN1c3RvbVNjcm9sbGJhcnMgPSByZXF1aXJlKCcuLi91aS9DdXN0b21TY3JvbGxiYXJzJyk7XG5cbnZhciBfdWlDdXN0b21TY3JvbGxiYXJzMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3VpQ3VzdG9tU2Nyb2xsYmFycyk7XG5cbnZhciBfY29uc3RhbnRzRXZlbnRUeXBlcyA9IHJlcXVpcmUoJy4uLy4uL2NvbnN0YW50cy9FdmVudFR5cGVzJyk7XG5cbnZhciBfY29uc3RhbnRzRXZlbnRUeXBlczIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jb25zdGFudHNFdmVudFR5cGVzKTtcblxudmFyIF91aUxvYWRpbmdJbmRpY2F0b3IgPSByZXF1aXJlKCcuLi91aS9Mb2FkaW5nSW5kaWNhdG9yJyk7XG5cbnZhciBfdWlMb2FkaW5nSW5kaWNhdG9yMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3VpTG9hZGluZ0luZGljYXRvcik7XG5cbnZhciBfY29uc3RhbnRzUHJpb3JpdHlMZXZlbHMgPSByZXF1aXJlKCcuLi8uLi9jb25zdGFudHMvUHJpb3JpdHlMZXZlbHMnKTtcblxudmFyIF9jb25zdGFudHNQcmlvcml0eUxldmVsczIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jb25zdGFudHNQcmlvcml0eUxldmVscyk7XG5cbnZhciBfZmlsZXN5c3RlbVByaW9yaXR5TWV0ZXIgPSByZXF1aXJlKCcuLi9maWxlc3lzdGVtL1ByaW9yaXR5TWV0ZXInKTtcblxudmFyIF9maWxlc3lzdGVtUHJpb3JpdHlNZXRlcjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9maWxlc3lzdGVtUHJpb3JpdHlNZXRlcik7XG5cbnZhciBfVG9ycmVudCA9IHJlcXVpcmUoJy4vVG9ycmVudCcpO1xuXG52YXIgX1RvcnJlbnQyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfVG9ycmVudCk7XG5cbnZhciBfYWN0aW9uc1RvcnJlbnRBY3Rpb25zID0gcmVxdWlyZSgnLi4vLi4vYWN0aW9ucy9Ub3JyZW50QWN0aW9ucycpO1xuXG52YXIgX2FjdGlvbnNUb3JyZW50QWN0aW9uczIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9hY3Rpb25zVG9ycmVudEFjdGlvbnMpO1xuXG52YXIgX3N0b3Jlc1RvcnJlbnRGaWx0ZXJTdG9yZSA9IHJlcXVpcmUoJy4uLy4uL3N0b3Jlcy9Ub3JyZW50RmlsdGVyU3RvcmUnKTtcblxudmFyIF9zdG9yZXNUb3JyZW50RmlsdGVyU3RvcmUyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfc3RvcmVzVG9ycmVudEZpbHRlclN0b3JlKTtcblxudmFyIF9zdG9yZXNUb3JyZW50U3RvcmUgPSByZXF1aXJlKCcuLi8uLi9zdG9yZXMvVG9ycmVudFN0b3JlJyk7XG5cbnZhciBfc3RvcmVzVG9ycmVudFN0b3JlMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3N0b3Jlc1RvcnJlbnRTdG9yZSk7XG5cbnZhciBfYWN0aW9uc1VJQWN0aW9ucyA9IHJlcXVpcmUoJy4uLy4uL2FjdGlvbnMvVUlBY3Rpb25zJyk7XG5cbnZhciBfYWN0aW9uc1VJQWN0aW9uczIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9hY3Rpb25zVUlBY3Rpb25zKTtcblxudmFyIF9zdG9yZXNVSVN0b3JlID0gcmVxdWlyZSgnLi4vLi4vc3RvcmVzL1VJU3RvcmUnKTtcblxudmFyIF9zdG9yZXNVSVN0b3JlMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3N0b3Jlc1VJU3RvcmUpO1xuXG52YXIgTUVUSE9EU19UT19CSU5EID0gWydiaW5kRXh0ZXJuYWxQcmlvcml0eUNoYW5nZUhhbmRsZXInLCAnb25SZWNlaXZlVG9ycmVudHNFcnJvcicsICdvblJlY2VpdmVUb3JyZW50c1N1Y2Nlc3MnLCAnaGFuZGxlQ29udGV4dE1lbnVJdGVtQ2xpY2snLCAnaGFuZGxlRGV0YWlsc0NsaWNrJywgJ2hhbmRsZVJpZ2h0Q2xpY2snLCAnaGFuZGxlVG9ycmVudENsaWNrJywgJ29uQ29udGV4dE1lbnVDaGFuZ2UnLCAnb25Ub3JyZW50RmlsdGVyQ2hhbmdlJywgJ29uVG9ycmVudFNlbGVjdGlvbkNoYW5nZScsICdnZXRMaXN0UGFkZGluZycsICdnZXRWaWV3cG9ydExpbWl0cycsICdzZXRTY3JvbGxQb3NpdGlvbicsICdzZXRWaWV3cG9ydEhlaWdodCddO1xuXG52YXIgVG9ycmVudExpc3RDb250YWluZXIgPSAoZnVuY3Rpb24gKF9SZWFjdCRDb21wb25lbnQpIHtcbiAgX2luaGVyaXRzKFRvcnJlbnRMaXN0Q29udGFpbmVyLCBfUmVhY3QkQ29tcG9uZW50KTtcblxuICBmdW5jdGlvbiBUb3JyZW50TGlzdENvbnRhaW5lcigpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFRvcnJlbnRMaXN0Q29udGFpbmVyKTtcblxuICAgIF9nZXQoT2JqZWN0LmdldFByb3RvdHlwZU9mKFRvcnJlbnRMaXN0Q29udGFpbmVyLnByb3RvdHlwZSksICdjb25zdHJ1Y3RvcicsIHRoaXMpLmNhbGwodGhpcyk7XG5cbiAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgaGFuZGxlVG9ycmVudFByaW9yaXR5Q2hhbmdlOiBudWxsLFxuICAgICAgY29udGV4dE1lbnU6IG51bGwsXG4gICAgICBtYXhUb3JyZW50SW5kZXg6IDEwLFxuICAgICAgbWluVG9ycmVudEluZGV4OiAwLFxuICAgICAgc2Nyb2xsUG9zaXRpb246IDAsXG4gICAgICB0b3JyZW50Q291bnQ6IDAsXG4gICAgICB0b3JyZW50SGVpZ2h0OiA2NCxcbiAgICAgIHRvcnJlbnRzOiBudWxsLFxuICAgICAgdG9ycmVudFJlcXVlc3RFcnJvcjogZmFsc2UsXG4gICAgICB0b3JyZW50UmVxdWVzdFN1Y2Nlc3M6IGZhbHNlLFxuICAgICAgdmlld3BvcnRIZWlnaHQ6IDBcbiAgICB9O1xuXG4gICAgTUVUSE9EU19UT19CSU5ELmZvckVhY2goZnVuY3Rpb24gKG1ldGhvZCkge1xuICAgICAgX3RoaXNbbWV0aG9kXSA9IF90aGlzW21ldGhvZF0uYmluZChfdGhpcyk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnNldFNjcm9sbFBvc2l0aW9uID0gX2xvZGFzaDJbJ2RlZmF1bHQnXS50aHJvdHRsZSh0aGlzLnNldFNjcm9sbFBvc2l0aW9uLCAxMDAsIHtcbiAgICAgIGxlYWRpbmc6IHRydWUsXG4gICAgICB0cmFpbGluZzogdHJ1ZVxuICAgIH0pO1xuXG4gICAgdGhpcy5oYW5kbGVXaW5kb3dSZXNpemUgPSBfbG9kYXNoMlsnZGVmYXVsdCddLnRocm90dGxlKHRoaXMuc2V0Vmlld3BvcnRIZWlnaHQsIDM1MCwge1xuICAgICAgbGVhZGluZzogdHJ1ZSxcbiAgICAgIHRyYWlsaW5nOiB0cnVlXG4gICAgfSk7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoVG9ycmVudExpc3RDb250YWluZXIsIFt7XG4gICAga2V5OiAnY29tcG9uZW50RGlkTW91bnQnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICAgIF9zdG9yZXNUb3JyZW50U3RvcmUyWydkZWZhdWx0J10ubGlzdGVuKF9jb25zdGFudHNFdmVudFR5cGVzMlsnZGVmYXVsdCddLlVJX1RPUlJFTlRfU0VMRUNUSU9OX0NIQU5HRSwgdGhpcy5vblRvcnJlbnRTZWxlY3Rpb25DaGFuZ2UpO1xuICAgICAgX3N0b3Jlc1RvcnJlbnRTdG9yZTJbJ2RlZmF1bHQnXS5saXN0ZW4oX2NvbnN0YW50c0V2ZW50VHlwZXMyWydkZWZhdWx0J10uQ0xJRU5UX1RPUlJFTlRTX1JFUVVFU1RfU1VDQ0VTUywgdGhpcy5vblJlY2VpdmVUb3JyZW50c1N1Y2Nlc3MpO1xuICAgICAgX3N0b3Jlc1RvcnJlbnRTdG9yZTJbJ2RlZmF1bHQnXS5saXN0ZW4oX2NvbnN0YW50c0V2ZW50VHlwZXMyWydkZWZhdWx0J10uQ0xJRU5UX1RPUlJFTlRTX1JFUVVFU1RfRVJST1IsIHRoaXMub25SZWNlaXZlVG9ycmVudHNFcnJvcik7XG4gICAgICBfc3RvcmVzVG9ycmVudEZpbHRlclN0b3JlMlsnZGVmYXVsdCddLmxpc3RlbihfY29uc3RhbnRzRXZlbnRUeXBlczJbJ2RlZmF1bHQnXS5VSV9UT1JSRU5UU19GSUxURVJfQ0hBTkdFLCB0aGlzLm9uVG9ycmVudEZpbHRlckNoYW5nZSk7XG4gICAgICBfc3RvcmVzVUlTdG9yZTJbJ2RlZmF1bHQnXS5saXN0ZW4oX2NvbnN0YW50c0V2ZW50VHlwZXMyWydkZWZhdWx0J10uVUlfQ09OVEVYVF9NRU5VX0NIQU5HRSwgdGhpcy5vbkNvbnRleHRNZW51Q2hhbmdlKTtcbiAgICAgIF9zdG9yZXNUb3JyZW50U3RvcmUyWydkZWZhdWx0J10uZmV0Y2hUb3JyZW50cygpO1xuICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMuaGFuZGxlV2luZG93UmVzaXplKTtcbiAgICAgIHRoaXMuc2V0Vmlld3BvcnRIZWlnaHQoKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdjb21wb25lbnRXaWxsVW5tb3VudCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMuaGFuZGxlV2luZG93UmVzaXplKTtcbiAgICAgIF9zdG9yZXNUb3JyZW50U3RvcmUyWydkZWZhdWx0J10udW5saXN0ZW4oX2NvbnN0YW50c0V2ZW50VHlwZXMyWydkZWZhdWx0J10uVUlfVE9SUkVOVF9TRUxFQ1RJT05fQ0hBTkdFLCB0aGlzLm9uVG9ycmVudFNlbGVjdGlvbkNoYW5nZSk7XG4gICAgICBfc3RvcmVzVG9ycmVudFN0b3JlMlsnZGVmYXVsdCddLnVubGlzdGVuKF9jb25zdGFudHNFdmVudFR5cGVzMlsnZGVmYXVsdCddLkNMSUVOVF9UT1JSRU5UU19SRVFVRVNUX1NVQ0NFU1MsIHRoaXMub25SZWNlaXZlVG9ycmVudHNTdWNjZXNzKTtcbiAgICAgIF9zdG9yZXNUb3JyZW50U3RvcmUyWydkZWZhdWx0J10udW5saXN0ZW4oX2NvbnN0YW50c0V2ZW50VHlwZXMyWydkZWZhdWx0J10uQ0xJRU5UX1RPUlJFTlRTX1JFUVVFU1RfRVJST1IsIHRoaXMub25SZWNlaXZlVG9ycmVudHNFcnJvcik7XG4gICAgICBfc3RvcmVzVG9ycmVudEZpbHRlclN0b3JlMlsnZGVmYXVsdCddLnVubGlzdGVuKF9jb25zdGFudHNFdmVudFR5cGVzMlsnZGVmYXVsdCddLlVJX1RPUlJFTlRTX0ZJTFRFUl9DSEFOR0UsIHRoaXMub25Ub3JyZW50RmlsdGVyQ2hhbmdlKTtcbiAgICAgIF9zdG9yZXNVSVN0b3JlMlsnZGVmYXVsdCddLnVubGlzdGVuKF9jb25zdGFudHNFdmVudFR5cGVzMlsnZGVmYXVsdCddLlVJX0NPTlRFWFRfTUVOVV9DSEFOR0UsIHRoaXMub25Db250ZXh0TWVudUNoYW5nZSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnYmluZEV4dGVybmFsUHJpb3JpdHlDaGFuZ2VIYW5kbGVyJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gYmluZEV4dGVybmFsUHJpb3JpdHlDaGFuZ2VIYW5kbGVyKGV2ZW50SGFuZGxlcikge1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7IGhhbmRsZVRvcnJlbnRQcmlvcml0eUNoYW5nZTogZXZlbnRIYW5kbGVyIH0pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2dldENvbnRleHRNZW51SXRlbXMnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRDb250ZXh0TWVudUl0ZW1zKHRvcnJlbnQpIHtcbiAgICAgIHZhciBjbGlja0hhbmRsZXIgPSB0aGlzLmhhbmRsZUNvbnRleHRNZW51SXRlbUNsaWNrO1xuXG4gICAgICByZXR1cm4gW3tcbiAgICAgICAgYWN0aW9uOiAnc3RhcnQnLFxuICAgICAgICBjbGlja0hhbmRsZXI6IGNsaWNrSGFuZGxlcixcbiAgICAgICAgbGFiZWw6ICdTdGFydCdcbiAgICAgIH0sIHtcbiAgICAgICAgYWN0aW9uOiAnc3RvcCcsXG4gICAgICAgIGNsaWNrSGFuZGxlcjogY2xpY2tIYW5kbGVyLFxuICAgICAgICBsYWJlbDogJ1N0b3AnXG4gICAgICB9LCB7XG4gICAgICAgIGFjdGlvbjogJ3BhdXNlJyxcbiAgICAgICAgY2xpY2tIYW5kbGVyOiBjbGlja0hhbmRsZXIsXG4gICAgICAgIGxhYmVsOiAnUGF1c2UnXG4gICAgICB9LCB7XG4gICAgICAgIGFjdGlvbjogJ3JlbW92ZScsXG4gICAgICAgIGNsaWNrSGFuZGxlcjogY2xpY2tIYW5kbGVyLFxuICAgICAgICBsYWJlbDogJ1JlbW92ZSdcbiAgICAgIH0sIHtcbiAgICAgICAgdHlwZTogJ3NlcGFyYXRvcidcbiAgICAgIH0sIHtcbiAgICAgICAgYWN0aW9uOiAnbW92ZScsXG4gICAgICAgIGNsaWNrSGFuZGxlcjogY2xpY2tIYW5kbGVyLFxuICAgICAgICBsYWJlbDogJ0Rvd25sb2FkIExvY2F0aW9uLi4uJ1xuICAgICAgfSwge1xuICAgICAgICBhY3Rpb246ICdzZXQtcHJpb3JpdHknLFxuICAgICAgICBjbGlja0hhbmRsZXI6IGNsaWNrSGFuZGxlcixcbiAgICAgICAgbGFiZWw6ICdQcmlvcml0eScsXG4gICAgICAgIGxhYmVsQWN0aW9uOiBfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudChfZmlsZXN5c3RlbVByaW9yaXR5TWV0ZXIyWydkZWZhdWx0J10sIHsgaWQ6IHRvcnJlbnQuaGFzaCwga2V5OiB0b3JyZW50Lmhhc2gsXG4gICAgICAgICAgYmluZEV4dGVybmFsQ2hhbmdlSGFuZGxlcjogdGhpcy5iaW5kRXh0ZXJuYWxQcmlvcml0eUNoYW5nZUhhbmRsZXIsXG4gICAgICAgICAgbGV2ZWw6IHRvcnJlbnQucHJpb3JpdHksIG1heExldmVsOiAzLCBwcmlvcml0eVR5cGU6ICd0b3JyZW50JyxcbiAgICAgICAgICBvbkNoYW5nZTogdGhpcy5oYW5kbGVUb3JyZW50UHJpb3JpdHlDaGFuZ2UsIHNob3dMYWJlbDogZmFsc2UgfSlcbiAgICAgIH1dO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2hhbmRsZUNvbnRleHRNZW51SXRlbUNsaWNrJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gaGFuZGxlQ29udGV4dE1lbnVJdGVtQ2xpY2soYWN0aW9uLCBldmVudCkge1xuICAgICAgdmFyIHNlbGVjdGVkVG9ycmVudHMgPSBfc3RvcmVzVG9ycmVudFN0b3JlMlsnZGVmYXVsdCddLmdldFNlbGVjdGVkVG9ycmVudHMoKTtcbiAgICAgIHN3aXRjaCAoYWN0aW9uKSB7XG4gICAgICAgIGNhc2UgJ3N0YXJ0JzpcbiAgICAgICAgICBfYWN0aW9uc1RvcnJlbnRBY3Rpb25zMlsnZGVmYXVsdCddLnN0YXJ0VG9ycmVudHMoc2VsZWN0ZWRUb3JyZW50cyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3N0b3AnOlxuICAgICAgICAgIF9hY3Rpb25zVG9ycmVudEFjdGlvbnMyWydkZWZhdWx0J10uc3RvcFRvcnJlbnRzKHNlbGVjdGVkVG9ycmVudHMpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdwYXVzZSc6XG4gICAgICAgICAgX2FjdGlvbnNUb3JyZW50QWN0aW9uczJbJ2RlZmF1bHQnXS5wYXVzZVRvcnJlbnRzKHNlbGVjdGVkVG9ycmVudHMpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdyZW1vdmUnOlxuICAgICAgICAgIF9hY3Rpb25zVG9ycmVudEFjdGlvbnMyWydkZWZhdWx0J10uZGVsZXRlVG9ycmVudHMoc2VsZWN0ZWRUb3JyZW50cyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ21vdmUnOlxuICAgICAgICAgIHRoaXMuaGFuZGxlQ29udGV4dE1lbnVNb3ZlQ2xpY2soc2VsZWN0ZWRUb3JyZW50cyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3NldC1wcmlvcml0eSc6XG4gICAgICAgICAgdGhpcy5zdGF0ZS5oYW5kbGVUb3JyZW50UHJpb3JpdHlDaGFuZ2UoZXZlbnQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2hhbmRsZUNvbnRleHRNZW51TW92ZUNsaWNrJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gaGFuZGxlQ29udGV4dE1lbnVNb3ZlQ2xpY2soaGFzaGVzKSB7XG4gICAgICBfYWN0aW9uc1VJQWN0aW9uczJbJ2RlZmF1bHQnXS5kaXNwbGF5TW9kYWwoJ21vdmUtdG9ycmVudHMnKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdoYW5kbGVEZXRhaWxzQ2xpY2snLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBoYW5kbGVEZXRhaWxzQ2xpY2sodG9ycmVudCwgZXZlbnQpIHtcbiAgICAgIF9hY3Rpb25zVUlBY3Rpb25zMlsnZGVmYXVsdCddLmhhbmRsZURldGFpbHNDbGljayh7XG4gICAgICAgIGhhc2g6IHRvcnJlbnQuaGFzaCxcbiAgICAgICAgZXZlbnQ6IGV2ZW50XG4gICAgICB9KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdoYW5kbGVSaWdodENsaWNrJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gaGFuZGxlUmlnaHRDbGljayh0b3JyZW50LCBldmVudCkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgX3N0b3Jlc1VJU3RvcmUyWydkZWZhdWx0J10uc2V0QWN0aXZlQ29udGV4dE1lbnUoe1xuICAgICAgICBjbGlja1Bvc2l0aW9uOiB7XG4gICAgICAgICAgeDogZXZlbnQuY2xpZW50WCxcbiAgICAgICAgICB5OiBldmVudC5jbGllbnRZXG4gICAgICAgIH0sXG4gICAgICAgIGl0ZW1zOiB0aGlzLmdldENvbnRleHRNZW51SXRlbXModG9ycmVudClcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2hhbmRsZVRvcnJlbnRDbGljaycsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGhhbmRsZVRvcnJlbnRDbGljayhoYXNoLCBldmVudCkge1xuICAgICAgX2FjdGlvbnNVSUFjdGlvbnMyWydkZWZhdWx0J10uaGFuZGxlVG9ycmVudENsaWNrKHsgaGFzaDogaGFzaCwgZXZlbnQ6IGV2ZW50IH0pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2hhbmRsZVRvcnJlbnRQcmlvcml0eUNoYW5nZScsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGhhbmRsZVRvcnJlbnRQcmlvcml0eUNoYW5nZShoYXNoLCBsZXZlbCkge1xuICAgICAgX2FjdGlvbnNUb3JyZW50QWN0aW9uczJbJ2RlZmF1bHQnXS5zZXRQcmlvcml0eShoYXNoLCBsZXZlbCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnb25Db250ZXh0TWVudUNoYW5nZScsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG9uQ29udGV4dE1lbnVDaGFuZ2UoKSB7XG4gICAgICB0aGlzLnNldFN0YXRlKHsgY29udGV4dE1lbnU6IF9zdG9yZXNVSVN0b3JlMlsnZGVmYXVsdCddLmdldEFjdGl2ZUNvbnRleHRNZW51KCkgfSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnb25SZWNlaXZlVG9ycmVudHNFcnJvcicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG9uUmVjZWl2ZVRvcnJlbnRzRXJyb3IoKSB7XG4gICAgICB0aGlzLnNldFN0YXRlKHsgdG9ycmVudFJlcXVlc3RFcnJvcjogdHJ1ZSwgdG9ycmVudFJlcXVlc3RTdWNjZXNzOiBmYWxzZSB9KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdvblJlY2VpdmVUb3JyZW50c1N1Y2Nlc3MnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBvblJlY2VpdmVUb3JyZW50c1N1Y2Nlc3MoKSB7XG4gICAgICB2YXIgdG9ycmVudHMgPSBfc3RvcmVzVG9ycmVudFN0b3JlMlsnZGVmYXVsdCddLmdldFRvcnJlbnRzKCk7XG5cbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICB0b3JyZW50czogdG9ycmVudHMsXG4gICAgICAgIHRvcnJlbnRDb3VudDogdG9ycmVudHMubGVuZ3RoLFxuICAgICAgICB0b3JyZW50UmVxdWVzdEVycm9yOiBmYWxzZSxcbiAgICAgICAgdG9ycmVudFJlcXVlc3RTdWNjZXNzOiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdvblRvcnJlbnRGaWx0ZXJDaGFuZ2UnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBvblRvcnJlbnRGaWx0ZXJDaGFuZ2UoKSB7XG4gICAgICB0aGlzLmZvcmNlVXBkYXRlKCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnb25Ub3JyZW50U2VsZWN0aW9uQ2hhbmdlJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gb25Ub3JyZW50U2VsZWN0aW9uQ2hhbmdlKCkge1xuICAgICAgaWYgKF9zdG9yZXNUb3JyZW50U3RvcmUyWydkZWZhdWx0J10uZ2V0U2VsZWN0ZWRUb3JyZW50cygpLmxlbmd0aCAhPT0gMSkge1xuICAgICAgICBfc3RvcmVzVUlTdG9yZTJbJ2RlZmF1bHQnXS5jbG9zZVRvcnJlbnREZXRhaWxzUGFuZWwoKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5mb3JjZVVwZGF0ZSgpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2dldExpc3RQYWRkaW5nJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0TGlzdFBhZGRpbmcobWluVG9ycmVudEluZGV4LCBtYXhUb3JyZW50SW5kZXgsIHRvcnJlbnRDb3VudCkge1xuICAgICAgLy8gQ2FsY3VsYXRlIHRoZSBudW1iZXIgb2YgcGl4ZWxzIHRvIHBhZCB0aGUgdmlzaWJsZSBpdGVtIGxpc3QuXG4gICAgICAvLyBJZiB0aGUgbWluaW11bSBpdGVtIGluZGV4IGlzIGxlc3MgdGhhbiAwLCB0aGVuIHdlJ3JlIGFscmVhZHkgYXQgdGhlIHRvcFxuICAgICAgLy8gb2YgdGhlIGxpc3QgYW5kIGRvbid0IG5lZWQgdG8gcmVuZGVyIGFueSBwYWRkaW5nIHRoZXJlLlxuICAgICAgaWYgKG1pblRvcnJlbnRJbmRleCA8IDApIHtcbiAgICAgICAgbWluVG9ycmVudEluZGV4ID0gMDtcbiAgICAgIH1cblxuICAgICAgaWYgKG1heFRvcnJlbnRJbmRleCA+IHRvcnJlbnRDb3VudCkge1xuICAgICAgICBtYXhUb3JyZW50SW5kZXggPSB0b3JyZW50Q291bnQ7XG4gICAgICB9XG5cbiAgICAgIHZhciBoaWRkZW5Cb3R0b20gPSB0b3JyZW50Q291bnQgLSBtYXhUb3JyZW50SW5kZXg7XG4gICAgICB2YXIgaGlkZGVuVG9wID0gbWluVG9ycmVudEluZGV4O1xuXG4gICAgICB2YXIgYm90dG9tID0gaGlkZGVuQm90dG9tICogdGhpcy5zdGF0ZS50b3JyZW50SGVpZ2h0O1xuICAgICAgdmFyIHRvcCA9IGhpZGRlblRvcCAqIHRoaXMuc3RhdGUudG9ycmVudEhlaWdodDtcblxuICAgICAgcmV0dXJuIHsgYm90dG9tOiBib3R0b20sIHRvcDogdG9wIH07XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnZ2V0TG9hZGluZ0luZGljYXRvcicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldExvYWRpbmdJbmRpY2F0b3IoKSB7XG4gICAgICByZXR1cm4gX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoX3VpTG9hZGluZ0luZGljYXRvcjJbJ2RlZmF1bHQnXSwgbnVsbCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnZ2V0Vmlld3BvcnRMaW1pdHMnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRWaWV3cG9ydExpbWl0cygpIHtcbiAgICAgIC8vIENhbGN1bGF0ZSB0aGUgbnVtYmVyIG9mIGl0ZW1zIHRoYXQgc2hvdWxkIGJlIHJlbmRlcmVkIGJhc2VkIG9uIHRoZSBoZWlnaHRcbiAgICAgIC8vIG9mIHRoZSB2aWV3cG9ydC4gV2Ugb2Zmc2V0IHRoaXMgdG8gcmVuZGVyIGEgZmV3IG1vcmUgb3V0aWRlIG9mIHRoZVxuICAgICAgLy8gY29udGFpbmVyJ3MgZGltZW5zaW9ucywgd2hpY2ggbG9va3MgbmljZXIgd2hlbiB0aGUgdXNlciBzY3JvbGxzLlxuICAgICAgdmFyIG9mZnNldCA9IDEwO1xuXG4gICAgICAvLyBUaGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIHZpZXcgaXMgdGhlIGhlaWdodCBvZiB0aGUgdmlld3BvcnQgZGl2aWRlZFxuICAgICAgLy8gYnkgdGhlIGhlaWdodCBvZiB0aGUgZWxlbWVudHMuXG4gICAgICB2YXIgZWxlbWVudHNJblZpZXcgPSBNYXRoLmZsb29yKHRoaXMuc3RhdGUudmlld3BvcnRIZWlnaHQgLyB0aGlzLnN0YXRlLnRvcnJlbnRIZWlnaHQpO1xuXG4gICAgICAvLyBUaGUgbWluaW11bSBpdGVtIGluZGV4IHRvIHJlbmRlciBpcyB0aGUgbnVtYmVyIG9mIGl0ZW1zIGFib3ZlIHRoZVxuICAgICAgLy8gdmlld3BvcnQncyBjdXJyZW50IHNjcm9sbCBwb3NpdGlvbiwgbWludXMgdGhlIG9mZnNldC5cbiAgICAgIHZhciBtaW5Ub3JyZW50SW5kZXggPSBNYXRoLmZsb29yKHRoaXMuc3RhdGUuc2Nyb2xsUG9zaXRpb24gLyB0aGlzLnN0YXRlLnRvcnJlbnRIZWlnaHQpIC0gb2Zmc2V0O1xuXG4gICAgICAvLyBUaGUgbWF4aW11bSBpdGVtIGluZGV4IHRvIHJlbmRlciBpcyB0aGUgbWluaW11bSBpdGVtIHJlbmRlcmVkLCBwbHVzIHRoZVxuICAgICAgLy8gbnVtYmVyIG9mIGl0ZW1zIGluIHZpZXcsIHBsdXMgZG91YmxlIHRoZSBvZmZzZXQuXG4gICAgICB2YXIgbWF4VG9ycmVudEluZGV4ID0gbWluVG9ycmVudEluZGV4ICsgZWxlbWVudHNJblZpZXcgKyBvZmZzZXQgKiAyO1xuXG4gICAgICByZXR1cm4geyBtaW5Ub3JyZW50SW5kZXg6IG1pblRvcnJlbnRJbmRleCwgbWF4VG9ycmVudEluZGV4OiBtYXhUb3JyZW50SW5kZXggfTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdzZXRTY3JvbGxQb3NpdGlvbicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldFNjcm9sbFBvc2l0aW9uKHNjcm9sbFZhbHVlcykge1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7IHNjcm9sbFBvc2l0aW9uOiBzY3JvbGxWYWx1ZXMuc2Nyb2xsVG9wIH0pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ3NldFZpZXdwb3J0SGVpZ2h0JyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0Vmlld3BvcnRIZWlnaHQoKSB7XG4gICAgICBpZiAodGhpcy5yZWZzLnRvcnJlbnRMaXN0KSB7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgIHZpZXdwb3J0SGVpZ2h0OiB0aGlzLnJlZnMudG9ycmVudExpc3QucmVmcy5zY3JvbGxiYXIuZ2V0Q2xpZW50SGVpZ2h0KClcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAncmVuZGVyJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICAgIHZhciBjb250ZW50ID0gdGhpcy5nZXRMb2FkaW5nSW5kaWNhdG9yKCk7XG5cbiAgICAgIGlmICh0aGlzLnN0YXRlLnRvcnJlbnRSZXF1ZXN0U3VjY2Vzcykge1xuICAgICAgICAoZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHZhciBjb250ZXh0TWVudSA9IG51bGw7XG4gICAgICAgICAgdmFyIHNlbGVjdGVkVG9ycmVudHMgPSBfc3RvcmVzVG9ycmVudFN0b3JlMlsnZGVmYXVsdCddLmdldFNlbGVjdGVkVG9ycmVudHMoKTtcbiAgICAgICAgICB2YXIgdG9ycmVudHMgPSBfdGhpczIuc3RhdGUudG9ycmVudHM7XG4gICAgICAgICAgdmFyIHZpZXdwb3J0TGltaXRzID0gX3RoaXMyLmdldFZpZXdwb3J0TGltaXRzKCk7XG5cbiAgICAgICAgICB2YXIgbGlzdFBhZGRpbmcgPSBfdGhpczIuZ2V0TGlzdFBhZGRpbmcodmlld3BvcnRMaW1pdHMubWluVG9ycmVudEluZGV4LCB2aWV3cG9ydExpbWl0cy5tYXhUb3JyZW50SW5kZXgsIHRvcnJlbnRzLmxlbmd0aCk7XG5cbiAgICAgICAgICB2YXIgbWF4VG9ycmVudEluZGV4ID0gdmlld3BvcnRMaW1pdHMubWF4VG9ycmVudEluZGV4O1xuICAgICAgICAgIHZhciBtaW5Ub3JyZW50SW5kZXggPSB2aWV3cG9ydExpbWl0cy5taW5Ub3JyZW50SW5kZXg7XG5cbiAgICAgICAgICBpZiAobWluVG9ycmVudEluZGV4IDwgMCkge1xuICAgICAgICAgICAgbWluVG9ycmVudEluZGV4ID0gMDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoX3RoaXMyLnN0YXRlLmNvbnRleHRNZW51ICE9IG51bGwpIHtcbiAgICAgICAgICAgIGNvbnRleHRNZW51ID0gX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoX3VpQ29udGV4dE1lbnUyWydkZWZhdWx0J10sIHsgY2xpY2tQb3NpdGlvbjogX3RoaXMyLnN0YXRlLmNvbnRleHRNZW51LmNsaWNrUG9zaXRpb24sXG4gICAgICAgICAgICAgIGl0ZW1zOiBfdGhpczIuc3RhdGUuY29udGV4dE1lbnUuaXRlbXMgfSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdmFyIHZpc2libGVUb3JyZW50cyA9IHRvcnJlbnRzLnNsaWNlKG1pblRvcnJlbnRJbmRleCwgbWF4VG9ycmVudEluZGV4KTtcblxuICAgICAgICAgIHZhciB0b3JyZW50TGlzdCA9IHZpc2libGVUb3JyZW50cy5tYXAoZnVuY3Rpb24gKHRvcnJlbnQsIGluZGV4KSB7XG4gICAgICAgICAgICB2YXIgaXNTZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgICAgICAgdmFyIGhhc2ggPSB0b3JyZW50Lmhhc2g7XG5cbiAgICAgICAgICAgIGlmIChzZWxlY3RlZFRvcnJlbnRzLmluZGV4T2YoaGFzaCkgPiAtMSkge1xuICAgICAgICAgICAgICBpc1NlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIF9yZWFjdDJbJ2RlZmF1bHQnXS5jcmVhdGVFbGVtZW50KF9Ub3JyZW50MlsnZGVmYXVsdCddLCB7IGtleTogaGFzaCwgdG9ycmVudDogdG9ycmVudCwgc2VsZWN0ZWQ6IGlzU2VsZWN0ZWQsXG4gICAgICAgICAgICAgIGhhbmRsZUNsaWNrOiBfdGhpczIuaGFuZGxlVG9ycmVudENsaWNrLFxuICAgICAgICAgICAgICBoYW5kbGVSaWdodENsaWNrOiBfdGhpczIuaGFuZGxlUmlnaHRDbGljayxcbiAgICAgICAgICAgICAgaGFuZGxlRGV0YWlsc0NsaWNrOiBfdGhpczIuaGFuZGxlRGV0YWlsc0NsaWNrIH0pO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgY29udGVudCA9IF9yZWFjdDJbJ2RlZmF1bHQnXS5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgJ3VsJyxcbiAgICAgICAgICAgIHsgY2xhc3NOYW1lOiAndG9ycmVudF9fbGlzdCcsIGtleTogJ3RvcnJlbnRfX2xpc3QnIH0sXG4gICAgICAgICAgICBfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgICAgX3JlYWN0QWRkb25zQ3NzVHJhbnNpdGlvbkdyb3VwMlsnZGVmYXVsdCddLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbk5hbWU6ICdtZW51JyxcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uRW50ZXJUaW1lb3V0OiAyNTAsXG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbkxlYXZlVGltZW91dDogMjUwIH0sXG4gICAgICAgICAgICAgIGNvbnRleHRNZW51XG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoJ2xpJywgeyBjbGFzc05hbWU6ICd0b3JyZW50X19zcGFjZXIgdG9ycmVudF9fc3BhY2VyLS10b3AnLFxuICAgICAgICAgICAgICBzdHlsZTogeyBoZWlnaHQ6IGxpc3RQYWRkaW5nLnRvcCArICdweCcgfSB9KSxcbiAgICAgICAgICAgIHRvcnJlbnRMaXN0LFxuICAgICAgICAgICAgX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoJ2xpJywgeyBjbGFzc05hbWU6ICd0b3JyZW50X19zcGFjZXIgdG9ycmVudF9fc3BhY2VyLS1ib3R0b20nLFxuICAgICAgICAgICAgICBzdHlsZTogeyBoZWlnaHQ6IGxpc3RQYWRkaW5nLmJvdHRvbSArICdweCcgfSB9KVxuICAgICAgICAgICk7XG4gICAgICAgIH0pKCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudChcbiAgICAgICAgX3JlYWN0QWRkb25zQ3NzVHJhbnNpdGlvbkdyb3VwMlsnZGVmYXVsdCddLFxuICAgICAgICB7XG4gICAgICAgICAgY29tcG9uZW50OiAnZGl2JyxcbiAgICAgICAgICBjbGFzc05hbWU6ICd0b3JyZW50X19saXN0X193cmFwcGVyJyxcbiAgICAgICAgICB0cmFuc2l0aW9uTmFtZTogJ3RvcnJlbnRfX2xpc3QtLWxvYWRpbmcnLFxuICAgICAgICAgIHRyYW5zaXRpb25FbnRlclRpbWVvdXQ6IDEwMDAsXG4gICAgICAgICAgdHJhbnNpdGlvbkxlYXZlVGltZW91dDogMTAwMCB9LFxuICAgICAgICBfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudChcbiAgICAgICAgICBfdWlDdXN0b21TY3JvbGxiYXJzMlsnZGVmYXVsdCddLFxuICAgICAgICAgIHsgY2xhc3NOYW1lOiAndG9ycmVudF9fbGlzdF9fd3JhcHBlci0tY3VzdG9tLXNjcm9sbCcsXG4gICAgICAgICAgICByZWY6ICd0b3JyZW50TGlzdCcsIHNjcm9sbEhhbmRsZXI6IHRoaXMuc2V0U2Nyb2xsUG9zaXRpb24gfSxcbiAgICAgICAgICBjb250ZW50XG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFRvcnJlbnRMaXN0Q29udGFpbmVyO1xufSkoX3JlYWN0MlsnZGVmYXVsdCddLkNvbXBvbmVudCk7XG5cbmV4cG9ydHNbJ2RlZmF1bHQnXSA9IFRvcnJlbnRMaXN0Q29udGFpbmVyO1xubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL2NsaWVudC9zb3VyY2Uvc2NyaXB0cy9jb21wb25lbnRzL3RvcnJlbnQtbGlzdC9Ub3JyZW50TGlzdC5qc1xuICoqIG1vZHVsZSBpZCA9IDI5OFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIl0sInNvdXJjZVJvb3QiOiIifQ=="); + eval("'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\n\nvar _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _lodash = __webpack_require__(161);\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _classnames = __webpack_require__(171);\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _reactAddonsCssTransitionGroup = __webpack_require__(163);\n\nvar _reactAddonsCssTransitionGroup2 = _interopRequireDefault(_reactAddonsCssTransitionGroup);\n\nvar _react = __webpack_require__(1);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = __webpack_require__(157);\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _uiContextMenu = __webpack_require__(299);\n\nvar _uiContextMenu2 = _interopRequireDefault(_uiContextMenu);\n\nvar _uiCustomScrollbars = __webpack_require__(220);\n\nvar _uiCustomScrollbars2 = _interopRequireDefault(_uiCustomScrollbars);\n\nvar _constantsEventTypes = __webpack_require__(176);\n\nvar _constantsEventTypes2 = _interopRequireDefault(_constantsEventTypes);\n\nvar _uiLoadingIndicator = __webpack_require__(247);\n\nvar _uiLoadingIndicator2 = _interopRequireDefault(_uiLoadingIndicator);\n\nvar _constantsPriorityLevels = __webpack_require__(275);\n\nvar _constantsPriorityLevels2 = _interopRequireDefault(_constantsPriorityLevels);\n\nvar _filesystemPriorityMeter = __webpack_require__(274);\n\nvar _filesystemPriorityMeter2 = _interopRequireDefault(_filesystemPriorityMeter);\n\nvar _Torrent = __webpack_require__(300);\n\nvar _Torrent2 = _interopRequireDefault(_Torrent);\n\nvar _actionsTorrentActions = __webpack_require__(186);\n\nvar _actionsTorrentActions2 = _interopRequireDefault(_actionsTorrentActions);\n\nvar _storesTorrentFilterStore = __webpack_require__(207);\n\nvar _storesTorrentFilterStore2 = _interopRequireDefault(_storesTorrentFilterStore);\n\nvar _storesTorrentStore = __webpack_require__(201);\n\nvar _storesTorrentStore2 = _interopRequireDefault(_storesTorrentStore);\n\nvar _actionsUIActions = __webpack_require__(208);\n\nvar _actionsUIActions2 = _interopRequireDefault(_actionsUIActions);\n\nvar _storesUIStore = __webpack_require__(177);\n\nvar _storesUIStore2 = _interopRequireDefault(_storesUIStore);\n\nvar METHODS_TO_BIND = ['bindExternalPriorityChangeHandler', 'onReceiveTorrentsError', 'onReceiveTorrentsSuccess', 'handleContextMenuItemClick', 'handleDetailsClick', 'handleRightClick', 'handleTorrentClick', 'onContextMenuChange', 'onTorrentFilterChange', 'onTorrentSelectionChange', 'getListPadding', 'getViewportLimits', 'setScrollPosition', 'setViewportHeight'];\n\nvar TorrentListContainer = (function (_React$Component) {\n _inherits(TorrentListContainer, _React$Component);\n\n function TorrentListContainer() {\n var _this = this;\n\n _classCallCheck(this, TorrentListContainer);\n\n _get(Object.getPrototypeOf(TorrentListContainer.prototype), 'constructor', this).call(this);\n\n this.state = {\n handleTorrentPriorityChange: null,\n contextMenu: null,\n maxTorrentIndex: 10,\n minTorrentIndex: 0,\n scrollPosition: 0,\n torrentCount: 0,\n torrentHeight: 64,\n torrents: null,\n torrentRequestError: false,\n torrentRequestSuccess: false,\n viewportHeight: 0\n };\n\n METHODS_TO_BIND.forEach(function (method) {\n _this[method] = _this[method].bind(_this);\n });\n\n this.setScrollPosition = _lodash2['default'].throttle(this.setScrollPosition, 100, {\n leading: true,\n trailing: true\n });\n\n this.handleWindowResize = _lodash2['default'].throttle(this.setViewportHeight, 350, {\n leading: true,\n trailing: true\n });\n }\n\n _createClass(TorrentListContainer, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n _storesUIStore2['default'].registerDependency('torrent-list');\n _storesTorrentStore2['default'].listen(_constantsEventTypes2['default'].UI_TORRENT_SELECTION_CHANGE, this.onTorrentSelectionChange);\n _storesTorrentStore2['default'].listen(_constantsEventTypes2['default'].CLIENT_TORRENTS_REQUEST_SUCCESS, this.onReceiveTorrentsSuccess);\n _storesTorrentStore2['default'].listen(_constantsEventTypes2['default'].CLIENT_TORRENTS_REQUEST_ERROR, this.onReceiveTorrentsError);\n _storesTorrentFilterStore2['default'].listen(_constantsEventTypes2['default'].UI_TORRENTS_FILTER_CHANGE, this.onTorrentFilterChange);\n _storesUIStore2['default'].listen(_constantsEventTypes2['default'].UI_CONTEXT_MENU_CHANGE, this.onContextMenuChange);\n _storesTorrentStore2['default'].fetchTorrents();\n window.addEventListener('resize', this.handleWindowResize);\n this.setViewportHeight();\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n window.removeEventListener('resize', this.handleWindowResize);\n _storesTorrentStore2['default'].unlisten(_constantsEventTypes2['default'].UI_TORRENT_SELECTION_CHANGE, this.onTorrentSelectionChange);\n _storesTorrentStore2['default'].unlisten(_constantsEventTypes2['default'].CLIENT_TORRENTS_REQUEST_SUCCESS, this.onReceiveTorrentsSuccess);\n _storesTorrentStore2['default'].unlisten(_constantsEventTypes2['default'].CLIENT_TORRENTS_REQUEST_ERROR, this.onReceiveTorrentsError);\n _storesTorrentFilterStore2['default'].unlisten(_constantsEventTypes2['default'].UI_TORRENTS_FILTER_CHANGE, this.onTorrentFilterChange);\n _storesUIStore2['default'].unlisten(_constantsEventTypes2['default'].UI_CONTEXT_MENU_CHANGE, this.onContextMenuChange);\n }\n }, {\n key: 'bindExternalPriorityChangeHandler',\n value: function bindExternalPriorityChangeHandler(eventHandler) {\n this.setState({ handleTorrentPriorityChange: eventHandler });\n }\n }, {\n key: 'getContextMenuItems',\n value: function getContextMenuItems(torrent) {\n var clickHandler = this.handleContextMenuItemClick;\n\n return [{\n action: 'start',\n clickHandler: clickHandler,\n label: 'Start'\n }, {\n action: 'stop',\n clickHandler: clickHandler,\n label: 'Stop'\n }, {\n action: 'pause',\n clickHandler: clickHandler,\n label: 'Pause'\n }, {\n action: 'remove',\n clickHandler: clickHandler,\n label: 'Remove'\n }, {\n type: 'separator'\n }, {\n action: 'move',\n clickHandler: clickHandler,\n label: 'Download Location...'\n }, {\n action: 'set-priority',\n clickHandler: clickHandler,\n label: 'Priority',\n labelAction: _react2['default'].createElement(_filesystemPriorityMeter2['default'], { id: torrent.hash, key: torrent.hash,\n bindExternalChangeHandler: this.bindExternalPriorityChangeHandler,\n level: torrent.priority, maxLevel: 3, priorityType: 'torrent',\n onChange: this.handleTorrentPriorityChange, showLabel: false })\n }];\n }\n }, {\n key: 'handleContextMenuItemClick',\n value: function handleContextMenuItemClick(action, event) {\n var selectedTorrents = _storesTorrentStore2['default'].getSelectedTorrents();\n switch (action) {\n case 'start':\n _actionsTorrentActions2['default'].startTorrents(selectedTorrents);\n break;\n case 'stop':\n _actionsTorrentActions2['default'].stopTorrents(selectedTorrents);\n break;\n case 'pause':\n _actionsTorrentActions2['default'].pauseTorrents(selectedTorrents);\n break;\n case 'remove':\n _actionsTorrentActions2['default'].deleteTorrents(selectedTorrents);\n break;\n case 'move':\n this.handleContextMenuMoveClick(selectedTorrents);\n break;\n case 'set-priority':\n this.state.handleTorrentPriorityChange(event);\n break;\n }\n }\n }, {\n key: 'handleContextMenuMoveClick',\n value: function handleContextMenuMoveClick(hashes) {\n _actionsUIActions2['default'].displayModal('move-torrents');\n }\n }, {\n key: 'handleDetailsClick',\n value: function handleDetailsClick(torrent, event) {\n _actionsUIActions2['default'].handleDetailsClick({\n hash: torrent.hash,\n event: event\n });\n }\n }, {\n key: 'handleRightClick',\n value: function handleRightClick(torrent, event) {\n event.preventDefault();\n\n _storesUIStore2['default'].setActiveContextMenu({\n clickPosition: {\n x: event.clientX,\n y: event.clientY\n },\n items: this.getContextMenuItems(torrent)\n });\n }\n }, {\n key: 'handleTorrentClick',\n value: function handleTorrentClick(hash, event) {\n _actionsUIActions2['default'].handleTorrentClick({ hash: hash, event: event });\n }\n }, {\n key: 'handleTorrentPriorityChange',\n value: function handleTorrentPriorityChange(hash, level) {\n _actionsTorrentActions2['default'].setPriority(hash, level);\n }\n }, {\n key: 'onContextMenuChange',\n value: function onContextMenuChange() {\n this.setState({ contextMenu: _storesUIStore2['default'].getActiveContextMenu() });\n }\n }, {\n key: 'onReceiveTorrentsError',\n value: function onReceiveTorrentsError() {\n this.setState({ torrentRequestError: true, torrentRequestSuccess: false });\n }\n }, {\n key: 'onReceiveTorrentsSuccess',\n value: function onReceiveTorrentsSuccess() {\n var torrents = _storesTorrentStore2['default'].getTorrents();\n\n this.setState({\n torrents: torrents,\n torrentCount: torrents.length,\n torrentRequestError: false,\n torrentRequestSuccess: true\n });\n\n if (!_storesUIStore2['default'].hasSatisfiedDependencies()) {\n _storesUIStore2['default'].satisfyDependency('torrent-list');\n }\n }\n }, {\n key: 'onTorrentFilterChange',\n value: function onTorrentFilterChange() {\n this.forceUpdate();\n }\n }, {\n key: 'onTorrentSelectionChange',\n value: function onTorrentSelectionChange() {\n if (_storesTorrentStore2['default'].getSelectedTorrents().length !== 1) {\n _storesUIStore2['default'].closeTorrentDetailsPanel();\n }\n\n this.forceUpdate();\n }\n }, {\n key: 'getListPadding',\n value: function getListPadding(minTorrentIndex, maxTorrentIndex, torrentCount) {\n // Calculate the number of pixels to pad the visible item list.\n // If the minimum item index is less than 0, then we're already at the top\n // of the list and don't need to render any padding there.\n if (minTorrentIndex < 0) {\n minTorrentIndex = 0;\n }\n\n if (maxTorrentIndex > torrentCount) {\n maxTorrentIndex = torrentCount;\n }\n\n var hiddenBottom = torrentCount - maxTorrentIndex;\n var hiddenTop = minTorrentIndex;\n\n var bottom = hiddenBottom * this.state.torrentHeight;\n var top = hiddenTop * this.state.torrentHeight;\n\n return { bottom: bottom, top: top };\n }\n }, {\n key: 'getLoadingIndicator',\n value: function getLoadingIndicator() {\n return _react2['default'].createElement(_uiLoadingIndicator2['default'], null);\n }\n }, {\n key: 'getViewportLimits',\n value: function getViewportLimits() {\n // Calculate the number of items that should be rendered based on the height\n // of the viewport. We offset this to render a few more outide of the\n // container's dimensions, which looks nicer when the user scrolls.\n var offset = 10;\n\n // The number of elements in view is the height of the viewport divided\n // by the height of the elements.\n var elementsInView = Math.floor(this.state.viewportHeight / this.state.torrentHeight);\n\n // The minimum item index to render is the number of items above the\n // viewport's current scroll position, minus the offset.\n var minTorrentIndex = Math.floor(this.state.scrollPosition / this.state.torrentHeight) - offset;\n\n // The maximum item index to render is the minimum item rendered, plus the\n // number of items in view, plus double the offset.\n var maxTorrentIndex = minTorrentIndex + elementsInView + offset * 2;\n\n return { minTorrentIndex: minTorrentIndex, maxTorrentIndex: maxTorrentIndex };\n }\n }, {\n key: 'setScrollPosition',\n value: function setScrollPosition(scrollValues) {\n this.setState({ scrollPosition: scrollValues.scrollTop });\n }\n }, {\n key: 'setViewportHeight',\n value: function setViewportHeight() {\n if (this.refs.torrentList) {\n this.setState({\n viewportHeight: this.refs.torrentList.refs.scrollbar.getClientHeight()\n });\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var content = this.getLoadingIndicator();\n\n if (this.state.torrentRequestSuccess) {\n (function () {\n var contextMenu = null;\n var selectedTorrents = _storesTorrentStore2['default'].getSelectedTorrents();\n var torrents = _this2.state.torrents;\n var viewportLimits = _this2.getViewportLimits();\n\n var listPadding = _this2.getListPadding(viewportLimits.minTorrentIndex, viewportLimits.maxTorrentIndex, torrents.length);\n\n var maxTorrentIndex = viewportLimits.maxTorrentIndex;\n var minTorrentIndex = viewportLimits.minTorrentIndex;\n\n if (minTorrentIndex < 0) {\n minTorrentIndex = 0;\n }\n\n if (_this2.state.contextMenu != null) {\n contextMenu = _react2['default'].createElement(_uiContextMenu2['default'], { clickPosition: _this2.state.contextMenu.clickPosition,\n items: _this2.state.contextMenu.items });\n }\n\n var visibleTorrents = torrents.slice(minTorrentIndex, maxTorrentIndex);\n\n var torrentList = visibleTorrents.map(function (torrent, index) {\n var isSelected = false;\n var hash = torrent.hash;\n\n if (selectedTorrents.indexOf(hash) > -1) {\n isSelected = true;\n }\n\n return _react2['default'].createElement(_Torrent2['default'], { key: hash, torrent: torrent, selected: isSelected,\n handleClick: _this2.handleTorrentClick,\n handleRightClick: _this2.handleRightClick,\n handleDetailsClick: _this2.handleDetailsClick });\n });\n\n content = _react2['default'].createElement(\n 'ul',\n { className: 'torrent__list', key: 'torrent__list' },\n _react2['default'].createElement(\n _reactAddonsCssTransitionGroup2['default'],\n {\n transitionName: 'menu',\n transitionEnterTimeout: 250,\n transitionLeaveTimeout: 250 },\n contextMenu\n ),\n _react2['default'].createElement('li', { className: 'torrent__spacer torrent__spacer--top',\n style: { height: listPadding.top + 'px' } }),\n torrentList,\n _react2['default'].createElement('li', { className: 'torrent__spacer torrent__spacer--bottom',\n style: { height: listPadding.bottom + 'px' } })\n );\n })();\n }\n\n return _react2['default'].createElement(\n 'div',\n { className: 'torrent__list__wrapper' },\n _react2['default'].createElement(\n _uiCustomScrollbars2['default'],\n { className: 'torrent__list__wrapper--custom-scroll',\n ref: 'torrentList', scrollHandler: this.setScrollPosition },\n content\n )\n );\n }\n }]);\n\n return TorrentListContainer;\n})(_react2['default'].Component);\n\nexports['default'] = TorrentListContainer;\nmodule.exports = exports['default'];//@ sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9jbGllbnQvc291cmNlL3NjcmlwdHMvY29tcG9uZW50cy90b3JyZW50LWxpc3QvVG9ycmVudExpc3QuanM/ZDcyYyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7QUFFQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRCxpQ0FBaUMsMkNBQTJDLGdCQUFnQixrQkFBa0IsT0FBTywyQkFBMkIsd0RBQXdELGdDQUFnQyx1REFBdUQsMkRBQTJELEVBQUUsRUFBRSx5REFBeUQscUVBQXFFLDZEQUE2RCxvQkFBb0IsR0FBRyxFQUFFOztBQUVsakIsdUNBQXVDLG1CQUFtQiw0QkFBNEIsaURBQWlELGdCQUFnQixrREFBa0QsOERBQThELDBCQUEwQiw0Q0FBNEMsdUJBQXVCLGtCQUFrQixFQUFFLE9BQU8sYUFBYSxnQkFBZ0IsZ0JBQWdCLGVBQWUsMkJBQTJCLG9CQUFvQixFQUFFLEVBQUUsNEJBQTRCLG1CQUFtQixFQUFFLE9BQU8sdUJBQXVCLDRCQUE0QixrQkFBa0IsRUFBRSw4QkFBOEIsRUFBRSxFQUFFOztBQUUvb0Isc0NBQXNDLHVDQUF1QyxrQkFBa0I7O0FBRS9GLGlEQUFpRCwwQ0FBMEMsMERBQTBELEVBQUU7O0FBRXZKLDBDQUEwQywrREFBK0QscUdBQXFHLEVBQUUseUVBQXlFLGVBQWUseUVBQXlFLEVBQUUsRUFBRSx1SEFBdUg7O0FBRTVlOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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REFBb0Q7QUFDcEQsc0JBQXNCLG9DQUFvQyxFQUFFO0FBQzVEO0FBQ0EsU0FBUztBQUNUOztBQUVBO0FBQ0E7QUFDQSxTQUFTLHNDQUFzQztBQUMvQztBQUNBO0FBQ0EsV0FBVztBQUNYLHVFQUF1RTtBQUN2RTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQSxDQUFDOztBQUVEO0FBQ0EiLCJmaWxlIjoiMjk4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcblxudmFyIF9jcmVhdGVDbGFzcyA9IChmdW5jdGlvbiAoKSB7IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoJ3ZhbHVlJyBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpOyB9IH0gcmV0dXJuIGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfTsgfSkoKTtcblxudmFyIF9nZXQgPSBmdW5jdGlvbiBnZXQoX3gsIF94MiwgX3gzKSB7IHZhciBfYWdhaW4gPSB0cnVlOyBfZnVuY3Rpb246IHdoaWxlIChfYWdhaW4pIHsgdmFyIG9iamVjdCA9IF94LCBwcm9wZXJ0eSA9IF94MiwgcmVjZWl2ZXIgPSBfeDM7IF9hZ2FpbiA9IGZhbHNlOyBpZiAob2JqZWN0ID09PSBudWxsKSBvYmplY3QgPSBGdW5jdGlvbi5wcm90b3R5cGU7IHZhciBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHByb3BlcnR5KTsgaWYgKGRlc2MgPT09IHVuZGVmaW5lZCkgeyB2YXIgcGFyZW50ID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKG9iamVjdCk7IGlmIChwYXJlbnQgPT09IG51bGwpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfSBlbHNlIHsgX3ggPSBwYXJlbnQ7IF94MiA9IHByb3BlcnR5OyBfeDMgPSByZWNlaXZlcjsgX2FnYWluID0gdHJ1ZTsgZGVzYyA9IHBhcmVudCA9IHVuZGVmaW5lZDsgY29udGludWUgX2Z1bmN0aW9uOyB9IH0gZWxzZSBpZiAoJ3ZhbHVlJyBpbiBkZXNjKSB7IHJldHVybiBkZXNjLnZhbHVlOyB9IGVsc2UgeyB2YXIgZ2V0dGVyID0gZGVzYy5nZXQ7IGlmIChnZXR0ZXIgPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9IHJldHVybiBnZXR0ZXIuY2FsbChyZWNlaXZlcik7IH0gfSB9O1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyAnZGVmYXVsdCc6IG9iaiB9OyB9XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcignQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uJyk7IH0gfVxuXG5mdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHsgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSAnZnVuY3Rpb24nICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcignU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAnICsgdHlwZW9mIHN1cGVyQ2xhc3MpOyB9IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogc3ViQ2xhc3MsIGVudW1lcmFibGU6IGZhbHNlLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0gfSk7IGlmIChzdXBlckNsYXNzKSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIDogc3ViQ2xhc3MuX19wcm90b19fID0gc3VwZXJDbGFzczsgfVxuXG52YXIgX2xvZGFzaCA9IHJlcXVpcmUoJ2xvZGFzaCcpO1xuXG52YXIgX2xvZGFzaDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9sb2Rhc2gpO1xuXG52YXIgX2NsYXNzbmFtZXMgPSByZXF1aXJlKCdjbGFzc25hbWVzJyk7XG5cbnZhciBfY2xhc3NuYW1lczIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jbGFzc25hbWVzKTtcblxudmFyIF9yZWFjdEFkZG9uc0Nzc1RyYW5zaXRpb25Hcm91cCA9IHJlcXVpcmUoJ3JlYWN0LWFkZG9ucy1jc3MtdHJhbnNpdGlvbi1ncm91cCcpO1xuXG52YXIgX3JlYWN0QWRkb25zQ3NzVHJhbnNpdGlvbkdyb3VwMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3JlYWN0QWRkb25zQ3NzVHJhbnNpdGlvbkdyb3VwKTtcblxudmFyIF9yZWFjdCA9IHJlcXVpcmUoJ3JlYWN0Jyk7XG5cbnZhciBfcmVhY3QyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfcmVhY3QpO1xuXG52YXIgX3JlYWN0RG9tID0gcmVxdWlyZSgncmVhY3QtZG9tJyk7XG5cbnZhciBfcmVhY3REb20yID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfcmVhY3REb20pO1xuXG52YXIgX3VpQ29udGV4dE1lbnUgPSByZXF1aXJlKCcuLi91aS9Db250ZXh0TWVudScpO1xuXG52YXIgX3VpQ29udGV4dE1lbnUyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfdWlDb250ZXh0TWVudSk7XG5cbnZhciBfdWlDdXN0b21TY3JvbGxiYXJzID0gcmVxdWlyZSgnLi4vdWkvQ3VzdG9tU2Nyb2xsYmFycycpO1xuXG52YXIgX3VpQ3VzdG9tU2Nyb2xsYmFyczIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF91aUN1c3RvbVNjcm9sbGJhcnMpO1xuXG52YXIgX2NvbnN0YW50c0V2ZW50VHlwZXMgPSByZXF1aXJlKCcuLi8uLi9jb25zdGFudHMvRXZlbnRUeXBlcycpO1xuXG52YXIgX2NvbnN0YW50c0V2ZW50VHlwZXMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY29uc3RhbnRzRXZlbnRUeXBlcyk7XG5cbnZhciBfdWlMb2FkaW5nSW5kaWNhdG9yID0gcmVxdWlyZSgnLi4vdWkvTG9hZGluZ0luZGljYXRvcicpO1xuXG52YXIgX3VpTG9hZGluZ0luZGljYXRvcjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF91aUxvYWRpbmdJbmRpY2F0b3IpO1xuXG52YXIgX2NvbnN0YW50c1ByaW9yaXR5TGV2ZWxzID0gcmVxdWlyZSgnLi4vLi4vY29uc3RhbnRzL1ByaW9yaXR5TGV2ZWxzJyk7XG5cbnZhciBfY29uc3RhbnRzUHJpb3JpdHlMZXZlbHMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY29uc3RhbnRzUHJpb3JpdHlMZXZlbHMpO1xuXG52YXIgX2ZpbGVzeXN0ZW1Qcmlvcml0eU1ldGVyID0gcmVxdWlyZSgnLi4vZmlsZXN5c3RlbS9Qcmlvcml0eU1ldGVyJyk7XG5cbnZhciBfZmlsZXN5c3RlbVByaW9yaXR5TWV0ZXIyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZmlsZXN5c3RlbVByaW9yaXR5TWV0ZXIpO1xuXG52YXIgX1RvcnJlbnQgPSByZXF1aXJlKCcuL1RvcnJlbnQnKTtcblxudmFyIF9Ub3JyZW50MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX1RvcnJlbnQpO1xuXG52YXIgX2FjdGlvbnNUb3JyZW50QWN0aW9ucyA9IHJlcXVpcmUoJy4uLy4uL2FjdGlvbnMvVG9ycmVudEFjdGlvbnMnKTtcblxudmFyIF9hY3Rpb25zVG9ycmVudEFjdGlvbnMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfYWN0aW9uc1RvcnJlbnRBY3Rpb25zKTtcblxudmFyIF9zdG9yZXNUb3JyZW50RmlsdGVyU3RvcmUgPSByZXF1aXJlKCcuLi8uLi9zdG9yZXMvVG9ycmVudEZpbHRlclN0b3JlJyk7XG5cbnZhciBfc3RvcmVzVG9ycmVudEZpbHRlclN0b3JlMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3N0b3Jlc1RvcnJlbnRGaWx0ZXJTdG9yZSk7XG5cbnZhciBfc3RvcmVzVG9ycmVudFN0b3JlID0gcmVxdWlyZSgnLi4vLi4vc3RvcmVzL1RvcnJlbnRTdG9yZScpO1xuXG52YXIgX3N0b3Jlc1RvcnJlbnRTdG9yZTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9zdG9yZXNUb3JyZW50U3RvcmUpO1xuXG52YXIgX2FjdGlvbnNVSUFjdGlvbnMgPSByZXF1aXJlKCcuLi8uLi9hY3Rpb25zL1VJQWN0aW9ucycpO1xuXG52YXIgX2FjdGlvbnNVSUFjdGlvbnMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfYWN0aW9uc1VJQWN0aW9ucyk7XG5cbnZhciBfc3RvcmVzVUlTdG9yZSA9IHJlcXVpcmUoJy4uLy4uL3N0b3Jlcy9VSVN0b3JlJyk7XG5cbnZhciBfc3RvcmVzVUlTdG9yZTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9zdG9yZXNVSVN0b3JlKTtcblxudmFyIE1FVEhPRFNfVE9fQklORCA9IFsnYmluZEV4dGVybmFsUHJpb3JpdHlDaGFuZ2VIYW5kbGVyJywgJ29uUmVjZWl2ZVRvcnJlbnRzRXJyb3InLCAnb25SZWNlaXZlVG9ycmVudHNTdWNjZXNzJywgJ2hhbmRsZUNvbnRleHRNZW51SXRlbUNsaWNrJywgJ2hhbmRsZURldGFpbHNDbGljaycsICdoYW5kbGVSaWdodENsaWNrJywgJ2hhbmRsZVRvcnJlbnRDbGljaycsICdvbkNvbnRleHRNZW51Q2hhbmdlJywgJ29uVG9ycmVudEZpbHRlckNoYW5nZScsICdvblRvcnJlbnRTZWxlY3Rpb25DaGFuZ2UnLCAnZ2V0TGlzdFBhZGRpbmcnLCAnZ2V0Vmlld3BvcnRMaW1pdHMnLCAnc2V0U2Nyb2xsUG9zaXRpb24nLCAnc2V0Vmlld3BvcnRIZWlnaHQnXTtcblxudmFyIFRvcnJlbnRMaXN0Q29udGFpbmVyID0gKGZ1bmN0aW9uIChfUmVhY3QkQ29tcG9uZW50KSB7XG4gIF9pbmhlcml0cyhUb3JyZW50TGlzdENvbnRhaW5lciwgX1JlYWN0JENvbXBvbmVudCk7XG5cbiAgZnVuY3Rpb24gVG9ycmVudExpc3RDb250YWluZXIoKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBUb3JyZW50TGlzdENvbnRhaW5lcik7XG5cbiAgICBfZ2V0KE9iamVjdC5nZXRQcm90b3R5cGVPZihUb3JyZW50TGlzdENvbnRhaW5lci5wcm90b3R5cGUpLCAnY29uc3RydWN0b3InLCB0aGlzKS5jYWxsKHRoaXMpO1xuXG4gICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgIGhhbmRsZVRvcnJlbnRQcmlvcml0eUNoYW5nZTogbnVsbCxcbiAgICAgIGNvbnRleHRNZW51OiBudWxsLFxuICAgICAgbWF4VG9ycmVudEluZGV4OiAxMCxcbiAgICAgIG1pblRvcnJlbnRJbmRleDogMCxcbiAgICAgIHNjcm9sbFBvc2l0aW9uOiAwLFxuICAgICAgdG9ycmVudENvdW50OiAwLFxuICAgICAgdG9ycmVudEhlaWdodDogNjQsXG4gICAgICB0b3JyZW50czogbnVsbCxcbiAgICAgIHRvcnJlbnRSZXF1ZXN0RXJyb3I6IGZhbHNlLFxuICAgICAgdG9ycmVudFJlcXVlc3RTdWNjZXNzOiBmYWxzZSxcbiAgICAgIHZpZXdwb3J0SGVpZ2h0OiAwXG4gICAgfTtcblxuICAgIE1FVEhPRFNfVE9fQklORC5mb3JFYWNoKGZ1bmN0aW9uIChtZXRob2QpIHtcbiAgICAgIF90aGlzW21ldGhvZF0gPSBfdGhpc1ttZXRob2RdLmJpbmQoX3RoaXMpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5zZXRTY3JvbGxQb3NpdGlvbiA9IF9sb2Rhc2gyWydkZWZhdWx0J10udGhyb3R0bGUodGhpcy5zZXRTY3JvbGxQb3NpdGlvbiwgMTAwLCB7XG4gICAgICBsZWFkaW5nOiB0cnVlLFxuICAgICAgdHJhaWxpbmc6IHRydWVcbiAgICB9KTtcblxuICAgIHRoaXMuaGFuZGxlV2luZG93UmVzaXplID0gX2xvZGFzaDJbJ2RlZmF1bHQnXS50aHJvdHRsZSh0aGlzLnNldFZpZXdwb3J0SGVpZ2h0LCAzNTAsIHtcbiAgICAgIGxlYWRpbmc6IHRydWUsXG4gICAgICB0cmFpbGluZzogdHJ1ZVxuICAgIH0pO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKFRvcnJlbnRMaXN0Q29udGFpbmVyLCBbe1xuICAgIGtleTogJ2NvbXBvbmVudERpZE1vdW50JyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgICBfc3RvcmVzVUlTdG9yZTJbJ2RlZmF1bHQnXS5yZWdpc3RlckRlcGVuZGVuY3koJ3RvcnJlbnQtbGlzdCcpO1xuICAgICAgX3N0b3Jlc1RvcnJlbnRTdG9yZTJbJ2RlZmF1bHQnXS5saXN0ZW4oX2NvbnN0YW50c0V2ZW50VHlwZXMyWydkZWZhdWx0J10uVUlfVE9SUkVOVF9TRUxFQ1RJT05fQ0hBTkdFLCB0aGlzLm9uVG9ycmVudFNlbGVjdGlvbkNoYW5nZSk7XG4gICAgICBfc3RvcmVzVG9ycmVudFN0b3JlMlsnZGVmYXVsdCddLmxpc3RlbihfY29uc3RhbnRzRXZlbnRUeXBlczJbJ2RlZmF1bHQnXS5DTElFTlRfVE9SUkVOVFNfUkVRVUVTVF9TVUNDRVNTLCB0aGlzLm9uUmVjZWl2ZVRvcnJlbnRzU3VjY2Vzcyk7XG4gICAgICBfc3RvcmVzVG9ycmVudFN0b3JlMlsnZGVmYXVsdCddLmxpc3RlbihfY29uc3RhbnRzRXZlbnRUeXBlczJbJ2RlZmF1bHQnXS5DTElFTlRfVE9SUkVOVFNfUkVRVUVTVF9FUlJPUiwgdGhpcy5vblJlY2VpdmVUb3JyZW50c0Vycm9yKTtcbiAgICAgIF9zdG9yZXNUb3JyZW50RmlsdGVyU3RvcmUyWydkZWZhdWx0J10ubGlzdGVuKF9jb25zdGFudHNFdmVudFR5cGVzMlsnZGVmYXVsdCddLlVJX1RPUlJFTlRTX0ZJTFRFUl9DSEFOR0UsIHRoaXMub25Ub3JyZW50RmlsdGVyQ2hhbmdlKTtcbiAgICAgIF9zdG9yZXNVSVN0b3JlMlsnZGVmYXVsdCddLmxpc3RlbihfY29uc3RhbnRzRXZlbnRUeXBlczJbJ2RlZmF1bHQnXS5VSV9DT05URVhUX01FTlVfQ0hBTkdFLCB0aGlzLm9uQ29udGV4dE1lbnVDaGFuZ2UpO1xuICAgICAgX3N0b3Jlc1RvcnJlbnRTdG9yZTJbJ2RlZmF1bHQnXS5mZXRjaFRvcnJlbnRzKCk7XG4gICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5oYW5kbGVXaW5kb3dSZXNpemUpO1xuICAgICAgdGhpcy5zZXRWaWV3cG9ydEhlaWdodCgpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2NvbXBvbmVudFdpbGxVbm1vdW50JyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29tcG9uZW50V2lsbFVubW91bnQoKSB7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5oYW5kbGVXaW5kb3dSZXNpemUpO1xuICAgICAgX3N0b3Jlc1RvcnJlbnRTdG9yZTJbJ2RlZmF1bHQnXS51bmxpc3RlbihfY29uc3RhbnRzRXZlbnRUeXBlczJbJ2RlZmF1bHQnXS5VSV9UT1JSRU5UX1NFTEVDVElPTl9DSEFOR0UsIHRoaXMub25Ub3JyZW50U2VsZWN0aW9uQ2hhbmdlKTtcbiAgICAgIF9zdG9yZXNUb3JyZW50U3RvcmUyWydkZWZhdWx0J10udW5saXN0ZW4oX2NvbnN0YW50c0V2ZW50VHlwZXMyWydkZWZhdWx0J10uQ0xJRU5UX1RPUlJFTlRTX1JFUVVFU1RfU1VDQ0VTUywgdGhpcy5vblJlY2VpdmVUb3JyZW50c1N1Y2Nlc3MpO1xuICAgICAgX3N0b3Jlc1RvcnJlbnRTdG9yZTJbJ2RlZmF1bHQnXS51bmxpc3RlbihfY29uc3RhbnRzRXZlbnRUeXBlczJbJ2RlZmF1bHQnXS5DTElFTlRfVE9SUkVOVFNfUkVRVUVTVF9FUlJPUiwgdGhpcy5vblJlY2VpdmVUb3JyZW50c0Vycm9yKTtcbiAgICAgIF9zdG9yZXNUb3JyZW50RmlsdGVyU3RvcmUyWydkZWZhdWx0J10udW5saXN0ZW4oX2NvbnN0YW50c0V2ZW50VHlwZXMyWydkZWZhdWx0J10uVUlfVE9SUkVOVFNfRklMVEVSX0NIQU5HRSwgdGhpcy5vblRvcnJlbnRGaWx0ZXJDaGFuZ2UpO1xuICAgICAgX3N0b3Jlc1VJU3RvcmUyWydkZWZhdWx0J10udW5saXN0ZW4oX2NvbnN0YW50c0V2ZW50VHlwZXMyWydkZWZhdWx0J10uVUlfQ09OVEVYVF9NRU5VX0NIQU5HRSwgdGhpcy5vbkNvbnRleHRNZW51Q2hhbmdlKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdiaW5kRXh0ZXJuYWxQcmlvcml0eUNoYW5nZUhhbmRsZXInLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBiaW5kRXh0ZXJuYWxQcmlvcml0eUNoYW5nZUhhbmRsZXIoZXZlbnRIYW5kbGVyKSB7XG4gICAgICB0aGlzLnNldFN0YXRlKHsgaGFuZGxlVG9ycmVudFByaW9yaXR5Q2hhbmdlOiBldmVudEhhbmRsZXIgfSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnZ2V0Q29udGV4dE1lbnVJdGVtcycsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldENvbnRleHRNZW51SXRlbXModG9ycmVudCkge1xuICAgICAgdmFyIGNsaWNrSGFuZGxlciA9IHRoaXMuaGFuZGxlQ29udGV4dE1lbnVJdGVtQ2xpY2s7XG5cbiAgICAgIHJldHVybiBbe1xuICAgICAgICBhY3Rpb246ICdzdGFydCcsXG4gICAgICAgIGNsaWNrSGFuZGxlcjogY2xpY2tIYW5kbGVyLFxuICAgICAgICBsYWJlbDogJ1N0YXJ0J1xuICAgICAgfSwge1xuICAgICAgICBhY3Rpb246ICdzdG9wJyxcbiAgICAgICAgY2xpY2tIYW5kbGVyOiBjbGlja0hhbmRsZXIsXG4gICAgICAgIGxhYmVsOiAnU3RvcCdcbiAgICAgIH0sIHtcbiAgICAgICAgYWN0aW9uOiAncGF1c2UnLFxuICAgICAgICBjbGlja0hhbmRsZXI6IGNsaWNrSGFuZGxlcixcbiAgICAgICAgbGFiZWw6ICdQYXVzZSdcbiAgICAgIH0sIHtcbiAgICAgICAgYWN0aW9uOiAncmVtb3ZlJyxcbiAgICAgICAgY2xpY2tIYW5kbGVyOiBjbGlja0hhbmRsZXIsXG4gICAgICAgIGxhYmVsOiAnUmVtb3ZlJ1xuICAgICAgfSwge1xuICAgICAgICB0eXBlOiAnc2VwYXJhdG9yJ1xuICAgICAgfSwge1xuICAgICAgICBhY3Rpb246ICdtb3ZlJyxcbiAgICAgICAgY2xpY2tIYW5kbGVyOiBjbGlja0hhbmRsZXIsXG4gICAgICAgIGxhYmVsOiAnRG93bmxvYWQgTG9jYXRpb24uLi4nXG4gICAgICB9LCB7XG4gICAgICAgIGFjdGlvbjogJ3NldC1wcmlvcml0eScsXG4gICAgICAgIGNsaWNrSGFuZGxlcjogY2xpY2tIYW5kbGVyLFxuICAgICAgICBsYWJlbDogJ1ByaW9yaXR5JyxcbiAgICAgICAgbGFiZWxBY3Rpb246IF9yZWFjdDJbJ2RlZmF1bHQnXS5jcmVhdGVFbGVtZW50KF9maWxlc3lzdGVtUHJpb3JpdHlNZXRlcjJbJ2RlZmF1bHQnXSwgeyBpZDogdG9ycmVudC5oYXNoLCBrZXk6IHRvcnJlbnQuaGFzaCxcbiAgICAgICAgICBiaW5kRXh0ZXJuYWxDaGFuZ2VIYW5kbGVyOiB0aGlzLmJpbmRFeHRlcm5hbFByaW9yaXR5Q2hhbmdlSGFuZGxlcixcbiAgICAgICAgICBsZXZlbDogdG9ycmVudC5wcmlvcml0eSwgbWF4TGV2ZWw6IDMsIHByaW9yaXR5VHlwZTogJ3RvcnJlbnQnLFxuICAgICAgICAgIG9uQ2hhbmdlOiB0aGlzLmhhbmRsZVRvcnJlbnRQcmlvcml0eUNoYW5nZSwgc2hvd0xhYmVsOiBmYWxzZSB9KVxuICAgICAgfV07XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnaGFuZGxlQ29udGV4dE1lbnVJdGVtQ2xpY2snLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBoYW5kbGVDb250ZXh0TWVudUl0ZW1DbGljayhhY3Rpb24sIGV2ZW50KSB7XG4gICAgICB2YXIgc2VsZWN0ZWRUb3JyZW50cyA9IF9zdG9yZXNUb3JyZW50U3RvcmUyWydkZWZhdWx0J10uZ2V0U2VsZWN0ZWRUb3JyZW50cygpO1xuICAgICAgc3dpdGNoIChhY3Rpb24pIHtcbiAgICAgICAgY2FzZSAnc3RhcnQnOlxuICAgICAgICAgIF9hY3Rpb25zVG9ycmVudEFjdGlvbnMyWydkZWZhdWx0J10uc3RhcnRUb3JyZW50cyhzZWxlY3RlZFRvcnJlbnRzKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnc3RvcCc6XG4gICAgICAgICAgX2FjdGlvbnNUb3JyZW50QWN0aW9uczJbJ2RlZmF1bHQnXS5zdG9wVG9ycmVudHMoc2VsZWN0ZWRUb3JyZW50cyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3BhdXNlJzpcbiAgICAgICAgICBfYWN0aW9uc1RvcnJlbnRBY3Rpb25zMlsnZGVmYXVsdCddLnBhdXNlVG9ycmVudHMoc2VsZWN0ZWRUb3JyZW50cyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3JlbW92ZSc6XG4gICAgICAgICAgX2FjdGlvbnNUb3JyZW50QWN0aW9uczJbJ2RlZmF1bHQnXS5kZWxldGVUb3JyZW50cyhzZWxlY3RlZFRvcnJlbnRzKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnbW92ZSc6XG4gICAgICAgICAgdGhpcy5oYW5kbGVDb250ZXh0TWVudU1vdmVDbGljayhzZWxlY3RlZFRvcnJlbnRzKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnc2V0LXByaW9yaXR5JzpcbiAgICAgICAgICB0aGlzLnN0YXRlLmhhbmRsZVRvcnJlbnRQcmlvcml0eUNoYW5nZShldmVudCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnaGFuZGxlQ29udGV4dE1lbnVNb3ZlQ2xpY2snLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBoYW5kbGVDb250ZXh0TWVudU1vdmVDbGljayhoYXNoZXMpIHtcbiAgICAgIF9hY3Rpb25zVUlBY3Rpb25zMlsnZGVmYXVsdCddLmRpc3BsYXlNb2RhbCgnbW92ZS10b3JyZW50cycpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2hhbmRsZURldGFpbHNDbGljaycsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGhhbmRsZURldGFpbHNDbGljayh0b3JyZW50LCBldmVudCkge1xuICAgICAgX2FjdGlvbnNVSUFjdGlvbnMyWydkZWZhdWx0J10uaGFuZGxlRGV0YWlsc0NsaWNrKHtcbiAgICAgICAgaGFzaDogdG9ycmVudC5oYXNoLFxuICAgICAgICBldmVudDogZXZlbnRcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2hhbmRsZVJpZ2h0Q2xpY2snLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBoYW5kbGVSaWdodENsaWNrKHRvcnJlbnQsIGV2ZW50KSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICBfc3RvcmVzVUlTdG9yZTJbJ2RlZmF1bHQnXS5zZXRBY3RpdmVDb250ZXh0TWVudSh7XG4gICAgICAgIGNsaWNrUG9zaXRpb246IHtcbiAgICAgICAgICB4OiBldmVudC5jbGllbnRYLFxuICAgICAgICAgIHk6IGV2ZW50LmNsaWVudFlcbiAgICAgICAgfSxcbiAgICAgICAgaXRlbXM6IHRoaXMuZ2V0Q29udGV4dE1lbnVJdGVtcyh0b3JyZW50KVxuICAgICAgfSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnaGFuZGxlVG9ycmVudENsaWNrJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gaGFuZGxlVG9ycmVudENsaWNrKGhhc2gsIGV2ZW50KSB7XG4gICAgICBfYWN0aW9uc1VJQWN0aW9uczJbJ2RlZmF1bHQnXS5oYW5kbGVUb3JyZW50Q2xpY2soeyBoYXNoOiBoYXNoLCBldmVudDogZXZlbnQgfSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnaGFuZGxlVG9ycmVudFByaW9yaXR5Q2hhbmdlJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gaGFuZGxlVG9ycmVudFByaW9yaXR5Q2hhbmdlKGhhc2gsIGxldmVsKSB7XG4gICAgICBfYWN0aW9uc1RvcnJlbnRBY3Rpb25zMlsnZGVmYXVsdCddLnNldFByaW9yaXR5KGhhc2gsIGxldmVsKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdvbkNvbnRleHRNZW51Q2hhbmdlJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gb25Db250ZXh0TWVudUNoYW5nZSgpIHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoeyBjb250ZXh0TWVudTogX3N0b3Jlc1VJU3RvcmUyWydkZWZhdWx0J10uZ2V0QWN0aXZlQ29udGV4dE1lbnUoKSB9KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdvblJlY2VpdmVUb3JyZW50c0Vycm9yJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gb25SZWNlaXZlVG9ycmVudHNFcnJvcigpIHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoeyB0b3JyZW50UmVxdWVzdEVycm9yOiB0cnVlLCB0b3JyZW50UmVxdWVzdFN1Y2Nlc3M6IGZhbHNlIH0pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ29uUmVjZWl2ZVRvcnJlbnRzU3VjY2VzcycsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG9uUmVjZWl2ZVRvcnJlbnRzU3VjY2VzcygpIHtcbiAgICAgIHZhciB0b3JyZW50cyA9IF9zdG9yZXNUb3JyZW50U3RvcmUyWydkZWZhdWx0J10uZ2V0VG9ycmVudHMoKTtcblxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIHRvcnJlbnRzOiB0b3JyZW50cyxcbiAgICAgICAgdG9ycmVudENvdW50OiB0b3JyZW50cy5sZW5ndGgsXG4gICAgICAgIHRvcnJlbnRSZXF1ZXN0RXJyb3I6IGZhbHNlLFxuICAgICAgICB0b3JyZW50UmVxdWVzdFN1Y2Nlc3M6IHRydWVcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoIV9zdG9yZXNVSVN0b3JlMlsnZGVmYXVsdCddLmhhc1NhdGlzZmllZERlcGVuZGVuY2llcygpKSB7XG4gICAgICAgIF9zdG9yZXNVSVN0b3JlMlsnZGVmYXVsdCddLnNhdGlzZnlEZXBlbmRlbmN5KCd0b3JyZW50LWxpc3QnKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdvblRvcnJlbnRGaWx0ZXJDaGFuZ2UnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBvblRvcnJlbnRGaWx0ZXJDaGFuZ2UoKSB7XG4gICAgICB0aGlzLmZvcmNlVXBkYXRlKCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnb25Ub3JyZW50U2VsZWN0aW9uQ2hhbmdlJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gb25Ub3JyZW50U2VsZWN0aW9uQ2hhbmdlKCkge1xuICAgICAgaWYgKF9zdG9yZXNUb3JyZW50U3RvcmUyWydkZWZhdWx0J10uZ2V0U2VsZWN0ZWRUb3JyZW50cygpLmxlbmd0aCAhPT0gMSkge1xuICAgICAgICBfc3RvcmVzVUlTdG9yZTJbJ2RlZmF1bHQnXS5jbG9zZVRvcnJlbnREZXRhaWxzUGFuZWwoKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5mb3JjZVVwZGF0ZSgpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2dldExpc3RQYWRkaW5nJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0TGlzdFBhZGRpbmcobWluVG9ycmVudEluZGV4LCBtYXhUb3JyZW50SW5kZXgsIHRvcnJlbnRDb3VudCkge1xuICAgICAgLy8gQ2FsY3VsYXRlIHRoZSBudW1iZXIgb2YgcGl4ZWxzIHRvIHBhZCB0aGUgdmlzaWJsZSBpdGVtIGxpc3QuXG4gICAgICAvLyBJZiB0aGUgbWluaW11bSBpdGVtIGluZGV4IGlzIGxlc3MgdGhhbiAwLCB0aGVuIHdlJ3JlIGFscmVhZHkgYXQgdGhlIHRvcFxuICAgICAgLy8gb2YgdGhlIGxpc3QgYW5kIGRvbid0IG5lZWQgdG8gcmVuZGVyIGFueSBwYWRkaW5nIHRoZXJlLlxuICAgICAgaWYgKG1pblRvcnJlbnRJbmRleCA8IDApIHtcbiAgICAgICAgbWluVG9ycmVudEluZGV4ID0gMDtcbiAgICAgIH1cblxuICAgICAgaWYgKG1heFRvcnJlbnRJbmRleCA+IHRvcnJlbnRDb3VudCkge1xuICAgICAgICBtYXhUb3JyZW50SW5kZXggPSB0b3JyZW50Q291bnQ7XG4gICAgICB9XG5cbiAgICAgIHZhciBoaWRkZW5Cb3R0b20gPSB0b3JyZW50Q291bnQgLSBtYXhUb3JyZW50SW5kZXg7XG4gICAgICB2YXIgaGlkZGVuVG9wID0gbWluVG9ycmVudEluZGV4O1xuXG4gICAgICB2YXIgYm90dG9tID0gaGlkZGVuQm90dG9tICogdGhpcy5zdGF0ZS50b3JyZW50SGVpZ2h0O1xuICAgICAgdmFyIHRvcCA9IGhpZGRlblRvcCAqIHRoaXMuc3RhdGUudG9ycmVudEhlaWdodDtcblxuICAgICAgcmV0dXJuIHsgYm90dG9tOiBib3R0b20sIHRvcDogdG9wIH07XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnZ2V0TG9hZGluZ0luZGljYXRvcicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldExvYWRpbmdJbmRpY2F0b3IoKSB7XG4gICAgICByZXR1cm4gX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoX3VpTG9hZGluZ0luZGljYXRvcjJbJ2RlZmF1bHQnXSwgbnVsbCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnZ2V0Vmlld3BvcnRMaW1pdHMnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRWaWV3cG9ydExpbWl0cygpIHtcbiAgICAgIC8vIENhbGN1bGF0ZSB0aGUgbnVtYmVyIG9mIGl0ZW1zIHRoYXQgc2hvdWxkIGJlIHJlbmRlcmVkIGJhc2VkIG9uIHRoZSBoZWlnaHRcbiAgICAgIC8vIG9mIHRoZSB2aWV3cG9ydC4gV2Ugb2Zmc2V0IHRoaXMgdG8gcmVuZGVyIGEgZmV3IG1vcmUgb3V0aWRlIG9mIHRoZVxuICAgICAgLy8gY29udGFpbmVyJ3MgZGltZW5zaW9ucywgd2hpY2ggbG9va3MgbmljZXIgd2hlbiB0aGUgdXNlciBzY3JvbGxzLlxuICAgICAgdmFyIG9mZnNldCA9IDEwO1xuXG4gICAgICAvLyBUaGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIHZpZXcgaXMgdGhlIGhlaWdodCBvZiB0aGUgdmlld3BvcnQgZGl2aWRlZFxuICAgICAgLy8gYnkgdGhlIGhlaWdodCBvZiB0aGUgZWxlbWVudHMuXG4gICAgICB2YXIgZWxlbWVudHNJblZpZXcgPSBNYXRoLmZsb29yKHRoaXMuc3RhdGUudmlld3BvcnRIZWlnaHQgLyB0aGlzLnN0YXRlLnRvcnJlbnRIZWlnaHQpO1xuXG4gICAgICAvLyBUaGUgbWluaW11bSBpdGVtIGluZGV4IHRvIHJlbmRlciBpcyB0aGUgbnVtYmVyIG9mIGl0ZW1zIGFib3ZlIHRoZVxuICAgICAgLy8gdmlld3BvcnQncyBjdXJyZW50IHNjcm9sbCBwb3NpdGlvbiwgbWludXMgdGhlIG9mZnNldC5cbiAgICAgIHZhciBtaW5Ub3JyZW50SW5kZXggPSBNYXRoLmZsb29yKHRoaXMuc3RhdGUuc2Nyb2xsUG9zaXRpb24gLyB0aGlzLnN0YXRlLnRvcnJlbnRIZWlnaHQpIC0gb2Zmc2V0O1xuXG4gICAgICAvLyBUaGUgbWF4aW11bSBpdGVtIGluZGV4IHRvIHJlbmRlciBpcyB0aGUgbWluaW11bSBpdGVtIHJlbmRlcmVkLCBwbHVzIHRoZVxuICAgICAgLy8gbnVtYmVyIG9mIGl0ZW1zIGluIHZpZXcsIHBsdXMgZG91YmxlIHRoZSBvZmZzZXQuXG4gICAgICB2YXIgbWF4VG9ycmVudEluZGV4ID0gbWluVG9ycmVudEluZGV4ICsgZWxlbWVudHNJblZpZXcgKyBvZmZzZXQgKiAyO1xuXG4gICAgICByZXR1cm4geyBtaW5Ub3JyZW50SW5kZXg6IG1pblRvcnJlbnRJbmRleCwgbWF4VG9ycmVudEluZGV4OiBtYXhUb3JyZW50SW5kZXggfTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdzZXRTY3JvbGxQb3NpdGlvbicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldFNjcm9sbFBvc2l0aW9uKHNjcm9sbFZhbHVlcykge1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7IHNjcm9sbFBvc2l0aW9uOiBzY3JvbGxWYWx1ZXMuc2Nyb2xsVG9wIH0pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ3NldFZpZXdwb3J0SGVpZ2h0JyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0Vmlld3BvcnRIZWlnaHQoKSB7XG4gICAgICBpZiAodGhpcy5yZWZzLnRvcnJlbnRMaXN0KSB7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgIHZpZXdwb3J0SGVpZ2h0OiB0aGlzLnJlZnMudG9ycmVudExpc3QucmVmcy5zY3JvbGxiYXIuZ2V0Q2xpZW50SGVpZ2h0KClcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAncmVuZGVyJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICAgIHZhciBjb250ZW50ID0gdGhpcy5nZXRMb2FkaW5nSW5kaWNhdG9yKCk7XG5cbiAgICAgIGlmICh0aGlzLnN0YXRlLnRvcnJlbnRSZXF1ZXN0U3VjY2Vzcykge1xuICAgICAgICAoZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHZhciBjb250ZXh0TWVudSA9IG51bGw7XG4gICAgICAgICAgdmFyIHNlbGVjdGVkVG9ycmVudHMgPSBfc3RvcmVzVG9ycmVudFN0b3JlMlsnZGVmYXVsdCddLmdldFNlbGVjdGVkVG9ycmVudHMoKTtcbiAgICAgICAgICB2YXIgdG9ycmVudHMgPSBfdGhpczIuc3RhdGUudG9ycmVudHM7XG4gICAgICAgICAgdmFyIHZpZXdwb3J0TGltaXRzID0gX3RoaXMyLmdldFZpZXdwb3J0TGltaXRzKCk7XG5cbiAgICAgICAgICB2YXIgbGlzdFBhZGRpbmcgPSBfdGhpczIuZ2V0TGlzdFBhZGRpbmcodmlld3BvcnRMaW1pdHMubWluVG9ycmVudEluZGV4LCB2aWV3cG9ydExpbWl0cy5tYXhUb3JyZW50SW5kZXgsIHRvcnJlbnRzLmxlbmd0aCk7XG5cbiAgICAgICAgICB2YXIgbWF4VG9ycmVudEluZGV4ID0gdmlld3BvcnRMaW1pdHMubWF4VG9ycmVudEluZGV4O1xuICAgICAgICAgIHZhciBtaW5Ub3JyZW50SW5kZXggPSB2aWV3cG9ydExpbWl0cy5taW5Ub3JyZW50SW5kZXg7XG5cbiAgICAgICAgICBpZiAobWluVG9ycmVudEluZGV4IDwgMCkge1xuICAgICAgICAgICAgbWluVG9ycmVudEluZGV4ID0gMDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoX3RoaXMyLnN0YXRlLmNvbnRleHRNZW51ICE9IG51bGwpIHtcbiAgICAgICAgICAgIGNvbnRleHRNZW51ID0gX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoX3VpQ29udGV4dE1lbnUyWydkZWZhdWx0J10sIHsgY2xpY2tQb3NpdGlvbjogX3RoaXMyLnN0YXRlLmNvbnRleHRNZW51LmNsaWNrUG9zaXRpb24sXG4gICAgICAgICAgICAgIGl0ZW1zOiBfdGhpczIuc3RhdGUuY29udGV4dE1lbnUuaXRlbXMgfSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdmFyIHZpc2libGVUb3JyZW50cyA9IHRvcnJlbnRzLnNsaWNlKG1pblRvcnJlbnRJbmRleCwgbWF4VG9ycmVudEluZGV4KTtcblxuICAgICAgICAgIHZhciB0b3JyZW50TGlzdCA9IHZpc2libGVUb3JyZW50cy5tYXAoZnVuY3Rpb24gKHRvcnJlbnQsIGluZGV4KSB7XG4gICAgICAgICAgICB2YXIgaXNTZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgICAgICAgdmFyIGhhc2ggPSB0b3JyZW50Lmhhc2g7XG5cbiAgICAgICAgICAgIGlmIChzZWxlY3RlZFRvcnJlbnRzLmluZGV4T2YoaGFzaCkgPiAtMSkge1xuICAgICAgICAgICAgICBpc1NlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIF9yZWFjdDJbJ2RlZmF1bHQnXS5jcmVhdGVFbGVtZW50KF9Ub3JyZW50MlsnZGVmYXVsdCddLCB7IGtleTogaGFzaCwgdG9ycmVudDogdG9ycmVudCwgc2VsZWN0ZWQ6IGlzU2VsZWN0ZWQsXG4gICAgICAgICAgICAgIGhhbmRsZUNsaWNrOiBfdGhpczIuaGFuZGxlVG9ycmVudENsaWNrLFxuICAgICAgICAgICAgICBoYW5kbGVSaWdodENsaWNrOiBfdGhpczIuaGFuZGxlUmlnaHRDbGljayxcbiAgICAgICAgICAgICAgaGFuZGxlRGV0YWlsc0NsaWNrOiBfdGhpczIuaGFuZGxlRGV0YWlsc0NsaWNrIH0pO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgY29udGVudCA9IF9yZWFjdDJbJ2RlZmF1bHQnXS5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICAgJ3VsJyxcbiAgICAgICAgICAgIHsgY2xhc3NOYW1lOiAndG9ycmVudF9fbGlzdCcsIGtleTogJ3RvcnJlbnRfX2xpc3QnIH0sXG4gICAgICAgICAgICBfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudChcbiAgICAgICAgICAgICAgX3JlYWN0QWRkb25zQ3NzVHJhbnNpdGlvbkdyb3VwMlsnZGVmYXVsdCddLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbk5hbWU6ICdtZW51JyxcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uRW50ZXJUaW1lb3V0OiAyNTAsXG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbkxlYXZlVGltZW91dDogMjUwIH0sXG4gICAgICAgICAgICAgIGNvbnRleHRNZW51XG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoJ2xpJywgeyBjbGFzc05hbWU6ICd0b3JyZW50X19zcGFjZXIgdG9ycmVudF9fc3BhY2VyLS10b3AnLFxuICAgICAgICAgICAgICBzdHlsZTogeyBoZWlnaHQ6IGxpc3RQYWRkaW5nLnRvcCArICdweCcgfSB9KSxcbiAgICAgICAgICAgIHRvcnJlbnRMaXN0LFxuICAgICAgICAgICAgX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoJ2xpJywgeyBjbGFzc05hbWU6ICd0b3JyZW50X19zcGFjZXIgdG9ycmVudF9fc3BhY2VyLS1ib3R0b20nLFxuICAgICAgICAgICAgICBzdHlsZTogeyBoZWlnaHQ6IGxpc3RQYWRkaW5nLmJvdHRvbSArICdweCcgfSB9KVxuICAgICAgICAgICk7XG4gICAgICAgIH0pKCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudChcbiAgICAgICAgJ2RpdicsXG4gICAgICAgIHsgY2xhc3NOYW1lOiAndG9ycmVudF9fbGlzdF9fd3JhcHBlcicgfSxcbiAgICAgICAgX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgX3VpQ3VzdG9tU2Nyb2xsYmFyczJbJ2RlZmF1bHQnXSxcbiAgICAgICAgICB7IGNsYXNzTmFtZTogJ3RvcnJlbnRfX2xpc3RfX3dyYXBwZXItLWN1c3RvbS1zY3JvbGwnLFxuICAgICAgICAgICAgcmVmOiAndG9ycmVudExpc3QnLCBzY3JvbGxIYW5kbGVyOiB0aGlzLnNldFNjcm9sbFBvc2l0aW9uIH0sXG4gICAgICAgICAgY29udGVudFxuICAgICAgICApXG4gICAgICApO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBUb3JyZW50TGlzdENvbnRhaW5lcjtcbn0pKF9yZWFjdDJbJ2RlZmF1bHQnXS5Db21wb25lbnQpO1xuXG5leHBvcnRzWydkZWZhdWx0J10gPSBUb3JyZW50TGlzdENvbnRhaW5lcjtcbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9jbGllbnQvc291cmNlL3NjcmlwdHMvY29tcG9uZW50cy90b3JyZW50LWxpc3QvVG9ycmVudExpc3QuanNcbiAqKiBtb2R1bGUgaWQgPSAyOThcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyJdLCJzb3VyY2VSb290IjoiIn0="); /***/ }, /* 299 */ @@ -1852,5 +1852,11 @@ eval("'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\n\nvar _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _react = __webpack_require__(1);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _BaseIcon2 = __webpack_require__(210);\n\nvar _BaseIcon3 = _interopRequireDefault(_BaseIcon2);\n\nvar DotsMini = (function (_BaseIcon) {\n _inherits(DotsMini, _BaseIcon);\n\n function DotsMini() {\n _classCallCheck(this, DotsMini);\n\n _get(Object.getPrototypeOf(DotsMini.prototype), 'constructor', this).apply(this, arguments);\n }\n\n _createClass(DotsMini, [{\n key: 'render',\n value: function render() {\n return _react2['default'].createElement(\n 'svg',\n { className: 'icon icon--dots-mini ' + this.props.className,\n xmlns: this.getXmlns(), viewBox: this.getViewBox() },\n _react2['default'].createElement('circle', { cx: '0.9', cy: '4', r: '0.9' }),\n _react2['default'].createElement('circle', { cx: '4', cy: '4', r: '0.9' }),\n _react2['default'].createElement('circle', { cx: '7.1', cy: '4', r: '0.9' })\n );\n }\n }]);\n\n return DotsMini;\n})(_BaseIcon3['default']);\n\nexports['default'] = DotsMini;\nmodule.exports = exports['default'];//@ sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9jbGllbnQvc291cmNlL3NjcmlwdHMvY29tcG9uZW50cy9pY29ucy9Eb3RzTWluaS5qcz83NGM3Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztBQUVBO0FBQ0E7QUFDQSxDQUFDOztBQUVELGlDQUFpQywyQ0FBMkMsZ0JBQWdCLGtCQUFrQixPQUFPLDJCQUEyQix3REFBd0QsZ0NBQWdDLHVEQUF1RCwyREFBMkQsRUFBRSxFQUFFLHlEQUF5RCxxRUFBcUUsNkRBQTZELG9CQUFvQixHQUFHLEVBQUU7O0FBRWxqQix1Q0FBdUMsbUJBQW1CLDRCQUE0QixpREFBaUQsZ0JBQWdCLGtEQUFrRCw4REFBOEQsMEJBQTBCLDRDQUE0Qyx1QkFBdUIsa0JBQWtCLEVBQUUsT0FBTyxhQUFhLGdCQUFnQixnQkFBZ0IsZUFBZSwyQkFBMkIsb0JBQW9CLEVBQUUsRUFBRSw0QkFBNEIsbUJBQW1CLEVBQUUsT0FBTyx1QkFBdUIsNEJBQTRCLGtCQUFrQixFQUFFLDhCQUE4QixFQUFFLEVBQUU7O0FBRS9vQixzQ0FBc0MsdUNBQXVDLGtCQUFrQjs7QUFFL0YsaURBQWlELDBDQUEwQywwREFBMEQsRUFBRTs7QUFFdkosMENBQTBDLCtEQUErRCxxR0FBcUcsRUFBRSx5RUFBeUUsZUFBZSx5RUFBeUUsRUFBRSxFQUFFLHVIQUF1SDs7QUFFNWU7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCw4REFBOEQ7QUFDOUQsb0RBQW9ELCtCQUErQjtBQUNuRixvREFBb0QsNkJBQTZCO0FBQ2pGLG9EQUFvRCwrQkFBK0I7QUFDbkY7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQSxDQUFDOztBQUVEO0FBQ0EiLCJmaWxlIjoiMzAxLmpzIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcblxudmFyIF9jcmVhdGVDbGFzcyA9IChmdW5jdGlvbiAoKSB7IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoJ3ZhbHVlJyBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpOyB9IH0gcmV0dXJuIGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfTsgfSkoKTtcblxudmFyIF9nZXQgPSBmdW5jdGlvbiBnZXQoX3gsIF94MiwgX3gzKSB7IHZhciBfYWdhaW4gPSB0cnVlOyBfZnVuY3Rpb246IHdoaWxlIChfYWdhaW4pIHsgdmFyIG9iamVjdCA9IF94LCBwcm9wZXJ0eSA9IF94MiwgcmVjZWl2ZXIgPSBfeDM7IF9hZ2FpbiA9IGZhbHNlOyBpZiAob2JqZWN0ID09PSBudWxsKSBvYmplY3QgPSBGdW5jdGlvbi5wcm90b3R5cGU7IHZhciBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHByb3BlcnR5KTsgaWYgKGRlc2MgPT09IHVuZGVmaW5lZCkgeyB2YXIgcGFyZW50ID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKG9iamVjdCk7IGlmIChwYXJlbnQgPT09IG51bGwpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfSBlbHNlIHsgX3ggPSBwYXJlbnQ7IF94MiA9IHByb3BlcnR5OyBfeDMgPSByZWNlaXZlcjsgX2FnYWluID0gdHJ1ZTsgZGVzYyA9IHBhcmVudCA9IHVuZGVmaW5lZDsgY29udGludWUgX2Z1bmN0aW9uOyB9IH0gZWxzZSBpZiAoJ3ZhbHVlJyBpbiBkZXNjKSB7IHJldHVybiBkZXNjLnZhbHVlOyB9IGVsc2UgeyB2YXIgZ2V0dGVyID0gZGVzYy5nZXQ7IGlmIChnZXR0ZXIgPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9IHJldHVybiBnZXR0ZXIuY2FsbChyZWNlaXZlcik7IH0gfSB9O1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyAnZGVmYXVsdCc6IG9iaiB9OyB9XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcignQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uJyk7IH0gfVxuXG5mdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHsgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSAnZnVuY3Rpb24nICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcignU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAnICsgdHlwZW9mIHN1cGVyQ2xhc3MpOyB9IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogc3ViQ2xhc3MsIGVudW1lcmFibGU6IGZhbHNlLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0gfSk7IGlmIChzdXBlckNsYXNzKSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIDogc3ViQ2xhc3MuX19wcm90b19fID0gc3VwZXJDbGFzczsgfVxuXG52YXIgX3JlYWN0ID0gcmVxdWlyZSgncmVhY3QnKTtcblxudmFyIF9yZWFjdDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9yZWFjdCk7XG5cbnZhciBfQmFzZUljb24yID0gcmVxdWlyZSgnLi9CYXNlSWNvbicpO1xuXG52YXIgX0Jhc2VJY29uMyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX0Jhc2VJY29uMik7XG5cbnZhciBEb3RzTWluaSA9IChmdW5jdGlvbiAoX0Jhc2VJY29uKSB7XG4gIF9pbmhlcml0cyhEb3RzTWluaSwgX0Jhc2VJY29uKTtcblxuICBmdW5jdGlvbiBEb3RzTWluaSgpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgRG90c01pbmkpO1xuXG4gICAgX2dldChPYmplY3QuZ2V0UHJvdG90eXBlT2YoRG90c01pbmkucHJvdG90eXBlKSwgJ2NvbnN0cnVjdG9yJywgdGhpcykuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhEb3RzTWluaSwgW3tcbiAgICBrZXk6ICdyZW5kZXInLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICByZXR1cm4gX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICdzdmcnLFxuICAgICAgICB7IGNsYXNzTmFtZTogJ2ljb24gaWNvbi0tZG90cy1taW5pICcgKyB0aGlzLnByb3BzLmNsYXNzTmFtZSxcbiAgICAgICAgICB4bWxuczogdGhpcy5nZXRYbWxucygpLCB2aWV3Qm94OiB0aGlzLmdldFZpZXdCb3goKSB9LFxuICAgICAgICBfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudCgnY2lyY2xlJywgeyBjeDogJzAuOScsIGN5OiAnNCcsIHI6ICcwLjknIH0pLFxuICAgICAgICBfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudCgnY2lyY2xlJywgeyBjeDogJzQnLCBjeTogJzQnLCByOiAnMC45JyB9KSxcbiAgICAgICAgX3JlYWN0MlsnZGVmYXVsdCddLmNyZWF0ZUVsZW1lbnQoJ2NpcmNsZScsIHsgY3g6ICc3LjEnLCBjeTogJzQnLCByOiAnMC45JyB9KVxuICAgICAgKTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gRG90c01pbmk7XG59KShfQmFzZUljb24zWydkZWZhdWx0J10pO1xuXG5leHBvcnRzWydkZWZhdWx0J10gPSBEb3RzTWluaTtcbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9jbGllbnQvc291cmNlL3NjcmlwdHMvY29tcG9uZW50cy9pY29ucy9Eb3RzTWluaS5qc1xuICoqIG1vZHVsZSBpZCA9IDMwMVxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIl0sInNvdXJjZVJvb3QiOiIifQ=="); +/***/ }, +/* 302 */ +/***/ function(module, exports, __webpack_require__) { + + eval("'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\n\nvar _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _reactAddonsCssTransitionGroup = __webpack_require__(163);\n\nvar _reactAddonsCssTransitionGroup2 = _interopRequireDefault(_reactAddonsCssTransitionGroup);\n\nvar _react = __webpack_require__(1);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _constantsEventTypes = __webpack_require__(176);\n\nvar _constantsEventTypes2 = _interopRequireDefault(_constantsEventTypes);\n\nvar _uiLoadingIndicator = __webpack_require__(247);\n\nvar _uiLoadingIndicator2 = _interopRequireDefault(_uiLoadingIndicator);\n\nvar _storesUIStore = __webpack_require__(177);\n\nvar _storesUIStore2 = _interopRequireDefault(_storesUIStore);\n\nvar METHODS_TO_BIND = ['handleUIDependenciesLoaded'];\n\nvar ApplicationLoadingIndicator = (function (_React$Component) {\n _inherits(ApplicationLoadingIndicator, _React$Component);\n\n function ApplicationLoadingIndicator() {\n var _this = this;\n\n _classCallCheck(this, ApplicationLoadingIndicator);\n\n _get(Object.getPrototypeOf(ApplicationLoadingIndicator.prototype), 'constructor', this).call(this);\n\n this.state = {\n dependenciesLoaded: false\n };\n\n METHODS_TO_BIND.forEach(function (method) {\n _this[method] = _this[method].bind(_this);\n });\n }\n\n _createClass(ApplicationLoadingIndicator, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n _storesUIStore2['default'].listen(_constantsEventTypes2['default'].UI_DEPENDENCIES_LOADED, this.handleUIDependenciesLoaded);\n }\n }, {\n key: 'handleUIDependenciesLoaded',\n value: function handleUIDependenciesLoaded() {\n this.setState({ dependenciesLoaded: true });\n }\n }, {\n key: 'render',\n value: function render() {\n var content = undefined;\n\n if (!this.state.dependenciesLoaded) {\n content = _react2['default'].createElement(\n 'div',\n { className: 'application__loading-indicator' },\n _react2['default'].createElement(_uiLoadingIndicator2['default'], { inverse: true })\n );\n }\n\n console.log(this.state.dependenciesLoaded);\n\n return _react2['default'].createElement(\n _reactAddonsCssTransitionGroup2['default'],\n {\n className: 'application__loading-indicator__wrapper',\n transitionEnterTimeout: 1000,\n transitionLeaveTimeout: 1000,\n transitionName: 'application__loading-indicator__wrapper' },\n content\n );\n }\n }]);\n\n return ApplicationLoadingIndicator;\n})(_react2['default'].Component);\n\nexports['default'] = ApplicationLoadingIndicator;\nmodule.exports = exports['default'];//@ sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9jbGllbnQvc291cmNlL3NjcmlwdHMvY29tcG9uZW50cy9sYXlvdXQvQXBwbGljYXRpb25Mb2FkaW5nSW5kaWNhdG9yLmpzPzE5MzkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0FBRUE7QUFDQTtBQUNBLENBQUM7O0FBRUQsaUNBQWlDLDJDQUEyQyxnQkFBZ0Isa0JBQWtCLE9BQU8sMkJBQTJCLHdEQUF3RCxnQ0FBZ0MsdURBQXVELDJEQUEyRCxFQUFFLEVBQUUseURBQXlELHFFQUFxRSw2REFBNkQsb0JBQW9CLEdBQUcsRUFBRTs7QUFFbGpCLHVDQUF1QyxtQkFBbUIsNEJBQTRCLGlEQUFpRCxnQkFBZ0Isa0RBQWtELDhEQUE4RCwwQkFBMEIsNENBQTRDLHVCQUF1QixrQkFBa0IsRUFBRSxPQUFPLGFBQWEsZ0JBQWdCLGdCQUFnQixlQUFlLDJCQUEyQixvQkFBb0IsRUFBRSxFQUFFLDRCQUE0QixtQkFBbUIsRUFBRSxPQUFPLHVCQUF1Qiw0QkFBNEIsa0JBQWtCLEVBQUUsOEJBQThCLEVBQUUsRUFBRTs7QUFFL29CLHNDQUFzQyx1Q0FBdUMsa0JBQWtCOztBQUUvRixpREFBaUQsMENBQTBDLDBEQUEwRCxFQUFFOztBQUV2SiwwQ0FBMEMsK0RBQStELHFHQUFxRyxFQUFFLHlFQUF5RSxlQUFlLHlFQUF5RSxFQUFFLEVBQUUsdUhBQXVIOztBQUU1ZTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EscUJBQXFCLDJCQUEyQjtBQUNoRDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyw4Q0FBOEM7QUFDekQsNkVBQTZFLGdCQUFnQjtBQUM3RjtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFFQUFxRTtBQUNyRTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBIiwiZmlsZSI6IjMwMi5qcyIsInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5cbnZhciBfY3JlYXRlQ2xhc3MgPSAoZnVuY3Rpb24gKCkgeyBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKCd2YWx1ZScgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9IHJldHVybiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH07IH0pKCk7XG5cbnZhciBfZ2V0ID0gZnVuY3Rpb24gZ2V0KF94LCBfeDIsIF94MykgeyB2YXIgX2FnYWluID0gdHJ1ZTsgX2Z1bmN0aW9uOiB3aGlsZSAoX2FnYWluKSB7IHZhciBvYmplY3QgPSBfeCwgcHJvcGVydHkgPSBfeDIsIHJlY2VpdmVyID0gX3gzOyBfYWdhaW4gPSBmYWxzZTsgaWYgKG9iamVjdCA9PT0gbnVsbCkgb2JqZWN0ID0gRnVuY3Rpb24ucHJvdG90eXBlOyB2YXIgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBwcm9wZXJ0eSk7IGlmIChkZXNjID09PSB1bmRlZmluZWQpIHsgdmFyIHBhcmVudCA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihvYmplY3QpOyBpZiAocGFyZW50ID09PSBudWxsKSB7IHJldHVybiB1bmRlZmluZWQ7IH0gZWxzZSB7IF94ID0gcGFyZW50OyBfeDIgPSBwcm9wZXJ0eTsgX3gzID0gcmVjZWl2ZXI7IF9hZ2FpbiA9IHRydWU7IGRlc2MgPSBwYXJlbnQgPSB1bmRlZmluZWQ7IGNvbnRpbnVlIF9mdW5jdGlvbjsgfSB9IGVsc2UgaWYgKCd2YWx1ZScgaW4gZGVzYykgeyByZXR1cm4gZGVzYy52YWx1ZTsgfSBlbHNlIHsgdmFyIGdldHRlciA9IGRlc2MuZ2V0OyBpZiAoZ2V0dGVyID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfSByZXR1cm4gZ2V0dGVyLmNhbGwocmVjZWl2ZXIpOyB9IH0gfTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgJ2RlZmF1bHQnOiBvYmogfTsgfVxuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoJ0Nhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbicpOyB9IH1cblxuZnVuY3Rpb24gX2luaGVyaXRzKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7IGlmICh0eXBlb2Ygc3VwZXJDbGFzcyAhPT0gJ2Z1bmN0aW9uJyAmJiBzdXBlckNsYXNzICE9PSBudWxsKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoJ1N1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgJyArIHR5cGVvZiBzdXBlckNsYXNzKTsgfSBzdWJDbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ2xhc3MgJiYgc3VwZXJDbGFzcy5wcm90b3R5cGUsIHsgY29uc3RydWN0b3I6IHsgdmFsdWU6IHN1YkNsYXNzLCBlbnVtZXJhYmxlOiBmYWxzZSwgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9IH0pOyBpZiAoc3VwZXJDbGFzcykgT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mKHN1YkNsYXNzLCBzdXBlckNsYXNzKSA6IHN1YkNsYXNzLl9fcHJvdG9fXyA9IHN1cGVyQ2xhc3M7IH1cblxudmFyIF9yZWFjdEFkZG9uc0Nzc1RyYW5zaXRpb25Hcm91cCA9IHJlcXVpcmUoJ3JlYWN0LWFkZG9ucy1jc3MtdHJhbnNpdGlvbi1ncm91cCcpO1xuXG52YXIgX3JlYWN0QWRkb25zQ3NzVHJhbnNpdGlvbkdyb3VwMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3JlYWN0QWRkb25zQ3NzVHJhbnNpdGlvbkdyb3VwKTtcblxudmFyIF9yZWFjdCA9IHJlcXVpcmUoJ3JlYWN0Jyk7XG5cbnZhciBfcmVhY3QyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfcmVhY3QpO1xuXG52YXIgX2NvbnN0YW50c0V2ZW50VHlwZXMgPSByZXF1aXJlKCcuLi8uLi9jb25zdGFudHMvRXZlbnRUeXBlcycpO1xuXG52YXIgX2NvbnN0YW50c0V2ZW50VHlwZXMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY29uc3RhbnRzRXZlbnRUeXBlcyk7XG5cbnZhciBfdWlMb2FkaW5nSW5kaWNhdG9yID0gcmVxdWlyZSgnLi4vdWkvTG9hZGluZ0luZGljYXRvcicpO1xuXG52YXIgX3VpTG9hZGluZ0luZGljYXRvcjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF91aUxvYWRpbmdJbmRpY2F0b3IpO1xuXG52YXIgX3N0b3Jlc1VJU3RvcmUgPSByZXF1aXJlKCcuLi8uLi9zdG9yZXMvVUlTdG9yZScpO1xuXG52YXIgX3N0b3Jlc1VJU3RvcmUyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfc3RvcmVzVUlTdG9yZSk7XG5cbnZhciBNRVRIT0RTX1RPX0JJTkQgPSBbJ2hhbmRsZVVJRGVwZW5kZW5jaWVzTG9hZGVkJ107XG5cbnZhciBBcHBsaWNhdGlvbkxvYWRpbmdJbmRpY2F0b3IgPSAoZnVuY3Rpb24gKF9SZWFjdCRDb21wb25lbnQpIHtcbiAgX2luaGVyaXRzKEFwcGxpY2F0aW9uTG9hZGluZ0luZGljYXRvciwgX1JlYWN0JENvbXBvbmVudCk7XG5cbiAgZnVuY3Rpb24gQXBwbGljYXRpb25Mb2FkaW5nSW5kaWNhdG9yKCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgQXBwbGljYXRpb25Mb2FkaW5nSW5kaWNhdG9yKTtcblxuICAgIF9nZXQoT2JqZWN0LmdldFByb3RvdHlwZU9mKEFwcGxpY2F0aW9uTG9hZGluZ0luZGljYXRvci5wcm90b3R5cGUpLCAnY29uc3RydWN0b3InLCB0aGlzKS5jYWxsKHRoaXMpO1xuXG4gICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgIGRlcGVuZGVuY2llc0xvYWRlZDogZmFsc2VcbiAgICB9O1xuXG4gICAgTUVUSE9EU19UT19CSU5ELmZvckVhY2goZnVuY3Rpb24gKG1ldGhvZCkge1xuICAgICAgX3RoaXNbbWV0aG9kXSA9IF90aGlzW21ldGhvZF0uYmluZChfdGhpcyk7XG4gICAgfSk7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoQXBwbGljYXRpb25Mb2FkaW5nSW5kaWNhdG9yLCBbe1xuICAgIGtleTogJ2NvbXBvbmVudERpZE1vdW50JyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgICBfc3RvcmVzVUlTdG9yZTJbJ2RlZmF1bHQnXS5saXN0ZW4oX2NvbnN0YW50c0V2ZW50VHlwZXMyWydkZWZhdWx0J10uVUlfREVQRU5ERU5DSUVTX0xPQURFRCwgdGhpcy5oYW5kbGVVSURlcGVuZGVuY2llc0xvYWRlZCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnaGFuZGxlVUlEZXBlbmRlbmNpZXNMb2FkZWQnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBoYW5kbGVVSURlcGVuZGVuY2llc0xvYWRlZCgpIHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoeyBkZXBlbmRlbmNpZXNMb2FkZWQ6IHRydWUgfSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAncmVuZGVyJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgICAgdmFyIGNvbnRlbnQgPSB1bmRlZmluZWQ7XG5cbiAgICAgIGlmICghdGhpcy5zdGF0ZS5kZXBlbmRlbmNpZXNMb2FkZWQpIHtcbiAgICAgICAgY29udGVudCA9IF9yZWFjdDJbJ2RlZmF1bHQnXS5jcmVhdGVFbGVtZW50KFxuICAgICAgICAgICdkaXYnLFxuICAgICAgICAgIHsgY2xhc3NOYW1lOiAnYXBwbGljYXRpb25fX2xvYWRpbmctaW5kaWNhdG9yJyB9LFxuICAgICAgICAgIF9yZWFjdDJbJ2RlZmF1bHQnXS5jcmVhdGVFbGVtZW50KF91aUxvYWRpbmdJbmRpY2F0b3IyWydkZWZhdWx0J10sIHsgaW52ZXJzZTogdHJ1ZSB9KVxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBjb25zb2xlLmxvZyh0aGlzLnN0YXRlLmRlcGVuZGVuY2llc0xvYWRlZCk7XG5cbiAgICAgIHJldHVybiBfcmVhY3QyWydkZWZhdWx0J10uY3JlYXRlRWxlbWVudChcbiAgICAgICAgX3JlYWN0QWRkb25zQ3NzVHJhbnNpdGlvbkdyb3VwMlsnZGVmYXVsdCddLFxuICAgICAgICB7XG4gICAgICAgICAgY2xhc3NOYW1lOiAnYXBwbGljYXRpb25fX2xvYWRpbmctaW5kaWNhdG9yX193cmFwcGVyJyxcbiAgICAgICAgICB0cmFuc2l0aW9uRW50ZXJUaW1lb3V0OiAxMDAwLFxuICAgICAgICAgIHRyYW5zaXRpb25MZWF2ZVRpbWVvdXQ6IDEwMDAsXG4gICAgICAgICAgdHJhbnNpdGlvbk5hbWU6ICdhcHBsaWNhdGlvbl9fbG9hZGluZy1pbmRpY2F0b3JfX3dyYXBwZXInIH0sXG4gICAgICAgIGNvbnRlbnRcbiAgICAgICk7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIEFwcGxpY2F0aW9uTG9hZGluZ0luZGljYXRvcjtcbn0pKF9yZWFjdDJbJ2RlZmF1bHQnXS5Db21wb25lbnQpO1xuXG5leHBvcnRzWydkZWZhdWx0J10gPSBBcHBsaWNhdGlvbkxvYWRpbmdJbmRpY2F0b3I7XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vY2xpZW50L3NvdXJjZS9zY3JpcHRzL2NvbXBvbmVudHMvbGF5b3V0L0FwcGxpY2F0aW9uTG9hZGluZ0luZGljYXRvci5qc1xuICoqIG1vZHVsZSBpZCA9IDMwMlxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIl0sInNvdXJjZVJvb3QiOiIifQ=="); + /***/ } /******/ ]); \ No newline at end of file diff --git a/server/assets/style.css b/server/assets/style.css index 75bbb1c9..2b137d70 100644 --- a/server/assets/style.css +++ b/server/assets/style.css @@ -654,6 +654,32 @@ body { flex-direction: column; position: relative; } +.application__loading-indicator { + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + background: #1a2f3d; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + height: 100%; + -webkit-box-pack: center; + -webkit-justify-content: center; + -ms-flex-pack: center; + justify-content: center; + position: fixed; + width: 100%; + z-index: 1000; } + .application__loading-indicator__wrapper-leave { + opacity: 1; + pointer-events: none; + -webkit-transition: opacity 1s; + transition: opacity 1s; } + .application__loading-indicator__wrapper-leave-active { + opacity: 0; } + .application__panel { display: -webkit-box; display: -webkit-flex; @@ -836,7 +862,7 @@ body { .menu { background: rgba(255, 255, 255, 0.98); border-radius: 3px; - box-shadow: 0 0 0 1px rgba(26, 47, 61, 0.1), 0 0 35px rgba(26, 47, 61, 0.3); + box-shadow: 0 0 0 1px rgba(26, 47, 61, 0.075), 0 1px 4px rgba(26, 47, 61, 0.15), 0 3px 15px rgba(26, 47, 61, 0.15); color: #95a2ad; text-align: left; } .menu__item { @@ -861,7 +887,7 @@ body { display: block; font-size: 0.85em; } .menu__item--separator { - background: rgba(26, 47, 61, 0.1); + background: rgba(26, 47, 61, 0.075); height: 1px; margin: 5px 0; padding: 0; } diff --git a/server/assets/style.css.map b/server/assets/style.css.map index 568a644e..0d408bf3 100644 --- a/server/assets/style.css.map +++ b/server/assets/style.css.map @@ -1 +1 @@ -{"version":3,"sources":["style.css","../../../node_modules/inuit-defaults/_settings.defaults.scss","../../../node_modules/inuit-normalize/_generic.normalize.scss","tools/_variables.scss","base/_typography.scss","../../../node_modules/inuit-reset/_generic.reset.scss","../../../node_modules/inuit-box-sizing/_generic.box-sizing.scss","../../../node_modules/inuit-page/_base.page.scss","tools/_reset.scss","base/_animations.scss","base/_form-elements.scss","tools/_colors.scss","base/_layout.scss","base/_main.scss","components/_action-bar.scss","components/_application-content.scss","components/_badge.scss","components/_base-menu.scss","components/_client-stats.scss","components/_context-menu.scss","components/_directory-tree.scss","components/_dropdown.scss","components/_dropzone.scss","components/_floating-action.scss","components/_icons.scss","components/_loading-indicator.scss","components/_modals.scss","components/_priority-meter.scss","components/_progress-bar.scss","components/_scrollbars.scss","components/_search.scss","components/_sidebar.scss","components/_sidebar-filter.scss","components/_textbox-repeater.scss","components/_torrent-details-panel.scss","components/_torrents.scss","components/_transfer-data.scss"],"names":[],"mappings":"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","file":"style.css","sourcesContent":["@charset \"UTF-8\";\n/*!\n * inuitcss, by @csswizardry\n *\n * github.com/inuitcss | inuitcss.com\n */\n/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\n/**\n * 1. Set default font family to sans-serif.\n * 2. Prevent iOS and IE text size adjust after device orientation change,\n * without disabling user zoom.\n */\n@import url(http://fonts.googleapis.com/css?family=Roboto:400italic,700italic,300,700,300italic,400);\n@import url(\"http://fonts.googleapis.com/css?family=Roboto:500,400italic,300,700,400\");\nhtml {\n font-family: sans-serif;\n /* 1 */\n -ms-text-size-adjust: 100%;\n /* 2 */\n -webkit-text-size-adjust: 100%;\n /* 2 */ }\n\n/**\n * Remove default margin.\n */\nbody {\n margin: 0; }\n\n/* HTML5 display definitions\n ========================================================================== */\n/**\n * Correct `block` display not defined for any HTML5 element in IE 8/9.\n * Correct `block` display not defined for `details` or `summary` in IE 10/11\n * and Firefox.\n * Correct `block` display not defined for `main` in IE 11.\n */\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n display: block; }\n\n/**\n * 1. Correct `inline-block` display not defined in IE 8/9.\n * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.\n */\naudio,\ncanvas,\nprogress,\nvideo {\n display: inline-block;\n /* 1 */\n vertical-align: baseline;\n /* 2 */ }\n\n/**\n * Prevent modern browsers from displaying `audio` without controls.\n * Remove excess height in iOS 5 devices.\n */\naudio:not([controls]) {\n display: none;\n height: 0; }\n\n/**\n * Address `[hidden]` styling not present in IE 8/9/10.\n * Hide the `template` element in IE 8/9/10/11, Safari, and Firefox < 22.\n */\n[hidden],\ntemplate {\n display: none; }\n\n/* Links\n ========================================================================== */\n/**\n * Remove the gray background color from active links in IE 10.\n */\na {\n background-color: transparent; }\n\n/**\n * Improve readability of focused elements when they are also in an\n * active/hover state.\n */\na:active,\na:hover {\n outline: 0; }\n\n/* Text-level semantics\n ========================================================================== */\n/**\n * Address styling not present in IE 8/9/10/11, Safari, and Chrome.\n */\nabbr[title] {\n border-bottom: 1px dotted; }\n\n/**\n * Address style set to `bolder` in Firefox 4+, Safari, and Chrome.\n */\nb,\nstrong {\n font-weight: bold; }\n\n/**\n * Address styling not present in Safari and Chrome.\n */\ndfn {\n font-style: italic; }\n\n/**\n * Address variable `h1` font-size and margin within `section` and `article`\n * contexts in Firefox 4+, Safari, and Chrome.\n */\nh1 {\n font-size: 2em;\n margin: 0.67em 0; }\n\n/**\n * Address styling not present in IE 8/9.\n */\nmark {\n background: #ff0;\n color: #000; }\n\n/**\n * Address inconsistent and variable font size in all browsers.\n */\nsmall {\n font-size: 80%; }\n\n/**\n * Prevent `sub` and `sup` affecting `line-height` in all browsers.\n */\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline; }\n\nsup {\n top: -0.5em; }\n\nsub {\n bottom: -0.25em; }\n\n/* Embedded content\n ========================================================================== */\n/**\n * Remove border when inside `a` element in IE 8/9/10.\n */\nimg {\n border: 0; }\n\n/**\n * Correct overflow not hidden in IE 9/10/11.\n */\nsvg:not(:root) {\n overflow: hidden; }\n\n/* Grouping content\n ========================================================================== */\n/**\n * Address margin not present in IE 8/9 and Safari.\n */\nfigure {\n margin: 1em 40px; }\n\n/**\n * Address differences between Firefox and other browsers.\n */\nhr {\n box-sizing: content-box;\n height: 0; }\n\n/**\n * Contain overflow in all browsers.\n */\npre {\n overflow: auto; }\n\n/**\n * Address odd `em`-unit font size rendering in all browsers.\n */\ncode,\nkbd,\npre,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em; }\n\n/* Forms\n ========================================================================== */\n/**\n * Known limitation: by default, Chrome and Safari on OS X allow very limited\n * styling of `select`, unless a `border` property is set.\n */\n/**\n * 1. Correct color not being inherited.\n * Known issue: affects color of disabled elements.\n * 2. Correct font properties not being inherited.\n * 3. Address margins set differently in Firefox 4+, Safari, and Chrome.\n */\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n color: inherit;\n /* 1 */\n font: inherit;\n /* 2 */\n margin: 0;\n /* 3 */ }\n\n/**\n * Address `overflow` set to `hidden` in IE 8/9/10/11.\n */\nbutton {\n overflow: visible; }\n\n/**\n * Address inconsistent `text-transform` inheritance for `button` and `select`.\n * All other form control elements do not inherit `text-transform` values.\n * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.\n * Correct `select` style inheritance in Firefox.\n */\nbutton,\nselect {\n text-transform: none; }\n\n/**\n * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`\n * and `video` controls.\n * 2. Correct inability to style clickable `input` types in iOS.\n * 3. Improve usability and consistency of cursor style between image-type\n * `input` and others.\n */\nbutton,\nhtml input[type=\"button\"],\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n -webkit-appearance: button;\n /* 2 */\n cursor: pointer;\n /* 3 */ }\n\n/**\n * Re-set default cursor for disabled elements.\n */\nbutton[disabled],\nhtml input[disabled] {\n cursor: default; }\n\n/**\n * Remove inner padding and border in Firefox 4+.\n */\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n border: 0;\n padding: 0; }\n\n/**\n * Address Firefox 4+ setting `line-height` on `input` using `!important` in\n * the UA stylesheet.\n */\ninput {\n line-height: normal; }\n\n/**\n * It's recommended that you don't attempt to style these elements.\n * Firefox's implementation doesn't respect box-sizing, padding, or width.\n *\n * 1. Address box sizing set to `content-box` in IE 8/9/10.\n * 2. Remove excess padding in IE 8/9/10.\n */\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n box-sizing: border-box;\n /* 1 */\n padding: 0;\n /* 2 */ }\n\n/**\n * Fix the cursor style for Chrome's increment/decrement buttons. For certain\n * `font-size` values of the `input`, it causes the cursor style of the\n * decrement button to change from `default` to `text`.\n */\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n height: auto; }\n\n/**\n * 1. Address `appearance` set to `searchfield` in Safari and Chrome.\n * 2. Address `box-sizing` set to `border-box` in Safari and Chrome.\n */\ninput[type=\"search\"] {\n -webkit-appearance: textfield;\n /* 1 */\n box-sizing: content-box;\n /* 2 */ }\n\n/**\n * Remove inner padding and search cancel button in Safari and Chrome on OS X.\n * Safari (but not Chrome) clips the cancel button when the search input has\n * padding (and `textfield` appearance).\n */\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none; }\n\n/**\n * Define consistent border, margin, and padding.\n */\nfieldset {\n border: 1px solid #c0c0c0;\n margin: 0 2px;\n padding: 0.35em 0.625em 0.75em; }\n\n/**\n * 1. Correct `color` not being inherited in IE 8/9/10/11.\n * 2. Remove padding so people aren't caught out if they zero out fieldsets.\n */\nlegend {\n border: 0;\n /* 1 */\n padding: 0;\n /* 2 */ }\n\n/**\n * Remove default vertical scrollbar in IE 8/9/10/11.\n */\ntextarea {\n overflow: auto; }\n\n/**\n * Don't inherit the `font-weight` (applied by a rule above).\n * NOTE: the default cannot safely be changed in Chrome and Safari on OS X.\n */\noptgroup {\n font-weight: bold; }\n\n/* Tables\n ========================================================================== */\n/**\n * Remove most spacing between table cells.\n */\ntable {\n border-collapse: collapse;\n border-spacing: 0; }\n\ntd,\nth {\n padding: 0; }\n\n/*------------------------------------* #RESET\n\\*------------------------------------*/\n/**\n * As well as using normalize.css, it is often advantageous to remove all\n * margins from certain elements.\n */\nbody,\nh1, h2, h3, h4, h5, h6,\np, blockquote, pre,\ndl, dd, ol, ul,\nform, fieldset, legend,\nfigure,\ntable, th, td, caption,\nhr {\n margin: 0;\n padding: 0; }\n\n/**\n * Give a help cursor to elements that give extra info on `:hover`.\n */\nabbr[title],\ndfn[title] {\n cursor: help; }\n\n/**\n * Remove underlines from potentially troublesome elements.\n */\nu,\nins {\n text-decoration: none; }\n\n/**\n * Apply faux underlines to inserted text via `border-bottom`.\n */\nins {\n border-bottom: 1px solid; }\n\n/*------------------------------------* #BOX-SIZING\n\\*------------------------------------*/\n/**\n * Set the global `box-sizing` state to `border-box`.\n *\n * css-tricks.com/inheriting-box-sizing-probably-slightly-better-best-practice\n * paulirish.com/2012/box-sizing-border-box-ftw\n */\nhtml {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box; }\n\n*, *:before, *:after {\n -webkit-box-sizing: inherit;\n -moz-box-sizing: inherit;\n box-sizing: inherit; }\n\n/*------------------------------------* #PAGE\n\\*------------------------------------*/\n/**\n * High-, page-level styling.\n *\n * 1. Set the default `font-size` and `line-height` for the entire project,\n * sourced from our default variables. The `font-size` is calculated to exist\n * in ems, the `line-height` is calculated to exist unitlessly.\n * 2. Force scrollbars to always be visible to prevent awkward ‘jumps’ when\n * navigating between pages that do/do not have enough content to produce\n * scrollbars naturally.\n * 3. Ensure the page always fills at least the entire height of the viewport.\n * 4. Prevent certain mobile browsers from automatically zooming fonts.\n * 5. Fonts on OSX will look more consistent with other systems that do not\n * render text using sub-pixel anti-aliasing.\n */\nhtml {\n font-size: 1em;\n /* [1] */\n line-height: 1.5;\n /* [1] */\n background-color: #fff;\n color: #333;\n overflow-y: scroll;\n /* [2] */\n min-height: 100%;\n /* [3] */\n -webkit-text-size-adjust: 100%;\n /* [4] */\n -ms-text-size-adjust: 100%;\n /* [4] */\n -moz-osx-font-smoothing: grayscale;\n /* [5] */\n -webkit-font-smoothing: antialiased;\n /* [5] */ }\n\nth {\n font-weight: inherit;\n text-align: left; }\n\n@keyframes fade-in {\n 0% {\n opacity: 0; }\n 100% {\n opacity: 1; } }\n\n@keyframes fade-out {\n 0% {\n opacity: 1; }\n 100% {\n opacity: 0; } }\n\n.textbox, .checkbox__decoy, .dropzone__selected-files,\n.button {\n appearance: none;\n -moz-appearance: none;\n -webkit-appearance: none;\n outline: none; }\n\n.textbox, .checkbox__decoy, .dropzone__selected-files {\n background: #e9eff5;\n border-radius: 4px;\n border: 1px solid #d6e2ea;\n color: #53718a;\n display: block;\n font-size: 0.9em;\n padding: 10px 15px;\n transition: background 0.25s, border 0.25s, color 0.25s;\n width: 100%; }\n .textbox::placeholder, .checkbox__decoy::placeholder, .dropzone__selected-files::placeholder {\n color: #abbac7;\n font-style: italic;\n transition: color 0.25s; }\n .textbox:focus, .checkbox__decoy:focus, .dropzone__selected-files:focus {\n background: #fdfefe;\n border-color: #c7d6df;\n color: #258de5; }\n .textbox:focus::placeholder, .checkbox__decoy:focus::placeholder, .dropzone__selected-files:focus::placeholder {\n color: #abbac7; }\n .textbox.is-fulfilled, .is-fulfilled.checkbox__decoy, .dropzone__selected-files {\n background: #fdfefe; }\n\n.button {\n background: transparent;\n border: none;\n border-radius: 4px;\n cursor: pointer;\n font-size: 0.9em;\n font-weight: 500;\n padding: 8px 22px;\n transition: background 0.25s;\n user-select: none; }\n .button.has-icon .icon {\n height: 16px;\n margin: 0 8.33333px;\n vertical-align: middle;\n width: 16px; }\n .button.has-icon .icon:first-child {\n margin-left: 0; }\n .button.has-icon .icon:last-child {\n margin-right: 0; }\n .button--deemphasize {\n background: #e9eef2;\n box-shadow: inset 0 0 0 1px #d9e2e9;\n color: #66717a; }\n .button--deemphasize:hover {\n background: #d9e2e9;\n box-shadow: inset 0 0 0 1px #c9d5df;\n color: #5a646c; }\n .button--primary {\n background: #258de5;\n box-shadow: inset 0 0 0 1px #1a80d7;\n color: #fff;\n white-space: nowrap; }\n .button--primary:hover {\n background: #1a80d7;\n box-shadow: inset 0 0 0 1px #1773c0; }\n\n.checkbox {\n line-height: 1;\n position: relative; }\n .checkbox:hover .checkbox__decoy {\n border-color: #258de5; }\n .checkbox input[type=\"checkbox\"] {\n left: 0;\n opacity: 0;\n position: absolute;\n top: 50%;\n transform: translateY(-50%); }\n .checkbox input[type=\"checkbox\"]:checked + .checkbox__decoy .icon {\n fill: #258de5; }\n .checkbox__decoy {\n background: #fff;\n display: inline-block;\n height: 15px;\n margin-right: 7.5px;\n margin-top: -2px;\n padding: 0;\n position: relative;\n vertical-align: middle;\n width: 15px; }\n .checkbox__decoy .icon {\n fill: transparent;\n height: 10px;\n left: 50%;\n position: absolute;\n top: 50%;\n transition: fill 0.25s;\n transform: translate(-43%, -43%);\n width: 10px; }\n .checkbox__label {\n color: #768a9a; }\n\n.form__label {\n color: #abbac7;\n display: block;\n font-size: 0.8em;\n line-height: 1;\n margin-bottom: 0.35em; }\n\n.form__row + .form__row {\n margin-top: 25px; }\n\nhtml,\nbody {\n height: 100%;\n overflow: hidden; }\n\n.container {\n height: 100%;\n width: 100%; }\n\n.flood {\n align-items: stretch;\n display: flex;\n height: 100%; }\n\n.application__content {\n display: flex;\n height: 100vh;\n flex: 1 2 auto;\n flex-direction: column;\n position: relative; }\n\n.application__panel {\n display: flex;\n bottom: 0;\n left: 0;\n position: absolute;\n right: 0;\n top: 0; }\n .application__panel--torrent-list {\n transition: transform 0.5s;\n z-index: 2; }\n .application__panel--torrent-list.is-open {\n transform: translateX(85%); }\n .application__panel--torrent-details {\n right: 15%;\n width: 85%;\n z-index: 1; }\n\n.torrent__header {\n flex: 1;\n min-height: 35px;\n max-height: 35px; }\n\n.torrent__list__wrapper {\n display: flex;\n flex: 1; }\n .torrent__list__wrapper--custom-scroll {\n flex: 1;\n height: auto !important; }\n\nbody {\n background: #1a2f3d; }\n\nul {\n list-style: none; }\n\nbody {\n color: #53718a;\n font-family: \"Roboto\", sans-srif; }\n\n.unit {\n display: inline-block;\n font-size: 0.8em;\n font-style: normal;\n margin-bottom: 0.1em;\n opacity: 0.8; }\n\n.text-overflow {\n overflow: hidden;\n position: relative;\n text-overflow: ellipsis; }\n\n.action-bar {\n background: transparent;\n color: #1b1a1c;\n display: flex;\n flex: 0 0 60px;\n position: relative; }\n .action-bar:after {\n background: rgba(26, 47, 61, 0.15);\n bottom: 0;\n content: '';\n height: 1px;\n left: 9px;\n position: absolute;\n right: 0;\n width: auto; }\n .action-bar__item {\n flex: 3; }\n .action-bar__item:first-child {\n text-align: left; }\n .action-bar__item:last-child {\n text-align: right; }\n .action-bar__item--sort-torrents {\n max-width: 225px; }\n .action-bar__item--sort-torrents .dropdown {\n margin: 5px 0 0 15px; }\n .action-bar__item--sort-torrents .dropdown__content {\n min-width: 250px; }\n .action-bar__item--torrent-operations .dropdown {\n display: inline-block;\n height: 60px; }\n .action-bar__item--torrent-operations .dropdown__content {\n min-width: 430px;\n right: 4px; }\n .action-bar__group {\n display: inline-block;\n font-size: 0;\n padding: 0 15px; }\n .action-bar__group--has-divider {\n position: relative; }\n .action-bar__group--has-divider:before {\n background: rgba(122, 128, 128, 0.15);\n content: '';\n position: absolute;\n height: 80%;\n left: 0;\n top: 10%;\n width: 1px; }\n\n.actions {\n list-style: none; }\n\n.action {\n box-shadow: 1px 0 transparent, -1px 0 transparent;\n cursor: pointer;\n display: inline-block;\n height: 60px;\n position: relative;\n width: 60px;\n text-align: center;\n transition: background 0.25s, box-shadow 0.25s; }\n .action:hover {\n background: rgba(51, 62, 74, 0.05);\n box-shadow: 1px 0 rgba(51, 62, 74, 0.15), -1px 0 rgba(51, 62, 74, 0.15); }\n .action:hover .icon {\n fill: #258de5; }\n .action__label {\n display: block;\n position: absolute;\n top: 100%;\n visibility: hidden; }\n .action .icon {\n fill: #909799;\n height: 25px;\n left: 50%;\n position: absolute;\n top: 50%;\n transition: fill 0.25s;\n transform: translateX(-50%) translateY(-50%);\n width: 30px; }\n\n.application__content {\n background: #e9eef2; }\n\n.badge {\n background: #2b4456;\n border-radius: 100px;\n color: #132532;\n display: inline-block;\n font-size: 0.8em;\n font-weight: 800;\n line-height: 1;\n margin-left: 10px;\n padding: 1px 5px;\n transition: background 0.25s;\n vertical-align: baseline; }\n\n.menu {\n background: rgba(255, 255, 255, 0.98);\n border-radius: 3px;\n box-shadow: 0 0 0 1px rgba(26, 47, 61, 0.1), 0 0 35px rgba(26, 47, 61, 0.3);\n color: #95a2ad;\n text-align: left; }\n .menu__item {\n padding: 5px 15px; }\n .menu__item__label--primary.has-action {\n display: flex; }\n .menu__item__label--primary.has-action .menu__item__label {\n flex: 1 1 auto; }\n .menu__item__label--primary.has-action .menu__item__label__action {\n flex: 0 0 auto; }\n .menu__item__label--secondary {\n color: #cfd4d9;\n display: block;\n font-size: 0.85em; }\n .menu__item--separator {\n background: rgba(26, 47, 61, 0.1);\n height: 1px;\n margin: 5px 0;\n padding: 0; }\n .menu__item.is-selectable {\n cursor: pointer;\n display: block;\n font-size: 0.9em;\n transition: background 0.25s, color 0.25s; }\n .menu__item.is-selectable:hover {\n background: rgba(233, 238, 242, 0.4);\n color: #788997; }\n .menu__item.is-selectable.is-selected {\n color: #258de5; }\n .menu-enter {\n animation: fade-in 0.25s both; }\n .menu-leave {\n animation: fade-out 0.25s both; }\n\n.client-stats {\n height: 200px;\n position: relative; }\n .client-stats .loading-indicator {\n left: 50%;\n position: absolute;\n top: 50%;\n transform: translate(-50%, -50%); }\n .client-stats .transfer-data-enter {\n opacity: 0;\n transition: opacity 1s; }\n .client-stats .transfer-data-enter.transfer-data-enter-active {\n opacity: 1; }\n .client-stats .transfer-data-leave {\n opacity: 1;\n transition: opacity 1s; }\n .client-stats .transfer-data-leave.transfer-data-leave-active {\n opacity: 0; }\n\n.client-stat {\n align-items: center;\n display: flex;\n height: 100px;\n padding: 0 20px; }\n .client-stat__icon, .client-stat__data {\n position: relative;\n vertical-align: top;\n z-index: 1; }\n .client-stat__icon {\n flex: 0 0 23px; }\n .client-stat__icon .icon {\n display: inline-block;\n height: 25px;\n margin: 6px 0 0 -5px;\n width: auto; }\n .client-stat__data {\n flex: 1; }\n .client-stat__data--primary, .client-stat__data--secondary {\n display: block;\n font-weight: 100;\n line-height: 1.2; }\n .client-stat__data--primary {\n font-size: 1.75em;\n white-space: nowrap; }\n .client-stat__data--primary .unit {\n font-size: 0.65em;\n margin-bottom: 0;\n opacity: 0.5;\n position: relative;\n top: -0.1em; }\n .client-stat__data--secondary {\n font-size: 0.8em;\n font-style: italic;\n font-weight: 400; }\n\n.client-stat--limits {\n background: none;\n border: none;\n color: #53718a;\n display: block;\n outline: none;\n padding: 10px 15px;\n font-size: 0.85em;\n text-align: left;\n transition: color 0.25s;\n vertical-align: middle;\n width: 100%; }\n .client-stat--limits .icon {\n display: inline-block;\n fill: #53718a;\n margin: -2px 5px 0 0;\n transition: fill 0.25s;\n vertical-align: middle;\n width: 14.5px; }\n .client-stat--limits .icon .limits__bars--top {\n opacity: 0.4; }\n .client-stat--limits .icon .limits__bars--bottom {\n opacity: 0.6; }\n .client-stat--limits:hover {\n color: #258de5; }\n .client-stat--limits:hover .icon {\n fill: #258de5; }\n\n.client-stat {\n position: relative; }\n .client-stat .graph {\n height: 100%;\n left: 0;\n position: absolute;\n top: 0;\n width: 100%;\n z-index: 0; }\n .client-stat .graph svg {\n height: 100%;\n width: 100%; }\n .client-stat .graph__line {\n fill: none; }\n .client-stat .graph__line--limit {\n stroke-dasharray: 3px 4px;\n stroke-width: 1px; }\n .client-stat .graph__line--rate {\n stroke-width: 1.1px; }\n .client-stat--download .icon {\n fill: rgba(43, 174, 108, 0.75); }\n .client-stat--download .client-stat__data--primary {\n color: #2bae6c; }\n .client-stat--download .client-stat__data--secondary {\n color: rgba(43, 174, 108, 0.75); }\n .client-stat--download .graph .graph--download--gradient--top {\n stop-color: rgba(43, 174, 108, 0.2); }\n .client-stat--download .graph .graph--download--gradient--bottom {\n stop-color: rgba(43, 174, 108, 0); }\n .client-stat--download .graph__area {\n fill: url(\"#graph--download--gradient\"); }\n .client-stat--download .graph__line--limit {\n stroke: rgba(102, 217, 159, 0.15); }\n .client-stat--download .graph__line--rate {\n stroke: rgba(43, 174, 108, 0.4); }\n .client-stat--upload .icon {\n fill: rgba(35, 135, 217, 0.75); }\n .client-stat--upload .client-stat__data--primary {\n color: #2387d9; }\n .client-stat--upload .client-stat__data--secondary {\n color: rgba(35, 135, 217, 0.75); }\n .client-stat--upload .graph .graph--upload--gradient--top {\n stop-color: rgba(35, 135, 217, 0.2); }\n .client-stat--upload .graph .graph--upload--gradient--bottom {\n stop-color: rgba(35, 135, 217, 0); }\n .client-stat--upload .graph__area {\n fill: url(\"#graph--upload--gradient\"); }\n .client-stat--upload .graph__line--limit {\n stroke: rgba(121, 183, 233, 0.15); }\n .client-stat--upload .graph__line--rate {\n stroke: rgba(35, 135, 217, 0.4); }\n\n.context-menu {\n font-size: 0.9em;\n padding: 10px 0;\n position: fixed;\n z-index: 10; }\n\n.directory-tree .icon {\n display: inline-block;\n fill: rgba(82, 120, 147, 0.4);\n height: 14px;\n margin-right: 6px;\n width: 14px; }\n\n.directory-tree__node {\n color: #527893;\n line-height: 1.75;\n text-overflow: ellipsis;\n vertical-align: middle;\n white-space: nowrap; }\n .directory-tree__node--group {\n padding-left: 10px;\n position: relative; }\n .directory-tree__node--group:after {\n background: rgba(82, 120, 147, 0.1);\n content: '';\n height: 100%;\n left: 5px;\n position: absolute;\n top: -5px;\n width: 2px; }\n .directory-tree__node--directory {\n color: #527893;\n cursor: pointer;\n transition: color 0.125s; }\n .directory-tree__node--directory.is-expanded {\n color: #719bb7;\n font-weight: 500; }\n .directory-tree__node--directory.is-expanded .icon {\n fill: rgba(130, 170, 197, 0.5); }\n .directory-tree__node--directory .icon {\n fill: rgba(82, 120, 147, 0.4); }\n .directory-tree__node .file {\n align-items: center;\n display: flex;\n line-height: 1.4;\n margin-left: -9px;\n padding: 2px 0 2px 9px;\n transition: background 0.25s, box-shadow 0.25s, color 0.25s;\n width: 100%; }\n .directory-tree__node .file:hover {\n background: rgba(26, 45, 60, 0.8);\n box-shadow: 0 1px 0 #1f3647, 0 -1px 0 #1f3647;\n color: #79a7c7; }\n .directory-tree__node .file:hover .file__detail--size, .directory-tree__node .file:hover .file__detail--priority {\n color: #527893; }\n .directory-tree__node .file .icon {\n fill: #344b5b;\n margin-top: -3px;\n vertical-align: middle; }\n .directory-tree__node .file__detail {\n flex: 1 1 auto;\n overflow: hidden;\n padding-right: 6.25px;\n text-overflow: ellipsis; }\n .directory-tree__node .file__detail--size, .directory-tree__node .file__detail--priority {\n color: #2b4456;\n flex: 0 0 auto;\n font-size: 0.95em;\n text-align: right;\n transition: color 0.25s; }\n .directory-tree__node .file__detail--priority .icon {\n height: auto;\n margin-right: 0;\n width: 16px; }\n .directory-tree__node .file__detail:last-child {\n padding-right: 0; }\n .directory-tree__node--file-list {\n margin-bottom: 3px; }\n\n.directory-tree__parent-directory {\n margin-left: -1px;\n overflow: hidden;\n text-overflow: ellipsis; }\n .directory-tree__parent-directory .icon {\n fill: rgba(58, 92, 116, 0.5);\n margin-right: 8px;\n vertical-align: middle; }\n\n.directory-tree__tree .directory-tree__tree {\n padding-left: 6px; }\n\n.dropdown {\n display: inline-block;\n outline: none;\n position: relative;\n z-index: 2; }\n .dropdown__button, .dropdown__trigger {\n cursor: pointer; }\n .dropdown__button {\n display: block;\n padding: 12px 15px 7px 15px;\n text-align: left;\n width: auto;\n word-wrap: none; }\n .dropdown__content {\n left: 0;\n position: absolute;\n top: 0;\n z-index: 2; }\n .dropdown.is-expanded .dropdown__header .dropdown__value {\n color: #4e6a7c; }\n .dropdown__label {\n color: #abbac7;\n display: block;\n font-size: 0.65em;\n font-weight: 500;\n letter-spacing: 0.1em;\n line-height: 0.9em;\n text-transform: uppercase; }\n .dropdown__button .dropdown__label {\n cursor: pointer; }\n .dropdown__value {\n color: #8899a8;\n transition: color 0.25s; }\n .dropdown__value:after {\n border-top: 5px solid #8899a8;\n border-left: 4px solid transparent;\n border-right: 4px solid transparent;\n content: '';\n display: inline-block;\n margin-left: 10px;\n vertical-align: middle; }\n .dropdown__header {\n position: relative; }\n .dropdown__header:after {\n background: rgba(26, 47, 61, 0.05);\n bottom: 0;\n content: '';\n display: block;\n height: 1px;\n left: 5%;\n position: absolute;\n width: 90%; }\n .dropdown__items {\n display: flex;\n padding: 10px 0; }\n .dropdown__list {\n flex: 1; }\n .dropdown--align-right .dropdown {\n left: auto;\n right: 0; }\n\n.dropdown__content__container {\n padding: 25px 30px; }\n\n.dropzone {\n align-items: center;\n background: #e9eff5;\n border: 1px dashed #d6e2ea;\n border-radius: 4px;\n color: #53718a;\n display: flex;\n flex-direction: column;\n text-align: center;\n transition: border 0.25s, color 0.25s;\n width: 100%; }\n .dropzone:hover {\n border-color: #93b2c7; }\n .dropzone:hover .dropzone__icon .icon {\n fill: #96adc3; }\n .dropzone--is-dragging, .dropzone--is-dragging:hover {\n border-color: #258de5;\n color: #258de5; }\n .dropzone--is-dragging .dropzone__icon .icon, .dropzone--is-dragging:hover .dropzone__icon .icon {\n fill: #258de5; }\n .dropzone__icon .icon--files {\n fill: #c7d3df;\n height: 64px;\n transition: fill 0.25s;\n width: 64px; }\n .dropzone__icon .icon--files__file--right, .dropzone__icon .icon--files__file--left {\n fill-opacity: 0.5; }\n .dropzone__copy {\n cursor: pointer;\n flex: 1;\n font-size: 0.85em;\n padding: 25px;\n width: 100%; }\n .dropzone__browse-button {\n color: #258de5;\n text-decoration: underline; }\n .dropzone__selected-files {\n border-radius: 4px 4px 0 0;\n font-size: 0.8em;\n padding: 12.5px;\n width: 100%; }\n .dropzone__selected-files + .dropzone {\n border-radius: 0 0 4px 4px;\n border-top: none; }\n .dropzone__selected-files__file {\n text-align: left;\n white-space: nowrap; }\n .dropzone__selected-files__file .icon {\n display: inline-block;\n fill: #adbfce;\n height: 12px;\n margin-right: 4px;\n vertical-align: baseline;\n width: 12px; }\n .dropzone__selected-files__file .icon--close {\n height: 8px;\n margin-left: 4px;\n margin-right: 0;\n vertical-align: middle;\n width: 8px; }\n .dropzone__file {\n display: flex;\n width: 100%; }\n .dropzone__file__item {\n flex: 1 0 auto; }\n .dropzone__file__item--icon {\n flex: 0 0 auto; }\n .dropzone__file__item--file-name {\n flex: 1 1 auto;\n overflow: hidden;\n text-overflow: ellipsis; }\n .dropzone__file__item--remove-icon {\n cursor: pointer; }\n\n.floating-action__button {\n background: #fff;\n border: none;\n border-radius: 16px;\n box-shadow: 0 0 0 1px rgba(26, 47, 61, 0.1);\n cursor: pointer;\n height: 16px;\n outline: none;\n margin-right: 6px;\n padding: 0;\n position: relative;\n transition: background 0.25s, box-shadow 0.25s;\n width: 16px; }\n .floating-action__button:last-child {\n margin-right: 0; }\n .floating-action__button:hover {\n background: #e9eef2;\n box-shadow: 0 0 0 1px rgba(26, 47, 61, 0.2); }\n .floating-action__button:hover .icon {\n fill: rgba(26, 47, 61, 0.5); }\n .floating-action__button .icon {\n height: 8px;\n fill: rgba(26, 47, 61, 0.3);\n left: 50%;\n position: absolute;\n top: 50%;\n transition: fill 0.25s;\n transform: translate(-50%, -50%);\n width: 8px; }\n\n@keyframes loading-indicator-dots-pulse {\n 0% {\n fill-opacity: 0.2; }\n 100% {\n fill-opacity: 0.8; } }\n\n.icon--eta .icon__ring {\n fill-opacity: 1; }\n\n.icon--loading-indicator .loading-indicator--dots__dot {\n animation: loading-indicator-dots-pulse 0.6s linear alternate infinite;\n fill: #fff; }\n .icon--loading-indicator .loading-indicator--dots__dot--center {\n animation-delay: 0.2s; }\n .icon--loading-indicator .loading-indicator--dots__dot--right {\n animation-delay: 0.4s; }\n\n@keyframes loading-indicator-swipe {\n 0% {\n transform: translateX(-100%); }\n 50% {\n transform: translateX(400%); }\n 100% {\n transform: translateX(400%); } }\n\n.loading-indicator {\n height: 18px;\n position: relative;\n width: 32px; }\n .loading-indicator.is-inverse .loading-indicator__bar {\n background: rgba(56, 88, 109, 0.7); }\n .loading-indicator.is-inverse .loading-indicator__bar:after {\n background: rgba(37, 141, 229, 0.75); }\n .loading-indicator__bar {\n background: #e9eef2;\n border-radius: 10px;\n height: 3px;\n left: 0;\n overflow: hidden;\n position: absolute;\n transform: translateY(0);\n width: 100%; }\n .loading-indicator__bar:after {\n animation: loading-indicator-swipe 3s ease-in-out infinite;\n background: rgba(37, 141, 229, 0.75);\n border-radius: 10px;\n content: '';\n display: block;\n height: 100%;\n transform: translateX(-100%);\n width: 25%; }\n .loading-indicator__bar--1 {\n top: 0; }\n .loading-indicator__bar--2 {\n top: 50%;\n transform: translateY(-50%); }\n .loading-indicator__bar--2:after {\n animation-delay: 0.5s; }\n .loading-indicator__bar--3 {\n bottom: 0; }\n .loading-indicator__bar--3:after {\n animation-delay: 1s; }\n\n.modal {\n background: rgba(26, 47, 61, 0.5);\n height: 100%;\n left: 0;\n position: fixed;\n top: 0;\n transition: opacity 0.5s;\n width: 100%;\n z-index: 100; }\n .modal--align-center {\n text-align: center; }\n .modal__tabs {\n color: #abbac7;\n font-size: 0.65em;\n font-weight: 400;\n margin: 10px -5px 0 -5px; }\n .modal__tabs .modal__tab {\n cursor: pointer;\n display: inline-block;\n margin-right: 10px;\n padding: 5px 5px 10px 5px;\n position: relative; }\n .modal__tabs .modal__tab:after {\n bottom: 0;\n content: '';\n height: 1px;\n left: 0;\n position: absolute;\n right: 0;\n transition: background 0.25s; }\n .modal__tabs .modal__tab:last-child {\n margin-right: 0; }\n .modal__tabs .modal__tab.is-active {\n color: #258de5;\n font-weight: 800; }\n .modal__tabs .modal__tab.is-active:after {\n background: #258de5; }\n .modal__header {\n background: #fff;\n border-radius: 3px 3px 0 0;\n box-shadow: inset 0 -1px 0 #dde7ed;\n color: #5c6e80;\n flex: 0 0 auto;\n font-size: 1.25em;\n font-weight: 300;\n line-height: 1;\n padding: 20px 25px; }\n .modal__header.has-tabs {\n padding-bottom: 0; }\n .modal__content {\n flex: 1 1 auto;\n overflow: auto;\n padding: 20px 25px 20px 25px; }\n .modal__content__wrapper {\n background: #f7fafc;\n border-radius: 3px;\n box-shadow: 0 0 0 1px rgba(26, 47, 61, 0.1), 0 0 35px rgba(26, 47, 61, 0.3);\n display: flex;\n flex-direction: column;\n left: 50%;\n max-height: 80%;\n max-width: 80%;\n position: absolute;\n top: 10%;\n transform: translate(-50%, 0);\n width: 500px; }\n .modal__body {\n color: #94a3af;\n font-size: 0.9em; }\n .modal__actions {\n margin-top: 25px; }\n .modal__button-group {\n text-align: right; }\n .modal--align-center .modal__button-group {\n text-align: center; }\n .modal__button-group .button + .button {\n margin-left: 20px; }\n .modal__animation-enter {\n opacity: 0; }\n .modal__animation-enter-active {\n opacity: 1; }\n .modal__animation-leave {\n opacity: 1;\n pointer-events: none; }\n .modal__animation-leave-active {\n opacity: 0; }\n\n.priority-meter {\n height: 8px;\n position: relative; }\n .priority-meter__wrapper {\n cursor: pointer;\n display: inline-block;\n padding: 5px;\n user-select: none;\n vertical-align: middle; }\n .priority-meter:before, .priority-meter:after {\n content: '';\n display: block;\n position: absolute; }\n .priority-meter:before {\n height: 2px;\n left: 0;\n top: 3px;\n transition: background 0.25s;\n width: 100%; }\n .priority-meter:after {\n height: 100%;\n top: 0;\n transition: background 0.25s, left 0.25s;\n width: 2px; }\n .priority-meter--max-2 {\n width: 18px; }\n .priority-meter--max-2.priority-meter--level-0:before {\n background: rgba(67, 96, 118, 0.2); }\n .priority-meter--max-2.priority-meter--level-0:after {\n left: 0;\n background: #436076; }\n .priority-meter--max-2.priority-meter--level-1:before {\n background: rgba(37, 141, 229, 0.2); }\n .priority-meter--max-2.priority-meter--level-1:after {\n left: 8px;\n background: #258de5; }\n .priority-meter--max-2.priority-meter--level-2:before {\n background: rgba(57, 206, 131, 0.2); }\n .priority-meter--max-2.priority-meter--level-2:after {\n background: #39ce83;\n left: 16px; }\n .priority-meter--max-3 {\n width: 26px; }\n .priority-meter--max-3.priority-meter--level-0:before {\n background: rgba(67, 96, 118, 0.2); }\n .priority-meter--max-3.priority-meter--level-0:after {\n left: 0;\n background: #436076; }\n .priority-meter--max-3.priority-meter--level-1:before {\n background: rgba(37, 141, 229, 0.2); }\n .priority-meter--max-3.priority-meter--level-1:after {\n left: 8px;\n background: #258de5; }\n .priority-meter--max-3.priority-meter--level-2:before {\n background: rgba(57, 206, 131, 0.2); }\n .priority-meter--max-3.priority-meter--level-2:after {\n background: #39ce83;\n left: 16px; }\n .priority-meter--max-3.priority-meter--level-3:before {\n background: rgba(57, 206, 131, 0.2); }\n .priority-meter--max-3.priority-meter--level-3:after {\n background: #39ce83;\n left: 24px; }\n\n.progress-bar {\n height: 3px;\n position: relative;\n transition: opacity 0.25s;\n z-index: 1; }\n .is-selected.is-stopped .progress-bar {\n opacity: 0.5; }\n .progress-bar:after {\n background: #e3e5e5;\n content: '';\n height: 1px;\n left: 0;\n position: absolute;\n z-index: 0;\n top: 1px;\n transition: background 0.25s;\n width: 100%; }\n .is-selected .progress-bar:after {\n background: rgba(255, 255, 255, 0.5); }\n .is-selected.is-stopped .progress-bar:after {\n background: rgba(255, 255, 255, 0.5); }\n .progress-bar__fill {\n background: #39ce83;\n bottom: 0;\n height: 100%;\n left: 0;\n position: absolute;\n top: 0;\n transition: background 0.25s, width 0.25s;\n z-index: 1; }\n .is-seeding .progress-bar__fill {\n background: #258de5; }\n .is-completed .progress-bar__fill,\n .is-stopped .progress-bar__fill {\n background: #e3e5e5; }\n .is-selected .progress-bar__fill {\n background: #fff; }\n .has-error .progress-bar__fill {\n background: #e95779; }\n\n.scrollbars__thumb {\n background: rgba(26, 47, 61, 0.3);\n border-radius: 10px;\n cursor: pointer;\n opacity: 0;\n transition: background 0.25s, opacity 0.5s; }\n .scrollbars__thumb:active {\n opacity: 1; }\n .scrollbars__thumb:hover, .scrollbars__thumb:active {\n background: rgba(26, 47, 61, 0.6); }\n .is-inverted .scrollbars__thumb {\n background: rgba(233, 238, 242, 0.3); }\n .is-inverted .scrollbars__thumb:hover, .is-inverted .scrollbars__thumb:active {\n background: rgba(233, 238, 242, 0.6); }\n\n.scrollbars:hover .scrollbars__thumb {\n opacity: 1; }\n\n.search {\n position: relative; }\n .search .icon {\n fill: #53718a;\n height: 22px;\n left: 17px;\n opacity: 0.5;\n position: absolute;\n top: 50%;\n transition: fill 0.25s, opacity 0.25s;\n transform: translateY(-50%);\n width: 22px; }\n .search .icon--close {\n left: auto;\n right: 17px; }\n .search .button {\n height: 100%;\n position: absolute;\n right: 0;\n width: 30px; }\n .search .button .icon {\n position: absolute;\n height: 10px;\n left: 50%;\n top: 50%;\n transform: translate(-50%, -50%);\n width: 10px; }\n .search .textbox, .search .checkbox__decoy, .search .dropzone__selected-files {\n appearance: none;\n -webkit-appearance: none;\n -moz-appearance: none;\n border: 1px solid rgba(9, 24, 36, 0.4);\n border-left: none;\n border-right: none;\n border-radius: 0;\n background: rgba(9, 24, 36, 0.3);\n box-shadow: none;\n color: #53718a;\n display: block;\n font-size: 1em;\n outline: none;\n padding: 12px 0 12px 45px;\n transition: background 0.25s, border 0.25s, color 0.25s;\n width: 100%; }\n .search .textbox::placeholder, .search .checkbox__decoy::placeholder, .search .dropzone__selected-files::placeholder {\n color: rgba(83, 113, 138, 0.4);\n font-style: italic;\n transition: color 0.25s; }\n .search.is-in-use .icon {\n fill: #258de5;\n opacity: 1; }\n .search.is-in-use .textbox, .search.is-in-use .checkbox__decoy, .search.is-in-use .dropzone__selected-files {\n background: rgba(37, 141, 229, 0.25);\n border-bottom: 1px solid rgba(37, 141, 229, 0.3);\n border-top: 1px solid rgba(37, 141, 229, 0.3);\n color: #258de5;\n padding-right: 45px; }\n .search.is-in-use .textbox::placeholder, .search.is-in-use .checkbox__decoy::placeholder, .search.is-in-use .dropzone__selected-files::placeholder {\n color: rgba(37, 141, 229, 0.4); }\n\n.application__sidebar {\n box-shadow: 1px 0 rgba(6, 9, 11, 0.3);\n color: #53718a;\n flex: 1;\n min-width: 200px;\n max-width: 240px;\n overflow: auto;\n position: relative;\n z-index: 2; }\n\n.sidebar__item--speed-limit {\n padding-left: 5px;\n padding-top: 5px; }\n .sidebar__item--speed-limit .dropdown__content {\n min-width: 180px; }\n .sidebar__item--speed-limit .dropdown__items {\n font-size: 0.9em; }\n\n.sidebar-filter {\n font-size: 0.85em;\n padding: 30px 0; }\n .sidebar-filter + .sidebar-filter {\n padding-top: 0; }\n .sidebar-filter__item {\n color: #53718a;\n cursor: pointer;\n font-weight: 400;\n padding: 3px 20px;\n transition: color 0.25s; }\n .sidebar-filter__item:hover {\n color: #7a97af; }\n .sidebar-filter__item:hover .icon {\n fill: #7a97af; }\n .sidebar-filter__item.is-active {\n color: #258de5;\n font-weight: 700; }\n .sidebar-filter__item.is-active .badge {\n background: #3b586d; }\n .sidebar-filter__item.is-active .icon {\n fill: #258de5; }\n .sidebar-filter__item .icon {\n display: inline-block;\n fill: #53718a;\n height: 14px;\n margin-right: 7px;\n transition: fill 0.25s;\n vertical-align: middle;\n width: auto; }\n .sidebar-filter .badge {\n background: #2b4456;\n color: #132532; }\n\n.sidebar-filter__item--heading {\n cursor: default;\n font-size: 0.8em;\n font-weight: 500;\n letter-spacing: 0.1em;\n text-transform: uppercase; }\n .sidebar-filter__item--heading, .sidebar-filter__item--heading:hover {\n color: rgba(83, 113, 138, 0.5); }\n\n.textbox-repeater .floating-action__group {\n margin-top: -8px;\n position: absolute;\n right: -8px;\n top: 50%; }\n\n.textbox-repeater .floating-action__button {\n position: relative; }\n\n.textbox-repeater .textbox__wrapper {\n position: relative; }\n\n.textbox-repeater .form__row + .form__row {\n margin-top: 12.5px; }\n\n.application__panel--torrent-details {\n background: #0e2231; }\n\n.torrent-details {\n background: #0e2231;\n bottom: 0;\n box-shadow: -1px 0 0 rgba(26, 47, 61, 0.1);\n display: flex;\n flex-direction: column;\n font-size: 0.8em;\n left: 0;\n min-width: 400px;\n overflow: auto;\n position: absolute;\n right: 0;\n top: 0;\n transition: opacity 1s;\n z-index: 2; }\n .torrent-details__wrapper {\n flex: 1;\n height: 100%; }\n .torrent-details__scroll-container {\n height: auto !important; }\n .torrent-details__header {\n box-shadow: 0 1px 0 rgba(4, 13, 19, 0.3);\n flex: 0 0 auto;\n padding: 12.5px 25px 16.66667px 25px; }\n .torrent-details__header.has-error .progress-bar__fill {\n background: #be2558; }\n .torrent-details__header.is-stopped .progress-bar__fill {\n background: #7b9cb4; }\n .torrent-details__header .progress-bar:after {\n background: #2a3e4c; }\n .torrent-details__action {\n cursor: pointer;\n transition: color 0.25s; }\n .torrent-details__action .icon {\n transition: fill 0.25s; }\n .torrent-details__action.is-active {\n color: #258de5; }\n .torrent-details__action.is-active .icon {\n fill: #258de5; }\n .torrent-details__table {\n color: #527893;\n width: 100%; }\n .torrent-details__table__heading--primary {\n color: #3a5c74;\n font-size: 1.125em; }\n .torrent-details__table__heading--secondary {\n color: rgba(82, 120, 147, 0.5);\n font-size: 0.7em;\n letter-spacing: 0.1em;\n text-transform: uppercase; }\n .torrent-details__content {\n flex: 1;\n overflow: auto;\n padding: 16.66667px 25px; }\n .torrent-details__content__wrapper {\n background: rgba(16, 26, 34, 0.4);\n display: flex;\n flex: 1;\n overflow: hidden; }\n .torrent-details__navigation {\n background: transparent;\n box-shadow: 1px 0 0 rgba(4, 13, 19, 0.4);\n min-width: 125px;\n padding: 12.5px 0; }\n .torrent-details__navigation .navigation__item {\n cursor: pointer;\n padding: 6.25px 25px;\n text-align: right;\n transition: background 0.25s, box-shadow 0.25s, color 0.25s; }\n .torrent-details__navigation .navigation__item.is-active {\n background: rgba(52, 156, 244, 0.07);\n box-shadow: 1px 0 0 #349cf4;\n color: #349cf4; }\n .torrent-details__section__heading, .torrent-details__section__null-data {\n color: #3a5c74;\n font-size: 1.15em;\n margin-bottom: 2.5px; }\n .torrent-details__section__heading .badge {\n background: rgba(82, 120, 147, 0.5);\n color: #0c1b26; }\n\n.torrent-details__heading {\n color: #c7dbeb;\n font-size: 1.7em;\n font-weight: 300; }\n\n.torrent-details__sub-heading {\n display: flex;\n margin-bottom: 6.25px; }\n .torrent-details__sub-heading__secondary {\n color: #7b9cb4;\n display: flex;\n flex: 1 0 auto; }\n .torrent-details__sub-heading__secondary:first-child {\n justify-content: flex-start; }\n .torrent-details__sub-heading__secondary:last-child {\n justify-content: flex-end; }\n .torrent-details__sub-heading__tertiary {\n flex: 0 0 auto;\n margin-right: 1em; }\n .torrent-details__sub-heading__tertiary .icon {\n fill: rgba(77, 111, 135, 0.5);\n height: 12px;\n margin-right: 3px;\n margin-top: -3px;\n vertical-align: middle;\n width: 12px; }\n .torrent-details__sub-heading__tertiary .priority-meter {\n display: inline-block;\n margin-top: -1px;\n margin-right: 6px;\n vertical-align: middle; }\n .torrent-details__sub-heading__tertiary .priority-meter__wrapper {\n margin-top: -3px;\n padding: 0; }\n .torrent-details__sub-heading__tertiary--download {\n color: #258de5; }\n .torrent-details__sub-heading__tertiary--download .icon {\n fill: #258de5; }\n .torrent-details__sub-heading__tertiary--upload {\n color: #39ce83; }\n .torrent-details__sub-heading__tertiary--upload .icon {\n fill: #39ce83; }\n .torrent-details__sub-heading__tertiary:last-child {\n margin-right: 0; }\n\n.torrent-details-enter {\n opacity: 0; }\n\n.torrent-details-enter-active {\n opacity: 1; }\n\n.torrent-details-leave {\n opacity: 0;\n transition: opacity 0.5s; }\n\n.torrents {\n display: flex;\n flex: 1 1 100px;\n position: relative; }\n .torrents:after {\n background: #fff;\n bottom: 0;\n box-shadow: -1px 0 0 0 rgba(26, 47, 61, 0.15);\n content: '';\n height: auto;\n left: 10px;\n position: absolute;\n right: 0;\n top: 0; }\n .torrents .loading-indicator {\n left: 50%;\n position: absolute;\n top: 50%;\n transform: translate(-50%, -50%); }\n\n.torrent__list {\n margin: 0 0 0 10px;\n padding: 10px 0;\n position: relative; }\n .torrent__list__wrapper {\n list-style: none;\n max-width: 100%;\n opacity: 1;\n overflow: auto;\n transition: opacity 1s;\n user-select: none;\n z-index: 1; }\n .torrent__list--loading-enter {\n opacity: 0;\n transition: opacity 1s; }\n .torrent__list--loading-enter-active {\n opacity: 1; }\n .torrent__list--loading-leave {\n opacity: 1;\n transition: opacity 1s; }\n .torrent__list--loading-leave-active {\n opacity: 0; }\n .torrent__list--empty {\n opacity: 0; }\n\n.torrent {\n cursor: default;\n padding: 10px 20px;\n position: relative;\n transition: background 0.25s; }\n .torrent:hover {\n background: #f6f8fa; }\n .torrent:hover .torrent__more-info {\n opacity: 1; }\n .torrent.is-selected {\n background: #258de5; }\n .torrent__more-info {\n height: 20px;\n margin-top: -10px;\n position: absolute;\n left: -7px;\n opacity: 0;\n top: 50%;\n transition: background 0.25s, box-shadow 0.25s, opacity 0.25s;\n width: 20px; }\n\n.torrent__details {\n align-items: center;\n display: flex;\n flex: 1;\n flex-flow: row wrap;\n list-style: none; }\n .torrent__details--primary, .torrent__details--secondary, .torrent__details--tertiary {\n transition: color 0.25s; }\n .torrent__details--primary {\n color: #333332;\n flex: 4;\n line-height: 1.3;\n white-space: nowrap; }\n .is-stopped .torrent__details--primary {\n color: rgba(51, 51, 50, 0.5); }\n .is-selected .torrent__details--primary {\n color: #fff; }\n .is-selected.is-stopped .torrent__details--primary {\n color: rgba(255, 255, 255, 0.6); }\n .torrent__details--secondary {\n align-items: flex-end;\n color: #807f7e;\n flex: 1;\n font-size: 0.75em;\n min-width: 200px; }\n .torrent__details--secondary li {\n flex: 1 1 auto;\n min-width: 15%; }\n .torrent__details--secondary li.torrent__details--ratio {\n max-width: 30px; }\n .is-stopped .torrent__details--secondary {\n color: rgba(128, 127, 126, 0.5); }\n .is-selected .torrent__details--secondary {\n color: #fff; }\n .is-selected.is-stopped .torrent__details--secondary {\n color: rgba(255, 255, 255, 0.6); }\n .torrent__details--tertiary {\n color: #807f7e;\n display: block;\n font-size: 0.75em;\n margin: 0 0 3px 0; }\n .torrent__details--tertiary li {\n display: inline-block;\n margin-right: 1em; }\n .torrent__details--tertiary li:last-child {\n margin-right: 0; }\n .is-stopped .torrent__details--tertiary {\n color: rgba(128, 127, 126, 0.5); }\n .is-selected .torrent__details--tertiary {\n color: rgba(255, 255, 255, 0.9); }\n .is-selected.is-stopped .torrent__details--tertiary {\n color: rgba(255, 255, 255, 0.5); }\n .torrent__details__label {\n margin-right: 0.5em;\n opacity: 0.5; }\n\n.torrent__details--eta {\n opacity: 0;\n transition: opacity 1s, visibility 1s;\n visibility: hidden; }\n .torrent__details--eta .torrent__details--segment {\n margin-right: 0.25em; }\n .torrent__details--eta .torrent__details--segment:last-child {\n margin-right: 0; }\n .is-actively-downloading .torrent__details--eta {\n opacity: 1;\n visibility: visible; }\n\n.view--torrent-list {\n background: #e9eef2;\n box-shadow: -1px 0 rgba(26, 47, 61, 0.15);\n display: flex;\n flex-direction: column;\n flex: 1;\n flex: 0 1 100%; }\n\n.transfer-data--download {\n color: #39ce83; }\n .transfer-data--download .icon {\n fill: #39ce83; }\n\n.transfer-data--upload {\n color: #258de5; }\n .transfer-data--upload .icon {\n fill: #258de5; }\n","/*!\n * inuitcss, by @csswizardry\n *\n * github.com/inuitcss | inuitcss.com\n */\n///*------------------------------------*\\\n// #DEFAULTS\n//\\*------------------------------------*/\n\n// These variables are inuitcss’ defaults; they should not be modified or\n// adjusted directly; you should predefine the variables in your own project.\n\n\n\n\n\n// High-level base settings.\n$inuit-base-font-size: 16px !default;\n$inuit-base-line-height: 24px !default;\n$inuit-base-text-color: #333 !default;\n$inuit-base-background-color: #fff !default;\n\n\n\n\n\n// Namespace.\n//\n// Would you like inuitcss’ classes to be prepended with a namespace? If so,\n// define it here.\n$inuit-namespace: null !default;\n\n\n\n\n\n// These variables are framework variables, sourced from variables defined\n// above. Feel free to use these variables throughout your project, but do not\n// modify or reassign them.\n$inuit-base-spacing-unit: $inuit-base-line-height;\n$inuit-base-spacing-unit--tiny: round($inuit-base-spacing-unit / 4);\n$inuit-base-spacing-unit--small: round($inuit-base-spacing-unit / 2);\n$inuit-base-spacing-unit--large: round($inuit-base-spacing-unit * 2);\n$inuit-base-spacing-unit--huge: round($inuit-base-spacing-unit * 4);\n","/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\n\n/**\n * 1. Set default font family to sans-serif.\n * 2. Prevent iOS and IE text size adjust after device orientation change,\n * without disabling user zoom.\n */\n\nhtml {\n font-family: sans-serif; /* 1 */\n -ms-text-size-adjust: 100%; /* 2 */\n -webkit-text-size-adjust: 100%; /* 2 */\n}\n\n/**\n * Remove default margin.\n */\n\nbody {\n margin: 0;\n}\n\n/* HTML5 display definitions\n ========================================================================== */\n\n/**\n * Correct `block` display not defined for any HTML5 element in IE 8/9.\n * Correct `block` display not defined for `details` or `summary` in IE 10/11\n * and Firefox.\n * Correct `block` display not defined for `main` in IE 11.\n */\n\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n display: block;\n}\n\n/**\n * 1. Correct `inline-block` display not defined in IE 8/9.\n * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.\n */\n\naudio,\ncanvas,\nprogress,\nvideo {\n display: inline-block; /* 1 */\n vertical-align: baseline; /* 2 */\n}\n\n/**\n * Prevent modern browsers from displaying `audio` without controls.\n * Remove excess height in iOS 5 devices.\n */\n\naudio:not([controls]) {\n display: none;\n height: 0;\n}\n\n/**\n * Address `[hidden]` styling not present in IE 8/9/10.\n * Hide the `template` element in IE 8/9/10/11, Safari, and Firefox < 22.\n */\n\n[hidden],\ntemplate {\n display: none;\n}\n\n/* Links\n ========================================================================== */\n\n/**\n * Remove the gray background color from active links in IE 10.\n */\n\na {\n background-color: transparent;\n}\n\n/**\n * Improve readability of focused elements when they are also in an\n * active/hover state.\n */\n\na:active,\na:hover {\n outline: 0;\n}\n\n/* Text-level semantics\n ========================================================================== */\n\n/**\n * Address styling not present in IE 8/9/10/11, Safari, and Chrome.\n */\n\nabbr[title] {\n border-bottom: 1px dotted;\n}\n\n/**\n * Address style set to `bolder` in Firefox 4+, Safari, and Chrome.\n */\n\nb,\nstrong {\n font-weight: bold;\n}\n\n/**\n * Address styling not present in Safari and Chrome.\n */\n\ndfn {\n font-style: italic;\n}\n\n/**\n * Address variable `h1` font-size and margin within `section` and `article`\n * contexts in Firefox 4+, Safari, and Chrome.\n */\n\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\n\n/**\n * Address styling not present in IE 8/9.\n */\n\nmark {\n background: #ff0;\n color: #000;\n}\n\n/**\n * Address inconsistent and variable font size in all browsers.\n */\n\nsmall {\n font-size: 80%;\n}\n\n/**\n * Prevent `sub` and `sup` affecting `line-height` in all browsers.\n */\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsup {\n top: -0.5em;\n}\n\nsub {\n bottom: -0.25em;\n}\n\n/* Embedded content\n ========================================================================== */\n\n/**\n * Remove border when inside `a` element in IE 8/9/10.\n */\n\nimg {\n border: 0;\n}\n\n/**\n * Correct overflow not hidden in IE 9/10/11.\n */\n\nsvg:not(:root) {\n overflow: hidden;\n}\n\n/* Grouping content\n ========================================================================== */\n\n/**\n * Address margin not present in IE 8/9 and Safari.\n */\n\nfigure {\n margin: 1em 40px;\n}\n\n/**\n * Address differences between Firefox and other browsers.\n */\n\nhr {\n box-sizing: content-box;\n height: 0;\n}\n\n/**\n * Contain overflow in all browsers.\n */\n\npre {\n overflow: auto;\n}\n\n/**\n * Address odd `em`-unit font size rendering in all browsers.\n */\n\ncode,\nkbd,\npre,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\n\n/* Forms\n ========================================================================== */\n\n/**\n * Known limitation: by default, Chrome and Safari on OS X allow very limited\n * styling of `select`, unless a `border` property is set.\n */\n\n/**\n * 1. Correct color not being inherited.\n * Known issue: affects color of disabled elements.\n * 2. Correct font properties not being inherited.\n * 3. Address margins set differently in Firefox 4+, Safari, and Chrome.\n */\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n color: inherit; /* 1 */\n font: inherit; /* 2 */\n margin: 0; /* 3 */\n}\n\n/**\n * Address `overflow` set to `hidden` in IE 8/9/10/11.\n */\n\nbutton {\n overflow: visible;\n}\n\n/**\n * Address inconsistent `text-transform` inheritance for `button` and `select`.\n * All other form control elements do not inherit `text-transform` values.\n * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.\n * Correct `select` style inheritance in Firefox.\n */\n\nbutton,\nselect {\n text-transform: none;\n}\n\n/**\n * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`\n * and `video` controls.\n * 2. Correct inability to style clickable `input` types in iOS.\n * 3. Improve usability and consistency of cursor style between image-type\n * `input` and others.\n */\n\nbutton,\nhtml input[type=\"button\"], /* 1 */\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n -webkit-appearance: button; /* 2 */\n cursor: pointer; /* 3 */\n}\n\n/**\n * Re-set default cursor for disabled elements.\n */\n\nbutton[disabled],\nhtml input[disabled] {\n cursor: default;\n}\n\n/**\n * Remove inner padding and border in Firefox 4+.\n */\n\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n border: 0;\n padding: 0;\n}\n\n/**\n * Address Firefox 4+ setting `line-height` on `input` using `!important` in\n * the UA stylesheet.\n */\n\ninput {\n line-height: normal;\n}\n\n/**\n * It's recommended that you don't attempt to style these elements.\n * Firefox's implementation doesn't respect box-sizing, padding, or width.\n *\n * 1. Address box sizing set to `content-box` in IE 8/9/10.\n * 2. Remove excess padding in IE 8/9/10.\n */\n\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n box-sizing: border-box; /* 1 */\n padding: 0; /* 2 */\n}\n\n/**\n * Fix the cursor style for Chrome's increment/decrement buttons. For certain\n * `font-size` values of the `input`, it causes the cursor style of the\n * decrement button to change from `default` to `text`.\n */\n\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n/**\n * 1. Address `appearance` set to `searchfield` in Safari and Chrome.\n * 2. Address `box-sizing` set to `border-box` in Safari and Chrome.\n */\n\ninput[type=\"search\"] {\n -webkit-appearance: textfield; /* 1 */\n box-sizing: content-box; /* 2 */\n}\n\n/**\n * Remove inner padding and search cancel button in Safari and Chrome on OS X.\n * Safari (but not Chrome) clips the cancel button when the search input has\n * padding (and `textfield` appearance).\n */\n\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n/**\n * Define consistent border, margin, and padding.\n */\n\nfieldset {\n border: 1px solid #c0c0c0;\n margin: 0 2px;\n padding: 0.35em 0.625em 0.75em;\n}\n\n/**\n * 1. Correct `color` not being inherited in IE 8/9/10/11.\n * 2. Remove padding so people aren't caught out if they zero out fieldsets.\n */\n\nlegend {\n border: 0; /* 1 */\n padding: 0; /* 2 */\n}\n\n/**\n * Remove default vertical scrollbar in IE 8/9/10/11.\n */\n\ntextarea {\n overflow: auto;\n}\n\n/**\n * Don't inherit the `font-weight` (applied by a rule above).\n * NOTE: the default cannot safely be changed in Chrome and Safari on OS X.\n */\n\noptgroup {\n font-weight: bold;\n}\n\n/* Tables\n ========================================================================== */\n\n/**\n * Remove most spacing between table cells.\n */\n\ntable {\n border-collapse: collapse;\n border-spacing: 0;\n}\n\ntd,\nth {\n padding: 0;\n}\n","@import 'colors';\n@import url(http://fonts.googleapis.com/css?family=Roboto:400italic,700italic,300,700,300italic,400);\n\n$font: 'Roboto', sans-srif;\n\n$spacing-unit: 25px;\n$torrent-details--width: 85%;\n","@import url('http://fonts.googleapis.com/css?family=Roboto:500,400italic,300,700,400');\n\nbody {\n color: $foreground;\n font-family: $font;\n}\n\n.unit {\n display: inline-block;\n font-size: 0.8em;\n font-style: normal;\n margin-bottom: 0.1em;\n opacity: 0.8;\n}\n\n.text-overflow {\n overflow: hidden;\n position: relative;\n text-overflow: ellipsis;\n}\n","/*------------------------------------*\\\n #RESET\n\\*------------------------------------*/\n\n/**\n * As well as using normalize.css, it is often advantageous to remove all\n * margins from certain elements.\n */\nbody,\nh1, h2, h3, h4, h5, h6,\np, blockquote, pre,\ndl, dd, ol, ul,\nform, fieldset, legend,\nfigure,\ntable, th, td, caption,\nhr {\n margin: 0;\n padding: 0;\n}\n\n\n\n\n\n/**\n * Give a help cursor to elements that give extra info on `:hover`.\n */\nabbr[title],\ndfn[title] {\n cursor: help;\n}\n\n\n\n\n\n/**\n * Remove underlines from potentially troublesome elements.\n */\nu,\nins {\n text-decoration: none;\n}\n\n\n\n\n\n/**\n * Apply faux underlines to inserted text via `border-bottom`.\n */\nins {\n border-bottom: 1px solid;\n}\n","/*------------------------------------*\\\n #BOX-SIZING\n\\*------------------------------------*/\n\n/**\n * Set the global `box-sizing` state to `border-box`.\n *\n * css-tricks.com/inheriting-box-sizing-probably-slightly-better-best-practice\n * paulirish.com/2012/box-sizing-border-box-ftw\n */\nhtml {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\n\n* {\n\n &,\n &:before,\n &:after {\n -webkit-box-sizing: inherit;\n -moz-box-sizing: inherit;\n box-sizing: inherit;\n }\n\n}\n\n\n\n\n\n// If we have included this file, set a variable to tell the rest of the\n// framework that global `box-sizing: border-box` has been set.\n$inuit-global-border-box: true;\n","/*------------------------------------*\\\n #PAGE\n\\*------------------------------------*/\n\n/**\n * High-, page-level styling.\n *\n * 1. Set the default `font-size` and `line-height` for the entire project,\n * sourced from our default variables. The `font-size` is calculated to exist\n * in ems, the `line-height` is calculated to exist unitlessly.\n * 2. Force scrollbars to always be visible to prevent awkward ‘jumps’ when\n * navigating between pages that do/do not have enough content to produce\n * scrollbars naturally.\n * 3. Ensure the page always fills at least the entire height of the viewport.\n * 4. Prevent certain mobile browsers from automatically zooming fonts.\n * 5. Fonts on OSX will look more consistent with other systems that do not\n * render text using sub-pixel anti-aliasing.\n */\nhtml {\n font-size: ($inuit-base-font-size / 16px) * 1em; /* [1] */\n line-height: $inuit-base-line-height / $inuit-base-font-size; /* [1] */\n background-color: $inuit-base-background-color;\n color: $inuit-base-text-color;\n overflow-y: scroll; /* [2] */\n min-height: 100%; /* [3] */\n -webkit-text-size-adjust: 100%; /* [4] */\n -ms-text-size-adjust: 100%; /* [4] */\n -moz-osx-font-smoothing: grayscale; /* [5] */\n -webkit-font-smoothing: antialiased; /* [5] */\n}\n","th {\n font-weight: inherit;\n text-align: left;\n}\n","@keyframes fade-in {\n\n 0% {\n opacity: 0;\n }\n\n 100% {\n opacity: 1;\n }\n\n}\n\n@keyframes fade-out {\n\n 0% {\n opacity: 1;\n }\n\n 100% {\n opacity: 0;\n }\n\n}\n","$form--label--foreground: #abbac7;\n\n$textbox--background: #e9eff5;\n$textbox--foreground: #53718a;\n$textbox--placeholder: #abbac7;\n$textbox--border: #d6e2ea;\n$textbox--fulfilled--background: #fdfefe;\n$textbox--active--background: #fdfefe;\n$textbox--active--border: desaturate(darken($textbox--border, 5%), 5%);\n$textbox--active--foreground: $blue;\n$textbox--active--placeholder: $textbox--placeholder;\n\n$textbox-repeater--button--background: #fff;\n$textbox-repeater--button--background--hover: $main-content--background;\n$textbox-repeater--button--border: rgba($background, 0.1);\n$textbox-repeater--button--border--hover: rgba($background, 0.2);\n$textbox-repeater--button--foreground: rgba($background, 0.3);\n$textbox-repeater--button--foreground--hover: rgba($background, 0.5);\n\n$button--primary--foreground: #fff;\n$button--primary--background: $blue;\n$button--primary--background--hover: darken($button--primary--background, 5%);\n$button--primary--border: darken($button--primary--background, 5%);\n$button--primary--border--hover: darken($button--primary--border, 5%);\n\n$button--deemphasized--foreground: #66717a;\n$button--deemphasized--background: $main-content--background;\n$button--deemphasized--foreground--hover: darken($button--deemphasized--foreground, 5%);\n$button--deemphasized--background--hover: darken($button--deemphasized--background, 5%);\n$button--deemphasized--border: darken($button--deemphasized--background, 5%);\n$button--deemphasized--border--hover: darken($button--deemphasized--border, 5%);\n\n$modal--body--foreground: desaturate(lighten($foreground, 20%), 10%);\n\n.textbox,\n.button {\n appearance: none;\n -moz-appearance: none;\n -webkit-appearance: none;\n outline: none;\n}\n\n.textbox {\n background: $textbox--background;\n border-radius: 4px;\n border: 1px solid $textbox--border;\n color: $textbox--foreground;\n display: block;\n font-size: 0.9em;\n padding: 10px 15px;\n transition: background 0.25s, border 0.25s, color 0.25s;\n width: 100%;\n\n &::placeholder {\n color: $textbox--placeholder;\n font-style: italic;\n transition: color 0.25s;\n }\n\n &:focus {\n background: $textbox--active--background;\n border-color: $textbox--active--border;\n color: $textbox--active--foreground;\n\n &::placeholder {\n color: $textbox--active--placeholder;\n }\n }\n\n &.is-fulfilled {\n background: $textbox--fulfilled--background;\n }\n}\n\n.button {\n background: transparent;\n border: none;\n border-radius: 4px;\n cursor: pointer;\n font-size: 0.9em;\n font-weight: 500;\n padding: 8px 22px;\n transition: background 0.25s;\n user-select: none;\n\n &.has-icon {\n\n .icon {\n height: 16px;\n margin: 0 $spacing-unit * 1/3;\n vertical-align: middle;\n width: 16px;\n\n &:first-child {\n margin-left: 0;\n }\n\n &:last-child {\n margin-right: 0;\n }\n }\n }\n\n &--deemphasize {\n background: $button--deemphasized--background;\n box-shadow: inset 0 0 0 1px $button--deemphasized--border;\n color: $button--deemphasized--foreground;\n\n &:hover {\n background: $button--deemphasized--background--hover;\n box-shadow: inset 0 0 0 1px $button--deemphasized--border--hover;\n color: $button--deemphasized--foreground--hover;\n }\n }\n\n &--primary {\n background: $button--primary--background;\n box-shadow: inset 0 0 0 1px $button--primary--border;\n color: $button--primary--foreground;\n white-space: nowrap;\n\n &:hover {\n background: $button--primary--background--hover;\n box-shadow: inset 0 0 0 1px $button--primary--border--hover;\n }\n }\n}\n\n.checkbox {\n line-height: 1;\n position: relative;\n\n &:hover {\n\n .checkbox {\n\n &__decoy {\n border-color: $blue;\n }\n }\n }\n\n input[type=\"checkbox\"] {\n left: 0;\n opacity: 0;\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n\n &:checked {\n\n & + .checkbox {\n\n &__decoy {\n\n .icon {\n fill: $blue;\n }\n }\n }\n }\n }\n\n &__decoy {\n @extend .textbox;\n background: $white;\n display: inline-block;\n height: $spacing-unit * 3/5;\n margin-right: $spacing-unit * 1.5/5;\n margin-top: -2px;\n padding: 0;\n position: relative;\n vertical-align: middle;\n width: $spacing-unit * 3/5;\n\n .icon {\n fill: transparent;\n height: 10px;\n left: 50%;\n position: absolute;\n top: 50%;\n transition: fill 0.25s;\n transform: translate(-43%, -43%);\n width: 10px;\n }\n }\n\n &__label {\n color: darken($modal--body--foreground, 10%);\n }\n}\n\n.form {\n\n &__label {\n color: $form--label--foreground;\n display: block;\n font-size: 0.8em;\n line-height: 1;\n margin-bottom: 0.35em;\n }\n\n &__row {\n\n & + .form__row {\n margin-top: $spacing-unit;\n }\n }\n}\n","$blue: #258de5;\n$green: #39ce83;\n$white: #fff;\n\n$background: #1a2f3d;\n$foreground: #53718a;\n\n$main-content--background: #e9eef2;\n","html,\nbody {\n height: 100%;\n overflow: hidden;\n}\n\n.container {\n height: 100%;\n width: 100%;\n}\n\n.flood {\n align-items: stretch;\n display: flex;\n height: 100%;\n}\n\n.application {\n\n &__content {\n display: flex;\n height: 100vh;\n flex: 1 2 auto;\n flex-direction: column;\n position: relative;\n }\n\n &__panel {\n display: flex;\n bottom: 0;\n left: 0;\n position: absolute;\n right: 0;\n top: 0;\n\n &--torrent-list {\n transition: transform 0.5s;\n z-index: 2;\n\n &.is-open {\n transform: translateX($torrent-details--width);\n }\n }\n\n &--torrent-details {\n right: 100% - $torrent-details--width;\n width: $torrent-details--width;\n z-index: 1;\n }\n }\n}\n\n.torrent {\n\n &__header {\n flex: 1;\n min-height: 35px;\n max-height: 35px;\n }\n\n &__list {\n\n &__wrapper {\n display: flex;\n flex: 1;\n\n &--custom-scroll {\n flex: 1;\n height: auto !important;\n }\n }\n }\n}\n","body {\n background: $background;\n}\n\nul {\n list-style: none;\n}\n","$action-bar--background: transparent;\n$action-bar--foreground: #1b1a1c;\n$action-bar--group--border: rgba(#7a8080, 0.15);\n\n$action--foreground: #909799;\n$action--foreground--hover: $blue;\n$action--background--hover: rgba(#333e4a, 0.05);\n$action--border--hover: rgba(#333e4a, 0.15);\n\n$torrent-list--border: rgba($background, 0.15);\n\n.action-bar {\n background: $action-bar--background;\n color: $action-bar--foreground;\n display: flex;\n flex: 0 0 60px;\n position: relative;\n\n &:after {\n background: $torrent-list--border;\n bottom: 0;\n content: '';\n height: 1px;\n left: 9px;\n position: absolute;\n right: 0;\n width: auto;\n }\n\n &__item {\n flex: 3;\n\n &:first-child {\n text-align: left;\n }\n\n &:last-child {\n text-align: right;\n }\n\n &--sort-torrents {\n max-width: 225px;\n\n .dropdown {\n margin: 5px 0 0 15px;\n\n &__content {\n min-width: 250px;\n }\n }\n }\n\n &--torrent-operations {\n\n .dropdown {\n display: inline-block;\n height: 60px;\n\n &__content {\n min-width: 430px;\n right: 4px;\n }\n }\n }\n }\n\n &__group {\n display: inline-block;\n font-size: 0;\n padding: 0 15px;\n\n &--has-divider {\n position: relative;\n\n &:before {\n background: $action-bar--group--border;\n content: '';\n position: absolute;\n height: 80%;\n left: 0;\n top: 10%;\n width: 1px;\n }\n }\n }\n}\n\n.actions {\n list-style: none;\n}\n\n.action {\n box-shadow:\n 1px 0 transparent,\n -1px 0 transparent;\n cursor: pointer;\n display: inline-block;\n height: 60px;\n position: relative;\n width: 60px;\n text-align: center;\n transition: background 0.25s, box-shadow 0.25s;\n\n &:hover {\n background: $action--background--hover;\n box-shadow:\n 1px 0 $action--border--hover,\n -1px 0 $action--border--hover;\n\n .icon {\n fill: $action--foreground--hover;\n }\n }\n\n &__label {\n display: block;\n position: absolute;\n top: 100%;\n visibility: hidden;\n }\n\n .icon {\n fill: $action--foreground;\n height: 25px;\n left: 50%;\n position: absolute;\n top: 50%;\n transition: fill 0.25s;\n transform: translateX(-50%) translateY(-50%);\n width: 30px;\n }\n}\n",".application {\n\n &__content {\n background: $main-content--background;\n }\n}\n","$sidebar-filter--count--foreground: #132532;\n$sidebar-filter--count--background: #2b4456;\n$sidebar-filter--count--background--active: #3b586d;\n\n.badge {\n background: $sidebar-filter--count--background;\n border-radius: 100px;\n color: $sidebar-filter--count--foreground;\n display: inline-block;\n font-size: 0.8em;\n font-weight: 800;\n line-height: 1;\n margin-left: 10px;\n padding: 1px 5px;\n transition: background 0.25s;\n vertical-align: baseline;\n}\n","$menu--background: rgba(#fff, 0.98);\n$menu--container--border: rgba($background, 0.1);\n$menu--container--shadow: rgba($background, 0.3);\n$menu--label: #abbac7;\n$menu--value: #8899a8;\n$menu--value--active: #4e6a7c;\n$menu--header--border: rgba($background, 0.05);\n$menu--item--background--hover: rgba($main-content--background, 0.4);\n$menu--item--foreground: #95a2ad;\n$menu--item--foreground--hover: darken($menu--item--foreground, 10%);\n$menu--item--secondary--foreground: lighten($menu--item--foreground, 20%);\n$menu--item--foreground--active: $blue;\n$menu--item--separator--background: $menu--container--border;\n\n.menu {\n background: $menu--background;\n border-radius: 3px;\n box-shadow:\n 0 0 0 1px $menu--container--border,\n 0 0 35px $menu--container--shadow;\n color: $menu--item--foreground;\n text-align: left;\n\n &__item {\n padding: 5px 15px;\n\n &__label {\n\n &--primary {\n\n &.has-action {\n display: flex;\n\n .menu {\n\n &__item {\n\n &__label {\n flex: 1 1 auto;\n\n &__action {\n flex: 0 0 auto;\n }\n }\n }\n }\n }\n }\n\n &--secondary {\n color: $menu--item--secondary--foreground;\n display: block;\n font-size: 0.85em;\n }\n }\n\n &--separator {\n background: $menu--item--separator--background;\n height: 1px;\n margin: 5px 0;\n padding: 0;\n }\n\n &.is-selectable {\n cursor: pointer;\n display: block;\n font-size: 0.9em;\n transition: background 0.25s, color 0.25s;\n\n &:hover {\n background: $menu--item--background--hover;\n color: $menu--item--foreground--hover;\n }\n\n &.is-selected {\n color: $menu--item--foreground--active;\n }\n }\n }\n\n &-enter {\n animation: fade-in 0.25s both;\n }\n\n &-leave {\n animation: fade-out 0.25s both;\n }\n}\n","$client-stats--limits--opacity: 0.15;\n$client-stats--speed--fill--top--opacity: 0.2;\n$client-stats--speed--fill--bottom--opacity: 0;\n$client-stats--speed--stroke--opacity: 0.4;\n\n$client-stats--download--primary--foreground: #2bae6c;\n$client-stats--download--secondary--foreground: rgba($client-stats--download--primary--foreground, 0.75);\n$client-stats--download--graph--stroke: rgba(#2bae6c, $client-stats--speed--stroke--opacity);\n$client-stats--download--graph--fill--top: rgba(#2bae6c, $client-stats--speed--fill--top--opacity);\n$client-stats--download--graph--fill--bottom: rgba(#2bae6c, $client-stats--speed--fill--bottom--opacity);\n$client-stats--download--limits--line: rgba(lighten($client-stats--download--primary--foreground, 20%), $client-stats--limits--opacity);\n\n$client-stats--upload--primary--foreground: #2387d9;\n$client-stats--upload--secondary--foreground: rgba($client-stats--upload--primary--foreground, 0.75);\n$client-stats--upload--graph--stroke: rgba(#2387d9, $client-stats--speed--stroke--opacity);\n$client-stats--upload--graph--fill--top: rgba(#2387d9, $client-stats--speed--fill--top--opacity);\n$client-stats--upload--graph--fill--bottom: rgba(#2387d9, $client-stats--speed--fill--bottom--opacity);\n$client-stats--upload--limits--line: rgba(lighten($client-stats--upload--primary--foreground, 20%), $client-stats--limits--opacity);\n\n$client-stats--limits--foreground: $foreground;\n$client-stats--limits--icon--hover: $blue;\n\n.client-stats {\n height: 200px;\n position: relative;\n\n .loading-indicator {\n left: 50%;\n position: absolute;\n top: 50%;\n transform: translate(-50%, -50%);\n }\n\n .transfer-data-enter {\n opacity: 0;\n transition: opacity 1s;\n\n &.transfer-data-enter-active {\n opacity: 1;\n }\n }\n\n .transfer-data-leave {\n opacity: 1;\n transition: opacity 1s;\n\n &.transfer-data-leave-active {\n opacity: 0;\n }\n }\n}\n\n.client-stat {\n align-items: center;\n display: flex;\n height: 100px;\n padding: 0 20px;\n\n &__icon,\n &__data {\n position: relative;\n vertical-align: top;\n z-index: 1;\n }\n\n &__icon {\n flex: 0 0 23px;\n\n .icon {\n display: inline-block;\n height: 25px;\n margin: 6px 0 0 -5px;\n width: auto;\n }\n }\n\n &__data {\n flex: 1;\n\n &--primary,\n &--secondary {\n display: block;\n font-weight: 100;\n line-height: 1.2;\n }\n\n &--primary {\n font-size: 1.75em;\n white-space: nowrap;\n\n .unit {\n font-size: 0.65em;\n margin-bottom: 0;\n opacity: 0.5;\n position: relative;\n top: -0.1em;\n }\n }\n\n &--secondary {\n font-size: 0.8em;\n font-style: italic;\n font-weight: 400;\n }\n }\n}\n\n.client-stat {\n\n &--limits {\n background: none;\n border: none;\n color: $client-stats--limits--foreground;\n display: block;\n outline: none;\n padding: 10px 15px;\n font-size: 0.85em;\n text-align: left;\n transition: color 0.25s;\n vertical-align: middle;\n width: 100%;\n\n .icon {\n display: inline-block;\n fill: $client-stats--limits--foreground;\n margin: -2px 5px 0 0;\n transition: fill 0.25s;\n vertical-align: middle;\n width: 14.5px;\n\n .limits {\n\n &__bars {\n\n &--top {\n opacity: 0.4;\n }\n\n &--bottom {\n opacity: 0.6;\n }\n }\n }\n }\n\n &:hover {\n color: $client-stats--limits--icon--hover;\n\n .icon {\n fill: $client-stats--limits--icon--hover;\n }\n }\n }\n}\n\n.client-stat {\n position: relative;\n\n .graph {\n height: 100%;\n left: 0;\n position: absolute;\n top: 0;\n width: 100%;\n z-index: 0;\n\n svg {\n height: 100%;\n width: 100%;\n }\n\n &__line {\n fill: none;\n\n &--limit {\n stroke-dasharray: 3px 4px;\n stroke-width: 1px;\n }\n\n &--rate {\n stroke-width: 1.1px;\n }\n }\n\n }\n\n &--download {\n\n .icon {\n fill: $client-stats--download--secondary--foreground;\n }\n\n .client-stat {\n\n &__data {\n\n &--primary {\n color: $client-stats--download--primary--foreground;\n }\n\n &--secondary {\n color: $client-stats--download--secondary--foreground;\n }\n\n }\n\n }\n\n .graph {\n\n .graph--download--gradient--top {\n stop-color: $client-stats--download--graph--fill--top;\n }\n\n .graph--download--gradient--bottom {\n stop-color: $client-stats--download--graph--fill--bottom;\n }\n\n &__area {\n fill: url('#graph--download--gradient')\n }\n\n &__line {\n\n &--limit {\n stroke: $client-stats--download--limits--line;\n }\n\n &--rate {\n stroke: $client-stats--download--graph--stroke;\n }\n }\n\n }\n\n }\n\n &--upload {\n\n .icon {\n fill: $client-stats--upload--secondary--foreground;\n }\n\n .client-stat {\n\n &__data {\n\n &--primary {\n color: $client-stats--upload--primary--foreground;\n }\n\n &--secondary {\n color: $client-stats--upload--secondary--foreground;\n }\n\n }\n\n }\n\n .graph {\n\n .graph--upload--gradient--top {\n stop-color: $client-stats--upload--graph--fill--top;\n }\n\n .graph--upload--gradient--bottom {\n stop-color: $client-stats--upload--graph--fill--bottom;\n }\n\n &__area {\n fill: url('#graph--upload--gradient')\n }\n\n &__line {\n\n &--limit {\n stroke: $client-stats--upload--limits--line;\n }\n\n &--rate {\n stroke: $client-stats--upload--graph--stroke;\n }\n }\n\n }\n\n }\n\n}\n",".context-menu {\n font-size: 0.9em;\n padding: $spacing-unit * 2/5 0;\n position: fixed;\n z-index: 10;\n}\n","$directory-tree--filename--foreground: #527893;\n$directory-tree--directory--foreground: $directory-tree--filename--foreground;\n$directory-tree--directory--foreground--open: #719bb7;\n\n$directory-tree--icon--file: #344b5b;\n$directory-tree--icon--folder: rgba(#527893, 0.4);\n$directory-tree--icon--folder--active: rgba(#82aac5, 0.5);\n$directory-tree--icon--folder--open: rgba(#82aac5, 0.5);\n\n$directory-tree--file-details--foreground: #2b4456;\n$directory-tree--file-details--hover--foreground: #527893;\n\n$torrent-details--directory-tree--file--hover--background: rgba(#1a2d3c, 0.8);\n$torrent-details--directory-tree--file--hover--foreground: #79a7c7;\n$torrent-details--directory-tree--file--hover--border: #1f3647;\n\n$torrent-details--directory-tree--parent-directory--foreground: #3a5c74;\n$torrent-details--directory-tree--parent-directory--icon--fill: rgba(#3a5c74, 0.5);\n\n.directory-tree {\n\n .icon {\n display: inline-block;\n fill: $directory-tree--icon--folder;\n height: 14px;\n margin-right: 6px;\n width: 14px;\n }\n\n &__node {\n color: $directory-tree--filename--foreground;\n line-height: 1.75;\n text-overflow: ellipsis;\n vertical-align: middle;\n white-space: nowrap;\n\n &--group {\n padding-left: 10px;\n position: relative;\n\n &:after {\n background: rgba(#527893, 0.1);\n content: '';\n height: 100%;\n left: 5px;\n position: absolute;\n top: -5px;\n width: 2px;\n }\n }\n\n &--directory {\n color: $directory-tree--directory--foreground;\n cursor: pointer;\n transition: color 0.125s;\n\n &.is-expanded {\n color: $directory-tree--directory--foreground--open;\n font-weight: 500;\n\n .icon {\n fill: $directory-tree--icon--folder--active;\n }\n }\n\n .icon {\n fill: $directory-tree--icon--folder;\n }\n }\n\n .file {\n align-items: center;\n display: flex;\n line-height: 1.4;\n margin-left: -9px;\n padding: 2px 0 2px 9px;\n transition: background 0.25s, box-shadow 0.25s, color 0.25s;\n width: 100%;\n\n &:hover {\n background: $torrent-details--directory-tree--file--hover--background;\n box-shadow:\n 0 1px 0 $torrent-details--directory-tree--file--hover--border,\n 0 -1px 0 $torrent-details--directory-tree--file--hover--border;\n color: $torrent-details--directory-tree--file--hover--foreground;\n\n .file {\n\n &__detail {\n\n &--size,\n &--priority {\n color: $directory-tree--file-details--hover--foreground;\n }\n }\n }\n }\n\n .icon {\n fill: $directory-tree--icon--file;\n margin-top: -3px;\n vertical-align: middle;\n }\n\n &__detail {\n flex: 1 1 auto;\n overflow: hidden;\n padding-right: $spacing-unit * 1/4;\n text-overflow: ellipsis;\n\n &--size,\n &--priority {\n color: $directory-tree--file-details--foreground;\n flex: 0 0 auto;\n font-size: 0.95em;\n text-align: right;\n transition: color 0.25s;\n }\n\n &--priority {\n\n .icon {\n height: auto;\n margin-right: 0;\n width: 16px;\n }\n }\n\n &:last-child {\n padding-right: 0;\n }\n }\n }\n\n &--file-list {\n margin-bottom: 3px;\n }\n }\n\n &__parent-directory {\n margin-left: -1px;\n overflow: hidden;\n text-overflow: ellipsis;\n\n .icon {\n fill: $torrent-details--directory-tree--parent-directory--icon--fill;\n margin-right: 8px;\n vertical-align: middle;\n }\n }\n\n &__tree {\n\n .directory-tree__tree {\n padding-left: 6px;\n }\n }\n}\n","$dropdown--background: $menu--background;\n$dropdown--container--border: $menu--container--border;\n$dropdown--container--shadow: $menu--container--shadow;\n$dropdown--label: $menu--label;\n$dropdown--value: $menu--value;\n$dropdown--value--active: $menu--value--active;\n$dropdown--header--border: $menu--header--border;\n$dropdown--item--foreground: $menu--item--foreground;\n$dropdown--item--background--hover: $menu--item--background--hover;\n$dropdown--item--foreground--hover: $menu--item--foreground--hover;\n$dropdown--item--foreground--active: $menu--item--foreground--active;\n\n.dropdown {\n display: inline-block;\n outline: none;\n position: relative;\n z-index: 2;\n\n &__button,\n &__trigger {\n cursor: pointer;\n }\n\n &__button {\n display: block;\n padding: 12px 15px 7px 15px;\n text-align: left;\n width: auto;\n word-wrap: none;\n }\n\n &__content {\n left: 0;\n position: absolute;\n top: 0;\n z-index: 2;\n }\n\n &.is-expanded {\n\n .dropdown {\n\n &__header {\n\n .dropdown {\n\n &__value {\n color: $dropdown--value--active;\n }\n }\n }\n }\n }\n\n &__label {\n color: $dropdown--label;\n display: block;\n font-size: 0.65em;\n font-weight: 500;\n letter-spacing: 0.1em;\n line-height: 0.9em;\n text-transform: uppercase;\n\n .dropdown__button & {\n cursor: pointer;\n }\n }\n\n &__value {\n color: $dropdown--value;\n transition: color 0.25s;\n\n &:after {\n border-top: 5px solid $dropdown--value;\n border-left: 4px solid transparent;\n border-right: 4px solid transparent;\n content: '';\n display: inline-block;\n margin-left: 10px;\n vertical-align: middle;\n }\n }\n\n &__header {\n position: relative;\n\n &:after {\n background: $dropdown--header--border;\n bottom: 0;\n content: '';\n display: block;\n height: 1px;\n left: 5%;\n position: absolute;\n width: 90%;\n }\n }\n\n &__items {\n display: flex;\n padding: 10px 0;\n }\n\n &__list {\n flex: 1;\n }\n\n &--align-right & {\n left: auto;\n right: 0;\n }\n}\n\n.dropdown {\n\n &__content {\n\n &__container {\n padding: 25px 30px;\n }\n }\n}\n","$dropzone--background: #e9eff5;\n$dropzone--foreground: #53718a;\n$dropzone--foreground--hover: darken($dropzone--foreground, 20%);\n$dropzone--foreground--dragging: $blue;\n$dropzone--border: #d6e2ea;\n$dropzone--border--hover: darken($dropzone--border, 20%);\n$dropzone--border--dragging: $blue;\n$dropzone--browse--foreground: $blue;\n$dropzone--icon--fill: #c7d3df;\n$dropzone--icon--fill--hover: darken($dropzone--icon--fill, 15%);\n$dropzone--icon--fill--dragging: $blue;\n$dropzone--file--icon--fill: #adbfce;\n\n.dropzone {\n align-items: center;\n background: $dropzone--background;\n border: 1px dashed $dropzone--border;\n border-radius: 4px;\n color: $dropzone--foreground;\n display: flex;\n flex-direction: column;\n text-align: center;\n transition: border 0.25s, color 0.25s;\n width: 100%;\n\n &:hover {\n border-color: $dropzone--border--hover;\n\n .dropzone__icon {\n\n .icon {\n fill: $dropzone--icon--fill--hover;\n }\n }\n }\n\n &--is-dragging {\n\n &,\n &:hover {\n border-color: $dropzone--border--dragging;\n color: $dropzone--foreground--dragging;\n\n .dropzone__icon {\n\n .icon {\n fill: $dropzone--icon--fill--dragging;\n }\n }\n }\n }\n\n &__icon {\n\n .icon {\n\n &--files {\n fill: $dropzone--icon--fill;\n height: 64px;\n transition: fill 0.25s;\n width: 64px;\n\n &__file {\n\n &--right,\n &--left {\n fill-opacity: 0.5;\n }\n }\n }\n }\n }\n\n &__copy {\n cursor: pointer;\n flex: 1;\n font-size: 0.85em;\n padding: $spacing-unit;\n width: 100%;\n }\n\n &__browse-button {\n color: $dropzone--browse--foreground;\n text-decoration: underline;\n }\n\n &__selected-files {\n @extend .textbox;\n @extend .textbox.is-fulfilled;\n border-radius: 4px 4px 0 0 ;\n font-size: 0.8em;\n padding: $spacing-unit * 1/2;\n width: 100%;\n\n & + .dropzone {\n border-radius: 0 0 4px 4px;\n border-top: none;\n }\n\n &__file {\n text-align: left;\n white-space: nowrap;\n\n .icon {\n display: inline-block;\n fill: $dropzone--file--icon--fill;\n height: 12px;\n margin-right: 4px;\n vertical-align: baseline;\n width: 12px;\n }\n\n .icon--close {\n height: 8px;\n margin-left: 4px;\n margin-right: 0;\n vertical-align: middle;\n width: 8px;\n }\n }\n }\n\n &__file {\n display: flex;\n width: 100%;\n\n &__item {\n flex: 1 0 auto;\n\n &--icon {\n flex: 0 0 auto;\n }\n\n &--file-name {\n flex: 1 1 auto;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n &--remove-icon {\n cursor: pointer;\n }\n }\n\n .icon {\n\n }\n }\n}\n",".floating-action {\n\n &__button {\n background: $textbox-repeater--button--background;\n border: none;\n border-radius: 16px;\n box-shadow: 0 0 0 1px $textbox-repeater--button--border;\n cursor: pointer;\n height: 16px;\n outline: none;\n margin-right: 6px;\n padding: 0;\n position: relative;\n transition: background 0.25s, box-shadow 0.25s;\n width: 16px;\n\n &:last-child {\n margin-right: 0;\n }\n\n &:hover {\n background: $textbox-repeater--button--background--hover;\n box-shadow: 0 0 0 1px $textbox-repeater--button--border--hover;\n\n .icon {\n fill: $textbox-repeater--button--foreground--hover;\n }\n }\n\n .icon {\n height: 8px;\n fill: $textbox-repeater--button--foreground;\n left: 50%;\n position: absolute;\n top: 50%;\n transition: fill 0.25s;\n transform: translate(-50%, -50%);\n width: 8px;\n }\n }\n}\n","@keyframes loading-indicator-dots-pulse {\n 0% {\n fill-opacity: 0.2;\n }\n\n 100% {\n fill-opacity: 0.8;\n }\n}\n\n.icon {\n\n &--eta {\n\n .icon {\n\n &__ring {\n fill-opacity: 1;\n }\n }\n }\n\n &--loading-indicator {\n\n .loading-indicator {\n\n &--dots {\n\n &__dot {\n animation: loading-indicator-dots-pulse 0.6s linear alternate infinite;\n fill: $white;\n\n &--center {\n animation-delay: 0.2s;\n }\n\n &--right {\n animation-delay: 0.4s;\n }\n }\n }\n }\n }\n}\n","$loading-indicator--bar--background: #e9eef2;\n$loading-indicator--bar--background--inverse: rgba(#38586d, 0.7);\n$loading-indicator--tick--background: rgba($blue, 0.75);\n$loading-indicator--tick--background--inverse: rgba($blue, 0.75);\n\n@keyframes loading-indicator-swipe {\n 0% {\n transform: translateX(-100%);\n }\n\n 50% {\n transform: translateX(400%);\n }\n\n 100% {\n transform: translateX(400%);\n }\n}\n\n.loading-indicator {\n height: 18px;\n position: relative;\n width: 32px;\n\n &.is-inverse {\n\n .loading-indicator {\n\n &__bar {\n background: $loading-indicator--bar--background--inverse;\n\n &:after {\n background: $loading-indicator--tick--background--inverse;\n }\n }\n }\n }\n\n &__bar {\n background: $loading-indicator--bar--background;\n border-radius: 10px;\n height: 3px;\n left: 0;\n overflow: hidden;\n position: absolute;\n transform: translateY(0);\n width: 100%;\n\n &:after {\n animation: loading-indicator-swipe 3s ease-in-out infinite;\n background: $loading-indicator--tick--background;\n border-radius: 10px;\n content: '';\n display: block;\n height: 100%;\n transform: translateX(-100%);\n width: 25%;\n }\n\n &--1 {\n top: 0;\n }\n\n &--2 {\n top: 50%;\n transform: translateY(-50%);\n\n &:after {\n animation-delay: 0.5s;\n }\n }\n\n &--3 {\n bottom: 0;\n\n &:after {\n animation-delay: 1s;\n }\n }\n }\n}\n","$modal--background: #f7fafc;\n$modal--heading--background: #fff;\n$modal--heading--foreground: #5c6e80;\n$modal--heading--border: #dde7ed;\n\n$modal--body--foreground: desaturate(lighten($foreground, 20%), 10%);\n\n$modal--tab--foreground: #abbac7;\n$modal--tab--foreground--active: $blue;\n$modal--tab--border--active: $blue;\n\n$modal--overlay: rgba($background, 0.5);\n\n$modal--content--border: rgba($background, 0.1);\n$modal--content--shadow: rgba($background, 0.3);\n\n$modal--border-radius: 3px;\n$modal--padding--horizontal: $spacing-unit;\n$modal--padding--vertical: $modal--padding--horizontal * 4/5;\n\n$modal--content--padding--top: $spacing-unit * 4/5;\n$modal--content--padding--right: $spacing-unit;\n$modal--content--padding--bottom: $spacing-unit * 4/5;\n$modal--content--padding--left: $spacing-unit;\n\n$modal--actions--margin--top: $spacing-unit;\n\n$modal--tabs--margin--top: $spacing-unit * 2/5;\n$modal--tabs--margin--right: $spacing-unit * -1/5;\n$modal--tabs--margin--bottom: 0;\n$modal--tabs--margin--left: $spacing-unit * -1/5;\n\n.modal {\n background: $modal--overlay;\n height: 100%;\n left: 0;\n position: fixed;\n top: 0;\n transition: opacity 0.5s;\n width: 100%;\n z-index: 100;\n\n &--align-center {\n text-align: center;\n }\n\n &__tabs {\n color: $modal--tab--foreground;\n font-size: 0.65em;\n font-weight: 400;\n margin: $modal--tabs--margin--top $modal--tabs--margin--right $modal--tabs--margin--bottom $modal--tabs--margin--left;\n\n .modal {\n\n &__tab {\n cursor: pointer;\n display: inline-block;\n margin-right: $spacing-unit * 2/5;\n padding: $spacing-unit * 1/5 $spacing-unit * 1/5 $spacing-unit * 2/5 $spacing-unit * 1/5;\n position: relative;\n\n &:after {\n bottom: 0;\n content: '';\n height: 1px;\n left: 0;\n position: absolute;\n right: 0;\n transition: background 0.25s;\n }\n\n &:last-child {\n margin-right: 0;\n }\n\n &.is-active {\n color: $modal--tab--foreground--active;\n font-weight: 800;\n\n &:after {\n background: $modal--tab--border--active;\n }\n }\n }\n }\n }\n\n &__header {\n background: $modal--heading--background;\n border-radius: $modal--border-radius $modal--border-radius 0 0;\n box-shadow: inset 0 -1px 0 $modal--heading--border;\n color: $modal--heading--foreground;\n flex: 0 0 auto;\n font-size: 1.25em;\n font-weight: 300;\n line-height: 1;\n padding: $modal--padding--vertical $modal--padding--horizontal;\n\n &.has-tabs {\n padding-bottom: 0;\n }\n }\n\n &__content {\n flex: 1 1 auto;\n overflow: auto;\n padding: $modal--content--padding--top $modal--content--padding--right $modal--content--padding--bottom $modal--content--padding--left;\n\n &__wrapper {\n background: $modal--background;\n border-radius: $modal--border-radius;\n box-shadow:\n 0 0 0 1px $modal--content--border,\n 0 0 35px $modal--content--shadow;\n display: flex;\n flex-direction: column;\n left: 50%;\n max-height: 80%;\n max-width: 80%;\n position: absolute;\n top: 10%;\n transform: translate(-50%, 0);\n width: 500px;\n }\n }\n\n &__body {\n color: $modal--body--foreground;\n font-size: 0.9em;\n }\n\n &__actions {\n margin-top: $modal--actions--margin--top;\n }\n\n &__button-group {\n text-align: right;\n\n .modal--align-center & {\n text-align: center;\n }\n\n .button {\n\n & + .button {\n margin-left: 20px;\n }\n }\n }\n\n &__animation-enter {\n opacity: 0;\n }\n\n &__animation-enter-active {\n opacity: 1;\n }\n\n &__animation-leave {\n opacity: 1;\n pointer-events: none;\n }\n\n &__animation-leave-active {\n opacity: 0;\n }\n}\n","$priority-meter--track--level-0--background: rgba(#436076, 0.2);\n$priority-meter--bar--level-0--background: #436076;\n$priority-meter--track--level-1--background: rgba($blue, 0.2);\n$priority-meter--bar--level-1--background: $blue;\n$priority-meter--track--level-2--background: rgba($green, 0.2);\n$priority-meter--bar--level-2--background: $green;\n\n.priority-meter {\n height: 8px;\n position: relative;\n\n &__wrapper {\n cursor: pointer;\n display: inline-block;\n padding: 5px;\n user-select: none;\n vertical-align: middle;\n }\n\n &:before,\n &:after {\n content: '';\n display: block;\n position: absolute;\n }\n\n &:before {\n height: 2px;\n left: 0;\n top: 3px;\n transition: background 0.25s;\n width: 100%;\n }\n\n &:after {\n height: 100%;\n top: 0;\n transition: background 0.25s, left 0.25s;\n width: 2px;\n }\n\n &--max-2 {\n width: 18px;\n\n &.priority-meter {\n\n &--level-0 {\n\n &:before {\n background: $priority-meter--track--level-0--background;\n }\n\n &:after {\n left: 0;\n background: $priority-meter--bar--level-0--background;\n }\n }\n\n &--level-1 {\n\n &:before {\n background: $priority-meter--track--level-1--background;\n }\n\n &:after {\n left: 8px;\n background: $priority-meter--bar--level-1--background;\n }\n }\n\n &--level-2 {\n\n &:before {\n background: $priority-meter--track--level-2--background;\n }\n\n &:after {\n background: $priority-meter--bar--level-2--background;\n left: 16px;\n }\n }\n }\n }\n\n &--max-3 {\n width: 26px;\n\n &.priority-meter {\n\n &--level-0 {\n\n &:before {\n background: $priority-meter--track--level-0--background;\n }\n\n &:after {\n left: 0;\n background: $priority-meter--bar--level-0--background;\n }\n }\n\n &--level-1 {\n\n &:before {\n background: $priority-meter--track--level-1--background;\n }\n\n &:after {\n left: 8px;\n background: $priority-meter--bar--level-1--background;\n }\n }\n\n &--level-2 {\n\n &:before {\n background: $priority-meter--track--level-2--background;\n }\n\n &:after {\n background: $priority-meter--bar--level-2--background;\n left: 16px;\n }\n }\n\n &--level-3 {\n\n &:before {\n background: $priority-meter--track--level-2--background;\n }\n\n &:after {\n background: $priority-meter--bar--level-2--background;\n left: 24px;\n }\n }\n }\n }\n}\n","$progress-bar--background: #e3e5e5;\n$progress-bar--background--selected: rgba(#fff, 0.5);\n$progress-bar--background--selected--stopped: rgba(#fff, 0.5);\n$progress-bar--fill: $green;\n\n$progress-bar--fill--stopped: #e3e5e5;\n$progress-bar--fill--completed: $blue;\n$progress-bar--fill--selected: #fff;\n$progress-bar--fill--error: #e95779;\n\n.progress-bar {\n height: 3px;\n position: relative;\n transition: opacity 0.25s;\n z-index: 1;\n\n .is-selected.is-stopped & {\n opacity: 0.5;\n }\n\n &:after {\n background: $progress-bar--background;\n content: '';\n height: 1px;\n left: 0;\n position: absolute;\n z-index: 0;\n top: 1px;\n transition: background 0.25s;\n width: 100%;\n\n .is-selected & {\n background: $progress-bar--background--selected;\n }\n\n .is-selected.is-stopped & {\n background: $progress-bar--background--selected--stopped;\n }\n }\n\n &__fill {\n background: $progress-bar--fill;\n bottom: 0;\n height: 100%;\n left: 0;\n position: absolute;\n top: 0;\n transition: background 0.25s, width 0.25s;\n z-index: 1;\n\n .is-seeding & {\n background: $progress-bar--fill--completed;\n }\n\n .is-completed &,\n .is-stopped & {\n background: $progress-bar--fill--stopped;\n }\n\n .is-selected & {\n background: $progress-bar--fill--selected;\n }\n\n .has-error & {\n background: $progress-bar--fill--error;\n }\n }\n}\n","$scrollbar--thumb--background--inactive: rgba(#1a2f3d, 0.3);\n$scrollbar--thumb--background--hover: rgba(#1a2f3d, 0.6);\n$scrollbar--thumb--background--inverted--inactive: rgba(#e9eef2, 0.3);\n$scrollbar--thumb--background--inverted--hover: rgba(#e9eef2, 0.6);\n\n.scrollbars {\n\n &__thumb {\n background: $scrollbar--thumb--background--inactive;\n border-radius: 10px;\n cursor: pointer;\n opacity: 0;\n transition: background 0.25s, opacity 0.5s;\n\n &:active {\n opacity: 1;\n }\n\n &:hover,\n &:active {\n background: $scrollbar--thumb--background--hover;\n }\n\n .is-inverted & {\n background: $scrollbar--thumb--background--inverted--inactive;\n\n &:hover,\n &:active {\n background: $scrollbar--thumb--background--inverted--hover;\n }\n }\n }\n\n &:hover {\n\n .scrollbars__thumb {\n opacity: 1;\n }\n }\n}\n","$sidebar--foreground: #53718a;\n\n$search-torrents--base: #091824;\n$search-torrents--background: rgba($search-torrents--base, 0.3);\n$search-torrents--background--active: rgba($blue, 0.25);\n$search-torrents--border: rgba($search-torrents--background, 0.4);\n$search-torrents--border--active: rgba($blue, 0.3);\n$search-torrents--foreground: $sidebar--foreground;\n$search-torrents--foreground--active: $blue;\n$search-torrents--placeholder: rgba($sidebar--foreground, 0.4);\n$search-torrents--placeholder--active: rgba($blue, 0.4);\n\n$search-torrents--icon--foreground: $sidebar--foreground;\n$search-torrents--icon--foreground--active: $blue;\n\n.search {\n position: relative;\n\n .icon {\n fill: $search-torrents--icon--foreground;\n height: 22px;\n left: 17px;\n opacity: 0.5;\n position: absolute;\n top: 50%;\n transition: fill 0.25s, opacity 0.25s;\n transform: translateY(-50%);\n width: 22px;\n\n &--close {\n left: auto;\n right: 17px;\n }\n }\n\n .button {\n height: 100%;\n position: absolute;\n right: 0;\n width: 30px;\n\n .icon {\n position: absolute;\n height: 10px;\n left: 50%;\n top: 50%;\n transform: translate(-50%, -50%);\n width: 10px;\n }\n }\n\n .textbox {\n appearance: none;\n -webkit-appearance: none;\n -moz-appearance: none;\n border: 1px solid $search-torrents--border;\n border-left: none;\n border-right: none;\n border-radius: 0;\n background: $search-torrents--background;\n box-shadow: none;\n color: $search-torrents--foreground;\n display: block;\n font-size: 1em;\n outline: none;\n padding: 12px 0 12px 45px;\n transition: background 0.25s, border 0.25s, color 0.25s;\n width: 100%;\n\n &::placeholder {\n color: $search-torrents--placeholder;\n font-style: italic;\n transition: color 0.25s;\n }\n }\n\n &.is-in-use {\n\n .icon {\n fill: $search-torrents--icon--foreground--active;\n opacity: 1;\n }\n\n .textbox {\n background: $search-torrents--background--active;\n border-bottom: 1px solid $search-torrents--border--active;\n border-top: 1px solid $search-torrents--border--active;\n color: $search-torrents--foreground--active;\n padding-right: 45px;\n\n &::placeholder {\n color: $search-torrents--placeholder--active;\n }\n }\n }\n}\n","$sidebar--foreground: #53718a;\n$sidebar--border: rgba(darken($sidebar--foreground, 40%), 0.3);\n\n$sidebar-filter--foreground: $sidebar--foreground;\n$sidebar-filter--foreground--header: rgba($sidebar-filter--foreground, 0.5);\n$sidebar-filter--foreground--active: $blue;\n$sidebar-filter--foreground--hover: lighten($sidebar-filter--foreground, 15%);\n\n.application {\n\n &__sidebar {\n box-shadow: 1px 0 $sidebar--border;\n color: $sidebar--foreground;\n flex: 1;\n min-width: 200px;\n max-width: 240px;\n overflow: auto;\n position: relative;\n z-index: 2;\n }\n}\n\n.sidebar {\n\n &__item {\n\n &--speed-limit {\n padding-left: 5px;\n padding-top: 5px;\n\n .dropdown {\n\n &__content {\n min-width: 180px;\n }\n\n &__items {\n font-size: 0.9em;\n }\n }\n }\n }\n}\n",".sidebar-filter {\n font-size: 0.85em;\n padding: 30px 0;\n\n & + .sidebar-filter {\n padding-top: 0;\n }\n\n &__item {\n color: $sidebar-filter--foreground;\n cursor: pointer;\n font-weight: 400;\n padding: 3px 20px;\n transition: color 0.25s;\n\n &:hover {\n color: $sidebar-filter--foreground--hover;\n\n .icon {\n fill: $sidebar-filter--foreground--hover;\n }\n }\n\n &.is-active {\n color: $sidebar-filter--foreground--active;\n font-weight: 700;\n\n .badge {\n background: $sidebar-filter--count--background--active;\n }\n\n .icon {\n fill: $sidebar-filter--foreground--active;\n }\n }\n\n .icon {\n display: inline-block;\n fill: $sidebar-filter--foreground;\n height: 14px;\n margin-right: 7px;\n transition: fill 0.25s;\n vertical-align: middle;\n width: auto;\n }\n }\n\n .badge {\n background: $sidebar-filter--count--background;\n color: $sidebar-filter--count--foreground;\n }\n}\n\n\n.sidebar-filter {\n\n &__item {\n\n &--heading {\n cursor: default;\n font-size: 0.8em;\n font-weight: 500;\n letter-spacing: 0.1em;\n text-transform: uppercase;\n\n &,\n &:hover {\n color: $sidebar-filter--foreground--header;\n }\n }\n }\n}\n",".textbox-repeater {\n\n .floating-action {\n\n &__group {\n margin-top: -8px;\n position: absolute;\n right: -8px;\n top: 50%;\n }\n\n &__button {\n position: relative;\n }\n }\n\n .textbox {\n\n &__wrapper {\n position: relative;\n }\n }\n\n .form {\n\n &__row {\n\n & + .form__row {\n margin-top: $spacing-unit * 1/2;\n }\n }\n }\n}\n","$torrent-details--background: saturate(lighten(#0c1b26, 2.5%), 4%); //#162835;\n$torrent-details--border: rgba($background, 0.1);\n\n$torrent-details--header--border: rgba(#040d13, 0.3);\n$torrent-details--header--name--foreground: #c7dbeb;\n$torrent-details--header--tertiary--foreground: #7b9cb4;\n$torrent-details--header--progress-bar--track: #2a3e4c;\n$torrent-details--header--progress-bar--fill--error: #be2558;\n\n$torrent-details--navigation--border: rgba(#040d13, 0.4);\n$torrent-details--navigation--item--background--active: rgba(#349cf4, 0.07);\n$torrent-details--navigation--item--foreground--active: #349cf4;\n$torrent-details--navigation--item--border--active: #349cf4;\n$torrent-details--navigation--background: transparent;\n\n$torrent-details--content--background: rgba(desaturate(#0c1b26, 15%), 0.4);\n\n$torrent-details--table--foreground: #527893;\n$torrent-details--table--header: rgba(#527893, 0.5);\n$torrent-details--table--header--count--background: rgba(#527893, 0.5);\n$torrent-details--table--header--count--foreground: #0c1b26;\n\n$torrent-details--header--icon--default--fill: rgba(#4d6f87, 0.5);\n\n.application {\n\n &__panel {\n\n &--torrent-details {\n background: $torrent-details--background;\n }\n }\n}\n\n.torrent-details {\n background: $torrent-details--background;\n bottom: 0;\n box-shadow: -1px 0 0 $torrent-details--border;\n display: flex;\n flex-direction: column;\n font-size: 0.8em;\n left: 0;\n min-width: 400px;\n overflow: auto;\n position: absolute;\n right: 0;\n top: 0;\n transition: opacity 1s;\n z-index: 2;\n\n &__wrapper {\n flex: 1;\n height: 100%;\n }\n\n &__scroll-container {\n height: auto !important;\n }\n\n &__header {\n box-shadow: 0 1px 0 $torrent-details--header--border;\n flex: 0 0 auto;\n padding: $spacing-unit * 1/2 $spacing-unit $spacing-unit * 2/3 $spacing-unit;\n\n &.has-error {\n\n .progress-bar {\n\n &__fill {\n background: $torrent-details--header--progress-bar--fill--error;\n }\n }\n }\n\n &.is-stopped {\n\n .progress-bar {\n\n &__fill {\n background: #7b9cb4;\n }\n }\n }\n\n .progress-bar {\n\n &:after {\n background: $torrent-details--header--progress-bar--track;\n }\n }\n }\n\n &__action {\n cursor: pointer;\n transition: color 0.25s;\n\n .icon {\n transition: fill 0.25s;\n }\n\n &.is-active {\n color: $blue;\n\n .icon {\n fill: $blue;\n }\n }\n }\n\n &__table {\n color: $torrent-details--table--foreground;\n width: 100%;\n\n &__heading {\n\n &--primary {\n color: $torrent-details--directory-tree--parent-directory--foreground;\n font-size: 1.125em;\n }\n\n &--secondary {\n color: $torrent-details--table--header;\n font-size: 0.7em;\n letter-spacing: 0.1em;\n text-transform: uppercase;\n }\n }\n }\n\n &__content {\n flex: 1;\n overflow: auto;\n padding: $spacing-unit * 2/3 $spacing-unit;\n\n &__wrapper {\n background: $torrent-details--content--background;\n display: flex;\n flex: 1;\n overflow: hidden;\n }\n }\n\n &__navigation {\n background: $torrent-details--navigation--background;\n box-shadow: 1px 0 0 $torrent-details--navigation--border;\n min-width: 125px;\n padding: $spacing-unit * 1/2 0;\n\n .navigation {\n\n &__item {\n cursor: pointer;\n padding: $spacing-unit * 1/4 $spacing-unit;\n text-align: right;\n transition: background 0.25s, box-shadow 0.25s, color 0.25s;\n\n &.is-active {\n background: $torrent-details--navigation--item--background--active;\n box-shadow: 1px 0 0 $torrent-details--navigation--item--border--active;\n color: $torrent-details--navigation--item--foreground--active;\n }\n }\n }\n }\n\n &__section {\n\n &__heading,\n &__null-data {\n color: $torrent-details--directory-tree--parent-directory--foreground;\n font-size: 1.15em;\n margin-bottom: $spacing-unit * 1/10;\n }\n\n &__heading {\n\n .badge {\n background: $torrent-details--table--header--count--background;\n color: $torrent-details--table--header--count--foreground;\n }\n }\n }\n}\n\n.torrent-details {\n\n &__heading {\n color: $torrent-details--header--name--foreground;\n font-size: 1.7em;\n font-weight: 300;\n }\n\n &__sub-heading {\n display: flex;\n margin-bottom: $spacing-unit * 1/4;\n\n &__secondary {\n color: $torrent-details--header--tertiary--foreground;\n display: flex;\n flex: 1 0 auto;\n\n &:first-child {\n justify-content: flex-start;\n }\n\n &:last-child {\n justify-content: flex-end;\n }\n }\n\n &__tertiary {\n flex: 0 0 auto;\n margin-right: 1em;\n\n .icon {\n fill: $torrent-details--header--icon--default--fill;\n height: 12px;\n margin-right: 3px;\n margin-top: -3px;\n vertical-align: middle;\n width: 12px;\n }\n\n .priority-meter {\n display: inline-block;\n margin-top: -1px;\n margin-right: 6px;\n vertical-align: middle;\n\n &__wrapper {\n margin-top: -3px;\n padding: 0;\n }\n }\n\n &--download {\n color: $blue;\n\n .icon {\n fill: $blue;\n }\n }\n\n &--upload {\n color: $green;\n\n .icon {\n fill: $green;\n }\n }\n\n &:last-child {\n margin-right: 0;\n }\n }\n }\n}\n\n.torrent-details-enter {\n opacity: 0;\n}\n\n.torrent-details-enter-active {\n opacity: 1;\n}\n\n.torrent-details-leave {\n opacity: 0;\n transition: opacity 0.5s;\n}\n","$torrent-list--background: #fff;\n$torrent-list--border: rgba($background, 0.15);\n\n$torrent--primary--foreground: #333332;\n$torrent--primary--foreground--stopped: rgba(#333332, 0.5);\n$torrent--primary--foreground--selected: #fff;\n$torrent--primary--foreground--selected--stopped: rgba($torrent--primary--foreground--selected, 0.6);\n$torrent--secondary--foreground: #807f7e;\n$torrent--secondary--foreground--stopped: rgba(#807f7e, 0.5);\n$torrent--secondary--foreground--selected: #fff;\n$torrent--secondary--foreground--selected--stopped: rgba(#fff, 0.6);\n$torrent--tertiary--foreground: #807f7e;\n$torrent--tertiary--foreground--stopped: rgba(#807f7e, 0.5);\n$torrent--tertiary--foreground--selected: rgba(#fff, 0.9);\n$torrent--tertiary--foreground--selected--stopped: rgba(#fff, 0.5);\n\n$torrent--background--hover: #f6f8fa;\n$torrent--background--selected: $blue;\n\n.torrents {\n display: flex;\n flex: 1 1 100px;\n position: relative;\n\n &:after {\n background: $torrent-list--background;\n bottom: 0;\n box-shadow: -1px 0 0 0 $torrent-list--border;\n content: '';\n height: auto;\n left: 10px;\n position: absolute;\n right: 0;\n top: 0;\n }\n\n .loading-indicator {\n left: 50%;\n position: absolute;\n top: 50%;\n transform: translate(-50%, -50%);\n }\n}\n\n.torrent {\n\n &__list {\n margin: 0 0 0 10px;\n padding: 10px 0;\n position: relative;\n\n &__wrapper {\n list-style: none;\n max-width: 100%;\n opacity: 1;\n overflow: auto;\n transition: opacity 1s;\n user-select: none;\n z-index: 1;\n }\n\n &--loading {\n\n &-enter {\n opacity: 0;\n transition: opacity 1s;\n\n &-active {\n opacity: 1;\n }\n }\n\n &-leave {\n opacity: 1;\n transition: opacity 1s;\n\n &-active {\n opacity: 0;\n }\n }\n }\n\n &--empty {\n opacity: 0;\n }\n }\n}\n\n.torrent {\n cursor: default;\n padding: 10px 20px;\n position: relative;\n transition: background 0.25s;\n\n &:hover {\n background: $torrent--background--hover;\n\n .torrent {\n\n &__more-info {\n opacity: 1;\n }\n }\n }\n\n &.is-selected {\n background: $torrent--background--selected;\n }\n\n &__more-info {\n height: 20px;\n margin-top: -10px;\n position: absolute;\n left: -7px;\n opacity: 0;\n top: 50%;\n transition: background 0.25s, box-shadow 0.25s, opacity 0.25s;\n width: 20px;\n }\n}\n\n.torrent {\n\n &__details {\n align-items: center;\n display: flex;\n flex: 1;\n flex-flow: row wrap;\n list-style: none;\n\n &--primary,\n &--secondary,\n &--tertiary {\n transition: color 0.25s;\n }\n\n &--primary {\n color: $torrent--primary--foreground;\n flex: 4;\n line-height: 1.3;\n white-space: nowrap;\n\n .is-stopped & {\n color: $torrent--primary--foreground--stopped;\n }\n\n .is-selected & {\n color: $torrent--primary--foreground--selected;\n }\n\n .is-selected.is-stopped & {\n color: $torrent--primary--foreground--selected--stopped;\n }\n }\n\n &--secondary {\n align-items: flex-end;\n color: $torrent--secondary--foreground;\n flex: 1;\n font-size: 0.75em;\n min-width: 200px;\n\n li {\n flex: 1 1 auto;\n min-width: 15%;\n\n &.torrent__details--ratio {\n max-width: 30px;\n }\n }\n\n .is-stopped & {\n color: $torrent--secondary--foreground--stopped;\n }\n\n .is-selected & {\n color: $torrent--secondary--foreground--selected;\n }\n\n .is-selected.is-stopped & {\n color: $torrent--secondary--foreground--selected--stopped;\n }\n }\n\n &--tertiary {\n color: $torrent--tertiary--foreground;\n display: block;\n font-size: 0.75em;\n margin: 0 0 3px 0;\n\n li {\n display: inline-block;\n margin-right: 1em;\n\n &:last-child {\n margin-right: 0;\n }\n }\n\n .is-stopped & {\n color: $torrent--tertiary--foreground--stopped;\n }\n\n .is-selected & {\n color: $torrent--tertiary--foreground--selected;\n }\n\n .is-selected.is-stopped & {\n color: $torrent--tertiary--foreground--selected--stopped;\n }\n }\n\n &__label {\n margin-right: 0.5em;\n opacity: 0.5;\n }\n }\n}\n\n.torrent {\n\n &__details {\n\n &--eta {\n opacity: 0;\n transition: opacity 1s, visibility 1s;\n visibility: hidden;\n\n .torrent__details--segment {\n margin-right: 0.25em;\n\n &:last-child {\n margin-right: 0;\n }\n }\n\n .is-actively-downloading & {\n opacity: 1;\n visibility: visible;\n }\n }\n }\n}\n\n.view {\n\n &--torrent-list {\n background: #e9eef2;\n box-shadow: -1px 0 $torrent-list--border;\n display: flex;\n flex-direction: column;\n flex: 1;\n flex: 0 1 100%;\n }\n}\n","$transfer-data--download: $green;\n$transfer-data--upload: $blue;\n\n.transfer-data {\n\n &--download {\n color: $transfer-data--download;\n\n .icon {\n fill: $transfer-data--download;\n }\n }\n\n &--upload {\n color: $transfer-data--upload;\n\n .icon {\n fill: $transfer-data--upload;\n }\n }\n}\n"],"sourceRoot":"/source/"} \ No newline at end of file +{"version":3,"sources":["style.css","../../../node_modules/inuit-defaults/_settings.defaults.scss","../../../node_modules/inuit-normalize/_generic.normalize.scss","tools/_variables.scss","base/_typography.scss","../../../node_modules/inuit-reset/_generic.reset.scss","../../../node_modules/inuit-box-sizing/_generic.box-sizing.scss","../../../node_modules/inuit-page/_base.page.scss","tools/_reset.scss","base/_animations.scss","base/_form-elements.scss","tools/_colors.scss","base/_layout.scss","base/_main.scss","components/_action-bar.scss","components/_application-content.scss","components/_badge.scss","components/_base-menu.scss","components/_client-stats.scss","components/_context-menu.scss","components/_directory-tree.scss","components/_dropdown.scss","components/_dropzone.scss","components/_floating-action.scss","components/_icons.scss","components/_loading-indicator.scss","components/_modals.scss","components/_priority-meter.scss","components/_progress-bar.scss","components/_scrollbars.scss","components/_search.scss","components/_sidebar.scss","components/_sidebar-filter.scss","components/_textbox-repeater.scss","components/_torrent-details-panel.scss","components/_torrents.scss","components/_transfer-data.scss"],"names":[],"mappings":"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","file":"style.css","sourcesContent":["@charset \"UTF-8\";\n/*!\n * inuitcss, by @csswizardry\n *\n * github.com/inuitcss | inuitcss.com\n */\n/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\n/**\n * 1. Set default font family to sans-serif.\n * 2. Prevent iOS and IE text size adjust after device orientation change,\n * without disabling user zoom.\n */\n@import url(http://fonts.googleapis.com/css?family=Roboto:400italic,700italic,300,700,300italic,400);\n@import url(\"http://fonts.googleapis.com/css?family=Roboto:500,400italic,300,700,400\");\nhtml {\n font-family: sans-serif;\n /* 1 */\n -ms-text-size-adjust: 100%;\n /* 2 */\n -webkit-text-size-adjust: 100%;\n /* 2 */ }\n\n/**\n * Remove default margin.\n */\nbody {\n margin: 0; }\n\n/* HTML5 display definitions\n ========================================================================== */\n/**\n * Correct `block` display not defined for any HTML5 element in IE 8/9.\n * Correct `block` display not defined for `details` or `summary` in IE 10/11\n * and Firefox.\n * Correct `block` display not defined for `main` in IE 11.\n */\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n display: block; }\n\n/**\n * 1. Correct `inline-block` display not defined in IE 8/9.\n * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.\n */\naudio,\ncanvas,\nprogress,\nvideo {\n display: inline-block;\n /* 1 */\n vertical-align: baseline;\n /* 2 */ }\n\n/**\n * Prevent modern browsers from displaying `audio` without controls.\n * Remove excess height in iOS 5 devices.\n */\naudio:not([controls]) {\n display: none;\n height: 0; }\n\n/**\n * Address `[hidden]` styling not present in IE 8/9/10.\n * Hide the `template` element in IE 8/9/10/11, Safari, and Firefox < 22.\n */\n[hidden],\ntemplate {\n display: none; }\n\n/* Links\n ========================================================================== */\n/**\n * Remove the gray background color from active links in IE 10.\n */\na {\n background-color: transparent; }\n\n/**\n * Improve readability of focused elements when they are also in an\n * active/hover state.\n */\na:active,\na:hover {\n outline: 0; }\n\n/* Text-level semantics\n ========================================================================== */\n/**\n * Address styling not present in IE 8/9/10/11, Safari, and Chrome.\n */\nabbr[title] {\n border-bottom: 1px dotted; }\n\n/**\n * Address style set to `bolder` in Firefox 4+, Safari, and Chrome.\n */\nb,\nstrong {\n font-weight: bold; }\n\n/**\n * Address styling not present in Safari and Chrome.\n */\ndfn {\n font-style: italic; }\n\n/**\n * Address variable `h1` font-size and margin within `section` and `article`\n * contexts in Firefox 4+, Safari, and Chrome.\n */\nh1 {\n font-size: 2em;\n margin: 0.67em 0; }\n\n/**\n * Address styling not present in IE 8/9.\n */\nmark {\n background: #ff0;\n color: #000; }\n\n/**\n * Address inconsistent and variable font size in all browsers.\n */\nsmall {\n font-size: 80%; }\n\n/**\n * Prevent `sub` and `sup` affecting `line-height` in all browsers.\n */\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline; }\n\nsup {\n top: -0.5em; }\n\nsub {\n bottom: -0.25em; }\n\n/* Embedded content\n ========================================================================== */\n/**\n * Remove border when inside `a` element in IE 8/9/10.\n */\nimg {\n border: 0; }\n\n/**\n * Correct overflow not hidden in IE 9/10/11.\n */\nsvg:not(:root) {\n overflow: hidden; }\n\n/* Grouping content\n ========================================================================== */\n/**\n * Address margin not present in IE 8/9 and Safari.\n */\nfigure {\n margin: 1em 40px; }\n\n/**\n * Address differences between Firefox and other browsers.\n */\nhr {\n box-sizing: content-box;\n height: 0; }\n\n/**\n * Contain overflow in all browsers.\n */\npre {\n overflow: auto; }\n\n/**\n * Address odd `em`-unit font size rendering in all browsers.\n */\ncode,\nkbd,\npre,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em; }\n\n/* Forms\n ========================================================================== */\n/**\n * Known limitation: by default, Chrome and Safari on OS X allow very limited\n * styling of `select`, unless a `border` property is set.\n */\n/**\n * 1. Correct color not being inherited.\n * Known issue: affects color of disabled elements.\n * 2. Correct font properties not being inherited.\n * 3. Address margins set differently in Firefox 4+, Safari, and Chrome.\n */\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n color: inherit;\n /* 1 */\n font: inherit;\n /* 2 */\n margin: 0;\n /* 3 */ }\n\n/**\n * Address `overflow` set to `hidden` in IE 8/9/10/11.\n */\nbutton {\n overflow: visible; }\n\n/**\n * Address inconsistent `text-transform` inheritance for `button` and `select`.\n * All other form control elements do not inherit `text-transform` values.\n * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.\n * Correct `select` style inheritance in Firefox.\n */\nbutton,\nselect {\n text-transform: none; }\n\n/**\n * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`\n * and `video` controls.\n * 2. Correct inability to style clickable `input` types in iOS.\n * 3. Improve usability and consistency of cursor style between image-type\n * `input` and others.\n */\nbutton,\nhtml input[type=\"button\"],\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n -webkit-appearance: button;\n /* 2 */\n cursor: pointer;\n /* 3 */ }\n\n/**\n * Re-set default cursor for disabled elements.\n */\nbutton[disabled],\nhtml input[disabled] {\n cursor: default; }\n\n/**\n * Remove inner padding and border in Firefox 4+.\n */\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n border: 0;\n padding: 0; }\n\n/**\n * Address Firefox 4+ setting `line-height` on `input` using `!important` in\n * the UA stylesheet.\n */\ninput {\n line-height: normal; }\n\n/**\n * It's recommended that you don't attempt to style these elements.\n * Firefox's implementation doesn't respect box-sizing, padding, or width.\n *\n * 1. Address box sizing set to `content-box` in IE 8/9/10.\n * 2. Remove excess padding in IE 8/9/10.\n */\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n box-sizing: border-box;\n /* 1 */\n padding: 0;\n /* 2 */ }\n\n/**\n * Fix the cursor style for Chrome's increment/decrement buttons. For certain\n * `font-size` values of the `input`, it causes the cursor style of the\n * decrement button to change from `default` to `text`.\n */\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n height: auto; }\n\n/**\n * 1. Address `appearance` set to `searchfield` in Safari and Chrome.\n * 2. Address `box-sizing` set to `border-box` in Safari and Chrome.\n */\ninput[type=\"search\"] {\n -webkit-appearance: textfield;\n /* 1 */\n box-sizing: content-box;\n /* 2 */ }\n\n/**\n * Remove inner padding and search cancel button in Safari and Chrome on OS X.\n * Safari (but not Chrome) clips the cancel button when the search input has\n * padding (and `textfield` appearance).\n */\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none; }\n\n/**\n * Define consistent border, margin, and padding.\n */\nfieldset {\n border: 1px solid #c0c0c0;\n margin: 0 2px;\n padding: 0.35em 0.625em 0.75em; }\n\n/**\n * 1. Correct `color` not being inherited in IE 8/9/10/11.\n * 2. Remove padding so people aren't caught out if they zero out fieldsets.\n */\nlegend {\n border: 0;\n /* 1 */\n padding: 0;\n /* 2 */ }\n\n/**\n * Remove default vertical scrollbar in IE 8/9/10/11.\n */\ntextarea {\n overflow: auto; }\n\n/**\n * Don't inherit the `font-weight` (applied by a rule above).\n * NOTE: the default cannot safely be changed in Chrome and Safari on OS X.\n */\noptgroup {\n font-weight: bold; }\n\n/* Tables\n ========================================================================== */\n/**\n * Remove most spacing between table cells.\n */\ntable {\n border-collapse: collapse;\n border-spacing: 0; }\n\ntd,\nth {\n padding: 0; }\n\n/*------------------------------------* #RESET\n\\*------------------------------------*/\n/**\n * As well as using normalize.css, it is often advantageous to remove all\n * margins from certain elements.\n */\nbody,\nh1, h2, h3, h4, h5, h6,\np, blockquote, pre,\ndl, dd, ol, ul,\nform, fieldset, legend,\nfigure,\ntable, th, td, caption,\nhr {\n margin: 0;\n padding: 0; }\n\n/**\n * Give a help cursor to elements that give extra info on `:hover`.\n */\nabbr[title],\ndfn[title] {\n cursor: help; }\n\n/**\n * Remove underlines from potentially troublesome elements.\n */\nu,\nins {\n text-decoration: none; }\n\n/**\n * Apply faux underlines to inserted text via `border-bottom`.\n */\nins {\n border-bottom: 1px solid; }\n\n/*------------------------------------* #BOX-SIZING\n\\*------------------------------------*/\n/**\n * Set the global `box-sizing` state to `border-box`.\n *\n * css-tricks.com/inheriting-box-sizing-probably-slightly-better-best-practice\n * paulirish.com/2012/box-sizing-border-box-ftw\n */\nhtml {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box; }\n\n*, *:before, *:after {\n -webkit-box-sizing: inherit;\n -moz-box-sizing: inherit;\n box-sizing: inherit; }\n\n/*------------------------------------* #PAGE\n\\*------------------------------------*/\n/**\n * High-, page-level styling.\n *\n * 1. Set the default `font-size` and `line-height` for the entire project,\n * sourced from our default variables. The `font-size` is calculated to exist\n * in ems, the `line-height` is calculated to exist unitlessly.\n * 2. Force scrollbars to always be visible to prevent awkward ‘jumps’ when\n * navigating between pages that do/do not have enough content to produce\n * scrollbars naturally.\n * 3. Ensure the page always fills at least the entire height of the viewport.\n * 4. Prevent certain mobile browsers from automatically zooming fonts.\n * 5. Fonts on OSX will look more consistent with other systems that do not\n * render text using sub-pixel anti-aliasing.\n */\nhtml {\n font-size: 1em;\n /* [1] */\n line-height: 1.5;\n /* [1] */\n background-color: #fff;\n color: #333;\n overflow-y: scroll;\n /* [2] */\n min-height: 100%;\n /* [3] */\n -webkit-text-size-adjust: 100%;\n /* [4] */\n -ms-text-size-adjust: 100%;\n /* [4] */\n -moz-osx-font-smoothing: grayscale;\n /* [5] */\n -webkit-font-smoothing: antialiased;\n /* [5] */ }\n\nth {\n font-weight: inherit;\n text-align: left; }\n\n@keyframes fade-in {\n 0% {\n opacity: 0; }\n 100% {\n opacity: 1; } }\n\n@keyframes fade-out {\n 0% {\n opacity: 1; }\n 100% {\n opacity: 0; } }\n\n.textbox, .checkbox__decoy, .dropzone__selected-files,\n.button {\n appearance: none;\n -moz-appearance: none;\n -webkit-appearance: none;\n outline: none; }\n\n.textbox, .checkbox__decoy, .dropzone__selected-files {\n background: #e9eff5;\n border-radius: 4px;\n border: 1px solid #d6e2ea;\n color: #53718a;\n display: block;\n font-size: 0.9em;\n padding: 10px 15px;\n transition: background 0.25s, border 0.25s, color 0.25s;\n width: 100%; }\n .textbox::placeholder, .checkbox__decoy::placeholder, .dropzone__selected-files::placeholder {\n color: #abbac7;\n font-style: italic;\n transition: color 0.25s; }\n .textbox:focus, .checkbox__decoy:focus, .dropzone__selected-files:focus {\n background: #fdfefe;\n border-color: #c7d6df;\n color: #258de5; }\n .textbox:focus::placeholder, .checkbox__decoy:focus::placeholder, .dropzone__selected-files:focus::placeholder {\n color: #abbac7; }\n .textbox.is-fulfilled, .is-fulfilled.checkbox__decoy, .dropzone__selected-files {\n background: #fdfefe; }\n\n.button {\n background: transparent;\n border: none;\n border-radius: 4px;\n cursor: pointer;\n font-size: 0.9em;\n font-weight: 500;\n padding: 8px 22px;\n transition: background 0.25s;\n user-select: none; }\n .button.has-icon .icon {\n height: 16px;\n margin: 0 8.33333px;\n vertical-align: middle;\n width: 16px; }\n .button.has-icon .icon:first-child {\n margin-left: 0; }\n .button.has-icon .icon:last-child {\n margin-right: 0; }\n .button--deemphasize {\n background: #e9eef2;\n box-shadow: inset 0 0 0 1px #d9e2e9;\n color: #66717a; }\n .button--deemphasize:hover {\n background: #d9e2e9;\n box-shadow: inset 0 0 0 1px #c9d5df;\n color: #5a646c; }\n .button--primary {\n background: #258de5;\n box-shadow: inset 0 0 0 1px #1a80d7;\n color: #fff;\n white-space: nowrap; }\n .button--primary:hover {\n background: #1a80d7;\n box-shadow: inset 0 0 0 1px #1773c0; }\n\n.checkbox {\n line-height: 1;\n position: relative; }\n .checkbox:hover .checkbox__decoy {\n border-color: #258de5; }\n .checkbox input[type=\"checkbox\"] {\n left: 0;\n opacity: 0;\n position: absolute;\n top: 50%;\n transform: translateY(-50%); }\n .checkbox input[type=\"checkbox\"]:checked + .checkbox__decoy .icon {\n fill: #258de5; }\n .checkbox__decoy {\n background: #fff;\n display: inline-block;\n height: 15px;\n margin-right: 7.5px;\n margin-top: -2px;\n padding: 0;\n position: relative;\n vertical-align: middle;\n width: 15px; }\n .checkbox__decoy .icon {\n fill: transparent;\n height: 10px;\n left: 50%;\n position: absolute;\n top: 50%;\n transition: fill 0.25s;\n transform: translate(-43%, -43%);\n width: 10px; }\n .checkbox__label {\n color: #768a9a; }\n\n.form__label {\n color: #abbac7;\n display: block;\n font-size: 0.8em;\n line-height: 1;\n margin-bottom: 0.35em; }\n\n.form__row + .form__row {\n margin-top: 25px; }\n\nhtml,\nbody {\n height: 100%;\n overflow: hidden; }\n\n.container {\n height: 100%;\n width: 100%; }\n\n.flood {\n align-items: stretch;\n display: flex;\n height: 100%; }\n\n.application__content {\n display: flex;\n height: 100vh;\n flex: 1 2 auto;\n flex-direction: column;\n position: relative; }\n\n.application__loading-indicator {\n align-items: center;\n background: #1a2f3d;\n display: flex;\n height: 100%;\n justify-content: center;\n position: fixed;\n width: 100%;\n z-index: 1000; }\n .application__loading-indicator__wrapper-leave {\n opacity: 1;\n pointer-events: none;\n transition: opacity 1s; }\n .application__loading-indicator__wrapper-leave-active {\n opacity: 0; }\n\n.application__panel {\n display: flex;\n bottom: 0;\n left: 0;\n position: absolute;\n right: 0;\n top: 0; }\n .application__panel--torrent-list {\n transition: transform 0.5s;\n z-index: 2; }\n .application__panel--torrent-list.is-open {\n transform: translateX(85%); }\n .application__panel--torrent-details {\n right: 15%;\n width: 85%;\n z-index: 1; }\n\n.torrent__header {\n flex: 1;\n min-height: 35px;\n max-height: 35px; }\n\n.torrent__list__wrapper {\n display: flex;\n flex: 1; }\n .torrent__list__wrapper--custom-scroll {\n flex: 1;\n height: auto !important; }\n\nbody {\n background: #1a2f3d; }\n\nul {\n list-style: none; }\n\nbody {\n color: #53718a;\n font-family: \"Roboto\", sans-srif; }\n\n.unit {\n display: inline-block;\n font-size: 0.8em;\n font-style: normal;\n margin-bottom: 0.1em;\n opacity: 0.8; }\n\n.text-overflow {\n overflow: hidden;\n position: relative;\n text-overflow: ellipsis; }\n\n.action-bar {\n background: transparent;\n color: #1b1a1c;\n display: flex;\n flex: 0 0 60px;\n position: relative; }\n .action-bar:after {\n background: rgba(26, 47, 61, 0.15);\n bottom: 0;\n content: '';\n height: 1px;\n left: 9px;\n position: absolute;\n right: 0;\n width: auto; }\n .action-bar__item {\n flex: 3; }\n .action-bar__item:first-child {\n text-align: left; }\n .action-bar__item:last-child {\n text-align: right; }\n .action-bar__item--sort-torrents {\n max-width: 225px; }\n .action-bar__item--sort-torrents .dropdown {\n margin: 5px 0 0 15px; }\n .action-bar__item--sort-torrents .dropdown__content {\n min-width: 250px; }\n .action-bar__item--torrent-operations .dropdown {\n display: inline-block;\n height: 60px; }\n .action-bar__item--torrent-operations .dropdown__content {\n min-width: 430px;\n right: 4px; }\n .action-bar__group {\n display: inline-block;\n font-size: 0;\n padding: 0 15px; }\n .action-bar__group--has-divider {\n position: relative; }\n .action-bar__group--has-divider:before {\n background: rgba(122, 128, 128, 0.15);\n content: '';\n position: absolute;\n height: 80%;\n left: 0;\n top: 10%;\n width: 1px; }\n\n.actions {\n list-style: none; }\n\n.action {\n box-shadow: 1px 0 transparent, -1px 0 transparent;\n cursor: pointer;\n display: inline-block;\n height: 60px;\n position: relative;\n width: 60px;\n text-align: center;\n transition: background 0.25s, box-shadow 0.25s; }\n .action:hover {\n background: rgba(51, 62, 74, 0.05);\n box-shadow: 1px 0 rgba(51, 62, 74, 0.15), -1px 0 rgba(51, 62, 74, 0.15); }\n .action:hover .icon {\n fill: #258de5; }\n .action__label {\n display: block;\n position: absolute;\n top: 100%;\n visibility: hidden; }\n .action .icon {\n fill: #909799;\n height: 25px;\n left: 50%;\n position: absolute;\n top: 50%;\n transition: fill 0.25s;\n transform: translateX(-50%) translateY(-50%);\n width: 30px; }\n\n.application__content {\n background: #e9eef2; }\n\n.badge {\n background: #2b4456;\n border-radius: 100px;\n color: #132532;\n display: inline-block;\n font-size: 0.8em;\n font-weight: 800;\n line-height: 1;\n margin-left: 10px;\n padding: 1px 5px;\n transition: background 0.25s;\n vertical-align: baseline; }\n\n.menu {\n background: rgba(255, 255, 255, 0.98);\n border-radius: 3px;\n box-shadow: 0 0 0 1px rgba(26, 47, 61, 0.075), 0 1px 4px rgba(26, 47, 61, 0.15), 0 3px 15px rgba(26, 47, 61, 0.15);\n color: #95a2ad;\n text-align: left; }\n .menu__item {\n padding: 5px 15px; }\n .menu__item__label--primary.has-action {\n display: flex; }\n .menu__item__label--primary.has-action .menu__item__label {\n flex: 1 1 auto; }\n .menu__item__label--primary.has-action .menu__item__label__action {\n flex: 0 0 auto; }\n .menu__item__label--secondary {\n color: #cfd4d9;\n display: block;\n font-size: 0.85em; }\n .menu__item--separator {\n background: rgba(26, 47, 61, 0.075);\n height: 1px;\n margin: 5px 0;\n padding: 0; }\n .menu__item.is-selectable {\n cursor: pointer;\n display: block;\n font-size: 0.9em;\n transition: background 0.25s, color 0.25s; }\n .menu__item.is-selectable:hover {\n background: rgba(233, 238, 242, 0.4);\n color: #788997; }\n .menu__item.is-selectable.is-selected {\n color: #258de5; }\n .menu-enter {\n animation: fade-in 0.25s both; }\n .menu-leave {\n animation: fade-out 0.25s both; }\n\n.client-stats {\n height: 200px;\n position: relative; }\n .client-stats .loading-indicator {\n left: 50%;\n position: absolute;\n top: 50%;\n transform: translate(-50%, -50%); }\n .client-stats .transfer-data-enter {\n opacity: 0;\n transition: opacity 1s; }\n .client-stats .transfer-data-enter.transfer-data-enter-active {\n opacity: 1; }\n .client-stats .transfer-data-leave {\n opacity: 1;\n transition: opacity 1s; }\n .client-stats .transfer-data-leave.transfer-data-leave-active {\n opacity: 0; }\n\n.client-stat {\n align-items: center;\n display: flex;\n height: 100px;\n padding: 0 20px; }\n .client-stat__icon, .client-stat__data {\n position: relative;\n vertical-align: top;\n z-index: 1; }\n .client-stat__icon {\n flex: 0 0 23px; }\n .client-stat__icon .icon {\n display: inline-block;\n height: 25px;\n margin: 6px 0 0 -5px;\n width: auto; }\n .client-stat__data {\n flex: 1; }\n .client-stat__data--primary, .client-stat__data--secondary {\n display: block;\n font-weight: 100;\n line-height: 1.2; }\n .client-stat__data--primary {\n font-size: 1.75em;\n white-space: nowrap; }\n .client-stat__data--primary .unit {\n font-size: 0.65em;\n margin-bottom: 0;\n opacity: 0.5;\n position: relative;\n top: -0.1em; }\n .client-stat__data--secondary {\n font-size: 0.8em;\n font-style: italic;\n font-weight: 400; }\n\n.client-stat--limits {\n background: none;\n border: none;\n color: #53718a;\n display: block;\n outline: none;\n padding: 10px 15px;\n font-size: 0.85em;\n text-align: left;\n transition: color 0.25s;\n vertical-align: middle;\n width: 100%; }\n .client-stat--limits .icon {\n display: inline-block;\n fill: #53718a;\n margin: -2px 5px 0 0;\n transition: fill 0.25s;\n vertical-align: middle;\n width: 14.5px; }\n .client-stat--limits .icon .limits__bars--top {\n opacity: 0.4; }\n .client-stat--limits .icon .limits__bars--bottom {\n opacity: 0.6; }\n .client-stat--limits:hover {\n color: #258de5; }\n .client-stat--limits:hover .icon {\n fill: #258de5; }\n\n.client-stat {\n position: relative; }\n .client-stat .graph {\n height: 100%;\n left: 0;\n position: absolute;\n top: 0;\n width: 100%;\n z-index: 0; }\n .client-stat .graph svg {\n height: 100%;\n width: 100%; }\n .client-stat .graph__line {\n fill: none; }\n .client-stat .graph__line--limit {\n stroke-dasharray: 3px 4px;\n stroke-width: 1px; }\n .client-stat .graph__line--rate {\n stroke-width: 1.1px; }\n .client-stat--download .icon {\n fill: rgba(43, 174, 108, 0.75); }\n .client-stat--download .client-stat__data--primary {\n color: #2bae6c; }\n .client-stat--download .client-stat__data--secondary {\n color: rgba(43, 174, 108, 0.75); }\n .client-stat--download .graph .graph--download--gradient--top {\n stop-color: rgba(43, 174, 108, 0.2); }\n .client-stat--download .graph .graph--download--gradient--bottom {\n stop-color: rgba(43, 174, 108, 0); }\n .client-stat--download .graph__area {\n fill: url(\"#graph--download--gradient\"); }\n .client-stat--download .graph__line--limit {\n stroke: rgba(102, 217, 159, 0.15); }\n .client-stat--download .graph__line--rate {\n stroke: rgba(43, 174, 108, 0.4); }\n .client-stat--upload .icon {\n fill: rgba(35, 135, 217, 0.75); }\n .client-stat--upload .client-stat__data--primary {\n color: #2387d9; }\n .client-stat--upload .client-stat__data--secondary {\n color: rgba(35, 135, 217, 0.75); }\n .client-stat--upload .graph .graph--upload--gradient--top {\n stop-color: rgba(35, 135, 217, 0.2); }\n .client-stat--upload .graph .graph--upload--gradient--bottom {\n stop-color: rgba(35, 135, 217, 0); }\n .client-stat--upload .graph__area {\n fill: url(\"#graph--upload--gradient\"); }\n .client-stat--upload .graph__line--limit {\n stroke: rgba(121, 183, 233, 0.15); }\n .client-stat--upload .graph__line--rate {\n stroke: rgba(35, 135, 217, 0.4); }\n\n.context-menu {\n font-size: 0.9em;\n padding: 10px 0;\n position: fixed;\n z-index: 10; }\n\n.directory-tree .icon {\n display: inline-block;\n fill: rgba(82, 120, 147, 0.4);\n height: 14px;\n margin-right: 6px;\n width: 14px; }\n\n.directory-tree__node {\n color: #527893;\n line-height: 1.75;\n text-overflow: ellipsis;\n vertical-align: middle;\n white-space: nowrap; }\n .directory-tree__node--group {\n padding-left: 10px;\n position: relative; }\n .directory-tree__node--group:after {\n background: rgba(82, 120, 147, 0.1);\n content: '';\n height: 100%;\n left: 5px;\n position: absolute;\n top: -5px;\n width: 2px; }\n .directory-tree__node--directory {\n color: #527893;\n cursor: pointer;\n transition: color 0.125s; }\n .directory-tree__node--directory.is-expanded {\n color: #719bb7;\n font-weight: 500; }\n .directory-tree__node--directory.is-expanded .icon {\n fill: rgba(130, 170, 197, 0.5); }\n .directory-tree__node--directory .icon {\n fill: rgba(82, 120, 147, 0.4); }\n .directory-tree__node .file {\n align-items: center;\n display: flex;\n line-height: 1.4;\n margin-left: -9px;\n padding: 2px 0 2px 9px;\n transition: background 0.25s, box-shadow 0.25s, color 0.25s;\n width: 100%; }\n .directory-tree__node .file:hover {\n background: rgba(26, 45, 60, 0.8);\n box-shadow: 0 1px 0 #1f3647, 0 -1px 0 #1f3647;\n color: #79a7c7; }\n .directory-tree__node .file:hover .file__detail--size, .directory-tree__node .file:hover .file__detail--priority {\n color: #527893; }\n .directory-tree__node .file .icon {\n fill: #344b5b;\n margin-top: -3px;\n vertical-align: middle; }\n .directory-tree__node .file__detail {\n flex: 1 1 auto;\n overflow: hidden;\n padding-right: 6.25px;\n text-overflow: ellipsis; }\n .directory-tree__node .file__detail--size, .directory-tree__node .file__detail--priority {\n color: #2b4456;\n flex: 0 0 auto;\n font-size: 0.95em;\n text-align: right;\n transition: color 0.25s; }\n .directory-tree__node .file__detail--priority .icon {\n height: auto;\n margin-right: 0;\n width: 16px; }\n .directory-tree__node .file__detail:last-child {\n padding-right: 0; }\n .directory-tree__node--file-list {\n margin-bottom: 3px; }\n\n.directory-tree__parent-directory {\n margin-left: -1px;\n overflow: hidden;\n text-overflow: ellipsis; }\n .directory-tree__parent-directory .icon {\n fill: rgba(58, 92, 116, 0.5);\n margin-right: 8px;\n vertical-align: middle; }\n\n.directory-tree__tree .directory-tree__tree {\n padding-left: 6px; }\n\n.dropdown {\n display: inline-block;\n outline: none;\n position: relative;\n z-index: 2; }\n .dropdown__button, .dropdown__trigger {\n cursor: pointer; }\n .dropdown__button {\n display: block;\n padding: 12px 15px 7px 15px;\n text-align: left;\n width: auto;\n word-wrap: none; }\n .dropdown__content {\n left: 0;\n position: absolute;\n top: 0;\n z-index: 2; }\n .dropdown.is-expanded .dropdown__header .dropdown__value {\n color: #4e6a7c; }\n .dropdown__label {\n color: #abbac7;\n display: block;\n font-size: 0.65em;\n font-weight: 500;\n letter-spacing: 0.1em;\n line-height: 0.9em;\n text-transform: uppercase; }\n .dropdown__button .dropdown__label {\n cursor: pointer; }\n .dropdown__value {\n color: #8899a8;\n transition: color 0.25s; }\n .dropdown__value:after {\n border-top: 5px solid #8899a8;\n border-left: 4px solid transparent;\n border-right: 4px solid transparent;\n content: '';\n display: inline-block;\n margin-left: 10px;\n vertical-align: middle; }\n .dropdown__header {\n position: relative; }\n .dropdown__header:after {\n background: rgba(26, 47, 61, 0.05);\n bottom: 0;\n content: '';\n display: block;\n height: 1px;\n left: 5%;\n position: absolute;\n width: 90%; }\n .dropdown__items {\n display: flex;\n padding: 10px 0; }\n .dropdown__list {\n flex: 1; }\n .dropdown--align-right .dropdown {\n left: auto;\n right: 0; }\n\n.dropdown__content__container {\n padding: 25px 30px; }\n\n.dropzone {\n align-items: center;\n background: #e9eff5;\n border: 1px dashed #d6e2ea;\n border-radius: 4px;\n color: #53718a;\n display: flex;\n flex-direction: column;\n text-align: center;\n transition: border 0.25s, color 0.25s;\n width: 100%; }\n .dropzone:hover {\n border-color: #93b2c7; }\n .dropzone:hover .dropzone__icon .icon {\n fill: #96adc3; }\n .dropzone--is-dragging, .dropzone--is-dragging:hover {\n border-color: #258de5;\n color: #258de5; }\n .dropzone--is-dragging .dropzone__icon .icon, .dropzone--is-dragging:hover .dropzone__icon .icon {\n fill: #258de5; }\n .dropzone__icon .icon--files {\n fill: #c7d3df;\n height: 64px;\n transition: fill 0.25s;\n width: 64px; }\n .dropzone__icon .icon--files__file--right, .dropzone__icon .icon--files__file--left {\n fill-opacity: 0.5; }\n .dropzone__copy {\n cursor: pointer;\n flex: 1;\n font-size: 0.85em;\n padding: 25px;\n width: 100%; }\n .dropzone__browse-button {\n color: #258de5;\n text-decoration: underline; }\n .dropzone__selected-files {\n border-radius: 4px 4px 0 0;\n font-size: 0.8em;\n padding: 12.5px;\n width: 100%; }\n .dropzone__selected-files + .dropzone {\n border-radius: 0 0 4px 4px;\n border-top: none; }\n .dropzone__selected-files__file {\n text-align: left;\n white-space: nowrap; }\n .dropzone__selected-files__file .icon {\n display: inline-block;\n fill: #adbfce;\n height: 12px;\n margin-right: 4px;\n vertical-align: baseline;\n width: 12px; }\n .dropzone__selected-files__file .icon--close {\n height: 8px;\n margin-left: 4px;\n margin-right: 0;\n vertical-align: middle;\n width: 8px; }\n .dropzone__file {\n display: flex;\n width: 100%; }\n .dropzone__file__item {\n flex: 1 0 auto; }\n .dropzone__file__item--icon {\n flex: 0 0 auto; }\n .dropzone__file__item--file-name {\n flex: 1 1 auto;\n overflow: hidden;\n text-overflow: ellipsis; }\n .dropzone__file__item--remove-icon {\n cursor: pointer; }\n\n.floating-action__button {\n background: #fff;\n border: none;\n border-radius: 16px;\n box-shadow: 0 0 0 1px rgba(26, 47, 61, 0.1);\n cursor: pointer;\n height: 16px;\n outline: none;\n margin-right: 6px;\n padding: 0;\n position: relative;\n transition: background 0.25s, box-shadow 0.25s;\n width: 16px; }\n .floating-action__button:last-child {\n margin-right: 0; }\n .floating-action__button:hover {\n background: #e9eef2;\n box-shadow: 0 0 0 1px rgba(26, 47, 61, 0.2); }\n .floating-action__button:hover .icon {\n fill: rgba(26, 47, 61, 0.5); }\n .floating-action__button .icon {\n height: 8px;\n fill: rgba(26, 47, 61, 0.3);\n left: 50%;\n position: absolute;\n top: 50%;\n transition: fill 0.25s;\n transform: translate(-50%, -50%);\n width: 8px; }\n\n@keyframes loading-indicator-dots-pulse {\n 0% {\n fill-opacity: 0.2; }\n 100% {\n fill-opacity: 0.8; } }\n\n.icon--eta .icon__ring {\n fill-opacity: 1; }\n\n.icon--loading-indicator .loading-indicator--dots__dot {\n animation: loading-indicator-dots-pulse 0.6s linear alternate infinite;\n fill: #fff; }\n .icon--loading-indicator .loading-indicator--dots__dot--center {\n animation-delay: 0.2s; }\n .icon--loading-indicator .loading-indicator--dots__dot--right {\n animation-delay: 0.4s; }\n\n@keyframes loading-indicator-swipe {\n 0% {\n transform: translateX(-100%); }\n 50% {\n transform: translateX(400%); }\n 100% {\n transform: translateX(400%); } }\n\n.loading-indicator {\n height: 18px;\n position: relative;\n width: 32px; }\n .loading-indicator.is-inverse .loading-indicator__bar {\n background: rgba(56, 88, 109, 0.7); }\n .loading-indicator.is-inverse .loading-indicator__bar:after {\n background: rgba(37, 141, 229, 0.75); }\n .loading-indicator__bar {\n background: #e9eef2;\n border-radius: 10px;\n height: 3px;\n left: 0;\n overflow: hidden;\n position: absolute;\n transform: translateY(0);\n width: 100%; }\n .loading-indicator__bar:after {\n animation: loading-indicator-swipe 3s ease-in-out infinite;\n background: rgba(37, 141, 229, 0.75);\n border-radius: 10px;\n content: '';\n display: block;\n height: 100%;\n transform: translateX(-100%);\n width: 25%; }\n .loading-indicator__bar--1 {\n top: 0; }\n .loading-indicator__bar--2 {\n top: 50%;\n transform: translateY(-50%); }\n .loading-indicator__bar--2:after {\n animation-delay: 0.5s; }\n .loading-indicator__bar--3 {\n bottom: 0; }\n .loading-indicator__bar--3:after {\n animation-delay: 1s; }\n\n.modal {\n background: rgba(26, 47, 61, 0.5);\n height: 100%;\n left: 0;\n position: fixed;\n top: 0;\n transition: opacity 0.5s;\n width: 100%;\n z-index: 100; }\n .modal--align-center {\n text-align: center; }\n .modal__tabs {\n color: #abbac7;\n font-size: 0.65em;\n font-weight: 400;\n margin: 10px -5px 0 -5px; }\n .modal__tabs .modal__tab {\n cursor: pointer;\n display: inline-block;\n margin-right: 10px;\n padding: 5px 5px 10px 5px;\n position: relative; }\n .modal__tabs .modal__tab:after {\n bottom: 0;\n content: '';\n height: 1px;\n left: 0;\n position: absolute;\n right: 0;\n transition: background 0.25s; }\n .modal__tabs .modal__tab:last-child {\n margin-right: 0; }\n .modal__tabs .modal__tab.is-active {\n color: #258de5;\n font-weight: 800; }\n .modal__tabs .modal__tab.is-active:after {\n background: #258de5; }\n .modal__header {\n background: #fff;\n border-radius: 3px 3px 0 0;\n box-shadow: inset 0 -1px 0 #dde7ed;\n color: #5c6e80;\n flex: 0 0 auto;\n font-size: 1.25em;\n font-weight: 300;\n line-height: 1;\n padding: 20px 25px; }\n .modal__header.has-tabs {\n padding-bottom: 0; }\n .modal__content {\n flex: 1 1 auto;\n overflow: auto;\n padding: 20px 25px 20px 25px; }\n .modal__content__wrapper {\n background: #f7fafc;\n border-radius: 3px;\n box-shadow: 0 0 0 1px rgba(26, 47, 61, 0.1), 0 0 35px rgba(26, 47, 61, 0.3);\n display: flex;\n flex-direction: column;\n left: 50%;\n max-height: 80%;\n max-width: 80%;\n position: absolute;\n top: 10%;\n transform: translate(-50%, 0);\n width: 500px; }\n .modal__body {\n color: #94a3af;\n font-size: 0.9em; }\n .modal__actions {\n margin-top: 25px; }\n .modal__button-group {\n text-align: right; }\n .modal--align-center .modal__button-group {\n text-align: center; }\n .modal__button-group .button + .button {\n margin-left: 20px; }\n .modal__animation-enter {\n opacity: 0; }\n .modal__animation-enter-active {\n opacity: 1; }\n .modal__animation-leave {\n opacity: 1;\n pointer-events: none; }\n .modal__animation-leave-active {\n opacity: 0; }\n\n.priority-meter {\n height: 8px;\n position: relative; }\n .priority-meter__wrapper {\n cursor: pointer;\n display: inline-block;\n padding: 5px;\n user-select: none;\n vertical-align: middle; }\n .priority-meter:before, .priority-meter:after {\n content: '';\n display: block;\n position: absolute; }\n .priority-meter:before {\n height: 2px;\n left: 0;\n top: 3px;\n transition: background 0.25s;\n width: 100%; }\n .priority-meter:after {\n height: 100%;\n top: 0;\n transition: background 0.25s, left 0.25s;\n width: 2px; }\n .priority-meter--max-2 {\n width: 18px; }\n .priority-meter--max-2.priority-meter--level-0:before {\n background: rgba(67, 96, 118, 0.2); }\n .priority-meter--max-2.priority-meter--level-0:after {\n left: 0;\n background: #436076; }\n .priority-meter--max-2.priority-meter--level-1:before {\n background: rgba(37, 141, 229, 0.2); }\n .priority-meter--max-2.priority-meter--level-1:after {\n left: 8px;\n background: #258de5; }\n .priority-meter--max-2.priority-meter--level-2:before {\n background: rgba(57, 206, 131, 0.2); }\n .priority-meter--max-2.priority-meter--level-2:after {\n background: #39ce83;\n left: 16px; }\n .priority-meter--max-3 {\n width: 26px; }\n .priority-meter--max-3.priority-meter--level-0:before {\n background: rgba(67, 96, 118, 0.2); }\n .priority-meter--max-3.priority-meter--level-0:after {\n left: 0;\n background: #436076; }\n .priority-meter--max-3.priority-meter--level-1:before {\n background: rgba(37, 141, 229, 0.2); }\n .priority-meter--max-3.priority-meter--level-1:after {\n left: 8px;\n background: #258de5; }\n .priority-meter--max-3.priority-meter--level-2:before {\n background: rgba(57, 206, 131, 0.2); }\n .priority-meter--max-3.priority-meter--level-2:after {\n background: #39ce83;\n left: 16px; }\n .priority-meter--max-3.priority-meter--level-3:before {\n background: rgba(57, 206, 131, 0.2); }\n .priority-meter--max-3.priority-meter--level-3:after {\n background: #39ce83;\n left: 24px; }\n\n.progress-bar {\n height: 3px;\n position: relative;\n transition: opacity 0.25s;\n z-index: 1; }\n .is-selected.is-stopped .progress-bar {\n opacity: 0.5; }\n .progress-bar:after {\n background: #e3e5e5;\n content: '';\n height: 1px;\n left: 0;\n position: absolute;\n z-index: 0;\n top: 1px;\n transition: background 0.25s;\n width: 100%; }\n .is-selected .progress-bar:after {\n background: rgba(255, 255, 255, 0.5); }\n .is-selected.is-stopped .progress-bar:after {\n background: rgba(255, 255, 255, 0.5); }\n .progress-bar__fill {\n background: #39ce83;\n bottom: 0;\n height: 100%;\n left: 0;\n position: absolute;\n top: 0;\n transition: background 0.25s, width 0.25s;\n z-index: 1; }\n .is-seeding .progress-bar__fill {\n background: #258de5; }\n .is-completed .progress-bar__fill,\n .is-stopped .progress-bar__fill {\n background: #e3e5e5; }\n .is-selected .progress-bar__fill {\n background: #fff; }\n .has-error .progress-bar__fill {\n background: #e95779; }\n\n.scrollbars__thumb {\n background: rgba(26, 47, 61, 0.3);\n border-radius: 10px;\n cursor: pointer;\n opacity: 0;\n transition: background 0.25s, opacity 0.5s; }\n .scrollbars__thumb:active {\n opacity: 1; }\n .scrollbars__thumb:hover, .scrollbars__thumb:active {\n background: rgba(26, 47, 61, 0.6); }\n .is-inverted .scrollbars__thumb {\n background: rgba(233, 238, 242, 0.3); }\n .is-inverted .scrollbars__thumb:hover, .is-inverted .scrollbars__thumb:active {\n background: rgba(233, 238, 242, 0.6); }\n\n.scrollbars:hover .scrollbars__thumb {\n opacity: 1; }\n\n.search {\n position: relative; }\n .search .icon {\n fill: #53718a;\n height: 22px;\n left: 17px;\n opacity: 0.5;\n position: absolute;\n top: 50%;\n transition: fill 0.25s, opacity 0.25s;\n transform: translateY(-50%);\n width: 22px; }\n .search .icon--close {\n left: auto;\n right: 17px; }\n .search .button {\n height: 100%;\n position: absolute;\n right: 0;\n width: 30px; }\n .search .button .icon {\n position: absolute;\n height: 10px;\n left: 50%;\n top: 50%;\n transform: translate(-50%, -50%);\n width: 10px; }\n .search .textbox, .search .checkbox__decoy, .search .dropzone__selected-files {\n appearance: none;\n -webkit-appearance: none;\n -moz-appearance: none;\n border: 1px solid rgba(9, 24, 36, 0.4);\n border-left: none;\n border-right: none;\n border-radius: 0;\n background: rgba(9, 24, 36, 0.3);\n box-shadow: none;\n color: #53718a;\n display: block;\n font-size: 1em;\n outline: none;\n padding: 12px 0 12px 45px;\n transition: background 0.25s, border 0.25s, color 0.25s;\n width: 100%; }\n .search .textbox::placeholder, .search .checkbox__decoy::placeholder, .search .dropzone__selected-files::placeholder {\n color: rgba(83, 113, 138, 0.4);\n font-style: italic;\n transition: color 0.25s; }\n .search.is-in-use .icon {\n fill: #258de5;\n opacity: 1; }\n .search.is-in-use .textbox, .search.is-in-use .checkbox__decoy, .search.is-in-use .dropzone__selected-files {\n background: rgba(37, 141, 229, 0.25);\n border-bottom: 1px solid rgba(37, 141, 229, 0.3);\n border-top: 1px solid rgba(37, 141, 229, 0.3);\n color: #258de5;\n padding-right: 45px; }\n .search.is-in-use .textbox::placeholder, .search.is-in-use .checkbox__decoy::placeholder, .search.is-in-use .dropzone__selected-files::placeholder {\n color: rgba(37, 141, 229, 0.4); }\n\n.application__sidebar {\n box-shadow: 1px 0 rgba(6, 9, 11, 0.3);\n color: #53718a;\n flex: 1;\n min-width: 200px;\n max-width: 240px;\n overflow: auto;\n position: relative;\n z-index: 2; }\n\n.sidebar__item--speed-limit {\n padding-left: 5px;\n padding-top: 5px; }\n .sidebar__item--speed-limit .dropdown__content {\n min-width: 180px; }\n .sidebar__item--speed-limit .dropdown__items {\n font-size: 0.9em; }\n\n.sidebar-filter {\n font-size: 0.85em;\n padding: 30px 0; }\n .sidebar-filter + .sidebar-filter {\n padding-top: 0; }\n .sidebar-filter__item {\n color: #53718a;\n cursor: pointer;\n font-weight: 400;\n padding: 3px 20px;\n transition: color 0.25s; }\n .sidebar-filter__item:hover {\n color: #7a97af; }\n .sidebar-filter__item:hover .icon {\n fill: #7a97af; }\n .sidebar-filter__item.is-active {\n color: #258de5;\n font-weight: 700; }\n .sidebar-filter__item.is-active .badge {\n background: #3b586d; }\n .sidebar-filter__item.is-active .icon {\n fill: #258de5; }\n .sidebar-filter__item .icon {\n display: inline-block;\n fill: #53718a;\n height: 14px;\n margin-right: 7px;\n transition: fill 0.25s;\n vertical-align: middle;\n width: auto; }\n .sidebar-filter .badge {\n background: #2b4456;\n color: #132532; }\n\n.sidebar-filter__item--heading {\n cursor: default;\n font-size: 0.8em;\n font-weight: 500;\n letter-spacing: 0.1em;\n text-transform: uppercase; }\n .sidebar-filter__item--heading, .sidebar-filter__item--heading:hover {\n color: rgba(83, 113, 138, 0.5); }\n\n.textbox-repeater .floating-action__group {\n margin-top: -8px;\n position: absolute;\n right: -8px;\n top: 50%; }\n\n.textbox-repeater .floating-action__button {\n position: relative; }\n\n.textbox-repeater .textbox__wrapper {\n position: relative; }\n\n.textbox-repeater .form__row + .form__row {\n margin-top: 12.5px; }\n\n.application__panel--torrent-details {\n background: #0e2231; }\n\n.torrent-details {\n background: #0e2231;\n bottom: 0;\n box-shadow: -1px 0 0 rgba(26, 47, 61, 0.1);\n display: flex;\n flex-direction: column;\n font-size: 0.8em;\n left: 0;\n min-width: 400px;\n overflow: auto;\n position: absolute;\n right: 0;\n top: 0;\n transition: opacity 1s;\n z-index: 2; }\n .torrent-details__wrapper {\n flex: 1;\n height: 100%; }\n .torrent-details__scroll-container {\n height: auto !important; }\n .torrent-details__header {\n box-shadow: 0 1px 0 rgba(4, 13, 19, 0.3);\n flex: 0 0 auto;\n padding: 12.5px 25px 16.66667px 25px; }\n .torrent-details__header.has-error .progress-bar__fill {\n background: #be2558; }\n .torrent-details__header.is-stopped .progress-bar__fill {\n background: #7b9cb4; }\n .torrent-details__header .progress-bar:after {\n background: #2a3e4c; }\n .torrent-details__action {\n cursor: pointer;\n transition: color 0.25s; }\n .torrent-details__action .icon {\n transition: fill 0.25s; }\n .torrent-details__action.is-active {\n color: #258de5; }\n .torrent-details__action.is-active .icon {\n fill: #258de5; }\n .torrent-details__table {\n color: #527893;\n width: 100%; }\n .torrent-details__table__heading--primary {\n color: #3a5c74;\n font-size: 1.125em; }\n .torrent-details__table__heading--secondary {\n color: rgba(82, 120, 147, 0.5);\n font-size: 0.7em;\n letter-spacing: 0.1em;\n text-transform: uppercase; }\n .torrent-details__content {\n flex: 1;\n overflow: auto;\n padding: 16.66667px 25px; }\n .torrent-details__content__wrapper {\n background: rgba(16, 26, 34, 0.4);\n display: flex;\n flex: 1;\n overflow: hidden; }\n .torrent-details__navigation {\n background: transparent;\n box-shadow: 1px 0 0 rgba(4, 13, 19, 0.4);\n min-width: 125px;\n padding: 12.5px 0; }\n .torrent-details__navigation .navigation__item {\n cursor: pointer;\n padding: 6.25px 25px;\n text-align: right;\n transition: background 0.25s, box-shadow 0.25s, color 0.25s; }\n .torrent-details__navigation .navigation__item.is-active {\n background: rgba(52, 156, 244, 0.07);\n box-shadow: 1px 0 0 #349cf4;\n color: #349cf4; }\n .torrent-details__section__heading, .torrent-details__section__null-data {\n color: #3a5c74;\n font-size: 1.15em;\n margin-bottom: 2.5px; }\n .torrent-details__section__heading .badge {\n background: rgba(82, 120, 147, 0.5);\n color: #0c1b26; }\n\n.torrent-details__heading {\n color: #c7dbeb;\n font-size: 1.7em;\n font-weight: 300; }\n\n.torrent-details__sub-heading {\n display: flex;\n margin-bottom: 6.25px; }\n .torrent-details__sub-heading__secondary {\n color: #7b9cb4;\n display: flex;\n flex: 1 0 auto; }\n .torrent-details__sub-heading__secondary:first-child {\n justify-content: flex-start; }\n .torrent-details__sub-heading__secondary:last-child {\n justify-content: flex-end; }\n .torrent-details__sub-heading__tertiary {\n flex: 0 0 auto;\n margin-right: 1em; }\n .torrent-details__sub-heading__tertiary .icon {\n fill: rgba(77, 111, 135, 0.5);\n height: 12px;\n margin-right: 3px;\n margin-top: -3px;\n vertical-align: middle;\n width: 12px; }\n .torrent-details__sub-heading__tertiary .priority-meter {\n display: inline-block;\n margin-top: -1px;\n margin-right: 6px;\n vertical-align: middle; }\n .torrent-details__sub-heading__tertiary .priority-meter__wrapper {\n margin-top: -3px;\n padding: 0; }\n .torrent-details__sub-heading__tertiary--download {\n color: #258de5; }\n .torrent-details__sub-heading__tertiary--download .icon {\n fill: #258de5; }\n .torrent-details__sub-heading__tertiary--upload {\n color: #39ce83; }\n .torrent-details__sub-heading__tertiary--upload .icon {\n fill: #39ce83; }\n .torrent-details__sub-heading__tertiary:last-child {\n margin-right: 0; }\n\n.torrent-details-enter {\n opacity: 0; }\n\n.torrent-details-enter-active {\n opacity: 1; }\n\n.torrent-details-leave {\n opacity: 0;\n transition: opacity 0.5s; }\n\n.torrents {\n display: flex;\n flex: 1 1 100px;\n position: relative; }\n .torrents:after {\n background: #fff;\n bottom: 0;\n box-shadow: -1px 0 0 0 rgba(26, 47, 61, 0.15);\n content: '';\n height: auto;\n left: 10px;\n position: absolute;\n right: 0;\n top: 0; }\n .torrents .loading-indicator {\n left: 50%;\n position: absolute;\n top: 50%;\n transform: translate(-50%, -50%); }\n\n.torrent__list {\n margin: 0 0 0 10px;\n padding: 10px 0;\n position: relative; }\n .torrent__list__wrapper {\n list-style: none;\n max-width: 100%;\n opacity: 1;\n overflow: auto;\n transition: opacity 1s;\n user-select: none;\n z-index: 1; }\n .torrent__list--loading-enter {\n opacity: 0;\n transition: opacity 1s; }\n .torrent__list--loading-enter-active {\n opacity: 1; }\n .torrent__list--loading-leave {\n opacity: 1;\n transition: opacity 1s; }\n .torrent__list--loading-leave-active {\n opacity: 0; }\n .torrent__list--empty {\n opacity: 0; }\n\n.torrent {\n cursor: default;\n padding: 10px 20px;\n position: relative;\n transition: background 0.25s; }\n .torrent:hover {\n background: #f6f8fa; }\n .torrent:hover .torrent__more-info {\n opacity: 1; }\n .torrent.is-selected {\n background: #258de5; }\n .torrent__more-info {\n height: 20px;\n margin-top: -10px;\n position: absolute;\n left: -7px;\n opacity: 0;\n top: 50%;\n transition: background 0.25s, box-shadow 0.25s, opacity 0.25s;\n width: 20px; }\n\n.torrent__details {\n align-items: center;\n display: flex;\n flex: 1;\n flex-flow: row wrap;\n list-style: none; }\n .torrent__details--primary, .torrent__details--secondary, .torrent__details--tertiary {\n transition: color 0.25s; }\n .torrent__details--primary {\n color: #333332;\n flex: 4;\n line-height: 1.3;\n white-space: nowrap; }\n .is-stopped .torrent__details--primary {\n color: rgba(51, 51, 50, 0.5); }\n .is-selected .torrent__details--primary {\n color: #fff; }\n .is-selected.is-stopped .torrent__details--primary {\n color: rgba(255, 255, 255, 0.6); }\n .torrent__details--secondary {\n align-items: flex-end;\n color: #807f7e;\n flex: 1;\n font-size: 0.75em;\n min-width: 200px; }\n .torrent__details--secondary li {\n flex: 1 1 auto;\n min-width: 15%; }\n .torrent__details--secondary li.torrent__details--ratio {\n max-width: 30px; }\n .is-stopped .torrent__details--secondary {\n color: rgba(128, 127, 126, 0.5); }\n .is-selected .torrent__details--secondary {\n color: #fff; }\n .is-selected.is-stopped .torrent__details--secondary {\n color: rgba(255, 255, 255, 0.6); }\n .torrent__details--tertiary {\n color: #807f7e;\n display: block;\n font-size: 0.75em;\n margin: 0 0 3px 0; }\n .torrent__details--tertiary li {\n display: inline-block;\n margin-right: 1em; }\n .torrent__details--tertiary li:last-child {\n margin-right: 0; }\n .is-stopped .torrent__details--tertiary {\n color: rgba(128, 127, 126, 0.5); }\n .is-selected .torrent__details--tertiary {\n color: rgba(255, 255, 255, 0.9); }\n .is-selected.is-stopped .torrent__details--tertiary {\n color: rgba(255, 255, 255, 0.5); }\n .torrent__details__label {\n margin-right: 0.5em;\n opacity: 0.5; }\n\n.torrent__details--eta {\n opacity: 0;\n transition: opacity 1s, visibility 1s;\n visibility: hidden; }\n .torrent__details--eta .torrent__details--segment {\n margin-right: 0.25em; }\n .torrent__details--eta .torrent__details--segment:last-child {\n margin-right: 0; }\n .is-actively-downloading .torrent__details--eta {\n opacity: 1;\n visibility: visible; }\n\n.view--torrent-list {\n background: #e9eef2;\n box-shadow: -1px 0 rgba(26, 47, 61, 0.15);\n display: flex;\n flex-direction: column;\n flex: 1;\n flex: 0 1 100%; }\n\n.transfer-data--download {\n color: #39ce83; }\n .transfer-data--download .icon {\n fill: #39ce83; }\n\n.transfer-data--upload {\n color: #258de5; }\n .transfer-data--upload .icon {\n fill: #258de5; }\n","/*!\n * inuitcss, by @csswizardry\n *\n * github.com/inuitcss | inuitcss.com\n */\n///*------------------------------------*\\\n// #DEFAULTS\n//\\*------------------------------------*/\n\n// These variables are inuitcss’ defaults; they should not be modified or\n// adjusted directly; you should predefine the variables in your own project.\n\n\n\n\n\n// High-level base settings.\n$inuit-base-font-size: 16px !default;\n$inuit-base-line-height: 24px !default;\n$inuit-base-text-color: #333 !default;\n$inuit-base-background-color: #fff !default;\n\n\n\n\n\n// Namespace.\n//\n// Would you like inuitcss’ classes to be prepended with a namespace? If so,\n// define it here.\n$inuit-namespace: null !default;\n\n\n\n\n\n// These variables are framework variables, sourced from variables defined\n// above. Feel free to use these variables throughout your project, but do not\n// modify or reassign them.\n$inuit-base-spacing-unit: $inuit-base-line-height;\n$inuit-base-spacing-unit--tiny: round($inuit-base-spacing-unit / 4);\n$inuit-base-spacing-unit--small: round($inuit-base-spacing-unit / 2);\n$inuit-base-spacing-unit--large: round($inuit-base-spacing-unit * 2);\n$inuit-base-spacing-unit--huge: round($inuit-base-spacing-unit * 4);\n","/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\n\n/**\n * 1. Set default font family to sans-serif.\n * 2. Prevent iOS and IE text size adjust after device orientation change,\n * without disabling user zoom.\n */\n\nhtml {\n font-family: sans-serif; /* 1 */\n -ms-text-size-adjust: 100%; /* 2 */\n -webkit-text-size-adjust: 100%; /* 2 */\n}\n\n/**\n * Remove default margin.\n */\n\nbody {\n margin: 0;\n}\n\n/* HTML5 display definitions\n ========================================================================== */\n\n/**\n * Correct `block` display not defined for any HTML5 element in IE 8/9.\n * Correct `block` display not defined for `details` or `summary` in IE 10/11\n * and Firefox.\n * Correct `block` display not defined for `main` in IE 11.\n */\n\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n display: block;\n}\n\n/**\n * 1. Correct `inline-block` display not defined in IE 8/9.\n * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.\n */\n\naudio,\ncanvas,\nprogress,\nvideo {\n display: inline-block; /* 1 */\n vertical-align: baseline; /* 2 */\n}\n\n/**\n * Prevent modern browsers from displaying `audio` without controls.\n * Remove excess height in iOS 5 devices.\n */\n\naudio:not([controls]) {\n display: none;\n height: 0;\n}\n\n/**\n * Address `[hidden]` styling not present in IE 8/9/10.\n * Hide the `template` element in IE 8/9/10/11, Safari, and Firefox < 22.\n */\n\n[hidden],\ntemplate {\n display: none;\n}\n\n/* Links\n ========================================================================== */\n\n/**\n * Remove the gray background color from active links in IE 10.\n */\n\na {\n background-color: transparent;\n}\n\n/**\n * Improve readability of focused elements when they are also in an\n * active/hover state.\n */\n\na:active,\na:hover {\n outline: 0;\n}\n\n/* Text-level semantics\n ========================================================================== */\n\n/**\n * Address styling not present in IE 8/9/10/11, Safari, and Chrome.\n */\n\nabbr[title] {\n border-bottom: 1px dotted;\n}\n\n/**\n * Address style set to `bolder` in Firefox 4+, Safari, and Chrome.\n */\n\nb,\nstrong {\n font-weight: bold;\n}\n\n/**\n * Address styling not present in Safari and Chrome.\n */\n\ndfn {\n font-style: italic;\n}\n\n/**\n * Address variable `h1` font-size and margin within `section` and `article`\n * contexts in Firefox 4+, Safari, and Chrome.\n */\n\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\n\n/**\n * Address styling not present in IE 8/9.\n */\n\nmark {\n background: #ff0;\n color: #000;\n}\n\n/**\n * Address inconsistent and variable font size in all browsers.\n */\n\nsmall {\n font-size: 80%;\n}\n\n/**\n * Prevent `sub` and `sup` affecting `line-height` in all browsers.\n */\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsup {\n top: -0.5em;\n}\n\nsub {\n bottom: -0.25em;\n}\n\n/* Embedded content\n ========================================================================== */\n\n/**\n * Remove border when inside `a` element in IE 8/9/10.\n */\n\nimg {\n border: 0;\n}\n\n/**\n * Correct overflow not hidden in IE 9/10/11.\n */\n\nsvg:not(:root) {\n overflow: hidden;\n}\n\n/* Grouping content\n ========================================================================== */\n\n/**\n * Address margin not present in IE 8/9 and Safari.\n */\n\nfigure {\n margin: 1em 40px;\n}\n\n/**\n * Address differences between Firefox and other browsers.\n */\n\nhr {\n box-sizing: content-box;\n height: 0;\n}\n\n/**\n * Contain overflow in all browsers.\n */\n\npre {\n overflow: auto;\n}\n\n/**\n * Address odd `em`-unit font size rendering in all browsers.\n */\n\ncode,\nkbd,\npre,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\n\n/* Forms\n ========================================================================== */\n\n/**\n * Known limitation: by default, Chrome and Safari on OS X allow very limited\n * styling of `select`, unless a `border` property is set.\n */\n\n/**\n * 1. Correct color not being inherited.\n * Known issue: affects color of disabled elements.\n * 2. Correct font properties not being inherited.\n * 3. Address margins set differently in Firefox 4+, Safari, and Chrome.\n */\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n color: inherit; /* 1 */\n font: inherit; /* 2 */\n margin: 0; /* 3 */\n}\n\n/**\n * Address `overflow` set to `hidden` in IE 8/9/10/11.\n */\n\nbutton {\n overflow: visible;\n}\n\n/**\n * Address inconsistent `text-transform` inheritance for `button` and `select`.\n * All other form control elements do not inherit `text-transform` values.\n * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.\n * Correct `select` style inheritance in Firefox.\n */\n\nbutton,\nselect {\n text-transform: none;\n}\n\n/**\n * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`\n * and `video` controls.\n * 2. Correct inability to style clickable `input` types in iOS.\n * 3. Improve usability and consistency of cursor style between image-type\n * `input` and others.\n */\n\nbutton,\nhtml input[type=\"button\"], /* 1 */\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n -webkit-appearance: button; /* 2 */\n cursor: pointer; /* 3 */\n}\n\n/**\n * Re-set default cursor for disabled elements.\n */\n\nbutton[disabled],\nhtml input[disabled] {\n cursor: default;\n}\n\n/**\n * Remove inner padding and border in Firefox 4+.\n */\n\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n border: 0;\n padding: 0;\n}\n\n/**\n * Address Firefox 4+ setting `line-height` on `input` using `!important` in\n * the UA stylesheet.\n */\n\ninput {\n line-height: normal;\n}\n\n/**\n * It's recommended that you don't attempt to style these elements.\n * Firefox's implementation doesn't respect box-sizing, padding, or width.\n *\n * 1. Address box sizing set to `content-box` in IE 8/9/10.\n * 2. Remove excess padding in IE 8/9/10.\n */\n\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n box-sizing: border-box; /* 1 */\n padding: 0; /* 2 */\n}\n\n/**\n * Fix the cursor style for Chrome's increment/decrement buttons. For certain\n * `font-size` values of the `input`, it causes the cursor style of the\n * decrement button to change from `default` to `text`.\n */\n\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n/**\n * 1. Address `appearance` set to `searchfield` in Safari and Chrome.\n * 2. Address `box-sizing` set to `border-box` in Safari and Chrome.\n */\n\ninput[type=\"search\"] {\n -webkit-appearance: textfield; /* 1 */\n box-sizing: content-box; /* 2 */\n}\n\n/**\n * Remove inner padding and search cancel button in Safari and Chrome on OS X.\n * Safari (but not Chrome) clips the cancel button when the search input has\n * padding (and `textfield` appearance).\n */\n\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n/**\n * Define consistent border, margin, and padding.\n */\n\nfieldset {\n border: 1px solid #c0c0c0;\n margin: 0 2px;\n padding: 0.35em 0.625em 0.75em;\n}\n\n/**\n * 1. Correct `color` not being inherited in IE 8/9/10/11.\n * 2. Remove padding so people aren't caught out if they zero out fieldsets.\n */\n\nlegend {\n border: 0; /* 1 */\n padding: 0; /* 2 */\n}\n\n/**\n * Remove default vertical scrollbar in IE 8/9/10/11.\n */\n\ntextarea {\n overflow: auto;\n}\n\n/**\n * Don't inherit the `font-weight` (applied by a rule above).\n * NOTE: the default cannot safely be changed in Chrome and Safari on OS X.\n */\n\noptgroup {\n font-weight: bold;\n}\n\n/* Tables\n ========================================================================== */\n\n/**\n * Remove most spacing between table cells.\n */\n\ntable {\n border-collapse: collapse;\n border-spacing: 0;\n}\n\ntd,\nth {\n padding: 0;\n}\n","@import 'colors';\n@import url(http://fonts.googleapis.com/css?family=Roboto:400italic,700italic,300,700,300italic,400);\n\n$font: 'Roboto', sans-srif;\n\n$spacing-unit: 25px;\n$torrent-details--width: 85%;\n","@import url('http://fonts.googleapis.com/css?family=Roboto:500,400italic,300,700,400');\n\nbody {\n color: $foreground;\n font-family: $font;\n}\n\n.unit {\n display: inline-block;\n font-size: 0.8em;\n font-style: normal;\n margin-bottom: 0.1em;\n opacity: 0.8;\n}\n\n.text-overflow {\n overflow: hidden;\n position: relative;\n text-overflow: ellipsis;\n}\n","/*------------------------------------*\\\n #RESET\n\\*------------------------------------*/\n\n/**\n * As well as using normalize.css, it is often advantageous to remove all\n * margins from certain elements.\n */\nbody,\nh1, h2, h3, h4, h5, h6,\np, blockquote, pre,\ndl, dd, ol, ul,\nform, fieldset, legend,\nfigure,\ntable, th, td, caption,\nhr {\n margin: 0;\n padding: 0;\n}\n\n\n\n\n\n/**\n * Give a help cursor to elements that give extra info on `:hover`.\n */\nabbr[title],\ndfn[title] {\n cursor: help;\n}\n\n\n\n\n\n/**\n * Remove underlines from potentially troublesome elements.\n */\nu,\nins {\n text-decoration: none;\n}\n\n\n\n\n\n/**\n * Apply faux underlines to inserted text via `border-bottom`.\n */\nins {\n border-bottom: 1px solid;\n}\n","/*------------------------------------*\\\n #BOX-SIZING\n\\*------------------------------------*/\n\n/**\n * Set the global `box-sizing` state to `border-box`.\n *\n * css-tricks.com/inheriting-box-sizing-probably-slightly-better-best-practice\n * paulirish.com/2012/box-sizing-border-box-ftw\n */\nhtml {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\n\n* {\n\n &,\n &:before,\n &:after {\n -webkit-box-sizing: inherit;\n -moz-box-sizing: inherit;\n box-sizing: inherit;\n }\n\n}\n\n\n\n\n\n// If we have included this file, set a variable to tell the rest of the\n// framework that global `box-sizing: border-box` has been set.\n$inuit-global-border-box: true;\n","/*------------------------------------*\\\n #PAGE\n\\*------------------------------------*/\n\n/**\n * High-, page-level styling.\n *\n * 1. Set the default `font-size` and `line-height` for the entire project,\n * sourced from our default variables. The `font-size` is calculated to exist\n * in ems, the `line-height` is calculated to exist unitlessly.\n * 2. Force scrollbars to always be visible to prevent awkward ‘jumps’ when\n * navigating between pages that do/do not have enough content to produce\n * scrollbars naturally.\n * 3. Ensure the page always fills at least the entire height of the viewport.\n * 4. Prevent certain mobile browsers from automatically zooming fonts.\n * 5. Fonts on OSX will look more consistent with other systems that do not\n * render text using sub-pixel anti-aliasing.\n */\nhtml {\n font-size: ($inuit-base-font-size / 16px) * 1em; /* [1] */\n line-height: $inuit-base-line-height / $inuit-base-font-size; /* [1] */\n background-color: $inuit-base-background-color;\n color: $inuit-base-text-color;\n overflow-y: scroll; /* [2] */\n min-height: 100%; /* [3] */\n -webkit-text-size-adjust: 100%; /* [4] */\n -ms-text-size-adjust: 100%; /* [4] */\n -moz-osx-font-smoothing: grayscale; /* [5] */\n -webkit-font-smoothing: antialiased; /* [5] */\n}\n","th {\n font-weight: inherit;\n text-align: left;\n}\n","@keyframes fade-in {\n\n 0% {\n opacity: 0;\n }\n\n 100% {\n opacity: 1;\n }\n\n}\n\n@keyframes fade-out {\n\n 0% {\n opacity: 1;\n }\n\n 100% {\n opacity: 0;\n }\n\n}\n","$form--label--foreground: #abbac7;\n\n$textbox--background: #e9eff5;\n$textbox--foreground: #53718a;\n$textbox--placeholder: #abbac7;\n$textbox--border: #d6e2ea;\n$textbox--fulfilled--background: #fdfefe;\n$textbox--active--background: #fdfefe;\n$textbox--active--border: desaturate(darken($textbox--border, 5%), 5%);\n$textbox--active--foreground: $blue;\n$textbox--active--placeholder: $textbox--placeholder;\n\n$textbox-repeater--button--background: #fff;\n$textbox-repeater--button--background--hover: $main-content--background;\n$textbox-repeater--button--border: rgba($background, 0.1);\n$textbox-repeater--button--border--hover: rgba($background, 0.2);\n$textbox-repeater--button--foreground: rgba($background, 0.3);\n$textbox-repeater--button--foreground--hover: rgba($background, 0.5);\n\n$button--primary--foreground: #fff;\n$button--primary--background: $blue;\n$button--primary--background--hover: darken($button--primary--background, 5%);\n$button--primary--border: darken($button--primary--background, 5%);\n$button--primary--border--hover: darken($button--primary--border, 5%);\n\n$button--deemphasized--foreground: #66717a;\n$button--deemphasized--background: $main-content--background;\n$button--deemphasized--foreground--hover: darken($button--deemphasized--foreground, 5%);\n$button--deemphasized--background--hover: darken($button--deemphasized--background, 5%);\n$button--deemphasized--border: darken($button--deemphasized--background, 5%);\n$button--deemphasized--border--hover: darken($button--deemphasized--border, 5%);\n\n$modal--body--foreground: desaturate(lighten($foreground, 20%), 10%);\n\n.textbox,\n.button {\n appearance: none;\n -moz-appearance: none;\n -webkit-appearance: none;\n outline: none;\n}\n\n.textbox {\n background: $textbox--background;\n border-radius: 4px;\n border: 1px solid $textbox--border;\n color: $textbox--foreground;\n display: block;\n font-size: 0.9em;\n padding: 10px 15px;\n transition: background 0.25s, border 0.25s, color 0.25s;\n width: 100%;\n\n &::placeholder {\n color: $textbox--placeholder;\n font-style: italic;\n transition: color 0.25s;\n }\n\n &:focus {\n background: $textbox--active--background;\n border-color: $textbox--active--border;\n color: $textbox--active--foreground;\n\n &::placeholder {\n color: $textbox--active--placeholder;\n }\n }\n\n &.is-fulfilled {\n background: $textbox--fulfilled--background;\n }\n}\n\n.button {\n background: transparent;\n border: none;\n border-radius: 4px;\n cursor: pointer;\n font-size: 0.9em;\n font-weight: 500;\n padding: 8px 22px;\n transition: background 0.25s;\n user-select: none;\n\n &.has-icon {\n\n .icon {\n height: 16px;\n margin: 0 $spacing-unit * 1/3;\n vertical-align: middle;\n width: 16px;\n\n &:first-child {\n margin-left: 0;\n }\n\n &:last-child {\n margin-right: 0;\n }\n }\n }\n\n &--deemphasize {\n background: $button--deemphasized--background;\n box-shadow: inset 0 0 0 1px $button--deemphasized--border;\n color: $button--deemphasized--foreground;\n\n &:hover {\n background: $button--deemphasized--background--hover;\n box-shadow: inset 0 0 0 1px $button--deemphasized--border--hover;\n color: $button--deemphasized--foreground--hover;\n }\n }\n\n &--primary {\n background: $button--primary--background;\n box-shadow: inset 0 0 0 1px $button--primary--border;\n color: $button--primary--foreground;\n white-space: nowrap;\n\n &:hover {\n background: $button--primary--background--hover;\n box-shadow: inset 0 0 0 1px $button--primary--border--hover;\n }\n }\n}\n\n.checkbox {\n line-height: 1;\n position: relative;\n\n &:hover {\n\n .checkbox {\n\n &__decoy {\n border-color: $blue;\n }\n }\n }\n\n input[type=\"checkbox\"] {\n left: 0;\n opacity: 0;\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n\n &:checked {\n\n & + .checkbox {\n\n &__decoy {\n\n .icon {\n fill: $blue;\n }\n }\n }\n }\n }\n\n &__decoy {\n @extend .textbox;\n background: $white;\n display: inline-block;\n height: $spacing-unit * 3/5;\n margin-right: $spacing-unit * 1.5/5;\n margin-top: -2px;\n padding: 0;\n position: relative;\n vertical-align: middle;\n width: $spacing-unit * 3/5;\n\n .icon {\n fill: transparent;\n height: 10px;\n left: 50%;\n position: absolute;\n top: 50%;\n transition: fill 0.25s;\n transform: translate(-43%, -43%);\n width: 10px;\n }\n }\n\n &__label {\n color: darken($modal--body--foreground, 10%);\n }\n}\n\n.form {\n\n &__label {\n color: $form--label--foreground;\n display: block;\n font-size: 0.8em;\n line-height: 1;\n margin-bottom: 0.35em;\n }\n\n &__row {\n\n & + .form__row {\n margin-top: $spacing-unit;\n }\n }\n}\n","$blue: #258de5;\n$green: #39ce83;\n$white: #fff;\n\n$background: #1a2f3d;\n$foreground: #53718a;\n\n$main-content--background: #e9eef2;\n","html,\nbody {\n height: 100%;\n overflow: hidden;\n}\n\n.container {\n height: 100%;\n width: 100%;\n}\n\n.flood {\n align-items: stretch;\n display: flex;\n height: 100%;\n}\n\n.application {\n\n &__content {\n display: flex;\n height: 100vh;\n flex: 1 2 auto;\n flex-direction: column;\n position: relative;\n }\n\n &__loading-indicator {\n align-items: center;\n background: $background;\n display: flex;\n height: 100%;\n justify-content: center;\n position: fixed;\n width: 100%;\n z-index: 1000;\n\n &__wrapper {\n\n &-leave {\n opacity: 1;\n pointer-events: none;\n transition: opacity 1s;\n\n &-active {\n opacity: 0;\n }\n }\n }\n }\n\n &__panel {\n display: flex;\n bottom: 0;\n left: 0;\n position: absolute;\n right: 0;\n top: 0;\n\n &--torrent-list {\n transition: transform 0.5s;\n z-index: 2;\n\n &.is-open {\n transform: translateX($torrent-details--width);\n }\n }\n\n &--torrent-details {\n right: 100% - $torrent-details--width;\n width: $torrent-details--width;\n z-index: 1;\n }\n }\n}\n\n.torrent {\n\n &__header {\n flex: 1;\n min-height: 35px;\n max-height: 35px;\n }\n\n &__list {\n\n &__wrapper {\n display: flex;\n flex: 1;\n\n &--custom-scroll {\n flex: 1;\n height: auto !important;\n }\n }\n }\n}\n","body {\n background: $background;\n}\n\nul {\n list-style: none;\n}\n","$action-bar--background: transparent;\n$action-bar--foreground: #1b1a1c;\n$action-bar--group--border: rgba(#7a8080, 0.15);\n\n$action--foreground: #909799;\n$action--foreground--hover: $blue;\n$action--background--hover: rgba(#333e4a, 0.05);\n$action--border--hover: rgba(#333e4a, 0.15);\n\n$torrent-list--border: rgba($background, 0.15);\n\n.action-bar {\n background: $action-bar--background;\n color: $action-bar--foreground;\n display: flex;\n flex: 0 0 60px;\n position: relative;\n\n &:after {\n background: $torrent-list--border;\n bottom: 0;\n content: '';\n height: 1px;\n left: 9px;\n position: absolute;\n right: 0;\n width: auto;\n }\n\n &__item {\n flex: 3;\n\n &:first-child {\n text-align: left;\n }\n\n &:last-child {\n text-align: right;\n }\n\n &--sort-torrents {\n max-width: 225px;\n\n .dropdown {\n margin: 5px 0 0 15px;\n\n &__content {\n min-width: 250px;\n }\n }\n }\n\n &--torrent-operations {\n\n .dropdown {\n display: inline-block;\n height: 60px;\n\n &__content {\n min-width: 430px;\n right: 4px;\n }\n }\n }\n }\n\n &__group {\n display: inline-block;\n font-size: 0;\n padding: 0 15px;\n\n &--has-divider {\n position: relative;\n\n &:before {\n background: $action-bar--group--border;\n content: '';\n position: absolute;\n height: 80%;\n left: 0;\n top: 10%;\n width: 1px;\n }\n }\n }\n}\n\n.actions {\n list-style: none;\n}\n\n.action {\n box-shadow:\n 1px 0 transparent,\n -1px 0 transparent;\n cursor: pointer;\n display: inline-block;\n height: 60px;\n position: relative;\n width: 60px;\n text-align: center;\n transition: background 0.25s, box-shadow 0.25s;\n\n &:hover {\n background: $action--background--hover;\n box-shadow:\n 1px 0 $action--border--hover,\n -1px 0 $action--border--hover;\n\n .icon {\n fill: $action--foreground--hover;\n }\n }\n\n &__label {\n display: block;\n position: absolute;\n top: 100%;\n visibility: hidden;\n }\n\n .icon {\n fill: $action--foreground;\n height: 25px;\n left: 50%;\n position: absolute;\n top: 50%;\n transition: fill 0.25s;\n transform: translateX(-50%) translateY(-50%);\n width: 30px;\n }\n}\n",".application {\n\n &__content {\n background: $main-content--background;\n }\n}\n","$sidebar-filter--count--foreground: #132532;\n$sidebar-filter--count--background: #2b4456;\n$sidebar-filter--count--background--active: #3b586d;\n\n.badge {\n background: $sidebar-filter--count--background;\n border-radius: 100px;\n color: $sidebar-filter--count--foreground;\n display: inline-block;\n font-size: 0.8em;\n font-weight: 800;\n line-height: 1;\n margin-left: 10px;\n padding: 1px 5px;\n transition: background 0.25s;\n vertical-align: baseline;\n}\n","$menu--background: rgba(#fff, 0.98);\n$menu--container--border: rgba($background, 0.075);\n$menu--container--shadow: rgba($background, 0.15);\n$menu--label: #abbac7;\n$menu--value: #8899a8;\n$menu--value--active: #4e6a7c;\n$menu--header--border: rgba($background, 0.05);\n$menu--item--background--hover: rgba($main-content--background, 0.4);\n$menu--item--foreground: #95a2ad;\n$menu--item--foreground--hover: darken($menu--item--foreground, 10%);\n$menu--item--secondary--foreground: lighten($menu--item--foreground, 20%);\n$menu--item--foreground--active: $blue;\n$menu--item--separator--background: $menu--container--border;\n\n.menu {\n background: $menu--background;\n border-radius: 3px;\n box-shadow:\n 0 0 0 1px $menu--container--border,\n 0 1px 4px $menu--container--shadow,\n 0 3px 15px $menu--container--shadow;\n color: $menu--item--foreground;\n text-align: left;\n\n &__item {\n padding: 5px 15px;\n\n &__label {\n\n &--primary {\n\n &.has-action {\n display: flex;\n\n .menu {\n\n &__item {\n\n &__label {\n flex: 1 1 auto;\n\n &__action {\n flex: 0 0 auto;\n }\n }\n }\n }\n }\n }\n\n &--secondary {\n color: $menu--item--secondary--foreground;\n display: block;\n font-size: 0.85em;\n }\n }\n\n &--separator {\n background: $menu--item--separator--background;\n height: 1px;\n margin: 5px 0;\n padding: 0;\n }\n\n &.is-selectable {\n cursor: pointer;\n display: block;\n font-size: 0.9em;\n transition: background 0.25s, color 0.25s;\n\n &:hover {\n background: $menu--item--background--hover;\n color: $menu--item--foreground--hover;\n }\n\n &.is-selected {\n color: $menu--item--foreground--active;\n }\n }\n }\n\n &-enter {\n animation: fade-in 0.25s both;\n }\n\n &-leave {\n animation: fade-out 0.25s both;\n }\n}\n","$client-stats--limits--opacity: 0.15;\n$client-stats--speed--fill--top--opacity: 0.2;\n$client-stats--speed--fill--bottom--opacity: 0;\n$client-stats--speed--stroke--opacity: 0.4;\n\n$client-stats--download--primary--foreground: #2bae6c;\n$client-stats--download--secondary--foreground: rgba($client-stats--download--primary--foreground, 0.75);\n$client-stats--download--graph--stroke: rgba(#2bae6c, $client-stats--speed--stroke--opacity);\n$client-stats--download--graph--fill--top: rgba(#2bae6c, $client-stats--speed--fill--top--opacity);\n$client-stats--download--graph--fill--bottom: rgba(#2bae6c, $client-stats--speed--fill--bottom--opacity);\n$client-stats--download--limits--line: rgba(lighten($client-stats--download--primary--foreground, 20%), $client-stats--limits--opacity);\n\n$client-stats--upload--primary--foreground: #2387d9;\n$client-stats--upload--secondary--foreground: rgba($client-stats--upload--primary--foreground, 0.75);\n$client-stats--upload--graph--stroke: rgba(#2387d9, $client-stats--speed--stroke--opacity);\n$client-stats--upload--graph--fill--top: rgba(#2387d9, $client-stats--speed--fill--top--opacity);\n$client-stats--upload--graph--fill--bottom: rgba(#2387d9, $client-stats--speed--fill--bottom--opacity);\n$client-stats--upload--limits--line: rgba(lighten($client-stats--upload--primary--foreground, 20%), $client-stats--limits--opacity);\n\n$client-stats--limits--foreground: $foreground;\n$client-stats--limits--icon--hover: $blue;\n\n.client-stats {\n height: 200px;\n position: relative;\n\n .loading-indicator {\n left: 50%;\n position: absolute;\n top: 50%;\n transform: translate(-50%, -50%);\n }\n\n .transfer-data-enter {\n opacity: 0;\n transition: opacity 1s;\n\n &.transfer-data-enter-active {\n opacity: 1;\n }\n }\n\n .transfer-data-leave {\n opacity: 1;\n transition: opacity 1s;\n\n &.transfer-data-leave-active {\n opacity: 0;\n }\n }\n}\n\n.client-stat {\n align-items: center;\n display: flex;\n height: 100px;\n padding: 0 20px;\n\n &__icon,\n &__data {\n position: relative;\n vertical-align: top;\n z-index: 1;\n }\n\n &__icon {\n flex: 0 0 23px;\n\n .icon {\n display: inline-block;\n height: 25px;\n margin: 6px 0 0 -5px;\n width: auto;\n }\n }\n\n &__data {\n flex: 1;\n\n &--primary,\n &--secondary {\n display: block;\n font-weight: 100;\n line-height: 1.2;\n }\n\n &--primary {\n font-size: 1.75em;\n white-space: nowrap;\n\n .unit {\n font-size: 0.65em;\n margin-bottom: 0;\n opacity: 0.5;\n position: relative;\n top: -0.1em;\n }\n }\n\n &--secondary {\n font-size: 0.8em;\n font-style: italic;\n font-weight: 400;\n }\n }\n}\n\n.client-stat {\n\n &--limits {\n background: none;\n border: none;\n color: $client-stats--limits--foreground;\n display: block;\n outline: none;\n padding: 10px 15px;\n font-size: 0.85em;\n text-align: left;\n transition: color 0.25s;\n vertical-align: middle;\n width: 100%;\n\n .icon {\n display: inline-block;\n fill: $client-stats--limits--foreground;\n margin: -2px 5px 0 0;\n transition: fill 0.25s;\n vertical-align: middle;\n width: 14.5px;\n\n .limits {\n\n &__bars {\n\n &--top {\n opacity: 0.4;\n }\n\n &--bottom {\n opacity: 0.6;\n }\n }\n }\n }\n\n &:hover {\n color: $client-stats--limits--icon--hover;\n\n .icon {\n fill: $client-stats--limits--icon--hover;\n }\n }\n }\n}\n\n.client-stat {\n position: relative;\n\n .graph {\n height: 100%;\n left: 0;\n position: absolute;\n top: 0;\n width: 100%;\n z-index: 0;\n\n svg {\n height: 100%;\n width: 100%;\n }\n\n &__line {\n fill: none;\n\n &--limit {\n stroke-dasharray: 3px 4px;\n stroke-width: 1px;\n }\n\n &--rate {\n stroke-width: 1.1px;\n }\n }\n\n }\n\n &--download {\n\n .icon {\n fill: $client-stats--download--secondary--foreground;\n }\n\n .client-stat {\n\n &__data {\n\n &--primary {\n color: $client-stats--download--primary--foreground;\n }\n\n &--secondary {\n color: $client-stats--download--secondary--foreground;\n }\n\n }\n\n }\n\n .graph {\n\n .graph--download--gradient--top {\n stop-color: $client-stats--download--graph--fill--top;\n }\n\n .graph--download--gradient--bottom {\n stop-color: $client-stats--download--graph--fill--bottom;\n }\n\n &__area {\n fill: url('#graph--download--gradient')\n }\n\n &__line {\n\n &--limit {\n stroke: $client-stats--download--limits--line;\n }\n\n &--rate {\n stroke: $client-stats--download--graph--stroke;\n }\n }\n\n }\n\n }\n\n &--upload {\n\n .icon {\n fill: $client-stats--upload--secondary--foreground;\n }\n\n .client-stat {\n\n &__data {\n\n &--primary {\n color: $client-stats--upload--primary--foreground;\n }\n\n &--secondary {\n color: $client-stats--upload--secondary--foreground;\n }\n\n }\n\n }\n\n .graph {\n\n .graph--upload--gradient--top {\n stop-color: $client-stats--upload--graph--fill--top;\n }\n\n .graph--upload--gradient--bottom {\n stop-color: $client-stats--upload--graph--fill--bottom;\n }\n\n &__area {\n fill: url('#graph--upload--gradient')\n }\n\n &__line {\n\n &--limit {\n stroke: $client-stats--upload--limits--line;\n }\n\n &--rate {\n stroke: $client-stats--upload--graph--stroke;\n }\n }\n\n }\n\n }\n\n}\n",".context-menu {\n font-size: 0.9em;\n padding: $spacing-unit * 2/5 0;\n position: fixed;\n z-index: 10;\n}\n","$directory-tree--filename--foreground: #527893;\n$directory-tree--directory--foreground: $directory-tree--filename--foreground;\n$directory-tree--directory--foreground--open: #719bb7;\n\n$directory-tree--icon--file: #344b5b;\n$directory-tree--icon--folder: rgba(#527893, 0.4);\n$directory-tree--icon--folder--active: rgba(#82aac5, 0.5);\n$directory-tree--icon--folder--open: rgba(#82aac5, 0.5);\n\n$directory-tree--file-details--foreground: #2b4456;\n$directory-tree--file-details--hover--foreground: #527893;\n\n$torrent-details--directory-tree--file--hover--background: rgba(#1a2d3c, 0.8);\n$torrent-details--directory-tree--file--hover--foreground: #79a7c7;\n$torrent-details--directory-tree--file--hover--border: #1f3647;\n\n$torrent-details--directory-tree--parent-directory--foreground: #3a5c74;\n$torrent-details--directory-tree--parent-directory--icon--fill: rgba(#3a5c74, 0.5);\n\n.directory-tree {\n\n .icon {\n display: inline-block;\n fill: $directory-tree--icon--folder;\n height: 14px;\n margin-right: 6px;\n width: 14px;\n }\n\n &__node {\n color: $directory-tree--filename--foreground;\n line-height: 1.75;\n text-overflow: ellipsis;\n vertical-align: middle;\n white-space: nowrap;\n\n &--group {\n padding-left: 10px;\n position: relative;\n\n &:after {\n background: rgba(#527893, 0.1);\n content: '';\n height: 100%;\n left: 5px;\n position: absolute;\n top: -5px;\n width: 2px;\n }\n }\n\n &--directory {\n color: $directory-tree--directory--foreground;\n cursor: pointer;\n transition: color 0.125s;\n\n &.is-expanded {\n color: $directory-tree--directory--foreground--open;\n font-weight: 500;\n\n .icon {\n fill: $directory-tree--icon--folder--active;\n }\n }\n\n .icon {\n fill: $directory-tree--icon--folder;\n }\n }\n\n .file {\n align-items: center;\n display: flex;\n line-height: 1.4;\n margin-left: -9px;\n padding: 2px 0 2px 9px;\n transition: background 0.25s, box-shadow 0.25s, color 0.25s;\n width: 100%;\n\n &:hover {\n background: $torrent-details--directory-tree--file--hover--background;\n box-shadow:\n 0 1px 0 $torrent-details--directory-tree--file--hover--border,\n 0 -1px 0 $torrent-details--directory-tree--file--hover--border;\n color: $torrent-details--directory-tree--file--hover--foreground;\n\n .file {\n\n &__detail {\n\n &--size,\n &--priority {\n color: $directory-tree--file-details--hover--foreground;\n }\n }\n }\n }\n\n .icon {\n fill: $directory-tree--icon--file;\n margin-top: -3px;\n vertical-align: middle;\n }\n\n &__detail {\n flex: 1 1 auto;\n overflow: hidden;\n padding-right: $spacing-unit * 1/4;\n text-overflow: ellipsis;\n\n &--size,\n &--priority {\n color: $directory-tree--file-details--foreground;\n flex: 0 0 auto;\n font-size: 0.95em;\n text-align: right;\n transition: color 0.25s;\n }\n\n &--priority {\n\n .icon {\n height: auto;\n margin-right: 0;\n width: 16px;\n }\n }\n\n &:last-child {\n padding-right: 0;\n }\n }\n }\n\n &--file-list {\n margin-bottom: 3px;\n }\n }\n\n &__parent-directory {\n margin-left: -1px;\n overflow: hidden;\n text-overflow: ellipsis;\n\n .icon {\n fill: $torrent-details--directory-tree--parent-directory--icon--fill;\n margin-right: 8px;\n vertical-align: middle;\n }\n }\n\n &__tree {\n\n .directory-tree__tree {\n padding-left: 6px;\n }\n }\n}\n","$dropdown--background: $menu--background;\n$dropdown--container--border: $menu--container--border;\n$dropdown--container--shadow: $menu--container--shadow;\n$dropdown--label: $menu--label;\n$dropdown--value: $menu--value;\n$dropdown--value--active: $menu--value--active;\n$dropdown--header--border: $menu--header--border;\n$dropdown--item--foreground: $menu--item--foreground;\n$dropdown--item--background--hover: $menu--item--background--hover;\n$dropdown--item--foreground--hover: $menu--item--foreground--hover;\n$dropdown--item--foreground--active: $menu--item--foreground--active;\n\n.dropdown {\n display: inline-block;\n outline: none;\n position: relative;\n z-index: 2;\n\n &__button,\n &__trigger {\n cursor: pointer;\n }\n\n &__button {\n display: block;\n padding: 12px 15px 7px 15px;\n text-align: left;\n width: auto;\n word-wrap: none;\n }\n\n &__content {\n left: 0;\n position: absolute;\n top: 0;\n z-index: 2;\n }\n\n &.is-expanded {\n\n .dropdown {\n\n &__header {\n\n .dropdown {\n\n &__value {\n color: $dropdown--value--active;\n }\n }\n }\n }\n }\n\n &__label {\n color: $dropdown--label;\n display: block;\n font-size: 0.65em;\n font-weight: 500;\n letter-spacing: 0.1em;\n line-height: 0.9em;\n text-transform: uppercase;\n\n .dropdown__button & {\n cursor: pointer;\n }\n }\n\n &__value {\n color: $dropdown--value;\n transition: color 0.25s;\n\n &:after {\n border-top: 5px solid $dropdown--value;\n border-left: 4px solid transparent;\n border-right: 4px solid transparent;\n content: '';\n display: inline-block;\n margin-left: 10px;\n vertical-align: middle;\n }\n }\n\n &__header {\n position: relative;\n\n &:after {\n background: $dropdown--header--border;\n bottom: 0;\n content: '';\n display: block;\n height: 1px;\n left: 5%;\n position: absolute;\n width: 90%;\n }\n }\n\n &__items {\n display: flex;\n padding: 10px 0;\n }\n\n &__list {\n flex: 1;\n }\n\n &--align-right & {\n left: auto;\n right: 0;\n }\n}\n\n.dropdown {\n\n &__content {\n\n &__container {\n padding: 25px 30px;\n }\n }\n}\n","$dropzone--background: #e9eff5;\n$dropzone--foreground: #53718a;\n$dropzone--foreground--hover: darken($dropzone--foreground, 20%);\n$dropzone--foreground--dragging: $blue;\n$dropzone--border: #d6e2ea;\n$dropzone--border--hover: darken($dropzone--border, 20%);\n$dropzone--border--dragging: $blue;\n$dropzone--browse--foreground: $blue;\n$dropzone--icon--fill: #c7d3df;\n$dropzone--icon--fill--hover: darken($dropzone--icon--fill, 15%);\n$dropzone--icon--fill--dragging: $blue;\n$dropzone--file--icon--fill: #adbfce;\n\n.dropzone {\n align-items: center;\n background: $dropzone--background;\n border: 1px dashed $dropzone--border;\n border-radius: 4px;\n color: $dropzone--foreground;\n display: flex;\n flex-direction: column;\n text-align: center;\n transition: border 0.25s, color 0.25s;\n width: 100%;\n\n &:hover {\n border-color: $dropzone--border--hover;\n\n .dropzone__icon {\n\n .icon {\n fill: $dropzone--icon--fill--hover;\n }\n }\n }\n\n &--is-dragging {\n\n &,\n &:hover {\n border-color: $dropzone--border--dragging;\n color: $dropzone--foreground--dragging;\n\n .dropzone__icon {\n\n .icon {\n fill: $dropzone--icon--fill--dragging;\n }\n }\n }\n }\n\n &__icon {\n\n .icon {\n\n &--files {\n fill: $dropzone--icon--fill;\n height: 64px;\n transition: fill 0.25s;\n width: 64px;\n\n &__file {\n\n &--right,\n &--left {\n fill-opacity: 0.5;\n }\n }\n }\n }\n }\n\n &__copy {\n cursor: pointer;\n flex: 1;\n font-size: 0.85em;\n padding: $spacing-unit;\n width: 100%;\n }\n\n &__browse-button {\n color: $dropzone--browse--foreground;\n text-decoration: underline;\n }\n\n &__selected-files {\n @extend .textbox;\n @extend .textbox.is-fulfilled;\n border-radius: 4px 4px 0 0 ;\n font-size: 0.8em;\n padding: $spacing-unit * 1/2;\n width: 100%;\n\n & + .dropzone {\n border-radius: 0 0 4px 4px;\n border-top: none;\n }\n\n &__file {\n text-align: left;\n white-space: nowrap;\n\n .icon {\n display: inline-block;\n fill: $dropzone--file--icon--fill;\n height: 12px;\n margin-right: 4px;\n vertical-align: baseline;\n width: 12px;\n }\n\n .icon--close {\n height: 8px;\n margin-left: 4px;\n margin-right: 0;\n vertical-align: middle;\n width: 8px;\n }\n }\n }\n\n &__file {\n display: flex;\n width: 100%;\n\n &__item {\n flex: 1 0 auto;\n\n &--icon {\n flex: 0 0 auto;\n }\n\n &--file-name {\n flex: 1 1 auto;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n &--remove-icon {\n cursor: pointer;\n }\n }\n\n .icon {\n\n }\n }\n}\n",".floating-action {\n\n &__button {\n background: $textbox-repeater--button--background;\n border: none;\n border-radius: 16px;\n box-shadow: 0 0 0 1px $textbox-repeater--button--border;\n cursor: pointer;\n height: 16px;\n outline: none;\n margin-right: 6px;\n padding: 0;\n position: relative;\n transition: background 0.25s, box-shadow 0.25s;\n width: 16px;\n\n &:last-child {\n margin-right: 0;\n }\n\n &:hover {\n background: $textbox-repeater--button--background--hover;\n box-shadow: 0 0 0 1px $textbox-repeater--button--border--hover;\n\n .icon {\n fill: $textbox-repeater--button--foreground--hover;\n }\n }\n\n .icon {\n height: 8px;\n fill: $textbox-repeater--button--foreground;\n left: 50%;\n position: absolute;\n top: 50%;\n transition: fill 0.25s;\n transform: translate(-50%, -50%);\n width: 8px;\n }\n }\n}\n","@keyframes loading-indicator-dots-pulse {\n 0% {\n fill-opacity: 0.2;\n }\n\n 100% {\n fill-opacity: 0.8;\n }\n}\n\n.icon {\n\n &--eta {\n\n .icon {\n\n &__ring {\n fill-opacity: 1;\n }\n }\n }\n\n &--loading-indicator {\n\n .loading-indicator {\n\n &--dots {\n\n &__dot {\n animation: loading-indicator-dots-pulse 0.6s linear alternate infinite;\n fill: $white;\n\n &--center {\n animation-delay: 0.2s;\n }\n\n &--right {\n animation-delay: 0.4s;\n }\n }\n }\n }\n }\n}\n","$loading-indicator--bar--background: #e9eef2;\n$loading-indicator--bar--background--inverse: rgba(#38586d, 0.7);\n$loading-indicator--tick--background: rgba($blue, 0.75);\n$loading-indicator--tick--background--inverse: rgba($blue, 0.75);\n\n@keyframes loading-indicator-swipe {\n 0% {\n transform: translateX(-100%);\n }\n\n 50% {\n transform: translateX(400%);\n }\n\n 100% {\n transform: translateX(400%);\n }\n}\n\n.loading-indicator {\n height: 18px;\n position: relative;\n width: 32px;\n\n &.is-inverse {\n\n .loading-indicator {\n\n &__bar {\n background: $loading-indicator--bar--background--inverse;\n\n &:after {\n background: $loading-indicator--tick--background--inverse;\n }\n }\n }\n }\n\n &__bar {\n background: $loading-indicator--bar--background;\n border-radius: 10px;\n height: 3px;\n left: 0;\n overflow: hidden;\n position: absolute;\n transform: translateY(0);\n width: 100%;\n\n &:after {\n animation: loading-indicator-swipe 3s ease-in-out infinite;\n background: $loading-indicator--tick--background;\n border-radius: 10px;\n content: '';\n display: block;\n height: 100%;\n transform: translateX(-100%);\n width: 25%;\n }\n\n &--1 {\n top: 0;\n }\n\n &--2 {\n top: 50%;\n transform: translateY(-50%);\n\n &:after {\n animation-delay: 0.5s;\n }\n }\n\n &--3 {\n bottom: 0;\n\n &:after {\n animation-delay: 1s;\n }\n }\n }\n}\n","$modal--background: #f7fafc;\n$modal--heading--background: #fff;\n$modal--heading--foreground: #5c6e80;\n$modal--heading--border: #dde7ed;\n\n$modal--body--foreground: desaturate(lighten($foreground, 20%), 10%);\n\n$modal--tab--foreground: #abbac7;\n$modal--tab--foreground--active: $blue;\n$modal--tab--border--active: $blue;\n\n$modal--overlay: rgba($background, 0.5);\n\n$modal--content--border: rgba($background, 0.1);\n$modal--content--shadow: rgba($background, 0.3);\n\n$modal--border-radius: 3px;\n$modal--padding--horizontal: $spacing-unit;\n$modal--padding--vertical: $modal--padding--horizontal * 4/5;\n\n$modal--content--padding--top: $spacing-unit * 4/5;\n$modal--content--padding--right: $spacing-unit;\n$modal--content--padding--bottom: $spacing-unit * 4/5;\n$modal--content--padding--left: $spacing-unit;\n\n$modal--actions--margin--top: $spacing-unit;\n\n$modal--tabs--margin--top: $spacing-unit * 2/5;\n$modal--tabs--margin--right: $spacing-unit * -1/5;\n$modal--tabs--margin--bottom: 0;\n$modal--tabs--margin--left: $spacing-unit * -1/5;\n\n.modal {\n background: $modal--overlay;\n height: 100%;\n left: 0;\n position: fixed;\n top: 0;\n transition: opacity 0.5s;\n width: 100%;\n z-index: 100;\n\n &--align-center {\n text-align: center;\n }\n\n &__tabs {\n color: $modal--tab--foreground;\n font-size: 0.65em;\n font-weight: 400;\n margin: $modal--tabs--margin--top $modal--tabs--margin--right $modal--tabs--margin--bottom $modal--tabs--margin--left;\n\n .modal {\n\n &__tab {\n cursor: pointer;\n display: inline-block;\n margin-right: $spacing-unit * 2/5;\n padding: $spacing-unit * 1/5 $spacing-unit * 1/5 $spacing-unit * 2/5 $spacing-unit * 1/5;\n position: relative;\n\n &:after {\n bottom: 0;\n content: '';\n height: 1px;\n left: 0;\n position: absolute;\n right: 0;\n transition: background 0.25s;\n }\n\n &:last-child {\n margin-right: 0;\n }\n\n &.is-active {\n color: $modal--tab--foreground--active;\n font-weight: 800;\n\n &:after {\n background: $modal--tab--border--active;\n }\n }\n }\n }\n }\n\n &__header {\n background: $modal--heading--background;\n border-radius: $modal--border-radius $modal--border-radius 0 0;\n box-shadow: inset 0 -1px 0 $modal--heading--border;\n color: $modal--heading--foreground;\n flex: 0 0 auto;\n font-size: 1.25em;\n font-weight: 300;\n line-height: 1;\n padding: $modal--padding--vertical $modal--padding--horizontal;\n\n &.has-tabs {\n padding-bottom: 0;\n }\n }\n\n &__content {\n flex: 1 1 auto;\n overflow: auto;\n padding: $modal--content--padding--top $modal--content--padding--right $modal--content--padding--bottom $modal--content--padding--left;\n\n &__wrapper {\n background: $modal--background;\n border-radius: $modal--border-radius;\n box-shadow:\n 0 0 0 1px $modal--content--border,\n 0 0 35px $modal--content--shadow;\n display: flex;\n flex-direction: column;\n left: 50%;\n max-height: 80%;\n max-width: 80%;\n position: absolute;\n top: 10%;\n transform: translate(-50%, 0);\n width: 500px;\n }\n }\n\n &__body {\n color: $modal--body--foreground;\n font-size: 0.9em;\n }\n\n &__actions {\n margin-top: $modal--actions--margin--top;\n }\n\n &__button-group {\n text-align: right;\n\n .modal--align-center & {\n text-align: center;\n }\n\n .button {\n\n & + .button {\n margin-left: 20px;\n }\n }\n }\n\n &__animation-enter {\n opacity: 0;\n }\n\n &__animation-enter-active {\n opacity: 1;\n }\n\n &__animation-leave {\n opacity: 1;\n pointer-events: none;\n }\n\n &__animation-leave-active {\n opacity: 0;\n }\n}\n","$priority-meter--track--level-0--background: rgba(#436076, 0.2);\n$priority-meter--bar--level-0--background: #436076;\n$priority-meter--track--level-1--background: rgba($blue, 0.2);\n$priority-meter--bar--level-1--background: $blue;\n$priority-meter--track--level-2--background: rgba($green, 0.2);\n$priority-meter--bar--level-2--background: $green;\n\n.priority-meter {\n height: 8px;\n position: relative;\n\n &__wrapper {\n cursor: pointer;\n display: inline-block;\n padding: 5px;\n user-select: none;\n vertical-align: middle;\n }\n\n &:before,\n &:after {\n content: '';\n display: block;\n position: absolute;\n }\n\n &:before {\n height: 2px;\n left: 0;\n top: 3px;\n transition: background 0.25s;\n width: 100%;\n }\n\n &:after {\n height: 100%;\n top: 0;\n transition: background 0.25s, left 0.25s;\n width: 2px;\n }\n\n &--max-2 {\n width: 18px;\n\n &.priority-meter {\n\n &--level-0 {\n\n &:before {\n background: $priority-meter--track--level-0--background;\n }\n\n &:after {\n left: 0;\n background: $priority-meter--bar--level-0--background;\n }\n }\n\n &--level-1 {\n\n &:before {\n background: $priority-meter--track--level-1--background;\n }\n\n &:after {\n left: 8px;\n background: $priority-meter--bar--level-1--background;\n }\n }\n\n &--level-2 {\n\n &:before {\n background: $priority-meter--track--level-2--background;\n }\n\n &:after {\n background: $priority-meter--bar--level-2--background;\n left: 16px;\n }\n }\n }\n }\n\n &--max-3 {\n width: 26px;\n\n &.priority-meter {\n\n &--level-0 {\n\n &:before {\n background: $priority-meter--track--level-0--background;\n }\n\n &:after {\n left: 0;\n background: $priority-meter--bar--level-0--background;\n }\n }\n\n &--level-1 {\n\n &:before {\n background: $priority-meter--track--level-1--background;\n }\n\n &:after {\n left: 8px;\n background: $priority-meter--bar--level-1--background;\n }\n }\n\n &--level-2 {\n\n &:before {\n background: $priority-meter--track--level-2--background;\n }\n\n &:after {\n background: $priority-meter--bar--level-2--background;\n left: 16px;\n }\n }\n\n &--level-3 {\n\n &:before {\n background: $priority-meter--track--level-2--background;\n }\n\n &:after {\n background: $priority-meter--bar--level-2--background;\n left: 24px;\n }\n }\n }\n }\n}\n","$progress-bar--background: #e3e5e5;\n$progress-bar--background--selected: rgba(#fff, 0.5);\n$progress-bar--background--selected--stopped: rgba(#fff, 0.5);\n$progress-bar--fill: $green;\n\n$progress-bar--fill--stopped: #e3e5e5;\n$progress-bar--fill--completed: $blue;\n$progress-bar--fill--selected: #fff;\n$progress-bar--fill--error: #e95779;\n\n.progress-bar {\n height: 3px;\n position: relative;\n transition: opacity 0.25s;\n z-index: 1;\n\n .is-selected.is-stopped & {\n opacity: 0.5;\n }\n\n &:after {\n background: $progress-bar--background;\n content: '';\n height: 1px;\n left: 0;\n position: absolute;\n z-index: 0;\n top: 1px;\n transition: background 0.25s;\n width: 100%;\n\n .is-selected & {\n background: $progress-bar--background--selected;\n }\n\n .is-selected.is-stopped & {\n background: $progress-bar--background--selected--stopped;\n }\n }\n\n &__fill {\n background: $progress-bar--fill;\n bottom: 0;\n height: 100%;\n left: 0;\n position: absolute;\n top: 0;\n transition: background 0.25s, width 0.25s;\n z-index: 1;\n\n .is-seeding & {\n background: $progress-bar--fill--completed;\n }\n\n .is-completed &,\n .is-stopped & {\n background: $progress-bar--fill--stopped;\n }\n\n .is-selected & {\n background: $progress-bar--fill--selected;\n }\n\n .has-error & {\n background: $progress-bar--fill--error;\n }\n }\n}\n","$scrollbar--thumb--background--inactive: rgba(#1a2f3d, 0.3);\n$scrollbar--thumb--background--hover: rgba(#1a2f3d, 0.6);\n$scrollbar--thumb--background--inverted--inactive: rgba(#e9eef2, 0.3);\n$scrollbar--thumb--background--inverted--hover: rgba(#e9eef2, 0.6);\n\n.scrollbars {\n\n &__thumb {\n background: $scrollbar--thumb--background--inactive;\n border-radius: 10px;\n cursor: pointer;\n opacity: 0;\n transition: background 0.25s, opacity 0.5s;\n\n &:active {\n opacity: 1;\n }\n\n &:hover,\n &:active {\n background: $scrollbar--thumb--background--hover;\n }\n\n .is-inverted & {\n background: $scrollbar--thumb--background--inverted--inactive;\n\n &:hover,\n &:active {\n background: $scrollbar--thumb--background--inverted--hover;\n }\n }\n }\n\n &:hover {\n\n .scrollbars__thumb {\n opacity: 1;\n }\n }\n}\n","$sidebar--foreground: #53718a;\n\n$search-torrents--base: #091824;\n$search-torrents--background: rgba($search-torrents--base, 0.3);\n$search-torrents--background--active: rgba($blue, 0.25);\n$search-torrents--border: rgba($search-torrents--background, 0.4);\n$search-torrents--border--active: rgba($blue, 0.3);\n$search-torrents--foreground: $sidebar--foreground;\n$search-torrents--foreground--active: $blue;\n$search-torrents--placeholder: rgba($sidebar--foreground, 0.4);\n$search-torrents--placeholder--active: rgba($blue, 0.4);\n\n$search-torrents--icon--foreground: $sidebar--foreground;\n$search-torrents--icon--foreground--active: $blue;\n\n.search {\n position: relative;\n\n .icon {\n fill: $search-torrents--icon--foreground;\n height: 22px;\n left: 17px;\n opacity: 0.5;\n position: absolute;\n top: 50%;\n transition: fill 0.25s, opacity 0.25s;\n transform: translateY(-50%);\n width: 22px;\n\n &--close {\n left: auto;\n right: 17px;\n }\n }\n\n .button {\n height: 100%;\n position: absolute;\n right: 0;\n width: 30px;\n\n .icon {\n position: absolute;\n height: 10px;\n left: 50%;\n top: 50%;\n transform: translate(-50%, -50%);\n width: 10px;\n }\n }\n\n .textbox {\n appearance: none;\n -webkit-appearance: none;\n -moz-appearance: none;\n border: 1px solid $search-torrents--border;\n border-left: none;\n border-right: none;\n border-radius: 0;\n background: $search-torrents--background;\n box-shadow: none;\n color: $search-torrents--foreground;\n display: block;\n font-size: 1em;\n outline: none;\n padding: 12px 0 12px 45px;\n transition: background 0.25s, border 0.25s, color 0.25s;\n width: 100%;\n\n &::placeholder {\n color: $search-torrents--placeholder;\n font-style: italic;\n transition: color 0.25s;\n }\n }\n\n &.is-in-use {\n\n .icon {\n fill: $search-torrents--icon--foreground--active;\n opacity: 1;\n }\n\n .textbox {\n background: $search-torrents--background--active;\n border-bottom: 1px solid $search-torrents--border--active;\n border-top: 1px solid $search-torrents--border--active;\n color: $search-torrents--foreground--active;\n padding-right: 45px;\n\n &::placeholder {\n color: $search-torrents--placeholder--active;\n }\n }\n }\n}\n","$sidebar--foreground: #53718a;\n$sidebar--border: rgba(darken($sidebar--foreground, 40%), 0.3);\n\n$sidebar-filter--foreground: $sidebar--foreground;\n$sidebar-filter--foreground--header: rgba($sidebar-filter--foreground, 0.5);\n$sidebar-filter--foreground--active: $blue;\n$sidebar-filter--foreground--hover: lighten($sidebar-filter--foreground, 15%);\n\n.application {\n\n &__sidebar {\n box-shadow: 1px 0 $sidebar--border;\n color: $sidebar--foreground;\n flex: 1;\n min-width: 200px;\n max-width: 240px;\n overflow: auto;\n position: relative;\n z-index: 2;\n }\n}\n\n.sidebar {\n\n &__item {\n\n &--speed-limit {\n padding-left: 5px;\n padding-top: 5px;\n\n .dropdown {\n\n &__content {\n min-width: 180px;\n }\n\n &__items {\n font-size: 0.9em;\n }\n }\n }\n }\n}\n",".sidebar-filter {\n font-size: 0.85em;\n padding: 30px 0;\n\n & + .sidebar-filter {\n padding-top: 0;\n }\n\n &__item {\n color: $sidebar-filter--foreground;\n cursor: pointer;\n font-weight: 400;\n padding: 3px 20px;\n transition: color 0.25s;\n\n &:hover {\n color: $sidebar-filter--foreground--hover;\n\n .icon {\n fill: $sidebar-filter--foreground--hover;\n }\n }\n\n &.is-active {\n color: $sidebar-filter--foreground--active;\n font-weight: 700;\n\n .badge {\n background: $sidebar-filter--count--background--active;\n }\n\n .icon {\n fill: $sidebar-filter--foreground--active;\n }\n }\n\n .icon {\n display: inline-block;\n fill: $sidebar-filter--foreground;\n height: 14px;\n margin-right: 7px;\n transition: fill 0.25s;\n vertical-align: middle;\n width: auto;\n }\n }\n\n .badge {\n background: $sidebar-filter--count--background;\n color: $sidebar-filter--count--foreground;\n }\n}\n\n\n.sidebar-filter {\n\n &__item {\n\n &--heading {\n cursor: default;\n font-size: 0.8em;\n font-weight: 500;\n letter-spacing: 0.1em;\n text-transform: uppercase;\n\n &,\n &:hover {\n color: $sidebar-filter--foreground--header;\n }\n }\n }\n}\n",".textbox-repeater {\n\n .floating-action {\n\n &__group {\n margin-top: -8px;\n position: absolute;\n right: -8px;\n top: 50%;\n }\n\n &__button {\n position: relative;\n }\n }\n\n .textbox {\n\n &__wrapper {\n position: relative;\n }\n }\n\n .form {\n\n &__row {\n\n & + .form__row {\n margin-top: $spacing-unit * 1/2;\n }\n }\n }\n}\n","$torrent-details--background: saturate(lighten(#0c1b26, 2.5%), 4%); //#162835;\n$torrent-details--border: rgba($background, 0.1);\n\n$torrent-details--header--border: rgba(#040d13, 0.3);\n$torrent-details--header--name--foreground: #c7dbeb;\n$torrent-details--header--tertiary--foreground: #7b9cb4;\n$torrent-details--header--progress-bar--track: #2a3e4c;\n$torrent-details--header--progress-bar--fill--error: #be2558;\n\n$torrent-details--navigation--border: rgba(#040d13, 0.4);\n$torrent-details--navigation--item--background--active: rgba(#349cf4, 0.07);\n$torrent-details--navigation--item--foreground--active: #349cf4;\n$torrent-details--navigation--item--border--active: #349cf4;\n$torrent-details--navigation--background: transparent;\n\n$torrent-details--content--background: rgba(desaturate(#0c1b26, 15%), 0.4);\n\n$torrent-details--table--foreground: #527893;\n$torrent-details--table--header: rgba(#527893, 0.5);\n$torrent-details--table--header--count--background: rgba(#527893, 0.5);\n$torrent-details--table--header--count--foreground: #0c1b26;\n\n$torrent-details--header--icon--default--fill: rgba(#4d6f87, 0.5);\n\n.application {\n\n &__panel {\n\n &--torrent-details {\n background: $torrent-details--background;\n }\n }\n}\n\n.torrent-details {\n background: $torrent-details--background;\n bottom: 0;\n box-shadow: -1px 0 0 $torrent-details--border;\n display: flex;\n flex-direction: column;\n font-size: 0.8em;\n left: 0;\n min-width: 400px;\n overflow: auto;\n position: absolute;\n right: 0;\n top: 0;\n transition: opacity 1s;\n z-index: 2;\n\n &__wrapper {\n flex: 1;\n height: 100%;\n }\n\n &__scroll-container {\n height: auto !important;\n }\n\n &__header {\n box-shadow: 0 1px 0 $torrent-details--header--border;\n flex: 0 0 auto;\n padding: $spacing-unit * 1/2 $spacing-unit $spacing-unit * 2/3 $spacing-unit;\n\n &.has-error {\n\n .progress-bar {\n\n &__fill {\n background: $torrent-details--header--progress-bar--fill--error;\n }\n }\n }\n\n &.is-stopped {\n\n .progress-bar {\n\n &__fill {\n background: #7b9cb4;\n }\n }\n }\n\n .progress-bar {\n\n &:after {\n background: $torrent-details--header--progress-bar--track;\n }\n }\n }\n\n &__action {\n cursor: pointer;\n transition: color 0.25s;\n\n .icon {\n transition: fill 0.25s;\n }\n\n &.is-active {\n color: $blue;\n\n .icon {\n fill: $blue;\n }\n }\n }\n\n &__table {\n color: $torrent-details--table--foreground;\n width: 100%;\n\n &__heading {\n\n &--primary {\n color: $torrent-details--directory-tree--parent-directory--foreground;\n font-size: 1.125em;\n }\n\n &--secondary {\n color: $torrent-details--table--header;\n font-size: 0.7em;\n letter-spacing: 0.1em;\n text-transform: uppercase;\n }\n }\n }\n\n &__content {\n flex: 1;\n overflow: auto;\n padding: $spacing-unit * 2/3 $spacing-unit;\n\n &__wrapper {\n background: $torrent-details--content--background;\n display: flex;\n flex: 1;\n overflow: hidden;\n }\n }\n\n &__navigation {\n background: $torrent-details--navigation--background;\n box-shadow: 1px 0 0 $torrent-details--navigation--border;\n min-width: 125px;\n padding: $spacing-unit * 1/2 0;\n\n .navigation {\n\n &__item {\n cursor: pointer;\n padding: $spacing-unit * 1/4 $spacing-unit;\n text-align: right;\n transition: background 0.25s, box-shadow 0.25s, color 0.25s;\n\n &.is-active {\n background: $torrent-details--navigation--item--background--active;\n box-shadow: 1px 0 0 $torrent-details--navigation--item--border--active;\n color: $torrent-details--navigation--item--foreground--active;\n }\n }\n }\n }\n\n &__section {\n\n &__heading,\n &__null-data {\n color: $torrent-details--directory-tree--parent-directory--foreground;\n font-size: 1.15em;\n margin-bottom: $spacing-unit * 1/10;\n }\n\n &__heading {\n\n .badge {\n background: $torrent-details--table--header--count--background;\n color: $torrent-details--table--header--count--foreground;\n }\n }\n }\n}\n\n.torrent-details {\n\n &__heading {\n color: $torrent-details--header--name--foreground;\n font-size: 1.7em;\n font-weight: 300;\n }\n\n &__sub-heading {\n display: flex;\n margin-bottom: $spacing-unit * 1/4;\n\n &__secondary {\n color: $torrent-details--header--tertiary--foreground;\n display: flex;\n flex: 1 0 auto;\n\n &:first-child {\n justify-content: flex-start;\n }\n\n &:last-child {\n justify-content: flex-end;\n }\n }\n\n &__tertiary {\n flex: 0 0 auto;\n margin-right: 1em;\n\n .icon {\n fill: $torrent-details--header--icon--default--fill;\n height: 12px;\n margin-right: 3px;\n margin-top: -3px;\n vertical-align: middle;\n width: 12px;\n }\n\n .priority-meter {\n display: inline-block;\n margin-top: -1px;\n margin-right: 6px;\n vertical-align: middle;\n\n &__wrapper {\n margin-top: -3px;\n padding: 0;\n }\n }\n\n &--download {\n color: $blue;\n\n .icon {\n fill: $blue;\n }\n }\n\n &--upload {\n color: $green;\n\n .icon {\n fill: $green;\n }\n }\n\n &:last-child {\n margin-right: 0;\n }\n }\n }\n}\n\n.torrent-details-enter {\n opacity: 0;\n}\n\n.torrent-details-enter-active {\n opacity: 1;\n}\n\n.torrent-details-leave {\n opacity: 0;\n transition: opacity 0.5s;\n}\n","$torrent-list--background: #fff;\n$torrent-list--border: rgba($background, 0.15);\n\n$torrent--primary--foreground: #333332;\n$torrent--primary--foreground--stopped: rgba(#333332, 0.5);\n$torrent--primary--foreground--selected: #fff;\n$torrent--primary--foreground--selected--stopped: rgba($torrent--primary--foreground--selected, 0.6);\n$torrent--secondary--foreground: #807f7e;\n$torrent--secondary--foreground--stopped: rgba(#807f7e, 0.5);\n$torrent--secondary--foreground--selected: #fff;\n$torrent--secondary--foreground--selected--stopped: rgba(#fff, 0.6);\n$torrent--tertiary--foreground: #807f7e;\n$torrent--tertiary--foreground--stopped: rgba(#807f7e, 0.5);\n$torrent--tertiary--foreground--selected: rgba(#fff, 0.9);\n$torrent--tertiary--foreground--selected--stopped: rgba(#fff, 0.5);\n\n$torrent--background--hover: #f6f8fa;\n$torrent--background--selected: $blue;\n\n.torrents {\n display: flex;\n flex: 1 1 100px;\n position: relative;\n\n &:after {\n background: $torrent-list--background;\n bottom: 0;\n box-shadow: -1px 0 0 0 $torrent-list--border;\n content: '';\n height: auto;\n left: 10px;\n position: absolute;\n right: 0;\n top: 0;\n }\n\n .loading-indicator {\n left: 50%;\n position: absolute;\n top: 50%;\n transform: translate(-50%, -50%);\n }\n}\n\n.torrent {\n\n &__list {\n margin: 0 0 0 10px;\n padding: 10px 0;\n position: relative;\n\n &__wrapper {\n list-style: none;\n max-width: 100%;\n opacity: 1;\n overflow: auto;\n transition: opacity 1s;\n user-select: none;\n z-index: 1;\n }\n\n &--loading {\n\n &-enter {\n opacity: 0;\n transition: opacity 1s;\n\n &-active {\n opacity: 1;\n }\n }\n\n &-leave {\n opacity: 1;\n transition: opacity 1s;\n\n &-active {\n opacity: 0;\n }\n }\n }\n\n &--empty {\n opacity: 0;\n }\n }\n}\n\n.torrent {\n cursor: default;\n padding: 10px 20px;\n position: relative;\n transition: background 0.25s;\n\n &:hover {\n background: $torrent--background--hover;\n\n .torrent {\n\n &__more-info {\n opacity: 1;\n }\n }\n }\n\n &.is-selected {\n background: $torrent--background--selected;\n }\n\n &__more-info {\n height: 20px;\n margin-top: -10px;\n position: absolute;\n left: -7px;\n opacity: 0;\n top: 50%;\n transition: background 0.25s, box-shadow 0.25s, opacity 0.25s;\n width: 20px;\n }\n}\n\n.torrent {\n\n &__details {\n align-items: center;\n display: flex;\n flex: 1;\n flex-flow: row wrap;\n list-style: none;\n\n &--primary,\n &--secondary,\n &--tertiary {\n transition: color 0.25s;\n }\n\n &--primary {\n color: $torrent--primary--foreground;\n flex: 4;\n line-height: 1.3;\n white-space: nowrap;\n\n .is-stopped & {\n color: $torrent--primary--foreground--stopped;\n }\n\n .is-selected & {\n color: $torrent--primary--foreground--selected;\n }\n\n .is-selected.is-stopped & {\n color: $torrent--primary--foreground--selected--stopped;\n }\n }\n\n &--secondary {\n align-items: flex-end;\n color: $torrent--secondary--foreground;\n flex: 1;\n font-size: 0.75em;\n min-width: 200px;\n\n li {\n flex: 1 1 auto;\n min-width: 15%;\n\n &.torrent__details--ratio {\n max-width: 30px;\n }\n }\n\n .is-stopped & {\n color: $torrent--secondary--foreground--stopped;\n }\n\n .is-selected & {\n color: $torrent--secondary--foreground--selected;\n }\n\n .is-selected.is-stopped & {\n color: $torrent--secondary--foreground--selected--stopped;\n }\n }\n\n &--tertiary {\n color: $torrent--tertiary--foreground;\n display: block;\n font-size: 0.75em;\n margin: 0 0 3px 0;\n\n li {\n display: inline-block;\n margin-right: 1em;\n\n &:last-child {\n margin-right: 0;\n }\n }\n\n .is-stopped & {\n color: $torrent--tertiary--foreground--stopped;\n }\n\n .is-selected & {\n color: $torrent--tertiary--foreground--selected;\n }\n\n .is-selected.is-stopped & {\n color: $torrent--tertiary--foreground--selected--stopped;\n }\n }\n\n &__label {\n margin-right: 0.5em;\n opacity: 0.5;\n }\n }\n}\n\n.torrent {\n\n &__details {\n\n &--eta {\n opacity: 0;\n transition: opacity 1s, visibility 1s;\n visibility: hidden;\n\n .torrent__details--segment {\n margin-right: 0.25em;\n\n &:last-child {\n margin-right: 0;\n }\n }\n\n .is-actively-downloading & {\n opacity: 1;\n visibility: visible;\n }\n }\n }\n}\n\n.view {\n\n &--torrent-list {\n background: #e9eef2;\n box-shadow: -1px 0 $torrent-list--border;\n display: flex;\n flex-direction: column;\n flex: 1;\n flex: 0 1 100%;\n }\n}\n","$transfer-data--download: $green;\n$transfer-data--upload: $blue;\n\n.transfer-data {\n\n &--download {\n color: $transfer-data--download;\n\n .icon {\n fill: $transfer-data--download;\n }\n }\n\n &--upload {\n color: $transfer-data--upload;\n\n .icon {\n fill: $transfer-data--upload;\n }\n }\n}\n"],"sourceRoot":"/source/"} \ No newline at end of file