diff --git a/iguana/app/coin_mgmt.js b/iguana/app/coin_mgmt.js new file mode 100644 index 000000000..b4d1cb273 --- /dev/null +++ b/iguana/app/coin_mgmt.js @@ -0,0 +1,305 @@ +var coinManagement = {}; + + +// Classes + +coinManagement.Coin = function (_id, _symbol, _description, _statusId) { + this.Id = _id; + this.Symbol = _symbol; + this.Description = _description; + this.StatusId = _statusId; +}; + +coinManagement.CoinStatus = function (_id, _name) { + this.Id = _id; + this.Name = _name; +}; + + +// Initialization + +coinManagement.loggingEnabled = true; +coinManagement.Coins = []; + +coinManagement.CoinStatuses = [ + new coinManagement.CoinStatus(1, 'Dormant'), + new coinManagement.CoinStatus(2, 'Launched'), + new coinManagement.CoinStatus(3, 'Started'), + new coinManagement.CoinStatus(4, 'Paused') +]; + +coinManagement.Initialize = function () { + coinManagement.Coins = [ + new coinManagement.Coin(6, 'USD', 'US Dollar', 1), + new coinManagement.Coin(2, 'EUR', 'EURO', 2), + new coinManagement.Coin(3, 'GBP', 'British Pound', 3), + new coinManagement.Coin(4, 'INR', 'Indian Rupee', 4), + new coinManagement.Coin(5, 'YEN', 'Japanese Yen', 3) + ]; +} + +coinManagement.GetCoinIndex = function (id) { + + if (coinManagement.Coins == null || coinManagement.Coins == undefined) { + return -1; + } + + for (var index = 0; index < coinManagement.Coins.length; index++) { + if (coinManagement.Coins[index].Id == id) { + console.log('# coin ID:' + id.toString() + 'is @' + index); + return index; + } + } +}; + +coinManagement.Post = function (coin) { + + if (coin === null || coin === undefined) { + console.log('# can not add coin, invalid record'); + return false; + } + + console.log('# posting coin', coin); + coinManagement.Coins.push(coin); +}; + +coinManagement.Get = function () { + console.log('# getting coins'); + return coinManagement.Coins; +}; + +coinManagement.Delete = function (id) { + + if (id == null || id == undefined) { + console.log('# invalid Coin Id'); + return false; + } + + var index = coinManagement.GetCoinIndex(id); + if (index == null || index == undefined || index < 0) { + console.log('# the coin index is invalid'); + } + + console.log('# coin deleted with id:', id, '@ index', index); + coinManagement.Coins.splice(index, 1); +}; + +coinManagement.getNewCoinId = function () { + + console.log('# getting new id'); + + var newId = -1; + + // Get an array of ids + var ids = coinManagement.Coins.map(function (elem, index) { + return elem.Id; + }); + + // sort ids + ids.sort(function (x, y) { + return (x - y); + }); + + // get the next id + for (var i = 0; i < ids.length; i++) { + if (ids.indexOf(i) == -1) { + newId = i; + break; + } + }; + + // worst case scenario + if (newId == -1) { + newId = ids.length; + } + + console.log('# new id: ', newId); + return newId; +}; + +// Helper functions + +// Genric Functions to read a key from local storage : for Chrome Browser and Chrome Extension App +var readCache = function (key) { + + // Check if this is a chrome extension App + if (chrome != null && chrome != undefined && chrome.storage != null && chrome.storage != undefined) { + + } + + // Else it should be a browser, which supports HTML 5 localStorage API + else { + + } +}; + +// Genric Functions to add/update key value pair in lcoal storage : for Chrome Browser and Chrome Extension App +var updateCache = function (key, value) { + // Check if this is a chrome extension App + if (chrome != null && chrome != undefined && chrome.storage != null && chrome.storage != undefined) { + + } + + // Else it should be a browser, which supports HTML 5 localStorage API + else { + + } +}; + +var populateCoinStatusDropDown = function () { + console.log('# populating coin status dropdown'); + var select = document.getElementById('ddStatus'); + for (var i = 0; i < coinManagement.CoinStatuses.length; i++) { + var option = document.createElement('option'); + option.value = coinManagement.CoinStatuses[i].Id + option.textContent = coinManagement.CoinStatuses[i].Name; + select.appendChild(option); + }; + console.log('# populated coin status dropdown'); +}; + +var coinEditFormIsValid = function () { + + var txt_symbol = document.getElementById('txtSymbol').value; + var txt_description = document.getElementById('txtDescription').value; + var dd_Status = document.getElementById('ddStatus').value; + + var symbol_group = document.getElementById('txtSymbolGroup'); + var description_group = document.getElementById('txtDescriptionGroup'); + var status_group = document.getElementById('ddCoinStatus'); + + symbol_group.removeAttribute('class'); + symbol_group.setAttribute('class', 'form-group'); + + description_group.removeAttribute('class'); + description_group.setAttribute('class', 'form-group'); + + status_group.removeAttribute('class'); + status_group.setAttribute('class', 'form-group'); + + if (txt_symbol == null || txt_symbol == undefined || txt_symbol.length == 0) { + symbol_group.removeAttribute('class'); + symbol_group.setAttribute('class', 'has-error form-group'); + return false; + } else if (txt_description == null || txt_description == undefined || txt_description.length == 0) { + description_group.removeAttribute('class'); + description_group.setAttribute('class', 'has-error form-group'); + return false; + } else if (dd_Status == null || dd_Status == undefined || dd_Status.length == 0) { + status_group.removeAttribute('class'); + status_group.setAttribute('class', 'has-error form-group'); + return false; + } +}; + +var GetStatusName = function (id) { + for (var index = 0; index < coinManagement.CoinStatuses.length; index++) { + if (coinManagement.CoinStatuses[index].Id == id) { + return coinManagement.CoinStatuses[index].Name; + } + } +}; + +var GetStatusNameHtml = function (id) { + var result = GetStatusName(id); + + switch (parseInt(id)) { + case 1: + return '' + result + ''; + break; + + case 2: + return '' + result + ''; + break; + + case 3: + return '' + result + ''; + break; + + case 4: + return '' + result + ''; + break; + + default: + coinManagement.log('Invalid Status ID : ' + id); + return '#Invalid'; + break; + } + +}; + +var getActionButton = function (id) { + return ''; +}; + +var objToHtml = function (objCoin) { + if (objCoin == null || objCoin == undefined) { + return ''; + } + return '' + objCoin.Symbol + '' + objCoin.Description + '' + GetStatusNameHtml(objCoin.StatusId) + '' + getActionButton(objCoin.Id) + ''; +}; + +var addCoin = function (e) { + + console.log('# add coin called'); + e.target.removeAttribute('data-dismiss'); + + if (coinEditFormIsValid() == false) { + console.log('# add coin form is invalid'); + return; + } + + e.target.setAttribute('data-dismiss', 'modal'); + + var id = coinManagement.getNewCoinId(); + var txt_symbol = document.getElementById('txtSymbol').value; + var txt_description = document.getElementById('txtDescription').value; + var dd_Status = document.getElementById('ddStatus').value; + + var objNewCoin = new coinManagement.Coin(id, txt_symbol, txt_description, dd_Status); + coinManagement.Post(objNewCoin); + + console.log('# coin added'); + renderGrid(); + coinEditFormReset(); +}; + +var renderGrid = function () { + + console.log('# refreshing coin grid'); + + var coinsTableBody = document.getElementById('Coins_table').getElementsByTagName('tbody')[0]; + coinsTableBody.innerHTML = ''; + + coinManagement.Coins.forEach(function (element) { + var htmlCoin = objToHtml(element); + coinsTableBody.innerHTML += htmlCoin; + }); +}; + +var deleteCoin = function (id) { + console.log('# coin delete called'); + coinManagement.Delete(id); + renderGrid(); +}; + +var coinEditFormReset = function () { + document.getElementById('txtSymbol').value = ''; + document.getElementById('txtDescription').value = ''; + document.getElementById('ddStatus').value = 1; +} +// Event Handlers + +var startCoinManagement = function () { + + coinManagement.Initialize(); + + document.getElementById('btnSaveCoinForm').onclick = addCoin; + document.getElementById('btnClearCoinForm').onclick = coinEditFormReset; + document.getElementById('Coins_refresh').onclick = renderGrid; + document.getElementById('Coins_reset').addEventListener('click', coinManagement.Initialize); + document.getElementById('Coins_reset').addEventListener('click', renderGrid); + + renderGrid(); + populateCoinStatusDropDown(); +} \ No newline at end of file diff --git a/iguana/app/common.js b/iguana/app/common.js new file mode 100644 index 000000000..c569a6120 --- /dev/null +++ b/iguana/app/common.js @@ -0,0 +1,536 @@ +// Copyright (c) 2012 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Set to true when the Document is loaded IFF "test=true" is in the query +// string. +var isTest = false; + +// Set to true when loading a "Release" NaCl module, false when loading a +// "Debug" NaCl module. +var isRelease = true; + +// Javascript module pattern: +// see http://en.wikipedia.org/wiki/Unobtrusive_JavaScript#Namespaces +// In essence, we define an anonymous function which is immediately called and +// returns a new object. The new object contains only the exported definitions; +// all other definitions in the anonymous function are inaccessible to external +// code. +var common = (function() { + + function isHostToolchain(tool) { + return tool == 'win' || tool == 'linux' || tool == 'mac'; + } + + /** + * Return the mime type for NaCl plugin. + * + * @param {string} tool The name of the toolchain, e.g. "glibc", "newlib" etc. + * @return {string} The mime-type for the kind of NaCl plugin matching + * the given toolchain. + */ + function mimeTypeForTool(tool) { + // For NaCl modules use application/x-nacl. + var mimetype = 'application/x-nacl'; + if (isHostToolchain(tool)) { + // For non-NaCl PPAPI plugins use the x-ppapi-debug/release + // mime type. + if (isRelease) + mimetype = 'application/x-ppapi-release'; + else + mimetype = 'application/x-ppapi-debug'; + } else if (tool == 'pnacl') { + mimetype = 'application/x-pnacl'; + } + return mimetype; + } + + /** + * Check if the browser supports NaCl plugins. + * + * @param {string} tool The name of the toolchain, e.g. "glibc", "newlib" etc. + * @return {bool} True if the browser supports the type of NaCl plugin + * produced by the given toolchain. + */ + function browserSupportsNaCl(tool) { + // Assume host toolchains always work with the given browser. + // The below mime-type checking might not work with + // --register-pepper-plugins. + if (isHostToolchain(tool)) { + return true; + } + var mimetype = mimeTypeForTool(tool); + return navigator.mimeTypes[mimetype] !== undefined; + } + + /** + * Inject a script into the DOM, and call a callback when it is loaded. + * + * @param {string} url The url of the script to load. + * @param {Function} onload The callback to call when the script is loaded. + * @param {Function} onerror The callback to call if the script fails to load. + */ + function injectScript(url, onload, onerror) { + var scriptEl = document.createElement('script'); + scriptEl.type = 'text/javascript'; + scriptEl.src = url; + scriptEl.onload = onload; + if (onerror) { + scriptEl.addEventListener('error', onerror, false); + } + document.head.appendChild(scriptEl); + } + + /** + * Run all tests for this example. + * + * @param {Object} moduleEl The module DOM element. + */ + function runTests(moduleEl) { + console.log('runTests()'); + common.tester = new Tester(); + + // All NaCl SDK examples are OK if the example exits cleanly; (i.e. the + // NaCl module returns 0 or calls exit(0)). + // + // Without this exception, the browser_tester thinks that the module has crashed. + common.tester.exitCleanlyIsOK(); + + common.tester.addAsyncTest('loaded', function(test) { + test.pass(); + }); + + if (typeof window.addTests !== 'undefined') { + window.addTests(); + } + + common.tester.waitFor(moduleEl); + common.tester.run(); + } + + /** + * Create the Native Client element as a child of the DOM element + * named "listener". + * + * @param {string} name The name of the example. + * @param {string} tool The name of the toolchain, e.g. "glibc", "newlib" etc. + * @param {string} path Directory name where .nmf file can be found. + * @param {number} width The width to create the plugin. + * @param {number} height The height to create the plugin. + * @param {Object} attrs Dictionary of attributes to set on the module. + */ + function createNaClModule(name, tool, path, width, height, attrs) { + var moduleEl = document.createElement('embed'); + moduleEl.setAttribute('name', 'nacl_module'); + moduleEl.setAttribute('id', 'nacl_module'); + moduleEl.setAttribute('width', width); + moduleEl.setAttribute('height', height); + moduleEl.setAttribute('path', path); + moduleEl.setAttribute('src', path + '/' + name + '.nmf'); + + // Add any optional arguments + if (attrs) { + for (var key in attrs) { + moduleEl.setAttribute(key, attrs[key]); + } + } + + var mimetype = mimeTypeForTool(tool); + moduleEl.setAttribute('type', mimetype); + + // The element is wrapped inside a
, which has both a 'load' + // and a 'message' event listener attached. This wrapping method is used + // instead of attaching the event listeners directly to the element + // to ensure that the listeners are active before the NaCl module 'load' + // event fires. + var listenerDiv = document.getElementById('listener'); + listenerDiv.appendChild(moduleEl); + + // Request the offsetTop property to force a relayout. As of Apr 10, 2014 + // this is needed if the module is being loaded on a Chrome App's + // background page (see crbug.com/350445). + moduleEl.offsetTop; + + // Host plugins don't send a moduleDidLoad message. We'll fake it here. + var isHost = isHostToolchain(tool); + if (isHost) { + window.setTimeout(function() { + moduleEl.readyState = 1; + moduleEl.dispatchEvent(new CustomEvent('loadstart')); + moduleEl.readyState = 4; + moduleEl.dispatchEvent(new CustomEvent('load')); + moduleEl.dispatchEvent(new CustomEvent('loadend')); + }, 100); // 100 ms + } + + // This is code that is only used to test the SDK. + if (isTest) { + var loadNaClTest = function() { + injectScript('nacltest.js', function() { + runTests(moduleEl); + }); + }; + + // Try to load test.js for the example. Whether or not it exists, load + // nacltest.js. + injectScript('test.js', loadNaClTest, loadNaClTest); + } + } + + /** + * Add the default "load" and "message" event listeners to the element with + * id "listener". + * + * The "load" event is sent when the module is successfully loaded. The + * "message" event is sent when the naclModule posts a message using + * PPB_Messaging.PostMessage() (in C) or pp::Instance().PostMessage() (in + * C++). + */ + function attachDefaultListeners() { + var listenerDiv = document.getElementById('listener'); + listenerDiv.addEventListener('load', moduleDidLoad, true); + listenerDiv.addEventListener('message', handleMessage, true); + listenerDiv.addEventListener('error', handleError, true); + listenerDiv.addEventListener('crash', handleCrash, true); + if (typeof window.attachListeners !== 'undefined') { + window.attachListeners(); + } + } + + /** + * Called when the NaCl module fails to load. + * + * This event listener is registered in createNaClModule above. + */ + function handleError(event) { + // We can't use common.naclModule yet because the module has not been + // loaded. + var moduleEl = document.getElementById('nacl_module'); + updateStatus('ERROR [' + moduleEl.lastError + ']'); + } + + /** + * Called when the Browser can not communicate with the Module + * + * This event listener is registered in attachDefaultListeners above. + */ + function handleCrash(event) { + if (common.naclModule.exitStatus != 0) { + updateStatus('ABORTED [' + common.naclModule.exitStatus + ']'); + } else { + updateStatus('EXITED [' + common.naclModule.exitStatus + ']'); + } + if (typeof window.handleCrash !== 'undefined') { + window.handleCrash(common.naclModule.lastError); + } + } + + /** + * Called when the NaCl module is loaded. + * + * This event listener is registered in attachDefaultListeners above. + */ + function moduleDidLoad() { + common.naclModule = document.getElementById('nacl_module'); + updateStatus('RUNNING'); + + if (typeof window.moduleDidLoad !== 'undefined') { + window.moduleDidLoad(); + } + } + + /** + * Hide the NaCl module's embed element. + * + * We don't want to hide by default; if we do, it is harder to determine that + * a plugin failed to load. Instead, call this function inside the example's + * "moduleDidLoad" function. + * + */ + function hideModule() { + // Setting common.naclModule.style.display = "None" doesn't work; the + // module will no longer be able to receive postMessages. + common.naclModule.style.height = '0'; + } + + /** + * Remove the NaCl module from the page. + */ + function removeModule() { + common.naclModule.parentNode.removeChild(common.naclModule); + common.naclModule = null; + } + + /** + * Return true when |s| starts with the string |prefix|. + * + * @param {string} s The string to search. + * @param {string} prefix The prefix to search for in |s|. + */ + function startsWith(s, prefix) { + // indexOf would search the entire string, lastIndexOf(p, 0) only checks at + // the first index. See: http://stackoverflow.com/a/4579228 + return s.lastIndexOf(prefix, 0) === 0; + } + + /** Maximum length of logMessageArray. */ + var kMaxLogMessageLength = 7; + + /** An array of messages to display in the element with id "log". */ + var logMessageArray = []; + + /** + * Add a message to an element with id "log". + * + * This function is used by the default "log:" message handler. + * + * @param {string} message The message to log. + */ + function logMessage(message) { + logMessageArray.push(message); + if ( logMessageArray.length > kMaxLogMessageLength ) + logMessageArray.shift(); + + var node = document.createElement("div"); // Create a node + var dt = new DateTime(); + var date = dt.formats.pretty.c; + + var textnode = document.createTextNode(date + ': ' +message); // Create a text node + node.appendChild(textnode); // Append the text to
  • + document.getElementById("log").appendChild(node); + + //document.getElementById('log').appendChild(message); + console.log(message); + } + + /** + */ + var defaultMessageTypes = { + 'alert': alert, + 'log': logMessage + }; + + /** + * Called when the NaCl module sends a message to JavaScript (via + * PPB_Messaging.PostMessage()) + * + * This event listener is registered in createNaClModule above. + * + * @param {Event} message_event A message event. message_event.data contains + * the data sent from the NaCl module. + */ + function isJson(str) { + try { + JSON.parse(str); + } catch (e) { + return false; + } + return true; + } + + function retmsg(msg) + { + common.naclModule.postMessage(msg); + console.log("sent: "+msg); + } + + function handleMessage(message_event) + { + if(isJson(message_event.data)) + { + console.log("AAAA"); + var request = JSON.parse(message_event.data); + console.log(request); + if(request.method == "NxtAPI") + { + console.log(request.requestType); + Jay.request(request.requestType, JSON.parse(request.params), function(ans) { + retmsg(ans); + }) + } + else if(request.method == "status") + { + retmsg("{'status':'doing alright'}"); + } + else if(request.method == "signBytes") + { + var out = converters.byteArrayToHexString(signBytes(converters.hexStringToByteArray(request.bytes), request.secretPhrase)); + var ret = {}; + ret.signature = out; + retmsg(JSON.stringify(ret)); + } + else if(request.method == "createToken") + { + var out = createToken(request.data, request.secretPhrase); + var ret = {}; + ret.token = out; + retmsg(JSON.stringify(ret)); + } + else if(request.method == "parseToken") + { + var out = parseToken(request.token, request.data); + retmsg(JSON.stringify(out)); + } + console.log(request); + } + + if (typeof message_event.data === 'string') { + for (var type in defaultMessageTypes) { + if (defaultMessageTypes.hasOwnProperty(type)) { + if (startsWith(message_event.data, type + ':')) { + func = defaultMessageTypes[type]; + func(message_event.data.slice(type.length + 1)); + return; + } + } + } + } + + if (typeof window.handleMessage !== 'undefined') { + window.handleMessage(message_event); + return; + } + + logMessage('Unhandled message: ' + message_event.data); + } + + /** + * Called when the DOM content has loaded; i.e. the page's document is fully + * parsed. At this point, we can safely query any elements in the document via + * document.querySelector, document.getElementById, etc. + * + * @param {string} name The name of the example. + * @param {string} tool The name of the toolchain, e.g. "glibc", "newlib" etc. + * @param {string} path Directory name where .nmf file can be found. + * @param {number} width The width to create the plugin. + * @param {number} height The height to create the plugin. + * @param {Object} attrs Optional dictionary of additional attributes. + */ + function domContentLoaded(name, tool, path, width, height, attrs) { + // If the page loads before the Native Client module loads, then set the + // status message indicating that the module is still loading. Otherwise, + // do not change the status message. + updateStatus('Page loaded.'); + if (!browserSupportsNaCl(tool)) { + updateStatus( + 'Browser does not support NaCl (' + tool + '), or NaCl is disabled'); + } else if (common.naclModule == null) { + updateStatus('Creating embed: ' + tool); + + // We use a non-zero sized embed to give Chrome space to place the bad + // plug-in graphic, if there is a problem. + width = typeof width !== 'undefined' ? width : 200; + height = typeof height !== 'undefined' ? height : 200; + attachDefaultListeners(); + createNaClModule(name, tool, path, width, height, attrs); + } else { + // It's possible that the Native Client module onload event fired + // before the page's onload event. In this case, the status message + // will reflect 'SUCCESS', but won't be displayed. This call will + // display the current message. + updateStatus('Waiting.'); + } + } + + /** Saved text to display in the element with id 'statusField'. */ + var statusText = 'NO-STATUSES'; + + /** + * Set the global status message. If the element with id 'statusField' + * exists, then set its HTML to the status message as well. + * + * @param {string} opt_message The message to set. If null or undefined, then + * set element 'statusField' to the message from the last call to + * updateStatus. + */ + function updateStatus(opt_message) { + if (opt_message) { + statusText = opt_message; + } + var statusField = document.getElementById('statusField'); + if (statusField) { + statusField.innerHTML = statusText; + } + } + + // The symbols to export. + return { + /** A reference to the NaCl module, once it is loaded. */ + naclModule: null, + + attachDefaultListeners: attachDefaultListeners, + domContentLoaded: domContentLoaded, + createNaClModule: createNaClModule, + hideModule: hideModule, + removeModule: removeModule, + logMessage: logMessage, + updateStatus: updateStatus + }; + +}()); + +// Listen for the DOM content to be loaded. This event is fired when parsing of +// the page's document has finished. +document.addEventListener('DOMContentLoaded', function() { + + var body = document.body; + + // The data-* attributes on the body can be referenced via body.dataset. + if (body.dataset) { + var loadFunction; + if (!body.dataset.customLoad) { + loadFunction = common.domContentLoaded; + } else if (typeof window.domContentLoaded !== 'undefined') { + loadFunction = window.domContentLoaded; + } + + // From https://developer.mozilla.org/en-US/docs/DOM/window.location + var searchVars = {}; + if (window.location.search.length > 1) { + var pairs = window.location.search.substr(1).split('&'); + for (var key_ix = 0; key_ix < pairs.length; key_ix++) { + var keyValue = pairs[key_ix].split('='); + searchVars[unescape(keyValue[0])] = + keyValue.length > 1 ? unescape(keyValue[1]) : ''; + } + } + + if (loadFunction) { + var toolchains = body.dataset.tools.split(' '); + var configs = body.dataset.configs.split(' '); + + var attrs = {}; + if (body.dataset.attrs) { + var attr_list = body.dataset.attrs.split(' '); + for (var key in attr_list) { + var attr = attr_list[key].split('='); + var key = attr[0]; + var value = attr[1]; + attrs[key] = value; + } + } + + var tc = toolchains.indexOf(searchVars.tc) !== -1 ? + searchVars.tc : toolchains[0]; + + // If the config value is included in the search vars, use that. + // Otherwise default to Release if it is valid, or the first value if + // Release is not valid. + if (configs.indexOf(searchVars.config) !== -1) + var config = searchVars.config; + else if (configs.indexOf('Release') !== -1) + var config = 'Release'; + else + var config = configs[0]; + + var pathFormat = body.dataset.path; + var path = pathFormat.replace('{tc}', tc).replace('{config}', config); + + isTest = searchVars.test === 'true'; + isRelease = path.toLowerCase().indexOf('release') != -1; + + loadFunction(body.dataset.name, tc, path, body.dataset.width, + body.dataset.height, attrs); + } + } +}); diff --git a/iguana/app/startup.js b/iguana/app/startup.js new file mode 100644 index 000000000..4c1f3fca2 --- /dev/null +++ b/iguana/app/startup.js @@ -0,0 +1,24 @@ +$(function () { + console.log('jquery loaded'); + $.material.init(); + $(".select ").dropdown({ "autoinit ": ".select " }); + + startCoinManagement(); + startPeerManagement(); + + // Event Handlers + + // $('.coinMgmtActionButton').click equivelant w/o jQuery + document.body.onclick = function (e) { + e = window.event ? event.srcElement : e.target; + if (e.className && e.className.indexOf('coinMgmtActionButton') != -1) { + deleteCoin(e.getAttribute('data-id')); + } + else if (e.className && e.className.indexOf('addPeerToFav') != -1) { + addPeerToFav(e.getAttribute('data-id')); + } + else if (e.className && e.className.indexOf('removePeerFromFav') != -1) { + removePeerFromFav(e.getAttribute('data-id')); + } + }; +}); \ No newline at end of file diff --git a/iguana/background.js b/iguana/background.js new file mode 100755 index 000000000..5c3b1b7c9 --- /dev/null +++ b/iguana/background.js @@ -0,0 +1,40 @@ +// Copyright (c) 2013 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +function makeURL(toolchain, config) { + return 'index.html?tc=' + toolchain + '&config=' + config; +} + +function createWindow(url) { + console.log('loading ' + url); + chrome.app.window.create(url, { + width: 1024, + height: 800, + frame: 'none' + }); +} + +function onLaunched(launchData) { + // Send and XHR to get the URL to load from a configuration file. + // Normally you won't need to do this; just call: + // + // chrome.app.window.create('', {...}); + // + // In the SDK we want to be able to load different URLs (for different + // toolchain/config combinations) from the commandline, so we to read + // this information from the file "run_package_config". + var xhr = new XMLHttpRequest(); + xhr.open('GET', 'run_package_config', true); + xhr.onload = function() { + var toolchain_config = this.responseText.split(' '); + createWindow(makeURL.apply(null, toolchain_config)); + }; + xhr.onerror = function() { + // Can't find the config file, just load the default. + createWindow('index.html'); + }; + xhr.send(); +} + +chrome.app.runtime.onLaunched.addListener(onLaunched); diff --git a/iguana/css/googleFonts.css b/iguana/css/googleFonts.css new file mode 100644 index 000000000..634ff4c2c --- /dev/null +++ b/iguana/css/googleFonts.css @@ -0,0 +1,24 @@ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-weight: 300; + src: url("../fonts/Roboto-Light.woff2") format("woff2"); +} +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-weight: 400; + src: url("../fonts/Roboto-Regular.woff2") format("woff2"); +} +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-weight: 500; + src: url("../fonts/Roboto-Medium.woff2") format("woff2"); +} +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-weight: 700; + src: url("../fonts/Roboto-Bold.woff2") format("woff2"); +} diff --git a/iguana/css/googleIcons.css b/iguana/css/googleIcons.css new file mode 100644 index 000000000..89b3c1ee2 --- /dev/null +++ b/iguana/css/googleIcons.css @@ -0,0 +1,22 @@ +@font-face { + font-family: 'Material Icons'; + font-style: normal; + font-weight: 400; + src: url("../fonts/MaterialIcons-Regular.woff2"), format("woff2"); +} + +.material-icons { + font-family: 'Material Icons'; + font-weight: normal; + font-style: normal; + font-size: 24px; + line-height: 1; + letter-spacing: normal; + text-transform: none; + display: inline-block; + white-space: nowrap; + word-wrap: normal; + direction: ltr; + -moz-font-feature-settings: 'liga'; + -moz-osx-font-smoothing: grayscale; +} \ No newline at end of file diff --git a/iguana/css/googleTheme.css b/iguana/css/googleTheme.css new file mode 100644 index 000000000..7143e1e0a --- /dev/null +++ b/iguana/css/googleTheme.css @@ -0,0 +1,2 @@ +body{background-color:#EEE}body.inverse{background:#333}body.inverse,body.inverse .form-control{color:rgba(255,255,255,.84)}body.inverse .card,body.inverse .card .form-control,body.inverse .modal,body.inverse .modal .form-control,body.inverse .panel-default,body.inverse .panel-default .form-control{background-color:initial;color:initial}.h1,.h2,.h3,.h4,body,h1,h2,h3,h4,h5,h6{font-family:Roboto,Helvetica,Arial,sans-serif;font-weight:300}h5,h6{font-weight:400}a,a:focus,a:hover{color:#009688}a .material-icons,a:focus .material-icons,a:hover .material-icons{vertical-align:middle}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{padding-top:0}.form-horizontal .radio{margin-bottom:10px}.form-horizontal label{text-align:right}.form-horizontal label.control-label{margin:0}body .container .well.well-sm,body .container-fluid .well.well-sm{padding:10px}body .container .well.well-lg,body .container-fluid .well.well-lg{padding:26px}body .container .jumbotron,body .container .well,body .container-fluid .jumbotron,body .container-fluid .well{background-color:#fff;padding:19px;margin-bottom:20px;-webkit-box-shadow:0 8px 17px 0 rgba(0,0,0,.2),0 6px 20px 0 rgba(0,0,0,.19);box-shadow:0 8px 17px 0 rgba(0,0,0,.2),0 6px 20px 0 rgba(0,0,0,.19);border-radius:2px;border:0}body .container .jumbotron p,body .container .well p,body .container-fluid .jumbotron p,body .container-fluid .well p{font-weight:300}body .container .jumbotron,body .container .jumbotron-default,body .container .well,body .container .well-default,body .container-fluid .jumbotron,body .container-fluid .jumbotron-default,body .container-fluid .well,body .container-fluid .well-default{background-color:#fff}body .container .jumbotron-inverse,body .container .well-inverse,body .container-fluid .jumbotron-inverse,body .container-fluid .well-inverse{background-color:#3f51b5}body .container .jumbotron-primary,body .container .well-primary,body .container-fluid .jumbotron-primary,body .container-fluid .well-primary{background-color:#009688}body .container .jumbotron-success,body .container .well-success,body .container-fluid .jumbotron-success,body .container-fluid .well-success{background-color:#4caf50}body .container .jumbotron-info,body .container .well-info,body .container-fluid .jumbotron-info,body .container-fluid .well-info{background-color:#03a9f4}body .container .jumbotron-warning,body .container .well-warning,body .container-fluid .jumbotron-warning,body .container-fluid .well-warning{background-color:#ff5722}body .container .jumbotron-danger,body .container .well-danger,body .container-fluid .jumbotron-danger,body .container-fluid .well-danger{background-color:#f44336}.btn,.input-group-btn .btn{border:none;border-radius:2px;position:relative;padding:8px 30px;margin:10px 1px;font-size:14px;font-weight:500;text-transform:uppercase;letter-spacing:0;will-change:box-shadow,transform;-webkit-transition:-webkit-box-shadow .2s cubic-bezier(.4,0,1,1),background-color .2s cubic-bezier(.4,0,.2,1),color .2s cubic-bezier(.4,0,.2,1);-o-transition:box-shadow .2s cubic-bezier(.4,0,1,1),background-color .2s cubic-bezier(.4,0,.2,1),color .2s cubic-bezier(.4,0,.2,1);transition:box-shadow .2s cubic-bezier(.4,0,1,1),background-color .2s cubic-bezier(.4,0,.2,1),color .2s cubic-bezier(.4,0,.2,1);outline:0;cursor:pointer;text-decoration:none;background:0 0}.btn::-moz-focus-inner,.input-group-btn .btn::-moz-focus-inner{border:0}.btn:not(.btn-raised),.input-group-btn .btn:not(.btn-raised){-webkit-box-shadow:none;box-shadow:none}.btn:not(.btn-raised),.btn:not(.btn-raised).btn-default,.input-group-btn .btn:not(.btn-raised),.input-group-btn .btn:not(.btn-raised).btn-default{color:rgba(0,0,0,.87)}.btn:not(.btn-raised).btn-inverse,.input-group-btn .btn:not(.btn-raised).btn-inverse{color:#3f51b5}.btn:not(.btn-raised).btn-primary,.input-group-btn .btn:not(.btn-raised).btn-primary{color:#009688}.btn:not(.btn-raised).btn-success,.input-group-btn .btn:not(.btn-raised).btn-success{color:#4caf50}.btn:not(.btn-raised).btn-info,.input-group-btn .btn:not(.btn-raised).btn-info{color:#03a9f4}.btn:not(.btn-raised).btn-warning,.input-group-btn .btn:not(.btn-raised).btn-warning{color:#ff5722}.btn:not(.btn-raised).btn-danger,.input-group-btn .btn:not(.btn-raised).btn-danger{color:#f44336}.btn:not(.btn-raised):not(.btn-link):focus,.btn:not(.btn-raised):not(.btn-link):hover,.input-group-btn .btn:not(.btn-raised):not(.btn-link):focus,.input-group-btn .btn:not(.btn-raised):not(.btn-link):hover{background-color:rgba(153,153,153,.2)}.theme-dark .btn:not(.btn-raised):not(.btn-link):focus,.theme-dark .btn:not(.btn-raised):not(.btn-link):hover,.theme-dark .input-group-btn .btn:not(.btn-raised):not(.btn-link):focus,.theme-dark .input-group-btn .btn:not(.btn-raised):not(.btn-link):hover{background-color:rgba(204,204,204,.15)}.btn-group-raised .btn,.btn-group-raised .btn.btn-default,.btn-group-raised .input-group-btn .btn,.btn-group-raised .input-group-btn .btn.btn-default,.btn.btn-fab,.btn.btn-fab.btn-default,.btn.btn-raised,.btn.btn-raised.btn-default,.input-group-btn .btn.btn-fab,.input-group-btn .btn.btn-fab.btn-default,.input-group-btn .btn.btn-raised,.input-group-btn .btn.btn-raised.btn-default{background-color:#EEE;color:rgba(0,0,0,.87)}.btn-group-raised .btn.btn-inverse,.btn-group-raised .input-group-btn .btn.btn-inverse,.btn.btn-fab.btn-inverse,.btn.btn-raised.btn-inverse,.input-group-btn .btn.btn-fab.btn-inverse,.input-group-btn .btn.btn-raised.btn-inverse{background-color:#3f51b5;color:#fff}.btn-group-raised .btn.btn-primary,.btn-group-raised .input-group-btn .btn.btn-primary,.btn.btn-fab.btn-primary,.btn.btn-raised.btn-primary,.input-group-btn .btn.btn-fab.btn-primary,.input-group-btn .btn.btn-raised.btn-primary{background-color:#009688;color:rgba(255,255,255,.84)}.btn-group-raised .btn.btn-success,.btn-group-raised .input-group-btn .btn.btn-success,.btn.btn-fab.btn-success,.btn.btn-raised.btn-success,.input-group-btn .btn.btn-fab.btn-success,.input-group-btn .btn.btn-raised.btn-success{background-color:#4caf50;color:rgba(255,255,255,.84)}.btn-group-raised .btn.btn-info,.btn-group-raised .input-group-btn .btn.btn-info,.btn.btn-fab.btn-info,.btn.btn-raised.btn-info,.input-group-btn .btn.btn-fab.btn-info,.input-group-btn .btn.btn-raised.btn-info{background-color:#03a9f4;color:rgba(255,255,255,.84)}.btn-group-raised .btn.btn-warning,.btn-group-raised .input-group-btn .btn.btn-warning,.btn.btn-fab.btn-warning,.btn.btn-raised.btn-warning,.input-group-btn .btn.btn-fab.btn-warning,.input-group-btn .btn.btn-raised.btn-warning{background-color:#ff5722;color:rgba(255,255,255,.84)}.btn-group-raised .btn.btn-danger,.btn-group-raised .input-group-btn .btn.btn-danger,.btn.btn-fab.btn-danger,.btn.btn-raised.btn-danger,.input-group-btn .btn.btn-fab.btn-danger,.input-group-btn .btn.btn-raised.btn-danger{background-color:#f44336;color:rgba(255,255,255,.84)}.btn-group-raised .btn:not(.btn-link),.btn-group-raised .input-group-btn .btn:not(.btn-link),.btn.btn-raised:not(.btn-link),.input-group-btn .btn.btn-raised:not(.btn-link){-webkit-box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.2),0 1px 5px 0 rgba(0,0,0,.12);box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.2),0 1px 5px 0 rgba(0,0,0,.12)}.btn-group-raised .btn:not(.btn-link).active,.btn-group-raised .btn:not(.btn-link).active.btn-default,.btn-group-raised .btn:not(.btn-link):active,.btn-group-raised .btn:not(.btn-link):active.btn-default,.btn-group-raised .btn:not(.btn-link):focus,.btn-group-raised .btn:not(.btn-link):focus.btn-default,.btn-group-raised .btn:not(.btn-link):hover,.btn-group-raised .btn:not(.btn-link):hover.btn-default,.btn-group-raised .input-group-btn .btn:not(.btn-link).active,.btn-group-raised .input-group-btn .btn:not(.btn-link).active.btn-default,.btn-group-raised .input-group-btn .btn:not(.btn-link):active,.btn-group-raised .input-group-btn .btn:not(.btn-link):active.btn-default,.btn-group-raised .input-group-btn .btn:not(.btn-link):focus,.btn-group-raised .input-group-btn .btn:not(.btn-link):focus.btn-default,.btn-group-raised .input-group-btn .btn:not(.btn-link):hover,.btn-group-raised .input-group-btn .btn:not(.btn-link):hover.btn-default,.btn.btn-raised:not(.btn-link).active,.btn.btn-raised:not(.btn-link).active.btn-default,.btn.btn-raised:not(.btn-link):active,.btn.btn-raised:not(.btn-link):active.btn-default,.btn.btn-raised:not(.btn-link):focus,.btn.btn-raised:not(.btn-link):focus.btn-default,.btn.btn-raised:not(.btn-link):hover,.btn.btn-raised:not(.btn-link):hover.btn-default,.input-group-btn .btn.btn-raised:not(.btn-link).active,.input-group-btn .btn.btn-raised:not(.btn-link).active.btn-default,.input-group-btn .btn.btn-raised:not(.btn-link):active,.input-group-btn .btn.btn-raised:not(.btn-link):active.btn-default,.input-group-btn .btn.btn-raised:not(.btn-link):focus,.input-group-btn .btn.btn-raised:not(.btn-link):focus.btn-default,.input-group-btn .btn.btn-raised:not(.btn-link):hover,.input-group-btn .btn.btn-raised:not(.btn-link):hover.btn-default{background-color:#e4e4e4}.btn-group-raised .btn:not(.btn-link).active.btn-inverse,.btn-group-raised .btn:not(.btn-link):active.btn-inverse,.btn-group-raised .btn:not(.btn-link):focus.btn-inverse,.btn-group-raised .btn:not(.btn-link):hover.btn-inverse,.btn-group-raised .input-group-btn .btn:not(.btn-link).active.btn-inverse,.btn-group-raised .input-group-btn .btn:not(.btn-link):active.btn-inverse,.btn-group-raised .input-group-btn .btn:not(.btn-link):focus.btn-inverse,.btn-group-raised .input-group-btn .btn:not(.btn-link):hover.btn-inverse,.btn.btn-raised:not(.btn-link).active.btn-inverse,.btn.btn-raised:not(.btn-link):active.btn-inverse,.btn.btn-raised:not(.btn-link):focus.btn-inverse,.btn.btn-raised:not(.btn-link):hover.btn-inverse,.input-group-btn .btn.btn-raised:not(.btn-link).active.btn-inverse,.input-group-btn .btn.btn-raised:not(.btn-link):active.btn-inverse,.input-group-btn .btn.btn-raised:not(.btn-link):focus.btn-inverse,.input-group-btn .btn.btn-raised:not(.btn-link):hover.btn-inverse{background-color:#495bc0}.btn-group-raised .btn:not(.btn-link).active.btn-primary,.btn-group-raised .btn:not(.btn-link):active.btn-primary,.btn-group-raised .btn:not(.btn-link):focus.btn-primary,.btn-group-raised .btn:not(.btn-link):hover.btn-primary,.btn-group-raised .input-group-btn .btn:not(.btn-link).active.btn-primary,.btn-group-raised .input-group-btn .btn:not(.btn-link):active.btn-primary,.btn-group-raised .input-group-btn .btn:not(.btn-link):focus.btn-primary,.btn-group-raised .input-group-btn .btn:not(.btn-link):hover.btn-primary,.btn.btn-raised:not(.btn-link).active.btn-primary,.btn.btn-raised:not(.btn-link):active.btn-primary,.btn.btn-raised:not(.btn-link):focus.btn-primary,.btn.btn-raised:not(.btn-link):hover.btn-primary,.input-group-btn .btn.btn-raised:not(.btn-link).active.btn-primary,.input-group-btn .btn.btn-raised:not(.btn-link):active.btn-primary,.input-group-btn .btn.btn-raised:not(.btn-link):focus.btn-primary,.input-group-btn .btn.btn-raised:not(.btn-link):hover.btn-primary{background-color:#00aa9a}.btn-group-raised .btn:not(.btn-link).active.btn-success,.btn-group-raised .btn:not(.btn-link):active.btn-success,.btn-group-raised .btn:not(.btn-link):focus.btn-success,.btn-group-raised .btn:not(.btn-link):hover.btn-success,.btn-group-raised .input-group-btn .btn:not(.btn-link).active.btn-success,.btn-group-raised .input-group-btn .btn:not(.btn-link):active.btn-success,.btn-group-raised .input-group-btn .btn:not(.btn-link):focus.btn-success,.btn-group-raised .input-group-btn .btn:not(.btn-link):hover.btn-success,.btn.btn-raised:not(.btn-link).active.btn-success,.btn.btn-raised:not(.btn-link):active.btn-success,.btn.btn-raised:not(.btn-link):focus.btn-success,.btn.btn-raised:not(.btn-link):hover.btn-success,.input-group-btn .btn.btn-raised:not(.btn-link).active.btn-success,.input-group-btn .btn.btn-raised:not(.btn-link):active.btn-success,.input-group-btn .btn.btn-raised:not(.btn-link):focus.btn-success,.input-group-btn .btn.btn-raised:not(.btn-link):hover.btn-success{background-color:#59b75c}.btn-group-raised .btn:not(.btn-link).active.btn-info,.btn-group-raised .btn:not(.btn-link):active.btn-info,.btn-group-raised .btn:not(.btn-link):focus.btn-info,.btn-group-raised .btn:not(.btn-link):hover.btn-info,.btn-group-raised .input-group-btn .btn:not(.btn-link).active.btn-info,.btn-group-raised .input-group-btn .btn:not(.btn-link):active.btn-info,.btn-group-raised .input-group-btn .btn:not(.btn-link):focus.btn-info,.btn-group-raised .input-group-btn .btn:not(.btn-link):hover.btn-info,.btn.btn-raised:not(.btn-link).active.btn-info,.btn.btn-raised:not(.btn-link):active.btn-info,.btn.btn-raised:not(.btn-link):focus.btn-info,.btn.btn-raised:not(.btn-link):hover.btn-info,.input-group-btn .btn.btn-raised:not(.btn-link).active.btn-info,.input-group-btn .btn.btn-raised:not(.btn-link):active.btn-info,.input-group-btn .btn.btn-raised:not(.btn-link):focus.btn-info,.input-group-btn .btn.btn-raised:not(.btn-link):hover.btn-info{background-color:#0fb2fc}.btn-group-raised .btn:not(.btn-link).active.btn-warning,.btn-group-raised .btn:not(.btn-link):active.btn-warning,.btn-group-raised .btn:not(.btn-link):focus.btn-warning,.btn-group-raised .btn:not(.btn-link):hover.btn-warning,.btn-group-raised .input-group-btn .btn:not(.btn-link).active.btn-warning,.btn-group-raised .input-group-btn .btn:not(.btn-link):active.btn-warning,.btn-group-raised .input-group-btn .btn:not(.btn-link):focus.btn-warning,.btn-group-raised .input-group-btn .btn:not(.btn-link):hover.btn-warning,.btn.btn-raised:not(.btn-link).active.btn-warning,.btn.btn-raised:not(.btn-link):active.btn-warning,.btn.btn-raised:not(.btn-link):focus.btn-warning,.btn.btn-raised:not(.btn-link):hover.btn-warning,.input-group-btn .btn.btn-raised:not(.btn-link).active.btn-warning,.input-group-btn .btn.btn-raised:not(.btn-link):active.btn-warning,.input-group-btn .btn.btn-raised:not(.btn-link):focus.btn-warning,.input-group-btn .btn.btn-raised:not(.btn-link):hover.btn-warning{background-color:#ff6736}.btn-group-raised .btn:not(.btn-link).active.btn-danger,.btn-group-raised .btn:not(.btn-link):active.btn-danger,.btn-group-raised .btn:not(.btn-link):focus.btn-danger,.btn-group-raised .btn:not(.btn-link):hover.btn-danger,.btn-group-raised .input-group-btn .btn:not(.btn-link).active.btn-danger,.btn-group-raised .input-group-btn .btn:not(.btn-link):active.btn-danger,.btn-group-raised .input-group-btn .btn:not(.btn-link):focus.btn-danger,.btn-group-raised .input-group-btn .btn:not(.btn-link):hover.btn-danger,.btn.btn-raised:not(.btn-link).active.btn-danger,.btn.btn-raised:not(.btn-link):active.btn-danger,.btn.btn-raised:not(.btn-link):focus.btn-danger,.btn.btn-raised:not(.btn-link):hover.btn-danger,.input-group-btn .btn.btn-raised:not(.btn-link).active.btn-danger,.input-group-btn .btn.btn-raised:not(.btn-link):active.btn-danger,.input-group-btn .btn.btn-raised:not(.btn-link):focus.btn-danger,.input-group-btn .btn.btn-raised:not(.btn-link):hover.btn-danger{background-color:#f55549}.btn-group-raised .btn:not(.btn-link).active,.btn-group-raised .btn:not(.btn-link).active:hover,.btn-group-raised .btn:not(.btn-link):active,.btn-group-raised .btn:not(.btn-link):active:hover,.btn-group-raised .input-group-btn .btn:not(.btn-link).active,.btn-group-raised .input-group-btn .btn:not(.btn-link).active:hover,.btn-group-raised .input-group-btn .btn:not(.btn-link):active,.btn-group-raised .input-group-btn .btn:not(.btn-link):active:hover,.btn.btn-raised:not(.btn-link).active,.btn.btn-raised:not(.btn-link).active:hover,.btn.btn-raised:not(.btn-link):active,.btn.btn-raised:not(.btn-link):active:hover,.input-group-btn .btn.btn-raised:not(.btn-link).active,.input-group-btn .btn.btn-raised:not(.btn-link).active:hover,.input-group-btn .btn.btn-raised:not(.btn-link):active,.input-group-btn .btn.btn-raised:not(.btn-link):active:hover{-webkit-box-shadow:0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12),0 2px 4px -1px rgba(0,0,0,.2);box-shadow:0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12),0 2px 4px -1px rgba(0,0,0,.2)}.btn-group-raised .btn:not(.btn-link):focus,.btn-group-raised .btn:not(.btn-link):focus.active,.btn-group-raised .btn:not(.btn-link):focus.active:hover,.btn-group-raised .btn:not(.btn-link):focus:active,.btn-group-raised .btn:not(.btn-link):focus:active:hover,.btn-group-raised .btn:not(.btn-link):focus:hover,.btn-group-raised .input-group-btn .btn:not(.btn-link):focus,.btn-group-raised .input-group-btn .btn:not(.btn-link):focus.active,.btn-group-raised .input-group-btn .btn:not(.btn-link):focus.active:hover,.btn-group-raised .input-group-btn .btn:not(.btn-link):focus:active,.btn-group-raised .input-group-btn .btn:not(.btn-link):focus:active:hover,.btn-group-raised .input-group-btn .btn:not(.btn-link):focus:hover,.btn.btn-raised:not(.btn-link):focus,.btn.btn-raised:not(.btn-link):focus.active,.btn.btn-raised:not(.btn-link):focus.active:hover,.btn.btn-raised:not(.btn-link):focus:active,.btn.btn-raised:not(.btn-link):focus:active:hover,.btn.btn-raised:not(.btn-link):focus:hover,.input-group-btn .btn.btn-raised:not(.btn-link):focus,.input-group-btn .btn.btn-raised:not(.btn-link):focus.active,.input-group-btn .btn.btn-raised:not(.btn-link):focus.active:hover,.input-group-btn .btn.btn-raised:not(.btn-link):focus:active,.input-group-btn .btn.btn-raised:not(.btn-link):focus:active:hover,.input-group-btn .btn.btn-raised:not(.btn-link):focus:hover{-webkit-box-shadow:0 0 8px rgba(0,0,0,.18),0 8px 16px rgba(0,0,0,.36);box-shadow:0 0 8px rgba(0,0,0,.18),0 8px 16px rgba(0,0,0,.36)}.btn.btn-fab,.input-group-btn .btn.btn-fab{border-radius:50%;font-size:24px;height:56px;margin:auto;min-width:56px;width:56px;padding:0;overflow:hidden;-webkit-box-shadow:0 1px 1.5px 0 rgba(0,0,0,.12),0 1px 1px 0 rgba(0,0,0,.24);box-shadow:0 1px 1.5px 0 rgba(0,0,0,.12),0 1px 1px 0 rgba(0,0,0,.24);position:relative;line-height:normal}.btn.btn-fab .ripple-container,.input-group-btn .btn.btn-fab .ripple-container{border-radius:50%}.btn-group-sm .btn.btn-fab,.btn-group-sm .input-group-btn .btn.btn-fab,.btn.btn-fab.btn-fab-mini,.input-group-btn .btn.btn-fab.btn-fab-mini{height:40px;min-width:40px;width:40px}.btn-group-sm .btn.btn-fab.material-icons,.btn-group-sm .input-group-btn .btn.btn-fab.material-icons,.btn.btn-fab.btn-fab-mini.material-icons,.input-group-btn .btn.btn-fab.btn-fab-mini.material-icons{top:0;left:0}.btn.btn-fab i.material-icons,.input-group-btn .btn.btn-fab i.material-icons{position:absolute;top:50%;left:50%;-webkit-transform:translate(-12px,-12px);-ms-transform:translate(-12px,-12px);-o-transform:translate(-12px,-12px);transform:translate(-12px,-12px);line-height:24px;width:24px}.btn i.material-icons,.input-group-btn .btn i.material-icons{vertical-align:middle}.btn-group-lg .btn,.btn-group-lg .input-group-btn .btn,.btn.btn-lg,.input-group-btn .btn.btn-lg{font-size:16px}.btn-group-sm .btn,.btn-group-sm .input-group-btn .btn,.btn.btn-sm,.input-group-btn .btn.btn-sm{padding:5px 20px;font-size:12px}.btn-group-xs .btn,.btn-group-xs .input-group-btn .btn,.btn.btn-xs,.input-group-btn .btn.btn-xs{padding:4px 15px;font-size:10px}.btn-group-vertical.disabled,.btn-group-vertical:disabled,.btn-group-vertical[disabled][disabled],.btn-group.disabled,.btn-group:disabled,.btn-group[disabled][disabled],.btn.disabled,.btn:disabled,.btn[disabled][disabled],.input-group-btn .btn.disabled,.input-group-btn .btn:disabled,.input-group-btn .btn[disabled][disabled],fieldset[disabled][disabled] .btn,fieldset[disabled][disabled] .btn-group,fieldset[disabled][disabled] .btn-group-vertical,fieldset[disabled][disabled] .input-group-btn .btn{color:rgba(0,0,0,.26);background:0 0}.theme-dark .btn-group-vertical.disabled,.theme-dark .btn-group-vertical:disabled,.theme-dark .btn-group-vertical[disabled][disabled],.theme-dark .btn-group.disabled,.theme-dark .btn-group:disabled,.theme-dark .btn-group[disabled][disabled],.theme-dark .btn.disabled,.theme-dark .btn:disabled,.theme-dark .btn[disabled][disabled],.theme-dark .input-group-btn .btn.disabled,.theme-dark .input-group-btn .btn:disabled,.theme-dark .input-group-btn .btn[disabled][disabled],.theme-dark fieldset[disabled][disabled] .btn,.theme-dark fieldset[disabled][disabled] .btn-group,.theme-dark fieldset[disabled][disabled] .btn-group-vertical,.theme-dark fieldset[disabled][disabled] .input-group-btn .btn{color:rgba(255,255,255,.3)}.btn-group-vertical.disabled.btn-group-raised,.btn-group-vertical.disabled.btn-group-raised.active,.btn-group-vertical.disabled.btn-group-raised:active,.btn-group-vertical.disabled.btn-group-raised:focus:not(:active),.btn-group-vertical.disabled.btn-raised,.btn-group-vertical.disabled.btn-raised.active,.btn-group-vertical.disabled.btn-raised:active,.btn-group-vertical.disabled.btn-raised:focus:not(:active),.btn-group-vertical:disabled.btn-group-raised,.btn-group-vertical:disabled.btn-group-raised.active,.btn-group-vertical:disabled.btn-group-raised:active,.btn-group-vertical:disabled.btn-group-raised:focus:not(:active),.btn-group-vertical:disabled.btn-raised,.btn-group-vertical:disabled.btn-raised.active,.btn-group-vertical:disabled.btn-raised:active,.btn-group-vertical:disabled.btn-raised:focus:not(:active),.btn-group-vertical[disabled][disabled].btn-group-raised,.btn-group-vertical[disabled][disabled].btn-group-raised.active,.btn-group-vertical[disabled][disabled].btn-group-raised:active,.btn-group-vertical[disabled][disabled].btn-group-raised:focus:not(:active),.btn-group-vertical[disabled][disabled].btn-raised,.btn-group-vertical[disabled][disabled].btn-raised.active,.btn-group-vertical[disabled][disabled].btn-raised:active,.btn-group-vertical[disabled][disabled].btn-raised:focus:not(:active),.btn-group.disabled.btn-group-raised,.btn-group.disabled.btn-group-raised.active,.btn-group.disabled.btn-group-raised:active,.btn-group.disabled.btn-group-raised:focus:not(:active),.btn-group.disabled.btn-raised,.btn-group.disabled.btn-raised.active,.btn-group.disabled.btn-raised:active,.btn-group.disabled.btn-raised:focus:not(:active),.btn-group:disabled.btn-group-raised,.btn-group:disabled.btn-group-raised.active,.btn-group:disabled.btn-group-raised:active,.btn-group:disabled.btn-group-raised:focus:not(:active),.btn-group:disabled.btn-raised,.btn-group:disabled.btn-raised.active,.btn-group:disabled.btn-raised:active,.btn-group:disabled.btn-raised:focus:not(:active),.btn-group[disabled][disabled].btn-group-raised,.btn-group[disabled][disabled].btn-group-raised.active,.btn-group[disabled][disabled].btn-group-raised:active,.btn-group[disabled][disabled].btn-group-raised:focus:not(:active),.btn-group[disabled][disabled].btn-raised,.btn-group[disabled][disabled].btn-raised.active,.btn-group[disabled][disabled].btn-raised:active,.btn-group[disabled][disabled].btn-raised:focus:not(:active),.btn.disabled.btn-group-raised,.btn.disabled.btn-group-raised.active,.btn.disabled.btn-group-raised:active,.btn.disabled.btn-group-raised:focus:not(:active),.btn.disabled.btn-raised,.btn.disabled.btn-raised.active,.btn.disabled.btn-raised:active,.btn.disabled.btn-raised:focus:not(:active),.btn:disabled.btn-group-raised,.btn:disabled.btn-group-raised.active,.btn:disabled.btn-group-raised:active,.btn:disabled.btn-group-raised:focus:not(:active),.btn:disabled.btn-raised,.btn:disabled.btn-raised.active,.btn:disabled.btn-raised:active,.btn:disabled.btn-raised:focus:not(:active),.btn[disabled][disabled].btn-group-raised,.btn[disabled][disabled].btn-group-raised.active,.btn[disabled][disabled].btn-group-raised:active,.btn[disabled][disabled].btn-group-raised:focus:not(:active),.btn[disabled][disabled].btn-raised,.btn[disabled][disabled].btn-raised.active,.btn[disabled][disabled].btn-raised:active,.btn[disabled][disabled].btn-raised:focus:not(:active),.input-group-btn .btn.disabled.btn-group-raised,.input-group-btn .btn.disabled.btn-group-raised.active,.input-group-btn .btn.disabled.btn-group-raised:active,.input-group-btn .btn.disabled.btn-group-raised:focus:not(:active),.input-group-btn .btn.disabled.btn-raised,.input-group-btn .btn.disabled.btn-raised.active,.input-group-btn .btn.disabled.btn-raised:active,.input-group-btn .btn.disabled.btn-raised:focus:not(:active),.input-group-btn .btn:disabled.btn-group-raised,.input-group-btn .btn:disabled.btn-group-raised.active,.input-group-btn .btn:disabled.btn-group-raised:active,.input-group-btn .btn:disabled.btn-group-raised:focus:not(:active),.input-group-btn .btn:disabled.btn-raised,.input-group-btn .btn:disabled.btn-raised.active,.input-group-btn .btn:disabled.btn-raised:active,.input-group-btn .btn:disabled.btn-raised:focus:not(:active),.input-group-btn .btn[disabled][disabled].btn-group-raised,.input-group-btn .btn[disabled][disabled].btn-group-raised.active,.input-group-btn .btn[disabled][disabled].btn-group-raised:active,.input-group-btn .btn[disabled][disabled].btn-group-raised:focus:not(:active),.input-group-btn .btn[disabled][disabled].btn-raised,.input-group-btn .btn[disabled][disabled].btn-raised.active,.input-group-btn .btn[disabled][disabled].btn-raised:active,.input-group-btn .btn[disabled][disabled].btn-raised:focus:not(:active),fieldset[disabled][disabled] .btn-group-vertical.btn-group-raised,fieldset[disabled][disabled] .btn-group-vertical.btn-group-raised.active,fieldset[disabled][disabled] .btn-group-vertical.btn-group-raised:active,fieldset[disabled][disabled] .btn-group-vertical.btn-group-raised:focus:not(:active),fieldset[disabled][disabled] .btn-group-vertical.btn-raised,fieldset[disabled][disabled] .btn-group-vertical.btn-raised.active,fieldset[disabled][disabled] .btn-group-vertical.btn-raised:active,fieldset[disabled][disabled] .btn-group-vertical.btn-raised:focus:not(:active),fieldset[disabled][disabled] .btn-group.btn-group-raised,fieldset[disabled][disabled] .btn-group.btn-group-raised.active,fieldset[disabled][disabled] .btn-group.btn-group-raised:active,fieldset[disabled][disabled] .btn-group.btn-group-raised:focus:not(:active),fieldset[disabled][disabled] .btn-group.btn-raised,fieldset[disabled][disabled] .btn-group.btn-raised.active,fieldset[disabled][disabled] .btn-group.btn-raised:active,fieldset[disabled][disabled] .btn-group.btn-raised:focus:not(:active),fieldset[disabled][disabled] .btn.btn-group-raised,fieldset[disabled][disabled] .btn.btn-group-raised.active,fieldset[disabled][disabled] .btn.btn-group-raised:active,fieldset[disabled][disabled] .btn.btn-group-raised:focus:not(:active),fieldset[disabled][disabled] .btn.btn-raised,fieldset[disabled][disabled] .btn.btn-raised.active,fieldset[disabled][disabled] .btn.btn-raised:active,fieldset[disabled][disabled] .btn.btn-raised:focus:not(:active),fieldset[disabled][disabled] .input-group-btn .btn.btn-group-raised,fieldset[disabled][disabled] .input-group-btn .btn.btn-group-raised.active,fieldset[disabled][disabled] .input-group-btn .btn.btn-group-raised:active,fieldset[disabled][disabled] .input-group-btn .btn.btn-group-raised:focus:not(:active),fieldset[disabled][disabled] .input-group-btn .btn.btn-raised,fieldset[disabled][disabled] .input-group-btn .btn.btn-raised.active,fieldset[disabled][disabled] .input-group-btn .btn.btn-raised:active,fieldset[disabled][disabled] .input-group-btn .btn.btn-raised:focus:not(:active){-webkit-box-shadow:none;box-shadow:none}.btn-group,.btn-group-vertical{position:relative;margin:10px 1px}.btn-group-vertical.open>.dropdown-toggle.btn,.btn-group-vertical.open>.dropdown-toggle.btn.btn-default,.btn-group.open>.dropdown-toggle.btn,.btn-group.open>.dropdown-toggle.btn.btn-default{background-color:#EEE}.btn-group-vertical.open>.dropdown-toggle.btn.btn-inverse,.btn-group.open>.dropdown-toggle.btn.btn-inverse{background-color:#3f51b5}.btn-group-vertical.open>.dropdown-toggle.btn.btn-primary,.btn-group.open>.dropdown-toggle.btn.btn-primary{background-color:#009688}.btn-group-vertical.open>.dropdown-toggle.btn.btn-success,.btn-group.open>.dropdown-toggle.btn.btn-success{background-color:#4caf50}.btn-group-vertical.open>.dropdown-toggle.btn.btn-info,.btn-group.open>.dropdown-toggle.btn.btn-info{background-color:#03a9f4}.btn-group-vertical.open>.dropdown-toggle.btn.btn-warning,.btn-group.open>.dropdown-toggle.btn.btn-warning{background-color:#ff5722}.btn-group-vertical.open>.dropdown-toggle.btn.btn-danger,.btn-group.open>.dropdown-toggle.btn.btn-danger{background-color:#f44336}.btn-group .dropdown-menu,.btn-group-vertical .dropdown-menu{border-radius:0 0 2px 2px}.btn-group-vertical.btn-group-raised,.btn-group.btn-group-raised{-webkit-box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.2),0 1px 5px 0 rgba(0,0,0,.12);box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.2),0 1px 5px 0 rgba(0,0,0,.12)}.btn-group .btn,.btn-group .btn+.btn,.btn-group .btn-group,.btn-group .btn:active,.btn-group-vertical .btn,.btn-group-vertical .btn+.btn,.btn-group-vertical .btn-group,.btn-group-vertical .btn:active{margin:0}.checkbox label{cursor:pointer;padding-left:0;color:rgba(0,0,0,.26)}.form-group.is-focused .checkbox label{color:rgba(0,0,0,.26)}.form-group.is-focused .checkbox label:focus,.form-group.is-focused .checkbox label:hover{color:rgba(0,0,0,.54)}fieldset[disabled] .form-group.is-focused .checkbox label{color:rgba(0,0,0,.26)}.checkbox input[type=checkbox]{opacity:0;position:absolute;margin:0;z-index:-1;width:0;height:0;overflow:hidden;left:0;pointer-events:none}.checkbox .checkbox-material{vertical-align:middle;position:relative;top:3px}.checkbox .checkbox-material:before{display:block;position:absolute;left:0;content:"";background-color:rgba(0,0,0,.84);height:20px;width:20px;border-radius:100%;z-index:1;opacity:0;margin:0;-webkit-transform:scale3d(2.3,2.3,1);transform:scale3d(2.3,2.3,1)}.checkbox .checkbox-material .check{position:relative;display:inline-block;width:20px;height:20px;border:2px solid rgba(0,0,0,.54);overflow:hidden;z-index:1}.checkbox .checkbox-material .check:before{position:absolute;content:"";-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);-o-transform:rotate(45deg);transform:rotate(45deg);display:block;margin-top:-4px;margin-left:6px;width:0;height:0;-webkit-box-shadow:0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0 inset;box-shadow:0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0 inset;-webkit-animation:checkbox-off .3s forwards;-o-animation:checkbox-off .3s forwards;animation:checkbox-off .3s forwards}.checkbox input[type=checkbox]:focus+.checkbox-material .check:after{opacity:.2}.checkbox input[type=checkbox]:checked+.checkbox-material .check{color:#009688;border-color:#009688}.checkbox input[type=checkbox]:checked+.checkbox-material .check:before{color:#009688;-webkit-box-shadow:0 0 0 10px,10px -10px 0 10px,32px 0 0 20px,0 32px 0 20px,-5px 5px 0 10px,20px -12px 0 11px;box-shadow:0 0 0 10px,10px -10px 0 10px,32px 0 0 20px,0 32px 0 20px,-5px 5px 0 10px,20px -12px 0 11px;-webkit-animation:checkbox-on .3s forwards;-o-animation:checkbox-on .3s forwards;animation:checkbox-on .3s forwards}.checkbox input[type=checkbox]:checked+.checkbox-material:before{-webkit-animation:rippleOn .5s;-o-animation:rippleOn .5s;animation:rippleOn .5s}.checkbox input[type=checkbox]:checked+.checkbox-material .check:after{-webkit-animation:rippleOn .5s forwards;-o-animation:rippleOn .5s forwards;animation:rippleOn .5s forwards}.checkbox input[type=checkbox]:not(:checked)+.checkbox-material:before{-webkit-animation:rippleOff .5s;-o-animation:rippleOff .5s;animation:rippleOff .5s}.checkbox input[type=checkbox]:not(:checked)+.checkbox-material .check:after{-webkit-animation:rippleOff .5s forwards;-o-animation:rippleOff .5s forwards;animation:rippleOff .5s forwards}.checkbox input[type=checkbox][disabled]+.circle,.checkbox input[type=checkbox][disabled]:not(:checked)~.checkbox-material .check,.checkbox input[type=checkbox][disabled]:not(:checked)~.checkbox-material .check:before,fieldset[disabled] .checkbox,fieldset[disabled] .checkbox input[type=checkbox]{opacity:.5}.checkbox input[type=checkbox][disabled]+.checkbox-material .check:after{background-color:rgba(0,0,0,.87);-webkit-transform:rotate(-45deg);-ms-transform:rotate(-45deg);-o-transform:rotate(-45deg);transform:rotate(-45deg)}@-webkit-keyframes checkbox-on{0%{-webkit-box-shadow:0 0 0 10px,10px -10px 0 10px,32px 0 0 20px,0 32px 0 20px,-5px 5px 0 10px,15px 2px 0 11px;box-shadow:0 0 0 10px,10px -10px 0 10px,32px 0 0 20px,0 32px 0 20px,-5px 5px 0 10px,15px 2px 0 11px}50%{-webkit-box-shadow:0 0 0 10px,10px -10px 0 10px,32px 0 0 20px,0 32px 0 20px,-5px 5px 0 10px,20px 2px 0 11px;box-shadow:0 0 0 10px,10px -10px 0 10px,32px 0 0 20px,0 32px 0 20px,-5px 5px 0 10px,20px 2px 0 11px}100%{-webkit-box-shadow:0 0 0 10px,10px -10px 0 10px,32px 0 0 20px,0 32px 0 20px,-5px 5px 0 10px,20px -12px 0 11px;box-shadow:0 0 0 10px,10px -10px 0 10px,32px 0 0 20px,0 32px 0 20px,-5px 5px 0 10px,20px -12px 0 11px}}@-o-keyframes checkbox-on{0%{box-shadow:0 0 0 10px,10px -10px 0 10px,32px 0 0 20px,0 32px 0 20px,-5px 5px 0 10px,15px 2px 0 11px}50%{box-shadow:0 0 0 10px,10px -10px 0 10px,32px 0 0 20px,0 32px 0 20px,-5px 5px 0 10px,20px 2px 0 11px}100%{box-shadow:0 0 0 10px,10px -10px 0 10px,32px 0 0 20px,0 32px 0 20px,-5px 5px 0 10px,20px -12px 0 11px}}@keyframes checkbox-on{0%{-webkit-box-shadow:0 0 0 10px,10px -10px 0 10px,32px 0 0 20px,0 32px 0 20px,-5px 5px 0 10px,15px 2px 0 11px;box-shadow:0 0 0 10px,10px -10px 0 10px,32px 0 0 20px,0 32px 0 20px,-5px 5px 0 10px,15px 2px 0 11px}50%{-webkit-box-shadow:0 0 0 10px,10px -10px 0 10px,32px 0 0 20px,0 32px 0 20px,-5px 5px 0 10px,20px 2px 0 11px;box-shadow:0 0 0 10px,10px -10px 0 10px,32px 0 0 20px,0 32px 0 20px,-5px 5px 0 10px,20px 2px 0 11px}100%{-webkit-box-shadow:0 0 0 10px,10px -10px 0 10px,32px 0 0 20px,0 32px 0 20px,-5px 5px 0 10px,20px -12px 0 11px;box-shadow:0 0 0 10px,10px -10px 0 10px,32px 0 0 20px,0 32px 0 20px,-5px 5px 0 10px,20px -12px 0 11px}}@-webkit-keyframes checkbox-off{0%{-webkit-box-shadow:0 0 0 10px,10px -10px 0 10px,32px 0 0 20px,0 32px 0 20px,-5px 5px 0 10px,20px -12px 0 11px,0 0 0 0 inset;box-shadow:0 0 0 10px,10px -10px 0 10px,32px 0 0 20px,0 32px 0 20px,-5px 5px 0 10px,20px -12px 0 11px,0 0 0 0 inset}25%{-webkit-box-shadow:0 0 0 10px,10px -10px 0 10px,32px 0 0 20px,0 32px 0 20px,-5px 5px 0 10px,20px -12px 0 11px,0 0 0 0 inset;box-shadow:0 0 0 10px,10px -10px 0 10px,32px 0 0 20px,0 32px 0 20px,-5px 5px 0 10px,20px -12px 0 11px,0 0 0 0 inset}50%{-webkit-transform:rotate(45deg);transform:rotate(45deg);margin-top:-4px;margin-left:6px;width:0;height:0;-webkit-box-shadow:0 0 0 10px,10px -10px 0 10px,32px 0 0 20px,0 32px 0 20px,-5px 5px 0 10px,15px 2px 0 11px,0 0 0 0 inset;box-shadow:0 0 0 10px,10px -10px 0 10px,32px 0 0 20px,0 32px 0 20px,-5px 5px 0 10px,15px 2px 0 11px,0 0 0 0 inset}51%{-webkit-transform:rotate(0);transform:rotate(0);margin-top:-2px;margin-left:-2px;width:20px;height:20px;-webkit-box-shadow:0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 10px inset;box-shadow:0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 10px inset}100%{-webkit-transform:rotate(0);transform:rotate(0);margin-top:-2px;margin-left:-2px;width:20px;height:20px;-webkit-box-shadow:0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0 inset;box-shadow:0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0 inset}}@-o-keyframes checkbox-off{0%{box-shadow:0 0 0 10px,10px -10px 0 10px,32px 0 0 20px,0 32px 0 20px,-5px 5px 0 10px,20px -12px 0 11px,0 0 0 0 inset}25%{box-shadow:0 0 0 10px,10px -10px 0 10px,32px 0 0 20px,0 32px 0 20px,-5px 5px 0 10px,20px -12px 0 11px,0 0 0 0 inset}50%{-o-transform:rotate(45deg);transform:rotate(45deg);margin-top:-4px;margin-left:6px;width:0;height:0;box-shadow:0 0 0 10px,10px -10px 0 10px,32px 0 0 20px,0 32px 0 20px,-5px 5px 0 10px,15px 2px 0 11px,0 0 0 0 inset}51%{-o-transform:rotate(0);transform:rotate(0);margin-top:-2px;margin-left:-2px;width:20px;height:20px;box-shadow:0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 10px inset}100%{-o-transform:rotate(0);transform:rotate(0);margin-top:-2px;margin-left:-2px;width:20px;height:20px;box-shadow:0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0 inset}}@keyframes checkbox-off{0%{-webkit-box-shadow:0 0 0 10px,10px -10px 0 10px,32px 0 0 20px,0 32px 0 20px,-5px 5px 0 10px,20px -12px 0 11px,0 0 0 0 inset;box-shadow:0 0 0 10px,10px -10px 0 10px,32px 0 0 20px,0 32px 0 20px,-5px 5px 0 10px,20px -12px 0 11px,0 0 0 0 inset}25%{-webkit-box-shadow:0 0 0 10px,10px -10px 0 10px,32px 0 0 20px,0 32px 0 20px,-5px 5px 0 10px,20px -12px 0 11px,0 0 0 0 inset;box-shadow:0 0 0 10px,10px -10px 0 10px,32px 0 0 20px,0 32px 0 20px,-5px 5px 0 10px,20px -12px 0 11px,0 0 0 0 inset}50%{-webkit-transform:rotate(45deg);-o-transform:rotate(45deg);transform:rotate(45deg);margin-top:-4px;margin-left:6px;width:0;height:0;-webkit-box-shadow:0 0 0 10px,10px -10px 0 10px,32px 0 0 20px,0 32px 0 20px,-5px 5px 0 10px,15px 2px 0 11px,0 0 0 0 inset;box-shadow:0 0 0 10px,10px -10px 0 10px,32px 0 0 20px,0 32px 0 20px,-5px 5px 0 10px,15px 2px 0 11px,0 0 0 0 inset}51%{-webkit-transform:rotate(0);-o-transform:rotate(0);transform:rotate(0);margin-top:-2px;margin-left:-2px;width:20px;height:20px;-webkit-box-shadow:0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 10px inset;box-shadow:0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 10px inset}100%{-webkit-transform:rotate(0);-o-transform:rotate(0);transform:rotate(0);margin-top:-2px;margin-left:-2px;width:20px;height:20px;-webkit-box-shadow:0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0 inset;box-shadow:0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0,0 0 0 0 inset}}@-webkit-keyframes rippleOn{0%{opacity:0}50%{opacity:.2}100%{opacity:0}}@-o-keyframes rippleOn{0%{opacity:0}50%{opacity:.2}100%{opacity:0}}@keyframes rippleOn{0%{opacity:0}50%{opacity:.2}100%{opacity:0}}@-webkit-keyframes rippleOff{0%{opacity:0}50%{opacity:.2}100%{opacity:0}}@-o-keyframes rippleOff{0%{opacity:0}50%{opacity:.2}100%{opacity:0}}@keyframes rippleOff{0%{opacity:0}50%{opacity:.2}100%{opacity:0}}.togglebutton{vertical-align:middle}.togglebutton,.togglebutton .toggle,.togglebutton input,.togglebutton label{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.togglebutton label{cursor:pointer;color:rgba(0,0,0,.26)}.form-group.is-focused .togglebutton label{color:rgba(0,0,0,.26)}.form-group.is-focused .togglebutton label:focus,.form-group.is-focused .togglebutton label:hover{color:rgba(0,0,0,.54)}fieldset[disabled] .form-group.is-focused .togglebutton label{color:rgba(0,0,0,.26)}.togglebutton label input[type=checkbox]{opacity:0;width:0;height:0}.togglebutton label .toggle{text-align:left}.togglebutton label .toggle,.togglebutton label input[type=checkbox][disabled]+.toggle{content:"";display:inline-block;width:30px;height:15px;background-color:rgba(80,80,80,.7);border-radius:15px;margin-right:15px;-webkit-transition:background .3s ease;-o-transition:background .3s ease;transition:background .3s ease;vertical-align:middle}.togglebutton label .toggle:after{content:"";display:inline-block;width:20px;height:20px;background-color:#F1F1F1;border-radius:20px;position:relative;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.4);box-shadow:0 1px 3px 1px rgba(0,0,0,.4);left:-5px;top:-2px;-webkit-transition:left .3s ease,background .3s ease,-webkit-box-shadow .1s ease;-o-transition:left .3s ease,background .3s ease,box-shadow .1s ease;transition:left .3s ease,background .3s ease,box-shadow .1s ease}.togglebutton label input[type=checkbox][disabled]+.toggle:after,.togglebutton label input[type=checkbox][disabled]:checked+.toggle:after{background-color:#BDBDBD}.togglebutton label input[type=checkbox]+.toggle:active:after,.togglebutton label input[type=checkbox][disabled]+.toggle:active:after{-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.4),0 0 0 15px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.4),0 0 0 15px rgba(0,0,0,.1)}.togglebutton label input[type=checkbox]:checked+.toggle:after{left:15px}.togglebutton label input[type=checkbox]:checked+.toggle{background-color:rgba(0,150,136,.5)}.togglebutton label input[type=checkbox]:checked+.toggle:after{background-color:#009688}.togglebutton label input[type=checkbox]:checked+.toggle:active:after{-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.4),0 0 0 15px rgba(0,150,136,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.4),0 0 0 15px rgba(0,150,136,.1)}.radio label{cursor:pointer;padding-left:45px;position:relative;color:rgba(0,0,0,.26)}.form-group.is-focused .radio label{color:rgba(0,0,0,.26)}.form-group.is-focused .radio label:focus,.form-group.is-focused .radio label:hover{color:rgba(0,0,0,.54)}fieldset[disabled] .form-group.is-focused .radio label{color:rgba(0,0,0,.26)}.radio label span{display:block;position:absolute;left:10px;top:2px;-webkit-transition-duration:.2s;-o-transition-duration:.2s;transition-duration:.2s}.radio label .circle{border:2px solid rgba(0,0,0,.54);height:15px;width:15px;border-radius:100%}.radio label .check{height:15px;width:15px;border-radius:100%;background-color:#009688;-webkit-transform:scale3d(0,0,0);transform:scale3d(0,0,0)}.radio label .check:after{display:block;position:absolute;content:"";background-color:rgba(0,0,0,.87);left:-18px;top:-18px;height:50px;width:50px;border-radius:100%;z-index:1;opacity:0;margin:0;-webkit-transform:scale3d(1.5,1.5,1);transform:scale3d(1.5,1.5,1)}.radio label input[type=radio]:not(:checked)~.check:after{-webkit-animation:rippleOff .5s;-o-animation:rippleOff .5s;animation:rippleOff .5s}.radio label input[type=radio]:checked~.check:after{-webkit-animation:rippleOn .5s;-o-animation:rippleOn .5s;animation:rippleOn .5s}.radio input[type=radio]{opacity:0;height:0;width:0;overflow:hidden}.radio input[type=radio]:checked~.check,.radio input[type=radio]:checked~.circle{opacity:1}.radio input[type=radio]:checked~.check{background-color:#009688}.radio input[type=radio]:checked~.circle{border-color:#009688}.radio input[type=radio]:checked~.check{-webkit-transform:scale3d(.55,.55,1);transform:scale3d(.55,.55,1)}.radio input[type=radio][disabled]~.check,.radio input[type=radio][disabled]~.circle{opacity:.26}.radio input[type=radio][disabled]~.check{background-color:#000}.radio input[type=radio][disabled]~.circle{border-color:#000}.theme-dark .radio input[type=radio][disabled]~.check,.theme-dark .radio input[type=radio][disabled]~.circle{opacity:.3}.theme-dark .radio input[type=radio][disabled]~.check{background-color:#fff}.theme-dark .radio input[type=radio][disabled]~.circle{border-color:#fff}@keyframes rippleOn{0%{opacity:0}50%{opacity:.2}100%{opacity:0}}@keyframes rippleOff{0%{opacity:0}50%{opacity:.2}100%{opacity:0}}legend{margin-bottom:22px;font-size:24px}output{padding-top:8px;font-size:16px;line-height:1.42857143}.form-control{height:38px;padding:7px 0;font-size:16px;line-height:1.42857143}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date].form-control,input[type=time].form-control,input[type=datetime-local].form-control,input[type=month].form-control{line-height:38px}.input-group-sm input[type=date],.input-group-sm input[type=time],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:24px}.input-group-lg input[type=date],.input-group-lg input[type=time],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:44px}}.checkbox label,.radio label{min-height:22px}.form-control-static{padding-top:8px;padding-bottom:8px;min-height:38px}.input-sm .input-sm{height:24px;padding:3px 0;font-size:11px;line-height:1.5;border-radius:0}.input-sm select.input-sm{height:24px;line-height:24px}.input-sm select[multiple].input-sm,.input-sm textarea.input-sm{height:auto}.form-group-sm .form-control{height:24px;padding:3px 0;font-size:11px;line-height:1.5}.form-group-sm select.form-control{height:24px;line-height:24px}.form-group-sm select[multiple].form-control,.form-group-sm textarea.form-control{height:auto}.form-group-sm .form-control-static{height:24px;min-height:33px;padding:4px 0;font-size:11px;line-height:1.5}.input-lg .input-lg{height:44px;padding:9px 0;font-size:18px;line-height:1.3333333;border-radius:0}.input-lg select.input-lg{height:44px;line-height:44px}.input-lg select[multiple].input-lg,.input-lg textarea.input-lg{height:auto}.form-group-lg .form-control{height:44px;padding:9px 0;font-size:18px;line-height:1.3333333}.form-group-lg select.form-control{height:44px;line-height:44px}.form-group-lg select[multiple].form-control,.form-group-lg textarea.form-control{height:auto}.form-group-lg .form-control-static{height:44px;min-height:40px;padding:10px 0;font-size:18px;line-height:1.3333333}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{padding-top:8px}.form-horizontal .checkbox,.form-horizontal .radio{min-height:30px}@media (min-width:768px){.form-horizontal .control-label{padding-top:8px}}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:13px;font-size:18px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:4px;font-size:11px}}.label{border-radius:1px}.label,.label.label-default{background-color:#9e9e9e}.label.label-inverse{background-color:#3f51b5}.label.label-primary{background-color:#009688}.label.label-success{background-color:#4caf50}.label.label-info{background-color:#03a9f4}.label.label-warning{background-color:#ff5722}.label.label-danger{background-color:#f44336}.form-control,.form-group .form-control{border:0;background-image:-webkit-gradient(linear,left top,left bottom,from(#009688),to(#009688)),-webkit-gradient(linear,left top,left bottom,from(#D2D2D2),to(#D2D2D2));background-image:-webkit-linear-gradient(#009688,#009688),-webkit-linear-gradient(#D2D2D2,#D2D2D2);background-image:-o-linear-gradient(#009688,#009688),-o-linear-gradient(#D2D2D2,#D2D2D2);background-image:linear-gradient(#009688,#009688),linear-gradient(#D2D2D2,#D2D2D2);-webkit-background-size:0 2px,100% 1px;background-size:0 2px,100% 1px;background-repeat:no-repeat;background-position:center bottom,center -webkit-calc(100% - 1px);background-position:center bottom,center calc(100% - 1px);background-color:rgba(0,0,0,0);-webkit-transition:background 0s ease-out;-o-transition:background 0s ease-out;transition:background 0s ease-out;float:none;-webkit-box-shadow:none;box-shadow:none;border-radius:0}.form-control::-moz-placeholder,.form-group .form-control::-moz-placeholder{color:#BDBDBD;font-weight:400}.form-control:-ms-input-placeholder,.form-group .form-control:-ms-input-placeholder{color:#BDBDBD;font-weight:400}.form-control::-webkit-input-placeholder,.form-group .form-control::-webkit-input-placeholder{color:#BDBDBD;font-weight:400}.form-control[disabled],.form-control[readonly],.form-group .form-control[disabled],.form-group .form-control[readonly],fieldset[disabled] .form-control,fieldset[disabled] .form-group .form-control{background-color:rgba(0,0,0,0)}.form-control[disabled],.form-group .form-control[disabled],fieldset[disabled] .form-control,fieldset[disabled] .form-group .form-control{background-image:none;border-bottom:1px dotted #D2D2D2}.form-group{position:relative}.form-group.label-floating label.control-label,.form-group.label-placeholder label.control-label,.form-group.label-static label.control-label{position:absolute;pointer-events:none;-webkit-transition:.3s ease all;-o-transition:.3s ease all;transition:.3s ease all}.form-group.label-floating label.control-label{will-change:left,top,contents}.form-group.label-placeholder:not(.is-empty) label.control-label{display:none}.form-group .help-block{position:absolute;display:none}.form-group.is-focused .form-control{outline:0;background-image:-webkit-gradient(linear,left top,left bottom,from(#009688),to(#009688)),-webkit-gradient(linear,left top,left bottom,from(#D2D2D2),to(#D2D2D2));background-image:-webkit-linear-gradient(#009688,#009688),-webkit-linear-gradient(#D2D2D2,#D2D2D2);background-image:-o-linear-gradient(#009688,#009688),-o-linear-gradient(#D2D2D2,#D2D2D2);background-image:linear-gradient(#009688,#009688),linear-gradient(#D2D2D2,#D2D2D2);-webkit-background-size:100% 2px,100% 1px;background-size:100% 2px,100% 1px;-webkit-box-shadow:none;box-shadow:none;-webkit-transition-duration:.3s;-o-transition-duration:.3s;transition-duration:.3s}.form-group.is-focused .form-control .material-input:after{background-color:#009688}.form-group.is-focused label,.form-group.is-focused label.control-label{color:#009688}.form-group.is-focused.label-placeholder label,.form-group.is-focused.label-placeholder label.control-label{color:#BDBDBD}.form-group.is-focused .help-block{display:block}.form-group.has-warning .form-control{-webkit-box-shadow:none;box-shadow:none}.form-group.has-warning.is-focused .form-control{background-image:-webkit-gradient(linear,left top,left bottom,from(#ff5722),to(#ff5722)),-webkit-gradient(linear,left top,left bottom,from(#D2D2D2),to(#D2D2D2));background-image:-webkit-linear-gradient(#ff5722,#ff5722),-webkit-linear-gradient(#D2D2D2,#D2D2D2);background-image:-o-linear-gradient(#ff5722,#ff5722),-o-linear-gradient(#D2D2D2,#D2D2D2);background-image:linear-gradient(#ff5722,#ff5722),linear-gradient(#D2D2D2,#D2D2D2)}.form-group.has-warning .help-block,.form-group.has-warning label.control-label{color:#ff5722}.form-group.has-error .form-control{-webkit-box-shadow:none;box-shadow:none}.form-group.has-error.is-focused .form-control{background-image:-webkit-gradient(linear,left top,left bottom,from(#f44336),to(#f44336)),-webkit-gradient(linear,left top,left bottom,from(#D2D2D2),to(#D2D2D2));background-image:-webkit-linear-gradient(#f44336,#f44336),-webkit-linear-gradient(#D2D2D2,#D2D2D2);background-image:-o-linear-gradient(#f44336,#f44336),-o-linear-gradient(#D2D2D2,#D2D2D2);background-image:linear-gradient(#f44336,#f44336),linear-gradient(#D2D2D2,#D2D2D2)}.form-group.has-error .help-block,.form-group.has-error label.control-label{color:#f44336}.form-group.has-success .form-control{-webkit-box-shadow:none;box-shadow:none}.form-group.has-success.is-focused .form-control{background-image:-webkit-gradient(linear,left top,left bottom,from(#4caf50),to(#4caf50)),-webkit-gradient(linear,left top,left bottom,from(#D2D2D2),to(#D2D2D2));background-image:-webkit-linear-gradient(#4caf50,#4caf50),-webkit-linear-gradient(#D2D2D2,#D2D2D2);background-image:-o-linear-gradient(#4caf50,#4caf50),-o-linear-gradient(#D2D2D2,#D2D2D2);background-image:linear-gradient(#4caf50,#4caf50),linear-gradient(#D2D2D2,#D2D2D2)}.form-group.has-success .help-block,.form-group.has-success label.control-label{color:#4caf50}.form-group.has-info .form-control{-webkit-box-shadow:none;box-shadow:none}.form-group.has-info.is-focused .form-control{background-image:-webkit-gradient(linear,left top,left bottom,from(#03a9f4),to(#03a9f4)),-webkit-gradient(linear,left top,left bottom,from(#D2D2D2),to(#D2D2D2));background-image:-webkit-linear-gradient(#03a9f4,#03a9f4),-webkit-linear-gradient(#D2D2D2,#D2D2D2);background-image:-o-linear-gradient(#03a9f4,#03a9f4),-o-linear-gradient(#D2D2D2,#D2D2D2);background-image:linear-gradient(#03a9f4,#03a9f4),linear-gradient(#D2D2D2,#D2D2D2)}.form-group.has-info .help-block,.form-group.has-info label.control-label{color:#03a9f4}.form-group textarea{resize:none}.form-group textarea~.form-control-highlight{margin-top:-11px}.form-group select{-webkit-appearance:none;-moz-appearance:none;appearance:none}.form-group select~.material-input:after{display:none}.form-control{margin-bottom:7px}.form-control::-moz-placeholder{font-size:16px;line-height:1.42857143;color:#BDBDBD;font-weight:400}.form-control:-ms-input-placeholder{font-size:16px;line-height:1.42857143;color:#BDBDBD;font-weight:400}.form-control::-webkit-input-placeholder{font-size:16px;line-height:1.42857143;color:#BDBDBD;font-weight:400}.checkbox label,.radio label,label{font-size:16px;line-height:1.42857143;color:#BDBDBD;font-weight:400}label.control-label{font-size:12px;line-height:1.07142857;color:#BDBDBD;font-weight:400;margin:16px 0 0 0}.help-block{margin-top:0;font-size:12px}.form-group{padding-bottom:7px;margin:28px 0 0 0}.form-group .form-control{margin-bottom:7px}.form-group .form-control::-moz-placeholder{font-size:16px;line-height:1.42857143;color:#BDBDBD;font-weight:400}.form-group .form-control:-ms-input-placeholder{font-size:16px;line-height:1.42857143;color:#BDBDBD;font-weight:400}.form-group .form-control::-webkit-input-placeholder{font-size:16px;line-height:1.42857143;color:#BDBDBD;font-weight:400}.form-group .checkbox label,.form-group .radio label,.form-group label{font-size:16px;line-height:1.42857143;color:#BDBDBD;font-weight:400}.form-group label.control-label{font-size:12px;line-height:1.07142857;color:#BDBDBD;font-weight:400;margin:16px 0 0 0}.form-group .help-block{margin-top:0;font-size:12px}.form-group.label-floating label.control-label,.form-group.label-placeholder label.control-label{top:-7px;font-size:16px;line-height:1.42857143}.form-group.label-floating.is-focused label.control-label,.form-group.label-floating:not(.is-empty) label.control-label,.form-group.label-static label.control-label{top:-30px;left:0;font-size:12px;line-height:1.07142857}.form-group.label-floating input.form-control:-webkit-autofill~label.control-label label.control-label{top:-30px;left:0;font-size:12px;line-height:1.07142857}.form-group.form-group-sm{padding-bottom:3px;margin:21px 0 0 0}.form-group.form-group-sm .form-control{margin-bottom:3px}.form-group.form-group-sm .form-control::-moz-placeholder{font-size:11px;line-height:1.5;color:#BDBDBD;font-weight:400}.form-group.form-group-sm .form-control:-ms-input-placeholder{font-size:11px;line-height:1.5;color:#BDBDBD;font-weight:400}.form-group.form-group-sm .form-control::-webkit-input-placeholder{font-size:11px;line-height:1.5;color:#BDBDBD;font-weight:400}.form-group.form-group-sm .checkbox label,.form-group.form-group-sm .radio label,.form-group.form-group-sm label{font-size:11px;line-height:1.5;color:#BDBDBD;font-weight:400}.form-group.form-group-sm label.control-label{font-size:9px;line-height:1.125;color:#BDBDBD;font-weight:400;margin:16px 0 0 0}.form-group.form-group-sm .help-block{margin-top:0;font-size:9px}.form-group.form-group-sm.label-floating label.control-label,.form-group.form-group-sm.label-placeholder label.control-label{top:-11px;font-size:11px;line-height:1.5}.form-group.form-group-sm.label-floating.is-focused label.control-label,.form-group.form-group-sm.label-floating:not(.is-empty) label.control-label,.form-group.form-group-sm.label-static label.control-label{top:-25px;left:0;font-size:9px;line-height:1.125}.form-group.form-group-sm.label-floating input.form-control:-webkit-autofill~label.control-label label.control-label{top:-25px;left:0;font-size:9px;line-height:1.125}.form-group.form-group-lg{padding-bottom:9px;margin:30px 0 0 0}.form-group.form-group-lg .form-control{margin-bottom:9px}.form-group.form-group-lg .form-control::-moz-placeholder{font-size:18px;line-height:1.3333333;color:#BDBDBD;font-weight:400}.form-group.form-group-lg .form-control:-ms-input-placeholder{font-size:18px;line-height:1.3333333;color:#BDBDBD;font-weight:400}.form-group.form-group-lg .form-control::-webkit-input-placeholder{font-size:18px;line-height:1.3333333;color:#BDBDBD;font-weight:400}.form-group.form-group-lg .checkbox label,.form-group.form-group-lg .radio label,.form-group.form-group-lg label{font-size:18px;line-height:1.3333333;color:#BDBDBD;font-weight:400}.form-group.form-group-lg label.control-label{font-size:14px;line-height:.99999998;color:#BDBDBD;font-weight:400;margin:16px 0 0 0}.form-group.form-group-lg .help-block{margin-top:0;font-size:14px}.form-group.form-group-lg.label-floating label.control-label,.form-group.form-group-lg.label-placeholder label.control-label{top:-5px;font-size:18px;line-height:1.3333333}.form-group.form-group-lg.label-floating.is-focused label.control-label,.form-group.form-group-lg.label-floating:not(.is-empty) label.control-label,.form-group.form-group-lg.label-static label.control-label{top:-32px;left:0;font-size:14px;line-height:.99999998}.form-group.form-group-lg.label-floating input.form-control:-webkit-autofill~label.control-label label.control-label{top:-32px;left:0;font-size:14px;line-height:.99999998}select.form-control{border:0;-webkit-box-shadow:none;box-shadow:none;border-radius:0}.form-group.is-focused select.form-control{-webkit-box-shadow:none;box-shadow:none;border-color:#D2D2D2}.form-group.is-focused select.form-control[multiple],select.form-control[multiple]{height:85px}.input-group-btn .btn{margin:0 0 7px 0}.form-group.form-group-sm .input-group-btn .btn{margin:0 0 3px 0}.form-group.form-group-lg .input-group-btn .btn{margin:0 0 9px 0}.input-group .input-group-btn{padding:0 12px}.input-group .input-group-addon{border:0;background:0 0}.form-group input[type=file]{opacity:0;position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;z-index:100}legend{border-bottom:0}.list-group{border-radius:0}.list-group .list-group-item{background-color:transparent;overflow:hidden;border:0;border-radius:0;padding:0 16px}.list-group .list-group-item.baseline{border-bottom:1px solid #cecece}.list-group .list-group-item.baseline:last-child{border-bottom:none}.list-group .list-group-item .row-action-primary,.list-group .list-group-item .row-picture{display:inline-block;padding-right:16px}.list-group .list-group-item .row-action-primary i,.list-group .list-group-item .row-action-primary img,.list-group .list-group-item .row-action-primary label,.list-group .list-group-item .row-picture i,.list-group .list-group-item .row-picture img,.list-group .list-group-item .row-picture label{display:block;width:56px;height:56px}.list-group .list-group-item .row-action-primary img,.list-group .list-group-item .row-picture img{background:rgba(0,0,0,.1);padding:1px}.list-group .list-group-item .row-action-primary img.circle,.list-group .list-group-item .row-picture img.circle{border-radius:100%}.list-group .list-group-item .row-action-primary i,.list-group .list-group-item .row-picture i{background:rgba(0,0,0,.25);border-radius:100%;text-align:center;line-height:56px;font-size:20px;color:#fff}.list-group .list-group-item .row-action-primary label,.list-group .list-group-item .row-picture label{margin-left:7px;margin-right:-7px;margin-top:5px;margin-bottom:-5px}.list-group .list-group-item .row-action-primary label .checkbox-material,.list-group .list-group-item .row-picture label .checkbox-material{left:-10px}.list-group .list-group-item .row-content{display:inline-block;width:-webkit-calc(100% - 92px);width:calc(100% - 92px);min-height:66px}.list-group .list-group-item .row-content .action-secondary{position:absolute;right:16px;top:16px}.list-group .list-group-item .row-content .action-secondary i{font-size:20px;color:rgba(0,0,0,.25);cursor:pointer}.list-group .list-group-item .row-content .action-secondary~*{max-width:-webkit-calc(100% - 30px);max-width:calc(100% - 30px)}.list-group .list-group-item .row-content .least-content{position:absolute;right:16px;top:0;color:rgba(0,0,0,.54);font-size:14px}.list-group .list-group-item .list-group-item-heading{color:rgba(0,0,0,.77);font-size:20px;line-height:29px}.list-group .list-group-item.active:focus,.list-group .list-group-item.active:hover{background:rgba(0,0,0,.15);outline:10px solid rgba(0,0,0,.15)}.list-group .list-group-item.active .list-group-item-heading,.list-group .list-group-item.active .list-group-item-text{color:rgba(0,0,0,.87)}.list-group .list-group-separator{clear:both;overflow:hidden;margin-top:10px;margin-bottom:10px}.list-group .list-group-separator:before{content:"";width:-webkit-calc(100% - 90px);width:calc(100% - 90px);border-bottom:1px solid rgba(0,0,0,.1);float:right}.navbar{background-color:#009688;border:0;border-radius:0}.navbar .navbar-brand{position:relative;height:60px;line-height:30px;color:inherit}.navbar .navbar-brand:focus,.navbar .navbar-brand:hover{color:inherit;background-color:transparent}.navbar .navbar-text{color:inherit;margin-top:20px;margin-bottom:20px}.navbar .navbar-nav>li>a{color:inherit;padding-top:20px;padding-bottom:20px}.navbar .navbar-nav>li>a:focus,.navbar .navbar-nav>li>a:hover{color:inherit;background-color:transparent}.navbar .navbar-nav>.active>a,.navbar .navbar-nav>.active>a:focus,.navbar .navbar-nav>.active>a:hover{color:inherit;background-color:rgba(255,255,255,.1)}.navbar .navbar-nav>.disabled>a,.navbar .navbar-nav>.disabled>a:focus,.navbar .navbar-nav>.disabled>a:hover{color:inherit;background-color:transparent;opacity:.9}.navbar .navbar-toggle{border:0}.navbar .navbar-toggle:focus,.navbar .navbar-toggle:hover{background-color:transparent}.navbar .navbar-toggle .icon-bar{background-color:inherit;border:1px solid}.navbar .navbar-default .navbar-toggle,.navbar .navbar-inverse .navbar-toggle{border-color:transparent}.navbar .navbar-collapse,.navbar .navbar-form{border-color:rgba(0,0,0,.1)}.navbar .navbar-nav>.open>a,.navbar .navbar-nav>.open>a:focus,.navbar .navbar-nav>.open>a:hover{background-color:transparent;color:inherit}@media (max-width:767px){.navbar .navbar-nav .navbar-text{color:inherit;margin-top:15px;margin-bottom:15px}.navbar .navbar-nav .open .dropdown-menu>.dropdown-header{border:0;color:inherit}.navbar .navbar-nav .open .dropdown-menu .divider{border-bottom:1px solid;opacity:.08}.navbar .navbar-nav .open .dropdown-menu>li>a{color:inherit}.navbar .navbar-nav .open .dropdown-menu>li>a:focus,.navbar .navbar-nav .open .dropdown-menu>li>a:hover{color:inherit;background-color:transparent}.navbar .navbar-nav .open .dropdown-menu>.active>a,.navbar .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar .navbar-nav .open .dropdown-menu>.active>a:hover{color:inherit;background-color:transparent}.navbar .navbar-nav .open .dropdown-menu>.disabled>a,.navbar .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:inherit;background-color:transparent}}.navbar .navbar-link{color:inherit}.navbar .navbar-link:hover{color:inherit}.navbar .btn-link{color:inherit}.navbar .btn-link:focus,.navbar .btn-link:hover{color:inherit}.navbar .btn-link[disabled]:focus,.navbar .btn-link[disabled]:hover,fieldset[disabled] .navbar .btn-link:focus,fieldset[disabled] .navbar .btn-link:hover{color:inherit}.navbar .navbar-form{margin-top:16px}.navbar .navbar-form .form-group{margin:0;padding:0}.navbar .navbar-form .form-group .material-input:before,.navbar .navbar-form .form-group.is-focused .material-input:after{background-color:inherit}.navbar .navbar-form .form-control,.navbar .navbar-form .form-group .form-control{border-color:inherit;color:inherit;padding:0;margin:0;height:28px;font-size:14px;line-height:1.42857143}.navbar,.navbar.navbar-default{background-color:#009688;color:rgba(255,255,255,.84)}.navbar .navbar-form .form-group input.form-control::-moz-placeholder,.navbar .navbar-form input.form-control::-moz-placeholder,.navbar.navbar-default .navbar-form .form-group input.form-control::-moz-placeholder,.navbar.navbar-default .navbar-form input.form-control::-moz-placeholder{color:rgba(255,255,255,.84)}.navbar .navbar-form .form-group input.form-control:-ms-input-placeholder,.navbar .navbar-form input.form-control:-ms-input-placeholder,.navbar.navbar-default .navbar-form .form-group input.form-control:-ms-input-placeholder,.navbar.navbar-default .navbar-form input.form-control:-ms-input-placeholder{color:rgba(255,255,255,.84)}.navbar .navbar-form .form-group input.form-control::-webkit-input-placeholder,.navbar .navbar-form input.form-control::-webkit-input-placeholder,.navbar.navbar-default .navbar-form .form-group input.form-control::-webkit-input-placeholder,.navbar.navbar-default .navbar-form input.form-control::-webkit-input-placeholder{color:rgba(255,255,255,.84)}.navbar .dropdown-menu,.navbar.navbar-default .dropdown-menu{border-radius:2px}.navbar .dropdown-menu li>a,.navbar.navbar-default .dropdown-menu li>a{font-size:16px;padding:13px 16px}.navbar .dropdown-menu li>a:focus,.navbar .dropdown-menu li>a:hover,.navbar.navbar-default .dropdown-menu li>a:focus,.navbar.navbar-default .dropdown-menu li>a:hover{color:#009688;background-color:#eee}.navbar .dropdown-menu .active>a,.navbar.navbar-default .dropdown-menu .active>a{background-color:#009688;color:rgba(255,255,255,.84)}.navbar .dropdown-menu .active>a:focus,.navbar .dropdown-menu .active>a:hover,.navbar.navbar-default .dropdown-menu .active>a:focus,.navbar.navbar-default .dropdown-menu .active>a:hover{color:rgba(255,255,255,.84)}.navbar.navbar-inverse{background-color:#3f51b5;color:#fff}.navbar.navbar-inverse .navbar-form .form-group input.form-control::-moz-placeholder,.navbar.navbar-inverse .navbar-form input.form-control::-moz-placeholder{color:#fff}.navbar.navbar-inverse .navbar-form .form-group input.form-control:-ms-input-placeholder,.navbar.navbar-inverse .navbar-form input.form-control:-ms-input-placeholder{color:#fff}.navbar.navbar-inverse .navbar-form .form-group input.form-control::-webkit-input-placeholder,.navbar.navbar-inverse .navbar-form input.form-control::-webkit-input-placeholder{color:#fff}.navbar.navbar-inverse .dropdown-menu{border-radius:2px}.navbar.navbar-inverse .dropdown-menu li>a{font-size:16px;padding:13px 16px}.navbar.navbar-inverse .dropdown-menu li>a:focus,.navbar.navbar-inverse .dropdown-menu li>a:hover{color:#3f51b5;background-color:#eee}.navbar.navbar-inverse .dropdown-menu .active>a{background-color:#3f51b5;color:#fff}.navbar.navbar-inverse .dropdown-menu .active>a:focus,.navbar.navbar-inverse .dropdown-menu .active>a:hover{color:#fff}.navbar.navbar-primary{background-color:#009688;color:rgba(255,255,255,.84)}.navbar.navbar-primary .navbar-form .form-group input.form-control::-moz-placeholder,.navbar.navbar-primary .navbar-form input.form-control::-moz-placeholder{color:rgba(255,255,255,.84)}.navbar.navbar-primary .navbar-form .form-group input.form-control:-ms-input-placeholder,.navbar.navbar-primary .navbar-form input.form-control:-ms-input-placeholder{color:rgba(255,255,255,.84)}.navbar.navbar-primary .navbar-form .form-group input.form-control::-webkit-input-placeholder,.navbar.navbar-primary .navbar-form input.form-control::-webkit-input-placeholder{color:rgba(255,255,255,.84)}.navbar.navbar-primary .dropdown-menu{border-radius:2px}.navbar.navbar-primary .dropdown-menu li>a{font-size:16px;padding:13px 16px}.navbar.navbar-primary .dropdown-menu li>a:focus,.navbar.navbar-primary .dropdown-menu li>a:hover{color:#009688;background-color:#eee}.navbar.navbar-primary .dropdown-menu .active>a{background-color:#009688;color:rgba(255,255,255,.84)}.navbar.navbar-primary .dropdown-menu .active>a:focus,.navbar.navbar-primary .dropdown-menu .active>a:hover{color:rgba(255,255,255,.84)}.navbar.navbar-success{background-color:#4caf50;color:rgba(255,255,255,.84)}.navbar.navbar-success .navbar-form .form-group input.form-control::-moz-placeholder,.navbar.navbar-success .navbar-form input.form-control::-moz-placeholder{color:rgba(255,255,255,.84)}.navbar.navbar-success .navbar-form .form-group input.form-control:-ms-input-placeholder,.navbar.navbar-success .navbar-form input.form-control:-ms-input-placeholder{color:rgba(255,255,255,.84)}.navbar.navbar-success .navbar-form .form-group input.form-control::-webkit-input-placeholder,.navbar.navbar-success .navbar-form input.form-control::-webkit-input-placeholder{color:rgba(255,255,255,.84)}.navbar.navbar-success .dropdown-menu{border-radius:2px}.navbar.navbar-success .dropdown-menu li>a{font-size:16px;padding:13px 16px}.navbar.navbar-success .dropdown-menu li>a:focus,.navbar.navbar-success .dropdown-menu li>a:hover{color:#4caf50;background-color:#eee}.navbar.navbar-success .dropdown-menu .active>a{background-color:#4caf50;color:rgba(255,255,255,.84)}.navbar.navbar-success .dropdown-menu .active>a:focus,.navbar.navbar-success .dropdown-menu .active>a:hover{color:rgba(255,255,255,.84)}.navbar.navbar-info{background-color:#03a9f4;color:rgba(255,255,255,.84)}.navbar.navbar-info .navbar-form .form-group input.form-control::-moz-placeholder,.navbar.navbar-info .navbar-form input.form-control::-moz-placeholder{color:rgba(255,255,255,.84)}.navbar.navbar-info .navbar-form .form-group input.form-control:-ms-input-placeholder,.navbar.navbar-info .navbar-form input.form-control:-ms-input-placeholder{color:rgba(255,255,255,.84)}.navbar.navbar-info .navbar-form .form-group input.form-control::-webkit-input-placeholder,.navbar.navbar-info .navbar-form input.form-control::-webkit-input-placeholder{color:rgba(255,255,255,.84)}.navbar.navbar-info .dropdown-menu{border-radius:2px}.navbar.navbar-info .dropdown-menu li>a{font-size:16px;padding:13px 16px}.navbar.navbar-info .dropdown-menu li>a:focus,.navbar.navbar-info .dropdown-menu li>a:hover{color:#03a9f4;background-color:#eee}.navbar.navbar-info .dropdown-menu .active>a{background-color:#03a9f4;color:rgba(255,255,255,.84)}.navbar.navbar-info .dropdown-menu .active>a:focus,.navbar.navbar-info .dropdown-menu .active>a:hover{color:rgba(255,255,255,.84)}.navbar.navbar-warning{background-color:#ff5722;color:rgba(255,255,255,.84)}.navbar.navbar-warning .navbar-form .form-group input.form-control::-moz-placeholder,.navbar.navbar-warning .navbar-form input.form-control::-moz-placeholder{color:rgba(255,255,255,.84)}.navbar.navbar-warning .navbar-form .form-group input.form-control:-ms-input-placeholder,.navbar.navbar-warning .navbar-form input.form-control:-ms-input-placeholder{color:rgba(255,255,255,.84)}.navbar.navbar-warning .navbar-form .form-group input.form-control::-webkit-input-placeholder,.navbar.navbar-warning .navbar-form input.form-control::-webkit-input-placeholder{color:rgba(255,255,255,.84)}.navbar.navbar-warning .dropdown-menu{border-radius:2px}.navbar.navbar-warning .dropdown-menu li>a{font-size:16px;padding:13px 16px}.navbar.navbar-warning .dropdown-menu li>a:focus,.navbar.navbar-warning .dropdown-menu li>a:hover{color:#ff5722;background-color:#eee}.navbar.navbar-warning .dropdown-menu .active>a{background-color:#ff5722;color:rgba(255,255,255,.84)}.navbar.navbar-warning .dropdown-menu .active>a:focus,.navbar.navbar-warning .dropdown-menu .active>a:hover{color:rgba(255,255,255,.84)}.navbar.navbar-danger{background-color:#f44336;color:rgba(255,255,255,.84)}.navbar.navbar-danger .navbar-form .form-group input.form-control::-moz-placeholder,.navbar.navbar-danger .navbar-form input.form-control::-moz-placeholder{color:rgba(255,255,255,.84)}.navbar.navbar-danger .navbar-form .form-group input.form-control:-ms-input-placeholder,.navbar.navbar-danger .navbar-form input.form-control:-ms-input-placeholder{color:rgba(255,255,255,.84)}.navbar.navbar-danger .navbar-form .form-group input.form-control::-webkit-input-placeholder,.navbar.navbar-danger .navbar-form input.form-control::-webkit-input-placeholder{color:rgba(255,255,255,.84)}.navbar.navbar-danger .dropdown-menu{border-radius:2px}.navbar.navbar-danger .dropdown-menu li>a{font-size:16px;padding:13px 16px}.navbar.navbar-danger .dropdown-menu li>a:focus,.navbar.navbar-danger .dropdown-menu li>a:hover{color:#f44336;background-color:#eee}.navbar.navbar-danger .dropdown-menu .active>a{background-color:#f44336;color:rgba(255,255,255,.84)}.navbar.navbar-danger .dropdown-menu .active>a:focus,.navbar.navbar-danger .dropdown-menu .active>a:hover{color:rgba(255,255,255,.84)}.navbar-inverse{background-color:#3f51b5}@media (max-width:1199px){.navbar .navbar-brand{height:50px;padding:10px 15px}.navbar .navbar-form{margin-top:10px}.navbar .navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.dropdown-menu{border:0;-webkit-box-shadow:0 2px 5px 0 rgba(0,0,0,.26);box-shadow:0 2px 5px 0 rgba(0,0,0,.26)}.dropdown-menu .divider{background-color:rgba(229,229,229,.12)}.dropdown-menu li{overflow:hidden;position:relative}.dropdown-menu li a:hover{background-color:transparent;color:#009688}.alert{border:0;border-radius:0}.alert,.alert.alert-default{background-color:rgba(255,255,255,.84);color:rgba(255,255,255,.84)}.alert .alert-link,.alert a,.alert.alert-default .alert-link,.alert.alert-default a{color:rgba(255,255,255,.84)}.alert.alert-inverse{background-color:#3f51b5;color:#fff}.alert.alert-inverse .alert-link,.alert.alert-inverse a{color:#fff}.alert.alert-primary{background-color:#009688;color:rgba(255,255,255,.84)}.alert.alert-primary .alert-link,.alert.alert-primary a{color:rgba(255,255,255,.84)}.alert.alert-success{background-color:#4caf50;color:rgba(255,255,255,.84)}.alert.alert-success .alert-link,.alert.alert-success a{color:rgba(255,255,255,.84)}.alert.alert-info{background-color:#03a9f4;color:rgba(255,255,255,.84)}.alert.alert-info .alert-link,.alert.alert-info a{color:rgba(255,255,255,.84)}.alert.alert-warning{background-color:#ff5722;color:rgba(255,255,255,.84)}.alert.alert-warning .alert-link,.alert.alert-warning a{color:rgba(255,255,255,.84)}.alert.alert-danger{background-color:#f44336;color:rgba(255,255,255,.84)}.alert.alert-danger .alert-link,.alert.alert-danger a{color:rgba(255,255,255,.84)}.alert-danger,.alert-info,.alert-success,.alert-warning{color:rgba(255,255,255,.84)}.alert-default .alert-link,.alert-default a{color:rgba(0,0,0,.87)}.progress{height:4px;border-radius:0;-webkit-box-shadow:none;box-shadow:none;background:#c8c8c8}.progress .progress-bar{-webkit-box-shadow:none;box-shadow:none}.progress .progress-bar,.progress .progress-bar.progress-bar-default{background-color:#009688}.progress .progress-bar.progress-bar-inverse{background-color:#3f51b5}.progress .progress-bar.progress-bar-primary{background-color:#009688}.progress .progress-bar.progress-bar-success{background-color:#4caf50}.progress .progress-bar.progress-bar-info{background-color:#03a9f4}.progress .progress-bar.progress-bar-warning{background-color:#ff5722}.progress .progress-bar.progress-bar-danger{background-color:#f44336}.text-warning{color:#ff5722}.text-primary{color:#009688}.text-danger{color:#f44336}.text-success{color:#4caf50}.text-info{color:#03a9f4}.nav-tabs{background:#009688}.nav-tabs>li>a{color:#FFF;border:0;margin:0}.nav-tabs>li>a:hover{background-color:transparent;border:0}.nav-tabs>li>a,.nav-tabs>li>a:focus,.nav-tabs>li>a:hover{background-color:transparent!important;border:0!important;color:#FFF!important;font-weight:500}.nav-tabs>li.disabled>a,.nav-tabs>li.disabled>a:hover{color:rgba(255,255,255,.5)}.popover,.tooltip-inner{color:#ececec;line-height:1em;background:rgba(101,101,101,.9);border:none;border-radius:2px;-webkit-box-shadow:0 1px 6px 0 rgba(0,0,0,.12),0 1px 6px 0 rgba(0,0,0,.12);box-shadow:0 1px 6px 0 rgba(0,0,0,.12),0 1px 6px 0 rgba(0,0,0,.12)}.tooltip,.tooltip.in{opacity:1}.popover .arrow,.popover .tooltip-arrow,.tooltip .arrow,.tooltip .tooltip-arrow{display:none}.card{display:inline-block;position:relative;width:100%;border-radius:2px;color:rgba(0,0,0,.87);background:#fff;-webkit-box-shadow:0 8px 17px 0 rgba(0,0,0,.2),0 6px 20px 0 rgba(0,0,0,.19);box-shadow:0 8px 17px 0 rgba(0,0,0,.2),0 6px 20px 0 rgba(0,0,0,.19)}.card .card-height-indicator{margin-top:100%}.card .card-content{position:absolute;top:0;bottom:0;left:0;right:0}.card .card-image{height:60%;position:relative;overflow:hidden}.card .card-image img{width:100%;height:100%;border-top-left-radius:2px;border-top-right-radius:2px;pointer-events:none}.card .card-image .card-image-headline{position:absolute;bottom:16px;left:18px;color:#fff;font-size:2em}.card .card-body{height:30%;padding:18px}.card .card-footer{height:10%;padding:18px}.card .card-footer button{margin:0!important;position:relative;bottom:25px;width:auto}.card .card-footer button:first-child{left:-15px}.modal-content{-webkit-box-shadow:0 27px 24px 0 rgba(0,0,0,.2),0 40px 77px 0 rgba(0,0,0,.22);box-shadow:0 27px 24px 0 rgba(0,0,0,.2),0 40px 77px 0 rgba(0,0,0,.22);border-radius:2px;border:none}.modal-content .modal-header{border-bottom:none;padding-top:24px;padding-right:24px;padding-bottom:0;padding-left:24px}.modal-content .modal-body{padding-top:24px;padding-right:24px;padding-bottom:16px;padding-left:24px}.modal-content .modal-footer{border-top:none;padding:7px}.modal-content .modal-footer button{margin:0;padding-left:16px;padding-right:16px;width:auto}.modal-content .modal-footer button.pull-left{padding-left:5px;padding-right:5px;position:relative;left:-5px}.modal-content .modal-footer button+button{margin-bottom:16px}.modal-content .modal-body+.modal-footer{padding-top:0}.modal-backdrop{background:rgba(0,0,0,.3)}.panel{border-radius:2px;border:0;-webkit-box-shadow:0 1px 6px 0 rgba(0,0,0,.12),0 1px 6px 0 rgba(0,0,0,.12);box-shadow:0 1px 6px 0 rgba(0,0,0,.12),0 1px 6px 0 rgba(0,0,0,.12)}.panel.panel-default>.panel-heading,.panel>.panel-heading{background-color:#eee}.panel.panel-inverse>.panel-heading{background-color:#3f51b5}.panel.panel-primary>.panel-heading{background-color:#009688}.panel.panel-success>.panel-heading{background-color:#4caf50}.panel.panel-info>.panel-heading{background-color:#03a9f4}.panel.panel-warning>.panel-heading{background-color:#ff5722}.panel.panel-danger>.panel-heading{background-color:#f44336}[class*=panel-]>.panel-heading{color:rgba(255,255,255,.84);border:0}.panel-default>.panel-heading,.panel:not([class*=panel-])>.panel-heading{color:rgba(0,0,0,.87)}.panel-footer{background-color:#eee}hr.on-dark{color:#1a1a1a}hr.on-light{color:#fff}@media (-webkit-min-device-pixel-ratio:0.75),(min--moz-device-pixel-ratio:0.75),(-o-device-pixel-ratio:3/4),(min-device-pixel-ratio:0.75),(-o-min-device-pixel-ratio:3/4),(min-resolution:0.75dppx),(-webkit-min-device-pixel-ratio:1.25),(-o-min-device-pixel-ratio:5/4),(min-resolution:120dpi){hr{height:.75px}}@media (-webkit-min-device-pixel-ratio:1),(min--moz-device-pixel-ratio:1),(-o-device-pixel-ratio:1),(min-device-pixel-ratio:1),(-o-min-device-pixel-ratio:1/1),(min-resolution:1dppx),(-webkit-min-device-pixel-ratio:1.6666666666666667),(-o-min-device-pixel-ratio:5/3),(min-resolution:160dpi){hr{height:1px}}@media (-webkit-min-device-pixel-ratio:1.33),(min--moz-device-pixel-ratio:1.33),(-o-device-pixel-ratio:133/100),(min-device-pixel-ratio:1.33),(-o-min-device-pixel-ratio:133/100),(min-resolution:1.33dppx),(-webkit-min-device-pixel-ratio:2.21875),(-o-min-device-pixel-ratio:71/32),(min-resolution:213dpi){hr{height:1.33px}}@media (-webkit-min-device-pixel-ratio:1.5),(min--moz-device-pixel-ratio:1.5),(-o-device-pixel-ratio:3/2),(min-device-pixel-ratio:1.5),(-o-min-device-pixel-ratio:3/2),(min-resolution:1.5dppx),(-webkit-min-device-pixel-ratio:2.5),(-o-min-device-pixel-ratio:5/2),(min-resolution:240dpi){hr{height:1.5px}}@media (-webkit-min-device-pixel-ratio:2),(min--moz-device-pixel-ratio:2),(-o-device-pixel-ratio:2/1),(min-device-pixel-ratio:2),(-o-min-device-pixel-ratio:2/1),(min-resolution:2dppx),(-webkit-min-device-pixel-ratio:3.9583333333333335),(-o-min-device-pixel-ratio:95/24),(min-resolution:380dpi){hr{height:2px}}@media (-webkit-min-device-pixel-ratio:3),(min--moz-device-pixel-ratio:3),(-o-device-pixel-ratio:3/1),(min-device-pixel-ratio:3),(-o-min-device-pixel-ratio:3/1),(min-resolution:3dppx),(-webkit-min-device-pixel-ratio:5),(-o-min-device-pixel-ratio:5/1),(min-resolution:480dpi){hr{height:3px}}@media (-webkit-min-device-pixel-ratio:4),(min--moz-device-pixel-ratio:4),(-o-device-pixel-ratio:4/1),(min-device-pixel-ratio:3),(-o-min-device-pixel-ratio:4/1),(min-resolution:4dppx),(-webkit-min-device-pixel-ratio:6.666666666666667),(-o-min-device-pixel-ratio:20/3),(min-resolution:640dpi){hr{height:4px}}*{-webkit-tap-highlight-color:rgba(255,255,255,0);-webkit-tap-highlight-color:transparent}:focus{outline:0}.snackbar{background-color:#323232;color:rgba(255,255,255,.84);font-size:14px;border-radius:2px;-webkit-box-shadow:0 1px 6px 0 rgba(0,0,0,.12),0 1px 6px 0 rgba(0,0,0,.12);box-shadow:0 1px 6px 0 rgba(0,0,0,.12),0 1px 6px 0 rgba(0,0,0,.12);height:0;-webkit-transition:-webkit-transform .2s ease-in-out,opacity .2s ease-in,height 0s linear .2s,padding 0s linear .2s,height 0s linear .2s;-o-transition:-o-transform .2s ease-in-out,opacity .2s ease-in,height 0s linear .2s,padding 0s linear .2s,height 0s linear .2s;transition:transform .2s ease-in-out,opacity .2s ease-in,height 0s linear .2s,padding 0s linear .2s,height 0s linear .2s;-webkit-transform:translateY(200%);-ms-transform:translateY(200%);-o-transform:translateY(200%);transform:translateY(200%)}.snackbar.snackbar-opened{padding:14px 15px;margin-bottom:20px;height:auto;-webkit-transition:-webkit-transform .2s ease-in-out,opacity .2s ease-in,height 0s linear .2s,height 0s linear .2s;-o-transition:-o-transform .2s ease-in-out,opacity .2s ease-in,height 0s linear .2s,height 0s linear .2s;transition:transform .2s ease-in-out,opacity .2s ease-in,height 0s linear .2s,height 0s linear .2s;-webkit-transform:none;-ms-transform:none;-o-transform:none;transform:none}.snackbar.toast{border-radius:200px}.noUi-target,.noUi-target *{-webkit-touch-callout:none;-ms-touch-action:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.noUi-base{width:100%;height:100%;position:relative}.noUi-origin{position:absolute;right:0;top:0;left:0;bottom:0}.noUi-handle{position:relative;z-index:1;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.noUi-stacking .noUi-handle{z-index:10}.noUi-state-tap .noUi-origin{-webkit-transition:left .3s,top .3s;-o-transition:left .3s,top .3s;transition:left .3s,top .3s}.noUi-state-drag *{cursor:inherit!important}.noUi-horizontal{height:10px}.noUi-handle{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;width:12px;height:12px;left:-10px;top:-5px;cursor:ew-resize;border-radius:100%;-webkit-transition:all .2s ease-out;-o-transition:all .2s ease-out;transition:all .2s ease-out;border:1px solid}.noUi-vertical .noUi-handle{margin-left:5px;cursor:ns-resize}.noUi-horizontal.noUi-extended{padding:0 15px}.noUi-horizontal.noUi-extended .noUi-origin{right:-15px}.noUi-background{height:2px;margin:20px 0}.noUi-origin{margin:0;border-radius:0;height:2px;background:#c8c8c8}.noUi-origin[style^="left: 0"] .noUi-handle{background-color:#fff;border:2px solid #c8c8c8}.noUi-origin[style^="left: 0"] .noUi-handle.noUi-active{border-width:1px}.noUi-target{border-radius:2px}.noUi-horizontal{height:2px;margin:15px 0}.noUi-vertical{height:100%;width:2px;margin:0 15px;display:inline-block}.noUi-handle.noUi-active{-webkit-transform:scale3d(2.5,2.5,1);transform:scale3d(2.5,2.5,1)}[disabled].noUi-slider{opacity:.5}[disabled] .noUi-handle{cursor:not-allowed}.slider{background:#c8c8c8}.slider.noUi-connect,.slider.slider-default.noUi-connect{background-color:#009688}.slider.slider-inverse.noUi-connect{background-color:#3f51b5}.slider.slider-primary.noUi-connect{background-color:#009688}.slider.slider-success.noUi-connect{background-color:#4caf50}.slider.slider-info.noUi-connect{background-color:#03a9f4}.slider.slider-warning.noUi-connect{background-color:#ff5722}.slider.slider-danger.noUi-connect{background-color:#f44336}.slider .noUi-connect,.slider.slider-default .noUi-connect{background-color:#009688}.slider.slider-inverse .noUi-connect{background-color:#3f51b5}.slider.slider-primary .noUi-connect{background-color:#009688}.slider.slider-success .noUi-connect{background-color:#4caf50}.slider.slider-info .noUi-connect{background-color:#03a9f4}.slider.slider-warning .noUi-connect{background-color:#ff5722}.slider.slider-danger .noUi-connect{background-color:#f44336}.slider .noUi-handle,.slider.slider-default .noUi-handle{background-color:#009688}.slider.slider-inverse .noUi-handle{background-color:#3f51b5}.slider.slider-primary .noUi-handle{background-color:#009688}.slider.slider-success .noUi-handle{background-color:#4caf50}.slider.slider-info .noUi-handle{background-color:#03a9f4}.slider.slider-warning .noUi-handle{background-color:#ff5722}.slider.slider-danger .noUi-handle{background-color:#f44336}.slider .noUi-handle,.slider.slider-default .noUi-handle{border-color:#009688}.slider.slider-inverse .noUi-handle{border-color:#3f51b5}.slider.slider-primary .noUi-handle{border-color:#009688}.slider.slider-success .noUi-handle{border-color:#4caf50}.slider.slider-info .noUi-handle{border-color:#03a9f4}.slider.slider-warning .noUi-handle{border-color:#ff5722}.slider.slider-danger .noUi-handle{border-color:#f44336}.selectize-control.multi,.selectize-control.single{padding:0}.selectize-control.multi .selectize-input,.selectize-control.multi .selectize-input.input-active,.selectize-control.single .selectize-input,.selectize-control.single .selectize-input.input-active{cursor:text;background:0 0;-webkit-box-shadow:none;box-shadow:none;border:0;padding:0;height:100%;font-size:14px;line-height:30px}.selectize-control.multi .selectize-input .has-items,.selectize-control.multi .selectize-input.input-active .has-items,.selectize-control.single .selectize-input .has-items,.selectize-control.single .selectize-input.input-active .has-items{padding:0}.selectize-control.multi .selectize-input.input-active:after,.selectize-control.multi .selectize-input:after,.selectize-control.single .selectize-input.input-active:after,.selectize-control.single .selectize-input:after{right:5px;position:absolute;font-size:7px;content:"\e894";font-family:Material-Design-Icons;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:4;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.selectize-control.multi .selectize-input input,.selectize-control.multi .selectize-input.input-active input,.selectize-control.single .selectize-input input,.selectize-control.single .selectize-input.input-active input{font-size:14px;outline:0;border:0;background:0 0}.selectize-control.multi .selectize-input.input-active.label-floating-fix input,.selectize-control.multi .selectize-input.label-floating-fix input,.selectize-control.single .selectize-input.input-active.label-floating-fix input,.selectize-control.single .selectize-input.label-floating-fix input{opacity:0}.selectize-control.multi .selectize-input.input-active>.item,.selectize-control.multi .selectize-input.input-active>div,.selectize-control.multi .selectize-input>.item,.selectize-control.multi .selectize-input>div,.selectize-control.single .selectize-input.input-active>.item,.selectize-control.single .selectize-input.input-active>div,.selectize-control.single .selectize-input>.item,.selectize-control.single .selectize-input>div{display:inline-block;margin:0 8px 3px 0;padding:0;background:0 0;border:0}.selectize-control.multi .selectize-input.input-active>.item:after,.selectize-control.multi .selectize-input.input-active>div:after,.selectize-control.multi .selectize-input>.item:after,.selectize-control.multi .selectize-input>div:after,.selectize-control.single .selectize-input.input-active>.item:after,.selectize-control.single .selectize-input.input-active>div:after,.selectize-control.single .selectize-input>.item:after,.selectize-control.single .selectize-input>div:after{content:","}.selectize-control.multi .selectize-input.input-active>.item:last-of-type:after,.selectize-control.multi .selectize-input.input-active>div:last-of-type:after,.selectize-control.multi .selectize-input>.item:last-of-type:after,.selectize-control.multi .selectize-input>div:last-of-type:after,.selectize-control.single .selectize-input.input-active>.item:last-of-type:after,.selectize-control.single .selectize-input.input-active>div:last-of-type:after,.selectize-control.single .selectize-input>.item:last-of-type:after,.selectize-control.single .selectize-input>div:last-of-type:after{content:""}.selectize-control.multi .selectize-input.input-active>.item.active,.selectize-control.multi .selectize-input.input-active>div.active,.selectize-control.multi .selectize-input>.item.active,.selectize-control.multi .selectize-input>div.active,.selectize-control.single .selectize-input.input-active>.item.active,.selectize-control.single .selectize-input.input-active>div.active,.selectize-control.single .selectize-input>.item.active,.selectize-control.single .selectize-input>div.active{font-weight:700;background:0 0;border:0}.selectize-control.multi .selectize-dropdown,.selectize-control.single .selectize-dropdown{position:absolute;z-index:1000;border:0;width:100%!important;left:0!important;height:auto;background-color:#FFF;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.12),0 1px 2px rgba(0,0,0,.24);box-shadow:0 1px 3px rgba(0,0,0,.12),0 1px 2px rgba(0,0,0,.24);border-radius:2px;padding:0;margin-top:3px}.selectize-control.multi .selectize-dropdown .active,.selectize-control.single .selectize-dropdown .active{background-color:inherit}.selectize-control.multi .selectize-dropdown .highlight,.selectize-control.single .selectize-dropdown .highlight{background-color:#d5d8ff}.selectize-control.multi .selectize-dropdown .selected,.selectize-control.multi .selectize-dropdown .selected.active,.selectize-control.single .selectize-dropdown .selected,.selectize-control.single .selectize-dropdown .selected.active{background-color:#EEE}.selectize-control.multi .selectize-dropdown .optgroup-header,.selectize-control.multi .selectize-dropdown [data-selectable],.selectize-control.single .selectize-dropdown .optgroup-header,.selectize-control.single .selectize-dropdown [data-selectable]{padding:10px 20px;cursor:pointer}.selectize-control.multi .dropdown-active~.selectize-dropdown,.selectize-control.single .dropdown-active~.selectize-dropdown{display:block}.dropdownjs::after{right:5px;top:3px;font-size:25px;position:absolute;font-family:'Material Icons';font-style:normal;font-weight:400;content:"\e5c5";pointer-events:none;color:#757575} +/*# sourceMappingURL=bootstrap-material-design.min.css.map */ \ No newline at end of file diff --git a/iguana/css/jquery.dropdown.css b/iguana/css/jquery.dropdown.css new file mode 100644 index 000000000..ee3903da0 --- /dev/null +++ b/iguana/css/jquery.dropdown.css @@ -0,0 +1,97 @@ +.dropdownjs { + position: relative; +} +.dropdownjs * { + box-sizing: border-box; +} +.dropdownjs > input { + width: 100%; + padding-right: 30px; + text-overflow: ellipsis; +} +.dropdownjs > input.focus ~ ul { + -webkit-transform: scale(1); + -ms-transform: scale(1); + transform: scale(1); +} +.dropdownjs > ul { + position: absolute; + padding: 0; + margin: 0; + min-width: 200px; + -webkit-transform: scale(0); + -ms-transform: scale(0); + transform: scale(0); + z-index: 10000; +} +.dropdownjs > ul[placement=top-left] { + -webkit-transform-origin: bottom left; + -ms-transform-origin: bottom left; + transform-origin: bottom left; + bottom: 0; + left: 0; +} +.dropdownjs > ul[placement=bottom-left] { + -webkit-transform-origin: top left; + -ms-transform-origin: top left; + transform-origin: top left; + top: 0; + left: 0; +} +.dropdownjs > ul > li { + list-style: none; + padding: 10px 20px; +} +.dropdownjs > ul > li.dropdownjs-add { + padding: 0; +} +.dropdownjs > ul > li.dropdownjs-add > input { + border: 0; + padding: 10px 20px; + width: 100%; +} + +/* Theme */ +.dropdownjs > input[readonly] { + cursor: pointer; +} +select[data-dropdownjs][disabled] + .dropdownjs > input[readonly] { + cursor: default; +} +.dropdownjs > ul { + background: #FFF; + box-shadow: 0 1px 6px rgba(0, 0, 0, 0.12), 0 1px 6px rgba(0, 0, 0, 0.12); + -webkit-transition: -webkit-transform 0.2s ease-out; + transition: transform 0.2s ease-out; + padding: 10px; + overflow: auto; + max-width: 500px; +} +.dropdownjs > ul > li { + cursor: pointer; + word-wrap: break-word; +} +.dropdownjs > ul > li.selected, +.dropdownjs > ul > li:active { + background-color: #eaeaea; +} +.dropdownjs > ul > li:focus { + outline: 0; + outline: 1px solid #d4d4d4; +} +.dropdownjs > ul > li > .close:before { + content: "\00d7"; + display: block; + position: absolute; + right: 15px; + float: right; + font-size: 21px; + font-weight: 700; + line-height: 1; + color: #000; + text-shadow: 0 1px 0 #fff; + opacity: .6; +} +.dropdownjs > ul > li:h > .close:hover:before { + opacity: .9; +} diff --git a/iguana/css/ripples.css b/iguana/css/ripples.css new file mode 100644 index 000000000..cc88c40f5 --- /dev/null +++ b/iguana/css/ripples.css @@ -0,0 +1,47 @@ +.withripple { + position: relative; +} +.ripple-container { + position: absolute; + top: 0; + left: 0; + z-index: 1; + width: 100%; + height: 100%; + overflow: hidden; + border-radius: inherit; + pointer-events: none; +} +.ripple { + position: absolute; + width: 20px; + height: 20px; + margin-left: -10px; + margin-top: -10px; + border-radius: 100%; + background-color: #000; + background-color: rgba(0, 0, 0, 0.05); + -webkit-transform: scale(1); + -ms-transform: scale(1); + -o-transform: scale(1); + transform: scale(1); + -webkit-transform-origin: 50%; + -ms-transform-origin: 50%; + -o-transform-origin: 50%; + transform-origin: 50%; + opacity: 0; + pointer-events: none; +} +.ripple.ripple-on { + -webkit-transition: opacity 0.15s ease-in 0s, -webkit-transform 0.5s cubic-bezier(0.4, 0, 0.2, 1) 0.1s; + -o-transition: opacity 0.15s ease-in 0s, -o-transform 0.5s cubic-bezier(0.4, 0, 0.2, 1) 0.1s; + transition: opacity 0.15s ease-in 0s, transform 0.5s cubic-bezier(0.4, 0, 0.2, 1) 0.1s; + opacity: 0.1; +} +.ripple.ripple-out { + -webkit-transition: opacity 0.1s linear 0s !important; + -o-transition: opacity 0.1s linear 0s !important; + transition: opacity 0.1s linear 0s !important; + opacity: 0; +} +/*# sourceMappingURL=ripples.css.map */ \ No newline at end of file diff --git a/iguana/js/api.js b/iguana/js/api.js index 58de38dde..bef6492ed 100755 --- a/iguana/js/api.js +++ b/iguana/js/api.js @@ -1,67 +1,78 @@ -var SPNAPI = (function(SPNAPI, $, undefined) { - - SPNAPI.methods = {}; - SPNAPI.pages = ["Settings", "eyedea", "iguana","Debug","Wallet"]; - SPNAPI.pageContent = {}; - SPNAPI.page = "welcome"; - $(document).ready(function() { - - //load Pages into the navbar - $.each(SPNAPI.pages, function( index, value ) { - $("#welcome").after('
  • '); - }); - $(".navigation").on("click", function () { - - var page = $(this).data("page"); - $(".navigation").removeClass("active"); - $(".hljs").html("JSON response"); - SPNAPI.loadSite(page); - }); - $(".page").hide(); - $("#welcome_page").show(); - $(".submit_api_request").on("click", function () { - - SPNAPI.submitRequest(); - - }); - - $(".clear-response").on("click", function () { - - $(".hljs").html("JSON response"); - - }); - - - - }); - - SPNAPI.submitRequest = function(e) { - -//code added in order to be able to receive input from or