diff --git a/assets/huegasm-0eee56226c3305ed702c75313bd6215a.js b/assets/huegasm-86fd68d3641615e0733585088613e3d1.js
similarity index 93%
rename from assets/huegasm-0eee56226c3305ed702c75313bd6215a.js
rename to assets/huegasm-86fd68d3641615e0733585088613e3d1.js
index c9e8ad1..7603cf4 100644
--- a/assets/huegasm-0eee56226c3305ed702c75313bd6215a.js
+++ b/assets/huegasm-86fd68d3641615e0733585088613e3d1.js
@@ -200,7 +200,7 @@ e instanceof Array?e.forEach(n):n(e),o.length>0&&t.get("notify").alert({html:t.g
e.velocity(e.is(":visible")?"slideUp":"slideDown",{duration:300}),this.changePlayerControl("playerBottomDisplayed",!this.get("playerBottomDisplayed"))},goToSong:function(e,t,n){var o=this,s=this.get("dancer"),a=this.get("playQueue")
if(s.audio&&this.clearCurrentAudio(!0),!i(a[e])){var l=new Audio
l.src=this.get("playQueue")[e].url,l.crossOrigin="anonymous",l.oncanplay=function(){o.set("timeTotal",Math.floor(l.duration)),o.set("soundCloudFuckUps",0)},l.onerror=function(e){var t=o.get("playQueuePointer"),n=o.get("playQueue")[t]
-o.get("soundCloudFuckUps")>=o.get("maxSoundCloudFuckUps")?(o.get("notify").alert({html:o.get("tooManySoundCloudFuckUps")}),o.send("play"),o.set("soundCloudFuckUps",0)):(n.local?o.send("removeAudio",t):o.send("next",!0),2===e.target.error.code?o.get("notify").alert({html:o.get("failedToDecodeFileHtml")(n.fileName)}):o.get("notify").alert({html:o.get("failedToPlayFileHtml")(n.fileName)}),o.set("usingBeatPreferences",!1),o.incrementProperty("soundCloudFuckUps"))},l.ontimeupdate=function(){o.set("timeElapsed",Math.floor(l.currentTime))},l.onended=function(){o.send("next")},s.load(l,1),this.set("playQueuePointer",e),this.loadSongBeatPreferences(),t&&this.send("play"),n&&p(this,function(){r(".track"+e).velocity("scroll",{container:r("#play-list-area"),duration:200})})}},removeAudio:function(e){this.get("playQueue").removeAt(e),r("body .tooltip").remove(),e===this.get("playQueuePointer")&&this.send("goToSong",e,!0,!0)},playerAreaPlay:function(){a(r("#player-controls:hover"))&&-1!==this.get("playQueuePointer")&&(this.send("play"),r("#play-notification").velocity({opacity:.8,scale:1},0).velocity({opacity:0,scale:3},500))},play:function(e){var t=this,n=this.get("dancer"),o=this.get("playQueuePointer"),s=this.get("playing"),a=this.get("lightsData")
+o.get("soundCloudFuckUps")>=o.get("maxSoundCloudFuckUps")?(o.get("notify").alert({html:o.get("tooManySoundCloudFuckUps")}),o.send("play"),o.set("soundCloudFuckUps",0)):(n.local?o.send("removeAudio",t):o.send("next",!0),2===e.target.error.code?o.get("notify").alert({html:o.get("failedToDecodeFileHtml")(n.fileName)}):o.get("notify").alert({html:o.get("failedToPlayFileHtml")(n.fileName)}),o.set("usingBeatPreferences",!1),o.incrementProperty("soundCloudFuckUps"))},l.ontimeupdate=function(){o.set("timeElapsed",Math.floor(l.currentTime))},l.onended=function(){o.send("next")},s.load(l,1),this.set("playQueuePointer",e),this.loadSongBeatPreferences(),t&&this.send("play"),n&&p(this,function(){r(".track"+e).velocity("scroll",{container:r("#play-list-area"),duration:200})})}},removeAudio:function(e){this.get("playQueue").removeAt(e),r("body .tooltip").remove(),this.get("dancer").audio&&this.clearCurrentAudio(!0)},playerAreaPlay:function(){a(r("#player-controls:hover"))&&-1!==this.get("playQueuePointer")&&(this.send("play"),r("#play-notification").velocity({opacity:.8,scale:1},0).velocity({opacity:0,scale:3},500))},play:function(e){var t=this,n=this.get("dancer"),o=this.get("playQueuePointer"),s=this.get("playing"),a=this.get("lightsData")
if(-1!==o){if(s){n.pause()
var i=this.get("preMusicLightsDataCache"),l=function(e){r.ajax(t.get("apiURL")+"/lights/"+e+"/state",{data:JSON.stringify({on:i[e].state.on,hue:i[e].state.hue,bri:i[e].state.bri}),contentType:"application/json",type:"PUT"})}
for(var p in a)a.hasOwnProperty(p)&&c(this,l,p,1e3)
@@ -254,7 +254,7 @@ var l=t.getWaveform()
a.beginPath(),a.moveTo(0,i/2)
for(var c=0,p=l.length;c
',beyond_ceiling_pendant_table:'',bloom:'',br30:'',br30_slim:'',bridge_v1:'',bridge_v2:'',ceiling_round:'',ceiling_square:'',entity:'',floor:'',go:'',gu10:'',gu10_perfectfit:'',hds:'',impulse:'',iris:'',lightstrip:'',motion_sensor:'',pendant_oval:'',pendant_round:'',pendant_square:'',phoenix_ceiling:'',phoenix_down:'',recessed:'',storylight:'',table:'',tap:'',white_and_color_e27:'',white_e27:''},outline:{aura:'',beyond_ceiling_pendant_table:'',bloom:'',br30:'',br30_slim:'',bridge_v1:'',bridge_v2:'',ceiling_round:'',ceiling_square:'',entity:'',floor:'',go:'',gu10:'',gu10_perfectfit:'',hds:'',impulse:'',iris:'',lightstrip:'',motion_sensor:'',par16:'',pendant_oval:'',pendant_round:'',pendant_square:'',phoenix_ceiling:'',phoenix_ceiling_2:'',phoenix_down:'',phoenix_pendant:'',phoenix_table:'',phoenix_wall:'',recessed:'',storylight:'',table:'',tap:'',white_and_color_e27:'',white_e27:''}}}},"safari-pinned-tab":''}}),define("huegasm/templates/application",["exports"],function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=Ember.HTMLBars.template({id:"sESP0Z+T",block:'{"symbols":[],"statements":[[1,[18,"welcome-page"],false],[0,"\\n"],[0,"\\n"],[1,[18,"outlet"],false]],"hasEval":false}',meta:{moduleName:"huegasm/templates/application.hbs"}})}),define("huegasm/templates/components/transition-group",["exports"],function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=Ember.HTMLBars.template({id:"Z/BMdkzA",block:'{"symbols":["&default"],"statements":[[11,1],[0,"\\n"]],"hasEval":false}',meta:{moduleName:"huegasm/templates/components/transition-group.hbs"}})}),define("huegasm/utils/clamp",["exports","ember-paper/utils/clamp"],function(e,t){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"default",{enumerable:!0,get:function(){return t.default}})}),define("huegasm/config/environment",[],function(){try{var e="huegasm/config/environment",t=document.querySelector('meta[name="'+e+'"]').getAttribute("content"),n={default:JSON.parse(unescape(t))}
-return Object.defineProperty(n,"__esModule",{value:!0}),n}catch(t){throw new Error('Could not read config from meta tag with name "'+e+'".')}}),runningTests||require("huegasm/app").default.create({name:"huegasm",version:"1.0.0+1a51f1f8"})
+return Object.defineProperty(n,"__esModule",{value:!0}),n}catch(t){throw new Error('Could not read config from meta tag with name "'+e+'".')}}),runningTests||require("huegasm/app").default.create({name:"huegasm",version:"1.0.0+67d1325c"})
diff --git a/assets/vendor-e25cb6887a41b507ac59d4842eec8f03.js b/assets/vendor-58e35bf5bca9623d31836ae231314fcc.js
similarity index 99%
rename from assets/vendor-e25cb6887a41b507ac59d4842eec8f03.js
rename to assets/vendor-58e35bf5bca9623d31836ae231314fcc.js
index 977e6bb..0f58487 100644
--- a/assets/vendor-e25cb6887a41b507ac59d4842eec8f03.js
+++ b/assets/vendor-58e35bf5bca9623d31836ae231314fcc.js
@@ -144,10 +144,10 @@ if(Array.isArray(t))ae.each(t,function(t,i){n||yt.test(e)?r(e,i):U(e+"["+("objec
else if(n||"object"!==ae.type(t))r(e,t)
else for(i in t)U(e+"["+i+"]",t[i],n,r)}function W(e){return function(t,n){"string"!=typeof t&&(n=t,t="*")
var r,i=0,o=t.toLowerCase().match(xe)||[]
-if(ae.isFunction(n))for(;r=o[i++];)"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function K(e,t,n,r){function i(a){var l
+if(ae.isFunction(n))for(;r=o[i++];)"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function Y(e,t,n,r){function i(a){var l
return o[a]=!0,ae.each(e[a]||[],function(e,a){var u=a(t,n,r)
return"string"!=typeof u||s||o[u]?s?!(l=u):void 0:(t.dataTypes.unshift(u),i(u),!1)}),l}var o={},s=e===kt
-return i(t.dataTypes[0])||!o["*"]&&i("*")}function Y(e,t){var n,r,i=ae.ajaxSettings.flatOptions||{}
+return i(t.dataTypes[0])||!o["*"]&&i("*")}function K(e,t){var n,r,i=ae.ajaxSettings.flatOptions||{}
for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n])
return r&&ae.extend(!0,e,r),e}var G=[],$=e.document,Q=Object.getPrototypeOf,X=G.slice,J=G.concat,Z=G.push,ee=G.indexOf,te={},ne=te.toString,re=te.hasOwnProperty,ie=re.toString,oe=ie.call(Object),se={},ae=function(e,t){return new ae.fn.init(e,t)},le=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,ue=/^-ms-/,ce=/-([a-z])/g,pe=function(e,t){return t.toUpperCase()}
ae.fn=ae.prototype={jquery:"3.2.1",constructor:ae,length:0,toArray:function(){return X.call(this)},get:function(e){return null==e?X.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=ae.merge(this.constructor(),e)
@@ -194,10 +194,10 @@ if(i&&i(b,y,l,u),o)for(c=g(y,f),o(c,[],l,u),p=c.length;p--;)(d=c[p])&&(y[f[p]]=!
if(r){if(s||e){if(s){for(c=[],p=y.length;p--;)(d=y[p])&&c.push(b[p]=d)
s(null,y=[],c,u)}for(p=y.length;p--;)(d=y[p])&&(c=s?J(r,d):h[p])>-1&&(r[c]=!(a[c]=d))}}else y=g(y===a?y.splice(m,y.length):y),s?s(null,a,y,u):Q.apply(a,y)})}function b(e){for(var t,n,r,i=e.length,o=_.relative[e[0].type],s=o||_.relative[" "],a=o?1:0,l=f(function(e){return e===t},s,!0),u=f(function(e){return J(t,e)>-1},s,!0),c=[function(e,n,r){var i=!o&&(r||n!==S)||((t=n).nodeType?l(e,n,r):u(e,n,r))
return t=null,i}];a1&&m(c),a>1&&h(e.slice(0,a-1).concat({value:" "===e[a-2].type?"*":""})).replace(oe,"$1"),n,a1&&m(c),a>1&&h(e.slice(0,a-1).concat({value:" "===e[a-2].type?"*":""})).replace(oe,"$1"),n,a+~]|"+ee+")"+ee+"*"),le=new RegExp("="+ee+"*([^\\]'\"]*?)"+ee+"*\\]","g"),ue=new RegExp(re),ce=new RegExp("^"+te+"$"),pe={ID:new RegExp("^#("+te+")"),CLASS:new RegExp("^\\.("+te+")"),TAG:new RegExp("^("+te+"|[*])"),ATTR:new RegExp("^"+ne),PSEUDO:new RegExp("^"+re),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+ee+"*(even|odd|(([+-]|)(\\d*)n|)"+ee+"*(?:([+-]|)"+ee+"*(\\d+)|))"+ee+"*\\)|)","i"),bool:new RegExp("^(?:"+Z+")$","i"),needsContext:new RegExp("^"+ee+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+ee+"*((?:-\\d)?\\d*)"+ee+"*\\)|)(?=[^-]|$)","i")},de=/^(?:input|select|textarea|button)$/i,he=/^h\d$/i,fe=/^[^{]+\{\s*\[native \w/,me=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ge=/[+~]/,ve=new RegExp("\\\\([\\da-f]{1,6}"+ee+"?|("+ee+")|.)","ig"),be=function(e,t,n){var r="0x"+t-65536
return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},ye=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,we=function(e,t){return t?"\0"===e?"�":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},_e=function(){k()},xe=f(function(e){return!0===e.disabled&&("form"in e||"label"in e)},{dir:"parentNode",next:"legend"})
-try{Q.apply(Y=X.call(B.childNodes),B.childNodes),Y[B.childNodes.length].nodeType}catch(e){Q={apply:Y.length?function(e,t){$.apply(e,X.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}w=t.support={},E=t.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement
+try{Q.apply(K=X.call(B.childNodes),B.childNodes),K[B.childNodes.length].nodeType}catch(e){Q={apply:K.length?function(e,t){$.apply(e,X.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}w=t.support={},E=t.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement
return!!t&&"HTML"!==t.nodeName},k=t.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:B
return r!==N&&9===r.nodeType&&r.documentElement?(N=r,M=N.documentElement,R=!E(N),B!==N&&(n=N.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",_e,!1):n.attachEvent&&n.attachEvent("onunload",_e)),w.attributes=i(function(e){return e.className="i",!e.getAttribute("className")}),w.getElementsByTagName=i(function(e){return e.appendChild(N.createComment("")),!e.getElementsByTagName("*").length}),w.getElementsByClassName=fe.test(N.getElementsByClassName),w.getById=i(function(e){return M.appendChild(e).id=F,!N.getElementsByName||!N.getElementsByName(F).length}),w.getById?(_.filter.ID=function(e){var t=e.replace(ve,be)
return function(e){return e.getAttribute("id")===t}},_.find.ID=function(e,t){if(void 0!==t.getElementById&&R){var n=t.getElementById(e)
@@ -222,7 +222,7 @@ for(n=t;n=n.parentNode;)l.unshift(n)
for(;a[r]===l[r];)r++
return r?s(a[r],l[r]):a[r]===B?-1:l[r]===B?1:0},N):N},t.matches=function(e,n){return t(e,null,null,n)},t.matchesSelector=function(e,n){if((e.ownerDocument||e)!==N&&k(e),n=n.replace(le,"='$1']"),w.matchesSelector&&R&&!U[n+" "]&&(!j||!j.test(n))&&(!I||!I.test(n)))try{var r=L.call(e,n)
if(r||w.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(e){}return t(n,N,null,[e]).length>0},t.contains=function(e,t){return(e.ownerDocument||e)!==N&&k(e),D(e,t)},t.attr=function(e,t){(e.ownerDocument||e)!==N&&k(e)
-var n=_.attrHandle[t.toLowerCase()],r=n&&K.call(_.attrHandle,t.toLowerCase())?n(e,t,!R):void 0
+var n=_.attrHandle[t.toLowerCase()],r=n&&Y.call(_.attrHandle,t.toLowerCase())?n(e,t,!R):void 0
return void 0!==r?r:w.attributes||!R?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},t.escape=function(e){return(e+"").replace(ye,we)},t.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},t.uniqueSort=function(e){var t,n=[],r=0,i=0
if(A=!w.detectDuplicates,P=!w.sortStable&&e.slice(0),e.sort(W),A){for(;t=e[i++];)t===e[i]&&(r=n.push(i))
for(;r--;)e.splice(n[r],1)}return P=null,e},x=t.getText=function(e){var t,n="",r=0,i=e.nodeType
@@ -366,8 +366,8 @@ return r&&(r===this||ae.contains(this,r))||(e.type=i.origType,n=i.handler.apply(
if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,ae(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this
if("object"==typeof e){for(i in e)this.off(i,t,e[i])
return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=w),this.each(function(){ae.event.remove(this,e,n,t)})}})
-var Ke=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,Ye=/
-
+
+