-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathapp.e6c53767.js
More file actions
3 lines (3 loc) · 66.3 KB
/
app.e6c53767.js
File metadata and controls
3 lines (3 loc) · 66.3 KB
1
2
3
!function e(n,t,a){function r(o,s){if(!t[o]){if(!n[o]){var c="function"==typeof require&&require;if(!s&&c)return c(o,!0);if(i)return i(o,!0);var l=new Error("Cannot find module '"+o+"'");throw l.code="MODULE_NOT_FOUND",l}var u=t[o]={exports:{}};n[o][0].call(u.exports,function(e){var t=n[o][1][e];return r(t?t:e)},u,u.exports,e,n,t,a)}return t[o].exports}for(var i="function"==typeof require&&require,o=0;o<a.length;o++)r(a[o]);return r}({1:[function(e,n){"use strict";e("angular"),e("angular-animate"),e("angular-resource"),e("angular-local-storage"),n.exports={"cloud-launcher":angular.module("cloud-launcher",["ngAnimate","ngResource","LocalStorageModule"]).service("configurationLoader",e("./modules/cloud-launcher/services/configurationLoader/service")).service("launchCloud",e("./modules/cloud-launcher/services/launchCloud/service")).service("newVersionCheck",e("./modules/cloud-launcher/services/newVersionCheck/service")).service("providerMonitor",e("./modules/cloud-launcher/services/providerMonitor/service")).service("stageManager",e("./modules/cloud-launcher/services/stageManager/service")).service("storedClouds",e("./modules/cloud-launcher/services/storedClouds/service")).service("storedConfiguration",e("./modules/cloud-launcher/services/storedConfiguration/service")).service("storedCredentials",e("./modules/cloud-launcher/services/storedCredentials/service")).directive("clouds",e("./modules/cloud-launcher/directives/clouds/directive")).directive("globe",e("./modules/cloud-launcher/directives/clouds/globe/directive")).directive("launchPad",e("./modules/cloud-launcher/directives/launchPad/directive")).directive("description",e("./modules/cloud-launcher/directives/launchPad/description/directive")).directive("configuration",e("./modules/cloud-launcher/directives/launchPad/description/configuration/directive")).directive("cost",e("./modules/cloud-launcher/directives/launchPad/description/cost/directive")).directive("target",e("./modules/cloud-launcher/directives/launchPad/description/target/directive")).directive("dockerSearch",e("./modules/cloud-launcher/directives/launchPad/dockerSearch/directive")).directive("launch",e("./modules/cloud-launcher/directives/launchPad/launch/directive")).directive("providers",e("./modules/cloud-launcher/directives/launchPad/providers/directive")).directive("credentialCollector",e("./modules/cloud-launcher/directives/launchPad/providers/credentialCollector/directive")).directive("launchStatus",e("./modules/cloud-launcher/directives/launchStatus/directive")).directive("providerStatuses",e("./modules/cloud-launcher/directives/launchStatus/providerStatuses/directive")).value("dockerHubApiRoot","http://104.154.35.244")}},{"./modules/cloud-launcher/directives/clouds/directive":6,"./modules/cloud-launcher/directives/clouds/globe/directive":7,"./modules/cloud-launcher/directives/launchPad/description/configuration/directive":9,"./modules/cloud-launcher/directives/launchPad/description/cost/directive":11,"./modules/cloud-launcher/directives/launchPad/description/directive":13,"./modules/cloud-launcher/directives/launchPad/description/target/directive":14,"./modules/cloud-launcher/directives/launchPad/directive":17,"./modules/cloud-launcher/directives/launchPad/dockerSearch/directive":18,"./modules/cloud-launcher/directives/launchPad/launch/directive":20,"./modules/cloud-launcher/directives/launchPad/providers/credentialCollector/directive":22,"./modules/cloud-launcher/directives/launchPad/providers/directive":24,"./modules/cloud-launcher/directives/launchStatus/directive":27,"./modules/cloud-launcher/directives/launchStatus/providerStatuses/directive":28,"./modules/cloud-launcher/services/configurationLoader/service":32,"./modules/cloud-launcher/services/launchCloud/service":33,"./modules/cloud-launcher/services/newVersionCheck/service":34,"./modules/cloud-launcher/services/providerMonitor/service":35,"./modules/cloud-launcher/services/stageManager/service":36,"./modules/cloud-launcher/services/storedClouds/service":37,"./modules/cloud-launcher/services/storedConfiguration/service":38,"./modules/cloud-launcher/services/storedCredentials/service":39,angular:"angular","angular-animate":3,"angular-local-storage":"angular-local-storage","angular-resource":5}],2:[function(){!function(e,n,t){"use strict";n.module("ngAnimate",["ng"]).directive("ngAnimateChildren",function(){var e="$$ngAnimateChildren";return function(t,a,r){var i=r.ngAnimateChildren;n.isString(i)&&0===i.length?a.data(e,!0):t.$watch(i,function(n){a.data(e,!!n)})}}).factory("$$animateReflow",["$$rAF","$document",function(e,n){var t=n[0].body;return function(n){return e(function(){t.offsetWidth+1;n()})}}]).config(["$provide","$animateProvider",function(a,r){function i(e){for(var n=0;n<e.length;n++){var t=e[n];if(t.nodeType==m)return t}}function o(e){return e&&n.element(e)}function s(e){return n.element(i(e))}function c(e,n){return i(e)==i(n)}var l,u=n.noop,d=n.forEach,v=r.$$selectors,p=n.isArray,h=n.isString,f=n.isObject,m=1,g="$$ngAnimateState",y="$$ngAnimateChildren",C="ng-animate",b={running:!0};a.decorator("$animate",["$delegate","$$q","$injector","$sniffer","$rootElement","$$asyncCallback","$rootScope","$document","$templateRequest","$$jqLite",function(e,t,a,m,w,x,$,k,M,S){function A(e,n){var t=e.data(g)||{};return n&&(t.running=!0,t.structural=!0,e.data(g,t)),t.disabled||t.running&&t.structural}function E(e){var n,a=t.defer();return a.promise.$$cancelFn=function(){n&&n()},$.$$postDigest(function(){n=e(function(){a.resolve()})}),a.promise}function D(e){return f(e)?(e.tempClasses&&h(e.tempClasses)&&(e.tempClasses=e.tempClasses.split(/\s+/)),e):void 0}function P(e,n,t){t=t||{};var a={};d(t,function(e,n){d(n.split(" "),function(n){a[n]=e})});var r=Object.create(null);d((e.attr("class")||"").split(/\s+/),function(e){r[e]=!0});var i=[],o=[];return d(n&&n.classes||[],function(e,n){var t=r[n],s=a[n]||{};e===!1?(t||"addClass"==s.event)&&o.push(n):e===!0&&(t&&"removeClass"!=s.event||i.push(n))}),i.length+o.length>0&&[i.join(" "),o.join(" ")]}function L(e){if(e){var n=[],t={},r=e.substr(1).split(".");(m.transitions||m.animations)&&n.push(a.get(v[""]));for(var i=0;i<r.length;i++){var o=r[i],s=v[o];s&&!t[o]&&(n.push(a.get(s)),t[o]=!0)}return n}}function T(e,t,a,r){function i(e,n){var t=e[n],a=e["before"+n.charAt(0).toUpperCase()+n.substr(1)];return t||a?("leave"==n&&(a=t,t=null),x.push({event:n,fn:t}),C.push({event:n,fn:a}),!0):void 0}function o(n,t,i){function o(e){if(t){if((t[e]||u)(),++v<s.length)return;t=null}i()}var s=[];d(n,function(e){e.fn&&s.push(e)});var v=0;d(s,function(n,i){var s=function(){o(i)};switch(n.event){case"setClass":t.push(n.fn(e,c,l,s,r));break;case"animate":t.push(n.fn(e,a,r.from,r.to,s));break;case"addClass":t.push(n.fn(e,c||a,s,r));break;case"removeClass":t.push(n.fn(e,l||a,s,r));break;default:t.push(n.fn(e,s,r))}}),t&&0===t.length&&i()}var s=e[0];if(s){r&&(r.to=r.to||{},r.from=r.from||{});var c,l;p(a)&&(c=a[0],l=a[1],c?l?a=c+" "+l:(a=c,t="addClass"):(a=l,t="removeClass"));var v="setClass"==t,h=v||"addClass"==t||"removeClass"==t||"animate"==t,f=e.attr("class"),m=f+" "+a;if(I(m)){var g=u,y=[],C=[],b=u,w=[],x=[],$=(" "+m).replace(/\s+/g,".");return d(L($),function(e){var n=i(e,t);!n&&v&&(i(e,"addClass"),i(e,"removeClass"))}),{node:s,event:t,className:a,isClassBased:h,isSetClassOperation:v,applyStyles:function(){r&&e.css(n.extend(r.from||{},r.to||{}))},before:function(e){g=e,o(C,y,function(){g=u,e()})},after:function(e){b=e,o(x,w,function(){b=u,e()})},cancel:function(){y&&(d(y,function(e){(e||u)(!0)}),g(!0)),w&&(d(w,function(e){(e||u)(!0)}),b(!0))}}}}}function _(e,t,a,r,i,o,s,c){function v(n){var r="$animate:"+n;$&&$[r]&&$[r].length>0&&x(function(){a.triggerHandler(r,{event:e,className:t})})}function p(){v("before")}function h(){v("after")}function f(){v("close"),c()}function m(){m.hasBeenRun||(m.hasBeenRun=!0,o())}function y(){if(!y.hasBeenRun){w&&w.applyStyles(),y.hasBeenRun=!0,s&&s.tempClasses&&d(s.tempClasses,function(e){l.removeClass(a,e)});var n=a.data(g);n&&(w&&w.isClassBased?N(a,t):(x(function(){var n=a.data(g)||{};_==n.index&&N(a,t,e)}),a.data(g,n))),f()}}var b=u,w=T(a,e,t,s);if(!w)return m(),p(),h(),y(),b;e=w.event,t=w.className;var $=n.element._data(w.node);if($=$&&$.events,r||(r=i?i.parent():a.parent()),R(a,r))return m(),p(),h(),y(),b;var k=a.data(g)||{},M=k.active||{},S=k.totalActive||0,A=k.last,E=!1;if(S>0){var D=[];if(w.isClassBased){if("setClass"==A.event)D.push(A),N(a,t);else if(M[t]){var P=M[t];P.event==e?E=!0:(D.push(P),N(a,t))}}else if("leave"==e&&M["ng-leave"])E=!0;else{for(var L in M)D.push(M[L]);k={},N(a,!0)}D.length>0&&d(D,function(e){e.cancel()})}if(!w.isClassBased||w.isSetClassOperation||"animate"==e||E||(E="addClass"==e==a.hasClass(t)),E)return m(),p(),h(),f(),b;M=k.active||{},S=k.totalActive||0,"leave"==e&&a.one("$destroy",function(){var e=n.element(this),t=e.data(g);if(t){var a=t.active["ng-leave"];a&&(a.cancel(),N(e,"ng-leave"))}}),l.addClass(a,C),s&&s.tempClasses&&d(s.tempClasses,function(e){l.addClass(a,e)});var _=q++;return S++,M[t]=w,a.data(g,{last:w,active:M,index:_,totalActive:S}),p(),w.before(function(n){var r=a.data(g);n=n||!r||!r.active[t]||w.isClassBased&&r.active[t].event!=e,m(),n===!0?y():(h(),w.after(y))}),w.cancel}function F(e){var t=i(e);if(t){var a=n.isFunction(t.getElementsByClassName)?t.getElementsByClassName(C):t.querySelectorAll("."+C);d(a,function(e){e=n.element(e);var t=e.data(g);t&&t.active&&d(t.active,function(e){e.cancel()})})}}function N(e,n){if(c(e,w))b.disabled||(b.running=!1,b.structural=!1);else if(n){var t=e.data(g)||{},a=n===!0;!a&&t.active&&t.active[n]&&(t.totalActive--,delete t.active[n]),(a||!t.totalActive)&&(l.removeClass(e,C),e.removeData(g))}}function R(e,t){if(b.disabled)return!0;if(c(e,w))return b.running;var a,r,i;do{if(0===t.length)break;var o=c(t,w),s=o?b:t.data(g)||{};if(s.disabled)return!0;if(o&&(i=!0),a!==!1){var l=t.data(y);n.isDefined(l)&&(a=l)}r=r||s.running||s.last&&!s.last.isClassBased}while(t=t.parent());return!i||!a&&r}l=S,w.data(g,b);var z=$.$watch(function(){return M.totalPendingRequests},function(e){0===e&&(z(),$.$$postDigest(function(){$.$$postDigest(function(){b.running=!1})}))}),q=0,O=r.classNameFilter(),I=O?function(e){return O.test(e)}:function(){return!0};return{animate:function(e,n,t,a,r){return a=a||"ng-inline-animate",r=D(r)||{},r.from=t?n:null,r.to=t?t:n,E(function(n){return _("animate",a,s(e),null,null,u,r,n)})},enter:function(t,a,r,i){return i=D(i),t=n.element(t),a=o(a),r=o(r),A(t,!0),e.enter(t,a,r),E(function(e){return _("enter","ng-enter",s(t),a,r,u,i,e)})},leave:function(t,a){return a=D(a),t=n.element(t),F(t),A(t,!0),E(function(n){return _("leave","ng-leave",s(t),null,null,function(){e.leave(t)},a,n)})},move:function(t,a,r,i){return i=D(i),t=n.element(t),a=o(a),r=o(r),F(t),A(t,!0),e.move(t,a,r),E(function(e){return _("move","ng-move",s(t),a,r,u,i,e)})},addClass:function(e,n,t){return this.setClass(e,n,[],t)},removeClass:function(e,n,t){return this.setClass(e,[],n,t)},setClass:function(t,a,r,o){o=D(o);var c="$$animateClasses";if(t=n.element(t),t=s(t),A(t))return e.$$setClassImmediately(t,a,r,o);var l,u=t.data(c),v=!!u;return u||(u={},u.classes={}),l=u.classes,a=p(a)?a:a.split(" "),d(a,function(e){e&&e.length&&(l[e]=!0)}),r=p(r)?r:r.split(" "),d(r,function(e){e&&e.length&&(l[e]=!1)}),v?(o&&u.options&&(u.options=n.extend(u.options||{},o)),u.promise):(t.data(c,u={classes:l,options:o}),u.promise=E(function(n){var a=t.parent(),r=i(t),o=r.parentNode;if(!o||o.$$NG_REMOVED||r.$$NG_REMOVED)return void n();var s=t.data(c);t.removeData(c);var l=t.data(g)||{},u=P(t,s,l.active);return u?_("setClass",u,t,a,null,function(){u[0]&&e.$$addClassImmediately(t,u[0]),u[1]&&e.$$removeClassImmediately(t,u[1])},s.options,n):n()}))},cancel:function(e){e.$$cancelFn()},enabled:function(e,n){switch(arguments.length){case 2:if(e)N(n);else{var t=n.data(g)||{};t.disabled=!0,n.data(g,t)}break;case 1:b.disabled=!e;break;default:e=!b.disabled}return!!e}}}]),r.register("",["$window","$sniffer","$timeout","$$animateReflow",function(a,r,o,s){function c(){N||(N=s(function(){K=[],N=null,H={}}))}function v(e,n){N&&N(),K.push(n),N=s(function(){d(K,function(e){e()}),K=[],N=null,H={}})}function f(e,t){var a=i(e);e=n.element(a),Z.push(e);var r=Date.now()+t;X>=r||(o.cancel(Y),X=r,Y=o(function(){g(Z),Z=[]},t,!1))}function g(e){d(e,function(e){var n=e.data(j);n&&d(n.closeAnimationFns,function(e){e()})})}function y(e,n){var t=n?H[n]:null;if(!t){var r=0,i=0,o=0,s=0;d(e,function(e){if(e.nodeType==m){var n=a.getComputedStyle(e)||{},t=n[P+R];r=Math.max(C(t),r);var c=n[P+q];i=Math.max(C(c),i);{n[T+q]}s=Math.max(C(n[T+q]),s);var l=C(n[T+R]);l>0&&(l*=parseInt(n[T+O],10)||1),o=Math.max(l,o)}}),t={total:0,transitionDelay:i,transitionDuration:r,animationDelay:s,animationDuration:o},n&&(H[n]=t)}return t}function C(e){var n=0,t=h(e)?e.split(/\s*,\s*/):[];return d(t,function(e){n=Math.max(parseFloat(e)||0,n)}),n}function b(e){var n=e.parent(),t=n.data(V);return t||(n.data(V,++W),t=W),t+"-"+i(e).getAttribute("class")}function w(e,n,t,a){var r=["ng-enter","ng-leave","ng-move"].indexOf(t)>=0,o=b(n),s=o+" "+t,c=H[s]?++H[s].total:0,u={};if(c>0){var d=t+"-stagger",v=o+" "+d,p=!H[v];p&&l.addClass(n,d),u=y(n,v),p&&l.removeClass(n,d)}l.addClass(n,t);var h=n.data(j)||{},f=y(n,s),m=f.transitionDuration,g=f.animationDuration;if(r&&0===m&&0===g)return l.removeClass(n,t),!1;var C=a||r&&m>0,w=g>0&&u.animationDelay>0&&0===u.animationDuration,x=h.closeAnimationFns||[];n.data(j,{stagger:u,cacheKey:s,running:h.running||0,itemIndex:c,blockTransition:C,closeAnimationFns:x});var M=i(n);return C&&($(M,!0),a&&n.css(a)),w&&k(M,!0),!0}function x(e,n,t,a,r){function s(){n.off(q,c),l.removeClass(n,p),l.removeClass(n,h),R&&o.cancel(R),E(n,t);var e=i(n);for(var a in g)e.style.removeProperty(g[a])}function c(e){e.stopPropagation();var n=e.originalEvent||e,t=n.$manualTimeStamp||n.timeStamp||Date.now(),r=parseFloat(n.elapsedTime.toFixed(B));Math.max(t-z,0)>=T&&r>=D&&a()}var u=i(n),v=n.data(j);if(-1==u.getAttribute("class").indexOf(t)||!v)return void a();var p="",h="";d(t.split(" "),function(e,n){var t=(n>0?" ":"")+e;p+=t+"-active",h+=t+"-pending"});var m="",g=[],C=v.itemIndex,b=v.stagger,w=0;if(C>0){var x=0;b.transitionDelay>0&&0===b.transitionDuration&&(x=b.transitionDelay*C);var M=0;b.animationDelay>0&&0===b.animationDuration&&(M=b.animationDelay*C,g.push(F+"animation-play-state")),w=Math.round(100*Math.max(x,M))/100}w||(l.addClass(n,p),v.blockTransition&&$(u,!1));var S=v.cacheKey+" "+p,A=y(n,S),D=Math.max(A.transitionDuration,A.animationDuration);if(0===D)return l.removeClass(n,p),E(n,t),void a();!w&&r&&Object.keys(r).length>0&&(A.transitionDuration||(n.css("transition",A.animationDuration+"s linear all"),g.push("transition")),n.css(r));var P=Math.max(A.transitionDelay,A.animationDelay),T=P*U;if(g.length>0){var N=u.getAttribute("style")||"";";"!==N.charAt(N.length-1)&&(N+=";"),u.setAttribute("style",N+" "+m)}var R,z=Date.now(),q=_+" "+L,O=(P+D)*G,I=(w+O)*U;return w>0&&(l.addClass(n,h),R=o(function(){R=null,A.transitionDuration>0&&$(u,!1),A.animationDuration>0&&k(u,!1),l.addClass(n,p),l.removeClass(n,h),r&&(0===A.transitionDuration&&n.css("transition",A.animationDuration+"s linear all"),n.css(r),g.push("transition"))},w*U,!1)),n.on(q,c),v.closeAnimationFns.push(function(){s(),a()}),v.running++,f(n,I),s}function $(e,n){e.style[P+z]=n?"none":""}function k(e,n){e.style[T+I]=n?"paused":""}function M(e,n,t,a){return w(e,n,t,a)?function(e){e&&E(n,t)}:void 0}function S(e,n,t,a,r){return n.data(j)?x(e,n,t,a,r):(E(n,t),void a())}function A(e,n,t,a,r){var i=M(e,n,t,r.from);if(!i)return c(),void a();var o=i;return v(n,function(){o=S(e,n,t,a,r.to)}),function(e){(o||u)(e)}}function E(e,n){l.removeClass(e,n);var t=e.data(j);t&&(t.running&&t.running--,t.running&&0!==t.running||e.removeData(j))}function D(e,n){var t="";return e=p(e)?e:e.split(/\s+/),d(e,function(e,a){e&&e.length>0&&(t+=(a>0?" ":"")+e+n)}),t}var P,L,T,_,F="";e.ontransitionend===t&&e.onwebkittransitionend!==t?(F="-webkit-",P="WebkitTransition",L="webkitTransitionEnd transitionend"):(P="transition",L="transitionend"),e.onanimationend===t&&e.onwebkitanimationend!==t?(F="-webkit-",T="WebkitAnimation",_="webkitAnimationEnd animationend"):(T="animation",_="animationend");var N,R="Duration",z="Property",q="Delay",O="IterationCount",I="PlayState",V="$$ngAnimateKey",j="$$ngAnimateCSS3Data",B=3,G=1.5,U=1e3,H={},W=0,K=[],Y=null,X=0,Z=[];return{animate:function(e,n,t,a,r,i){return i=i||{},i.from=t,i.to=a,A("animate",e,n,r,i)},enter:function(e,n,t){return t=t||{},A("enter",e,"ng-enter",n,t)},leave:function(e,n,t){return t=t||{},A("leave",e,"ng-leave",n,t)},move:function(e,n,t){return t=t||{},A("move",e,"ng-move",n,t)},beforeSetClass:function(e,n,t,a,r){r=r||{};var i=D(t,"-remove")+" "+D(n,"-add"),o=M("setClass",e,i,r.from);return o?(v(e,a),o):(c(),void a())},beforeAddClass:function(e,n,t,a){a=a||{};var r=M("addClass",e,D(n,"-add"),a.from);return r?(v(e,t),r):(c(),void t())},beforeRemoveClass:function(e,n,t,a){a=a||{};var r=M("removeClass",e,D(n,"-remove"),a.from);return r?(v(e,t),r):(c(),void t())},setClass:function(e,n,t,a,r){r=r||{},t=D(t,"-remove"),n=D(n,"-add");var i=t+" "+n;return S("setClass",e,i,a,r.to)},addClass:function(e,n,t,a){return a=a||{},S("addClass",e,D(n,"-add"),t,a.to)},removeClass:function(e,n,t,a){return a=a||{},S("removeClass",e,D(n,"-remove"),t,a.to)}}}])}])}(window,window.angular)},{}],3:[function(e,n){e("./angular-animate"),n.exports="ngAnimate"},{"./angular-animate":2}],4:[function(){!function(e,n,t){"use strict";function a(e){return null!=e&&""!==e&&"hasOwnProperty"!==e&&s.test("."+e)}function r(e,n){if(!a(n))throw o("badmember",'Dotted member path "@{0}" is invalid.',n);for(var r=n.split("."),i=0,s=r.length;s>i&&e!==t;i++){var c=r[i];e=null!==e?e[c]:t}return e}function i(e,t){t=t||{},n.forEach(t,function(e,n){delete t[n]});for(var a in e)!e.hasOwnProperty(a)||"$"===a.charAt(0)&&"$"===a.charAt(1)||(t[a]=e[a]);return t}var o=n.$$minErr("$resource"),s=/^(\.[a-zA-Z_$][0-9a-zA-Z_$]*)+$/;n.module("ngResource",["ng"]).provider("$resource",function(){var e=this;this.defaults={stripTrailingSlashes:!0,actions:{get:{method:"GET"},save:{method:"POST"},query:{method:"GET",isArray:!0},remove:{method:"DELETE"},"delete":{method:"DELETE"}}},this.$get=["$http","$q",function(a,s){function c(e){return l(e,!0).replace(/%26/gi,"&").replace(/%3D/gi,"=").replace(/%2B/gi,"+")}function l(e,n){return encodeURIComponent(e).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,n?"%20":"+")}function u(n,t){this.template=n,this.defaults=h({},e.defaults,t),this.urlParams={}}function d(c,l,g,y){function C(e,n){var t={};return n=h({},l,n),p(n,function(n,a){m(n)&&(n=n()),t[a]=n&&n.charAt&&"@"==n.charAt(0)?r(e,n.substr(1)):n}),t}function b(e){return e.resource}function w(e){i(e||{},this)}var x=new u(c,y);return g=h({},e.defaults.actions,g),w.prototype.toJSON=function(){var e=h({},this);return delete e.$promise,delete e.$resolved,e},p(g,function(e,r){var c=/^(POST|PUT|PATCH)$/i.test(e.method);w[r]=function(l,u,d,g){var y,$,k,M={};switch(arguments.length){case 4:k=g,$=d;case 3:case 2:if(!m(u)){M=l,y=u,$=d;break}if(m(l)){$=l,k=u;break}$=u,k=d;case 1:m(l)?$=l:c?y=l:M=l;break;case 0:break;default:throw o("badargs","Expected up to 4 arguments [params, data, success, error], got {0} arguments",arguments.length)}var S=this instanceof w,A=S?y:e.isArray?[]:new w(y),E={},D=e.interceptor&&e.interceptor.response||b,P=e.interceptor&&e.interceptor.responseError||t;p(e,function(e,n){"params"!=n&&"isArray"!=n&&"interceptor"!=n&&(E[n]=f(e))}),c&&(E.data=y),x.setUrlParams(E,h({},C(y,e.params||{}),M),e.url);var L=a(E).then(function(t){var a=t.data,s=A.$promise;if(a){if(n.isArray(a)!==!!e.isArray)throw o("badcfg","Error in resource configuration for action `{0}`. Expected response to contain an {1} but got an {2}",r,e.isArray?"array":"object",n.isArray(a)?"array":"object");e.isArray?(A.length=0,p(a,function(e){A.push("object"==typeof e?new w(e):e)})):(i(a,A),A.$promise=s)}return A.$resolved=!0,t.resource=A,t},function(e){return A.$resolved=!0,(k||v)(e),s.reject(e)});return L=L.then(function(e){var n=D(e);return($||v)(n,e.headers),n},P),S?L:(A.$promise=L,A.$resolved=!1,A)},w.prototype["$"+r]=function(e,n,t){m(e)&&(t=n,n=e,e={});var a=w[r].call(this,e,this,n,t);return a.$promise||a}}),w.bind=function(e){return d(c,h({},l,e),g)},w}var v=n.noop,p=n.forEach,h=n.extend,f=n.copy,m=n.isFunction;return u.prototype={setUrlParams:function(e,t,a){var r,i,s=this,l=a||s.template,u=s.urlParams={};p(l.split(/\W/),function(e){if("hasOwnProperty"===e)throw o("badname","hasOwnProperty is not a valid parameter name.");!new RegExp("^\\d+$").test(e)&&e&&new RegExp("(^|[^\\\\]):"+e+"(\\W|$)").test(l)&&(u[e]=!0)}),l=l.replace(/\\:/g,":"),t=t||{},p(s.urlParams,function(e,a){r=t.hasOwnProperty(a)?t[a]:s.defaults[a],n.isDefined(r)&&null!==r?(i=c(r),l=l.replace(new RegExp(":"+a+"(\\W|$)","g"),function(e,n){return i+n})):l=l.replace(new RegExp("(/?):"+a+"(\\W|$)","g"),function(e,n,t){return"/"==t.charAt(0)?t:n+t})}),s.defaults.stripTrailingSlashes&&(l=l.replace(/\/+$/,"")||"/"),l=l.replace(/\/\.(?=\w+($|\?))/,"."),e.url=l.replace(/\/\\\./,"/."),p(t,function(n,t){s.urlParams[t]||(e.params=e.params||{},e.params[t]=n)})}},d}]})}(window,window.angular)},{}],5:[function(e,n){e("./angular-resource"),n.exports="ngResource"},{"./angular-resource":4}],6:[function(e,n){"use strict";var t=function(e){return e&&e.__esModule?e["default"]:e},a=t(e("lodash"));n.exports=function(){return{restrict:"E",template:e("./template.html"),controller:["$scope","launchCloud","providerMonitor","storedClouds",function(e,n,t,r){function i(n,i){var o=!1;if(a.each(c,function(e){a.each(e.clusters,function(e){a.each(e.machines,function(e,n){var t=i[n];a.matches(t)(e.providerData)||(o=!0,e.providerData=t,a.merge(e,t))})})}),o)r.saveClouds(),e.$apply();else{t.cancel(n)}}function o(n){return function(){for(var t=arguments.length,a=Array(t),r=0;t>r;r++)a[r]=arguments[r];if(a&&1===a.length){var i=a[0];e.destroyLog[n.id].push(i)}else console.log.apply(console,a)}}var s=n.providers,c=r.getClouds();e.destroyLog={},e.destroyStatus={},e.hideClusters={},e.hideMachines={},e.clouds=c,e.$watchCollection("clouds",function(e){var n=a.unique(a.flatten(a.map(e,function(e){return a.map(e.clusters,function(e){return e.provider})})));a.each(n,function(e){return t.monitor(e,15e3,i)})});var l=void 0;e.cloudHovered=function(n){l!=n&&(l=n,e.showCloudPoints(n))},e.cloudNotHovered=function(e){l===e&&(l=void 0)},e.destroyCluster=function(e){var n=e.id;console.log("destroying cluster",n)},e.destroyCloud=function(t){t.id;e.hideClusters[t.id]=!1,e.destroyLog[t.id]=[],e.destroyStatus[t.id]="Destroying",n.destroy(t,o(t,s)).then(function(n){console.log("destroyed",n),r.removeCloud(n),0===e.clouds.length&&e.gotoStage("launchpad"),delete e.destroyLog[n.id],e.$apply()},function(e){console.log("error destroying",e)})},e.forgetCloud=function(n){r.removeCloud(n),0===e.clouds.length&&e.gotoStage("launchpad")},e.returnToLaunchStatus=function(){e.gotoStage("launchstatus")},e.getMachineProviderDashboardUrl=function(e){return"http://cloud.digitalocean.com/droplets/"+e.providerData.id},e.getMachineEstimatedCost=function(e,n){var t=new Date,a=n.createdAt,r=n.size,i=e.provider,o=s[i].profile,c=Math.ceil((t-new Date(a))/1e3/60/60),l=c*o.sizes[r].price_hourly;return l}}]}}},{"./template.html":8,lodash:"lodash"}],7:[function(e,n){"use strict";var t=function(e){return e&&e.__esModule?e["default"]:e},a=t(e("lodash")),r=e("../../../lib/globe/globe");n.exports=function(){var e=void 0;return{restrict:"E",link:function(n,t){e=new r(t[0]),e.startAnimation(),n.$on("$destroy",function(){e.destroy()})},controller:["$scope",function(n){n.showCloudPoints=function(t){var r=t.clusters,i={};a.each(r,function(e){var n=i[e.provider]=i[e.provider]||{};n[e.location]=!0});var o=n.providers,s=[];a.each(i,function(e,n){var t=o[n].profile;a.each(e,function(e,n){var a=t.locations[n],r=a.physicalLocation,i=r.lat,o=r["long"];s.push([i,o,.5])})}),e.addData(a.flatten(s),{format:"magnitude"}),e.createPoints(),console.log("showing",i,s,o)}}]}}},{"../../../lib/globe/globe":31,lodash:"lodash"}],8:[function(e,n){n.exports='<div class="display-container">\n <div class="clouds-container">\n <div class="clouds">\n <div ng-if="clouds.length === 0">You have no clouds! Try launching one!</div>\n <div ng-repeat="cloud in clouds track by $index"\n ng-mouseenter="cloudHovered(cloud)"\n ng-mouseleave="cloudNotHovered(cloud)"\n class="cloud">\n <div ng-if="destroyLog[cloud.id]"\n class="destroy-log">\n <div class="destroy-status">{{destroyStatus[cloud.id]}}</div>\n <div ng-repeat="event in destroyLog[cloud.id]">\n {{::event}}\n </div>\n </div>\n <div class="cloud-header"\n ng-click="hideClusters[cloud.id] = !hideClusters[cloud.id]">\n <div class="info">\n <div class="cloud-id" title="This is your cloud\'s name!">{{cloud.id}}</div>\n <div class="cluster-count">{{cloud.clusterCount}} Cluster{{cloud.clusterCount > 1 ? \'s\' : \'\'}}</div>\n </div>\n <div class="actions">\n <button ng-click="forgetCloud(cloud); $event.stopPropagation()"\n class="forget"\n title="Cloud remains running, but is removed from GUI.">Forget Cloud</button>\n <button ng-click="destroyCloud(cloud); $event.stopPropagation()"\n class="destroy"\n title="Completly destroy this cloud.">Destroy Cloud</button>\n </div>\n </div>\n <div ng-if="!hideClusters[cloud.id]"\n class="clusters">\n <div ng-repeat="(clusterID, cluster) in cloud.clusters"\n class="cluster">\n\n <div class="cluster-header"\n ng-click="hideMachines[clusterID] = !hideMachines[clusterID]; $event.stopPropagation();">\n <div class="info">\n <div class="cluster-id" title="This is your cluster\'s ID!">{{::clusterID}}</div>\n <div class="machine-count">{{cluster.machineCount}} Machine{{cluster.machineCount > 1 ? \'s\' : \'\'}}</div>\n </div>\n <div class="location-info">\n <span class="location">{{::cluster.location}}</span>\n <a ng-href="{{::providers[cluster.provider].dashboardUrl}}"\n target="_blank"\n class="provider-name">{{::cluster.provider}}</a>\n </div>\n <div class="actions">\n <button ng-click="destroyCluster(cluster)">Destroy Cluster</button>\n </div>\n </div>\n\n <div ng-if="!hideMachines[clusterID]"\n class="machines">\n <div ng-repeat="(machineID, machine) in cluster.machines"\n class="machine">\n <div class="info">\n <span class="machine-id" title="Goto {{::providers[cluster.provider].profile.name}}\'s Dashboard For This Machine"><a href="{{getMachineProviderDashboardUrl(machine)}}" target="_blank">{{::machineID}}</a></span>\n <span class="role-name">{{::machine.roleName}}</span>\n <span class="image">{{::machine.image}}</span>\n <span class="size">{{::machine.size}}</span>\n <div ng-class="{\n \'status\': true,\n \'active\': machine.status === \'active\',\n \'new\': machine.status === \'new\'\n }"\n title="{{machine.status}}"></div>\n </div>\n\n <div class="details">\n <div ng-repeat="(networkType, networks) in machine.networks"\n class="networks">\n <div ng-repeat="network in networks"\n class="network">\n <a href="http://{{network.ipAddress}}" target="_blank">{{network.ipAddress}}</a>\n <a href="ssh://core@{{network.ipAddress}}">ssh</a>\n </div>\n </div>\n\n <span class="generated-at">Generated: {{::machine.generatedAt | date : \'y-M-d h:mm:s a\'}}</span>\n <span class="created-at">Created: {{machine.createdAt | date : \'y-M-d h:mm:s a\'}}</span>\n\n <span class="cost">Estimated Cost: {{getMachineEstimatedCost(cluster, machine) | currency : \'$\' : 5}}</span>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class="cloud-info">\n <globe></globe>\n </div>\n</div>\n<provider-statuses></provider-statuses>\n<button ng-if="stage.launchStatusVisible" class="return" ng-click="gotoStage(\'launchstatus\')">↓ Return to Launch Status ↓</button>\n<button ng-if="!stage.launchStatusVisible" class="return" ng-click="gotoStage(\'launchpad\')">↓ Return to Launch Pad ↓</button>'},{}],9:[function(e,n){"use strict";var t=function(e,n){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e)){for(var t,a=[],r=e[Symbol.iterator]();!(t=r.next()).done&&(a.push(t.value),!n||a.length!==n););return a}throw new TypeError("Invalid attempt to destructure non-iterable instance")},a=e("lodash"),r=e("hjson");n.exports=function(){return{restrict:"E",template:e("./template.html"),link:function(e,n){function t(){var n=l.textContent;try{var t=r.parse(n);i(t)}catch(a){console.log("parse error",a),e.configurationOK=!1}}function i(n){o(n)&&(e.configuration=n,e.configurationOK=!0,e.$broadcast("configurationModified",e.configuration))}function o(){return!0}function s(e){if(window.getSelection){var n=window.getSelection();if(n.getRangeAt&&n.rangeCount){var t=n.getRangeAt(0);t.deleteContents(),t.insertNode(document.createTextNode(e))}}else document.selection&&document.selection.createRange&&(document.selection.createRange().text=e)}console.log(n);var c=n[0].children[0],l=c.children[1];l.addEventListener("keydown",function(e){9===e.keyCode&&(e.preventDefault(),s(" "))}),e.configurationKeyUp=function(e){var n=e.keyCode;n>=33&&40>=n||u()};var u=a.debounce(function(){return e.$apply(t)},500)},controller:["$scope","$sce",function(e,n){function r(n){i(n)&&(e.configuration=n,e.configurationOK=!0,o(),e.$broadcast("configurationModified",e.configuration))}function i(){return!0}function o(){e.configurationHtml=n.trustAsHtml(s(e.configuration))}function s(e){return""+c()+u(e)+l()}function c(){return'<div class="open">{</div>'}function l(){return'<div class="close">}</div>'}function u(e,n){var t=a.keys(e),r=t.length,i=t[r-1];return n=n||"",n+=" ",a.map(e,function(e,t){return'<div class="key key-'+t+'">'+n+t+": "+d(e,n)+(t===i?"":",")+"</div>"}).join("")}function d(e,n){var t=typeof e;switch(Array.isArray(e)&&(t="array"),t){case"string":return'<span class="value">"'+e+'"</span>';case"number":return'<span class="number">'+e+"</span>";case"object":return"<span>{</span>"+u(e,n)+"<span>"+n+"}</span>";case"array":return"<span>[</span> "+v(e)+" <span>]</span>";case"boolean":return'<span class="boolean">'+e+"</span>"}return"wut is this: "+t}function v(e){return a.map(e,function(e){return""+d(e)}).join(", ")}e.configurationOK=!0,e.setConfiguration=function(e){r(e)},e.$on("containerModified",function(n,a,r){console.log("containerModified",n,a,r);var i=a.split("/"),s=e.configuration,c=t(i,2),l=c[0],u=c[1];void 0===u&&(u=l),r?i.length>1?(s.configuration[u]=1,s.containers[u]={container:a}):s.configuration[a]=1:i.length>1?(delete s.configuration[u],delete s.containers[u]):delete s.configuration[a],o(),e.$broadcast("configurationModified",s)}),e.$on("locationModified",function(n,t,a,r){var i=e.configuration;if(r){var s=i.locations[t]=i.locations[t]||[];-1===s.indexOf(a)&&s.push(a)}else{var s=i.locations[t];if(s){var c=s.indexOf(a);
-1!==c&&(s.splice(c,1),0===s.length&&delete i.locations[t])}}o(),e.$broadcast("configurationModified",i)}),o(),e.$broadcast("configurationModified",e.configuration)}]}}},{"./template.html":10,hjson:"hjson",lodash:"lodash"}],10:[function(e,n){n.exports='<div ng-class="{\'status\': true, \'ok\': configurationOK}">\n <div class="pre-alpha"><span>PRE-ALPHA</span></div>\n <div ng-if="::isSimulator"\n class="simulation-mode">\n <div>SIMULATION</div>\n <div>MODE</div>\n </div>\n <div class="configuration-text"\n contenteditable\n spellcheck="false"\n ng-keydown="allowTab($event)"\n ng-keyup="configurationKeyUp($event)"\n ng-bind-html="configurationHtml"></div>\n</div>'},{}],11:[function(e,n){"use strict";n.exports=function(){return{restrict:"E",template:e("./template.html"),controller:["$scope",function(e){function n(n){t.providers={},t.total=0;for(var a in n.locations){var r=e.providers[a].profile,i=t.providers[a]={name:r.name,brand:r.brand,locations:{},total:0};for(var o in n.locations[a]){var s=n.locations[a][o],c=r.locations[s],l=i.locations[s]={name:s,vicinity:c.vicinity,machineTypes:{},total:0},u=l.machineTypes["512MB"]={size:"512MB",hourlyPrice:70,count:0,roles:{}};for(var d in n.configuration){{var v=n.configuration[d];u.roles[d]={name:d,count:v,cost:v*u.hourlyPrice}}u.count+=v,l.total+=v*u.hourlyPrice}i.total+=l.total}t.total+=i.total}}var t={providers:{},total:0};e.$on("configurationModified",function(e,t){n(t)}),e.cost=t,e.expanded={},n(e.configuration)}]}}},{"./template.html":12}],12:[function(e,n){n.exports='<div class="items">\n <div ng-repeat="provider in cost.providers"\n class="provider"\n ng-click="expanded[provider.name] = !expanded[provider.name]">\n <div class="provider-header"\n title="Click to {{expanded[provider.name] ? \'collapse\' : \'expand\'}}">\n <div class="provider-expand">{{expanded[provider.name] ? \'-\' : \'+\'}}</div>\n <div>\n <span class="provider-name">{{::provider.name}}</span>\n <span ng-if="provider.brand" class="provider-brand">| {{::provider.brand}}</span>\n </div>\n <span class="provider-total">Total: ${{provider.total / 10000}} / hr</span>\n </div>\n <div class="locations">\n <div ng-repeat="location in provider.locations"\n ng-show="expanded[provider.name]"\n class="location">\n <span class="location-name">{{::location.vicinity}} ({{::location.name}})</span>\n <div class="machine-types">\n <div ng-repeat="type in location.machineTypes"\n class="machine-type">\n <span class="machine-count">({{type.count}}) {{::type.size}} @ ${{::(type.hourlyPrice / 10000)}} / hr</span>\n <div class="roles">\n <div ng-repeat="role in type.roles"\n class="role">\n <span class="count">({{::role.count}})</span>\n <span class="name">{{::role.name}}</span> @\n <span class="cost">${{::(role.cost / 10000)}} / hr</span>\n </div>\n </div>\n </div>\n </div>\n <div class="location-total">{{::location.vicinity}} ({{::location.name}}) Total: ${{location.total / 10000}} / hr</div>\n </div>\n </div>\n </div>\n</div>\n<div class="total"\n title="This is only an estimate! Actual cost may vary!">Estimated Running Cost*: ${{cost.total / 10000}} / hr</div>'},{}],13:[function(e,n){"use strict";var t=e("lodash");n.exports=["$timeout","launchCloud","storedClouds",function(n,a,r){return{restrict:"E",template:e("./template.html"),controller:["$scope",function(e){function i(n,a){function r(n){var t=n.start,a=n.ok,r=n.bad,i=n.args;if(t)if("Container"===t){var o=i[0].containerName,c={message:""+l+"Checking if "+o+" exists...",event:n};s[t]=s[t]||{},s[t][o]=c,e.launchLog.push(c)}else{var c={message:""+l+"Validating "+t+"...",event:n};s[t]=c,e.launchLog.push(c),l+=" "}else if(a)if(s[a].status="ok","Container"===a){var o=i[0].containerName;s.Container[o].status="ok"}else"Locations"===a&&e.launchLog.push({message:""+l+i[0].status}),l=l.substr(0,Math.max(0,l.length-2));else if(r){if(s[r].status="bad","Credentials"===r&&(i[0].missing?e.missingCredentials=i[0].missing:(e.missingCredentials={},e.missingCredentials.digitalocean=[])),"Container"===r){var o=i[0].containerName;s.Container[o].status="bad"}l=l.substr(0,Math.max(0,l.length-2))}}function i(n){var r=n.start,i=n.ok,o=n.bad,c=n.args;if(r){if("Plan"===r){var u={message:""+l+"Generating Execution "+r+"...",event:n};s[r]=u,e.launchLog.push(u),l+=" "}else if("Clusters"===r){var d=c[0].clusters,v=t.keys(d).length,u={message:""+l+"Generating "+v+" Cluster Plan"+(v>1?"s":"")+"...",event:n};s[r]=u,e.launchLog.push(u),l+=" "}else if("Cluster"===r){var p=c[0].cluster,h=p.machineCount,f=p.providerName,m=p.location;f=a[f].profile.name;var u={message:""+l+p.id+" "+h+" Machine"+(h>1?"s":"")+" on "+f+" at "+m+"...",event:n};s[r]=s[r]||{},s[r][p.id]=u,e.launchLog.push(u)}}else if(i)if("Cluster"===i){var p=c[0].cluster;s[i][p.id].status="ok"}else s[i].status="ok",l=l.substr(0,Math.max(0,l.length-2));else if(o)if("Cluster"===o){var p=c[0].cluster;s[o][p.id].status="bad"}else s[o].status="bad",l=l.substr(0,Math.max(0,l.length-2))}function o(n){var t=n.start,a=n.ok,r=n.bad,i=n.args;if(t)if("Machine"===t){var o=i[0].machine.id,c={message:""+l+"Launching Machine "+o+"...",event:n};s[t]=s[t]||{},s[t][o]=c,e.launchLog.push(c)}else{var c={message:""+l+"Executing "+t+"...",event:n};s[t]=c,e.launchLog.push(c),l+=" "}else if(a)if("Machine"===a){var o=i[0].machine.id;s[a][o].status="ok"}else s[a].status="ok",l=l.substr(0,Math.max(0,l.length-2));else if(r)if("Machine"===r){var o=i[0].machine.id;s[r][o].status="bad"}else s[r].status="bad",l=l.substr(0,Math.max(0,l.length-2))}var s={},c={Validate:r,Generate:i,Execute:o},l="";return function(n){console.log(n);var t=n.type,a=c[t];a?a(n):e.launchLog.push({message:n.start}),e.$apply()}}e.launch=function(){!e.configurationModified&&e.configurationOK&&!function(){e.launching=!0,e.launchLog=[],e.launchStatus="Launching...",e.launchError=void 0,e.missingCredentials=void 0,e.gotoStage("launchstatus");var o=e.configuration,s=e.providers,c=t.cloneDeep(o);n(function(){return a.launch(c,i(c,s)).then(function(n){console.log("launched",n),e.$apply(function(){r.addCloud(n),e.launchStatus="Launched!",e.gotoStage("clouds"),e.launching=!1})})["catch"](function(n){console.log("launch error",n),"Credentials"===n.type&&(e.missingCredentials=n.missing),e.$apply(function(){e.launchStatus="Launch Error!",e.launchError=n})})},0)}()}}]}}]},{"./template.html":16,lodash:"lodash"}],14:[function(e,n){"use strict";n.exports=function(){return{restrict:"E",template:e("./template.html"),controller:["$scope",function(e){e.targets={CoreOS:{Stable:"557.2.0",Beta:"584.0.0",Alpha:"598.0.0"}},e.selectedTarget={CoreOS:"Alpha"}}]}}},{"./template.html":15}],15:[function(e,n){n.exports='<span class="target-header">Select An Operating System</span>\n<ul class="operating-systems">\n <li class="os">\n <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" preserveAspectRatio="xMidYMin" height="30px" viewBox="24.5 40.5 744 224" enable-background="new 24.5 40.5 744 224" xml:space="preserve">\n <g>\n <g>\n <path fill="#53A3DA" d="M136.168,45.527C76.898,45.527,28.689,93.739,28.689,153c0,59.265,48.209,107.474,107.479,107.474\n c59.252,0,107.465-48.209,107.465-107.474C243.633,93.739,195.42,45.527,136.168,45.527z"></path>\n <path fill="#F1606D" d="M136.168,55.389c-17.283,0-31.941,27.645-37.235,66.069c-0.169,1.236-0.333,2.487-0.478,3.746\n c-0.723,6.047-1.213,12.335-1.458,18.808c-0.117,2.962-0.175,5.956-0.175,8.988c0,3.029,0.058,6.029,0.175,8.985\n c0.245,6.472,0.735,12.764,1.458,18.811c8.104,1.049,16.769,1.761,25.807,2.099c3.907,0.146,7.872,0.233,11.907,0.233\n c4.023,0,8-0.088,11.895-0.233c9.049-0.338,17.708-1.05,25.819-2.099c0.892-0.114,1.77-0.239,2.659-0.368\n c33.754-4.74,57.235-15.232,57.235-27.428C233.776,99.088,190.071,55.389,136.168,55.389z"></path>\n <path fill="#FFFFFF" d="M176.541,125.569c-0.979-1.428-2.029-2.796-3.148-4.11c-8.956-10.557-22.297-17.265-37.224-17.265\n c-4.839,0-9.148,7.407-11.907,18.909c-1.096,4.586-1.947,9.819-2.495,15.498c-0.432,4.551-0.665,9.391-0.665,14.399\n s0.233,9.849,0.665,14.396c4.554,0.432,9.387,0.664,14.402,0.664c5.009,0,9.842-0.232,14.396-0.664\n c10.011-0.95,18.653-2.875,24.775-5.411c6.046-2.501,9.624-5.615,9.624-8.985C184.963,142.832,181.858,133.388,176.541,125.569z"></path>\n </g>\n <g>\n <path fill="#231F20" d="M344.891,100.053c12.585,0,22.816,6.138,29.262,13.062l-10.064,11.326\n c-5.353-5.192-11.175-8.495-19.041-8.495c-16.839,0-28.953,14.16-28.953,37.291c0,23.448,11.169,37.608,28.32,37.608\n c9.128,0,15.895-3.775,21.717-10.228l10.067,11.169c-8.335,9.598-19.038,14.95-32.099,14.95c-26.119,0-46.731-18.88-46.731-53.025\n C297.37,120.036,318.454,100.053,344.891,100.053z"></path>\n <path fill="#231F20" d="M416.961,125.701c19.352,0,36.822,14.793,36.822,40.597c0,25.647-17.471,40.439-36.822,40.439\n c-19.197,0-36.66-14.792-36.66-40.439C380.301,140.494,397.764,125.701,416.961,125.701z M416.961,191.945\n c11.33,0,18.25-10.228,18.25-25.647c0-15.577-6.92-25.804-18.25-25.804s-18.094,10.227-18.094,25.804\n C398.867,181.717,405.631,191.945,416.961,191.945z"></path>\n <path fill="#231F20" d="M459.771,127.589h14.943l1.26,13.688h0.629c5.506-10.07,13.691-15.577,21.871-15.577\n c3.938,0,6.455,0.472,8.811,1.574l-3.148,15.734c-2.67-0.784-4.717-1.257-8.018-1.257c-6.139,0-13.539,4.245-18.256,15.893v47.203\n h-18.092L459.771,127.589L459.771,127.589z"></path>\n <path fill="#231F20" d="M541.121,125.701c20.928,0,31.941,15.107,31.941,36.667c0,3.458-0.314,6.604-0.787,8.495h-49.09\n c1.57,14.003,10.379,21.869,22.811,21.869c6.613,0,12.273-2.041,17.941-5.662l6.135,11.326\n c-7.395,4.878-16.676,8.341-26.432,8.341c-21.404,0-38.08-14.95-38.08-40.439C505.561,141.12,523.023,125.701,541.121,125.701z\n M557.326,159.376c0-12.277-5.189-19.671-15.732-19.671c-9.125,0-16.996,6.768-18.57,19.671H557.326z"></path>\n <path fill="#F1606D" d="M600.602,152.607c0-32.729,17.785-53.344,42.799-53.344c24.863,0,42.641,20.615,42.641,53.344\n c0,32.889-17.777,54.13-42.641,54.13C618.387,206.737,600.602,185.496,600.602,152.607z M678.49,152.607\n c0-28.639-14.158-46.731-35.09-46.731c-21.084,0-35.248,18.093-35.248,46.731c0,28.796,14.164,47.521,35.248,47.521\n C664.332,200.128,678.49,181.403,678.49,152.607z"></path>\n <path fill="#53A4D9" d="M699.738,186.125c7.557,8.495,18.412,14.003,30.529,14.003c15.732,0,25.807-8.499,25.807-20.767\n c0-12.904-8.494-17.154-18.723-21.717l-15.736-7.082c-8.969-3.936-20.934-10.385-20.934-25.808\n c0-14.947,12.904-25.492,30.059-25.492c12.588,0,22.658,5.665,28.949,12.435l-4.244,4.878c-5.982-6.452-14.32-10.7-24.705-10.7\n c-13.691,0-22.816,7.239-22.816,18.565c0,11.962,10.385,16.521,17.936,19.985l15.738,6.921\n c11.486,5.195,21.713,11.647,21.713,27.539s-13.061,27.851-33.201,27.851c-15.107,0-26.75-6.451-34.932-15.576L699.738,186.125z"></path>\n </g>\n </g>\n </svg>\n </li>\n <li ng-repeat="(name, version) in targets[\'CoreOS\']"\n ng-class="{\'version\': true, \'selected\': name === selectedTarget[\'CoreOS\']}"\n ng-click="selectedTarget[\'CoreOS\'] = name">\n <div>{{::name}}</div>\n <div class="number">{{::version}}</div>\n </li>\n</ul>'},{}],16:[function(e,n){n.exports='<configuration></configuration>\n<div class="side">\n <cost></cost>\n <target></target>\n <button class="launch" ng-click="launch()">LAUNCH</button>\n</div>'},{}],17:[function(e,n){"use strict";var t=e("lodash");n.exports=["configurationLoader","launchCloud","newVersionCheck","storedClouds","storedConfiguration","storedCredentials","stageManager",function(n,a,r,i,o,s,c){return{restrict:"E",template:e("./template.html"),controller:["$scope",function(e){function n(e){var n=!0;t.each(e.credentials,function(e){0===e.length&&(n=!1)}),e.hasCredentials=n}var r=a.providers,l=a.isSimulator;e.providers=r,e.isSimulator=l,e.clouds=i.getClouds(),e.stage=c.stage,e.providerStatuses=t.mapValues(r,function(e,n){return console.log(e,n),e.api.status}),e.configuration=o.getConfiguration()||{locations:{digitalocean:["sfo1"]},configuration:{viewer:1},roles:{$all:["cadvisor"],viewer:["benchmark-viewer","fleet-ui"]},containers:{cadvisor:{container:"google/cadvisor"},"benchmark-viewer":{container:"cloudlauncher/benchmark-viewer",environment:{ETCD_HOST:"172.17.42.1"},ports:{80:2771,4001:!0},options:"-p 4001 -p 80:2771 -e ETCD_HOST=172.17.42.1"},"fleet-ui":{container:"purpleworks/fleet-ui",options:"-p 3000:3000 -e ETCD_PEER=172.17.42.1 -v /home/core/.ssh/id_rsa:/root/id_rsa"}},authorizations:["40:85:f0:9b:28:ad:5d:25:b5:51:2e:ad:f3:b3:31:98"]},o.removeConfiguration(),t.each(r,function(e){var n=s.getCredentials(e.name);t.merge(e,n)}),t.each(r,n),e.availableSizes=t.flatten(t.map(t.values(r),function(e){return t.keys(e.profile.sizes)})),e.$on("configurationModified",function(n,t){var a=t.locations;if(a)for(var r in a){var i=a[r];for(var o in i){var s=i[o];e.providers[r].profile.locations[s].selected=!0}}})}]}}]},{"./template.html":26,lodash:"lodash"}],18:[function(e,n){"use strict";var t=e("lodash");n.exports=["$resource","$http","dockerHubApiRoot",function(n,r,i){return{restrict:"E",template:e("./template.html"),controller:["$scope",function(e){function r(e){var n=e.query,t=e.page;e.querying=!0,t+=1;var a=s.get({query:n,count:100,page:t},function(){if(a.query!=e.query)return void console.log("didn't match",n,a.query);var i=(a.num_pages,a.num_results),o=(a.page_size,a.results);e.page=t,e.results.push.apply(e.results,o),e.results.sort(e.sortFn),e.end=e.results.length,e.total=i,e.resultsLoaded=e.results.length/i*100,i>e.results.length?r(e):e.querying=!1})}var o={query:"",results:[],showLimit:20,limitStep:20,sortBy:"stars",sortFn:a.stars},s=n(""+i+"/v1/search?q=:query&n=:count&page=:page");e.docker=o,e.selectedContainers={},e.queryChanged=function(){var e=o.query;o.querying=!1,o.haveFirstResults=!1,o.showLimit=20,o.limitStep=20,o.page=0,o.start=0,o.end=0,o.total=0,o.resultsLoaded=0,o.results.splice(0,o.results.length),""!==e?c(e):(o.querying=!1,o.showResults=!1)},e.sortBy=function(){switch(o.sortBy){case"stars":o.sortFn=a.stars;break;case"name":o.sortFn=a.name}o.results.sort(o.sortFn)},e.selectContainer=function(n,t){e.selectedContainers[n]=t,e.$broadcast("containerModified",n,t)};var c=t.debounce(function(e){o.querying=!0;var n=s.get({query:e,count:100,page:1},function(){if(n.query!=o.query)return void console.log("didn't match",e,n.query);var t=(n.num_pages,n.num_results),a=n.page,i=n.page_size,s=n.results;o.haveFirstResults=!0,o.querying=!1,o.results.push.apply(o.results,s),o.results.sort(o.sortFn),o.page=1,o.start=a*i-i+1,o.end=Math.min(o.start+i-1,t),o.end=o.results.length,o.total=t,o.showResults=""!==e,o.resultsLoaded=o.results.length/t*100,t>o.results.length&&r(o)})},500)}]}}];var a={stars:function(e,n){return e.star_count<n.star_count?1:e.star_count===n.star_count?e.name<n.name?-1:1:-1},name:function(e,n){return e.name<n.name?-1:1}}},{"./template.html":19,lodash:"lodash"}],19:[function(e,n){n.exports='<div class="search">\n <input type="text" placeholder="Search Docker Hub For Containers..." ng-model="docker.query" ng-change="queryChanged($event)" autofocus>\n <span class="querying">\n <span class="indicator" ng-show="docker.querying">\n </span>\n <span class="close" ng-show="docker.query != \'\'" ng-click="docker.query = \'\'; queryChanged()" title="Close Search">X</span>\n </span>\n</div>\n<div ng-show="docker.haveFirstResults"\n class="display">\n <header>\n <div class="sort-by">\n <span class="text">Sort By:</span>\n <select ng-model="docker.sortBy" ng-change="sortBy()">\n <option value="stars">Stars</option>\n <option value="name">Name</option>\n </select>\n </div>\n <div class="title">Docker Hub Results</div>\n <div class="result-summary">\n <div class="progress-bar" style="width: {{docker.resultsLoaded}}%;"></div>\n <div class="summary"\n ng-show="docker.haveFirstResults">{{docker.end}} of {{docker.total}} Matches Retrieved</div>\n </div>\n </header>\n <div ng-show="docker.haveFirstResults"\n class="results">\n <div class="visible-results">\n <div ng-repeat="result in docker.results | limitTo: docker.showLimit"\n ng-class="{\'result\': true, \'selected\': selectedContainers[result.name]}"\n ng-click="selectContainer(result.name, !selectedContainers[result.name])">\n <div class="stars">\n <span class="star">\n <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" x="0px" y="0px" width="17px" height="16px" viewBox="6 6.4 17 16" style="enable-background:new 6 6.4 17 16;" xml:space="preserve">\n <polygon style="fill:#ff8;stroke:#939BA7;stroke-width:0.5723;stroke-miterlimit:10;" points="14.5,19.1 9.8,21.6 10.7,16.4 6.9,12.6 12.2,11.9 14.5,7.1 16.8,11.9 22.1,12.6 18.3,16.4 19.2,21.6 "/>\n </svg>\n </span>\n <span class="star-count">{{::result.star_count}}</span>\n </div>\n <div class="container-details">\n <span class="container-name">{{::result.name}}</span>\n <span class="container-description">{{::result.description}}</span>\n </div>\n <div class="size"\n ng-if="selectedContainers[result.name]"\n ng-click="$event.stopPropagation()">\n <select class="size-select">\n <option ng-repeat="size in availableSizes">{{size}}</option>\n </select>\n </div>\n <div class="container-select">\n <input type="checkbox"\n ng-model="selectedContainers[result.name]"\n ng-click="$event.stopPropagation()">\n </div>\n </div>\n </div>\n <div class="show-more"\n ng-show="docker.results.length > docker.showLimit"\n ng-click="docker.showLimit = docker.showLimit + docker.limitStep">\n Show next {{docker.limitStep}} matches...\n </div>\n </div>\n</div>'},{}],20:[function(e,n){"use strict";n.exports=function(){return{restrict:"E",template:e("./template.html"),controller:["$scope",function(){}]}}},{"./template.html":21}],21:[function(e,n){n.exports=""},{}],22:[function(e,n){"use strict";var t=e("lodash");n.exports=[function(){return{restrict:"E",template:e("./template.html"),scope:{provider:"="},link:function(){console.log("link")},controller:["$scope","storedCredentials",function(e,n){function a(){var n=!0;t.each(e.provider.credentials,function(e){0===e.length&&(n=!1)}),e.provider.hasCredentials=n}e.credentialsChanged=function(){t.each(e.provider.credentials,function(){e.provider.saveCredentials&&n.setCredentials(e.provider.name,e.provider.saveCredentials,e.provider.credentials)}),a()},e.handleSave=function(){e.provider.saveCredentials?n.setCredentials(e.provider.name,!0,e.provider.credentials):n.setCredentials(e.provider.name,!1),a()}}]}}]},{"./template.html":23,lodash:"lodash"}],23:[function(e,n){n.exports='<div class="prompt">\nPlease Enter Your {{provider.profile.name}} Credentials\n</div>\n<div class="collector">\n <label ng-repeat="(name, part) in provider.credentialSchema"\n class="part">\n <div class="label">\n <span class="name">{{::part.header}} <span class="help">What\'s This?</span></span>\n <span ng-if="part.link" class="create"><a href="{{::part.link}}" target="_blank">Create New</a></span>\n </div>\n\n <input type="text" ng-model="provider.credentials[name]" ng-change="credentialsChanged($event)">\n </label>\n\n <label class="save"\n title="Your credentials are NEVER transmitted to cloud-launcher or any party other than this provider.">\n <span class="save-header">Save In Local Storage</span>\n <input type="checkbox" ng-model="provider.saveCredentials" ng-change="handleSave($event)">\n </label>\n</div>'},{}],24:[function(e,n){"use strict";n.exports=function(){return{restrict:"E",template:e("./template.html"),controller:["$scope",function(e){e.showCredentialCollector={},e.selectLocation=function(n,t,a){e.$broadcast("locationModified",n,t,a.selected)}}]}}},{"./template.html":25}],25:[function(e,n){n.exports='<div ng-repeat="(name, provider) in providers" class="provider {{::name}}">\n <div class="header">\n <span class="help">?</span>\n <span class="name"><a href="{{::provider.referralUrl}}" target="_blank" title="{{::provider.referralTeaser}}">{{::provider.profile.name}} <span ng-if="provider.profile.brand" class="brand">| {{::provider.profile.brand}}</span></a></span>\n <span ng-class="{\'key\': true, \'has-credential\': provider.hasCredentials}"\n ng-if="!provider.profile.comingsoon"\n ng-click="showCredentialCollector[name] = !showCredentialCollector[name]"\n title="{{provider.profile.name + \' Credentials \' + (provider.hasCredentials ? \'Acquired\' : \'Needed\')}}">⚿</span>\n </div>\n <credential-collector ng-if="showCredentialCollector[name]" provider="provider">\n Credentials needed yo!\n </credential-collector>\n <!-- <div class="selections"> -->\n <div class="locations">\n <label ng-repeat="(name, location) in provider.profile.locations"\n ng-class="{\'location\': true, \'selected\': location.selected}">\n <input type="checkbox"\n ng-model="location.selected"\n ng-change="selectLocation($parent.name, name, location)"\n tabindex="{{provider.profile.comingsoon ? -1 : \'\'}}">\n <span class="text">\n <span class="location-vicinity">{{::location.vicinity}}</span> <span class="location-name">({{::name}})</span>\n </span>\n </label>\n <div ng-if="provider.profile.comingsoon" class="comingsoon">\n <span class="banner">Coming Soon!</span>\n </div>\n </div>\n <!-- </div> -->\n</div>'},{}],26:[function(e,n){n.exports="<description></description>\n<docker-search></docker-search>\n<providers></providers>"},{}],27:[function(e,n){"use strict";n.exports=function(){return{restrict:"E",template:e("./template.html"),controller:function(){}}}},{"./template.html":30}],28:[function(e,n){"use strict";n.exports=function(){return{restrict:"E",template:e("./template.html"),controller:["$scope",function(){}]}}},{"./template.html":29}],29:[function(e,n){n.exports='<span class="limits-header">API LIMITS</span>\n<div class="limits">\n <div ng-repeat="(providerName, status) in providerStatuses"\n class="status">\n <div ng-if="status && status.limit > 0"><span class="name">{{providerName}}</span> <span class="remaining">{{status.remaining}}</span> / <span class="limit">{{status.limit}}</span></div>\n </div>\n</div>'},{}],30:[function(e,n){n.exports='<div ng-class="{\'launch-status\': true, \'launch-error\': launchError}">\n <div class="status">{{launchStatus}}</div>\n <div class="log">\n <div ng-repeat="item in launchLog track by $index"\n class="log-item">\n <span class="message">{{::item.message}}</span><span ng-class="{\'log-status\': true, \'ok\': item.status === \'ok\', \'bad\': item.status === \'bad\'}">{{::item.status}}</span> <span>{{::item.additionalStatus}}</span>\n </div>\n <div ng-if="missingCredentials"\n class="missing-credentials">\n <div ng-repeat="(providerName, parts) in missingCredentials"\n class="missing-provider">\n <span class="header">Missing {{providers[providerName].profile.name}} Credentials!</span>\n <credential-collector provider="providers[providerName]"></credential-collector>\n <button ng-class="{\'proceed\': true, \'has-credentials\': providers[providerName].hasCredentials}"\n ng-disabled="!providers[providerName].hasCredentials"\n ng-click="launch()">{{providers[providerName].hasCredentials ? \'Proceed\' : \'Enter Credentials To Proceed\'}}</button>\n </div>\n </div>\n </div>\n <provider-statuses></provider-statuses>\n <div class="error">{{launchError}}</div>\n <button class="return" ng-click="returnToLaunchpad()">↓ Return to Launchpad ↓</button>\n</div>'},{}],31:[function(e,n){"use strict";var t=e("three");n.exports=function(e,n){function a(){e.style.color="#fff",e.style.font="13px/20px Arial, sans-serif";var n,a,r;k=e.offsetWidth||window.innerWidth,M=e.offsetHeight||window.innerHeight,w=new t.PerspectiveCamera(30,k/M,1,1e4),w.position.z=O,x=new t.Scene;var i=new t.SphereGeometry(200,40,30);n=L.earth,a=t.UniformsUtils.clone(n.uniforms),a.texture.value=t.ImageUtils.loadTexture(P),r=new t.ShaderMaterial({uniforms:a,vertexShader:n.vertexShader,fragmentShader:n.fragmentShader}),S=new t.Mesh(i,r),S.rotation.y=Math.PI,x.add(S),n=L.atmosphere,a=t.UniformsUtils.clone(n.uniforms),r=new t.ShaderMaterial({uniforms:a,vertexShader:n.vertexShader,fragmentShader:n.fragmentShader,side:t.BackSide,blending:t.AdditiveBlending,transparent:!0}),S=new t.Mesh(i,r),S.scale.set(1.1,1.1,1.1),x.add(S),i=new t.BoxGeometry(.75,.75,1),i.applyMatrix((new t.Matrix4).makeTranslation(0,0,-.5)),A=new t.Mesh(i),$=new t.WebGLRenderer({antialias:!0,alpha:!0}),$.setSize(k,M),$.domElement.style.position="absolute",e.appendChild($.domElement),e.addEventListener("mousedown",c,!1),e.addEventListener("wheel",v,!1),document.addEventListener("keydown",p,!1),window.addEventListener("resize",h,!1),e.addEventListener("mouseover",function(){E=!0},!1),e.addEventListener("mouseout",function(){E=!1},!1)}function r(e,n){var a,r,i,o,c,l,u;if(n.animated=n.animated||!1,this.is_animated=n.animated,n.format=n.format||"magnitude","magnitude"===n.format)l=3,u=function(e,n){return D(e[n+2])};else{if("legend"!==n.format)throw"error: format not supported: "+n.format;l=4,u=function(e,n){return D(e[n+3])}}if(n.animated){if(void 0===this._baseGeometry)for(this._baseGeometry=new t.Geometry,c=0;c<e.length;c+=l)a=e[c],r=e[c+1],o=u(e,c),i=0,s(a,r,i,o,this._baseGeometry);void 0===this._morphTargetId?this._morphTargetId=0:this._morphTargetId+=1,n.name=n.name||"morphTarget"+this._morphTargetId}var d=new t.Geometry;for(c=0;c<e.length;c+=l)a=e[c],r=e[c+1],o=u(e,c),i=e[c+2],i=200*i,s(a,r,i,o,d);n.animated?this._baseGeometry.morphTargets.push({name:n.name,vertices:d.vertices}):this._baseGeometry=d}function o(){if(void 0!==this._baseGeometry){if(this.is_animated===!1)this.points=new t.Mesh(this._baseGeometry,new t.MeshBasicMaterial({color:16777215,vertexColors:t.FaceColors,morphTargets:!1}));else{if(this._baseGeometry.morphTargets.length<8){console.log("t l",this._baseGeometry.morphTargets.length);var e=8-this._baseGeometry.morphTargets.length;console.log("padding",e);for(var n=0;e>=n;n++)console.log("padding",n),this._baseGeometry.morphTargets.push({name:"morphPadding"+n,vertices:this._baseGeometry.vertices})}this.points=new t.Mesh(this._baseGeometry,new t.MeshBasicMaterial({color:16777215,vertexColors:t.FaceColors,morphTargets:!0}))}x.add(this.points)}}function s(e,n,t,a,r){var i=(90-e)*Math.PI/180,o=(180-n)*Math.PI/180;A.position.x=200*Math.sin(i)*Math.cos(o),A.position.y=200*Math.cos(i),A.position.z=200*Math.sin(i)*Math.sin(o),A.lookAt(S.position),A.scale.z=Math.max(t,.1),A.updateMatrix();for(var s=0;s<A.geometry.faces.length;s++)A.geometry.faces[s].color=a;A.matrixAutoUpdate&&A.updateMatrix(),r.merge(A.geometry,A.matrix),g()}function c(n){n.preventDefault(),e.addEventListener("mousemove",l,!1),e.addEventListener("mouseup",u,!1),e.addEventListener("mouseout",d,!1),N.x=-n.clientX,N.y=n.clientY,q.x=z.x,q.y=z.y,e.style.cursor="move"}function l(e){F.x=-e.clientX,F.y=e.clientY;var n=O/1e3;z.x=q.x+.005*(F.x-N.x)*n,z.y=q.y+.005*(F.y-N.y)*n,z.y=z.y>V?V:z.y,z.y=z.y<-V?-V:z.y,g()}function u(){e.removeEventListener("mousemove",l,!1),e.removeEventListener("mouseup",u,!1),e.removeEventListener("mouseout",d,!1),e.style.cursor="auto"}function d(){e.removeEventListener("mousemove",l,!1),e.removeEventListener("mouseup",u,!1),e.removeEventListener("mouseout",d,!1)}function v(e){if(e.preventDefault(),E){var n=e.deltaY;Math.abs(n)<10&&(n*=20),f(.3*-n)}return!1}function p(e){switch(e.keyCode){case 38:f(100),e.preventDefault();break;case 40:f(-100),e.preventDefault()}}function h(){w.aspect=e.offsetWidth/e.offsetHeight,w.updateProjectionMatrix(),$.setSize(e.offsetWidth,e.offsetHeight),g()}function f(e){I-=e,I=I>2e3?2e3:I,I=350>I?350:I,g()}function m(){T&&(requestAnimationFrame(m),y())}function g(){_&&!T&&(T=!0,m())}function y(){var e=z.x-R.x,n=z.y-R.y,t=I-O;R.x+=.1*e,R.y+=.1*n,O+=.3*t,w.position.x=O*Math.sin(R.x)*Math.cos(R.y),w.position.y=O*Math.sin(R.y),w.position.z=O*Math.cos(R.x)*Math.cos(R.y),w.lookAt(S.position),$.render(x,w),Math.abs(e)<1e-4&&Math.abs(n)<1e-4&&Math.abs(t)<1e-4&&(T=!1)}function C(){_=!0,T=!0,m()}function b(){T=!1,document.removeEventListener("keydown",p),window.removeEventListener("resize",h)}n=n||{};var w,x,$,k,M,S,A,E,D=n.colorFn||function(e){var n=new t.Color;return n.setHSL(.6-.5*e,1,.5),n},P=n.imgFile||"/modules/cloud-launcher/lib/globe/world.12dacc0f.jpg",L={earth:{uniforms:{texture:{type:"t",value:null}},vertexShader:["varying vec3 vNormal;","varying vec2 vUv;","void main() {","gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );","vNormal = normalize( normalMatrix * normal );","vUv = uv;","}"].join("\n"),fragmentShader:["uniform sampler2D texture;","varying vec3 vNormal;","varying vec2 vUv;","void main() {","vec3 base = vec3(1.0, 2.0, 6.0);","vec3 diffuse = texture2D( texture, vUv ).xyz;","float intensity = 1.05 - dot( vNormal, vec3( 0.0, 0.0, 1.0 ) );","vec3 atmosphere = vec3( 0.2, 0.2, 0.8 ) * pow( intensity, 3.0 );","gl_FragColor = vec4( base * diffuse + atmosphere, 1.0 );","}"].join("\n")},atmosphere:{uniforms:{},vertexShader:["varying vec3 vNormal;","void main() {","vNormal = normalize( normalMatrix * normal );","gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );","}"].join("\n"),fragmentShader:["varying vec3 vNormal;","void main() {","float intensity = pow( 0.8 - dot( vNormal, vec3( 0, 0, 1.0 ) ), 12.0 );","gl_FragColor = vec4( 0.2, 0.2, 0.8, 0.5 ) * intensity;","}"].join("\n")}},T=!0,_=void 0,F={x:0,y:0},N={x:0,y:0},R={x:0,y:0},z={x:3*Math.PI/2,y:Math.PI/6},q={x:0,y:0},O=1e5,I=1300,V=Math.PI/2;return a(),this.__defineGetter__("time",function(){return this._time||0}),this.__defineSetter__("time",function(e){var n=[],t=this.points.morphTargetDictionary;for(var a in t)a.indexOf("morphPadding")<0&&n.push(t[a]);n.sort();var r=n.length-1,o=e*r+1,s=Math.floor(o);for(i=0;i<n.length;i++)this.points.morphTargetInfluences[n[i]]=0;var c=s-1,l=o-s;c>=0&&(this.points.morphTargetInfluences[c]=1-l),this.points.morphTargetInfluences[s]=l,this._time=e}),this.addData=r,this.createPoints=o,this.renderer=$,this.scene=x,this.resize=h,this.startAnimation=C,this.destroy=b,this}},{three:"three"}],32:[function(e,n){"use strict";var t=function(e,n){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e)){for(var t,a=[],r=e[Symbol.iterator]();!(t=r.next()).done&&(a.push(t.value),!n||a.length!==n););return a}throw new TypeError("Invalid attempt to destructure non-iterable instance")},a=e("hjson");n.exports=["$rootScope","$location","$http",function(e,n,r){e.$on("$locationChangeSuccess",function(){var i=n.path().match(/^\/config=(.*)$/);if(i&&i.length>0){var o=t(i,2),s=(o[0],o[1]),c=s.endsWith("json")?s:s+"/master/cloud.hjson";r.get("https://github-raw-cors-proxy.herokuapp.com/"+c).success(function(n,t,r,i){console.log(n,t,r,i),200===t&&e.setConfiguration(a.parse(n))
})}})}]},{hjson:"hjson"}],33:[function(e,n){"use strict";var t=e("launch-cloud-browser"),a=e("launch-cloud-browser-simulator");n.exports=["$location",function(e){console.log(e,e.search());var n={},r="?simulator"===window.location.search?a(n,function(){for(var e=arguments.length,n=Array(e),t=0;e>t;t++)n[t]=arguments[t];return console.log.apply(console,n)}):t(n,function(){for(var e=arguments.length,n=Array(e),t=0;e>t;t++)n[t]=arguments[t];return console.log.apply(console,n)});return r}]},{"launch-cloud-browser":"launch-cloud-browser","launch-cloud-browser-simulator":"launch-cloud-browser-simulator"}],34:[function(e,n){"use strict";var t=60*(10+5*Math.random())*1e3;n.exports=["$interval","$http","$rootScope","storedConfiguration",function(e,n,a,r){function i(){n.get("currentVersion?"+(new Date).getTime()).success(function(e){a.newVersionAvailable=!o&&clVersion!=e}).error(function(){})}var o=!1;a.ignoreNewVersion=function(){o=!0,a.newVersionAvailable=!1,e.cancel(s)},a.loadNewVersion=function(){var e=a.configuration;r.saveConfiguration(e),window.location.search="cacheBust"};var s=e(i,t)}]},{}],35:[function(e,n){"use strict";n.exports=["$interval","launchCloud",function(e,n){function t(n,a,o){function s(e){var n=r[e],t=n.api;t.listMachines().then(function(n){console.log("machines",n);var t=i[e];t&&t.callback&&o(e,n)})}var c=i[n];if(!c){var l=e(function(){return s(n)},a);return s(n),c=i[n]={interval:l,intervalTime:a,callback:o}}if(c.intervalTime==a)return c;if(!e.cancel(c.interval))throw new Error("Failed to cancel interval");delete c[n],t(n,a,o)}function a(n){var t=i[n];t&&e.cancel(t.interval)&&delete i[n]}var r=n.providers,i={};return{monitor:t,cancel:a}}]},{}],36:[function(e,n){"use strict";{var t=function(e){return e&&e.__esModule?e["default"]:e};t(e("lodash"))}n.exports=["$rootScope","$location",function(e){var n={launchpad:"launchpad",launchstatus:"launchstatus",clouds:"clouds"},t={current:n.launchpad,launchPadVisible:!0,launchStatusVisible:!1,cloudsVisible:!1};return e.returnToLaunchpad=function(){t.launching=!1,t.current=n.launchpad,t.launchStatusVisible=!1,t.cloudsVisible=!1},e.toggleClouds=function(){e.gotoStage(t.current===n.clouds?n.launchpad:n.clouds)},e.gotoStage=function(e){var a=t.current;if(e===n.launchpad)t.current=n.launchpad,t.launchPadVisible=!0,t.launchStatusVisible=!1,t.cloudsVisible=!1;else if(e===n.launchstatus)t.current=n.launchstatus,t.launchPadVisible=!0,t.launchStatusVisible=!0,t.cloudsVisible=!1;else{if(e!==n.clouds)throw new Error("Unknown stage: "+e);t.current=n.clouds,t.launchPadVisible=!0,t.launchStatusVisible=a===n.launchstatus,t.cloudsVisible=!0}t.cameFrom=a},e.$on("$locationChangeStart",function(e,n,t){console.log(e,n,t)}),{stage:t}}]},{lodash:"lodash"}],37:[function(e,n){"use strict";var t=function(e){return e&&e.__esModule?e["default"]:e},a=t(e("lodash"));n.exports=["localStorageService",function(e){function n(){return s}function t(n){s.push(n),e.set(o,s)}function r(n){var t=n.id,r=a.findIndex(s,function(e){return t===e.id});r>=0&&(s.splice(r,1),e.set(o,s))}function i(){e.set(o,s)}var o="clouds",s=e.get(o)||[];return{getClouds:n,addCloud:t,removeCloud:r,saveClouds:i}}]},{lodash:"lodash"}],38:[function(e,n){"use strict";n.exports=["localStorageService",function(e){function n(){return e.get(r)}function t(n){e.set(r,n)}function a(){e.set(r,void 0)}var r="savedConfiguration";return{getConfiguration:n,saveConfiguration:t,removeConfiguration:a}}]},{}],39:[function(e,n){"use strict";n.exports=["localStorageService",function(e){function n(n){return e.get(a(n))||{credentials:{}}}function t(n,t,r){var i=a(n);e.set(i,{saveCredentials:t,credentials:r})}function a(e){return"credentials."+e}return{getCredentials:n,setCredentials:t}}]},{}]},{},[1]);