From b6dc2bb292c7a61720a8d79f5c2d85a53cb49c58 Mon Sep 17 00:00:00 2001 From: wagamama Date: Sun, 22 Mar 2015 11:25:16 +0800 Subject: [PATCH 001/120] Resolve multiple currently playing songs in queue Use TlTrack to distinguish same songs in current queue 1. Play icon is not applied to songs with same uri 2. Songs with same uri are not removed at once --- mopidy_musicbox_webclient/static/index.html | 6 +- .../static/js/controls.js | 34 ++--- .../static/js/functionsvars.js | 87 +++++++++--- mopidy_musicbox_webclient/static/js/gui.js | 132 ++++++++++-------- .../static/js/library.js | 10 +- .../static/js/process_ws.js | 22 +-- 6 files changed, 169 insertions(+), 122 deletions(-) diff --git a/mopidy_musicbox_webclient/static/index.html b/mopidy_musicbox_webclient/static/index.html index 9b0ef260..0bfbfa2c 100644 --- a/mopidy_musicbox_webclient/static/index.html +++ b/mopidy_musicbox_webclient/static/index.html @@ -149,7 +149,7 @@

 

- Add to saved streams + Add to saved streams @@ -410,7 +410,7 @@

Streams

Save
- diff --git a/mopidy_musicbox_webclient/static/js/controls.js b/mopidy_musicbox_webclient/static/js/controls.js index 786eefe5..94f6b1a7 100644 --- a/mopidy_musicbox_webclient/static/js/controls.js +++ b/mopidy_musicbox_webclient/static/js/controls.js @@ -94,7 +94,7 @@ function playTrack(addtoqueue) { //find track that is playing for (var playing = 0; playing < currentplaylist.length; playing++) { - if (currentplaylist[playing].uri == songdata.uri) { + if (currentplaylist[playing].tlid == songdata.tlid) { break; } } @@ -140,7 +140,7 @@ function playTrack(addtoqueue) { function playTrackByUri(track_uri, playlist_uri) { function findAndPlayTrack(tltracks) { // console.log('fa', tltracks, track_uri); - if (tltracks == []) { return;} + if (tltracks == []) { return;} // Find track that was selected for (var selected = 0; selected < tltracks.length; selected++) { if (tltracks[selected].track.uri == track_uri) { @@ -184,25 +184,26 @@ function playTrackByUri(track_uri, playlist_uri) { /*** * Plays a Track from a Playlist. * @param uri - * @param playlisturi + * @param tlid * @returns {boolean} */ -function playTrackQueueByUri(uri, playlisturi) { +function playTrackQueueByTlid(uri, tlid) { // console.log('playquuri'); //stop directly, for user feedback mopidy.playback.stop(true); $('#popupQueue').popup('close'); toast('Loading...'); + tlid = parseInt(tlid); mopidy.tracklist.filter({ - 'uri': [uri] + 'tlid': [tlid] }).then( function(tltracks) { if (tltracks.length > 0) { mopidy.playback.play(tltracks[0]); return; } - console.log('Failed to play selected track ', uri); + console.log('Failed to play selected track ', tlid); } ); return false; @@ -214,9 +215,9 @@ function playTrackQueueByUri(uri, playlisturi) { */ function playTrackQueue() { // console.log('playqu'); - playlisturi = $('#popupQueue').data("list"); uri = $('#popupQueue').data("track"); - return playTrackQueueByUri(uri, playlisturi); + tlid = $('#popupQueue').data("tlid"); + return playTrackQueueByTlid(uri, tlid); } /******************************************************** @@ -226,18 +227,9 @@ function removeTrack() { $('#popupQueue').popup('close'); toast('Deleting...'); - uri = $('#popupQueue').data("track"); - console.log(uri); - - for (var i = 0; i < currentplaylist.length; i++) { - if (currentplaylist[i].uri == uri) { - break; - } - } - var track = {}; - track.uri = [currentplaylist[i].uri]; - mopidy.tracklist.remove({'uri':track.uri}); - // console.log(currentplaylist[i].uri); + tlid = parseInt($('#popupQueue').data("tlid")); + console.log(tlid); + mopidy.tracklist.remove({'tlid':[tlid]}); } function clearQueue() { @@ -280,7 +272,7 @@ function doPlay() { if (!play) { mopidy.playback.play(); } else { - if(isStreamUri(songdata.uri)) { + if(isStreamUri(songdata.track.uri)) { mopidy.playback.stop(); } else { mopidy.playback.pause(); diff --git a/mopidy_musicbox_webclient/static/js/functionsvars.js b/mopidy_musicbox_webclient/static/js/functionsvars.js index 9db68a30..ac740ed2 100644 --- a/mopidy_musicbox_webclient/static/js/functionsvars.js +++ b/mopidy_musicbox_webclient/static/js/functionsvars.js @@ -34,7 +34,7 @@ var songlength = 0; var artistshtml = ''; var artiststext = ''; var songname = ''; -var songdata = ''; +var songdata = {'track':{}, 'tlid':-1}; var newposition = 0; var playlisttracksScroll; @@ -171,14 +171,14 @@ function albumTracksToTable(pl, target, uri) { for (var i = 0; i < pl.length; i++) { popupData[pl[i].uri] = pl[i]; liID = targetmin + '-' + pl[i].uri; - tmp += renderSongLi(pl[i], liID, uri, 'playTrackByUri'); + tmp += renderSongLi(pl[i], liID, uri); }; tmp += ''; $(target).html(tmp); $(target).attr('data', uri); } -function renderSongLi(song, liID, uri, playlistType) { +function renderSongLi(song, liID, uri) { var name; if (!song.name || song.name == '') { name = uri.split('/'); @@ -188,14 +188,31 @@ function renderSongLi(song, liID, uri, playlistType) { } // var iconClass = getMediaClass(liID.split('-')[1]); songLi = '
  • ' + - '' + - '' + - '' + '' + - // '

    ' + name + '

    ' + - '

    ' + name + '

    ' + - '
    ' + - - '
  • '; + '' + + '' + + '' + + // '

    ' + name + '

    ' + + '

    ' + name + '

    ' + + ''; + return songLi; +} + +function renderQueueSongLi(song, liID, uri, tlid) { + var name; + if (!song.name || song.name == '') { + name = uri.split('/'); + name = decodeURI(name[name.length - 1]); + } else { + name = song.name; + } + // var iconClass = getMediaClass(liID.split('-')[1]); + songLi = '
  • ' + + '' + + '' + + '' + + // '

    ' + name + '

    ' + + '

    ' + name + '

    ' + + '
  • '; return songLi; } @@ -203,15 +220,21 @@ function resultsToTables(results, target, uri) { if (!results) { return } - if (target == '#currenttable') { - playlistType = 'playTrackQueueByUri'; - } else if (target == SEARCH_TRACK_TABLE) { - playlistType = 'playTrackByUri'; - } else { - playlistType = 'playTrackByUri'; + var tlids = []; + if (target == CURRENT_PLAYLIST_TABLE) { + var tmp = []; + for (i = 0; i < results.length; i++) { + tmp[i] = results[i].track; + tlids[i] = results[i].tlid; + } + results = []; + for (i = 0; i < tmp.length; i++) { + results[i] = tmp[i]; + } } var newalbum = []; + var newtlids = []; //keep a list of albums for retreiving of covers var coversList = []; var nextname = ''; @@ -246,6 +269,7 @@ function resultsToTables(results, target, uri) { if (results[i].name.substring(0, 12) == '[unplayable]') continue; newalbum.push(results[i]); + newtlids.push(tlids[i]); nextname = ''; if ((i < length - 1) && results[i + 1].album && results[i + 1].album.name) { nextname = results[i + 1].album.name; @@ -253,6 +277,7 @@ function resultsToTables(results, target, uri) { if (results[i].length == -1) { html += '
  • ' + results[i].name + ' [Stream]

  • '; newalbum = []; + newtlids = []; nextname = ''; } else { if ((results[i].album.name != nextname) || (nextname == '')) { @@ -263,11 +288,21 @@ function resultsToTables(results, target, uri) { html += '
  •  
  • '; } iconClass = getMediaClass(newalbum[0].uri); - html += '
  • ' + - '' + - '' + - '' + - '

    ' + newalbum[0].name + "

    "; + var liID = targetmin + '-' + newalbum[j].uri; + if (target == CURRENT_PLAYLIST_TABLE) { + html += '

  • ' + + '' + + '' + + '' + + '

    ' + newalbum[0].name + "

    "; + } else { + html += '

  • ' + + '' + + '' + + '' + + '

    ' + newalbum[0].name + "

    "; + } + /* '' + timeFromSeconds(newalbum[0].length / 1000) + ''; */ if (newalbum[0].artists) { for (j = 0; j < newalbum[0].artists.length; j++) { @@ -288,6 +323,7 @@ function resultsToTables(results, target, uri) { popupData[newalbum[0].uri] = newalbum[0]; newalbum = []; + newtlids = []; } else { //newalbum length if (results[i].album.uri && results[i].album.name) { // iconClass = getMediaClass(results[i].album.uri); @@ -314,12 +350,17 @@ function resultsToTables(results, target, uri) { //hERE! var liID = targetmin + '-' + newalbum[j].uri; - html += renderSongLi(newalbum[j], liID, uri, playlistType); + if (target == CURRENT_PLAYLIST_TABLE) { + html += renderQueueSongLi(newalbum[j], liID, uri, newtlids[j]); + } else { + html += renderSongLi(newalbum[j], liID, uri); + } //html += '

  • '; //html += '

    ' + timeFromSeconds(newalbum[j].length / 1000) + '

    ' + newalbum[j].name + '

  • '; } newalbum = []; + newtlids = []; if (results[i].album) { coversList.push([results[i].album, i]); } diff --git a/mopidy_musicbox_webclient/static/js/gui.js b/mopidy_musicbox_webclient/static/js/gui.js index 82d2b967..c7f96541 100644 --- a/mopidy_musicbox_webclient/static/js/gui.js +++ b/mopidy_musicbox_webclient/static/js/gui.js @@ -12,16 +12,18 @@ function resetSong() { setPlayState(false); setPosition(0); var data = new Object; - data.name = ''; - data.artists = ''; - data.length = 0; - data.uri = ' '; + data.tlid = -1; + data.track = new Object; + data.track.name = ''; + data.track.artists = ''; + data.track.length = 0; + data.track.uri = ' '; setSongInfo(data); } } function resizeMb() { - $("#infoname").html(songdata.name); + $("#infoname").html(songdata.track.name); $("#infoartist").html(artiststext); if ($(window).width() <= 960) { @@ -72,69 +74,69 @@ function resizeMb() { function setSongInfo(data) { // console.log(data, songdata); if (!data ) { return; } - if ( (data.uri == songdata.uri) ) { return;} - if (!data.name || data.name == '') { - var name = data.uri.split('/'); - data.name = decodeURI(name[name.length - 1]); + if (data.tlid == songdata.tlid) { return; } + if (!data.track.name || data.track.name == '') { + var name = data.track.uri.split('/'); + data.track.name = decodeURI(name[name.length - 1]); }; - updatePlayIcons(data.uri); + updatePlayIcons(data.track.uri, data.tlid); artistshtml = ''; artiststext = ''; - if (validUri(data.name)) { + if (validUri(data.track.name)) { for (var key in streamUris) { - rs = streamUris[key]; - if (rs && rs[1] == data.name) { - data.name = (rs[0] || rs[1]); - } - }; + rs = streamUris[key]; + if (rs && rs[1] == data.track.name) { + data.track.name = (rs[0] || rs[1]); + } + }; } - + songdata = data; - $("#modalname").html(data.name); + $("#modalname").html(data.track.name); - if (!data.length || data.length == 0) { + if (!data.track.length || data.track.length == 0) { songlength = 0; - $("#songlength").html(''); - pausePosTimer(); - $('#trackslider').slider('disable'); -// $('#streamnameinput').val(data.name); -// $('#streamuriinput').val(data.uri); + $("#songlength").html(''); + pausePosTimer(); + $('#trackslider').slider('disable'); + // $('#streamnameinput').val(data['track'].name); + // $('#streamuriinput').val(data['track'].uri); } else { - songlength = data.length; - $("#songlength").html(timeFromSeconds(data.length / 1000)); + songlength = data.track.length; + $("#songlength").html(timeFromSeconds(data.track.length / 1000)); $('#trackslider').slider('enable'); } var arttmp = ''; - - if(data.artists) { - for (var j = 0; j < data.artists.length; j++) { - artistshtml += '' + data.artists[j].name + ''; - artiststext += data.artists[j].name; - if (j != data.artists.length - 1) { + + if(data.track.artists) { + for (var j = 0; j < data.track.artists.length; j++) { + artistshtml += '' + data.track.artists[j].name + ''; + artiststext += data.track.artists[j].name; + if (j != data.track.artists.length - 1) { artistshtml += ', '; artiststext += ', '; } } arttmp = artistshtml; } - if (data.album && data.album.name) { - $("#modalalbum").html('' + data.album.name + ''); - getCover(data.album, '#infocover, #controlspopupimage', 'extralarge'); + if (data.track.album && data['track'].album.name) { + $("#modalalbum").html('' + data.track.album.name + ''); + getCover(data.track.album, '#infocover, #controlspopupimage', 'extralarge'); } else { - $("#modalalbum").html(''); - $("#infocover").attr('src', 'images/default_cover.png'); + $("#modalalbum").html(''); + $("#infocover").attr('src', 'images/default_cover.png'); $("#controlspopupimage").attr('src', 'images/default_cover.png'); } $("#modalartist").html(arttmp); $("#trackslider").attr("min", 0); - $("#trackslider").attr("max", data.length); - + $("#trackslider").attr("max", data.track.length); + resizeMb(); } @@ -150,7 +152,7 @@ function closePopups() { } -function popupTracks(e, listuri, trackuri) { +function popupTracks(e, listuri, trackuri, tlid) { if (!e) var e = window.event; $('.popupTrackName').html(popupData[trackuri].name); @@ -159,7 +161,7 @@ function popupTracks(e, listuri, trackuri) { if (popupData[trackuri].artists) { if (popupData[trackuri].artists.length == 1) { - child = 'Show Artist'; + child = 'Show Artist'; $('.popupArtistName').html(popupData[trackuri].artists[0].name); $('.popupArtistHref').attr('onclick', 'showArtist("' + popupData[trackuri].artists[0].uri + '");' ); $('.popupArtistsDiv').hide(); @@ -189,10 +191,18 @@ function popupTracks(e, listuri, trackuri) { var popupName = '#popupTracks'; } - $(popupName).data("list", listuri).data("track", trackuri).popup("open", { - x : e.pageX, - y : e.pageY - }); + if (typeof tlid != 'undefined' && tlid != '') { + $(popupName).data("list", listuri).data("track", trackuri).data("tlid", tlid).popup("open", { + x : e.pageX, + y : e.pageY + }); + } else { + $(popupName).data("list", listuri).data("track", trackuri).popup("open", { + x : e.pageX, + y : e.pageY + }); + } + return false; } @@ -221,18 +231,18 @@ function initSocketevents() { resetSong(); showOffline(true); }); - + mopidy.on("event:optionsChanged", updateOptions); mopidy.on("event:trackPlaybackStarted", function(data) { mopidy.playback.getTimePosition().then(processCurrentposition, console.error); setPlayState(true); - setSongInfo(data.tl_track.track); + setSongInfo(data.tl_track); initPosTimer(); }); mopidy.on("event:trackPlaybackPaused", function(data) { - //setSongInfo(data.tl_track.track); + //setSongInfo(data.tl_track); pausePosTimer(); setPlayState(false); }); @@ -335,7 +345,7 @@ function setHeadline(site){ //update timer function updateStatusTimer() { // console.log('statustimer'); - mopidy.playback.getCurrentTrack().then(processCurrenttrack, console.error); + mopidy.playback.getCurrentTlTrack().then(processCurrenttrack, console.error); mopidy.playback.getTimePosition().then(processCurrentposition, console.error); //TODO check offline? } @@ -350,7 +360,7 @@ function updateOptions() { //update everything as if reloaded function updateStatusOfAll() { - mopidy.playback.getCurrentTrack().then(processCurrenttrack, console.error); + mopidy.playback.getCurrentTlTrack().then(processCurrenttrack, console.error); mopidy.playback.getTimePosition().then(processCurrentposition, console.error); mopidy.playback.getState().then(processPlaystate, console.error); @@ -487,9 +497,9 @@ $(document).ready(function(event) { //navigation temporary, rewrite this! $('#songinfo').click( - function() + function() {return switchContent('nowPlaying')} ); - $('#controlspopupimage').click( + $('#controlspopupimage').click( function() { return switchContent('current')} ); $('#navEnterFullscreen').click(function(){ @@ -552,22 +562,26 @@ $(document).ready(function(event) { // swipe songinfo and panel $( "#normalFooter, #nowPlayingFooter" ).on( "swiperight", doPrevious ); $( "#normalFooter, #nowPlayingFooter" ).on( "swipeleft", doNext ); - $( "#nowPlayingpane, .ui-body-c, #header, #panel, .pane" ).on( "swiperight", function() { + $( "#nowPlayingpane, .ui-body-c, #header, #panel, .pane" ).on( "swiperight", function() { if(!$(event.target).is("#normalFooter") && !$(event.target).is("#nowPlayingFooter")) { $("#panel").panel("open"); event.stopImmediatePropagation(); } - } ); - $( "#nowPlayingpane, .ui-body-c, #header, #panel, .pane" ).on( "swipeleft", function() { + } ); + $( "#nowPlayingpane, .ui-body-c, #header, #panel, .pane" ).on( "swipeleft", function() { if(!$(event.target).is("#normalFooter") && !$(event.target).is("#nowPlayingFooter")) { - $("#panel").panel("close"); + $("#panel").panel("close"); event.stopImmediatePropagation(); } - } ); + } ); }); -function updatePlayIcons (uri) { +function updatePlayIcons (uri, tlid) { //update styles of listviews $('#currenttable li').each(function() { - if (this.id == 'currenttable-' + uri) { + var eachTlid = $(this).attr('tlid'); + if (typeof eachTlid != 'undefined') { + eachTlid = parseInt(eachTlid); + } + if (this.id == 'currenttable-' + uri && eachTlid == tlid) { $(this).addClass('currenttrack'); } else { $(this).removeClass("currenttrack"); diff --git a/mopidy_musicbox_webclient/static/js/library.js b/mopidy_musicbox_webclient/static/js/library.js index 5dd2906d..20bd57c3 100644 --- a/mopidy_musicbox_webclient/static/js/library.js +++ b/mopidy_musicbox_webclient/static/js/library.js @@ -78,7 +78,7 @@ function processSearchResults(resultArr) { // TODO should of coures have multiple tables var results = {'tracks': [], 'artists': [], 'albums': []}; var j, emptyResult = true; - + /* for (var i = 0; i < resultArr.length; ++i) { for (var prop in results) { if (resultArr[i][prop] && resultArr[i][prop].length) { @@ -199,7 +199,7 @@ function processSearchResults(resultArr) { // playlisttotable(results.tracks, SEARCH_TRACK_TABLE, 'trackresultscache'); resultsToTables(results.tracks, SEARCH_TRACK_TABLE, 'trackresultscache'); - setSongInfo(); + // setSongInfo(); showLoading(false); } @@ -230,7 +230,7 @@ function getBrowseDir(rootdir) { } function getCurrentPlaylist() { - mopidy.tracklist.getTracks().then(processCurrentPlaylist, console.error); + mopidy.tracklist.getTlTracks().then(processCurrentPlaylist, console.error); } /******************************************************** @@ -292,7 +292,7 @@ function showArtist(nwuri) { }, console.error); switchContent('artists', nwuri); scrollToTop(); - setSongInfo(); + // setSongInfo(); return false; } @@ -329,7 +329,7 @@ function showAlbum(uri) { //show page switchContent('albums', uri); scrollToTop(); - setSongInfo(); + // setSongInfo(); return false; } diff --git a/mopidy_musicbox_webclient/static/js/process_ws.js b/mopidy_musicbox_webclient/static/js/process_ws.js index 0b8fda9f..7e55f9fc 100644 --- a/mopidy_musicbox_webclient/static/js/process_ws.js +++ b/mopidy_musicbox_webclient/static/js/process_ws.js @@ -110,13 +110,13 @@ function processBrowseDir(resultArr) { iconClass = getMediaClass(resultArr[i].uri); if(resultArr[i].type == 'track' ) { // console.log(resultArr[i]); - child += '
  • ' + resultArr[i].name + '

  • '; } else { if (browseStack.length > 0) { iconClass="fa fa-folder-o"; } - child += '
  • ' + resultArr[i].name + '

  • '; } }; @@ -138,7 +138,7 @@ function processBrowseDir(resultArr) { $('#browsepath').html(''); } - updatePlayIcons(songdata.uri); + updatePlayIcons(songdata.track.uri, songdata.tlid); showLoading(false); } @@ -156,11 +156,11 @@ function processGetPlaylists(resultArr) { var child, tmp = '', starredRegex = /spotify:user:.*:starred/g, iconClass, starred; - + for (var i = 0; i < resultArr.length; i++) { iconClass = getMediaClass(resultArr[i].uri); - + // Check if this is Spotify's "Starred" playlist if(starredRegex.test(resultArr[i].uri)) { starred = '
  • ★ Spotify Starred Tracks
  • '; @@ -188,7 +188,7 @@ function processGetTracklist(resultArr) { var newplaylisturi = resultArr.uri; //console.log(resultArr); playlists[newplaylisturi] = resultArr; - setSongInfo(); + // setSongInfo(); resultsToTables(playlists[newplaylisturi].tracks, PLAYLIST_TABLE, newplaylisturi); showLoading(false); } @@ -198,9 +198,9 @@ function processGetTracklist(resultArr) { *********************************************************/ function processCurrentPlaylist(resultArr) { currentplaylist = resultArr; - resultsToTables(resultArr, CURRENT_PLAYLIST_TABLE); - mopidy.playback.getCurrentTrack().then(processCurrenttrack, console.error); - updatePlayIcons(songdata.uri); + resultsToTables(currentplaylist, CURRENT_PLAYLIST_TABLE); + mopidy.playback.getCurrentTlTrack().then(processCurrenttrack, console.error); + updatePlayIcons(songdata.track.uri, songdata.tlid); } /******************************************************** @@ -219,7 +219,7 @@ function processArtistResults(resultArr) { var artistname = getArtist(resultArr); $('#h_artistname, #artistpopupname').html(artistname); getArtistImage(artistname, '#artistviewimage, #artistpopupimage', 'extralarge'); - setSongInfo(); + // setSongInfo(); showLoading(false); } @@ -242,7 +242,7 @@ function processAlbumResults(resultArr) { $('#h_albumartist').html(artistname); $('#coverpopupalbumname').html(albumname); $('#coverpopupartist').html(artistname); - setSongInfo(); + // setSongInfo(); getCover(resultArr[0].album, '#albumviewcover, #coverpopupimage', 'extralarge'); showLoading(false); } From 647a9d9c5f3b84c238d714dc2ce47d2f7fa85a67 Mon Sep 17 00:00:00 2001 From: wagamama Date: Sun, 22 Mar 2015 12:04:07 +0800 Subject: [PATCH 002/120] Bug fix 1. Fix typo in functionsvars.js 2. Close popup menu after actions in browse pane --- mopidy_musicbox_webclient/static/js/controls.js | 2 ++ mopidy_musicbox_webclient/static/js/functionsvars.js | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/mopidy_musicbox_webclient/static/js/controls.js b/mopidy_musicbox_webclient/static/js/controls.js index e0d55619..2a1cf260 100644 --- a/mopidy_musicbox_webclient/static/js/controls.js +++ b/mopidy_musicbox_webclient/static/js/controls.js @@ -8,6 +8,8 @@ function playBrowsedTracks(addtoqueue, trackid) { mopidy.playback.stop(true); mopidy.tracklist.clear(); } + $('#popupBrowse').popup('close'); + $('#controlspopup').popup('close'); toast('Loading...'); trackid = typeof trackid !== 'undefined' ? trackid : $('#popupBrowse').data("track"); diff --git a/mopidy_musicbox_webclient/static/js/functionsvars.js b/mopidy_musicbox_webclient/static/js/functionsvars.js index 820ce399..a6ce723b 100644 --- a/mopidy_musicbox_webclient/static/js/functionsvars.js +++ b/mopidy_musicbox_webclient/static/js/functionsvars.js @@ -289,7 +289,7 @@ function resultsToTables(results, target, uri) { html += '
  •  
  • '; } iconClass = getMediaClass(newalbum[0].uri); - var liID = targetmin + '-' + newalbum[j].uri; + var liID = targetmin + '-' + newalbum[0].uri; if (target == CURRENT_PLAYLIST_TABLE) { html += '
  • ' + '' + From 47b45dffa9ef9b052f62479154e22705a8149694 Mon Sep 17 00:00:00 2001 From: wagamama Date: Thu, 26 Mar 2015 09:42:24 +0800 Subject: [PATCH 003/120] Refine code --- mopidy_musicbox_webclient/static/js/functionsvars.js | 7 +------ mopidy_musicbox_webclient/static/js/gui.js | 6 +++--- mopidy_musicbox_webclient/static/js/library.js | 3 --- mopidy_musicbox_webclient/static/js/process_ws.js | 3 --- 4 files changed, 4 insertions(+), 15 deletions(-) diff --git a/mopidy_musicbox_webclient/static/js/functionsvars.js b/mopidy_musicbox_webclient/static/js/functionsvars.js index a6ce723b..c24944e7 100644 --- a/mopidy_musicbox_webclient/static/js/functionsvars.js +++ b/mopidy_musicbox_webclient/static/js/functionsvars.js @@ -223,14 +223,9 @@ function resultsToTables(results, target, uri) { } var tlids = []; if (target == CURRENT_PLAYLIST_TABLE) { - var tmp = []; for (i = 0; i < results.length; i++) { - tmp[i] = results[i].track; tlids[i] = results[i].tlid; - } - results = []; - for (i = 0; i < tmp.length; i++) { - results[i] = tmp[i]; + results[i] = results[i].track; } } diff --git a/mopidy_musicbox_webclient/static/js/gui.js b/mopidy_musicbox_webclient/static/js/gui.js index d0f24433..3acfbcb4 100644 --- a/mopidy_musicbox_webclient/static/js/gui.js +++ b/mopidy_musicbox_webclient/static/js/gui.js @@ -102,8 +102,8 @@ function setSongInfo(data) { $("#songlength").html(''); pausePosTimer(); $('#trackslider').slider('disable'); - // $('#streamnameinput').val(data['track'].name); - // $('#streamuriinput').val(data['track'].uri); + // $('#streamnameinput').val(data.track.name); + // $('#streamuriinput').val(data.track.uri); } else { songlength = data.track.length; $("#songlength").html(timeFromSeconds(data.track.length / 1000)); @@ -123,7 +123,7 @@ function setSongInfo(data) { } arttmp = artistshtml; } - if (data.track.album && data['track'].album.name) { + if (data.track.album && data.track.album.name) { $("#modalalbum").html('' + data.track.album.name + ''); getCover(data.track.album, '#infocover, #controlspopupimage', 'extralarge'); } else { diff --git a/mopidy_musicbox_webclient/static/js/library.js b/mopidy_musicbox_webclient/static/js/library.js index 20bd57c3..f149d865 100644 --- a/mopidy_musicbox_webclient/static/js/library.js +++ b/mopidy_musicbox_webclient/static/js/library.js @@ -199,7 +199,6 @@ function processSearchResults(resultArr) { // playlisttotable(results.tracks, SEARCH_TRACK_TABLE, 'trackresultscache'); resultsToTables(results.tracks, SEARCH_TRACK_TABLE, 'trackresultscache'); - // setSongInfo(); showLoading(false); } @@ -292,7 +291,6 @@ function showArtist(nwuri) { }, console.error); switchContent('artists', nwuri); scrollToTop(); - // setSongInfo(); return false; } @@ -329,7 +327,6 @@ function showAlbum(uri) { //show page switchContent('albums', uri); scrollToTop(); - // setSongInfo(); return false; } diff --git a/mopidy_musicbox_webclient/static/js/process_ws.js b/mopidy_musicbox_webclient/static/js/process_ws.js index 566d1b04..c8e0d31d 100644 --- a/mopidy_musicbox_webclient/static/js/process_ws.js +++ b/mopidy_musicbox_webclient/static/js/process_ws.js @@ -194,7 +194,6 @@ function processGetTracklist(resultArr) { var newplaylisturi = resultArr.uri; //console.log(resultArr); playlists[newplaylisturi] = resultArr; - // setSongInfo(); resultsToTables(playlists[newplaylisturi].tracks, PLAYLIST_TABLE, newplaylisturi); showLoading(false); } @@ -225,7 +224,6 @@ function processArtistResults(resultArr) { var artistname = getArtist(resultArr); $('#h_artistname, #artistpopupname').html(artistname); getArtistImage(artistname, '#artistviewimage, #artistpopupimage', 'extralarge'); - // setSongInfo(); showLoading(false); } @@ -248,7 +246,6 @@ function processAlbumResults(resultArr) { $('#h_albumartist').html(artistname); $('#coverpopupalbumname').html(albumname); $('#coverpopupartist').html(artistname); - // setSongInfo(); getCover(resultArr[0].album, '#albumviewcover, #coverpopupimage', 'extralarge'); showLoading(false); } From b4a780ad5a4499178d3e34a734f55c9d82e5711a Mon Sep 17 00:00:00 2001 From: wagamama Date: Sat, 11 Apr 2015 13:14:31 +0800 Subject: [PATCH 004/120] Keep track of browsing tracks Store browsing tracks in global "browseTracks" for playing all tracks --- mopidy_musicbox_webclient/static/js/controls.js | 2 +- mopidy_musicbox_webclient/static/js/functionsvars.js | 1 + mopidy_musicbox_webclient/static/js/process_ws.js | 2 ++ 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/mopidy_musicbox_webclient/static/js/controls.js b/mopidy_musicbox_webclient/static/js/controls.js index 7353dfa2..7d0ababd 100644 --- a/mopidy_musicbox_webclient/static/js/controls.js +++ b/mopidy_musicbox_webclient/static/js/controls.js @@ -41,9 +41,9 @@ function playBrowsedTracks(addtoqueue, trackid) { if (this.id == trackid) { selected = counter; } - mopidy.tracklist.add(null, null, this.id); counter++; }); + mopidy.tracklist.add(browseTracks); break; default: break; diff --git a/mopidy_musicbox_webclient/static/js/functionsvars.js b/mopidy_musicbox_webclient/static/js/functionsvars.js index 6d1f995d..85829d85 100644 --- a/mopidy_musicbox_webclient/static/js/functionsvars.js +++ b/mopidy_musicbox_webclient/static/js/functionsvars.js @@ -47,6 +47,7 @@ var customPlaylists = []; var customTracklists = []; var browseStack = []; +var browseTracks = []; var ua = navigator.userAgent, isMobileSafari = /Mac/.test(ua) && /Mobile/.test(ua), diff --git a/mopidy_musicbox_webclient/static/js/process_ws.js b/mopidy_musicbox_webclient/static/js/process_ws.js index b7a899a5..8b9c357b 100644 --- a/mopidy_musicbox_webclient/static/js/process_ws.js +++ b/mopidy_musicbox_webclient/static/js/process_ws.js @@ -106,12 +106,14 @@ function processBrowseDir(resultArr) { child += backHtml; } + browseTracks = []; for (var i = 0; i < resultArr.length; i++) { iconClass = getMediaClass(resultArr[i].uri); if(resultArr[i].type == 'track' ) { // console.log(resultArr[i]); mopidy.library.lookup(resultArr[i].uri).then(function (resultArr) { popupData[resultArr[0].uri] = resultArr[0]; + browseTracks.push(resultArr[0]); }, console.error); child += '
  • ' + '' + From 2c2e9776b7bb34a7a9d51a0d212752a15b9d47d2 Mon Sep 17 00:00:00 2001 From: Nick Steel Date: Sun, 12 Apr 2015 18:10:09 +0100 Subject: [PATCH 005/120] Consolidate common code into getNowPlayingTlid. --- .../static/js/controls.js | 27 ++++++++++--------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/mopidy_musicbox_webclient/static/js/controls.js b/mopidy_musicbox_webclient/static/js/controls.js index 02364cbb..c8d2d7e5 100644 --- a/mopidy_musicbox_webclient/static/js/controls.js +++ b/mopidy_musicbox_webclient/static/js/controls.js @@ -1,3 +1,15 @@ +/******************************************************** + * Return TrackList ID for the currently playing track. + *********************************************************/ +function getNowPlayingTlid() { + for (var playing = 0; playing < currentplaylist.length; playing++) { + if (currentplaylist[playing].uri == songdata.uri) { + break; + } + } + return playing; +} + /******************************************************** * play tracks from a browse list *********************************************************/ @@ -23,12 +35,7 @@ function playBrowsedTracks(addtoqueue, trackid) { switch (addtoqueue) { case PLAY_NOW: case PLAY_NEXT: - //find track that is playing - for (var playing = 0; playing < currentplaylist.length; playing++) { - if (currentplaylist[playing].uri == songdata.uri) { - break; - } - } + var playing = getNowPlayingTlid(); mopidy.tracklist.add(null, playing + 1, trackid); break; case ADD_THIS_BOTTOM: @@ -112,6 +119,7 @@ function playTrack(addtoqueue) { var trackslist = new Array(); var track, tracksbefore, tracksafter; var tracks = getTracksFromUri(playlisturi); + var playing = getNowPlayingTlid(); //find track that was selected for (var selected = 0; selected < tracks.length; selected++) { @@ -120,13 +128,6 @@ function playTrack(addtoqueue) { } } - //find track that is playing - for (var playing = 0; playing < currentplaylist.length; playing++) { - if (currentplaylist[playing].tlid == songdata.tlid) { - break; - } - } - //switch popup options switch (addtoqueue) { case PLAY_NOW: From ebe6772e1b1fbcfbad6c3cc29db785ad0e5fa52f Mon Sep 17 00:00:00 2001 From: Nick Steel Date: Tue, 14 Apr 2015 23:02:31 +0100 Subject: [PATCH 006/120] Fixed indentation --- .../static/js/process_ws.js | 32 +++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/mopidy_musicbox_webclient/static/js/process_ws.js b/mopidy_musicbox_webclient/static/js/process_ws.js index 1b750ff1..57950b95 100644 --- a/mopidy_musicbox_webclient/static/js/process_ws.js +++ b/mopidy_musicbox_webclient/static/js/process_ws.js @@ -103,31 +103,31 @@ function processBrowseDir(resultArr) { rooturi = rooturi.slice(0, lastindex); if (browseStack.length > 0) { - child += backHtml; + child += backHtml; } browseTracks = []; for (var i = 0; i < resultArr.length; i++) { iconClass = getMediaClass(resultArr[i].uri); - if(resultArr[i].type == 'track' ) { -// console.log(resultArr[i]); - mopidy.library.lookup(resultArr[i].uri).then(function (resultArr) { - popupData[resultArr[0].uri] = resultArr[0]; - browseTracks.push(resultArr[0]); - }, console.error); - child += '
  • ' + - '' + - '' + - '

    ' + resultArr[i].name + '

  • '; - } else { + if (resultArr[i].type == 'track') { + //console.log(resultArr[i]); + mopidy.library.lookup(resultArr[i].uri).then(function (resultArr) { + popupData[resultArr[0].uri] = resultArr[0]; + browseTracks.push(resultArr[0]); + }, console.error); + child += '
  • ' + + '' + + '' + + '

    ' + resultArr[i].name + '

  • '; + } else { if (browseStack.length > 0) { iconClass="fa fa-folder-o"; } child += '
  • ' + resultArr[i].name + '

  • '; - } - }; + '"">

    ' + resultArr[i].name + '

    '; + } + } $('#browselist').html(child); if (browseStack.length > 0 ) { From bf0ad633179e950504e2e6464889f59b157d126d Mon Sep 17 00:00:00 2001 From: Nick Steel Date: Tue, 14 Apr 2015 23:29:47 +0100 Subject: [PATCH 007/120] Tidied up playBrowsedTracks --- .../static/js/controls.js | 119 ++++++------------ 1 file changed, 39 insertions(+), 80 deletions(-) diff --git a/mopidy_musicbox_webclient/static/js/controls.js b/mopidy_musicbox_webclient/static/js/controls.js index 9a950e75..fda3a95a 100644 --- a/mopidy_musicbox_webclient/static/js/controls.js +++ b/mopidy_musicbox_webclient/static/js/controls.js @@ -1,91 +1,50 @@ -/******************************************************** - * Return TrackList ID for the currently playing track. - *********************************************************/ -function getNowPlayingTlid() { - for (var playing = 0; playing < currentplaylist.length; playing++) { - if (currentplaylist[playing].uri == songdata.uri) { - break; - } - } - return playing; -} - /******************************************************** * play tracks from a browse list *********************************************************/ -function playBrowsedTracks(addtoqueue, trackid) { - - //stop directly, for user feedback. - if (addtoqueue == PLAY_ALL) { - mopidy.playback.stop(); - mopidy.tracklist.clear(); - } +function playBrowsedTracks(addtoqueue, trackIndex) { $('#popupBrowse').popup('close'); toast('Loading...'); - trackid = typeof trackid !== 'undefined' ? trackid : $('#popupBrowse').data("track"); + if (typeof trackIndex === 'undefined') { + trackIndex = $('#popupBrowse').data("tlid"); + } + var trackUri = browseTracks[trackIndex].uri; - var selected = 0, counter = 0; + // For radio streams we just add the selected URI. + // TODO: Why? + if (isStreamUri(trackUri)) { + mopidy.tracklist.add(null, null, trackUri); + return false; + } - var isStream = isStreamUri(trackid); - //only add one uri for dirble, tunein; otherwise add all tracks - if (isStream) { - mopidy.tracklist.add(null, null, trackid); - } else { - switch (addtoqueue) { - case PLAY_NOW: - case PLAY_NEXT: - var playing = getNowPlayingTlid(); - mopidy.tracklist.add(null, playing + 1, trackid); - break; - case ADD_THIS_BOTTOM: - mopidy.tracklist.add(null, null, trackid); - break; - case ADD_ALL_BOTTOM: - case PLAY_ALL: - //add selected item to the playlist - $('.browsetrack').each(function() { - if (this.id == trackid) { - selected = counter; + switch (addtoqueue) { + case PLAY_NOW: + case PLAY_NEXT: + mopidy.tracklist.index(songdata).then(function(currentIndex) { + mopidy.tracklist.add(null, currentIndex + 1, trackUri).then(function(tlTracks) { + if (addtoqueue == PLAY_NOW) { + mopidy.playback.play(tlTracks[0]); } - counter++; }); - mopidy.tracklist.add(browseTracks); - break; - default: - break; - } - - } - - //play selected item - if (addtoqueue == PLAY_ALL) { - mopidy.playback.stop(); - for (var i = 0; i <= selected; i++) { - mopidy.playback.next(); - } - mopidy.playback.play(); //tracks[selected]); - } else if (addtoqueue == PLAY_NOW) { - mopidy.playback.stop(); - mopidy.playback.next(); - mopidy.playback.play(); + }); + break; + case ADD_THIS_BOTTOM: + mopidy.tracklist.add(null, null, trackUri); + break; + case ADD_ALL_BOTTOM: + mopidy.tracklist.add(browseTracks); + break; + case PLAY_ALL: + // TODO: Use uris parameter in v1.0 API (faster?). + mopidy.tracklist.clear().then(function () { + mopidy.tracklist.add(browseTracks).then(function(tlTracks) { + mopidy.playback.play(tlTracks[trackIndex]); + }); + }); + break; + default: + break; } - - //add all items, but selected to the playlist - selected = 0; - counter = 0 - /* if(!isStream) { - $('.browsetrack').each(function() { - //do not add selected song again - if (this.id == trackid) { - selected = counter; - } else { - mopidy.tracklist.add(null, counter, this.id); - } - counter++; - } ); - } -*/ return false; } @@ -105,7 +64,6 @@ function playTrack(addtoqueue) { //stop directly, for user feedback. If searchresults, also clear queue if (!addtoqueue || ((addtoqueue == PLAY_NOW) && (divid == 'search'))) { - mopidy.playback.stop(); mopidy.tracklist.clear(); } $('#popupTracks').popup('close'); @@ -119,7 +77,6 @@ function playTrack(addtoqueue) { var trackslist = new Array(); var track, tracksbefore, tracksafter; var tracks = getTracksFromUri(playlisturi); - var playing = getNowPlayingTlid(); //find track that was selected for (var selected = 0; selected < tracks.length; selected++) { @@ -140,7 +97,9 @@ function playTrack(addtoqueue) { mopidy.tracklist.add(tracks.slice(selected, selected + 1)); return false; case PLAY_NEXT: - mopidy.tracklist.add(tracks.slice(selected, selected + 1), playing + 1); + mopidy.tracklist.index(songdata).then(function(currentIndex) { + mopidy.tracklist.add(tracks.slice(selected, selected + 1), currentIndex + 1); + }); return false; case ADD_ALL_BOTTOM: mopidy.tracklist.add(tracks); From a8ef6c43b11cc6339c2f84cbaea1132251b04148 Mon Sep 17 00:00:00 2001 From: Nick Steel Date: Fri, 24 Apr 2015 00:11:39 +0100 Subject: [PATCH 008/120] Don't want for tracklist clear response in playBrowsedTracks --- mopidy_musicbox_webclient/static/js/controls.js | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/mopidy_musicbox_webclient/static/js/controls.js b/mopidy_musicbox_webclient/static/js/controls.js index fda3a95a..97decee1 100644 --- a/mopidy_musicbox_webclient/static/js/controls.js +++ b/mopidy_musicbox_webclient/static/js/controls.js @@ -35,11 +35,10 @@ function playBrowsedTracks(addtoqueue, trackIndex) { mopidy.tracklist.add(browseTracks); break; case PLAY_ALL: + mopidy.tracklist.clear(); // TODO: Use uris parameter in v1.0 API (faster?). - mopidy.tracklist.clear().then(function () { - mopidy.tracklist.add(browseTracks).then(function(tlTracks) { - mopidy.playback.play(tlTracks[trackIndex]); - }); + mopidy.tracklist.add(browseTracks).then(function(tlTracks) { + mopidy.playback.play(tlTracks[trackIndex]); }); break; default: From eb58e743d87270ae1e45957a7798287014af856e Mon Sep 17 00:00:00 2001 From: Nick Steel Date: Fri, 24 Apr 2015 00:13:04 +0100 Subject: [PATCH 009/120] Treat streams same as everything else in playBrowsedTracks Fixes #98 --- mopidy_musicbox_webclient/static/js/controls.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/mopidy_musicbox_webclient/static/js/controls.js b/mopidy_musicbox_webclient/static/js/controls.js index 97decee1..74b3d460 100644 --- a/mopidy_musicbox_webclient/static/js/controls.js +++ b/mopidy_musicbox_webclient/static/js/controls.js @@ -12,10 +12,10 @@ function playBrowsedTracks(addtoqueue, trackIndex) { // For radio streams we just add the selected URI. // TODO: Why? - if (isStreamUri(trackUri)) { - mopidy.tracklist.add(null, null, trackUri); - return false; - } + //if (isStreamUri(trackUri)) { + //mopidy.tracklist.add(null, null, trackUri); + //return false; + //} switch (addtoqueue) { case PLAY_NOW: From 934014b17d2080ab9dd66a10fe19f3d5006e722f Mon Sep 17 00:00:00 2001 From: Camilo Nova Date: Sat, 25 Apr 2015 08:34:20 -0500 Subject: [PATCH 010/120] Added grooveshark stream --- mopidy_musicbox_webclient/static/index.html | 1 + mopidy_musicbox_webclient/static/js/functionsvars.js | 1 + 2 files changed, 2 insertions(+) diff --git a/mopidy_musicbox_webclient/static/index.html b/mopidy_musicbox_webclient/static/index.html index 4cddb4f2..7d2ff2fe 100644 --- a/mopidy_musicbox_webclient/static/index.html +++ b/mopidy_musicbox_webclient/static/index.html @@ -407,6 +407,7 @@

    Streams

    @@ -419,8 +419,7 @@

    Streams

    Play -

    Put in a name and hit the Save button to save the url (locally, in the browser not - on the server yet). Date: Sat, 25 Apr 2015 10:54:37 -0500 Subject: [PATCH 012/120] Added grooveshark search backend --- mopidy_musicbox_webclient/static/js/functionsvars.js | 1 + 1 file changed, 1 insertion(+) diff --git a/mopidy_musicbox_webclient/static/js/functionsvars.js b/mopidy_musicbox_webclient/static/js/functionsvars.js index 62cf1b6e..2bca7812 100644 --- a/mopidy_musicbox_webclient/static/js/functionsvars.js +++ b/mopidy_musicbox_webclient/static/js/functionsvars.js @@ -107,6 +107,7 @@ var uriHumanList = [ ['spotify', 'Spotify'], ['spotifytunigo', 'Spotify Browse'], ['local', 'Local Files'], + ['grooveshark', 'Grooveshark'], ['podcast', 'Podcasts'], ['dirble', 'Dirble'], ['tunein', 'TuneIn'], From b436926b58aae100c1e391e75b1cad2ce5b2bc5f Mon Sep 17 00:00:00 2001 From: Nick Steel Date: Sat, 25 Apr 2015 18:42:58 +0100 Subject: [PATCH 013/120] Remoe no longer used code. Fixes #100. --- mopidy_musicbox_webclient/static/js/functionsvars.js | 5 ----- 1 file changed, 5 deletions(-) diff --git a/mopidy_musicbox_webclient/static/js/functionsvars.js b/mopidy_musicbox_webclient/static/js/functionsvars.js index 2bca7812..04ccc6e0 100644 --- a/mopidy_musicbox_webclient/static/js/functionsvars.js +++ b/mopidy_musicbox_webclient/static/js/functionsvars.js @@ -120,11 +120,6 @@ var uriHumanList = [ ['subsonic', 'Subsonic'] ]; -var uriServiceDetectList = [ - ['youtube.com', 'yt'], - ['soundcloud.com', 'sc'] -]; - function scrollToTop() { var divtop = 0; $('body,html').animate({ From 91d943db74049d2c418a1e8dfd773807120462ac Mon Sep 17 00:00:00 2001 From: Nick Steel Date: Sat, 25 Apr 2015 19:02:33 +0100 Subject: [PATCH 014/120] Update copyrite year --- mopidy_musicbox_webclient/static/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mopidy_musicbox_webclient/static/index.html b/mopidy_musicbox_webclient/static/index.html index adaeed9b..771bfd16 100644 --- a/mopidy_musicbox_webclient/static/index.html +++ b/mopidy_musicbox_webclient/static/index.html @@ -58,7 +58,7 @@ - + From 83c04b693feec6a1b35a28ee0f7708f4bcb5ffae Mon Sep 17 00:00:00 2001 From: Nick Steel Date: Sat, 25 Apr 2015 19:03:51 +0100 Subject: [PATCH 015/120] Removed unused variables --- mopidy_musicbox_webclient/static/js/functionsvars.js | 6 ------ 1 file changed, 6 deletions(-) diff --git a/mopidy_musicbox_webclient/static/js/functionsvars.js b/mopidy_musicbox_webclient/static/js/functionsvars.js index 04ccc6e0..a905d6e6 100644 --- a/mopidy_musicbox_webclient/static/js/functionsvars.js +++ b/mopidy_musicbox_webclient/static/js/functionsvars.js @@ -4,12 +4,6 @@ * all kinds functions and vars */ -var baseurl = '/mopidy'; -var host = window.location.hostname; -var port = window.location.port; -var wsurl = host + ':' + port + baseurl -var intv; -var socket; var mopidy; //values for controls From b598dbd90d30de2de5a0eea3f9626ae4d487025c Mon Sep 17 00:00:00 2001 From: Nick Steel Date: Sun, 26 Apr 2015 00:38:43 +0100 Subject: [PATCH 016/120] Optional config settings for websocket host and port --- README.rst | 8 ++++++-- mopidy_musicbox_webclient/__init__.py | 2 ++ mopidy_musicbox_webclient/ext.conf | 2 ++ mopidy_musicbox_webclient/static/index.html | 11 ++++------- mopidy_musicbox_webclient/static/js/gui.js | 13 +++++++------ mopidy_musicbox_webclient/web.py | 16 +++++++++++++++- 6 files changed, 36 insertions(+), 16 deletions(-) diff --git a/README.rst b/README.rst index ec0ced72..d4e2ae26 100644 --- a/README.rst +++ b/README.rst @@ -53,8 +53,12 @@ Project resources Changelog ========= -v2.0 (26-3-2015) ----------------- +v2.0.1 (UNRELEASED) +------------------- +- Added optional websocket_host and websocket_port config settings. + +v2.0.0 (26-3-2015) +------------------ - Pausing a stream will now actually stop it. - Fix keyboard shortcuts in some browsers. - Use relative path for script files to fix proxy support. diff --git a/mopidy_musicbox_webclient/__init__.py b/mopidy_musicbox_webclient/__init__.py index df3e7d3f..b32e5152 100644 --- a/mopidy_musicbox_webclient/__init__.py +++ b/mopidy_musicbox_webclient/__init__.py @@ -20,6 +20,8 @@ def get_default_config(self): def get_config_schema(self): schema = super(MusicBoxExtension, self).get_config_schema() schema['musicbox'] = config.Boolean() + schema['websocket_host'] = config.Hostname(optional=True) + schema['websocket_port'] = config.Port(optional=True) return schema def setup(self, registry): diff --git a/mopidy_musicbox_webclient/ext.conf b/mopidy_musicbox_webclient/ext.conf index 198e796c..fa7898e2 100644 --- a/mopidy_musicbox_webclient/ext.conf +++ b/mopidy_musicbox_webclient/ext.conf @@ -1,3 +1,5 @@ [musicbox_webclient] enabled = true musicbox = false +websocket_host = +websocket_port = diff --git a/mopidy_musicbox_webclient/static/index.html b/mopidy_musicbox_webclient/static/index.html index 771bfd16..c02bcd02 100644 --- a/mopidy_musicbox_webclient/static/index.html +++ b/mopidy_musicbox_webclient/static/index.html @@ -7,13 +7,10 @@ - + diff --git a/mopidy_musicbox_webclient/static/images/ajax-loader.gif b/mopidy_musicbox_webclient/static/images/ajax-loader.gif deleted file mode 100644 index fd1a189c21fed1c7ba00c4bb4fad407bd6d1e5f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7825 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 LHfkt@K(PD|Q{O_Y diff --git a/mopidy_musicbox_webclient/static/images/icons-18-black.png b/mopidy_musicbox_webclient/static/images/icons-18-black.png deleted file mode 100644 index 791646384bf6cf9cf0720c78cfbdc8ffb6d94e7e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1968 zcmZWqc{E%57Cwra+a!n~YH3#bDS$nNd!(P%WlZf+0%&PFh+Tm;}3^0AR#^0DNX<28gV#u8xe192_-qKVoBJdwO~R!elbR3c!FG zPyj}N0y^MEAb=ZC11vxQ4u*jaa0Dkj@C69405bMV?d|QL0Pd}=tp^I=3f0xs z;A{MS7+{yg5Y7T9@+QfZ48h+62_7851E#GAI>zZtE(7?0K;n=v5{V@2zX)_3XkZ)+ zT0#d{LBcCY*n^3KaRPb=vtyh)-a%s^JD5y5%oGUdTn2ZX%Y^}tq{Ek2M=_O(ae$o$lP4Sgb19o8%J_mto!=^^{71 zfi-{V>1i*m@xiwxVB5Q=tsrjfmo?hi^yMTrwFkcETNn6Jq=~& zS)1UTL0?psmL@O#F();btXbvWdF*n_4VPb2-z+H}HXBy8Mb8dlUiJo&^EV&7pZWO- z!i@9~lV0Qv^+|eODbhywm0e**Oj9FT(?wxlDZ_0i-_+D^USd_A8Az$9ztrzJRya({ z{B(@SR)=j9wIzF$y;el)CCuxK)yDLvr@B5hvw7n4ejqmo7ZPY1F{aNN4LOXcd_1|3~!5qY=H? zEr-4f>SWouHlVpkZH9V~%I^h;{R^$+@9Xy9I2A z>PeLRIn$qiSNO5}Uc!oFEh!Zz-`qyYrg}IY;;at(BRBk8N}RXP=_)0ML?7iing@KG zLq-QbJ}i;Ws79(8=AAb6D#J!me`%v0LOSJHIcGGpjICM07)<479$o*oRh+0W>Y7F^ zGPtmvc721ua+{H z`P1LMHdfl+86sdk1!JCsaD0?A1tr!zq?nB=;H;L81(iU}Lkt6*0GbTLX)Yo6OZ~lz z`VS|6Dr2qnW}hrnTB@+oSbV3iS2iCmTw@990$)Aq8rL(DSuP7q>8wTz<&~O4B|m=R zo6*@t>y;&SDDBF`m)3Nm#h%jV-o0|3YK3MCpS3fK^nAHWdN;0G{SxYC;<>>v z4JdOj#(e3btb4D8mRp+m@SnAk-o<)?Lr>mCm9zocA-KWhx8qPhTgB z6PiRMjkSzWo3euE<=?6#J48n_#wadMyQ7-hy9zAPCm-I*V7``f9izsPERkW=*FJMiI%-2l%YdILVG4SF-9FzANwfC^m8#5L}8$x2Oat{~zs41eSIk2mh7-T3|=btJkH8t{QB F{{sZoU`7A{ diff --git a/mopidy_musicbox_webclient/static/images/icons-18-white.png b/mopidy_musicbox_webclient/static/images/icons-18-white.png deleted file mode 100644 index 3419b81f6a8896807e1e6af0f14c8415fbe39da6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1988 zcmZ8ieK^zWAO6lJFDb?_VcNWA226zx%qL=ea-kb3gazdA|RA*`5cSHYsmWh9GE@ zi!=2g1R(;leUFhWB^y}i9t{sABWz`x!RtQD4-GO3!Jz03g3g*hDRPe;0+Oe01XC-dYHf<%<{QIEVw)!d=M%aB=lht0sRA1 z5}JT!Q3?O7z|93U%wkXvqe=W9$I&FXoX<@!AL7F0FmRT`d@duMHH7At4-sGzfy5&4 z`2^#_dS?iduW+H-ABs9U(|?lLe+2XLBh$FCHTNf13PoM+wEBa69h0^N4K5AK!?6}? zCt4DG{I?$0ZMVg>$DC9z?Bd?CezP_H(}sdV=8hkDnK{eMpy>^Tf3H5y)y;>spTBzb zHAl2dBwJL;C7(Ug#{U*hPZ2o>DUB+fbykiU))93*u6&lc6f$VioLppWv{QI6_|h(X zSNq2Fk_Sfm_uAiIb-)Q}X?%=a5aJKrBlKfCA7R$EcX#4(b*U@DeO?JB17FUW`qdQO z(OC*%YE>;e2|mZTOu9934XeBz)g#r=Li4+CJ(uO3y{!`y?g-m7OEKoI3K1$b?$@9! z)jXBrf<$w-Xvpm@4Px&IQPSHs3gL-ztq;FH!XqJ^!I1|Vo4mTR=}X8YW)_N||0U6mDdCMfB+~kIkNNgaWR^U#@GKq&$*lzRX3) zjw*`AsnBA^D3Y|vBmN>UgB7FI=Qs&wu()n z1tu}#J5IkYsL8okkc?QK)*5SjKnwag8yo&>TF~qmK_gFRj;N(WOMMH!ZoZiv7PiX$ zuKJwo0S$KQhMBtZ^63qwSz<}x*u?4Dh6W$2cLOaYPhEnGw`jzXapt=%ui1B&-u)sz zATKlCY?AZET^z}GIJ4jExFl%7SsIAdfU;CDu&k+Nn-S@$Ash0URQd(~f-GkG2~!d) zBdIxd26d=*qfft^R=rq#&{~v$h$8D%nq&KXD)x4cyzKOge#EFa!64UGT^^ZL_jOLw z&JPSP7h5VQ|0O^y^jKIB^YZ7MY}mxBUABxuuAE)ST;BYu&>pGLuBl};Ip;7&GI(>) z5$pXbqJx-qt7xk9{Gy@T^rCrpf3c2W*UfXT3Kx)us(&X1U!;(BvZ^jNJbw1);2ZI)DRb5U+8&^dy^q4MaJ&mcu9Nezc=); ztS46xsJMW3EwQV}mQ&VCoXB?jI;xyKh+5HFNbF=If{$Xhjk2*374cX4lC+o#+SIP&`G4>#`K z5>aM_j`;ACt;h90F!SP$m?nB{oyWWnUDw*36#DLzprl*+i)489mzN3PG#OI(Rm$mXwG3faivnnySuMkH(KQ7Lo@UYC`)BAC=a<4=`ftG%RgAjxOV5he`dUcj Wp+wY%7)$WSfLt68P^&3{m;MJcl$Lk^ diff --git a/mopidy_musicbox_webclient/static/images/icons-36-black.png b/mopidy_musicbox_webclient/static/images/icons-36-black.png deleted file mode 100644 index 043bfcd521163a123843f15ac2fba220eab51d05..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3859 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 diff --git a/mopidy_musicbox_webclient/static/images/icons/cd_32x32.png b/mopidy_musicbox_webclient/static/images/icons/cd_32x32.png deleted file mode 100644 index 5c41f0c00c0df22e532acc637fcdcafacea807eb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 469 zcmV;`0V@89P);(^aj8dk>k8wQ5{3LY3qbOM z$e&;u97%+}D}Y>HLl~5HNW{R-cMukos-FmsvJ=MRE#8EWQ^o9>~JcBs?QGv)g;j)3nwjVHK(Nx>2DG8WSq0yb1ThHgyW1udhv`6_Rb@S~Rx#w%;a zF>Err!*Tk+hU`B$m=NfMIjAL_-!1`pXSgp(s1gWJ_Kj#C@lMd-?w9s4EUC_i#*w&g z>j2%+$_N5(W&~+96dhQ^ui4=729t*v%_ba9--mYXB_Q;8eiC2+Pl|>GsxM5z00000 LNkvXXu0mjfI~&iN diff --git a/mopidy_musicbox_webclient/static/images/start.jpg b/mopidy_musicbox_webclient/static/images/start.jpg deleted file mode 100644 index 7b6f4e5bc3fffd6c15d90337cd704085d867c47b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10588 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 diff --git a/mopidy_musicbox_webclient/static/index.html b/mopidy_musicbox_webclient/static/index.html index 31f4e1fc..338bdac5 100644 --- a/mopidy_musicbox_webclient/static/index.html +++ b/mopidy_musicbox_webclient/static/index.html @@ -1,10 +1,9 @@ - - + - + - + diff --git a/screenshots/artist.png b/screenshots/artist.png deleted file mode 100644 index c06149218448dffa306400e9510f941782d9ff7d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 61376 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 T`gBY)JC?NMTZsa(cYpi`j$|JV diff --git a/screenshots/playlists-albums.png b/screenshots/playlists-albums.png deleted file mode 100644 index 9325fb0e8d8742975cfca13996150e7d7d172236..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31365 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 diff --git a/screenshots/queue-small.png b/screenshots/queue-small.png deleted file mode 100644 index eee7516839f7766f4b6cfb74c7991d25c31e20c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47992 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]t{@&IJ{aTXA>sUjz55}`kjdD&V@BX>R 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 diff --git a/screenshots/queue.png b/screenshots/queue.png deleted file mode 100644 index 1d74c9c15a71dae6752fe0bd454e156ec8bc3911..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20486 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 diff --git a/screenshots/search-small.png b/screenshots/search-small.png deleted file mode 100644 index 2a6dbe33c16f80b0d1499ced879b2f0bfa14e53f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9639 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 G5Bq-@|CjRs diff --git a/screenshots/search.png b/screenshots/search.png deleted file mode 100644 index cf5a5c30372e27aa52440eedddc252ff49e4a4e2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17974 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 W!rlD&26(p-B>7TSEMHXD`~L%Iyvxu4 From 452acccf164dccaca272e7b58d029e667d07e14d Mon Sep 17 00:00:00 2001 From: jcass Date: Sun, 24 Jan 2016 09:45:49 +0200 Subject: [PATCH 059/120] Add back 'FontAwesome.otf'. --- .../static/css/fonts/FontAwesome.otf | Bin 0 -> 75188 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 mopidy_musicbox_webclient/static/css/fonts/FontAwesome.otf diff --git a/mopidy_musicbox_webclient/static/css/fonts/FontAwesome.otf b/mopidy_musicbox_webclient/static/css/fonts/FontAwesome.otf new file mode 100644 index 0000000000000000000000000000000000000000..3461e3fce6a37f2321ecbe64707f04c0a4f05424 GIT binary patch literal 75188 zcmd42cYG5^*C@QQyeoNEmI+v3OJ1!hp?BN#Bql&0F(rUQ=*C61jEjsU_uhM#yN!)a zZ=nSOfy5~U0x2Yzbn+xmdPp$|WF(Ia_sq&BJV=l2St!J@u6Ld}hLIigG(oNmSNVYp2bu*`8&mCT(g%JrKs|W6VjPjD7@?@<57`EsF_Gij(~7S;$jX z2uy5njLz_R|~-giuu0_{g+f+ve88OQ{Hz6>Y}qGm4HH8LdoEP_Ir~wHA13xKq37E z1Q7#%ImkKEQfdVC%s|@tAvjG9rGf|G%tLS)wVE;wz~z*JdUGJ{Lb24ffiy>{sLuw{ zN=i%p4&x(nc7ggcB(4K#2{l|&I*@jvl#*QoX(=^T^1?vc`5_#d8Y8(m0B0V8%cxE# z$pBnVc{p_qq+KX?r%B0{5Tf&5n`|=c zVocso$A%h=aRy_sSr<0ddtr36w}@);HtI||V*&u5GQ^q}ChAOv7#*33dEO5J<`I%J z*XfL=NJFf*@6;JnrxS?Jv(dU>lMZNv>x|xJgST0)^ZvUTCS9nR;D;OFCALM<4|cS0 zYNX*m0;fd-nOKu<8nuWrP;pc;Wuzjh2ue?xfq7<9)2SJhFQgVyVemeL(m{GHV42{( zj*5ZUn|hjxr9$DY5z3R_VDViTHB~GZO+`ceH&s%?2xUzWj8p>r63nNdWGs|hNF|Ez z3_x2)t$`3h#RG+4z;(3FM9l*V{~4dWakP0RwGPS}p_WLIvN!Z%D)eP4^k@*r2UcJ- zU?=@*H?{x2(58Ba^p5QH?|rs+TW>_~_TISOtlp~Lj^1Ov-M!a( zzv}J1P2C=H+Z$+4xIO*0|LtdQZ@V3LJL`7U?T*{WZg=0lcKa(r`~KGyb$|2y)%O?P zpZ?_!U)FuOW{B$$#SnIg%Mkex*jk1-50MUW8X_4&x!rfW>vqTOPq#nZZoBom{jU7N z?Kihy-F|Vq<@U4NPi{ZD{owY!+jnl?x_#sJZ|;=H59|LA1MdHSc=vyM#lTJ^gTau`vLeC!n{ysFfXP_Uc`a;;df9b8Q`%5CI-q;j?f_Z z08@+f2t13LIfyd|dpIWbJ7SE2M+X6Y`2Iv zkp55o6=8%9;E*zdF@cM1gm+?lAU^<05&JWMOK=9?GfrY#nxQ=#37!98@E7s2C_kX( zC)VL8>pEDTzy|wG(u4WIx(CZZyip8U549cAFn<07M;srB30*Ni03+$ax};f-cVgcG z?mU=>^dM|7CT$V}dFOaPnef&?TC8tyti(D1AN0WcgLMzq`5)sfN=5Jn`%Q2L%ZV|e zl|>C1nDg+#cYyEwFueh|8;M1@qnrlv{tx2;EpI}L@Bj%;S(HBnvCo4r5Z3J3VAh|L z<;C|91Fq}f+8ik7{a@>YGGgBWt|0H6vm9+D_>zG%!GU*vgSez_v3`gN?0**q@gSZe z&4DsfsLMf%#B&~$%c2BmvjBC70pNldvK)OGz|)9*7$^_8{)72JI)izrZzX|2bz&g6 z5X63xu^GT)2Fno{M$)8hgZ%>hi3CQMO{9n`r5)Xz4^*h=``X=^^&>Ji>7z6GQLVJL| z_aKddx*yOSg#T~iaf59p@jw_#VuBCxViH3?=0bWXsoR0$7|#Km$Kk!l!}JNx|I;6t zQ24u_Le9kh{ZB$TOd^pe9yTF>YR?YaZFd!x{0fp_1!PlmxoWQIAlbaCRI;O$No?ms&tQPAvhI zcLfzlZKi@i0oH?3y#tirbSj%Fr|PH{s)IU29j9KRy5UrMnfj3Wg8G5#rT(J&;SlaD zkxPb1R1%Fukc^g0koZa-mn@S6N`fTOk~m4Kq)<{PX_a(J4ogl*PD{>7UX{Elxh%OM z`M2a}$#0TBB}j75iFF$8q;VSOd9(^983P8*!UoeWONP6bYtPEAf-PDhGoA5e9%B|W&ob+o%}g+} zor!0%nS7>*zlX3A#CmdZBB z^s;1GuB<{3O7?^7SJ@vjyIdjH$RCx@kk69Omp?9FB3~hY zP97?ck{jen@yA4hRgPR6M?4L6qa z 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�HkOrW}z_vOChkv2rItMumE5S0hLwoSA%-~AW@ztW0A|C z2xQFs43$deYM>At)Fz$+w1rRa>wFV#?EmtOSDPyP?=AaOH~(GQghyxSxnb^bP%*KKHvsZf}z`w^*CiX33fjTbFKL)v!?6YHQD1s9L`%dCSIi zRrS%_f)S!Oj<&~NQs4jjJt+8Cy%NP!V)^59sa#_FjBIZq164ndJ2Q0B^bOOta<}G* zn#yK}MX)uTH8g zuPSxpZq5*oHIE&u3KPr229j?iAVjtv!(x{zlj9bLYbxtjS7w@_V)TA@t?eJI-~yb17}Ga-{v_{dt&$TJ^LH$YFk=r z_m&=zHeK;t{aDpv+5>=WAIP~M^~RH+F@MObkA;f*DZVfrPb?Y;8DFzPqHg=p-KZ zjAV#Z-j*ix$*QoZ%=M-!kE+t)ak)6Vz0v-Tb60+oz0oO!Ov?-%Q?{DzDgT}Vl)bGvO#!91nBx|GIyj94rCXHQC7&Kb5OZ`ip$ zBOxvxbF{Lj>Ei5VrtJX5t&n?%xl$a%*#!SOj46}p?QHiWuevnJa5~uF@K9X zE!|>H=WQcI#d)Qc3bQm+bS2c60jdrtVTYK8Qg}B~KnT970YZ(0FU9;3v;*rk!aUtY zN;mhMywNvT z5%vcoll&1TB18K^EGREsk>vYakw7I6-! zRu0&*p(5OOVi2ty;9`aP-X;q!YJmM!D&~@^9R+GKTr5unIuWGAA^VlW`q(KMv#UZ#s@RIS{zi7!dE<`@%l)3PFR(~SvW zv^k|=N0tG4!XReA%$Ewiz;RhbBS1PhL&wuNYI$kG(UUv5H|VRG5f)X-ysh)1R!QSO z`dEKmeFfQ07ibIv!Pa;Ol3~YJ-=x@;FuWnvx zSu%Ut>i)VR+*tJYhMGKm7g*vQs6i4$9)}ocG8~LaR6C<;)o%1R#hPtQWc|%cHzo%9 z+YkMPVxNj^BQpWk?jmo&nBRn+o&>r!mgbF_c;sX>x0=4f`WruH(b%mkrQV2Vkgo&Q z5a)Q8@MAaU3oDpQe!%+?xvKbj)TucD`#^Wapzcqf-wH9w$4ST=zy0*vAuIt?gf|sG z!n~y7Q5#;F{M>0^_{Cqmb?G|yJ1J7UBtAR;;OY^eiwsT}`x03iNncd~r?X-L@IjB! z3CGExt4A-KKfrzR_Feba4ykTea^pc&rMnVF zCaZzW1Na?qUHJi~g>walEet>?;>?l&8KOm|`2q4c2cE)V;oCpeL||h#lR4vXEw+#q zC&`>wp?hWTgpCvHO;pHrWQ1nu4URl1Cfqk7|0prMuID!mrM>uh5wSw-arPc$wCtO9(mQ^|F7z#RpdF57>U zKeG2+)4OUif5%7B9=Lo(O0iV) z;NR^6;99}H4hV^{k~)~2Q1V5E2muqA0~F}Nzb)88=FH3r>|D_A|6#{hg494Svvx1A+k%5Cr=xjU1RkZ=$6YY+7E5p0Stc znV0np82S$s+qa^+VGK+}5$)6wKnIv#1tu|%|~ zK4RDQ7HQW$#3g(kLEpUmaX7%Qlf_|+M-O`OS1P)?f+sKF;taz-=ygfoxJ({?;buUQ z_9l7w_R-7u8kH1=0mAzt=_UQ<;+Ma&WJD$T()%;{;z@GP*Iz-ud=N{%6jz6e{-Kb! z-8H}Z2^9fSH)YD;=dMnIzizdlirdH6e=_r-LAI{#3UZc?A{Z4Moi<_M^fkN{VU91v zmV%+V5BhQz@`Z3hvfH++u!cKdclzS@YVznY@C|r>Bl$wo2N8eQlX5*6ivncoKx`a` zZ0f@CfKBy7X&j>1&Pbb_G6Iyk!=d7Lk*mK0B_)W?{JV#)w{crabaa4V4)W3yBA3fv z>`{4)#hET{`|g?@Z>t+>iz+Jl{dJl9j0W6|ann+o*yXCnHJz+u!R? z`rsd=7ubVWkp<99h7B)hA%r{GAE&td#@;dUW22vWYWCBO&os{NZ2Ya}=9M!y9KQ-r zC|!H^RqxFNUTbe=)t0OXsqiknH(AD1ys)#Dq6shsv(YgAP!2F#{z(>LRoxh0 zd=dVhCeB`wQUxZJRsALdj0b>yUM+r=Tm~;~Dns_W{7*3zOx9<_i z?&5Mg($%@SW^*p@4;w@#3F}2RXnr_UwF#9moQ2+$#3!XEf=Ruq>;1g6g4AL|NOoay zt{c(~7SwPM2LDQzbsaaxd*W-dL(F!&xj=1`7!Vy@I_<70&qhf;e?td~S9;@BdUXW6qozGv-|UU^*lhD35I2BY;WZ84sSr ztbIaZ3n-upeTMl(WUF7Q_RIVa(XIYIFYsoQ#gwPoDRVgyd*)7`JALp=^-o`rCo~>) z3DL-Ip8rYx(@nfBQG4+A3%vdE^u|T!_#CGb+?5dsqk1D1tm?ub33TG~tE+3w)qi`M z!Su0Oz<~9-fSJj}RN3w6h9ma~-DOd=3((GZS$i&&V!BZ{Y>n*-SCCT@XbPSZkqGS9 z?dGyOTknPdSz!pd`IF`W+~;mr7m$BnQV+J~luGlY8Vpcy&Il0tl!l zj}Ha)W~Z#}kLYPTWlVHCyzi`?GuAHW664|!CY(BI?z09elF~%6fr#e*GWAwMZCrI? zjdbntogcKTz~)?yqAIU(au4w0tLfk9N`!{`A|6@{=&1vbVhrZ`r}qxOGKrJ_aAnf> zVTEDRsN|%`t*Tg;t}K~LNzT;8shbUQ%B=cko;T zf9~X-%ZT!4mGDg!<-1!{b(ys(%KOaL-2PKqnnJP+3%Xy*&5CQ6FUL8nd*g?XI0Wyl9QR2rOwQTsil!!@{!TR@A^#^Q{DRJYGHM?qGsCm+zvQ{1lU z*%Mw?-FV~ps25cq$^I0D#w!#Xks!Pn*T~85zBao5#xQkQ|AX(3=HsICwr*9?)spMc zr(Pbbl3)IlK63M9$ES@PSuJUGw3Z!&+Ut__fK?*XKKhR#B%EUc=iz_cAy~w__08$O zzru=#0f-02A^w;DAn#<+5f;=CrG#v6g!)-HS)_vHGhLQrG@Fgw zp}4h;E7Wx|@VRPhobF2AKLA?`10?#&n(SJ2H@<1b+UN~&y!?lJBlKw1&!UgLAo&1)J6<6Z~ULx(k#06#hG7K4gAPncC+Ub+u2FAq1#Zu$q;q4autF@Us|+vz%jmQrw=@MLNd(|JmsOqm4nB z-q2X6@78zVOl30FGMLl=J1&y7_jHa8)87N=EBPLz8UDMQgJkljdX2zo=xY6rE!(b0 z7N69|Zze8gAtN~!gy|b>*gF7L0VBzHu?SA~@M4F6vzsfE55};O%jC6s!PSh@ z3i7R3zNi-h%UaYtYlTw|^S>7><26SEHv=8|3PX>~VcxC0l-cEzWjzsqdQ#b%kn@xU|S#_5EGNI ze2WT0VOJEZ-YG^2GBN5KJ%xuDb)|X&1Kn?kmQe_y9*-OKW#BV_nsmu8V}`_U$y={$ zZB*x}F)J_Yvxu~|TbeC^ z*5bswFdZPSnY!6BQ9TuMV>}eFaQcBu2F?{KZCc30f)nd)m9*n$wIaB{ku+H3*RiMe zSD zW3Ztu)ImF#wh*3}xKPJl8QU0}0{kPihCv?fsBd|1uLLYc)EGp0NA_4J!xA?a7DnIy z@KtZT)1ybBs1c!!m0Jags7%lbU{_fg>n+V|-cD0@3s z_TLTSOAo#bwDo@~T8br;6*6VQ{W;u;Wjmm(hF|N%udx^2R{YRkGI%f;g;rp08Qj?0 zL0DXihHs^d0>b%V=(wI956_bRl;c^NJn&`6;=b-+ubxPs~haoDgsq0yE>Aw?4f@U zdcGrc-03ZVWT#lYdGqSkoA)0%vY-9ij11-m){x(YV@E@R>#sgit@m36`*H3bm^rOw zsDjGO<_9hmJjJN#1Kl4lQq$0GhZ8?C5R~YM#jp~BV-YsR7J<*;wa02;Dr;jg<*oMO z{NM+5xP`)zj+R#o*)StMpV>Zs+^kvS#}AVlzpv@)0Fe3a_#1-JAki+G7{a26!?<|;{VRIqdxBn&o&UL1BdFyy{N^Vk$DzP}Fs>JCma&o2B?q+wb z6cL<{ASxZk2;?vTa5iuqU3k{9%i5v%2CHV@Z@>-iOV87ml{Al|vFk>ivl&^X5xuWOQ{rl@<2k<}AzYVxThpQu|Cr_TNTHu;rq2-3qp!EP_ z4p7nFZu;oS0UTnm8bP5W6v;CDnb7it&Mnf>tgkT4sqNz zXH%)m;{ssg9mFSE_kPsUrp8TGvnP88)-Veht#~nP=~PhPUGzhd_s4HEKojf%Io)TuH34R&?jzjM@Z?&6Ceuo zA`{fm%6b;@pphqdf2J^fi0rS{$OQ!%xeVljUUUM$u0SvJq9d2_`iROcd-W~){gv*$ z(mz^${uoGS67=&cVJ*BnVt?XZcZ<7npMI|tt$qDxYw+u|i)3BF01|kEp^NGgv_shP z#$1gygn+yq80}M8XdVI6wv||`8Z=V^72dU9z;_4^m*IS9;WxA*2RaLD`QJ6&nwQWt zxO#TMR37RS!Hm%xkk#ZK1dA_e=zd6SCXxLRw2&RY@f{Bpqw(Jn*>ciXjSsOQ*$*&w zfCv(dmCJ<*tlQRMtD5|iXh_Bfm21W_tFE(LLv{b75IWJ-%CHl@7^}hBhf1jOuwGrA z|6?0(XDvJAz&736p3=x?^cu_T7kr2}PxLy4{c$z|+rWrGGeOn($-t|J*7Ou#r`a?} z^513H*{=g=@iZo9Jto~T=wsh*BD`165W5coG~h9TN<4&vnyQeY*gBj3Z658d-VjlU zx&b>%L~UWuo}@$7kPi-_H6U)_q>?r=x*WS%6wAl;tske-D=&f}-)kenQl!$^$8 zT3(i4rY1vvTr{6Zcu$VU=*gABO(d#yWW)#GAC=PACBmej7njlz6RGN;lq{9x)Hj$K z(RJi@=d;d}2k3kjE|gvaQ1N3jBq3#Co=|aYZvjC{gT~kHU-dd7_nWY0eGFssXsBdB zZ=s85ShZ-_4@zc4Ks#>P38oh3-{ju}i8ujI_fhj+Bz)sLrLdP9Dw6H9%atkiB!e;8 z|469scO^v9lgf?nB`eE}6-D-P;gL|$qe|~HUAzG~EzGl_qM4Z20dZKa@b?q?9f4+C zKjA6S6^|xU)(lKp64?a0&Z2=|^R8<Xi%+iU9o&+@oN_VLc2=F&)XyNEs-F3a&7nA z_YFi?A|gwQ6-VAmdvmS}g~ODA%3+OZ$t6i@izF#2Ejpd2asCy4^UHHH)7HMVCPe5( z{}}1d6RplJ+qp;WE-5H1<%LB=AE+{xRSGDwdQVxyk!*gXkVpPa{tyMAdr6@|bqY_t zad$$c)DuV`8Vn|2ePH)?1@BBx+wP1CiE`E_>}HxL9pdd(F}t!k7G1Ne>uNkTZr%$_ z1XNJ5HenSPPQ$8!xpiCQzb)wsJ{ou}5l(l7qb88fds__Tp}E*&smkz#q!%Yx(la0e zW>I$C28Hw`Y=KcU6D}O?-U%{qC)G6ts#!ra46&j+n4&B&>F*#+CtnJ4SkZ>764Zui z3=>X3yG(xcPi3>fWPYdb?<2qN$H|wn7{Sy-v(IkjO>|?w)pX9h<*AF3m&QotM}-{8 z*_K1^T~*1KI%R=vxUP$!3oO{WVfIwjpVi{8Zg_7&3)djId#a9%IDrcGIL^;)q)Xbp zZvZhzzHJw@?c`e+E78I%Qc*1<6V~05QJv6=gYOUz(#&SOHA&&uDtKZG{m;d{F8pugGBrE z_mC5DwpX3{5H|%ZVD}TY>w2QXCGEp^g_baCXd;6At zTb^8*UX_7%D@ZnNB#n1vbwv&8hPnV~uK}NARfxQgjsBkp;cpdMZ^?uqWI{Ew!7bi^ zx%r%I7FN=WsNT!9`-4%9p4q<$Pl$RkH=QMXQNhVI2dSQa3G-N@ytU_Z9s7K+W;eXB zefc|fZDB>Dw(N-7lFv7FxkOv?cSk{I)g|7yd)GdE~kz4Wq-B!G;1;IuNJpO{7chPaj3gRw3n2h$`y3C z_a&@Z*wI}GPkakKATKbhW4x~^-i}|jYnd9KZrYNvBNhw91J~A#S&OSyg{-Q6JL-fQ z+a1_f)>MZIiauA%!NRtLx1pRR#F1G~V)dA*=$wC-N;oRl4xXmovaP00$4BkSIr658 zmB_rwS&N+KZ3R**iu&Xrk0stoCF-eDn!W&hj`RleT}2)mdH$JxgHbF6ZQRvPQ*DXc z7OUf;wyn-ts~$7P?HS7(tn(l*D24rQWv{Acj`pFwBk9AcF`w+XdjEb^(QjP7+YJZPF3JBi^4e#rPj;X9 zoFfl6gXq&oO&&V`^=~|LSgs-(pNRzwL7;6iNg;~iX;9)BBt8_8WOV%Fa0K#5Ya~~P zfDJGPNHB~+#3vB;VfjbA1lks#;u(*r93nadp==}y>x6F&cielvqSU=}`Qy{6zD`7-e^{YvLqMq((z%Bz*l zb2!MwWb8eVeNg@9FCsW0L5{sk6v}6=zU*~3{G>gAK8b|z zGHJbofC&x0gNhL@U`=MhF>6*psA)>TAeR`^jo)NpM?2w@9 z_Oc?2qDo^>(t)m;`7B**G^9j&HttE08eK)EBCw~~8ez?c%IprZMUCq&rhV5xk73eZ z)z#W9-i$B>GNcbxBML6hYK$8JAtVSxi zEf5`5RHT$7AxF4y9JNv#w_yIf*XB<3|2;uzFdGmNXIxcfc7`>jNZ&q7nG+Dy$FiJn zdSK2-dXw?NTElu;yP+`pv%8c+ZJE&$h|P(LBh)6WS2J%_~X?*#Gw z-5K%ad_}xHGHVN+*43dT{{&c#yyPtq!NK(PBmERVYW&NE<;o*6fj#{syZ4N;Lq;#q z3rZ9&y3hfeq(c9mTd5Vne#Y z2G7KbeSbt9+`!iK!jI6%y~pev{MLVVA~k6EKYKx=-SD4o-MfcQv96#$~+;*E5nD3neY z&+mCZo!<5*(~Q%$*c|pdMleJ{D`1+Ak zU;G4cceduaQ)8~L=ICgNd@0oq!yF+G8>%7NF1460Z=_Sc8Acxa_CloAF>m6w*J2UHgwl#wJEH3yAl47nv_k+7lzU`4P|%Dq?t$hBOc2cbW{=*i zQ06S=ssKOor^pvej{Q{(fr#MM^rgSk!|%z+Ve&g3hXcNdaxrsXe z$;l37mA)9TZCyruf*v(VPqTUjq2eO?CV5jn+2`_IQTVU;uaGPBihzg6U)ME6(M^bC zchLjkL0#ROmb%yw##>~!MO~%h_;Je@%TK^(_=j@xWZK6v`P$@b7SiY1HI#H*+TnFo(z=Q6UyVuzp$J*?&E!7 z%I;8YFBx1+4NMIbe?asqOasvkETy{FHC-K>Fs>)zGW&xS^AX`gypT!hbOhi!Kt{3B z4X~`)CF$+6`Nk;RHMxx`l?e3)D`R&pv&2S0054dXl9(4=6bHI*OTgdvSI#N>5JGcsp^U)Yp{Mx}nk3-FP$1x{Qo0J#H+0ep+EB)*G#| zyTU2yKzmwoOk8T59^4#TbXg*kQ&e{AGBF`VWm#oGqrO&JqmL_%K`_R9UtGbe9AZdC z`EHS@-rgyJ*@^my5A$I6?6jF~RtlSi&40~K22vBo5*0-IF7ATz-oij(vSP^+5i6S^ zIfdMHsc=Yrh1q;gAsvbI%qkVJ zyboN^RV3FX4P~`;MO(0sk@fM`oh9rdYn92xm4<3{ zb!AaGB6Wy6l~h_A^wl9m-8Fv#@(b8q7_D$un;O#CpwueMGZKs9)$xgjp-x!+EAHX4DBma@+{eDjn{|7>C@v-jWJjf>xrw; zbJh9=Yh{Um@0I1nMU~YmsDkPc|9SuoexG)v#-|NfN?PPGekKLIeH%!U0@Z^Hv+P-* zoMz=o%~NB;)!=kL{V(z&r2L;0mwMc#HolGoSzV^0oWc-i4rr-r|7x-6ka@4ISt_K8 z%X&5uTU~iYInIzmh#F#(En+h01Jdt%GXCm^$@%JXV|h_Q`CDX!(pqSCcpqDoUh@x^Kv?yIfoJTh*12DVNZS|a%GXnjQXWgdkzTbz*wlM6Qa{&Xd+KzpCdsU`s8rg zPk#Ae)~Uh6WxjbI<4k@?oIjHlohU%%+eGdwNDkd_lfHhHqfecoect(9_5C-OfC?E* z9t*<{7Utk2S&Q-u9d_4EGC=7pHbL7pw*V2-hw18CDVd5+s*#>$m7-@z=*IN`#y&@1 zSJ48Z8%AbKgFp{iM_37%e`1^S(_x*pNT&f*(xPzlQj2= zkZ8g62L7om6Gu|qp4tf>3a*m z^erzf0n_eF^41TU-*8&qx<%faq`5EYE(;qeChrT^?L`)FLPLsj3=X}TE))ZX35$m= z^uLt2I&N+9nvj%(DTiaQp?Eh`z9uxN0J*PZGLsIwNSDJ#veTgwYLcv9XEv|niG{thOUzrh zTDBp^NVnvR;MKh(AtEbWK-HzH&5=-yIt+Nf#q5CesKu!E50E6}Wo%ocwpdM6WaYNe zSt9uwvQm6tzj?o!7E18bcCq=*R?8tZMUZqTDHIcT37K)ZmgH8DB`^Gw4%jD^SATQ# z-OtlWh?GY9-&COD>W!NI9Qj^ypWJ|$8$VTuR)APjUlq=g3zC15`bPR1&%7m<57EYL z;>?oFVnY#woGA@O8Ll*!6rw`;{|{mB0oT;^{}0njl3Qx6EnI~}?saeL-rKqmaiS=S zqOxW06-Y=3SwJ9z4Poz%2#R})imTSvx~ z+}xYoanAem9we0VST{eYn*J-X>TNT(@%jr+Y%!11)!RX`tp*y|nf)1m-oUyDb1+^2 zm?D&>{@>ODe2TtsG6fDs%YXh1xnb37K4bMEf1JJb&7Z7H_wlD_iIpOW7AiQYJcHp! zdlb(*Y5$`4!+R^Pb=3=dXz=cgm1JP?-kDhW-s*+@tPz&4p_vkz$vJ5}gZ@W*o^=(9 z=bmIG7oW33{kwxq;cv#-|76wMhHcnBo&)sp(5Fz{fG6M(W@UDEfC>*h!8-6N*WI!I zZ$m%>*l70t$;<7{Fj`>OW17RjdInmtrFR18{lk1mthVYhUZLr2L}0g2URvUR8}?C zfi8T`4**L5$YBH6U)y9@ixKYE?`A(AL*Z(!wpOn<6cZJvsxCa_-&dh^IK0rFazBvh zB-)a=RkYc|!{6W6-P>*d)+zW?FFD~S4+`?*_mMoG>Y#ch)u6l-c{PIYf@+#zFB&7r z=Y9+KaaFqDx%zr}`^n~x{L9Jr%1R6C^i76VRjUYm8*`5-P7paM)uLLezQuU{G>fjV zVVbAKNh&H3iX>-%12-AL@#+>o8kx-Pnye*OB5hbYkc=Uu&1 zkdX8f$3=@o8iNQt8{t?rXbgfveXJjiXY#Bw)`Qw*2wBgoH{=%=8)AJaUtZrAsF1|* zYrZot{)SonfQ#I=lk0IEHn36f+Qy^@BDsVcIOY zpIpZcQO2k6V^hRQae{DBem#8+*?r4vkyZ)|sj`^hY(If-a6)J_EsRbM^5A2V=aCth z6GMd-RwOhC>MOG=3TQ}@&rZ!H)S2p>V!qkM^bJ`rDu|2_$M{0so9C;KEjAkR>nWz% ze1^34YnrE;5jCGm*t*Ako0N#h_86$h_Hf~b$6RbrZ_C`%o^XMPdaQc+1TvwXs$Uj9 zqOva@Z@-X1u9vAH~e@1#p1B9>>(IE-2e<9grF|@EyS_O#aFkVY$RSxWW zL3wt)psqY2w2;n;&J2WIAI5`>tifa}FCaKHK2#7HuPcz!DOrkq7$J1tz-2sZON%&_ z1Uf<@HT3BO**SV+E{z&*n7KS=Jvu+qz5@BbMT1wrz4U$Tk9proUS>Rwdzo`f_A>4H zOEk#(ZdLDo)IlCiC<%#=m&V6a_zW*TH&>b~D9}$`Uy=W-4uS(NXlCj8to%E>|f9nK<}Aln(~4NEH)g#Ypkj% zs1r1lMSB_O%&1g9H$GH3(MvrUsESe~QHm%@j3|!q3G<49)D55f`Vcz0RNQi!k5=+d z>zWJ8sQU7T{7ykfL#%H(T@b4C+{qscMx8vj-0+&>?5t7^rPip68u>31xaPll$B}Lc zVF7`{(oPC_@j7!#s;aZY-6-tEGac%akcfcMeh9LpV!q#SVVRC7f*$fF6?TG@A9##{ z1hAz^j$5Ob5TV#o3D773hX&@U@aN^=npUvn+SdCLA`(u+O)BIh01enCl@U@}?rXa* z6n;;XAxkwldGPojVn&xiEGF>ZtGSAVE zWqn1g1Y*mBaO5(&)UNHvfp^| zwaG-Plxh&rG*iaJm{M;6mVm>#3_6ukv09j!0R7%tTO~LQD+M^i>?}=CCuE52#2E$% zVL}paLq3e{po_vd>ho26(=qU)*C&fKLIFtkVouOCdNVD+^23+!0YPEnV>s^$Y4b${?03?L<-a}ykB$%>Dl{5jk53i`$ zBw=(go5LiMXtV%aXqEa5JxC#cvxSXRQGna{%k)Zv1_pQ_jod(CVID|aa+z>&Smvv; zOPJB7om7E7E5Aa3HggTy6baZjM&XGgA&&$I$~I(#C^A|Ebq~O_q~b(*qCh0>$FvLy z#RHgDHV8=iF|DEmkSg4@Efg6dBY?X+42@Btss11_i1>BsooNQ542R+f6%Gf^5Eyt@dfwBt>;Nc<9)G70z&`WZEI7!gh*@q{V(4Qhf;ky5Eta}+%MGj75Y z-f*x5j}byTn3AVftCbuzk4a!N#O{r-d_kJoRlLL{OcFZJVUqB95>zu6&>P&$2+Ff7TbS z=E67A0IG3+c&1i0@L`6D6ynLI9UHRIWKQ2u<_ppTk2fvHjxFH#Va{i&$YppK^EWo% zN5eQc)wB*mh2}D2%s-%^PdH~y&|94pfY19lG&t%AbEHuN#+ z8yxIQeK^DQ4X&uCO(W1KUcy1?zI}YGLw@)W$^#LNA3B6|9ny}3HW-7dxP2pdxQVGI zVQ@`hK1e^8fy)~o0c;Al7e1JqF9(ZAJ_cQ66Ec&Y{{Eg6Ud8qFuW1H^iPv0H(+u~b zRq({$lg0~SOOOYNEM~pH7C_Ecs<_x<)-33Tz;hn9crgpXWXnh{vUu?VS+JVh3T6o! z3BMIKPn@mH$NF?+k3DmFSWkcanXY#{+{o}n4l^DCQ-G^D2F>A^3%O(P9L_W@v){Ci z+26O019-L$ss#8y%#SFP8Cg2Wbk4Mp{BH7@^#`e?-YRVUz~{F6AJ;{X2{gz^=Hek! zA%0_si2YBzm7yUiKb?F2s0j_fh~`c!z@rHy0o2aPX}V;A7*CAGQ`LB4;X?fko#UmJ zbGHmv^k{P(a#o_v0oO(M#7DOh=RXvY>iUNBdvgFk*=?Sy!Y9%0m?YcexV%Yulgg&p zou7n;_`QopyM0iA0j>M(-T63VTlp)29C~+y3}kfRlPc2K^(8T<*|+bAdgJ=0~0;d4r~rS z=$Ph^KI_rf&$Z9BH=l~06KDk^ApP5RX!m4dK{2M(SP-^Px?2)-sMGzL^r8e=B%qI! z?{h9@-pDxGK^*BzAR||2O%Log#z@>Lzn^_S6V1y*i<8kTxAU==!khQxN5}$G!U&ZAmL&)?d=xYY{!F(L zFNxU@;u5mUcfY%rySGcw<|qOOpk?Mp-kQuExn5L`SA|crU-RM4kTYPIaOO(VEy0xw z8QI`>kae;6dJTbOyj{zdg)SBB_s|=C>CoJmqNFlHT%L0N1)rfnvz=_VU~E~Js9uDu zN!Rdwv4@g~q(km9H^I)mnc0WvL*RKASQbK=VK;F*AE3 zM%sTE2*}9*xH?NF%7i*lI0(Uk_%Z@KEyH;UqJD%tF*QLeMhGx)s8oUw2(pcJ+VqSJ z3jN90X!WU3MzZ@iYbT?(lGJ1=vL$+q04Zm~QIgmON#JdkOyNJxHWIOdh36AB25B~2 zvf-U70atwj9sO*B7O*9_Sc5YLn~=zs3}7}eaUc*{^iLpklGz5ohe&9MWahuI8X!qC zHuz7yBwLZCvCGnA8nXGYTFWOu(qSv2uqy6p({S>Q6|k|BGbpnS`cte;NKKU4CCa3t z1U~FD9tkWTXaYpO1g*#*qd=Akh7d5ieQ%oqHC`Q`y?&42gut~j1bstpDcE_$?Kw>f_b>W&&p&eFwajvHD9Z70PM7wO1L zouYcdlc!++{gl4&to3o(_k?-y2unSgse}j@WriYCp~FP*eAnGy@BTVuu43Y`^!kjF z%*L$7(#FOkM`}8YP7sA%`p!0%=w({QRFJB^W#%(H)3Rxt5u8xVK6o@=F)icu`pqXl z(0!A*y)^!UQ)FfNfqm?o*-Nv=Ix2JkMZhmOPr<$Rz#vB4+e}8r78s5B1;*n1n8?W3 zmFF{^mz+&Z^Yy&ciyhsk|k zaW{3jUZ%d`s&Nzt7CLvn6Ba^Ia2JUhXf*Kp9`90D*JT>V_nsqfqv7eW^U`!XXvi$Lo9M5RZAxZRs#I<#O;Ld3%1~-tz=!2W2SGj zC_5@vA(zW?k_=IVwZ&A)G4`=vYfw#A|bhYTt)b;pRg_U9I51-c9f^c1u zG2(dq&5ADQPNt;9Kr^mI#OR*6xknAv;xidX32S17h5p-{XhMy4@AE%;l=qbnD*VO4>9@3b>QarqvHaB`H0aR1@S_n`iTcjqi*s@uiGq1q-oZ18JZTG< zw)YXH9#RgZ70Nop!Xilt2As4mRhE$gpk}f{QIN&@RK}!)63l$On@kfX#U-XjrSCm% zEP)6P3k&#mR#;d-RiDy0CFc(dztFhC_zXOfg&Hs%UIh*QVAc%JizUIU{~lfy|JjW;@j@?RnU&GxZ8x5Ud5k( z%XXtIM?hSfqJLEMUr0=a($1KBVtz8Z{R1+TEQ8Sm9^ zC9o6oj+Drg6iISIh2H~bZXLcuy|EgD2uHxH!T(PL85`ESF9t%qfQ2o@ zwE4FA4%Q$IN1v1cI7C7Mm@3o278)EKtvXy7Wyef0Pt{5cGK11inaa8G(>4*@nB)Y0s8JpmJeTFXNM=qxoy> zYpe4r3fSBHYfcBYvVGWWdOLjS5BO`LZdPubF8+?l0%L! zjaAHa4zlgw0T}U`6I@UoR|{UB<~gP|g%vC22lg{)72!V+l5|j&_}Yqssy|D+Z@~+!69^GaScsa52yQxzKK=cM z-LrEK-P?B)F?kgcrv#@eiwpAT_7e}=pKkwS{bBrRuouD1Tn|UN5kt$ z^7Jw=GN!;;I#ry4JEqyP3n%6UsS@Mt@OrGq9k0ddVntH2og^6!4L-ie!yQvtwvt?I zCl{;1lp1QBYG{Vl$r7a~O>CDY)=G79)G@^t7KZAfHkr~T17R{9b-aenz-l&VRHg?@ zON|zE_V9kFW12oipQ_8SgF?7o&xg%I9d9_+r$LSn+^7Di5b*h6#Yexv?FiVVgR#SG zyhFf}xcaGE?Pwd4qr&g$^`pF?D{Rd-^UxW5hT%0erDZgNbp8oxD3w)37e*HbX+lMW z@2cgoO9WX~(C9S!>MAR_eMdt)M3tyaTpFGiq$JF<;_-L*NAqkxnre?uq6$diC`DfY zZHh&JfPdl47D;rFL|)Y}9g0zbR?J;A739spZT$dL@I?E`_T3{mBA~nWS^zs-Hw7#Z zH`%iU&lNC^aA)rBfEqA3`l#Ms2WS?pyk~D$Z4afum9~9PxELltR_tAS#7=NfO~5uV zx&U1h3}G-)GOGbXDE8r~@L=%l4zm+wLnf?%&1?Z2(Gh%WRmc|ZZVupzf^1k(>oPPP z4OY=$leU|KX4&5Z-5>I_ZM|Lb8hrsn9FR(d18Wzp!DG-EsMAlfr+{$+eoG^GLAf9d z7WS%1m9TXVXwljfoQSlzB*5}wlOz$;Ui{hSF)Fb9$AK=1kvW8GP4>^=Ug=Z&d};~h zpBb)Mq#moDqjUuyyHM|3MWMVssl=a9l^sll{;lF4@$xqggzE0@vjz(3(m6<=c0`sczD#%cCfo?d5Ez2;jA0P>%u4uX9(xnt zMnHi1$Y0Pd!#8LfXQvYn<>M%89Q zGZn8{+m=}AU+J$skmw1WCb56MUyZm%T$it}Df>3=*|w_yB!T!4q8Wzcm0ftQFD&FG z3G>!^X}y}lnzV>piaz&w{MF;>#n{>#4}#eu?;_8}#Ky$tqO3;ZjnxS>!yiI)tk5um ztzlaR_>yoiTEaoObPsaf3!?cku=Q)OC9xUYrM~b*b^-tgzo@^2KBCQ%5gZ+fKWu`C zv>x+NKHk~`5^xUYQ;;(~3~uYk(9itdVYrlpovwl#@rTQlIR+3~FxNW=JORTfuq$HLkoY^4i_hWbDt_(rvY+$b5-LVDK9>(lq@Z?QUSR2CZF|Wg4Q;p^gOy&a>KX!D;WbavP zfDGw~4wy$nziK9!Y&0H4lP>_&sf0xP={QkIghoY&vT-;xYEZ+~${7sKPQeyLLcF~j zlR^O>#W=$99$XpUphj{8p6tNIoaf-WMKR^Lm@A^r(_G*3n`wn6hzenEMB86V$55CxBJp)^4B=cAm8dtyss-Oil-c`iC9-R_)O zDVTq4&E2JEkwx{{vg0LP>79fgS-9j*lAMKm$AUY@wU=~H6>Tn6Ug|wbdkJ7xhy0V4 z84iSra0obqZxz@Ncn)Z_fX3zuA7ff9&BPtE`stVza?o4hIlxCsYqa{R(aH=a_s~gV zY$22HCS%K5nSeGK=#Mu2N*2J<-~jlGJJZS$ngE#+SWRF)!qO^%$kYwg3Yg3CnEt=0 zxeSDM6CyarOco4eK>y19Ci{k=Q%fM{+V1XJeyw9S*h)}t+VzH&*~Eumxvgubm5v54 z2S-Qn8ui{!$E3xk3#ny_tqF1bxC;sQ6;z5)4g=)4zAxn zRCC$_EB3qcU4!=@45SuSb83r?bxr)H$hyPD)Q8`&kvzC^a`-qwAonM;2dD0;N=0A2 zR$E(3*Ve+}HRsJ6LIp|^8wyE|pnzr-Sc)>R)qngFe()Q*SH)G~fMzT?LV^Ft8x=j} z4cuDh9Ihp54}(LlK(#^TPkjZeWtEYfwL5A{)6=w zmc|PeDR5nx=e!fmE5(%cY&s0(AB7vv?uQIR|sT@4o(ho`RjT9V~)YT;yCb)^&9AA8x#~km_r| zx#Vbc9bJ9@7YNOPu@4%7XJ43c zcJ@W$K;`y}XZZcyZD4($Yu&el4dHHM{p0h{o5=$T-WQY^*u)(7 zDPg1VApQsr(L(<0cRk=F<VX>4jbXu>z8l{H zS-AFn#kbe_<}?UzjqRJoiM)ANbWiZ(lf23Yv?5IbvIv4%(%VC(ho*)E@s~!;^Ef`eHNsnChFyltOKAz*i4c@8GY;B*72(?XiyozI)(PG|AF@ z7_4e+n8VCraQI^%!0pTiCctc3da2)SnR?036y^`dpD7IA36OnE*vfz8wi&U%`pf*bX$0y{((NUW06%iufe~{liFeeB6gpSjhFg=K7!lt;t$TCQ@4VmAT$D5 zCOB1Dv8{$M)v6JnSU{KiH`5lf=YvN*s&A+<1769+?G#H&`=-Xg2qWv%TY(_QPM`4VEBFN)+;iy2NY%V4jX~ngdat z$@mjH&xqiId-(fGJQ~8Ot>!gKVB%&-?W6#AN~ z1iH}y&sG4>yuj9#0`+dcv+KNk*4dT%ue0kXrr*ddqU{IvQ{KLt!yu`)3fy8FI_RSf z18%WTS+`gkTQU(OxY2&)_0>pv{@1(SS|tQYSTov+gNz#k)_@i5;{hvL>!yFq zX#b#V&|)hvx19#&wzgbk{~QiGU)BB6`y;rE@4MWuy>GqCbceY~e(Q8~#R|ub%U5)7 zx_9r&<$Dx!0MR5ng|;^SJCR+8GOag|=!@~c<1e=EjPO1LvG>2>-50R84iU`9wy0+% zXPo-cfV)FkHlY$ACJFS+`jtiAzBW3P7xr{#`9j|$zWV$NkNkCM*xV0Y(@zJlz@Vve~T8= zPy@I88HnTa_(ck%yol;)>Ad?GvMfyzuUuMZ>(RqH{yU#5N&>8wgf%OoKXCwK*7bh}#-8-`-4?r00GyZ+ zR?5Mn7jDb1_oKzSI8{=TSgeZEiwXDkp2#->HOyD529JKzV{AW4>-DNUv3_7N0@tEo zvg=T*>u!%juC6TyPIR>%>7tlcW@q<;puAx7C z$%COuzb+RB+1!7WvTNwxFL{t^u@Ho@)L(t4$@G}im>52U+Ni<$_yV}usNtHrw;;7Z zQ$V>F1-75y_nbY~(^MZDQcV4F1M%C@+Pya8VXwlJ!iMC+v&H@4TJ)J{!O|bg8gYd&~>8a zNLQCf>u#3ha2HMa2~GM5O@{yI$3dp|CMR-pCFcyUJkl5%5*Zmn;X2;PS#w9?k7hqZ zA5nnYqR;pcB0HEHQWRNUZZrbg*vR|)$H#yF{o}k*6nJo?;7}5lo&%OG7PFqcr_krT zOF=)DbMWW95MyN7K$9=gWFG#kpCR-kq5#Qa9a(;WYuESx{QfYg_n7G#iH2`NE*Cgx z1P{ew7Z3ypA^2$*@X2DRJ`3J9w|(2UyLCVnFBj}mah^&JL?tmB<^!;EA`IiVq6CUz zc;`Ah&zJtZ5qmh zl)&yp`);VsLOLw?jZBz;hf?NnlXIUl16a+_w{Ou5CK2HW!kJk+|7>~rE-FF`*n#6RHqOm*)nEfpfHUP;U*BO+I~T|AfYGKnwQdrTtTyxoG~Hgn_>R;Il>U9vRs_5FW(C z-Um6Rp}Ys__ZrV#ZfYs-%sok@W@oFRpuPyiM&s~0b`{J2ZMgV=M`qUlH2eW=;+3>_ zWp@dne>ku-(~H)_r&7cmgMruYjZ!om5|%74LLowFOgV)Pdw;N>A=u~UMI>PR!?FmfKpI^W0Rl*nLBfUnaME&R-DY#_DBI|i#F%J)WMQnal3Dp% z_Bl!?$`lzS#O_;w%cNcqJVsXE^>oq(kTw-6QukoX)iOUKB|z=t&yQEdrN&Xxl2Un@ z;KsFL1zeZz7T=ZMQ`Xta(5HU63vQ*P%QPvPjC5OlDhFN0mVMSBJ#z+6n^VZX16kY{ z|6<{-HQ=jl1<2c2AU|b`iAyMv%+wTSXF=p-{=q6)J=IdwrEb?F@p-faS^tefjYo?* zQ@f-|wiEHHI5)8Dw!wqu;bG2r*lxg#BGjC3d5KC_dHf~cQo9Xb?^`p~dw*L!*++mWO~{97WGSA>k+vO4IU;!cFt6%6x*>K0n&~HSz%%{4 zooOsF3CPFT_wI2H+?qZ@YdFkqb2%yGI;q#jIY~3!ZEG}WML{_q!s?V7%Isz$$V`x$ zCJ4eKMT&4bBbI}XntREqytXXyBaZ1exV4aKo|5h7TPjkN^3+t0T0^SU>_GYH2+M@i z>>-i9n@p9ai4zkEiDc=H=}9vrcxdvOI^ifmsTp0gN!BYbQTwNEdT)XUCPbeRp=rR~= z*|~{{vu6k3p;ee;HzRWW!pVHheKj3%etp>U%19y0AoO|l^Jmr7wg{GGhqN5XMp{PB zd5S-)!Gl7GU*hK98!Nz^>C-WHQqRIyQM3>Kq!JH*HKRJf7P|WIzQAIg!?tDzxA1Ce zV3li^>W8i_yRNPWsxH^8L|a(%RF0|fLo4}i*^>!5R3)`!7A>pXs3UO&gFGC{k^jDZO zX6~{HFia-u@vy)dGXeu(_3#7R$AL|Sr|b^08&h39ux)k&Zm%+E1@`|K(12~MP-n0O6O*jW$O!5(>0m$d;&ZKNOC!LLi7PJ90)MqB75_A zrVU8Q`H;_Jjy@s1;G*t*Z6E%4Tn+MP>fZVzhrV$f^B=ttBy$Vx0z(iU&K-eM$@W$L zv4PQk@pi5dkP(N!5RAuPwsp*;GZOYzB?-h5iAV~h0vWyOG1{^5Z^2`3Rb56#6%A-= z>kp?|9c<6Q5sBJ+?*oVS7>Ak1%TCgYlKMWzhZR!Fd=>&=%r?Avft#Y_%4CS@OqMDX zN|{nle7MR}s+CHBATwoJfgU^~WSMz1FkMYKSP7*XHifYbYIfbM#CH&C1D|1R6ARFk z&c639cvG_8lk-U+z@7I0#;XZ>_;3I>d9AG3Dd?NSx_Vngv663|l}X2Y?eb{(QK~Qe zL&zK$%J$j(`xjiBpj*fe7FqLefX(0<2S{1}kApo_>sG*cx7)tR3W6H@?&3BQEwkDJ ziO4q{c{{;w&Jtc)KUr?|Kd)fs|MkN9_x_hQFevU%+hGAP5JGnUZ?h9H)3%%n2p!mu zkzh4<7hYJ~BHf3(|9?$ja0k>hwz3J>Wm#`9+0?AMwH-PMdD{X0F?tu0h2Pb#U-~v_N46%rIkb7l}qrM)3J!aw~Yh zS>lnuVt2Suk{1Bm0G#7zGbCA#18?}h}wc#v$$t0Q_x`#Z1H({PC^`gtQ|382ybEG?E~1u;2d`I$uDQ*oy2RGkgAI z=u?fvmKU%cBEd@&5a2nGuDu(Nn|yLScm~aZ(eo}e?iZIo@JBSz4!c>SC+A)%$iJcH zPzIF-D2M?%qQiTi;o)e=9%^6T6^@Uhf;DV%<~CGRH7MwPrYjsYO?^Xo(1FY*`!=CWQ~xi{gldC=JmY(OcLCMs3|Nsy7@rm|h>w@c zgmj-XD9(4s`0m-k2b-L|5fvI`ASyR%z>(YJ4AtdPUjOCfv;!Xd)n#0>uvF~Uk z3*(1#(5Lokz(Gk(wM$i`D$|tgL|d51IcluvIL-$oNQJ7Iod`I_sQMvFhZ+lS!3fKG z=xdv`XebY5nU|61%d0E#X9jQ_<)Xpb2lvomL7w>`TpE@=MdNAHc&<8EotFm!EXePS zfbMk-WMX>)Pqhh@bS`kF2cl8GB2TdT4B;*fn{;rwU_|eg6Qs2fy+voC4~~Z1-vvj9 z_4GrK&5pa6dJ>95**xo!Z+{HJ#K<-76KV5VCIgBoHVm-ZV}L3AF`Uw~R>0vo{V0t% zXD&VjXDI6}AU@xG8T+$JG#fzS8*l@_p({@^H^A62+u5p5Y#u~{S?MR9c;*tXU2A;l zH$lf%P2|Ht$X|!YQ06a9m0a`(zD-^^T5;pa82LOWZ=WxH@L*5favJt6 zfNT2pFnR29`Ed|2QD8E3VD=_#53Cs|x?2MOel0))pThCC5=h;66kY-v3?+~_rgLW; z-|>pF9w}x%CRgmY&V9($saBmG!3%r|m0poaOFmqG zW8p%F^$QnXcX;^l#`TBP2$S+RQpwXK2-Adu^*fv$_Ehda8V#K&6|XylqY#M{BEkH1 zJx?C@^gKRy%71qS-TT^{PtISrZvHlxniC;ZeAAJzHo=WEXKuV$V_aKFr|Pp(4T8r# zYvLBz=g4_IlLeUj)mN+|*iX|Cx2efcSWBBq0hFFg!QU@__}f6E z0<@EZrm^@e02u67R$pT}Q}w76Z7KmnTDVZpFl{7V4jkOI>pfzz28YIP=kC=X;DUU@O?dCj@aM+%#TaC<%;%`rLP@4#aBh>KLJ zR7xpp_tvQpy%e%O?y%cfG0*)xQ*A=%kwy}-%k=mk&$3DIs&VpK$OnBeQJ7jECVaN*A7 zQ~S4O(~J;G`&mWBnPus0ItXY(r*nQ*-@pGx@bh;|rvS3bEFEcY%p1XdGTd~Z8AO^_ z=Pk=p@dIYL;E!9sD%{`hdMbrk5NMlPoXc2p%)^;Sqv%*UDsN#L4;CTebHLeo1L<&c@O z1z}EKdG8F;@#fdROwhS%HpT_*2Zk17TbPJ$;msTr$b53_3aE?5;7eq*2uc@V6d7m! zsD8DI|6>^%Ty*Af`H{S~)8JWSB%%}+GUIcSe|a{=9-08e86dBPmz${i)^H}L%`g6pYztNMzH zx@(df@@|?r$a>R@d%p+rbT3BVlR*(tp$U-Nok-olgD~BQCkPfS6vZv2<%w~!BtbxQ zX<2PyZi$9A{`@-oR{@MQCwne~+aefTh=TZU&|%UqB-l4jl$jx-zQJGMl_&5v!Q}bE z=rwdoyd*^^@C&Y}tII2{)zPI-pBJ#+t!`-N?ipwrT^6s84(7ulrzQ{h26)Da)3rkC z5kR^Ao!CP#dbBurGA$PgW$}W8{}~k`B0xSd0uSRZb8=b+BA#KqWmlZ;gM{a2?)@uQ?n6M-&%FCi zSC&ydBYIV&m%qOksD6fVz5HvM`sX#()HL-k-Bjc6MfYXFwdqyfgY=%1U$Cn!a_;QT zQ}IhO$_-&<&~?CmH}P91i4r2=mB`2JXxq034nsVOC)P^z{cF){wR)P7^32tE9EZv3 zoe6h}VO;3r!Zr6i@9Nq6$9`;>hql=wA@>^QYaw<>n`(!`>rkK)?caY*cs2G?B*CoU z=_Oh*_2JD2u+-CD28WRnJZW(N=4IoL?b4zPMFr^udtYxkcJ>q!oM?Xe*R4UOGC+V5 zlwxs$AW;nFB(xAE=P*T_Y=a>yTQ5pbQ+ehh4ywaGq!L{C<6vfU863Svr`1rJGz~-&X%w2lW3@8KM&@UkA8|gkA(GT6<>@kk z3X$6s<}>a-M%K$DiPQPV{biFF+vg2ez25y(^vo@OA>sPZeVxN)Uu}e!yPL;tY0$&*| z1%-<;iIDRW`-W!VPcon)7pu+@<_q$3a`K@u+dPib`%57S_952D8qe_Xk_de%qzwlr zl)X4d;OLYX;Y>$Jk|nYH55sveISKg+iXCN@L%y3eu#aa@K-huA5*_Id#*UWmFfM>U z;9zTBf`36ntZ4AL9EHH!6WLlpv<2%YISOX*%uD(^PfY%$jN<`~{bMHoR`$XA>PRc= z)yy2O*#M~Jmg6o@eE!P1slKGXO6XO<5VW>r-8<7LHk(?VmQgD&PRt>!uj(aON&G(tTZ|0#z-W&XP5o%>BSntTR;xvg258be1nb=Jpl`hiA z`lG9rrHQsO9dN$|m%e|BR{u%AZ$jg15S>fxfBZ{ex8QVcQ9&AnQm9oFh&h37Z72o8 zm!4<~ou^$d@b*y14$%GuK?R{j0QZ>hnx~Vw^~bK?yWlw9-911^Fr#~?0urW9QY#g5C78PazNbi(3l*`71Vy|&4%Q$!r#h~$1Z@Hy+Bb>Jt;ns+tt1+6 zS6(Z;T)*n*<}PX%q&ph`*U(r1j03 za*f_dA2AlSpW~m7YV$TyS&_jRVEa258~fkIq|@6E?|%pQ6z-DvF6#C(O6Vbwkp6F;6C0IoU~`jxfj$h@{bFz0g0e|`4PE;OzxZGS z_{IOY!$A7U0K{S5g5+d=az0!j(RF;?7BcH&Gh#sl#gFW>0eUwyK7P^HsNRpAYo$*%r9E|5!8uSmFq8br(+hoBbb(^~k;| z>_tLCqFkH=d9I6X@o=zvfy7dH{*O`QfK4RR#>VGDAec^>7e42){;u% z+JlB)-|^r1{JP-*6<(R%T3J$2+?G-tL_8YT34=ddKDKqksnGJ&wzAUl(l%vj2yt$6&9a63h5pO7Z>ACwVx_SH z_TU}Z4cLkQ?gn`OLE62|QRwBdSs^xgR*Vhr4IEpHNI|MoQq(B|^fg$L72rb7Odet% zKokiknE&kC-GBD&pSAxR^)v_83RKQB5|JuSE3!lI)F3R9=NRlxHs=`9ibOefkZ_s; zL9!`^9C?w@V7IGTXo!OTmz}8{pMkdMj3_56O(?S4M zyOW+dqM|fI4y+uV(Hc~F5`$fzh4}z^Rh%!+H>4HVA84n$~yuXq3`ycX*Vf8a3IA?00FG?z-CN~zBqpE=C$^%_|x?mi{kBX4R&wQkXNY07CHce@GnYTUEA*inFIKo=f{&w=T|+7OU#tX_nN;YoZP3Saed z6rMn7xT#zFW{7P6ZRXX^rNI|Y;Y(1NG@72@Qi_H zz~-?83h(EB+d!<3cjBF#f}PI#ErPAv#W6c!0*vd=!{FodIs~J-MIZV|Sk4cMG{ZpH zU57r0c@$z>#q1P2Z{cs%Z!g$MG12BF;*a-nH5X_mz^0`me!C1A1`OXgFi1UxU9b-;&Ti5-wFp$gR(M^P$f znmNME!%u*EycZl5K0$M-3CO+;1)u+uP+fy4m0D^n;&D_Xx9na(sWfQFH}5DY%s4IR$m0!58&4}6*Wlg%s(?fk>S@9?tH`lChJbgb!uT{c1wP9VT0YaI*t?O zdShEm^V!j^?G?>gEuk@5??hK%$H^$YgjaNc&>NNlqlj|WNFiu}1A z(u1;tN;?N0YS047ZYrWt1c5!7CuGD`-}CNW;9WD%)_SB@`>vWTS;vvoHq+lP%~#;- zCztxu$FX!v;x2zLcRMJY%yW13-4?OY4ha`?l7eMH0sH_>kPgBR;};t@)^BSEvs+lG z$^B%&#YDS3IGK}NQ=qfao)%x_&VHydK4t|i1Ui}wma{~xq`Tj zP}qczaxk+PNLX-JQ9`M#K}$IB+LUc6Et1%|wrG41vRVFmSJ8+J(T>u>nAok+TP+MGd1=(Ig zHz3-si}@Z!lV>((9@xJl$$5LXw4JhEakMMz4DAi$vSZ;#c5RFDba5#@d=~J{Ger$2 zXtd}a87GTPiAy0eV$-2VGJ3<3aZ!}NEJoYAHlM zE0o}h`^lwayh3Gx9K>oPxia5WUtj)T_!DkSY-)_a1?(KXwEH?rOEYtdDEt`@yuNpm zZr<*D_IMpRcD%8@tE*xEUZA=h2SBd}3M@N-Snx6O0%p`fAo%TrOQ9byS^})om{-N* zoTV|V){Zs&_~Kda?Veu}X9J5egv+RfvyWBPYrI)&#FF50+@zr(n{Gl&Ae^N+k&t;K`+_#krG2I#W~ntl(( zKtB&Pm?w@w)A(nqj3)peTvYQ8k!UHuD!EczK~-dwXO`;-bh~dcnbM&;+QDZ`aCjZj zv{5*et2v-_cjue`=IvAMPuWMIP%iT;+)E=4dx|^+D--Tqq^(CXA3fn!R;5%40Eb-8 zvzDJ#oYg|iNEG+~ly>cLQB`Z3f!TY8{mu-X4<>bny+@Ch9zCXrN(EjLJz8j)qN$}; zrXVT;qQ)Q>xhT#Iw_&)0$W2kXcpZp6WzqdAew7owTy7*1#U@JR7X@b$-9^ z`{VoEGM9auHEY&-*IMuUKF?DS>sYtW}h^=9LR`R|8?J~?CZlsEtKvE=W4@yvS{6z;|D^X{WY&n(&G zo~e;PbYJG!Nd7Z91R&uHa+o%c?_!g_Vj&3nYjMD>-hxc~w9~g2-R==@`#tr013|Td-^vMu`aY-oGC5Jf@AytJ~a|>i~9gPu{ME9Zl=l zNAI$ikTSF5(3!)>+YV_r?mw8?4t(fOSFZeIasMIR$Sy$av|PR*e;`-Lcpg(b=B00%*z7i&WZSmgw#^*1Bhk7xTl+#(TJn4hjO^8IA6{mE zs{Y$qsWGQ5zdlR5nrXgW1D%X7+31qXr!7S#pxh|2em!Q}yf@Ch-TKk~PYdz~0y=DS zSmMi%{P~di)J|q-W#c9>X#(>HH&=F1ZhiIc-KLZAug4yRXwPDnwvf%1)4m(`AOe0g|Ii}6l^o4--TQ?;wTW?BoSe;g6Ss*tU6Ds$`p0|t(qM{-f zM7EuL;|=_^MMX;8$)0@UD(sDlYCF(|f7lx($?5KV<=h343vk}aHvCu4^;6DW6@>%+ z=bk*EoVyc(1nlKG@_DvS#+W@+{#dS;zmcD2D!_dnmHjQ@ax5!k{#?@a_mi%h>uMdj zb(Ss1GG7BH*}Ir<7PFi6bv76o_f^jsBRe7=LBR84+@T&B>dHGjvv1z-+F9Ktv8QEK zBzu&@6k7!wa32f7gmHxE+zP2H z_s2U&Ir)1{T-An#3@OK1WOJH#Ru@&2TG%#r%)MBi^D0CmM~Iut;~bk(`))LFQ(9_b z?uNTJS}QLY=vkzRuiVf83UFLs)CWk!^{=r@?s|F6tD^jMAn4>g=>RSzbRX=!jclo_ z3^DkMZr}%$1r!#bt^sVI=nj>?Vc&Q{5vrXZhS)Lab?;@yb%GWNbRv_u)!?IK?Tv!6 zG{QU!QCk;S*pavmM*rV)`dhjYsy7Z7ltBlsDEX!*%o7Gj)J=ETyFkguNBPPtmR~XLO*tGTO_-21Avo9> zY>rA&R$?zMG1*ub*Jl5r zb(eH}-?z_Q?!Q^c#H^4p4>-q|qf?)c4f^@miM5uOp_&zA!790JY4DQN)T= zfIER)xUnT}_iD+rfkz7FxU__+me9Bv3+IMupA1_!3Q&qa*N%T_vUD`G^NG)1IJfrG z%{Mc(o-AeoZto2?G*F(5m+(65+EHJyQ_8O_Evd}c=2z9^RGC|Lzlp5!(?Y=K04c!z z;p!c~NAWm}$4eP6m3CnC|NN2|0a1F7%iVPxQJA&BVuO{v$E7TPU3bPSl*thB8yqfp zpzPAIR=lGe?hbJOcpU5OwE#NdZ6Asd(l5r4$uSG(S!55J#W_kGrFO{n*h))u_c3M9 z!qXRHJ~J~t@>0cgN17uYCt}^#F>i8nh#C8k=sOho05d+j*xYg2!jxmSbX!`w>DL3e zRO%Nj_@`0!9W@F$2EwQt%(n}fmrTJ0$WmvK6zw_M#d zm<`z3LxJjJY)nCC0aRxK*my{bzSA?)SRRwSDkeo%FAEA<2J~b?dg7LNb7p34UZy3c zY|DYN<}(l$(qbESM(aPfx$MA}vKVd8H0Cy9U70iUorH$x?Fk8kA|kj`_shP`Nbm80 z?EpB-LBDbufPDh&2YCEL4D+3T%hK7|&|q&*Xc*)_V&*%5EpF#les3%*weLzT4Z1$C zUmh(j)xNnj^?DGvpcGN~qN0N$v&vRuzlPe_YXj5DHrdlsQ`795%F?cl9q4~gomfl?;Kf7J+YFO}CquV=hsypp}Pc@=tGg}sq8h4tKs8P^Q5B||s+z8vrJAjpt6HX7qsmnks)|(yRPCx`s@GNLRqv@jQhlPj zqPnH}QPr)wR@$R!&98^$f*mU1y%ESJb- zaxSittLOG`&D;sDo9pF$cnyCKZ{#227xPQ`=lK*qlh5Jv`C`6_e}zBEpW{E^KjJ^( zFY~wfpEUPq0yU#G<1~+H=4%#dp3!7zax@N2f#zk++nP@`S2Q;?-$Sg?qg81+EosMS z$7>(a&eT4xou^%>U8;RSyIPy1tXNt-!BC(!B_AT?iB)sQ9_U~S%?r83(JKUAg`4uBndl&UBXL3r*K*L zUbsUX>Byfh>2HjxYeY(-Qak_BbY~4~_ ztZsuYS(l}A>PmFGbh~w}x+A({x;J!h>)z3I=|0kZ1>z00-d{gJZ_y9a|4ARBpP`?x ze@-8xkJBgVQ}x^Rx%xtViN0QcKz~Btp?^!?seey@L4QeqP5-^V*WhdLGYl|T3_}eg z3=bHB4G$W^4UZe<8I~AU8sZGehHVC$A>RPwc03R)C;uX)(CjStuxEwhd7~W3fM8w5ciV<@m*h64H01q}n7IXUPd4GqND#$v2d(FloC+~mM z;`v`Q-X@DQLzD=Du3ht?&OKhB>4Js$heT40fkc`~0zrJ9_$dNCCA1PhT%@~_*qQkX zW|^SP-km;D2;|d8qI^I!Tcrr7Eo`wO1uyNJ!+PU*%&J^;n6X#2%0_DEWUBjDoc`HMP>+ zdt_#S)(#hp5UDk`DVm0YGJ^QWel1pD_tgG^$&vjf0~K9=+1y>~zJlNB`uzz#UFG<8 zQ~A-5cJAO&4+dknNNfnxqzIH$o>EPnCc7N7bQu#Rd-T=Cb&`F?u?q-wewh8zG$auS zOx<#{#(AQqxwb|tPuVHYJkMS=eYW@A;~i3FP5ejgKWWd^u;C-@rmC~&UFXc_&SzN9 zTI_82x1F1%mxjbo%G|6yzHskfLQL{8c^2G`FG_nh)GrMmW+!mxEj}?rP_#`$1f}Ap zLE7|rfvU?>k|-%vq_x7!BK7HN8*2smvV577D}vxi2b+2Y&+y(ZP#~E8#t1`%p2+*~ zr@0?B^)On17!fK^bW<#9QXoE9AcqLKGYz|E_;vSAcFzemzzlpiMp_veYj{+igXQ7xGygwX zwmHGF=+I_lCS#U}d^z-ox0H@;L%RW)i-pb!y$|mJflHIv z`*6NU`yr4GSt!{Lm_0v;%afvkoYL2oVA+O{dLmvUpxtjxu*)?HT~4tm((F~TXj}QX zHbVo?j>8IN#_C&UOtA-V%x8bJv^Y3uzZAPnh^hcDIjJ?Ma0(XwAC&&%qKWu;k*0{9 z#Y#g@CwR$vTyQ88dl0|w>Iav<@WS$ROpQR`c0;h{m8Vr;vFtGK&2K8$?Y!0a&m*6{ zsoi?&&Fr)0zL^MPRtNH(UueCK?|VN$!wy2#io5LP_KgD@rMenn%zL zCMaTvi99V6VCP1QJzdLCCJ4N-sRslW4cO#VIhyzu7*!Yy7t&`T{gP}o?L)G`Siz1p z1*$Nyrwe(`n6_zJ(PPr-cT+^=qJjNWQthwvOvqAjF!~T@AbzhvDdKeMF)}zvRXkFe zkAt=x**1S*VRA8#;LD2%&mq?)Ye&|g9G*TDkhrYqy(r8G5Gw1NEGiSm|Gp7_ssCH_ zmEMJX6$@FN$)#xoS~m&9Lu@ob_l{{frr4M!7F7)#%Z7&32r}?hlQ+Kx(O>|(Lb8b?K5>7cwCBqn4#vK^UH=`-)kv0Sf?y06OPjf!yj$gq!Z zDz)fxW@Ut(d+cN7S)zQ@#MB?)y$FD-StX)8;4}fXiP8%^nTRmm=g!22Sd%-GW(&#) ziIf%eW>0`3c}VhM%ug^wp)8E29h*Qg+regwbWylImb#a8FM$m%%ySN+V9*`}htpt1 z%wzyN48N=n^egT1DyH{u3RLeQbcdeEv1s}$1%J0()c)&BK54; zvE8MOHPzBp4Y6Uu3bbAyNo{GtyD2|rIk*+$x`0Dn6zzuapIs2#dXPzW||~?g3jWG94m2kb>+=1CSra7JNu!! z%hBNPE~wCn`&LwhIEE28@F#az4xQN5*=Z`bRqQC2$Z0RMIe(MgE-Ndmsx}$ARx%0- z0-j~sw1YBTyLOOKmqhU!H^#?rtZf8TP{bD6Si3PEp98vH{32a2O^TK&A;&2jN$1Ih zrD+x_gPeA185KJ7i(DpZNoh{3m#CrPu)QIHfa;ZqORC;l-)L$muCJ~}Iw~m4tEx#h zJ2zJ>uUuZYqAst_SzDwnY_(BkWg&*@ZXfqe&gDY5Z7HOa2@yVT6WnoQK?(g-U2Se| z9eVoT&OR{{39}9(0D@SL%aTN(P04_!-(CgZp)@Mev~G4KBuKP@!T8@D8lXPNVD#~0 z{KtPXA}7Y$J(7bA8HgZ8ax;by93Lyuw1zZ`7&tt?T^t?r>WzY>z#jlKS*g$d{ zOOj!_u_a+^lgI=HE2iE7_(aB5M~3-18_WuRMYN%Im{DSLg(m7-nkUI^^2FOfR7@O= zQ3S$*;C>-Af29lj_D6qL=mRdWVP@ucX~m*j7Lqj>&o;v)*Wto+3iz1rj&y;n$Wws8 z6`Why**RoNhEcDoz#JKEgSKPxJe81i-zB%Bwf3n7!g#O;L@W`&sD6_GSHZaiX+}Ai z*b`{PNV~IBQDKSGQc~rrF0ImDI7zz{yVwa$RCKO@0W?@~>nR)f{|GpKHXf8|;NC<2 zG8r$4gp3M?j0y@wN*%%Pfnn@n8|U%Ylvx{+tJ5i4o1LAxJp+U>yfuZ&tAHBOxblm@ zG+jvYvv=ljkfvqN_RN9BoQmNC0|<2|V$niI*$+ToKb}}5dIrz@Zrx&j7E&O~Xq%!D zm56zHf7z7BfX^vDF*$LoW$T85^*fU&ICy)od6OKWXcm%7G|1DT*fxwzs1H=VpGa72 zX$WA@VI<{2+Azb6Mak>cZ=D5v;O(PqAPS%d4$Q%)W!MQ+DL}icj~%(BtQW8tA#Oum zb4rU@DS%6{3gd(uXmBQ!TNzwQ>cwc$Vs2?BL}!0Ulp9T{xg^h;2%PiCQzdT_|D{OJ zF2v$S8JJs}U@2pr(H2sJH%cx7{S!}S`IUw8cStaqc=t;}@AO_`qXh%pZPnPvx6;1= DgjuED literal 0 HcmV?d00001 From 892e987e449b4728ccb540d35d0a69587c023c81 Mon Sep 17 00:00:00 2001 From: jcass Date: Sun, 24 Jan 2016 10:01:13 +0200 Subject: [PATCH 060/120] Update changelog. --- README.rst | 2 ++ mopidy_musicbox_webclient/static/mb.manifest | 1 + 2 files changed, 3 insertions(+) diff --git a/README.rst b/README.rst index 13efa71c..5bfc86fb 100644 --- a/README.rst +++ b/README.rst @@ -60,6 +60,8 @@ v2.0.1 (UNRELEASED) - Added link to `Alarm Clock `_ (if present). - Added ability to save Queue as local Playlist. - Added ability to manually initiate refresh of Playlists. +- Increase volume slider handle by 30% to make it easier to use on mobile devices +- Add application cache manifest file for quicker loads and to allow client devices to detect changes. v2.0.0 (26-3-2015) ------------------ diff --git a/mopidy_musicbox_webclient/static/mb.manifest b/mopidy_musicbox_webclient/static/mb.manifest index 5922cd70..3b5f42a5 100644 --- a/mopidy_musicbox_webclient/static/mb.manifest +++ b/mopidy_musicbox_webclient/static/mb.manifest @@ -7,6 +7,7 @@ index.html css/fonts/Flat-UI-Icons-24.ttf css/fonts/Flat-UI-Icons-24.woff +css/fonts/FontAwesome.otf css/fonts/fontawesome-webfont.eot css/fonts/fontawesome-webfont.svg css/fonts/fontawesome-webfont.ttf From ef9f908add6d670636c3f59c518a096f79ffc09b Mon Sep 17 00:00:00 2001 From: jcass Date: Sun, 24 Jan 2016 12:03:54 +0200 Subject: [PATCH 061/120] Fix vertical alignment of playback control buttons. --- README.rst | 1 + .../static/css/webclient.css | 15 ++++++--- mopidy_musicbox_webclient/static/index.html | 32 ++++++++++--------- 3 files changed, 28 insertions(+), 20 deletions(-) diff --git a/README.rst b/README.rst index 5bfc86fb..affb5e43 100644 --- a/README.rst +++ b/README.rst @@ -62,6 +62,7 @@ v2.0.1 (UNRELEASED) - Added ability to manually initiate refresh of Playlists. - Increase volume slider handle by 30% to make it easier to use on mobile devices - Add application cache manifest file for quicker loads and to allow client devices to detect changes. +- Fix vertical alignment of playback control buttons in footer. v2.0.0 (26-3-2015) ------------------ diff --git a/mopidy_musicbox_webclient/static/css/webclient.css b/mopidy_musicbox_webclient/static/css/webclient.css index 68626083..f03c4a26 100644 --- a/mopidy_musicbox_webclient/static/css/webclient.css +++ b/mopidy_musicbox_webclient/static/css/webclient.css @@ -341,13 +341,18 @@ *******************/ .nowPlayingControls { font-size: 20px; - line-height: 45px; - padding-left: 10px; + line-height: 40px; + width: 100%; } -.nowPlayingControls .fa{ - vertical-align: -webkit-baseline-middle; + +.nowPlayingControls span span { + padding-left: 2px; + padding-right: 2px; + height=100%; + vertical-align: middle; } -.nowPlayingControls #btplayNowPlaying{ + +.nowPlayingControls #btplayNowPlaying { font-size: 190%; margin-left: 15px; margin-right: 15px; diff --git a/mopidy_musicbox_webclient/static/index.html b/mopidy_musicbox_webclient/static/index.html index 338bdac5..72342561 100644 --- a/mopidy_musicbox_webclient/static/index.html +++ b/mopidy_musicbox_webclient/static/index.html @@ -409,9 +409,9 @@

    Tracks

    Streams

    -
    +

    Play a specific stream/track and optionally save it to your favourites.
    -

    +
      @@ -454,19 +454,21 @@

      Streams

      -

      - -   -   -   -   -

      - -
      - -   -   -
      +
      + + + + + + + + + + + + +
      +
      From e312ad1e127928b1992e538f9f8cea7e34a1e2fd Mon Sep 17 00:00:00 2001 From: jcass Date: Sun, 24 Jan 2016 12:06:19 +0200 Subject: [PATCH 062/120] Update README. --- README.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.rst b/README.rst index affb5e43..55f34abd 100644 --- a/README.rst +++ b/README.rst @@ -60,7 +60,7 @@ v2.0.1 (UNRELEASED) - Added link to `Alarm Clock `_ (if present). - Added ability to save Queue as local Playlist. - Added ability to manually initiate refresh of Playlists. -- Increase volume slider handle by 30% to make it easier to use on mobile devices +- Increase volume slider handle by 30% to make it easier to grab on mobile devices - Add application cache manifest file for quicker loads and to allow client devices to detect changes. - Fix vertical alignment of playback control buttons in footer. From ee6aa77cb9131936715028182a7a5b7c2e1576ed Mon Sep 17 00:00:00 2001 From: jcass Date: Sun, 24 Jan 2016 12:20:23 +0200 Subject: [PATCH 063/120] Increase button sizes. --- mopidy_musicbox_webclient/static/css/webclient.css | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/mopidy_musicbox_webclient/static/css/webclient.css b/mopidy_musicbox_webclient/static/css/webclient.css index f03c4a26..9d2dbdc4 100644 --- a/mopidy_musicbox_webclient/static/css/webclient.css +++ b/mopidy_musicbox_webclient/static/css/webclient.css @@ -340,14 +340,15 @@ * Now Playing area *******************/ .nowPlayingControls { - font-size: 20px; - line-height: 40px; - width: 100%; + font-size: 25px; + line-height: 48px; + padding-left: 10px; + padding-right: 10px; } .nowPlayingControls span span { - padding-left: 2px; - padding-right: 2px; + padding-left: 3px; + padding-right: 3px; height=100%; vertical-align: middle; } From f14a8101b935a255f4a6cf20c0b1c50274828029 Mon Sep 17 00:00:00 2001 From: jcass Date: Sun, 24 Jan 2016 12:25:45 +0200 Subject: [PATCH 064/120] Update README. --- README.rst | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/README.rst b/README.rst index 55f34abd..6a983b1b 100644 --- a/README.rst +++ b/README.rst @@ -61,7 +61,7 @@ v2.0.1 (UNRELEASED) - Added ability to save Queue as local Playlist. - Added ability to manually initiate refresh of Playlists. - Increase volume slider handle by 30% to make it easier to grab on mobile devices -- Add application cache manifest file for quicker loads and to allow client devices to detect changes. +- Add application cache manifest file for quicker loads and to allow client devices to detect when local caches should be invalidated. - Fix vertical alignment of playback control buttons in footer. v2.0.0 (26-3-2015) @@ -77,13 +77,13 @@ v2.0.0 (26-3-2015) - Fixed wrong jQuery version on some pages. v1.0.4 -------------------- +------ - Added AudioAddict icon - Bugfixes of course v1.0.2 -------------------- +------ - A friendlier welcome with a home page with buttons to the most used functions - Converted Radio Stations to Streams, so user can add streams for youtube, spotify, soundcloud, podcasts @@ -95,12 +95,12 @@ v1.0.2 - Bugfixes (search, popups, etc) v1.0.1 (20-9-2014) -------------------- +------------------ - Small fixes for Pypi distro v1.0.0 (20-9-2014) -------------------- +------------------ - Compatible with Mopidy v0.19 - Made pip installable From 01b4bce7d98b56651a54e9e5b28964d4b8507b07 Mon Sep 17 00:00:00 2001 From: jcass Date: Sun, 24 Jan 2016 15:15:08 +0200 Subject: [PATCH 065/120] Align height of normalFooter and nowPlayingFooter. --- mopidy_musicbox_webclient/static/css/webclient.css | 1 + 1 file changed, 1 insertion(+) diff --git a/mopidy_musicbox_webclient/static/css/webclient.css b/mopidy_musicbox_webclient/static/css/webclient.css index 9d2dbdc4..d3b2a2ae 100644 --- a/mopidy_musicbox_webclient/static/css/webclient.css +++ b/mopidy_musicbox_webclient/static/css/webclient.css @@ -464,6 +464,7 @@ a { height: 48px; } #nowPlayingFooter{ + height: 48px; text-align: center; color: white; } From 6e111173de904c9b4655bbd8fa3dc685e5b9749c Mon Sep 17 00:00:00 2001 From: Nick Steel Date: Sun, 24 Jan 2016 15:34:10 +0000 Subject: [PATCH 066/120] Fixing travis --- tox.ini | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tox.ini b/tox.ini index 1ddb98c8..ead2ff11 100644 --- a/tox.ini +++ b/tox.ini @@ -2,14 +2,12 @@ envlist = py27, flake8 [testenv] -sitepackages = true deps = mock mopidy pytest pytest-cov pytest-xdist -install_command = pip install {opts} {packages} commands = py.test \ --basetemp={envtmpdir} \ @@ -21,4 +19,5 @@ commands = deps = flake8 flake8-import-order +skip_install = true commands = flake8 From 2976e102d732e03d08c360c9a73966e4e2f475f0 Mon Sep 17 00:00:00 2001 From: Nick Steel Date: Sun, 24 Jan 2016 15:36:02 +0000 Subject: [PATCH 067/120] Fixing travis? --- .travis.yml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index 65b56343..637d1772 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,3 +1,5 @@ +sudo: false + language: python python: @@ -8,10 +10,6 @@ env: - TOX_ENV=flake8 install: - - "wget -O - http://apt.mopidy.com/mopidy.gpg | sudo apt-key add -" - - "sudo wget -O /etc/apt/sources.list.d/mopidy.list http://apt.mopidy.com/mopidy.list" - - "sudo apt-get update || true" - - "sudo apt-get install mopidy" - "pip install tox" script: From d1fbeef5ea0e97ac850ad47efb8bee7b49639f8f Mon Sep 17 00:00:00 2001 From: jcass Date: Sun, 24 Jan 2016 18:29:02 +0200 Subject: [PATCH 068/120] Remove pause/play images in favor of standardising on fontawesome icons. Ensure proper alignment of 'normalFooter' and 'nowPlayingFooter' when switching layouts. --- .../static/css/webclient.css | 88 +++++++----------- .../static/images/icons/pause_32x32.png | Bin 179 -> 0 bytes .../static/images/icons/play_alt_12x12.png | Bin 275 -> 0 bytes .../static/images/icons/play_alt_16x16.png | Bin 283 -> 0 bytes .../static/images/icons/play_alt_32x32.png | Bin 461 -> 0 bytes mopidy_musicbox_webclient/static/index.html | 49 +++++----- .../static/js/controls.js | 8 +- mopidy_musicbox_webclient/static/mb.manifest | 4 - 8 files changed, 62 insertions(+), 87 deletions(-) delete mode 100644 mopidy_musicbox_webclient/static/images/icons/pause_32x32.png delete mode 100644 mopidy_musicbox_webclient/static/images/icons/play_alt_12x12.png delete mode 100644 mopidy_musicbox_webclient/static/images/icons/play_alt_16x16.png delete mode 100644 mopidy_musicbox_webclient/static/images/icons/play_alt_32x32.png diff --git a/mopidy_musicbox_webclient/static/css/webclient.css b/mopidy_musicbox_webclient/static/css/webclient.css index d3b2a2ae..0a2297ca 100644 --- a/mopidy_musicbox_webclient/static/css/webclient.css +++ b/mopidy_musicbox_webclient/static/css/webclient.css @@ -121,12 +121,6 @@ } /**headers and controls**/ - - -#playimg { - margin-top: 2px; -} - #nextimg, #previmg, #backimg, #controlsimg { margin-top: 6px; } @@ -339,24 +333,30 @@ /******************* * Now Playing area *******************/ -.nowPlayingControls { - font-size: 25px; + +#nowPlayingFooter{ + height: 50px; line-height: 48px; - padding-left: 10px; + text-align: center; +} + +.footerControls { + height: 100%; + font-size: 25px; padding-right: 10px; } -.nowPlayingControls span span { +.footerControls div span { padding-left: 3px; padding-right: 3px; height=100%; vertical-align: middle; } -.nowPlayingControls #btplayNowPlaying { - font-size: 190%; - margin-left: 15px; - margin-right: 15px; +.footerControls #btplayNowPlaying { + font-size: 42px; + margin-left: 10px; + margin-right: 10px; } @@ -398,10 +398,6 @@ margin-bottom: 15px; } -#btplayNowPlaying { - padding-top: 15px; -} - #popupTracksLv li, #popupQueueLv li { border-bottom: 1px solid #aaa; } @@ -460,14 +456,14 @@ a { .ui-footer{ border: 0px; } + #normalFooter{ - height: 48px; -} -#nowPlayingFooter{ - height: 48px; + height: 50px; + line-height: 48px; text-align: center; color: white; } + #infoname { overflow: hidden; white-space: nowrap; @@ -482,52 +478,35 @@ a { } #infocover { - height: 48px; - width: 48px; + height: 50px; + width: 50px; position: absolute; } - -.songinfo-text{ - display:inline-block; - padding: 6px; +#btplay { color: white; - position: absolute; - padding-left: 50px; - padding-right: 50px; -} -.playPausebtn{ - padding-right: 10px; - position: absolute; - right: 0px; } -#controldiv{ - background: none repeat scroll 0% 0% rgb(44, 62, 80); - height: 48px; - padding: 8px 8px 8px 8px; - +.songinfo { + height: 100%; } -#controldiv img { - margin-left: auto; - margin-right: auto; - display: block; +.songinfo-text { + text-align: left; + line-height: 22px; + display:inline-block; + padding: 6px; + color: white; + position: absolute; + padding-left: 55px; + padding-right: 55px; } - #nowPlayingpane{ text-align: center; } -.footer { - position: fixed; - z-index: 1000; - bottom: 0; - width: 100%; -} - /*helper*/ .hidden{ @@ -597,7 +576,8 @@ a { .nowPlayingControls{ font-size: 1.3em; - line-height: 50px; + height: 50px; + line-height: 48px; } } diff --git a/mopidy_musicbox_webclient/static/images/icons/pause_32x32.png b/mopidy_musicbox_webclient/static/images/icons/pause_32x32.png deleted file mode 100644 index 575176970132599f9a5a01e86cd7e89d83a2b9ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 179 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1Gp`I>|Ar-gYTtCQrK!Kw*F+(Qc@-@ZP$MQVH72*tE{_i{R z(ECBtteGy)COly9Se+)lzFOg{)~l=Y?e6~kedZL%0WfewY{8$l{p>YNJPh%neAaLN RdU}AQJYD@<);T3K0RY9_J{14} diff --git a/mopidy_musicbox_webclient/static/images/icons/play_alt_12x12.png b/mopidy_musicbox_webclient/static/images/icons/play_alt_12x12.png deleted file mode 100644 index 4d23adaf331802ba8fbdac4e68bc68290f1683b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 275 zcmeAS@N?(olHy`uVBq!ia0vp^JRr=$1|-8uW1a&k$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1GTRmMILn>}1r8G2!W?$20SXrgO$B@Lh;sd+FJ%%H_iHeQ< z4op1(N7)>*>?b*uFkE`UaiyeDFzZvLP1i(INh8O(jKMXGDYhX(vJF?R7(3qOF=x%l zWu6drWT9aL=j`BySp}IQ2}ufq8yrd(-(ce55ZKSq@%iEtI|IkVlJ5)`Buxl@x0scU zCnuqCm!McATR@L?g!Ie>hA%plH7+W@V-z+Cad?=|afJJVNnJyiq|;Rc1{Mhhg+z-U U*#&B>Ko2l@y85}Sb4q9e0Ame6t3(I0e8UZa6b|8#1Y6Eok_)n~H^(x3{ajbP0l+XkKjuKZS diff --git a/mopidy_musicbox_webclient/static/images/icons/play_alt_32x32.png b/mopidy_musicbox_webclient/static/images/icons/play_alt_32x32.png deleted file mode 100644 index ae4412f5fc18ce6012b0c44da46573b521c261ae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 461 zcmV;;0W$uHP)d-;DXM`Ndvwl=fEeO`~dj-e1F_&#l-i|VU9#{%^+Uku|}J#ey9cPP{@9e03@E_Q9O7p7qwRm3OTU_AbC#Y zZ%PJd5@CY^$mNBK1Je$P?s)k@#l_P1gl@&W5_J2caHK9L!26(>fLsyBEyUo(J(TSR z?Ia{3BhH%#)}de2$%FPTDCEkisl!za0lK4FHfXaEB2u9C+8aV1$$@(NV2l*90D)FJ zMo0$IHP%-M#42{K5KvD>66<1anI_L7_63v@l`ya|l?lyo*~G*S$6A1;3#KG?u$nHb zLPMwfFAyTW4y|}+>XL958p8yMmB-nbh<>HoGAH@)^&jmStreams
      -
      - - -
      -
      -
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      -
      -
      - Play
      - -
      - - - - - - - - - - - - -
      +
      +
      + + + +
      +
      + + + + + +
      +
      diff --git a/mopidy_musicbox_webclient/static/js/controls.js b/mopidy_musicbox_webclient/static/js/controls.js index 266e041b..c0c279c6 100644 --- a/mopidy_musicbox_webclient/static/js/controls.js +++ b/mopidy_musicbox_webclient/static/js/controls.js @@ -260,15 +260,15 @@ function doShuffle() { /* Toggle state of play button */ function setPlayState(nwplay) { if (nwplay) { - $("#playimg").attr('src', 'images/icons/pause_32x32.png'); - $("#playimg").attr('title', 'Pause'); $("#btplayNowPlaying >i").removeClass('fa-play').addClass('fa-pause'); $("#btplayNowPlaying").attr('title', 'Pause'); + $("#btplay >i").removeClass('fa-play').addClass('fa-pause'); + $("#btplay").attr('title', 'Pause'); } else { - $("#playimg").attr('src', 'images/icons/play_alt_32x32.png'); - $("#playimg").attr('title', 'Play'); $("#btplayNowPlaying >i").removeClass('fa-pause').addClass('fa-play'); $("#btplayNowPlaying").attr('title', 'Play'); + $("#btplay >i").removeClass('fa-pause').addClass('fa-play'); + $("#btplay").attr('title', 'Play'); } play = nwplay; } diff --git a/mopidy_musicbox_webclient/static/mb.manifest b/mopidy_musicbox_webclient/static/mb.manifest index 3b5f42a5..7d2862d1 100644 --- a/mopidy_musicbox_webclient/static/mb.manifest +++ b/mopidy_musicbox_webclient/static/mb.manifest @@ -41,10 +41,6 @@ images/icons/musicbox32.png images/icons/musicbox57.png images/icons/musicbox72.png images/icons/musicbox114.png -images/icons/pause_32x32.png -images/icons/play_alt_12x12.png -images/icons/play_alt_16x16.png -images/icons/play_alt_32x32.png images/default_cover.png images/empty.png From fb3f8dda3f4791b9f0bedd7b0625e077ce0f4d60 Mon Sep 17 00:00:00 2001 From: jcass Date: Sun, 24 Jan 2016 21:29:32 +0200 Subject: [PATCH 069/120] Fix mute/unmute functionality: now also works if user unmutes by sliding volume manually. --- README.rst | 1 + .../static/images/icons/play_alt_12x12.png | Bin 0 -> 275 bytes .../static/images/icons/play_alt_16x16.png | Bin 0 -> 283 bytes mopidy_musicbox_webclient/static/index.html | 2 +- .../static/js/controls.js | 21 +++++++++++++----- mopidy_musicbox_webclient/static/mb.manifest | 4 +++- 6 files changed, 20 insertions(+), 8 deletions(-) create mode 100644 mopidy_musicbox_webclient/static/images/icons/play_alt_12x12.png create mode 100644 mopidy_musicbox_webclient/static/images/icons/play_alt_16x16.png diff --git a/README.rst b/README.rst index 6a983b1b..c7f1b146 100644 --- a/README.rst +++ b/README.rst @@ -63,6 +63,7 @@ v2.0.1 (UNRELEASED) - Increase volume slider handle by 30% to make it easier to grab on mobile devices - Add application cache manifest file for quicker loads and to allow client devices to detect when local caches should be invalidated. - Fix vertical alignment of playback control buttons in footer. +- Swop mute/unmute icons and apply fix to restore volume levels after unmute. v2.0.0 (26-3-2015) ------------------ diff --git a/mopidy_musicbox_webclient/static/images/icons/play_alt_12x12.png b/mopidy_musicbox_webclient/static/images/icons/play_alt_12x12.png new file mode 100644 index 0000000000000000000000000000000000000000..4d23adaf331802ba8fbdac4e68bc68290f1683b8 GIT binary patch literal 275 zcmeAS@N?(olHy`uVBq!ia0vp^JRr=$1|-8uW1a&k$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1GTRmMILn>}1r8G2!W?$20SXrgO$B@Lh;sd+FJ%%H_iHeQ< z4op1(N7)>*>?b*uFkE`UaiyeDFzZvLP1i(INh8O(jKMXGDYhX(vJF?R7(3qOF=x%l zWu6drWT9aL=j`BySp}IQ2}ufq8yrd(-(ce55ZKSq@%iEtI|IkVlJ5)`Buxl@x0scU zCnuqCm!McATR@L?g!Ie>hA%plH7+W@V-z+Cad?=|afJJVNnJyiq|;Rc1{Mhhg+z-U U*#&B>Ko2l@y85}Sb4q9e0Ame6t3(I0e8UZa6b|8#1Y6Eok_)n~H^(x3{ajbP0l+XkKjuKZS literal 0 HcmV?d00001 diff --git a/mopidy_musicbox_webclient/static/index.html b/mopidy_musicbox_webclient/static/index.html index b2e64ea9..0bb856f1 100644 --- a/mopidy_musicbox_webclient/static/index.html +++ b/mopidy_musicbox_webclient/static/index.html @@ -117,7 +117,7 @@
    • - + diff --git a/mopidy_musicbox_webclient/static/js/controls.js b/mopidy_musicbox_webclient/static/js/controls.js index c0c279c6..4106aa02 100644 --- a/mopidy_musicbox_webclient/static/js/controls.js +++ b/mopidy_musicbox_webclient/static/js/controls.js @@ -423,19 +423,28 @@ function doVolume(value) { } function triggerVolume() { - mopidy.playback.setVolume(parseInt(volumeChanging)); + if (volumeChanging > 0) { + $("#mutebt").attr('class', 'fa fa-volume-off'); + muteVolume = -1; + } else { + $("#mutebt").attr('class', 'fa fa-volume-up'); + muteVolume = currentVolume; + } + mopidy.playback.setVolume(parseInt(volumeChanging)).then(); + currentVolume = volumeChanging volumeChanging = 0; } function doMute() { //only emit the event, not the status if (muteVolume == -1) { - $("#mutebt").attr('src', 'images/icons/volume_mute_24x18.png'); - muteVolume = currentVolume; - mopidy.playback.setVolume(0).then(); + $("#mutebt").attr('class', 'fa fa-volume-up'); + volumeChanging = 0; + triggerVolume(); } else { - $("#mutebt").attr('src', 'images/icons/volume_24x18.png'); - mopidy.playback.setVolume(muteVolume).then(); + $("#mutebt").attr('class', 'fa fa-volume-off'); + volumeChanging = muteVolume; + triggerVolume(); muteVolume = -1; } diff --git a/mopidy_musicbox_webclient/static/mb.manifest b/mopidy_musicbox_webclient/static/mb.manifest index 7d2862d1..144a6018 100644 --- a/mopidy_musicbox_webclient/static/mb.manifest +++ b/mopidy_musicbox_webclient/static/mb.manifest @@ -1,6 +1,6 @@ CACHE MANIFEST -# 2016-01-24:v1 +# 2016-01-24:v2 CACHE: index.html @@ -41,6 +41,8 @@ images/icons/musicbox32.png images/icons/musicbox57.png images/icons/musicbox72.png images/icons/musicbox114.png +images/icons/play_alt_12x12.png +images/icons/play_alt_16x16.png images/default_cover.png images/empty.png From 8cdc547d4e195e26f29c7e8d5978948f7e68cd22 Mon Sep 17 00:00:00 2001 From: jcass Date: Sun, 24 Jan 2016 21:44:46 +0200 Subject: [PATCH 070/120] Fix to store current volume on startup. --- mopidy_musicbox_webclient/static/js/controls.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mopidy_musicbox_webclient/static/js/controls.js b/mopidy_musicbox_webclient/static/js/controls.js index 4106aa02..300c25b7 100644 --- a/mopidy_musicbox_webclient/static/js/controls.js +++ b/mopidy_musicbox_webclient/static/js/controls.js @@ -419,6 +419,8 @@ function doVolume(value) { volumeChanging = value; clearInterval(volumeTimer); volumeTimer = setTimeout(triggerVolume, 500); + } else { + currentVolume = value } } From 4bca4360009a303c150bd9e44c7fb5b20a946201 Mon Sep 17 00:00:00 2001 From: jcass Date: Mon, 25 Jan 2016 07:34:56 +0200 Subject: [PATCH 071/120] Refactor volume control and mute/unmute features. --- .../static/js/controls.js | 41 +++++++------------ mopidy_musicbox_webclient/static/mb.manifest | 2 +- 2 files changed, 16 insertions(+), 27 deletions(-) diff --git a/mopidy_musicbox_webclient/static/js/controls.js b/mopidy_musicbox_webclient/static/js/controls.js index 300c25b7..6f4ba71e 100644 --- a/mopidy_musicbox_webclient/static/js/controls.js +++ b/mopidy_musicbox_webclient/static/js/controls.js @@ -408,30 +408,23 @@ function setPosition(pos) { */ function setVolume(value) { - var oldval = initgui; - initgui = true; - $("#volumeslider").val(value).slider('refresh'); - initgui = oldval; + if (value != currentVolume) { + $("#volumeslider").val(value).slider('refresh'); + if (value > 0) { + $("#mutebt").attr('class', 'fa fa-volume-off'); + } else { + $("#mutebt").attr('class', 'fa fa-volume-up'); + } + } } function doVolume(value) { - if (!initgui) { - volumeChanging = value; - clearInterval(volumeTimer); - volumeTimer = setTimeout(triggerVolume, 500); - } else { - currentVolume = value - } + volumeChanging = value; + clearInterval(volumeTimer); + volumeTimer = setTimeout(triggerVolume, 500); } function triggerVolume() { - if (volumeChanging > 0) { - $("#mutebt").attr('class', 'fa fa-volume-off'); - muteVolume = -1; - } else { - $("#mutebt").attr('class', 'fa fa-volume-up'); - muteVolume = currentVolume; - } mopidy.playback.setVolume(parseInt(volumeChanging)).then(); currentVolume = volumeChanging volumeChanging = 0; @@ -439,17 +432,13 @@ function triggerVolume() { function doMute() { //only emit the event, not the status - if (muteVolume == -1) { - $("#mutebt").attr('class', 'fa fa-volume-up'); - volumeChanging = 0; - triggerVolume(); + if (currentVolume > 0) { + muteVolume = currentVolume + setVolume(0); } else { - $("#mutebt").attr('class', 'fa fa-volume-off'); - volumeChanging = muteVolume; - triggerVolume(); + setVolume(muteVolume); muteVolume = -1; } - } /******* diff --git a/mopidy_musicbox_webclient/static/mb.manifest b/mopidy_musicbox_webclient/static/mb.manifest index 144a6018..f2c16ab0 100644 --- a/mopidy_musicbox_webclient/static/mb.manifest +++ b/mopidy_musicbox_webclient/static/mb.manifest @@ -1,6 +1,6 @@ CACHE MANIFEST -# 2016-01-24:v2 +# 2016-01-25:v1 CACHE: index.html From 1f45a7f4ace728fa4c506f2741beeb865ef8808b Mon Sep 17 00:00:00 2001 From: jcass Date: Mon, 25 Jan 2016 07:50:23 +0200 Subject: [PATCH 072/120] Add lable for mute/un-mute toggle. --- mopidy_musicbox_webclient/static/css/webclient.css | 2 +- mopidy_musicbox_webclient/static/index.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mopidy_musicbox_webclient/static/css/webclient.css b/mopidy_musicbox_webclient/static/css/webclient.css index 0a2297ca..3b68652e 100644 --- a/mopidy_musicbox_webclient/static/css/webclient.css +++ b/mopidy_musicbox_webclient/static/css/webclient.css @@ -551,7 +551,7 @@ a { max-height:90%; } .nowPlaying-artistInfo { - font-size: 12px; + font-size: 12px; } .nowPlaying-artistInfo h4{ margin: 0px; diff --git a/mopidy_musicbox_webclient/static/index.html b/mopidy_musicbox_webclient/static/index.html index 0bb856f1..e81d2314 100644 --- a/mopidy_musicbox_webclient/static/index.html +++ b/mopidy_musicbox_webclient/static/index.html @@ -117,7 +117,7 @@
    • - + From d4ed52ac32dde2c8f83765a69f25c50a9ed65178 Mon Sep 17 00:00:00 2001 From: jcass Date: Tue, 26 Jan 2016 16:29:56 +0200 Subject: [PATCH 073/120] Use standard mixer controls to mute / un-mute. --- .../static/js/controls.js | 20 ++++++++----------- mopidy_musicbox_webclient/static/mb.manifest | 2 +- 2 files changed, 9 insertions(+), 13 deletions(-) diff --git a/mopidy_musicbox_webclient/static/js/controls.js b/mopidy_musicbox_webclient/static/js/controls.js index 6f4ba71e..4db98f1b 100644 --- a/mopidy_musicbox_webclient/static/js/controls.js +++ b/mopidy_musicbox_webclient/static/js/controls.js @@ -410,11 +410,6 @@ function setPosition(pos) { function setVolume(value) { if (value != currentVolume) { $("#volumeslider").val(value).slider('refresh'); - if (value > 0) { - $("#mutebt").attr('class', 'fa fa-volume-off'); - } else { - $("#mutebt").attr('class', 'fa fa-volume-up'); - } } } @@ -432,13 +427,14 @@ function triggerVolume() { function doMute() { //only emit the event, not the status - if (currentVolume > 0) { - muteVolume = currentVolume - setVolume(0); - } else { - setVolume(muteVolume); - muteVolume = -1; - } + mopidy.mixer.getMute().then(function(mute) { + mopidy.mixer.setMute(!mute).then(); + if (!mute) { + $("#mutebt").attr('class', 'fa fa-volume-up'); + } else { + $("#mutebt").attr('class', 'fa fa-volume-off'); + } + }); } /******* diff --git a/mopidy_musicbox_webclient/static/mb.manifest b/mopidy_musicbox_webclient/static/mb.manifest index f2c16ab0..551f7f14 100644 --- a/mopidy_musicbox_webclient/static/mb.manifest +++ b/mopidy_musicbox_webclient/static/mb.manifest @@ -1,6 +1,6 @@ CACHE MANIFEST -# 2016-01-25:v1 +# 2016-01-26:v1 CACHE: index.html From 14246cb7d17b541b96ba70367aa2d1f9bb39fbb9 Mon Sep 17 00:00:00 2001 From: jcass Date: Tue, 26 Jan 2016 16:33:27 +0200 Subject: [PATCH 074/120] Update changelog. --- README.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.rst b/README.rst index c7f1b146..85a0fae4 100644 --- a/README.rst +++ b/README.rst @@ -63,7 +63,7 @@ v2.0.1 (UNRELEASED) - Increase volume slider handle by 30% to make it easier to grab on mobile devices - Add application cache manifest file for quicker loads and to allow client devices to detect when local caches should be invalidated. - Fix vertical alignment of playback control buttons in footer. -- Swop mute/unmute icons and apply fix to restore volume levels after unmute. +- Swop icons and use standard Mopidy methods to mute / un-mute playback. v2.0.0 (26-3-2015) ------------------ From f18a80cc039e1b0ab477782f0390f2f73805a509 Mon Sep 17 00:00:00 2001 From: jcass Date: Tue, 26 Jan 2016 16:56:17 +0200 Subject: [PATCH 075/120] Get rid of local variables in checking current slider value. --- mopidy_musicbox_webclient/static/js/controls.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/mopidy_musicbox_webclient/static/js/controls.js b/mopidy_musicbox_webclient/static/js/controls.js index 4db98f1b..42dc5f90 100644 --- a/mopidy_musicbox_webclient/static/js/controls.js +++ b/mopidy_musicbox_webclient/static/js/controls.js @@ -408,7 +408,7 @@ function setPosition(pos) { */ function setVolume(value) { - if (value != currentVolume) { + if ($("#volumeslider").val() != value) { $("#volumeslider").val(value).slider('refresh'); } } @@ -421,12 +421,10 @@ function doVolume(value) { function triggerVolume() { mopidy.playback.setVolume(parseInt(volumeChanging)).then(); - currentVolume = volumeChanging volumeChanging = 0; } function doMute() { - //only emit the event, not the status mopidy.mixer.getMute().then(function(mute) { mopidy.mixer.setMute(!mute).then(); if (!mute) { From ac86e1918e5ce4bd286049882b11ee593ccbfd2e Mon Sep 17 00:00:00 2001 From: jcass Date: Tue, 26 Jan 2016 16:57:31 +0200 Subject: [PATCH 076/120] Update changelog. --- README.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.rst b/README.rst index 85a0fae4..b98a9329 100644 --- a/README.rst +++ b/README.rst @@ -63,7 +63,7 @@ v2.0.1 (UNRELEASED) - Increase volume slider handle by 30% to make it easier to grab on mobile devices - Add application cache manifest file for quicker loads and to allow client devices to detect when local caches should be invalidated. - Fix vertical alignment of playback control buttons in footer. -- Swop icons and use standard Mopidy methods to mute / un-mute playback. +- Swop icons and use standard Mopidy mixer methods to mute / un-mute playback. v2.0.0 (26-3-2015) ------------------ From b103d6a8a66bc421793c6aec61da57bcee7d13bd Mon Sep 17 00:00:00 2001 From: jcass Date: Tue, 26 Jan 2016 17:27:06 +0200 Subject: [PATCH 077/120] Rename function to toggle mute. Don't need promise to be returned on Mopidy calls. --- mopidy_musicbox_webclient/static/index.html | 2 +- mopidy_musicbox_webclient/static/js/controls.js | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/mopidy_musicbox_webclient/static/index.html b/mopidy_musicbox_webclient/static/index.html index e81d2314..593fb742 100644 --- a/mopidy_musicbox_webclient/static/index.html +++ b/mopidy_musicbox_webclient/static/index.html @@ -117,7 +117,7 @@
    • - + diff --git a/mopidy_musicbox_webclient/static/js/controls.js b/mopidy_musicbox_webclient/static/js/controls.js index 42dc5f90..d1b6c7b8 100644 --- a/mopidy_musicbox_webclient/static/js/controls.js +++ b/mopidy_musicbox_webclient/static/js/controls.js @@ -420,13 +420,13 @@ function doVolume(value) { } function triggerVolume() { - mopidy.playback.setVolume(parseInt(volumeChanging)).then(); + mopidy.playback.setVolume(parseInt(volumeChanging)); volumeChanging = 0; } -function doMute() { +function toggleMute() { mopidy.mixer.getMute().then(function(mute) { - mopidy.mixer.setMute(!mute).then(); + mopidy.mixer.setMute(!mute); if (!mute) { $("#mutebt").attr('class', 'fa fa-volume-up'); } else { From c5cdc670efdd5d60aaddf2dcde5e5cf8f17c51de Mon Sep 17 00:00:00 2001 From: jcass Date: Tue, 26 Jan 2016 17:39:18 +0200 Subject: [PATCH 078/120] Set color of mute buttons to ensure that it is always visible. --- mopidy_musicbox_webclient/static/css/webclient.css | 1 + 1 file changed, 1 insertion(+) diff --git a/mopidy_musicbox_webclient/static/css/webclient.css b/mopidy_musicbox_webclient/static/css/webclient.css index 3b68652e..4fd23f53 100644 --- a/mopidy_musicbox_webclient/static/css/webclient.css +++ b/mopidy_musicbox_webclient/static/css/webclient.css @@ -174,6 +174,7 @@ * Volume Slider ***********************/ #mutebt { + color: white; float: left; margin-left: 8px; margin-top: 8px; From eea716d8cdb6e5ce08497cddc258f02bae918983 Mon Sep 17 00:00:00 2001 From: jcass Date: Tue, 26 Jan 2016 17:42:31 +0200 Subject: [PATCH 079/120] Swop mute / un-mute icons back. --- README.rst | 2 +- mopidy_musicbox_webclient/static/index.html | 2 +- mopidy_musicbox_webclient/static/js/controls.js | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.rst b/README.rst index b98a9329..2772a603 100644 --- a/README.rst +++ b/README.rst @@ -63,7 +63,7 @@ v2.0.1 (UNRELEASED) - Increase volume slider handle by 30% to make it easier to grab on mobile devices - Add application cache manifest file for quicker loads and to allow client devices to detect when local caches should be invalidated. - Fix vertical alignment of playback control buttons in footer. -- Swop icons and use standard Mopidy mixer methods to mute / un-mute playback. +- Use standard Mopidy mixer methods to mute / un-mute playback. v2.0.0 (26-3-2015) ------------------ diff --git a/mopidy_musicbox_webclient/static/index.html b/mopidy_musicbox_webclient/static/index.html index 593fb742..27d3000b 100644 --- a/mopidy_musicbox_webclient/static/index.html +++ b/mopidy_musicbox_webclient/static/index.html @@ -117,7 +117,7 @@
    • - + diff --git a/mopidy_musicbox_webclient/static/js/controls.js b/mopidy_musicbox_webclient/static/js/controls.js index d1b6c7b8..140157f2 100644 --- a/mopidy_musicbox_webclient/static/js/controls.js +++ b/mopidy_musicbox_webclient/static/js/controls.js @@ -427,7 +427,7 @@ function triggerVolume() { function toggleMute() { mopidy.mixer.getMute().then(function(mute) { mopidy.mixer.setMute(!mute); - if (!mute) { + if (mute) { $("#mutebt").attr('class', 'fa fa-volume-up'); } else { $("#mutebt").attr('class', 'fa fa-volume-off'); From 4b7253e9de6d0b0a3f821914a1ffbdcd7ddb71e7 Mon Sep 17 00:00:00 2001 From: jcass Date: Wed, 27 Jan 2016 00:22:54 +0200 Subject: [PATCH 080/120] Add missing playback icons that are used on the 'Queue' page. --- .../static/images/icons/play_alt_12x12.png | Bin 0 -> 275 bytes .../static/images/icons/play_alt_16x16.png | Bin 0 -> 283 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 mopidy_musicbox_webclient/static/images/icons/play_alt_12x12.png create mode 100644 mopidy_musicbox_webclient/static/images/icons/play_alt_16x16.png diff --git a/mopidy_musicbox_webclient/static/images/icons/play_alt_12x12.png b/mopidy_musicbox_webclient/static/images/icons/play_alt_12x12.png new file mode 100644 index 0000000000000000000000000000000000000000..4d23adaf331802ba8fbdac4e68bc68290f1683b8 GIT binary patch literal 275 zcmeAS@N?(olHy`uVBq!ia0vp^JRr=$1|-8uW1a&k$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1GTRmMILn>}1r8G2!W?$20SXrgO$B@Lh;sd+FJ%%H_iHeQ< z4op1(N7)>*>?b*uFkE`UaiyeDFzZvLP1i(INh8O(jKMXGDYhX(vJF?R7(3qOF=x%l zWu6drWT9aL=j`BySp}IQ2}ufq8yrd(-(ce55ZKSq@%iEtI|IkVlJ5)`Buxl@x0scU zCnuqCm!McATR@L?g!Ie>hA%plH7+W@V-z+Cad?=|afJJVNnJyiq|;Rc1{Mhhg+z-U U*#&B>Ko2l@y85}Sb4q9e0Ame6t3(I0e8UZa6b|8#1Y6Eok_)n~H^(x3{ajbP0l+XkKjuKZS literal 0 HcmV?d00001 From 11482adc75ae4543b141cfbd688b09dc00810c40 Mon Sep 17 00:00:00 2001 From: jcass Date: Wed, 27 Jan 2016 00:32:24 +0200 Subject: [PATCH 081/120] Update manifest file. --- mopidy_musicbox_webclient/static/mb.manifest | 46 +++++++++----------- 1 file changed, 20 insertions(+), 26 deletions(-) diff --git a/mopidy_musicbox_webclient/static/mb.manifest b/mopidy_musicbox_webclient/static/mb.manifest index 551f7f14..3f351513 100644 --- a/mopidy_musicbox_webclient/static/mb.manifest +++ b/mopidy_musicbox_webclient/static/mb.manifest @@ -2,16 +2,19 @@ CACHE MANIFEST # 2016-01-26:v1 -CACHE: -index.html +NETWORK: +* +CACHE: +css/font-awesome.css +css/font-awesome.min.css css/fonts/Flat-UI-Icons-24.ttf css/fonts/Flat-UI-Icons-24.woff -css/fonts/FontAwesome.otf css/fonts/fontawesome-webfont.eot css/fonts/fontawesome-webfont.svg css/fonts/fontawesome-webfont.ttf css/fonts/fontawesome-webfont.woff +css/fonts/FontAwesome.otf css/fonts/lato-black.ttf css/fonts/lato-black.woff css/fonts/lato-bold.ttf @@ -20,54 +23,51 @@ css/fonts/lato-italic.ttf css/fonts/lato-italic.woff css/fonts/lato-regular.ttf css/fonts/lato-regular.woff - css/images/ajax-loader.gif css/images/icons-18-black.png css/images/icons-18-white.png css/images/icons-36-black.png css/images/icons-36-white.png - -css/font-awesome.css -css/font-awesome.min.css css/iscroll-pull-icon@2x.png css/jquery.mobile.flatui.css css/jquery.mobile.flatui.min.css -css/jquery.mobile.iscrollview.css css/jquery.mobile.iscrollview-pull.css +css/jquery.mobile.iscrollview.css css/webclient.css - +dialog-success.html +images/default_cover.png +images/empty.png +images/icons/AUTHORS +images/icons/LICENSE +images/icons/musicbox114.png images/icons/musicbox32.gif images/icons/musicbox32.png images/icons/musicbox57.png images/icons/musicbox72.png -images/icons/musicbox114.png images/icons/play_alt_12x12.png images/icons/play_alt_16x16.png - -images/default_cover.png -images/empty.png images/loader.gif images/startup.png images/user_24x32.png - +index.html js/add2home.js js/controls.js js/fastclick.js js/functionsvars.js js/gui.js js/images.js -js/iscroll.js js/iscroll-lite.js +js/iscroll.js +js/jquery-1.11.1.min.js +js/jquery-1.11.1.min.map js/jquery.cookie.js -js/jquery.mobile.iscrollview.js -js/jquery.mobile.iscrollview-closure-min.js -js/jquery.mobile.iscrollview-yui-min.js js/jquery.mobile-1.3.2.min.js js/jquery.mobile-1.3.2.min.map +js/jquery.mobile.iscrollview-closure-min.js +js/jquery.mobile.iscrollview-yui-min.js +js/jquery.mobile.iscrollview.js js/jquery.touchwipe.min.js js/jquery.truncate.min.js -js/jquery-1.11.1.min.js -js/jquery-1.11.1.min.map js/lastfm.api.cache.js js/lastfm.api.js js/lastfm.api.md5.js @@ -75,11 +75,5 @@ js/lastfm.js js/library.js js/process_ws.js js/streamuris.js - -dialog-success.html -index.html mb.manifest system.html - -NETWORK: -* \ No newline at end of file From 2b70308028ea22308c37d6ba00491f925d22180d Mon Sep 17 00:00:00 2001 From: jcass Date: Wed, 27 Jan 2016 07:19:23 +0200 Subject: [PATCH 082/120] Add event handling for 'muteChanged'. --- mopidy_musicbox_webclient/static/index.html | 2 +- mopidy_musicbox_webclient/static/js/controls.js | 16 ++++++++++------ .../static/js/functionsvars.js | 2 +- mopidy_musicbox_webclient/static/js/gui.js | 5 +++++ .../static/js/process_ws.js | 7 +++++++ mopidy_musicbox_webclient/static/mb.manifest | 2 +- 6 files changed, 25 insertions(+), 9 deletions(-) diff --git a/mopidy_musicbox_webclient/static/index.html b/mopidy_musicbox_webclient/static/index.html index 27d3000b..5392b4f0 100644 --- a/mopidy_musicbox_webclient/static/index.html +++ b/mopidy_musicbox_webclient/static/index.html @@ -117,7 +117,7 @@
    • - + diff --git a/mopidy_musicbox_webclient/static/js/controls.js b/mopidy_musicbox_webclient/static/js/controls.js index 140157f2..64c066cb 100644 --- a/mopidy_musicbox_webclient/static/js/controls.js +++ b/mopidy_musicbox_webclient/static/js/controls.js @@ -424,15 +424,19 @@ function triggerVolume() { volumeChanging = 0; } -function toggleMute() { - mopidy.mixer.getMute().then(function(mute) { - mopidy.mixer.setMute(!mute); +function setMute(nwmute) { + if (mute != nwmute) { + mute = nwmute; if (mute) { - $("#mutebt").attr('class', 'fa fa-volume-up'); - } else { $("#mutebt").attr('class', 'fa fa-volume-off'); + } else { + $("#mutebt").attr('class', 'fa fa-volume-up'); } - }); + } +} + +function doMute() { + mopidy.mixer.setMute(!mute).then(); } /******* diff --git a/mopidy_musicbox_webclient/static/js/functionsvars.js b/mopidy_musicbox_webclient/static/js/functionsvars.js index a2ec0fde..490cbf20 100644 --- a/mopidy_musicbox_webclient/static/js/functionsvars.js +++ b/mopidy_musicbox_webclient/static/js/functionsvars.js @@ -13,7 +13,7 @@ var repeat; var consume; var single; var currentVolume = -1; -var muteVolume = -1; +var mute; var volumeChanging = false; var posChanging = false; diff --git a/mopidy_musicbox_webclient/static/js/gui.js b/mopidy_musicbox_webclient/static/js/gui.js index ade654bb..d016e41f 100644 --- a/mopidy_musicbox_webclient/static/js/gui.js +++ b/mopidy_musicbox_webclient/static/js/gui.js @@ -270,6 +270,10 @@ function initSocketevents() { } }); + mopidy.on("event:muteChanged", function(data) { + setMute(data["mute"]); + }); + mopidy.on("event:playbackStateChanged", function(data) { switch (data["new_state"]) { case "stopped": @@ -383,6 +387,7 @@ function updateStatusOfAll() { updateOptions() mopidy.playback.getVolume().then(processVolume, console.error); + mopidy.mixer.getMute().then(processMute, console.error); } function locationHashChanged() { diff --git a/mopidy_musicbox_webclient/static/js/process_ws.js b/mopidy_musicbox_webclient/static/js/process_ws.js index fe14d6b8..6b9509ae 100644 --- a/mopidy_musicbox_webclient/static/js/process_ws.js +++ b/mopidy_musicbox_webclient/static/js/process_ws.js @@ -21,6 +21,13 @@ function processVolume(data) { } } +/******************************************************** + * process results of mute + *********************************************************/ +function processMute(data) { + setMute(data); +} + /******************************************************** * process results of a repeat *********************************************************/ diff --git a/mopidy_musicbox_webclient/static/mb.manifest b/mopidy_musicbox_webclient/static/mb.manifest index 3f351513..110dd818 100644 --- a/mopidy_musicbox_webclient/static/mb.manifest +++ b/mopidy_musicbox_webclient/static/mb.manifest @@ -1,6 +1,6 @@ CACHE MANIFEST -# 2016-01-26:v1 +# 2016-01-27:v1 NETWORK: * From 9b76305e3f4cc3dbfdc941845e8bbded41a5b5fd Mon Sep 17 00:00:00 2001 From: jcass Date: Wed, 27 Jan 2016 07:21:12 +0200 Subject: [PATCH 083/120] Update changelog. Fixes #141. --- README.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/README.rst b/README.rst index 2772a603..97e11383 100644 --- a/README.rst +++ b/README.rst @@ -64,6 +64,7 @@ v2.0.1 (UNRELEASED) - Add application cache manifest file for quicker loads and to allow client devices to detect when local caches should be invalidated. - Fix vertical alignment of playback control buttons in footer. - Use standard Mopidy mixer methods to mute / un-mute playback. +- Added event handling for 'muteChanged' event. (Fixes: `#141 `_). v2.0.0 (26-3-2015) ------------------ From 833a9232847ac9465cb11a12a1fb7fa40b1d68d5 Mon Sep 17 00:00:00 2001 From: Stein Magnus Jodal Date: Wed, 27 Jan 2016 20:34:54 +0100 Subject: [PATCH 084/120] docs: Fix date format, add missing release dates --- README.rst | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/README.rst b/README.rst index 2772a603..34e8507a 100644 --- a/README.rst +++ b/README.rst @@ -55,6 +55,7 @@ Changelog v2.0.1 (UNRELEASED) ------------------- + - Added optional websocket_host and websocket_port config settings. - Fixed slow to start playing from a large tracklist of browsed tracks. - Added link to `Alarm Clock `_ (if present). @@ -65,8 +66,9 @@ v2.0.1 (UNRELEASED) - Fix vertical alignment of playback control buttons in footer. - Use standard Mopidy mixer methods to mute / un-mute playback. -v2.0.0 (26-3-2015) ------------------- +v2.0.0 (2015-03-26) +------------------- + - Pausing a stream will now actually stop it. - Fix keyboard shortcuts in some browsers. - Use relative path for script files to fix proxy support. @@ -77,8 +79,8 @@ v2.0.0 (26-3-2015) - Added popup tracks menu to the Browse interface. - Fixed wrong jQuery version on some pages. -v1.0.4 ------- +v1.0.4 (2014-11-24) +------------------- - Added AudioAddict icon - Bugfixes of course @@ -95,13 +97,13 @@ v1.0.2 - Youtube icons added - Bugfixes (search, popups, etc) -v1.0.1 (20-9-2014) ------------------- +v1.0.1 (2014-09-20) +------------------- -- Small fixes for Pypi distro +- Small fixes for PyPI distro -v1.0.0 (20-9-2014) ------------------- +v1.0.0 (2014-09-20) +------------------- - Compatible with Mopidy v0.19 - Made pip installable From 56b05fce528a4eb4543973200941cb90e547d1ea Mon Sep 17 00:00:00 2001 From: jcass Date: Thu, 28 Jan 2016 11:21:51 +0200 Subject: [PATCH 085/120] docs: Add links to issues referenced in README.rst. --- README.rst | 48 ++++++++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/README.rst b/README.rst index 34e8507a..a323c8d3 100644 --- a/README.rst +++ b/README.rst @@ -61,7 +61,7 @@ v2.0.1 (UNRELEASED) - Added link to `Alarm Clock `_ (if present). - Added ability to save Queue as local Playlist. - Added ability to manually initiate refresh of Playlists. -- Increase volume slider handle by 30% to make it easier to grab on mobile devices +- Increase volume slider handle by 30% to make it easier to grab on mobile devices. - Add application cache manifest file for quicker loads and to allow client devices to detect when local caches should be invalidated. - Fix vertical alignment of playback control buttons in footer. - Use standard Mopidy mixer methods to mute / un-mute playback. @@ -82,42 +82,42 @@ v2.0.0 (2015-03-26) v1.0.4 (2014-11-24) ------------------- -- Added AudioAddict icon -- Bugfixes of course +- Added AudioAddict icon. +- Bugfixes of course. v1.0.2 ------ -- A friendlier welcome with a home page with buttons to the most used functions -- Converted Radio Stations to Streams, so user can add streams for youtube, spotify, soundcloud, podcasts -- Enhanced radio/streams interface -- Search: select service to search -- Fixed single quote bug #39 -- Better handling of coverart -- Youtube icons added -- Bugfixes (search, popups, etc) +- A friendlier welcome with a home page with buttons to the most used functions. +- Converted Radio Stations to Streams, so user can add streams for youtube, spotify, soundcloud, podcasts. +- Enhanced radio/streams interface. +- Search: select service to search. +- Fixed single quote bug. (Fixes: `#39 `_). +- Better handling of coverart. +- Youtube icons added. +- Bugfixes (search, popups, etc.). v1.0.1 (2014-09-20) ------------------- -- Small fixes for PyPI distro +- Small fixes for PyPI distro. v1.0.0 (2014-09-20) ------------------- -- Compatible with Mopidy v0.19 -- Made pip installable -- A lot of fixes -- Works with mopidy-websettings extension +- Compatible with Mopidy v0.19. +- Made pip installable. +- A lot of fixes. +- Works with mopidy-websettings extension. v0.1.0 (2013-07-21) ------------------- -- Compatible with Mopidy 0.14+ -- More ways to add a song to the Queue (play next, add to bottom, etc) -- Better Queue popup -- Button to clear the Queue -- A bit more speed -- Local files show up in search -- Bugs fixed -- New instructions in the read me +- Compatible with Mopidy 0.14+. +- More ways to add a song to the Queue (play next, add to bottom, etc). +- Better Queue popup. +- Button to clear the Queue. +- A bit more speed. +- Local files show up in search. +- Bugs fixed. +- New instructions in the read me. From ebec7a16054c8b5c842edfa806b5add2d5d3c347 Mon Sep 17 00:00:00 2001 From: jcass Date: Thu, 28 Jan 2016 12:16:19 +0200 Subject: [PATCH 086/120] docs: Update changelog with all closed issues and merged PRs since release 2.0.0. --- README.rst | 45 ++++++++++++++++++++++++++++++++++++++------- 1 file changed, 38 insertions(+), 7 deletions(-) diff --git a/README.rst b/README.rst index a323c8d3..8e5c20f3 100644 --- a/README.rst +++ b/README.rst @@ -10,13 +10,17 @@ Mopidy-MusicBox-Webclient :target: https://pypi.python.org/pypi/Mopidy-MusicBox-Webclient/ :alt: Number of PyPI downloads -With Mopidy MusicBox Webclient, you can play your music on your computer (`Rapsberry Pi `_) and remotely control it using your computer, tablet or phone. +With Mopidy MusicBox Webclient, you can play your music on your computer (`Rapsberry Pi `_) +and remotely control it using your computer, tablet or phone. -This is a responsive webclient especially written for Mopidy, a music server. Responsive, so it works on desktop and mobile browsers. You can browse, search and play albums, artists, playlists, and it has cover art from Last.fm. +This is a responsive webclient especially written for Mopidy, a music server. Responsive, so it works on desktop and +mobile browsers. You can browse, search and play albums, artists, playlists, and it has cover art from Last.fm. -`Mopidy `_ is a music server which can play music from Spotify, Google Music, SoundCloud, etc or from your hard drive. +`Mopidy `_ is a music server which can play music from Spotify, Google Music, SoundCloud, etc. +or from your hard drive. -If you want to run Mopidy with this webclient on a Raspberry Pi, do yourself a favor and use my custom built SD-image: `Pi MusicBox `_. +If you want to run Mopidy with this webclient on a Raspberry Pi, do yourself a favor and use my custom built SD-image: +`Pi MusicBox `_. .. image:: https://github.com/pimusicbox/mopidy-musicbox-webclient/raw/master/screenshots/playlists_desktop.png @@ -39,7 +43,8 @@ Alternatively, clone the repository and run ``sudo python setup.py install`` fro Usage ===== -Point your (modern) browser at Mopidy-MusicBox-Webclient running on your Mopidy server e.g. http://localhost:6680/musicbox_webclient. +Point your (modern) browser at Mopidy-MusicBox-Webclient running on your Mopidy server e.g. +http://localhost:6680/musicbox_webclient. Project resources @@ -53,16 +58,42 @@ Project resources Changelog ========= -v2.0.1 (UNRELEASED) +v2.1.0 (UNRELEASED) ------------------- +- Ensure that only the currently playing track is highlighted in the queue. + (Fixes: `#81 `_). - Added optional websocket_host and websocket_port config settings. - Fixed slow to start playing from a large tracklist of browsed tracks. + (Fixes: `#85 `_). +- Clean up unused Javascript code. (Fixes: `#100 `_). - Added link to `Alarm Clock `_ (if present). - Added ability to save Queue as local Playlist. +- Mopidy 1.1.0 compatibility fixes. (Fixes: `#109 `_, + `#111 `_, + `#123 `_). +- Fix incorrect identification of user's Spotify starred playlist. + (Fixes:`#110 `_). +- Initiating track playback from a folder that contains subfolders now correctly identifies the tracks that should be + played. (Fixes: `#112 `_). +- Add support for ```static_dir``` configurations. + (Fixes: `#105 `_). - Added ability to manually initiate refresh of Playlists. + (Fixes: `#107 `_). +- Now updates the track name when the stream title changes. +- Adding search results to tracklist now works as expected. + (Fixes: `#49 `_ and + `#137 `_). +- Adding a browsed radio station to the tracklist now also starts playback of the station. + (Fixes: `#98 `_). +- Added ability to save playlists. (Fixes: `#106 `_ + and `#121 `_). +- Remove support for defunct Grooveshark service. + (Fixes: `#120 `_). +- Fix Javascript syntax errors. (Fixes: `#122 `_). - Increase volume slider handle by 30% to make it easier to grab on mobile devices. -- Add application cache manifest file for quicker loads and to allow client devices to detect when local caches should be invalidated. +- Add application cache manifest file for quicker loads and to allow client devices to detect when local caches should + be invalidated. - Fix vertical alignment of playback control buttons in footer. - Use standard Mopidy mixer methods to mute / un-mute playback. From a16d477068f9c5f02a5564db901a179ff0939459 Mon Sep 17 00:00:00 2001 From: jcass Date: Thu, 28 Jan 2016 12:24:11 +0200 Subject: [PATCH 087/120] docs: Split changelog into enhancement and fixes section. --- README.rst | 42 ++++++++++++++++++++++++------------------ 1 file changed, 24 insertions(+), 18 deletions(-) diff --git a/README.rst b/README.rst index 8e5c20f3..354de5b5 100644 --- a/README.rst +++ b/README.rst @@ -61,41 +61,47 @@ Changelog v2.1.0 (UNRELEASED) ------------------- +**Enhancements and improvements** + +- Added optional websocket_host and websocket_port config settings. +- Added link to `Alarm Clock `_ (if present). +- Added ability to save Queue as local Playlist. +- Add support for ```static_dir``` configurations. + (See: `#105 `_). +- Added ability to manually initiate refresh of Playlists. + (See: `#107 `_). +- Now updates the track name when the stream title changes. +- Adding a browsed radio station to the tracklist now also starts playback of the station. + (See: `#98 `_). +- Added ability to save playlists. (See: `#106 `_). +- Remove support for defunct Grooveshark service. + (See: `#120 `_). +- Increase volume slider handle by 30% to make it easier to grab on mobile devices. +- Add application cache manifest file for quicker loads and to allow client devices to detect when local caches should + be invalidated. +- Use standard Mopidy mixer methods to mute / un-mute playback. + +**Fixes** + - Ensure that only the currently playing track is highlighted in the queue. (Fixes: `#81 `_). -- Added optional websocket_host and websocket_port config settings. - Fixed slow to start playing from a large tracklist of browsed tracks. (Fixes: `#85 `_). - Clean up unused Javascript code. (Fixes: `#100 `_). -- Added link to `Alarm Clock `_ (if present). -- Added ability to save Queue as local Playlist. - Mopidy 1.1.0 compatibility fixes. (Fixes: `#109 `_, `#111 `_, + `#121 `_, and `#123 `_). - Fix incorrect identification of user's Spotify starred playlist. (Fixes:`#110 `_). - Initiating track playback from a folder that contains subfolders now correctly identifies the tracks that should be played. (Fixes: `#112 `_). -- Add support for ```static_dir``` configurations. - (Fixes: `#105 `_). -- Added ability to manually initiate refresh of Playlists. - (Fixes: `#107 `_). -- Now updates the track name when the stream title changes. - Adding search results to tracklist now works as expected. (Fixes: `#49 `_ and `#137 `_). -- Adding a browsed radio station to the tracklist now also starts playback of the station. - (Fixes: `#98 `_). -- Added ability to save playlists. (Fixes: `#106 `_ - and `#121 `_). -- Remove support for defunct Grooveshark service. - (Fixes: `#120 `_). - Fix Javascript syntax errors. (Fixes: `#122 `_). -- Increase volume slider handle by 30% to make it easier to grab on mobile devices. -- Add application cache manifest file for quicker loads and to allow client devices to detect when local caches should - be invalidated. - Fix vertical alignment of playback control buttons in footer. -- Use standard Mopidy mixer methods to mute / un-mute playback. + v2.0.0 (2015-03-26) ------------------- From 480ef74d3ea7c949b27562642269563f47724a1c Mon Sep 17 00:00:00 2001 From: jcass Date: Thu, 28 Jan 2016 12:31:08 +0200 Subject: [PATCH 088/120] docs: QA link references. --- README.rst | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/README.rst b/README.rst index 354de5b5..617b353f 100644 --- a/README.rst +++ b/README.rst @@ -67,15 +67,15 @@ v2.1.0 (UNRELEASED) - Added link to `Alarm Clock `_ (if present). - Added ability to save Queue as local Playlist. - Add support for ```static_dir``` configurations. - (See: `#105 `_). + (Addresses: `#105 `_). - Added ability to manually initiate refresh of Playlists. - (See: `#107 `_). + (Addresses: `#107 `_). - Now updates the track name when the stream title changes. - Adding a browsed radio station to the tracklist now also starts playback of the station. - (See: `#98 `_). -- Added ability to save playlists. (See: `#106 `_). + (Addresses: `#98 `_). +- Added ability to save playlists. (Addresses: `#106 `_). - Remove support for defunct Grooveshark service. - (See: `#120 `_). + (Addresses: `#120 `_). - Increase volume slider handle by 30% to make it easier to grab on mobile devices. - Add application cache manifest file for quicker loads and to allow client devices to detect when local caches should be invalidated. @@ -93,12 +93,12 @@ v2.1.0 (UNRELEASED) `#121 `_, and `#123 `_). - Fix incorrect identification of user's Spotify starred playlist. - (Fixes:`#110 `_). + (Fixes: `#110 `_). - Initiating track playback from a folder that contains subfolders now correctly identifies the tracks that should be played. (Fixes: `#112 `_). - Adding search results to tracklist now works as expected. (Fixes: `#49 `_ and - `#137 `_). + `#135 `_). - Fix Javascript syntax errors. (Fixes: `#122 `_). - Fix vertical alignment of playback control buttons in footer. From fd7c8ec8d3e891188eb773170e1b4f13c60908d3 Mon Sep 17 00:00:00 2001 From: jcass Date: Thu, 28 Jan 2016 12:36:53 +0200 Subject: [PATCH 089/120] docs: Fix markdown. --- README.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.rst b/README.rst index 617b353f..4c2bef40 100644 --- a/README.rst +++ b/README.rst @@ -63,10 +63,10 @@ v2.1.0 (UNRELEASED) **Enhancements and improvements** -- Added optional websocket_host and websocket_port config settings. +- Added optional ``websocket_host`` and ``websocket_port`` config settings. - Added link to `Alarm Clock `_ (if present). - Added ability to save Queue as local Playlist. -- Add support for ```static_dir``` configurations. +- Add support for ``static_dir`` configurations. (Addresses: `#105 `_). - Added ability to manually initiate refresh of Playlists. (Addresses: `#107 `_). From a6c151daa6bb24a6224169fb651eb593619e8b13 Mon Sep 17 00:00:00 2001 From: jcass Date: Thu, 28 Jan 2016 12:40:50 +0200 Subject: [PATCH 090/120] docs: Remove duplicated changelog entry. --- README.rst | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/README.rst b/README.rst index 4c2bef40..ebe969df 100644 --- a/README.rst +++ b/README.rst @@ -65,7 +65,7 @@ v2.1.0 (UNRELEASED) - Added optional ``websocket_host`` and ``websocket_port`` config settings. - Added link to `Alarm Clock `_ (if present). -- Added ability to save Queue as local Playlist. +- Added ability to save Queue as local Playlist. (Addresses: `#106 `_). - Add support for ``static_dir`` configurations. (Addresses: `#105 `_). - Added ability to manually initiate refresh of Playlists. @@ -73,7 +73,6 @@ v2.1.0 (UNRELEASED) - Now updates the track name when the stream title changes. - Adding a browsed radio station to the tracklist now also starts playback of the station. (Addresses: `#98 `_). -- Added ability to save playlists. (Addresses: `#106 `_). - Remove support for defunct Grooveshark service. (Addresses: `#120 `_). - Increase volume slider handle by 30% to make it easier to grab on mobile devices. From 54a10b97375a99fe564cea51472b58fc2a67a5dc Mon Sep 17 00:00:00 2001 From: jcass Date: Thu, 28 Jan 2016 16:59:01 +0200 Subject: [PATCH 091/120] fix: Remove grid so that more space is available for rendering the title text. Fixes #144. --- mopidy_musicbox_webclient/static/css/webclient.css | 1 - mopidy_musicbox_webclient/static/index.html | 7 +++---- mopidy_musicbox_webclient/static/mb.manifest | 2 +- 3 files changed, 4 insertions(+), 6 deletions(-) diff --git a/mopidy_musicbox_webclient/static/css/webclient.css b/mopidy_musicbox_webclient/static/css/webclient.css index 4fd23f53..c5724341 100644 --- a/mopidy_musicbox_webclient/static/css/webclient.css +++ b/mopidy_musicbox_webclient/static/css/webclient.css @@ -127,7 +127,6 @@ #contentHeadline a { color:white; - margin-left: 20%; } #headermenubtn{ diff --git a/mopidy_musicbox_webclient/static/index.html b/mopidy_musicbox_webclient/static/index.html index 27d3000b..9db6405b 100644 --- a/mopidy_musicbox_webclient/static/index.html +++ b/mopidy_musicbox_webclient/static/index.html @@ -56,7 +56,7 @@ - + @@ -223,11 +223,10 @@

      Artists

      -
    • ' + '' + '' + '' + - // '

      ' + name + '

      ' + '

      ' + name + '

      ' + '
    • '; return songLi; @@ -217,12 +210,10 @@ function renderQueueSongLi(song, liID, uri, tlid) { } else { name = song.name; } - // var iconClass = getMediaClass(liID.split('-')[1]); songLi = '
    • ' + '' + '' + '' + - // '

      ' + name + '

      ' + '

      ' + name + '

      ' + '
    • '; return songLi; @@ -310,7 +301,6 @@ function resultsToTables(results, target, uri) { '

      ' + newalbum[0].name + "

      "; } - /* '' + timeFromSeconds(newalbum[0].length / 1000) + ''; */ if (newalbum[0].artists) { for (j = 0; j < newalbum[0].artists.length; j++) { html += newalbum[0].artists[j].name; @@ -333,7 +323,6 @@ function resultsToTables(results, target, uri) { newtlids = []; } else { //newalbum length if (results[i].album.uri && results[i].album.name) { - // iconClass = getMediaClass(results[i].album.uri); iconClass = getMediaClass(newalbum[0].uri); html += '

    • '; html += ''; - //hERE! var liID = targetmin + '-' + newalbum[j].uri; if (target == CURRENT_PLAYLIST_TABLE) { @@ -362,9 +349,6 @@ function resultsToTables(results, target, uri) { } else { html += renderSongLi(newalbum[j], liID, uri); } - - //html += '
    • '; - //html += '

      ' + timeFromSeconds(newalbum[j].length / 1000) + '

      ' + newalbum[j].name + '

    • '; } newalbum = []; newtlids = []; @@ -383,7 +367,6 @@ function resultsToTables(results, target, uri) { $(target).attr('data', uri); //retreive albumcovers for (i = 0; i < coversList.length; i++) { - // console.log(coversList[i]); getCover(coversList[i][0], target + '-cover-' + coversList[i][1], 'small'); } } @@ -401,7 +384,6 @@ function playlisttotable(pl, target, uri) { child += '

      ' + pl[i].name + "

      "; child += '

      '; child += '' + timeFromSeconds(pl[i].length / 1000) + ''; - //   for (var j = 0; j < pl[i].artists.length; j++) { if (pl[i].artists[j]) { child += pl[i].artists[j].name; @@ -428,7 +410,7 @@ function getPlaylistTracks(uri) { return Mopidy.when(playlists[uri].tracks); } else { showLoading(true); - return mopidy.playlists.getItems(uri).then(function(refs) { + return mopidy.playlists.getItems({'uri': uri}).then(function(refs) { return processPlaylistItems({'uri':uri, 'items':refs}); }, console.error); } @@ -463,7 +445,6 @@ function timeFromSeconds(length) { return ((h > 0 ? h + ":" : "") + (m > 0 ? (h > 0 && m < 10 ? "0" : "") + m + ":" : "0:") + (s < 10 ? "0" : "") + s); } - /******* Toast ***/ function toast(message, delay, textOnly) { textOnl = textOnly || false; @@ -482,9 +463,9 @@ function toast(message, delay, textOnly) { } } -/***************** - * Modal dialogs - *****************/ +/****************** + * Modal dialogs * + ******************/ function showLoading(on) { if (on) { $("body").css("cursor", "progress"); @@ -515,7 +496,6 @@ function showOffline(on) { // from http://dzone.com/snippets/validate-url-regexp function validUri(str) { var regexp = /^(mms|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/ - // return regexp.test(str) || isServiceUri(str); return regexp.test(str); } diff --git a/mopidy_musicbox_webclient/static/js/gui.js b/mopidy_musicbox_webclient/static/js/gui.js index d016e41f..c195e96c 100644 --- a/mopidy_musicbox_webclient/static/js/gui.js +++ b/mopidy_musicbox_webclient/static/js/gui.js @@ -483,10 +483,11 @@ $(document).ready(function(event) { // Connect to server if (websocketUrl) { mopidy = new Mopidy({ - webSocketUrl: websocketUrl // wslocation is set in index.html from the extention config. + webSocketUrl: websocketUrl, // wslocation is set in index.html from the extention config. + callingConvention: "by-position-or-by-name" }); } else { - mopidy = new Mopidy(); + mopidy = new Mopidy({callingConvention: "by-position-or-by-name"}); } // mopidy.on(console.log.bind(console)); // Log all events // mopidy.on(console.error.bind(console)); diff --git a/mopidy_musicbox_webclient/static/js/images.js b/mopidy_musicbox_webclient/static/js/images.js index 2e28db72..5d89f242 100644 --- a/mopidy_musicbox_webclient/static/js/images.js +++ b/mopidy_musicbox_webclient/static/js/images.js @@ -2,14 +2,13 @@ * @author Wouter van Wijk */ -API_KEY= 'b6d34c3af91d62ab0ae00ab1b6fa8733'; +API_KEY = 'b6d34c3af91d62ab0ae00ab1b6fa8733'; API_SECRET = '2c631802c2285d5d5d1502462fe42a2b'; var fmcache; var lastfm; - -$(window).load(function() { +$(window).load(function () { // create a Cache object fmcache = new LastFMCache(); // create a LastFM object @@ -20,42 +19,40 @@ $(window).load(function() { }); }); - function getCover(album, images, size) { - var defUrl = 'images/default_cover.png'; - $(images).attr('src', defUrl); - if (!album) { - return; - } - var albumname = album.name || ''; - var artistname = ''; - if ( album.artists && (album.artists.length > 0) ) { - artistname = album.artists[0].name; - } -// console.log(album, images); - if (album.images && (album.images.length > 0) ) { - $(images).attr('src', album.images[0]); - } else { - lastfm.album.getInfo( {artist: artistname, album: albumname}, - { success: function(data){ - for (var i = 0; i < data.album.image.length; i++) { - if ( data.album.image[i]['size'] == size) { - $(images).attr('src', data.album.image[i]['#text'] || defUrl); - } + var defUrl = 'images/default_cover.png'; + $(images).attr('src', defUrl); + if (!album) { + return; + } + var albumname = album.name || ''; + var artistname = ''; + if ( album.artists && (album.artists.length > 0) ) { + artistname = album.artists[0].name; + } + if (album.images && (album.images.length > 0) ) { + $(images).attr('src', album.images[0]); + } else { + lastfm.album.getInfo( {artist: artistname, album: albumname}, + { success: function(data){ + for (var i = 0; i < data.album.image.length; i++) { + if ( data.album.image[i]['size'] == size) { + $(images).attr('src', data.album.image[i]['#text'] || defUrl); } } - }); + } + }); - } + } } function getArtistImage(nwartist, image, size) { - var defUrl = 'images/user_24x32.png'; - lastfm.artist.getInfo({artist: nwartist}, {success: function(data){ - for (var i = 0; i < data.artist.image.length; i++) { - if ( data.artist.image[i]['size'] == size) { - $(image).attr('src', data.artist.image[i]['#text'] || defUrl); - } + var defUrl = 'images/user_24x32.png'; + lastfm.artist.getInfo({artist: nwartist}, {success: function(data){ + for (var i = 0; i < data.artist.image.length; i++) { + if ( data.artist.image[i]['size'] == size) { + $(image).attr('src', data.artist.image[i]['#text'] || defUrl); } - }}); + } + }}); } \ No newline at end of file diff --git a/mopidy_musicbox_webclient/static/js/library.js b/mopidy_musicbox_webclient/static/js/library.js index 74b29d50..ca10756d 100644 --- a/mopidy_musicbox_webclient/static/js/library.js +++ b/mopidy_musicbox_webclient/static/js/library.js @@ -30,7 +30,7 @@ function initSearch() { $("#searchresults").hide(); if (searchService != 'all') { - mopidy.library.search({any:[value]}, [searchService + ':']).then(processSearchResults, console.error); + mopidy.library.search({'query': {any:[value]}, 'uris': [searchService + ':']}).then(processSearchResults, console.error); } else { mopidy.getUriSchemes().then(function (schemes) { var query = {}, @@ -48,7 +48,7 @@ function initSearch() { } else { query = {any: [value]}; } - mopidy.library.search(query, uris).then(processSearchResults, console.error); + mopidy.library.search({'query': query, 'uris': uris}).then(processSearchResults, console.error); }); } } @@ -79,15 +79,6 @@ function processSearchResults(resultArr) { var results = {'tracks': [], 'artists': [], 'albums': []}; var j, emptyResult = true; -/* for (var i = 0; i < resultArr.length; ++i) { - for (var prop in results) { - if (resultArr[i][prop] && resultArr[i][prop].length) { - results[prop] = results[prop].concat(resultArr[i][prop]); - emptyResult = false; - } - } - } -*/ for (var i = 0; i < resultArr.length; i++) { if (resultArr[i].tracks) { for (j = 0; j < resultArr[i].tracks.length; j++) { @@ -109,10 +100,6 @@ function processSearchResults(resultArr) { } } -// console.log(resultArr, results); - - - customTracklists[URI_SCHEME+':trackresultscache'] = results.tracks; if (emptyResult) { @@ -196,7 +183,6 @@ function processSearchResults(resultArr) { $('#expandsearch').show(); // Track results -// playlisttotable(results.tracks, SEARCH_TRACK_TABLE, URI_SCHEME+':trackresultscache'); resultsToTables(results.tracks, SEARCH_TRACK_TABLE, URI_SCHEME+':trackresultscache'); showLoading(false); @@ -225,7 +211,7 @@ function getBrowseDir(rootdir) { } else { browseStack.push(rootdir); } - mopidy.library.browse(rootdir).then(processBrowseDir, console.error); + mopidy.library.browse({'uri': rootdir}).then(processBrowseDir, console.error); } function getCurrentPlaylist() { @@ -261,7 +247,6 @@ function showTracklist(uri) { $(this).addClass('playlistactive'); } }); -// scrollToTracklist(); return false; } @@ -274,12 +259,11 @@ function showArtist(nwuri) { $('#popupTracks').popup('close'); $('#controlsmodal').popup('close'); $(ARTIST_TABLE).empty(); - //fill from cache -// var pl = getTracksFromUri(nwuri); + //TODO cache $('#h_artistname').html(''); showLoading(true); - mopidy.library.lookup(nwuri).then(function(resultArr) { + mopidy.library.lookup({'uris': [nwuri]}).then(function(resultArr) { resultArr.uri = nwuri; processArtistResults(resultArr); }, console.error); @@ -304,16 +288,15 @@ function showAlbum(uri) { $('#coverpopupalbumname').html(albumname); $('#coverpopupartist').html(artistname); showLoading(false); - mopidy.library.lookup(uri).then(function(resultArr) { + mopidy.library.lookup({'uris': [uri]}).then(function(resultArr) { resultArr.uri = uri; processAlbumResults(resultArr); }, console.error); -// getCover(pl, '#albumviewcover, #coverpopupimage', 'extralarge'); } else { showLoading(true); $('#h_albumname').html(''); $('#h_albumartist').html(''); - mopidy.library.lookup(uri).then(function(resultArr) { + mopidy.library.lookup({'uris': [uri]}).then(function(resultArr) { resultArr.uri = uri; processAlbumResults(resultArr); }, console.error); diff --git a/mopidy_musicbox_webclient/static/js/process_ws.js b/mopidy_musicbox_webclient/static/js/process_ws.js index 6b9509ae..e5bf7673 100644 --- a/mopidy_musicbox_webclient/static/js/process_ws.js +++ b/mopidy_musicbox_webclient/static/js/process_ws.js @@ -118,7 +118,7 @@ function processBrowseDir(resultArr) { iconClass = getMediaClass(resultArr[i].uri); if (resultArr[i].type == 'track') { //console.log(resultArr[i]); - mopidy.library.lookup(resultArr[i].uri).then(function (resultArr) { + mopidy.library.lookup({'uris': [resultArr[i].uri]}).then(function (resultArr) { popupData[resultArr[0].uri] = resultArr[0]; browseTracks.push(resultArr[0]); }, console.error); @@ -139,14 +139,6 @@ function processBrowseDir(resultArr) { $('#browselist').html(child); if (browseStack.length > 0 ) { -/* child = ''; - for (var i = 0; i < browseStack.length; i++) { - child += browseStack[i] + ' / '; - } - - child = getMediaHuman(browseStack[0]); - iconClass = getMediaClass(browseStack[0]); -*/ child = getMediaHuman(resultArr[0].uri); iconClass = getMediaClass(resultArr[0].uri); $('#browsepath').html(' ' + child); @@ -199,7 +191,7 @@ function processPlaylistItems(resultDict) { for (i = 0; i < resultDict.items.length; i++) { trackUris.push(resultDict.items[i].uri); } - return mopidy.library.lookup(null, trackUris).then(function(tracks) { + return mopidy.library.lookup({'uris': trackUris}).then(function(tracks) { // Transform from dict to list and cache result var newplaylisturi = resultDict.uri; playlists[newplaylisturi] = {'uri':newplaylisturi, 'tracks':[]}; diff --git a/mopidy_musicbox_webclient/static/js/streamuris.js b/mopidy_musicbox_webclient/static/js/streamuris.js index e30281bb..1713e63e 100644 --- a/mopidy_musicbox_webclient/static/js/streamuris.js +++ b/mopidy_musicbox_webclient/static/js/streamuris.js @@ -6,12 +6,12 @@ var streamUris = []; //fill with defaults - streamUris.push(['NPR 24', 'http://nprdmp.ic.llnwd.net/stream/nprdmp_live01_mp3']); - streamUris.push(['3FM Dutch', 'http://icecast.omroep.nl/3fm-bb-mp3']); - streamUris.push(['BBC WorldService', 'http://vprbbc.streamguys.net:8000/vprbbc24.mp3']); - streamUris.push(['Arrow Jazz', 'http://81.173.3.132:8082']); - streamUris.push(['Queen Live Aid at Wembley (YouTube)', 'yt:http://www.youtube.com/watch?v=eQsM6u0a038']); - streamUris.push(['Groove Salad - Soma FM', 'http://somafm.com/groovesalad.pls']); - streamUris.push(['Kiss FM Berlin', 'http://stream.kissfm.de/kissfm/mp3-128/internetradio/']); - streamUris.push(['Muse - Newborn (SoundCloud)', 'sc:https://soundcloud.com/muse/01-new-born']); - streamUris.push(['Pinguin Radio', 'http://pr320.pinguinradio.com/listen.pls']); \ No newline at end of file +streamUris.push(['NPR 24', 'http://nprdmp.ic.llnwd.net/stream/nprdmp_live01_mp3']); +streamUris.push(['3FM Dutch', 'http://icecast.omroep.nl/3fm-bb-mp3']); +streamUris.push(['BBC WorldService', 'http://vprbbc.streamguys.net:8000/vprbbc24.mp3']); +streamUris.push(['Arrow Jazz', 'http://81.173.3.132:8082']); +streamUris.push(['Queen Live Aid at Wembley (YouTube)', 'yt:http://www.youtube.com/watch?v=eQsM6u0a038']); +streamUris.push(['Groove Salad - Soma FM', 'http://somafm.com/groovesalad.pls']); +streamUris.push(['Kiss FM Berlin', 'http://stream.kissfm.de/kissfm/mp3-128/internetradio/']); +streamUris.push(['Muse - Newborn (SoundCloud)', 'sc:https://soundcloud.com/muse/01-new-born']); +streamUris.push(['Pinguin Radio', 'http://pr320.pinguinradio.com/listen.pls']); \ No newline at end of file From f5c36d4b20a48ffaa412ec4efddcb0e18d002230 Mon Sep 17 00:00:00 2001 From: jcass Date: Sat, 30 Jan 2016 13:56:04 +0200 Subject: [PATCH 098/120] fix:Update manifest file. --- mopidy_musicbox_webclient/static/mb.manifest | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mopidy_musicbox_webclient/static/mb.manifest b/mopidy_musicbox_webclient/static/mb.manifest index 86cbf702..9b0b2e05 100644 --- a/mopidy_musicbox_webclient/static/mb.manifest +++ b/mopidy_musicbox_webclient/static/mb.manifest @@ -1,6 +1,6 @@ CACHE MANIFEST -# 2016-01-28:v2 +# 2016-01-30:v1 NETWORK: * From 28a42f40ebbdf6c5eeba0a6fc8a0930f16bed3c5 Mon Sep 17 00:00:00 2001 From: jcass Date: Sat, 30 Jan 2016 15:08:17 +0200 Subject: [PATCH 099/120] fix:Javascript syntax errors. --- mopidy_musicbox_webclient/static/js/controls.js | 2 +- mopidy_musicbox_webclient/static/js/gui.js | 4 ++-- mopidy_musicbox_webclient/static/js/library.js | 3 +++ 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/mopidy_musicbox_webclient/static/js/controls.js b/mopidy_musicbox_webclient/static/js/controls.js index 973968fc..aa4af801 100644 --- a/mopidy_musicbox_webclient/static/js/controls.js +++ b/mopidy_musicbox_webclient/static/js/controls.js @@ -225,7 +225,7 @@ function saveQueue() { exists = exists || existing[i].uri.indexOf("m3u:") == 0 || existing[i].uri.indexOf("local:") == 0; } if (!exists || window.confirm("Overwrite existing playlist \"" + plname + "\"?")) { - mopidy.playlists.create({'name': plname, 'uri_scheme': "local").then(function(playlist) { + mopidy.playlists.create({'name': plname, 'uri_scheme': "local"}).then(function(playlist) { playlist.tracks = tracks; mopidy.playlists.save({'playlist': playlist}).then(); getPlaylists(); diff --git a/mopidy_musicbox_webclient/static/js/gui.js b/mopidy_musicbox_webclient/static/js/gui.js index c195e96c..55bf24e1 100644 --- a/mopidy_musicbox_webclient/static/js/gui.js +++ b/mopidy_musicbox_webclient/static/js/gui.js @@ -484,10 +484,10 @@ $(document).ready(function(event) { if (websocketUrl) { mopidy = new Mopidy({ webSocketUrl: websocketUrl, // wslocation is set in index.html from the extention config. - callingConvention: "by-position-or-by-name" + callingConvention: 'by-position-or-by-name' }); } else { - mopidy = new Mopidy({callingConvention: "by-position-or-by-name"}); + mopidy = new Mopidy({callingConvention: 'by-position-or-by-name'}); } // mopidy.on(console.log.bind(console)); // Log all events // mopidy.on(console.error.bind(console)); diff --git a/mopidy_musicbox_webclient/static/js/library.js b/mopidy_musicbox_webclient/static/js/library.js index ca10756d..78906c55 100644 --- a/mopidy_musicbox_webclient/static/js/library.js +++ b/mopidy_musicbox_webclient/static/js/library.js @@ -211,6 +211,9 @@ function getBrowseDir(rootdir) { } else { browseStack.push(rootdir); } + if (!rootdir) { + rootdir = null; + } mopidy.library.browse({'uri': rootdir}).then(processBrowseDir, console.error); } From 20818b29b2feb1814b1b5b3b992940480db1b5a1 Mon Sep 17 00:00:00 2001 From: jcass Date: Sat, 30 Jan 2016 15:34:10 +0200 Subject: [PATCH 100/120] fix:library.lookup calls. --- mopidy_musicbox_webclient/static/index.html | 4 +--- mopidy_musicbox_webclient/static/js/controls.js | 2 +- mopidy_musicbox_webclient/static/js/functionsvars.js | 2 +- mopidy_musicbox_webclient/static/js/images.js | 2 +- mopidy_musicbox_webclient/static/js/library.js | 6 +++--- mopidy_musicbox_webclient/static/js/process_ws.js | 2 +- 6 files changed, 8 insertions(+), 10 deletions(-) diff --git a/mopidy_musicbox_webclient/static/index.html b/mopidy_musicbox_webclient/static/index.html index 15ea9a10..b9376b2f 100644 --- a/mopidy_musicbox_webclient/static/index.html +++ b/mopidy_musicbox_webclient/static/index.html @@ -475,13 +475,11 @@

      Streams

      - - + - diff --git a/mopidy_musicbox_webclient/static/js/controls.js b/mopidy_musicbox_webclient/static/js/controls.js index aa4af801..195285ad 100644 --- a/mopidy_musicbox_webclient/static/js/controls.js +++ b/mopidy_musicbox_webclient/static/js/controls.js @@ -541,7 +541,7 @@ function getFavourites() { function addFavourite(uri, name) { var uri = uri || $('#streamuriinput').val().trim(); var name = name || $('#streamnameinput').val().trim(); - mopidy.library.lookup({'uris': [uri]}).then(function(results) { + mopidy.library.lookup({'uri': uri}).then(function(results) { var newTracks = results[uri]; if (newTracks.length == 1) { // TODO: Supporting adding an entire playlist? diff --git a/mopidy_musicbox_webclient/static/js/functionsvars.js b/mopidy_musicbox_webclient/static/js/functionsvars.js index 3ec154d7..2e3f55ee 100644 --- a/mopidy_musicbox_webclient/static/js/functionsvars.js +++ b/mopidy_musicbox_webclient/static/js/functionsvars.js @@ -411,7 +411,7 @@ function getPlaylistTracks(uri) { } else { showLoading(true); return mopidy.playlists.getItems({'uri': uri}).then(function(refs) { - return processPlaylistItems({'uri':uri, 'items':refs}); + return processPlaylistItems({'uri': uri, 'items': refs}); }, console.error); } } diff --git a/mopidy_musicbox_webclient/static/js/images.js b/mopidy_musicbox_webclient/static/js/images.js index 5d89f242..e1b205a4 100644 --- a/mopidy_musicbox_webclient/static/js/images.js +++ b/mopidy_musicbox_webclient/static/js/images.js @@ -8,7 +8,7 @@ API_SECRET = '2c631802c2285d5d5d1502462fe42a2b'; var fmcache; var lastfm; -$(window).load(function () { +$(window).load(function() { // create a Cache object fmcache = new LastFMCache(); // create a LastFM object diff --git a/mopidy_musicbox_webclient/static/js/library.js b/mopidy_musicbox_webclient/static/js/library.js index 78906c55..1ca0e9a9 100644 --- a/mopidy_musicbox_webclient/static/js/library.js +++ b/mopidy_musicbox_webclient/static/js/library.js @@ -266,7 +266,7 @@ function showArtist(nwuri) { //TODO cache $('#h_artistname').html(''); showLoading(true); - mopidy.library.lookup({'uris': [nwuri]}).then(function(resultArr) { + mopidy.library.lookup({'uri': nwuri}).then(function(resultArr) { resultArr.uri = nwuri; processArtistResults(resultArr); }, console.error); @@ -291,7 +291,7 @@ function showAlbum(uri) { $('#coverpopupalbumname').html(albumname); $('#coverpopupartist').html(artistname); showLoading(false); - mopidy.library.lookup({'uris': [uri]}).then(function(resultArr) { + mopidy.library.lookup({'uri': uri}).then(function(resultArr) { resultArr.uri = uri; processAlbumResults(resultArr); }, console.error); @@ -299,7 +299,7 @@ function showAlbum(uri) { showLoading(true); $('#h_albumname').html(''); $('#h_albumartist').html(''); - mopidy.library.lookup({'uris': [uri]}).then(function(resultArr) { + mopidy.library.lookup({'uri': uri}).then(function(resultArr) { resultArr.uri = uri; processAlbumResults(resultArr); }, console.error); diff --git a/mopidy_musicbox_webclient/static/js/process_ws.js b/mopidy_musicbox_webclient/static/js/process_ws.js index e5bf7673..eb86f139 100644 --- a/mopidy_musicbox_webclient/static/js/process_ws.js +++ b/mopidy_musicbox_webclient/static/js/process_ws.js @@ -118,7 +118,7 @@ function processBrowseDir(resultArr) { iconClass = getMediaClass(resultArr[i].uri); if (resultArr[i].type == 'track') { //console.log(resultArr[i]); - mopidy.library.lookup({'uris': [resultArr[i].uri]}).then(function (resultArr) { + mopidy.library.lookup({'uri': resultArr[i].uri}).then(function (resultArr) { popupData[resultArr[0].uri] = resultArr[0]; browseTracks.push(resultArr[0]); }, console.error); From 19aa4e3cf1ae952f0f612291fea7793df26261dd Mon Sep 17 00:00:00 2001 From: jcass Date: Sun, 31 Jan 2016 06:24:49 +0200 Subject: [PATCH 101/120] fix:Fix misspelled 'heigth' attributes and incorrect assignment operator. Reformat file, remove old commented-out sections. --- .../static/css/webclient.css | 139 ++++++++---------- 1 file changed, 62 insertions(+), 77 deletions(-) diff --git a/mopidy_musicbox_webclient/static/css/webclient.css b/mopidy_musicbox_webclient/static/css/webclient.css index 7a3c2c12..43d61ded 100644 --- a/mopidy_musicbox_webclient/static/css/webclient.css +++ b/mopidy_musicbox_webclient/static/css/webclient.css @@ -18,52 +18,58 @@ .header-breakpoint.ui-grid-b .ui-block-a { width: 30%; } + .header-breakpoint.ui-grid-b .ui-block-b { width: 30%; } + .header-breakpoint.ui-grid-b .ui-block-c { width: 30.1%; } + /*playlists*/ .pl-breakpoint.ui-grid-a .ui-block-a { width: 32.95%; } + .pl-breakpoint.ui-grid-a .ui-block-b { width: 65.4%; } + .pl-breakpoint.ui-grid-a .ui-block-a { clear: left; } + .pl-breakpoint.ui-grid-a .ui-block-a { clear: left; } + #playlisttracksdiv { margin-left: 10px; } + #playlisttracksback { display:none; } + #playlisttracksdiv { display:block; } + #playlistslistdiv { display:block; } + /*search*/ .srch-breakpoint.ui-grid-a .ui-block-b { margin-left: .5em; } + .srch-breakpoint.ui-grid-a .ui-block-a, .srch-breakpoint.ui-grid-a .ui-block-b { width: 49%; } -/* .scroll { - overflow-y: auto; - overflow-x: hidden; - } -*/ } - /* phone landscape */ @media all and (max-width: 960px) { /*header*/ @@ -71,45 +77,50 @@ width: 35%; clear: left; } + .header-breakpoint.ui-grid-b .ui-block-b { display: none; } + .header-breakpoint.ui-grid-b .ui-block-c { width: 33%; } + /*playlists*/ .pl-breakpoint .ui-block-a, .pl-breakpoint .ui-block-b { width: 100%; } + /*search*/ .srch-breakpoint.ui-grid-a .ui-block-a, .srch-breakpoint.ui-grid-a .ui-block-b { width: 100%; } -/* .scroll { - width: 100%; - heigth: 99%; - } -*/ + #playlisttracksback { display:block; } + #playlisttracksdiv { display:none; } + #playlistslistdiv { display:block; } + } -/*********** - * Side Panel and Navigation - */ +/***************************** + * Side Panel and Navigation * + *****************************/ .mainNav .fa{ float: right; } + .mainNav .navtxt{ float: left; } + .mainNav .navtxt:after{ clear: left; } @@ -137,9 +148,9 @@ font-size: 15px; } -/*********************** - * Track Slider - ***********************/ +/****************** + * Track Slider * + ******************/ #trackslider { display: inline; @@ -180,9 +191,9 @@ display: inline; } -/*********** - * pages, content - */ +/******************** + * Pages, content * + ********************/ #page{ background-color: #fff; } @@ -195,16 +206,13 @@ display: none; } - - #artistviewimage, #albumviewcover { float: right; - heigth: 90px; + height: 90px; max-width: 90%; } /*** home ***/ - #homerows div { text-align:center; background-color: #2C3E50; @@ -217,9 +225,9 @@ #homerows div i { font-size: 28px; } -/********************* - * listviews - ********************/ +/*************** + * listviews * + ***************/ .table li a { color: #555 !important; font-size: 80% !important; @@ -241,22 +249,7 @@ list-style-type:none; } -/*.table li:first-child { */ - /*-moz-border-radius-topleft: 2px;*/ - /*-moz-border-radius-topright: 2px;*/ - /*-webkit-border-top-left-radius: 2px;*/ - /*-webkit-border-top-right-radius: 2px;*/ - /*border-top-right-radius: 2px;*/ - /*border-top-left-radius: 2px;*/ -/*}*/ - .table li:last-child { - /*-moz-border-radius-bottomleft: 2px;*/ - /*-moz-border-radius-bottomright: 2px;*/ - /*-webkit-border-bottom-left-radius: 2px;*/ - /*-webkit-border-bottom-right-radius: 2px;*/ - /*border-bottom-left-radius: 2px;*/ - /*border-bottom-right-radius: 2px;*/ border-bottom: 1px solid #CECECE; } @@ -265,12 +258,12 @@ } .albumdivider { - background-color: #ddd !important; + background-color: #ddd !important; } .smalldivider { font-size: 25% !important; - heigth: 5px !important; + height: 5px !important; background-color: #ddd !important; } @@ -281,7 +274,6 @@ #playlistslist, #playlisttracks { margin: 0 !important; padding: 0 !important; -/* border: 1px solid blue; */ } .albumli { @@ -295,7 +287,7 @@ .artistcover { float: right; width: 30px; - heigth: 30px; + height: 30px; margin-right: 3px; margin-top: 3px; } @@ -327,9 +319,9 @@ } -/******************* - * Now Playing area - *******************/ +/********************** + * Now Playing area * + **********************/ #nowPlayingFooter{ height: 50px; @@ -346,7 +338,7 @@ .footerControls div span { padding-left: 3px; padding-right: 3px; - height=100%; + height: 100%; vertical-align: middle; } @@ -356,10 +348,9 @@ margin-right: 10px; } - -/******************* - * Popups - *******************/ +/************ + * Popups * + ************/ #modalalbum a, #modalartist a { color: #444; text-decoration: none; @@ -407,14 +398,12 @@ .ui-input-clear-hidden { display:block !important; } - -/*************** - * common use - ***************/ +/**************** + * Common use * + ****************/ #playlistspane { -/* height: 90% !important;*/ margin: 0px !important; } @@ -448,7 +437,7 @@ a { float: right; } /********************** - * Song information + * Song information * **********************/ .ui-footer{ border: 0px; @@ -464,7 +453,7 @@ a { #infoname { overflow: hidden; white-space: nowrap; - font: bold; + font-weight: bold; font-size: 14px; } @@ -503,9 +492,7 @@ a { text-align: center; } - /*helper*/ - .hidden{ display: none; } @@ -513,7 +500,6 @@ a { color: #efefef; } - .settingscoll label { font-size: 120%; font-weight: bold; @@ -528,12 +514,14 @@ a { .ui-responsive-panel.ui-page-panel-open .ui-panel-content-wrap-open.ui-panel-content-wrap-display-reveal { margin-right: 17em; } + .ui-responsive-panel.ui-page-panel-open .ui-panel-content-fixed-toolbar-open.ui-panel-content-wrap-display-push.ui-panel-content-fixed-toolbar-position-right, .ui-responsive-panel.ui-page-panel-open .ui-panel-content-fixed-toolbar-open.ui-panel-content-wrap-display-reveal.ui-panel-content-fixed-toolbar-position-right, .ui-responsive-panel.ui-page-panel-open .ui-panel-content-wrap-open.ui-panel-content-wrap-display-push.ui-panel-content-wrap-position-right, .ui-responsive-panel.ui-page-panel-open .ui-panel-content-wrap-open.ui-panel-content-wrap-display-reveal.ui-panel-content-wrap-position-right { margin: 0 0 0 17em; } + .ui-responsive-panel .ui-panel-dismiss-display-reveal { display: none; } @@ -543,29 +531,34 @@ a { #nowPlayingpane{ padding: 15px 25px 0px 25px; } + #nowPlayingpane #controlspopupimage{ max-width:90%; max-height:90%; } + .nowPlaying-artistInfo { font-size: 12px; } + .nowPlaying-artistInfo h4{ margin: 0px; font-weight: normal; font-size: 12px; } + .nowPlaying-artistInfo h3{ margin: 0px 0px 3px 00px; white-space: nowrap; overflow: hidden; - } + #controlspopupimage{ max-width:90%; max-height:90%; margin-bottom: 3px; } + #nowPlayingpane #slidercontainer { margin-left: -5px; margin-right: -5px; @@ -579,7 +572,6 @@ a { } /* disable text selection for mouse swipe */ - body * { -webkit-user-select: none; -moz-user-select: none; @@ -587,23 +579,16 @@ body * { -o-user-select: none; user-select: none; } + /* but fix for text input (safari certainly needs it)*/ input[type=text] { - -moz-user-select: text; - -webkit-user-select: text; + -webkit-user-select: text; + -moz-user-select: text; + -ms-user-select: text; -o-user-select: text; user-select: text; } -/* type/source of media in listviews */ -/*a[id^="spotify"] { - margin-left:20px; - background-image: url('../images/icons/play_alt_12x12.png'); - border: 2px solid black; - display:block; -} -*/ - .mediaicon { float: right; } \ No newline at end of file From 02112b8d6157f9149865d82a9dfdf15545f422d5 Mon Sep 17 00:00:00 2001 From: jcass Date: Sun, 31 Jan 2016 06:26:43 +0200 Subject: [PATCH 102/120] docs:Reformat section headers, remove old commented-out code sections. --- .../static/js/controls.js | 68 ++++++++----------- 1 file changed, 29 insertions(+), 39 deletions(-) diff --git a/mopidy_musicbox_webclient/static/js/controls.js b/mopidy_musicbox_webclient/static/js/controls.js index a2a6b4a8..8f7f0f4a 100644 --- a/mopidy_musicbox_webclient/static/js/controls.js +++ b/mopidy_musicbox_webclient/static/js/controls.js @@ -1,6 +1,6 @@ -/******************************************************** - * play tracks from a browse list - *********************************************************/ +/*********************************** + * play tracks from a browse list * + ***********************************/ function playBrowsedTracks(action, trackIndex) { $('#popupBrowse').popup('close'); toast('Loading...'); @@ -54,10 +54,9 @@ function playBrowsedTracks(action, trackIndex) { return false; } - -/******************************************************** - * play an uri from a tracklist - *********************************************************/ +/********************************* + * play an uri from a tracklist * + *********************************/ function playTrack(action) { var hash = document.location.hash.split('?'); var divid = hash[0].substr(1); @@ -165,7 +164,6 @@ function playTrackByUri(track_uri, playlist_uri) { * @returns {boolean} */ function playTrackQueueByTlid(uri, tlid) { - // console.log('playquuri'); //stop directly, for user feedback mopidy.playback.stop(); $('#popupQueue').popup('close'); @@ -191,15 +189,14 @@ function playTrackQueueByTlid(uri, tlid) { * @returns {boolean} */ function playTrackQueue() { - // console.log('playqu'); uri = $('#popupQueue').data("track"); tlid = $('#popupQueue').data("tlid"); return playTrackQueueByTlid(uri, tlid); } -/******************************************************** - * remove a track from the queue - *********************************************************/ +/*********************************** + * remove a track from the queue * + ***********************************/ function removeTrack() { $('#popupQueue').popup('close'); toast('Deleting...'); @@ -241,15 +238,14 @@ function saveQueue() { return false; } - function refreshPlaylists() { mopidy.playlists.refresh(); return false; } -/********************** - * Buttons - */ +/************* + * Buttons * + *************/ function doShuffle() { mopidy.playback.stop(); @@ -303,10 +299,9 @@ function backbt() { return false; } -/*************** - * Options - ***************/ - +/************* + * Options * + *************/ function setTracklistOption(name, new_value) { if (!new_value) { $("#"+name+"bt").attr('style', 'color:#2489ce'); @@ -357,11 +352,10 @@ function doSingle() { } -/********************* - * Track Slider - * Use a timer to prevent looping of commands - *********************/ - +/*********************************************** + * Track Slider * + * Use a timer to prevent looping of commands * + ***********************************************/ function doSeekPos(value) { var val = $("#trackslider").val(); newposition = Math.round(val); @@ -377,10 +371,7 @@ function doSeekPos(value) { function triggerPos() { if (mopidy) { posChanging = true; - // mopidy.playback.pause(); - // console.log(newposition); mopidy.playback.seek(newposition); - // mopidy.playback.resume(); resumePosTimer(); posChanging = false; } @@ -402,10 +393,10 @@ function setPosition(pos) { $("#songelapsed").html(timeFromSeconds(currentposition / 1000)); } -/******************** - * Volume slider - * Use a timer to prevent looping of commands - */ +/*********************************************** + * Volume slider * + * Use a timer to prevent looping of commands * + ***********************************************/ function setVolume(value) { if ($("#volumeslider").val() != value) { @@ -439,15 +430,14 @@ function doMute() { mopidy.mixer.setMute(!mute); } -/******* - * Track position timer - */ +/************************** + * Track position timer * + **************************/ //timer function to update interface function updatePosTimer() { currentposition += TRACK_TIMER; setPosition(currentposition); - // $("#songelapsed").html(timeFromSeconds(currentposition / 1000)); } function resumePosTimer() { @@ -467,9 +457,9 @@ function pausePosTimer() { clearInterval(posTimer); } -/********************************* - * Stream - *********************************/ +/************ + * Stream * + ************/ function streamPressed(key) { if (key == 13) { playStreamUri(); From d0704e967a02fb8f0ed52d6817bf5e33685895d1 Mon Sep 17 00:00:00 2001 From: jcass Date: Sun, 31 Jan 2016 06:34:30 +0200 Subject: [PATCH 103/120] docs:Reformat section headers, remove old commented-out code sections. Fix indentation. --- mopidy_musicbox_webclient/static/index.html | 3 - .../static/js/functionsvars.js | 28 ++------- mopidy_musicbox_webclient/static/js/gui.js | 38 +++++------ mopidy_musicbox_webclient/static/js/images.js | 63 +++++++++---------- .../static/js/library.js | 19 +----- .../static/js/process_ws.js | 8 --- .../static/js/streamuris.js | 18 +++--- 7 files changed, 60 insertions(+), 117 deletions(-) diff --git a/mopidy_musicbox_webclient/static/index.html b/mopidy_musicbox_webclient/static/index.html index 6e1ecf45..29a78779 100644 --- a/mopidy_musicbox_webclient/static/index.html +++ b/mopidy_musicbox_webclient/static/index.html @@ -4,7 +4,6 @@ - - - diff --git a/mopidy_musicbox_webclient/static/js/functionsvars.js b/mopidy_musicbox_webclient/static/js/functionsvars.js index 490cbf20..e9aec4fb 100644 --- a/mopidy_musicbox_webclient/static/js/functionsvars.js +++ b/mopidy_musicbox_webclient/static/js/functionsvars.js @@ -28,7 +28,7 @@ var songlength = 0; var artistshtml = ''; var artiststext = ''; var songname = ''; -var songdata = {'track':{}, 'tlid':-1}; +var songdata = {'track': {}, 'tlid': -1}; var newposition = 0; var playlisttracksScroll; @@ -53,7 +53,6 @@ var ua = navigator.userAgent, //constants PROGRAM_NAME = 'MusicBox'; -//PROGRAM_NAME = 'Mopidy'; ARTIST_TABLE = '#artiststable'; ALBUM_TABLE = '#albumstable'; PLAYLIST_TABLE = '#playlisttracks'; @@ -127,10 +126,6 @@ function scrollToTop() { } function scrollToTracklist() { - /* if (isMobileWebkit) { - playlistslistScroll.refresh(); - } -*/ var divtop = $("#playlisttracksdiv").offset().top - 120; $('body,html').animate({ scrollTop: divtop @@ -198,12 +193,10 @@ function renderSongLi(song, liID, uri) { } else { name = song.name; } - // var iconClass = getMediaClass(liID.split('-')[1]); songLi = '
    • ' + '' + '' + '' + - // '

      ' + name + '

      ' + '

      ' + name + '

      ' + '
    • '; return songLi; @@ -217,12 +210,10 @@ function renderQueueSongLi(song, liID, uri, tlid) { } else { name = song.name; } - // var iconClass = getMediaClass(liID.split('-')[1]); songLi = '
    • ' + '' + '' + '' + - // '

      ' + name + '

      ' + '

      ' + name + '

      ' + '
    • '; return songLi; @@ -310,7 +301,6 @@ function resultsToTables(results, target, uri) { '

      ' + newalbum[0].name + "

      "; } - /* '' + timeFromSeconds(newalbum[0].length / 1000) + ''; */ if (newalbum[0].artists) { for (j = 0; j < newalbum[0].artists.length; j++) { html += newalbum[0].artists[j].name; @@ -333,7 +323,6 @@ function resultsToTables(results, target, uri) { newtlids = []; } else { //newalbum length if (results[i].album.uri && results[i].album.name) { - // iconClass = getMediaClass(results[i].album.uri); iconClass = getMediaClass(newalbum[0].uri); html += '

    • '; html += ''; - //hERE! var liID = targetmin + '-' + newalbum[j].uri; if (target == CURRENT_PLAYLIST_TABLE) { @@ -362,9 +349,6 @@ function resultsToTables(results, target, uri) { } else { html += renderSongLi(newalbum[j], liID, uri); } - - //html += '
    • '; - //html += '

      ' + timeFromSeconds(newalbum[j].length / 1000) + '

      ' + newalbum[j].name + '

    • '; } newalbum = []; newtlids = []; @@ -383,7 +367,6 @@ function resultsToTables(results, target, uri) { $(target).attr('data', uri); //retreive albumcovers for (i = 0; i < coversList.length; i++) { - // console.log(coversList[i]); getCover(coversList[i][0], target + '-cover-' + coversList[i][1], 'small'); } } @@ -401,7 +384,6 @@ function playlisttotable(pl, target, uri) { child += '

      ' + pl[i].name + "

      "; child += '

      '; child += '' + timeFromSeconds(pl[i].length / 1000) + ''; - //   for (var j = 0; j < pl[i].artists.length; j++) { if (pl[i].artists[j]) { child += pl[i].artists[j].name; @@ -463,7 +445,6 @@ function timeFromSeconds(length) { return ((h > 0 ? h + ":" : "") + (m > 0 ? (h > 0 && m < 10 ? "0" : "") + m + ":" : "0:") + (s < 10 ? "0" : "") + s); } - /******* Toast ***/ function toast(message, delay, textOnly) { textOnl = textOnly || false; @@ -482,9 +463,9 @@ function toast(message, delay, textOnly) { } } -/***************** - * Modal dialogs - *****************/ +/****************** + * Modal dialogs * + ******************/ function showLoading(on) { if (on) { $("body").css("cursor", "progress"); @@ -515,7 +496,6 @@ function showOffline(on) { // from http://dzone.com/snippets/validate-url-regexp function validUri(str) { var regexp = /^(mms|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/ - // return regexp.test(str) || isServiceUri(str); return regexp.test(str); } diff --git a/mopidy_musicbox_webclient/static/js/gui.js b/mopidy_musicbox_webclient/static/js/gui.js index d016e41f..cfa4781d 100644 --- a/mopidy_musicbox_webclient/static/js/gui.js +++ b/mopidy_musicbox_webclient/static/js/gui.js @@ -4,7 +4,7 @@ * show- functions do both */ /******************** - * Song Info Sreen + * Song Info Sreen * ********************/ function resetSong() { if (!posChanging) { @@ -148,9 +148,9 @@ function setSongInfo(data) { resizeMb(); } -/*************** - * display popups - */ +/****************** + * display popups * + ******************/ function closePopups() { $('#popupTracks').popup('close'); $('#artistpopup').popup('close'); @@ -159,7 +159,6 @@ function closePopups() { $('#controlspopup').popup('close'); } - function popupTracks(e, listuri, trackuri, tlid) { if (!e) var e = window.event; @@ -222,9 +221,9 @@ function showAlbumPopup(popupId) { showAlbum(popupData[uri].album.uri); } -/********************* - * initialize sockets - *********************/ +/********************** + * initialize sockets * + **********************/ function initSocketevents() { mopidy.on("state:online", function() { @@ -254,7 +253,6 @@ function initSocketevents() { }); mopidy.on("event:trackPlaybackPaused", function(data) { - //setSongInfo(data.tl_track); pausePosTimer(); setPlayState(false); }); @@ -305,9 +303,9 @@ $(document).bind("pageinit", function() { }); -/************************ - * gui stuff - ************************/ +/************** + * gui stuff * + **************/ function enterFullscreen() { if (isMobileSafari) { alert ("To get this app in Full Screen, you have to add it to your home-screen using the Share button."); exit(); } var elem = document.querySelector("#page"); @@ -324,6 +322,7 @@ function enterFullscreen() { } } } + function exitFullscreen() { document.webkitExitFullscreen(); document.mozCancelFullscreen(); @@ -349,7 +348,6 @@ function switchContent(divid, uri) { if (uri) { hash += "?" + uri; } - // $.mobile.changePage("#" + hash); location.hash = "#" + hash; } @@ -364,7 +362,6 @@ function setHeadline(site){ //update timer function updateStatusTimer() { -// console.log('statustimer'); mopidy.playback.getCurrentTlTrack().then(processCurrenttrack, console.error); mopidy.playback.getTimePosition().then(processCurrentposition, console.error); //TODO check offline? @@ -447,7 +444,6 @@ function locationHashChanged() { break; } - //switch the footer switch(divid) { case 'nowPlaying': @@ -463,9 +459,9 @@ function locationHashChanged() { return false; } -/********************** - * initialize software - **********************/ +/*********************** + * initialize software * + ***********************/ $(document).ready(function(event) { //check for websockets if (!window.WebSocket) { @@ -488,8 +484,7 @@ $(document).ready(function(event) { } else { mopidy = new Mopidy(); } -// mopidy.on(console.log.bind(console)); // Log all events -// mopidy.on(console.error.bind(console)); + //initialize events initSocketevents(); @@ -499,7 +494,6 @@ $(document).ready(function(event) { switchContent("home"); } - initgui = false; window.onhashchange = locationHashChanged; @@ -585,7 +579,6 @@ $(document).ready(function(event) { $.event.special.swipe.horizontalDistanceThreshold = 125; // (default: 30px) Swipe horizontal displacement must be more than this. $.event.special.swipe.verticalDistanceThreshold = 50; // (default: 75px) Swipe vertical displacement must be less than this. -// $.event.special.swipe.scrollSupressionThreshold = 20; $.event.special.swipe.durationThreshold = 500; // swipe songinfo and panel @@ -624,6 +617,7 @@ function updatePlayIcons (uri, tlid) { $(this).removeClass("currenttrack2"); } }); + $('#trackresulttable li').each(function() { if (this.id == 'trackresulttable-' + uri) { $(this).addClass('currenttrack2'); diff --git a/mopidy_musicbox_webclient/static/js/images.js b/mopidy_musicbox_webclient/static/js/images.js index 2e28db72..5d89f242 100644 --- a/mopidy_musicbox_webclient/static/js/images.js +++ b/mopidy_musicbox_webclient/static/js/images.js @@ -2,14 +2,13 @@ * @author Wouter van Wijk */ -API_KEY= 'b6d34c3af91d62ab0ae00ab1b6fa8733'; +API_KEY = 'b6d34c3af91d62ab0ae00ab1b6fa8733'; API_SECRET = '2c631802c2285d5d5d1502462fe42a2b'; var fmcache; var lastfm; - -$(window).load(function() { +$(window).load(function () { // create a Cache object fmcache = new LastFMCache(); // create a LastFM object @@ -20,42 +19,40 @@ $(window).load(function() { }); }); - function getCover(album, images, size) { - var defUrl = 'images/default_cover.png'; - $(images).attr('src', defUrl); - if (!album) { - return; - } - var albumname = album.name || ''; - var artistname = ''; - if ( album.artists && (album.artists.length > 0) ) { - artistname = album.artists[0].name; - } -// console.log(album, images); - if (album.images && (album.images.length > 0) ) { - $(images).attr('src', album.images[0]); - } else { - lastfm.album.getInfo( {artist: artistname, album: albumname}, - { success: function(data){ - for (var i = 0; i < data.album.image.length; i++) { - if ( data.album.image[i]['size'] == size) { - $(images).attr('src', data.album.image[i]['#text'] || defUrl); - } + var defUrl = 'images/default_cover.png'; + $(images).attr('src', defUrl); + if (!album) { + return; + } + var albumname = album.name || ''; + var artistname = ''; + if ( album.artists && (album.artists.length > 0) ) { + artistname = album.artists[0].name; + } + if (album.images && (album.images.length > 0) ) { + $(images).attr('src', album.images[0]); + } else { + lastfm.album.getInfo( {artist: artistname, album: albumname}, + { success: function(data){ + for (var i = 0; i < data.album.image.length; i++) { + if ( data.album.image[i]['size'] == size) { + $(images).attr('src', data.album.image[i]['#text'] || defUrl); } } - }); + } + }); - } + } } function getArtistImage(nwartist, image, size) { - var defUrl = 'images/user_24x32.png'; - lastfm.artist.getInfo({artist: nwartist}, {success: function(data){ - for (var i = 0; i < data.artist.image.length; i++) { - if ( data.artist.image[i]['size'] == size) { - $(image).attr('src', data.artist.image[i]['#text'] || defUrl); - } + var defUrl = 'images/user_24x32.png'; + lastfm.artist.getInfo({artist: nwartist}, {success: function(data){ + for (var i = 0; i < data.artist.image.length; i++) { + if ( data.artist.image[i]['size'] == size) { + $(image).attr('src', data.artist.image[i]['#text'] || defUrl); } - }}); + } + }}); } \ No newline at end of file diff --git a/mopidy_musicbox_webclient/static/js/library.js b/mopidy_musicbox_webclient/static/js/library.js index 74b29d50..ba3acfb3 100644 --- a/mopidy_musicbox_webclient/static/js/library.js +++ b/mopidy_musicbox_webclient/static/js/library.js @@ -79,15 +79,6 @@ function processSearchResults(resultArr) { var results = {'tracks': [], 'artists': [], 'albums': []}; var j, emptyResult = true; -/* for (var i = 0; i < resultArr.length; ++i) { - for (var prop in results) { - if (resultArr[i][prop] && resultArr[i][prop].length) { - results[prop] = results[prop].concat(resultArr[i][prop]); - emptyResult = false; - } - } - } -*/ for (var i = 0; i < resultArr.length; i++) { if (resultArr[i].tracks) { for (j = 0; j < resultArr[i].tracks.length; j++) { @@ -109,10 +100,6 @@ function processSearchResults(resultArr) { } } -// console.log(resultArr, results); - - - customTracklists[URI_SCHEME+':trackresultscache'] = results.tracks; if (emptyResult) { @@ -196,7 +183,6 @@ function processSearchResults(resultArr) { $('#expandsearch').show(); // Track results -// playlisttotable(results.tracks, SEARCH_TRACK_TABLE, URI_SCHEME+':trackresultscache'); resultsToTables(results.tracks, SEARCH_TRACK_TABLE, URI_SCHEME+':trackresultscache'); showLoading(false); @@ -261,7 +247,6 @@ function showTracklist(uri) { $(this).addClass('playlistactive'); } }); -// scrollToTracklist(); return false; } @@ -274,8 +259,7 @@ function showArtist(nwuri) { $('#popupTracks').popup('close'); $('#controlsmodal').popup('close'); $(ARTIST_TABLE).empty(); - //fill from cache -// var pl = getTracksFromUri(nwuri); + //TODO cache $('#h_artistname').html(''); showLoading(true); @@ -308,7 +292,6 @@ function showAlbum(uri) { resultArr.uri = uri; processAlbumResults(resultArr); }, console.error); -// getCover(pl, '#albumviewcover, #coverpopupimage', 'extralarge'); } else { showLoading(true); $('#h_albumname').html(''); diff --git a/mopidy_musicbox_webclient/static/js/process_ws.js b/mopidy_musicbox_webclient/static/js/process_ws.js index 6b9509ae..caaaf82d 100644 --- a/mopidy_musicbox_webclient/static/js/process_ws.js +++ b/mopidy_musicbox_webclient/static/js/process_ws.js @@ -139,14 +139,6 @@ function processBrowseDir(resultArr) { $('#browselist').html(child); if (browseStack.length > 0 ) { -/* child = ''; - for (var i = 0; i < browseStack.length; i++) { - child += browseStack[i] + ' / '; - } - - child = getMediaHuman(browseStack[0]); - iconClass = getMediaClass(browseStack[0]); -*/ child = getMediaHuman(resultArr[0].uri); iconClass = getMediaClass(resultArr[0].uri); $('#browsepath').html(' ' + child); diff --git a/mopidy_musicbox_webclient/static/js/streamuris.js b/mopidy_musicbox_webclient/static/js/streamuris.js index e30281bb..1713e63e 100644 --- a/mopidy_musicbox_webclient/static/js/streamuris.js +++ b/mopidy_musicbox_webclient/static/js/streamuris.js @@ -6,12 +6,12 @@ var streamUris = []; //fill with defaults - streamUris.push(['NPR 24', 'http://nprdmp.ic.llnwd.net/stream/nprdmp_live01_mp3']); - streamUris.push(['3FM Dutch', 'http://icecast.omroep.nl/3fm-bb-mp3']); - streamUris.push(['BBC WorldService', 'http://vprbbc.streamguys.net:8000/vprbbc24.mp3']); - streamUris.push(['Arrow Jazz', 'http://81.173.3.132:8082']); - streamUris.push(['Queen Live Aid at Wembley (YouTube)', 'yt:http://www.youtube.com/watch?v=eQsM6u0a038']); - streamUris.push(['Groove Salad - Soma FM', 'http://somafm.com/groovesalad.pls']); - streamUris.push(['Kiss FM Berlin', 'http://stream.kissfm.de/kissfm/mp3-128/internetradio/']); - streamUris.push(['Muse - Newborn (SoundCloud)', 'sc:https://soundcloud.com/muse/01-new-born']); - streamUris.push(['Pinguin Radio', 'http://pr320.pinguinradio.com/listen.pls']); \ No newline at end of file +streamUris.push(['NPR 24', 'http://nprdmp.ic.llnwd.net/stream/nprdmp_live01_mp3']); +streamUris.push(['3FM Dutch', 'http://icecast.omroep.nl/3fm-bb-mp3']); +streamUris.push(['BBC WorldService', 'http://vprbbc.streamguys.net:8000/vprbbc24.mp3']); +streamUris.push(['Arrow Jazz', 'http://81.173.3.132:8082']); +streamUris.push(['Queen Live Aid at Wembley (YouTube)', 'yt:http://www.youtube.com/watch?v=eQsM6u0a038']); +streamUris.push(['Groove Salad - Soma FM', 'http://somafm.com/groovesalad.pls']); +streamUris.push(['Kiss FM Berlin', 'http://stream.kissfm.de/kissfm/mp3-128/internetradio/']); +streamUris.push(['Muse - Newborn (SoundCloud)', 'sc:https://soundcloud.com/muse/01-new-born']); +streamUris.push(['Pinguin Radio', 'http://pr320.pinguinradio.com/listen.pls']); \ No newline at end of file From a81a3ac1d84205e1ee90eff7d7fdd07879a42601 Mon Sep 17 00:00:00 2001 From: jcass Date: Sun, 31 Jan 2016 08:17:56 +0200 Subject: [PATCH 104/120] fix:Replace calls containing deprecated 'uri' parameter of core.LibraryController.lookup(). --- mopidy_musicbox_webclient/static/js/controls.js | 2 +- mopidy_musicbox_webclient/static/js/library.js | 9 ++++++--- mopidy_musicbox_webclient/static/js/process_ws.js | 7 ++++--- mopidy_musicbox_webclient/static/mb.manifest | 2 +- 4 files changed, 12 insertions(+), 8 deletions(-) diff --git a/mopidy_musicbox_webclient/static/js/controls.js b/mopidy_musicbox_webclient/static/js/controls.js index 195285ad..aa4af801 100644 --- a/mopidy_musicbox_webclient/static/js/controls.js +++ b/mopidy_musicbox_webclient/static/js/controls.js @@ -541,7 +541,7 @@ function getFavourites() { function addFavourite(uri, name) { var uri = uri || $('#streamuriinput').val().trim(); var name = name || $('#streamnameinput').val().trim(); - mopidy.library.lookup({'uri': uri}).then(function(results) { + mopidy.library.lookup({'uris': [uri]}).then(function(results) { var newTracks = results[uri]; if (newTracks.length == 1) { // TODO: Supporting adding an entire playlist? diff --git a/mopidy_musicbox_webclient/static/js/library.js b/mopidy_musicbox_webclient/static/js/library.js index 1ca0e9a9..f399ba4a 100644 --- a/mopidy_musicbox_webclient/static/js/library.js +++ b/mopidy_musicbox_webclient/static/js/library.js @@ -266,7 +266,8 @@ function showArtist(nwuri) { //TODO cache $('#h_artistname').html(''); showLoading(true); - mopidy.library.lookup({'uri': nwuri}).then(function(resultArr) { + mopidy.library.lookup({'uris': [nwuri]}).then(function(resultDict) { + var resultArr = resultDict[Object.keys(resultDict)[0]]; resultArr.uri = nwuri; processArtistResults(resultArr); }, console.error); @@ -291,7 +292,8 @@ function showAlbum(uri) { $('#coverpopupalbumname').html(albumname); $('#coverpopupartist').html(artistname); showLoading(false); - mopidy.library.lookup({'uri': uri}).then(function(resultArr) { + mopidy.library.lookup({'uris': [uri]}).then(function(resultDict) { + var resultArr = resultDict[Object.keys(resultDict)[0]]; resultArr.uri = uri; processAlbumResults(resultArr); }, console.error); @@ -299,7 +301,8 @@ function showAlbum(uri) { showLoading(true); $('#h_albumname').html(''); $('#h_albumartist').html(''); - mopidy.library.lookup({'uri': uri}).then(function(resultArr) { + mopidy.library.lookup({'uris': [uri]}).then(function(resultDict) { + var resultArr = resultDict[Object.keys(resultDict)[0]]; resultArr.uri = uri; processAlbumResults(resultArr); }, console.error); diff --git a/mopidy_musicbox_webclient/static/js/process_ws.js b/mopidy_musicbox_webclient/static/js/process_ws.js index eb86f139..2479df22 100644 --- a/mopidy_musicbox_webclient/static/js/process_ws.js +++ b/mopidy_musicbox_webclient/static/js/process_ws.js @@ -118,9 +118,10 @@ function processBrowseDir(resultArr) { iconClass = getMediaClass(resultArr[i].uri); if (resultArr[i].type == 'track') { //console.log(resultArr[i]); - mopidy.library.lookup({'uri': resultArr[i].uri}).then(function (resultArr) { - popupData[resultArr[0].uri] = resultArr[0]; - browseTracks.push(resultArr[0]); + mopidy.library.lookup({'uris': [resultArr[i].uri]}).then(function (resultDict) { + var uri = Object.keys(resultDict)[0]; + popupData[uri] = resultDict[uri][0]; + browseTracks.push(resultDict[uri][0]); }, console.error); child += '

    • ' + '' + diff --git a/mopidy_musicbox_webclient/static/mb.manifest b/mopidy_musicbox_webclient/static/mb.manifest index 9b0b2e05..3ea6ab15 100644 --- a/mopidy_musicbox_webclient/static/mb.manifest +++ b/mopidy_musicbox_webclient/static/mb.manifest @@ -1,6 +1,6 @@ CACHE MANIFEST -# 2016-01-30:v1 +# 2016-01-31:v1 NETWORK: * From 4ec547a66ac24561fb1e58f9f9b4f76a031ccf08 Mon Sep 17 00:00:00 2001 From: jcass Date: Sun, 31 Jan 2016 17:34:45 +0200 Subject: [PATCH 105/120] Refactor URI lookup routines. --- mopidy_musicbox_webclient/static/js/library.js | 6 +++--- mopidy_musicbox_webclient/static/js/process_ws.js | 10 +++++----- mopidy_musicbox_webclient/static/mb.manifest | 2 +- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/mopidy_musicbox_webclient/static/js/library.js b/mopidy_musicbox_webclient/static/js/library.js index f399ba4a..4ff0caf6 100644 --- a/mopidy_musicbox_webclient/static/js/library.js +++ b/mopidy_musicbox_webclient/static/js/library.js @@ -267,7 +267,7 @@ function showArtist(nwuri) { $('#h_artistname').html(''); showLoading(true); mopidy.library.lookup({'uris': [nwuri]}).then(function(resultDict) { - var resultArr = resultDict[Object.keys(resultDict)[0]]; + var resultArr = resultDict[nwuri]; resultArr.uri = nwuri; processArtistResults(resultArr); }, console.error); @@ -293,7 +293,7 @@ function showAlbum(uri) { $('#coverpopupartist').html(artistname); showLoading(false); mopidy.library.lookup({'uris': [uri]}).then(function(resultDict) { - var resultArr = resultDict[Object.keys(resultDict)[0]]; + var resultArr = resultDict[uri]; resultArr.uri = uri; processAlbumResults(resultArr); }, console.error); @@ -302,7 +302,7 @@ function showAlbum(uri) { $('#h_albumname').html(''); $('#h_albumartist').html(''); mopidy.library.lookup({'uris': [uri]}).then(function(resultDict) { - var resultArr = resultDict[Object.keys(resultDict)[0]]; + var resultArr = resultDict[uri]; resultArr.uri = uri; processAlbumResults(resultArr); }, console.error); diff --git a/mopidy_musicbox_webclient/static/js/process_ws.js b/mopidy_musicbox_webclient/static/js/process_ws.js index 2479df22..ef6ec6a7 100644 --- a/mopidy_musicbox_webclient/static/js/process_ws.js +++ b/mopidy_musicbox_webclient/static/js/process_ws.js @@ -119,9 +119,9 @@ function processBrowseDir(resultArr) { if (resultArr[i].type == 'track') { //console.log(resultArr[i]); mopidy.library.lookup({'uris': [resultArr[i].uri]}).then(function (resultDict) { - var uri = Object.keys(resultDict)[0]; - popupData[uri] = resultDict[uri][0]; - browseTracks.push(resultDict[uri][0]); + var lookup_uri = Object.keys(resultDict)[0]; + popupData[lookup_uri] = resultDict[lookup_uri][0]; + browseTracks.push(resultDict[lookup_uri][0]); }, console.error); child += '
    • ' + '' + @@ -140,8 +140,8 @@ function processBrowseDir(resultArr) { $('#browselist').html(child); if (browseStack.length > 0 ) { - child = getMediaHuman(resultArr[0].uri); - iconClass = getMediaClass(resultArr[0].uri); + child = getMediaHuman(uri); + iconClass = getMediaClass(uri); $('#browsepath').html(' ' + child); } else { $('#browsepath').html(''); diff --git a/mopidy_musicbox_webclient/static/mb.manifest b/mopidy_musicbox_webclient/static/mb.manifest index 3ea6ab15..eac72d0f 100644 --- a/mopidy_musicbox_webclient/static/mb.manifest +++ b/mopidy_musicbox_webclient/static/mb.manifest @@ -1,6 +1,6 @@ CACHE MANIFEST -# 2016-01-31:v1 +# 2016-01-31:v2 NETWORK: * From ee928f584141e3e72eb632d649cb090ffef2a4e0 Mon Sep 17 00:00:00 2001 From: jcass Date: Sun, 31 Jan 2016 17:54:47 +0200 Subject: [PATCH 106/120] Refactor volume slider handle attributes. Move to custom CSS file instead of hard coding change in vendor-provided library. --- .../static/css/jquery.mobile.flatui.css | 6 +++--- .../static/css/jquery.mobile.flatui.min.css | 2 +- mopidy_musicbox_webclient/static/css/webclient.css | 6 ++++++ mopidy_musicbox_webclient/static/mb.manifest | 2 +- 4 files changed, 11 insertions(+), 5 deletions(-) diff --git a/mopidy_musicbox_webclient/static/css/jquery.mobile.flatui.css b/mopidy_musicbox_webclient/static/css/jquery.mobile.flatui.css index fa099444..b13fc489 100644 --- a/mopidy_musicbox_webclient/static/css/jquery.mobile.flatui.css +++ b/mopidy_musicbox_webclient/static/css/jquery.mobile.flatui.css @@ -2451,9 +2451,9 @@ input.ui-input-text.ui-slider-input { outline: 0; } .ui-slider-track.ui-mini .ui-slider-handle { - height: 22px; - width: 22px; - margin: -12px 0 0 -12px; + height: 14px; + width: 14px; + margin: -8px 0 0 -7px; } .ui-slider-handle .ui-btn-inner { padding: 0; diff --git a/mopidy_musicbox_webclient/static/css/jquery.mobile.flatui.min.css b/mopidy_musicbox_webclient/static/css/jquery.mobile.flatui.min.css index 88cd241c..f359221a 100644 --- a/mopidy_musicbox_webclient/static/css/jquery.mobile.flatui.min.css +++ b/mopidy_musicbox_webclient/static/css/jquery.mobile.flatui.min.css @@ -1 +1 @@ -@font-face{font-family:Lato;font-style:normal;font-weight:400;src:local('Lato Regular'),local('Lato-Regular'),url(fonts/lato-regular.woff) format('woff'),url(fonts/lato-regular.ttf) format('truetype')}@font-face{font-family:Lato;font-style:normal;font-weight:700;src:local('Lato Bold'),local('Lato-Bold'),url(fonts/lato-bold.woff) format('woff'),url(fonts/lato-bold.ttf) format('truetype')}@font-face{font-family:Lato;font-style:normal;font-weight:900;src:local('Lato Black'),local('Lato-Black'),url(fonts/lato-black.woff) format('woff'),url(fonts/lato-black.ttf) format('truetype')}@font-face{font-family:Lato;font-style:italic;font-weight:400;src:local('Lato Italic'),local('Lato-Italic'),url(fonts/lato-italic.woff) format('woff'),url(fonts/lato-italic.ttf) format('truetype')}@font-face{font-family:Flat-UI-Icons-24;font-weight:400;font-style:normal;src:url(fonts/Flat-UI-Icons-24.woff) format("woff"),url(fonts/Flat-UI-Icons-24.ttf) format('truetype')}.ui-icon-flat-video:before,.ui-icon-flat-time:before,.ui-icon-flat-settings:before,.ui-icon-flat-plus:before,.ui-icon-flat-new:before,.ui-icon-flat-menu:before,.ui-icon-flat-man:before,.ui-icon-flat-mail:before,.ui-icon-flat-lock:before,.ui-icon-flat-location:before,.ui-icon-flat-heart:before,.ui-icon-flat-eye:before,.ui-icon-flat-cross:before,.ui-icon-flat-cmd:before,.ui-icon-flat-checkround:before,.ui-icon-flat-checkmark:before,.ui-icon-flat-calendar:before,.ui-icon-flat-bubble:before,.ui-icon-flat-volume:before,.ui-icon-flat-camera:before{font-family:Flat-UI-Icons-24;speak:none;font-style:normal;font-weight:400;line-height:18px;-webkit-font-smoothing:antialiased}.ui-icon-flat-video:before{content:"\e000"}.ui-icon-flat-time:before{content:"\e001"}.ui-icon-flat-settings:before{content:"\e002"}.ui-icon-flat-plus:before{content:"\e003"}.ui-icon-flat-new:before{content:"\e005"}.ui-icon-flat-menu:before{content:"\e006"}.ui-icon-flat-man:before{content:"\e007"}.ui-icon-flat-mail:before{content:"\e008"}.ui-icon-flat-lock:before{content:"\e009"}.ui-icon-flat-location:before{content:"\e00a"}.ui-icon-flat-heart:before{content:"\e00b"}.ui-icon-flat-eye:before{content:"\e00c"}.ui-icon-flat-cross:before{content:"\e00d"}.ui-icon-flat-cmd:before{content:"\e00e"}.ui-icon-flat-checkround:before{content:"\e00f"}.ui-icon-flat-checkmark:before{content:"\e010"}.ui-icon-flat-calendar:before{content:"\e011"}.ui-icon-flat-bubble:before{content:"\e012"}.ui-icon-flat-volume:before{content:"\e013"}.ui-icon-flat-camera:before{content:"\e004"}.ui-bar-a{border:1px solid #2c3e50;background:#2c3e50;color:#fff;font-weight:700;font-family:Lato,sans-serif}.ui-bar-a .ui-link-inherit{color:#3e3e3e}.ui-bar-a a.ui-link{color:#7cc4e7;font-weight:700}.ui-bar-a a.ui-link:visited{color:#2489ce}.ui-bar-a a.ui-link:hover{color:#2489ce}.ui-bar-a a.ui-link:active{color:#2489ce}.ui-bar-a input,.ui-bar-a select,.ui-bar-a textarea,.ui-bar-a button{font-family:Lato,sans-serif}.ui-body-a,.ui-overlay-a{border:2px solid #2c3e50;color:#34495e;background:#2c3e50;background-image:none}.ui-body-a{font-family:Lato,sans-serif}.ui-body-a input,.ui-body-a select,.ui-body-a textarea,.ui-body-a button{font-family:Lato,sans-serif}.ui-body-a .ui-link-inherit{color:#333}.ui-body-a .ui-link{color:#2c3e50;font-weight:700}.ui-body-a .ui-link:visited,.ui-body-a .ui-link:hover,.ui-body-a .ui-link:active{color:#4e6d8d}.ui-body-a.ui-input-text{border:2px solid #eee}.ui-body-a.ui-input-text.ui-focus{border:2px solid #4e6d8d;-webkit-transition:border linear .2s;-moz-transition:border linear .2s;-o-transition:border linear .2s;transition:border linear .2s}.ui-btn-up-a{border:1px solid #2c3e50;background:#2c3e50;font-weight:700;color:#fff}.ui-btn-up-a:visited,.ui-btn-up-a a.ui-link-inherit{color:#fff}.ui-btn-hover-a{border:1px solid #4e6d8d;background:#4e6d8d;font-weight:700;color:#fff}.ui-btn-hover-a:visited,.ui-btn-hover-a:hover,.ui-btn-hover-a a.ui-link-inherit{color:#fff}.ui-btn-down-a{border:1px solid #4e6d8d;background:#4e6d8d;font-weight:700;color:#fff}.ui-btn-down-a:visited,.ui-btn-down-a:hover,.ui-btn-down-a a.ui-link-inherit{color:#fff}.ui-btn-up-a,.ui-btn-hover-a,.ui-btn-down-a{font-family:Lato,sans-serif;text-decoration:none}.ui-bar-a .ui-btn-up-a,.ui-bar-a .ui-btn-down-a,.ui-bar-a .ui-btn-hover-a{background-color:#2c3e50;border:1px solid #2c3e50}.ui-bar-b{border:1px solid #16a085;background:#16a085;color:#fff;font-weight:700;font-family:Lato,sans-serif}.ui-bar-b .ui-link-inherit{color:#3e3e3e}.ui-bar-b a.ui-link{color:#7cc4e7;font-weight:700}.ui-bar-b a.ui-link:visited{color:#2489ce}.ui-bar-b a.ui-link:hover{color:#2489ce}.ui-bar-b a.ui-link:active{color:#2489ce}.ui-bar-b input,.ui-bar-b select,.ui-bar-b textarea,.ui-bar-b button{font-family:Lato,sans-serif}.ui-body-b,.ui-overlay-b{border:2px solid #16a085;color:#34495e;background:#fff;background-image:none}.ui-body-b{font-family:Lato,sans-serif}.ui-body-b input,.ui-body-b select,.ui-body-b textarea,.ui-body-b button{font-family:Lato,sans-serif}.ui-body-b .ui-link-inherit{color:#333}.ui-body-b .ui-link{color:#16a085;font-weight:700}.ui-body-b .ui-link:visited,.ui-body-b .ui-link:hover,.ui-body-b .ui-link:active{color:#1abc9c}.ui-body-b.ui-input-text{border:2px solid #eee}.ui-body-b.ui-input-text.ui-focus{border:2px solid #1abc9c;-webkit-transition:border linear .2s;-moz-transition:border linear .2s;-o-transition:border linear .2s;transition:border linear .2s}.ui-btn-up-b{border:1px solid #16a085;background:#16a085;font-weight:700;color:#fff}.ui-btn-up-b:visited,.ui-btn-up-b a.ui-link-inherit{color:#fff}.ui-btn-hover-b{border:1px solid #1abc9c;background:#1abc9c;font-weight:700;color:#fff}.ui-btn-hover-b:visited,.ui-btn-hover-b:hover,.ui-btn-hover-b a.ui-link-inherit{color:#fff}.ui-btn-down-b{border:1px solid #1abc9c;background:#1abc9c;font-weight:700;color:#fff}.ui-btn-down-b:visited,.ui-btn-down-b:hover,.ui-btn-down-b a.ui-link-inherit{color:#fff}.ui-btn-up-b,.ui-btn-hover-b,.ui-btn-down-b{font-family:Lato,sans-serif;text-decoration:none}.ui-bar-b .ui-btn-up-a,.ui-bar-b .ui-btn-down-a,.ui-bar-b .ui-btn-hover-a{background-color:#16a085;border:1px solid #16a085}.ui-bar-c{border:1px solid #f2f2f2;background:#f2f2f2;color:#000;font-weight:700;font-family:Lato,sans-serif}.ui-bar-c .ui-link-inherit{color:#3e3e3e}.ui-bar-c a.ui-link{color:#7cc4e7;font-weight:700}.ui-bar-c a.ui-link:visited{color:#2489ce}.ui-bar-c a.ui-link:hover{color:#2489ce}.ui-bar-c a.ui-link:active{color:#2489ce}.ui-bar-c input,.ui-bar-c select,.ui-bar-c textarea,.ui-bar-c button{font-family:Lato,sans-serif}.ui-body-c,.ui-overlay-c{border:2px solid #f2f2f2;color:#34495e;background:#fff;background-image:none}.ui-body-c{font-family:Lato,sans-serif}.ui-body-c input,.ui-body-c select,.ui-body-c textarea,.ui-body-c button{font-family:Lato,sans-serif}.ui-body-c .ui-link-inherit{color:#333}.ui-body-c .ui-link{color:#2c3e50;font-weight:700}.ui-body-c .ui-link:visited,.ui-body-c .ui-link:hover,.ui-body-c .ui-link:active{color:#eee}.ui-body-c.ui-input-text{border:2px solid #eee}.ui-body-c.ui-input-text.ui-focus{border:2px solid #eee;-webkit-transition:border linear .2s;-moz-transition:border linear .2s;-o-transition:border linear .2s;transition:border linear .2s}.ui-btn-up-c{border:1px solid #f2f2f2;background:#f2f2f2;font-weight:700;color:#000}.ui-btn-up-c:visited,.ui-btn-up-c a.ui-link-inherit{color:#000}.ui-btn-hover-c{border:1px solid #eee;background:#eee;font-weight:700;color:#000}.ui-btn-hover-c:visited,.ui-btn-hover-c:hover,.ui-btn-hover-c a.ui-link-inherit{color:#000}.ui-btn-down-c{border:1px solid #eee;background:#eee;font-weight:700;color:#000}.ui-btn-down-c:visited,.ui-btn-down-c:hover,.ui-btn-down-c a.ui-link-inherit{color:#000}.ui-btn-up-c,.ui-btn-hover-c,.ui-btn-down-c{font-family:Lato,sans-serif;text-decoration:none}.ui-bar-c .ui-btn-up-a,.ui-bar-c .ui-btn-down-a,.ui-bar-c .ui-btn-hover-a{background-color:#f2f2f2;border:1px solid #f2f2f2}.ui-bar-d{border:1px solid #c1392b;background:#c1392b;color:#fff;font-weight:700;font-family:Lato,sans-serif}.ui-bar-d .ui-link-inherit{color:#3e3e3e}.ui-bar-d a.ui-link{color:#7cc4e7;font-weight:700}.ui-bar-d a.ui-link:visited{color:#2489ce}.ui-bar-d a.ui-link:hover{color:#2489ce}.ui-bar-d a.ui-link:active{color:#2489ce}.ui-bar-d input,.ui-bar-d select,.ui-bar-d textarea,.ui-bar-d button{font-family:Lato,sans-serif}.ui-body-d,.ui-overlay-d{border:2px solid #c1392b;color:#34495e;background:#fff;background-image:none}.ui-body-d{font-family:Lato,sans-serif}.ui-body-d input,.ui-body-d select,.ui-body-d textarea,.ui-body-d button{font-family:Lato,sans-serif}.ui-body-d .ui-link-inherit{color:#333}.ui-body-d .ui-link{color:#c0392b;font-weight:700}.ui-body-d .ui-link:visited,.ui-body-d .ui-link:hover,.ui-body-d .ui-link:active{color:#e84c3d}.ui-body-d.ui-input-text{border:2px solid #eee}.ui-body-d.ui-input-text.ui-focus{border:2px solid #e84c3d;-webkit-transition:border linear .2s;-moz-transition:border linear .2s;-o-transition:border linear .2s;transition:border linear .2s}.ui-btn-up-d{border:1px solid #c1392b;background:#c1392b;font-weight:700;color:#fff}.ui-btn-up-d:visited,.ui-btn-up-d a.ui-link-inherit{color:#fff}.ui-btn-hover-d{border:1px solid #e84c3d;background:#e84c3d;font-weight:700;color:#fff}.ui-btn-hover-d:visited,.ui-btn-hover-d:hover,.ui-btn-hover-d a.ui-link-inherit{color:#fff}.ui-btn-down-d{border:1px solid #e84c3d;background:#e84c3d;font-weight:700;color:#fff}.ui-btn-down-d:visited,.ui-btn-down-d:hover,.ui-btn-down-d a.ui-link-inherit{color:#fff}.ui-btn-up-d,.ui-btn-hover-d,.ui-btn-down-d{font-family:Lato,sans-serif;text-decoration:none}.ui-bar-d .ui-btn-up-a,.ui-bar-d .ui-btn-down-a,.ui-bar-d .ui-btn-hover-a{background-color:#c1392b;border:1px solid #c1392b}.ui-bar-e{border:1px solid #f1c40f;background:#f1c40f;color:#fff;font-weight:700;font-family:Lato,sans-serif}.ui-bar-e .ui-link-inherit{color:#3e3e3e}.ui-bar-e a.ui-link{color:#7cc4e7;font-weight:700}.ui-bar-e a.ui-link:visited{color:#2489ce}.ui-bar-e a.ui-link:hover{color:#2489ce}.ui-bar-e a.ui-link:active{color:#2489ce}.ui-bar-e input,.ui-bar-e select,.ui-bar-e textarea,.ui-bar-e button{font-family:Lato,sans-serif}.ui-body-e,.ui-overlay-e{border:2px solid #f1c40f;color:#34495e;background:#fff;background-image:none}.ui-body-e{font-family:Lato,sans-serif}.ui-body-e input,.ui-body-e select,.ui-body-e textarea,.ui-body-e button{font-family:Lato,sans-serif}.ui-body-e .ui-link-inherit{color:#333}.ui-body-e .ui-link{color:#f1c40f;font-weight:700}.ui-body-e .ui-link:visited,.ui-body-e .ui-link:hover,.ui-body-e .ui-link:active{color:#f4d03f}.ui-body-e.ui-input-text{border:2px solid #eee}.ui-body-e.ui-input-text.ui-focus{border:2px solid #f4d03f;-webkit-transition:border linear .2s;-moz-transition:border linear .2s;-o-transition:border linear .2s;transition:border linear .2s}.ui-btn-up-e{border:1px solid #f1c40f;background:#f1c40f;font-weight:700;color:#fff}.ui-btn-up-e:visited,.ui-btn-up-e a.ui-link-inherit{color:#fff}.ui-btn-hover-e{border:1px solid #f4d03f;background:#f4d03f;font-weight:700;color:#fff}.ui-btn-hover-e:visited,.ui-btn-hover-e:hover,.ui-btn-hover-e a.ui-link-inherit{color:#fff}.ui-btn-down-e{border:1px solid #f4d03f;background:#f4d03f;font-weight:700;color:#fff}.ui-btn-down-e:visited,.ui-btn-down-e:hover,.ui-btn-down-e a.ui-link-inherit{color:#fff}.ui-btn-up-e,.ui-btn-hover-e,.ui-btn-down-e{font-family:Lato,sans-serif;text-decoration:none}.ui-bar-e .ui-btn-up-a,.ui-bar-e .ui-btn-down-a,.ui-bar-e .ui-btn-hover-a{background-color:#f1c40f;border:1px solid #f1c40f}.ui-bar-f{border:1px solid #3498db;background:#3498db;color:#fff;font-weight:700;font-family:Lato,sans-serif}.ui-bar-f .ui-link-inherit{color:#3e3e3e}.ui-bar-f a.ui-link{color:#7cc4e7;font-weight:700}.ui-bar-f a.ui-link:visited{color:#2489ce}.ui-bar-f a.ui-link:hover{color:#2489ce}.ui-bar-f a.ui-link:active{color:#2489ce}.ui-bar-f input,.ui-bar-f select,.ui-bar-f textarea,.ui-bar-f button{font-family:Lato,sans-serif}.ui-body-f,.ui-overlay-f{border:2px solid #3498db;color:#34495e;background:#fff;background-image:none}.ui-body-f{font-family:Lato,sans-serif}.ui-body-f input,.ui-body-f select,.ui-body-f textarea,.ui-body-f button{font-family:Lato,sans-serif}.ui-body-f .ui-link-inherit{color:#333}.ui-body-f .ui-link{color:#3498db;font-weight:700}.ui-body-f .ui-link:visited,.ui-body-f .ui-link:hover,.ui-body-f .ui-link:active{color:#5dade2}.ui-body-f.ui-input-text{border:2px solid #eee}.ui-body-f.ui-input-text.ui-focus{border:2px solid #5dade2;-webkit-transition:border linear .2s;-moz-transition:border linear .2s;-o-transition:border linear .2s;transition:border linear .2s}.ui-btn-up-f{border:1px solid #3498db;background:#3498db;font-weight:700;color:#fff}.ui-btn-up-f:visited,.ui-btn-up-f a.ui-link-inherit{color:#fff}.ui-btn-hover-f{border:1px solid #5dade2;background:#5dade2;font-weight:700;color:#fff}.ui-btn-hover-f:visited,.ui-btn-hover-f:hover,.ui-btn-hover-f a.ui-link-inherit{color:#fff}.ui-btn-down-f{border:1px solid #5dade2;background:#5dade2;font-weight:700;color:#fff}.ui-btn-down-f:visited,.ui-btn-down-f:hover,.ui-btn-down-f a.ui-link-inherit{color:#fff}.ui-btn-up-f,.ui-btn-hover-f,.ui-btn-down-f{font-family:Lato,sans-serif;text-decoration:none}.ui-bar-f .ui-btn-up-a,.ui-bar-f .ui-btn-down-a,.ui-bar-f .ui-btn-hover-a{background-color:#3498db;border:1px solid #3498db}.ui-bar-g{border:1px solid #2ecc71;background:#2ecc71;color:#fff;font-weight:700;font-family:Lato,sans-serif}.ui-bar-g .ui-link-inherit{color:#3e3e3e}.ui-bar-g a.ui-link{color:#7cc4e7;font-weight:700}.ui-bar-g a.ui-link:visited{color:#2489ce}.ui-bar-g a.ui-link:hover{color:#2489ce}.ui-bar-g a.ui-link:active{color:#2489ce}.ui-bar-g input,.ui-bar-g select,.ui-bar-g textarea,.ui-bar-g button{font-family:Lato,sans-serif}.ui-body-g,.ui-overlay-g{border:2px solid #2ecc71;color:#34495e;background:#fff;background-image:none}.ui-body-g{font-family:Lato,sans-serif}.ui-body-g input,.ui-body-g select,.ui-body-g textarea,.ui-body-g button{font-family:Lato,sans-serif}.ui-body-g .ui-link-inherit{color:#333}.ui-body-g .ui-link{color:#2ecc71;font-weight:700}.ui-body-g .ui-link:visited,.ui-body-g .ui-link:hover,.ui-body-g .ui-link:active{color:#55d98d}.ui-body-g.ui-input-text{border:2px solid #eee}.ui-body-g.ui-input-text.ui-focus{border:2px solid #55d98d;-webkit-transition:border linear .2s;-moz-transition:border linear .2s;-o-transition:border linear .2s;transition:border linear .2s}.ui-btn-up-g{border:1px solid #2ecc71;background:#2ecc71;font-weight:700;color:#fff}.ui-btn-up-g:visited,.ui-btn-up-g a.ui-link-inherit{color:#fff}.ui-btn-hover-g{border:1px solid #55d98d;background:#55d98d;font-weight:700;color:#fff}.ui-btn-hover-g:visited,.ui-btn-hover-g:hover,.ui-btn-hover-g a.ui-link-inherit{color:#fff}.ui-btn-down-g{border:1px solid #55d98d;background:#55d98d;font-weight:700;color:#fff}.ui-btn-down-g:visited,.ui-btn-down-g:hover,.ui-btn-down-g a.ui-link-inherit{color:#fff}.ui-btn-up-g,.ui-btn-hover-g,.ui-btn-down-g{font-family:Lato,sans-serif;text-decoration:none}.ui-bar-g .ui-btn-up-a,.ui-bar-g .ui-btn-down-a,.ui-bar-g .ui-btn-hover-a{background-color:#2ecc71;border:1px solid #2ecc71}.ui-btn-active{border:1px solid #1abc9c;background:#1abc9c;font-weight:700;color:#fff;cursor:pointer;text-decoration:none;font-family:Lato,sans-serif}.ui-btn-active:visited,.ui-btn-active:hover,.ui-btn-active a.ui-link-inherit{color:#fff}.ui-btn-active.ui-slider-bg{background:#1abc9c}.ui-slider-handle{background:#16a085;border:1px solid #16a085}.ui-slider-label.ui-btn-corner-all,.ui-slider-switch.ui-btn-corner-all{border-radius:1em;-webkit-border-radius:1em}.ui-slider-handle.ui-btn-corner-all{border-radius:50%;-webkit-border-radius:50%}input.ui-input-text.ui-slider-input{border:2px solid #eee!important}.ui-corner-all{-webkit-border-radius:6px;border-radius:6px}.ui-br{border-color:#828282;border-color:rgba(130,130,130,.3);border-style:solid}.ui-disabled{filter:Alpha(Opacity=30);opacity:.3;zoom:1}.ui-disabled,.ui-disabled a{cursor:default!important;pointer-events:none}.ui-icon,.ui-icon-searchfield:after{background-repeat:no-repeat;width:20px;height:20px;-moz-border-radius:10px;-webkit-border-radius:10px;border-radius:10px;line-height:16px;color:#fff}.ui-btn-icon-notext .ui-btn-inner .ui-icon:before{margin-left:1px}.ui-li-link-alt .ui-btn-inner .ui-icon{margin:-10px -10px auto auto!important}.ui-icon-plus,.ui-icon-minus,.ui-icon-delete,.ui-icon-arrow-r,.ui-icon-arrow-l,.ui-icon-arrow-u,.ui-icon-arrow-d,.ui-icon-check,.ui-icon-gear,.ui-icon-refresh,.ui-icon-forward,.ui-icon-back,.ui-icon-grid,.ui-icon-star,.ui-icon-alert,.ui-icon-info,.ui-icon-home,.ui-icon-search,.ui-icon-searchfield:after,.ui-icon-checkbox-off,.ui-icon-checkbox-on,.ui-icon-radio-off,.ui-icon-radio-on,.ui-icon-email,.ui-icon-page,.ui-icon-question,.ui-icon-foursquare,.ui-icon-dollar,.ui-icon-euro,.ui-icon-pound,.ui-icon-apple,.ui-icon-chat,.ui-icon-trash,.ui-icon-mappin,.ui-icon-direction,.ui-icon-heart,.ui-icon-wrench,.ui-icon-play,.ui-icon-pause,.ui-icon-stop,.ui-icon-person,.ui-icon-music,.ui-icon-wifi,.ui-icon-phone,.ui-icon-power,.ui-icon-lightning,.ui-icon-drink,.ui-icon-android{background-color:#666;background-color:rgba(0,0,0,.4);background-image:url(images/icons-18-white.png)}.ui-icon-alt .ui-icon,.ui-icon-alt .ui-icon-searchfield:after{background-color:#fff;background-color:rgba(255,255,255,.3);background-image:url(images/icons-18-black.png);background-repeat:no-repeat}.ui-icon-nodisc .ui-icon,.ui-icon-nodisc .ui-icon-searchfield:after,.ui-icon-nodisc .ui-icon-alt .ui-icon,.ui-icon-nodisc .ui-icon-alt .ui-icon-searchfield:after{background-color:transparent}.ui-icon-plus{background-position:-1px -1px}.ui-icon-minus{background-position:-37px -1px}.ui-icon-delete{background-position:-73px -1px}.ui-icon-arrow-r{background-position:-108px -1px}.ui-icon-arrow-l{background-position:-144px -1px}.ui-icon-arrow-u{background-position:-180px -1px}.ui-icon-arrow-d{background-position:-216px -1px}.ui-icon-check{background-position:-252px -1px}.ui-icon-gear{background-position:-288px -1px}.ui-icon-refresh{background-position:-323px -1px}.ui-icon-forward{background-position:-360px -1px}.ui-icon-back{background-position:-396px -1px}.ui-icon-grid{background-position:-432px -1px}.ui-icon-star{background-position:-467px -1px}.ui-icon-alert{background-position:-503px -1px}.ui-icon-info{background-position:-539px -1px}.ui-icon-home{background-position:-575px -1px}.ui-icon-search,.ui-icon-searchfield:after{background-position:-611px -1px}.ui-icon-checkbox-on{background-position:-647px -1px}.ui-icon-checkbox-off{background-position:-683px -1px}.ui-icon-radio-on{background-position:-718px -1px}.ui-icon-radio-off{background-position:-754px -1px}.ui-icon-bars{background-position:-788px -1px}.ui-icon-edit{background-position:-824px -1px}@media only screen and (-webkit-min-device-pixel-ratio:1.3),only screen and (min--moz-device-pixel-ratio:1.3),only screen and (min-resolution:200dpi){.ui-icon-plus,.ui-icon-minus,.ui-icon-delete,.ui-icon-arrow-r,.ui-icon-arrow-l,.ui-icon-arrow-u,.ui-icon-arrow-d,.ui-icon-check,.ui-icon-gear,.ui-icon-refresh,.ui-icon-forward,.ui-icon-back,.ui-icon-grid,.ui-icon-star,.ui-icon-alert,.ui-icon-info,.ui-icon-home,.ui-icon-bars,.ui-icon-edit,.ui-icon-search,.ui-icon-searchfield:after,.ui-icon-checkbox-off,.ui-icon-checkbox-on,.ui-icon-radio-off,.ui-icon-radio-on{background-image:url(images/icons-36-white.png);-moz-background-size:864px 18px;-o-background-size:864px 18px;-webkit-background-size:864px 18px;background-size:864px 18px}.ui-icon-alt .ui-icon{background-image:url(images/icons-36-black.png)}.ui-icon-plus{background-position:0 50%}.ui-icon-minus{background-position:-36px 50%}.ui-icon-delete{background-position:-72px 50%}.ui-icon-arrow-r{background-position:-108px 50%}.ui-icon-arrow-l{background-position:-144px 50%}.ui-icon-arrow-u{background-position:-179px 50%}.ui-icon-arrow-d{background-position:-215px 50%}.ui-icon-check{background-position:-252px 50%}.ui-icon-gear{background-position:-287px 50%}.ui-icon-refresh{background-position:-323px 50%}.ui-icon-forward{background-position:-360px 50%}.ui-icon-back{background-position:-395px 50%}.ui-icon-grid{background-position:-431px 50%}.ui-icon-star{background-position:-467px 50%}.ui-icon-alert{background-position:-503px 50%}.ui-icon-info{background-position:-538px 50%}.ui-icon-home{background-position:-575px 50%}.ui-icon-search,.ui-icon-searchfield:after{background-position:-611px 50%}.ui-icon-checkbox-on{background-position:-647px 50%}.ui-icon-checkbox-off{background-position:-683px 50%}.ui-icon-radio-on{background-position:-718px 50%}.ui-icon-radio-off{background-position:-754px 50%}.ui-icon-bars{background-position:-788px 50%}.ui-icon-edit{background-position:-824px 50%}}.ui-checkbox .ui-icon,.ui-selectmenu-list .ui-icon{-webkit-border-radius:3px;border-radius:3px}.ui-icon-checkbox-off,.ui-icon-radio-off{background-color:transparent}.ui-checkbox-on .ui-icon,.ui-radio-on .ui-icon{}.ui-icon-loading{background:url(images/ajax-loader.gif);background-size:46px 46px}.ui-btn-corner-all{-webkit-border-radius:6px;border-radius:6px}.ui-btn-icon-notext.ui-btn-corner-all{-webkit-border-radius:1em;border-radius:1em}.ui-corner-all,.ui-btn-corner-all{}.ui-overlay{background:#666;filter:Alpha(Opacity=50);opacity:.5;position:absolute;width:100%;height:100%}.ui-btn:focus,.ui-link-inherit:focus{outline:0}.ui-btn.ui-focus{z-index:1}.ui-mobile-nosupport-boxshadow *{-moz-box-shadow:none!important;-webkit-box-shadow:none!important;box-shadow:none!important}.ui-mobile-nosupport-boxshadow .ui-focus,.ui-mobile-nosupport-boxshadow .ui-btn:focus,.ui-mobile-nosupport-boxshadow .ui-link-inherit:focus{outline-width:1px;outline-style:auto}.ui-mobile,.ui-mobile body{height:99.9%}.ui-mobile fieldset,.ui-page{padding:0;margin:0}.ui-mobile a img,.ui-mobile fieldset{border-width:0}.ui-mobile-viewport{margin:0;overflow-x:visible;-webkit-text-size-adjust:100%;-ms-text-size-adjust:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}body.ui-mobile-viewport,div.ui-mobile-viewport{overflow-x:hidden}.ui-mobile [data-role=page],.ui-mobile [data-role=dialog],.ui-page{top:0;left:0;width:100%;min-height:100%;position:absolute;display:none;border:0}.ui-mobile .ui-page-active{display:block;overflow:visible}.ui-page{outline:0}@media screen and (orientation:portrait){.ui-mobile .ui-page{min-height:420px}}@media screen and (orientation:landscape){.ui-mobile .ui-page{min-height:300px}}.ui-loading .ui-loader{display:block}.ui-loader{display:none;z-index:9999999;position:fixed;top:50%;left:50%;border:0}.ui-loader-default{background:0;filter:Alpha(Opacity=18);opacity:.18;width:46px;height:46px;margin-left:-23px;margin-top:-23px}.ui-loader-verbose{width:200px;filter:Alpha(Opacity=88);opacity:.88;box-shadow:0 1px 1px -1px #fff;height:auto;margin-left:-110px;margin-top:-43px;padding:10px}.ui-loader-default h1{font-size:0;width:0;height:0;overflow:hidden}.ui-loader-verbose h1{font-size:16px;margin:0;text-align:center}.ui-loader .ui-icon{background-color:#000;display:block;margin:0;width:44px;height:44px;padding:1px;-webkit-border-radius:36px;border-radius:36px}.ui-loader-verbose .ui-icon{margin:0 auto 10px;filter:Alpha(Opacity=75);opacity:.75}.ui-loader-textonly{padding:15px;margin-left:-115px}.ui-loader-textonly .ui-icon{display:none}.ui-loader-fakefix{position:absolute}.ui-mobile-rendering>*{visibility:hidden}.ui-bar,.ui-body{position:relative;padding:.4em 15px;overflow:hidden;display:block;clear:both}.ui-bar{font-size:16px;margin:0}.ui-bar h1,.ui-bar h2,.ui-bar h3,.ui-bar h4,.ui-bar h5,.ui-bar h6{margin:0;padding:0;font-size:16px;display:inline-block}.ui-header,.ui-footer{position:relative;zoom:1}.ui-mobile .ui-header,.ui-mobile .ui-footer{border-left-width:0;border-right-width:0}.ui-header .ui-btn-left,.ui-header .ui-btn-right,.ui-footer .ui-btn-left,.ui-footer .ui-btn-right,.ui-header-fixed.ui-fixed-hidden .ui-btn-left,.ui-header-fixed.ui-fixed-hidden .ui-btn-right{position:absolute;top:3px}.ui-header-fixed .ui-btn-left,.ui-header-fixed .ui-btn-right{top:4px}.ui-header .ui-btn-left,.ui-footer .ui-btn-left{left:5px}.ui-header .ui-btn-right,.ui-footer .ui-btn-right{right:5px}.ui-footer>.ui-btn-icon-notext,.ui-header>.ui-btn-icon-notext,.ui-header-fixed.ui-fixed-hidden>.ui-btn-icon-notext{top:6px}.ui-header-fixed>.ui-btn-icon-notext{top:7px}.ui-header .ui-title,.ui-footer .ui-title{min-height:1.1em;text-align:center;font-size:16px;display:block;margin:.6em 30% .8em;padding:0;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;outline:0!important}.ui-footer .ui-title{margin:.6em 15px .8em}.ui-content{border-width:0;overflow:visible;overflow-x:hidden;padding:15px}.ui-corner-all>.ui-header:first-child,.ui-corner-all>.ui-content:first-child,.ui-corner-all>.ui-footer:first-child{-webkit-border-top-left-radius:inherit;border-top-left-radius:inherit;-webkit-border-top-right-radius:inherit;border-top-right-radius:inherit}.ui-corner-all>.ui-header:last-child,.ui-corner-all>.ui-content:last-child,.ui-corner-all>.ui-footer:last-child{-webkit-border-bottom-left-radius:inherit;border-bottom-left-radius:inherit;-webkit-border-bottom-right-radius:inherit;border-bottom-right-radius:inherit}.ui-icon{width:18px;height:18px}.ui-nojs{position:absolute;left:-9999px}.ui-hide-label label.ui-input-text,.ui-hide-label label.ui-select,.ui-hide-label label.ui-slider,.ui-hide-label label.ui-submit,.ui-hide-label .ui-controlgroup-label,.ui-hidden-accessible{position:absolute!important;left:-9999px;clip:rect(1px 1px 1px 1px);clip:rect(1px,1px,1px,1px)}.ui-mobile-viewport-transitioning,.ui-mobile-viewport-transitioning .ui-page{width:100%;height:100%;overflow:hidden;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.ui-page-pre-in{opacity:0}.in{-webkit-animation-timing-function:ease-out;-webkit-animation-duration:350ms;-moz-animation-timing-function:ease-out;-moz-animation-duration:350ms;animation-timing-function:ease-out;animation-duration:350ms}.out{-webkit-animation-timing-function:ease-in;-webkit-animation-duration:225ms;-moz-animation-timing-function:ease-in;-moz-animation-duration:225ms;animation-timing-function:ease-in;animation-duration:225ms}@-webkit-keyframes fadein{from{opacity:0}to{opacity:1}}@-moz-keyframes fadein{from{opacity:0}to{opacity:1}}@keyframes fadein{from{opacity:0}to{opacity:1}}@-webkit-keyframes fadeout{from{opacity:1}to{opacity:0}}@-moz-keyframes fadeout{from{opacity:1}to{opacity:0}}@keyframes fadeout{from{opacity:1}to{opacity:0}}.fade.out{opacity:0;-webkit-animation-duration:125ms;-webkit-animation-name:fadeout;-moz-animation-duration:125ms;-moz-animation-name:fadeout;animation-duration:125ms;animation-name:fadeout}.fade.in{opacity:1;-webkit-animation-duration:225ms;-webkit-animation-name:fadein;-moz-animation-duration:225ms;-moz-animation-name:fadein;animation-duration:225ms;animation-name:fadein}.pop{-webkit-transform-origin:50% 50%;-moz-transform-origin:50% 50%;transform-origin:50% 50%}.pop.in{-webkit-transform:scale(1);-webkit-animation-name:popin;-webkit-animation-duration:350ms;-moz-transform:scale(1);-moz-animation-name:popin;-moz-animation-duration:350ms;transform:scale(1);animation-name:popin;animation-duration:350ms;opacity:1}.pop.out{-webkit-animation-name:fadeout;-webkit-animation-duration:100ms;-moz-animation-name:fadeout;-moz-animation-duration:100ms;animation-name:fadeout;animation-duration:100ms;opacity:0}.pop.in.reverse{-webkit-animation-name:fadein;-moz-animation-name:fadein;animation-name:fadein}.pop.out.reverse{-webkit-transform:scale(.8);-webkit-animation-name:popout;-moz-transform:scale(.8);-moz-animation-name:popout;transform:scale(.8);animation-name:popout}@-webkit-keyframes popin{from{-webkit-transform:scale(.8);opacity:0}to{-webkit-transform:scale(1);opacity:1}}@-moz-keyframes popin{from{-moz-transform:scale(.8);opacity:0}to{-moz-transform:scale(1);opacity:1}}@keyframes popin{from{transform:scale(.8);opacity:0}to{transform:scale(1);opacity:1}}@-webkit-keyframes popout{from{-webkit-transform:scale(1);opacity:1}to{-webkit-transform:scale(.8);opacity:0}}@-moz-keyframes popout{from{-moz-transform:scale(1);opacity:1}to{-moz-transform:scale(.8);opacity:0}}@keyframes popout{from{transform:scale(1);opacity:1}to{transform:scale(.8);opacity:0}}@-webkit-keyframes slideinfromright{from{-webkit-transform:translate3d(100%,0,0)}to{-webkit-transform:translate3d(0,0,0)}}@-moz-keyframes slideinfromright{from{-moz-transform:translateX(100%)}to{-moz-transform:translateX(0)}}@keyframes slideinfromright{from{transform:translateX(100%)}to{transform:translateX(0)}}@-webkit-keyframes slideinfromleft{from{-webkit-transform:translate3d(-100%,0,0)}to{-webkit-transform:translate3d(0,0,0)}}@-moz-keyframes slideinfromleft{from{-moz-transform:translateX(-100%)}to{-moz-transform:translateX(0)}}@keyframes slideinfromleft{from{transform:translateX(-100%)}to{transform:translateX(0)}}@-webkit-keyframes slideouttoleft{from{-webkit-transform:translate3d(0,0,0)}to{-webkit-transform:translate3d(-100%,0,0)}}@-moz-keyframes slideouttoleft{from{-moz-transform:translateX(0)}to{-moz-transform:translateX(-100%)}}@keyframes slideouttoleft{from{transform:translateX(0)}to{transform:translateX(-100%)}}@-webkit-keyframes slideouttoright{from{-webkit-transform:translate3d(0,0,0)}to{-webkit-transform:translate3d(100%,0,0)}}@-moz-keyframes slideouttoright{from{-moz-transform:translateX(0)}to{-moz-transform:translateX(100%)}}@keyframes slideouttoright{from{transform:translateX(0)}to{transform:translateX(100%)}}.slide.out,.slide.in{-webkit-animation-timing-function:ease-out;-webkit-animation-duration:350ms;-moz-animation-timing-function:ease-out;-moz-animation-duration:350ms;animation-timing-function:ease-out;animation-duration:350ms}.slide.out{-webkit-transform:translate3d(-100%,0,0);-webkit-animation-name:slideouttoleft;-moz-transform:translateX(-100%);-moz-animation-name:slideouttoleft;transform:translateX(-100%);animation-name:slideouttoleft}.slide.in{-webkit-transform:translate3d(0,0,0);-webkit-animation-name:slideinfromright;-moz-transform:translateX(0);-moz-animation-name:slideinfromright;transform:translateX(0);animation-name:slideinfromright}.slide.out.reverse{-webkit-transform:translate3d(100%,0,0);-webkit-animation-name:slideouttoright;-moz-transform:translateX(100%);-moz-animation-name:slideouttoright;transform:translateX(100%);animation-name:slideouttoright}.slide.in.reverse{-webkit-transform:translate3d(0,0,0);-webkit-animation-name:slideinfromleft;-moz-transform:translateX(0);-moz-animation-name:slideinfromleft;transform:translateX(0);animation-name:slideinfromleft}.slidefade.out{-webkit-transform:translateX(-100%);-webkit-animation-name:slideouttoleft;-webkit-animation-duration:225ms;-moz-transform:translateX(-100%);-moz-animation-name:slideouttoleft;-moz-animation-duration:225ms;transform:translateX(-100%);animation-name:slideouttoleft;animation-duration:225ms}.slidefade.in{-webkit-transform:translateX(0);-webkit-animation-name:fadein;-webkit-animation-duration:200ms;-moz-transform:translateX(0);-moz-animation-name:fadein;-moz-animation-duration:200ms;transform:translateX(0);animation-name:fadein;animation-duration:200ms}.slidefade.out.reverse{-webkit-transform:translateX(100%);-webkit-animation-name:slideouttoright;-webkit-animation-duration:200ms;-moz-transform:translateX(100%);-moz-animation-name:slideouttoright;-moz-animation-duration:200ms;transform:translateX(100%);animation-name:slideouttoright;animation-duration:200ms}.slidefade.in.reverse{-webkit-transform:translateX(0);-webkit-animation-name:fadein;-webkit-animation-duration:200ms;-moz-transform:translateX(0);-moz-animation-name:fadein;-moz-animation-duration:200ms;transform:translateX(0);animation-name:fadein;animation-duration:200ms}.slidedown.out{-webkit-animation-name:fadeout;-webkit-animation-duration:100ms;-moz-animation-name:fadeout;-moz-animation-duration:100ms;animation-name:fadeout;animation-duration:100ms}.slidedown.in{-webkit-transform:translateY(0);-webkit-animation-name:slideinfromtop;-webkit-animation-duration:250ms;-moz-transform:translateY(0);-moz-animation-name:slideinfromtop;-moz-animation-duration:250ms;transform:translateY(0);animation-name:slideinfromtop;animation-duration:250ms}.slidedown.in.reverse{-webkit-animation-name:fadein;-webkit-animation-duration:150ms;-moz-animation-name:fadein;-moz-animation-duration:150ms;animation-name:fadein;animation-duration:150ms}.slidedown.out.reverse{-webkit-transform:translateY(-100%);-webkit-animation-name:slideouttotop;-webkit-animation-duration:200ms;-moz-transform:translateY(-100%);-moz-animation-name:slideouttotop;-moz-animation-duration:200ms;transform:translateY(-100%);animation-name:slideouttotop;animation-duration:200ms}@-webkit-keyframes slideinfromtop{from{-webkit-transform:translateY(-100%)}to{-webkit-transform:translateY(0)}}@-moz-keyframes slideinfromtop{from{-moz-transform:translateY(-100%)}to{-moz-transform:translateY(0)}}@keyframes slideinfromtop{from{transform:translateY(-100%)}to{transform:translateY(0)}}@-webkit-keyframes slideouttotop{from{-webkit-transform:translateY(0)}to{-webkit-transform:translateY(-100%)}}@-moz-keyframes slideouttotop{from{-moz-transform:translateY(0)}to{-moz-transform:translateY(-100%)}}@keyframes slideouttotop{from{transform:translateY(0)}to{transform:translateY(-100%)}}.slideup.out{-webkit-animation-name:fadeout;-webkit-animation-duration:100ms;-moz-animation-name:fadeout;-moz-animation-duration:100ms;animation-name:fadeout;animation-duration:100ms}.slideup.in{-webkit-transform:translateY(0);-webkit-animation-name:slideinfrombottom;-webkit-animation-duration:250ms;-moz-transform:translateY(0);-moz-animation-name:slideinfrombottom;-moz-animation-duration:250ms;transform:translateY(0);animation-name:slideinfrombottom;animation-duration:250ms}.slideup.in.reverse{-webkit-animation-name:fadein;-webkit-animation-duration:150ms;-moz-animation-name:fadein;-moz-animation-duration:150ms;animation-name:fadein;animation-duration:150ms}.slideup.out.reverse{-webkit-transform:translateY(100%);-webkit-animation-name:slideouttobottom;-webkit-animation-duration:200ms;-moz-transform:translateY(100%);-moz-animation-name:slideouttobottom;-moz-animation-duration:200ms;transform:translateY(100%);animation-name:slideouttobottom;animation-duration:200ms}@-webkit-keyframes slideinfrombottom{from{-webkit-transform:translateY(100%)}to{-webkit-transform:translateY(0)}}@-moz-keyframes slideinfrombottom{from{-moz-transform:translateY(100%)}to{-moz-transform:translateY(0)}}@keyframes slideinfrombottom{from{transform:translateY(100%)}to{transform:translateY(0)}}@-webkit-keyframes slideouttobottom{from{-webkit-transform:translateY(0)}to{-webkit-transform:translateY(100%)}}@-moz-keyframes slideouttobottom{from{-moz-transform:translateY(0)}to{-moz-transform:translateY(100%)}}@keyframes slideouttobottom{from{transform:translateY(0)}to{transform:translateY(100%)}}.viewport-flip{-webkit-perspective:1000;-moz-perspective:1000;perspective:1000;position:absolute}.flip{-webkit-backface-visibility:hidden;-webkit-transform:translateX(0);-moz-backface-visibility:hidden;-moz-transform:translateX(0);backface-visibility:hidden;transform:translateX(0)}.flip.out{-webkit-transform:rotateY(-90deg) scale(.9);-webkit-animation-name:flipouttoleft;-webkit-animation-duration:175ms;-moz-transform:rotateY(-90deg) scale(.9);-moz-animation-name:flipouttoleft;-moz-animation-duration:175ms;transform:rotateY(-90deg) scale(.9);animation-name:flipouttoleft;animation-duration:175ms}.flip.in{-webkit-animation-name:flipintoright;-webkit-animation-duration:225ms;-moz-animation-name:flipintoright;-moz-animation-duration:225ms;animation-name:flipintoright;animation-duration:225ms}.flip.out.reverse{-webkit-transform:rotateY(90deg) scale(.9);-webkit-animation-name:flipouttoright;-moz-transform:rotateY(90deg) scale(.9);-moz-animation-name:flipouttoright;transform:rotateY(90deg) scale(.9);animation-name:flipouttoright}.flip.in.reverse{-webkit-animation-name:flipintoleft;-moz-animation-name:flipintoleft;animation-name:flipintoleft}@-webkit-keyframes flipouttoleft{from{-webkit-transform:rotateY(0)}to{-webkit-transform:rotateY(-90deg) scale(.9)}}@-moz-keyframes flipouttoleft{from{-moz-transform:rotateY(0)}to{-moz-transform:rotateY(-90deg) scale(.9)}}@keyframes flipouttoleft{from{transform:rotateY(0)}to{transform:rotateY(-90deg) scale(.9)}}@-webkit-keyframes flipouttoright{from{-webkit-transform:rotateY(0)}to{-webkit-transform:rotateY(90deg) scale(.9)}}@-moz-keyframes flipouttoright{from{-moz-transform:rotateY(0)}to{-moz-transform:rotateY(90deg) scale(.9)}}@keyframes flipouttoright{from{transform:rotateY(0)}to{transform:rotateY(90deg) scale(.9)}}@-webkit-keyframes flipintoleft{from{-webkit-transform:rotateY(-90deg) scale(.9)}to{-webkit-transform:rotateY(0)}}@-moz-keyframes flipintoleft{from{-moz-transform:rotateY(-90deg) scale(.9)}to{-moz-transform:rotateY(0)}}@keyframes flipintoleft{from{transform:rotateY(-90deg) scale(.9)}to{transform:rotateY(0)}}@-webkit-keyframes flipintoright{from{-webkit-transform:rotateY(90deg) scale(.9)}to{-webkit-transform:rotateY(0)}}@-moz-keyframes flipintoright{from{-moz-transform:rotateY(90deg) scale(.9)}to{-moz-transform:rotateY(0)}}@keyframes flipintoright{from{transform:rotateY(90deg) scale(.9)}to{transform:rotateY(0)}}.viewport-turn{-webkit-perspective:200px;-moz-perspective:200px;-ms-perspective:200px;perspective:200px;position:absolute}.turn{-webkit-backface-visibility:hidden;-webkit-transform:translateX(0);-webkit-transform-origin:0;-moz-backface-visibility:hidden;-moz-transform:translateX(0);-moz-transform-origin:0;backface-visibility:hidden;transform:translateX(0);transform-origin:0}.turn.out{-webkit-transform:rotateY(-90deg) scale(.9);-webkit-animation-name:flipouttoleft;-webkit-animation-duration:125ms;-moz-transform:rotateY(-90deg) scale(.9);-moz-animation-name:flipouttoleft;-moz-animation-duration:125ms;transform:rotateY(-90deg) scale(.9);animation-name:flipouttoleft;animation-duration:125ms}.turn.in{-webkit-animation-name:flipintoright;-webkit-animation-duration:250ms;-moz-animation-name:flipintoright;-moz-animation-duration:250ms;animation-name:flipintoright;animation-duration:250ms}.turn.out.reverse{-webkit-transform:rotateY(90deg) scale(.9);-webkit-animation-name:flipouttoright;-moz-transform:rotateY(90deg) scale(.9);-moz-animation-name:flipouttoright;transform:rotateY(90deg) scale(.9);animation-name:flipouttoright}.turn.in.reverse{-webkit-animation-name:flipintoleft;-moz-animation-name:flipintoleft;animation-name:flipintoleft}@-webkit-keyframes flipouttoleft{from{-webkit-transform:rotateY(0)}to{-webkit-transform:rotateY(-90deg) scale(.9)}}@-moz-keyframes flipouttoleft{from{-moz-transform:rotateY(0)}to{-moz-transform:rotateY(-90deg) scale(.9)}}@keyframes flipouttoleft{from{transform:rotateY(0)}to{transform:rotateY(-90deg) scale(.9)}}@-webkit-keyframes flipouttoright{from{-webkit-transform:rotateY(0)}to{-webkit-transform:rotateY(90deg) scale(.9)}}@-moz-keyframes flipouttoright{from{-moz-transform:rotateY(0)}to{-moz-transform:rotateY(90deg) scale(.9)}}@keyframes flipouttoright{from{transform:rotateY(0)}to{transform:rotateY(90deg) scale(.9)}}@-webkit-keyframes flipintoleft{from{-webkit-transform:rotateY(-90deg) scale(.9)}to{-webkit-transform:rotateY(0)}}@-moz-keyframes flipintoleft{from{-moz-transform:rotateY(-90deg) scale(.9)}to{-moz-transform:rotateY(0)}}@keyframes flipintoleft{from{transform:rotateY(-90deg) scale(.9)}to{transform:rotateY(0)}}@-webkit-keyframes flipintoright{from{-webkit-transform:rotateY(90deg) scale(.9)}to{-webkit-transform:rotateY(0)}}@-moz-keyframes flipintoright{from{-moz-transform:rotateY(90deg) scale(.9)}to{-moz-transform:rotateY(0)}}@keyframes flipintoright{from{transform:rotateY(90deg) scale(.9)}to{transform:rotateY(0)}}.flow{-webkit-transform-origin:50% 30%;-webkit-box-shadow:0 0 20px rgba(0,0,0,.4);-moz-transform-origin:50% 30%;-moz-box-shadow:0 0 20px rgba(0,0,0,.4);transform-origin:50% 30%;box-shadow:0 0 20px rgba(0,0,0,.4)}.ui-dialog.flow{-webkit-transform-origin:none;-webkit-box-shadow:none;-moz-transform-origin:none;-moz-box-shadow:none;transform-origin:none;box-shadow:none}.flow.out{-webkit-transform:translateX(-100%) scale(.7);-webkit-animation-name:flowouttoleft;-webkit-animation-timing-function:ease;-webkit-animation-duration:350ms;-moz-transform:translateX(-100%) scale(.7);-moz-animation-name:flowouttoleft;-moz-animation-timing-function:ease;-moz-animation-duration:350ms;transform:translateX(-100%) scale(.7);animation-name:flowouttoleft;animation-timing-function:ease;animation-duration:350ms}.flow.in{-webkit-transform:translateX(0) scale(1);-webkit-animation-name:flowinfromright;-webkit-animation-timing-function:ease;-webkit-animation-duration:350ms;-moz-transform:translateX(0) scale(1);-moz-animation-name:flowinfromright;-moz-animation-timing-function:ease;-moz-animation-duration:350ms;transform:translateX(0) scale(1);animation-name:flowinfromright;animation-timing-function:ease;animation-duration:350ms}.flow.out.reverse{-webkit-transform:translateX(100%);-webkit-animation-name:flowouttoright;-moz-transform:translateX(100%);-moz-animation-name:flowouttoright;transform:translateX(100%);animation-name:flowouttoright}.flow.in.reverse{-webkit-animation-name:flowinfromleft;-moz-animation-name:flowinfromleft;animation-name:flowinfromleft}@-webkit-keyframes flowouttoleft{0%{-webkit-transform:translateX(0) scale(1)}60%,70%{-webkit-transform:translateX(0) scale(.7)}100%{-webkit-transform:translateX(-100%) scale(.7)}}@-moz-keyframes flowouttoleft{0%{-moz-transform:translateX(0) scale(1)}60%,70%{-moz-transform:translateX(0) scale(.7)}100%{-moz-transform:translateX(-100%) scale(.7)}}@keyframes flowouttoleft{0%{transform:translateX(0) scale(1)}60%,70%{transform:translateX(0) scale(.7)}100%{transform:translateX(-100%) scale(.7)}}@-webkit-keyframes flowouttoright{0%{-webkit-transform:translateX(0) scale(1)}60%,70%{-webkit-transform:translateX(0) scale(.7)}100%{-webkit-transform:translateX(100%) scale(.7)}}@-moz-keyframes flowouttoright{0%{-moz-transform:translateX(0) scale(1)}60%,70%{-moz-transform:translateX(0) scale(.7)}100%{-moz-transform:translateX(100%) scale(.7)}}@keyframes flowouttoright{0%{transform:translateX(0) scale(1)}60%,70%{transform:translateX(0) scale(.7)}100%{transform:translateX(100%) scale(.7)}}@-webkit-keyframes flowinfromleft{0%{-webkit-transform:translateX(-100%) scale(.7)}30%,40%{-webkit-transform:translateX(0) scale(.7)}100%{-webkit-transform:translateX(0) scale(1)}}@-moz-keyframes flowinfromleft{0%{-moz-transform:translateX(-100%) scale(.7)}30%,40%{-moz-transform:translateX(0) scale(.7)}100%{-moz-transform:translateX(0) scale(1)}}@keyframes flowinfromleft{0%{transform:translateX(-100%) scale(.7)}30%,40%{transform:translateX(0) scale(.7)}100%{transform:translateX(0) scale(1)}}@-webkit-keyframes flowinfromright{0%{-webkit-transform:translateX(100%) scale(.7)}30%,40%{-webkit-transform:translateX(0) scale(.7)}100%{-webkit-transform:translateX(0) scale(1)}}@-moz-keyframes flowinfromright{0%{-moz-transform:translateX(100%) scale(.7)}30%,40%{-moz-transform:translateX(0) scale(.7)}100%{-moz-transform:translateX(0) scale(1)}}@keyframes flowinfromright{0%{transform:translateX(100%) scale(.7)}30%,40%{transform:translateX(0) scale(.7)}100%{transform:translateX(0) scale(1)}}.ui-grid-a,.ui-grid-b,.ui-grid-c,.ui-grid-d{overflow:hidden}.ui-block-a,.ui-block-b,.ui-block-c,.ui-block-d,.ui-block-e{margin:0;padding:0;border:0;float:left;min-height:1px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}.ui-grid-solo .ui-block-a{display:block;float:none}.ui-grid-a .ui-block-a,.ui-grid-a .ui-block-b{width:49.95%}.ui-grid-a>:nth-child(n){width:50%;margin-right:-.5px}.ui-grid-a .ui-block-a{clear:left}.ui-grid-b .ui-block-a,.ui-grid-b .ui-block-b,.ui-grid-b .ui-block-c{width:33.25%}.ui-grid-b>:nth-child(n){width:33.333%;margin-right:-.5px}.ui-grid-b .ui-block-a{clear:left}.ui-grid-c .ui-block-a,.ui-grid-c .ui-block-b,.ui-grid-c .ui-block-c,.ui-grid-c .ui-block-d{width:24.925%}.ui-grid-c>:nth-child(n){width:25%;margin-right:-.5px}.ui-grid-c .ui-block-a{clear:left}.ui-grid-d .ui-block-a,.ui-grid-d .ui-block-b,.ui-grid-d .ui-block-c,.ui-grid-d .ui-block-d,.ui-grid-d .ui-block-e{width:19.925%}.ui-grid-d>:nth-child(n){width:20%}.ui-grid-d .ui-block-a{clear:left}@media all and (max-width:35em){.ui-responsive .ui-block-a,.ui-responsive .ui-block-b,.ui-responsive .ui-block-c,.ui-responsive .ui-block-d,.ui-responsive .ui-block-e{width:100%;float:none}}.ui-header-fixed,.ui-footer-fixed{left:0;right:0;width:100%;position:fixed;z-index:1000}.ui-header-fixed{top:-1px;padding-top:1px}.ui-header-fixed.ui-fixed-hidden{top:0;padding-top:0}.ui-footer-fixed{bottom:-1px;padding-bottom:1px}.ui-footer-fixed.ui-fixed-hidden{bottom:0;padding-bottom:0}.ui-header-fullscreen,.ui-footer-fullscreen{filter:Alpha(Opacity=90);opacity:.9}.ui-page-header-fixed{padding-top:2.6875em}.ui-page-footer-fixed{padding-bottom:2.6875em}.ui-page-header-fullscreen>.ui-content,.ui-page-footer-fullscreen>.ui-content{padding:0}.ui-fixed-hidden{position:absolute}.ui-page-header-fullscreen .ui-fixed-hidden,.ui-page-footer-fullscreen .ui-fixed-hidden{left:-9999px}.ui-header-fixed .ui-btn,.ui-footer-fixed .ui-btn{z-index:10}.ui-android-2x-fixed .ui-li-has-thumb{-webkit-transform:translate3d(0,0,0)}.ui-navbar{max-width:100%}.ui-navbar.ui-mini{margin:0}.ui-navbar ul:before,.ui-navbar ul:after{content:" ";display:table}.ui-navbar ul:after{clear:both}.ui-navbar ul{list-style:none;margin:0;padding:0;position:relative;display:block;border:0;max-width:100%;overflow:visible;zoom:1}.ui-navbar li .ui-btn{display:block;text-align:center;margin:0 -1px 0 0;border-right-width:0}.ui-navbar li .ui-btn-icon-right .ui-icon{right:6px}.ui-navbar li:last-child .ui-btn,.ui-navbar .ui-grid-duo .ui-block-b .ui-btn{margin-right:0;border-right-width:1px}.ui-header .ui-navbar li:last-child .ui-btn,.ui-footer .ui-navbar li:last-child .ui-btn,.ui-header .ui-navbar .ui-grid-duo .ui-block-b .ui-btn,.ui-footer .ui-navbar .ui-grid-duo .ui-block-b .ui-btn{margin-right:-1px;border-right-width:0}.ui-navbar .ui-grid-duo li.ui-block-a:last-child .ui-btn{margin-right:-1px;border-right-width:1px}.ui-header .ui-navbar li .ui-btn,.ui-footer .ui-navbar li .ui-btn{border-top-width:0;border-bottom-width:0}.ui-header .ui-navbar .ui-grid-b li.ui-block-c .ui-btn,.ui-footer .ui-navbar .ui-grid-b li.ui-block-c .ui-btn{margin-right:-5px}.ui-header .ui-navbar .ui-grid-c li.ui-block-d .ui-btn,.ui-footer .ui-navbar .ui-grid-c li.ui-block-d .ui-btn,.ui-header .ui-navbar .ui-grid-d li.ui-block-e .ui-btn,.ui-footer .ui-navbar .ui-grid-d li.ui-block-e .ui-btn{margin-right:-4px}.ui-header .ui-navbar .ui-grid-b li.ui-block-c .ui-btn-icon-right .ui-icon,.ui-footer .ui-navbar .ui-grid-b li.ui-block-c .ui-btn-icon-right .ui-icon,.ui-header .ui-navbar .ui-grid-c li.ui-block-d .ui-btn-icon-right .ui-icon,.ui-footer .ui-navbar .ui-grid-c li.ui-block-d .ui-btn-icon-right .ui-icon,.ui-header .ui-navbar .ui-grid-d li.ui-block-e .ui-btn-icon-right .ui-icon,.ui-footer .ui-navbar .ui-grid-d li.ui-block-e .ui-btn-icon-right .ui-icon{right:8px}.ui-navbar li .ui-btn .ui-btn-inner{padding-top:.7em;padding-bottom:.8em}.ui-navbar li .ui-btn-icon-top .ui-btn-inner{padding-top:30px}.ui-navbar li .ui-btn-icon-bottom .ui-btn-inner{padding-bottom:30px}.ui-btn{display:block;text-align:center;cursor:pointer;position:relative;margin:.5em 0;padding:0}.ui-mini{margin-top:.25em;margin-bottom:.25em}.ui-btn-left,.ui-btn-right,.ui-input-clear,.ui-btn-inline,.ui-grid-a .ui-btn,.ui-grid-b .ui-btn,.ui-grid-c .ui-btn,.ui-grid-d .ui-btn,.ui-grid-e .ui-btn,.ui-grid-solo .ui-btn{margin-right:5px;margin-left:5px}.ui-btn-inner{font-size:16px;padding:.6em 20px;min-width:.75em;display:block;position:relative;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;zoom:1}.ui-btn input,.ui-btn button{z-index:2}.ui-btn-left,.ui-btn-right,.ui-btn-inline{display:inline-block;vertical-align:middle}.ui-mobile .ui-btn-left,.ui-mobile .ui-btn-right,.ui-btn-left>.ui-btn,.ui-btn-right>.ui-btn{margin:0}.ui-btn-block{display:block}.ui-header>.ui-btn,.ui-footer>.ui-btn{display:inline-block;margin:0}.ui-header .ui-btn-block,.ui-footer .ui-btn-block{display:block}.ui-header .ui-btn-inner,.ui-footer .ui-btn-inner,.ui-mini .ui-btn-inner{font-size:12.5px;padding:.55em 11px .5em}.ui-fullsize .ui-btn-inner,.ui-fullsize .ui-btn-inner{font-size:16px;padding:.6em 20px}.ui-btn-icon-notext{width:24px;height:24px}.ui-btn-icon-notext .ui-btn-inner{padding:0;height:100%}.ui-btn-icon-notext .ui-btn-inner .ui-icon{margin:2px 1px 2px 3px;float:left}.ui-btn-text{position:relative;z-index:1;width:100%;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}div.ui-btn-text{width:auto}.ui-btn-icon-notext .ui-btn-text{position:absolute;left:-9999px}.ui-btn-icon-left .ui-btn-inner{padding-left:40px}.ui-btn-icon-right .ui-btn-inner{padding-right:40px}.ui-btn-icon-top .ui-btn-inner{padding-top:40px}.ui-btn-icon-bottom .ui-btn-inner{padding-bottom:40px}.ui-header .ui-btn-icon-left .ui-btn-inner,.ui-footer .ui-btn-icon-left .ui-btn-inner,.ui-mini.ui-btn-icon-left .ui-btn-inner,.ui-mini .ui-btn-icon-left .ui-btn-inner{padding-left:30px}.ui-header .ui-btn-icon-right .ui-btn-inner,.ui-footer .ui-btn-icon-right .ui-btn-inner,.ui-mini.ui-btn-icon-right .ui-btn-inner,.ui-mini .ui-btn-icon-right .ui-btn-inner{padding-right:30px}.ui-header .ui-btn-icon-top .ui-btn-inner,.ui-footer .ui-btn-icon-top .ui-btn-inner{padding:30px 3px .5em}.ui-mini.ui-btn-icon-top .ui-btn-inner,.ui-mini .ui-btn-icon-top .ui-btn-inner{padding-top:30px}.ui-header .ui-btn-icon-bottom .ui-btn-inner,.ui-footer .ui-btn-icon-bottom .ui-btn-inner{padding:.55em 3px 30px}.ui-mini.ui-btn-icon-bottom .ui-btn-inner,.ui-mini .ui-btn-icon-bottom .ui-btn-inner{padding-bottom:30px}.ui-btn-inner{-webkit-border-radius:inherit;border-radius:inherit}.ui-btn-icon-notext .ui-icon{display:block;z-index:0}.ui-btn-icon-left>.ui-btn-inner>.ui-icon,.ui-btn-icon-right>.ui-btn-inner>.ui-icon{position:absolute;top:50%;margin-top:-9px}.ui-btn-icon-top .ui-btn-inner .ui-icon,.ui-btn-icon-bottom .ui-btn-inner .ui-icon{position:absolute;left:50%;margin-left:-9px}.ui-btn-icon-left .ui-icon{left:10px}.ui-btn-icon-right .ui-icon{right:10px}.ui-btn-icon-top .ui-icon{top:10px}.ui-btn-icon-bottom .ui-icon{top:auto;bottom:10px}.ui-header .ui-btn-icon-left .ui-icon,.ui-footer .ui-btn-icon-left .ui-icon,.ui-mini.ui-btn-icon-left .ui-icon,.ui-mini .ui-btn-icon-left .ui-icon{left:5px}.ui-header .ui-btn-icon-right .ui-icon,.ui-footer .ui-btn-icon-right .ui-icon,.ui-mini.ui-btn-icon-right .ui-icon,.ui-mini .ui-btn-icon-right .ui-icon{right:5px}.ui-header .ui-btn-icon-top .ui-icon,.ui-footer .ui-btn-icon-top .ui-icon,.ui-mini.ui-btn-icon-top .ui-icon,.ui-mini .ui-btn-icon-top .ui-icon{top:5px}.ui-header .ui-btn-icon-bottom .ui-icon,.ui-footer .ui-btn-icon-bottom .ui-icon,.ui-mini.ui-btn-icon-bottom .ui-icon,.ui-mini .ui-btn-icon-bottom .ui-icon{bottom:5px}.ui-btn-hidden{position:absolute;top:0;left:0;width:100%;height:100%;-webkit-appearance:none;cursor:pointer;background:#fff;background:rgba(255,255,255,0);filter:Alpha(Opacity=0);opacity:.1;font-size:1px;border:0;text-indent:-9999px}.ui-disabled .ui-btn-hidden{display:none}.ui-disabled{z-index:1}.ui-field-contain .ui-btn.ui-submit{margin:0}label.ui-submit{font-size:16px;line-height:1.4;font-weight:400;margin:0 0 .3em;display:block}@media all and (min-width:28em){.ui-field-contain label.ui-submit{vertical-align:top;display:inline-block;width:20%;margin:0 2% 0 0}.ui-field-contain .ui-btn.ui-submit{width:78%;display:inline-block;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}.ui-hide-label .ui-btn.ui-submit{width:auto;display:block}}.ui-collapsible-inset{margin:.5em 0}.ui-collapsible-heading{font-size:16px;display:block;margin:0 -15px;padding:0;position:relative}.ui-collapsible-inset .ui-collapsible-heading{margin:0}.ui-collapsible-heading .ui-btn{text-align:left;margin:0;border-left-width:0;border-right-width:0}.ui-collapsible-inset .ui-collapsible-heading .ui-btn{border-right-width:1px;border-left-width:1px}.ui-collapsible-collapsed+.ui-collapsible:not(.ui-collapsible-inset) .ui-collapsible-heading .ui-btn{border-top-width:0}.ui-collapsible-set .ui-collapsible:not(.ui-collapsible-inset) .ui-collapsible-heading .ui-btn{border-top-width:1px}.ui-collapsible-heading .ui-btn-inner{padding-left:12px;padding-right:12px}.ui-collapsible-heading .ui-btn-icon-left .ui-btn-inner{padding-left:40px}.ui-collapsible-heading .ui-btn-icon-right .ui-btn-inner{padding-right:40px}.ui-collapsible-heading .ui-btn-icon-top .ui-btn-inner,.ui-collapsible-heading .ui-btn-icon-bottom .ui-btn-inner{text-align:center}.ui-collapsible-heading .ui-btn-icon-left.ui-mini .ui-btn-inner{padding-left:30px}.ui-collapsible-heading .ui-btn-icon-right.ui-mini .ui-btn-inner{padding-right:30px}.ui-collapsible-heading .ui-btn span.ui-btn{position:absolute;left:6px;top:50%;margin:-12px 0 0 0;width:20px;height:20px;padding:1px 0 1px 2px;text-indent:-9999px}.ui-collapsible-heading .ui-btn span.ui-btn .ui-btn-inner{padding:10px 0}.ui-collapsible-heading .ui-btn span.ui-btn .ui-icon{left:0;margin-top:-10px}.ui-collapsible-heading-status{position:absolute;top:-9999px;left:0}.ui-collapsible-content{display:block;margin:0 -15px;padding:10px 15px;border-left-width:0;border-right-width:0;border-top:0;background-image:none}.ui-collapsible-inset .ui-collapsible-content{margin:0;border-right-width:1px;border-left-width:1px}.ui-collapsible-content-collapsed{display:none}.ui-collapsible-set>.ui-collapsible.ui-corner-all{-webkit-border-radius:0;border-radius:0}.ui-collapsible-heading,.ui-collapsible-heading>.ui-btn{-webkit-border-radius:inherit;border-radius:inherit}.ui-collapsible-set .ui-collapsible.ui-first-child{-webkit-border-top-right-radius:inherit;border-top-right-radius:inherit;-webkit-border-top-left-radius:inherit;border-top-left-radius:inherit}.ui-collapsible-content,.ui-collapsible-set .ui-collapsible.ui-last-child{-webkit-border-bottom-right-radius:inherit;border-bottom-right-radius:inherit;-webkit-border-bottom-left-radius:inherit;border-bottom-left-radius:inherit}.ui-collapsible-themed-content:not(.ui-collapsible-collapsed)>.ui-collapsible-heading{-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0}.ui-collapsible-set{margin:.5em 0}.ui-collapsible-set .ui-collapsible{margin:-1px 0 0}.ui-collapsible-set .ui-collapsible.ui-first-child{margin-top:0}.ui-controlgroup,fieldset.ui-controlgroup{padding:0;margin:.5em 0;zoom:1}.ui-controlgroup.ui-mini,fieldset.ui-controlgroup.ui-mini{margin:.25em 0}.ui-field-contain .ui-controlgroup,.ui-field-contain fieldset.ui-controlgroup{margin:0}.ui-bar .ui-controlgroup{margin:0 5px}.ui-controlgroup-label{font-size:16px;line-height:1.4;font-weight:400;margin:0 0 .4em}.ui-controlgroup-controls label.ui-select,.ui-controlgroup-controls label.ui-submit{position:absolute;left:-9999px}.ui-controlgroup li{list-style:none}.ui-controlgroup .ui-btn{margin:0}.ui-controlgroup .ui-btn-icon-notext{width:auto;height:auto;top:auto}.ui-controlgroup .ui-btn-icon-notext .ui-btn-inner{height:20px;padding:.6em 20px}.ui-controlgroup-horizontal .ui-btn-icon-notext .ui-btn-inner{width:18px}.ui-controlgroup.ui-mini .ui-btn-icon-notext .ui-btn-inner,.ui-header .ui-controlgroup .ui-btn-icon-notext .ui-btn-inner,.ui-footer .ui-controlgroup .ui-btn-icon-notext .ui-btn-inner{height:16px;padding:.55em 11px .5em}.ui-controlgroup .ui-btn-icon-notext .ui-btn-inner .ui-icon{position:absolute;top:50%;right:50%;margin:-9px -9px 0 0}.ui-controlgroup-horizontal .ui-btn-inner{text-align:center}.ui-controlgroup-horizontal.ui-mini .ui-btn-inner{height:16px;line-height:16px}.ui-controlgroup .ui-checkbox label,.ui-controlgroup .ui-radio label{font-size:16px}.ui-controlgroup-horizontal .ui-controlgroup-controls:before,.ui-controlgroup-horizontal .ui-controlgroup-controls:after{content:"";display:table}.ui-controlgroup-horizontal .ui-controlgroup-controls:after{clear:both}.ui-controlgroup-horizontal .ui-controlgroup-controls{display:inline-block;vertical-align:middle;zoom:1}.ui-controlgroup-horizontal .ui-controlgroup-controls>.ui-btn,.ui-controlgroup-horizontal .ui-controlgroup-controls li>.ui-btn,.ui-controlgroup-horizontal .ui-checkbox,.ui-controlgroup-horizontal .ui-radio,.ui-controlgroup-horizontal .ui-select{float:left;clear:none;margin:0}.ui-controlgroup-horizontal .ui-select .ui-btn-text{width:auto}.ui-controlgroup-vertical .ui-btn{border-bottom-width:0}.ui-controlgroup-vertical .ui-btn.ui-last-child{border-bottom-width:1px}.ui-controlgroup-horizontal .ui-btn{border-right-width:0}.ui-controlgroup-horizontal .ui-btn.ui-last-child{border-right-width:1px}.ui-controlgroup .ui-btn-corner-all{-webkit-border-radius:0;border-radius:0}.ui-controlgroup .ui-controlgroup-controls,.ui-controlgroup .ui-radio,.ui-controlgroup .ui-checkbox,.ui-controlgroup .ui-select,.ui-controlgroup li{-webkit-border-radius:inherit;border-radius:inherit}.ui-controlgroup-vertical .ui-btn.ui-first-child{-webkit-border-top-left-radius:inherit;border-top-left-radius:inherit;-webkit-border-top-right-radius:inherit;border-top-right-radius:inherit}.ui-controlgroup-vertical .ui-btn.ui-last-child{-webkit-border-bottom-left-radius:inherit;border-bottom-left-radius:inherit;-webkit-border-bottom-right-radius:inherit;border-bottom-right-radius:inherit}.ui-controlgroup-horizontal .ui-btn.ui-first-child{-webkit-border-top-left-radius:inherit;border-top-left-radius:inherit;-webkit-border-bottom-left-radius:inherit;border-bottom-left-radius:inherit}.ui-controlgroup-horizontal .ui-btn.ui-last-child{-webkit-border-top-right-radius:inherit;border-top-right-radius:inherit;-webkit-border-bottom-right-radius:inherit;border-bottom-right-radius:inherit}.ui-controlgroup .ui-shadow:not(.ui-focus){-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none}@media all and (min-width:28em){.ui-field-contain .ui-controlgroup-label{vertical-align:top;display:inline-block;width:20%;margin:0 2% 0 0}.ui-field-contain .ui-controlgroup-controls{width:78%;display:inline-block}.ui-field-contain .ui-controlgroup .ui-select{width:100%;display:block}.ui-field-contain .ui-controlgroup-horizontal .ui-select{width:auto}.ui-hide-label .ui-controlgroup-controls{width:100%}}.ui-dialog{background:none!important}.ui-dialog-contain{width:92.5%;max-width:500px;margin:10% auto 15px;padding:0;position:relative;top:-15px}.ui-dialog-contain>.ui-header,.ui-dialog-contain>.ui-content,.ui-dialog-contain>.ui-footer{display:block;position:relative;width:auto;margin:0}.ui-dialog-contain>.ui-header{border:0;overflow:hidden;z-index:10;padding:0}.ui-dialog-contain>.ui-content{padding:15px}.ui-dialog-contain>.ui-footer{z-index:10;padding:0 15px}.ui-popup-open .ui-header-fixed,.ui-popup-open .ui-footer-fixed{position:absolute!important}.ui-popup-screen{background-image:url(data:image/gif;base64,R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==);top:0;left:0;right:0;bottom:1px;position:absolute;filter:Alpha(Opacity=0);opacity:0;z-index:1099}.ui-popup-screen.in{opacity:.5;filter:Alpha(Opacity=50)}.ui-popup-screen.out{opacity:0;filter:Alpha(Opacity=0)}.ui-popup-container{z-index:1100;display:inline-block;position:absolute;padding:0;outline:0}.ui-popup{position:relative}.ui-popup.ui-content,.ui-popup .ui-content{overflow:visible}.ui-popup>p,.ui-popup>h1,.ui-popup>h2,.ui-popup>h3,.ui-popup>h4,.ui-popup>h5,.ui-popup>h6{margin:.5em 7px}.ui-popup>span{display:block;margin:.5em 7px}.ui-popup .ui-title{font-size:16px;font-weight:700;margin-top:.5em;margin-bottom:.5em}.ui-popup-container .ui-content>p,.ui-popup-container .ui-content>h1,.ui-popup-container .ui-content>h2,.ui-popup-container .ui-content>h3,.ui-popup-container .ui-content>h4,.ui-popup-container .ui-content>h5,.ui-popup-container .ui-content>h6{margin:.5em 0}.ui-popup-container .ui-content>span{margin:0}.ui-popup-container .ui-content>p:first-child,.ui-popup-container .ui-content>h1:first-child,.ui-popup-container .ui-content>h2:first-child,.ui-popup-container .ui-content>h3:first-child,.ui-popup-container .ui-content>h4:first-child,.ui-popup-container .ui-content>h5:first-child,.ui-popup-container .ui-content>h6:first-child{margin-top:0}.ui-popup-container .ui-content>p:last-child,.ui-popup-container .ui-content>h1:last-child,.ui-popup-container .ui-content>h2:last-child,.ui-popup-container .ui-content>h3:last-child,.ui-popup-container .ui-content>h4:last-child,.ui-popup-container .ui-content>h5:last-child,.ui-popup-container .ui-content>h6:last-child{margin-bottom:0}.ui-popup>img{width:auto;height:auto;max-width:100%;max-height:100%;vertical-align:middle}.ui-popup:not(.ui-content)>img:only-child,.ui-popup:not(.ui-content)>.ui-btn-left:first-child+img:last-child,.ui-popup:not(.ui-content)>.ui-btn-right:first-child+img:last-child{-webkit-border-radius:inherit;border-radius:inherit}.ui-popup iframe{vertical-align:middle}@media all and (min-width:28em){.ui-popup .ui-field-contain label.ui-submit,.ui-popup .ui-field-contain .ui-controlgroup-label,.ui-popup .ui-field-contain label.ui-select,.ui-popup .ui-field-contain label.ui-input-text{font-size:16px;line-height:1.4;display:block;font-weight:400;margin:0 0 .3em}.ui-popup .ui-field-contain .ui-btn.ui-submit,.ui-popup .ui-field-contain .ui-controlgroup-controls,.ui-popup .ui-field-contain .ui-select,.ui-popup .ui-field-contain input.ui-input-text,.ui-popup .ui-field-contain textarea.ui-input-text,.ui-popup .ui-field-contain .ui-input-search{width:100%;display:block}}.ui-popup>.ui-btn-left,.ui-popup>.ui-btn-right{position:absolute;top:-9px;margin:0;z-index:1101}.ui-popup>.ui-btn-left{left:-9px}.ui-popup>.ui-btn-right{right:-9px}.ui-popup-hidden{top:-99999px;left:-9999px}.ui-checkbox,.ui-radio{position:relative;clear:both;margin:0;z-index:1}.ui-checkbox .ui-btn,.ui-radio .ui-btn{text-align:left;z-index:2}.ui-controlgroup .ui-checkbox .ui-btn,.ui-controlgroup .ui-radio .ui-btn{margin:0}.ui-checkbox .ui-btn-inner,.ui-radio .ui-btn-inner{white-space:normal}.ui-checkbox .ui-btn-icon-left .ui-btn-inner,.ui-radio .ui-btn-icon-left .ui-btn-inner{padding-left:45px}.ui-checkbox .ui-mini.ui-btn-icon-left .ui-btn-inner,.ui-radio .ui-mini.ui-btn-icon-left .ui-btn-inner{padding-left:36px}.ui-checkbox .ui-btn-icon-right .ui-btn-inner,.ui-radio .ui-btn-icon-right .ui-btn-inner{padding-right:45px}.ui-checkbox .ui-mini.ui-btn-icon-right .ui-btn-inner,.ui-radio .ui-mini.ui-btn-icon-right .ui-btn-inner{padding-right:36px}.ui-checkbox .ui-btn-icon-top .ui-btn-inner,.ui-radio .ui-btn-icon-top .ui-btn-inner{padding-right:0;padding-left:0;text-align:center}.ui-checkbox .ui-btn-icon-bottom .ui-btn-inner,.ui-radio .ui-btn-icon-bottom .ui-btn-inner{padding-right:0;padding-left:0;text-align:center}.ui-checkbox .ui-icon,.ui-radio .ui-icon{top:1.1em}.ui-checkbox .ui-btn-icon-left .ui-icon,.ui-radio .ui-btn-icon-left .ui-icon{left:15px}.ui-checkbox .ui-mini.ui-btn-icon-left .ui-icon,.ui-radio .ui-mini.ui-btn-icon-left .ui-icon{left:9px}.ui-checkbox .ui-btn-icon-right .ui-icon,.ui-radio .ui-btn-icon-right .ui-icon{right:15px}.ui-checkbox .ui-mini.ui-btn-icon-right .ui-icon,.ui-radio .ui-mini.ui-btn-icon-right .ui-icon{right:9px}.ui-checkbox .ui-btn-icon-top .ui-icon,.ui-radio .ui-btn-icon-top .ui-icon{top:10px}.ui-checkbox .ui-btn-icon-bottom .ui-icon,.ui-radio .ui-btn-icon-bottom .ui-icon{top:auto;bottom:10px}.ui-checkbox .ui-btn-icon-right .ui-icon,.ui-radio .ui-btn-icon-right .ui-icon{right:15px}.ui-checkbox .ui-mini.ui-btn-icon-right .ui-icon,.ui-radio .ui-mini.ui-btn-icon-right .ui-icon{right:9px}.ui-controlgroup-horizontal .ui-checkbox .ui-icon,.ui-controlgroup-horizontal .ui-radio .ui-icon{display:none}.ui-controlgroup-horizontal .ui-checkbox .ui-btn-inner,.ui-controlgroup-horizontal .ui-radio .ui-btn-inner{padding:.6em 20px}.ui-controlgroup-horizontal .ui-checkbox .ui-mini .ui-btn-inner,.ui-controlgroup-horizontal .ui-radio .ui-mini .ui-btn-inner{padding:.55em 11px .5em}.ui-checkbox input,.ui-radio input{position:absolute;left:20px;top:50%;width:10px;height:10px;margin:-5px 0 0 0;outline:0!important;z-index:1}.ui-field-contain,fieldset.ui-field-contain{padding:.8em 0;margin:0;border-width:0 0 1px;overflow:visible}.ui-field-contain:last-child{border-bottom-width:0}.ui-field-contain{max-width:100%}@media all and (min-width:28em){.ui-field-contain,.ui-mobile fieldset.ui-field-contain{border-width:0;padding:0;margin:1em 0}}.ui-select{display:block;position:relative}.ui-select select{position:absolute;left:-9999px;top:-9999px}.ui-select .ui-btn{opacity:1}.ui-field-contain .ui-select .ui-btn{margin:0}.ui-select .ui-btn select{cursor:pointer;-webkit-appearance:none;left:0;top:0;width:100%;min-height:1.5em;min-height:100%;height:3em;max-height:100%;filter:Alpha(Opacity=0);opacity:0;z-index:2}.ui-select .ui-disabled{opacity:.3}.ui-select .ui-disabled select{display:none}@-moz-document url-prefix(){.ui-select .ui-btn select{opacity:.0001}}.ui-select .ui-btn.ui-select-nativeonly{border-radius:0;border:0}.ui-select .ui-btn.ui-select-nativeonly select{opacity:1;text-indent:0;display:block}.ui-select .ui-disabled.ui-select-nativeonly .ui-btn-inner{opacity:0}.ui-select .ui-btn-icon-right .ui-btn-inner,.ui-select .ui-li-has-count .ui-btn-inner{padding-right:45px}.ui-select .ui-mini.ui-btn-icon-right .ui-btn-inner{padding-right:32px}.ui-select .ui-btn-icon-right.ui-li-has-count .ui-btn-inner{padding-right:80px}.ui-select .ui-mini.ui-btn-icon-right.ui-li-has-count .ui-btn-inner{padding-right:67px}.ui-select .ui-btn-icon-right .ui-icon{right:15px}.ui-select .ui-mini.ui-btn-icon-right .ui-icon{right:7px}.ui-select .ui-btn-icon-right.ui-li-has-count .ui-li-count{right:45px}.ui-select .ui-mini.ui-btn-icon-right.ui-li-has-count .ui-li-count{right:32px}label.ui-select{font-size:16px;line-height:1.4;font-weight:400;margin:0 0 .3em;display:block}.ui-select .ui-btn-text,.ui-selectmenu .ui-btn-text{display:block;min-height:1em;overflow:hidden!important}.ui-select .ui-btn-text{text-overflow:ellipsis}.ui-selectmenu{padding:6px;min-width:160px}.ui-selectmenu .ui-listview{margin:0}.ui-selectmenu .ui-btn.ui-li-divider{cursor:default}.ui-screen-hidden,.ui-selectmenu-list .ui-li .ui-icon{display:none}.ui-selectmenu-list .ui-li .ui-icon{display:block}.ui-li.ui-selectmenu-placeholder{display:none}.ui-selectmenu .ui-header{margin:0;padding:0}.ui-selectmenu.ui-popup .ui-header{-webkit-border-top-left-radius:0;border-top-left-radius:0;-webkit-border-top-right-radius:0;border-top-right-radius:0}.ui-selectmenu .ui-header .ui-title{margin:.6em 46px .8em}@media all and (min-width:28em){.ui-field-contain label.ui-select{vertical-align:top;display:inline-block;width:20%;margin:0 2% 0 0}.ui-field-contain .ui-select{width:78%;display:inline-block}.ui-hide-label .ui-select{width:100%}}.ui-selectmenu .ui-header h1:after{content:'.';visibility:hidden}label.ui-input-text{font-size:16px;line-height:1.4;display:block;font-weight:400;margin:0 0 .3em}input.ui-input-text,textarea.ui-input-text{background-image:none;padding:.4em;margin:.5em 0;min-height:1.4em;line-height:1.4em;font-size:16px;display:block;width:100%;outline:0}input.ui-mini,.ui-mini input,textarea.ui-mini{font-size:14px}div.ui-input-text input.ui-input-text,div.ui-input-text textarea.ui-input-text,.ui-input-search input.ui-input-text{border:0;width:100%;padding:.4em 0;margin:0;display:block;background:transparent none;outline:0!important}.ui-input-search,div.ui-input-text{margin:.5em 0;background-image:none;position:relative}.ui-input-search{padding:0 30px}div.ui-input-text{padding:0 .4em}div.ui-input-has-clear{padding:0 30px 0 .4em}input.ui-input-text.ui-mini,textarea.ui-input-text.ui-mini,.ui-input-search.ui-mini,div.ui-input-text.ui-mini{margin:.25em 0}.ui-field-contain input.ui-input-text,.ui-field-contain textarea.ui-input-text,.ui-field-contain .ui-input-search,.ui-field-contain div.ui-input-text{margin:0}textarea.ui-input-text{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}input.ui-input-text{-webkit-appearance:none}textarea.ui-input-text{height:50px;-webkit-transition:height 200ms linear;-moz-transition:height 200ms linear;-o-transition:height 200ms linear;transition:height 200ms linear}textarea.ui-mini{height:45px}.ui-icon-searchfield:after{position:absolute;left:7px;top:50%;margin-top:-9px;content:"";width:18px;height:18px;opacity:.5}.ui-input-search .ui-input-clear,.ui-input-text .ui-input-clear{position:absolute;right:0;top:50%;margin-top:-13px}.ui-mini .ui-input-clear{right:-3px}.ui-input-search .ui-input-clear-hidden,.ui-input-text .ui-input-clear-hidden{display:none}input::-moz-placeholder,textarea::-moz-placeholder{color:#aaa}input[type=number]::-webkit-outer-spin-button{margin:0}@media all and (min-width:28em){.ui-field-contain label.ui-input-text{vertical-align:top;display:inline-block;width:20%;margin:0 2% 0 0}.ui-field-contain input.ui-input-text,.ui-field-contain textarea.ui-input-text,.ui-field-contain .ui-input-search,.ui-field-contain div.ui-input-text{width:78%;display:inline-block}.ui-field-contain .ui-input-search,.ui-field-contain div.ui-input-text{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}.ui-hide-label input.ui-input-text,.ui-hide-label textarea.ui-input-text,.ui-hide-label .ui-input-search,.ui-hide-label div.ui-input-text,.ui-input-search input.ui-input-text,div.ui-input-text input.ui-input-text{width:100%}}.ui-rangeslider{zoom:1;margin:0}.ui-rangeslider:before,.ui-rangeslider:after{content:"";display:table}.ui-rangeslider:after{clear:both}.ui-rangeslider input.ui-input-text.ui-slider-input{margin:.57143em 0}.ui-rangeslider.ui-mini input.ui-slider-input{margin:.28571em 0}.ui-rangeslider input.ui-slider-input.ui-rangeslider-last{float:right}.ui-rangeslider .ui-rangeslider-sliders{position:relative;overflow:visible;height:30px;margin:.5em 68px}.ui-rangeslider.ui-mini .ui-rangeslider-sliders{margin:.25em 68px}.ui-field-contain .ui-rangeslider input.ui-slider-input,.ui-field-contain .ui-rangeslider.ui-mini input.ui-slider-input,.ui-field-contain .ui-rangeslider .ui-rangeslider-sliders,.ui-field-contain .ui-rangeslider.ui-mini .ui-rangeslider-sliders{margin-top:0;margin-bottom:0}.ui-rangeslider .ui-rangeslider-sliders .ui-slider-track{position:absolute;top:6px;right:0;left:0;margin:0}.ui-rangeslider.ui-mini .ui-rangeslider-sliders .ui-slider-track{top:8px}.ui-rangeslider .ui-slider-track:first-child .ui-slider-bg{display:none}.ui-rangeslider .ui-rangeslider-sliders .ui-slider-track:first-child{background-color:transparent;background:0;border-width:0;height:0}html >body .ui-rangeslider .ui-rangeslider-sliders .ui-slider-track:first-child{height:15px;border-width:1px}html >body .ui-rangeslider.ui-mini .ui-rangeslider-sliders .ui-slider-track:first-child{height:12px}@media all and (min-width:28em){.ui-field-contain .ui-rangeslider label.ui-slider{float:left}.ui-field-contain .ui-rangeslider input.ui-slider-input{position:relative;z-index:1}.ui-field-contain .ui-rangeslider input.ui-slider-input.ui-rangeslider-first,.ui-field-contain .ui-rangeslider.ui-mini input.ui-slider-input.ui-rangeslider-first{margin-right:17px}.ui-field-contain .ui-rangeslider .ui-rangeslider-sliders,.ui-field-contain .ui-rangeslider.ui-mini .ui-rangeslider-sliders{float:left;width:78%;margin:0 -68px}.ui-field-contain .ui-rangeslider .ui-slider-track,.ui-field-contain .ui-rangeslider.ui-mini .ui-slider-track{right:68px;left:68px}.ui-field-contain.ui-hide-label .ui-rangeslider input.ui-slider-input.ui-rangeslider-first{margin:0}.ui-field-contain.ui-hide-label .ui-rangeslider .ui-rangeslider-sliders,.ui-field-contain.ui-hide-label .ui-rangeslider.ui-mini .ui-rangeslider-sliders{width:auto;float:none;margin:0 68px}.ui-field-contain.ui-hide-label .ui-rangeslider .ui-slider-track,.ui-field-contain.ui-hide-label .ui-rangeslider.ui-mini .ui-slider-track{right:0;left:0}}.ui-listview{margin:0}ol.ui-listview,ol.ui-listview .ui-li-divider{counter-reset:listnumbering}.ui-content .ui-listview,.ui-panel-inner>.ui-listview{margin:-15px}.ui-collapsible-content>.ui-listview{margin:-10px -15px}.ui-content .ui-listview-inset,.ui-panel-inner .ui-listview-inset{margin:1em 0}.ui-collapsible-content .ui-listview-inset{margin:.5em 0}.ui-listview,.ui-li{list-style:none;padding:0}.ui-li,.ui-li.ui-field-contain{display:block;margin:0;position:relative;overflow:visible;text-align:left;border-width:0;border-top-width:1px}.ui-li.ui-btn,.ui-li.ui-field-contain,.ui-li-divider,.ui-li-static{margin:0}.ui-listview-inset .ui-li{border-right-width:1px;border-left-width:1px}.ui-li.ui-last-child,.ui-li.ui-field-contain.ui-last-child{border-bottom-width:1px}.ui-collapsible-content>.ui-listview:not(.ui-listview-inset)>.ui-li.ui-first-child{border-top-width:0}.ui-collapsible-themed-content .ui-listview:not(.ui-listview-inset)>.ui-li.ui-last-child{border-bottom-width:0}.ui-li .ui-btn-text a.ui-link-inherit{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.ui-li-static{background-image:none}.ui-li-divider{padding:.5em 15px;font-size:14px;font-weight:700}ol.ui-listview .ui-link-inherit:before,ol.ui-listview .ui-li-static:before,.ui-li-dec{font-size:.8em;display:inline-block;padding-right:.3em;font-weight:400;counter-increment:listnumbering;content:counter(listnumbering) ". "}ol.ui-listview .ui-li-jsnumbering:before{content:""!important}.ui-listview .ui-li>.ui-btn-text{-webkit-border-radius:inherit;border-radius:inherit}.ui-listview>.ui-li.ui-first-child,.ui-listview .ui-btn.ui-first-child>.ui-li>.ui-btn-text>.ui-link-inherit{-webkit-border-top-right-radius:inherit;border-top-right-radius:inherit;-webkit-border-top-left-radius:inherit;border-top-left-radius:inherit}.ui-listview>.ui-li.ui-last-child,.ui-listview .ui-btn.ui-last-child>.ui-li>.ui-btn-text>.ui-link-inherit,.ui-collapsible-content>.ui-listview:not(.ui-listview-inset),.ui-collapsible-content>.ui-listview:not(.ui-listview-inset) .ui-li.ui-last-child{-webkit-border-bottom-right-radius:inherit;border-bottom-right-radius:inherit;-webkit-border-bottom-left-radius:inherit;border-bottom-left-radius:inherit}.ui-listview>.ui-li.ui-first-child .ui-li-link-alt{-webkit-border-top-right-radius:inherit;border-top-right-radius:inherit}.ui-listview>.ui-li.ui-last-child .ui-li-link-alt{-webkit-border-bottom-right-radius:inherit;border-bottom-right-radius:inherit}.ui-listview>.ui-li.ui-first-child .ui-li-thumb:not(.ui-li-icon){-webkit-border-top-left-radius:inherit;border-top-left-radius:inherit}.ui-listview>.ui-li.ui-last-child .ui-li-thumb:not(.ui-li-icon){-webkit-border-bottom-left-radius:inherit;border-bottom-left-radius:inherit}.ui-li>.ui-btn-inner{display:block;position:relative;padding:0}.ui-li .ui-btn-inner a.ui-link-inherit,.ui-li-static.ui-li{padding:.7em 15px;display:block}.ui-li-has-thumb .ui-btn-inner a.ui-link-inherit,.ui-li-static.ui-li-has-thumb{min-height:59px;padding-left:100px}.ui-li-has-icon .ui-btn-inner a.ui-link-inherit,.ui-li-static.ui-li-has-icon{min-height:20px;padding-left:40px}.ui-li-has-count .ui-btn-inner a.ui-link-inherit,.ui-li-static.ui-li-has-count,.ui-li-divider.ui-li-has-count{padding-right:45px}.ui-li-has-arrow .ui-btn-inner a.ui-link-inherit,.ui-li-static.ui-li-has-arrow{padding-right:40px}.ui-li-has-arrow.ui-li-has-count .ui-btn-inner a.ui-link-inherit,.ui-li-static.ui-li-has-arrow.ui-li-has-count{padding-right:75px}.ui-li-heading{font-size:16px;font-weight:700;display:block;margin:.6em 0;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.ui-li-desc{font-size:12px;font-weight:400;display:block;margin:-.5em 0 .6em;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}ol.ui-listview>.ui-li .ui-li-heading{display:inline-block;width:100%;margin-left:-1.3em;text-indent:1.3em;vertical-align:middle}ol.ui-listview>.ui-li .ui-li-desc:not(.ui-li-aside){text-indent:1.55em}.ui-li-thumb,.ui-listview .ui-li-icon{position:absolute;left:1px;top:0;max-height:80px;max-width:80px}.ui-listview .ui-li-icon{max-height:16px;max-width:16px;left:10px;top:.9em}.ui-li-thumb,.ui-listview .ui-li-icon,.ui-li-content{float:left;margin-right:10px}.ui-li-aside{float:right;width:50%;text-align:right;margin:.3em 0}@media all and (min-width:480px){.ui-li-aside{width:45%}}.ui-li-divider{cursor:default}.ui-li-has-alt .ui-btn-inner a.ui-link-inherit,.ui-li-static.ui-li-has-alt{padding-right:53px}.ui-li-has-alt.ui-li-has-count .ui-btn-inner a.ui-link-inherit,.ui-li-static.ui-li-has-alt.ui-li-has-count{padding-right:88px}.ui-li-has-count .ui-li-count{position:absolute;font-size:11px;font-weight:700;padding:.2em .5em;top:50%;margin-top:-.9em;right:10px}.ui-li-has-count.ui-li-divider .ui-li-count,.ui-li-has-count .ui-link-inherit .ui-li-count{margin-top:-.95em}.ui-li-has-arrow.ui-li-has-count .ui-li-count{right:40px}.ui-li-has-alt.ui-li-has-count .ui-li-count{right:53px}.ui-li-link-alt{position:absolute;width:40px;height:100%;border-width:0;border-left-width:1px;top:0;right:0;margin:0;padding:0;z-index:2}.ui-li-link-alt .ui-btn{overflow:hidden;position:absolute;right:8px;top:50%;margin:-13px 0 0 0;border-bottom-width:1px;z-index:-1}.ui-li-link-alt .ui-btn-inner{padding:0;height:100%;position:absolute;width:100%;top:0;left:0}.ui-li-link-alt .ui-btn .ui-icon{right:50%;margin-right:-9px}.ui-li-link-alt .ui-btn-icon-notext .ui-btn-inner .ui-icon{position:absolute;top:50%;margin-top:-9px}.ui-listview * .ui-btn-inner>.ui-btn>.ui-btn-inner{border-top:0}.ui-listview-filter{border-width:0;overflow:hidden;margin:-15px -15px 15px -15px}.ui-collapsible-content .ui-listview-filter{margin:-10px -15px 10px -15px;border-bottom:inherit}.ui-listview-filter-inset{margin:-15px -5px;background:transparent}.ui-collapsible-content .ui-listview-filter-inset{margin:-5px;border-bottom-width:0}.ui-listview-filter .ui-input-search{margin:5px;width:auto;display:block}.ui-li.ui-screen-hidden{display:none}@media only screen and (min-device-width:768px) and (max-device-width:1024px){.ui-li .ui-btn-text{overflow:visible}}label.ui-slider{font-size:16px;line-height:1.4;font-weight:400;margin:0;display:block}.ui-field-contain label.ui-slider{margin-bottom:.4em}div.ui-slider{height:30px;margin:.5em 0;zoom:1}div.ui-slider.ui-mini{margin:.25em 0}.ui-field-contain div.ui-slider,.ui-field-contain div.ui-slider.ui-mini{margin:0}div.ui-slider:before,div.ui-slider:after{content:"";display:table}div.ui-slider:after{clear:both}input.ui-input-text.ui-slider-input{display:block;float:left;margin:0;padding:4px;width:40px;height:22px;line-height:22px;font-size:14px;border-width:0;background-image:none;font-weight:700;text-align:center;vertical-align:text-bottom;outline:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;-ms-box-sizing:content-box;box-sizing:content-box}.ui-slider-input::-webkit-outer-spin-button,.ui-slider-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.ui-slider-track,.ui-slider-switch{position:relative;overflow:visible;height:15px;margin:0 15px 0 68px;top:6px}.ui-slider-track.ui-mini{height:12px;top:8px}.ui-slider-bg{border:0;height:100%}.ui-slider-track .ui-btn.ui-slider-handle,.ui-slider-switch .ui-btn.ui-slider-handle{position:absolute;z-index:1;top:50%;width:28px;height:28px;margin:-15px 0 0 -15px;outline:0}.ui-slider-track.ui-mini .ui-slider-handle{height:22px;width:22px;margin:-12px 0 0 -12px}.ui-slider-handle .ui-btn-inner{padding:0;height:100%}.ui-slider-track.ui-mini .ui-slider-handle .ui-btn-inner{height:30px;width:30px;padding:0;margin:-9px 0 0 -9px;border-top:0}select.ui-slider-switch{display:none}div.ui-slider-switch{display:inline-block;height:32px;width:5.8em;margin:.5em 0;top:0}div.ui-slider-switch:before,div.ui-slider-switch:after{display:none;clear:none}div.ui-slider-switch.ui-mini{width:5em;height:29px;margin:.25em 0;top:0}.ui-field-contain .ui-slider-switch,.ui-field-contain .ui-slider-switch.ui-mini{margin:0}.ui-slider-inneroffset{margin:0 16px;position:relative;z-index:1}.ui-slider-switch.ui-mini .ui-slider-inneroffset{margin:0 15px 0 14px}.ui-slider-switch .ui-btn.ui-slider-handle{margin:1px 0 0 -15px}.ui-slider-switch.ui-mini .ui-slider-handle{width:25px;height:25px;margin:1px 0 0 -13px;padding:0}.ui-slider-handle-snapping{-webkit-transition:left 70ms linear;-moz-transition:left 70ms linear}.ui-slider-switch.ui-mini .ui-slider-handle .ui-btn-inner{height:30px;width:30px;padding:0;margin:0;border-top:0}.ui-slider-switch .ui-slider-label{position:absolute;text-align:center;width:100%;overflow:hidden;font-size:16px;top:0;line-height:2;min-height:100%;border-width:0;white-space:nowrap;cursor:pointer}.ui-slider-switch.ui-mini .ui-slider-label{font-size:14px}.ui-slider-switch .ui-slider-label-a{z-index:1;left:0;text-indent:-1.5em}.ui-slider-switch .ui-slider-label-b{z-index:0;right:0;text-indent:1.5em}@media all and (min-width:28em){.ui-field-contain label.ui-slider{vertical-align:top;display:inline-block;width:20%;margin:0 2% 0 0}.ui-field-contain div.ui-slider{display:inline-block;width:78%}.ui-field-contain.ui-hide-label div.ui-slider{display:block;width:auto}.ui-field-contain div.ui-slider-switch,.ui-field-contain.ui-hide-label div.ui-slider-switch{display:inline-block;width:5.8em}.ui-field-contain div.ui-slider-switch.ui-mini{width:5em}}.ui-table{border:0;border-collapse:collapse;padding:0;width:100%}.ui-table th,.ui-table td{line-height:1.5em;text-align:left;padding:.4em .5em;vertical-align:top}.ui-table th .ui-btn,.ui-table td .ui-btn{line-height:normal}.ui-table th{font-weight:700}.ui-table caption{text-align:left;margin-bottom:1.4em;opacity:.5}.table-stroke thead th{border-bottom:1px solid #d6d6d6;border-bottom:1px solid rgba(0,0,0,.1)}.table-stroke tbody th,.table-stroke tbody td{border-bottom:1px solid #e6e6e6;border-bottom:1px solid rgba(0,0,0,.05)}.table-stripe tbody tr:nth-child(odd) td,.table-stripe tbody tr:nth-child(odd) th{background-color:#eee;background-color:rgba(0,0,0,.04)}.table-stripe thead th,.table-stripe tbody tr:last-child{border-bottom:1px solid #d6d6d6;border-bottom:1px solid rgba(0,0,0,.1)}.ui-table-columntoggle-btn{float:right;margin-bottom:.8em}.ui-table-columntoggle-popup fieldset{margin:0}@media only all{th.ui-table-priority-6,td.ui-table-priority-6,th.ui-table-priority-5,td.ui-table-priority-5,th.ui-table-priority-4,td.ui-table-priority-4,th.ui-table-priority-3,td.ui-table-priority-3,th.ui-table-priority-2,td.ui-table-priority-2,th.ui-table-priority-1,td.ui-table-priority-1{display:none}}@media screen and (min-width:20em){.ui-table-columntoggle.ui-responsive th.ui-table-priority-1,.ui-table-columntoggle.ui-responsive td.ui-table-priority-1{display:table-cell}}@media screen and (min-width:30em){.ui-table-columntoggle.ui-responsive th.ui-table-priority-2,.ui-table-columntoggle.ui-responsive td.ui-table-priority-2{display:table-cell}}@media screen and (min-width:40em){.ui-table-columntoggle.ui-responsive th.ui-table-priority-3,.ui-table-columntoggle.ui-responsive td.ui-table-priority-3{display:table-cell}}@media screen and (min-width:50em){.ui-table-columntoggle.ui-responsive th.ui-table-priority-4,.ui-table-columntoggle.ui-responsive td.ui-table-priority-4{display:table-cell}}@media screen and (min-width:60em){.ui-table-columntoggle.ui-responsive th.ui-table-priority-5,.ui-table-columntoggle.ui-responsive td.ui-table-priority-5{display:table-cell}}@media screen and (min-width:70em){.ui-table-columntoggle.ui-responsive th.ui-table-priority-6,.ui-table-columntoggle.ui-responsive td.ui-table-priority-6{display:table-cell}}.ui-table-columntoggle th.ui-table-cell-hidden,.ui-table-columntoggle td.ui-table-cell-hidden,.ui-table-columntoggle.ui-responsive th.ui-table-cell-hidden,.ui-table-columntoggle.ui-responsive td.ui-table-cell-hidden{display:none}.ui-table-columntoggle th.ui-table-cell-visible,.ui-table-columntoggle td.ui-table-cell-visible,.ui-table-columntoggle.ui-responsive th.ui-table-cell-visible,.ui-table-columntoggle.ui-responsive td.ui-table-cell-visible{display:table-cell}.ui-table-reflow td .ui-table-cell-label,.ui-table-reflow th .ui-table-cell-label{display:none}@media only all{.ui-table-reflow thead td,.ui-table-reflow thead th{display:none}.ui-table-reflow td,.ui-table-reflow th{text-align:left;display:block}.ui-table-reflow tbody th{margin-top:3em}.ui-table-reflow td .ui-table-cell-label,.ui-table-reflow th .ui-table-cell-label{display:block;padding:.4em;min-width:30%;display:inline-block;margin:-.4em 1em -.4em -.4em}.ui-table-reflow th .ui-table-cell-label-top,.ui-table-reflow td .ui-table-cell-label-top{display:block;padding:.4em 0;margin:.4em 0;text-transform:uppercase;font-size:.9em;font-weight:400}}@media (min-width:35em){.ui-table-reflow.ui-responsive{display:table-row-group}.ui-table-reflow.ui-responsive td,.ui-table-reflow.ui-responsive th,.ui-table-reflow.ui-responsive tbody th,.ui-table-reflow.ui-responsive tbody td,.ui-table-reflow.ui-responsive thead td,.ui-table-reflow.ui-responsive thead th{display:table-cell;margin:0}.ui-table-reflow.ui-responsive td .ui-table-cell-label,.ui-table-reflow.ui-responsive th .ui-table-cell-label{display:none}}@media (max-width:35em){.ui-table-reflow.ui-responsive td,.ui-table-reflow.ui-responsive th{width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;float:left;clear:left}}.ui-panel{width:17em;min-height:100%;max-height:none;border-width:0;position:absolute;top:0;display:block}.ui-panel-closed{width:0;max-height:100%;overflow:hidden;visibility:hidden}.ui-panel-fixed{position:fixed;bottom:-1px;padding-bottom:1px}.ui-panel-display-overlay{z-index:1001}.ui-panel-display-reveal{z-index:0}.ui-panel-display-push{z-index:999}.ui-panel-inner{padding:15px}.ui-panel-content-wrap{position:relative;left:0;min-height:inherit;border:0;z-index:999}.ui-panel-content-wrap-display-overlay,.ui-panel-animate.ui-panel-content-wrap>.ui-header,.ui-panel-content-wrap-closed{position:static}.ui-panel-dismiss{position:absolute;top:0;left:0;height:100%;width:100%;z-index:1002;display:none}.ui-panel-dismiss-open{display:block}.ui-panel-animate{-webkit-transition:-webkit-transform 350ms ease;-moz-transition:-moz-transform 350ms ease;transition:transform 350ms ease}.ui-panel-animate.ui-panel:not(.ui-panel-display-reveal),.ui-panel-animate.ui-panel:not(.ui-panel-display-reveal)>div,.ui-panel-animate.ui-panel-closed.ui-panel-display-reveal>div,.ui-panel-animate.ui-panel-content-wrap,.ui-panel-animate.ui-panel-content-fixed-toolbar{-webkit-backface-visibility:hidden;-webkit-transform:translate3d(0,0,0)}.ui-panel-position-left{left:-17em}.ui-panel-animate.ui-panel-position-left.ui-panel-display-overlay,.ui-panel-animate.ui-panel-position-left.ui-panel-display-push{left:0;-webkit-transform:translate3d(-17em,0,0);-moz-transform:translate3d(-17em,0,0);transform:translate3d(-17em,0,0)}.ui-panel-position-left.ui-panel-display-reveal,.ui-panel-position-left.ui-panel-open{left:0}.ui-panel-animate.ui-panel-position-left.ui-panel-open.ui-panel-display-overlay,.ui-panel-animate.ui-panel-position-left.ui-panel-open.ui-panel-display-push{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);-moz-transform:none}.ui-panel-position-right{right:-17em}.ui-panel-animate.ui-panel-position-right.ui-panel-display-overlay,.ui-panel-animate.ui-panel-position-right.ui-panel-display-push{right:0;-webkit-transform:translate3d(17em,0,0);-moz-transform:translate3d(17em,0,0);transform:translate3d(17em,0,0)}.ui-panel-position-right.ui-panel-display-reveal,.ui-panel-position-right.ui-panel-open{right:0}.ui-panel-animate.ui-panel-position-right.ui-panel-open.ui-panel-display-overlay,.ui-panel-animate.ui-panel-position-right.ui-panel-open.ui-panel-display-push{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);-moz-transform:none}.ui-panel-content-fixed-toolbar-position-left.ui-panel-content-fixed-toolbar-open,.ui-panel-content-wrap-position-left.ui-panel-content-wrap-open,.ui-panel-dismiss-position-left.ui-panel-dismiss-open{left:17em;right:-17em}.ui-panel-animate.ui-panel-content-fixed-toolbar-position-left.ui-panel-content-fixed-toolbar-open.ui-panel-content-fixed-toolbar-display-reveal,.ui-panel-animate.ui-panel-content-fixed-toolbar-position-left.ui-panel-content-fixed-toolbar-open.ui-panel-content-fixed-toolbar-display-push,.ui-panel-animate.ui-panel-content-wrap-position-left.ui-panel-content-wrap-open.ui-panel-content-wrap-display-reveal,.ui-panel-animate.ui-panel-content-wrap-position-left.ui-panel-content-wrap-open.ui-panel-content-wrap-display-push{left:0;right:0;-webkit-transform:translate3d(17em,0,0);-moz-transform:translate3d(17em,0,0);transform:translate3d(17em,0,0)}.ui-panel-content-fixed-toolbar-position-right.ui-panel-content-fixed-toolbar-open,.ui-panel-content-wrap-position-right.ui-panel-content-wrap-open,.ui-panel-dismiss-position-right.ui-panel-dismiss-open{left:-17em;right:17em}.ui-panel-animate.ui-panel-content-fixed-toolbar-position-right.ui-panel-content-fixed-toolbar-open.ui-panel-content-fixed-toolbar-display-reveal,.ui-panel-animate.ui-panel-content-fixed-toolbar-position-right.ui-panel-content-fixed-toolbar-open.ui-panel-content-fixed-toolbar-display-push,.ui-panel-animate.ui-panel-content-wrap-position-right.ui-panel-content-wrap-open.ui-panel-content-wrap-display-reveal,.ui-panel-animate.ui-panel-content-wrap-position-right.ui-panel-content-wrap-open.ui-panel-content-wrap-display-push{left:0;right:0;-webkit-transform:translate3d(-17em,0,0);-moz-transform:translate3d(-17em,0,0);transform:translate3d(-17em,0,0)}.ui-panel-content-fixed-toolbar-open.ui-panel-content-fixed-toolbar-display-overlay,.ui-panel-content-wrap-open.ui-panel-content-wrap-display-overlay{left:0}.ui-page-active.ui-page-panel{overflow-x:hidden}.ui-panel-display-reveal{-webkit-box-shadow:inset -5px 0 5px rgba(0,0,0,.15);-moz-box-shadow:inset -5px 0 5px rgba(0,0,0,.15);box-shadow:inset -5px 0 5px rgba(0,0,0,.15)}.ui-panel-position-right.ui-panel-display-reveal{-webkit-box-shadow:inset 5px 0 5px rgba(0,0,0,.15);-moz-box-shadow:inset 5px 0 5px rgba(0,0,0,.15);box-shadow:inset 5px 0 5px rgba(0,0,0,.15)}.ui-panel-display-overlay{-webkit-box-shadow:5px 0 5px rgba(0,0,0,.15);-moz-box-shadow:5px 0 5px rgba(0,0,0,.15);box-shadow:5px 0 5px rgba(0,0,0,.15)}.ui-panel-position-right.ui-panel-display-overlay{-webkit-box-shadow:-5px 0 5px rgba(0,0,0,.15);-moz-box-shadow:-5px 0 5px rgba(0,0,0,.15);box-shadow:-5px 0 5px rgba(0,0,0,.15)}.ui-panel-display-push.ui-panel-open.ui-panel-position-left{border-right-width:1px;margin-right:-1px}.ui-panel-animate.ui-panel-content-fixed-toolbar-position-left.ui-panel-content-fixed-toolbar-open.ui-panel-content-fixed-toolbar-display-push{margin-left:1px}.ui-panel-display-push.ui-panel-open.ui-panel-position-right{border-left-width:1px;margin-left:-1px}.ui-panel-animate.ui-panel-content-fixed-toolbar-position-right.ui-panel-content-fixed-toolbar-open.ui-panel-content-fixed-toolbar-display-push{margin-right:1px}@media (min-width:55em){.ui-responsive-panel.ui-page-panel-open .ui-panel-content-fixed-toolbar-display-push.ui-panel-content-fixed-toolbar-position-left,.ui-responsive-panel.ui-page-panel-open .ui-panel-content-fixed-toolbar-display-reveal.ui-panel-content-fixed-toolbar-position-left,.ui-responsive-panel.ui-page-panel-open .ui-panel-content-wrap-display-push.ui-panel-content-wrap-position-left,.ui-responsive-panel.ui-page-panel-open .ui-panel-content-wrap-display-reveal.ui-panel-content-wrap-position-left{margin-right:17em}.ui-responsive-panel.ui-page-panel-open .ui-panel-content-fixed-toolbar-display-push.ui-panel-content-fixed-toolbar-position-right,.ui-responsive-panel.ui-page-panel-open .ui-panel-content-fixed-toolbar-display-reveal.ui-panel-content-fixed-toolbar-position-right,.ui-responsive-panel.ui-page-panel-open .ui-panel-content-wrap-display-push.ui-panel-content-wrap-position-right,.ui-responsive-panel.ui-page-panel-open .ui-panel-content-wrap-display-reveal.ui-panel-content-wrap-position-right{margin-left:17em}.ui-responsive-panel.ui-page-panel-open .ui-panel-content-fixed-toolbar-display-push,.ui-responsive-panel.ui-page-panel-open .ui-panel-content-fixed-toolbar-display-reveal{width:auto}.ui-responsive-panel .ui-panel-dismiss-display-push{display:none}}.ui-collapsible-inset .ui-collapsible-content{margin:0;border-right-width:2px;border-left-width:2px} \ No newline at end of file +@font-face{font-family:Lato;font-style:normal;font-weight:400;src:local('Lato Regular'),local('Lato-Regular'),url(fonts/lato-regular.woff) format('woff'),url(fonts/lato-regular.ttf) format('truetype')}@font-face{font-family:Lato;font-style:normal;font-weight:700;src:local('Lato Bold'),local('Lato-Bold'),url(fonts/lato-bold.woff) format('woff'),url(fonts/lato-bold.ttf) format('truetype')}@font-face{font-family:Lato;font-style:normal;font-weight:900;src:local('Lato Black'),local('Lato-Black'),url(fonts/lato-black.woff) format('woff'),url(fonts/lato-black.ttf) format('truetype')}@font-face{font-family:Lato;font-style:italic;font-weight:400;src:local('Lato Italic'),local('Lato-Italic'),url(fonts/lato-italic.woff) format('woff'),url(fonts/lato-italic.ttf) format('truetype')}@font-face{font-family:Flat-UI-Icons-24;font-weight:400;font-style:normal;src:url(fonts/Flat-UI-Icons-24.woff) format("woff"),url(fonts/Flat-UI-Icons-24.ttf) format('truetype')}.ui-icon-flat-video:before,.ui-icon-flat-time:before,.ui-icon-flat-settings:before,.ui-icon-flat-plus:before,.ui-icon-flat-new:before,.ui-icon-flat-menu:before,.ui-icon-flat-man:before,.ui-icon-flat-mail:before,.ui-icon-flat-lock:before,.ui-icon-flat-location:before,.ui-icon-flat-heart:before,.ui-icon-flat-eye:before,.ui-icon-flat-cross:before,.ui-icon-flat-cmd:before,.ui-icon-flat-checkround:before,.ui-icon-flat-checkmark:before,.ui-icon-flat-calendar:before,.ui-icon-flat-bubble:before,.ui-icon-flat-volume:before,.ui-icon-flat-camera:before{font-family:Flat-UI-Icons-24;speak:none;font-style:normal;font-weight:400;line-height:18px;-webkit-font-smoothing:antialiased}.ui-icon-flat-video:before{content:"\e000"}.ui-icon-flat-time:before{content:"\e001"}.ui-icon-flat-settings:before{content:"\e002"}.ui-icon-flat-plus:before{content:"\e003"}.ui-icon-flat-new:before{content:"\e005"}.ui-icon-flat-menu:before{content:"\e006"}.ui-icon-flat-man:before{content:"\e007"}.ui-icon-flat-mail:before{content:"\e008"}.ui-icon-flat-lock:before{content:"\e009"}.ui-icon-flat-location:before{content:"\e00a"}.ui-icon-flat-heart:before{content:"\e00b"}.ui-icon-flat-eye:before{content:"\e00c"}.ui-icon-flat-cross:before{content:"\e00d"}.ui-icon-flat-cmd:before{content:"\e00e"}.ui-icon-flat-checkround:before{content:"\e00f"}.ui-icon-flat-checkmark:before{content:"\e010"}.ui-icon-flat-calendar:before{content:"\e011"}.ui-icon-flat-bubble:before{content:"\e012"}.ui-icon-flat-volume:before{content:"\e013"}.ui-icon-flat-camera:before{content:"\e004"}.ui-bar-a{border:1px solid #2c3e50;background:#2c3e50;color:#fff;font-weight:700;font-family:Lato,sans-serif}.ui-bar-a .ui-link-inherit{color:#3e3e3e}.ui-bar-a a.ui-link{color:#7cc4e7;font-weight:700}.ui-bar-a a.ui-link:visited{color:#2489ce}.ui-bar-a a.ui-link:hover{color:#2489ce}.ui-bar-a a.ui-link:active{color:#2489ce}.ui-bar-a input,.ui-bar-a select,.ui-bar-a textarea,.ui-bar-a button{font-family:Lato,sans-serif}.ui-body-a,.ui-overlay-a{border:2px solid #2c3e50;color:#34495e;background:#2c3e50;background-image:none}.ui-body-a{font-family:Lato,sans-serif}.ui-body-a input,.ui-body-a select,.ui-body-a textarea,.ui-body-a button{font-family:Lato,sans-serif}.ui-body-a .ui-link-inherit{color:#333}.ui-body-a .ui-link{color:#2c3e50;font-weight:700}.ui-body-a .ui-link:visited,.ui-body-a .ui-link:hover,.ui-body-a .ui-link:active{color:#4e6d8d}.ui-body-a.ui-input-text{border:2px solid #eee}.ui-body-a.ui-input-text.ui-focus{border:2px solid #4e6d8d;-webkit-transition:border linear .2s;-moz-transition:border linear .2s;-o-transition:border linear .2s;transition:border linear .2s}.ui-btn-up-a{border:1px solid #2c3e50;background:#2c3e50;font-weight:700;color:#fff}.ui-btn-up-a:visited,.ui-btn-up-a a.ui-link-inherit{color:#fff}.ui-btn-hover-a{border:1px solid #4e6d8d;background:#4e6d8d;font-weight:700;color:#fff}.ui-btn-hover-a:visited,.ui-btn-hover-a:hover,.ui-btn-hover-a a.ui-link-inherit{color:#fff}.ui-btn-down-a{border:1px solid #4e6d8d;background:#4e6d8d;font-weight:700;color:#fff}.ui-btn-down-a:visited,.ui-btn-down-a:hover,.ui-btn-down-a a.ui-link-inherit{color:#fff}.ui-btn-up-a,.ui-btn-hover-a,.ui-btn-down-a{font-family:Lato,sans-serif;text-decoration:none}.ui-bar-a .ui-btn-up-a,.ui-bar-a .ui-btn-down-a,.ui-bar-a .ui-btn-hover-a{background-color:#2c3e50;border:1px solid #2c3e50}.ui-bar-b{border:1px solid #16a085;background:#16a085;color:#fff;font-weight:700;font-family:Lato,sans-serif}.ui-bar-b .ui-link-inherit{color:#3e3e3e}.ui-bar-b a.ui-link{color:#7cc4e7;font-weight:700}.ui-bar-b a.ui-link:visited{color:#2489ce}.ui-bar-b a.ui-link:hover{color:#2489ce}.ui-bar-b a.ui-link:active{color:#2489ce}.ui-bar-b input,.ui-bar-b select,.ui-bar-b textarea,.ui-bar-b button{font-family:Lato,sans-serif}.ui-body-b,.ui-overlay-b{border:2px solid #16a085;color:#34495e;background:#fff;background-image:none}.ui-body-b{font-family:Lato,sans-serif}.ui-body-b input,.ui-body-b select,.ui-body-b textarea,.ui-body-b button{font-family:Lato,sans-serif}.ui-body-b .ui-link-inherit{color:#333}.ui-body-b .ui-link{color:#16a085;font-weight:700}.ui-body-b .ui-link:visited,.ui-body-b .ui-link:hover,.ui-body-b .ui-link:active{color:#1abc9c}.ui-body-b.ui-input-text{border:2px solid #eee}.ui-body-b.ui-input-text.ui-focus{border:2px solid #1abc9c;-webkit-transition:border linear .2s;-moz-transition:border linear .2s;-o-transition:border linear .2s;transition:border linear .2s}.ui-btn-up-b{border:1px solid #16a085;background:#16a085;font-weight:700;color:#fff}.ui-btn-up-b:visited,.ui-btn-up-b a.ui-link-inherit{color:#fff}.ui-btn-hover-b{border:1px solid #1abc9c;background:#1abc9c;font-weight:700;color:#fff}.ui-btn-hover-b:visited,.ui-btn-hover-b:hover,.ui-btn-hover-b a.ui-link-inherit{color:#fff}.ui-btn-down-b{border:1px solid #1abc9c;background:#1abc9c;font-weight:700;color:#fff}.ui-btn-down-b:visited,.ui-btn-down-b:hover,.ui-btn-down-b a.ui-link-inherit{color:#fff}.ui-btn-up-b,.ui-btn-hover-b,.ui-btn-down-b{font-family:Lato,sans-serif;text-decoration:none}.ui-bar-b .ui-btn-up-a,.ui-bar-b .ui-btn-down-a,.ui-bar-b .ui-btn-hover-a{background-color:#16a085;border:1px solid #16a085}.ui-bar-c{border:1px solid #f2f2f2;background:#f2f2f2;color:#000;font-weight:700;font-family:Lato,sans-serif}.ui-bar-c .ui-link-inherit{color:#3e3e3e}.ui-bar-c a.ui-link{color:#7cc4e7;font-weight:700}.ui-bar-c a.ui-link:visited{color:#2489ce}.ui-bar-c a.ui-link:hover{color:#2489ce}.ui-bar-c a.ui-link:active{color:#2489ce}.ui-bar-c input,.ui-bar-c select,.ui-bar-c textarea,.ui-bar-c button{font-family:Lato,sans-serif}.ui-body-c,.ui-overlay-c{border:2px solid #f2f2f2;color:#34495e;background:#fff;background-image:none}.ui-body-c{font-family:Lato,sans-serif}.ui-body-c input,.ui-body-c select,.ui-body-c textarea,.ui-body-c button{font-family:Lato,sans-serif}.ui-body-c .ui-link-inherit{color:#333}.ui-body-c .ui-link{color:#2c3e50;font-weight:700}.ui-body-c .ui-link:visited,.ui-body-c .ui-link:hover,.ui-body-c .ui-link:active{color:#eee}.ui-body-c.ui-input-text{border:2px solid #eee}.ui-body-c.ui-input-text.ui-focus{border:2px solid #eee;-webkit-transition:border linear .2s;-moz-transition:border linear .2s;-o-transition:border linear .2s;transition:border linear .2s}.ui-btn-up-c{border:1px solid #f2f2f2;background:#f2f2f2;font-weight:700;color:#000}.ui-btn-up-c:visited,.ui-btn-up-c a.ui-link-inherit{color:#000}.ui-btn-hover-c{border:1px solid #eee;background:#eee;font-weight:700;color:#000}.ui-btn-hover-c:visited,.ui-btn-hover-c:hover,.ui-btn-hover-c a.ui-link-inherit{color:#000}.ui-btn-down-c{border:1px solid #eee;background:#eee;font-weight:700;color:#000}.ui-btn-down-c:visited,.ui-btn-down-c:hover,.ui-btn-down-c a.ui-link-inherit{color:#000}.ui-btn-up-c,.ui-btn-hover-c,.ui-btn-down-c{font-family:Lato,sans-serif;text-decoration:none}.ui-bar-c .ui-btn-up-a,.ui-bar-c .ui-btn-down-a,.ui-bar-c .ui-btn-hover-a{background-color:#f2f2f2;border:1px solid #f2f2f2}.ui-bar-d{border:1px solid #c1392b;background:#c1392b;color:#fff;font-weight:700;font-family:Lato,sans-serif}.ui-bar-d .ui-link-inherit{color:#3e3e3e}.ui-bar-d a.ui-link{color:#7cc4e7;font-weight:700}.ui-bar-d a.ui-link:visited{color:#2489ce}.ui-bar-d a.ui-link:hover{color:#2489ce}.ui-bar-d a.ui-link:active{color:#2489ce}.ui-bar-d input,.ui-bar-d select,.ui-bar-d textarea,.ui-bar-d button{font-family:Lato,sans-serif}.ui-body-d,.ui-overlay-d{border:2px solid #c1392b;color:#34495e;background:#fff;background-image:none}.ui-body-d{font-family:Lato,sans-serif}.ui-body-d input,.ui-body-d select,.ui-body-d textarea,.ui-body-d button{font-family:Lato,sans-serif}.ui-body-d .ui-link-inherit{color:#333}.ui-body-d .ui-link{color:#c0392b;font-weight:700}.ui-body-d .ui-link:visited,.ui-body-d .ui-link:hover,.ui-body-d .ui-link:active{color:#e84c3d}.ui-body-d.ui-input-text{border:2px solid #eee}.ui-body-d.ui-input-text.ui-focus{border:2px solid #e84c3d;-webkit-transition:border linear .2s;-moz-transition:border linear .2s;-o-transition:border linear .2s;transition:border linear .2s}.ui-btn-up-d{border:1px solid #c1392b;background:#c1392b;font-weight:700;color:#fff}.ui-btn-up-d:visited,.ui-btn-up-d a.ui-link-inherit{color:#fff}.ui-btn-hover-d{border:1px solid #e84c3d;background:#e84c3d;font-weight:700;color:#fff}.ui-btn-hover-d:visited,.ui-btn-hover-d:hover,.ui-btn-hover-d a.ui-link-inherit{color:#fff}.ui-btn-down-d{border:1px solid #e84c3d;background:#e84c3d;font-weight:700;color:#fff}.ui-btn-down-d:visited,.ui-btn-down-d:hover,.ui-btn-down-d a.ui-link-inherit{color:#fff}.ui-btn-up-d,.ui-btn-hover-d,.ui-btn-down-d{font-family:Lato,sans-serif;text-decoration:none}.ui-bar-d .ui-btn-up-a,.ui-bar-d .ui-btn-down-a,.ui-bar-d .ui-btn-hover-a{background-color:#c1392b;border:1px solid #c1392b}.ui-bar-e{border:1px solid #f1c40f;background:#f1c40f;color:#fff;font-weight:700;font-family:Lato,sans-serif}.ui-bar-e .ui-link-inherit{color:#3e3e3e}.ui-bar-e a.ui-link{color:#7cc4e7;font-weight:700}.ui-bar-e a.ui-link:visited{color:#2489ce}.ui-bar-e a.ui-link:hover{color:#2489ce}.ui-bar-e a.ui-link:active{color:#2489ce}.ui-bar-e input,.ui-bar-e select,.ui-bar-e textarea,.ui-bar-e button{font-family:Lato,sans-serif}.ui-body-e,.ui-overlay-e{border:2px solid #f1c40f;color:#34495e;background:#fff;background-image:none}.ui-body-e{font-family:Lato,sans-serif}.ui-body-e input,.ui-body-e select,.ui-body-e textarea,.ui-body-e button{font-family:Lato,sans-serif}.ui-body-e .ui-link-inherit{color:#333}.ui-body-e .ui-link{color:#f1c40f;font-weight:700}.ui-body-e .ui-link:visited,.ui-body-e .ui-link:hover,.ui-body-e .ui-link:active{color:#f4d03f}.ui-body-e.ui-input-text{border:2px solid #eee}.ui-body-e.ui-input-text.ui-focus{border:2px solid #f4d03f;-webkit-transition:border linear .2s;-moz-transition:border linear .2s;-o-transition:border linear .2s;transition:border linear .2s}.ui-btn-up-e{border:1px solid #f1c40f;background:#f1c40f;font-weight:700;color:#fff}.ui-btn-up-e:visited,.ui-btn-up-e a.ui-link-inherit{color:#fff}.ui-btn-hover-e{border:1px solid #f4d03f;background:#f4d03f;font-weight:700;color:#fff}.ui-btn-hover-e:visited,.ui-btn-hover-e:hover,.ui-btn-hover-e a.ui-link-inherit{color:#fff}.ui-btn-down-e{border:1px solid #f4d03f;background:#f4d03f;font-weight:700;color:#fff}.ui-btn-down-e:visited,.ui-btn-down-e:hover,.ui-btn-down-e a.ui-link-inherit{color:#fff}.ui-btn-up-e,.ui-btn-hover-e,.ui-btn-down-e{font-family:Lato,sans-serif;text-decoration:none}.ui-bar-e .ui-btn-up-a,.ui-bar-e .ui-btn-down-a,.ui-bar-e .ui-btn-hover-a{background-color:#f1c40f;border:1px solid #f1c40f}.ui-bar-f{border:1px solid #3498db;background:#3498db;color:#fff;font-weight:700;font-family:Lato,sans-serif}.ui-bar-f .ui-link-inherit{color:#3e3e3e}.ui-bar-f a.ui-link{color:#7cc4e7;font-weight:700}.ui-bar-f a.ui-link:visited{color:#2489ce}.ui-bar-f a.ui-link:hover{color:#2489ce}.ui-bar-f a.ui-link:active{color:#2489ce}.ui-bar-f input,.ui-bar-f select,.ui-bar-f textarea,.ui-bar-f button{font-family:Lato,sans-serif}.ui-body-f,.ui-overlay-f{border:2px solid #3498db;color:#34495e;background:#fff;background-image:none}.ui-body-f{font-family:Lato,sans-serif}.ui-body-f input,.ui-body-f select,.ui-body-f textarea,.ui-body-f button{font-family:Lato,sans-serif}.ui-body-f .ui-link-inherit{color:#333}.ui-body-f .ui-link{color:#3498db;font-weight:700}.ui-body-f .ui-link:visited,.ui-body-f .ui-link:hover,.ui-body-f .ui-link:active{color:#5dade2}.ui-body-f.ui-input-text{border:2px solid #eee}.ui-body-f.ui-input-text.ui-focus{border:2px solid #5dade2;-webkit-transition:border linear .2s;-moz-transition:border linear .2s;-o-transition:border linear .2s;transition:border linear .2s}.ui-btn-up-f{border:1px solid #3498db;background:#3498db;font-weight:700;color:#fff}.ui-btn-up-f:visited,.ui-btn-up-f a.ui-link-inherit{color:#fff}.ui-btn-hover-f{border:1px solid #5dade2;background:#5dade2;font-weight:700;color:#fff}.ui-btn-hover-f:visited,.ui-btn-hover-f:hover,.ui-btn-hover-f a.ui-link-inherit{color:#fff}.ui-btn-down-f{border:1px solid #5dade2;background:#5dade2;font-weight:700;color:#fff}.ui-btn-down-f:visited,.ui-btn-down-f:hover,.ui-btn-down-f a.ui-link-inherit{color:#fff}.ui-btn-up-f,.ui-btn-hover-f,.ui-btn-down-f{font-family:Lato,sans-serif;text-decoration:none}.ui-bar-f .ui-btn-up-a,.ui-bar-f .ui-btn-down-a,.ui-bar-f .ui-btn-hover-a{background-color:#3498db;border:1px solid #3498db}.ui-bar-g{border:1px solid #2ecc71;background:#2ecc71;color:#fff;font-weight:700;font-family:Lato,sans-serif}.ui-bar-g .ui-link-inherit{color:#3e3e3e}.ui-bar-g a.ui-link{color:#7cc4e7;font-weight:700}.ui-bar-g a.ui-link:visited{color:#2489ce}.ui-bar-g a.ui-link:hover{color:#2489ce}.ui-bar-g a.ui-link:active{color:#2489ce}.ui-bar-g input,.ui-bar-g select,.ui-bar-g textarea,.ui-bar-g button{font-family:Lato,sans-serif}.ui-body-g,.ui-overlay-g{border:2px solid #2ecc71;color:#34495e;background:#fff;background-image:none}.ui-body-g{font-family:Lato,sans-serif}.ui-body-g input,.ui-body-g select,.ui-body-g textarea,.ui-body-g button{font-family:Lato,sans-serif}.ui-body-g .ui-link-inherit{color:#333}.ui-body-g .ui-link{color:#2ecc71;font-weight:700}.ui-body-g .ui-link:visited,.ui-body-g .ui-link:hover,.ui-body-g .ui-link:active{color:#55d98d}.ui-body-g.ui-input-text{border:2px solid #eee}.ui-body-g.ui-input-text.ui-focus{border:2px solid #55d98d;-webkit-transition:border linear .2s;-moz-transition:border linear .2s;-o-transition:border linear .2s;transition:border linear .2s}.ui-btn-up-g{border:1px solid #2ecc71;background:#2ecc71;font-weight:700;color:#fff}.ui-btn-up-g:visited,.ui-btn-up-g a.ui-link-inherit{color:#fff}.ui-btn-hover-g{border:1px solid #55d98d;background:#55d98d;font-weight:700;color:#fff}.ui-btn-hover-g:visited,.ui-btn-hover-g:hover,.ui-btn-hover-g a.ui-link-inherit{color:#fff}.ui-btn-down-g{border:1px solid #55d98d;background:#55d98d;font-weight:700;color:#fff}.ui-btn-down-g:visited,.ui-btn-down-g:hover,.ui-btn-down-g a.ui-link-inherit{color:#fff}.ui-btn-up-g,.ui-btn-hover-g,.ui-btn-down-g{font-family:Lato,sans-serif;text-decoration:none}.ui-bar-g .ui-btn-up-a,.ui-bar-g .ui-btn-down-a,.ui-bar-g .ui-btn-hover-a{background-color:#2ecc71;border:1px solid #2ecc71}.ui-btn-active{border:1px solid #1abc9c;background:#1abc9c;font-weight:700;color:#fff;cursor:pointer;text-decoration:none;font-family:Lato,sans-serif}.ui-btn-active:visited,.ui-btn-active:hover,.ui-btn-active a.ui-link-inherit{color:#fff}.ui-btn-active.ui-slider-bg{background:#1abc9c}.ui-slider-handle{background:#16a085;border:1px solid #16a085}.ui-slider-label.ui-btn-corner-all,.ui-slider-switch.ui-btn-corner-all{border-radius:1em;-webkit-border-radius:1em}.ui-slider-handle.ui-btn-corner-all{border-radius:50%;-webkit-border-radius:50%}input.ui-input-text.ui-slider-input{border:2px solid #eee!important}.ui-corner-all{-webkit-border-radius:6px;border-radius:6px}.ui-br{border-color:#828282;border-color:rgba(130,130,130,.3);border-style:solid}.ui-disabled{filter:Alpha(Opacity=30);opacity:.3;zoom:1}.ui-disabled,.ui-disabled a{cursor:default!important;pointer-events:none}.ui-icon,.ui-icon-searchfield:after{background-repeat:no-repeat;width:20px;height:20px;-moz-border-radius:10px;-webkit-border-radius:10px;border-radius:10px;line-height:16px;color:#fff}.ui-btn-icon-notext .ui-btn-inner .ui-icon:before{margin-left:1px}.ui-li-link-alt .ui-btn-inner .ui-icon{margin:-10px -10px auto auto!important}.ui-icon-plus,.ui-icon-minus,.ui-icon-delete,.ui-icon-arrow-r,.ui-icon-arrow-l,.ui-icon-arrow-u,.ui-icon-arrow-d,.ui-icon-check,.ui-icon-gear,.ui-icon-refresh,.ui-icon-forward,.ui-icon-back,.ui-icon-grid,.ui-icon-star,.ui-icon-alert,.ui-icon-info,.ui-icon-home,.ui-icon-search,.ui-icon-searchfield:after,.ui-icon-checkbox-off,.ui-icon-checkbox-on,.ui-icon-radio-off,.ui-icon-radio-on,.ui-icon-email,.ui-icon-page,.ui-icon-question,.ui-icon-foursquare,.ui-icon-dollar,.ui-icon-euro,.ui-icon-pound,.ui-icon-apple,.ui-icon-chat,.ui-icon-trash,.ui-icon-mappin,.ui-icon-direction,.ui-icon-heart,.ui-icon-wrench,.ui-icon-play,.ui-icon-pause,.ui-icon-stop,.ui-icon-person,.ui-icon-music,.ui-icon-wifi,.ui-icon-phone,.ui-icon-power,.ui-icon-lightning,.ui-icon-drink,.ui-icon-android{background-color:#666;background-color:rgba(0,0,0,.4);background-image:url(images/icons-18-white.png)}.ui-icon-alt .ui-icon,.ui-icon-alt .ui-icon-searchfield:after{background-color:#fff;background-color:rgba(255,255,255,.3);background-image:url(images/icons-18-black.png);background-repeat:no-repeat}.ui-icon-nodisc .ui-icon,.ui-icon-nodisc .ui-icon-searchfield:after,.ui-icon-nodisc .ui-icon-alt .ui-icon,.ui-icon-nodisc .ui-icon-alt .ui-icon-searchfield:after{background-color:transparent}.ui-icon-plus{background-position:-1px -1px}.ui-icon-minus{background-position:-37px -1px}.ui-icon-delete{background-position:-73px -1px}.ui-icon-arrow-r{background-position:-108px -1px}.ui-icon-arrow-l{background-position:-144px -1px}.ui-icon-arrow-u{background-position:-180px -1px}.ui-icon-arrow-d{background-position:-216px -1px}.ui-icon-check{background-position:-252px -1px}.ui-icon-gear{background-position:-288px -1px}.ui-icon-refresh{background-position:-323px -1px}.ui-icon-forward{background-position:-360px -1px}.ui-icon-back{background-position:-396px -1px}.ui-icon-grid{background-position:-432px -1px}.ui-icon-star{background-position:-467px -1px}.ui-icon-alert{background-position:-503px -1px}.ui-icon-info{background-position:-539px -1px}.ui-icon-home{background-position:-575px -1px}.ui-icon-search,.ui-icon-searchfield:after{background-position:-611px -1px}.ui-icon-checkbox-on{background-position:-647px -1px}.ui-icon-checkbox-off{background-position:-683px -1px}.ui-icon-radio-on{background-position:-718px -1px}.ui-icon-radio-off{background-position:-754px -1px}.ui-icon-bars{background-position:-788px -1px}.ui-icon-edit{background-position:-824px -1px}@media only screen and (-webkit-min-device-pixel-ratio:1.3),only screen and (min--moz-device-pixel-ratio:1.3),only screen and (min-resolution:200dpi){.ui-icon-plus,.ui-icon-minus,.ui-icon-delete,.ui-icon-arrow-r,.ui-icon-arrow-l,.ui-icon-arrow-u,.ui-icon-arrow-d,.ui-icon-check,.ui-icon-gear,.ui-icon-refresh,.ui-icon-forward,.ui-icon-back,.ui-icon-grid,.ui-icon-star,.ui-icon-alert,.ui-icon-info,.ui-icon-home,.ui-icon-bars,.ui-icon-edit,.ui-icon-search,.ui-icon-searchfield:after,.ui-icon-checkbox-off,.ui-icon-checkbox-on,.ui-icon-radio-off,.ui-icon-radio-on{background-image:url(images/icons-36-white.png);-moz-background-size:864px 18px;-o-background-size:864px 18px;-webkit-background-size:864px 18px;background-size:864px 18px}.ui-icon-alt .ui-icon{background-image:url(images/icons-36-black.png)}.ui-icon-plus{background-position:0 50%}.ui-icon-minus{background-position:-36px 50%}.ui-icon-delete{background-position:-72px 50%}.ui-icon-arrow-r{background-position:-108px 50%}.ui-icon-arrow-l{background-position:-144px 50%}.ui-icon-arrow-u{background-position:-179px 50%}.ui-icon-arrow-d{background-position:-215px 50%}.ui-icon-check{background-position:-252px 50%}.ui-icon-gear{background-position:-287px 50%}.ui-icon-refresh{background-position:-323px 50%}.ui-icon-forward{background-position:-360px 50%}.ui-icon-back{background-position:-395px 50%}.ui-icon-grid{background-position:-431px 50%}.ui-icon-star{background-position:-467px 50%}.ui-icon-alert{background-position:-503px 50%}.ui-icon-info{background-position:-538px 50%}.ui-icon-home{background-position:-575px 50%}.ui-icon-search,.ui-icon-searchfield:after{background-position:-611px 50%}.ui-icon-checkbox-on{background-position:-647px 50%}.ui-icon-checkbox-off{background-position:-683px 50%}.ui-icon-radio-on{background-position:-718px 50%}.ui-icon-radio-off{background-position:-754px 50%}.ui-icon-bars{background-position:-788px 50%}.ui-icon-edit{background-position:-824px 50%}}.ui-checkbox .ui-icon,.ui-selectmenu-list .ui-icon{-webkit-border-radius:3px;border-radius:3px}.ui-icon-checkbox-off,.ui-icon-radio-off{background-color:transparent}.ui-checkbox-on .ui-icon,.ui-radio-on .ui-icon{}.ui-icon-loading{background:url(images/ajax-loader.gif);background-size:46px 46px}.ui-btn-corner-all{-webkit-border-radius:6px;border-radius:6px}.ui-btn-icon-notext.ui-btn-corner-all{-webkit-border-radius:1em;border-radius:1em}.ui-corner-all,.ui-btn-corner-all{}.ui-overlay{background:#666;filter:Alpha(Opacity=50);opacity:.5;position:absolute;width:100%;height:100%}.ui-btn:focus,.ui-link-inherit:focus{outline:0}.ui-btn.ui-focus{z-index:1}.ui-mobile-nosupport-boxshadow *{-moz-box-shadow:none!important;-webkit-box-shadow:none!important;box-shadow:none!important}.ui-mobile-nosupport-boxshadow .ui-focus,.ui-mobile-nosupport-boxshadow .ui-btn:focus,.ui-mobile-nosupport-boxshadow .ui-link-inherit:focus{outline-width:1px;outline-style:auto}.ui-mobile,.ui-mobile body{height:99.9%}.ui-mobile fieldset,.ui-page{padding:0;margin:0}.ui-mobile a img,.ui-mobile fieldset{border-width:0}.ui-mobile-viewport{margin:0;overflow-x:visible;-webkit-text-size-adjust:100%;-ms-text-size-adjust:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}body.ui-mobile-viewport,div.ui-mobile-viewport{overflow-x:hidden}.ui-mobile [data-role=page],.ui-mobile [data-role=dialog],.ui-page{top:0;left:0;width:100%;min-height:100%;position:absolute;display:none;border:0}.ui-mobile .ui-page-active{display:block;overflow:visible}.ui-page{outline:0}@media screen and (orientation:portrait){.ui-mobile .ui-page{min-height:420px}}@media screen and (orientation:landscape){.ui-mobile .ui-page{min-height:300px}}.ui-loading .ui-loader{display:block}.ui-loader{display:none;z-index:9999999;position:fixed;top:50%;left:50%;border:0}.ui-loader-default{background:0;filter:Alpha(Opacity=18);opacity:.18;width:46px;height:46px;margin-left:-23px;margin-top:-23px}.ui-loader-verbose{width:200px;filter:Alpha(Opacity=88);opacity:.88;box-shadow:0 1px 1px -1px #fff;height:auto;margin-left:-110px;margin-top:-43px;padding:10px}.ui-loader-default h1{font-size:0;width:0;height:0;overflow:hidden}.ui-loader-verbose h1{font-size:16px;margin:0;text-align:center}.ui-loader .ui-icon{background-color:#000;display:block;margin:0;width:44px;height:44px;padding:1px;-webkit-border-radius:36px;border-radius:36px}.ui-loader-verbose .ui-icon{margin:0 auto 10px;filter:Alpha(Opacity=75);opacity:.75}.ui-loader-textonly{padding:15px;margin-left:-115px}.ui-loader-textonly .ui-icon{display:none}.ui-loader-fakefix{position:absolute}.ui-mobile-rendering>*{visibility:hidden}.ui-bar,.ui-body{position:relative;padding:.4em 15px;overflow:hidden;display:block;clear:both}.ui-bar{font-size:16px;margin:0}.ui-bar h1,.ui-bar h2,.ui-bar h3,.ui-bar h4,.ui-bar h5,.ui-bar h6{margin:0;padding:0;font-size:16px;display:inline-block}.ui-header,.ui-footer{position:relative;zoom:1}.ui-mobile .ui-header,.ui-mobile .ui-footer{border-left-width:0;border-right-width:0}.ui-header .ui-btn-left,.ui-header .ui-btn-right,.ui-footer .ui-btn-left,.ui-footer .ui-btn-right,.ui-header-fixed.ui-fixed-hidden .ui-btn-left,.ui-header-fixed.ui-fixed-hidden .ui-btn-right{position:absolute;top:3px}.ui-header-fixed .ui-btn-left,.ui-header-fixed .ui-btn-right{top:4px}.ui-header .ui-btn-left,.ui-footer .ui-btn-left{left:5px}.ui-header .ui-btn-right,.ui-footer .ui-btn-right{right:5px}.ui-footer>.ui-btn-icon-notext,.ui-header>.ui-btn-icon-notext,.ui-header-fixed.ui-fixed-hidden>.ui-btn-icon-notext{top:6px}.ui-header-fixed>.ui-btn-icon-notext{top:7px}.ui-header .ui-title,.ui-footer .ui-title{min-height:1.1em;text-align:center;font-size:16px;display:block;margin:.6em 30% .8em;padding:0;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;outline:0!important}.ui-footer .ui-title{margin:.6em 15px .8em}.ui-content{border-width:0;overflow:visible;overflow-x:hidden;padding:15px}.ui-corner-all>.ui-header:first-child,.ui-corner-all>.ui-content:first-child,.ui-corner-all>.ui-footer:first-child{-webkit-border-top-left-radius:inherit;border-top-left-radius:inherit;-webkit-border-top-right-radius:inherit;border-top-right-radius:inherit}.ui-corner-all>.ui-header:last-child,.ui-corner-all>.ui-content:last-child,.ui-corner-all>.ui-footer:last-child{-webkit-border-bottom-left-radius:inherit;border-bottom-left-radius:inherit;-webkit-border-bottom-right-radius:inherit;border-bottom-right-radius:inherit}.ui-icon{width:18px;height:18px}.ui-nojs{position:absolute;left:-9999px}.ui-hide-label label.ui-input-text,.ui-hide-label label.ui-select,.ui-hide-label label.ui-slider,.ui-hide-label label.ui-submit,.ui-hide-label .ui-controlgroup-label,.ui-hidden-accessible{position:absolute!important;left:-9999px;clip:rect(1px 1px 1px 1px);clip:rect(1px,1px,1px,1px)}.ui-mobile-viewport-transitioning,.ui-mobile-viewport-transitioning .ui-page{width:100%;height:100%;overflow:hidden;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.ui-page-pre-in{opacity:0}.in{-webkit-animation-timing-function:ease-out;-webkit-animation-duration:350ms;-moz-animation-timing-function:ease-out;-moz-animation-duration:350ms;animation-timing-function:ease-out;animation-duration:350ms}.out{-webkit-animation-timing-function:ease-in;-webkit-animation-duration:225ms;-moz-animation-timing-function:ease-in;-moz-animation-duration:225ms;animation-timing-function:ease-in;animation-duration:225ms}@-webkit-keyframes fadein{from{opacity:0}to{opacity:1}}@-moz-keyframes fadein{from{opacity:0}to{opacity:1}}@keyframes fadein{from{opacity:0}to{opacity:1}}@-webkit-keyframes fadeout{from{opacity:1}to{opacity:0}}@-moz-keyframes fadeout{from{opacity:1}to{opacity:0}}@keyframes fadeout{from{opacity:1}to{opacity:0}}.fade.out{opacity:0;-webkit-animation-duration:125ms;-webkit-animation-name:fadeout;-moz-animation-duration:125ms;-moz-animation-name:fadeout;animation-duration:125ms;animation-name:fadeout}.fade.in{opacity:1;-webkit-animation-duration:225ms;-webkit-animation-name:fadein;-moz-animation-duration:225ms;-moz-animation-name:fadein;animation-duration:225ms;animation-name:fadein}.pop{-webkit-transform-origin:50% 50%;-moz-transform-origin:50% 50%;transform-origin:50% 50%}.pop.in{-webkit-transform:scale(1);-webkit-animation-name:popin;-webkit-animation-duration:350ms;-moz-transform:scale(1);-moz-animation-name:popin;-moz-animation-duration:350ms;transform:scale(1);animation-name:popin;animation-duration:350ms;opacity:1}.pop.out{-webkit-animation-name:fadeout;-webkit-animation-duration:100ms;-moz-animation-name:fadeout;-moz-animation-duration:100ms;animation-name:fadeout;animation-duration:100ms;opacity:0}.pop.in.reverse{-webkit-animation-name:fadein;-moz-animation-name:fadein;animation-name:fadein}.pop.out.reverse{-webkit-transform:scale(.8);-webkit-animation-name:popout;-moz-transform:scale(.8);-moz-animation-name:popout;transform:scale(.8);animation-name:popout}@-webkit-keyframes popin{from{-webkit-transform:scale(.8);opacity:0}to{-webkit-transform:scale(1);opacity:1}}@-moz-keyframes popin{from{-moz-transform:scale(.8);opacity:0}to{-moz-transform:scale(1);opacity:1}}@keyframes popin{from{transform:scale(.8);opacity:0}to{transform:scale(1);opacity:1}}@-webkit-keyframes popout{from{-webkit-transform:scale(1);opacity:1}to{-webkit-transform:scale(.8);opacity:0}}@-moz-keyframes popout{from{-moz-transform:scale(1);opacity:1}to{-moz-transform:scale(.8);opacity:0}}@keyframes popout{from{transform:scale(1);opacity:1}to{transform:scale(.8);opacity:0}}@-webkit-keyframes slideinfromright{from{-webkit-transform:translate3d(100%,0,0)}to{-webkit-transform:translate3d(0,0,0)}}@-moz-keyframes slideinfromright{from{-moz-transform:translateX(100%)}to{-moz-transform:translateX(0)}}@keyframes slideinfromright{from{transform:translateX(100%)}to{transform:translateX(0)}}@-webkit-keyframes slideinfromleft{from{-webkit-transform:translate3d(-100%,0,0)}to{-webkit-transform:translate3d(0,0,0)}}@-moz-keyframes slideinfromleft{from{-moz-transform:translateX(-100%)}to{-moz-transform:translateX(0)}}@keyframes slideinfromleft{from{transform:translateX(-100%)}to{transform:translateX(0)}}@-webkit-keyframes slideouttoleft{from{-webkit-transform:translate3d(0,0,0)}to{-webkit-transform:translate3d(-100%,0,0)}}@-moz-keyframes slideouttoleft{from{-moz-transform:translateX(0)}to{-moz-transform:translateX(-100%)}}@keyframes slideouttoleft{from{transform:translateX(0)}to{transform:translateX(-100%)}}@-webkit-keyframes slideouttoright{from{-webkit-transform:translate3d(0,0,0)}to{-webkit-transform:translate3d(100%,0,0)}}@-moz-keyframes slideouttoright{from{-moz-transform:translateX(0)}to{-moz-transform:translateX(100%)}}@keyframes slideouttoright{from{transform:translateX(0)}to{transform:translateX(100%)}}.slide.out,.slide.in{-webkit-animation-timing-function:ease-out;-webkit-animation-duration:350ms;-moz-animation-timing-function:ease-out;-moz-animation-duration:350ms;animation-timing-function:ease-out;animation-duration:350ms}.slide.out{-webkit-transform:translate3d(-100%,0,0);-webkit-animation-name:slideouttoleft;-moz-transform:translateX(-100%);-moz-animation-name:slideouttoleft;transform:translateX(-100%);animation-name:slideouttoleft}.slide.in{-webkit-transform:translate3d(0,0,0);-webkit-animation-name:slideinfromright;-moz-transform:translateX(0);-moz-animation-name:slideinfromright;transform:translateX(0);animation-name:slideinfromright}.slide.out.reverse{-webkit-transform:translate3d(100%,0,0);-webkit-animation-name:slideouttoright;-moz-transform:translateX(100%);-moz-animation-name:slideouttoright;transform:translateX(100%);animation-name:slideouttoright}.slide.in.reverse{-webkit-transform:translate3d(0,0,0);-webkit-animation-name:slideinfromleft;-moz-transform:translateX(0);-moz-animation-name:slideinfromleft;transform:translateX(0);animation-name:slideinfromleft}.slidefade.out{-webkit-transform:translateX(-100%);-webkit-animation-name:slideouttoleft;-webkit-animation-duration:225ms;-moz-transform:translateX(-100%);-moz-animation-name:slideouttoleft;-moz-animation-duration:225ms;transform:translateX(-100%);animation-name:slideouttoleft;animation-duration:225ms}.slidefade.in{-webkit-transform:translateX(0);-webkit-animation-name:fadein;-webkit-animation-duration:200ms;-moz-transform:translateX(0);-moz-animation-name:fadein;-moz-animation-duration:200ms;transform:translateX(0);animation-name:fadein;animation-duration:200ms}.slidefade.out.reverse{-webkit-transform:translateX(100%);-webkit-animation-name:slideouttoright;-webkit-animation-duration:200ms;-moz-transform:translateX(100%);-moz-animation-name:slideouttoright;-moz-animation-duration:200ms;transform:translateX(100%);animation-name:slideouttoright;animation-duration:200ms}.slidefade.in.reverse{-webkit-transform:translateX(0);-webkit-animation-name:fadein;-webkit-animation-duration:200ms;-moz-transform:translateX(0);-moz-animation-name:fadein;-moz-animation-duration:200ms;transform:translateX(0);animation-name:fadein;animation-duration:200ms}.slidedown.out{-webkit-animation-name:fadeout;-webkit-animation-duration:100ms;-moz-animation-name:fadeout;-moz-animation-duration:100ms;animation-name:fadeout;animation-duration:100ms}.slidedown.in{-webkit-transform:translateY(0);-webkit-animation-name:slideinfromtop;-webkit-animation-duration:250ms;-moz-transform:translateY(0);-moz-animation-name:slideinfromtop;-moz-animation-duration:250ms;transform:translateY(0);animation-name:slideinfromtop;animation-duration:250ms}.slidedown.in.reverse{-webkit-animation-name:fadein;-webkit-animation-duration:150ms;-moz-animation-name:fadein;-moz-animation-duration:150ms;animation-name:fadein;animation-duration:150ms}.slidedown.out.reverse{-webkit-transform:translateY(-100%);-webkit-animation-name:slideouttotop;-webkit-animation-duration:200ms;-moz-transform:translateY(-100%);-moz-animation-name:slideouttotop;-moz-animation-duration:200ms;transform:translateY(-100%);animation-name:slideouttotop;animation-duration:200ms}@-webkit-keyframes slideinfromtop{from{-webkit-transform:translateY(-100%)}to{-webkit-transform:translateY(0)}}@-moz-keyframes slideinfromtop{from{-moz-transform:translateY(-100%)}to{-moz-transform:translateY(0)}}@keyframes slideinfromtop{from{transform:translateY(-100%)}to{transform:translateY(0)}}@-webkit-keyframes slideouttotop{from{-webkit-transform:translateY(0)}to{-webkit-transform:translateY(-100%)}}@-moz-keyframes slideouttotop{from{-moz-transform:translateY(0)}to{-moz-transform:translateY(-100%)}}@keyframes slideouttotop{from{transform:translateY(0)}to{transform:translateY(-100%)}}.slideup.out{-webkit-animation-name:fadeout;-webkit-animation-duration:100ms;-moz-animation-name:fadeout;-moz-animation-duration:100ms;animation-name:fadeout;animation-duration:100ms}.slideup.in{-webkit-transform:translateY(0);-webkit-animation-name:slideinfrombottom;-webkit-animation-duration:250ms;-moz-transform:translateY(0);-moz-animation-name:slideinfrombottom;-moz-animation-duration:250ms;transform:translateY(0);animation-name:slideinfrombottom;animation-duration:250ms}.slideup.in.reverse{-webkit-animation-name:fadein;-webkit-animation-duration:150ms;-moz-animation-name:fadein;-moz-animation-duration:150ms;animation-name:fadein;animation-duration:150ms}.slideup.out.reverse{-webkit-transform:translateY(100%);-webkit-animation-name:slideouttobottom;-webkit-animation-duration:200ms;-moz-transform:translateY(100%);-moz-animation-name:slideouttobottom;-moz-animation-duration:200ms;transform:translateY(100%);animation-name:slideouttobottom;animation-duration:200ms}@-webkit-keyframes slideinfrombottom{from{-webkit-transform:translateY(100%)}to{-webkit-transform:translateY(0)}}@-moz-keyframes slideinfrombottom{from{-moz-transform:translateY(100%)}to{-moz-transform:translateY(0)}}@keyframes slideinfrombottom{from{transform:translateY(100%)}to{transform:translateY(0)}}@-webkit-keyframes slideouttobottom{from{-webkit-transform:translateY(0)}to{-webkit-transform:translateY(100%)}}@-moz-keyframes slideouttobottom{from{-moz-transform:translateY(0)}to{-moz-transform:translateY(100%)}}@keyframes slideouttobottom{from{transform:translateY(0)}to{transform:translateY(100%)}}.viewport-flip{-webkit-perspective:1000;-moz-perspective:1000;perspective:1000;position:absolute}.flip{-webkit-backface-visibility:hidden;-webkit-transform:translateX(0);-moz-backface-visibility:hidden;-moz-transform:translateX(0);backface-visibility:hidden;transform:translateX(0)}.flip.out{-webkit-transform:rotateY(-90deg) scale(.9);-webkit-animation-name:flipouttoleft;-webkit-animation-duration:175ms;-moz-transform:rotateY(-90deg) scale(.9);-moz-animation-name:flipouttoleft;-moz-animation-duration:175ms;transform:rotateY(-90deg) scale(.9);animation-name:flipouttoleft;animation-duration:175ms}.flip.in{-webkit-animation-name:flipintoright;-webkit-animation-duration:225ms;-moz-animation-name:flipintoright;-moz-animation-duration:225ms;animation-name:flipintoright;animation-duration:225ms}.flip.out.reverse{-webkit-transform:rotateY(90deg) scale(.9);-webkit-animation-name:flipouttoright;-moz-transform:rotateY(90deg) scale(.9);-moz-animation-name:flipouttoright;transform:rotateY(90deg) scale(.9);animation-name:flipouttoright}.flip.in.reverse{-webkit-animation-name:flipintoleft;-moz-animation-name:flipintoleft;animation-name:flipintoleft}@-webkit-keyframes flipouttoleft{from{-webkit-transform:rotateY(0)}to{-webkit-transform:rotateY(-90deg) scale(.9)}}@-moz-keyframes flipouttoleft{from{-moz-transform:rotateY(0)}to{-moz-transform:rotateY(-90deg) scale(.9)}}@keyframes flipouttoleft{from{transform:rotateY(0)}to{transform:rotateY(-90deg) scale(.9)}}@-webkit-keyframes flipouttoright{from{-webkit-transform:rotateY(0)}to{-webkit-transform:rotateY(90deg) scale(.9)}}@-moz-keyframes flipouttoright{from{-moz-transform:rotateY(0)}to{-moz-transform:rotateY(90deg) scale(.9)}}@keyframes flipouttoright{from{transform:rotateY(0)}to{transform:rotateY(90deg) scale(.9)}}@-webkit-keyframes flipintoleft{from{-webkit-transform:rotateY(-90deg) scale(.9)}to{-webkit-transform:rotateY(0)}}@-moz-keyframes flipintoleft{from{-moz-transform:rotateY(-90deg) scale(.9)}to{-moz-transform:rotateY(0)}}@keyframes flipintoleft{from{transform:rotateY(-90deg) scale(.9)}to{transform:rotateY(0)}}@-webkit-keyframes flipintoright{from{-webkit-transform:rotateY(90deg) scale(.9)}to{-webkit-transform:rotateY(0)}}@-moz-keyframes flipintoright{from{-moz-transform:rotateY(90deg) scale(.9)}to{-moz-transform:rotateY(0)}}@keyframes flipintoright{from{transform:rotateY(90deg) scale(.9)}to{transform:rotateY(0)}}.viewport-turn{-webkit-perspective:200px;-moz-perspective:200px;-ms-perspective:200px;perspective:200px;position:absolute}.turn{-webkit-backface-visibility:hidden;-webkit-transform:translateX(0);-webkit-transform-origin:0;-moz-backface-visibility:hidden;-moz-transform:translateX(0);-moz-transform-origin:0;backface-visibility:hidden;transform:translateX(0);transform-origin:0}.turn.out{-webkit-transform:rotateY(-90deg) scale(.9);-webkit-animation-name:flipouttoleft;-webkit-animation-duration:125ms;-moz-transform:rotateY(-90deg) scale(.9);-moz-animation-name:flipouttoleft;-moz-animation-duration:125ms;transform:rotateY(-90deg) scale(.9);animation-name:flipouttoleft;animation-duration:125ms}.turn.in{-webkit-animation-name:flipintoright;-webkit-animation-duration:250ms;-moz-animation-name:flipintoright;-moz-animation-duration:250ms;animation-name:flipintoright;animation-duration:250ms}.turn.out.reverse{-webkit-transform:rotateY(90deg) scale(.9);-webkit-animation-name:flipouttoright;-moz-transform:rotateY(90deg) scale(.9);-moz-animation-name:flipouttoright;transform:rotateY(90deg) scale(.9);animation-name:flipouttoright}.turn.in.reverse{-webkit-animation-name:flipintoleft;-moz-animation-name:flipintoleft;animation-name:flipintoleft}@-webkit-keyframes flipouttoleft{from{-webkit-transform:rotateY(0)}to{-webkit-transform:rotateY(-90deg) scale(.9)}}@-moz-keyframes flipouttoleft{from{-moz-transform:rotateY(0)}to{-moz-transform:rotateY(-90deg) scale(.9)}}@keyframes flipouttoleft{from{transform:rotateY(0)}to{transform:rotateY(-90deg) scale(.9)}}@-webkit-keyframes flipouttoright{from{-webkit-transform:rotateY(0)}to{-webkit-transform:rotateY(90deg) scale(.9)}}@-moz-keyframes flipouttoright{from{-moz-transform:rotateY(0)}to{-moz-transform:rotateY(90deg) scale(.9)}}@keyframes flipouttoright{from{transform:rotateY(0)}to{transform:rotateY(90deg) scale(.9)}}@-webkit-keyframes flipintoleft{from{-webkit-transform:rotateY(-90deg) scale(.9)}to{-webkit-transform:rotateY(0)}}@-moz-keyframes flipintoleft{from{-moz-transform:rotateY(-90deg) scale(.9)}to{-moz-transform:rotateY(0)}}@keyframes flipintoleft{from{transform:rotateY(-90deg) scale(.9)}to{transform:rotateY(0)}}@-webkit-keyframes flipintoright{from{-webkit-transform:rotateY(90deg) scale(.9)}to{-webkit-transform:rotateY(0)}}@-moz-keyframes flipintoright{from{-moz-transform:rotateY(90deg) scale(.9)}to{-moz-transform:rotateY(0)}}@keyframes flipintoright{from{transform:rotateY(90deg) scale(.9)}to{transform:rotateY(0)}}.flow{-webkit-transform-origin:50% 30%;-webkit-box-shadow:0 0 20px rgba(0,0,0,.4);-moz-transform-origin:50% 30%;-moz-box-shadow:0 0 20px rgba(0,0,0,.4);transform-origin:50% 30%;box-shadow:0 0 20px rgba(0,0,0,.4)}.ui-dialog.flow{-webkit-transform-origin:none;-webkit-box-shadow:none;-moz-transform-origin:none;-moz-box-shadow:none;transform-origin:none;box-shadow:none}.flow.out{-webkit-transform:translateX(-100%) scale(.7);-webkit-animation-name:flowouttoleft;-webkit-animation-timing-function:ease;-webkit-animation-duration:350ms;-moz-transform:translateX(-100%) scale(.7);-moz-animation-name:flowouttoleft;-moz-animation-timing-function:ease;-moz-animation-duration:350ms;transform:translateX(-100%) scale(.7);animation-name:flowouttoleft;animation-timing-function:ease;animation-duration:350ms}.flow.in{-webkit-transform:translateX(0) scale(1);-webkit-animation-name:flowinfromright;-webkit-animation-timing-function:ease;-webkit-animation-duration:350ms;-moz-transform:translateX(0) scale(1);-moz-animation-name:flowinfromright;-moz-animation-timing-function:ease;-moz-animation-duration:350ms;transform:translateX(0) scale(1);animation-name:flowinfromright;animation-timing-function:ease;animation-duration:350ms}.flow.out.reverse{-webkit-transform:translateX(100%);-webkit-animation-name:flowouttoright;-moz-transform:translateX(100%);-moz-animation-name:flowouttoright;transform:translateX(100%);animation-name:flowouttoright}.flow.in.reverse{-webkit-animation-name:flowinfromleft;-moz-animation-name:flowinfromleft;animation-name:flowinfromleft}@-webkit-keyframes flowouttoleft{0%{-webkit-transform:translateX(0) scale(1)}60%,70%{-webkit-transform:translateX(0) scale(.7)}100%{-webkit-transform:translateX(-100%) scale(.7)}}@-moz-keyframes flowouttoleft{0%{-moz-transform:translateX(0) scale(1)}60%,70%{-moz-transform:translateX(0) scale(.7)}100%{-moz-transform:translateX(-100%) scale(.7)}}@keyframes flowouttoleft{0%{transform:translateX(0) scale(1)}60%,70%{transform:translateX(0) scale(.7)}100%{transform:translateX(-100%) scale(.7)}}@-webkit-keyframes flowouttoright{0%{-webkit-transform:translateX(0) scale(1)}60%,70%{-webkit-transform:translateX(0) scale(.7)}100%{-webkit-transform:translateX(100%) scale(.7)}}@-moz-keyframes flowouttoright{0%{-moz-transform:translateX(0) scale(1)}60%,70%{-moz-transform:translateX(0) scale(.7)}100%{-moz-transform:translateX(100%) scale(.7)}}@keyframes flowouttoright{0%{transform:translateX(0) scale(1)}60%,70%{transform:translateX(0) scale(.7)}100%{transform:translateX(100%) scale(.7)}}@-webkit-keyframes flowinfromleft{0%{-webkit-transform:translateX(-100%) scale(.7)}30%,40%{-webkit-transform:translateX(0) scale(.7)}100%{-webkit-transform:translateX(0) scale(1)}}@-moz-keyframes flowinfromleft{0%{-moz-transform:translateX(-100%) scale(.7)}30%,40%{-moz-transform:translateX(0) scale(.7)}100%{-moz-transform:translateX(0) scale(1)}}@keyframes flowinfromleft{0%{transform:translateX(-100%) scale(.7)}30%,40%{transform:translateX(0) scale(.7)}100%{transform:translateX(0) scale(1)}}@-webkit-keyframes flowinfromright{0%{-webkit-transform:translateX(100%) scale(.7)}30%,40%{-webkit-transform:translateX(0) scale(.7)}100%{-webkit-transform:translateX(0) scale(1)}}@-moz-keyframes flowinfromright{0%{-moz-transform:translateX(100%) scale(.7)}30%,40%{-moz-transform:translateX(0) scale(.7)}100%{-moz-transform:translateX(0) scale(1)}}@keyframes flowinfromright{0%{transform:translateX(100%) scale(.7)}30%,40%{transform:translateX(0) scale(.7)}100%{transform:translateX(0) scale(1)}}.ui-grid-a,.ui-grid-b,.ui-grid-c,.ui-grid-d{overflow:hidden}.ui-block-a,.ui-block-b,.ui-block-c,.ui-block-d,.ui-block-e{margin:0;padding:0;border:0;float:left;min-height:1px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}.ui-grid-solo .ui-block-a{display:block;float:none}.ui-grid-a .ui-block-a,.ui-grid-a .ui-block-b{width:49.95%}.ui-grid-a>:nth-child(n){width:50%;margin-right:-.5px}.ui-grid-a .ui-block-a{clear:left}.ui-grid-b .ui-block-a,.ui-grid-b .ui-block-b,.ui-grid-b .ui-block-c{width:33.25%}.ui-grid-b>:nth-child(n){width:33.333%;margin-right:-.5px}.ui-grid-b .ui-block-a{clear:left}.ui-grid-c .ui-block-a,.ui-grid-c .ui-block-b,.ui-grid-c .ui-block-c,.ui-grid-c .ui-block-d{width:24.925%}.ui-grid-c>:nth-child(n){width:25%;margin-right:-.5px}.ui-grid-c .ui-block-a{clear:left}.ui-grid-d .ui-block-a,.ui-grid-d .ui-block-b,.ui-grid-d .ui-block-c,.ui-grid-d .ui-block-d,.ui-grid-d .ui-block-e{width:19.925%}.ui-grid-d>:nth-child(n){width:20%}.ui-grid-d .ui-block-a{clear:left}@media all and (max-width:35em){.ui-responsive .ui-block-a,.ui-responsive .ui-block-b,.ui-responsive .ui-block-c,.ui-responsive .ui-block-d,.ui-responsive .ui-block-e{width:100%;float:none}}.ui-header-fixed,.ui-footer-fixed{left:0;right:0;width:100%;position:fixed;z-index:1000}.ui-header-fixed{top:-1px;padding-top:1px}.ui-header-fixed.ui-fixed-hidden{top:0;padding-top:0}.ui-footer-fixed{bottom:-1px;padding-bottom:1px}.ui-footer-fixed.ui-fixed-hidden{bottom:0;padding-bottom:0}.ui-header-fullscreen,.ui-footer-fullscreen{filter:Alpha(Opacity=90);opacity:.9}.ui-page-header-fixed{padding-top:2.6875em}.ui-page-footer-fixed{padding-bottom:2.6875em}.ui-page-header-fullscreen>.ui-content,.ui-page-footer-fullscreen>.ui-content{padding:0}.ui-fixed-hidden{position:absolute}.ui-page-header-fullscreen .ui-fixed-hidden,.ui-page-footer-fullscreen .ui-fixed-hidden{left:-9999px}.ui-header-fixed .ui-btn,.ui-footer-fixed .ui-btn{z-index:10}.ui-android-2x-fixed .ui-li-has-thumb{-webkit-transform:translate3d(0,0,0)}.ui-navbar{max-width:100%}.ui-navbar.ui-mini{margin:0}.ui-navbar ul:before,.ui-navbar ul:after{content:" ";display:table}.ui-navbar ul:after{clear:both}.ui-navbar ul{list-style:none;margin:0;padding:0;position:relative;display:block;border:0;max-width:100%;overflow:visible;zoom:1}.ui-navbar li .ui-btn{display:block;text-align:center;margin:0 -1px 0 0;border-right-width:0}.ui-navbar li .ui-btn-icon-right .ui-icon{right:6px}.ui-navbar li:last-child .ui-btn,.ui-navbar .ui-grid-duo .ui-block-b .ui-btn{margin-right:0;border-right-width:1px}.ui-header .ui-navbar li:last-child .ui-btn,.ui-footer .ui-navbar li:last-child .ui-btn,.ui-header .ui-navbar .ui-grid-duo .ui-block-b .ui-btn,.ui-footer .ui-navbar .ui-grid-duo .ui-block-b .ui-btn{margin-right:-1px;border-right-width:0}.ui-navbar .ui-grid-duo li.ui-block-a:last-child .ui-btn{margin-right:-1px;border-right-width:1px}.ui-header .ui-navbar li .ui-btn,.ui-footer .ui-navbar li .ui-btn{border-top-width:0;border-bottom-width:0}.ui-header .ui-navbar .ui-grid-b li.ui-block-c .ui-btn,.ui-footer .ui-navbar .ui-grid-b li.ui-block-c .ui-btn{margin-right:-5px}.ui-header .ui-navbar .ui-grid-c li.ui-block-d .ui-btn,.ui-footer .ui-navbar .ui-grid-c li.ui-block-d .ui-btn,.ui-header .ui-navbar .ui-grid-d li.ui-block-e .ui-btn,.ui-footer .ui-navbar .ui-grid-d li.ui-block-e .ui-btn{margin-right:-4px}.ui-header .ui-navbar .ui-grid-b li.ui-block-c .ui-btn-icon-right .ui-icon,.ui-footer .ui-navbar .ui-grid-b li.ui-block-c .ui-btn-icon-right .ui-icon,.ui-header .ui-navbar .ui-grid-c li.ui-block-d .ui-btn-icon-right .ui-icon,.ui-footer .ui-navbar .ui-grid-c li.ui-block-d .ui-btn-icon-right .ui-icon,.ui-header .ui-navbar .ui-grid-d li.ui-block-e .ui-btn-icon-right .ui-icon,.ui-footer .ui-navbar .ui-grid-d li.ui-block-e .ui-btn-icon-right .ui-icon{right:8px}.ui-navbar li .ui-btn .ui-btn-inner{padding-top:.7em;padding-bottom:.8em}.ui-navbar li .ui-btn-icon-top .ui-btn-inner{padding-top:30px}.ui-navbar li .ui-btn-icon-bottom .ui-btn-inner{padding-bottom:30px}.ui-btn{display:block;text-align:center;cursor:pointer;position:relative;margin:.5em 0;padding:0}.ui-mini{margin-top:.25em;margin-bottom:.25em}.ui-btn-left,.ui-btn-right,.ui-input-clear,.ui-btn-inline,.ui-grid-a .ui-btn,.ui-grid-b .ui-btn,.ui-grid-c .ui-btn,.ui-grid-d .ui-btn,.ui-grid-e .ui-btn,.ui-grid-solo .ui-btn{margin-right:5px;margin-left:5px}.ui-btn-inner{font-size:16px;padding:.6em 20px;min-width:.75em;display:block;position:relative;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;zoom:1}.ui-btn input,.ui-btn button{z-index:2}.ui-btn-left,.ui-btn-right,.ui-btn-inline{display:inline-block;vertical-align:middle}.ui-mobile .ui-btn-left,.ui-mobile .ui-btn-right,.ui-btn-left>.ui-btn,.ui-btn-right>.ui-btn{margin:0}.ui-btn-block{display:block}.ui-header>.ui-btn,.ui-footer>.ui-btn{display:inline-block;margin:0}.ui-header .ui-btn-block,.ui-footer .ui-btn-block{display:block}.ui-header .ui-btn-inner,.ui-footer .ui-btn-inner,.ui-mini .ui-btn-inner{font-size:12.5px;padding:.55em 11px .5em}.ui-fullsize .ui-btn-inner,.ui-fullsize .ui-btn-inner{font-size:16px;padding:.6em 20px}.ui-btn-icon-notext{width:24px;height:24px}.ui-btn-icon-notext .ui-btn-inner{padding:0;height:100%}.ui-btn-icon-notext .ui-btn-inner .ui-icon{margin:2px 1px 2px 3px;float:left}.ui-btn-text{position:relative;z-index:1;width:100%;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}div.ui-btn-text{width:auto}.ui-btn-icon-notext .ui-btn-text{position:absolute;left:-9999px}.ui-btn-icon-left .ui-btn-inner{padding-left:40px}.ui-btn-icon-right .ui-btn-inner{padding-right:40px}.ui-btn-icon-top .ui-btn-inner{padding-top:40px}.ui-btn-icon-bottom .ui-btn-inner{padding-bottom:40px}.ui-header .ui-btn-icon-left .ui-btn-inner,.ui-footer .ui-btn-icon-left .ui-btn-inner,.ui-mini.ui-btn-icon-left .ui-btn-inner,.ui-mini .ui-btn-icon-left .ui-btn-inner{padding-left:30px}.ui-header .ui-btn-icon-right .ui-btn-inner,.ui-footer .ui-btn-icon-right .ui-btn-inner,.ui-mini.ui-btn-icon-right .ui-btn-inner,.ui-mini .ui-btn-icon-right .ui-btn-inner{padding-right:30px}.ui-header .ui-btn-icon-top .ui-btn-inner,.ui-footer .ui-btn-icon-top .ui-btn-inner{padding:30px 3px .5em}.ui-mini.ui-btn-icon-top .ui-btn-inner,.ui-mini .ui-btn-icon-top .ui-btn-inner{padding-top:30px}.ui-header .ui-btn-icon-bottom .ui-btn-inner,.ui-footer .ui-btn-icon-bottom .ui-btn-inner{padding:.55em 3px 30px}.ui-mini.ui-btn-icon-bottom .ui-btn-inner,.ui-mini .ui-btn-icon-bottom .ui-btn-inner{padding-bottom:30px}.ui-btn-inner{-webkit-border-radius:inherit;border-radius:inherit}.ui-btn-icon-notext .ui-icon{display:block;z-index:0}.ui-btn-icon-left>.ui-btn-inner>.ui-icon,.ui-btn-icon-right>.ui-btn-inner>.ui-icon{position:absolute;top:50%;margin-top:-9px}.ui-btn-icon-top .ui-btn-inner .ui-icon,.ui-btn-icon-bottom .ui-btn-inner .ui-icon{position:absolute;left:50%;margin-left:-9px}.ui-btn-icon-left .ui-icon{left:10px}.ui-btn-icon-right .ui-icon{right:10px}.ui-btn-icon-top .ui-icon{top:10px}.ui-btn-icon-bottom .ui-icon{top:auto;bottom:10px}.ui-header .ui-btn-icon-left .ui-icon,.ui-footer .ui-btn-icon-left .ui-icon,.ui-mini.ui-btn-icon-left .ui-icon,.ui-mini .ui-btn-icon-left .ui-icon{left:5px}.ui-header .ui-btn-icon-right .ui-icon,.ui-footer .ui-btn-icon-right .ui-icon,.ui-mini.ui-btn-icon-right .ui-icon,.ui-mini .ui-btn-icon-right .ui-icon{right:5px}.ui-header .ui-btn-icon-top .ui-icon,.ui-footer .ui-btn-icon-top .ui-icon,.ui-mini.ui-btn-icon-top .ui-icon,.ui-mini .ui-btn-icon-top .ui-icon{top:5px}.ui-header .ui-btn-icon-bottom .ui-icon,.ui-footer .ui-btn-icon-bottom .ui-icon,.ui-mini.ui-btn-icon-bottom .ui-icon,.ui-mini .ui-btn-icon-bottom .ui-icon{bottom:5px}.ui-btn-hidden{position:absolute;top:0;left:0;width:100%;height:100%;-webkit-appearance:none;cursor:pointer;background:#fff;background:rgba(255,255,255,0);filter:Alpha(Opacity=0);opacity:.1;font-size:1px;border:0;text-indent:-9999px}.ui-disabled .ui-btn-hidden{display:none}.ui-disabled{z-index:1}.ui-field-contain .ui-btn.ui-submit{margin:0}label.ui-submit{font-size:16px;line-height:1.4;font-weight:400;margin:0 0 .3em;display:block}@media all and (min-width:28em){.ui-field-contain label.ui-submit{vertical-align:top;display:inline-block;width:20%;margin:0 2% 0 0}.ui-field-contain .ui-btn.ui-submit{width:78%;display:inline-block;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}.ui-hide-label .ui-btn.ui-submit{width:auto;display:block}}.ui-collapsible-inset{margin:.5em 0}.ui-collapsible-heading{font-size:16px;display:block;margin:0 -15px;padding:0;position:relative}.ui-collapsible-inset .ui-collapsible-heading{margin:0}.ui-collapsible-heading .ui-btn{text-align:left;margin:0;border-left-width:0;border-right-width:0}.ui-collapsible-inset .ui-collapsible-heading .ui-btn{border-right-width:1px;border-left-width:1px}.ui-collapsible-collapsed+.ui-collapsible:not(.ui-collapsible-inset) .ui-collapsible-heading .ui-btn{border-top-width:0}.ui-collapsible-set .ui-collapsible:not(.ui-collapsible-inset) .ui-collapsible-heading .ui-btn{border-top-width:1px}.ui-collapsible-heading .ui-btn-inner{padding-left:12px;padding-right:12px}.ui-collapsible-heading .ui-btn-icon-left .ui-btn-inner{padding-left:40px}.ui-collapsible-heading .ui-btn-icon-right .ui-btn-inner{padding-right:40px}.ui-collapsible-heading .ui-btn-icon-top .ui-btn-inner,.ui-collapsible-heading .ui-btn-icon-bottom .ui-btn-inner{text-align:center}.ui-collapsible-heading .ui-btn-icon-left.ui-mini .ui-btn-inner{padding-left:30px}.ui-collapsible-heading .ui-btn-icon-right.ui-mini .ui-btn-inner{padding-right:30px}.ui-collapsible-heading .ui-btn span.ui-btn{position:absolute;left:6px;top:50%;margin:-12px 0 0 0;width:20px;height:20px;padding:1px 0 1px 2px;text-indent:-9999px}.ui-collapsible-heading .ui-btn span.ui-btn .ui-btn-inner{padding:10px 0}.ui-collapsible-heading .ui-btn span.ui-btn .ui-icon{left:0;margin-top:-10px}.ui-collapsible-heading-status{position:absolute;top:-9999px;left:0}.ui-collapsible-content{display:block;margin:0 -15px;padding:10px 15px;border-left-width:0;border-right-width:0;border-top:0;background-image:none}.ui-collapsible-inset .ui-collapsible-content{margin:0;border-right-width:1px;border-left-width:1px}.ui-collapsible-content-collapsed{display:none}.ui-collapsible-set>.ui-collapsible.ui-corner-all{-webkit-border-radius:0;border-radius:0}.ui-collapsible-heading,.ui-collapsible-heading>.ui-btn{-webkit-border-radius:inherit;border-radius:inherit}.ui-collapsible-set .ui-collapsible.ui-first-child{-webkit-border-top-right-radius:inherit;border-top-right-radius:inherit;-webkit-border-top-left-radius:inherit;border-top-left-radius:inherit}.ui-collapsible-content,.ui-collapsible-set .ui-collapsible.ui-last-child{-webkit-border-bottom-right-radius:inherit;border-bottom-right-radius:inherit;-webkit-border-bottom-left-radius:inherit;border-bottom-left-radius:inherit}.ui-collapsible-themed-content:not(.ui-collapsible-collapsed)>.ui-collapsible-heading{-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0}.ui-collapsible-set{margin:.5em 0}.ui-collapsible-set .ui-collapsible{margin:-1px 0 0}.ui-collapsible-set .ui-collapsible.ui-first-child{margin-top:0}.ui-controlgroup,fieldset.ui-controlgroup{padding:0;margin:.5em 0;zoom:1}.ui-controlgroup.ui-mini,fieldset.ui-controlgroup.ui-mini{margin:.25em 0}.ui-field-contain .ui-controlgroup,.ui-field-contain fieldset.ui-controlgroup{margin:0}.ui-bar .ui-controlgroup{margin:0 5px}.ui-controlgroup-label{font-size:16px;line-height:1.4;font-weight:400;margin:0 0 .4em}.ui-controlgroup-controls label.ui-select,.ui-controlgroup-controls label.ui-submit{position:absolute;left:-9999px}.ui-controlgroup li{list-style:none}.ui-controlgroup .ui-btn{margin:0}.ui-controlgroup .ui-btn-icon-notext{width:auto;height:auto;top:auto}.ui-controlgroup .ui-btn-icon-notext .ui-btn-inner{height:20px;padding:.6em 20px}.ui-controlgroup-horizontal .ui-btn-icon-notext .ui-btn-inner{width:18px}.ui-controlgroup.ui-mini .ui-btn-icon-notext .ui-btn-inner,.ui-header .ui-controlgroup .ui-btn-icon-notext .ui-btn-inner,.ui-footer .ui-controlgroup .ui-btn-icon-notext .ui-btn-inner{height:16px;padding:.55em 11px .5em}.ui-controlgroup .ui-btn-icon-notext .ui-btn-inner .ui-icon{position:absolute;top:50%;right:50%;margin:-9px -9px 0 0}.ui-controlgroup-horizontal .ui-btn-inner{text-align:center}.ui-controlgroup-horizontal.ui-mini .ui-btn-inner{height:16px;line-height:16px}.ui-controlgroup .ui-checkbox label,.ui-controlgroup .ui-radio label{font-size:16px}.ui-controlgroup-horizontal .ui-controlgroup-controls:before,.ui-controlgroup-horizontal .ui-controlgroup-controls:after{content:"";display:table}.ui-controlgroup-horizontal .ui-controlgroup-controls:after{clear:both}.ui-controlgroup-horizontal .ui-controlgroup-controls{display:inline-block;vertical-align:middle;zoom:1}.ui-controlgroup-horizontal .ui-controlgroup-controls>.ui-btn,.ui-controlgroup-horizontal .ui-controlgroup-controls li>.ui-btn,.ui-controlgroup-horizontal .ui-checkbox,.ui-controlgroup-horizontal .ui-radio,.ui-controlgroup-horizontal .ui-select{float:left;clear:none;margin:0}.ui-controlgroup-horizontal .ui-select .ui-btn-text{width:auto}.ui-controlgroup-vertical .ui-btn{border-bottom-width:0}.ui-controlgroup-vertical .ui-btn.ui-last-child{border-bottom-width:1px}.ui-controlgroup-horizontal .ui-btn{border-right-width:0}.ui-controlgroup-horizontal .ui-btn.ui-last-child{border-right-width:1px}.ui-controlgroup .ui-btn-corner-all{-webkit-border-radius:0;border-radius:0}.ui-controlgroup .ui-controlgroup-controls,.ui-controlgroup .ui-radio,.ui-controlgroup .ui-checkbox,.ui-controlgroup .ui-select,.ui-controlgroup li{-webkit-border-radius:inherit;border-radius:inherit}.ui-controlgroup-vertical .ui-btn.ui-first-child{-webkit-border-top-left-radius:inherit;border-top-left-radius:inherit;-webkit-border-top-right-radius:inherit;border-top-right-radius:inherit}.ui-controlgroup-vertical .ui-btn.ui-last-child{-webkit-border-bottom-left-radius:inherit;border-bottom-left-radius:inherit;-webkit-border-bottom-right-radius:inherit;border-bottom-right-radius:inherit}.ui-controlgroup-horizontal .ui-btn.ui-first-child{-webkit-border-top-left-radius:inherit;border-top-left-radius:inherit;-webkit-border-bottom-left-radius:inherit;border-bottom-left-radius:inherit}.ui-controlgroup-horizontal .ui-btn.ui-last-child{-webkit-border-top-right-radius:inherit;border-top-right-radius:inherit;-webkit-border-bottom-right-radius:inherit;border-bottom-right-radius:inherit}.ui-controlgroup .ui-shadow:not(.ui-focus){-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none}@media all and (min-width:28em){.ui-field-contain .ui-controlgroup-label{vertical-align:top;display:inline-block;width:20%;margin:0 2% 0 0}.ui-field-contain .ui-controlgroup-controls{width:78%;display:inline-block}.ui-field-contain .ui-controlgroup .ui-select{width:100%;display:block}.ui-field-contain .ui-controlgroup-horizontal .ui-select{width:auto}.ui-hide-label .ui-controlgroup-controls{width:100%}}.ui-dialog{background:none!important}.ui-dialog-contain{width:92.5%;max-width:500px;margin:10% auto 15px;padding:0;position:relative;top:-15px}.ui-dialog-contain>.ui-header,.ui-dialog-contain>.ui-content,.ui-dialog-contain>.ui-footer{display:block;position:relative;width:auto;margin:0}.ui-dialog-contain>.ui-header{border:0;overflow:hidden;z-index:10;padding:0}.ui-dialog-contain>.ui-content{padding:15px}.ui-dialog-contain>.ui-footer{z-index:10;padding:0 15px}.ui-popup-open .ui-header-fixed,.ui-popup-open .ui-footer-fixed{position:absolute!important}.ui-popup-screen{background-image:url(data:image/gif;base64,R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==);top:0;left:0;right:0;bottom:1px;position:absolute;filter:Alpha(Opacity=0);opacity:0;z-index:1099}.ui-popup-screen.in{opacity:.5;filter:Alpha(Opacity=50)}.ui-popup-screen.out{opacity:0;filter:Alpha(Opacity=0)}.ui-popup-container{z-index:1100;display:inline-block;position:absolute;padding:0;outline:0}.ui-popup{position:relative}.ui-popup.ui-content,.ui-popup .ui-content{overflow:visible}.ui-popup>p,.ui-popup>h1,.ui-popup>h2,.ui-popup>h3,.ui-popup>h4,.ui-popup>h5,.ui-popup>h6{margin:.5em 7px}.ui-popup>span{display:block;margin:.5em 7px}.ui-popup .ui-title{font-size:16px;font-weight:700;margin-top:.5em;margin-bottom:.5em}.ui-popup-container .ui-content>p,.ui-popup-container .ui-content>h1,.ui-popup-container .ui-content>h2,.ui-popup-container .ui-content>h3,.ui-popup-container .ui-content>h4,.ui-popup-container .ui-content>h5,.ui-popup-container .ui-content>h6{margin:.5em 0}.ui-popup-container .ui-content>span{margin:0}.ui-popup-container .ui-content>p:first-child,.ui-popup-container .ui-content>h1:first-child,.ui-popup-container .ui-content>h2:first-child,.ui-popup-container .ui-content>h3:first-child,.ui-popup-container .ui-content>h4:first-child,.ui-popup-container .ui-content>h5:first-child,.ui-popup-container .ui-content>h6:first-child{margin-top:0}.ui-popup-container .ui-content>p:last-child,.ui-popup-container .ui-content>h1:last-child,.ui-popup-container .ui-content>h2:last-child,.ui-popup-container .ui-content>h3:last-child,.ui-popup-container .ui-content>h4:last-child,.ui-popup-container .ui-content>h5:last-child,.ui-popup-container .ui-content>h6:last-child{margin-bottom:0}.ui-popup>img{width:auto;height:auto;max-width:100%;max-height:100%;vertical-align:middle}.ui-popup:not(.ui-content)>img:only-child,.ui-popup:not(.ui-content)>.ui-btn-left:first-child+img:last-child,.ui-popup:not(.ui-content)>.ui-btn-right:first-child+img:last-child{-webkit-border-radius:inherit;border-radius:inherit}.ui-popup iframe{vertical-align:middle}@media all and (min-width:28em){.ui-popup .ui-field-contain label.ui-submit,.ui-popup .ui-field-contain .ui-controlgroup-label,.ui-popup .ui-field-contain label.ui-select,.ui-popup .ui-field-contain label.ui-input-text{font-size:16px;line-height:1.4;display:block;font-weight:400;margin:0 0 .3em}.ui-popup .ui-field-contain .ui-btn.ui-submit,.ui-popup .ui-field-contain .ui-controlgroup-controls,.ui-popup .ui-field-contain .ui-select,.ui-popup .ui-field-contain input.ui-input-text,.ui-popup .ui-field-contain textarea.ui-input-text,.ui-popup .ui-field-contain .ui-input-search{width:100%;display:block}}.ui-popup>.ui-btn-left,.ui-popup>.ui-btn-right{position:absolute;top:-9px;margin:0;z-index:1101}.ui-popup>.ui-btn-left{left:-9px}.ui-popup>.ui-btn-right{right:-9px}.ui-popup-hidden{top:-99999px;left:-9999px}.ui-checkbox,.ui-radio{position:relative;clear:both;margin:0;z-index:1}.ui-checkbox .ui-btn,.ui-radio .ui-btn{text-align:left;z-index:2}.ui-controlgroup .ui-checkbox .ui-btn,.ui-controlgroup .ui-radio .ui-btn{margin:0}.ui-checkbox .ui-btn-inner,.ui-radio .ui-btn-inner{white-space:normal}.ui-checkbox .ui-btn-icon-left .ui-btn-inner,.ui-radio .ui-btn-icon-left .ui-btn-inner{padding-left:45px}.ui-checkbox .ui-mini.ui-btn-icon-left .ui-btn-inner,.ui-radio .ui-mini.ui-btn-icon-left .ui-btn-inner{padding-left:36px}.ui-checkbox .ui-btn-icon-right .ui-btn-inner,.ui-radio .ui-btn-icon-right .ui-btn-inner{padding-right:45px}.ui-checkbox .ui-mini.ui-btn-icon-right .ui-btn-inner,.ui-radio .ui-mini.ui-btn-icon-right .ui-btn-inner{padding-right:36px}.ui-checkbox .ui-btn-icon-top .ui-btn-inner,.ui-radio .ui-btn-icon-top .ui-btn-inner{padding-right:0;padding-left:0;text-align:center}.ui-checkbox .ui-btn-icon-bottom .ui-btn-inner,.ui-radio .ui-btn-icon-bottom .ui-btn-inner{padding-right:0;padding-left:0;text-align:center}.ui-checkbox .ui-icon,.ui-radio .ui-icon{top:1.1em}.ui-checkbox .ui-btn-icon-left .ui-icon,.ui-radio .ui-btn-icon-left .ui-icon{left:15px}.ui-checkbox .ui-mini.ui-btn-icon-left .ui-icon,.ui-radio .ui-mini.ui-btn-icon-left .ui-icon{left:9px}.ui-checkbox .ui-btn-icon-right .ui-icon,.ui-radio .ui-btn-icon-right .ui-icon{right:15px}.ui-checkbox .ui-mini.ui-btn-icon-right .ui-icon,.ui-radio .ui-mini.ui-btn-icon-right .ui-icon{right:9px}.ui-checkbox .ui-btn-icon-top .ui-icon,.ui-radio .ui-btn-icon-top .ui-icon{top:10px}.ui-checkbox .ui-btn-icon-bottom .ui-icon,.ui-radio .ui-btn-icon-bottom .ui-icon{top:auto;bottom:10px}.ui-checkbox .ui-btn-icon-right .ui-icon,.ui-radio .ui-btn-icon-right .ui-icon{right:15px}.ui-checkbox .ui-mini.ui-btn-icon-right .ui-icon,.ui-radio .ui-mini.ui-btn-icon-right .ui-icon{right:9px}.ui-controlgroup-horizontal .ui-checkbox .ui-icon,.ui-controlgroup-horizontal .ui-radio .ui-icon{display:none}.ui-controlgroup-horizontal .ui-checkbox .ui-btn-inner,.ui-controlgroup-horizontal .ui-radio .ui-btn-inner{padding:.6em 20px}.ui-controlgroup-horizontal .ui-checkbox .ui-mini .ui-btn-inner,.ui-controlgroup-horizontal .ui-radio .ui-mini .ui-btn-inner{padding:.55em 11px .5em}.ui-checkbox input,.ui-radio input{position:absolute;left:20px;top:50%;width:10px;height:10px;margin:-5px 0 0 0;outline:0!important;z-index:1}.ui-field-contain,fieldset.ui-field-contain{padding:.8em 0;margin:0;border-width:0 0 1px;overflow:visible}.ui-field-contain:last-child{border-bottom-width:0}.ui-field-contain{max-width:100%}@media all and (min-width:28em){.ui-field-contain,.ui-mobile fieldset.ui-field-contain{border-width:0;padding:0;margin:1em 0}}.ui-select{display:block;position:relative}.ui-select select{position:absolute;left:-9999px;top:-9999px}.ui-select .ui-btn{opacity:1}.ui-field-contain .ui-select .ui-btn{margin:0}.ui-select .ui-btn select{cursor:pointer;-webkit-appearance:none;left:0;top:0;width:100%;min-height:1.5em;min-height:100%;height:3em;max-height:100%;filter:Alpha(Opacity=0);opacity:0;z-index:2}.ui-select .ui-disabled{opacity:.3}.ui-select .ui-disabled select{display:none}@-moz-document url-prefix(){.ui-select .ui-btn select{opacity:.0001}}.ui-select .ui-btn.ui-select-nativeonly{border-radius:0;border:0}.ui-select .ui-btn.ui-select-nativeonly select{opacity:1;text-indent:0;display:block}.ui-select .ui-disabled.ui-select-nativeonly .ui-btn-inner{opacity:0}.ui-select .ui-btn-icon-right .ui-btn-inner,.ui-select .ui-li-has-count .ui-btn-inner{padding-right:45px}.ui-select .ui-mini.ui-btn-icon-right .ui-btn-inner{padding-right:32px}.ui-select .ui-btn-icon-right.ui-li-has-count .ui-btn-inner{padding-right:80px}.ui-select .ui-mini.ui-btn-icon-right.ui-li-has-count .ui-btn-inner{padding-right:67px}.ui-select .ui-btn-icon-right .ui-icon{right:15px}.ui-select .ui-mini.ui-btn-icon-right .ui-icon{right:7px}.ui-select .ui-btn-icon-right.ui-li-has-count .ui-li-count{right:45px}.ui-select .ui-mini.ui-btn-icon-right.ui-li-has-count .ui-li-count{right:32px}label.ui-select{font-size:16px;line-height:1.4;font-weight:400;margin:0 0 .3em;display:block}.ui-select .ui-btn-text,.ui-selectmenu .ui-btn-text{display:block;min-height:1em;overflow:hidden!important}.ui-select .ui-btn-text{text-overflow:ellipsis}.ui-selectmenu{padding:6px;min-width:160px}.ui-selectmenu .ui-listview{margin:0}.ui-selectmenu .ui-btn.ui-li-divider{cursor:default}.ui-screen-hidden,.ui-selectmenu-list .ui-li .ui-icon{display:none}.ui-selectmenu-list .ui-li .ui-icon{display:block}.ui-li.ui-selectmenu-placeholder{display:none}.ui-selectmenu .ui-header{margin:0;padding:0}.ui-selectmenu.ui-popup .ui-header{-webkit-border-top-left-radius:0;border-top-left-radius:0;-webkit-border-top-right-radius:0;border-top-right-radius:0}.ui-selectmenu .ui-header .ui-title{margin:.6em 46px .8em}@media all and (min-width:28em){.ui-field-contain label.ui-select{vertical-align:top;display:inline-block;width:20%;margin:0 2% 0 0}.ui-field-contain .ui-select{width:78%;display:inline-block}.ui-hide-label .ui-select{width:100%}}.ui-selectmenu .ui-header h1:after{content:'.';visibility:hidden}label.ui-input-text{font-size:16px;line-height:1.4;display:block;font-weight:400;margin:0 0 .3em}input.ui-input-text,textarea.ui-input-text{background-image:none;padding:.4em;margin:.5em 0;min-height:1.4em;line-height:1.4em;font-size:16px;display:block;width:100%;outline:0}input.ui-mini,.ui-mini input,textarea.ui-mini{font-size:14px}div.ui-input-text input.ui-input-text,div.ui-input-text textarea.ui-input-text,.ui-input-search input.ui-input-text{border:0;width:100%;padding:.4em 0;margin:0;display:block;background:transparent none;outline:0!important}.ui-input-search,div.ui-input-text{margin:.5em 0;background-image:none;position:relative}.ui-input-search{padding:0 30px}div.ui-input-text{padding:0 .4em}div.ui-input-has-clear{padding:0 30px 0 .4em}input.ui-input-text.ui-mini,textarea.ui-input-text.ui-mini,.ui-input-search.ui-mini,div.ui-input-text.ui-mini{margin:.25em 0}.ui-field-contain input.ui-input-text,.ui-field-contain textarea.ui-input-text,.ui-field-contain .ui-input-search,.ui-field-contain div.ui-input-text{margin:0}textarea.ui-input-text{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}input.ui-input-text{-webkit-appearance:none}textarea.ui-input-text{height:50px;-webkit-transition:height 200ms linear;-moz-transition:height 200ms linear;-o-transition:height 200ms linear;transition:height 200ms linear}textarea.ui-mini{height:45px}.ui-icon-searchfield:after{position:absolute;left:7px;top:50%;margin-top:-9px;content:"";width:18px;height:18px;opacity:.5}.ui-input-search .ui-input-clear,.ui-input-text .ui-input-clear{position:absolute;right:0;top:50%;margin-top:-13px}.ui-mini .ui-input-clear{right:-3px}.ui-input-search .ui-input-clear-hidden,.ui-input-text .ui-input-clear-hidden{display:none}input::-moz-placeholder,textarea::-moz-placeholder{color:#aaa}input[type=number]::-webkit-outer-spin-button{margin:0}@media all and (min-width:28em){.ui-field-contain label.ui-input-text{vertical-align:top;display:inline-block;width:20%;margin:0 2% 0 0}.ui-field-contain input.ui-input-text,.ui-field-contain textarea.ui-input-text,.ui-field-contain .ui-input-search,.ui-field-contain div.ui-input-text{width:78%;display:inline-block}.ui-field-contain .ui-input-search,.ui-field-contain div.ui-input-text{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box}.ui-hide-label input.ui-input-text,.ui-hide-label textarea.ui-input-text,.ui-hide-label .ui-input-search,.ui-hide-label div.ui-input-text,.ui-input-search input.ui-input-text,div.ui-input-text input.ui-input-text{width:100%}}.ui-rangeslider{zoom:1;margin:0}.ui-rangeslider:before,.ui-rangeslider:after{content:"";display:table}.ui-rangeslider:after{clear:both}.ui-rangeslider input.ui-input-text.ui-slider-input{margin:.57143em 0}.ui-rangeslider.ui-mini input.ui-slider-input{margin:.28571em 0}.ui-rangeslider input.ui-slider-input.ui-rangeslider-last{float:right}.ui-rangeslider .ui-rangeslider-sliders{position:relative;overflow:visible;height:30px;margin:.5em 68px}.ui-rangeslider.ui-mini .ui-rangeslider-sliders{margin:.25em 68px}.ui-field-contain .ui-rangeslider input.ui-slider-input,.ui-field-contain .ui-rangeslider.ui-mini input.ui-slider-input,.ui-field-contain .ui-rangeslider .ui-rangeslider-sliders,.ui-field-contain .ui-rangeslider.ui-mini .ui-rangeslider-sliders{margin-top:0;margin-bottom:0}.ui-rangeslider .ui-rangeslider-sliders .ui-slider-track{position:absolute;top:6px;right:0;left:0;margin:0}.ui-rangeslider.ui-mini .ui-rangeslider-sliders .ui-slider-track{top:8px}.ui-rangeslider .ui-slider-track:first-child .ui-slider-bg{display:none}.ui-rangeslider .ui-rangeslider-sliders .ui-slider-track:first-child{background-color:transparent;background:0;border-width:0;height:0}html >body .ui-rangeslider .ui-rangeslider-sliders .ui-slider-track:first-child{height:15px;border-width:1px}html >body .ui-rangeslider.ui-mini .ui-rangeslider-sliders .ui-slider-track:first-child{height:12px}@media all and (min-width:28em){.ui-field-contain .ui-rangeslider label.ui-slider{float:left}.ui-field-contain .ui-rangeslider input.ui-slider-input{position:relative;z-index:1}.ui-field-contain .ui-rangeslider input.ui-slider-input.ui-rangeslider-first,.ui-field-contain .ui-rangeslider.ui-mini input.ui-slider-input.ui-rangeslider-first{margin-right:17px}.ui-field-contain .ui-rangeslider .ui-rangeslider-sliders,.ui-field-contain .ui-rangeslider.ui-mini .ui-rangeslider-sliders{float:left;width:78%;margin:0 -68px}.ui-field-contain .ui-rangeslider .ui-slider-track,.ui-field-contain .ui-rangeslider.ui-mini .ui-slider-track{right:68px;left:68px}.ui-field-contain.ui-hide-label .ui-rangeslider input.ui-slider-input.ui-rangeslider-first{margin:0}.ui-field-contain.ui-hide-label .ui-rangeslider .ui-rangeslider-sliders,.ui-field-contain.ui-hide-label .ui-rangeslider.ui-mini .ui-rangeslider-sliders{width:auto;float:none;margin:0 68px}.ui-field-contain.ui-hide-label .ui-rangeslider .ui-slider-track,.ui-field-contain.ui-hide-label .ui-rangeslider.ui-mini .ui-slider-track{right:0;left:0}}.ui-listview{margin:0}ol.ui-listview,ol.ui-listview .ui-li-divider{counter-reset:listnumbering}.ui-content .ui-listview,.ui-panel-inner>.ui-listview{margin:-15px}.ui-collapsible-content>.ui-listview{margin:-10px -15px}.ui-content .ui-listview-inset,.ui-panel-inner .ui-listview-inset{margin:1em 0}.ui-collapsible-content .ui-listview-inset{margin:.5em 0}.ui-listview,.ui-li{list-style:none;padding:0}.ui-li,.ui-li.ui-field-contain{display:block;margin:0;position:relative;overflow:visible;text-align:left;border-width:0;border-top-width:1px}.ui-li.ui-btn,.ui-li.ui-field-contain,.ui-li-divider,.ui-li-static{margin:0}.ui-listview-inset .ui-li{border-right-width:1px;border-left-width:1px}.ui-li.ui-last-child,.ui-li.ui-field-contain.ui-last-child{border-bottom-width:1px}.ui-collapsible-content>.ui-listview:not(.ui-listview-inset)>.ui-li.ui-first-child{border-top-width:0}.ui-collapsible-themed-content .ui-listview:not(.ui-listview-inset)>.ui-li.ui-last-child{border-bottom-width:0}.ui-li .ui-btn-text a.ui-link-inherit{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.ui-li-static{background-image:none}.ui-li-divider{padding:.5em 15px;font-size:14px;font-weight:700}ol.ui-listview .ui-link-inherit:before,ol.ui-listview .ui-li-static:before,.ui-li-dec{font-size:.8em;display:inline-block;padding-right:.3em;font-weight:400;counter-increment:listnumbering;content:counter(listnumbering) ". "}ol.ui-listview .ui-li-jsnumbering:before{content:""!important}.ui-listview .ui-li>.ui-btn-text{-webkit-border-radius:inherit;border-radius:inherit}.ui-listview>.ui-li.ui-first-child,.ui-listview .ui-btn.ui-first-child>.ui-li>.ui-btn-text>.ui-link-inherit{-webkit-border-top-right-radius:inherit;border-top-right-radius:inherit;-webkit-border-top-left-radius:inherit;border-top-left-radius:inherit}.ui-listview>.ui-li.ui-last-child,.ui-listview .ui-btn.ui-last-child>.ui-li>.ui-btn-text>.ui-link-inherit,.ui-collapsible-content>.ui-listview:not(.ui-listview-inset),.ui-collapsible-content>.ui-listview:not(.ui-listview-inset) .ui-li.ui-last-child{-webkit-border-bottom-right-radius:inherit;border-bottom-right-radius:inherit;-webkit-border-bottom-left-radius:inherit;border-bottom-left-radius:inherit}.ui-listview>.ui-li.ui-first-child .ui-li-link-alt{-webkit-border-top-right-radius:inherit;border-top-right-radius:inherit}.ui-listview>.ui-li.ui-last-child .ui-li-link-alt{-webkit-border-bottom-right-radius:inherit;border-bottom-right-radius:inherit}.ui-listview>.ui-li.ui-first-child .ui-li-thumb:not(.ui-li-icon){-webkit-border-top-left-radius:inherit;border-top-left-radius:inherit}.ui-listview>.ui-li.ui-last-child .ui-li-thumb:not(.ui-li-icon){-webkit-border-bottom-left-radius:inherit;border-bottom-left-radius:inherit}.ui-li>.ui-btn-inner{display:block;position:relative;padding:0}.ui-li .ui-btn-inner a.ui-link-inherit,.ui-li-static.ui-li{padding:.7em 15px;display:block}.ui-li-has-thumb .ui-btn-inner a.ui-link-inherit,.ui-li-static.ui-li-has-thumb{min-height:59px;padding-left:100px}.ui-li-has-icon .ui-btn-inner a.ui-link-inherit,.ui-li-static.ui-li-has-icon{min-height:20px;padding-left:40px}.ui-li-has-count .ui-btn-inner a.ui-link-inherit,.ui-li-static.ui-li-has-count,.ui-li-divider.ui-li-has-count{padding-right:45px}.ui-li-has-arrow .ui-btn-inner a.ui-link-inherit,.ui-li-static.ui-li-has-arrow{padding-right:40px}.ui-li-has-arrow.ui-li-has-count .ui-btn-inner a.ui-link-inherit,.ui-li-static.ui-li-has-arrow.ui-li-has-count{padding-right:75px}.ui-li-heading{font-size:16px;font-weight:700;display:block;margin:.6em 0;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.ui-li-desc{font-size:12px;font-weight:400;display:block;margin:-.5em 0 .6em;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}ol.ui-listview>.ui-li .ui-li-heading{display:inline-block;width:100%;margin-left:-1.3em;text-indent:1.3em;vertical-align:middle}ol.ui-listview>.ui-li .ui-li-desc:not(.ui-li-aside){text-indent:1.55em}.ui-li-thumb,.ui-listview .ui-li-icon{position:absolute;left:1px;top:0;max-height:80px;max-width:80px}.ui-listview .ui-li-icon{max-height:16px;max-width:16px;left:10px;top:.9em}.ui-li-thumb,.ui-listview .ui-li-icon,.ui-li-content{float:left;margin-right:10px}.ui-li-aside{float:right;width:50%;text-align:right;margin:.3em 0}@media all and (min-width:480px){.ui-li-aside{width:45%}}.ui-li-divider{cursor:default}.ui-li-has-alt .ui-btn-inner a.ui-link-inherit,.ui-li-static.ui-li-has-alt{padding-right:53px}.ui-li-has-alt.ui-li-has-count .ui-btn-inner a.ui-link-inherit,.ui-li-static.ui-li-has-alt.ui-li-has-count{padding-right:88px}.ui-li-has-count .ui-li-count{position:absolute;font-size:11px;font-weight:700;padding:.2em .5em;top:50%;margin-top:-.9em;right:10px}.ui-li-has-count.ui-li-divider .ui-li-count,.ui-li-has-count .ui-link-inherit .ui-li-count{margin-top:-.95em}.ui-li-has-arrow.ui-li-has-count .ui-li-count{right:40px}.ui-li-has-alt.ui-li-has-count .ui-li-count{right:53px}.ui-li-link-alt{position:absolute;width:40px;height:100%;border-width:0;border-left-width:1px;top:0;right:0;margin:0;padding:0;z-index:2}.ui-li-link-alt .ui-btn{overflow:hidden;position:absolute;right:8px;top:50%;margin:-13px 0 0 0;border-bottom-width:1px;z-index:-1}.ui-li-link-alt .ui-btn-inner{padding:0;height:100%;position:absolute;width:100%;top:0;left:0}.ui-li-link-alt .ui-btn .ui-icon{right:50%;margin-right:-9px}.ui-li-link-alt .ui-btn-icon-notext .ui-btn-inner .ui-icon{position:absolute;top:50%;margin-top:-9px}.ui-listview * .ui-btn-inner>.ui-btn>.ui-btn-inner{border-top:0}.ui-listview-filter{border-width:0;overflow:hidden;margin:-15px -15px 15px -15px}.ui-collapsible-content .ui-listview-filter{margin:-10px -15px 10px -15px;border-bottom:inherit}.ui-listview-filter-inset{margin:-15px -5px;background:transparent}.ui-collapsible-content .ui-listview-filter-inset{margin:-5px;border-bottom-width:0}.ui-listview-filter .ui-input-search{margin:5px;width:auto;display:block}.ui-li.ui-screen-hidden{display:none}@media only screen and (min-device-width:768px) and (max-device-width:1024px){.ui-li .ui-btn-text{overflow:visible}}label.ui-slider{font-size:16px;line-height:1.4;font-weight:400;margin:0;display:block}.ui-field-contain label.ui-slider{margin-bottom:.4em}div.ui-slider{height:30px;margin:.5em 0;zoom:1}div.ui-slider.ui-mini{margin:.25em 0}.ui-field-contain div.ui-slider,.ui-field-contain div.ui-slider.ui-mini{margin:0}div.ui-slider:before,div.ui-slider:after{content:"";display:table}div.ui-slider:after{clear:both}input.ui-input-text.ui-slider-input{display:block;float:left;margin:0;padding:4px;width:40px;height:22px;line-height:22px;font-size:14px;border-width:0;background-image:none;font-weight:700;text-align:center;vertical-align:text-bottom;outline:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;-ms-box-sizing:content-box;box-sizing:content-box}.ui-slider-input::-webkit-outer-spin-button,.ui-slider-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.ui-slider-track,.ui-slider-switch{position:relative;overflow:visible;height:15px;margin:0 15px 0 68px;top:6px}.ui-slider-track.ui-mini{height:12px;top:8px}.ui-slider-bg{border:0;height:100%}.ui-slider-track .ui-btn.ui-slider-handle,.ui-slider-switch .ui-btn.ui-slider-handle{position:absolute;z-index:1;top:50%;width:28px;height:28px;margin:-15px 0 0 -15px;outline:0}.ui-slider-track.ui-mini .ui-slider-handle{height:14px;width:14px;margin:-8px 0 0 -7px}.ui-slider-handle .ui-btn-inner{padding:0;height:100%}.ui-slider-track.ui-mini .ui-slider-handle .ui-btn-inner{height:30px;width:30px;padding:0;margin:-9px 0 0 -9px;border-top:0}select.ui-slider-switch{display:none}div.ui-slider-switch{display:inline-block;height:32px;width:5.8em;margin:.5em 0;top:0}div.ui-slider-switch:before,div.ui-slider-switch:after{display:none;clear:none}div.ui-slider-switch.ui-mini{width:5em;height:29px;margin:.25em 0;top:0}.ui-field-contain .ui-slider-switch,.ui-field-contain .ui-slider-switch.ui-mini{margin:0}.ui-slider-inneroffset{margin:0 16px;position:relative;z-index:1}.ui-slider-switch.ui-mini .ui-slider-inneroffset{margin:0 15px 0 14px}.ui-slider-switch .ui-btn.ui-slider-handle{margin:1px 0 0 -15px}.ui-slider-switch.ui-mini .ui-slider-handle{width:25px;height:25px;margin:1px 0 0 -13px;padding:0}.ui-slider-handle-snapping{-webkit-transition:left 70ms linear;-moz-transition:left 70ms linear}.ui-slider-switch.ui-mini .ui-slider-handle .ui-btn-inner{height:30px;width:30px;padding:0;margin:0;border-top:0}.ui-slider-switch .ui-slider-label{position:absolute;text-align:center;width:100%;overflow:hidden;font-size:16px;top:0;line-height:2;min-height:100%;border-width:0;white-space:nowrap;cursor:pointer}.ui-slider-switch.ui-mini .ui-slider-label{font-size:14px}.ui-slider-switch .ui-slider-label-a{z-index:1;left:0;text-indent:-1.5em}.ui-slider-switch .ui-slider-label-b{z-index:0;right:0;text-indent:1.5em}@media all and (min-width:28em){.ui-field-contain label.ui-slider{vertical-align:top;display:inline-block;width:20%;margin:0 2% 0 0}.ui-field-contain div.ui-slider{display:inline-block;width:78%}.ui-field-contain.ui-hide-label div.ui-slider{display:block;width:auto}.ui-field-contain div.ui-slider-switch,.ui-field-contain.ui-hide-label div.ui-slider-switch{display:inline-block;width:5.8em}.ui-field-contain div.ui-slider-switch.ui-mini{width:5em}}.ui-table{border:0;border-collapse:collapse;padding:0;width:100%}.ui-table th,.ui-table td{line-height:1.5em;text-align:left;padding:.4em .5em;vertical-align:top}.ui-table th .ui-btn,.ui-table td .ui-btn{line-height:normal}.ui-table th{font-weight:700}.ui-table caption{text-align:left;margin-bottom:1.4em;opacity:.5}.table-stroke thead th{border-bottom:1px solid #d6d6d6;border-bottom:1px solid rgba(0,0,0,.1)}.table-stroke tbody th,.table-stroke tbody td{border-bottom:1px solid #e6e6e6;border-bottom:1px solid rgba(0,0,0,.05)}.table-stripe tbody tr:nth-child(odd) td,.table-stripe tbody tr:nth-child(odd) th{background-color:#eee;background-color:rgba(0,0,0,.04)}.table-stripe thead th,.table-stripe tbody tr:last-child{border-bottom:1px solid #d6d6d6;border-bottom:1px solid rgba(0,0,0,.1)}.ui-table-columntoggle-btn{float:right;margin-bottom:.8em}.ui-table-columntoggle-popup fieldset{margin:0}@media only all{th.ui-table-priority-6,td.ui-table-priority-6,th.ui-table-priority-5,td.ui-table-priority-5,th.ui-table-priority-4,td.ui-table-priority-4,th.ui-table-priority-3,td.ui-table-priority-3,th.ui-table-priority-2,td.ui-table-priority-2,th.ui-table-priority-1,td.ui-table-priority-1{display:none}}@media screen and (min-width:20em){.ui-table-columntoggle.ui-responsive th.ui-table-priority-1,.ui-table-columntoggle.ui-responsive td.ui-table-priority-1{display:table-cell}}@media screen and (min-width:30em){.ui-table-columntoggle.ui-responsive th.ui-table-priority-2,.ui-table-columntoggle.ui-responsive td.ui-table-priority-2{display:table-cell}}@media screen and (min-width:40em){.ui-table-columntoggle.ui-responsive th.ui-table-priority-3,.ui-table-columntoggle.ui-responsive td.ui-table-priority-3{display:table-cell}}@media screen and (min-width:50em){.ui-table-columntoggle.ui-responsive th.ui-table-priority-4,.ui-table-columntoggle.ui-responsive td.ui-table-priority-4{display:table-cell}}@media screen and (min-width:60em){.ui-table-columntoggle.ui-responsive th.ui-table-priority-5,.ui-table-columntoggle.ui-responsive td.ui-table-priority-5{display:table-cell}}@media screen and (min-width:70em){.ui-table-columntoggle.ui-responsive th.ui-table-priority-6,.ui-table-columntoggle.ui-responsive td.ui-table-priority-6{display:table-cell}}.ui-table-columntoggle th.ui-table-cell-hidden,.ui-table-columntoggle td.ui-table-cell-hidden,.ui-table-columntoggle.ui-responsive th.ui-table-cell-hidden,.ui-table-columntoggle.ui-responsive td.ui-table-cell-hidden{display:none}.ui-table-columntoggle th.ui-table-cell-visible,.ui-table-columntoggle td.ui-table-cell-visible,.ui-table-columntoggle.ui-responsive th.ui-table-cell-visible,.ui-table-columntoggle.ui-responsive td.ui-table-cell-visible{display:table-cell}.ui-table-reflow td .ui-table-cell-label,.ui-table-reflow th .ui-table-cell-label{display:none}@media only all{.ui-table-reflow thead td,.ui-table-reflow thead th{display:none}.ui-table-reflow td,.ui-table-reflow th{text-align:left;display:block}.ui-table-reflow tbody th{margin-top:3em}.ui-table-reflow td .ui-table-cell-label,.ui-table-reflow th .ui-table-cell-label{display:block;padding:.4em;min-width:30%;display:inline-block;margin:-.4em 1em -.4em -.4em}.ui-table-reflow th .ui-table-cell-label-top,.ui-table-reflow td .ui-table-cell-label-top{display:block;padding:.4em 0;margin:.4em 0;text-transform:uppercase;font-size:.9em;font-weight:400}}@media (min-width:35em){.ui-table-reflow.ui-responsive{display:table-row-group}.ui-table-reflow.ui-responsive td,.ui-table-reflow.ui-responsive th,.ui-table-reflow.ui-responsive tbody th,.ui-table-reflow.ui-responsive tbody td,.ui-table-reflow.ui-responsive thead td,.ui-table-reflow.ui-responsive thead th{display:table-cell;margin:0}.ui-table-reflow.ui-responsive td .ui-table-cell-label,.ui-table-reflow.ui-responsive th .ui-table-cell-label{display:none}}@media (max-width:35em){.ui-table-reflow.ui-responsive td,.ui-table-reflow.ui-responsive th{width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;float:left;clear:left}}.ui-panel{width:17em;min-height:100%;max-height:none;border-width:0;position:absolute;top:0;display:block}.ui-panel-closed{width:0;max-height:100%;overflow:hidden;visibility:hidden}.ui-panel-fixed{position:fixed;bottom:-1px;padding-bottom:1px}.ui-panel-display-overlay{z-index:1001}.ui-panel-display-reveal{z-index:0}.ui-panel-display-push{z-index:999}.ui-panel-inner{padding:15px}.ui-panel-content-wrap{position:relative;left:0;min-height:inherit;border:0;z-index:999}.ui-panel-content-wrap-display-overlay,.ui-panel-animate.ui-panel-content-wrap>.ui-header,.ui-panel-content-wrap-closed{position:static}.ui-panel-dismiss{position:absolute;top:0;left:0;height:100%;width:100%;z-index:1002;display:none}.ui-panel-dismiss-open{display:block}.ui-panel-animate{-webkit-transition:-webkit-transform 350ms ease;-moz-transition:-moz-transform 350ms ease;transition:transform 350ms ease}.ui-panel-animate.ui-panel:not(.ui-panel-display-reveal),.ui-panel-animate.ui-panel:not(.ui-panel-display-reveal)>div,.ui-panel-animate.ui-panel-closed.ui-panel-display-reveal>div,.ui-panel-animate.ui-panel-content-wrap,.ui-panel-animate.ui-panel-content-fixed-toolbar{-webkit-backface-visibility:hidden;-webkit-transform:translate3d(0,0,0)}.ui-panel-position-left{left:-17em}.ui-panel-animate.ui-panel-position-left.ui-panel-display-overlay,.ui-panel-animate.ui-panel-position-left.ui-panel-display-push{left:0;-webkit-transform:translate3d(-17em,0,0);-moz-transform:translate3d(-17em,0,0);transform:translate3d(-17em,0,0)}.ui-panel-position-left.ui-panel-display-reveal,.ui-panel-position-left.ui-panel-open{left:0}.ui-panel-animate.ui-panel-position-left.ui-panel-open.ui-panel-display-overlay,.ui-panel-animate.ui-panel-position-left.ui-panel-open.ui-panel-display-push{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);-moz-transform:none}.ui-panel-position-right{right:-17em}.ui-panel-animate.ui-panel-position-right.ui-panel-display-overlay,.ui-panel-animate.ui-panel-position-right.ui-panel-display-push{right:0;-webkit-transform:translate3d(17em,0,0);-moz-transform:translate3d(17em,0,0);transform:translate3d(17em,0,0)}.ui-panel-position-right.ui-panel-display-reveal,.ui-panel-position-right.ui-panel-open{right:0}.ui-panel-animate.ui-panel-position-right.ui-panel-open.ui-panel-display-overlay,.ui-panel-animate.ui-panel-position-right.ui-panel-open.ui-panel-display-push{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);-moz-transform:none}.ui-panel-content-fixed-toolbar-position-left.ui-panel-content-fixed-toolbar-open,.ui-panel-content-wrap-position-left.ui-panel-content-wrap-open,.ui-panel-dismiss-position-left.ui-panel-dismiss-open{left:17em;right:-17em}.ui-panel-animate.ui-panel-content-fixed-toolbar-position-left.ui-panel-content-fixed-toolbar-open.ui-panel-content-fixed-toolbar-display-reveal,.ui-panel-animate.ui-panel-content-fixed-toolbar-position-left.ui-panel-content-fixed-toolbar-open.ui-panel-content-fixed-toolbar-display-push,.ui-panel-animate.ui-panel-content-wrap-position-left.ui-panel-content-wrap-open.ui-panel-content-wrap-display-reveal,.ui-panel-animate.ui-panel-content-wrap-position-left.ui-panel-content-wrap-open.ui-panel-content-wrap-display-push{left:0;right:0;-webkit-transform:translate3d(17em,0,0);-moz-transform:translate3d(17em,0,0);transform:translate3d(17em,0,0)}.ui-panel-content-fixed-toolbar-position-right.ui-panel-content-fixed-toolbar-open,.ui-panel-content-wrap-position-right.ui-panel-content-wrap-open,.ui-panel-dismiss-position-right.ui-panel-dismiss-open{left:-17em;right:17em}.ui-panel-animate.ui-panel-content-fixed-toolbar-position-right.ui-panel-content-fixed-toolbar-open.ui-panel-content-fixed-toolbar-display-reveal,.ui-panel-animate.ui-panel-content-fixed-toolbar-position-right.ui-panel-content-fixed-toolbar-open.ui-panel-content-fixed-toolbar-display-push,.ui-panel-animate.ui-panel-content-wrap-position-right.ui-panel-content-wrap-open.ui-panel-content-wrap-display-reveal,.ui-panel-animate.ui-panel-content-wrap-position-right.ui-panel-content-wrap-open.ui-panel-content-wrap-display-push{left:0;right:0;-webkit-transform:translate3d(-17em,0,0);-moz-transform:translate3d(-17em,0,0);transform:translate3d(-17em,0,0)}.ui-panel-content-fixed-toolbar-open.ui-panel-content-fixed-toolbar-display-overlay,.ui-panel-content-wrap-open.ui-panel-content-wrap-display-overlay{left:0}.ui-page-active.ui-page-panel{overflow-x:hidden}.ui-panel-display-reveal{-webkit-box-shadow:inset -5px 0 5px rgba(0,0,0,.15);-moz-box-shadow:inset -5px 0 5px rgba(0,0,0,.15);box-shadow:inset -5px 0 5px rgba(0,0,0,.15)}.ui-panel-position-right.ui-panel-display-reveal{-webkit-box-shadow:inset 5px 0 5px rgba(0,0,0,.15);-moz-box-shadow:inset 5px 0 5px rgba(0,0,0,.15);box-shadow:inset 5px 0 5px rgba(0,0,0,.15)}.ui-panel-display-overlay{-webkit-box-shadow:5px 0 5px rgba(0,0,0,.15);-moz-box-shadow:5px 0 5px rgba(0,0,0,.15);box-shadow:5px 0 5px rgba(0,0,0,.15)}.ui-panel-position-right.ui-panel-display-overlay{-webkit-box-shadow:-5px 0 5px rgba(0,0,0,.15);-moz-box-shadow:-5px 0 5px rgba(0,0,0,.15);box-shadow:-5px 0 5px rgba(0,0,0,.15)}.ui-panel-display-push.ui-panel-open.ui-panel-position-left{border-right-width:1px;margin-right:-1px}.ui-panel-animate.ui-panel-content-fixed-toolbar-position-left.ui-panel-content-fixed-toolbar-open.ui-panel-content-fixed-toolbar-display-push{margin-left:1px}.ui-panel-display-push.ui-panel-open.ui-panel-position-right{border-left-width:1px;margin-left:-1px}.ui-panel-animate.ui-panel-content-fixed-toolbar-position-right.ui-panel-content-fixed-toolbar-open.ui-panel-content-fixed-toolbar-display-push{margin-right:1px}@media (min-width:55em){.ui-responsive-panel.ui-page-panel-open .ui-panel-content-fixed-toolbar-display-push.ui-panel-content-fixed-toolbar-position-left,.ui-responsive-panel.ui-page-panel-open .ui-panel-content-fixed-toolbar-display-reveal.ui-panel-content-fixed-toolbar-position-left,.ui-responsive-panel.ui-page-panel-open .ui-panel-content-wrap-display-push.ui-panel-content-wrap-position-left,.ui-responsive-panel.ui-page-panel-open .ui-panel-content-wrap-display-reveal.ui-panel-content-wrap-position-left{margin-right:17em}.ui-responsive-panel.ui-page-panel-open .ui-panel-content-fixed-toolbar-display-push.ui-panel-content-fixed-toolbar-position-right,.ui-responsive-panel.ui-page-panel-open .ui-panel-content-fixed-toolbar-display-reveal.ui-panel-content-fixed-toolbar-position-right,.ui-responsive-panel.ui-page-panel-open .ui-panel-content-wrap-display-push.ui-panel-content-wrap-position-right,.ui-responsive-panel.ui-page-panel-open .ui-panel-content-wrap-display-reveal.ui-panel-content-wrap-position-right{margin-left:17em}.ui-responsive-panel.ui-page-panel-open .ui-panel-content-fixed-toolbar-display-push,.ui-responsive-panel.ui-page-panel-open .ui-panel-content-fixed-toolbar-display-reveal{width:auto}.ui-responsive-panel .ui-panel-dismiss-display-push{display:none}}.ui-collapsible-inset .ui-collapsible-content{margin:0;border-right-width:2px;border-left-width:2px} \ No newline at end of file diff --git a/mopidy_musicbox_webclient/static/css/webclient.css b/mopidy_musicbox_webclient/static/css/webclient.css index 43d61ded..fe660268 100644 --- a/mopidy_musicbox_webclient/static/css/webclient.css +++ b/mopidy_musicbox_webclient/static/css/webclient.css @@ -168,6 +168,12 @@ margin-right: 35px; } +.ui-slider-track.ui-mini .ui-slider-handle { + height: 22px; + width: 22px; + margin: -12px 0 0 -12px; +} + .ui-slider-input { display: none !important; } diff --git a/mopidy_musicbox_webclient/static/mb.manifest b/mopidy_musicbox_webclient/static/mb.manifest index eac72d0f..612636c1 100644 --- a/mopidy_musicbox_webclient/static/mb.manifest +++ b/mopidy_musicbox_webclient/static/mb.manifest @@ -1,6 +1,6 @@ CACHE MANIFEST -# 2016-01-31:v2 +# 2016-01-31:v3 NETWORK: * From 45a9c4522a864b8f149e090c1de13ec65edd3f9a Mon Sep 17 00:00:00 2001 From: Nick Steel Date: Mon, 1 Feb 2016 00:12:26 +0000 Subject: [PATCH 107/120] Upgrade cookie-based streamuris to m3u playlist. (Fixes #146). --- mopidy_musicbox_webclient/static/index.html | 1 - .../static/js/controls.js | 65 +++++++++++++++---- .../static/js/streamuris.js | 17 ----- 3 files changed, 52 insertions(+), 31 deletions(-) delete mode 100644 mopidy_musicbox_webclient/static/js/streamuris.js diff --git a/mopidy_musicbox_webclient/static/index.html b/mopidy_musicbox_webclient/static/index.html index 29a78779..b50ffeea 100644 --- a/mopidy_musicbox_webclient/static/index.html +++ b/mopidy_musicbox_webclient/static/index.html @@ -480,7 +480,6 @@

      Streams

      - diff --git a/mopidy_musicbox_webclient/static/js/controls.js b/mopidy_musicbox_webclient/static/js/controls.js index aa4af801..186caab2 100644 --- a/mopidy_musicbox_webclient/static/js/controls.js +++ b/mopidy_musicbox_webclient/static/js/controls.js @@ -538,6 +538,21 @@ function getFavourites() { }); } +function addToFavourites(newTracks) { + getFavourites().then(function(favourites) { + if (favourites) { + if (favourites.tracks) { + Array.prototype.push.apply(favourites.tracks, newTracks) + } else { + favourites.tracks = [newTracks]; + } + mopidy.playlists.save({'playlist': favourites}).then(function(s) { + showFavourites(); + }); + } + }); +} + function addFavourite(uri, name) { var uri = uri || $('#streamuriinput').val().trim(); var name = name || $('#streamnameinput').val().trim(); @@ -548,19 +563,7 @@ function addFavourite(uri, name) { if (name) { newTracks[0].name = name; // User overrides name. } - getFavourites().then(function(favourites) { - if (favourites) { - if (favourites.tracks) { - //Array.prototype.push.apply(favourites.tracks, newTracks) - favourites.tracks.push(newTracks[0]); - } else { - favourites.tracks = [newTracks[0]]; - } - mopidy.playlists.save({'playlist': favourites}).then(function(s) { - showFavourites(); - }); - } - }); + addToFavourites(newTracks); } else { if (newTracks.length == 0) { console.log('No tracks to add'); @@ -587,9 +590,15 @@ function deleteFavourite(index) { function showFavourites() { $('#streamuristable').empty(); + $.cookie.json = true; + if ($.cookie('streamUris')) { + toast('Converting streamUris...'); + upgradeStreamUrisToFavourites(); + } getFavourites().then(function(favourites) { if (favourites && favourites.tracks) { tracks = favourites.tracks; + var tmp = ''; var child = ''; for (var i = 0; i < tracks.length; i++) { @@ -604,6 +613,36 @@ function showFavourites() { }); } +function upgradeStreamUrisToFavourites() { + $.cookie.json = true; + var streamUris = $.cookie('streamUris'); // Read the cookie. + if (streamUris) { + var uris = []; // Prepare a list of uris to lookup. + for (var key in streamUris) { + var rs = streamUris[key]; + if (rs) { + uris.push(rs[1]); + } + } + mopidy.library.lookup({'uris': uris}).then(function(results) { + var tracks = []; // Prepare a list of tracks to add. + for (var key in streamUris) { + var rs = streamUris[key]; + if (rs) { + var track = results[rs[1]][0]; + track.name = rs[0] || track.name; // Use custom name if provided. + tracks.push(track); + } + } + addToFavourites(tracks); + $.cookie('streamUris', null); // Delete the cookie now we're done. + console.log(tracks.length + " streamUris added to favourites"); + }); + } else { + console.log("No streamUris cookie found"); + } +} + function haltSystem() { $.post("/settings/shutdown"); toast('Stopping system...', 10000); diff --git a/mopidy_musicbox_webclient/static/js/streamuris.js b/mopidy_musicbox_webclient/static/js/streamuris.js deleted file mode 100644 index 1713e63e..00000000 --- a/mopidy_musicbox_webclient/static/js/streamuris.js +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Default streamuris which appear in the webinterface. Edit if you like. - * Take care when editting. Only edit the stuff between '' - * And don't use the default Windows Notepad for this (use Notepad++ on Windows) - */ - -var streamUris = []; -//fill with defaults -streamUris.push(['NPR 24', 'http://nprdmp.ic.llnwd.net/stream/nprdmp_live01_mp3']); -streamUris.push(['3FM Dutch', 'http://icecast.omroep.nl/3fm-bb-mp3']); -streamUris.push(['BBC WorldService', 'http://vprbbc.streamguys.net:8000/vprbbc24.mp3']); -streamUris.push(['Arrow Jazz', 'http://81.173.3.132:8082']); -streamUris.push(['Queen Live Aid at Wembley (YouTube)', 'yt:http://www.youtube.com/watch?v=eQsM6u0a038']); -streamUris.push(['Groove Salad - Soma FM', 'http://somafm.com/groovesalad.pls']); -streamUris.push(['Kiss FM Berlin', 'http://stream.kissfm.de/kissfm/mp3-128/internetradio/']); -streamUris.push(['Muse - Newborn (SoundCloud)', 'sc:https://soundcloud.com/muse/01-new-born']); -streamUris.push(['Pinguin Radio', 'http://pr320.pinguinradio.com/listen.pls']); \ No newline at end of file From 8477acc3225ed0bdac42bb28248f89451527aca4 Mon Sep 17 00:00:00 2001 From: Nick Steel Date: Mon, 1 Feb 2016 00:14:41 +0000 Subject: [PATCH 108/120] Update manifest. --- mopidy_musicbox_webclient/static/mb.manifest | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mopidy_musicbox_webclient/static/mb.manifest b/mopidy_musicbox_webclient/static/mb.manifest index 612636c1..828844cf 100644 --- a/mopidy_musicbox_webclient/static/mb.manifest +++ b/mopidy_musicbox_webclient/static/mb.manifest @@ -1,6 +1,6 @@ CACHE MANIFEST -# 2016-01-31:v3 +# 2016-02-01:v1 NETWORK: * From 895eab08346ac0b88a1635094c676b29a5d68b6e Mon Sep 17 00:00:00 2001 From: jcass Date: Wed, 3 Feb 2016 05:55:41 +0200 Subject: [PATCH 109/120] docs:Add comment to identify override of slider handle size. --- mopidy_musicbox_webclient/static/css/webclient.css | 1 + 1 file changed, 1 insertion(+) diff --git a/mopidy_musicbox_webclient/static/css/webclient.css b/mopidy_musicbox_webclient/static/css/webclient.css index fe660268..77c95808 100644 --- a/mopidy_musicbox_webclient/static/css/webclient.css +++ b/mopidy_musicbox_webclient/static/css/webclient.css @@ -168,6 +168,7 @@ margin-right: 35px; } +/* Increase slider handle by 30%. */ .ui-slider-track.ui-mini .ui-slider-handle { height: 22px; width: 22px; From 7991e94042961d57c9475c885a057fe9ed36865a Mon Sep 17 00:00:00 2001 From: jcass Date: Wed, 3 Feb 2016 09:25:21 +0200 Subject: [PATCH 110/120] docs:Update changelog to show issues under correct headings. --- README.rst | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.rst b/README.rst index fe084170..9935e69a 100644 --- a/README.rst +++ b/README.rst @@ -73,13 +73,10 @@ v2.1.0 (UNRELEASED) - Now updates the track name when the stream title changes. - Adding a browsed radio station to the tracklist now also starts playback of the station. (Addresses: `#98 `_). -- Remove support for defunct Grooveshark service. - (Addresses: `#120 `_). - Increase volume slider handle by 30% to make it easier to grab on mobile devices. - Add application cache manifest file for quicker loads and to allow client devices to detect when local caches should be invalidated. - Use standard Mopidy mixer methods to mute / un-mute playback. -- Added event handling for 'muteChanged' event. (Fixes: `#141 `_). **Fixes** @@ -106,6 +103,9 @@ v2.1.0 (UNRELEASED) - Re-align the menu and search buttons in the title bar. (Fixes: `#148 `_). - Use explicit Mopidy.js calling convention. (Fixes: `#79 `_). +- Added event handling for 'muteChanged' event. (Fixes: `#141 `_). +- Remove support for defunct Grooveshark service. + (Fixes: `#120 `_). v2.0.0 (2015-03-26) From 3ecb4f65d3d7bf003c8a8af78a6b62f319ad9031 Mon Sep 17 00:00:00 2001 From: Nick Steel Date: Wed, 3 Feb 2016 23:33:17 +0000 Subject: [PATCH 111/120] Handle unresolvable streams gracefully and don't comvert automatically. --- .../static/js/controls.js | 26 ++++++++++--------- 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/mopidy_musicbox_webclient/static/js/controls.js b/mopidy_musicbox_webclient/static/js/controls.js index 186caab2..d9beeba6 100644 --- a/mopidy_musicbox_webclient/static/js/controls.js +++ b/mopidy_musicbox_webclient/static/js/controls.js @@ -590,22 +590,19 @@ function deleteFavourite(index) { function showFavourites() { $('#streamuristable').empty(); - $.cookie.json = true; - if ($.cookie('streamUris')) { - toast('Converting streamUris...'); - upgradeStreamUrisToFavourites(); - } getFavourites().then(function(favourites) { if (favourites && favourites.tracks) { - tracks = favourites.tracks; - var tmp = ''; + $.cookie.json = true; + if ($.cookie('streamUris')) { + tmp = '
    • Convert StreamUris to Favourites

    • ' + } var child = ''; - for (var i = 0; i < tracks.length; i++) { + for (var i = 0; i < favourites.tracks.length; i++) { child = '
    •  ' + '' + - ' '; - child += '

      ' + tracks[i].name + '

    • '; + ' '; + child += '

      ' + favourites.tracks[i].name + '

      '; tmp += child; } $('#streamuristable').html(tmp); @@ -614,6 +611,7 @@ function showFavourites() { } function upgradeStreamUrisToFavourites() { + toast('Converting streamUris...'); $.cookie.json = true; var streamUris = $.cookie('streamUris'); // Read the cookie. if (streamUris) { @@ -630,8 +628,12 @@ function upgradeStreamUrisToFavourites() { var rs = streamUris[key]; if (rs) { var track = results[rs[1]][0]; - track.name = rs[0] || track.name; // Use custom name if provided. - tracks.push(track); + if (track) { + track.name = rs[0] || track.name; // Use custom name if provided. + tracks.push(track); + } else { + console.log("Skipping unplayable streamUri " + rs[1]); + } } } addToFavourites(tracks); From 61aee93ee51f58e88c1221e1c3085a5d0dd01bae Mon Sep 17 00:00:00 2001 From: Nick Steel Date: Wed, 3 Feb 2016 23:34:47 +0000 Subject: [PATCH 112/120] Remove streamuris from manifest. --- mopidy_musicbox_webclient/static/mb.manifest | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/mopidy_musicbox_webclient/static/mb.manifest b/mopidy_musicbox_webclient/static/mb.manifest index 828844cf..26d2fed8 100644 --- a/mopidy_musicbox_webclient/static/mb.manifest +++ b/mopidy_musicbox_webclient/static/mb.manifest @@ -1,6 +1,6 @@ CACHE MANIFEST -# 2016-02-01:v1 +# 2016-02-03:v1 NETWORK: * @@ -74,6 +74,5 @@ js/lastfm.api.md5.js js/lastfm.js js/library.js js/process_ws.js -js/streamuris.js mb.manifest system.html From 8075bc3a0ef36c2ddb9c4693b1fe954548b75d91 Mon Sep 17 00:00:00 2001 From: Nick Steel Date: Thu, 4 Feb 2016 00:00:55 +0000 Subject: [PATCH 113/120] Also show convert button when Favourites playlist is empty. Will not show convert button if m3u playlists are disabled. --- mopidy_musicbox_webclient/static/js/controls.js | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/mopidy_musicbox_webclient/static/js/controls.js b/mopidy_musicbox_webclient/static/js/controls.js index d9beeba6..a6701019 100644 --- a/mopidy_musicbox_webclient/static/js/controls.js +++ b/mopidy_musicbox_webclient/static/js/controls.js @@ -544,7 +544,7 @@ function addToFavourites(newTracks) { if (favourites.tracks) { Array.prototype.push.apply(favourites.tracks, newTracks) } else { - favourites.tracks = [newTracks]; + favourites.tracks = newTracks; } mopidy.playlists.save({'playlist': favourites}).then(function(s) { showFavourites(); @@ -591,12 +591,12 @@ function deleteFavourite(index) { function showFavourites() { $('#streamuristable').empty(); getFavourites().then(function(favourites) { + var tmp = ''; + $.cookie.json = true; + if ($.cookie('streamUris')) { + tmp = '' + } if (favourites && favourites.tracks) { - var tmp = ''; - $.cookie.json = true; - if ($.cookie('streamUris')) { - tmp = '
    • Convert StreamUris to Favourites

    • ' - } var child = ''; for (var i = 0; i < favourites.tracks.length; i++) { child = '
    •  ' + @@ -605,8 +605,8 @@ function showFavourites() { child += '

      ' + favourites.tracks[i].name + '

    • '; tmp += child; } - $('#streamuristable').html(tmp); } + $('#streamuristable').html(tmp); }); } From 97c88173351e67c862991e80bd0bfbe15a55a607 Mon Sep 17 00:00:00 2001 From: Nick Steel Date: Thu, 4 Feb 2016 01:33:45 +0000 Subject: [PATCH 114/120] Gracefully handle a disabled m3u extension. --- .../static/js/controls.js | 30 +++++++++++++++---- .../static/js/functionsvars.js | 1 + mopidy_musicbox_webclient/static/js/gui.js | 4 ++- 3 files changed, 29 insertions(+), 6 deletions(-) diff --git a/mopidy_musicbox_webclient/static/js/controls.js b/mopidy_musicbox_webclient/static/js/controls.js index a6701019..32a521e1 100644 --- a/mopidy_musicbox_webclient/static/js/controls.js +++ b/mopidy_musicbox_webclient/static/js/controls.js @@ -504,22 +504,35 @@ function getCurrentlyPlaying() { return true; } +function getUriSchemes() { + uriSchemes = {}; + return mopidy.getUriSchemes().then(function(schemes) { + for (var i = 0; i < schemes.length; i++) { + uriSchemes[schemes[i].toLowerCase()] = true; + } + }); +} + function getPlaylistByName(name, scheme, create) { var uri_scheme = scheme || ''; var uri = ''; + if (uri_scheme && !uriSchemes[uri_scheme]) { + return Mopidy.when(false); + } return mopidy.playlists.asList().catch(console.error.bind(console)).then(function(plists) { for (var i = 0; i < plists.length; i++) { - if ((plists[i].name === name) && (scheme === '' || getScheme(plists[i].uri) === scheme)) { + if ((plists[i].name === name) && (uri_scheme === '' || getScheme(plists[i].uri) === uri_scheme)) { return plists[i]; } } if (create) { - return mopidy.playlists.create({'name': name, 'uri_scheme': scheme}).done(function(plist) { + return mopidy.playlists.create({'name': name, 'uri_scheme': uri_scheme}).done(function(plist) { console.log("Created playlist '%s'", plist.name); return plist; }); } console.log("Can't find playist '%s", name); + return Mopidy.when(false); }); } @@ -534,12 +547,15 @@ function getFavourites() { return getPlaylistByName(STREAMS_PLAYLIST_NAME, STREAMS_PLAYLIST_SCHEME, true).then(function(playlist) { - return getPlaylistFull(playlist.uri); + if (playlist) { + return getPlaylistFull(playlist.uri); + } + return Mopidy.when(false); }); } function addToFavourites(newTracks) { - getFavourites().then(function(favourites) { + getFavourites().catch(console.error.bind(console)).then(function(favourites) { if (favourites) { if (favourites.tracks) { Array.prototype.push.apply(favourites.tracks, newTracks) @@ -591,12 +607,16 @@ function deleteFavourite(index) { function showFavourites() { $('#streamuristable').empty(); getFavourites().then(function(favourites) { + if (!favourites) { + return; + } var tmp = ''; + $.cookie.json = true; if ($.cookie('streamUris')) { tmp = '' } - if (favourites && favourites.tracks) { + if (favourites.tracks) { var child = ''; for (var i = 0; i < favourites.tracks.length; i++) { child = '
    •  ' + diff --git a/mopidy_musicbox_webclient/static/js/functionsvars.js b/mopidy_musicbox_webclient/static/js/functionsvars.js index 2e3f55ee..97bf743a 100644 --- a/mopidy_musicbox_webclient/static/js/functionsvars.js +++ b/mopidy_musicbox_webclient/static/js/functionsvars.js @@ -36,6 +36,7 @@ var playlistslistScroll; var STREAMS_PLAYLIST_NAME = '[Radio Streams]'; var STREAMS_PLAYLIST_SCHEME = 'm3u'; +var uriSchemes = {}; //array of cached playlists (not only user-playlists, also search, artist, album-playlists) var playlists = {}; diff --git a/mopidy_musicbox_webclient/static/js/gui.js b/mopidy_musicbox_webclient/static/js/gui.js index e5c99fac..d4ab8460 100644 --- a/mopidy_musicbox_webclient/static/js/gui.js +++ b/mopidy_musicbox_webclient/static/js/gui.js @@ -231,7 +231,9 @@ function initSocketevents() { getCurrentPlaylist(); updateStatusOfAll(); getPlaylists(); - showFavourites(); + getUriSchemes().then(function() { + showFavourites(); + }); getBrowseDir(); getSearchSchemes(); showLoading(false); From d89731fea7498f102c3198b191eb69c8d918a2f1 Mon Sep 17 00:00:00 2001 From: Nick Steel Date: Thu, 4 Feb 2016 01:38:51 +0000 Subject: [PATCH 115/120] Reminded to remove streamUris upgrade functionality later. --- mopidy_musicbox_webclient/static/js/controls.js | 1 + 1 file changed, 1 insertion(+) diff --git a/mopidy_musicbox_webclient/static/js/controls.js b/mopidy_musicbox_webclient/static/js/controls.js index 32a521e1..69583769 100644 --- a/mopidy_musicbox_webclient/static/js/controls.js +++ b/mopidy_musicbox_webclient/static/js/controls.js @@ -630,6 +630,7 @@ function showFavourites() { }); } +# TODO: Remove this upgrade path in next major release. function upgradeStreamUrisToFavourites() { toast('Converting streamUris...'); $.cookie.json = true; From c0fbffcdb656bac9b6cd04f1fdaaeea79efaa85a Mon Sep 17 00:00:00 2001 From: jcass Date: Thu, 4 Feb 2016 07:10:40 +0200 Subject: [PATCH 116/120] fix:Bump Mopidy version dependency for M3U-related features. Fixes #147. --- README.rst | 1 + setup.py | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/README.rst b/README.rst index 9935e69a..df92b9d0 100644 --- a/README.rst +++ b/README.rst @@ -77,6 +77,7 @@ v2.1.0 (UNRELEASED) - Add application cache manifest file for quicker loads and to allow client devices to detect when local caches should be invalidated. - Use standard Mopidy mixer methods to mute / un-mute playback. +- Mopidy-Musicbox-Webclient now requires at least Mopidy v1.1.0 or greater to be installed. **Fixes** diff --git a/setup.py b/setup.py index c594f795..17b680ed 100644 --- a/setup.py +++ b/setup.py @@ -25,7 +25,7 @@ def get_version(filename): include_package_data=True, install_requires=[ 'setuptools', - 'Mopidy >= 0.19', + 'Mopidy >= 1.1.0', ], entry_points={ 'mopidy.ext': [ From 6772e42e2b297260138ac735b486b132801bff86 Mon Sep 17 00:00:00 2001 From: jcass Date: Thu, 4 Feb 2016 14:00:24 +0200 Subject: [PATCH 117/120] fix:Align layout and features of 'Search' pane with rest of the web client. --- .../static/css/webclient.css | 10 +- mopidy_musicbox_webclient/static/index.html | 130 +++++++++--------- .../static/js/library.js | 16 ++- mopidy_musicbox_webclient/static/mb.manifest | 2 +- 4 files changed, 89 insertions(+), 69 deletions(-) diff --git a/mopidy_musicbox_webclient/static/css/webclient.css b/mopidy_musicbox_webclient/static/css/webclient.css index 77c95808..4e6771d8 100644 --- a/mopidy_musicbox_webclient/static/css/webclient.css +++ b/mopidy_musicbox_webclient/static/css/webclient.css @@ -205,7 +205,15 @@ background-color: #fff; } -#searchresults { +#searchartists { + display: none; +} + +#searchalbums { + display: none; +} + +#searchtracks { display: none; } diff --git a/mopidy_musicbox_webclient/static/index.html b/mopidy_musicbox_webclient/static/index.html index 29a78779..27987761 100644 --- a/mopidy_musicbox_webclient/static/index.html +++ b/mopidy_musicbox_webclient/static/index.html @@ -357,48 +357,50 @@

    • -
      -
      - - - -
      +

      Search

      + +
      +
      +
      +

      Search for artists, albums, or specific tracks. + + + +

      +
      - -
      -
      -
      -
      -
      -

      Artists

      -
      -
      -
        -
        +
        +
        +
        +
        +

        Artists

        +
        +
        +
          -
          -
          -
          -

          Albums

          -
          -
          -
            -
            +
            +
            +
            +
            +

            Albums

            +
            +
            +
              +
              -
              -

              Tracks

              -
                -
                +
                +

                Tracks

                +
                  @@ -406,49 +408,47 @@

                  Tracks

                  Streams

                  -
                  -
                  +
                  -
                  -

                  Play a specific stream/track and optionally save it to your favourites. - - - - - - -
                  -

                  +
                  +

                  Play a specific stream/track and optionally save it to your favourites. + + + + + + +
                  +

                    -
                    -
                    -
                    -
                    -
                    -
                    -
                    -
                    -
                    -
                    - +
                    +
                    +
                    +
                    +
                    +
                    +
                    + +
                    +
                    diff --git a/mopidy_musicbox_webclient/static/js/library.js b/mopidy_musicbox_webclient/static/js/library.js index 4ff0caf6..3a62e056 100644 --- a/mopidy_musicbox_webclient/static/js/library.js +++ b/mopidy_musicbox_webclient/static/js/library.js @@ -27,7 +27,9 @@ function initSearch() { delete customTracklists[URI_SCHEME+':artistresultscache']; delete customTracklists[URI_SCHEME+':albumresultscache']; delete customTracklists[URI_SCHEME+':trackresultscache']; - $("#searchresults").hide(); + $("#searchartists").hide(); + $("#searchalbums").hide(); + $("#searchtracks").hide(); if (searchService != 'all') { mopidy.library.search({'query': {any:[value]}, 'uris': [searchService + ':']}).then(processSearchResults, console.error); @@ -108,7 +110,17 @@ function processSearchResults(resultArr) { return false; } - $("#searchresults").show(); + if (results.artists.length > 0) { + $("#searchartists").show(); + } + + if (results.albums.length > 0) { + $("#searchalbums").show(); + } + + if (results.tracks.length > 0) { + $("#searchtracks").show(); + } // Returns a string where {x} in template is replaced by tokens[x]. function theme(template, tokens) { diff --git a/mopidy_musicbox_webclient/static/mb.manifest b/mopidy_musicbox_webclient/static/mb.manifest index 612636c1..779e318a 100644 --- a/mopidy_musicbox_webclient/static/mb.manifest +++ b/mopidy_musicbox_webclient/static/mb.manifest @@ -1,6 +1,6 @@ CACHE MANIFEST -# 2016-01-31:v3 +# 2016-02-4:v1 NETWORK: * From a9b7b3febd14f7fe93dba934cbdb79c08f0c86d6 Mon Sep 17 00:00:00 2001 From: Nick Steel Date: Thu, 4 Feb 2016 13:52:27 +0000 Subject: [PATCH 118/120] Added changelog entry --- README.rst | 2 ++ mopidy_musicbox_webclient/static/js/controls.js | 2 +- mopidy_musicbox_webclient/static/mb.manifest | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/README.rst b/README.rst index fe084170..388894ed 100644 --- a/README.rst +++ b/README.rst @@ -80,6 +80,8 @@ v2.1.0 (UNRELEASED) be invalidated. - Use standard Mopidy mixer methods to mute / un-mute playback. - Added event handling for 'muteChanged' event. (Fixes: `#141 `_). +- Streams are now saved to the '[Radio Streams].m3u' playlist and are accessible from all clients. + Users with existing streamUris stored as browser cookies will be prompted to convert them to the new m3u backed scheme. **Fixes** diff --git a/mopidy_musicbox_webclient/static/js/controls.js b/mopidy_musicbox_webclient/static/js/controls.js index 69583769..6c71640c 100644 --- a/mopidy_musicbox_webclient/static/js/controls.js +++ b/mopidy_musicbox_webclient/static/js/controls.js @@ -630,7 +630,7 @@ function showFavourites() { }); } -# TODO: Remove this upgrade path in next major release. +// TODO: Remove this upgrade path in next major release. function upgradeStreamUrisToFavourites() { toast('Converting streamUris...'); $.cookie.json = true; diff --git a/mopidy_musicbox_webclient/static/mb.manifest b/mopidy_musicbox_webclient/static/mb.manifest index 26d2fed8..270655f6 100644 --- a/mopidy_musicbox_webclient/static/mb.manifest +++ b/mopidy_musicbox_webclient/static/mb.manifest @@ -1,6 +1,6 @@ CACHE MANIFEST -# 2016-02-03:v1 +# 2016-02-04:v1 NETWORK: * From 920b60384cece9bb5c3818d1005fdfdebbad909e Mon Sep 17 00:00:00 2001 From: jcass Date: Thu, 4 Feb 2016 17:38:11 +0200 Subject: [PATCH 119/120] fix:Prevent song information text from overlapping the 'Play' button. Fixes #155. --- .../static/css/webclient.css | 16 ++++++++++------ mopidy_musicbox_webclient/static/index.html | 6 +++--- mopidy_musicbox_webclient/static/js/gui.js | 2 ++ mopidy_musicbox_webclient/static/mb.manifest | 2 +- 4 files changed, 16 insertions(+), 10 deletions(-) diff --git a/mopidy_musicbox_webclient/static/css/webclient.css b/mopidy_musicbox_webclient/static/css/webclient.css index 4e6771d8..777be12e 100644 --- a/mopidy_musicbox_webclient/static/css/webclient.css +++ b/mopidy_musicbox_webclient/static/css/webclient.css @@ -481,7 +481,12 @@ a { #infocover { height: 50px; width: 50px; - position: absolute; +} + +.playicon { + width: 10%; + float: right; + text-align: right; } #btplay { @@ -490,17 +495,16 @@ a { .songinfo { height: 100%; + width: 90%; + float: left; } .songinfo-text { text-align: left; line-height: 22px; - display:inline-block; - padding: 6px; color: white; - position: absolute; - padding-left: 55px; - padding-right: 55px; + overflow: hidden; + padding: 3px; } #nowPlayingpane{ diff --git a/mopidy_musicbox_webclient/static/index.html b/mopidy_musicbox_webclient/static/index.html index 27987761..9dc3d678 100644 --- a/mopidy_musicbox_webclient/static/index.html +++ b/mopidy_musicbox_webclient/static/index.html @@ -438,14 +438,14 @@

                    Streams

                    -
                    -
                    +
                    +
                    -
                    +
                    diff --git a/mopidy_musicbox_webclient/static/js/gui.js b/mopidy_musicbox_webclient/static/js/gui.js index e5c99fac..7f2cd660 100644 --- a/mopidy_musicbox_webclient/static/js/gui.js +++ b/mopidy_musicbox_webclient/static/js/gui.js @@ -24,7 +24,9 @@ function resetSong() { function resizeMb() { $("#infoname").html(songdata.track.name); + $("#infoname").truncate(); $("#infoartist").html(artiststext); + $("#infoartist").truncate(); if ($(window).width() <= 960) { // $('#playlisttracksdiv').hide(); diff --git a/mopidy_musicbox_webclient/static/mb.manifest b/mopidy_musicbox_webclient/static/mb.manifest index 779e318a..7f4e3334 100644 --- a/mopidy_musicbox_webclient/static/mb.manifest +++ b/mopidy_musicbox_webclient/static/mb.manifest @@ -1,6 +1,6 @@ CACHE MANIFEST -# 2016-02-4:v1 +# 2016-02-4:v2 NETWORK: * From 7ac7b20ec710c03a2a23fe4059fb08b4522e3e41 Mon Sep 17 00:00:00 2001 From: jcass Date: Thu, 4 Feb 2016 18:23:59 +0200 Subject: [PATCH 120/120] Increment version number for release. --- mopidy_musicbox_webclient/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mopidy_musicbox_webclient/__init__.py b/mopidy_musicbox_webclient/__init__.py index 14bfac24..08dd9328 100644 --- a/mopidy_musicbox_webclient/__init__.py +++ b/mopidy_musicbox_webclient/__init__.py @@ -4,7 +4,7 @@ from mopidy import config, ext -__version__ = '2.0.0' +__version__ = '2.1.0' class MusicBoxExtension(ext.Extension):