Difference between revisions of "Team:Sydney Australia/Design"

Line 1: Line 1:
{{:Team:Sydney_Australia/Templates/NavBar}}
 
 
<html>
 
<html>
 
<head>
 
<head>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.6/angular.min.js"></script>
+
<script>!function(t,e,n){"use strict";function r(t,e){return e=e||Error,function(){var n,r,i=arguments[0],a="["+(t?t+":":"")+i+"] ",o=arguments[1],s=arguments;for(n=a+o.replace(/\{\d+\}/g,function(t){var e=+t.slice(1,-1);return e+2<s.length?de(s[e+2]):t}),n=n+"\nhttp://errors.angularjs.org/1.3.13/"+(t?t+"/":"")+i,r=2;r<arguments.length;r++)n=n+(2==r?"?":"&")+"p"+(r-2)+"="+encodeURIComponent(de(arguments[r]));return new e(n)}}function i(t){if(null==t||C(t))return!1;var e=t.length;return t.nodeType===gi&&e?!0:b(t)||ci(t)||0===e||"number"==typeof e&&e>0&&e-1 in t}function a(t,e,n){var r,o;if(t)if(k(t))for(r in t)"prototype"==r||"length"==r||"name"==r||t.hasOwnProperty&&!t.hasOwnProperty(r)||e.call(n,t[r],r,t);else if(ci(t)||i(t)){var s="object"!=typeof t;for(r=0,o=t.length;o>r;r++)(s||r in t)&&e.call(n,t[r],r,t)}else if(t.forEach&&t.forEach!==a)t.forEach(e,n,t);else for(r in t)t.hasOwnProperty(r)&&e.call(n,t[r],r,t);return t}function o(t){return Object.keys(t).sort()}function s(t,e,n){for(var r=o(t),i=0;i<r.length;i++)e.call(n,t[r[i]],r[i]);return r}function u(t){return function(e,n){t(n,e)}}function l(){return++ui}function c(t,e){e?t.$$hashKey=e:delete t.$$hashKey}function f(t){for(var e=t.$$hashKey,n=1,r=arguments.length;r>n;n++){var i=arguments[n];if(i)for(var a=Object.keys(i),o=0,s=a.length;s>o;o++){var u=a[o];t[u]=i[u]}}return c(t,e),t}function d(t){return parseInt(t,10)}function h(t,e){return f(Object.create(t),e)}function p(){}function $(t){return t}function m(t){return function(){return t}}function g(t){return"undefined"==typeof t}function v(t){return"undefined"!=typeof t}function y(t){return null!==t&&"object"==typeof t}function b(t){return"string"==typeof t}function w(t){return"number"==typeof t}function x(t){return"[object Date]"===ai.call(t)}function k(t){return"function"==typeof t}function S(t){return"[object RegExp]"===ai.call(t)}function C(t){return t&&t.window===t}function A(t){return t&&t.$evalAsync&&t.$watch}function O(t){return"[object File]"===ai.call(t)}function E(t){return"[object FormData]"===ai.call(t)}function j(t){return"[object Blob]"===ai.call(t)}function N(t){return"boolean"==typeof t}function T(t){return t&&k(t.then)}function M(t){return!(!t||!(t.nodeName||t.prop&&t.attr&&t.find))}function P(t){var e,n={},r=t.split(",");for(e=0;e<r.length;e++)n[r[e]]=!0;return n}function V(t){return Wr(t.nodeName||t[0]&&t[0].nodeName)}function q(t,e){var n=t.indexOf(e);return n>=0&&t.splice(n,1),e}function D(t,e,n,r){if(C(t)||A(t))throw oi("cpws","Can't copy! Making copies of Window or Scope instances is not supported.");if(e){if(t===e)throw oi("cpi","Can't copy! Source and destination are identical.");if(n=n||[],r=r||[],y(t)){var i=n.indexOf(t);if(-1!==i)return r[i];n.push(t),r.push(e)}var o;if(ci(t)){e.length=0;for(var s=0;s<t.length;s++)o=D(t[s],null,n,r),y(t[s])&&(n.push(t[s]),r.push(o)),e.push(o)}else{var u=e.$$hashKey;ci(e)?e.length=0:a(e,function(t,n){delete e[n]});for(var l in t)t.hasOwnProperty(l)&&(o=D(t[l],null,n,r),y(t[l])&&(n.push(t[l]),r.push(o)),e[l]=o);c(e,u)}}else if(e=t,t)if(ci(t))e=D(t,[],n,r);else if(x(t))e=new Date(t.getTime());else if(S(t))e=new RegExp(t.source,t.toString().match(/[^\/]*$/)[0]),e.lastIndex=t.lastIndex;else if(y(t)){var f=Object.create(Object.getPrototypeOf(t));e=D(t,f,n,r)}return e}function R(t,e){if(ci(t)){e=e||[];for(var n=0,r=t.length;r>n;n++)e[n]=t[n]}else if(y(t)){e=e||{};for(var i in t)("$"!==i.charAt(0)||"$"!==i.charAt(1))&&(e[i]=t[i])}return e||t}function I(t,e){if(t===e)return!0;if(null===t||null===e)return!1;if(t!==t&&e!==e)return!0;var r,i,a,o=typeof t,s=typeof e;if(o==s&&"object"==o){if(!ci(t)){if(x(t))return x(e)?I(t.getTime(),e.getTime()):!1;if(S(t)&&S(e))return t.toString()==e.toString();if(A(t)||A(e)||C(t)||C(e)||ci(e))return!1;a={};for(i in t)if("$"!==i.charAt(0)&&!k(t[i])){if(!I(t[i],e[i]))return!1;a[i]=!0}for(i in e)if(!a.hasOwnProperty(i)&&"$"!==i.charAt(0)&&e[i]!==n&&!k(e[i]))return!1;return!0}if(!ci(e))return!1;if((r=t.length)==e.length){for(i=0;r>i;i++)if(!I(t[i],e[i]))return!1;return!0}}return!1}function _(t,e,n){return t.concat(ni.call(e,n))}function U(t,e){return ni.call(t,e||0)}function L(t,e){var n=arguments.length>2?U(arguments,2):[];return!k(e)||e instanceof RegExp?e:n.length?function(){return arguments.length?e.apply(t,_(n,arguments,0)):e.apply(t,n)}:function(){return arguments.length?e.apply(t,arguments):e.call(t)}}function F(t,r){var i=r;return"string"==typeof t&&"$"===t.charAt(0)&&"$"===t.charAt(1)?i=n:C(r)?i="$WINDOW":r&&e===r?i="$DOCUMENT":A(r)&&(i="$SCOPE"),i}function H(t,e){return"undefined"==typeof t?n:(w(e)||(e=e?2:null),JSON.stringify(t,F,e))}function B(t){return b(t)?JSON.parse(t):t}function z(t){t=Qr(t).clone();try{t.empty()}catch(e){}var n=Qr("<div>").append(t).html();try{return t[0].nodeType===vi?Wr(n):n.match(/^(<[^>]+>)/)[1].replace(/^<([\w\-]+)/,function(t,e){return"<"+Wr(e)})}catch(e){return Wr(n)}}function G(t){try{return decodeURIComponent(t)}catch(e){}}function W(t){var e,n,r={};return a((t||"").split("&"),function(t){if(t&&(e=t.replace(/\+/g,"%20").split("="),n=G(e[0]),v(n))){var i=v(e[1])?G(e[1]):!0;Jr.call(r,n)?ci(r[n])?r[n].push(i):r[n]=[r[n],i]:r[n]=i}}),r}function J(t){var e=[];return a(t,function(t,n){ci(t)?a(t,function(t){e.push(Z(n,!0)+(t===!0?"":"="+Z(t,!0)))}):e.push(Z(n,!0)+(t===!0?"":"="+Z(t,!0)))}),e.length?e.join("&"):""}function Y(t){return Z(t,!0).replace(/%26/gi,"&").replace(/%3D/gi,"=").replace(/%2B/gi,"+")}function Z(t,e){return encodeURIComponent(t).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%3B/gi,";").replace(/%20/g,e?"%20":"+")}function K(t,e){var n,r,i=pi.length;for(t=Qr(t),r=0;i>r;++r)if(n=pi[r]+e,b(n=t.attr(n)))return n;return null}function X(t,e){var n,r,i={};a(pi,function(e){var i=e+"app";!n&&t.hasAttribute&&t.hasAttribute(i)&&(n=t,r=t.getAttribute(i))}),a(pi,function(e){var i,a=e+"app";!n&&(i=t.querySelector("["+a.replace(":","\\:")+"]"))&&(n=i,r=i.getAttribute(a))}),n&&(i.strictDi=null!==K(n,"strict-di"),e(n,r?[r]:[],i))}function Q(n,r,i){y(i)||(i={});var o={strictDi:!1};i=f(o,i);var s=function(){if(n=Qr(n),n.injector()){var t=n[0]===e?"document":z(n);throw oi("btstrpd","App Already Bootstrapped with this Element '{0}'",t.replace(/</,"&lt;").replace(/>/,"&gt;"))}r=r||[],r.unshift(["$provide",function(t){t.value("$rootElement",n)}]),i.debugInfoEnabled&&r.push(["$compileProvider",function(t){t.debugInfoEnabled(!0)}]),r.unshift("ng");var a=Be(r,i.strictDi);return a.invoke(["$rootScope","$rootElement","$compile","$injector",function(t,e,n,r){t.$apply(function(){e.data("$injector",r),n(e)(t)})}]),a},u=/^NG_ENABLE_DEBUG_INFO!/,l=/^NG_DEFER_BOOTSTRAP!/;return t&&u.test(t.name)&&(i.debugInfoEnabled=!0,t.name=t.name.replace(u,"")),t&&!l.test(t.name)?s():(t.name=t.name.replace(l,""),si.resumeBootstrap=function(t){return a(t,function(t){r.push(t)}),s()},k(si.resumeDeferredBootstrap)&&si.resumeDeferredBootstrap(),void 0)}function te(){t.name="NG_ENABLE_DEBUG_INFO!"+t.name,t.location.reload()}function ee(t){var e=si.element(t).injector();if(!e)throw oi("test","no injector found for element argument to getTestability");return e.get("$$testability")}function ne(t,e){return e=e||"_",t.replace($i,function(t,n){return(n?e:"")+t.toLowerCase()})}function re(){var e;mi||(ti=t.jQuery,ti&&ti.fn.on?(Qr=ti,f(ti.fn,{scope:Di.scope,isolateScope:Di.isolateScope,controller:Di.controller,injector:Di.injector,inheritedData:Di.inheritedData}),e=ti.cleanData,ti.cleanData=function(t){var n;if(li)li=!1;else for(var r,i=0;null!=(r=t[i]);i++)n=ti._data(r,"events"),n&&n.$destroy&&ti(r).triggerHandler("$destroy");e(t)}):Qr=be,si.element=Qr,mi=!0)}function ie(t,e,n){if(!t)throw oi("areq","Argument '{0}' is {1}",e||"?",n||"required");return t}function ae(t,e,n){return n&&ci(t)&&(t=t[t.length-1]),ie(k(t),e,"not a function, got "+(t&&"object"==typeof t?t.constructor.name||"Object":typeof t)),t}function oe(t,e){if("hasOwnProperty"===t)throw oi("badname","hasOwnProperty is not a valid {0} name",e)}function se(t,e,n){if(!e)return t;for(var r,i=e.split("."),a=t,o=i.length,s=0;o>s;s++)r=i[s],t&&(t=(a=t)[r]);return!n&&k(t)?L(a,t):t}function ue(t){var e=t[0],n=t[t.length-1],r=[e];do{if(e=e.nextSibling,!e)break;r.push(e)}while(e!==n);return Qr(r)}function le(){return Object.create(null)}function ce(t){function e(t,e,n){return t[e]||(t[e]=n())}var n=r("$injector"),i=r("ng"),a=e(t,"angular",Object);return a.$$minErr=a.$$minErr||r,e(a,"module",function(){var t={};return function(r,a,o){var s=function(t,e){if("hasOwnProperty"===t)throw i("badname","hasOwnProperty is not a valid {0} name",e)};return s(r,"module"),a&&t.hasOwnProperty(r)&&(t[r]=null),e(t,r,function(){function t(t,n,r,i){return i||(i=e),function(){return i[r||"push"]([t,n,arguments]),l}}if(!a)throw n("nomod","Module '{0}' is not available! You either misspelled the module name or forgot to load it. If registering a module ensure that you specify the dependencies as the second argument.",r);var e=[],i=[],s=[],u=t("$injector","invoke","push",i),l={_invokeQueue:e,_configBlocks:i,_runBlocks:s,requires:a,name:r,provider:t("$provide","provider"),factory:t("$provide","factory"),service:t("$provide","service"),value:t("$provide","value"),constant:t("$provide","constant","unshift"),animation:t("$animateProvider","register"),filter:t("$filterProvider","register"),controller:t("$controllerProvider","register"),directive:t("$compileProvider","directive"),config:u,run:function(t){return s.push(t),this}};return o&&u(o),l})}})}function fe(t){var e=[];return JSON.stringify(t,function(t,n){if(n=F(t,n),y(n)){if(e.indexOf(n)>=0)return"<<already seen>>";e.push(n)}return n})}function de(t){return"function"==typeof t?t.toString().replace(/ \{[\s\S]*$/,""):"undefined"==typeof t?"undefined":"string"!=typeof t?fe(t):t}function he(e){f(e,{bootstrap:Q,copy:D,extend:f,equals:I,element:Qr,forEach:a,injector:Be,noop:p,bind:L,toJson:H,fromJson:B,identity:$,isUndefined:g,isDefined:v,isString:b,isFunction:k,isObject:y,isNumber:w,isElement:M,isArray:ci,version:xi,isDate:x,lowercase:Wr,uppercase:Yr,callbacks:{counter:0},getTestability:ee,$$minErr:r,$$csp:hi,reloadWithDebugInfo:te}),ei=ce(t);try{ei("ngLocale")}catch(n){ei("ngLocale",[]).provider("$locale",gn)}ei("ng",["ngLocale"],["$provide",function(t){t.provider({$$sanitizeUri:Yn}),t.provider("$compile",Ke).directive({a:Ea,input:za,textarea:za,form:Pa,script:qo,select:Io,style:Uo,option:_o,ngBind:Ja,ngBindHtml:Za,ngBindTemplate:Ya,ngClass:Xa,ngClassEven:to,ngClassOdd:Qa,ngCloak:eo,ngController:no,ngForm:Va,ngHide:jo,ngIf:ao,ngInclude:oo,ngInit:uo,ngNonBindable:ko,ngPluralize:So,ngRepeat:Co,ngShow:Eo,ngStyle:No,ngSwitch:To,ngSwitchWhen:Mo,ngSwitchDefault:Po,ngOptions:Ro,ngTransclude:Vo,ngModel:bo,ngList:lo,ngChange:Ka,pattern:Fo,ngPattern:Fo,required:Lo,ngRequired:Lo,minlength:Bo,ngMinlength:Bo,maxlength:Ho,ngMaxlength:Ho,ngValue:Wa,ngModelOptions:xo}).directive({ngInclude:so}).directive(ja).directive(ro),t.provider({$anchorScroll:ze,$animate:Gi,$browser:Je,$cacheFactory:Ye,$controller:en,$document:nn,$exceptionHandler:rn,$filter:sr,$interpolate:$n,$interval:mn,$http:fn,$httpBackend:hn,$location:Tn,$log:Mn,$parse:Hn,$rootScope:Jn,$q:Bn,$$q:zn,$sce:Qn,$sceDelegate:Xn,$sniffer:tr,$templateCache:Ze,$templateRequest:er,$$testability:nr,$timeout:rr,$window:or,$$rAF:Wn,$$asyncCallback:Ge,$$jqLite:_e})}])}function pe(){return++Si}function $e(t){return t.replace(Oi,function(t,e,n,r){return r?n.toUpperCase():n}).replace(Ei,"Moz$1")}function me(t){return!Mi.test(t)}function ge(t){var e=t.nodeType;return e===gi||!e||e===bi}function ve(t,e){var n,r,i,o,s=e.createDocumentFragment(),u=[];if(me(t))u.push(e.createTextNode(t));else{for(n=n||s.appendChild(e.createElement("div")),r=(Pi.exec(t)||["",""])[1].toLowerCase(),i=qi[r]||qi._default,n.innerHTML=i[1]+t.replace(Vi,"<$1></$2>")+i[2],o=i[0];o--;)n=n.lastChild;u=_(u,n.childNodes),n=s.firstChild,n.textContent=""}return s.textContent="",s.innerHTML="",a(u,function(t){s.appendChild(t)}),s}function ye(t,n){n=n||e;var r;return(r=Ti.exec(t))?[n.createElement(r[1])]:(r=ve(t,n))?r.childNodes:[]}function be(t){if(t instanceof be)return t;var e;if(b(t)&&(t=fi(t),e=!0),!(this instanceof be)){if(e&&"<"!=t.charAt(0))throw Ni("nosel","Looking up elements via selectors is not supported by jqLite! See: http://docs.angularjs.org/api/angular.element");return new be(t)}e?Ne(this,ye(t)):Ne(this,t)}function we(t){return t.cloneNode(!0)}function xe(t,e){if(e||Se(t),t.querySelectorAll)for(var n=t.querySelectorAll("*"),r=0,i=n.length;i>r;r++)Se(n[r])}function ke(t,e,n,r){if(v(r))throw Ni("offargs","jqLite#off() does not support the `selector` argument");var i=Ce(t),o=i&&i.events,s=i&&i.handle;if(s)if(e)a(e.split(" "),function(e){if(v(n)){var r=o[e];if(q(r||[],n),r&&r.length>0)return}Ai(t,e,s),delete o[e]});else for(e in o)"$destroy"!==e&&Ai(t,e,s),delete o[e]}function Se(t,e){var r=t.ng339,i=r&&ki[r];if(i){if(e)return delete i.data[e],void 0;i.handle&&(i.events.$destroy&&i.handle({},"$destroy"),ke(t)),delete ki[r],t.ng339=n}}function Ce(t,e){var r=t.ng339,i=r&&ki[r];return e&&!i&&(t.ng339=r=pe(),i=ki[r]={events:{},data:{},handle:n}),i}function Ae(t,e,n){if(ge(t)){var r=v(n),i=!r&&e&&!y(e),a=!e,o=Ce(t,!i),s=o&&o.data;if(r)s[e]=n;else{if(a)return s;if(i)return s&&s[e];f(s,e)}}}function Oe(t,e){return t.getAttribute?(" "+(t.getAttribute("class")||"")+" ").replace(/[\n\t]/g," ").indexOf(" "+e+" ")>-1:!1}function Ee(t,e){e&&t.setAttribute&&a(e.split(" "),function(e){t.setAttribute("class",fi((" "+(t.getAttribute("class")||"")+" ").replace(/[\n\t]/g," ").replace(" "+fi(e)+" "," ")))})}function je(t,e){if(e&&t.setAttribute){var n=(" "+(t.getAttribute("class")||"")+" ").replace(/[\n\t]/g," ");a(e.split(" "),function(t){t=fi(t),-1===n.indexOf(" "+t+" ")&&(n+=t+" ")}),t.setAttribute("class",fi(n))}}function Ne(t,e){if(e)if(e.nodeType)t[t.length++]=e;else{var n=e.length;if("number"==typeof n&&e.window!==e){if(n)for(var r=0;n>r;r++)t[t.length++]=e[r]}else t[t.length++]=e}}function Te(t,e){return Me(t,"$"+(e||"ngController")+"Controller")}function Me(t,e,r){t.nodeType==bi&&(t=t.documentElement);for(var i=ci(e)?e:[e];t;){for(var a=0,o=i.length;o>a;a++)if((r=Qr.data(t,i[a]))!==n)return r;t=t.parentNode||t.nodeType===wi&&t.host}}function Pe(t){for(xe(t,!0);t.firstChild;)t.removeChild(t.firstChild)}function Ve(t,e){e||xe(t);var n=t.parentNode;n&&n.removeChild(t)}function qe(e,n){n=n||t,"complete"===n.document.readyState?n.setTimeout(e):Qr(n).on("load",e)}function De(t,e){var n=Ri[e.toLowerCase()];return n&&Ii[V(t)]&&n}function Re(t,e){var n=t.nodeName;return("INPUT"===n||"TEXTAREA"===n)&&_i[e]}function Ie(t,e){var n=function(n,r){n.isDefaultPrevented=function(){return n.defaultPrevented};var i=e[r||n.type],a=i?i.length:0;if(a){if(g(n.immediatePropagationStopped)){var o=n.stopImmediatePropagation;n.stopImmediatePropagation=function(){n.immediatePropagationStopped=!0,n.stopPropagation&&n.stopPropagation(),o&&o.call(n)}}n.isImmediatePropagationStopped=function(){return n.immediatePropagationStopped===!0},a>1&&(i=R(i));for(var s=0;a>s;s++)n.isImmediatePropagationStopped()||i[s].call(t,n)}};return n.elem=t,n}function _e(){this.$get=function(){return f(be,{hasClass:function(t,e){return t.attr&&(t=t[0]),Oe(t,e)},addClass:function(t,e){return t.attr&&(t=t[0]),je(t,e)},removeClass:function(t,e){return t.attr&&(t=t[0]),Ee(t,e)}})}}function Ue(t,e){var n=t&&t.$$hashKey;if(n)return"function"==typeof n&&(n=t.$$hashKey()),n;var r=typeof t;return n="function"==r||"object"==r&&null!==t?t.$$hashKey=r+":"+(e||l)():r+":"+t}function Le(t,e){if(e){var n=0;this.nextUid=function(){return++n}}a(t,this.put,this)}function Fe(t){var e=t.toString().replace(Hi,""),n=e.match(Ui);return n?"function("+(n[1]||"").replace(/[\s\r\n]+/," ")+")":"fn"}function He(t,e,n){var r,i,o,s;if("function"==typeof t){if(!(r=t.$inject)){if(r=[],t.length){if(e)throw b(n)&&n||(n=t.name||Fe(t)),Bi("strictdi","{0} is not using explicit annotation and cannot be invoked in strict mode",n);i=t.toString().replace(Hi,""),o=i.match(Ui),a(o[1].split(Li),function(t){t.replace(Fi,function(t,e,n){r.push(n)})})}t.$inject=r}}else ci(t)?(s=t.length-1,ae(t[s],"fn"),r=t.slice(0,s)):ae(t,"fn",!0);return r}function Be(t,e){function r(t){return function(e,n){return y(e)?(a(e,u(t)),void 0):t(e,n)}}function i(t,e){if(oe(t,"service"),(k(e)||ci(e))&&(e=A.instantiate(e)),!e.$get)throw Bi("pget","Provider '{0}' must define $get factory method.",t);return C[t+w]=e}function o(t,e){return function(){var n=E.invoke(e,this);if(g(n))throw Bi("undef","Provider '{0}' must return a value from $get factory method.",t);return n}}function s(t,e,n){return i(t,{$get:n!==!1?o(t,e):e})}function l(t,e){return s(t,["$injector",function(t){return t.instantiate(e)}])}function c(t,e){return s(t,m(e),!1)}function f(t,e){oe(t,"constant"),C[t]=e,O[t]=e}function d(t,e){var n=A.get(t+w),r=n.$get;n.$get=function(){var t=E.invoke(r,n);return E.invoke(e,null,{$delegate:t})}}function h(t){var e,n=[];return a(t,function(t){function r(t){var e,n;for(e=0,n=t.length;n>e;e++){var r=t[e],i=A.get(r[0]);i[r[1]].apply(i,r[2])}}if(!S.get(t)){S.put(t,!0);try{b(t)?(e=ei(t),n=n.concat(h(e.requires)).concat(e._runBlocks),r(e._invokeQueue),r(e._configBlocks)):k(t)?n.push(A.invoke(t)):ci(t)?n.push(A.invoke(t)):ae(t,"module")}catch(i){throw ci(t)&&(t=t[t.length-1]),i.message&&i.stack&&-1==i.stack.indexOf(i.message)&&(i=i.message+"\n"+i.stack),Bi("modulerr","Failed to instantiate module {0} due to:\n{1}",t,i.stack||i.message||i)}}}),n}function $(t,n){function r(e,r){if(t.hasOwnProperty(e)){if(t[e]===v)throw Bi("cdep","Circular dependency found: {0}",e+" <- "+x.join(" <- "));return t[e]}try{return x.unshift(e),t[e]=v,t[e]=n(e,r)}catch(i){throw t[e]===v&&delete t[e],i}finally{x.shift()}}function i(t,n,i,a){"string"==typeof i&&(a=i,i=null);var o,s,u,l=[],c=Be.$$annotate(t,e,a);for(s=0,o=c.length;o>s;s++){if(u=c[s],"string"!=typeof u)throw Bi("itkn","Incorrect injection token! Expected service name as string, got {0}",u);l.push(i&&i.hasOwnProperty(u)?i[u]:r(u,a))}return ci(t)&&(t=t[o]),t.apply(n,l)}function a(t,e,n){var r=Object.create((ci(t)?t[t.length-1]:t).prototype||null),a=i(t,r,e,n);return y(a)||k(a)?a:r}return{invoke:i,instantiate:a,get:r,annotate:Be.$$annotate,has:function(e){return C.hasOwnProperty(e+w)||t.hasOwnProperty(e)}}}e=e===!0;var v={},w="Provider",x=[],S=new Le([],!0),C={$provide:{provider:r(i),factory:r(s),service:r(l),value:r(c),constant:r(f),decorator:d}},A=C.$injector=$(C,function(t,e){throw si.isString(e)&&x.push(e),Bi("unpr","Unknown provider: {0}",x.join(" <- "))}),O={},E=O.$injector=$(O,function(t,e){var r=A.get(t+w,e);return E.invoke(r.$get,r,n,t)});return a(h(t),function(t){E.invoke(t||p)}),E}function ze(){var t=!0;this.disableAutoScrolling=function(){t=!1},this.$get=["$window","$location","$rootScope",function(e,n,r){function i(t){var e=null;return Array.prototype.some.call(t,function(t){return"a"===V(t)?(e=t,!0):void 0}),e}function a(){var t=s.yOffset;if(k(t))t=t();else if(M(t)){var n=t[0],r=e.getComputedStyle(n);t="fixed"!==r.position?0:n.getBoundingClientRect().bottom}else w(t)||(t=0);return t}function o(t){if(t){t.scrollIntoView();var n=a();if(n){var r=t.getBoundingClientRect().top;e.scrollBy(0,r-n)}}else e.scrollTo(0,0)}function s(){var t,e=n.hash();e?(t=u.getElementById(e))?o(t):(t=i(u.getElementsByName(e)))?o(t):"top"===e&&o(null):o(null)}var u=e.document;return t&&r.$watch(function(){return n.hash()},function(t,e){(t!==e||""!==t)&&qe(function(){r.$evalAsync(s)})}),s}]}function Ge(){this.$get=["$$rAF","$timeout",function(t,e){return t.supported?function(e){return t(e)}:function(t){return e(t,0,!1)}}]}function We(t,e,r,i){function o(t){try{t.apply(null,U(arguments,1))}finally{if(k--,0===k)for(;S.length;)try{S.pop()()}catch(e){r.error(e)}}}function s(t){var e=t.indexOf("#");return-1===e?"":t.substr(e+1)}function u(t,e){!function n(){a(A,function(t){t()}),C=e(n,t)}()}function l(){c(),f()}function c(){O=t.history.state,O=g(O)?null:O,I(O,V)&&(O=V),V=O}function f(){(j!==h.url()||E!==O)&&(j=h.url(),E=O,a(M,function(t){t(h.url(),O)}))}function d(t){try{return decodeURIComponent(t)}catch(e){return t}}var h=this,$=e[0],m=t.location,v=t.history,y=t.setTimeout,w=t.clearTimeout,x={};h.isMock=!1;var k=0,S=[];h.$$completeOutstandingRequest=o,h.$$incOutstandingRequestCount=function(){k++},h.notifyWhenNoOutstandingRequests=function(t){a(A,function(t){t()}),0===k?t():S.push(t)};var C,A=[];h.addPollFn=function(t){return g(C)&&u(100,y),A.push(t),t};var O,E,j=m.href,N=e.find("base"),T=null;c(),E=O,h.url=function(e,n,r){if(g(r)&&(r=null),m!==t.location&&(m=t.location),v!==t.history&&(v=t.history),e){var a=E===r;if(j===e&&(!i.history||a))return h;var o=j&&xn(j)===xn(e);return j=e,E=r,!i.history||o&&a?(o||(T=e),n?m.replace(e):o?m.hash=s(e):m.href=e):(v[n?"replaceState":"pushState"](r,"",e),c(),E=O),h}return T||m.href.replace(/%27/g,"'")},h.state=function(){return O};var M=[],P=!1,V=null;h.onUrlChange=function(e){return P||(i.history&&Qr(t).on("popstate",l),Qr(t).on("hashchange",l),P=!0),M.push(e),e},h.$$checkUrlChange=f,h.baseHref=function(){var t=N.attr("href");return t?t.replace(/^(https?\:)?\/\/[^\/]*/,""):""};var q={},D="",R=h.baseHref();h.cookies=function(t,e){var i,a,o,s,u;if(!t){if($.cookie!==D)for(D=$.cookie,a=D.split("; "),q={},s=0;s<a.length;s++)o=a[s],u=o.indexOf("="),u>0&&(t=d(o.substring(0,u)),q[t]===n&&(q[t]=d(o.substring(u+1))));return q}e===n?$.cookie=encodeURIComponent(t)+"=;path="+R+";expires=Thu, 01 Jan 1970 00:00:00 GMT":b(e)&&(i=($.cookie=encodeURIComponent(t)+"="+encodeURIComponent(e)+";path="+R).length+1,i>4096&&r.warn("Cookie '"+t+"' possibly not set or overflowed because it was too large ("+i+" > 4096 bytes)!"))},h.defer=function(t,e){var n;return k++,n=y(function(){delete x[n],o(t)},e||0),x[n]=!0,n},h.defer.cancel=function(t){return x[t]?(delete x[t],w(t),o(p),!0):!1}}function Je(){this.$get=["$window","$log","$sniffer","$document",function(t,e,n,r){return new We(t,r,e,n)}]}function Ye(){this.$get=function(){function t(t,n){function i(t){t!=d&&(h?h==t&&(h=t.n):h=t,a(t.n,t.p),a(t,d),d=t,d.n=null)}function a(t,e){t!=e&&(t&&(t.p=e),e&&(e.n=t))}if(t in e)throw r("$cacheFactory")("iid","CacheId '{0}' is already taken!",t);var o=0,s=f({},n,{id:t}),u={},l=n&&n.capacity||Number.MAX_VALUE,c={},d=null,h=null;return e[t]={put:function(t,e){if(l<Number.MAX_VALUE){var n=c[t]||(c[t]={key:t});i(n)}if(!g(e))return t in u||o++,u[t]=e,o>l&&this.remove(h.key),e},get:function(t){if(l<Number.MAX_VALUE){var e=c[t];if(!e)return;i(e)}return u[t]},remove:function(t){if(l<Number.MAX_VALUE){var e=c[t];if(!e)return;e==d&&(d=e.p),e==h&&(h=e.n),a(e.n,e.p),delete c[t]}delete u[t],o--},removeAll:function(){u={},o=0,c={},d=h=null},destroy:function(){u=null,s=null,c=null,delete e[t]},info:function(){return f({},s,{size:o})}}}var e={};return t.info=function(){var t={};return a(e,function(e,n){t[n]=e.info()}),t},t.get=function(t){return e[t]},t}}function Ze(){this.$get=["$cacheFactory",function(t){return t("templates")}]}function Ke(t,r){function i(t,e){var n=/^\s*([@&]|=(\*?))(\??)\s*(\w*)\s*$/,r={};return a(t,function(t,i){var a=t.match(n);if(!a)throw Wi("iscp","Invalid isolate scope definition for directive '{0}'. Definition: {... {1}: '{2}' ...}",e,i,t);r[i]={mode:a[1][0],collection:"*"===a[2],optional:"?"===a[3],attrName:a[4]||i}}),r}var o={},s="Directive",l=/^\s*directive\:\s*([\w\-]+)\s+(.*)$/,c=/(([\w\-]+)(?:\:([^;]+))?;?)/,d=P("ngSrc,ngSrcset,src,srcset"),g=/^(?:(\^\^?)?(\?)?(\^\^?)?)?/,w=/^(on[a-z]+|formaction)$/;this.directive=function S(e,n){return oe(e,"directive"),b(e)?(ie(n,"directiveFactory"),o.hasOwnProperty(e)||(o[e]=[],t.factory(e+s,["$injector","$exceptionHandler",function(t,n){var r=[];return a(o[e],function(a,o){try{var s=t.invoke(a);k(s)?s={compile:m(s)}:!s.compile&&s.link&&(s.compile=m(s.link)),s.priority=s.priority||0,s.index=o,s.name=s.name||e,s.require=s.require||s.controller&&s.name,s.restrict=s.restrict||"EA",y(s.scope)&&(s.$$isolateBindings=i(s.scope,s.name)),r.push(s)}catch(u){n(u)}}),r}])),o[e].push(n)):a(e,u(S)),this},this.aHrefSanitizationWhitelist=function(t){return v(t)?(r.aHrefSanitizationWhitelist(t),this):r.aHrefSanitizationWhitelist()},this.imgSrcSanitizationWhitelist=function(t){return v(t)?(r.imgSrcSanitizationWhitelist(t),this):r.imgSrcSanitizationWhitelist()};var x=!0;this.debugInfoEnabled=function(t){return v(t)?(x=t,this):x},this.$get=["$injector","$interpolate","$exceptionHandler","$templateRequest","$parse","$controller","$rootScope","$document","$sce","$animate","$$sanitizeUri",function(t,r,i,u,m,v,S,C,O,E,j){function N(t,e){try{t.addClass(e)}catch(n){}}function T(t,e,n,r,i){t instanceof Qr||(t=Qr(t)),a(t,function(e,n){e.nodeType==vi&&e.nodeValue.match(/\S+/)&&(t[n]=Qr(e).wrap("<span></span>").parent()[0])});var o=P(t,e,t,n,r,i);T.$$addScopeClass(t);var s=null;return function(e,n,r){ie(e,"scope"),r=r||{};var i=r.parentBoundTranscludeFn,a=r.transcludeControllers,u=r.futureParentElement;i&&i.$$boundTransclude&&(i=i.$$boundTransclude),s||(s=M(u));var l;if(l="html"!==s?Qr(X(s,Qr("<div>").append(t).html())):n?Di.clone.call(t):t,a)for(var c in a)l.data("$"+c+"Controller",a[c].instance);return T.$$addScopeInfo(l,e),n&&n(l,e),o&&o(e,l,l,i),l}}function M(t){var e=t&&t[0];return e?"foreignobject"!==V(e)&&e.toString().match(/SVG/)?"svg":"html":"html"}function P(t,e,r,i,a,o){function s(t,r,i,a){var o,s,u,l,c,f,d,h,m;if(p){var g=r.length;for(m=new Array(g),c=0;c<$.length;c+=3)d=$[c],m[d]=r[d]}else m=r;for(c=0,f=$.length;f>c;)u=m[$[c++]],o=$[c++],s=$[c++],o?(o.scope?(l=t.$new(),T.$$addScopeInfo(Qr(u),l)):l=t,h=o.transcludeOnThisElement?D(t,o.transclude,a,o.elementTranscludeOnThisElement):!o.templateOnThisElement&&a?a:!a&&e?D(t,e):null,o(s,l,u,i,h)):s&&s(t,u.childNodes,n,a)}for(var u,l,c,f,d,h,p,$=[],m=0;m<t.length;m++)u=new oe,l=R(t[m],[],u,0===m?i:n,a),c=l.length?F(l,t[m],u,e,r,null,[],[],o):null,c&&c.scope&&T.$$addScopeClass(u.$$element),d=c&&c.terminal||!(f=t[m].childNodes)||!f.length?null:P(f,c?(c.transcludeOnThisElement||!c.templateOnThisElement)&&c.transclude:e),(c||d)&&($.push(m,c,d),h=!0,p=p||c),o=null;return h?s:null}function D(t,e,n){var r=function(r,i,a,o,s){return r||(r=t.$new(!1,s),r.$$transcluded=!0),e(r,i,{parentBoundTranscludeFn:n,transcludeControllers:a,futureParentElement:o})};return r}function R(t,e,n,r,i){var a,o,s=t.nodeType,u=n.$attr;switch(s){case gi:B(e,Xe(V(t)),"E",r,i);for(var f,d,h,p,$,m,g=t.attributes,v=0,w=g&&g.length;w>v;v++){var x=!1,k=!1;f=g[v],d=f.name,$=fi(f.value),p=Xe(d),(m=fe.test(p))&&(d=d.replace(Ji,"").substr(8).replace(/_(.)/g,function(t,e){return e.toUpperCase()}));var S=p.replace(/(Start|End)$/,"");G(S)&&p===S+"Start"&&(x=d,k=d.substr(0,d.length-5)+"end",d=d.substr(0,d.length-6)),h=Xe(d.toLowerCase()),u[h]=d,(m||!n.hasOwnProperty(h))&&(n[h]=$,De(t,h)&&(n[h]=!0)),te(t,e,$,h,m),B(e,h,"A",r,i,x,k)}if(o=t.className,y(o)&&(o=o.animVal),b(o)&&""!==o)for(;a=c.exec(o);)h=Xe(a[2]),B(e,h,"C",r,i)&&(n[h]=fi(a[3])),o=o.substr(a.index+a[0].length);break;case vi:K(e,t.nodeValue);break;case yi:try{a=l.exec(t.nodeValue),a&&(h=Xe(a[1]),B(e,h,"M",r,i)&&(n[h]=fi(a[2])))}catch(C){}}return e.sort(Y),e}function _(t,e,n){var r=[],i=0;if(e&&t.hasAttribute&&t.hasAttribute(e)){do{if(!t)throw Wi("uterdir","Unterminated attribute, found '{0}' but no matching '{1}' found.",e,n);t.nodeType==gi&&(t.hasAttribute(e)&&i++,t.hasAttribute(n)&&i--),r.push(t),t=t.nextSibling}while(i>0)}else r.push(t);return Qr(r)}function L(t,e,n){return function(r,i,a,o,s){return i=_(i[0],e,n),t(r,i,a,o,s)}}function F(t,o,s,u,l,c,f,d,h){function p(t,e,n,r){t&&(n&&(t=L(t,n,r)),t.require=C.require,t.directiveName=O,(V===C||C.$$isolateScope)&&(t=re(t,{isolateScope:!0})),f.push(t)),e&&(n&&(e=L(e,n,r)),e.require=C.require,e.directiveName=O,(V===C||C.$$isolateScope)&&(e=re(e,{isolateScope:!0})),d.push(e))}function $(t,e,n,r){var i,o,s="data",u=!1,l=n;if(b(e)){if(o=e.match(g),e=e.substring(o[0].length),o[3]&&(o[1]?o[3]=null:o[1]=o[3]),"^"===o[1]?s="inheritedData":"^^"===o[1]&&(s="inheritedData",l=n.parent()),"?"===o[2]&&(u=!0),i=null,r&&"data"===s&&(i=r[e])&&(i=i.instance),i=i||l[s]("$"+e+"Controller"),!i&&!u)throw Wi("ctreq","Controller '{0}', required by directive '{1}', can't be found!",e,t);return i||null}return ci(e)&&(i=[],a(e,function(e){i.push($(t,e,n,r))})),i}function w(t,e,i,u,l){function c(t,e,r){var i;return A(t)||(r=e,e=t,t=n),G&&(i=w),r||(r=G?k.parent():k),l(t,e,i,r,j)}var h,p,g,y,b,w,x,k,C;if(o===i?(C=s,k=s.$$element):(k=Qr(i),C=new oe(k,s)),V&&(b=e.$new(!0)),l&&(x=c,x.$$boundTransclude=l),P&&(S={},w={},a(P,function(t){var n,r={$scope:t===V||t.$$isolateScope?b:e,$element:k,$attrs:C,$transclude:x};y=t.controller,"@"==y&&(y=C[t.name]),n=v(y,r,!0,t.controllerAs),w[t.name]=n,G||k.data("$"+t.name+"Controller",n.instance),S[t.name]=n})),V){T.$$addScopeInfo(k,b,!0,!(q&&(q===V||q===V.$$originalDirective))),T.$$addScopeClass(k,!0);var O=S&&S[V.name],E=b;O&&O.identifier&&V.bindToController===!0&&(E=O.instance),a(b.$$isolateBindings=V.$$isolateBindings,function(t,n){var i,a,o,s,u=t.attrName,l=t.optional,c=t.mode;switch(c){case"@":C.$observe(u,function(t){E[n]=t}),C.$$observers[u].$$scope=e,C[u]&&(E[n]=r(C[u])(e));break;case"=":if(l&&!C[u])return;a=m(C[u]),s=a.literal?I:function(t,e){return t===e||t!==t&&e!==e},o=a.assign||function(){throw i=E[n]=a(e),Wi("nonassign","Expression '{0}' used with directive '{1}' is non-assignable!",C[u],V.name)},i=E[n]=a(e);var f=function(t){return s(t,E[n])||(s(t,i)?o(e,t=E[n]):E[n]=t),i=t};f.$stateful=!0;var d;d=t.collection?e.$watchCollection(C[u],f):e.$watch(m(C[u],f),null,a.literal),b.$on("$destroy",d);break;case"&":a=m(C[u]),E[n]=function(t){return a(e,t)}}})}for(S&&(a(S,function(t){t()}),S=null),h=0,p=f.length;p>h;h++)g=f[h],ae(g,g.isolateScope?b:e,k,C,g.require&&$(g.directiveName,g.require,k,w),x);var j=e;for(V&&(V.template||null===V.templateUrl)&&(j=b),t&&t(j,i.childNodes,n,l),h=d.length-1;h>=0;h--)g=d[h],ae(g,g.isolateScope?b:e,k,C,g.require&&$(g.directiveName,g.require,k,w),x)}h=h||{};for(var x,S,C,O,E,j,N,M=-Number.MAX_VALUE,P=h.controllerDirectives,V=h.newIsolateScopeDirective,q=h.templateDirective,D=h.nonTlbTranscludeDirective,F=!1,B=!1,G=h.hasElementTranscludeDirective,Y=s.$$element=Qr(o),K=c,Q=u,te=0,ne=t.length;ne>te;te++){C=t[te];var ie=C.$$start,se=C.$$end;if(ie&&(Y=_(o,ie,se)),E=n,M>C.priority)break;if((N=C.scope)&&(C.templateUrl||(y(N)?(Z("new/isolated scope",V||x,C,Y),V=C):Z("new/isolated scope",V,C,Y)),x=x||C),O=C.name,!C.templateUrl&&C.controller&&(N=C.controller,P=P||{},Z("'"+O+"' controller",P[O],C,Y),P[O]=C),(N=C.transclude)&&(F=!0,C.$$tlb||(Z("transclusion",D,C,Y),D=C),"element"==N?(G=!0,M=C.priority,E=Y,Y=s.$$element=Qr(e.createComment(" "+O+": "+s[O]+" ")),o=Y[0],ee(l,U(E),o),Q=T(E,u,M,K&&K.name,{nonTlbTranscludeDirective:D})):(E=Qr(we(o)).contents(),Y.empty(),Q=T(E,u))),C.template)if(B=!0,Z("template",q,C,Y),q=C,N=k(C.template)?C.template(Y,s):C.template,N=ce(N),C.replace){if(K=C,E=me(N)?[]:tn(X(C.templateNamespace,fi(N))),o=E[0],1!=E.length||o.nodeType!==gi)throw Wi("tplrt","Template for directive '{0}' must have exactly one root element. {1}",O,"");ee(l,Y,o);var ue={$attr:{}},le=R(o,[],ue),fe=t.splice(te+1,t.length-(te+1));V&&H(le),t=t.concat(le).concat(fe),W(s,ue),ne=t.length}else Y.html(N);if(C.templateUrl)B=!0,Z("template",q,C,Y),q=C,C.replace&&(K=C),w=J(t.splice(te,t.length-te),Y,s,l,F&&Q,f,d,{controllerDirectives:P,newIsolateScopeDirective:V,templateDirective:q,nonTlbTranscludeDirective:D}),ne=t.length;else if(C.compile)try{j=C.compile(Y,s,Q),k(j)?p(null,j,ie,se):j&&p(j.pre,j.post,ie,se)}catch(de){i(de,z(Y))}C.terminal&&(w.terminal=!0,M=Math.max(M,C.priority))}return w.scope=x&&x.scope===!0,w.transcludeOnThisElement=F,w.elementTranscludeOnThisElement=G,w.templateOnThisElement=B,w.transclude=Q,h.hasElementTranscludeDirective=G,w}function H(t){for(var e=0,n=t.length;n>e;e++)t[e]=h(t[e],{$$isolateScope:!0})}function B(e,r,a,u,l,c,f){if(r===l)return null;var d=null;if(o.hasOwnProperty(r))for(var p,$=t.get(r+s),m=0,g=$.length;g>m;m++)try{p=$[m],(u===n||u>p.priority)&&-1!=p.restrict.indexOf(a)&&(c&&(p=h(p,{$$start:c,$$end:f})),e.push(p),d=p)
 +
}catch(v){i(v)}return d}function G(e){if(o.hasOwnProperty(e))for(var n,r=t.get(e+s),i=0,a=r.length;a>i;i++)if(n=r[i],n.multiElement)return!0;return!1}function W(t,e){var n=e.$attr,r=t.$attr,i=t.$$element;a(t,function(r,i){"$"!=i.charAt(0)&&(e[i]&&e[i]!==r&&(r+=("style"===i?";":" ")+e[i]),t.$set(i,r,!0,n[i]))}),a(e,function(e,a){"class"==a?(N(i,e),t["class"]=(t["class"]?t["class"]+" ":"")+e):"style"==a?(i.attr("style",i.attr("style")+";"+e),t.style=(t.style?t.style+";":"")+e):"$"==a.charAt(0)||t.hasOwnProperty(a)||(t[a]=e,r[a]=n[a])})}function J(t,e,n,r,i,o,s,l){var c,f,d=[],p=e[0],$=t.shift(),m=h($,{templateUrl:null,transclude:null,replace:null,$$originalDirective:$}),g=k($.templateUrl)?$.templateUrl(e,n):$.templateUrl,v=$.templateNamespace;return e.empty(),u(O.getTrustedResourceUrl(g)).then(function(u){var h,b,w,x;if(u=ce(u),$.replace){if(w=me(u)?[]:tn(X(v,fi(u))),h=w[0],1!=w.length||h.nodeType!==gi)throw Wi("tplrt","Template for directive '{0}' must have exactly one root element. {1}",$.name,g);b={$attr:{}},ee(r,e,h);var k=R(h,[],b);y($.scope)&&H(k),t=k.concat(t),W(n,b)}else h=p,e.html(u);for(t.unshift(m),c=F(t,h,n,i,e,$,o,s,l),a(r,function(t,n){t==h&&(r[n]=e[0])}),f=P(e[0].childNodes,i);d.length;){var S=d.shift(),C=d.shift(),A=d.shift(),O=d.shift(),E=e[0];if(!S.$$destroyed){if(C!==p){var j=C.className;l.hasElementTranscludeDirective&&$.replace||(E=we(h)),ee(A,Qr(C),E),N(Qr(E),j)}x=c.transcludeOnThisElement?D(S,c.transclude,O):O,c(f,S,E,r,x)}}d=null}),function(t,e,n,r,i){var a=i;e.$$destroyed||(d?d.push(e,n,r,a):(c.transcludeOnThisElement&&(a=D(e,c.transclude,i)),c(f,e,n,r,a)))}}function Y(t,e){var n=e.priority-t.priority;return 0!==n?n:t.name!==e.name?t.name<e.name?-1:1:t.index-e.index}function Z(t,e,n,r){if(e)throw Wi("multidir","Multiple directives [{0}, {1}] asking for {2} on: {3}",e.name,n.name,t,z(r))}function K(t,e){var n=r(e,!0);n&&t.push({priority:0,compile:function(t){var e=t.parent(),r=!!e.length;return r&&T.$$addBindingClass(e),function(t,e){var i=e.parent();r||T.$$addBindingClass(i),T.$$addBindingInfo(i,n.expressions),t.$watch(n,function(t){e[0].nodeValue=t})}}})}function X(t,n){switch(t=Wr(t||"html")){case"svg":case"math":var r=e.createElement("div");return r.innerHTML="<"+t+">"+n+"</"+t+">",r.childNodes[0].childNodes;default:return n}}function Q(t,e){if("srcdoc"==e)return O.HTML;var n=V(t);return"xlinkHref"==e||"form"==n&&"action"==e||"img"!=n&&("src"==e||"ngSrc"==e)?O.RESOURCE_URL:void 0}function te(t,e,n,i,a){var o=Q(t,i);a=d[i]||a;var s=r(n,!0,o,a);if(s){if("multiple"===i&&"select"===V(t))throw Wi("selmulti","Binding to the 'multiple' attribute is not supported. Element: {0}",z(t));e.push({priority:100,compile:function(){return{pre:function(t,e,u){var l=u.$$observers||(u.$$observers={});if(w.test(i))throw Wi("nodomevents","Interpolations for HTML DOM event attributes are disallowed.  Please use the ng- versions (such as ng-click instead of onclick) instead.");var c=u[i];c!==n&&(s=c&&r(c,!0,o,a),n=c),s&&(u[i]=s(t),(l[i]||(l[i]=[])).$$inter=!0,(u.$$observers&&u.$$observers[i].$$scope||t).$watch(s,function(t,e){"class"===i&&t!=e?u.$updateClass(t,e):u.$set(i,t)}))}}}})}}function ee(t,n,r){var i,a,o=n[0],s=n.length,u=o.parentNode;if(t)for(i=0,a=t.length;a>i;i++)if(t[i]==o){t[i++]=r;for(var l=i,c=l+s-1,f=t.length;f>l;l++,c++)f>c?t[l]=t[c]:delete t[l];t.length-=s-1,t.context===o&&(t.context=r);break}u&&u.replaceChild(r,o);var d=e.createDocumentFragment();d.appendChild(o),Qr(r).data(Qr(o).data()),ti?(li=!0,ti.cleanData([o])):delete Qr.cache[o[Qr.expando]];for(var h=1,p=n.length;p>h;h++){var $=n[h];Qr($).remove(),d.appendChild($),delete n[h]}n[0]=r,n.length=1}function re(t,e){return f(function(){return t.apply(null,arguments)},t,e)}function ae(t,e,n,r,a,o){try{t(e,n,r,a,o)}catch(s){i(s,z(n))}}var oe=function(t,e){if(e){var n,r,i,a=Object.keys(e);for(n=0,r=a.length;r>n;n++)i=a[n],this[i]=e[i]}else this.$attr={};this.$$element=t};oe.prototype={$normalize:Xe,$addClass:function(t){t&&t.length>0&&E.addClass(this.$$element,t)},$removeClass:function(t){t&&t.length>0&&E.removeClass(this.$$element,t)},$updateClass:function(t,e){var n=Qe(t,e);n&&n.length&&E.addClass(this.$$element,n);var r=Qe(e,t);r&&r.length&&E.removeClass(this.$$element,r)},$set:function(t,e,r,o){var s,u=this.$$element[0],l=De(u,t),c=Re(u,t),f=t;if(l?(this.$$element.prop(t,e),o=l):c&&(this[c]=e,f=c),this[t]=e,o?this.$attr[t]=o:(o=this.$attr[t],o||(this.$attr[t]=o=ne(t,"-"))),s=V(this.$$element),"a"===s&&"href"===t||"img"===s&&"src"===t)this[t]=e=j(e,"src"===t);else if("img"===s&&"srcset"===t){for(var d="",h=fi(e),p=/(\s+\d+x\s*,|\s+\d+w\s*,|\s+,|,\s+)/,$=/\s/.test(h)?p:/(,)/,m=h.split($),g=Math.floor(m.length/2),v=0;g>v;v++){var y=2*v;d+=j(fi(m[y]),!0),d+=" "+fi(m[y+1])}var b=fi(m[2*v]).split(/\s/);d+=j(fi(b[0]),!0),2===b.length&&(d+=" "+fi(b[1])),this[t]=e=d}r!==!1&&(null===e||e===n?this.$$element.removeAttr(o):this.$$element.attr(o,e));var w=this.$$observers;w&&a(w[f],function(t){try{t(e)}catch(n){i(n)}})},$observe:function(t,e){var n=this,r=n.$$observers||(n.$$observers=le()),i=r[t]||(r[t]=[]);return i.push(e),S.$evalAsync(function(){!i.$$inter&&n.hasOwnProperty(t)&&e(n[t])}),function(){q(i,e)}}};var se=r.startSymbol(),ue=r.endSymbol(),ce="{{"==se||"}}"==ue?$:function(t){return t.replace(/\{\{/g,se).replace(/}}/g,ue)},fe=/^ngAttr[A-Z]/;return T.$$addBindingInfo=x?function(t,e){var n=t.data("$binding")||[];ci(e)?n=n.concat(e):n.push(e),t.data("$binding",n)}:p,T.$$addBindingClass=x?function(t){N(t,"ng-binding")}:p,T.$$addScopeInfo=x?function(t,e,n,r){var i=n?r?"$isolateScopeNoTemplate":"$isolateScope":"$scope";t.data(i,e)}:p,T.$$addScopeClass=x?function(t,e){N(t,e?"ng-isolate-scope":"ng-scope")}:p,T}]}function Xe(t){return $e(t.replace(Ji,""))}function Qe(t,e){var n="",r=t.split(/\s+/),i=e.split(/\s+/);t:for(var a=0;a<r.length;a++){for(var o=r[a],s=0;s<i.length;s++)if(o==i[s])continue t;n+=(n.length>0?" ":"")+o}return n}function tn(t){t=Qr(t);var e=t.length;if(1>=e)return t;for(;e--;){var n=t[e];n.nodeType===yi&&ri.call(t,e,1)}return t}function en(){var t={},e=!1,i=/^(\S+)(\s+as\s+(\w+))?$/;this.register=function(e,n){oe(e,"controller"),y(e)?f(t,e):t[e]=n},this.allowGlobals=function(){e=!0},this.$get=["$injector","$window",function(a,o){function s(t,e,n,i){if(!t||!y(t.$scope))throw r("$controller")("noscp","Cannot export controller '{0}' as '{1}'! No $scope object provided via `locals`.",i,e);t.$scope[e]=n}return function(r,u,l,c){var d,h,p,$;if(l=l===!0,c&&b(c)&&($=c),b(r)){if(h=r.match(i),!h)throw Yi("ctrlfmt","Badly formed controller string '{0}'. Must match `__name__ as __id__` or `__name__`.",r);p=h[1],$=$||h[3],r=t.hasOwnProperty(p)?t[p]:se(u.$scope,p,!0)||(e?se(o,p,!0):n),ae(r,p,!0)}if(l){var m=(ci(r)?r[r.length-1]:r).prototype;return d=Object.create(m||null),$&&s(u,$,d,p||r.name),f(function(){return a.invoke(r,d,u,p),d},{instance:d,identifier:$})}return d=a.instantiate(r,u,p),$&&s(u,$,d,p||r.name),d}}]}function nn(){this.$get=["$window",function(t){return Qr(t.document)}]}function rn(){this.$get=["$log",function(t){return function(){t.error.apply(t,arguments)}}]}function an(t,e){if(b(t)){var n=t.replace(ta,"").trim();if(n){var r=e("Content-Type");(r&&0===r.indexOf(Zi)||on(n))&&(t=B(n))}}return t}function on(t){var e=t.match(Xi);return e&&Qi[e[0]].test(t)}function sn(t){var e,n,r,i=le();return t?(a(t.split("\n"),function(t){r=t.indexOf(":"),e=Wr(fi(t.substr(0,r))),n=fi(t.substr(r+1)),e&&(i[e]=i[e]?i[e]+", "+n:n)}),i):i}function un(t){var e=y(t)?t:n;return function(n){if(e||(e=sn(t)),n){var r=e[Wr(n)];return void 0===r&&(r=null),r}return e}}function ln(t,e,n,r){return k(r)?r(t,e,n):(a(r,function(r){t=r(t,e,n)}),t)}function cn(t){return t>=200&&300>t}function fn(){var t=this.defaults={transformResponse:[an],transformRequest:[function(t){return!y(t)||O(t)||j(t)||E(t)?t:H(t)}],headers:{common:{Accept:"application/json, text/plain, */*"},post:R(Ki),put:R(Ki),patch:R(Ki)},xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN"},e=!1;this.useApplyAsync=function(t){return v(t)?(e=!!t,this):e};var i=this.interceptors=[];this.$get=["$httpBackend","$browser","$cacheFactory","$rootScope","$q","$injector",function(o,u,l,c,d,h){function p(e){function i(t){var e=f({},t);return e.data=t.data?ln(t.data,t.headers,t.status,u.transformResponse):t.data,cn(t.status)?e:d.reject(e)}function o(t){var e,n={};return a(t,function(t,r){k(t)?(e=t(),null!=e&&(n[r]=e)):n[r]=t}),n}function s(e){var n,r,i,a=t.headers,s=f({},e.headers);a=f({},a.common,a[Wr(e.method)]);t:for(n in a){r=Wr(n);for(i in s)if(Wr(i)===r)continue t;s[n]=a[n]}return o(s)}if(!si.isObject(e))throw r("$http")("badreq","Http request configuration must be an object.  Received: {0}",e);var u=f({method:"get",transformRequest:t.transformRequest,transformResponse:t.transformResponse},e);u.headers=s(e),u.method=Yr(u.method);var l=function(e){var r=e.headers,o=ln(e.data,un(r),n,e.transformRequest);return g(o)&&a(r,function(t,e){"content-type"===Wr(e)&&delete r[e]}),g(e.withCredentials)&&!g(t.withCredentials)&&(e.withCredentials=t.withCredentials),w(e,o).then(i,i)},c=[l,n],h=d.when(u);for(a(A,function(t){(t.request||t.requestError)&&c.unshift(t.request,t.requestError),(t.response||t.responseError)&&c.push(t.response,t.responseError)});c.length;){var p=c.shift(),$=c.shift();h=h.then(p,$)}return h.success=function(t){return h.then(function(e){t(e.data,e.status,e.headers,u)}),h},h.error=function(t){return h.then(null,function(e){t(e.data,e.status,e.headers,u)}),h},h}function $(){a(arguments,function(t){p[t]=function(e,n){return p(f(n||{},{method:t,url:e}))}})}function m(){a(arguments,function(t){p[t]=function(e,n,r){return p(f(r||{},{method:t,url:e,data:n}))}})}function w(r,i){function a(t,n,r,i){function a(){s(n,t,r,i)}h&&(cn(t)?h.put(x,[t,n,sn(r),i]):h.remove(x)),e?c.$applyAsync(a):(a(),c.$$phase||c.$apply())}function s(t,e,n,i){e=Math.max(e,0),(cn(e)?m.resolve:m.reject)({data:t,status:e,headers:un(n),config:r,statusText:i})}function l(t){s(t.data,t.status,R(t.headers()),t.statusText)}function f(){var t=p.pendingRequests.indexOf(r);-1!==t&&p.pendingRequests.splice(t,1)}var h,$,m=d.defer(),b=m.promise,w=r.headers,x=S(r.url,r.params);if(p.pendingRequests.push(r),b.then(f,f),!r.cache&&!t.cache||r.cache===!1||"GET"!==r.method&&"JSONP"!==r.method||(h=y(r.cache)?r.cache:y(t.cache)?t.cache:C),h&&($=h.get(x),v($)?T($)?$.then(l,l):ci($)?s($[1],$[0],R($[2]),$[3]):s($,200,{},"OK"):h.put(x,b)),g($)){var k=ar(r.url)?u.cookies()[r.xsrfCookieName||t.xsrfCookieName]:n;k&&(w[r.xsrfHeaderName||t.xsrfHeaderName]=k),o(r.method,x,i,a,w,r.timeout,r.withCredentials,r.responseType)}return b}function S(t,e){if(!e)return t;var n=[];return s(e,function(t,e){null===t||g(t)||(ci(t)||(t=[t]),a(t,function(t){y(t)&&(t=x(t)?t.toISOString():H(t)),n.push(Z(e)+"="+Z(t))}))}),n.length>0&&(t+=(-1==t.indexOf("?")?"?":"&")+n.join("&")),t}var C=l("$http"),A=[];return a(i,function(t){A.unshift(b(t)?h.get(t):h.invoke(t))}),p.pendingRequests=[],$("get","delete","head","jsonp"),m("post","put","patch"),p.defaults=t,p}]}function dn(){return new t.XMLHttpRequest}function hn(){this.$get=["$browser","$window","$document",function(t,e,n){return pn(t,dn,t.defer,e.angular.callbacks,n[0])}]}function pn(t,e,r,i,o){function s(t,e,n){var r=o.createElement("script"),a=null;return r.type="text/javascript",r.src=t,r.async=!0,a=function(t){Ai(r,"load",a),Ai(r,"error",a),o.body.removeChild(r),r=null;var s=-1,u="unknown";t&&("load"!==t.type||i[e].called||(t={type:"error"}),u=t.type,s="error"===t.type?404:200),n&&n(s,u)},Ci(r,"load",a),Ci(r,"error",a),o.body.appendChild(r),a}return function(o,u,l,c,f,d,h,$){function m(){b&&b(),w&&w.abort()}function g(e,i,a,o,s){S!==n&&r.cancel(S),b=w=null,e(i,a,o,s),t.$$completeOutstandingRequest(p)}if(t.$$incOutstandingRequestCount(),u=u||t.url(),"jsonp"==Wr(o)){var y="_"+(i.counter++).toString(36);i[y]=function(t){i[y].data=t,i[y].called=!0};var b=s(u.replace("JSON_CALLBACK","angular.callbacks."+y),y,function(t,e){g(c,t,i[y].data,"",e),i[y]=p})}else{var w=e();w.open(o,u,!0),a(f,function(t,e){v(t)&&w.setRequestHeader(e,t)}),w.onload=function(){var t=w.statusText||"",e="response"in w?w.response:w.responseText,n=1223===w.status?204:w.status;0===n&&(n=e?200:"file"==ir(u).protocol?404:0),g(c,n,e,w.getAllResponseHeaders(),t)};var x=function(){g(c,-1,null,null,"")};if(w.onerror=x,w.onabort=x,h&&(w.withCredentials=!0),$)try{w.responseType=$}catch(k){if("json"!==$)throw k}w.send(l||null)}if(d>0)var S=r(m,d);else T(d)&&d.then(m)}}function $n(){var t="{{",e="}}";this.startSymbol=function(e){return e?(t=e,this):t},this.endSymbol=function(t){return t?(e=t,this):e},this.$get=["$parse","$exceptionHandler","$sce",function(n,r,i){function a(t){return"\\\\\\"+t}function o(a,o,d,h){function p(n){return n.replace(l,t).replace(c,e)}function $(t){try{return t=j(t),h&&!v(t)?t:N(t)}catch(e){var n=ea("interr","Can't interpolate: {0}\n{1}",a,e.toString());r(n)}}h=!!h;for(var m,y,b,w=0,x=[],S=[],C=a.length,A=[],O=[];C>w;){if(-1==(m=a.indexOf(t,w))||-1==(y=a.indexOf(e,m+s))){w!==C&&A.push(p(a.substring(w)));break}w!==m&&A.push(p(a.substring(w,m))),b=a.substring(m+s,y),x.push(b),S.push(n(b,$)),w=y+u,O.push(A.length),A.push("")}if(d&&A.length>1)throw ea("noconcat","Error while interpolating: {0}\nStrict Contextual Escaping disallows interpolations that concatenate multiple expressions when a trusted value is required.  See http://docs.angularjs.org/api/ng.$sce",a);if(!o||x.length){var E=function(t){for(var e=0,n=x.length;n>e;e++){if(h&&g(t[e]))return;A[O[e]]=t[e]}return A.join("")},j=function(t){return d?i.getTrusted(d,t):i.valueOf(t)},N=function(t){if(null==t)return"";switch(typeof t){case"string":break;case"number":t=""+t;break;default:t=H(t)}return t};return f(function(t){var e=0,n=x.length,i=new Array(n);try{for(;n>e;e++)i[e]=S[e](t);return E(i)}catch(o){var s=ea("interr","Can't interpolate: {0}\n{1}",a,o.toString());r(s)}},{exp:a,expressions:x,$$watchDelegate:function(t,e,n){var r;return t.$watchGroup(S,function(n,i){var a=E(n);k(e)&&e.call(this,a,n!==i?r:a,t),r=a},n)}})}}var s=t.length,u=e.length,l=new RegExp(t.replace(/./g,a),"g"),c=new RegExp(e.replace(/./g,a),"g");return o.startSymbol=function(){return t},o.endSymbol=function(){return e},o}]}function mn(){this.$get=["$rootScope","$window","$q","$$q",function(t,e,n,r){function i(i,o,s,u){var l=e.setInterval,c=e.clearInterval,f=0,d=v(u)&&!u,h=(d?r:n).defer(),p=h.promise;return s=v(s)?s:0,p.then(null,null,i),p.$$intervalId=l(function(){h.notify(f++),s>0&&f>=s&&(h.resolve(f),c(p.$$intervalId),delete a[p.$$intervalId]),d||t.$apply()},o),a[p.$$intervalId]=h,p}var a={};return i.cancel=function(t){return t&&t.$$intervalId in a?(a[t.$$intervalId].reject("canceled"),e.clearInterval(t.$$intervalId),delete a[t.$$intervalId],!0):!1},i}]}function gn(){this.$get=function(){return{id:"en-us",NUMBER_FORMATS:{DECIMAL_SEP:".",GROUP_SEP:",",PATTERNS:[{minInt:1,minFrac:0,maxFrac:3,posPre:"",posSuf:"",negPre:"-",negSuf:"",gSize:3,lgSize:3},{minInt:1,minFrac:2,maxFrac:2,posPre:"¤",posSuf:"",negPre:"(¤",negSuf:")",gSize:3,lgSize:3}],CURRENCY_SYM:"$"},DATETIME_FORMATS:{MONTH:"January,February,March,April,May,June,July,August,September,October,November,December".split(","),SHORTMONTH:"Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec".split(","),DAY:"Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday".split(","),SHORTDAY:"Sun,Mon,Tue,Wed,Thu,Fri,Sat".split(","),AMPMS:["AM","PM"],medium:"MMM d, y h:mm:ss a","short":"M/d/yy h:mm a",fullDate:"EEEE, MMMM d, y",longDate:"MMMM d, y",mediumDate:"MMM d, y",shortDate:"M/d/yy",mediumTime:"h:mm:ss a",shortTime:"h:mm a"},pluralCat:function(t){return 1===t?"one":"other"}}}}function vn(t){for(var e=t.split("/"),n=e.length;n--;)e[n]=Y(e[n]);return e.join("/")}function yn(t,e){var n=ir(t);e.$$protocol=n.protocol,e.$$host=n.hostname,e.$$port=d(n.port)||ra[n.protocol]||null}function bn(t,e){var n="/"!==t.charAt(0);n&&(t="/"+t);var r=ir(t);e.$$path=decodeURIComponent(n&&"/"===r.pathname.charAt(0)?r.pathname.substring(1):r.pathname),e.$$search=W(r.search),e.$$hash=decodeURIComponent(r.hash),e.$$path&&"/"!=e.$$path.charAt(0)&&(e.$$path="/"+e.$$path)}function wn(t,e){return 0===e.indexOf(t)?e.substr(t.length):void 0}function xn(t){var e=t.indexOf("#");return-1==e?t:t.substr(0,e)}function kn(t){return t.replace(/(#.+)|#$/,"$1")}function Sn(t){return t.substr(0,xn(t).lastIndexOf("/")+1)}function Cn(t){return t.substring(0,t.indexOf("/",t.indexOf("//")+2))}function An(t,e){this.$$html5=!0,e=e||"";var r=Sn(t);yn(t,this),this.$$parse=function(t){var e=wn(r,t);if(!b(e))throw ia("ipthprfx",'Invalid url "{0}", missing path prefix "{1}".',t,r);bn(e,this),this.$$path||(this.$$path="/"),this.$$compose()},this.$$compose=function(){var t=J(this.$$search),e=this.$$hash?"#"+Y(this.$$hash):"";this.$$url=vn(this.$$path)+(t?"?"+t:"")+e,this.$$absUrl=r+this.$$url.substr(1)},this.$$parseLinkUrl=function(i,a){if(a&&"#"===a[0])return this.hash(a.slice(1)),!0;var o,s,u;return(o=wn(t,i))!==n?(s=o,u=(o=wn(e,o))!==n?r+(wn("/",o)||o):t+s):(o=wn(r,i))!==n?u=r+o:r==i+"/"&&(u=r),u&&this.$$parse(u),!!u}}function On(t,e){var n=Sn(t);yn(t,this),this.$$parse=function(r){function i(t,e,n){var r,i=/^\/[A-Z]:(\/.*)/;return 0===e.indexOf(n)&&(e=e.replace(n,"")),i.exec(e)?t:(r=i.exec(t),r?r[1]:t)}var a,o=wn(t,r)||wn(n,r);"#"===o.charAt(0)?(a=wn(e,o),g(a)&&(a=o)):a=this.$$html5?o:"",bn(a,this),this.$$path=i(this.$$path,a,t),this.$$compose()},this.$$compose=function(){var n=J(this.$$search),r=this.$$hash?"#"+Y(this.$$hash):"";this.$$url=vn(this.$$path)+(n?"?"+n:"")+r,this.$$absUrl=t+(this.$$url?e+this.$$url:"")},this.$$parseLinkUrl=function(e){return xn(t)==xn(e)?(this.$$parse(e),!0):!1}}function En(t,e){this.$$html5=!0,On.apply(this,arguments);var n=Sn(t);this.$$parseLinkUrl=function(r,i){if(i&&"#"===i[0])return this.hash(i.slice(1)),!0;var a,o;return t==xn(r)?a=r:(o=wn(n,r))?a=t+e+o:n===r+"/"&&(a=n),a&&this.$$parse(a),!!a},this.$$compose=function(){var n=J(this.$$search),r=this.$$hash?"#"+Y(this.$$hash):"";this.$$url=vn(this.$$path)+(n?"?"+n:"")+r,this.$$absUrl=t+e+this.$$url}}function jn(t){return function(){return this[t]}}function Nn(t,e){return function(n){return g(n)?this[t]:(this[t]=e(n),this.$$compose(),this)}}function Tn(){var t="",e={enabled:!1,requireBase:!0,rewriteLinks:!0};this.hashPrefix=function(e){return v(e)?(t=e,this):t},this.html5Mode=function(t){return N(t)?(e.enabled=t,this):y(t)?(N(t.enabled)&&(e.enabled=t.enabled),N(t.requireBase)&&(e.requireBase=t.requireBase),N(t.rewriteLinks)&&(e.rewriteLinks=t.rewriteLinks),this):e},this.$get=["$rootScope","$browser","$sniffer","$rootElement","$window",function(n,r,i,a,o){function s(t,e,n){var i=l.url(),a=l.$$state;try{r.url(t,e,n),l.$$state=r.state()}catch(o){throw l.url(i),l.$$state=a,o}}function u(t,e){n.$broadcast("$locationChangeSuccess",l.absUrl(),t,l.$$state,e)}var l,c,f,d=r.baseHref(),h=r.url();if(e.enabled){if(!d&&e.requireBase)throw ia("nobase","$location in HTML5 mode requires a <base> tag to be present!");f=Cn(h)+(d||"/"),c=i.history?An:En}else f=xn(h),c=On;l=new c(f,"#"+t),l.$$parseLinkUrl(h,h),l.$$state=r.state();var p=/^\s*(javascript|mailto):/i;a.on("click",function(t){if(e.rewriteLinks&&!t.ctrlKey&&!t.metaKey&&!t.shiftKey&&2!=t.which&&2!=t.button){for(var i=Qr(t.target);"a"!==V(i[0]);)if(i[0]===a[0]||!(i=i.parent())[0])return;var s=i.prop("href"),u=i.attr("href")||i.attr("xlink:href");y(s)&&"[object SVGAnimatedString]"===s.toString()&&(s=ir(s.animVal).href),p.test(s)||!s||i.attr("target")||t.isDefaultPrevented()||l.$$parseLinkUrl(s,u)&&(t.preventDefault(),l.absUrl()!=r.url()&&(n.$apply(),o.angular["ff-684208-preventDefault"]=!0))}}),kn(l.absUrl())!=kn(h)&&r.url(l.absUrl(),!0);var $=!0;return r.onUrlChange(function(t,e){n.$evalAsync(function(){var r,i=l.absUrl(),a=l.$$state;l.$$parse(t),l.$$state=e,r=n.$broadcast("$locationChangeStart",t,i,e,a).defaultPrevented,l.absUrl()===t&&(r?(l.$$parse(i),l.$$state=a,s(i,!1,a)):($=!1,u(i,a)))}),n.$$phase||n.$digest()}),n.$watch(function(){var t=kn(r.url()),e=kn(l.absUrl()),a=r.state(),o=l.$$replace,c=t!==e||l.$$html5&&i.history&&a!==l.$$state;($||c)&&($=!1,n.$evalAsync(function(){var e=l.absUrl(),r=n.$broadcast("$locationChangeStart",e,t,l.$$state,a).defaultPrevented;l.absUrl()===e&&(r?(l.$$parse(t),l.$$state=a):(c&&s(e,o,a===l.$$state?null:l.$$state),u(t,a)))})),l.$$replace=!1}),l}]}function Mn(){var t=!0,e=this;this.debugEnabled=function(e){return v(e)?(t=e,this):t},this.$get=["$window",function(n){function r(t){return t instanceof Error&&(t.stack?t=t.message&&-1===t.stack.indexOf(t.message)?"Error: "+t.message+"\n"+t.stack:t.stack:t.sourceURL&&(t=t.message+"\n"+t.sourceURL+":"+t.line)),t}function i(t){var e=n.console||{},i=e[t]||e.log||p,o=!1;try{o=!!i.apply}catch(s){}return o?function(){var t=[];return a(arguments,function(e){t.push(r(e))}),i.apply(e,t)}:function(t,e){i(t,null==e?"":e)}}return{log:i("log"),info:i("info"),warn:i("warn"),error:i("error"),debug:function(){var n=i("debug");return function(){t&&n.apply(e,arguments)}}()}}]}function Pn(t,e){if("__defineGetter__"===t||"__defineSetter__"===t||"__lookupGetter__"===t||"__lookupSetter__"===t||"__proto__"===t)throw oa("isecfld","Attempting to access a disallowed field in Angular expressions! Expression: {0}",e);return t}function Vn(t,e){if(t){if(t.constructor===t)throw oa("isecfn","Referencing Function in Angular expressions is disallowed! Expression: {0}",e);if(t.window===t)throw oa("isecwindow","Referencing the Window in Angular expressions is disallowed! Expression: {0}",e);if(t.children&&(t.nodeName||t.prop&&t.attr&&t.find))throw oa("isecdom","Referencing DOM nodes in Angular expressions is disallowed! Expression: {0}",e);if(t===Object)throw oa("isecobj","Referencing Object in Angular expressions is disallowed! Expression: {0}",e)}return t}function qn(t,e){if(t){if(t.constructor===t)throw oa("isecfn","Referencing Function in Angular expressions is disallowed! Expression: {0}",e);if(t===sa||t===ua||t===la)throw oa("isecff","Referencing call, apply or bind in Angular expressions is disallowed! Expression: {0}",e)}}function Dn(t){return t.constant}function Rn(t,e,n,r,i){Vn(t,i),Vn(e,i);for(var a,o=n.split("."),s=0;o.length>1;s++){a=Pn(o.shift(),i);var u=0===s&&e&&e[a]||t[a];u||(u={},t[a]=u),t=Vn(u,i)}return a=Pn(o.shift(),i),Vn(t[a],i),t[a]=r,r}function In(t){return"constructor"==t}function _n(t,e,r,i,a,o,s){Pn(t,o),Pn(e,o),Pn(r,o),Pn(i,o),Pn(a,o);var u=function(t){return Vn(t,o)},l=s||In(t)?u:$,c=s||In(e)?u:$,f=s||In(r)?u:$,d=s||In(i)?u:$,h=s||In(a)?u:$;return function(o,s){var u=s&&s.hasOwnProperty(t)?s:o;return null==u?u:(u=l(u[t]),e?null==u?n:(u=c(u[e]),r?null==u?n:(u=f(u[r]),i?null==u?n:(u=d(u[i]),a?null==u?n:u=h(u[a]):u):u):u):u)}}function Un(t,e){return function(n,r){return t(n,r,Vn,e)}}function Ln(t,e,r){var i=e.expensiveChecks,o=i?ma:$a,s=o[t];if(s)return s;var u=t.split("."),l=u.length;if(e.csp)s=6>l?_n(u[0],u[1],u[2],u[3],u[4],r,i):function(t,e){var a,o=0;do a=_n(u[o++],u[o++],u[o++],u[o++],u[o++],r,i)(t,e),e=n,t=a;while(l>o);return a};else{var c="";i&&(c+="s = eso(s, fe);\nl = eso(l, fe);\n");var f=i;a(u,function(t,e){Pn(t,r);var n=(e?"s":'((l&&l.hasOwnProperty("'+t+'"))?l:s)')+"."+t;(i||In(t))&&(n="eso("+n+", fe)",f=!0),c+="if(s == null) return undefined;\ns="+n+";\n"}),c+="return s;";var d=new Function("s","l","eso","fe",c);d.toString=m(c),f&&(d=Un(d,r)),s=d}return s.sharedGetter=!0,s.assign=function(e,n,r){return Rn(e,r,t,n,t)},o[t]=s,s}function Fn(t){return k(t.valueOf)?t.valueOf():ga.call(t)}function Hn(){var t=le(),e=le();this.$get=["$filter","$sniffer",function(n,r){function i(t){var e=t;return t.sharedGetter&&(e=function(e,n){return t(e,n)},e.literal=t.literal,e.constant=t.constant,e.assign=t.assign),e}function o(t,e){for(var n=0,r=t.length;r>n;n++){var i=t[n];i.constant||(i.inputs?o(i.inputs,e):-1===e.indexOf(i)&&e.push(i))}return e}function s(t,e){return null==t||null==e?t===e:"object"==typeof t&&(t=Fn(t),"object"==typeof t)?!1:t===e||t!==t&&e!==e}function u(t,e,n,r){var i,a=r.$$inputs||(r.$$inputs=o(r.inputs,[]));if(1===a.length){var u=s;return a=a[0],t.$watch(function(t){var e=a(t);return s(e,u)||(i=r(t),u=e&&Fn(e)),i},e,n)}for(var l=[],c=0,f=a.length;f>c;c++)l[c]=s;return t.$watch(function(t){for(var e=!1,n=0,o=a.length;o>n;n++){var u=a[n](t);(e||(e=!s(u,l[n])))&&(l[n]=u&&Fn(u))}return e&&(i=r(t)),i},e,n)}function l(t,e,n,r){var i,a;return i=t.$watch(function(t){return r(t)},function(t,n,r){a=t,k(e)&&e.apply(this,arguments),v(t)&&r.$$postDigest(function(){v(a)&&i()})},n)}function c(t,e,n,r){function i(t){var e=!0;return a(t,function(t){v(t)||(e=!1)}),e}var o,s;return o=t.$watch(function(t){return r(t)},function(t,n,r){s=t,k(e)&&e.call(this,t,n,r),i(t)&&r.$$postDigest(function(){i(s)&&o()})},n)}function f(t,e,n,r){var i;return i=t.$watch(function(t){return r(t)},function(){k(e)&&e.apply(this,arguments),i()},n)}function d(t,e){if(!e)return t;var n=t.$$watchDelegate,r=n!==c&&n!==l,i=r?function(n,r){var i=t(n,r);return e(i,n,r)}:function(n,r){var i=t(n,r),a=e(i,n,r);return v(i)?a:i};return t.$$watchDelegate&&t.$$watchDelegate!==u?i.$$watchDelegate=t.$$watchDelegate:e.$stateful||(i.$$watchDelegate=u,i.inputs=[t]),i}var h={csp:r.csp,expensiveChecks:!1},$={csp:r.csp,expensiveChecks:!0};return function(r,a,o){var s,m,g;switch(typeof r){case"string":g=r=r.trim();var v=o?e:t;if(s=v[g],!s){":"===r.charAt(0)&&":"===r.charAt(1)&&(m=!0,r=r.substring(2));var y=o?$:h,b=new ha(y),w=new pa(b,n,y);s=w.parse(r),s.constant?s.$$watchDelegate=f:m?(s=i(s),s.$$watchDelegate=s.literal?c:l):s.inputs&&(s.$$watchDelegate=u),v[g]=s}return d(s,a);case"function":return d(r,a);default:return d(p,a)}}}]}function Bn(){this.$get=["$rootScope","$exceptionHandler",function(t,e){return Gn(function(e){t.$evalAsync(e)},e)}]}function zn(){this.$get=["$browser","$exceptionHandler",function(t,e){return Gn(function(e){t.defer(e)},e)}]}function Gn(t,e){function i(t,e,n){function r(e){return function(n){i||(i=!0,e.call(t,n))}}var i=!1;return[r(e),r(n)]}function o(){this.$$state={status:0}}function s(t,e){return function(n){e.call(t,n)}}function u(t){var r,i,a;a=t.pending,t.processScheduled=!1,t.pending=n;for(var o=0,s=a.length;s>o;++o){i=a[o][0],r=a[o][t.status];try{k(r)?i.resolve(r(t.value)):1===t.status?i.resolve(t.value):i.reject(t.value)}catch(u){i.reject(u),e(u)}}}function l(e){!e.processScheduled&&e.pending&&(e.processScheduled=!0,t(function(){u(e)}))}function c(){this.promise=new o,this.resolve=s(this,this.resolve),this.reject=s(this,this.reject),this.notify=s(this,this.notify)}function f(t){var e=new c,n=0,r=ci(t)?[]:{};return a(t,function(t,i){n++,g(t).then(function(t){r.hasOwnProperty(i)||(r[i]=t,--n||e.resolve(r))},function(t){r.hasOwnProperty(i)||e.reject(t)})}),0===n&&e.resolve(r),e.promise}var d=r("$q",TypeError),h=function(){return new c};o.prototype={then:function(t,e,n){var r=new c;return this.$$state.pending=this.$$state.pending||[],this.$$state.pending.push([r,t,e,n]),this.$$state.status>0&&l(this.$$state),r.promise},"catch":function(t){return this.then(null,t)},"finally":function(t,e){return this.then(function(e){return m(e,!0,t)},function(e){return m(e,!1,t)},e)}},c.prototype={resolve:function(t){this.promise.$$state.status||(t===this.promise?this.$$reject(d("qcycle","Expected promise to be resolved with value other than itself '{0}'",t)):this.$$resolve(t))},$$resolve:function(t){var n,r;r=i(this,this.$$resolve,this.$$reject);try{(y(t)||k(t))&&(n=t&&t.then),k(n)?(this.promise.$$state.status=-1,n.call(t,r[0],r[1],this.notify)):(this.promise.$$state.value=t,this.promise.$$state.status=1,l(this.promise.$$state))}catch(a){r[1](a),e(a)}},reject:function(t){this.promise.$$state.status||this.$$reject(t)},$$reject:function(t){this.promise.$$state.value=t,this.promise.$$state.status=2,l(this.promise.$$state)},notify:function(n){var r=this.promise.$$state.pending;this.promise.$$state.status<=0&&r&&r.length&&t(function(){for(var t,i,a=0,o=r.length;o>a;a++){i=r[a][0],t=r[a][3];try{i.notify(k(t)?t(n):n)}catch(s){e(s)}}})}};var p=function(t){var e=new c;return e.reject(t),e.promise},$=function(t,e){var n=new c;return e?n.resolve(t):n.reject(t),n.promise},m=function(t,e,n){var r=null;try{k(n)&&(r=n())}catch(i){return $(i,!1)}return T(r)?r.then(function(){return $(t,e)},function(t){return $(t,!1)}):$(t,e)},g=function(t,e,n,r){var i=new c;return i.resolve(t),i.promise.then(e,n,r)},v=function b(t){function e(t){r.resolve(t)}function n(t){r.reject(t)}if(!k(t))throw d("norslvr","Expected resolverFn, got '{0}'",t);if(!(this instanceof b))return new b(t);var r=new c;return t(e,n),r.promise};return v.defer=h,v.reject=p,v.when=g,v.all=f,v}function Wn(){this.$get=["$window","$timeout",function(t,e){var n=t.requestAnimationFrame||t.webkitRequestAnimationFrame,r=t.cancelAnimationFrame||t.webkitCancelAnimationFrame||t.webkitCancelRequestAnimationFrame,i=!!n,a=i?function(t){var e=n(t);return function(){r(e)}}:function(t){var n=e(t,16.66,!1);return function(){e.cancel(n)}};return a.supported=i,a}]}function Jn(){var t=10,e=r("$rootScope"),n=null,o=null;this.digestTtl=function(e){return arguments.length&&(t=e),t},this.$get=["$injector","$exceptionHandler","$parse","$browser",function(r,s,u,c){function f(){this.$id=l(),this.$$phase=this.$parent=this.$$watchers=this.$$nextSibling=this.$$prevSibling=this.$$childHead=this.$$childTail=null,this.$root=this,this.$$destroyed=!1,this.$$listeners={},this.$$listenerCount={},this.$$isolateBindings=null}function d(t){if(w.$$phase)throw e("inprog","{0} already in progress",w.$$phase);w.$$phase=t}function h(){w.$$phase=null}function $(t,e,n){do t.$$listenerCount[n]-=e,0===t.$$listenerCount[n]&&delete t.$$listenerCount[n];while(t=t.$parent)}function m(){}function v(){for(;C.length;)try{C.shift()()}catch(t){s(t)}o=null}function b(){null===o&&(o=c.defer(function(){w.$apply(v)}))}f.prototype={constructor:f,$new:function(t,e){function n(){r.$$destroyed=!0}var r;return e=e||this,t?(r=new f,r.$root=this.$root):(this.$$ChildScope||(this.$$ChildScope=function(){this.$$watchers=this.$$nextSibling=this.$$childHead=this.$$childTail=null,this.$$listeners={},this.$$listenerCount={},this.$id=l(),this.$$ChildScope=null},this.$$ChildScope.prototype=this),r=new this.$$ChildScope),r.$parent=e,r.$$prevSibling=e.$$childTail,e.$$childHead?(e.$$childTail.$$nextSibling=r,e.$$childTail=r):e.$$childHead=e.$$childTail=r,(t||e!=this)&&r.$on("$destroy",n),r},$watch:function(t,e,r){var i=u(t);if(i.$$watchDelegate)return i.$$watchDelegate(this,e,r,i);var a=this,o=a.$$watchers,s={fn:e,last:m,get:i,exp:t,eq:!!r};return n=null,k(e)||(s.fn=p),o||(o=a.$$watchers=[]),o.unshift(s),function(){q(o,s),n=null}},$watchGroup:function(t,e){function n(){u=!1,l?(l=!1,e(i,i,s)):e(i,r,s)}var r=new Array(t.length),i=new Array(t.length),o=[],s=this,u=!1,l=!0;if(!t.length){var c=!0;return s.$evalAsync(function(){c&&e(i,i,s)}),function(){c=!1}}return 1===t.length?this.$watch(t[0],function(t,n,a){i[0]=t,r[0]=n,e(i,t===n?i:r,a)}):(a(t,function(t,e){var a=s.$watch(t,function(t,a){i[e]=t,r[e]=a,u||(u=!0,s.$evalAsync(n))});o.push(a)}),function(){for(;o.length;)o.shift()()})},$watchCollection:function(t,e){function n(t){a=t;var e,n,r,s,u;if(!g(a)){if(y(a))if(i(a)){o!==h&&(o=h,m=o.length=0,f++),e=a.length,m!==e&&(f++,o.length=m=e);for(var l=0;e>l;l++)u=o[l],s=a[l],r=u!==u&&s!==s,r||u===s||(f++,o[l]=s)}else{o!==p&&(o=p={},m=0,f++),e=0;for(n in a)a.hasOwnProperty(n)&&(e++,s=a[n],u=o[n],n in o?(r=u!==u&&s!==s,r||u===s||(f++,o[n]=s)):(m++,o[n]=s,f++));if(m>e){f++;for(n in o)a.hasOwnProperty(n)||(m--,delete o[n])}}else o!==a&&(o=a,f++);return f}}function r(){if($?($=!1,e(a,a,l)):e(a,s,l),c)if(y(a))if(i(a)){s=new Array(a.length);for(var t=0;t<a.length;t++)s[t]=a[t]}else{s={};for(var n in a)Jr.call(a,n)&&(s[n]=a[n])}else s=a}n.$stateful=!0;var a,o,s,l=this,c=e.length>1,f=0,d=u(t,n),h=[],p={},$=!0,m=0;return this.$watch(d,r)},$digest:function(){var r,i,a,u,l,f,p,$,g,y,b=t,C=this,A=[];d("$digest"),c.$$checkUrlChange(),this===w&&null!==o&&(c.defer.cancel(o),v()),n=null;do{for(f=!1,$=C;x.length;){try{y=x.shift(),y.scope.$eval(y.expression,y.locals)}catch(O){s(O)}n=null}t:do{if(u=$.$$watchers)for(l=u.length;l--;)try{if(r=u[l])if((i=r.get($))===(a=r.last)||(r.eq?I(i,a):"number"==typeof i&&"number"==typeof a&&isNaN(i)&&isNaN(a))){if(r===n){f=!1;
 +
break t}}else f=!0,n=r,r.last=r.eq?D(i,null):i,r.fn(i,a===m?i:a,$),5>b&&(g=4-b,A[g]||(A[g]=[]),A[g].push({msg:k(r.exp)?"fn: "+(r.exp.name||r.exp.toString()):r.exp,newVal:i,oldVal:a}))}catch(O){s(O)}if(!(p=$.$$childHead||$!==C&&$.$$nextSibling))for(;$!==C&&!(p=$.$$nextSibling);)$=$.$parent}while($=p);if((f||x.length)&&!b--)throw h(),e("infdig","{0} $digest() iterations reached. Aborting!\nWatchers fired in the last 5 iterations: {1}",t,A)}while(f||x.length);for(h();S.length;)try{S.shift()()}catch(O){s(O)}},$destroy:function(){if(!this.$$destroyed){var t=this.$parent;if(this.$broadcast("$destroy"),this.$$destroyed=!0,this!==w){for(var e in this.$$listenerCount)$(this,this.$$listenerCount[e],e);t.$$childHead==this&&(t.$$childHead=this.$$nextSibling),t.$$childTail==this&&(t.$$childTail=this.$$prevSibling),this.$$prevSibling&&(this.$$prevSibling.$$nextSibling=this.$$nextSibling),this.$$nextSibling&&(this.$$nextSibling.$$prevSibling=this.$$prevSibling),this.$destroy=this.$digest=this.$apply=this.$evalAsync=this.$applyAsync=p,this.$on=this.$watch=this.$watchGroup=function(){return p},this.$$listeners={},this.$parent=this.$$nextSibling=this.$$prevSibling=this.$$childHead=this.$$childTail=this.$root=this.$$watchers=null}}},$eval:function(t,e){return u(t)(this,e)},$evalAsync:function(t,e){w.$$phase||x.length||c.defer(function(){x.length&&w.$digest()}),x.push({scope:this,expression:t,locals:e})},$$postDigest:function(t){S.push(t)},$apply:function(t){try{return d("$apply"),this.$eval(t)}catch(e){s(e)}finally{h();try{w.$digest()}catch(e){throw s(e),e}}},$applyAsync:function(t){function e(){n.$eval(t)}var n=this;t&&C.push(e),b()},$on:function(t,e){var n=this.$$listeners[t];n||(this.$$listeners[t]=n=[]),n.push(e);var r=this;do r.$$listenerCount[t]||(r.$$listenerCount[t]=0),r.$$listenerCount[t]++;while(r=r.$parent);var i=this;return function(){var r=n.indexOf(e);-1!==r&&(n[r]=null,$(i,1,t))}},$emit:function(t){var e,n,r,i=[],a=this,o=!1,u={name:t,targetScope:a,stopPropagation:function(){o=!0},preventDefault:function(){u.defaultPrevented=!0},defaultPrevented:!1},l=_([u],arguments,1);do{for(e=a.$$listeners[t]||i,u.currentScope=a,n=0,r=e.length;r>n;n++)if(e[n])try{e[n].apply(null,l)}catch(c){s(c)}else e.splice(n,1),n--,r--;if(o)return u.currentScope=null,u;a=a.$parent}while(a);return u.currentScope=null,u},$broadcast:function(t){var e=this,n=e,r=e,i={name:t,targetScope:e,preventDefault:function(){i.defaultPrevented=!0},defaultPrevented:!1};if(!e.$$listenerCount[t])return i;for(var a,o,u,l=_([i],arguments,1);n=r;){for(i.currentScope=n,a=n.$$listeners[t]||[],o=0,u=a.length;u>o;o++)if(a[o])try{a[o].apply(null,l)}catch(c){s(c)}else a.splice(o,1),o--,u--;if(!(r=n.$$listenerCount[t]&&n.$$childHead||n!==e&&n.$$nextSibling))for(;n!==e&&!(r=n.$$nextSibling);)n=n.$parent}return i.currentScope=null,i}};var w=new f,x=w.$$asyncQueue=[],S=w.$$postDigestQueue=[],C=w.$$applyAsyncQueue=[];return w}]}function Yn(){var t=/^\s*(https?|ftp|mailto|tel|file):/,e=/^\s*((https?|ftp|file|blob):|data:image\/)/;this.aHrefSanitizationWhitelist=function(e){return v(e)?(t=e,this):t},this.imgSrcSanitizationWhitelist=function(t){return v(t)?(e=t,this):e},this.$get=function(){return function(n,r){var i,a=r?e:t;return i=ir(n).href,""===i||i.match(a)?n:"unsafe:"+i}}}function Zn(t){if("self"===t)return t;if(b(t)){if(t.indexOf("***")>-1)throw va("iwcard","Illegal sequence *** in string matcher.  String: {0}",t);return t=di(t).replace("\\*\\*",".*").replace("\\*","[^:/.?&;]*"),new RegExp("^"+t+"$")}if(S(t))return new RegExp("^"+t.source+"$");throw va("imatcher",'Matchers may only be "self", string patterns or RegExp objects')}function Kn(t){var e=[];return v(t)&&a(t,function(t){e.push(Zn(t))}),e}function Xn(){this.SCE_CONTEXTS=ya;var t=["self"],e=[];this.resourceUrlWhitelist=function(e){return arguments.length&&(t=Kn(e)),t},this.resourceUrlBlacklist=function(t){return arguments.length&&(e=Kn(t)),e},this.$get=["$injector",function(r){function i(t,e){return"self"===t?ar(e):!!t.exec(e.href)}function a(n){var r,a,o=ir(n.toString()),s=!1;for(r=0,a=t.length;a>r;r++)if(i(t[r],o)){s=!0;break}if(s)for(r=0,a=e.length;a>r;r++)if(i(e[r],o)){s=!1;break}return s}function o(t){var e=function(t){this.$$unwrapTrustedValue=function(){return t}};return t&&(e.prototype=new t),e.prototype.valueOf=function(){return this.$$unwrapTrustedValue()},e.prototype.toString=function(){return this.$$unwrapTrustedValue().toString()},e}function s(t,e){var r=d.hasOwnProperty(t)?d[t]:null;if(!r)throw va("icontext","Attempted to trust a value in invalid context. Context: {0}; Value: {1}",t,e);if(null===e||e===n||""===e)return e;if("string"!=typeof e)throw va("itype","Attempted to trust a non-string value in a content requiring a string: Context: {0}",t);return new r(e)}function u(t){return t instanceof f?t.$$unwrapTrustedValue():t}function l(t,e){if(null===e||e===n||""===e)return e;var r=d.hasOwnProperty(t)?d[t]:null;if(r&&e instanceof r)return e.$$unwrapTrustedValue();if(t===ya.RESOURCE_URL){if(a(e))return e;throw va("insecurl","Blocked loading resource from url not allowed by $sceDelegate policy.  URL: {0}",e.toString())}if(t===ya.HTML)return c(e);throw va("unsafe","Attempting to use an unsafe value in a safe context.")}var c=function(){throw va("unsafe","Attempting to use an unsafe value in a safe context.")};r.has("$sanitize")&&(c=r.get("$sanitize"));var f=o(),d={};return d[ya.HTML]=o(f),d[ya.CSS]=o(f),d[ya.URL]=o(f),d[ya.JS]=o(f),d[ya.RESOURCE_URL]=o(d[ya.URL]),{trustAs:s,getTrusted:l,valueOf:u}}]}function Qn(){var t=!0;this.enabled=function(e){return arguments.length&&(t=!!e),t},this.$get=["$parse","$sceDelegate",function(e,n){if(t&&8>Xr)throw va("iequirks","Strict Contextual Escaping does not support Internet Explorer version < 11 in quirks mode.  You can fix this by adding the text <!doctype html> to the top of your HTML document.  See http://docs.angularjs.org/api/ng.$sce for more information.");var r=R(ya);r.isEnabled=function(){return t},r.trustAs=n.trustAs,r.getTrusted=n.getTrusted,r.valueOf=n.valueOf,t||(r.trustAs=r.getTrusted=function(t,e){return e},r.valueOf=$),r.parseAs=function(t,n){var i=e(n);return i.literal&&i.constant?i:e(n,function(e){return r.getTrusted(t,e)})};var i=r.parseAs,o=r.getTrusted,s=r.trustAs;return a(ya,function(t,e){var n=Wr(e);r[$e("parse_as_"+n)]=function(e){return i(t,e)},r[$e("get_trusted_"+n)]=function(e){return o(t,e)},r[$e("trust_as_"+n)]=function(e){return s(t,e)}}),r}]}function tr(){this.$get=["$window","$document",function(t,e){var n,r,i={},a=d((/android (\d+)/.exec(Wr((t.navigator||{}).userAgent))||[])[1]),o=/Boxee/i.test((t.navigator||{}).userAgent),s=e[0]||{},u=/^(Moz|webkit|ms)(?=[A-Z])/,l=s.body&&s.body.style,c=!1,f=!1;if(l){for(var h in l)if(r=u.exec(h)){n=r[0],n=n.substr(0,1).toUpperCase()+n.substr(1);break}n||(n="WebkitOpacity"in l&&"webkit"),c=!!("transition"in l||n+"Transition"in l),f=!!("animation"in l||n+"Animation"in l),!a||c&&f||(c=b(s.body.style.webkitTransition),f=b(s.body.style.webkitAnimation))}return{history:!(!t.history||!t.history.pushState||4>a||o),hasEvent:function(t){if("input"===t&&11>=Xr)return!1;if(g(i[t])){var e=s.createElement("div");i[t]="on"+t in e}return i[t]},csp:hi(),vendorPrefix:n,transitions:c,animations:f,android:a}}]}function er(){this.$get=["$templateCache","$http","$q",function(t,e,n){function r(i,a){function o(t){if(!a)throw Wi("tpload","Failed to load template: {0}",i);return n.reject(t)}r.totalPendingRequests++;var s=e.defaults&&e.defaults.transformResponse;ci(s)?s=s.filter(function(t){return t!==an}):s===an&&(s=null);var u={cache:t,transformResponse:s};return e.get(i,u).finally(function(){r.totalPendingRequests--}).then(function(t){return t.data},o)}return r.totalPendingRequests=0,r}]}function nr(){this.$get=["$rootScope","$browser","$location",function(t,e,n){var r={};return r.findBindings=function(t,e,n){var r=t.getElementsByClassName("ng-binding"),i=[];return a(r,function(t){var r=si.element(t).data("$binding");r&&a(r,function(r){if(n){var a=new RegExp("(^|\\s)"+di(e)+"(\\s|\\||$)");a.test(r)&&i.push(t)}else-1!=r.indexOf(e)&&i.push(t)})}),i},r.findModels=function(t,e,n){for(var r=["ng-","data-ng-","ng\\:"],i=0;i<r.length;++i){var a=n?"=":"*=",o="["+r[i]+"model"+a+'"'+e+'"]',s=t.querySelectorAll(o);if(s.length)return s}},r.getLocation=function(){return n.url()},r.setLocation=function(e){e!==n.url()&&(n.url(e),t.$digest())},r.whenStable=function(t){e.notifyWhenNoOutstandingRequests(t)},r}]}function rr(){this.$get=["$rootScope","$browser","$q","$$q","$exceptionHandler",function(t,e,n,r,i){function a(a,s,u){var l,c=v(u)&&!u,f=(c?r:n).defer(),d=f.promise;return l=e.defer(function(){try{f.resolve(a())}catch(e){f.reject(e),i(e)}finally{delete o[d.$$timeoutId]}c||t.$apply()},s),d.$$timeoutId=l,o[l]=f,d}var o={};return a.cancel=function(t){return t&&t.$$timeoutId in o?(o[t.$$timeoutId].reject("canceled"),delete o[t.$$timeoutId],e.defer.cancel(t.$$timeoutId)):!1},a}]}function ir(t){var e=t;return Xr&&(ba.setAttribute("href",e),e=ba.href),ba.setAttribute("href",e),{href:ba.href,protocol:ba.protocol?ba.protocol.replace(/:$/,""):"",host:ba.host,search:ba.search?ba.search.replace(/^\?/,""):"",hash:ba.hash?ba.hash.replace(/^#/,""):"",hostname:ba.hostname,port:ba.port,pathname:"/"===ba.pathname.charAt(0)?ba.pathname:"/"+ba.pathname}}function ar(t){var e=b(t)?ir(t):t;return e.protocol===wa.protocol&&e.host===wa.host}function or(){this.$get=m(t)}function sr(t){function e(r,i){if(y(r)){var o={};return a(r,function(t,n){o[n]=e(n,t)}),o}return t.factory(r+n,i)}var n="Filter";this.register=e,this.$get=["$injector",function(t){return function(e){return t.get(e+n)}}],e("currency",fr),e("date",xr),e("filter",ur),e("json",kr),e("limitTo",Sr),e("lowercase",Aa),e("number",dr),e("orderBy",Cr),e("uppercase",Oa)}function ur(){return function(t,e,n){if(!ci(t))return t;var r,i;switch(typeof e){case"function":r=e;break;case"boolean":case"number":case"string":i=!0;case"object":r=lr(e,n,i);break;default:return t}return t.filter(r)}}function lr(t,e,n){var r,i=y(t)&&"$"in t;return e===!0?e=I:k(e)||(e=function(t,e){return y(t)||y(e)?!1:(t=Wr(""+t),e=Wr(""+e),-1!==t.indexOf(e))}),r=function(r){return i&&!y(r)?cr(r,t.$,e,!1):cr(r,t,e,n)}}function cr(t,e,n,r,i){var a=typeof t,o=typeof e;if("string"===o&&"!"===e.charAt(0))return!cr(t,e.substring(1),n,r);if(ci(t))return t.some(function(t){return cr(t,e,n,r)});switch(a){case"object":var s;if(r){for(s in t)if("$"!==s.charAt(0)&&cr(t[s],e,n,!0))return!0;return i?!1:cr(t,e,n,!1)}if("object"===o){for(s in e){var u=e[s];if(!k(u)){var l="$"===s,c=l?t:t[s];if(!cr(c,u,n,l,l))return!1}}return!0}return n(t,e);case"function":return!1;default:return n(t,e)}}function fr(t){var e=t.NUMBER_FORMATS;return function(t,n,r){return g(n)&&(n=e.CURRENCY_SYM),g(r)&&(r=e.PATTERNS[1].maxFrac),null==t?t:hr(t,e.PATTERNS[1],e.GROUP_SEP,e.DECIMAL_SEP,r).replace(/\u00A4/g,n)}}function dr(t){var e=t.NUMBER_FORMATS;return function(t,n){return null==t?t:hr(t,e.PATTERNS[0],e.GROUP_SEP,e.DECIMAL_SEP,n)}}function hr(t,e,n,r,i){if(!isFinite(t)||y(t))return"";var a=0>t;t=Math.abs(t);var o=t+"",s="",u=[],l=!1;if(-1!==o.indexOf("e")){var c=o.match(/([\d\.]+)e(-?)(\d+)/);c&&"-"==c[2]&&c[3]>i+1?t=0:(s=o,l=!0)}if(l)i>0&&1>t&&(s=t.toFixed(i),t=parseFloat(s));else{var f=(o.split(xa)[1]||"").length;g(i)&&(i=Math.min(Math.max(e.minFrac,f),e.maxFrac)),t=+(Math.round(+(t.toString()+"e"+i)).toString()+"e"+-i);var d=(""+t).split(xa),h=d[0];d=d[1]||"";var p,$=0,m=e.lgSize,v=e.gSize;if(h.length>=m+v)for($=h.length-m,p=0;$>p;p++)($-p)%v===0&&0!==p&&(s+=n),s+=h.charAt(p);for(p=$;p<h.length;p++)(h.length-p)%m===0&&0!==p&&(s+=n),s+=h.charAt(p);for(;d.length<i;)d+="0";i&&"0"!==i&&(s+=r+d.substr(0,i))}return 0===t&&(a=!1),u.push(a?e.negPre:e.posPre,s,a?e.negSuf:e.posSuf),u.join("")}function pr(t,e,n){var r="";for(0>t&&(r="-",t=-t),t=""+t;t.length<e;)t="0"+t;return n&&(t=t.substr(t.length-e)),r+t}function $r(t,e,n,r){return n=n||0,function(i){var a=i["get"+t]();return(n>0||a>-n)&&(a+=n),0===a&&-12==n&&(a=12),pr(a,e,r)}}function mr(t,e){return function(n,r){var i=n["get"+t](),a=Yr(e?"SHORT"+t:t);return r[a][i]}}function gr(t){var e=-1*t.getTimezoneOffset(),n=e>=0?"+":"";return n+=pr(Math[e>0?"floor":"ceil"](e/60),2)+pr(Math.abs(e%60),2)}function vr(t){var e=new Date(t,0,1).getDay();return new Date(t,0,(4>=e?5:12)-e)}function yr(t){return new Date(t.getFullYear(),t.getMonth(),t.getDate()+(4-t.getDay()))}function br(t){return function(e){var n=vr(e.getFullYear()),r=yr(e),i=+r-+n,a=1+Math.round(i/6048e5);return pr(a,t)}}function wr(t,e){return t.getHours()<12?e.AMPMS[0]:e.AMPMS[1]}function xr(t){function e(t){var e;if(e=t.match(n)){var r=new Date(0),i=0,a=0,o=e[8]?r.setUTCFullYear:r.setFullYear,s=e[8]?r.setUTCHours:r.setHours;e[9]&&(i=d(e[9]+e[10]),a=d(e[9]+e[11])),o.call(r,d(e[1]),d(e[2])-1,d(e[3]));var u=d(e[4]||0)-i,l=d(e[5]||0)-a,c=d(e[6]||0),f=Math.round(1e3*parseFloat("0."+(e[7]||0)));return s.call(r,u,l,c,f),r}return t}var n=/^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/;return function(n,r,i){var o,s,u="",l=[];if(r=r||"mediumDate",r=t.DATETIME_FORMATS[r]||r,b(n)&&(n=Ca.test(n)?d(n):e(n)),w(n)&&(n=new Date(n)),!x(n))return n;for(;r;)s=Sa.exec(r),s?(l=_(l,s,1),r=l.pop()):(l.push(r),r=null);return i&&"UTC"===i&&(n=new Date(n.getTime()),n.setMinutes(n.getMinutes()+n.getTimezoneOffset())),a(l,function(e){o=ka[e],u+=o?o(n,t.DATETIME_FORMATS):e.replace(/(^'|'$)/g,"").replace(/''/g,"'")}),u}}function kr(){return function(t,e){return g(e)&&(e=2),H(t,e)}}function Sr(){return function(t,e){return w(t)&&(t=t.toString()),ci(t)||b(t)?(e=1/0===Math.abs(Number(e))?Number(e):d(e),e?e>0?t.slice(0,e):t.slice(e):b(t)?"":[]):t}}function Cr(t){return function(e,n,r){function a(t,e){for(var r=0;r<n.length;r++){var i=n[r](t,e);if(0!==i)return i}return 0}function o(t,e){return e?function(e,n){return t(n,e)}:t}function s(t){switch(typeof t){case"number":case"boolean":case"string":return!0;default:return!1}}function u(t){return null===t?"null":"function"==typeof t.valueOf&&(t=t.valueOf(),s(t))?t:"function"==typeof t.toString&&(t=t.toString(),s(t))?t:""}function l(t,e){var n=typeof t,r=typeof e;return n===r&&"object"===n&&(t=u(t),e=u(e)),n===r?("string"===n&&(t=t.toLowerCase(),e=e.toLowerCase()),t===e?0:e>t?-1:1):r>n?-1:1}return i(e)?(n=ci(n)?n:[n],0===n.length&&(n=["+"]),n=n.map(function(e){var n=!1,r=e||$;if(b(e)){if(("+"==e.charAt(0)||"-"==e.charAt(0))&&(n="-"==e.charAt(0),e=e.substring(1)),""===e)return o(l,n);if(r=t(e),r.constant){var i=r();return o(function(t,e){return l(t[i],e[i])},n)}}return o(function(t,e){return l(r(t),r(e))},n)}),ni.call(e).sort(o(a,r))):e}}function Ar(t){return k(t)&&(t={link:t}),t.restrict=t.restrict||"AC",m(t)}function Or(t,e){t.$name=e}function Er(t,e,r,i,o){var s=this,u=[],l=s.$$parentForm=t.parent().controller("form")||Na;s.$error={},s.$$success={},s.$pending=n,s.$name=o(e.name||e.ngForm||"")(r),s.$dirty=!1,s.$pristine=!0,s.$valid=!0,s.$invalid=!1,s.$submitted=!1,l.$addControl(s),s.$rollbackViewValue=function(){a(u,function(t){t.$rollbackViewValue()})},s.$commitViewValue=function(){a(u,function(t){t.$commitViewValue()})},s.$addControl=function(t){oe(t.$name,"input"),u.push(t),t.$name&&(s[t.$name]=t)},s.$$renameControl=function(t,e){var n=t.$name;s[n]===t&&delete s[n],s[e]=t,t.$name=e},s.$removeControl=function(t){t.$name&&s[t.$name]===t&&delete s[t.$name],a(s.$pending,function(e,n){s.$setValidity(n,null,t)}),a(s.$error,function(e,n){s.$setValidity(n,null,t)}),a(s.$$success,function(e,n){s.$setValidity(n,null,t)}),q(u,t)},Hr({ctrl:this,$element:t,set:function(t,e,n){var r=t[e];if(r){var i=r.indexOf(n);-1===i&&r.push(n)}else t[e]=[n]},unset:function(t,e,n){var r=t[e];r&&(q(r,n),0===r.length&&delete t[e])},parentForm:l,$animate:i}),s.$setDirty=function(){i.removeClass(t,ho),i.addClass(t,po),s.$dirty=!0,s.$pristine=!1,l.$setDirty()},s.$setPristine=function(){i.setClass(t,ho,po+" "+Ta),s.$dirty=!1,s.$pristine=!0,s.$submitted=!1,a(u,function(t){t.$setPristine()})},s.$setUntouched=function(){a(u,function(t){t.$setUntouched()})},s.$setSubmitted=function(){i.addClass(t,Ta),s.$submitted=!0,l.$setSubmitted()}}function jr(t){t.$formatters.push(function(e){return t.$isEmpty(e)?e:e.toString()})}function Nr(t,e,n,r,i,a){Tr(t,e,n,r,i,a),jr(r)}function Tr(t,e,n,r,i,a){var o=Wr(e[0].type);if(!i.android){var s=!1;e.on("compositionstart",function(){s=!0}),e.on("compositionend",function(){s=!1,u()})}var u=function(t){if(l&&(a.defer.cancel(l),l=null),!s){var i=e.val(),u=t&&t.type;"password"===o||n.ngTrim&&"false"===n.ngTrim||(i=fi(i)),(r.$viewValue!==i||""===i&&r.$$hasNativeValidators)&&r.$setViewValue(i,u)}};if(i.hasEvent("input"))e.on("input",u);else{var l,c=function(t,e,n){l||(l=a.defer(function(){l=null,e&&e.value===n||u(t)}))};e.on("keydown",function(t){var e=t.keyCode;91===e||e>15&&19>e||e>=37&&40>=e||c(t,this,this.value)}),i.hasEvent("paste")&&e.on("paste cut",c)}e.on("change",u),r.$render=function(){e.val(r.$isEmpty(r.$viewValue)?"":r.$viewValue)}}function Mr(t,e){if(x(t))return t;if(b(t)){La.lastIndex=0;var n=La.exec(t);if(n){var r=+n[1],i=+n[2],a=0,o=0,s=0,u=0,l=vr(r),c=7*(i-1);return e&&(a=e.getHours(),o=e.getMinutes(),s=e.getSeconds(),u=e.getMilliseconds()),new Date(r,0,l.getDate()+c,a,o,s,u)}}return 0/0}function Pr(t,e){return function(n,r){var i,o;if(x(n))return n;if(b(n)){if('"'==n.charAt(0)&&'"'==n.charAt(n.length-1)&&(n=n.substring(1,n.length-1)),qa.test(n))return new Date(n);if(t.lastIndex=0,i=t.exec(n))return i.shift(),o=r?{yyyy:r.getFullYear(),MM:r.getMonth()+1,dd:r.getDate(),HH:r.getHours(),mm:r.getMinutes(),ss:r.getSeconds(),sss:r.getMilliseconds()/1e3}:{yyyy:1970,MM:1,dd:1,HH:0,mm:0,ss:0,sss:0},a(i,function(t,n){n<e.length&&(o[e[n]]=+t)}),new Date(o.yyyy,o.MM-1,o.dd,o.HH,o.mm,o.ss||0,1e3*o.sss||0)}return 0/0}}function Vr(t,e,r,i){return function(a,o,s,u,l,c,f){function d(t){return t&&!(t.getTime&&t.getTime()!==t.getTime())}function h(t){return v(t)?x(t)?t:r(t):n}qr(a,o,s,u),Tr(a,o,s,u,l,c);var p,$=u&&u.$options&&u.$options.timezone;if(u.$$parserName=t,u.$parsers.push(function(t){if(u.$isEmpty(t))return null;if(e.test(t)){var i=r(t,p);return"UTC"===$&&i.setMinutes(i.getMinutes()-i.getTimezoneOffset()),i}return n}),u.$formatters.push(function(t){if(t&&!x(t))throw vo("datefmt","Expected `{0}` to be a date",t);if(d(t)){if(p=t,p&&"UTC"===$){var e=6e4*p.getTimezoneOffset();p=new Date(p.getTime()+e)}return f("date")(t,i,$)}return p=null,""}),v(s.min)||s.ngMin){var m;u.$validators.min=function(t){return!d(t)||g(m)||r(t)>=m},s.$observe("min",function(t){m=h(t),u.$validate()})}if(v(s.max)||s.ngMax){var y;u.$validators.max=function(t){return!d(t)||g(y)||r(t)<=y},s.$observe("max",function(t){y=h(t),u.$validate()})}}}function qr(t,e,r,i){var a=e[0],o=i.$$hasNativeValidators=y(a.validity);o&&i.$parsers.push(function(t){var r=e.prop(Gr)||{};return r.badInput&&!r.typeMismatch?n:t})}function Dr(t,e,r,i,a,o){if(qr(t,e,r,i),Tr(t,e,r,i,a,o),i.$$parserName="number",i.$parsers.push(function(t){return i.$isEmpty(t)?null:Ia.test(t)?parseFloat(t):n}),i.$formatters.push(function(t){if(!i.$isEmpty(t)){if(!w(t))throw vo("numfmt","Expected `{0}` to be a number",t);t=t.toString()}return t}),r.min||r.ngMin){var s;i.$validators.min=function(t){return i.$isEmpty(t)||g(s)||t>=s},r.$observe("min",function(t){v(t)&&!w(t)&&(t=parseFloat(t,10)),s=w(t)&&!isNaN(t)?t:n,i.$validate()})}if(r.max||r.ngMax){var u;i.$validators.max=function(t){return i.$isEmpty(t)||g(u)||u>=t},r.$observe("max",function(t){v(t)&&!w(t)&&(t=parseFloat(t,10)),u=w(t)&&!isNaN(t)?t:n,i.$validate()})}}function Rr(t,e,n,r,i,a){Tr(t,e,n,r,i,a),jr(r),r.$$parserName="url",r.$validators.url=function(t,e){var n=t||e;return r.$isEmpty(n)||Da.test(n)}}function Ir(t,e,n,r,i,a){Tr(t,e,n,r,i,a),jr(r),r.$$parserName="email",r.$validators.email=function(t,e){var n=t||e;return r.$isEmpty(n)||Ra.test(n)}}function _r(t,e,n,r){g(n.name)&&e.attr("name",l());var i=function(t){e[0].checked&&r.$setViewValue(n.value,t&&t.type)};e.on("click",i),r.$render=function(){var t=n.value;e[0].checked=t==r.$viewValue},n.$observe("value",r.$render)}function Ur(t,e,n,i,a){var o;if(v(i)){if(o=t(i),!o.constant)throw r("ngModel")("constexpr","Expected constant expression for `{0}`, but saw `{1}`.",n,i);return o(e)}return a}function Lr(t,e,n,r,i,a,o,s){var u=Ur(s,t,"ngTrueValue",n.ngTrueValue,!0),l=Ur(s,t,"ngFalseValue",n.ngFalseValue,!1),c=function(t){r.$setViewValue(e[0].checked,t&&t.type)};e.on("click",c),r.$render=function(){e[0].checked=r.$viewValue},r.$isEmpty=function(t){return t===!1},r.$formatters.push(function(t){return I(t,u)}),r.$parsers.push(function(t){return t?u:l})}function Fr(t,e){return t="ngClass"+t,["$animate",function(n){function r(t,e){var n=[];t:for(var r=0;r<t.length;r++){for(var i=t[r],a=0;a<e.length;a++)if(i==e[a])continue t;n.push(i)}return n}function i(t){if(ci(t))return t;if(b(t))return t.split(" ");if(y(t)){var e=[];return a(t,function(t,n){t&&(e=e.concat(n.split(" ")))}),e}return t}return{restrict:"AC",link:function(o,s,u){function l(t){var e=f(t,1);u.$addClass(e)}function c(t){var e=f(t,-1);u.$removeClass(e)}function f(t,e){var n=s.data("$classCounts")||{},r=[];return a(t,function(t){(e>0||n[t])&&(n[t]=(n[t]||0)+e,n[t]===+(e>0)&&r.push(t))}),s.data("$classCounts",n),r.join(" ")}function d(t,e){var i=r(e,t),a=r(t,e);i=f(i,1),a=f(a,-1),i&&i.length&&n.addClass(s,i),a&&a.length&&n.removeClass(s,a)}function h(t){if(e===!0||o.$index%2===e){var n=i(t||[]);if(p){if(!I(t,p)){var r=i(p);d(r,n)}}else l(n)}p=R(t)}var p;o.$watch(u[t],h,!0),u.$observe("class",function(){h(o.$eval(u[t]))}),"ngClass"!==t&&o.$watch("$index",function(n,r){var a=1&n;if(a!==(1&r)){var s=i(o.$eval(u[t]));a===e?l(s):c(s)}})}}}]}function Hr(t){function e(t,e,u){e===n?r("$pending",t,u):i("$pending",t,u),N(e)?e?(f(s.$error,t,u),c(s.$$success,t,u)):(c(s.$error,t,u),f(s.$$success,t,u)):(f(s.$error,t,u),f(s.$$success,t,u)),s.$pending?(a(go,!0),s.$valid=s.$invalid=n,o("",null)):(a(go,!1),s.$valid=Br(s.$error),s.$invalid=!s.$valid,o("",s.$valid));var l;l=s.$pending&&s.$pending[t]?n:s.$error[t]?!1:s.$$success[t]?!0:null,o(t,l),d.$setValidity(t,l,s)}function r(t,e,n){s[t]||(s[t]={}),c(s[t],e,n)}function i(t,e,r){s[t]&&f(s[t],e,r),Br(s[t])&&(s[t]=n)}function a(t,e){e&&!l[t]?(h.addClass(u,t),l[t]=!0):!e&&l[t]&&(h.removeClass(u,t),l[t]=!1)}function o(t,e){t=t?"-"+ne(t,"-"):"",a(co+t,e===!0),a(fo+t,e===!1)}var s=t.ctrl,u=t.$element,l={},c=t.set,f=t.unset,d=t.parentForm,h=t.$animate;l[fo]=!(l[co]=u.hasClass(co)),s.$setValidity=e}function Br(t){if(t)for(var e in t)return!1;return!0}var zr=/^\/(.+)\/([a-z]*)$/,Gr="validity",Wr=function(t){return b(t)?t.toLowerCase():t},Jr=Object.prototype.hasOwnProperty,Yr=function(t){return b(t)?t.toUpperCase():t},Zr=function(t){return b(t)?t.replace(/[A-Z]/g,function(t){return String.fromCharCode(32|t.charCodeAt(0))}):t},Kr=function(t){return b(t)?t.replace(/[a-z]/g,function(t){return String.fromCharCode(-33&t.charCodeAt(0))}):t};"i"!=="I".toLowerCase()&&(Wr=Zr,Yr=Kr);var Xr,Qr,ti,ei,ni=[].slice,ri=[].splice,ii=[].push,ai=Object.prototype.toString,oi=r("ng"),si=t.angular||(t.angular={}),ui=0;Xr=e.documentMode,p.$inject=[],$.$inject=[];var li,ci=Array.isArray,fi=function(t){return b(t)?t.trim():t},di=function(t){return t.replace(/([-()\[\]{}+?*.$\^|,:#<!\\])/g,"\\$1").replace(/\x08/g,"\\x08")},hi=function(){if(v(hi.isActive_))return hi.isActive_;var t=!(!e.querySelector("[ng-csp]")&&!e.querySelector("[data-ng-csp]"));if(!t)try{new Function("")}catch(n){t=!0}return hi.isActive_=t},pi=["ng-","data-ng-","ng:","x-ng-"],$i=/[A-Z]/g,mi=!1,gi=1,vi=3,yi=8,bi=9,wi=11,xi={full:"1.3.13",major:1,minor:3,dot:13,codeName:"meticulous-riffleshuffle"};be.expando="ng339";var ki=be.cache={},Si=1,Ci=function(t,e,n){t.addEventListener(e,n,!1)},Ai=function(t,e,n){t.removeEventListener(e,n,!1)};be._data=function(t){return this.cache[t[this.expando]]||{}};var Oi=/([\:\-\_]+(.))/g,Ei=/^moz([A-Z])/,ji={mouseleave:"mouseout",mouseenter:"mouseover"},Ni=r("jqLite"),Ti=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,Mi=/<|&#?\w+;/,Pi=/<([\w:]+)/,Vi=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,qi={option:[1,'<select multiple="multiple">',"</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};qi.optgroup=qi.option,qi.tbody=qi.tfoot=qi.colgroup=qi.caption=qi.thead,qi.th=qi.td;var Di=be.prototype={ready:function(n){function r(){i||(i=!0,n())}var i=!1;"complete"===e.readyState?setTimeout(r):(this.on("DOMContentLoaded",r),be(t).on("load",r))},toString:function(){var t=[];return a(this,function(e){t.push(""+e)}),"["+t.join(", ")+"]"},eq:function(t){return t>=0?Qr(this[t]):Qr(this[this.length+t])},length:0,push:ii,sort:[].sort,splice:[].splice},Ri={};a("multiple,selected,checked,disabled,readOnly,required,open".split(","),function(t){Ri[Wr(t)]=t});var Ii={};a("input,select,option,textarea,button,form,details".split(","),function(t){Ii[t]=!0});var _i={ngMinlength:"minlength",ngMaxlength:"maxlength",ngMin:"min",ngMax:"max",ngPattern:"pattern"};a({data:Ae,removeData:Se},function(t,e){be[e]=t}),a({data:Ae,inheritedData:Me,scope:function(t){return Qr.data(t,"$scope")||Me(t.parentNode||t,["$isolateScope","$scope"])},isolateScope:function(t){return Qr.data(t,"$isolateScope")||Qr.data(t,"$isolateScopeNoTemplate")},controller:Te,injector:function(t){return Me(t,"$injector")},removeAttr:function(t,e){t.removeAttribute(e)},hasClass:Oe,css:function(t,e,n){return e=$e(e),v(n)?(t.style[e]=n,void 0):t.style[e]},attr:function(t,e,r){var i=Wr(e);if(Ri[i]){if(!v(r))return t[e]||(t.attributes.getNamedItem(e)||p).specified?i:n;r?(t[e]=!0,t.setAttribute(e,i)):(t[e]=!1,t.removeAttribute(i))}else if(v(r))t.setAttribute(e,r);else if(t.getAttribute){var a=t.getAttribute(e,2);return null===a?n:a}},prop:function(t,e,n){return v(n)?(t[e]=n,void 0):t[e]},text:function(){function t(t,e){if(g(e)){var n=t.nodeType;return n===gi||n===vi?t.textContent:""}t.textContent=e}return t.$dv="",t}(),val:function(t,e){if(g(e)){if(t.multiple&&"select"===V(t)){var n=[];return a(t.options,function(t){t.selected&&n.push(t.value||t.text)}),0===n.length?null:n}return t.value}t.value=e},html:function(t,e){return g(e)?t.innerHTML:(xe(t,!0),t.innerHTML=e,void 0)},empty:Pe},function(t,e){be.prototype[e]=function(e,r){var i,a,o=this.length;if(t!==Pe&&(2==t.length&&t!==Oe&&t!==Te?e:r)===n){if(y(e)){for(i=0;o>i;i++)if(t===Ae)t(this[i],e);else for(a in e)t(this[i],a,e[a]);return this}for(var s=t.$dv,u=s===n?Math.min(o,1):o,l=0;u>l;l++){var c=t(this[l],e,r);s=s?s+c:c}return s}for(i=0;o>i;i++)t(this[i],e,r);return this}}),a({removeData:Se,on:function zo(t,e,n,r){if(v(r))throw Ni("onargs","jqLite#on() does not support the `selector` or `eventData` parameters");if(ge(t)){var i=Ce(t,!0),a=i.events,o=i.handle;o||(o=i.handle=Ie(t,a));for(var s=e.indexOf(" ")>=0?e.split(" "):[e],u=s.length;u--;){e=s[u];var l=a[e];l||(a[e]=[],"mouseenter"===e||"mouseleave"===e?zo(t,ji[e],function(t){var n=this,r=t.relatedTarget;(!r||r!==n&&!n.contains(r))&&o(t,e)}):"$destroy"!==e&&Ci(t,e,o),l=a[e]),l.push(n)}}},off:ke,one:function(t,e,n){t=Qr(t),t.on(e,function r(){t.off(e,n),t.off(e,r)}),t.on(e,n)},replaceWith:function(t,e){var n,r=t.parentNode;xe(t),a(new be(e),function(e){n?r.insertBefore(e,n.nextSibling):r.replaceChild(e,t),n=e})},children:function(t){var e=[];return a(t.childNodes,function(t){t.nodeType===gi&&e.push(t)}),e},contents:function(t){return t.contentDocument||t.childNodes||[]},append:function(t,e){var n=t.nodeType;if(n===gi||n===wi){e=new be(e);for(var r=0,i=e.length;i>r;r++){var a=e[r];t.appendChild(a)}}},prepend:function(t,e){if(t.nodeType===gi){var n=t.firstChild;a(new be(e),function(e){t.insertBefore(e,n)})}},wrap:function(t,e){e=Qr(e).eq(0).clone()[0];var n=t.parentNode;n&&n.replaceChild(e,t),e.appendChild(t)},remove:Ve,detach:function(t){Ve(t,!0)},after:function(t,e){var n=t,r=t.parentNode;e=new be(e);for(var i=0,a=e.length;a>i;i++){var o=e[i];r.insertBefore(o,n.nextSibling),n=o}},addClass:je,removeClass:Ee,toggleClass:function(t,e,n){e&&a(e.split(" "),function(e){var r=n;g(r)&&(r=!Oe(t,e)),(r?je:Ee)(t,e)})},parent:function(t){var e=t.parentNode;return e&&e.nodeType!==wi?e:null},next:function(t){return t.nextElementSibling},find:function(t,e){return t.getElementsByTagName?t.getElementsByTagName(e):[]},clone:we,triggerHandler:function(t,e,n){var r,i,o,s=e.type||e,u=Ce(t),l=u&&u.events,c=l&&l[s];c&&(r={preventDefault:function(){this.defaultPrevented=!0},isDefaultPrevented:function(){return this.defaultPrevented===!0},stopImmediatePropagation:function(){this.immediatePropagationStopped=!0},isImmediatePropagationStopped:function(){return this.immediatePropagationStopped===!0},stopPropagation:p,type:s,target:t},e.type&&(r=f(r,e)),i=R(c),o=n?[r].concat(n):[r],a(i,function(e){r.isImmediatePropagationStopped()||e.apply(t,o)}))}},function(t,e){be.prototype[e]=function(e,n,r){for(var i,a=0,o=this.length;o>a;a++)g(i)?(i=t(this[a],e,n,r),v(i)&&(i=Qr(i))):Ne(i,t(this[a],e,n,r));return v(i)?i:this},be.prototype.bind=be.prototype.on,be.prototype.unbind=be.prototype.off}),Le.prototype={put:function(t,e){this[Ue(t,this.nextUid)]=e},get:function(t){return this[Ue(t,this.nextUid)]},remove:function(t){var e=this[t=Ue(t,this.nextUid)];return delete this[t],e}};var Ui=/^function\s*[^\(]*\(\s*([^\)]*)\)/m,Li=/,/,Fi=/^\s*(_?)(\S+?)\1\s*$/,Hi=/((\/\/.*$)|(\/\*[\s\S]*?\*\/))/gm,Bi=r("$injector");Be.$$annotate=He;var zi=r("$animate"),Gi=["$provide",function(t){this.$$selectors={},this.register=function(e,n){var r=e+"-animation";if(e&&"."!=e.charAt(0))throw zi("notcsel","Expecting class selector starting with '.' got '{0}'.",e);this.$$selectors[e.substr(1)]=r,t.factory(r,n)},this.classNameFilter=function(t){return 1===arguments.length&&(this.$$classNameFilter=t instanceof RegExp?t:null),this.$$classNameFilter},this.$get=["$$q","$$asyncCallback","$rootScope",function(t,e,n){function r(e){var r,i=t.defer();return i.promise.$$cancelFn=function(){r&&r()},n.$$postDigest(function(){r=e(function(){i.resolve()})}),i.promise}function i(t,e){var n=[],r=[],i=le();return a((t.attr("class")||"").split(/\s+/),function(t){i[t]=!0}),a(e,function(t,e){var a=i[e];t===!1&&a?r.push(e):t!==!0||a||n.push(e)}),n.length+r.length>0&&[n.length?n:null,r.length?r:null]}function o(t,e,n){for(var r=0,i=e.length;i>r;++r){var a=e[r];t[a]=n}}function s(){return l||(l=t.defer(),e(function(){l.resolve(),l=null})),l.promise}function u(t,e){if(si.isObject(e)){var n=f(e.from||{},e.to||{});t.css(n)}}var l;return{animate:function(t,e,n){return u(t,{from:e,to:n}),s()},enter:function(t,e,n,r){return u(t,r),n?n.after(t):e.prepend(t),s()},leave:function(t){return t.remove(),s()},move:function(t,e,n,r){return this.enter(t,e,n,r)},addClass:function(t,e,n){return this.setClass(t,e,[],n)},$$addClassImmediately:function(t,e,n){return t=Qr(t),e=b(e)?e:ci(e)?e.join(" "):"",a(t,function(t){je(t,e)}),u(t,n),s()},removeClass:function(t,e,n){return this.setClass(t,[],e,n)},$$removeClassImmediately:function(t,e,n){return t=Qr(t),e=b(e)?e:ci(e)?e.join(" "):"",a(t,function(t){Ee(t,e)}),u(t,n),s()},setClass:function(t,e,n,a){var s=this,u="$$animateClasses",l=!1;t=Qr(t);var c=t.data(u);c?a&&c.options&&(c.options=si.extend(c.options||{},a)):(c={classes:{},options:a},l=!0);var f=c.classes;return e=ci(e)?e:e.split(" "),n=ci(n)?n:n.split(" "),o(f,e,!0),o(f,n,!1),l&&(c.promise=r(function(e){var n=t.data(u);if(t.removeData(u),n){var r=i(t,n.classes);r&&s.$$setClassImmediately(t,r[0],r[1],n.options)}e()}),t.data(u,c)),c.promise},$$setClassImmediately:function(t,e,n,r){return e&&this.$$addClassImmediately(t,e),n&&this.$$removeClassImmediately(t,n),u(t,r),s()},enabled:p,cancel:p}}]}],Wi=r("$compile");Ke.$inject=["$provide","$$sanitizeUriProvider"];var Ji=/^((?:x|data)[\:\-_])/i,Yi=r("$controller"),Zi="application/json",Ki={"Content-Type":Zi+";charset=utf-8"},Xi=/^\[|^\{(?!\{)/,Qi={"[":/]$/,"{":/}$/},ta=/^\)\]\}',?\n/,ea=r("$interpolate"),na=/^([^\?#]*)(\?([^#]*))?(#(.*))?$/,ra={http:80,https:443,ftp:21},ia=r("$location"),aa={$$html5:!1,$$replace:!1,absUrl:jn("$$absUrl"),url:function(t){if(g(t))return this.$$url;
 +
var e=na.exec(t);return(e[1]||""===t)&&this.path(decodeURIComponent(e[1])),(e[2]||e[1]||""===t)&&this.search(e[3]||""),this.hash(e[5]||""),this},protocol:jn("$$protocol"),host:jn("$$host"),port:jn("$$port"),path:Nn("$$path",function(t){return t=null!==t?t.toString():"","/"==t.charAt(0)?t:"/"+t}),search:function(t,e){switch(arguments.length){case 0:return this.$$search;case 1:if(b(t)||w(t))t=t.toString(),this.$$search=W(t);else{if(!y(t))throw ia("isrcharg","The first argument of the `$location#search()` call must be a string or an object.");t=D(t,{}),a(t,function(e,n){null==e&&delete t[n]}),this.$$search=t}break;default:g(e)||null===e?delete this.$$search[t]:this.$$search[t]=e}return this.$$compose(),this},hash:Nn("$$hash",function(t){return null!==t?t.toString():""}),replace:function(){return this.$$replace=!0,this}};a([En,On,An],function(t){t.prototype=Object.create(aa),t.prototype.state=function(e){if(!arguments.length)return this.$$state;if(t!==An||!this.$$html5)throw ia("nostate","History API state support is available only in HTML5 mode and only in browsers supporting HTML5 History API");return this.$$state=g(e)?null:e,this}});var oa=r("$parse"),sa=Function.prototype.call,ua=Function.prototype.apply,la=Function.prototype.bind,ca=le();a({"null":function(){return null},"true":function(){return!0},"false":function(){return!1},undefined:function(){}},function(t,e){t.constant=t.literal=t.sharedGetter=!0,ca[e]=t}),ca["this"]=function(t){return t},ca["this"].sharedGetter=!0;var fa=f(le(),{"+":function(t,e,r,i){return r=r(t,e),i=i(t,e),v(r)?v(i)?r+i:r:v(i)?i:n},"-":function(t,e,n,r){return n=n(t,e),r=r(t,e),(v(n)?n:0)-(v(r)?r:0)},"*":function(t,e,n,r){return n(t,e)*r(t,e)},"/":function(t,e,n,r){return n(t,e)/r(t,e)},"%":function(t,e,n,r){return n(t,e)%r(t,e)},"===":function(t,e,n,r){return n(t,e)===r(t,e)},"!==":function(t,e,n,r){return n(t,e)!==r(t,e)},"==":function(t,e,n,r){return n(t,e)==r(t,e)},"!=":function(t,e,n,r){return n(t,e)!=r(t,e)},"<":function(t,e,n,r){return n(t,e)<r(t,e)},">":function(t,e,n,r){return n(t,e)>r(t,e)},"<=":function(t,e,n,r){return n(t,e)<=r(t,e)},">=":function(t,e,n,r){return n(t,e)>=r(t,e)},"&&":function(t,e,n,r){return n(t,e)&&r(t,e)},"||":function(t,e,n,r){return n(t,e)||r(t,e)},"!":function(t,e,n){return!n(t,e)},"=":!0,"|":!0}),da={n:"\n",f:"\f",r:"\r",t:" ",v:"�","'":"'",'"':'"'},ha=function(t){this.options=t};ha.prototype={constructor:ha,lex:function(t){for(this.text=t,this.index=0,this.tokens=[];this.index<this.text.length;){var e=this.text.charAt(this.index);if('"'===e||"'"===e)this.readString(e);else if(this.isNumber(e)||"."===e&&this.isNumber(this.peek()))this.readNumber();else if(this.isIdent(e))this.readIdent();else if(this.is(e,"(){}[].,;:?"))this.tokens.push({index:this.index,text:e}),this.index++;else if(this.isWhitespace(e))this.index++;else{var n=e+this.peek(),r=n+this.peek(2),i=fa[e],a=fa[n],o=fa[r];if(i||a||o){var s=o?r:a?n:e;this.tokens.push({index:this.index,text:s,operator:!0}),this.index+=s.length}else this.throwError("Unexpected next character ",this.index,this.index+1)}}return this.tokens},is:function(t,e){return-1!==e.indexOf(t)},peek:function(t){var e=t||1;return this.index+e<this.text.length?this.text.charAt(this.index+e):!1},isNumber:function(t){return t>="0"&&"9">=t&&"string"==typeof t},isWhitespace:function(t){return" "===t||"\r"===t||" "===t||"\n"===t||"�"===t||" "===t},isIdent:function(t){return t>="a"&&"z">=t||t>="A"&&"Z">=t||"_"===t||"$"===t},isExpOperator:function(t){return"-"===t||"+"===t||this.isNumber(t)},throwError:function(t,e,n){n=n||this.index;var r=v(e)?"s "+e+"-"+this.index+" ["+this.text.substring(e,n)+"]":" "+n;throw oa("lexerr","Lexer Error: {0} at column{1} in expression [{2}].",t,r,this.text)},readNumber:function(){for(var t="",e=this.index;this.index<this.text.length;){var n=Wr(this.text.charAt(this.index));if("."==n||this.isNumber(n))t+=n;else{var r=this.peek();if("e"==n&&this.isExpOperator(r))t+=n;else if(this.isExpOperator(n)&&r&&this.isNumber(r)&&"e"==t.charAt(t.length-1))t+=n;else{if(!this.isExpOperator(n)||r&&this.isNumber(r)||"e"!=t.charAt(t.length-1))break;this.throwError("Invalid exponent")}}this.index++}this.tokens.push({index:e,text:t,constant:!0,value:Number(t)})},readIdent:function(){for(var t=this.index;this.index<this.text.length;){var e=this.text.charAt(this.index);if(!this.isIdent(e)&&!this.isNumber(e))break;this.index++}this.tokens.push({index:t,text:this.text.slice(t,this.index),identifier:!0})},readString:function(t){var e=this.index;this.index++;for(var n="",r=t,i=!1;this.index<this.text.length;){var a=this.text.charAt(this.index);if(r+=a,i){if("u"===a){var o=this.text.substring(this.index+1,this.index+5);o.match(/[\da-f]{4}/i)||this.throwError("Invalid unicode escape [\\u"+o+"]"),this.index+=4,n+=String.fromCharCode(parseInt(o,16))}else{var s=da[a];n+=s||a}i=!1}else if("\\"===a)i=!0;else{if(a===t)return this.index++,this.tokens.push({index:e,text:r,constant:!0,value:n}),void 0;n+=a}this.index++}this.throwError("Unterminated quote",e)}};var pa=function(t,e,n){this.lexer=t,this.$filter=e,this.options=n};pa.ZERO=f(function(){return 0},{sharedGetter:!0,constant:!0}),pa.prototype={constructor:pa,parse:function(t){this.text=t,this.tokens=this.lexer.lex(t);var e=this.statements();return 0!==this.tokens.length&&this.throwError("is an unexpected token",this.tokens[0]),e.literal=!!e.literal,e.constant=!!e.constant,e},primary:function(){var t;this.expect("(")?(t=this.filterChain(),this.consume(")")):this.expect("[")?t=this.arrayDeclaration():this.expect("{")?t=this.object():this.peek().identifier&&this.peek().text in ca?t=ca[this.consume().text]:this.peek().identifier?t=this.identifier():this.peek().constant?t=this.constant():this.throwError("not a primary expression",this.peek());for(var e,n;e=this.expect("(","[",".");)"("===e.text?(t=this.functionCall(t,n),n=null):"["===e.text?(n=t,t=this.objectIndex(t)):"."===e.text?(n=t,t=this.fieldAccess(t)):this.throwError("IMPOSSIBLE");return t},throwError:function(t,e){throw oa("syntax","Syntax Error: Token '{0}' {1} at column {2} of the expression [{3}] starting at [{4}].",e.text,t,e.index+1,this.text,this.text.substring(e.index))},peekToken:function(){if(0===this.tokens.length)throw oa("ueoe","Unexpected end of expression: {0}",this.text);return this.tokens[0]},peek:function(t,e,n,r){return this.peekAhead(0,t,e,n,r)},peekAhead:function(t,e,n,r,i){if(this.tokens.length>t){var a=this.tokens[t],o=a.text;if(o===e||o===n||o===r||o===i||!e&&!n&&!r&&!i)return a}return!1},expect:function(t,e,n,r){var i=this.peek(t,e,n,r);return i?(this.tokens.shift(),i):!1},consume:function(t){if(0===this.tokens.length)throw oa("ueoe","Unexpected end of expression: {0}",this.text);var e=this.expect(t);return e||this.throwError("is unexpected, expecting ["+t+"]",this.peek()),e},unaryFn:function(t,e){var n=fa[t];return f(function(t,r){return n(t,r,e)},{constant:e.constant,inputs:[e]})},binaryFn:function(t,e,n,r){var i=fa[e];return f(function(e,r){return i(e,r,t,n)},{constant:t.constant&&n.constant,inputs:!r&&[t,n]})},identifier:function(){for(var t=this.consume().text;this.peek(".")&&this.peekAhead(1).identifier&&!this.peekAhead(2,"(");)t+=this.consume().text+this.consume().text;return Ln(t,this.options,this.text)},constant:function(){var t=this.consume().value;return f(function(){return t},{constant:!0,literal:!0})},statements:function(){for(var t=[];;)if(this.tokens.length>0&&!this.peek("}",")",";","]")&&t.push(this.filterChain()),!this.expect(";"))return 1===t.length?t[0]:function(e,n){for(var r,i=0,a=t.length;a>i;i++)r=t[i](e,n);return r}},filterChain:function(){for(var t,e=this.expression();t=this.expect("|");)e=this.filter(e);return e},filter:function(t){var e,r,i=this.$filter(this.consume().text);if(this.peek(":"))for(e=[],r=[];this.expect(":");)e.push(this.expression());var a=[t].concat(e||[]);return f(function(a,o){var s=t(a,o);if(r){r[0]=s;for(var u=e.length;u--;)r[u+1]=e[u](a,o);return i.apply(n,r)}return i(s)},{constant:!i.$stateful&&a.every(Dn),inputs:!i.$stateful&&a})},expression:function(){return this.assignment()},assignment:function(){var t,e,n=this.ternary();return(e=this.expect("="))?(n.assign||this.throwError("implies assignment but ["+this.text.substring(0,e.index)+"] can not be assigned to",e),t=this.ternary(),f(function(e,r){return n.assign(e,t(e,r),r)},{inputs:[n,t]})):n},ternary:function(){var t,e,n=this.logicalOR();if((e=this.expect("?"))&&(t=this.assignment(),this.consume(":"))){var r=this.assignment();return f(function(e,i){return n(e,i)?t(e,i):r(e,i)},{constant:n.constant&&t.constant&&r.constant})}return n},logicalOR:function(){for(var t,e=this.logicalAND();t=this.expect("||");)e=this.binaryFn(e,t.text,this.logicalAND(),!0);return e},logicalAND:function(){for(var t,e=this.equality();t=this.expect("&&");)e=this.binaryFn(e,t.text,this.equality(),!0);return e},equality:function(){for(var t,e=this.relational();t=this.expect("==","!=","===","!==");)e=this.binaryFn(e,t.text,this.relational());return e},relational:function(){for(var t,e=this.additive();t=this.expect("<",">","<=",">=");)e=this.binaryFn(e,t.text,this.additive());return e},additive:function(){for(var t,e=this.multiplicative();t=this.expect("+","-");)e=this.binaryFn(e,t.text,this.multiplicative());return e},multiplicative:function(){for(var t,e=this.unary();t=this.expect("*","/","%");)e=this.binaryFn(e,t.text,this.unary());return e},unary:function(){var t;return this.expect("+")?this.primary():(t=this.expect("-"))?this.binaryFn(pa.ZERO,t.text,this.unary()):(t=this.expect("!"))?this.unaryFn(t.text,this.unary()):this.primary()},fieldAccess:function(t){var e=this.identifier();return f(function(r,i,a){var o=a||t(r,i);return null==o?n:e(o)},{assign:function(n,r,i){var a=t(n,i);return a||t.assign(n,a={},i),e.assign(a,r)}})},objectIndex:function(t){var e=this.text,r=this.expression();return this.consume("]"),f(function(i,a){var o,s=t(i,a),u=r(i,a);return Pn(u,e),s?o=Vn(s[u],e):n},{assign:function(n,i,a){var o=Pn(r(n,a),e),s=Vn(t(n,a),e);return s||t.assign(n,s={},a),s[o]=i}})},functionCall:function(t,e){var r=[];if(")"!==this.peekToken().text)do r.push(this.expression());while(this.expect(","));this.consume(")");var i=this.text,a=r.length?[]:null;return function(o,s){var u=e?e(o,s):v(e)?n:o,l=t(o,s,u)||p;if(a)for(var c=r.length;c--;)a[c]=Vn(r[c](o,s),i);Vn(u,i),qn(l,i);var f=l.apply?l.apply(u,a):l(a[0],a[1],a[2],a[3],a[4]);return a&&(a.length=0),Vn(f,i)}},arrayDeclaration:function(){var t=[];if("]"!==this.peekToken().text)do{if(this.peek("]"))break;t.push(this.expression())}while(this.expect(","));return this.consume("]"),f(function(e,n){for(var r=[],i=0,a=t.length;a>i;i++)r.push(t[i](e,n));return r},{literal:!0,constant:t.every(Dn),inputs:t})},object:function(){var t=[],e=[];if("}"!==this.peekToken().text)do{if(this.peek("}"))break;var n=this.consume();n.constant?t.push(n.value):n.identifier?t.push(n.text):this.throwError("invalid key",n),this.consume(":"),e.push(this.expression())}while(this.expect(","));return this.consume("}"),f(function(n,r){for(var i={},a=0,o=e.length;o>a;a++)i[t[a]]=e[a](n,r);return i},{literal:!0,constant:e.every(Dn),inputs:e})}};var $a=le(),ma=le(),ga=Object.prototype.valueOf,va=r("$sce"),ya={HTML:"html",CSS:"css",URL:"url",RESOURCE_URL:"resourceUrl",JS:"js"},Wi=r("$compile"),ba=e.createElement("a"),wa=ir(t.location.href);sr.$inject=["$provide"],fr.$inject=["$locale"],dr.$inject=["$locale"];var xa=".",ka={yyyy:$r("FullYear",4),yy:$r("FullYear",2,0,!0),y:$r("FullYear",1),MMMM:mr("Month"),MMM:mr("Month",!0),MM:$r("Month",2,1),M:$r("Month",1,1),dd:$r("Date",2),d:$r("Date",1),HH:$r("Hours",2),H:$r("Hours",1),hh:$r("Hours",2,-12),h:$r("Hours",1,-12),mm:$r("Minutes",2),m:$r("Minutes",1),ss:$r("Seconds",2),s:$r("Seconds",1),sss:$r("Milliseconds",3),EEEE:mr("Day"),EEE:mr("Day",!0),a:wr,Z:gr,ww:br(2),w:br(1)},Sa=/((?:[^yMdHhmsaZEw']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|d+|H+|h+|m+|s+|a|Z|w+))(.*)/,Ca=/^\-?\d+$/;xr.$inject=["$locale"];var Aa=m(Wr),Oa=m(Yr);Cr.$inject=["$parse"];var Ea=m({restrict:"E",compile:function(t,e){return e.href||e.xlinkHref||e.name?void 0:function(t,e){if("a"===e[0].nodeName.toLowerCase()){var n="[object SVGAnimatedString]"===ai.call(e.prop("href"))?"xlink:href":"href";e.on("click",function(t){e.attr(n)||t.preventDefault()})}}}}),ja={};a(Ri,function(t,e){if("multiple"!=t){var n=Xe("ng-"+e);ja[n]=function(){return{restrict:"A",priority:100,link:function(t,r,i){t.$watch(i[n],function(t){i.$set(e,!!t)})}}}}}),a(_i,function(t,e){ja[e]=function(){return{priority:100,link:function(t,n,r){if("ngPattern"===e&&"/"==r.ngPattern.charAt(0)){var i=r.ngPattern.match(zr);if(i)return r.$set("ngPattern",new RegExp(i[1],i[2])),void 0}t.$watch(r[e],function(t){r.$set(e,t)})}}}}),a(["src","srcset","href"],function(t){var e=Xe("ng-"+t);ja[e]=function(){return{priority:99,link:function(n,r,i){var a=t,o=t;"href"===t&&"[object SVGAnimatedString]"===ai.call(r.prop("href"))&&(o="xlinkHref",i.$attr[o]="xlink:href",a=null),i.$observe(e,function(e){return e?(i.$set(o,e),Xr&&a&&r.prop(a,i[o]),void 0):("href"===t&&i.$set(o,null),void 0)})}}}});var Na={$addControl:p,$$renameControl:Or,$removeControl:p,$setValidity:p,$setDirty:p,$setPristine:p,$setSubmitted:p},Ta="ng-submitted";Er.$inject=["$element","$attrs","$scope","$animate","$interpolate"];var Ma=function(t){return["$timeout",function(e){var r={name:"form",restrict:t?"EAC":"E",controller:Er,compile:function(t){return t.addClass(ho).addClass(co),{pre:function(t,r,i,a){if(!("action"in i)){var o=function(e){t.$apply(function(){a.$commitViewValue(),a.$setSubmitted()}),e.preventDefault()};Ci(r[0],"submit",o),r.on("$destroy",function(){e(function(){Ai(r[0],"submit",o)},0,!1)})}var s=a.$$parentForm,u=a.$name;u&&(Rn(t,null,u,a,u),i.$observe(i.name?"name":"ngForm",function(e){u!==e&&(Rn(t,null,u,n,u),u=e,Rn(t,null,u,a,u),s.$$renameControl(a,u))})),r.on("$destroy",function(){s.$removeControl(a),u&&Rn(t,null,u,n,u),f(a,Na)})}}}};return r}]},Pa=Ma(),Va=Ma(!0),qa=/\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z)/,Da=/^(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?$/,Ra=/^[a-z0-9!#$%&'*+\/=?^_`{|}~.-]+@[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/i,Ia=/^\s*(\-|\+)?(\d+|(\d*(\.\d*)))\s*$/,_a=/^(\d{4})-(\d{2})-(\d{2})$/,Ua=/^(\d{4})-(\d\d)-(\d\d)T(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/,La=/^(\d{4})-W(\d\d)$/,Fa=/^(\d{4})-(\d\d)$/,Ha=/^(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/,Ba={text:Nr,date:Vr("date",_a,Pr(_a,["yyyy","MM","dd"]),"yyyy-MM-dd"),"datetime-local":Vr("datetimelocal",Ua,Pr(Ua,["yyyy","MM","dd","HH","mm","ss","sss"]),"yyyy-MM-ddTHH:mm:ss.sss"),time:Vr("time",Ha,Pr(Ha,["HH","mm","ss","sss"]),"HH:mm:ss.sss"),week:Vr("week",La,Mr,"yyyy-Www"),month:Vr("month",Fa,Pr(Fa,["yyyy","MM"]),"yyyy-MM"),number:Dr,url:Rr,email:Ir,radio:_r,checkbox:Lr,hidden:p,button:p,submit:p,reset:p,file:p},za=["$browser","$sniffer","$filter","$parse",function(t,e,n,r){return{restrict:"E",require:["?ngModel"],link:{pre:function(i,a,o,s){s[0]&&(Ba[Wr(o.type)]||Ba.text)(i,a,o,s[0],e,t,n,r)}}}}],Ga=/^(true|false|\d+)$/,Wa=function(){return{restrict:"A",priority:100,compile:function(t,e){return Ga.test(e.ngValue)?function(t,e,n){n.$set("value",t.$eval(n.ngValue))}:function(t,e,n){t.$watch(n.ngValue,function(t){n.$set("value",t)})}}}},Ja=["$compile",function(t){return{restrict:"AC",compile:function(e){return t.$$addBindingClass(e),function(e,r,i){t.$$addBindingInfo(r,i.ngBind),r=r[0],e.$watch(i.ngBind,function(t){r.textContent=t===n?"":t})}}}}],Ya=["$interpolate","$compile",function(t,e){return{compile:function(r){return e.$$addBindingClass(r),function(r,i,a){var o=t(i.attr(a.$attr.ngBindTemplate));e.$$addBindingInfo(i,o.expressions),i=i[0],a.$observe("ngBindTemplate",function(t){i.textContent=t===n?"":t})}}}}],Za=["$sce","$parse","$compile",function(t,e,n){return{restrict:"A",compile:function(r,i){var a=e(i.ngBindHtml),o=e(i.ngBindHtml,function(t){return(t||"").toString()});return n.$$addBindingClass(r),function(e,r,i){n.$$addBindingInfo(r,i.ngBindHtml),e.$watch(o,function(){r.html(t.getTrustedHtml(a(e))||"")})}}}}],Ka=m({restrict:"A",require:"ngModel",link:function(t,e,n,r){r.$viewChangeListeners.push(function(){t.$eval(n.ngChange)})}}),Xa=Fr("",!0),Qa=Fr("Odd",0),to=Fr("Even",1),eo=Ar({compile:function(t,e){e.$set("ngCloak",n),t.removeClass("ng-cloak")}}),no=[function(){return{restrict:"A",scope:!0,controller:"@",priority:500}}],ro={},io={blur:!0,focus:!0};a("click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave keydown keyup keypress submit focus blur copy cut paste".split(" "),function(t){var e=Xe("ng-"+t);ro[e]=["$parse","$rootScope",function(n,r){return{restrict:"A",compile:function(i,a){var o=n(a[e],null,!0);return function(e,n){n.on(t,function(n){var i=function(){o(e,{$event:n})};io[t]&&r.$$phase?e.$evalAsync(i):e.$apply(i)})}}}}]});var ao=["$animate",function(t){return{multiElement:!0,transclude:"element",priority:600,terminal:!0,restrict:"A",$$tlb:!0,link:function(n,r,i,a,o){var s,u,l;n.$watch(i.ngIf,function(n){n?u||o(function(n,a){u=a,n[n.length++]=e.createComment(" end ngIf: "+i.ngIf+" "),s={clone:n},t.enter(n,r.parent(),r)}):(l&&(l.remove(),l=null),u&&(u.$destroy(),u=null),s&&(l=ue(s.clone),t.leave(l).then(function(){l=null}),s=null))})}}}],oo=["$templateRequest","$anchorScroll","$animate","$sce",function(t,e,n,r){return{restrict:"ECA",priority:400,terminal:!0,transclude:"element",controller:si.noop,compile:function(i,a){var o=a.ngInclude||a.src,s=a.onload||"",u=a.autoscroll;return function(i,a,l,c,f){var d,h,p,$=0,m=function(){h&&(h.remove(),h=null),d&&(d.$destroy(),d=null),p&&(n.leave(p).then(function(){h=null}),h=p,p=null)};i.$watch(r.parseAsResourceUrl(o),function(r){var o=function(){!v(u)||u&&!i.$eval(u)||e()},l=++$;r?(t(r,!0).then(function(t){if(l===$){var e=i.$new();c.template=t;var u=f(e,function(t){m(),n.enter(t,null,a).then(o)});d=e,p=u,d.$emit("$includeContentLoaded",r),i.$eval(s)}},function(){l===$&&(m(),i.$emit("$includeContentError",r))}),i.$emit("$includeContentRequested",r)):(m(),c.template=null)})}}}}],so=["$compile",function(t){return{restrict:"ECA",priority:-400,require:"ngInclude",link:function(n,r,i,a){return/SVG/.test(r[0].toString())?(r.empty(),t(ve(a.template,e).childNodes)(n,function(t){r.append(t)},{futureParentElement:r}),void 0):(r.html(a.template),t(r.contents())(n),void 0)}}}],uo=Ar({priority:450,compile:function(){return{pre:function(t,e,n){t.$eval(n.ngInit)}}}}),lo=function(){return{restrict:"A",priority:100,require:"ngModel",link:function(t,e,r,i){var o=e.attr(r.$attr.ngList)||", ",s="false"!==r.ngTrim,u=s?fi(o):o,l=function(t){if(!g(t)){var e=[];return t&&a(t.split(u),function(t){t&&e.push(s?fi(t):t)}),e}};i.$parsers.push(l),i.$formatters.push(function(t){return ci(t)?t.join(o):n}),i.$isEmpty=function(t){return!t||!t.length}}}},co="ng-valid",fo="ng-invalid",ho="ng-pristine",po="ng-dirty",$o="ng-untouched",mo="ng-touched",go="ng-pending",vo=new r("ngModel"),yo=["$scope","$exceptionHandler","$attrs","$element","$parse","$animate","$timeout","$rootScope","$q","$interpolate",function(t,e,r,i,o,s,u,l,c,f){this.$viewValue=Number.NaN,this.$modelValue=Number.NaN,this.$$rawModelValue=n,this.$validators={},this.$asyncValidators={},this.$parsers=[],this.$formatters=[],this.$viewChangeListeners=[],this.$untouched=!0,this.$touched=!1,this.$pristine=!0,this.$dirty=!1,this.$valid=!0,this.$invalid=!1,this.$error={},this.$$success={},this.$pending=n,this.$name=f(r.name||"",!1)(t);var d=o(r.ngModel),h=d.assign,$=d,m=h,y=null,b=this;this.$$setOptions=function(t){if(b.$options=t,t&&t.getterSetter){var e=o(r.ngModel+"()"),n=o(r.ngModel+"($$$p)");$=function(t){var n=d(t);return k(n)&&(n=e(t)),n},m=function(t){k(d(t))?n(t,{$$$p:b.$modelValue}):h(t,b.$modelValue)}}else if(!d.assign)throw vo("nonassign","Expression '{0}' is non-assignable. Element: {1}",r.ngModel,z(i))},this.$render=p,this.$isEmpty=function(t){return g(t)||""===t||null===t||t!==t};var x=i.inheritedData("$formController")||Na,S=0;Hr({ctrl:this,$element:i,set:function(t,e){t[e]=!0},unset:function(t,e){delete t[e]},parentForm:x,$animate:s}),this.$setPristine=function(){b.$dirty=!1,b.$pristine=!0,s.removeClass(i,po),s.addClass(i,ho)},this.$setDirty=function(){b.$dirty=!0,b.$pristine=!1,s.removeClass(i,ho),s.addClass(i,po),x.$setDirty()},this.$setUntouched=function(){b.$touched=!1,b.$untouched=!0,s.setClass(i,$o,mo)},this.$setTouched=function(){b.$touched=!0,b.$untouched=!1,s.setClass(i,mo,$o)},this.$rollbackViewValue=function(){u.cancel(y),b.$viewValue=b.$$lastCommittedViewValue,b.$render()},this.$validate=function(){if(!w(b.$modelValue)||!isNaN(b.$modelValue)){var t=b.$$lastCommittedViewValue,e=b.$$rawModelValue,r=b.$$parserName||"parse",i=b.$error[r]?!1:n,a=b.$valid,o=b.$modelValue,s=b.$options&&b.$options.allowInvalid;b.$$runValidators(i,e,t,function(t){s||a===t||(b.$modelValue=t?e:n,b.$modelValue!==o&&b.$$writeModelToScope())})}},this.$$runValidators=function(t,e,r,i){function o(t){var e=b.$$parserName||"parse";if(t===n)l(e,null);else if(l(e,t),!t)return a(b.$validators,function(t,e){l(e,null)}),a(b.$asyncValidators,function(t,e){l(e,null)}),!1;return!0}function s(){var t=!0;return a(b.$validators,function(n,i){var a=n(e,r);t=t&&a,l(i,a)}),t?!0:(a(b.$asyncValidators,function(t,e){l(e,null)}),!1)}function u(){var t=[],i=!0;a(b.$asyncValidators,function(a,o){var s=a(e,r);if(!T(s))throw vo("$asyncValidators","Expected asynchronous validator to return a promise but got '{0}' instead.",s);l(o,n),t.push(s.then(function(){l(o,!0)},function(){i=!1,l(o,!1)}))}),t.length?c.all(t).then(function(){f(i)},p):f(!0)}function l(t,e){d===S&&b.$setValidity(t,e)}function f(t){d===S&&i(t)}S++;var d=S;return o(t)?s()?(u(),void 0):(f(!1),void 0):(f(!1),void 0)},this.$commitViewValue=function(){var t=b.$viewValue;u.cancel(y),(b.$$lastCommittedViewValue!==t||""===t&&b.$$hasNativeValidators)&&(b.$$lastCommittedViewValue=t,b.$pristine&&this.$setDirty(),this.$$parseAndValidate())},this.$$parseAndValidate=function(){function e(){b.$modelValue!==s&&b.$$writeModelToScope()}var r=b.$$lastCommittedViewValue,i=r,a=g(i)?n:!0;if(a)for(var o=0;o<b.$parsers.length;o++)if(i=b.$parsers[o](i),g(i)){a=!1;break}w(b.$modelValue)&&isNaN(b.$modelValue)&&(b.$modelValue=$(t));var s=b.$modelValue,u=b.$options&&b.$options.allowInvalid;b.$$rawModelValue=i,u&&(b.$modelValue=i,e()),b.$$runValidators(a,i,b.$$lastCommittedViewValue,function(t){u||(b.$modelValue=t?i:n,e())})},this.$$writeModelToScope=function(){m(t,b.$modelValue),a(b.$viewChangeListeners,function(t){try{t()}catch(n){e(n)}})},this.$setViewValue=function(t,e){b.$viewValue=t,(!b.$options||b.$options.updateOnDefault)&&b.$$debounceViewValueCommit(e)},this.$$debounceViewValueCommit=function(e){var n,r=0,i=b.$options;i&&v(i.debounce)&&(n=i.debounce,w(n)?r=n:w(n[e])?r=n[e]:w(n["default"])&&(r=n["default"])),u.cancel(y),r?y=u(function(){b.$commitViewValue()},r):l.$$phase?b.$commitViewValue():t.$apply(function(){b.$commitViewValue()})},t.$watch(function(){var e=$(t);if(e!==b.$modelValue){b.$modelValue=b.$$rawModelValue=e;for(var r=b.$formatters,i=r.length,a=e;i--;)a=r[i](a);b.$viewValue!==a&&(b.$viewValue=b.$$lastCommittedViewValue=a,b.$render(),b.$$runValidators(n,e,a,p))}return e})}],bo=["$rootScope",function(t){return{restrict:"A",require:["ngModel","^?form","^?ngModelOptions"],controller:yo,priority:1,compile:function(e){return e.addClass(ho).addClass($o).addClass(co),{pre:function(t,e,n,r){var i=r[0],a=r[1]||Na;i.$$setOptions(r[2]&&r[2].$options),a.$addControl(i),n.$observe("name",function(t){i.$name!==t&&a.$$renameControl(i,t)}),t.$on("$destroy",function(){a.$removeControl(i)})},post:function(e,n,r,i){var a=i[0];a.$options&&a.$options.updateOn&&n.on(a.$options.updateOn,function(t){a.$$debounceViewValueCommit(t&&t.type)}),n.on("blur",function(){a.$touched||(t.$$phase?e.$evalAsync(a.$setTouched):e.$apply(a.$setTouched))})}}}}}],wo=/(\s+|^)default(\s+|$)/,xo=function(){return{restrict:"A",controller:["$scope","$attrs",function(t,e){var r=this;this.$options=t.$eval(e.ngModelOptions),this.$options.updateOn!==n?(this.$options.updateOnDefault=!1,this.$options.updateOn=fi(this.$options.updateOn.replace(wo,function(){return r.$options.updateOnDefault=!0," "}))):this.$options.updateOnDefault=!0}]}},ko=Ar({terminal:!0,priority:1e3}),So=["$locale","$interpolate",function(t,e){var n=/{}/g,r=/^when(Minus)?(.+)$/;return{restrict:"EA",link:function(i,o,s){function u(t){o.text(t||"")}var l,c=s.count,f=s.$attr.when&&o.attr(s.$attr.when),d=s.offset||0,h=i.$eval(f)||{},p={},$=e.startSymbol(),m=e.endSymbol(),g=$+c+"-"+d+m,v=si.noop;a(s,function(t,e){var n=r.exec(e);if(n){var i=(n[1]?"-":"")+Wr(n[2]);h[i]=o.attr(s.$attr[e])}}),a(h,function(t,r){p[r]=e(t.replace(n,g))}),i.$watch(c,function(e){var n=parseFloat(e),r=isNaN(n);r||n in h||(n=t.pluralCat(n-d)),n===l||r&&isNaN(l)||(v(),v=i.$watch(p[n],u),l=n)})}}}],Co=["$parse","$animate",function(t,o){var s="$$NG_REMOVED",u=r("ngRepeat"),l=function(t,e,n,r,i,a,o){t[n]=r,i&&(t[i]=a),t.$index=e,t.$first=0===e,t.$last=e===o-1,t.$middle=!(t.$first||t.$last),t.$odd=!(t.$even=0===(1&e))},c=function(t){return t.clone[0]},f=function(t){return t.clone[t.clone.length-1]};return{restrict:"A",multiElement:!0,transclude:"element",priority:1e3,terminal:!0,$$tlb:!0,compile:function(r,d){var h=d.ngRepeat,p=e.createComment(" end ngRepeat: "+h+" "),$=h.match(/^\s*([\s\S]+?)\s+in\s+([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+track\s+by\s+([\s\S]+?))?\s*$/);if(!$)throw u("iexp","Expected expression in form of '_item_ in _collection_[ track by _id_]' but got '{0}'.",h);var m=$[1],g=$[2],v=$[3],y=$[4];if($=m.match(/^(?:(\s*[\$\w]+)|\(\s*([\$\w]+)\s*,\s*([\$\w]+)\s*\))$/),!$)throw u("iidexp","'_item_' in '_item_ in _collection_' should be an identifier or '(_key_, _value_)' expression, but got '{0}'.",m);var b=$[3]||$[1],w=$[2];if(v&&(!/^[$a-zA-Z_][$a-zA-Z0-9_]*$/.test(v)||/^(null|undefined|this|\$index|\$first|\$middle|\$last|\$even|\$odd|\$parent|\$root|\$id)$/.test(v)))throw u("badident","alias '{0}' is invalid --- must be a valid JS identifier which is not a reserved name.",v);var x,k,S,C,A={$id:Ue};return y?x=t(y):(S=function(t,e){return Ue(e)},C=function(t){return t}),function(t,e,r,d,$){x&&(k=function(e,n,r){return w&&(A[w]=e),A[b]=n,A.$index=r,x(t,A)});var m=le();t.$watchCollection(g,function(r){var d,g,y,x,A,O,E,j,N,T,M,P,V=e[0],q=le();if(v&&(t[v]=r),i(r))N=r,j=k||S;else{j=k||C,N=[];for(var D in r)r.hasOwnProperty(D)&&"$"!=D.charAt(0)&&N.push(D);N.sort()}for(x=N.length,M=new Array(x),d=0;x>d;d++)if(A=r===N?d:N[d],O=r[A],E=j(A,O,d),m[E])T=m[E],delete m[E],q[E]=T,M[d]=T;else{if(q[E])throw a(M,function(t){t&&t.scope&&(m[t.id]=t)}),u("dupes","Duplicates in a repeater are not allowed. Use 'track by' expression to specify unique keys. Repeater: {0}, Duplicate key: {1}, Duplicate value: {2}",h,E,O);M[d]={id:E,scope:n,clone:n},q[E]=!0}for(var R in m){if(T=m[R],P=ue(T.clone),o.leave(P),P[0].parentNode)for(d=0,g=P.length;g>d;d++)P[d][s]=!0;T.scope.$destroy()}for(d=0;x>d;d++)if(A=r===N?d:N[d],O=r[A],T=M[d],T.scope){y=V;do y=y.nextSibling;while(y&&y[s]);c(T)!=y&&o.move(ue(T.clone),null,Qr(V)),V=f(T),l(T.scope,d,b,O,w,A,x)}else $(function(t,e){T.scope=e;var n=p.cloneNode(!1);t[t.length++]=n,o.enter(t,null,Qr(V)),V=n,T.clone=t,q[T.id]=T,l(T.scope,d,b,O,w,A,x)});m=q})}}}}],Ao="ng-hide",Oo="ng-hide-animate",Eo=["$animate",function(t){return{restrict:"A",multiElement:!0,link:function(e,n,r){e.$watch(r.ngShow,function(e){t[e?"removeClass":"addClass"](n,Ao,{tempClasses:Oo})})}}}],jo=["$animate",function(t){return{restrict:"A",multiElement:!0,link:function(e,n,r){e.$watch(r.ngHide,function(e){t[e?"addClass":"removeClass"](n,Ao,{tempClasses:Oo})})}}}],No=Ar(function(t,e,n){t.$watchCollection(n.ngStyle,function(t,n){n&&t!==n&&a(n,function(t,n){e.css(n,"")}),t&&e.css(t)})}),To=["$animate",function(t){return{restrict:"EA",require:"ngSwitch",controller:["$scope",function(){this.cases={}}],link:function(n,r,i,o){var s=i.ngSwitch||i.on,u=[],l=[],c=[],f=[],d=function(t,e){return function(){t.splice(e,1)}};n.$watch(s,function(n){var r,i;for(r=0,i=c.length;i>r;++r)t.cancel(c[r]);for(c.length=0,r=0,i=f.length;i>r;++r){var s=ue(l[r].clone);f[r].$destroy();var h=c[r]=t.leave(s);h.then(d(c,r))}l.length=0,f.length=0,(u=o.cases["!"+n]||o.cases["?"])&&a(u,function(n){n.transclude(function(r,i){f.push(i);var a=n.element;r[r.length++]=e.createComment(" end ngSwitchWhen: ");var o={clone:r};l.push(o),t.enter(r,a.parent(),a)})})})}}}],Mo=Ar({transclude:"element",priority:1200,require:"^ngSwitch",multiElement:!0,link:function(t,e,n,r,i){r.cases["!"+n.ngSwitchWhen]=r.cases["!"+n.ngSwitchWhen]||[],r.cases["!"+n.ngSwitchWhen].push({transclude:i,element:e})}}),Po=Ar({transclude:"element",priority:1200,require:"^ngSwitch",multiElement:!0,link:function(t,e,n,r,i){r.cases["?"]=r.cases["?"]||[],r.cases["?"].push({transclude:i,element:e})}}),Vo=Ar({restrict:"EAC",link:function(t,e,n,i,a){if(!a)throw r("ngTransclude")("orphan","Illegal use of ngTransclude directive in the template! No parent directive that requires a transclusion found. Element: {0}",z(e));a(function(t){e.empty(),e.append(t)})}}),qo=["$templateCache",function(t){return{restrict:"E",terminal:!0,compile:function(e,n){if("text/ng-template"==n.type){var r=n.id,i=e[0].text;t.put(r,i)}}}}],Do=r("ngOptions"),Ro=m({restrict:"A",terminal:!0}),Io=["$compile","$parse",function(t,r){var i=/^\s*([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+group\s+by\s+([\s\S]+?))?\s+for\s+(?:([\$\w][\$\w]*)|(?:\(\s*([\$\w][\$\w]*)\s*,\s*([\$\w][\$\w]*)\s*\)))\s+in\s+([\s\S]+?)(?:\s+track\s+by\s+([\s\S]+?))?$/,s={$setViewValue:p};return{restrict:"E",require:["select","?ngModel"],controller:["$element","$scope","$attrs",function(t,e,n){var r,i,a=this,o={},u=s;a.databound=n.ngModel,a.init=function(t,e,n){u=t,r=e,i=n},a.addOption=function(e,n){oe(e,'"option value"'),o[e]=!0,u.$viewValue==e&&(t.val(e),i.parent()&&i.remove()),n&&n[0].hasAttribute("selected")&&(n[0].selected=!0)},a.removeOption=function(t){this.hasOption(t)&&(delete o[t],u.$viewValue===t&&this.renderUnknownOption(t))},a.renderUnknownOption=function(e){var n="? "+Ue(e)+" ?";i.val(n),t.prepend(i),t.val(n),i.prop("selected",!0)},a.hasOption=function(t){return o.hasOwnProperty(t)},e.$on("$destroy",function(){a.renderUnknownOption=p})}],link:function(s,u,l,c){function f(t,e,n,r){n.$render=function(){var t=n.$viewValue;r.hasOption(t)?(C.parent()&&C.remove(),e.val(t),""===t&&p.prop("selected",!0)):g(t)&&p?e.val(""):r.renderUnknownOption(t)},e.on("change",function(){t.$apply(function(){C.parent()&&C.remove(),n.$setViewValue(e.val())})})}function d(t,e,n){var r;n.$render=function(){var t=new Le(n.$viewValue);a(e.find("option"),function(e){e.selected=v(t.get(e.value))})},t.$watch(function(){I(r,n.$viewValue)||(r=R(n.$viewValue),n.$render())}),e.on("change",function(){t.$apply(function(){var t=[];a(e.find("option"),function(e){e.selected&&t.push(e.value)}),n.$setViewValue(t)})})}function h(e,s,u){function l(t,n,r){return I[O]=r,N&&(I[N]=n),t(e,I)}function c(){e.$apply(function(){var t,n=P(e)||[];if(y)t=[],a(s.val(),function(e){e=q?D[e]:e,t.push(f(e,n[e]))});else{var r=q?D[s.val()]:s.val();t=f(r,n[r])}u.$setViewValue(t),g()})}function f(t,e){if("?"===t)return n;if(""===t)return null;var r=j?j:M;return l(r,t,e)}function d(){var t,n=P(e);if(n&&ci(n)){t=new Array(n.length);for(var r=0,i=n.length;i>r;r++)t[r]=l(A,r,n[r]);return t}if(n){t={};for(var a in n)n.hasOwnProperty(a)&&(t[a]=l(A,a,n[a]))}return t}function h(t){var e;if(y)if(q&&ci(t)){e=new Le([]);for(var n=0;n<t.length;n++)e.put(l(q,null,t[n]),!0)}else e=new Le(t);else q&&(t=l(q,null,t));return function(n,r){var i;return i=q?q:j?j:M,y?v(e.remove(l(i,n,r))):t===l(i,n,r)}}function p(){x||(e.$$postDigest(g),x=!0)}function m(t,e,n){t[e]=t[e]||0,t[e]+=n?1:-1}function g(){x=!1;var t,n,r,i,c,f,d,p,g,b,C,O,E,j,M,V,_,U={"":[]},L=[""],F=u.$viewValue,H=P(e)||[],B=N?o(H):H,z={},G=h(F),W=!1;for(D={},O=0;b=B.length,b>O;O++)d=O,N&&(d=B[O],"$"===d.charAt(0))||(p=H[d],t=l(T,d,p)||"",(n=U[t])||(n=U[t]=[],L.push(t)),E=G(d,p),W=W||E,V=l(A,d,p),V=v(V)?V:"",_=q?q(e,I):N?B[O]:O,q&&(D[_]=d),n.push({id:_,label:V,selected:E}));
 +
for(y||(w||null===F?U[""].unshift({id:"",label:"",selected:!W}):W||U[""].unshift({id:"?",label:"",selected:!0})),C=0,g=L.length;g>C;C++){for(t=L[C],n=U[t],R.length<=C?(i={element:S.clone().attr("label",t),label:n.label},c=[i],R.push(c),s.append(i.element)):(c=R[C],i=c[0],i.label!=t&&i.element.attr("label",i.label=t)),j=null,O=0,b=n.length;b>O;O++)r=n[O],(f=c[O+1])?(j=f.element,f.label!==r.label&&(m(z,f.label,!1),m(z,r.label,!0),j.text(f.label=r.label),j.prop("label",f.label)),f.id!==r.id&&j.val(f.id=r.id),j[0].selected!==r.selected&&(j.prop("selected",f.selected=r.selected),Xr&&j.prop("selected",f.selected))):(""===r.id&&w?M=w:(M=k.clone()).val(r.id).prop("selected",r.selected).attr("selected",r.selected).prop("label",r.label).text(r.label),c.push(f={element:M,label:r.label,id:r.id,selected:r.selected}),m(z,r.label,!0),j?j.after(M):i.element.append(M),j=M);for(O++;c.length>O;)r=c.pop(),m(z,r.label,!1),r.element.remove()}for(;R.length>C;){for(n=R.pop(),O=1;O<n.length;++O)m(z,n[O].label,!1);n[0].element.remove()}a(z,function(t,e){t>0?$.addOption(e):0>t&&$.removeOption(e)})}var C;if(!(C=b.match(i)))throw Do("iexp","Expected expression in form of '_select_ (as _label_)? for (_key_,)?_value_ in _collection_' but got '{0}'. Element: {1}",b,z(s));var A=r(C[2]||C[1]),O=C[4]||C[6],E=/ as /.test(C[0])&&C[1],j=E?r(E):null,N=C[5],T=r(C[3]||""),M=r(C[2]?C[1]:O),P=r(C[7]),V=C[8],q=V?r(C[8]):null,D={},R=[[{element:s,label:""}]],I={};w&&(t(w)(e),w.removeClass("ng-scope"),w.remove()),s.empty(),s.on("change",c),u.$render=g,e.$watchCollection(P,p),e.$watchCollection(d,p),y&&e.$watchCollection(function(){return u.$modelValue},p)}if(c[1]){for(var p,$=c[0],m=c[1],y=l.multiple,b=l.ngOptions,w=!1,x=!1,k=Qr(e.createElement("option")),S=Qr(e.createElement("optgroup")),C=k.clone(),A=0,O=u.children(),E=O.length;E>A;A++)if(""===O[A].value){p=w=O.eq(A);break}$.init(m,w,C),y&&(m.$isEmpty=function(t){return!t||0===t.length}),b?h(s,u,m):y?d(s,u,m):f(s,u,m,$)}}}}],_o=["$interpolate",function(t){var e={addOption:p,removeOption:p};return{restrict:"E",priority:100,compile:function(n,r){if(g(r.value)){var i=t(n.text(),!0);i||r.$set("value",n.text())}return function(t,n,r){var a="$selectController",o=n.parent(),s=o.data(a)||o.parent().data(a);s&&s.databound||(s=e),i?t.$watch(i,function(t,e){r.$set("value",t),e!==t&&s.removeOption(e),s.addOption(t,n)}):s.addOption(r.value,n),n.on("$destroy",function(){s.removeOption(r.value)})}}}}],Uo=m({restrict:"E",terminal:!1}),Lo=function(){return{restrict:"A",require:"?ngModel",link:function(t,e,n,r){r&&(n.required=!0,r.$validators.required=function(t,e){return!n.required||!r.$isEmpty(e)},n.$observe("required",function(){r.$validate()}))}}},Fo=function(){return{restrict:"A",require:"?ngModel",link:function(t,e,i,a){if(a){var o,s=i.ngPattern||i.pattern;i.$observe("pattern",function(t){if(b(t)&&t.length>0&&(t=new RegExp("^"+t+"$")),t&&!t.test)throw r("ngPattern")("noregexp","Expected {0} to be a RegExp but was {1}. Element: {2}",s,t,z(e));o=t||n,a.$validate()}),a.$validators.pattern=function(t){return a.$isEmpty(t)||g(o)||o.test(t)}}}}},Ho=function(){return{restrict:"A",require:"?ngModel",link:function(t,e,n,r){if(r){var i=-1;n.$observe("maxlength",function(t){var e=d(t);i=isNaN(e)?-1:e,r.$validate()}),r.$validators.maxlength=function(t,e){return 0>i||r.$isEmpty(e)||e.length<=i}}}}},Bo=function(){return{restrict:"A",require:"?ngModel",link:function(t,e,n,r){if(r){var i=0;n.$observe("minlength",function(t){i=d(t)||0,r.$validate()}),r.$validators.minlength=function(t,e){return r.$isEmpty(e)||e.length>=i}}}}};return t.angular.bootstrap?(console.log("WARNING: Tried to load angular more than once."),void 0):(re(),he(si),Qr(e).ready(function(){X(e,Q)}),void 0)}(window,document),!window.angular.$$csp()&&window.angular.element(document).find("head").prepend('<style type="text/css">@charset "UTF-8";[ng\\:cloak],[ng-cloak],[data-ng-cloak],[x-ng-cloak],.ng-cloak,.x-ng-cloak,.ng-hide:not(.ng-hide-animate){display:none !important;}ng\\:form{display:block;}</style>'),angular.module("app",["angularplasmid"]),function(){"use strict";angular.module("angularplasmid.services",[]).factory("SVGUtil",function(){function t(t,e){var n="round";return"undefined"==typeof e||0===+e?Math[n](t):(t=+t,e=+e,isNaN(t)||"number"!=typeof e||e%1!==0?0/0:(t=t.toString().split("e"),t=Math[n](+(t[0]+"e"+(t[1]?+t[1]-e:-e))),t=t.toString().split("e"),+(t[0]+"e"+(t[1]?+t[1]+e:e))))}function e(t){d.push(t)}function n(t){var e;for(e=0;e<d.length;e+=1)if(d[e].id===t)return d[e]}function r(t,e,n,r){var i=(r-90)*Math.PI/180;return{x:t+n*Math.cos(i),y:e+n*Math.sin(i)}}function i(t,e){var n,r,i=["id","name","class","style","filter","ng-attr-style","ng-attr-class","ng-class"];for(r=0;r<i.length;r+=1)n=i[r],t[0].hasAttribute(n)&&(e.attr(n,t.attr(n)),t.removeAttr(n))}function a(t,e,n){var r,i="http://www.w3.org/2000/svg",a=document.createElementNS(i,t);return n=n||[],angular.forEach(e,function(t){n.indexOf(t)<0&&(r=e[t],null===r||t.match(/\$/)||"string"==typeof r&&""===r||a.setAttribute(t,r))}),a}function o(t){angular.forEach(["id","class","style"],function(e){t.removeAttribute(e)})}function s(t,e,n,i){var a,o,s;return t=Number(t||0),e=Number(e||0),n=Number(n||0),i=Number(i||0),a={start:r(t,e,n,359.99),end:r(t,e,n,0)},o={start:r(t,e,n+i,359.99),end:r(t,e,n+i,0)},s=["M",a.start.x,a.start.y,"A",n,n,0,1,0,a.end.x,a.end.y,"M",o.start.x,o.start.y,"A",n+i,n+i,0,1,0,o.end.x,o.end.y].join(" ")}function u(t,e,n,i,a,o,s,u){var l,c,f,d,h,p,$,m,g,v,y,b,w;return t=Number(t),e=Number(e),n=Number(n),i=Number(i),a=Number(a),o=Number(o),s=s||{width:0,length:0,angle:0},u=u||{width:0,length:0,angle:0},i===a?(c=r(t,e,n,i),d=r(t,e,n+o,i),l=["M",c.x,c.y,"L",d.x,d.y].join(" ")):1===o?(c=r(t,e,n,i),d=r(t,e,n,a),h=a>i?180>=a-i?"0":"1":180>=a-i?"1":"0",l=["M",c.x,c.y,"A",n,n,0,h,1,d.x,d.y].join(" ")):(a-=u.length<0?0:u.length,i+=s.length<0?0:s.length,c=r(t,e,n,a),d=r(t,e,n,i),p=r(t,e,n-s.width,i+s.angle),$=r(t,e,n+o/2,i-s.length),m=r(t,e,n+o+s.width,i+s.angle),g=r(t,e,n+o,i),v=r(t,e,n+o+u.width,a-u.angle),y=r(t,e,n+o/2,a+u.length),b=r(t,e,n-u.width,a-u.angle),w=r(t,e,n,a),f=r(t,e,n+o,a),h=180>=a-i?"0":"1",l=["M",c.x,c.y,"A",n,n,0,h,0,d.x,d.y,"L",p.x,p.y,"L",$.x,$.y,"L",m.x,m.y,"L",g.x,g.y,"A",n+o,n+o,0,h,1,f.x,f.y,"L",v.x,v.y,"L",y.x,y.y,"L",b.x,b.y,"L",w.x,w.y,"z"].join(" ")),l}function l(e,n,r,i,a,o){e=Number(e||0),n=Number(n||0),r=Number(r||0),i=Number(i||0),a=Number(a||0),o=Number(o||2);var s,u,l,c,f=Number(i)>0?Number(a)/Number(i):0,d=2*Math.PI/f,h=-1,p="";for(c=0;f>c;c+=1)s=d*c-Math.PI/2,l=Math.cos(s),u=Math.sin(s),p+="M"+t(e+r*l,h)+","+t(n+r*u,h)+" L"+t(e+(r+o)*l,h)+","+t(n+(r+o)*u,h)+" ";return p=p||"M 0,0"}function c(e,n,r,i,a){e=Number(e),n=Number(n),r=Number(r),i=Number(i),a=Number(a);var o,s,u,l,c=Number(i)>0?Number(a)/Number(i):0,f=2*Math.PI/c,d=-1,h=[];for(l=0;c>l;l+=1)o=f*l-Math.PI/2,u=Math.cos(o),s=Math.sin(o),h.push({x:t(e+r*u,d),y:t(n+r*s,d),text:i*l});return h}function f(t,e){return isNaN(t)?e||0:Number(t)}var d=[],h=[],p=[];return{api:{addPlasmid:e,plasmids:d,plasmid:n,plasmidtracks:h,trackmarkers:p},util:{polarToCartesian:r,swapProperties:i,Numeric:f},svg:{createNode:a,removeAttributes:o,path:{donut:s,arc:u,scale:l},element:{scalelabels:c}}}})}(),function(){"use strict";angular.module("angularplasmid",["angularplasmid.services"]).directive("plasmidapi",["SVGUtil",function(t){return{restrict:"AE",link:function(e,n,r){e[r.name]=t.api}}}]).directive("plasmid",["SVGUtil",function(){return{restrict:"AE",type:"svg",template:'<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"></svg>',replace:!0,transclude:!0,require:"plasmid",scope:{plasmidheight:"@",plasmidwidth:"@",sequencelength:"@",sequence:"@",plasmidclass:"@",plasmidstyle:"@"},link:{pre:function(t,e,n,r){r.init(e)},post:function(t,e,n,r,i){i(t.$parent,function(t){e.append(t)}),t.$watchGroup(["plasmidheight","plasmidwidth","sequencelength","sequence","plasmidclass","plasmidstyle"],function(){r.draw()})}},controller:["$scope","SVGUtil",function(t,e){var n,r,i=[];r=this,r.elementtype="plasmid",r.init=function(t){e.api.addPlasmid(r),n=t,r.id=n.attr("id")},r.draw=function(){var t=r.dimensions,e=n.plasmidclass,a=n.plasmidstyle;n.attr("height",t.height),n.attr("width",t.width),e&&n.attr("class",e),a&&n.attr("style",a),angular.forEach(i,function(t){t.draw()})},r.addTrack=function(t){i.push(t)},Object.defineProperty(r,"center",{get:function(){var t=r.dimensions;return{x:t.width/2,y:t.height/2}}}),Object.defineProperty(r,"dimensions",{get:function(){return{height:e.util.Numeric(t.plasmidheight,300),width:e.util.Numeric(t.plasmidwidth,300)}}}),Object.defineProperty(r,"sequencelength",{get:function(){return r.sequence?r.sequence.length:e.util.Numeric(t.sequencelength)}}),Object.defineProperty(r,"sequence",{get:function(){return t.sequence}}),Object.defineProperty(r,"plasmidclass",{get:function(){return t.plasmidclass}}),Object.defineProperty(r,"plasmidstyle",{get:function(){return t.plasmidstyle}}),r.tracks=i}]}}]).directive("plasmidtrack",["SVGUtil","$compile",function(t,e){return{restrict:"AE",type:"svg",template:"<g><path></path></g>",replace:!0,transclude:!0,require:["plasmidtrack","^plasmid"],scope:{radius:"@",width:"@",trackclass:"@",trackstyle:"@",trackclick:"&"},link:{pre:function(t,e,n,r){var i=r[0],a=r[1],o=angular.element(e.children()[0]);i.init(o,a)},post:function(n,r,i,a,o){o(n.$parent,function(t){r.append(t)});var s=angular.element(r),u=angular.element(r.children()[0]),l=a[0];t.util.swapProperties(s,u),u.attr("fill-rule","evenodd"),e(u)(n.$parent),u.on("click",function(t){n.trackclick({$event:t,$track:l})}),n.$watchGroup(["radius","width","trackstyle","trackclass"],function(){l.draw()})}},controller:["$scope",function(e){var n,r,i,a=[],o=[],s=[];i=this,i.elementtype="plasmidtrack",i.init=function(t,e){n=e,n.addTrack(i),i.plasmid=n,r=t},i.draw=function(){var e=i.center,n=t.svg.path.donut(e.x,e.y,i.radius,i.width),u=i.trackclass,l=i.trackstyle;r.attr("d",n),u&&r.attr("class",u),l&&r.attr("style",l),angular.forEach(a,function(t){t.draw()}),angular.forEach(o,function(t){t.draw()}),angular.forEach(s,function(t){t.draw()})},i.addMarker=function(t){a.push(t)},i.addScale=function(t){o.push(t)},i.addLabel=function(t){s.push(t)},i.markergroup=function(t){var e=[];return angular.forEach(a,function(n){n.markergroup===t&&e.push(n)}),e},i.getPosition=function(e,r,a){a=Number(a||0),e=Number(e);var o,s,u=1,l=2,c=i.center,f=n.sequencelength;if(f>0){switch(s=e/f*360,r){case u:o=i.radius+a;break;case l:o=i.radius+i.width+a;break;default:o=i.radius+i.width/2+a}return t.util.polarToCartesian(c.x,c.y,o,s)}},Object.defineProperty(i,"center",{get:function(){return n.center}}),Object.defineProperty(i,"radius",{get:function(){return t.util.Numeric(e.radius,100)}}),Object.defineProperty(i,"width",{get:function(){return t.util.Numeric(e.width,25)}}),Object.defineProperty(i,"trackclass",{get:function(){return e.trackclass}}),Object.defineProperty(i,"trackstyle",{get:function(){return e.trackstyle}}),i.markers=a,i.scales=o,i.labels=s}]}}]).directive("trackscale",["SVGUtil","$compile",function(t,e){return{restrict:"AE",type:"svg",template:"<g><path></path><g></g></g>",replace:!0,transclude:!0,require:["trackscale","^plasmidtrack"],scope:{interval:"@",vadjust:"@",ticksize:"@",direction:"@",showlabels:"@",labelvadjust:"@",labelclass:"@",labelstyle:"@",tickclass:"@",tickstyle:"@",scaleclick:"&"},link:{pre:function(t,e,n,r){var i=r[0],a=r[1],o=angular.element(e.children()[0]),s=angular.element(e.children()[1]);i.init(o,s,a)},post:function(n,r,i,a,o){var s,u,l;o(n.$parent,function(t){r.append(t)}),s=angular.element(r),u=angular.element(r.children()[0]),t.util.swapProperties(s,u),e(u)(n.$parent),u.on("click",function(t){n.scaleclick({$event:t,$scale:l})}),l=a[0],n.$watchGroup(["interval","vadjust","ticksize","labelvadjust","direction","showlabels","labelstyle","labelclass","tickstyle","tickclass"],function(){l.draw()})}},controller:["$scope",function(e){var n,r,i,a,o=15,s=3;r=this,r.elementtype="trackscale",r.init=function(t,e,o){n=o,n.addScale(r),r.track=n,i=t,a=e},r.draw=function(){var e=r.tickclass,o=r.tickstyle,s=n.center,u=t.svg.path.scale(s.x,s.y,r.radius,r.interval,r.total,r.ticksize);i.attr("d",u),e&&i.attr("class",e),o&&i.attr("style",o),r.showlabels?r.drawLabel():a.empty()},r.drawLabel=function(){function i(t){e.scaleclick({$event:t,$scale:r})}var o,s,u,l=n.center;for(u=t.svg.element.scalelabels(l.x,l.y,r.labelradius,r.interval,r.total),a.empty(),o=0;o<=u.length-1;o+=1)s=angular.element(t.svg.createNode("text")),r.labelclass&&s.attr("class",r.labelclass),r.labelstyle&&s.attr("style",r.labelstyle),s.attr("x",u[o].x),s.attr("y",u[o].y),s.attr("text-anchor","middle"),s.attr("alignment-baseline","middle"),s.text(u[o].text),s.on("click",i),a.append(s)},Object.defineProperty(r,"radius",{get:function(){return(r.inwardflg?n.radius:n.radius+n.width)+(r.inwardflg?-1:1)*r.vadjust+(r.inwardflg?-r.ticksize:0)}}),Object.defineProperty(r,"interval",{get:function(){return t.util.Numeric(e.interval)}}),Object.defineProperty(r,"vadjust",{get:function(){return t.util.Numeric(e.vadjust)}}),Object.defineProperty(r,"ticksize",{get:function(){return t.util.Numeric(e.ticksize,s)}}),Object.defineProperty(r,"inwardflg",{get:function(){return"in"===e.direction?!0:!1}}),Object.defineProperty(r,"total",{get:function(){return n.plasmid.sequencelength}}),Object.defineProperty(r,"showlabels",{get:function(){return"1"===e.showlabels?!0:!1}}),Object.defineProperty(r,"labelvadjust",{get:function(){return t.util.Numeric(e.labelvadjust,o)}}),Object.defineProperty(r,"tickclass",{get:function(){return e.tickclass}}),Object.defineProperty(r,"tickstyle",{get:function(){return e.tickstyle}}),Object.defineProperty(r,"labelclass",{get:function(){return e.labelclass}}),Object.defineProperty(r,"labelstyle",{get:function(){return e.labelstyle}}),Object.defineProperty(r,"labelradius",{get:function(){return r.radius+r.labelvadjust*(r.inwardflg?-1:1)}})}]}}]).directive("tracklabel",["SVGUtil",function(t){return{restrict:"AE",type:"svg",template:"<text></text>",replace:!0,transclude:!0,require:["tracklabel","^plasmidtrack"],scope:{text:"@",hadjust:"@",vadjust:"@",labelclass:"@",labelstyle:"@",labelclick:"&"},link:{pre:function(t,e,n,r){var i=r[0],a=r[1],o=angular.element(e[0]);i.init(o,a)},post:function(t,e,n,r,i){var a;i(t.$parent,function(t){e.append(t)}),e.attr("text-anchor","middle"),e.attr("alignment-baseline","middle"),e.on("click",function(e){t.labelclick({$event:e,$label:a})}),a=r[0],t.$watchGroup(["text","vadjust","hadjust","labelstyle","labelclass"],function(){a.draw()})}},controller:["$scope",function(e){var n,r,i;r=this,r.elementtype="tracklabel",r.init=function(t,e){n=e,n.addLabel(r),r.track=n,i=t},r.draw=function(){var t=n.center,e=r.labelclass,a=r.labelstyle;i.attr("x",t.x+r.hadjust),i.attr("y",t.y+r.vadjust),i.text(r.text),e&&i.attr("class",e),a&&i.attr("style",a)},Object.defineProperty(r,"center",{get:function(){return n.center}}),Object.defineProperty(r,"text",{get:function(){return e.text}}),Object.defineProperty(r,"labelclass",{get:function(){return e.labelclass}}),Object.defineProperty(r,"labelstyle",{get:function(){return e.labelstyle}}),Object.defineProperty(r,"hadjust",{get:function(){return t.util.Numeric(e.hadjust,0)}}),Object.defineProperty(r,"vadjust",{get:function(){return t.util.Numeric(e.vadjust,0)}}),Object.defineProperty(r,"dimensions",{get:function(){return i[0].getBBox()}})}]}}]).directive("trackmarker",["SVGUtil","$compile",function(t,e){return{restrict:"AE",type:"svg",template:"<g><path></path></g>",replace:!0,transclude:!0,require:["trackmarker","^plasmidtrack"],scope:{start:"@",end:"@",vadjust:"@",wadjust:"@",markergroup:"@",arrowstartlength:"@",arrowstartwidth:"@",arrowstartangle:"@",arrowendlength:"@",arrowendwidth:"@",arrowendangle:"@",markerclass:"@",markerstyle:"@",markerclick:"&"},link:{pre:function(t,e,n,r){var i=r[0],a=r[1],o=angular.element(e.children()[0]);i.init(o,a)},post:function(n,r,i,a,o){var s,u,l=a[0];o(n.$parent,function(t){r.append(t)}),s=angular.element(r),u=angular.element(r.children()[0]),t.util.swapProperties(s,u),e(u)(n.$parent),u.on("click",function(t){n.markerclick({$event:t,$marker:l})}),n.$watchGroup(["start","end","vadjust","wadjust","markergroup","markerclass","markerstyle","arrowstartlength","arrowstartwidth","arrowstartangle","arrowendlength","arrowendwidth","arrowendangle"],function(){l.draw()})}},controller:["$scope",function(e){var n,r,i,a=[];r=this,r.elementtype="trackmarker",r.init=function(t,e){n=e,n.addMarker(r),i=t,r.track=n},r.draw=function(){var t=r.markerclass,e=r.markerstyle;i.attr("d",r.getPath()),t&&i.attr("class",t),e&&i.attr("style",e),angular.forEach(a,function(t){t.draw()})},r.addMarkerLabel=function(t){a.push(t)},r.getPath=function(){var e=n.center,i=r.angle,a=r.radius;return t.svg.path.arc(e.x,e.y,a.inner,i.start,i.end,r.width,r.arrowstart,r.arrowend)},r.getPosition=function(e,i,a,o){var s,u,l,c,f,d="start",h="end",p="inner",$="outer";if(s=n.center,c=r.radius,f=r.angle,e=t.util.Numeric(e),i=t.util.Numeric(i),void 0!==o&&void 0!==a){switch(o){case p:u=c.inner+i;break;case $:u=c.outer+i;break;default:u=c.middle+i}switch(a){case d:l=f.start+e;break;case h:l=f.end+e;break;default:l=f.middle+e}return t.util.polarToCartesian(s.x,s.y,u,l)}return u={outer:c.outer+i,inner:c.inner+i,middle:c.middle+i},l={begin:f.start+e,end:f.end+e,middle:f.middle+e},{outer:{begin:t.util.polarToCartesian(s.x,s.y,u.outer,l.begin),middle:t.util.polarToCartesian(s.x,s.y,u.outer,l.middle),end:t.util.polarToCartesian(s.x,s.y,u.outer,l.end)},middle:{begin:t.util.polarToCartesian(s.x,s.y,u.middle,l.begin),middle:t.util.polarToCartesian(s.x,s.y,u.middle,l.middle),end:t.util.polarToCartesian(s.x,s.y,u.middle,l.end)},inner:{begin:t.util.polarToCartesian(s.x,s.y,u.inner,l.begin),middle:t.util.polarToCartesian(s.x,s.y,u.inner,l.middle),end:t.util.polarToCartesian(s.x,s.y,u.inner,l.end)}}},r.fireClick=function(t){e.markerclick({$event:t.$event,$marker:t.$marker})},Object.defineProperty(r,"center",{get:function(){return n.center}}),Object.defineProperty(r,"radius",{get:function(){return{inner:n.radius+r.vadjust,outer:n.radius+r.vadjust+r.width,middle:n.radius+r.vadjust+r.width/2}}}),Object.defineProperty(r,"angle",{get:function(){var i,a,o,s;return i=r.start/n.plasmid.sequencelength*360,s=e.end||e.start,a=t.util.Numeric(s)/n.plasmid.sequencelength*360,a+=i>a?360:0,o=i+(a-i)/2,{start:i,middle:o,end:a}}}),Object.defineProperty(r,"vadjust",{get:function(){return t.util.Numeric(e.vadjust)}}),Object.defineProperty(r,"wadjust",{get:function(){return t.util.Numeric(e.wadjust)}}),Object.defineProperty(r,"width",{get:function(){return n.width+r.wadjust}}),Object.defineProperty(r,"start",{get:function(){return t.util.Numeric(e.start)}}),Object.defineProperty(r,"end",{get:function(){return t.util.Numeric(e.end)}}),Object.defineProperty(r,"arrowstart",{get:function(){return{width:t.util.Numeric(e.arrowstartwidth),length:t.util.Numeric(e.arrowstartlength),angle:t.util.Numeric(e.arrowstartangle)}}}),Object.defineProperty(r,"arrowend",{get:function(){return{width:t.util.Numeric(e.arrowendwidth),length:t.util.Numeric(e.arrowendlength),angle:t.util.Numeric(e.arrowendangle)}}}),Object.defineProperty(r,"markergroup",{get:function(){return e.markergroup}}),Object.defineProperty(r,"markerclass",{get:function(){return e.markerclass}}),Object.defineProperty(r,"markerstyle",{get:function(){return e.markerstyle}}),Object.defineProperty(r,"sequence",{get:function(){var t=r.track.plasmid.sequence;return r.start>r.end?t.substring(r.start-1,t.length-1)+t.substring(0,r.end-1):t.substring(r.start-1,r.end-1)}}),r.labels=a}]}}]).directive("markerlabel",["SVGUtil","$compile",function(t,e){return{restrict:"AE",type:"svg",transclude:!0,template:'<g><path></path><path id="" style="fill:none;stroke:none"></path><text></text></g>',require:["markerlabel","^trackmarker"],replace:!0,scope:{text:"@",valign:"@",vadjust:"@",halign:"@",hadjust:"@",type:"@",showline:"@",linestyle:"@",lineclass:"@",labelstyle:"@",labelclass:"@",linevadjust:"@",labelclick:"&"},link:{pre:function(t,e,n,r){var i=r[0],a=r[1],o=angular.element(e[0]),s=angular.element(e.children()[0]),u=angular.element(e.children()[1]),l=angular.element(e.children()[2]);i.init(l,o,u,s,a)},post:function(n,r,i,a,o){o(n.$parent,function(t){r.append(t)});var s=a[0],u=a[1],l=angular.element(r),c=angular.element(r.children()[2]);c.attr("text-anchor","middle"),c.attr("alignment-baseline","middle"),t.util.swapProperties(l,c),e(c)(n.$parent),i.labelclick?c.on("click",function(t){n.labelclick({$event:t,$label:s})}):c.on("click",function(t){u.fireClick({$event:t,$marker:u})}),n.$watchGroup(["text","type","valign","vadjust","halign","hadjust","showline","linevadjust","linestyle","labelclass","labelstyle"],function(){s.draw()})}},controller:["$scope","$compile",function(e,n){var r,i,a,o,s,u,l,c;i=this,i.elementtype="markerlabel",i.init=function(t,e,n,s,u){var f="TPATH"+(Math.random()+1).toString(36).substring(3,7);r=u,r.addMarkerLabel(i),i.marker=r,a=t,o=n,l=s,c=e,o.attr("id",f)},i.draw=function(){var t,c,f,d,h,p="middle",$="inner",m="outer",g="start",v="end",y=0,b=0,w=i.labelclass,x=i.labelstyle;if(w&&a.attr("class",w),x&&a.attr("style",x),"path"===i.type)switch(a.attr("x",""),a.attr("y",""),s||(u=document.createElementNS("http://www.w3.org/2000/svg","textPath"),u.setAttributeNS("http://www.w3.org/1999/xlink","href","#"+o.attr("id")),s=angular.element(u),n(s)(e),a.empty(),a.append(s)),u.textContent=i.text,y=window.getComputedStyle(a[0]).fontSize.replace("px",""),b=i.valign===m?0:i.valign===$?Number(y||0):Number(y||0)/2,o.attr("d",i.getPath(i.hadjust,i.vadjust-b,i.halign,i.valign)),i.halign){case g:a.attr("text-anchor","start"),s[0].setAttribute("startOffset","0%");break;case v:a.attr("text-anchor","end"),s[0].setAttribute("startOffset","100%");break;default:a.attr("text-anchor","middle"),s[0].setAttribute("startOffset","50%")}else s&&(s.remove(),s=null),t=r.getPosition(i.hadjust,i.vadjust,i.halign,i.valign),a.attr("x",t.x),a.attr("y",t.y),a.text(i.text);i.showlineflg?(c=r.getPosition(i.hadjust,i.vadjust+i.linevadjust,i.halign,i.valign),d=r.getPosition(),h=i.valign===$?d.inner:i.valign===p?d.middle:d.outer,f=i.halign===g?h.begin:i.halign===v?h.end:h.middle,l.attr("d",["M",c.x,c.y,"L",f.x,f.y].join(" ")),i.linestyle||i.lineclass||l.attr("style","stroke:#000"),i.linestyle&&l.attr("style",i.linestyle),i.lineclass&&l.attr("class",i.lineclass)):l.removeAttr("d")},i.getPath=function(e,n,i,a){var o,s,u,l,c,f="inner",d="outer",h="start",p="end",$=r.center;switch(s=r.radius,a){case f:o=s.inner;break;case d:o=s.outer;break;default:o=s.middle}switch(u=r.angle,i){case h:l=u.start,c=u.start+359.99;break;case p:l=u.end+1,c=u.end;break;default:l=u.middle+180.05,c=u.middle+179.95}return t.svg.path.arc($.x,$.y,o+Number(n||0),l+Number(e||0),c+Number(e||0),1)},Object.defineProperty(i,"showlineflg",{get:function(){return"1"===e.showline?!0:!1}}),Object.defineProperty(i,"halign",{get:function(){return e.halign||"middle"}}),Object.defineProperty(i,"valign",{get:function(){return e.valign||"middle"}}),Object.defineProperty(i,"hadjust",{get:function(){return t.util.Numeric(e.hadjust)}}),Object.defineProperty(i,"vadjust",{get:function(){return t.util.Numeric(e.vadjust)}}),Object.defineProperty(i,"type",{get:function(){return e.type}}),Object.defineProperty(i,"linevadjust",{get:function(){return t.util.Numeric(e.linevadjust)}}),Object.defineProperty(i,"labelclass",{get:function(){return e.labelclass}}),Object.defineProperty(i,"labelstyle",{get:function(){return e.labelstyle}}),Object.defineProperty(i,"linestyle",{get:function(){return e.linestyle}}),Object.defineProperty(i,"lineclass",{get:function(){return e.lineclass}}),Object.defineProperty(i,"text",{get:function(){return e.text}})}]}}]).directive("svgelement",["SVGUtil",function(){return{restrict:"AE",template:function(t,e){return"<"+e.type+"></"+e.type+">"},type:"svg",replace:!0,transclude:!0,require:["^plasmid"],scope:{},link:function(t,e,n,r,i){i(t.$parent,function(t){e.append(t)})}}}])}(),function(){"use strict";angular.element(document).ready(function(){angular.bootstrap(document,["app"])})}();</script>
 +
 
 +
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
 +
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
 +
<script src="http://code.jquery.com/jquery-2.1.0.min.js"></script>
 
<link href="https://fonts.googleapis.com/css?family=Quicksand:300,400|Roboto:400,400i" rel="stylesheet">
 
<link href="https://fonts.googleapis.com/css?family=Quicksand:300,400|Roboto:400,400i" rel="stylesheet">
  
Line 11: Line 18:
  
 
<script>
 
<script>
 +
$(document).ready(function() {
 +
    $('.link1').on('click', function() {
 +
$( this ).toggleClass( "selected" );
 +
$('.link2').removeClass('selected');
 +
$('.link3').removeClass('selected');
 +
        $('.link4').removeClass('selected');     
 +
        $('.link5').removeClass('selected'); 
 +
        $(".box1").fadeToggle('slow');
 +
        $(".box1_arrow").fadeToggle('slow');
 +
        $(".box2").hide();
 +
        $(".box3").hide();
 +
        $(".box4").hide(); 
 +
        $(".box5").hide();
 +
        $(".box2_arrow").hide();       
 +
        $(".box3_arrow").hide();         
 +
        $(".box4_arrow").hide();         
 +
        $(".box5_arrow").hide();   
 +
});
 +
    $('.link2').on('click', function() {
 +
$( this ).toggleClass( "selected" );
 +
$('.link1').removeClass('selected');
 +
$('.link3').removeClass('selected');
 +
        $('.link4').removeClass('selected');     
 +
        $('.link5').removeClass('selected'); 
 +
        $(".box2").fadeToggle('slow');
 +
        $(".box2_arrow").fadeToggle('slow');
 +
        $(".box1").hide();
 +
        $(".box3").hide();
 +
        $(".box4").hide(); 
 +
        $(".box5").hide();   
 +
        $(".box1_arrow").hide();       
 +
        $(".box3_arrow").hide();         
 +
        $(".box4_arrow").hide();         
 +
        $(".box5_arrow").hide();
 +
});
 +
    $('.link3').on('click', function() {
 +
$( this ).toggleClass( "selected" );
 +
$('.link2').removeClass('selected');
 +
$('.link1').removeClass('selected');
 +
        $('.link4').removeClass('selected');     
 +
        $('.link5').removeClass('selected'); 
 +
        $(".box3").fadeToggle('slow');
 +
        $(".box3_arrow").fadeToggle('slow');
 +
        $(".box2").hide();
 +
        $(".box1").hide();
 +
        $(".box4").hide(); 
 +
        $(".box5").hide(); 
 +
        $(".box1_arrow").hide(); 
 +
        $(".box2_arrow").hide();                 
 +
        $(".box4_arrow").hide();         
 +
        $(".box5_arrow").hide();         
 +
 
 +
});
 +
    $('.link4').on('click', function() {
 +
$( this ).toggleClass( "selected" );
 +
$('.link2').removeClass('selected');
 +
$('.link3').removeClass('selected');
 +
        $('.link1').removeClass('selected');     
 +
        $('.link5').removeClass('selected'); 
 +
        $(".box4").fadeToggle('slow');
 +
        $(".box4_arrow").fadeToggle('slow');
 +
        $(".box2").hide();
 +
        $(".box3").hide();
 +
        $(".box1").hide(); 
 +
        $(".box5").hide();
 +
        $(".box1_arrow").hide(); 
 +
        $(".box2_arrow").hide();       
 +
        $(".box3_arrow").hide();                     
 +
        $(".box5_arrow").hide();   
 +
});
 +
    $('.link5').on('click', function() {
 +
$( this ).toggleClass( "selected" );
 +
$('.link2').removeClass('selected');
 +
$('.link3').removeClass('selected');
 +
        $('.link4').removeClass('selected');     
 +
        $('.link1').removeClass('selected'); 
 +
        $(".box5").fadeToggle('slow');
 +
        $(".box5_arrow").fadeToggle('slow');
 +
        $(".box2").hide();
 +
        $(".box3").hide();
 +
        $(".box4").hide(); 
 +
        $(".box1").hide();
 +
        $(".box1_arrow").hide(); 
 +
        $(".box2_arrow").hide();       
 +
        $(".box3_arrow").hide();         
 +
        $(".box4_arrow").hide();           
 +
});
 +
    $('.BB-prefix').on('click', function() {
 +
$('.BB-prefix' ).toggleClass( "selected" );
 +
$('.BB-suffix').removeClass('selected');
 +
$('.rbs').removeClass('selected');
 +
        $('.yncm').removeClass('selected');     
 +
        $('.his').removeClass('selected');
 +
$('.tev').removeClass('selected');
 +
        $('.winsulin').removeClass('selected');     
 +
        $('.proinsulin').removeClass('selected');
 +
        $('.arg').removeClass('selected'); 
 +
        $('.ecotin').removeClass('selected');             
 +
        $(".BBprefix_info").fadeToggle('slow');
 +
        $(".RBS_info").hide(); 
 +
        $(".YNCM_info").hide();       
 +
        $(".HIS_info").hide();         
 +
        $(".TEV_info").hide();
 +
        $(".ARG_info").hide();         
 +
        $(".BBsuffix_info").hide(); 
 +
        $(".ecotin_info").hide(); 
 +
        $(".proinsulin_info").hide(); 
 +
        $(".winsulin_info").hide();                                         
 +
});
 +
    $('.BB-suffix').on('click', function() {
 +
$('.BB-suffix' ).toggleClass( "selected" );
 +
$('.BB-prefix').removeClass('selected');
 +
$('.rbs').removeClass('selected');
 +
        $('.yncm').removeClass('selected');     
 +
        $('.his').removeClass('selected');
 +
$('.tev').removeClass('selected');
 +
        $('.winsulin').removeClass('selected');     
 +
        $('.proinsulin').removeClass('selected');
 +
        $('.arg').removeClass('selected'); 
 +
        $('.ecotin').removeClass('selected');             
 +
        $(".BBsuffix_info").fadeToggle('slow');
 +
        $(".RBS_info").hide(); 
 +
        $(".YNCM_info").hide();       
 +
        $(".HIS_info").hide();         
 +
        $(".TEV_info").hide();
 +
        $(".ARG_info").hide();         
 +
        $(".BBprefix_info").hide(); 
 +
        $(".ecotin_info").hide();
 +
        $(".proinsulin_info").hide(); 
 +
        $(".winsulin_info").hide();                               
 +
});
 +
    $('.rbs').on('click', function() {
 +
$('.rbs' ).toggleClass( "selected" );
 +
$('.BB-suffix').removeClass('selected');
 +
$('.BB-prefix').removeClass('selected');
 +
        $('.yncm').removeClass('selected');     
 +
        $('.his').removeClass('selected');
 +
$('.tev').removeClass('selected');
 +
        $('.winsulin').removeClass('selected');     
 +
        $('.proinsulin').removeClass('selected');
 +
        $('.arg').removeClass('selected'); 
 +
        $('.ecotin').removeClass('selected');             
 +
        $(".RBS_info").fadeToggle('slow');
 +
        $(".BBprefix_info").hide(); 
 +
        $(".YNCM_info").hide();       
 +
        $(".HIS_info").hide();         
 +
        $(".TEV_info").hide();
 +
        $(".ARG_info").hide();         
 +
        $(".BBsuffix_info").hide(); 
 +
        $(".ecotin_info").hide();
 +
        $(".proinsulin_info").hide(); 
 +
        $(".winsulin_info").hide();                               
 +
});
 +
    $('.yncm').on('click', function() {
 +
$('.yncm' ).toggleClass( "selected" );
 +
$('.BB-suffix').removeClass('selected');
 +
$('.rbs').removeClass('selected');
 +
        $('.BB-prefix').removeClass('selected');     
 +
        $('.his').removeClass('selected');
 +
$('.tev').removeClass('selected');
 +
        $('.winsulin').removeClass('selected');     
 +
        $('.proinsulin').removeClass('selected');
 +
        $('.arg').removeClass('selected'); 
 +
        $('.ecotin').removeClass('selected');             
 +
        $(".YNCM_info").fadeToggle('slow');
 +
        $(".RBS_info").hide(); 
 +
        $(".BBprefix_info").hide();       
 +
        $(".HIS_info").hide();         
 +
        $(".TEV_info").hide();
 +
        $(".ARG_info").hide(); 
 +
        $(".box2_arrow").hide();       
 +
        $(".BBsuffix_info").hide(); 
 +
        $(".ecotin_info").hide();
 +
        $(".proinsulin_info").hide(); 
 +
        $(".winsulin_info").hide();                                 
 +
});
 +
    $('.his').on('click', function() {
 +
$('.his' ).toggleClass( "selected" );
 +
$('.BB-suffix').removeClass('selected');
 +
$('.rbs').removeClass('selected');
 +
        $('.yncm').removeClass('selected');     
 +
        $('.BB-prefix').removeClass('selected');
 +
$('.tev').removeClass('selected');
 +
        $('.winsulin').removeClass('selected');     
 +
        $('.proinsulin').removeClass('selected');
 +
        $('.arg').removeClass('selected'); 
 +
        $('.ecotin').removeClass('selected');             
 +
        $(".HIS_info").fadeToggle('slow');
 +
        $(".RBS_info").hide(); 
 +
        $(".YNCM_info").hide();       
 +
        $(".BBprefix_info").hide();         
 +
        $(".TEV_info").hide();
 +
        $(".ARG_info").hide(); 
 +
        $(".box2_arrow").hide();       
 +
        $(".BBsuffix_info").hide();
 +
        $(".ecotin_info").hide();
 +
        $(".proinsulin_info").hide(); 
 +
        $(".winsulin_info").hide();                                 
 +
});
 +
    $('.tev').on('click', function() {
 +
$('.tev' ).toggleClass( "selected" );
 +
$('.BB-suffix').removeClass('selected');
 +
$('.rbs').removeClass('selected');
 +
        $('.yncm').removeClass('selected');     
 +
        $('.his').removeClass('selected');
 +
$('.BB-prefix').removeClass('selected');
 +
        $('.winsulin').removeClass('selected');     
 +
        $('.proinsulin').removeClass('selected');
 +
        $('.arg').removeClass('selected'); 
 +
        $('.ecotin').removeClass('selected');             
 +
        $(".TEV_info").fadeToggle('slow');
 +
        $(".RBS_info").hide(); 
 +
        $(".YNCM_info").hide();       
 +
        $(".HIS_info").hide();         
 +
        $(".BBprefix_info").hide();
 +
        $(".ARG_info").hide(); 
 +
        $(".box2_arrow").hide();       
 +
        $(".BBsuffix_info").hide(); 
 +
        $(".ecotin_info").hide();
 +
        $(".proinsulin_info").hide(); 
 +
        $(".winsulin_info").hide();                               
 +
});
 +
    $('.arg').on('click', function() {
 +
$('.arg' ).toggleClass( "selected" );
 +
$('.BB-suffix').removeClass('selected');
 +
$('.rbs').removeClass('selected');
 +
        $('.yncm').removeClass('selected');     
 +
        $('.his').removeClass('selected');
 +
$('.tev').removeClass('selected');
 +
        $('.BB-prefix').removeClass('selected');     
 +
        $('.proinsulin').removeClass('selected');
 +
        $('.BB-suffix').removeClass('selected'); 
 +
        $('.ecotin').removeClass('selected');             
 +
        $(".ARG_info").fadeToggle('slow');
 +
        $(".RBS_info").hide(); 
 +
        $(".YNCM_info").hide();       
 +
        $(".HIS_info").hide();         
 +
        $(".TEV_info").hide();
 +
        $(".BBprefix_info").hide(); 
 +
        $(".box2_arrow").hide();       
 +
        $(".BBsuffix_info").hide();
 +
        $(".ecotin_info").hide();
 +
        $(".proinsulin_info").hide(); 
 +
        $(".winsulin_info").hide();                               
 +
});
 +
    $('.ecotin').on('click', function() {
 +
$('.ecotin' ).toggleClass( "selected" );
 +
$('.BB-suffix').removeClass('selected');
 +
$('.rbs').removeClass('selected');
 +
        $('.yncm').removeClass('selected');     
 +
        $('.his').removeClass('selected');
 +
$('.tev').removeClass('selected');
 +
        $('.winsulin').removeClass('selected');     
 +
        $('.proinsulin').removeClass('selected');
 +
        $('.arg').removeClass('selected'); 
 +
        $('.BB-prefix').removeClass('selected');             
 +
        $(".ecotin_info").fadeToggle('slow');
 +
        $(".RBS_info").hide(); 
 +
        $(".YNCM_info").hide();       
 +
        $(".HIS_info").hide();         
 +
        $(".TEV_info").hide();
 +
        $(".ARG_info").hide(); 
 +
        $(".box2_arrow").hide();       
 +
        $(".BBsuffix_info").hide(); 
 +
        $(".BBprefix_info").hide();
 +
        $(".proinsulin_info").hide(); 
 +
        $(".winsulin_info").hide();                               
 +
});
 +
    $('.proinsulin').on('click', function() {
 +
$('.ecotin' ).removeClass( "selected" );
 +
$('.BB-suffix').removeClass('selected');
 +
$('.rbs').removeClass('selected');
 +
        $('.yncm').removeClass('selected');     
 +
        $('.his').removeClass('selected');
 +
$('.tev').removeClass('selected');
 +
        $('.winsulin').removeClass('selected');     
 +
        $('.proinsulin').toggleClass('selected');
 +
        $('.arg').removeClass('selected'); 
 +
        $('.BB-prefix').removeClass('selected');             
 +
        $(".proinsulin_info").fadeToggle('slow');
 +
        $(".RBS_info").hide(); 
 +
        $(".YNCM_info").hide();       
 +
        $(".HIS_info").hide();         
 +
        $(".TEV_info").hide();
 +
        $(".ARG_info").hide(); 
 +
        $(".box2_arrow").hide();       
 +
        $(".BBsuffix_info").hide(); 
 +
        $(".BBprefix_info").hide();
 +
        $(".ecotin_info").hide();   
 +
        $(".winsulin_info").hide();                               
 +
});
 +
    $('.winsulin').on('click', function() {
 +
$('.ecotin' ).removeClass( "selected" );
 +
$('.BB-suffix').removeClass('selected');
 +
$('.rbs').removeClass('selected');
 +
        $('.yncm').removeClass('selected');     
 +
        $('.his').removeClass('selected');
 +
$('.tev').removeClass('selected');
 +
        $('.winsulin').toggleClass('selected');     
 +
        $('.proinsulin').removeClass('selected');
 +
        $('.arg').removeClass('selected'); 
 +
        $('.BB-prefix').removeClass('selected');             
 +
        $(".winsulin_info").fadeToggle('slow');
 +
        $(".RBS_info").hide(); 
 +
        $(".YNCM_info").hide();       
 +
        $(".HIS_info").hide();         
 +
        $(".TEV_info").hide();
 +
        $(".ARG_info").hide(); 
 +
        $(".box2_arrow").hide();       
 +
        $(".BBsuffix_info").hide(); 
 +
        $(".BBprefix_info").hide();
 +
        $(".ecotin_info").hide(); 
 +
        $(".proinsulin_info").hide();                                 
 +
});
 +
});
 +
 +
 
$(document).ready(function() {
 
$(document).ready(function() {
 
   $(function() {
 
   $(function() {
Line 160: Line 484:
 
color: #3e3f3f;
 
color: #3e3f3f;
 
font-size: 20px;
 
font-size: 20px;
        LINE-HEIGHT:30px;
 
 
text-align:center;
 
text-align:center;
 
}
 
}
Line 284: Line 607:
 
.winsulin {width:220px;background-color:#b0dfb3;}
 
.winsulin {width:220px;background-color:#b0dfb3;}
 
.divider {width:20px;}
 
.divider {width:20px;}
.proinsulin {width:260px;background-color:#96c6ca;}
+
.proinsulin {width:260px;background-color:#c1faff;}
.arg {width:30px;background-color:#c1faff;}
+
.arg {width:30px;background-color:#96c6ca;}
 
.ecotin {width:220px; background-color:#ffae7b;}
 
.ecotin {width:220px; background-color:#ffae7b;}
 
.element {
 
.element {
Line 383: Line 706:
 
.tev-arrow {border-left: 22.5px solid #f1ccf0;}
 
.tev-arrow {border-left: 22.5px solid #f1ccf0;}
 
.winsulin-arrow {border-left: 22.5px solid #b0dfb3;}
 
.winsulin-arrow {border-left: 22.5px solid #b0dfb3;}
.arg-arrow {border-left: 22.5px solid #c1faff;}
+
.arg-arrow {border-left: 22.5px solid #96c6ca;}
.proinsulin-arrow {border-left: 22.5px solid #96c6ca;}
+
.proinsulin-arrow {border-left: 22.5px solid #c1faff;}
 
.ecotin-arrow {border-left: 22.5px solid #ffae7b;}
 
.ecotin-arrow {border-left: 22.5px solid #ffae7b;}
 
.element_text:hover {
 
.element_text:hover {
Line 420: Line 743:
 
   border-radius: 10px 10px 0 0;
 
   border-radius: 10px 10px 0 0;
 
}
 
}
 +
 
label:first-of-type {
 
label:first-of-type {
 
   margin-left: 0;
 
   margin-left: 0;
 
   border-radius: 10px 10px 0 0;
 
   border-radius: 10px 10px 0 0;
 
}
 
}
 
 
.bish {
 
.bish {
 
   width: 100%;
 
   width: 100%;
Line 460: Line 783:
 
-webkit-box-shadow: 0 0 3px #ccc;
 
-webkit-box-shadow: 0 0 3px #ccc;
 
box-shadow: 0 0 3px #ccc;}
 
box-shadow: 0 0 3px #ccc;}
 +
  
 
   .plasmid .markerhover:hover {
 
   .plasmid .markerhover:hover {
Line 548: Line 872:
 
</head>
 
</head>
 
<body>
 
<body>
 +
 
<div class="container-fluid">
 
<div class="container-fluid">
<div class= "row" style="background-color:#e2e2e2;margin-top:60px;">
+
<div class= "row" style="background-color:#e2e2e2;margin-top:-20px;">
 
       <img class="img-center center-block"src="https://static.igem.org/mediawiki/2017/a/af/T--Sydney_Australia--ProjectDesignBanner.gif" width = "65%" class = "banner">
 
       <img class="img-center center-block"src="https://static.igem.org/mediawiki/2017/a/af/T--Sydney_Australia--ProjectDesignBanner.gif" width = "65%" class = "banner">
 
</div>
 
</div>
Line 639: Line 964:
 
<div class = "divider2"></div>
 
<div class = "divider2"></div>
 
<br>
 
<br>
<h4>Winsulin stuff</h4>
+
<h4>We began working on expressing proinsulin as it is a reliable, unpatented, and well characterised therapeutic. Proinsulin itself is inactive, and to become active it requires additional processing to form insulin. This processing is performed by the protease trypsin, which cleaves the C chain. from proinsulin. After trypsin activity, the A and B chains are left over to form active insulin. Proinsulin processing is demonstrated in Figure 1. with the cleavage of the C chain</h4>
 +
<img class="crispy" src="https://static.igem.org/mediawiki/2017/6/61/T--Sydney_Australia--design_cleavage.png" width="90%"/>
 +
<div> Figure 1. Cleavage of proinsulin results in active insulin</div>
 +
<h4>Due to the additional processing steps required to produce purified active insulin from proinsulin, increasing the cost of insulin synthesis, we looked for way to diminish this cost by reducing the steps required to obtain active insulin.</h4>
 +
<h4>Our team decided to design a single-chain insulin, as single-chain insulins have been demonstrated to have higher stability and activity than human proinsulin. Stability in particular was important to our design due to the need to synthesise an insulin that could be transported over long distances without requiring cold temperatures. Crucially, single-chain insulins do not need to be cleaved to be active, requiring less processing than proinsulin.</h4>
 +
 
 +
<h4> We based the linker peptide of Winsulin on sequences and principles tested in Rajpal et al., 2009. This paper found that peptides with a length of 5 to 12 amino acids had the highest receptor binding activity. Importantly, the composition of the sequence is identified as integral in determining whether the single chain construct has activity. The presence of two adjacent basic (dibasic) residues in the linker peptide have also been found to be crucial for insulin to bind to the insulin receptor.</h4>
 +
<h4>With the above considerations in mind, we designed the linker peptide sequence for Winsulin with the following properties:</h4>
 +
<ul>
 +
<li style="font-family:'Quicksand';color:#3e3f3f;font-size:20px;">12 amino acid length - this was as close as we could get to a 5-12 amino acid length as outlined by Rajpal et al., <a href="https://2017.igem.org/Team:Sydney_Australia/Patent_Law">while not infringing upon the (2005) patent</a></li>
 +
<li style="font-family:'Quicksand';color:#3e3f3f;font-size:20px;">Contains dibasic residues (lysine and arginine) - this ensures Winsulin’s receptor binding activity, and ensures that our Winsulin sequence <a href="https://2017.igem.org/Team:Sydney_Australia/Patent_Law">falls outside of the claims of the (2005) patent.</a></li>
 +
</ul>
 +
 
 +
<h4>We also modified the linker sequence in Rajpal et al.'s paper by including a GGGSGGG sequence. This is a standard sequence known to have high flexibility, enhancing the folding of our Winsulin. We also used it to increase the length of our linker peptide sequence, as we do not believe that this sequence will interfere with insulin activity in any way.</h4>
 +
<h4>Additionally, the C-terminal residue of proinsulin is an asparagine. In Winsulin we substituted this for a glycine to increase the pI of Winsulin to approximately 7.8. This pI is somewhat high, but it leads to the aggregation of Winsulin monomers to form hexamers. This substitution is present in many long-acting insulins currently on the market. Yet, interestingly, our modelling indicates our Winsulin is still a rapid-acting insulin, and dissociates from hexamers more readily than human insulin.</h4>
 +
<img class="crispy" src="https://static.igem.org/mediawiki/2017/8/8b/T--Sydney_Australia--winsulin.png" width="90%"/>
 +
 
 +
 
 
</div>
 
</div>
 
</div>
 
</div>
Line 862: Line 1,204:
 
</div>
 
</div>
 
</div>
 
</div>
 +
 +
  
 
<div class="row" style="height:10vh;"></div>
 
<div class="row" style="height:10vh;"></div>
Line 870: Line 1,214:
 
<div class = "divider1"></div>
 
<div class = "divider1"></div>
 
<br>
 
<br>
<h4>Vector intro </h4>
 
 
</div>
 
</div>
 
</div>
 
</div>
Line 882: Line 1,225:
 
<label for="tab-one1"><h3 class="tabheading">E. Coli</h3></label>
 
<label for="tab-one1"><h3 class="tabheading">E. Coli</h3></label>
 
<div class="bish">
 
<div class="bish">
<h4>Justification for pET15-b
+
<h4>We have chosen to use the pET-15b expression system paired with BL21 strain E. coli to express our periplasmic and cytoplasmic constructs. It is a well characterised vector that uses the T7 induction system to prevent expression without the presence of IPTG, providing a convenient level of control over production.</h4>
We have chosen to use the pET-15b expression system paired with BL21 strain E. coli to express our periplasmic and cytoplasmic constructs. It is a well characterised vector that uses the T7 induction system to prevent expression without the presence of IPTG, providing a convenient level of control over production.</h4>
+
 
<div class="row">
 
<div class="row">
 
<figure>
 
<figure>
Line 1,003: Line 1,345:
 
<br></br> We considered two methods for the purification of our insulins: nickel columns, and nickel agarose resin. The nickel column method is simpler, as insulin can be purified in a single step, yet it is more expensive. On the other hand, the nickel agarose resin method involves more steps but is more cost-effective.
 
<br></br> We considered two methods for the purification of our insulins: nickel columns, and nickel agarose resin. The nickel column method is simpler, as insulin can be purified in a single step, yet it is more expensive. On the other hand, the nickel agarose resin method involves more steps but is more cost-effective.
 
<br></br> An additional factor in the purification of our insulins is the need to remove the 6x His sequence and the expression tags from the insulin. We designed our Winsulin constructs so that both could be cleaved off in a single step by TEV protease. Our Proinsulin constructs take this further - in a single step using the protease trypsin, the His-tag, expression tag and C chain are removed, simultaneously removing the tags and allowing the proinsulin to fold into active insulin.  
 
<br></br> An additional factor in the purification of our insulins is the need to remove the 6x His sequence and the expression tags from the insulin. We designed our Winsulin constructs so that both could be cleaved off in a single step by TEV protease. Our Proinsulin constructs take this further - in a single step using the protease trypsin, the His-tag, expression tag and C chain are removed, simultaneously removing the tags and allowing the proinsulin to fold into active insulin.  
 
 
<br></br>In the nickel column method, the protease step also releases the insulin from the nickel column for collection. However, it also reduces the amount of insulin released from the nickel column. Taking this into consideration, along with the increased expense of the nickel column method, our team decided to use the nickel agarose resin method for insulin purification. </h4>
 
<br></br>In the nickel column method, the protease step also releases the insulin from the nickel column for collection. However, it also reduces the amount of insulin released from the nickel column. Taking this into consideration, along with the increased expense of the nickel column method, our team decided to use the nickel agarose resin method for insulin purification. </h4>
 +
</h4>
 
</div>
 
</div>
 
</div>
 
</div>
Line 1,023: Line 1,365:
 
<div class = "divider1"></div>
 
<div class = "divider1"></div>
 
<br></br>
 
<br></br>
<h4> ??</h4>
+
<h4> As an initial test to determine protein folding and accurately quantify expression yield, we will be using an ELISA. This test uses antibodies that bind to the folded structure of insulin with extremely high specificity. In this regard, it gives an initial indication as to whether the protein is in a conformation that could potentially bind to the insulin receptor. Additionally, the antibodies are tagged with fluorescent protein, so the relative fluorescence will correlate to the amount of insulin in the sample, also with great accuracy.
  
 +
<br></br>Following the ELISA, we will test the function of our expressed recombinant Winsulin, and Proinsulin (with trypsin removal of the C-peptide) using an in vitro glucose uptake assay. Here, we measure the changes in glycogen synthesis and glucose oxidation in response to activation of the insulin receptor in cell cultures. C14 radioalabelled glucose will be taken up into the cell at a faster rate upon stimulation and result in incorporation of the carbon into glycogen and CO2, which is measured by a scintillation counter. This assay is a great alternative to an in vivo assay that uses involves assessing the convulsions of mice in response to injections of increasing concentrations of insulin.</h4>
 +
<br></br>
 
<figure>  
 
<figure>  
 
<img class="crispy" align="left" src="https://static.igem.org/mediawiki/2017/9/95/T--Sydney_Australia--design_assay.png" width="100%"></img>
 
<img class="crispy" align="left" src="https://static.igem.org/mediawiki/2017/9/95/T--Sydney_Australia--design_assay.png" width="100%"></img>
Line 1,034: Line 1,378:
 
<div class="row" id="additional-intro">
 
<div class="row" id="additional-intro">
 
<div class="para_container">
 
<div class="para_container">
<h2> Additional Solutions</h2>
+
<h2> Additional Design Considerations</h2>
 
<div class = "divider2"></div>
 
<div class = "divider2"></div>
<br></br>
 
<h4> ??</h4>
 
 
<br></br>
 
<br></br>
 
<h3> WB800 Bacillus Strain</h3>
 
<h3> WB800 Bacillus Strain</h3>
Line 1,058: Line 1,400:
 
</figure>
 
</figure>
  
 +
</div>
 +
</div>
 +
 +
<div class="row" id="pus270">
 
<div class="para_container">
 
<div class="para_container">
 
<h2> pUS270</h2>
 
<h2> pUS270</h2>
Line 1,070: Line 1,416:
 
Click on each feature for more information
 
Click on each feature for more information
 
</h4>
 
</h4>
</div>
 
</div>
 
</div>
 
</div>
 
 
</div>
 
</div>
  
 +
<div class="row" style="padding:20px;">
 
<div class="pus270_container">
 
<div class="pus270_container">
 
<div class="pus_270">
 
<div class="pus_270">
Line 1,150: Line 1,493:
 
</plasmid>
 
</plasmid>
 
</div>
 
</div>
<div class="pus_270_info element_info_box_container" style="padding:5%;">
+
<div class="pus_270_info element_info_box_container" style="padding:5%">
 
<div class="lacr_info">
 
<div class="lacr_info">
 
<h6>Lac Operon Repressor</h6>
 
<h6>Lac Operon Repressor</h6>
Line 1,195: Line 1,538:
  
  
 +
</div>
 
</div>
 
</div>
 
</div>
 
</div>
Line 1,200: Line 1,544:
 
<div class="row" style="height:10vh;"></div>
 
<div class="row" style="height:10vh;"></div>
 
</div>
 
</div>
 
<script>
 
! function(t, e, n) {
 
    "use strict";
 
 
    function r(t, e) {
 
        return e = e || Error,
 
            function() {
 
                var n, r, i = arguments[0],
 
                    a = "[" + (t ? t + ":" : "") + i + "] ",
 
                    o = arguments[1],
 
                    s = arguments;
 
                for (n = a + o.replace(/\{\d+\}/g, function(t) {
 
                        var e = +t.slice(1, -1);
 
                        return e + 2 < s.length ? de(s[e + 2]) : t
 
                    }), n = n + "\nhttp://errors.angularjs.org/1.3.13/" + (t ? t + "/" : "") + i, r = 2; r < arguments.length; r++) n = n + (2 == r ? "?" : "&") + "p" + (r - 2) + "=" + encodeURIComponent(de(arguments[r]));
 
                return new e(n)
 
            }
 
    }
 
 
    function i(t) {
 
        if (null == t || C(t)) return !1;
 
        var e = t.length;
 
        return t.nodeType === gi && e ? !0 : b(t) || ci(t) || 0 === e || "number" == typeof e && e > 0 && e - 1 in t
 
    }
 
 
    function a(t, e, n) {
 
        var r, o;
 
        if (t)
 
            if (k(t))
 
                for (r in t) "prototype" == r || "length" == r || "name" == r || t.hasOwnProperty && !t.hasOwnProperty(r) || e.call(n, t[r], r, t);
 
            else if (ci(t) || i(t)) {
 
            var s = "object" != typeof t;
 
            for (r = 0, o = t.length; o > r; r++)(s || r in t) && e.call(n, t[r], r, t)
 
        } else if (t.forEach && t.forEach !== a) t.forEach(e, n, t);
 
        else
 
            for (r in t) t.hasOwnProperty(r) && e.call(n, t[r], r, t);
 
        return t
 
    }
 
 
    function o(t) {
 
        return Object.keys(t).sort()
 
    }
 
 
    function s(t, e, n) {
 
        for (var r = o(t), i = 0; i < r.length; i++) e.call(n, t[r[i]], r[i]);
 
        return r
 
    }
 
 
    function u(t) {
 
        return function(e, n) {
 
            t(n, e)
 
        }
 
    }
 
 
    function l() {
 
        return ++ui
 
    }
 
 
    function c(t, e) {
 
        e ? t.$$hashKey = e : delete t.$$hashKey
 
    }
 
 
    function f(t) {
 
        for (var e = t.$$hashKey, n = 1, r = arguments.length; r > n; n++) {
 
            var i = arguments[n];
 
            if (i)
 
                for (var a = Object.keys(i), o = 0, s = a.length; s > o; o++) {
 
                    var u = a[o];
 
                    t[u] = i[u]
 
                }
 
        }
 
        return c(t, e), t
 
    }
 
 
    function d(t) {
 
        return parseInt(t, 10)
 
    }
 
 
    function h(t, e) {
 
        return f(Object.create(t), e)
 
    }
 
 
    function p() {}
 
 
    function $(t) {
 
        return t
 
    }
 
 
    function m(t) {
 
        return function() {
 
            return t
 
        }
 
    }
 
 
    function g(t) {
 
        return "undefined" == typeof t
 
    }
 
 
    function v(t) {
 
        return "undefined" != typeof t
 
    }
 
 
    function y(t) {
 
        return null !== t && "object" == typeof t
 
    }
 
 
    function b(t) {
 
        return "string" == typeof t
 
    }
 
 
    function w(t) {
 
        return "number" == typeof t
 
    }
 
 
    function x(t) {
 
        return "[object Date]" === ai.call(t)
 
    }
 
 
    function k(t) {
 
        return "function" == typeof t
 
    }
 
 
    function S(t) {
 
        return "[object RegExp]" === ai.call(t)
 
    }
 
 
    function C(t) {
 
        return t && t.window === t
 
    }
 
 
    function A(t) {
 
        return t && t.$evalAsync && t.$watch
 
    }
 
 
    function O(t) {
 
        return "[object File]" === ai.call(t)
 
    }
 
 
    function E(t) {
 
        return "[object FormData]" === ai.call(t)
 
    }
 
 
    function j(t) {
 
        return "[object Blob]" === ai.call(t)
 
    }
 
 
    function N(t) {
 
        return "boolean" == typeof t
 
    }
 
 
    function T(t) {
 
        return t && k(t.then)
 
    }
 
 
    function M(t) {
 
        return !(!t || !(t.nodeName || t.prop && t.attr && t.find))
 
    }
 
 
    function P(t) {
 
        var e, n = {},
 
            r = t.split(",");
 
        for (e = 0; e < r.length; e++) n[r[e]] = !0;
 
        return n
 
    }
 
 
    function V(t) {
 
        return Wr(t.nodeName || t[0] && t[0].nodeName)
 
    }
 
 
    function q(t, e) {
 
        var n = t.indexOf(e);
 
        return n >= 0 && t.splice(n, 1), e
 
    }
 
 
    function D(t, e, n, r) {
 
        if (C(t) || A(t)) throw oi("cpws", "Can't copy! Making copies of Window or Scope instances is not supported.");
 
        if (e) {
 
            if (t === e) throw oi("cpi", "Can't copy! Source and destination are identical.");
 
            if (n = n || [], r = r || [], y(t)) {
 
                var i = n.indexOf(t);
 
                if (-1 !== i) return r[i];
 
                n.push(t), r.push(e)
 
            }
 
            var o;
 
            if (ci(t)) {
 
                e.length = 0;
 
                for (var s = 0; s < t.length; s++) o = D(t[s], null, n, r), y(t[s]) && (n.push(t[s]), r.push(o)), e.push(o)
 
            } else {
 
                var u = e.$$hashKey;
 
                ci(e) ? e.length = 0 : a(e, function(t, n) {
 
                    delete e[n]
 
                });
 
                for (var l in t) t.hasOwnProperty(l) && (o = D(t[l], null, n, r), y(t[l]) && (n.push(t[l]), r.push(o)), e[l] = o);
 
                c(e, u)
 
            }
 
        } else if (e = t, t)
 
            if (ci(t)) e = D(t, [], n, r);
 
            else if (x(t)) e = new Date(t.getTime());
 
        else if (S(t)) e = new RegExp(t.source, t.toString().match(/[^\/]*$/)[0]), e.lastIndex = t.lastIndex;
 
        else if (y(t)) {
 
            var f = Object.create(Object.getPrototypeOf(t));
 
            e = D(t, f, n, r)
 
        }
 
        return e
 
    }
 
 
    function R(t, e) {
 
        if (ci(t)) {
 
            e = e || [];
 
            for (var n = 0, r = t.length; r > n; n++) e[n] = t[n]
 
        } else if (y(t)) {
 
            e = e || {};
 
            for (var i in t)("$" !== i.charAt(0) || "$" !== i.charAt(1)) && (e[i] = t[i])
 
        }
 
        return e || t
 
    }
 
 
    function I(t, e) {
 
        if (t === e) return !0;
 
        if (null === t || null === e) return !1;
 
        if (t !== t && e !== e) return !0;
 
        var r, i, a, o = typeof t,
 
            s = typeof e;
 
        if (o == s && "object" == o) {
 
            if (!ci(t)) {
 
                if (x(t)) return x(e) ? I(t.getTime(), e.getTime()) : !1;
 
                if (S(t) && S(e)) return t.toString() == e.toString();
 
                if (A(t) || A(e) || C(t) || C(e) || ci(e)) return !1;
 
                a = {};
 
                for (i in t)
 
                    if ("$" !== i.charAt(0) && !k(t[i])) {
 
                        if (!I(t[i], e[i])) return !1;
 
                        a[i] = !0
 
                    }
 
                for (i in e)
 
                    if (!a.hasOwnProperty(i) && "$" !== i.charAt(0) && e[i] !== n && !k(e[i])) return !1;
 
                return !0
 
            }
 
            if (!ci(e)) return !1;
 
            if ((r = t.length) == e.length) {
 
                for (i = 0; r > i; i++)
 
                    if (!I(t[i], e[i])) return !1;
 
                return !0
 
            }
 
        }
 
        return !1
 
    }
 
 
    function _(t, e, n) {
 
        return t.concat(ni.call(e, n))
 
    }
 
 
    function U(t, e) {
 
        return ni.call(t, e || 0)
 
    }
 
 
    function L(t, e) {
 
        var n = arguments.length > 2 ? U(arguments, 2) : [];
 
        return !k(e) || e instanceof RegExp ? e : n.length ? function() {
 
            return arguments.length ? e.apply(t, _(n, arguments, 0)) : e.apply(t, n)
 
        } : function() {
 
            return arguments.length ? e.apply(t, arguments) : e.call(t)
 
        }
 
    }
 
 
    function F(t, r) {
 
        var i = r;
 
        return "string" == typeof t && "$" === t.charAt(0) && "$" === t.charAt(1) ? i = n : C(r) ? i = "$WINDOW" : r && e === r ? i = "$DOCUMENT" : A(r) && (i = "$SCOPE"), i
 
    }
 
 
    function H(t, e) {
 
        return "undefined" == typeof t ? n : (w(e) || (e = e ? 2 : null), JSON.stringify(t, F, e))
 
    }
 
 
    function B(t) {
 
        return b(t) ? JSON.parse(t) : t
 
    }
 
 
    function z(t) {
 
        t = Qr(t).clone();
 
        try {
 
            t.empty()
 
        } catch (e) {}
 
        var n = Qr("<div>").append(t).html();
 
        try {
 
            return t[0].nodeType === vi ? Wr(n) : n.match(/^(<[^>]+>)/)[1].replace(/^<([\w\-]+)/, function(t, e) {
 
                return "<" + Wr(e)
 
            })
 
        } catch (e) {
 
            return Wr(n)
 
        }
 
    }
 
 
    function G(t) {
 
        try {
 
            return decodeURIComponent(t)
 
        } catch (e) {}
 
    }
 
 
    function W(t) {
 
        var e, n, r = {};
 
        return a((t || "").split("&"), function(t) {
 
            if (t && (e = t.replace(/\+/g, "%20").split("="), n = G(e[0]), v(n))) {
 
                var i = v(e[1]) ? G(e[1]) : !0;
 
                Jr.call(r, n) ? ci(r[n]) ? r[n].push(i) : r[n] = [r[n], i] : r[n] = i
 
            }
 
        }), r
 
    }
 
 
    function J(t) {
 
        var e = [];
 
        return a(t, function(t, n) {
 
            ci(t) ? a(t, function(t) {
 
                e.push(Z(n, !0) + (t === !0 ? "" : "=" + Z(t, !0)))
 
            }) : e.push(Z(n, !0) + (t === !0 ? "" : "=" + Z(t, !0)))
 
        }), e.length ? e.join("&") : ""
 
    }
 
 
    function Y(t) {
 
        return Z(t, !0).replace(/%26/gi, "&").replace(/%3D/gi, "=").replace(/%2B/gi, "+")
 
    }
 
 
    function Z(t, e) {
 
        return encodeURIComponent(t).replace(/%40/gi, "@").replace(/%3A/gi, ":").replace(/%24/g, "$").replace(/%2C/gi, ",").replace(/%3B/gi, ";").replace(/%20/g, e ? "%20" : "+")
 
    }
 
 
    function K(t, e) {
 
        var n, r, i = pi.length;
 
        for (t = Qr(t), r = 0; i > r; ++r)
 
            if (n = pi[r] + e, b(n = t.attr(n))) return n;
 
        return null
 
    }
 
 
    function X(t, e) {
 
        var n, r, i = {};
 
        a(pi, function(e) {
 
            var i = e + "app";
 
            !n && t.hasAttribute && t.hasAttribute(i) && (n = t, r = t.getAttribute(i))
 
        }), a(pi, function(e) {
 
            var i, a = e + "app";
 
            !n && (i = t.querySelector("[" + a.replace(":", "\\:") + "]")) && (n = i, r = i.getAttribute(a))
 
        }), n && (i.strictDi = null !== K(n, "strict-di"), e(n, r ? [r] : [], i))
 
    }
 
 
    function Q(n, r, i) {
 
        y(i) || (i = {});
 
        var o = {
 
            strictDi: !1
 
        };
 
        i = f(o, i);
 
        var s = function() {
 
                if (n = Qr(n), n.injector()) {
 
                    var t = n[0] === e ? "document" : z(n);
 
                    throw oi("btstrpd", "App Already Bootstrapped with this Element '{0}'", t.replace(/</, "&lt;").replace(/>/, "&gt;"))
 
                }
 
                r = r || [], r.unshift(["$provide", function(t) {
 
                    t.value("$rootElement", n)
 
                }]), i.debugInfoEnabled && r.push(["$compileProvider", function(t) {
 
                    t.debugInfoEnabled(!0)
 
                }]), r.unshift("ng");
 
                var a = Be(r, i.strictDi);
 
                return a.invoke(["$rootScope", "$rootElement", "$compile", "$injector", function(t, e, n, r) {
 
                    t.$apply(function() {
 
                        e.data("$injector", r), n(e)(t)
 
                    })
 
                }]), a
 
            },
 
            u = /^NG_ENABLE_DEBUG_INFO!/,
 
            l = /^NG_DEFER_BOOTSTRAP!/;
 
        return t && u.test(t.name) && (i.debugInfoEnabled = !0, t.name = t.name.replace(u, "")), t && !l.test(t.name) ? s() : (t.name = t.name.replace(l, ""), si.resumeBootstrap = function(t) {
 
            return a(t, function(t) {
 
                r.push(t)
 
            }), s()
 
        }, k(si.resumeDeferredBootstrap) && si.resumeDeferredBootstrap(), void 0)
 
    }
 
 
    function te() {
 
        t.name = "NG_ENABLE_DEBUG_INFO!" + t.name, t.location.reload()
 
    }
 
 
    function ee(t) {
 
        var e = si.element(t).injector();
 
        if (!e) throw oi("test", "no injector found for element argument to getTestability");
 
        return e.get("$$testability")
 
    }
 
 
    function ne(t, e) {
 
        return e = e || "_", t.replace($i, function(t, n) {
 
            return (n ? e : "") + t.toLowerCase()
 
        })
 
    }
 
 
    function re() {
 
        var e;
 
        mi || (ti = t.jQuery, ti && ti.fn.on ? (Qr = ti, f(ti.fn, {
 
            scope: Di.scope,
 
            isolateScope: Di.isolateScope,
 
            controller: Di.controller,
 
            injector: Di.injector,
 
            inheritedData: Di.inheritedData
 
        }), e = ti.cleanData, ti.cleanData = function(t) {
 
            var n;
 
            if (li) li = !1;
 
            else
 
                for (var r, i = 0; null != (r = t[i]); i++) n = ti._data(r, "events"), n && n.$destroy && ti(r).triggerHandler("$destroy");
 
            e(t)
 
        }) : Qr = be, si.element = Qr, mi = !0)
 
    }
 
 
    function ie(t, e, n) {
 
        if (!t) throw oi("areq", "Argument '{0}' is {1}", e || "?", n || "required");
 
        return t
 
    }
 
 
    function ae(t, e, n) {
 
        return n && ci(t) && (t = t[t.length - 1]), ie(k(t), e, "not a function, got " + (t && "object" == typeof t ? t.constructor.name || "Object" : typeof t)), t
 
    }
 
 
    function oe(t, e) {
 
        if ("hasOwnProperty" === t) throw oi("badname", "hasOwnProperty is not a valid {0} name", e)
 
    }
 
 
    function se(t, e, n) {
 
        if (!e) return t;
 
        for (var r, i = e.split("."), a = t, o = i.length, s = 0; o > s; s++) r = i[s], t && (t = (a = t)[r]);
 
        return !n && k(t) ? L(a, t) : t
 
    }
 
 
    function ue(t) {
 
        var e = t[0],
 
            n = t[t.length - 1],
 
            r = [e];
 
        do {
 
            if (e = e.nextSibling, !e) break;
 
            r.push(e)
 
        } while (e !== n);
 
        return Qr(r)
 
    }
 
 
    function le() {
 
        return Object.create(null)
 
    }
 
 
    function ce(t) {
 
        function e(t, e, n) {
 
            return t[e] || (t[e] = n())
 
        }
 
        var n = r("$injector"),
 
            i = r("ng"),
 
            a = e(t, "angular", Object);
 
        return a.$$minErr = a.$$minErr || r, e(a, "module", function() {
 
            var t = {};
 
            return function(r, a, o) {
 
                var s = function(t, e) {
 
                    if ("hasOwnProperty" === t) throw i("badname", "hasOwnProperty is not a valid {0} name", e)
 
                };
 
                return s(r, "module"), a && t.hasOwnProperty(r) && (t[r] = null), e(t, r, function() {
 
                    function t(t, n, r, i) {
 
                        return i || (i = e),
 
                            function() {
 
                                return i[r || "push"]([t, n, arguments]), l
 
                            }
 
                    }
 
                    if (!a) throw n("nomod", "Module '{0}' is not available! You either misspelled the module name or forgot to load it. If registering a module ensure that you specify the dependencies as the second argument.", r);
 
                    var e = [],
 
                        i = [],
 
                        s = [],
 
                        u = t("$injector", "invoke", "push", i),
 
                        l = {
 
                            _invokeQueue: e,
 
                            _configBlocks: i,
 
                            _runBlocks: s,
 
                            requires: a,
 
                            name: r,
 
                            provider: t("$provide", "provider"),
 
                            factory: t("$provide", "factory"),
 
                            service: t("$provide", "service"),
 
                            value: t("$provide", "value"),
 
                            constant: t("$provide", "constant", "unshift"),
 
                            animation: t("$animateProvider", "register"),
 
                            filter: t("$filterProvider", "register"),
 
                            controller: t("$controllerProvider", "register"),
 
                            directive: t("$compileProvider", "directive"),
 
                            config: u,
 
                            run: function(t) {
 
                                return s.push(t), this
 
                            }
 
                        };
 
                    return o && u(o), l
 
                })
 
            }
 
        })
 
    }
 
 
    function fe(t) {
 
        var e = [];
 
        return JSON.stringify(t, function(t, n) {
 
            if (n = F(t, n), y(n)) {
 
                if (e.indexOf(n) >= 0) return "<<already seen>>";
 
                e.push(n)
 
            }
 
            return n
 
        })
 
    }
 
 
    function de(t) {
 
        return "function" == typeof t ? t.toString().replace(/ \{[\s\S]*$/, "") : "undefined" == typeof t ? "undefined" : "string" != typeof t ? fe(t) : t
 
    }
 
 
    function he(e) {
 
        f(e, {
 
            bootstrap: Q,
 
            copy: D,
 
            extend: f,
 
            equals: I,
 
            element: Qr,
 
            forEach: a,
 
            injector: Be,
 
            noop: p,
 
            bind: L,
 
            toJson: H,
 
            fromJson: B,
 
            identity: $,
 
            isUndefined: g,
 
            isDefined: v,
 
            isString: b,
 
            isFunction: k,
 
            isObject: y,
 
            isNumber: w,
 
            isElement: M,
 
            isArray: ci,
 
            version: xi,
 
            isDate: x,
 
            lowercase: Wr,
 
            uppercase: Yr,
 
            callbacks: {
 
                counter: 0
 
            },
 
            getTestability: ee,
 
            $$minErr: r,
 
            $$csp: hi,
 
            reloadWithDebugInfo: te
 
        }), ei = ce(t);
 
        try {
 
            ei("ngLocale")
 
        } catch (n) {
 
            ei("ngLocale", []).provider("$locale", gn)
 
        }
 
        ei("ng", ["ngLocale"], ["$provide", function(t) {
 
            t.provider({
 
                $$sanitizeUri: Yn
 
            }), t.provider("$compile", Ke).directive({
 
                a: Ea,
 
                input: za,
 
                textarea: za,
 
                form: Pa,
 
                script: qo,
 
                select: Io,
 
                style: Uo,
 
                option: _o,
 
                ngBind: Ja,
 
                ngBindHtml: Za,
 
                ngBindTemplate: Ya,
 
                ngClass: Xa,
 
                ngClassEven: to,
 
                ngClassOdd: Qa,
 
                ngCloak: eo,
 
                ngController: no,
 
                ngForm: Va,
 
                ngHide: jo,
 
                ngIf: ao,
 
                ngInclude: oo,
 
                ngInit: uo,
 
                ngNonBindable: ko,
 
                ngPluralize: So,
 
                ngRepeat: Co,
 
                ngShow: Eo,
 
                ngStyle: No,
 
                ngSwitch: To,
 
                ngSwitchWhen: Mo,
 
                ngSwitchDefault: Po,
 
                ngOptions: Ro,
 
                ngTransclude: Vo,
 
                ngModel: bo,
 
                ngList: lo,
 
                ngChange: Ka,
 
                pattern: Fo,
 
                ngPattern: Fo,
 
                required: Lo,
 
                ngRequired: Lo,
 
                minlength: Bo,
 
                ngMinlength: Bo,
 
                maxlength: Ho,
 
                ngMaxlength: Ho,
 
                ngValue: Wa,
 
                ngModelOptions: xo
 
            }).directive({
 
                ngInclude: so
 
            }).directive(ja).directive(ro), t.provider({
 
                $anchorScroll: ze,
 
                $animate: Gi,
 
                $browser: Je,
 
                $cacheFactory: Ye,
 
                $controller: en,
 
                $document: nn,
 
                $exceptionHandler: rn,
 
                $filter: sr,
 
                $interpolate: $n,
 
                $interval: mn,
 
                $http: fn,
 
                $httpBackend: hn,
 
                $location: Tn,
 
                $log: Mn,
 
                $parse: Hn,
 
                $rootScope: Jn,
 
                $q: Bn,
 
                $$q: zn,
 
                $sce: Qn,
 
                $sceDelegate: Xn,
 
                $sniffer: tr,
 
                $templateCache: Ze,
 
                $templateRequest: er,
 
                $$testability: nr,
 
                $timeout: rr,
 
                $window: or,
 
                $$rAF: Wn,
 
                $$asyncCallback: Ge,
 
                $$jqLite: _e
 
            })
 
        }])
 
    }
 
 
    function pe() {
 
        return ++Si
 
    }
 
 
    function $e(t) {
 
        return t.replace(Oi, function(t, e, n, r) {
 
            return r ? n.toUpperCase() : n
 
        }).replace(Ei, "Moz$1")
 
    }
 
 
    function me(t) {
 
        return !Mi.test(t)
 
    }
 
 
    function ge(t) {
 
        var e = t.nodeType;
 
        return e === gi || !e || e === bi
 
    }
 
 
    function ve(t, e) {
 
        var n, r, i, o, s = e.createDocumentFragment(),
 
            u = [];
 
        if (me(t)) u.push(e.createTextNode(t));
 
        else {
 
            for (n = n || s.appendChild(e.createElement("div")), r = (Pi.exec(t) || ["", ""])[1].toLowerCase(), i = qi[r] || qi._default, n.innerHTML = i[1] + t.replace(Vi, "<$1></$2>") + i[2], o = i[0]; o--;) n = n.lastChild;
 
            u = _(u, n.childNodes), n = s.firstChild, n.textContent = ""
 
        }
 
        return s.textContent = "", s.innerHTML = "", a(u, function(t) {
 
            s.appendChild(t)
 
        }), s
 
    }
 
 
    function ye(t, n) {
 
        n = n || e;
 
        var r;
 
        return (r = Ti.exec(t)) ? [n.createElement(r[1])] : (r = ve(t, n)) ? r.childNodes : []
 
    }
 
 
    function be(t) {
 
        if (t instanceof be) return t;
 
        var e;
 
        if (b(t) && (t = fi(t), e = !0), !(this instanceof be)) {
 
            if (e && "<" != t.charAt(0)) throw Ni("nosel", "Looking up elements via selectors is not supported by jqLite! See: http://docs.angularjs.org/api/angular.element");
 
            return new be(t)
 
        }
 
        e ? Ne(this, ye(t)) : Ne(this, t)
 
    }
 
 
    function we(t) {
 
        return t.cloneNode(!0)
 
    }
 
 
    function xe(t, e) {
 
        if (e || Se(t), t.querySelectorAll)
 
            for (var n = t.querySelectorAll("*"), r = 0, i = n.length; i > r; r++) Se(n[r])
 
    }
 
 
    function ke(t, e, n, r) {
 
        if (v(r)) throw Ni("offargs", "jqLite#off() does not support the `selector` argument");
 
        var i = Ce(t),
 
            o = i && i.events,
 
            s = i && i.handle;
 
        if (s)
 
            if (e) a(e.split(" "), function(e) {
 
                if (v(n)) {
 
                    var r = o[e];
 
                    if (q(r || [], n), r && r.length > 0) return
 
                }
 
                Ai(t, e, s), delete o[e]
 
            });
 
            else
 
                for (e in o) "$destroy" !== e && Ai(t, e, s), delete o[e]
 
    }
 
 
    function Se(t, e) {
 
        var r = t.ng339,
 
            i = r && ki[r];
 
        if (i) {
 
            if (e) return delete i.data[e], void 0;
 
            i.handle && (i.events.$destroy && i.handle({}, "$destroy"), ke(t)), delete ki[r], t.ng339 = n
 
        }
 
    }
 
 
    function Ce(t, e) {
 
        var r = t.ng339,
 
            i = r && ki[r];
 
        return e && !i && (t.ng339 = r = pe(), i = ki[r] = {
 
            events: {},
 
            data: {},
 
            handle: n
 
        }), i
 
    }
 
 
    function Ae(t, e, n) {
 
        if (ge(t)) {
 
            var r = v(n),
 
                i = !r && e && !y(e),
 
                a = !e,
 
                o = Ce(t, !i),
 
                s = o && o.data;
 
            if (r) s[e] = n;
 
            else {
 
                if (a) return s;
 
                if (i) return s && s[e];
 
                f(s, e)
 
            }
 
        }
 
    }
 
 
    function Oe(t, e) {
 
        return t.getAttribute ? (" " + (t.getAttribute("class") || "") + " ").replace(/[\n\t]/g, " ").indexOf(" " + e + " ") > -1 : !1
 
    }
 
 
    function Ee(t, e) {
 
        e && t.setAttribute && a(e.split(" "), function(e) {
 
            t.setAttribute("class", fi((" " + (t.getAttribute("class") || "") + " ").replace(/[\n\t]/g, " ").replace(" " + fi(e) + " ", " ")))
 
        })
 
    }
 
 
    function je(t, e) {
 
        if (e && t.setAttribute) {
 
            var n = (" " + (t.getAttribute("class") || "") + " ").replace(/[\n\t]/g, " ");
 
            a(e.split(" "), function(t) {
 
                t = fi(t), -1 === n.indexOf(" " + t + " ") && (n += t + " ")
 
            }), t.setAttribute("class", fi(n))
 
        }
 
    }
 
 
    function Ne(t, e) {
 
        if (e)
 
            if (e.nodeType) t[t.length++] = e;
 
            else {
 
                var n = e.length;
 
                if ("number" == typeof n && e.window !== e) {
 
                    if (n)
 
                        for (var r = 0; n > r; r++) t[t.length++] = e[r]
 
                } else t[t.length++] = e
 
            }
 
    }
 
 
    function Te(t, e) {
 
        return Me(t, "$" + (e || "ngController") + "Controller")
 
    }
 
 
    function Me(t, e, r) {
 
        t.nodeType == bi && (t = t.documentElement);
 
        for (var i = ci(e) ? e : [e]; t;) {
 
            for (var a = 0, o = i.length; o > a; a++)
 
                if ((r = Qr.data(t, i[a])) !== n) return r;
 
            t = t.parentNode || t.nodeType === wi && t.host
 
        }
 
    }
 
 
    function Pe(t) {
 
        for (xe(t, !0); t.firstChild;) t.removeChild(t.firstChild)
 
    }
 
 
    function Ve(t, e) {
 
        e || xe(t);
 
        var n = t.parentNode;
 
        n && n.removeChild(t)
 
    }
 
 
    function qe(e, n) {
 
        n = n || t, "complete" === n.document.readyState ? n.setTimeout(e) : Qr(n).on("load", e)
 
    }
 
 
    function De(t, e) {
 
        var n = Ri[e.toLowerCase()];
 
        return n && Ii[V(t)] && n
 
    }
 
 
    function Re(t, e) {
 
        var n = t.nodeName;
 
        return ("INPUT" === n || "TEXTAREA" === n) && _i[e]
 
    }
 
 
    function Ie(t, e) {
 
        var n = function(n, r) {
 
            n.isDefaultPrevented = function() {
 
                return n.defaultPrevented
 
            };
 
            var i = e[r || n.type],
 
                a = i ? i.length : 0;
 
            if (a) {
 
                if (g(n.immediatePropagationStopped)) {
 
                    var o = n.stopImmediatePropagation;
 
                    n.stopImmediatePropagation = function() {
 
                        n.immediatePropagationStopped = !0, n.stopPropagation && n.stopPropagation(), o && o.call(n)
 
                    }
 
                }
 
                n.isImmediatePropagationStopped = function() {
 
                    return n.immediatePropagationStopped === !0
 
                }, a > 1 && (i = R(i));
 
                for (var s = 0; a > s; s++) n.isImmediatePropagationStopped() || i[s].call(t, n)
 
            }
 
        };
 
        return n.elem = t, n
 
    }
 
 
    function _e() {
 
        this.$get = function() {
 
            return f(be, {
 
                hasClass: function(t, e) {
 
                    return t.attr && (t = t[0]), Oe(t, e)
 
                },
 
                addClass: function(t, e) {
 
                    return t.attr && (t = t[0]), je(t, e)
 
                },
 
                removeClass: function(t, e) {
 
                    return t.attr && (t = t[0]), Ee(t, e)
 
                }
 
            })
 
        }
 
    }
 
 
    function Ue(t, e) {
 
        var n = t && t.$$hashKey;
 
        if (n) return "function" == typeof n && (n = t.$$hashKey()), n;
 
        var r = typeof t;
 
        return n = "function" == r || "object" == r && null !== t ? t.$$hashKey = r + ":" + (e || l)() : r + ":" + t
 
    }
 
 
    function Le(t, e) {
 
        if (e) {
 
            var n = 0;
 
            this.nextUid = function() {
 
                return ++n
 
            }
 
        }
 
        a(t, this.put, this)
 
    }
 
 
    function Fe(t) {
 
        var e = t.toString().replace(Hi, ""),
 
            n = e.match(Ui);
 
        return n ? "function(" + (n[1] || "").replace(/[\s\r\n]+/, " ") + ")" : "fn"
 
    }
 
 
    function He(t, e, n) {
 
        var r, i, o, s;
 
        if ("function" == typeof t) {
 
            if (!(r = t.$inject)) {
 
                if (r = [], t.length) {
 
                    if (e) throw b(n) && n || (n = t.name || Fe(t)), Bi("strictdi", "{0} is not using explicit annotation and cannot be invoked in strict mode", n);
 
                    i = t.toString().replace(Hi, ""), o = i.match(Ui), a(o[1].split(Li), function(t) {
 
                        t.replace(Fi, function(t, e, n) {
 
                            r.push(n)
 
                        })
 
                    })
 
                }
 
                t.$inject = r
 
            }
 
        } else ci(t) ? (s = t.length - 1, ae(t[s], "fn"), r = t.slice(0, s)) : ae(t, "fn", !0);
 
        return r
 
    }
 
 
    function Be(t, e) {
 
        function r(t) {
 
            return function(e, n) {
 
                return y(e) ? (a(e, u(t)), void 0) : t(e, n)
 
            }
 
        }
 
 
        function i(t, e) {
 
            if (oe(t, "service"), (k(e) || ci(e)) && (e = A.instantiate(e)), !e.$get) throw Bi("pget", "Provider '{0}' must define $get factory method.", t);
 
            return C[t + w] = e
 
        }
 
 
        function o(t, e) {
 
            return function() {
 
                var n = E.invoke(e, this);
 
                if (g(n)) throw Bi("undef", "Provider '{0}' must return a value from $get factory method.", t);
 
                return n
 
            }
 
        }
 
 
        function s(t, e, n) {
 
            return i(t, {
 
                $get: n !== !1 ? o(t, e) : e
 
            })
 
        }
 
 
        function l(t, e) {
 
            return s(t, ["$injector", function(t) {
 
                return t.instantiate(e)
 
            }])
 
        }
 
 
        function c(t, e) {
 
            return s(t, m(e), !1)
 
        }
 
 
        function f(t, e) {
 
            oe(t, "constant"), C[t] = e, O[t] = e
 
        }
 
 
        function d(t, e) {
 
            var n = A.get(t + w),
 
                r = n.$get;
 
            n.$get = function() {
 
                var t = E.invoke(r, n);
 
                return E.invoke(e, null, {
 
                    $delegate: t
 
                })
 
            }
 
        }
 
 
        function h(t) {
 
            var e, n = [];
 
            return a(t, function(t) {
 
                function r(t) {
 
                    var e, n;
 
                    for (e = 0, n = t.length; n > e; e++) {
 
                        var r = t[e],
 
                            i = A.get(r[0]);
 
                        i[r[1]].apply(i, r[2])
 
                    }
 
                }
 
                if (!S.get(t)) {
 
                    S.put(t, !0);
 
                    try {
 
                        b(t) ? (e = ei(t), n = n.concat(h(e.requires)).concat(e._runBlocks), r(e._invokeQueue), r(e._configBlocks)) : k(t) ? n.push(A.invoke(t)) : ci(t) ? n.push(A.invoke(t)) : ae(t, "module")
 
                    } catch (i) {
 
                        throw ci(t) && (t = t[t.length - 1]), i.message && i.stack && -1 == i.stack.indexOf(i.message) && (i = i.message + "\n" + i.stack), Bi("modulerr", "Failed to instantiate module {0} due to:\n{1}", t, i.stack || i.message || i)
 
                    }
 
                }
 
            }), n
 
        }
 
 
        function $(t, n) {
 
            function r(e, r) {
 
                if (t.hasOwnProperty(e)) {
 
                    if (t[e] === v) throw Bi("cdep", "Circular dependency found: {0}", e + " <- " + x.join(" <- "));
 
                    return t[e]
 
                }
 
                try {
 
                    return x.unshift(e), t[e] = v, t[e] = n(e, r)
 
                } catch (i) {
 
                    throw t[e] === v && delete t[e], i
 
                } finally {
 
                    x.shift()
 
                }
 
            }
 
 
            function i(t, n, i, a) {
 
                "string" == typeof i && (a = i, i = null);
 
                var o, s, u, l = [],
 
                    c = Be.$$annotate(t, e, a);
 
                for (s = 0, o = c.length; o > s; s++) {
 
                    if (u = c[s], "string" != typeof u) throw Bi("itkn", "Incorrect injection token! Expected service name as string, got {0}", u);
 
                    l.push(i && i.hasOwnProperty(u) ? i[u] : r(u, a))
 
                }
 
                return ci(t) && (t = t[o]), t.apply(n, l)
 
            }
 
 
            function a(t, e, n) {
 
                var r = Object.create((ci(t) ? t[t.length - 1] : t).prototype || null),
 
                    a = i(t, r, e, n);
 
                return y(a) || k(a) ? a : r
 
            }
 
            return {
 
                invoke: i,
 
                instantiate: a,
 
                get: r,
 
                annotate: Be.$$annotate,
 
                has: function(e) {
 
                    return C.hasOwnProperty(e + w) || t.hasOwnProperty(e)
 
                }
 
            }
 
        }
 
        e = e === !0;
 
        var v = {},
 
            w = "Provider",
 
            x = [],
 
            S = new Le([], !0),
 
            C = {
 
                $provide: {
 
                    provider: r(i),
 
                    factory: r(s),
 
                    service: r(l),
 
                    value: r(c),
 
                    constant: r(f),
 
                    decorator: d
 
                }
 
            },
 
            A = C.$injector = $(C, function(t, e) {
 
                throw si.isString(e) && x.push(e), Bi("unpr", "Unknown provider: {0}", x.join(" <- "))
 
            }),
 
            O = {},
 
            E = O.$injector = $(O, function(t, e) {
 
                var r = A.get(t + w, e);
 
                return E.invoke(r.$get, r, n, t)
 
            });
 
        return a(h(t), function(t) {
 
            E.invoke(t || p)
 
        }), E
 
    }
 
 
    function ze() {
 
        var t = !0;
 
        this.disableAutoScrolling = function() {
 
            t = !1
 
        }, this.$get = ["$window", "$location", "$rootScope", function(e, n, r) {
 
            function i(t) {
 
                var e = null;
 
                return Array.prototype.some.call(t, function(t) {
 
                    return "a" === V(t) ? (e = t, !0) : void 0
 
                }), e
 
            }
 
 
            function a() {
 
                var t = s.yOffset;
 
                if (k(t)) t = t();
 
                else if (M(t)) {
 
                    var n = t[0],
 
                        r = e.getComputedStyle(n);
 
                    t = "fixed" !== r.position ? 0 : n.getBoundingClientRect().bottom
 
                } else w(t) || (t = 0);
 
                return t
 
            }
 
 
            function o(t) {
 
                if (t) {
 
                    t.scrollIntoView();
 
                    var n = a();
 
                    if (n) {
 
                        var r = t.getBoundingClientRect().top;
 
                        e.scrollBy(0, r - n)
 
                    }
 
                } else e.scrollTo(0, 0)
 
            }
 
 
            function s() {
 
                var t, e = n.hash();
 
                e ? (t = u.getElementById(e)) ? o(t) : (t = i(u.getElementsByName(e))) ? o(t) : "top" === e && o(null) : o(null)
 
            }
 
            var u = e.document;
 
            return t && r.$watch(function() {
 
                return n.hash()
 
            }, function(t, e) {
 
                (t !== e || "" !== t) && qe(function() {
 
                    r.$evalAsync(s)
 
                })
 
            }), s
 
        }]
 
    }
 
 
    function Ge() {
 
        this.$get = ["$$rAF", "$timeout", function(t, e) {
 
            return t.supported ? function(e) {
 
                return t(e)
 
            } : function(t) {
 
                return e(t, 0, !1)
 
            }
 
        }]
 
    }
 
 
    function We(t, e, r, i) {
 
        function o(t) {
 
            try {
 
                t.apply(null, U(arguments, 1))
 
            } finally {
 
                if (k--, 0 === k)
 
                    for (; S.length;) try {
 
                        S.pop()()
 
                    } catch (e) {
 
                        r.error(e)
 
                    }
 
            }
 
        }
 
 
        function s(t) {
 
            var e = t.indexOf("#");
 
            return -1 === e ? "" : t.substr(e + 1)
 
        }
 
 
        function u(t, e) {
 
            ! function n() {
 
                a(A, function(t) {
 
                    t()
 
                }), C = e(n, t)
 
            }()
 
        }
 
 
        function l() {
 
            c(), f()
 
        }
 
 
        function c() {
 
            O = t.history.state, O = g(O) ? null : O, I(O, V) && (O = V), V = O
 
        }
 
 
        function f() {
 
            (j !== h.url() || E !== O) && (j = h.url(), E = O, a(M, function(t) {
 
                t(h.url(), O)
 
            }))
 
        }
 
 
        function d(t) {
 
            try {
 
                return decodeURIComponent(t)
 
            } catch (e) {
 
                return t
 
            }
 
        }
 
        var h = this,
 
            $ = e[0],
 
            m = t.location,
 
            v = t.history,
 
            y = t.setTimeout,
 
            w = t.clearTimeout,
 
            x = {};
 
        h.isMock = !1;
 
        var k = 0,
 
            S = [];
 
        h.$$completeOutstandingRequest = o, h.$$incOutstandingRequestCount = function() {
 
            k++
 
        }, h.notifyWhenNoOutstandingRequests = function(t) {
 
            a(A, function(t) {
 
                t()
 
            }), 0 === k ? t() : S.push(t)
 
        };
 
        var C, A = [];
 
        h.addPollFn = function(t) {
 
            return g(C) && u(100, y), A.push(t), t
 
        };
 
        var O, E, j = m.href,
 
            N = e.find("base"),
 
            T = null;
 
        c(), E = O, h.url = function(e, n, r) {
 
            if (g(r) && (r = null), m !== t.location && (m = t.location), v !== t.history && (v = t.history), e) {
 
                var a = E === r;
 
                if (j === e && (!i.history || a)) return h;
 
                var o = j && xn(j) === xn(e);
 
                return j = e, E = r, !i.history || o && a ? (o || (T = e), n ? m.replace(e) : o ? m.hash = s(e) : m.href = e) : (v[n ? "replaceState" : "pushState"](r, "", e), c(), E = O), h
 
            }
 
            return T || m.href.replace(/%27/g, "'")
 
        }, h.state = function() {
 
            return O
 
        };
 
        var M = [],
 
            P = !1,
 
            V = null;
 
        h.onUrlChange = function(e) {
 
            return P || (i.history && Qr(t).on("popstate", l), Qr(t).on("hashchange", l), P = !0), M.push(e), e
 
        }, h.$$checkUrlChange = f, h.baseHref = function() {
 
            var t = N.attr("href");
 
            return t ? t.replace(/^(https?\:)?\/\/[^\/]*/, "") : ""
 
        };
 
        var q = {},
 
            D = "",
 
            R = h.baseHref();
 
        h.cookies = function(t, e) {
 
            var i, a, o, s, u;
 
            if (!t) {
 
                if ($.cookie !== D)
 
                    for (D = $.cookie, a = D.split("; "), q = {}, s = 0; s < a.length; s++) o = a[s], u = o.indexOf("="), u > 0 && (t = d(o.substring(0, u)), q[t] === n && (q[t] = d(o.substring(u + 1))));
 
                return q
 
            }
 
            e === n ? $.cookie = encodeURIComponent(t) + "=;path=" + R + ";expires=Thu, 01 Jan 1970 00:00:00 GMT" : b(e) && (i = ($.cookie = encodeURIComponent(t) + "=" + encodeURIComponent(e) + ";path=" + R).length + 1, i > 4096 && r.warn("Cookie '" + t + "' possibly not set or overflowed because it was too large (" + i + " > 4096 bytes)!"))
 
        }, h.defer = function(t, e) {
 
            var n;
 
            return k++, n = y(function() {
 
                delete x[n], o(t)
 
            }, e || 0), x[n] = !0, n
 
        }, h.defer.cancel = function(t) {
 
            return x[t] ? (delete x[t], w(t), o(p), !0) : !1
 
        }
 
    }
 
 
    function Je() {
 
        this.$get = ["$window", "$log", "$sniffer", "$document", function(t, e, n, r) {
 
            return new We(t, r, e, n)
 
        }]
 
    }
 
 
    function Ye() {
 
        this.$get = function() {
 
            function t(t, n) {
 
                function i(t) {
 
                    t != d && (h ? h == t && (h = t.n) : h = t, a(t.n, t.p), a(t, d), d = t, d.n = null)
 
                }
 
 
                function a(t, e) {
 
                    t != e && (t && (t.p = e), e && (e.n = t))
 
                }
 
                if (t in e) throw r("$cacheFactory")("iid", "CacheId '{0}' is already taken!", t);
 
                var o = 0,
 
                    s = f({}, n, {
 
                        id: t
 
                    }),
 
                    u = {},
 
                    l = n && n.capacity || Number.MAX_VALUE,
 
                    c = {},
 
                    d = null,
 
                    h = null;
 
                return e[t] = {
 
                    put: function(t, e) {
 
                        if (l < Number.MAX_VALUE) {
 
                            var n = c[t] || (c[t] = {
 
                                key: t
 
                            });
 
                            i(n)
 
                        }
 
                        if (!g(e)) return t in u || o++, u[t] = e, o > l && this.remove(h.key), e
 
                    },
 
                    get: function(t) {
 
                        if (l < Number.MAX_VALUE) {
 
                            var e = c[t];
 
                            if (!e) return;
 
                            i(e)
 
                        }
 
                        return u[t]
 
                    },
 
                    remove: function(t) {
 
                        if (l < Number.MAX_VALUE) {
 
                            var e = c[t];
 
                            if (!e) return;
 
                            e == d && (d = e.p), e == h && (h = e.n), a(e.n, e.p), delete c[t]
 
                        }
 
                        delete u[t], o--
 
                    },
 
                    removeAll: function() {
 
                        u = {}, o = 0, c = {}, d = h = null
 
                    },
 
                    destroy: function() {
 
                        u = null, s = null, c = null, delete e[t]
 
                    },
 
                    info: function() {
 
                        return f({}, s, {
 
                            size: o
 
                        })
 
                    }
 
                }
 
            }
 
            var e = {};
 
            return t.info = function() {
 
                var t = {};
 
                return a(e, function(e, n) {
 
                    t[n] = e.info()
 
                }), t
 
            }, t.get = function(t) {
 
                return e[t]
 
            }, t
 
        }
 
    }
 
 
    function Ze() {
 
        this.$get = ["$cacheFactory", function(t) {
 
            return t("templates")
 
        }]
 
    }
 
 
    function Ke(t, r) {
 
        function i(t, e) {
 
            var n = /^\s*([@&]|=(\*?))(\??)\s*(\w*)\s*$/,
 
                r = {};
 
            return a(t, function(t, i) {
 
                var a = t.match(n);
 
                if (!a) throw Wi("iscp", "Invalid isolate scope definition for directive '{0}'. Definition: {... {1}: '{2}' ...}", e, i, t);
 
                r[i] = {
 
                    mode: a[1][0],
 
                    collection: "*" === a[2],
 
                    optional: "?" === a[3],
 
                    attrName: a[4] || i
 
                }
 
            }), r
 
        }
 
        var o = {},
 
            s = "Directive",
 
            l = /^\s*directive\:\s*([\w\-]+)\s+(.*)$/,
 
            c = /(([\w\-]+)(?:\:([^;]+))?;?)/,
 
            d = P("ngSrc,ngSrcset,src,srcset"),
 
            g = /^(?:(\^\^?)?(\?)?(\^\^?)?)?/,
 
            w = /^(on[a-z]+|formaction)$/;
 
        this.directive = function S(e, n) {
 
            return oe(e, "directive"), b(e) ? (ie(n, "directiveFactory"), o.hasOwnProperty(e) || (o[e] = [], t.factory(e + s, ["$injector", "$exceptionHandler", function(t, n) {
 
                var r = [];
 
                return a(o[e], function(a, o) {
 
                    try {
 
                        var s = t.invoke(a);
 
                        k(s) ? s = {
 
                            compile: m(s)
 
                        } : !s.compile && s.link && (s.compile = m(s.link)), s.priority = s.priority || 0, s.index = o, s.name = s.name || e, s.require = s.require || s.controller && s.name, s.restrict = s.restrict || "EA", y(s.scope) && (s.$$isolateBindings = i(s.scope, s.name)), r.push(s)
 
                    } catch (u) {
 
                        n(u)
 
                    }
 
                }), r
 
            }])), o[e].push(n)) : a(e, u(S)), this
 
        }, this.aHrefSanitizationWhitelist = function(t) {
 
            return v(t) ? (r.aHrefSanitizationWhitelist(t), this) : r.aHrefSanitizationWhitelist()
 
        }, this.imgSrcSanitizationWhitelist = function(t) {
 
            return v(t) ? (r.imgSrcSanitizationWhitelist(t), this) : r.imgSrcSanitizationWhitelist()
 
        };
 
        var x = !0;
 
        this.debugInfoEnabled = function(t) {
 
            return v(t) ? (x = t, this) : x
 
        }, this.$get = ["$injector", "$interpolate", "$exceptionHandler", "$templateRequest", "$parse", "$controller", "$rootScope", "$document", "$sce", "$animate", "$$sanitizeUri", function(t, r, i, u, m, v, S, C, O, E, j) {
 
            function N(t, e) {
 
                try {
 
                    t.addClass(e)
 
                } catch (n) {}
 
            }
 
 
            function T(t, e, n, r, i) {
 
                t instanceof Qr || (t = Qr(t)), a(t, function(e, n) {
 
                    e.nodeType == vi && e.nodeValue.match(/\S+/) && (t[n] = Qr(e).wrap("<span></span>").parent()[0])
 
                });
 
                var o = P(t, e, t, n, r, i);
 
                T.$$addScopeClass(t);
 
                var s = null;
 
                return function(e, n, r) {
 
                    ie(e, "scope"), r = r || {};
 
                    var i = r.parentBoundTranscludeFn,
 
                        a = r.transcludeControllers,
 
                        u = r.futureParentElement;
 
                    i && i.$$boundTransclude && (i = i.$$boundTransclude), s || (s = M(u));
 
                    var l;
 
                    if (l = "html" !== s ? Qr(X(s, Qr("<div>").append(t).html())) : n ? Di.clone.call(t) : t, a)
 
                        for (var c in a) l.data("$" + c + "Controller", a[c].instance);
 
                    return T.$$addScopeInfo(l, e), n && n(l, e), o && o(e, l, l, i), l
 
                }
 
            }
 
 
            function M(t) {
 
                var e = t && t[0];
 
                return e ? "foreignobject" !== V(e) && e.toString().match(/SVG/) ? "svg" : "html" : "html"
 
            }
 
 
            function P(t, e, r, i, a, o) {
 
                function s(t, r, i, a) {
 
                    var o, s, u, l, c, f, d, h, m;
 
                    if (p) {
 
                        var g = r.length;
 
                        for (m = new Array(g), c = 0; c < $.length; c += 3) d = $[c], m[d] = r[d]
 
                    } else m = r;
 
                    for (c = 0, f = $.length; f > c;) u = m[$[c++]], o = $[c++], s = $[c++], o ? (o.scope ? (l = t.$new(), T.$$addScopeInfo(Qr(u), l)) : l = t, h = o.transcludeOnThisElement ? D(t, o.transclude, a, o.elementTranscludeOnThisElement) : !o.templateOnThisElement && a ? a : !a && e ? D(t, e) : null, o(s, l, u, i, h)) : s && s(t, u.childNodes, n, a)
 
                }
 
                for (var u, l, c, f, d, h, p, $ = [], m = 0; m < t.length; m++) u = new oe, l = R(t[m], [], u, 0 === m ? i : n, a), c = l.length ? F(l, t[m], u, e, r, null, [], [], o) : null, c && c.scope && T.$$addScopeClass(u.$$element), d = c && c.terminal || !(f = t[m].childNodes) || !f.length ? null : P(f, c ? (c.transcludeOnThisElement || !c.templateOnThisElement) && c.transclude : e), (c || d) && ($.push(m, c, d), h = !0, p = p || c), o = null;
 
                return h ? s : null
 
            }
 
 
            function D(t, e, n) {
 
                var r = function(r, i, a, o, s) {
 
                    return r || (r = t.$new(!1, s), r.$$transcluded = !0), e(r, i, {
 
                        parentBoundTranscludeFn: n,
 
                        transcludeControllers: a,
 
                        futureParentElement: o
 
                    })
 
                };
 
                return r
 
            }
 
 
            function R(t, e, n, r, i) {
 
                var a, o, s = t.nodeType,
 
                    u = n.$attr;
 
                switch (s) {
 
                    case gi:
 
                        B(e, Xe(V(t)), "E", r, i);
 
                        for (var f, d, h, p, $, m, g = t.attributes, v = 0, w = g && g.length; w > v; v++) {
 
                            var x = !1,
 
                                k = !1;
 
                            f = g[v], d = f.name, $ = fi(f.value), p = Xe(d), (m = fe.test(p)) && (d = d.replace(Ji, "").substr(8).replace(/_(.)/g, function(t, e) {
 
                                return e.toUpperCase()
 
                            }));
 
                            var S = p.replace(/(Start|End)$/, "");
 
                            G(S) && p === S + "Start" && (x = d, k = d.substr(0, d.length - 5) + "end", d = d.substr(0, d.length - 6)), h = Xe(d.toLowerCase()), u[h] = d, (m || !n.hasOwnProperty(h)) && (n[h] = $, De(t, h) && (n[h] = !0)), te(t, e, $, h, m), B(e, h, "A", r, i, x, k)
 
                        }
 
                        if (o = t.className, y(o) && (o = o.animVal), b(o) && "" !== o)
 
                            for (; a = c.exec(o);) h = Xe(a[2]), B(e, h, "C", r, i) && (n[h] = fi(a[3])), o = o.substr(a.index + a[0].length);
 
                        break;
 
                    case vi:
 
                        K(e, t.nodeValue);
 
                        break;
 
                    case yi:
 
                        try {
 
                            a = l.exec(t.nodeValue), a && (h = Xe(a[1]), B(e, h, "M", r, i) && (n[h] = fi(a[2])))
 
                        } catch (C) {}
 
                }
 
                return e.sort(Y), e
 
            }
 
 
            function _(t, e, n) {
 
                var r = [],
 
                    i = 0;
 
                if (e && t.hasAttribute && t.hasAttribute(e)) {
 
                    do {
 
                        if (!t) throw Wi("uterdir", "Unterminated attribute, found '{0}' but no matching '{1}' found.", e, n);
 
                        t.nodeType == gi && (t.hasAttribute(e) && i++, t.hasAttribute(n) && i--), r.push(t), t = t.nextSibling
 
                    } while (i > 0)
 
                } else r.push(t);
 
                return Qr(r)
 
            }
 
 
            function L(t, e, n) {
 
                return function(r, i, a, o, s) {
 
                    return i = _(i[0], e, n), t(r, i, a, o, s)
 
                }
 
            }
 
 
            function F(t, o, s, u, l, c, f, d, h) {
 
                function p(t, e, n, r) {
 
                    t && (n && (t = L(t, n, r)), t.require = C.require, t.directiveName = O, (V === C || C.$$isolateScope) && (t = re(t, {
 
                        isolateScope: !0
 
                    })), f.push(t)), e && (n && (e = L(e, n, r)), e.require = C.require, e.directiveName = O, (V === C || C.$$isolateScope) && (e = re(e, {
 
                        isolateScope: !0
 
                    })), d.push(e))
 
                }
 
 
                function $(t, e, n, r) {
 
                    var i, o, s = "data",
 
                        u = !1,
 
                        l = n;
 
                    if (b(e)) {
 
                        if (o = e.match(g), e = e.substring(o[0].length), o[3] && (o[1] ? o[3] = null : o[1] = o[3]), "^" === o[1] ? s = "inheritedData" : "^^" === o[1] && (s = "inheritedData", l = n.parent()), "?" === o[2] && (u = !0), i = null, r && "data" === s && (i = r[e]) && (i = i.instance), i = i || l[s]("$" + e + "Controller"), !i && !u) throw Wi("ctreq", "Controller '{0}', required by directive '{1}', can't be found!", e, t);
 
                        return i || null
 
                    }
 
                    return ci(e) && (i = [], a(e, function(e) {
 
                        i.push($(t, e, n, r))
 
                    })), i
 
                }
 
 
                function w(t, e, i, u, l) {
 
                    function c(t, e, r) {
 
                        var i;
 
                        return A(t) || (r = e, e = t, t = n), G && (i = w), r || (r = G ? k.parent() : k), l(t, e, i, r, j)
 
                    }
 
                    var h, p, g, y, b, w, x, k, C;
 
                    if (o === i ? (C = s, k = s.$$element) : (k = Qr(i), C = new oe(k, s)), V && (b = e.$new(!0)), l && (x = c, x.$$boundTransclude = l), P && (S = {}, w = {}, a(P, function(t) {
 
                            var n, r = {
 
                                $scope: t === V || t.$$isolateScope ? b : e,
 
                                $element: k,
 
                                $attrs: C,
 
                                $transclude: x
 
                            };
 
                            y = t.controller, "@" == y && (y = C[t.name]), n = v(y, r, !0, t.controllerAs), w[t.name] = n, G || k.data("$" + t.name + "Controller", n.instance), S[t.name] = n
 
                        })), V) {
 
                        T.$$addScopeInfo(k, b, !0, !(q && (q === V || q === V.$$originalDirective))), T.$$addScopeClass(k, !0);
 
                        var O = S && S[V.name],
 
                            E = b;
 
                        O && O.identifier && V.bindToController === !0 && (E = O.instance), a(b.$$isolateBindings = V.$$isolateBindings, function(t, n) {
 
                            var i, a, o, s, u = t.attrName,
 
                                l = t.optional,
 
                                c = t.mode;
 
                            switch (c) {
 
                                case "@":
 
                                    C.$observe(u, function(t) {
 
                                        E[n] = t
 
                                    }), C.$$observers[u].$$scope = e, C[u] && (E[n] = r(C[u])(e));
 
                                    break;
 
                                case "=":
 
                                    if (l && !C[u]) return;
 
                                    a = m(C[u]), s = a.literal ? I : function(t, e) {
 
                                        return t === e || t !== t && e !== e
 
                                    }, o = a.assign || function() {
 
                                        throw i = E[n] = a(e), Wi("nonassign", "Expression '{0}' used with directive '{1}' is non-assignable!", C[u], V.name)
 
                                    }, i = E[n] = a(e);
 
                                    var f = function(t) {
 
                                        return s(t, E[n]) || (s(t, i) ? o(e, t = E[n]) : E[n] = t), i = t
 
                                    };
 
                                    f.$stateful = !0;
 
                                    var d;
 
                                    d = t.collection ? e.$watchCollection(C[u], f) : e.$watch(m(C[u], f), null, a.literal), b.$on("$destroy", d);
 
                                    break;
 
                                case "&":
 
                                    a = m(C[u]), E[n] = function(t) {
 
                                        return a(e, t)
 
                                    }
 
                            }
 
                        })
 
                    }
 
                    for (S && (a(S, function(t) {
 
                            t()
 
                        }), S = null), h = 0, p = f.length; p > h; h++) g = f[h], ae(g, g.isolateScope ? b : e, k, C, g.require && $(g.directiveName, g.require, k, w), x);
 
                    var j = e;
 
                    for (V && (V.template || null === V.templateUrl) && (j = b), t && t(j, i.childNodes, n, l), h = d.length - 1; h >= 0; h--) g = d[h], ae(g, g.isolateScope ? b : e, k, C, g.require && $(g.directiveName, g.require, k, w), x)
 
                }
 
                h = h || {};
 
                for (var x, S, C, O, E, j, N, M = -Number.MAX_VALUE, P = h.controllerDirectives, V = h.newIsolateScopeDirective, q = h.templateDirective, D = h.nonTlbTranscludeDirective, F = !1, B = !1, G = h.hasElementTranscludeDirective, Y = s.$$element = Qr(o), K = c, Q = u, te = 0, ne = t.length; ne > te; te++) {
 
                    C = t[te];
 
                    var ie = C.$$start,
 
                        se = C.$$end;
 
                    if (ie && (Y = _(o, ie, se)), E = n, M > C.priority) break;
 
                    if ((N = C.scope) && (C.templateUrl || (y(N) ? (Z("new/isolated scope", V || x, C, Y), V = C) : Z("new/isolated scope", V, C, Y)), x = x || C), O = C.name, !C.templateUrl && C.controller && (N = C.controller, P = P || {}, Z("'" + O + "' controller", P[O], C, Y), P[O] = C), (N = C.transclude) && (F = !0, C.$$tlb || (Z("transclusion", D, C, Y), D = C), "element" == N ? (G = !0, M = C.priority, E = Y, Y = s.$$element = Qr(e.createComment(" " + O + ": " + s[O] + " ")), o = Y[0], ee(l, U(E), o), Q = T(E, u, M, K && K.name, {
 
                            nonTlbTranscludeDirective: D
 
                        })) : (E = Qr(we(o)).contents(), Y.empty(), Q = T(E, u))), C.template)
 
                        if (B = !0, Z("template", q, C, Y), q = C, N = k(C.template) ? C.template(Y, s) : C.template, N = ce(N), C.replace) {
 
                            if (K = C, E = me(N) ? [] : tn(X(C.templateNamespace, fi(N))), o = E[0], 1 != E.length || o.nodeType !== gi) throw Wi("tplrt", "Template for directive '{0}' must have exactly one root element. {1}", O, "");
 
                            ee(l, Y, o);
 
                            var ue = {
 
                                    $attr: {}
 
                                },
 
                                le = R(o, [], ue),
 
                                fe = t.splice(te + 1, t.length - (te + 1));
 
                            V && H(le), t = t.concat(le).concat(fe), W(s, ue), ne = t.length
 
                        } else Y.html(N);
 
                    if (C.templateUrl) B = !0, Z("template", q, C, Y), q = C, C.replace && (K = C), w = J(t.splice(te, t.length - te), Y, s, l, F && Q, f, d, {
 
                        controllerDirectives: P,
 
                        newIsolateScopeDirective: V,
 
                        templateDirective: q,
 
                        nonTlbTranscludeDirective: D
 
                    }), ne = t.length;
 
                    else if (C.compile) try {
 
                        j = C.compile(Y, s, Q), k(j) ? p(null, j, ie, se) : j && p(j.pre, j.post, ie, se)
 
                    } catch (de) {
 
                        i(de, z(Y))
 
                    }
 
                    C.terminal && (w.terminal = !0, M = Math.max(M, C.priority))
 
                }
 
                return w.scope = x && x.scope === !0, w.transcludeOnThisElement = F, w.elementTranscludeOnThisElement = G, w.templateOnThisElement = B, w.transclude = Q, h.hasElementTranscludeDirective = G, w
 
            }
 
 
            function H(t) {
 
                for (var e = 0, n = t.length; n > e; e++) t[e] = h(t[e], {
 
                    $$isolateScope: !0
 
                })
 
            }
 
 
            function B(e, r, a, u, l, c, f) {
 
                if (r === l) return null;
 
                var d = null;
 
                if (o.hasOwnProperty(r))
 
                    for (var p, $ = t.get(r + s), m = 0, g = $.length; g > m; m++) try {
 
                        p = $[m], (u === n || u > p.priority) && -1 != p.restrict.indexOf(a) && (c && (p = h(p, {
 
                            $$start: c,
 
                            $$end: f
 
                        })), e.push(p), d = p)
 
                    } catch (v) {
 
                        i(v)
 
                    }
 
                return d
 
            }
 
 
            function G(e) {
 
                if (o.hasOwnProperty(e))
 
                    for (var n, r = t.get(e + s), i = 0, a = r.length; a > i; i++)
 
                        if (n = r[i], n.multiElement) return !0;
 
                return !1
 
            }
 
 
            function W(t, e) {
 
                var n = e.$attr,
 
                    r = t.$attr,
 
                    i = t.$$element;
 
                a(t, function(r, i) {
 
                    "$" != i.charAt(0) && (e[i] && e[i] !== r && (r += ("style" === i ? ";" : " ") + e[i]), t.$set(i, r, !0, n[i]))
 
                }), a(e, function(e, a) {
 
                    "class" == a ? (N(i, e), t["class"] = (t["class"] ? t["class"] + " " : "") + e) : "style" == a ? (i.attr("style", i.attr("style") + ";" + e), t.style = (t.style ? t.style + ";" : "") + e) : "$" == a.charAt(0) || t.hasOwnProperty(a) || (t[a] = e, r[a] = n[a])
 
                })
 
            }
 
 
            function J(t, e, n, r, i, o, s, l) {
 
                var c, f, d = [],
 
                    p = e[0],
 
                    $ = t.shift(),
 
                    m = h($, {
 
                        templateUrl: null,
 
                        transclude: null,
 
                        replace: null,
 
                        $$originalDirective: $
 
                    }),
 
                    g = k($.templateUrl) ? $.templateUrl(e, n) : $.templateUrl,
 
                    v = $.templateNamespace;
 
                return e.empty(), u(O.getTrustedResourceUrl(g)).then(function(u) {
 
                        var h, b, w, x;
 
                        if (u = ce(u), $.replace) {
 
                            if (w = me(u) ? [] : tn(X(v, fi(u))), h = w[0], 1 != w.length || h.nodeType !== gi) throw Wi("tplrt", "Template for directive '{0}' must have exactly one root element. {1}", $.name, g);
 
                            b = {
 
                                $attr: {}
 
                            }, ee(r, e, h);
 
                            var k = R(h, [], b);
 
                            y($.scope) && H(k), t = k.concat(t), W(n, b)
 
                        } else h = p, e.html(u);
 
                        for (t.unshift(m), c = F(t, h, n, i, e, $, o, s, l), a(r, function(t, n) {
 
                                t == h && (r[n] = e[0])
 
                            }), f = P(e[0].childNodes, i); d.length;) {
 
                            var S = d.shift(),
 
                                C = d.shift(),
 
                                A = d.shift(),
 
                                O = d.shift(),
 
                                E = e[0];
 
                            if (!S.$$destroyed) {
 
                                if (C !== p) {
 
                                    var j = C.className;
 
                                    l.hasElementTranscludeDirective && $.replace || (E = we(h)), ee(A, Qr(C), E), N(Qr(E), j)
 
                                }
 
                                x = c.transcludeOnThisElement ? D(S, c.transclude, O) : O, c(f, S, E, r, x)
 
                            }
 
                        }
 
                        d = null
 
                    }),
 
                    function(t, e, n, r, i) {
 
                        var a = i;
 
                        e.$$destroyed || (d ? d.push(e, n, r, a) : (c.transcludeOnThisElement && (a = D(e, c.transclude, i)), c(f, e, n, r, a)))
 
                    }
 
            }
 
 
            function Y(t, e) {
 
                var n = e.priority - t.priority;
 
                return 0 !== n ? n : t.name !== e.name ? t.name < e.name ? -1 : 1 : t.index - e.index
 
            }
 
 
            function Z(t, e, n, r) {
 
                if (e) throw Wi("multidir", "Multiple directives [{0}, {1}] asking for {2} on: {3}", e.name, n.name, t, z(r))
 
            }
 
 
            function K(t, e) {
 
                var n = r(e, !0);
 
                n && t.push({
 
                    priority: 0,
 
                    compile: function(t) {
 
                        var e = t.parent(),
 
                            r = !!e.length;
 
                        return r && T.$$addBindingClass(e),
 
                            function(t, e) {
 
                                var i = e.parent();
 
                                r || T.$$addBindingClass(i), T.$$addBindingInfo(i, n.expressions), t.$watch(n, function(t) {
 
                                    e[0].nodeValue = t
 
                                })
 
                            }
 
                    }
 
                })
 
            }
 
 
            function X(t, n) {
 
                switch (t = Wr(t || "html")) {
 
                    case "svg":
 
                    case "math":
 
                        var r = e.createElement("div");
 
                        return r.innerHTML = "<" + t + ">" + n + "</" + t + ">", r.childNodes[0].childNodes;
 
                    default:
 
                        return n
 
                }
 
            }
 
 
            function Q(t, e) {
 
                if ("srcdoc" == e) return O.HTML;
 
                var n = V(t);
 
                return "xlinkHref" == e || "form" == n && "action" == e || "img" != n && ("src" == e || "ngSrc" == e) ? O.RESOURCE_URL : void 0
 
            }
 
 
            function te(t, e, n, i, a) {
 
                var o = Q(t, i);
 
                a = d[i] || a;
 
                var s = r(n, !0, o, a);
 
                if (s) {
 
                    if ("multiple" === i && "select" === V(t)) throw Wi("selmulti", "Binding to the 'multiple' attribute is not supported. Element: {0}", z(t));
 
                    e.push({
 
                        priority: 100,
 
                        compile: function() {
 
                            return {
 
                                pre: function(t, e, u) {
 
                                    var l = u.$$observers || (u.$$observers = {});
 
                                    if (w.test(i)) throw Wi("nodomevents", "Interpolations for HTML DOM event attributes are disallowed.  Please use the ng- versions (such as ng-click instead of onclick) instead.");
 
                                    var c = u[i];
 
                                    c !== n && (s = c && r(c, !0, o, a), n = c), s && (u[i] = s(t), (l[i] || (l[i] = [])).$$inter = !0, (u.$$observers && u.$$observers[i].$$scope || t).$watch(s, function(t, e) {
 
                                        "class" === i && t != e ? u.$updateClass(t, e) : u.$set(i, t)
 
                                    }))
 
                                }
 
                            }
 
                        }
 
                    })
 
                }
 
            }
 
 
            function ee(t, n, r) {
 
                var i, a, o = n[0],
 
                    s = n.length,
 
                    u = o.parentNode;
 
                if (t)
 
                    for (i = 0, a = t.length; a > i; i++)
 
                        if (t[i] == o) {
 
                            t[i++] = r;
 
                            for (var l = i, c = l + s - 1, f = t.length; f > l; l++, c++) f > c ? t[l] = t[c] : delete t[l];
 
                            t.length -= s - 1, t.context === o && (t.context = r);
 
                            break
 
                        }
 
                u && u.replaceChild(r, o);
 
                var d = e.createDocumentFragment();
 
                d.appendChild(o), Qr(r).data(Qr(o).data()), ti ? (li = !0, ti.cleanData([o])) : delete Qr.cache[o[Qr.expando]];
 
                for (var h = 1, p = n.length; p > h; h++) {
 
                    var $ = n[h];
 
                    Qr($).remove(), d.appendChild($), delete n[h]
 
                }
 
                n[0] = r, n.length = 1
 
            }
 
 
            function re(t, e) {
 
                return f(function() {
 
                    return t.apply(null, arguments)
 
                }, t, e)
 
            }
 
 
            function ae(t, e, n, r, a, o) {
 
                try {
 
                    t(e, n, r, a, o)
 
                } catch (s) {
 
                    i(s, z(n))
 
                }
 
            }
 
            var oe = function(t, e) {
 
                if (e) {
 
                    var n, r, i, a = Object.keys(e);
 
                    for (n = 0, r = a.length; r > n; n++) i = a[n], this[i] = e[i]
 
                } else this.$attr = {};
 
                this.$$element = t
 
            };
 
            oe.prototype = {
 
                $normalize: Xe,
 
                $addClass: function(t) {
 
                    t && t.length > 0 && E.addClass(this.$$element, t)
 
                },
 
                $removeClass: function(t) {
 
                    t && t.length > 0 && E.removeClass(this.$$element, t)
 
                },
 
                $updateClass: function(t, e) {
 
                    var n = Qe(t, e);
 
                    n && n.length && E.addClass(this.$$element, n);
 
                    var r = Qe(e, t);
 
                    r && r.length && E.removeClass(this.$$element, r)
 
                },
 
                $set: function(t, e, r, o) {
 
                    var s, u = this.$$element[0],
 
                        l = De(u, t),
 
                        c = Re(u, t),
 
                        f = t;
 
                    if (l ? (this.$$element.prop(t, e), o = l) : c && (this[c] = e, f = c), this[t] = e, o ? this.$attr[t] = o : (o = this.$attr[t], o || (this.$attr[t] = o = ne(t, "-"))), s = V(this.$$element), "a" === s && "href" === t || "img" === s && "src" === t) this[t] = e = j(e, "src" === t);
 
                    else if ("img" === s && "srcset" === t) {
 
                        for (var d = "", h = fi(e), p = /(\s+\d+x\s*,|\s+\d+w\s*,|\s+,|,\s+)/, $ = /\s/.test(h) ? p : /(,)/, m = h.split($), g = Math.floor(m.length / 2), v = 0; g > v; v++) {
 
                            var y = 2 * v;
 
                            d += j(fi(m[y]), !0), d += " " + fi(m[y + 1])
 
                        }
 
                        var b = fi(m[2 * v]).split(/\s/);
 
                        d += j(fi(b[0]), !0), 2 === b.length && (d += " " + fi(b[1])), this[t] = e = d
 
                    }
 
                    r !== !1 && (null === e || e === n ? this.$$element.removeAttr(o) : this.$$element.attr(o, e));
 
                    var w = this.$$observers;
 
                    w && a(w[f], function(t) {
 
                        try {
 
                            t(e)
 
                        } catch (n) {
 
                            i(n)
 
                        }
 
                    })
 
                },
 
                $observe: function(t, e) {
 
                    var n = this,
 
                        r = n.$$observers || (n.$$observers = le()),
 
                        i = r[t] || (r[t] = []);
 
                    return i.push(e), S.$evalAsync(function() {
 
                            !i.$$inter && n.hasOwnProperty(t) && e(n[t])
 
                        }),
 
                        function() {
 
                            q(i, e)
 
                        }
 
                }
 
            };
 
            var se = r.startSymbol(),
 
                ue = r.endSymbol(),
 
                ce = "{{" == se || "}}" == ue ? $ : function(t) {
 
                    return t.replace(/\{\{/g, se).replace(/}}/g, ue)
 
                },
 
                fe = /^ngAttr[A-Z]/;
 
            return T.$$addBindingInfo = x ? function(t, e) {
 
                var n = t.data("$binding") || [];
 
                ci(e) ? n = n.concat(e) : n.push(e), t.data("$binding", n)
 
            } : p, T.$$addBindingClass = x ? function(t) {
 
                N(t, "ng-binding")
 
            } : p, T.$$addScopeInfo = x ? function(t, e, n, r) {
 
                var i = n ? r ? "$isolateScopeNoTemplate" : "$isolateScope" : "$scope";
 
                t.data(i, e)
 
            } : p, T.$$addScopeClass = x ? function(t, e) {
 
                N(t, e ? "ng-isolate-scope" : "ng-scope")
 
            } : p, T
 
        }]
 
    }
 
 
    function Xe(t) {
 
        return $e(t.replace(Ji, ""))
 
    }
 
 
    function Qe(t, e) {
 
        var n = "",
 
            r = t.split(/\s+/),
 
            i = e.split(/\s+/);
 
        t: for (var a = 0; a < r.length; a++) {
 
            for (var o = r[a], s = 0; s < i.length; s++)
 
                if (o == i[s]) continue t;
 
            n += (n.length > 0 ? " " : "") + o
 
        }
 
        return n
 
    }
 
 
    function tn(t) {
 
        t = Qr(t);
 
        var e = t.length;
 
        if (1 >= e) return t;
 
        for (; e--;) {
 
            var n = t[e];
 
            n.nodeType === yi && ri.call(t, e, 1)
 
        }
 
        return t
 
    }
 
 
    function en() {
 
        var t = {},
 
            e = !1,
 
            i = /^(\S+)(\s+as\s+(\w+))?$/;
 
        this.register = function(e, n) {
 
            oe(e, "controller"), y(e) ? f(t, e) : t[e] = n
 
        }, this.allowGlobals = function() {
 
            e = !0
 
        }, this.$get = ["$injector", "$window", function(a, o) {
 
            function s(t, e, n, i) {
 
                if (!t || !y(t.$scope)) throw r("$controller")("noscp", "Cannot export controller '{0}' as '{1}'! No $scope object provided via `locals`.", i, e);
 
                t.$scope[e] = n
 
            }
 
            return function(r, u, l, c) {
 
                var d, h, p, $;
 
                if (l = l === !0, c && b(c) && ($ = c), b(r)) {
 
                    if (h = r.match(i), !h) throw Yi("ctrlfmt", "Badly formed controller string '{0}'. Must match `__name__ as __id__` or `__name__`.", r);
 
                    p = h[1], $ = $ || h[3], r = t.hasOwnProperty(p) ? t[p] : se(u.$scope, p, !0) || (e ? se(o, p, !0) : n), ae(r, p, !0)
 
                }
 
                if (l) {
 
                    var m = (ci(r) ? r[r.length - 1] : r).prototype;
 
                    return d = Object.create(m || null), $ && s(u, $, d, p || r.name), f(function() {
 
                        return a.invoke(r, d, u, p), d
 
                    }, {
 
                        instance: d,
 
                        identifier: $
 
                    })
 
                }
 
                return d = a.instantiate(r, u, p), $ && s(u, $, d, p || r.name), d
 
            }
 
        }]
 
    }
 
 
    function nn() {
 
        this.$get = ["$window", function(t) {
 
            return Qr(t.document)
 
        }]
 
    }
 
 
    function rn() {
 
        this.$get = ["$log", function(t) {
 
            return function() {
 
                t.error.apply(t, arguments)
 
            }
 
        }]
 
    }
 
 
    function an(t, e) {
 
        if (b(t)) {
 
            var n = t.replace(ta, "").trim();
 
            if (n) {
 
                var r = e("Content-Type");
 
                (r && 0 === r.indexOf(Zi) || on(n)) && (t = B(n))
 
            }
 
        }
 
        return t
 
    }
 
 
    function on(t) {
 
        var e = t.match(Xi);
 
        return e && Qi[e[0]].test(t)
 
    }
 
 
    function sn(t) {
 
        var e, n, r, i = le();
 
        return t ? (a(t.split("\n"), function(t) {
 
            r = t.indexOf(":"), e = Wr(fi(t.substr(0, r))), n = fi(t.substr(r + 1)), e && (i[e] = i[e] ? i[e] + ", " + n : n)
 
        }), i) : i
 
    }
 
 
    function un(t) {
 
        var e = y(t) ? t : n;
 
        return function(n) {
 
            if (e || (e = sn(t)), n) {
 
                var r = e[Wr(n)];
 
                return void 0 === r && (r = null), r
 
            }
 
            return e
 
        }
 
    }
 
 
    function ln(t, e, n, r) {
 
        return k(r) ? r(t, e, n) : (a(r, function(r) {
 
            t = r(t, e, n)
 
        }), t)
 
    }
 
 
    function cn(t) {
 
        return t >= 200 && 300 > t
 
    }
 
 
    function fn() {
 
        var t = this.defaults = {
 
                transformResponse: [an],
 
                transformRequest: [function(t) {
 
                    return !y(t) || O(t) || j(t) || E(t) ? t : H(t)
 
                }],
 
                headers: {
 
                    common: {
 
                        Accept: "application/json, text/plain, */*"
 
                    },
 
                    post: R(Ki),
 
                    put: R(Ki),
 
                    patch: R(Ki)
 
                },
 
                xsrfCookieName: "XSRF-TOKEN",
 
                xsrfHeaderName: "X-XSRF-TOKEN"
 
            },
 
            e = !1;
 
        this.useApplyAsync = function(t) {
 
            return v(t) ? (e = !!t, this) : e
 
        };
 
        var i = this.interceptors = [];
 
        this.$get = ["$httpBackend", "$browser", "$cacheFactory", "$rootScope", "$q", "$injector", function(o, u, l, c, d, h) {
 
            function p(e) {
 
                function i(t) {
 
                    var e = f({}, t);
 
                    return e.data = t.data ? ln(t.data, t.headers, t.status, u.transformResponse) : t.data, cn(t.status) ? e : d.reject(e)
 
                }
 
 
                function o(t) {
 
                    var e, n = {};
 
                    return a(t, function(t, r) {
 
                        k(t) ? (e = t(), null != e && (n[r] = e)) : n[r] = t
 
                    }), n
 
                }
 
 
                function s(e) {
 
                    var n, r, i, a = t.headers,
 
                        s = f({}, e.headers);
 
                    a = f({}, a.common, a[Wr(e.method)]);
 
                    t: for (n in a) {
 
                        r = Wr(n);
 
                        for (i in s)
 
                            if (Wr(i) === r) continue t;
 
                        s[n] = a[n]
 
                    }
 
                    return o(s)
 
                }
 
                if (!si.isObject(e)) throw r("$http")("badreq", "Http request configuration must be an object.  Received: {0}", e);
 
                var u = f({
 
                    method: "get",
 
                    transformRequest: t.transformRequest,
 
                    transformResponse: t.transformResponse
 
                }, e);
 
                u.headers = s(e), u.method = Yr(u.method);
 
                var l = function(e) {
 
                        var r = e.headers,
 
                            o = ln(e.data, un(r), n, e.transformRequest);
 
                        return g(o) && a(r, function(t, e) {
 
                            "content-type" === Wr(e) && delete r[e]
 
                        }), g(e.withCredentials) && !g(t.withCredentials) && (e.withCredentials = t.withCredentials), w(e, o).then(i, i)
 
                    },
 
                    c = [l, n],
 
                    h = d.when(u);
 
                for (a(A, function(t) {
 
                        (t.request || t.requestError) && c.unshift(t.request, t.requestError), (t.response || t.responseError) && c.push(t.response, t.responseError)
 
                    }); c.length;) {
 
                    var p = c.shift(),
 
                        $ = c.shift();
 
                    h = h.then(p, $)
 
                }
 
                return h.success = function(t) {
 
                    return h.then(function(e) {
 
                        t(e.data, e.status, e.headers, u)
 
                    }), h
 
                }, h.error = function(t) {
 
                    return h.then(null, function(e) {
 
                        t(e.data, e.status, e.headers, u)
 
                    }), h
 
                }, h
 
            }
 
 
            function $() {
 
                a(arguments, function(t) {
 
                    p[t] = function(e, n) {
 
                        return p(f(n || {}, {
 
                            method: t,
 
                            url: e
 
                        }))
 
                    }
 
                })
 
            }
 
 
            function m() {
 
                a(arguments, function(t) {
 
                    p[t] = function(e, n, r) {
 
                        return p(f(r || {}, {
 
                            method: t,
 
                            url: e,
 
                            data: n
 
                        }))
 
                    }
 
                })
 
            }
 
 
            function w(r, i) {
 
                function a(t, n, r, i) {
 
                    function a() {
 
                        s(n, t, r, i)
 
                    }
 
                    h && (cn(t) ? h.put(x, [t, n, sn(r), i]) : h.remove(x)), e ? c.$applyAsync(a) : (a(), c.$$phase || c.$apply())
 
                }
 
 
                function s(t, e, n, i) {
 
                    e = Math.max(e, 0), (cn(e) ? m.resolve : m.reject)({
 
                        data: t,
 
                        status: e,
 
                        headers: un(n),
 
                        config: r,
 
                        statusText: i
 
                    })
 
                }
 
 
                function l(t) {
 
                    s(t.data, t.status, R(t.headers()), t.statusText)
 
                }
 
 
                function f() {
 
                    var t = p.pendingRequests.indexOf(r); - 1 !== t && p.pendingRequests.splice(t, 1)
 
                }
 
                var h, $, m = d.defer(),
 
                    b = m.promise,
 
                    w = r.headers,
 
                    x = S(r.url, r.params);
 
                if (p.pendingRequests.push(r), b.then(f, f), !r.cache && !t.cache || r.cache === !1 || "GET" !== r.method && "JSONP" !== r.method || (h = y(r.cache) ? r.cache : y(t.cache) ? t.cache : C), h && ($ = h.get(x), v($) ? T($) ? $.then(l, l) : ci($) ? s($[1], $[0], R($[2]), $[3]) : s($, 200, {}, "OK") : h.put(x, b)), g($)) {
 
                    var k = ar(r.url) ? u.cookies()[r.xsrfCookieName || t.xsrfCookieName] : n;
 
                    k && (w[r.xsrfHeaderName || t.xsrfHeaderName] = k), o(r.method, x, i, a, w, r.timeout, r.withCredentials, r.responseType)
 
                }
 
                return b
 
            }
 
 
            function S(t, e) {
 
                if (!e) return t;
 
                var n = [];
 
                return s(e, function(t, e) {
 
                    null === t || g(t) || (ci(t) || (t = [t]), a(t, function(t) {
 
                        y(t) && (t = x(t) ? t.toISOString() : H(t)), n.push(Z(e) + "=" + Z(t))
 
                    }))
 
                }), n.length > 0 && (t += (-1 == t.indexOf("?") ? "?" : "&") + n.join("&")), t
 
            }
 
            var C = l("$http"),
 
                A = [];
 
            return a(i, function(t) {
 
                A.unshift(b(t) ? h.get(t) : h.invoke(t))
 
            }), p.pendingRequests = [], $("get", "delete", "head", "jsonp"), m("post", "put", "patch"), p.defaults = t, p
 
        }]
 
    }
 
 
    function dn() {
 
        return new t.XMLHttpRequest
 
    }
 
 
    function hn() {
 
        this.$get = ["$browser", "$window", "$document", function(t, e, n) {
 
            return pn(t, dn, t.defer, e.angular.callbacks, n[0])
 
        }]
 
    }
 
 
    function pn(t, e, r, i, o) {
 
        function s(t, e, n) {
 
            var r = o.createElement("script"),
 
                a = null;
 
            return r.type = "text/javascript", r.src = t, r.async = !0, a = function(t) {
 
                Ai(r, "load", a), Ai(r, "error", a), o.body.removeChild(r), r = null;
 
                var s = -1,
 
                    u = "unknown";
 
                t && ("load" !== t.type || i[e].called || (t = {
 
                    type: "error"
 
                }), u = t.type, s = "error" === t.type ? 404 : 200), n && n(s, u)
 
            }, Ci(r, "load", a), Ci(r, "error", a), o.body.appendChild(r), a
 
        }
 
        return function(o, u, l, c, f, d, h, $) {
 
            function m() {
 
                b && b(), w && w.abort()
 
            }
 
 
            function g(e, i, a, o, s) {
 
                S !== n && r.cancel(S), b = w = null, e(i, a, o, s), t.$$completeOutstandingRequest(p)
 
            }
 
            if (t.$$incOutstandingRequestCount(), u = u || t.url(), "jsonp" == Wr(o)) {
 
                var y = "_" + (i.counter++).toString(36);
 
                i[y] = function(t) {
 
                    i[y].data = t, i[y].called = !0
 
                };
 
                var b = s(u.replace("JSON_CALLBACK", "angular.callbacks." + y), y, function(t, e) {
 
                    g(c, t, i[y].data, "", e), i[y] = p
 
                })
 
            } else {
 
                var w = e();
 
                w.open(o, u, !0), a(f, function(t, e) {
 
                    v(t) && w.setRequestHeader(e, t)
 
                }), w.onload = function() {
 
                    var t = w.statusText || "",
 
                        e = "response" in w ? w.response : w.responseText,
 
                        n = 1223 === w.status ? 204 : w.status;
 
                    0 === n && (n = e ? 200 : "file" == ir(u).protocol ? 404 : 0), g(c, n, e, w.getAllResponseHeaders(), t)
 
                };
 
                var x = function() {
 
                    g(c, -1, null, null, "")
 
                };
 
                if (w.onerror = x, w.onabort = x, h && (w.withCredentials = !0), $) try {
 
                    w.responseType = $
 
                } catch (k) {
 
                    if ("json" !== $) throw k
 
                }
 
                w.send(l || null)
 
            }
 
            if (d > 0) var S = r(m, d);
 
            else T(d) && d.then(m)
 
        }
 
    }
 
 
    function $n() {
 
        var t = "{{",
 
            e = "}}";
 
        this.startSymbol = function(e) {
 
            return e ? (t = e, this) : t
 
        }, this.endSymbol = function(t) {
 
            return t ? (e = t, this) : e
 
        }, this.$get = ["$parse", "$exceptionHandler", "$sce", function(n, r, i) {
 
            function a(t) {
 
                return "\\\\\\" + t
 
            }
 
 
            function o(a, o, d, h) {
 
                function p(n) {
 
                    return n.replace(l, t).replace(c, e)
 
                }
 
 
                function $(t) {
 
                    try {
 
                        return t = j(t), h && !v(t) ? t : N(t)
 
                    } catch (e) {
 
                        var n = ea("interr", "Can't interpolate: {0}\n{1}", a, e.toString());
 
                        r(n)
 
                    }
 
                }
 
                h = !!h;
 
                for (var m, y, b, w = 0, x = [], S = [], C = a.length, A = [], O = []; C > w;) {
 
                    if (-1 == (m = a.indexOf(t, w)) || -1 == (y = a.indexOf(e, m + s))) {
 
                        w !== C && A.push(p(a.substring(w)));
 
                        break
 
                    }
 
                    w !== m && A.push(p(a.substring(w, m))), b = a.substring(m + s, y), x.push(b), S.push(n(b, $)), w = y + u, O.push(A.length), A.push("")
 
                }
 
                if (d && A.length > 1) throw ea("noconcat", "Error while interpolating: {0}\nStrict Contextual Escaping disallows interpolations that concatenate multiple expressions when a trusted value is required.  See http://docs.angularjs.org/api/ng.$sce", a);
 
                if (!o || x.length) {
 
                    var E = function(t) {
 
                            for (var e = 0, n = x.length; n > e; e++) {
 
                                if (h && g(t[e])) return;
 
                                A[O[e]] = t[e]
 
                            }
 
                            return A.join("")
 
                        },
 
                        j = function(t) {
 
                            return d ? i.getTrusted(d, t) : i.valueOf(t)
 
                        },
 
                        N = function(t) {
 
                            if (null == t) return "";
 
                            switch (typeof t) {
 
                                case "string":
 
                                    break;
 
                                case "number":
 
                                    t = "" + t;
 
                                    break;
 
                                default:
 
                                    t = H(t)
 
                            }
 
                            return t
 
                        };
 
                    return f(function(t) {
 
                        var e = 0,
 
                            n = x.length,
 
                            i = new Array(n);
 
                        try {
 
                            for (; n > e; e++) i[e] = S[e](t);
 
                            return E(i)
 
                        } catch (o) {
 
                            var s = ea("interr", "Can't interpolate: {0}\n{1}", a, o.toString());
 
                            r(s)
 
                        }
 
                    }, {
 
                        exp: a,
 
                        expressions: x,
 
                        $$watchDelegate: function(t, e, n) {
 
                            var r;
 
                            return t.$watchGroup(S, function(n, i) {
 
                                var a = E(n);
 
                                k(e) && e.call(this, a, n !== i ? r : a, t), r = a
 
                            }, n)
 
                        }
 
                    })
 
                }
 
            }
 
            var s = t.length,
 
                u = e.length,
 
                l = new RegExp(t.replace(/./g, a), "g"),
 
                c = new RegExp(e.replace(/./g, a), "g");
 
            return o.startSymbol = function() {
 
                return t
 
            }, o.endSymbol = function() {
 
                return e
 
            }, o
 
        }]
 
    }
 
 
    function mn() {
 
        this.$get = ["$rootScope", "$window", "$q", "$$q", function(t, e, n, r) {
 
            function i(i, o, s, u) {
 
                var l = e.setInterval,
 
                    c = e.clearInterval,
 
                    f = 0,
 
                    d = v(u) && !u,
 
                    h = (d ? r : n).defer(),
 
                    p = h.promise;
 
                return s = v(s) ? s : 0, p.then(null, null, i), p.$$intervalId = l(function() {
 
                    h.notify(f++), s > 0 && f >= s && (h.resolve(f), c(p.$$intervalId), delete a[p.$$intervalId]), d || t.$apply()
 
                }, o), a[p.$$intervalId] = h, p
 
            }
 
            var a = {};
 
            return i.cancel = function(t) {
 
                return t && t.$$intervalId in a ? (a[t.$$intervalId].reject("canceled"), e.clearInterval(t.$$intervalId), delete a[t.$$intervalId], !0) : !1
 
            }, i
 
        }]
 
    }
 
 
    function gn() {
 
        this.$get = function() {
 
            return {
 
                id: "en-us",
 
                NUMBER_FORMATS: {
 
                    DECIMAL_SEP: ".",
 
                    GROUP_SEP: ",",
 
                    PATTERNS: [{
 
                        minInt: 1,
 
                        minFrac: 0,
 
                        maxFrac: 3,
 
                        posPre: "",
 
                        posSuf: "",
 
                        negPre: "-",
 
                        negSuf: "",
 
                        gSize: 3,
 
                        lgSize: 3
 
                    }, {
 
                        minInt: 1,
 
                        minFrac: 2,
 
                        maxFrac: 2,
 
                        posPre: "¤",
 
                        posSuf: "",
 
                        negPre: "(¤",
 
                        negSuf: ")",
 
                        gSize: 3,
 
                        lgSize: 3
 
                    }],
 
                    CURRENCY_SYM: "$"
 
                },
 
                DATETIME_FORMATS: {
 
                    MONTH: "January,February,March,April,May,June,July,August,September,October,November,December".split(","),
 
                    SHORTMONTH: "Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec".split(","),
 
                    DAY: "Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday".split(","),
 
                    SHORTDAY: "Sun,Mon,Tue,Wed,Thu,Fri,Sat".split(","),
 
                    AMPMS: ["AM", "PM"],
 
                    medium: "MMM d, y h:mm:ss a",
 
                    "short": "M/d/yy h:mm a",
 
                    fullDate: "EEEE, MMMM d, y",
 
                    longDate: "MMMM d, y",
 
                    mediumDate: "MMM d, y",
 
                    shortDate: "M/d/yy",
 
                    mediumTime: "h:mm:ss a",
 
                    shortTime: "h:mm a"
 
                },
 
                pluralCat: function(t) {
 
                    return 1 === t ? "one" : "other"
 
                }
 
            }
 
        }
 
    }
 
 
    function vn(t) {
 
        for (var e = t.split("/"), n = e.length; n--;) e[n] = Y(e[n]);
 
        return e.join("/")
 
    }
 
 
    function yn(t, e) {
 
        var n = ir(t);
 
        e.$$protocol = n.protocol, e.$$host = n.hostname, e.$$port = d(n.port) || ra[n.protocol] || null
 
    }
 
 
    function bn(t, e) {
 
        var n = "/" !== t.charAt(0);
 
        n && (t = "/" + t);
 
        var r = ir(t);
 
        e.$$path = decodeURIComponent(n && "/" === r.pathname.charAt(0) ? r.pathname.substring(1) : r.pathname), e.$$search = W(r.search), e.$$hash = decodeURIComponent(r.hash), e.$$path && "/" != e.$$path.charAt(0) && (e.$$path = "/" + e.$$path)
 
    }
 
 
    function wn(t, e) {
 
        return 0 === e.indexOf(t) ? e.substr(t.length) : void 0
 
    }
 
 
    function xn(t) {
 
        var e = t.indexOf("#");
 
        return -1 == e ? t : t.substr(0, e)
 
    }
 
 
    function kn(t) {
 
        return t.replace(/(#.+)|#$/, "$1")
 
    }
 
 
    function Sn(t) {
 
        return t.substr(0, xn(t).lastIndexOf("/") + 1)
 
    }
 
 
    function Cn(t) {
 
        return t.substring(0, t.indexOf("/", t.indexOf("//") + 2))
 
    }
 
 
    function An(t, e) {
 
        this.$$html5 = !0, e = e || "";
 
        var r = Sn(t);
 
        yn(t, this), this.$$parse = function(t) {
 
            var e = wn(r, t);
 
            if (!b(e)) throw ia("ipthprfx", 'Invalid url "{0}", missing path prefix "{1}".', t, r);
 
            bn(e, this), this.$$path || (this.$$path = "/"), this.$$compose()
 
        }, this.$$compose = function() {
 
            var t = J(this.$$search),
 
                e = this.$$hash ? "#" + Y(this.$$hash) : "";
 
            this.$$url = vn(this.$$path) + (t ? "?" + t : "") + e, this.$$absUrl = r + this.$$url.substr(1)
 
        }, this.$$parseLinkUrl = function(i, a) {
 
            if (a && "#" === a[0]) return this.hash(a.slice(1)), !0;
 
            var o, s, u;
 
            return (o = wn(t, i)) !== n ? (s = o, u = (o = wn(e, o)) !== n ? r + (wn("/", o) || o) : t + s) : (o = wn(r, i)) !== n ? u = r + o : r == i + "/" && (u = r), u && this.$$parse(u), !!u
 
        }
 
    }
 
 
    function On(t, e) {
 
        var n = Sn(t);
 
        yn(t, this), this.$$parse = function(r) {
 
            function i(t, e, n) {
 
                var r, i = /^\/[A-Z]:(\/.*)/;
 
                return 0 === e.indexOf(n) && (e = e.replace(n, "")), i.exec(e) ? t : (r = i.exec(t), r ? r[1] : t)
 
            }
 
            var a, o = wn(t, r) || wn(n, r);
 
            "#" === o.charAt(0) ? (a = wn(e, o), g(a) && (a = o)) : a = this.$$html5 ? o : "", bn(a, this), this.$$path = i(this.$$path, a, t), this.$$compose()
 
        }, this.$$compose = function() {
 
            var n = J(this.$$search),
 
                r = this.$$hash ? "#" + Y(this.$$hash) : "";
 
            this.$$url = vn(this.$$path) + (n ? "?" + n : "") + r, this.$$absUrl = t + (this.$$url ? e + this.$$url : "")
 
        }, this.$$parseLinkUrl = function(e) {
 
            return xn(t) == xn(e) ? (this.$$parse(e), !0) : !1
 
        }
 
    }
 
 
    function En(t, e) {
 
        this.$$html5 = !0, On.apply(this, arguments);
 
        var n = Sn(t);
 
        this.$$parseLinkUrl = function(r, i) {
 
            if (i && "#" === i[0]) return this.hash(i.slice(1)), !0;
 
            var a, o;
 
            return t == xn(r) ? a = r : (o = wn(n, r)) ? a = t + e + o : n === r + "/" && (a = n), a && this.$$parse(a), !!a
 
        }, this.$$compose = function() {
 
            var n = J(this.$$search),
 
                r = this.$$hash ? "#" + Y(this.$$hash) : "";
 
            this.$$url = vn(this.$$path) + (n ? "?" + n : "") + r, this.$$absUrl = t + e + this.$$url
 
        }
 
    }
 
 
    function jn(t) {
 
        return function() {
 
            return this[t]
 
        }
 
    }
 
 
    function Nn(t, e) {
 
        return function(n) {
 
            return g(n) ? this[t] : (this[t] = e(n), this.$$compose(), this)
 
        }
 
    }
 
 
    function Tn() {
 
        var t = "",
 
            e = {
 
                enabled: !1,
 
                requireBase: !0,
 
                rewriteLinks: !0
 
            };
 
        this.hashPrefix = function(e) {
 
            return v(e) ? (t = e, this) : t
 
        }, this.html5Mode = function(t) {
 
            return N(t) ? (e.enabled = t, this) : y(t) ? (N(t.enabled) && (e.enabled = t.enabled), N(t.requireBase) && (e.requireBase = t.requireBase), N(t.rewriteLinks) && (e.rewriteLinks = t.rewriteLinks), this) : e
 
        }, this.$get = ["$rootScope", "$browser", "$sniffer", "$rootElement", "$window", function(n, r, i, a, o) {
 
            function s(t, e, n) {
 
                var i = l.url(),
 
                    a = l.$$state;
 
                try {
 
                    r.url(t, e, n), l.$$state = r.state()
 
                } catch (o) {
 
                    throw l.url(i), l.$$state = a, o
 
                }
 
            }
 
 
            function u(t, e) {
 
                n.$broadcast("$locationChangeSuccess", l.absUrl(), t, l.$$state, e)
 
            }
 
            var l, c, f, d = r.baseHref(),
 
                h = r.url();
 
            if (e.enabled) {
 
                if (!d && e.requireBase) throw ia("nobase", "$location in HTML5 mode requires a <base> tag to be present!");
 
                f = Cn(h) + (d || "/"), c = i.history ? An : En
 
            } else f = xn(h), c = On;
 
            l = new c(f, "#" + t), l.$$parseLinkUrl(h, h), l.$$state = r.state();
 
            var p = /^\s*(javascript|mailto):/i;
 
            a.on("click", function(t) {
 
                if (e.rewriteLinks && !t.ctrlKey && !t.metaKey && !t.shiftKey && 2 != t.which && 2 != t.button) {
 
                    for (var i = Qr(t.target);
 
                        "a" !== V(i[0]);)
 
                        if (i[0] === a[0] || !(i = i.parent())[0]) return;
 
                    var s = i.prop("href"),
 
                        u = i.attr("href") || i.attr("xlink:href");
 
                    y(s) && "[object SVGAnimatedString]" === s.toString() && (s = ir(s.animVal).href), p.test(s) || !s || i.attr("target") || t.isDefaultPrevented() || l.$$parseLinkUrl(s, u) && (t.preventDefault(), l.absUrl() != r.url() && (n.$apply(), o.angular["ff-684208-preventDefault"] = !0))
 
                }
 
            }), kn(l.absUrl()) != kn(h) && r.url(l.absUrl(), !0);
 
            var $ = !0;
 
            return r.onUrlChange(function(t, e) {
 
                n.$evalAsync(function() {
 
                    var r, i = l.absUrl(),
 
                        a = l.$$state;
 
                    l.$$parse(t), l.$$state = e, r = n.$broadcast("$locationChangeStart", t, i, e, a).defaultPrevented, l.absUrl() === t && (r ? (l.$$parse(i), l.$$state = a, s(i, !1, a)) : ($ = !1, u(i, a)))
 
                }), n.$$phase || n.$digest()
 
            }), n.$watch(function() {
 
                var t = kn(r.url()),
 
                    e = kn(l.absUrl()),
 
                    a = r.state(),
 
                    o = l.$$replace,
 
                    c = t !== e || l.$$html5 && i.history && a !== l.$$state;
 
                ($ || c) && ($ = !1, n.$evalAsync(function() {
 
                    var e = l.absUrl(),
 
                        r = n.$broadcast("$locationChangeStart", e, t, l.$$state, a).defaultPrevented;
 
                    l.absUrl() === e && (r ? (l.$$parse(t), l.$$state = a) : (c && s(e, o, a === l.$$state ? null : l.$$state), u(t, a)))
 
                })), l.$$replace = !1
 
            }), l
 
        }]
 
    }
 
 
    function Mn() {
 
        var t = !0,
 
            e = this;
 
        this.debugEnabled = function(e) {
 
            return v(e) ? (t = e, this) : t
 
        }, this.$get = ["$window", function(n) {
 
            function r(t) {
 
                return t instanceof Error && (t.stack ? t = t.message && -1 === t.stack.indexOf(t.message) ? "Error: " + t.message + "\n" + t.stack : t.stack : t.sourceURL && (t = t.message + "\n" + t.sourceURL + ":" + t.line)), t
 
            }
 
 
            function i(t) {
 
                var e = n.console || {},
 
                    i = e[t] || e.log || p,
 
                    o = !1;
 
                try {
 
                    o = !!i.apply
 
                } catch (s) {}
 
                return o ? function() {
 
                    var t = [];
 
                    return a(arguments, function(e) {
 
                        t.push(r(e))
 
                    }), i.apply(e, t)
 
                } : function(t, e) {
 
                    i(t, null == e ? "" : e)
 
                }
 
            }
 
            return {
 
                log: i("log"),
 
                info: i("info"),
 
                warn: i("warn"),
 
                error: i("error"),
 
                debug: function() {
 
                    var n = i("debug");
 
                    return function() {
 
                        t && n.apply(e, arguments)
 
                    }
 
                }()
 
            }
 
        }]
 
    }
 
 
    function Pn(t, e) {
 
        if ("__defineGetter__" === t || "__defineSetter__" === t || "__lookupGetter__" === t || "__lookupSetter__" === t || "__proto__" === t) throw oa("isecfld", "Attempting to access a disallowed field in Angular expressions! Expression: {0}", e);
 
        return t
 
    }
 
 
    function Vn(t, e) {
 
        if (t) {
 
            if (t.constructor === t) throw oa("isecfn", "Referencing Function in Angular expressions is disallowed! Expression: {0}", e);
 
            if (t.window === t) throw oa("isecwindow", "Referencing the Window in Angular expressions is disallowed! Expression: {0}", e);
 
            if (t.children && (t.nodeName || t.prop && t.attr && t.find)) throw oa("isecdom", "Referencing DOM nodes in Angular expressions is disallowed! Expression: {0}", e);
 
            if (t === Object) throw oa("isecobj", "Referencing Object in Angular expressions is disallowed! Expression: {0}", e)
 
        }
 
        return t
 
    }
 
 
    function qn(t, e) {
 
        if (t) {
 
            if (t.constructor === t) throw oa("isecfn", "Referencing Function in Angular expressions is disallowed! Expression: {0}", e);
 
            if (t === sa || t === ua || t === la) throw oa("isecff", "Referencing call, apply or bind in Angular expressions is disallowed! Expression: {0}", e)
 
        }
 
    }
 
 
    function Dn(t) {
 
        return t.constant
 
    }
 
 
    function Rn(t, e, n, r, i) {
 
        Vn(t, i), Vn(e, i);
 
        for (var a, o = n.split("."), s = 0; o.length > 1; s++) {
 
            a = Pn(o.shift(), i);
 
            var u = 0 === s && e && e[a] || t[a];
 
            u || (u = {}, t[a] = u), t = Vn(u, i)
 
        }
 
        return a = Pn(o.shift(), i), Vn(t[a], i), t[a] = r, r
 
    }
 
 
    function In(t) {
 
        return "constructor" == t
 
    }
 
 
    function _n(t, e, r, i, a, o, s) {
 
        Pn(t, o), Pn(e, o), Pn(r, o), Pn(i, o), Pn(a, o);
 
        var u = function(t) {
 
                return Vn(t, o)
 
            },
 
            l = s || In(t) ? u : $,
 
            c = s || In(e) ? u : $,
 
            f = s || In(r) ? u : $,
 
            d = s || In(i) ? u : $,
 
            h = s || In(a) ? u : $;
 
        return function(o, s) {
 
            var u = s && s.hasOwnProperty(t) ? s : o;
 
            return null == u ? u : (u = l(u[t]), e ? null == u ? n : (u = c(u[e]), r ? null == u ? n : (u = f(u[r]), i ? null == u ? n : (u = d(u[i]), a ? null == u ? n : u = h(u[a]) : u) : u) : u) : u)
 
        }
 
    }
 
 
    function Un(t, e) {
 
        return function(n, r) {
 
            return t(n, r, Vn, e)
 
        }
 
    }
 
 
    function Ln(t, e, r) {
 
        var i = e.expensiveChecks,
 
            o = i ? ma : $a,
 
            s = o[t];
 
        if (s) return s;
 
        var u = t.split("."),
 
            l = u.length;
 
        if (e.csp) s = 6 > l ? _n(u[0], u[1], u[2], u[3], u[4], r, i) : function(t, e) {
 
            var a, o = 0;
 
            do a = _n(u[o++], u[o++], u[o++], u[o++], u[o++], r, i)(t, e), e = n, t = a; while (l > o);
 
            return a
 
        };
 
        else {
 
            var c = "";
 
            i && (c += "s = eso(s, fe);\nl = eso(l, fe);\n");
 
            var f = i;
 
            a(u, function(t, e) {
 
                Pn(t, r);
 
                var n = (e ? "s" : '((l&&l.hasOwnProperty("' + t + '"))?l:s)') + "." + t;
 
                (i || In(t)) && (n = "eso(" + n + ", fe)", f = !0), c += "if(s == null) return undefined;\ns=" + n + ";\n"
 
            }), c += "return s;";
 
            var d = new Function("s", "l", "eso", "fe", c);
 
            d.toString = m(c), f && (d = Un(d, r)), s = d
 
        }
 
        return s.sharedGetter = !0, s.assign = function(e, n, r) {
 
            return Rn(e, r, t, n, t)
 
        }, o[t] = s, s
 
    }
 
 
    function Fn(t) {
 
        return k(t.valueOf) ? t.valueOf() : ga.call(t)
 
    }
 
 
    function Hn() {
 
        var t = le(),
 
            e = le();
 
        this.$get = ["$filter", "$sniffer", function(n, r) {
 
            function i(t) {
 
                var e = t;
 
                return t.sharedGetter && (e = function(e, n) {
 
                    return t(e, n)
 
                }, e.literal = t.literal, e.constant = t.constant, e.assign = t.assign), e
 
            }
 
 
            function o(t, e) {
 
                for (var n = 0, r = t.length; r > n; n++) {
 
                    var i = t[n];
 
                    i.constant || (i.inputs ? o(i.inputs, e) : -1 === e.indexOf(i) && e.push(i))
 
                }
 
                return e
 
            }
 
 
            function s(t, e) {
 
                return null == t || null == e ? t === e : "object" == typeof t && (t = Fn(t), "object" == typeof t) ? !1 : t === e || t !== t && e !== e
 
            }
 
 
            function u(t, e, n, r) {
 
                var i, a = r.$$inputs || (r.$$inputs = o(r.inputs, []));
 
                if (1 === a.length) {
 
                    var u = s;
 
                    return a = a[0], t.$watch(function(t) {
 
                        var e = a(t);
 
                        return s(e, u) || (i = r(t), u = e && Fn(e)), i
 
                    }, e, n)
 
                }
 
                for (var l = [], c = 0, f = a.length; f > c; c++) l[c] = s;
 
                return t.$watch(function(t) {
 
                    for (var e = !1, n = 0, o = a.length; o > n; n++) {
 
                        var u = a[n](t);
 
                        (e || (e = !s(u, l[n]))) && (l[n] = u && Fn(u))
 
                    }
 
                    return e && (i = r(t)), i
 
                }, e, n)
 
            }
 
 
            function l(t, e, n, r) {
 
                var i, a;
 
                return i = t.$watch(function(t) {
 
                    return r(t)
 
                }, function(t, n, r) {
 
                    a = t, k(e) && e.apply(this, arguments), v(t) && r.$$postDigest(function() {
 
                        v(a) && i()
 
                    })
 
                }, n)
 
            }
 
 
            function c(t, e, n, r) {
 
                function i(t) {
 
                    var e = !0;
 
                    return a(t, function(t) {
 
                        v(t) || (e = !1)
 
                    }), e
 
                }
 
                var o, s;
 
                return o = t.$watch(function(t) {
 
                    return r(t)
 
                }, function(t, n, r) {
 
                    s = t, k(e) && e.call(this, t, n, r), i(t) && r.$$postDigest(function() {
 
                        i(s) && o()
 
                    })
 
                }, n)
 
            }
 
 
            function f(t, e, n, r) {
 
                var i;
 
                return i = t.$watch(function(t) {
 
                    return r(t)
 
                }, function() {
 
                    k(e) && e.apply(this, arguments), i()
 
                }, n)
 
            }
 
 
            function d(t, e) {
 
                if (!e) return t;
 
                var n = t.$$watchDelegate,
 
                    r = n !== c && n !== l,
 
                    i = r ? function(n, r) {
 
                        var i = t(n, r);
 
                        return e(i, n, r)
 
                    } : function(n, r) {
 
                        var i = t(n, r),
 
                            a = e(i, n, r);
 
                        return v(i) ? a : i
 
                    };
 
                return t.$$watchDelegate && t.$$watchDelegate !== u ? i.$$watchDelegate = t.$$watchDelegate : e.$stateful || (i.$$watchDelegate = u, i.inputs = [t]), i
 
            }
 
            var h = {
 
                    csp: r.csp,
 
                    expensiveChecks: !1
 
                },
 
                $ = {
 
                    csp: r.csp,
 
                    expensiveChecks: !0
 
                };
 
            return function(r, a, o) {
 
                var s, m, g;
 
                switch (typeof r) {
 
                    case "string":
 
                        g = r = r.trim();
 
                        var v = o ? e : t;
 
                        if (s = v[g], !s) {
 
                            ":" === r.charAt(0) && ":" === r.charAt(1) && (m = !0, r = r.substring(2));
 
                            var y = o ? $ : h,
 
                                b = new ha(y),
 
                                w = new pa(b, n, y);
 
                            s = w.parse(r), s.constant ? s.$$watchDelegate = f : m ? (s = i(s), s.$$watchDelegate = s.literal ? c : l) : s.inputs && (s.$$watchDelegate = u), v[g] = s
 
                        }
 
                        return d(s, a);
 
                    case "function":
 
                        return d(r, a);
 
                    default:
 
                        return d(p, a)
 
                }
 
            }
 
        }]
 
    }
 
 
    function Bn() {
 
        this.$get = ["$rootScope", "$exceptionHandler", function(t, e) {
 
            return Gn(function(e) {
 
                t.$evalAsync(e)
 
            }, e)
 
        }]
 
    }
 
 
    function zn() {
 
        this.$get = ["$browser", "$exceptionHandler", function(t, e) {
 
            return Gn(function(e) {
 
                t.defer(e)
 
            }, e)
 
        }]
 
    }
 
 
    function Gn(t, e) {
 
        function i(t, e, n) {
 
            function r(e) {
 
                return function(n) {
 
                    i || (i = !0, e.call(t, n))
 
                }
 
            }
 
            var i = !1;
 
            return [r(e), r(n)]
 
        }
 
 
        function o() {
 
            this.$$state = {
 
                status: 0
 
            }
 
        }
 
 
        function s(t, e) {
 
            return function(n) {
 
                e.call(t, n)
 
            }
 
        }
 
 
        function u(t) {
 
            var r, i, a;
 
            a = t.pending, t.processScheduled = !1, t.pending = n;
 
            for (var o = 0, s = a.length; s > o; ++o) {
 
                i = a[o][0], r = a[o][t.status];
 
                try {
 
                    k(r) ? i.resolve(r(t.value)) : 1 === t.status ? i.resolve(t.value) : i.reject(t.value)
 
                } catch (u) {
 
                    i.reject(u), e(u)
 
                }
 
            }
 
        }
 
 
        function l(e) {
 
            !e.processScheduled && e.pending && (e.processScheduled = !0, t(function() {
 
                u(e)
 
            }))
 
        }
 
 
        function c() {
 
            this.promise = new o, this.resolve = s(this, this.resolve), this.reject = s(this, this.reject), this.notify = s(this, this.notify)
 
        }
 
 
        function f(t) {
 
            var e = new c,
 
                n = 0,
 
                r = ci(t) ? [] : {};
 
            return a(t, function(t, i) {
 
                n++, g(t).then(function(t) {
 
                    r.hasOwnProperty(i) || (r[i] = t, --n || e.resolve(r))
 
                }, function(t) {
 
                    r.hasOwnProperty(i) || e.reject(t)
 
                })
 
            }), 0 === n && e.resolve(r), e.promise
 
        }
 
        var d = r("$q", TypeError),
 
            h = function() {
 
                return new c
 
            };
 
        o.prototype = {
 
            then: function(t, e, n) {
 
                var r = new c;
 
                return this.$$state.pending = this.$$state.pending || [], this.$$state.pending.push([r, t, e, n]), this.$$state.status > 0 && l(this.$$state), r.promise
 
            },
 
            "catch": function(t) {
 
                return this.then(null, t)
 
            },
 
            "finally": function(t, e) {
 
                return this.then(function(e) {
 
                    return m(e, !0, t)
 
                }, function(e) {
 
                    return m(e, !1, t)
 
                }, e)
 
            }
 
        }, c.prototype = {
 
            resolve: function(t) {
 
                this.promise.$$state.status || (t === this.promise ? this.$$reject(d("qcycle", "Expected promise to be resolved with value other than itself '{0}'", t)) : this.$$resolve(t))
 
            },
 
            $$resolve: function(t) {
 
                var n, r;
 
                r = i(this, this.$$resolve, this.$$reject);
 
                try {
 
                    (y(t) || k(t)) && (n = t && t.then), k(n) ? (this.promise.$$state.status = -1, n.call(t, r[0], r[1], this.notify)) : (this.promise.$$state.value = t, this.promise.$$state.status = 1, l(this.promise.$$state))
 
                } catch (a) {
 
                    r[1](a), e(a)
 
                }
 
            },
 
            reject: function(t) {
 
                this.promise.$$state.status || this.$$reject(t)
 
            },
 
            $$reject: function(t) {
 
                this.promise.$$state.value = t, this.promise.$$state.status = 2, l(this.promise.$$state)
 
            },
 
            notify: function(n) {
 
                var r = this.promise.$$state.pending;
 
                this.promise.$$state.status <= 0 && r && r.length && t(function() {
 
                    for (var t, i, a = 0, o = r.length; o > a; a++) {
 
                        i = r[a][0], t = r[a][3];
 
                        try {
 
                            i.notify(k(t) ? t(n) : n)
 
                        } catch (s) {
 
                            e(s)
 
                        }
 
                    }
 
                })
 
            }
 
        };
 
        var p = function(t) {
 
                var e = new c;
 
                return e.reject(t), e.promise
 
            },
 
            $ = function(t, e) {
 
                var n = new c;
 
                return e ? n.resolve(t) : n.reject(t), n.promise
 
            },
 
            m = function(t, e, n) {
 
                var r = null;
 
                try {
 
                    k(n) && (r = n())
 
                } catch (i) {
 
                    return $(i, !1)
 
                }
 
                return T(r) ? r.then(function() {
 
                    return $(t, e)
 
                }, function(t) {
 
                    return $(t, !1)
 
                }) : $(t, e)
 
            },
 
            g = function(t, e, n, r) {
 
                var i = new c;
 
                return i.resolve(t), i.promise.then(e, n, r)
 
            },
 
            v = function b(t) {
 
                function e(t) {
 
                    r.resolve(t)
 
                }
 
 
                function n(t) {
 
                    r.reject(t)
 
                }
 
                if (!k(t)) throw d("norslvr", "Expected resolverFn, got '{0}'", t);
 
                if (!(this instanceof b)) return new b(t);
 
                var r = new c;
 
                return t(e, n), r.promise
 
            };
 
        return v.defer = h, v.reject = p, v.when = g, v.all = f, v
 
    }
 
 
    function Wn() {
 
        this.$get = ["$window", "$timeout", function(t, e) {
 
            var n = t.requestAnimationFrame || t.webkitRequestAnimationFrame,
 
                r = t.cancelAnimationFrame || t.webkitCancelAnimationFrame || t.webkitCancelRequestAnimationFrame,
 
                i = !!n,
 
                a = i ? function(t) {
 
                    var e = n(t);
 
                    return function() {
 
                        r(e)
 
                    }
 
                } : function(t) {
 
                    var n = e(t, 16.66, !1);
 
                    return function() {
 
                        e.cancel(n)
 
                    }
 
                };
 
            return a.supported = i, a
 
        }]
 
    }
 
 
    function Jn() {
 
        var t = 10,
 
            e = r("$rootScope"),
 
            n = null,
 
            o = null;
 
        this.digestTtl = function(e) {
 
            return arguments.length && (t = e), t
 
        }, this.$get = ["$injector", "$exceptionHandler", "$parse", "$browser", function(r, s, u, c) {
 
            function f() {
 
                this.$id = l(), this.$$phase = this.$parent = this.$$watchers = this.$$nextSibling = this.$$prevSibling = this.$$childHead = this.$$childTail = null, this.$root = this, this.$$destroyed = !1, this.$$listeners = {}, this.$$listenerCount = {}, this.$$isolateBindings = null
 
            }
 
 
            function d(t) {
 
                if (w.$$phase) throw e("inprog", "{0} already in progress", w.$$phase);
 
                w.$$phase = t
 
            }
 
 
            function h() {
 
                w.$$phase = null
 
            }
 
 
            function $(t, e, n) {
 
                do t.$$listenerCount[n] -= e, 0 === t.$$listenerCount[n] && delete t.$$listenerCount[n]; while (t = t.$parent)
 
            }
 
 
            function m() {}
 
 
            function v() {
 
                for (; C.length;) try {
 
                    C.shift()()
 
                } catch (t) {
 
                    s(t)
 
                }
 
                o = null
 
            }
 
 
            function b() {
 
                null === o && (o = c.defer(function() {
 
                    w.$apply(v)
 
                }))
 
            }
 
            f.prototype = {
 
                constructor: f,
 
                $new: function(t, e) {
 
                    function n() {
 
                        r.$$destroyed = !0
 
                    }
 
                    var r;
 
                    return e = e || this, t ? (r = new f, r.$root = this.$root) : (this.$$ChildScope || (this.$$ChildScope = function() {
 
                        this.$$watchers = this.$$nextSibling = this.$$childHead = this.$$childTail = null, this.$$listeners = {}, this.$$listenerCount = {}, this.$id = l(), this.$$ChildScope = null
 
                    }, this.$$ChildScope.prototype = this), r = new this.$$ChildScope), r.$parent = e, r.$$prevSibling = e.$$childTail, e.$$childHead ? (e.$$childTail.$$nextSibling = r, e.$$childTail = r) : e.$$childHead = e.$$childTail = r, (t || e != this) && r.$on("$destroy", n), r
 
                },
 
                $watch: function(t, e, r) {
 
                    var i = u(t);
 
                    if (i.$$watchDelegate) return i.$$watchDelegate(this, e, r, i);
 
                    var a = this,
 
                        o = a.$$watchers,
 
                        s = {
 
                            fn: e,
 
                            last: m,
 
                            get: i,
 
                            exp: t,
 
                            eq: !!r
 
                        };
 
                    return n = null, k(e) || (s.fn = p), o || (o = a.$$watchers = []), o.unshift(s),
 
                        function() {
 
                            q(o, s), n = null
 
                        }
 
                },
 
                $watchGroup: function(t, e) {
 
                    function n() {
 
                        u = !1, l ? (l = !1, e(i, i, s)) : e(i, r, s)
 
                    }
 
                    var r = new Array(t.length),
 
                        i = new Array(t.length),
 
                        o = [],
 
                        s = this,
 
                        u = !1,
 
                        l = !0;
 
                    if (!t.length) {
 
                        var c = !0;
 
                        return s.$evalAsync(function() {
 
                                c && e(i, i, s)
 
                            }),
 
                            function() {
 
                                c = !1
 
                            }
 
                    }
 
                    return 1 === t.length ? this.$watch(t[0], function(t, n, a) {
 
                        i[0] = t, r[0] = n, e(i, t === n ? i : r, a)
 
                    }) : (a(t, function(t, e) {
 
                        var a = s.$watch(t, function(t, a) {
 
                            i[e] = t, r[e] = a, u || (u = !0, s.$evalAsync(n))
 
                        });
 
                        o.push(a)
 
                    }), function() {
 
                        for (; o.length;) o.shift()()
 
                    })
 
                },
 
                $watchCollection: function(t, e) {
 
                    function n(t) {
 
                        a = t;
 
                        var e, n, r, s, u;
 
                        if (!g(a)) {
 
                            if (y(a))
 
                                if (i(a)) {
 
                                    o !== h && (o = h, m = o.length = 0, f++), e = a.length, m !== e && (f++, o.length = m = e);
 
                                    for (var l = 0; e > l; l++) u = o[l], s = a[l], r = u !== u && s !== s, r || u === s || (f++, o[l] = s)
 
                                } else {
 
                                    o !== p && (o = p = {}, m = 0, f++), e = 0;
 
                                    for (n in a) a.hasOwnProperty(n) && (e++, s = a[n], u = o[n], n in o ? (r = u !== u && s !== s, r || u === s || (f++, o[n] = s)) : (m++, o[n] = s, f++));
 
                                    if (m > e) {
 
                                        f++;
 
                                        for (n in o) a.hasOwnProperty(n) || (m--, delete o[n])
 
                                    }
 
                                }
 
                            else o !== a && (o = a, f++);
 
                            return f
 
                        }
 
                    }
 
 
                    function r() {
 
                        if ($ ? ($ = !1, e(a, a, l)) : e(a, s, l), c)
 
                            if (y(a))
 
                                if (i(a)) {
 
                                    s = new Array(a.length);
 
                                    for (var t = 0; t < a.length; t++) s[t] = a[t]
 
                                } else {
 
                                    s = {};
 
                                    for (var n in a) Jr.call(a, n) && (s[n] = a[n])
 
                                }
 
                        else s = a
 
                    }
 
                    n.$stateful = !0;
 
                    var a, o, s, l = this,
 
                        c = e.length > 1,
 
                        f = 0,
 
                        d = u(t, n),
 
                        h = [],
 
                        p = {},
 
                        $ = !0,
 
                        m = 0;
 
                    return this.$watch(d, r)
 
                },
 
                $digest: function() {
 
                    var r, i, a, u, l, f, p, $, g, y, b = t,
 
                        C = this,
 
                        A = [];
 
                    d("$digest"), c.$$checkUrlChange(), this === w && null !== o && (c.defer.cancel(o), v()), n = null;
 
                    do {
 
                        for (f = !1, $ = C; x.length;) {
 
                            try {
 
                                y = x.shift(), y.scope.$eval(y.expression, y.locals)
 
                            } catch (O) {
 
                                s(O)
 
                            }
 
                            n = null
 
                        }
 
                        t: do {
 
                            if (u = $.$$watchers)
 
                                for (l = u.length; l--;) try {
 
                                    if (r = u[l])
 
                                        if ((i = r.get($)) === (a = r.last) || (r.eq ? I(i, a) : "number" == typeof i && "number" == typeof a && isNaN(i) && isNaN(a))) {
 
                                            if (r === n) {
 
                                                f = !1;
 
                                                break t
 
                                            }
 
                                        } else f = !0, n = r, r.last = r.eq ? D(i, null) : i, r.fn(i, a === m ? i : a, $), 5 > b && (g = 4 - b, A[g] || (A[g] = []), A[g].push({
 
                                            msg: k(r.exp) ? "fn: " + (r.exp.name || r.exp.toString()) : r.exp,
 
                                            newVal: i,
 
                                            oldVal: a
 
                                        }))
 
                                } catch (O) {
 
                                    s(O)
 
                                }
 
                            if (!(p = $.$$childHead || $ !== C && $.$$nextSibling))
 
                                for (; $ !== C && !(p = $.$$nextSibling);) $ = $.$parent
 
                        } while ($ = p);
 
                        if ((f || x.length) && !b--) throw h(), e("infdig", "{0} $digest() iterations reached. Aborting!\nWatchers fired in the last 5 iterations: {1}", t, A)
 
                    } while (f || x.length);
 
                    for (h(); S.length;) try {
 
                        S.shift()()
 
                    } catch (O) {
 
                        s(O)
 
                    }
 
                },
 
                $destroy: function() {
 
                    if (!this.$$destroyed) {
 
                        var t = this.$parent;
 
                        if (this.$broadcast("$destroy"), this.$$destroyed = !0, this !== w) {
 
                            for (var e in this.$$listenerCount) $(this, this.$$listenerCount[e], e);
 
                            t.$$childHead == this && (t.$$childHead = this.$$nextSibling), t.$$childTail == this && (t.$$childTail = this.$$prevSibling), this.$$prevSibling && (this.$$prevSibling.$$nextSibling = this.$$nextSibling), this.$$nextSibling && (this.$$nextSibling.$$prevSibling = this.$$prevSibling), this.$destroy = this.$digest = this.$apply = this.$evalAsync = this.$applyAsync = p, this.$on = this.$watch = this.$watchGroup = function() {
 
                                return p
 
                            }, this.$$listeners = {}, this.$parent = this.$$nextSibling = this.$$prevSibling = this.$$childHead = this.$$childTail = this.$root = this.$$watchers = null
 
                        }
 
                    }
 
                },
 
                $eval: function(t, e) {
 
                    return u(t)(this, e)
 
                },
 
                $evalAsync: function(t, e) {
 
                    w.$$phase || x.length || c.defer(function() {
 
                        x.length && w.$digest()
 
                    }), x.push({
 
                        scope: this,
 
                        expression: t,
 
                        locals: e
 
                    })
 
                },
 
                $$postDigest: function(t) {
 
                    S.push(t)
 
                },
 
                $apply: function(t) {
 
                    try {
 
                        return d("$apply"), this.$eval(t)
 
                    } catch (e) {
 
                        s(e)
 
                    } finally {
 
                        h();
 
                        try {
 
                            w.$digest()
 
                        } catch (e) {
 
                            throw s(e), e
 
                        }
 
                    }
 
                },
 
                $applyAsync: function(t) {
 
                    function e() {
 
                        n.$eval(t)
 
                    }
 
                    var n = this;
 
                    t && C.push(e), b()
 
                },
 
                $on: function(t, e) {
 
                    var n = this.$$listeners[t];
 
                    n || (this.$$listeners[t] = n = []), n.push(e);
 
                    var r = this;
 
                    do r.$$listenerCount[t] || (r.$$listenerCount[t] = 0), r.$$listenerCount[t]++; while (r = r.$parent);
 
                    var i = this;
 
                    return function() {
 
                        var r = n.indexOf(e); - 1 !== r && (n[r] = null, $(i, 1, t))
 
                    }
 
                },
 
                $emit: function(t) {
 
                    var e, n, r, i = [],
 
                        a = this,
 
                        o = !1,
 
                        u = {
 
                            name: t,
 
                            targetScope: a,
 
                            stopPropagation: function() {
 
                                o = !0
 
                            },
 
                            preventDefault: function() {
 
                                u.defaultPrevented = !0
 
                            },
 
                            defaultPrevented: !1
 
                        },
 
                        l = _([u], arguments, 1);
 
                    do {
 
                        for (e = a.$$listeners[t] || i, u.currentScope = a, n = 0, r = e.length; r > n; n++)
 
                            if (e[n]) try {
 
                                e[n].apply(null, l)
 
                            } catch (c) {
 
                                s(c)
 
                            } else e.splice(n, 1), n--, r--;
 
                        if (o) return u.currentScope = null, u;
 
                        a = a.$parent
 
                    } while (a);
 
                    return u.currentScope = null, u
 
                },
 
                $broadcast: function(t) {
 
                    var e = this,
 
                        n = e,
 
                        r = e,
 
                        i = {
 
                            name: t,
 
                            targetScope: e,
 
                            preventDefault: function() {
 
                                i.defaultPrevented = !0
 
                            },
 
                            defaultPrevented: !1
 
                        };
 
                    if (!e.$$listenerCount[t]) return i;
 
                    for (var a, o, u, l = _([i], arguments, 1); n = r;) {
 
                        for (i.currentScope = n, a = n.$$listeners[t] || [], o = 0, u = a.length; u > o; o++)
 
                            if (a[o]) try {
 
                                a[o].apply(null, l)
 
                            } catch (c) {
 
                                s(c)
 
                            } else a.splice(o, 1), o--, u--;
 
                        if (!(r = n.$$listenerCount[t] && n.$$childHead || n !== e && n.$$nextSibling))
 
                            for (; n !== e && !(r = n.$$nextSibling);) n = n.$parent
 
                    }
 
                    return i.currentScope = null, i
 
                }
 
            };
 
            var w = new f,
 
                x = w.$$asyncQueue = [],
 
                S = w.$$postDigestQueue = [],
 
                C = w.$$applyAsyncQueue = [];
 
            return w
 
        }]
 
    }
 
 
    function Yn() {
 
        var t = /^\s*(https?|ftp|mailto|tel|file):/,
 
            e = /^\s*((https?|ftp|file|blob):|data:image\/)/;
 
        this.aHrefSanitizationWhitelist = function(e) {
 
            return v(e) ? (t = e, this) : t
 
        }, this.imgSrcSanitizationWhitelist = function(t) {
 
            return v(t) ? (e = t, this) : e
 
        }, this.$get = function() {
 
            return function(n, r) {
 
                var i, a = r ? e : t;
 
                return i = ir(n).href, "" === i || i.match(a) ? n : "unsafe:" + i
 
            }
 
        }
 
    }
 
 
    function Zn(t) {
 
        if ("self" === t) return t;
 
        if (b(t)) {
 
            if (t.indexOf("***") > -1) throw va("iwcard", "Illegal sequence *** in string matcher.  String: {0}", t);
 
            return t = di(t).replace("\\*\\*", ".*").replace("\\*", "[^:/.?&;]*"), new RegExp("^" + t + "$")
 
        }
 
        if (S(t)) return new RegExp("^" + t.source + "$");
 
        throw va("imatcher", 'Matchers may only be "self", string patterns or RegExp objects')
 
    }
 
 
    function Kn(t) {
 
        var e = [];
 
        return v(t) && a(t, function(t) {
 
            e.push(Zn(t))
 
        }), e
 
    }
 
 
    function Xn() {
 
        this.SCE_CONTEXTS = ya;
 
        var t = ["self"],
 
            e = [];
 
        this.resourceUrlWhitelist = function(e) {
 
            return arguments.length && (t = Kn(e)), t
 
        }, this.resourceUrlBlacklist = function(t) {
 
            return arguments.length && (e = Kn(t)), e
 
        }, this.$get = ["$injector", function(r) {
 
            function i(t, e) {
 
                return "self" === t ? ar(e) : !!t.exec(e.href)
 
            }
 
 
            function a(n) {
 
                var r, a, o = ir(n.toString()),
 
                    s = !1;
 
                for (r = 0, a = t.length; a > r; r++)
 
                    if (i(t[r], o)) {
 
                        s = !0;
 
                        break
 
                    }
 
                if (s)
 
                    for (r = 0, a = e.length; a > r; r++)
 
                        if (i(e[r], o)) {
 
                            s = !1;
 
                            break
 
                        }
 
                return s
 
            }
 
 
            function o(t) {
 
                var e = function(t) {
 
                    this.$$unwrapTrustedValue = function() {
 
                        return t
 
                    }
 
                };
 
                return t && (e.prototype = new t), e.prototype.valueOf = function() {
 
                    return this.$$unwrapTrustedValue()
 
                }, e.prototype.toString = function() {
 
                    return this.$$unwrapTrustedValue().toString()
 
                }, e
 
            }
 
 
            function s(t, e) {
 
                var r = d.hasOwnProperty(t) ? d[t] : null;
 
                if (!r) throw va("icontext", "Attempted to trust a value in invalid context. Context: {0}; Value: {1}", t, e);
 
                if (null === e || e === n || "" === e) return e;
 
                if ("string" != typeof e) throw va("itype", "Attempted to trust a non-string value in a content requiring a string: Context: {0}", t);
 
                return new r(e)
 
            }
 
 
            function u(t) {
 
                return t instanceof f ? t.$$unwrapTrustedValue() : t
 
            }
 
 
            function l(t, e) {
 
                if (null === e || e === n || "" === e) return e;
 
                var r = d.hasOwnProperty(t) ? d[t] : null;
 
                if (r && e instanceof r) return e.$$unwrapTrustedValue();
 
                if (t === ya.RESOURCE_URL) {
 
                    if (a(e)) return e;
 
                    throw va("insecurl", "Blocked loading resource from url not allowed by $sceDelegate policy.  URL: {0}", e.toString())
 
                }
 
                if (t === ya.HTML) return c(e);
 
                throw va("unsafe", "Attempting to use an unsafe value in a safe context.")
 
            }
 
            var c = function() {
 
                throw va("unsafe", "Attempting to use an unsafe value in a safe context.")
 
            };
 
            r.has("$sanitize") && (c = r.get("$sanitize"));
 
            var f = o(),
 
                d = {};
 
            return d[ya.HTML] = o(f), d[ya.CSS] = o(f), d[ya.URL] = o(f), d[ya.JS] = o(f), d[ya.RESOURCE_URL] = o(d[ya.URL]), {
 
                trustAs: s,
 
                getTrusted: l,
 
                valueOf: u
 
            }
 
        }]
 
    }
 
 
    function Qn() {
 
        var t = !0;
 
        this.enabled = function(e) {
 
            return arguments.length && (t = !!e), t
 
        }, this.$get = ["$parse", "$sceDelegate", function(e, n) {
 
            if (t && 8 > Xr) throw va("iequirks", "Strict Contextual Escaping does not support Internet Explorer version < 11 in quirks mode.  You can fix this by adding the text <!doctype html> to the top of your HTML document.  See http://docs.angularjs.org/api/ng.$sce for more information.");
 
            var r = R(ya);
 
            r.isEnabled = function() {
 
                return t
 
            }, r.trustAs = n.trustAs, r.getTrusted = n.getTrusted, r.valueOf = n.valueOf, t || (r.trustAs = r.getTrusted = function(t, e) {
 
                return e
 
            }, r.valueOf = $), r.parseAs = function(t, n) {
 
                var i = e(n);
 
                return i.literal && i.constant ? i : e(n, function(e) {
 
                    return r.getTrusted(t, e)
 
                })
 
            };
 
            var i = r.parseAs,
 
                o = r.getTrusted,
 
                s = r.trustAs;
 
            return a(ya, function(t, e) {
 
                var n = Wr(e);
 
                r[$e("parse_as_" + n)] = function(e) {
 
                    return i(t, e)
 
                }, r[$e("get_trusted_" + n)] = function(e) {
 
                    return o(t, e)
 
                }, r[$e("trust_as_" + n)] = function(e) {
 
                    return s(t, e)
 
                }
 
            }), r
 
        }]
 
    }
 
 
    function tr() {
 
        this.$get = ["$window", "$document", function(t, e) {
 
            var n, r, i = {},
 
                a = d((/android (\d+)/.exec(Wr((t.navigator || {}).userAgent)) || [])[1]),
 
                o = /Boxee/i.test((t.navigator || {}).userAgent),
 
                s = e[0] || {},
 
                u = /^(Moz|webkit|ms)(?=[A-Z])/,
 
                l = s.body && s.body.style,
 
                c = !1,
 
                f = !1;
 
            if (l) {
 
                for (var h in l)
 
                    if (r = u.exec(h)) {
 
                        n = r[0], n = n.substr(0, 1).toUpperCase() + n.substr(1);
 
                        break
 
                    }
 
                n || (n = "WebkitOpacity" in l && "webkit"), c = !!("transition" in l || n + "Transition" in l), f = !!("animation" in l || n + "Animation" in l), !a || c && f || (c = b(s.body.style.webkitTransition), f = b(s.body.style.webkitAnimation))
 
            }
 
            return {
 
                history: !(!t.history || !t.history.pushState || 4 > a || o),
 
                hasEvent: function(t) {
 
                    if ("input" === t && 11 >= Xr) return !1;
 
                    if (g(i[t])) {
 
                        var e = s.createElement("div");
 
                        i[t] = "on" + t in e
 
                    }
 
                    return i[t]
 
                },
 
                csp: hi(),
 
                vendorPrefix: n,
 
                transitions: c,
 
                animations: f,
 
                android: a
 
            }
 
        }]
 
    }
 
 
    function er() {
 
        this.$get = ["$templateCache", "$http", "$q", function(t, e, n) {
 
            function r(i, a) {
 
                function o(t) {
 
                    if (!a) throw Wi("tpload", "Failed to load template: {0}", i);
 
                    return n.reject(t)
 
                }
 
                r.totalPendingRequests++;
 
                var s = e.defaults && e.defaults.transformResponse;
 
                ci(s) ? s = s.filter(function(t) {
 
                    return t !== an
 
                }) : s === an && (s = null);
 
                var u = {
 
                    cache: t,
 
                    transformResponse: s
 
                };
 
                return e.get(i, u).finally(function() {
 
                    r.totalPendingRequests--
 
                }).then(function(t) {
 
                    return t.data
 
                }, o)
 
            }
 
            return r.totalPendingRequests = 0, r
 
        }]
 
    }
 
 
    function nr() {
 
        this.$get = ["$rootScope", "$browser", "$location", function(t, e, n) {
 
            var r = {};
 
            return r.findBindings = function(t, e, n) {
 
                var r = t.getElementsByClassName("ng-binding"),
 
                    i = [];
 
                return a(r, function(t) {
 
                    var r = si.element(t).data("$binding");
 
                    r && a(r, function(r) {
 
                        if (n) {
 
                            var a = new RegExp("(^|\\s)" + di(e) + "(\\s|\\||$)");
 
                            a.test(r) && i.push(t)
 
                        } else -1 != r.indexOf(e) && i.push(t)
 
                    })
 
                }), i
 
            }, r.findModels = function(t, e, n) {
 
                for (var r = ["ng-", "data-ng-", "ng\\:"], i = 0; i < r.length; ++i) {
 
                    var a = n ? "=" : "*=",
 
                        o = "[" + r[i] + "model" + a + '"' + e + '"]',
 
                        s = t.querySelectorAll(o);
 
                    if (s.length) return s
 
                }
 
            }, r.getLocation = function() {
 
                return n.url()
 
            }, r.setLocation = function(e) {
 
                e !== n.url() && (n.url(e), t.$digest())
 
            }, r.whenStable = function(t) {
 
                e.notifyWhenNoOutstandingRequests(t)
 
            }, r
 
        }]
 
    }
 
 
    function rr() {
 
        this.$get = ["$rootScope", "$browser", "$q", "$$q", "$exceptionHandler", function(t, e, n, r, i) {
 
            function a(a, s, u) {
 
                var l, c = v(u) && !u,
 
                    f = (c ? r : n).defer(),
 
                    d = f.promise;
 
                return l = e.defer(function() {
 
                    try {
 
                        f.resolve(a())
 
                    } catch (e) {
 
                        f.reject(e), i(e)
 
                    } finally {
 
                        delete o[d.$$timeoutId]
 
                    }
 
                    c || t.$apply()
 
                }, s), d.$$timeoutId = l, o[l] = f, d
 
            }
 
            var o = {};
 
            return a.cancel = function(t) {
 
                return t && t.$$timeoutId in o ? (o[t.$$timeoutId].reject("canceled"), delete o[t.$$timeoutId], e.defer.cancel(t.$$timeoutId)) : !1
 
            }, a
 
        }]
 
    }
 
 
    function ir(t) {
 
        var e = t;
 
        return Xr && (ba.setAttribute("href", e), e = ba.href), ba.setAttribute("href", e), {
 
            href: ba.href,
 
            protocol: ba.protocol ? ba.protocol.replace(/:$/, "") : "",
 
            host: ba.host,
 
            search: ba.search ? ba.search.replace(/^\?/, "") : "",
 
            hash: ba.hash ? ba.hash.replace(/^#/, "") : "",
 
            hostname: ba.hostname,
 
            port: ba.port,
 
            pathname: "/" === ba.pathname.charAt(0) ? ba.pathname : "/" + ba.pathname
 
        }
 
    }
 
 
    function ar(t) {
 
        var e = b(t) ? ir(t) : t;
 
        return e.protocol === wa.protocol && e.host === wa.host
 
    }
 
 
    function or() {
 
        this.$get = m(t)
 
    }
 
 
    function sr(t) {
 
        function e(r, i) {
 
            if (y(r)) {
 
                var o = {};
 
                return a(r, function(t, n) {
 
                    o[n] = e(n, t)
 
                }), o
 
            }
 
            return t.factory(r + n, i)
 
        }
 
        var n = "Filter";
 
        this.register = e, this.$get = ["$injector", function(t) {
 
            return function(e) {
 
                return t.get(e + n)
 
            }
 
        }], e("currency", fr), e("date", xr), e("filter", ur), e("json", kr), e("limitTo", Sr), e("lowercase", Aa), e("number", dr), e("orderBy", Cr), e("uppercase", Oa)
 
    }
 
 
    function ur() {
 
        return function(t, e, n) {
 
            if (!ci(t)) return t;
 
            var r, i;
 
            switch (typeof e) {
 
                case "function":
 
                    r = e;
 
                    break;
 
                case "boolean":
 
                case "number":
 
                case "string":
 
                    i = !0;
 
                case "object":
 
                    r = lr(e, n, i);
 
                    break;
 
                default:
 
                    return t
 
            }
 
            return t.filter(r)
 
        }
 
    }
 
 
    function lr(t, e, n) {
 
        var r, i = y(t) && "$" in t;
 
        return e === !0 ? e = I : k(e) || (e = function(t, e) {
 
            return y(t) || y(e) ? !1 : (t = Wr("" + t), e = Wr("" + e), -1 !== t.indexOf(e))
 
        }), r = function(r) {
 
            return i && !y(r) ? cr(r, t.$, e, !1) : cr(r, t, e, n)
 
        }
 
    }
 
 
    function cr(t, e, n, r, i) {
 
        var a = typeof t,
 
            o = typeof e;
 
        if ("string" === o && "!" === e.charAt(0)) return !cr(t, e.substring(1), n, r);
 
        if (ci(t)) return t.some(function(t) {
 
            return cr(t, e, n, r)
 
        });
 
        switch (a) {
 
            case "object":
 
                var s;
 
                if (r) {
 
                    for (s in t)
 
                        if ("$" !== s.charAt(0) && cr(t[s], e, n, !0)) return !0;
 
                    return i ? !1 : cr(t, e, n, !1)
 
                }
 
                if ("object" === o) {
 
                    for (s in e) {
 
                        var u = e[s];
 
                        if (!k(u)) {
 
                            var l = "$" === s,
 
                                c = l ? t : t[s];
 
                            if (!cr(c, u, n, l, l)) return !1
 
                        }
 
                    }
 
                    return !0
 
                }
 
                return n(t, e);
 
            case "function":
 
                return !1;
 
            default:
 
                return n(t, e)
 
        }
 
    }
 
 
    function fr(t) {
 
        var e = t.NUMBER_FORMATS;
 
        return function(t, n, r) {
 
            return g(n) && (n = e.CURRENCY_SYM), g(r) && (r = e.PATTERNS[1].maxFrac), null == t ? t : hr(t, e.PATTERNS[1], e.GROUP_SEP, e.DECIMAL_SEP, r).replace(/\u00A4/g, n)
 
        }
 
    }
 
 
    function dr(t) {
 
        var e = t.NUMBER_FORMATS;
 
        return function(t, n) {
 
            return null == t ? t : hr(t, e.PATTERNS[0], e.GROUP_SEP, e.DECIMAL_SEP, n)
 
        }
 
    }
 
 
    function hr(t, e, n, r, i) {
 
        if (!isFinite(t) || y(t)) return "";
 
        var a = 0 > t;
 
        t = Math.abs(t);
 
        var o = t + "",
 
            s = "",
 
            u = [],
 
            l = !1;
 
        if (-1 !== o.indexOf("e")) {
 
            var c = o.match(/([\d\.]+)e(-?)(\d+)/);
 
            c && "-" == c[2] && c[3] > i + 1 ? t = 0 : (s = o, l = !0)
 
        }
 
        if (l) i > 0 && 1 > t && (s = t.toFixed(i), t = parseFloat(s));
 
        else {
 
            var f = (o.split(xa)[1] || "").length;
 
            g(i) && (i = Math.min(Math.max(e.minFrac, f), e.maxFrac)), t = +(Math.round(+(t.toString() + "e" + i)).toString() + "e" + -i);
 
            var d = ("" + t).split(xa),
 
                h = d[0];
 
            d = d[1] || "";
 
            var p, $ = 0,
 
                m = e.lgSize,
 
                v = e.gSize;
 
            if (h.length >= m + v)
 
                for ($ = h.length - m, p = 0; $ > p; p++)($ - p) % v === 0 && 0 !== p && (s += n), s += h.charAt(p);
 
            for (p = $; p < h.length; p++)(h.length - p) % m === 0 && 0 !== p && (s += n), s += h.charAt(p);
 
            for (; d.length < i;) d += "0";
 
            i && "0" !== i && (s += r + d.substr(0, i))
 
        }
 
        return 0 === t && (a = !1), u.push(a ? e.negPre : e.posPre, s, a ? e.negSuf : e.posSuf), u.join("")
 
    }
 
 
    function pr(t, e, n) {
 
        var r = "";
 
        for (0 > t && (r = "-", t = -t), t = "" + t; t.length < e;) t = "0" + t;
 
        return n && (t = t.substr(t.length - e)), r + t
 
    }
 
 
    function $r(t, e, n, r) {
 
        return n = n || 0,
 
            function(i) {
 
                var a = i["get" + t]();
 
                return (n > 0 || a > -n) && (a += n), 0 === a && -12 == n && (a = 12), pr(a, e, r)
 
            }
 
    }
 
 
    function mr(t, e) {
 
        return function(n, r) {
 
            var i = n["get" + t](),
 
                a = Yr(e ? "SHORT" + t : t);
 
            return r[a][i]
 
        }
 
    }
 
 
    function gr(t) {
 
        var e = -1 * t.getTimezoneOffset(),
 
            n = e >= 0 ? "+" : "";
 
        return n += pr(Math[e > 0 ? "floor" : "ceil"](e / 60), 2) + pr(Math.abs(e % 60), 2)
 
    }
 
 
    function vr(t) {
 
        var e = new Date(t, 0, 1).getDay();
 
        return new Date(t, 0, (4 >= e ? 5 : 12) - e)
 
    }
 
 
    function yr(t) {
 
        return new Date(t.getFullYear(), t.getMonth(), t.getDate() + (4 - t.getDay()))
 
    }
 
 
    function br(t) {
 
        return function(e) {
 
            var n = vr(e.getFullYear()),
 
                r = yr(e),
 
                i = +r - +n,
 
                a = 1 + Math.round(i / 6048e5);
 
            return pr(a, t)
 
        }
 
    }
 
 
    function wr(t, e) {
 
        return t.getHours() < 12 ? e.AMPMS[0] : e.AMPMS[1]
 
    }
 
 
    function xr(t) {
 
        function e(t) {
 
            var e;
 
            if (e = t.match(n)) {
 
                var r = new Date(0),
 
                    i = 0,
 
                    a = 0,
 
                    o = e[8] ? r.setUTCFullYear : r.setFullYear,
 
                    s = e[8] ? r.setUTCHours : r.setHours;
 
                e[9] && (i = d(e[9] + e[10]), a = d(e[9] + e[11])), o.call(r, d(e[1]), d(e[2]) - 1, d(e[3]));
 
                var u = d(e[4] || 0) - i,
 
                    l = d(e[5] || 0) - a,
 
                    c = d(e[6] || 0),
 
                    f = Math.round(1e3 * parseFloat("0." + (e[7] || 0)));
 
                return s.call(r, u, l, c, f), r
 
            }
 
            return t
 
        }
 
        var n = /^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/;
 
        return function(n, r, i) {
 
            var o, s, u = "",
 
                l = [];
 
            if (r = r || "mediumDate", r = t.DATETIME_FORMATS[r] || r, b(n) && (n = Ca.test(n) ? d(n) : e(n)), w(n) && (n = new Date(n)), !x(n)) return n;
 
            for (; r;) s = Sa.exec(r), s ? (l = _(l, s, 1), r = l.pop()) : (l.push(r), r = null);
 
            return i && "UTC" === i && (n = new Date(n.getTime()), n.setMinutes(n.getMinutes() + n.getTimezoneOffset())), a(l, function(e) {
 
                o = ka[e], u += o ? o(n, t.DATETIME_FORMATS) : e.replace(/(^'|'$)/g, "").replace(/''/g, "'")
 
            }), u
 
        }
 
    }
 
 
    function kr() {
 
        return function(t, e) {
 
            return g(e) && (e = 2), H(t, e)
 
        }
 
    }
 
 
    function Sr() {
 
        return function(t, e) {
 
            return w(t) && (t = t.toString()), ci(t) || b(t) ? (e = 1 / 0 === Math.abs(Number(e)) ? Number(e) : d(e), e ? e > 0 ? t.slice(0, e) : t.slice(e) : b(t) ? "" : []) : t
 
        }
 
    }
 
 
    function Cr(t) {
 
        return function(e, n, r) {
 
            function a(t, e) {
 
                for (var r = 0; r < n.length; r++) {
 
                    var i = n[r](t, e);
 
                    if (0 !== i) return i
 
                }
 
                return 0
 
            }
 
 
            function o(t, e) {
 
                return e ? function(e, n) {
 
                    return t(n, e)
 
                } : t
 
            }
 
 
            function s(t) {
 
                switch (typeof t) {
 
                    case "number":
 
                    case "boolean":
 
                    case "string":
 
                        return !0;
 
                    default:
 
                        return !1
 
                }
 
            }
 
 
            function u(t) {
 
                return null === t ? "null" : "function" == typeof t.valueOf && (t = t.valueOf(), s(t)) ? t : "function" == typeof t.toString && (t = t.toString(), s(t)) ? t : ""
 
            }
 
 
            function l(t, e) {
 
                var n = typeof t,
 
                    r = typeof e;
 
                return n === r && "object" === n && (t = u(t), e = u(e)), n === r ? ("string" === n && (t = t.toLowerCase(), e = e.toLowerCase()), t === e ? 0 : e > t ? -1 : 1) : r > n ? -1 : 1
 
            }
 
            return i(e) ? (n = ci(n) ? n : [n], 0 === n.length && (n = ["+"]), n = n.map(function(e) {
 
                var n = !1,
 
                    r = e || $;
 
                if (b(e)) {
 
                    if (("+" == e.charAt(0) || "-" == e.charAt(0)) && (n = "-" == e.charAt(0), e = e.substring(1)), "" === e) return o(l, n);
 
                    if (r = t(e), r.constant) {
 
                        var i = r();
 
                        return o(function(t, e) {
 
                            return l(t[i], e[i])
 
                        }, n)
 
                    }
 
                }
 
                return o(function(t, e) {
 
                    return l(r(t), r(e))
 
                }, n)
 
            }), ni.call(e).sort(o(a, r))) : e
 
        }
 
    }
 
 
    function Ar(t) {
 
        return k(t) && (t = {
 
            link: t
 
        }), t.restrict = t.restrict || "AC", m(t)
 
    }
 
 
    function Or(t, e) {
 
        t.$name = e
 
    }
 
 
    function Er(t, e, r, i, o) {
 
        var s = this,
 
            u = [],
 
            l = s.$$parentForm = t.parent().controller("form") || Na;
 
        s.$error = {}, s.$$success = {}, s.$pending = n, s.$name = o(e.name || e.ngForm || "")(r), s.$dirty = !1, s.$pristine = !0, s.$valid = !0, s.$invalid = !1, s.$submitted = !1, l.$addControl(s), s.$rollbackViewValue = function() {
 
            a(u, function(t) {
 
                t.$rollbackViewValue()
 
            })
 
        }, s.$commitViewValue = function() {
 
            a(u, function(t) {
 
                t.$commitViewValue()
 
            })
 
        }, s.$addControl = function(t) {
 
            oe(t.$name, "input"), u.push(t), t.$name && (s[t.$name] = t)
 
        }, s.$$renameControl = function(t, e) {
 
            var n = t.$name;
 
            s[n] === t && delete s[n], s[e] = t, t.$name = e
 
        }, s.$removeControl = function(t) {
 
            t.$name && s[t.$name] === t && delete s[t.$name], a(s.$pending, function(e, n) {
 
                s.$setValidity(n, null, t)
 
            }), a(s.$error, function(e, n) {
 
                s.$setValidity(n, null, t)
 
            }), a(s.$$success, function(e, n) {
 
                s.$setValidity(n, null, t)
 
            }), q(u, t)
 
        }, Hr({
 
            ctrl: this,
 
            $element: t,
 
            set: function(t, e, n) {
 
                var r = t[e];
 
                if (r) {
 
                    var i = r.indexOf(n); - 1 === i && r.push(n)
 
                } else t[e] = [n]
 
            },
 
            unset: function(t, e, n) {
 
                var r = t[e];
 
                r && (q(r, n), 0 === r.length && delete t[e])
 
            },
 
            parentForm: l,
 
            $animate: i
 
        }), s.$setDirty = function() {
 
            i.removeClass(t, ho), i.addClass(t, po), s.$dirty = !0, s.$pristine = !1, l.$setDirty()
 
        }, s.$setPristine = function() {
 
            i.setClass(t, ho, po + " " + Ta), s.$dirty = !1, s.$pristine = !0, s.$submitted = !1, a(u, function(t) {
 
                t.$setPristine()
 
            })
 
        }, s.$setUntouched = function() {
 
            a(u, function(t) {
 
                t.$setUntouched()
 
            })
 
        }, s.$setSubmitted = function() {
 
            i.addClass(t, Ta), s.$submitted = !0, l.$setSubmitted()
 
        }
 
    }
 
 
    function jr(t) {
 
        t.$formatters.push(function(e) {
 
            return t.$isEmpty(e) ? e : e.toString()
 
        })
 
    }
 
 
    function Nr(t, e, n, r, i, a) {
 
        Tr(t, e, n, r, i, a), jr(r)
 
    }
 
 
    function Tr(t, e, n, r, i, a) {
 
        var o = Wr(e[0].type);
 
        if (!i.android) {
 
            var s = !1;
 
            e.on("compositionstart", function() {
 
                s = !0
 
            }), e.on("compositionend", function() {
 
                s = !1, u()
 
            })
 
        }
 
        var u = function(t) {
 
            if (l && (a.defer.cancel(l), l = null), !s) {
 
                var i = e.val(),
 
                    u = t && t.type;
 
                "password" === o || n.ngTrim && "false" === n.ngTrim || (i = fi(i)), (r.$viewValue !== i || "" === i && r.$$hasNativeValidators) && r.$setViewValue(i, u)
 
            }
 
        };
 
        if (i.hasEvent("input")) e.on("input", u);
 
        else {
 
            var l, c = function(t, e, n) {
 
                l || (l = a.defer(function() {
 
                    l = null, e && e.value === n || u(t)
 
                }))
 
            };
 
            e.on("keydown", function(t) {
 
                var e = t.keyCode;
 
                91 === e || e > 15 && 19 > e || e >= 37 && 40 >= e || c(t, this, this.value)
 
            }), i.hasEvent("paste") && e.on("paste cut", c)
 
        }
 
        e.on("change", u), r.$render = function() {
 
            e.val(r.$isEmpty(r.$viewValue) ? "" : r.$viewValue)
 
        }
 
    }
 
 
    function Mr(t, e) {
 
        if (x(t)) return t;
 
        if (b(t)) {
 
            La.lastIndex = 0;
 
            var n = La.exec(t);
 
            if (n) {
 
                var r = +n[1],
 
                    i = +n[2],
 
                    a = 0,
 
                    o = 0,
 
                    s = 0,
 
                    u = 0,
 
                    l = vr(r),
 
                    c = 7 * (i - 1);
 
                return e && (a = e.getHours(), o = e.getMinutes(), s = e.getSeconds(), u = e.getMilliseconds()), new Date(r, 0, l.getDate() + c, a, o, s, u)
 
            }
 
        }
 
        return 0 / 0
 
    }
 
 
    function Pr(t, e) {
 
        return function(n, r) {
 
            var i, o;
 
            if (x(n)) return n;
 
            if (b(n)) {
 
                if ('"' == n.charAt(0) && '"' == n.charAt(n.length - 1) && (n = n.substring(1, n.length - 1)), qa.test(n)) return new Date(n);
 
                if (t.lastIndex = 0, i = t.exec(n)) return i.shift(), o = r ? {
 
                    yyyy: r.getFullYear(),
 
                    MM: r.getMonth() + 1,
 
                    dd: r.getDate(),
 
                    HH: r.getHours(),
 
                    mm: r.getMinutes(),
 
                    ss: r.getSeconds(),
 
                    sss: r.getMilliseconds() / 1e3
 
                } : {
 
                    yyyy: 1970,
 
                    MM: 1,
 
                    dd: 1,
 
                    HH: 0,
 
                    mm: 0,
 
                    ss: 0,
 
                    sss: 0
 
                }, a(i, function(t, n) {
 
                    n < e.length && (o[e[n]] = +t)
 
                }), new Date(o.yyyy, o.MM - 1, o.dd, o.HH, o.mm, o.ss || 0, 1e3 * o.sss || 0)
 
            }
 
            return 0 / 0
 
        }
 
    }
 
 
    function Vr(t, e, r, i) {
 
        return function(a, o, s, u, l, c, f) {
 
            function d(t) {
 
                return t && !(t.getTime && t.getTime() !== t.getTime())
 
            }
 
 
            function h(t) {
 
                return v(t) ? x(t) ? t : r(t) : n
 
            }
 
            qr(a, o, s, u), Tr(a, o, s, u, l, c);
 
            var p, $ = u && u.$options && u.$options.timezone;
 
            if (u.$$parserName = t, u.$parsers.push(function(t) {
 
                    if (u.$isEmpty(t)) return null;
 
                    if (e.test(t)) {
 
                        var i = r(t, p);
 
                        return "UTC" === $ && i.setMinutes(i.getMinutes() - i.getTimezoneOffset()), i
 
                    }
 
                    return n
 
                }), u.$formatters.push(function(t) {
 
                    if (t && !x(t)) throw vo("datefmt", "Expected `{0}` to be a date", t);
 
                    if (d(t)) {
 
                        if (p = t, p && "UTC" === $) {
 
                            var e = 6e4 * p.getTimezoneOffset();
 
                            p = new Date(p.getTime() + e)
 
                        }
 
                        return f("date")(t, i, $)
 
                    }
 
                    return p = null, ""
 
                }), v(s.min) || s.ngMin) {
 
                var m;
 
                u.$validators.min = function(t) {
 
                    return !d(t) || g(m) || r(t) >= m
 
                }, s.$observe("min", function(t) {
 
                    m = h(t), u.$validate()
 
                })
 
            }
 
            if (v(s.max) || s.ngMax) {
 
                var y;
 
                u.$validators.max = function(t) {
 
                    return !d(t) || g(y) || r(t) <= y
 
                }, s.$observe("max", function(t) {
 
                    y = h(t), u.$validate()
 
                })
 
            }
 
        }
 
    }
 
 
    function qr(t, e, r, i) {
 
        var a = e[0],
 
            o = i.$$hasNativeValidators = y(a.validity);
 
        o && i.$parsers.push(function(t) {
 
            var r = e.prop(Gr) || {};
 
            return r.badInput && !r.typeMismatch ? n : t
 
        })
 
    }
 
 
    function Dr(t, e, r, i, a, o) {
 
        if (qr(t, e, r, i), Tr(t, e, r, i, a, o), i.$$parserName = "number", i.$parsers.push(function(t) {
 
                return i.$isEmpty(t) ? null : Ia.test(t) ? parseFloat(t) : n
 
            }), i.$formatters.push(function(t) {
 
                if (!i.$isEmpty(t)) {
 
                    if (!w(t)) throw vo("numfmt", "Expected `{0}` to be a number", t);
 
                    t = t.toString()
 
                }
 
                return t
 
            }), r.min || r.ngMin) {
 
            var s;
 
            i.$validators.min = function(t) {
 
                return i.$isEmpty(t) || g(s) || t >= s
 
            }, r.$observe("min", function(t) {
 
                v(t) && !w(t) && (t = parseFloat(t, 10)), s = w(t) && !isNaN(t) ? t : n, i.$validate()
 
            })
 
        }
 
        if (r.max || r.ngMax) {
 
            var u;
 
            i.$validators.max = function(t) {
 
                return i.$isEmpty(t) || g(u) || u >= t
 
            }, r.$observe("max", function(t) {
 
                v(t) && !w(t) && (t = parseFloat(t, 10)), u = w(t) && !isNaN(t) ? t : n, i.$validate()
 
            })
 
        }
 
    }
 
 
    function Rr(t, e, n, r, i, a) {
 
        Tr(t, e, n, r, i, a), jr(r), r.$$parserName = "url", r.$validators.url = function(t, e) {
 
            var n = t || e;
 
            return r.$isEmpty(n) || Da.test(n)
 
        }
 
    }
 
 
    function Ir(t, e, n, r, i, a) {
 
        Tr(t, e, n, r, i, a), jr(r), r.$$parserName = "email", r.$validators.email = function(t, e) {
 
            var n = t || e;
 
            return r.$isEmpty(n) || Ra.test(n)
 
        }
 
    }
 
 
    function _r(t, e, n, r) {
 
        g(n.name) && e.attr("name", l());
 
        var i = function(t) {
 
            e[0].checked && r.$setViewValue(n.value, t && t.type)
 
        };
 
        e.on("click", i), r.$render = function() {
 
            var t = n.value;
 
            e[0].checked = t == r.$viewValue
 
        }, n.$observe("value", r.$render)
 
    }
 
 
    function Ur(t, e, n, i, a) {
 
        var o;
 
        if (v(i)) {
 
            if (o = t(i), !o.constant) throw r("ngModel")("constexpr", "Expected constant expression for `{0}`, but saw `{1}`.", n, i);
 
            return o(e)
 
        }
 
        return a
 
    }
 
 
    function Lr(t, e, n, r, i, a, o, s) {
 
        var u = Ur(s, t, "ngTrueValue", n.ngTrueValue, !0),
 
            l = Ur(s, t, "ngFalseValue", n.ngFalseValue, !1),
 
            c = function(t) {
 
                r.$setViewValue(e[0].checked, t && t.type)
 
            };
 
        e.on("click", c), r.$render = function() {
 
            e[0].checked = r.$viewValue
 
        }, r.$isEmpty = function(t) {
 
            return t === !1
 
        }, r.$formatters.push(function(t) {
 
            return I(t, u)
 
        }), r.$parsers.push(function(t) {
 
            return t ? u : l
 
        })
 
    }
 
 
    function Fr(t, e) {
 
        return t = "ngClass" + t, ["$animate", function(n) {
 
            function r(t, e) {
 
                var n = [];
 
                t: for (var r = 0; r < t.length; r++) {
 
                    for (var i = t[r], a = 0; a < e.length; a++)
 
                        if (i == e[a]) continue t;
 
                    n.push(i)
 
                }
 
                return n
 
            }
 
 
            function i(t) {
 
                if (ci(t)) return t;
 
                if (b(t)) return t.split(" ");
 
                if (y(t)) {
 
                    var e = [];
 
                    return a(t, function(t, n) {
 
                        t && (e = e.concat(n.split(" ")))
 
                    }), e
 
                }
 
                return t
 
            }
 
            return {
 
                restrict: "AC",
 
                link: function(o, s, u) {
 
                    function l(t) {
 
                        var e = f(t, 1);
 
                        u.$addClass(e)
 
                    }
 
 
                    function c(t) {
 
                        var e = f(t, -1);
 
                        u.$removeClass(e)
 
                    }
 
 
                    function f(t, e) {
 
                        var n = s.data("$classCounts") || {},
 
                            r = [];
 
                        return a(t, function(t) {
 
                            (e > 0 || n[t]) && (n[t] = (n[t] || 0) + e, n[t] === +(e > 0) && r.push(t))
 
                        }), s.data("$classCounts", n), r.join(" ")
 
                    }
 
 
                    function d(t, e) {
 
                        var i = r(e, t),
 
                            a = r(t, e);
 
                        i = f(i, 1), a = f(a, -1), i && i.length && n.addClass(s, i), a && a.length && n.removeClass(s, a)
 
                    }
 
 
                    function h(t) {
 
                        if (e === !0 || o.$index % 2 === e) {
 
                            var n = i(t || []);
 
                            if (p) {
 
                                if (!I(t, p)) {
 
                                    var r = i(p);
 
                                    d(r, n)
 
                                }
 
                            } else l(n)
 
                        }
 
                        p = R(t)
 
                    }
 
                    var p;
 
                    o.$watch(u[t], h, !0), u.$observe("class", function() {
 
                        h(o.$eval(u[t]))
 
                    }), "ngClass" !== t && o.$watch("$index", function(n, r) {
 
                        var a = 1 & n;
 
                        if (a !== (1 & r)) {
 
                            var s = i(o.$eval(u[t]));
 
                            a === e ? l(s) : c(s)
 
                        }
 
                    })
 
                }
 
            }
 
        }]
 
    }
 
 
    function Hr(t) {
 
        function e(t, e, u) {
 
            e === n ? r("$pending", t, u) : i("$pending", t, u), N(e) ? e ? (f(s.$error, t, u), c(s.$$success, t, u)) : (c(s.$error, t, u), f(s.$$success, t, u)) : (f(s.$error, t, u), f(s.$$success, t, u)), s.$pending ? (a(go, !0), s.$valid = s.$invalid = n, o("", null)) : (a(go, !1), s.$valid = Br(s.$error), s.$invalid = !s.$valid, o("", s.$valid));
 
            var l;
 
            l = s.$pending && s.$pending[t] ? n : s.$error[t] ? !1 : s.$$success[t] ? !0 : null, o(t, l), d.$setValidity(t, l, s)
 
        }
 
 
        function r(t, e, n) {
 
            s[t] || (s[t] = {}), c(s[t], e, n)
 
        }
 
 
        function i(t, e, r) {
 
            s[t] && f(s[t], e, r), Br(s[t]) && (s[t] = n)
 
        }
 
 
        function a(t, e) {
 
            e && !l[t] ? (h.addClass(u, t), l[t] = !0) : !e && l[t] && (h.removeClass(u, t), l[t] = !1)
 
        }
 
 
        function o(t, e) {
 
            t = t ? "-" + ne(t, "-") : "", a(co + t, e === !0), a(fo + t, e === !1)
 
        }
 
        var s = t.ctrl,
 
            u = t.$element,
 
            l = {},
 
            c = t.set,
 
            f = t.unset,
 
            d = t.parentForm,
 
            h = t.$animate;
 
        l[fo] = !(l[co] = u.hasClass(co)), s.$setValidity = e
 
    }
 
 
    function Br(t) {
 
        if (t)
 
            for (var e in t) return !1;
 
        return !0
 
    }
 
    var zr = /^\/(.+)\/([a-z]*)$/,
 
        Gr = "validity",
 
        Wr = function(t) {
 
            return b(t) ? t.toLowerCase() : t
 
        },
 
        Jr = Object.prototype.hasOwnProperty,
 
        Yr = function(t) {
 
            return b(t) ? t.toUpperCase() : t
 
        },
 
        Zr = function(t) {
 
            return b(t) ? t.replace(/[A-Z]/g, function(t) {
 
                return String.fromCharCode(32 | t.charCodeAt(0))
 
            }) : t
 
        },
 
        Kr = function(t) {
 
            return b(t) ? t.replace(/[a-z]/g, function(t) {
 
                return String.fromCharCode(-33 & t.charCodeAt(0))
 
            }) : t
 
        };
 
    "i" !== "I".toLowerCase() && (Wr = Zr, Yr = Kr);
 
    var Xr, Qr, ti, ei, ni = [].slice,
 
        ri = [].splice,
 
        ii = [].push,
 
        ai = Object.prototype.toString,
 
        oi = r("ng"),
 
        si = t.angular || (t.angular = {}),
 
        ui = 0;
 
    Xr = e.documentMode, p.$inject = [], $.$inject = [];
 
    var li, ci = Array.isArray,
 
        fi = function(t) {
 
            return b(t) ? t.trim() : t
 
        },
 
        di = function(t) {
 
            return t.replace(/([-()\[\]{}+?*.$\^|,:#<!\\])/g, "\\$1").replace(/\x08/g, "\\x08")
 
        },
 
        hi = function() {
 
            if (v(hi.isActive_)) return hi.isActive_;
 
            var t = !(!e.querySelector("[ng-csp]") && !e.querySelector("[data-ng-csp]"));
 
            if (!t) try {
 
                new Function("")
 
            } catch (n) {
 
                t = !0
 
            }
 
            return hi.isActive_ = t
 
        },
 
        pi = ["ng-", "data-ng-", "ng:", "x-ng-"],
 
        $i = /[A-Z]/g,
 
        mi = !1,
 
        gi = 1,
 
        vi = 3,
 
        yi = 8,
 
        bi = 9,
 
        wi = 11,
 
        xi = {
 
            full: "1.3.13",
 
            major: 1,
 
            minor: 3,
 
            dot: 13,
 
            codeName: "meticulous-riffleshuffle"
 
        };
 
    be.expando = "ng339";
 
    var ki = be.cache = {},
 
        Si = 1,
 
        Ci = function(t, e, n) {
 
            t.addEventListener(e, n, !1)
 
        },
 
        Ai = function(t, e, n) {
 
            t.removeEventListener(e, n, !1)
 
        };
 
    be._data = function(t) {
 
        return this.cache[t[this.expando]] || {}
 
    };
 
    var Oi = /([\:\-\_]+(.))/g,
 
        Ei = /^moz([A-Z])/,
 
        ji = {
 
            mouseleave: "mouseout",
 
            mouseenter: "mouseover"
 
        },
 
        Ni = r("jqLite"),
 
        Ti = /^<(\w+)\s*\/?>(?:<\/\1>|)$/,
 
        Mi = /<|&#?\w+;/,
 
        Pi = /<([\w:]+)/,
 
        Vi = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,
 
        qi = {
 
            option: [1, '<select multiple="multiple">', "</select>"],
 
            thead: [1, "<table>", "</table>"],
 
            col: [2, "<table><colgroup>", "</colgroup></table>"],
 
            tr: [2, "<table><tbody>", "</tbody></table>"],
 
            td: [3, "<table><tbody><tr>", "</tr></tbody></table>"],
 
            _default: [0, "", ""]
 
        };
 
    qi.optgroup = qi.option, qi.tbody = qi.tfoot = qi.colgroup = qi.caption = qi.thead, qi.th = qi.td;
 
    var Di = be.prototype = {
 
            ready: function(n) {
 
                function r() {
 
                    i || (i = !0, n())
 
                }
 
                var i = !1;
 
                "complete" === e.readyState ? setTimeout(r) : (this.on("DOMContentLoaded", r), be(t).on("load", r))
 
            },
 
            toString: function() {
 
                var t = [];
 
                return a(this, function(e) {
 
                    t.push("" + e)
 
                }), "[" + t.join(", ") + "]"
 
            },
 
            eq: function(t) {
 
                return t >= 0 ? Qr(this[t]) : Qr(this[this.length + t])
 
            },
 
            length: 0,
 
            push: ii,
 
            sort: [].sort,
 
            splice: [].splice
 
        },
 
        Ri = {};
 
    a("multiple,selected,checked,disabled,readOnly,required,open".split(","), function(t) {
 
        Ri[Wr(t)] = t
 
    });
 
    var Ii = {};
 
    a("input,select,option,textarea,button,form,details".split(","), function(t) {
 
        Ii[t] = !0
 
    });
 
    var _i = {
 
        ngMinlength: "minlength",
 
        ngMaxlength: "maxlength",
 
        ngMin: "min",
 
        ngMax: "max",
 
        ngPattern: "pattern"
 
    };
 
    a({
 
        data: Ae,
 
        removeData: Se
 
    }, function(t, e) {
 
        be[e] = t
 
    }), a({
 
        data: Ae,
 
        inheritedData: Me,
 
        scope: function(t) {
 
            return Qr.data(t, "$scope") || Me(t.parentNode || t, ["$isolateScope", "$scope"])
 
        },
 
        isolateScope: function(t) {
 
            return Qr.data(t, "$isolateScope") || Qr.data(t, "$isolateScopeNoTemplate")
 
        },
 
        controller: Te,
 
        injector: function(t) {
 
            return Me(t, "$injector")
 
        },
 
        removeAttr: function(t, e) {
 
            t.removeAttribute(e)
 
        },
 
        hasClass: Oe,
 
        css: function(t, e, n) {
 
            return e = $e(e), v(n) ? (t.style[e] = n, void 0) : t.style[e]
 
        },
 
        attr: function(t, e, r) {
 
            var i = Wr(e);
 
            if (Ri[i]) {
 
                if (!v(r)) return t[e] || (t.attributes.getNamedItem(e) || p).specified ? i : n;
 
                r ? (t[e] = !0, t.setAttribute(e, i)) : (t[e] = !1, t.removeAttribute(i))
 
            } else if (v(r)) t.setAttribute(e, r);
 
            else if (t.getAttribute) {
 
                var a = t.getAttribute(e, 2);
 
                return null === a ? n : a
 
            }
 
        },
 
        prop: function(t, e, n) {
 
            return v(n) ? (t[e] = n, void 0) : t[e]
 
        },
 
        text: function() {
 
            function t(t, e) {
 
                if (g(e)) {
 
                    var n = t.nodeType;
 
                    return n === gi || n === vi ? t.textContent : ""
 
                }
 
                t.textContent = e
 
            }
 
            return t.$dv = "", t
 
        }(),
 
        val: function(t, e) {
 
            if (g(e)) {
 
                if (t.multiple && "select" === V(t)) {
 
                    var n = [];
 
                    return a(t.options, function(t) {
 
                        t.selected && n.push(t.value || t.text)
 
                    }), 0 === n.length ? null : n
 
                }
 
                return t.value
 
            }
 
            t.value = e
 
        },
 
        html: function(t, e) {
 
            return g(e) ? t.innerHTML : (xe(t, !0), t.innerHTML = e, void 0)
 
        },
 
        empty: Pe
 
    }, function(t, e) {
 
        be.prototype[e] = function(e, r) {
 
            var i, a, o = this.length;
 
            if (t !== Pe && (2 == t.length && t !== Oe && t !== Te ? e : r) === n) {
 
                if (y(e)) {
 
                    for (i = 0; o > i; i++)
 
                        if (t === Ae) t(this[i], e);
 
                        else
 
                            for (a in e) t(this[i], a, e[a]);
 
                    return this
 
                }
 
                for (var s = t.$dv, u = s === n ? Math.min(o, 1) : o, l = 0; u > l; l++) {
 
                    var c = t(this[l], e, r);
 
                    s = s ? s + c : c
 
                }
 
                return s
 
            }
 
            for (i = 0; o > i; i++) t(this[i], e, r);
 
            return this
 
        }
 
    }), a({
 
        removeData: Se,
 
        on: function zo(t, e, n, r) {
 
            if (v(r)) throw Ni("onargs", "jqLite#on() does not support the `selector` or `eventData` parameters");
 
            if (ge(t)) {
 
                var i = Ce(t, !0),
 
                    a = i.events,
 
                    o = i.handle;
 
                o || (o = i.handle = Ie(t, a));
 
                for (var s = e.indexOf(" ") >= 0 ? e.split(" ") : [e], u = s.length; u--;) {
 
                    e = s[u];
 
                    var l = a[e];
 
                    l || (a[e] = [], "mouseenter" === e || "mouseleave" === e ? zo(t, ji[e], function(t) {
 
                        var n = this,
 
                            r = t.relatedTarget;
 
                        (!r || r !== n && !n.contains(r)) && o(t, e)
 
                    }) : "$destroy" !== e && Ci(t, e, o), l = a[e]), l.push(n)
 
                }
 
            }
 
        },
 
        off: ke,
 
        one: function(t, e, n) {
 
            t = Qr(t), t.on(e, function r() {
 
                t.off(e, n), t.off(e, r)
 
            }), t.on(e, n)
 
        },
 
        replaceWith: function(t, e) {
 
            var n, r = t.parentNode;
 
            xe(t), a(new be(e), function(e) {
 
                n ? r.insertBefore(e, n.nextSibling) : r.replaceChild(e, t), n = e
 
            })
 
        },
 
        children: function(t) {
 
            var e = [];
 
            return a(t.childNodes, function(t) {
 
                t.nodeType === gi && e.push(t)
 
            }), e
 
        },
 
        contents: function(t) {
 
            return t.contentDocument || t.childNodes || []
 
        },
 
        append: function(t, e) {
 
            var n = t.nodeType;
 
            if (n === gi || n === wi) {
 
                e = new be(e);
 
                for (var r = 0, i = e.length; i > r; r++) {
 
                    var a = e[r];
 
                    t.appendChild(a)
 
                }
 
            }
 
        },
 
        prepend: function(t, e) {
 
            if (t.nodeType === gi) {
 
                var n = t.firstChild;
 
                a(new be(e), function(e) {
 
                    t.insertBefore(e, n)
 
                })
 
            }
 
        },
 
        wrap: function(t, e) {
 
            e = Qr(e).eq(0).clone()[0];
 
            var n = t.parentNode;
 
            n && n.replaceChild(e, t), e.appendChild(t)
 
        },
 
        remove: Ve,
 
        detach: function(t) {
 
            Ve(t, !0)
 
        },
 
        after: function(t, e) {
 
            var n = t,
 
                r = t.parentNode;
 
            e = new be(e);
 
            for (var i = 0, a = e.length; a > i; i++) {
 
                var o = e[i];
 
                r.insertBefore(o, n.nextSibling), n = o
 
            }
 
        },
 
        addClass: je,
 
        removeClass: Ee,
 
        toggleClass: function(t, e, n) {
 
            e && a(e.split(" "), function(e) {
 
                var r = n;
 
                g(r) && (r = !Oe(t, e)), (r ? je : Ee)(t, e)
 
            })
 
        },
 
        parent: function(t) {
 
            var e = t.parentNode;
 
            return e && e.nodeType !== wi ? e : null
 
        },
 
        next: function(t) {
 
            return t.nextElementSibling
 
        },
 
        find: function(t, e) {
 
            return t.getElementsByTagName ? t.getElementsByTagName(e) : []
 
        },
 
        clone: we,
 
        triggerHandler: function(t, e, n) {
 
            var r, i, o, s = e.type || e,
 
                u = Ce(t),
 
                l = u && u.events,
 
                c = l && l[s];
 
            c && (r = {
 
                preventDefault: function() {
 
                    this.defaultPrevented = !0
 
                },
 
                isDefaultPrevented: function() {
 
                    return this.defaultPrevented === !0
 
                },
 
                stopImmediatePropagation: function() {
 
                    this.immediatePropagationStopped = !0
 
                },
 
                isImmediatePropagationStopped: function() {
 
                    return this.immediatePropagationStopped === !0
 
                },
 
                stopPropagation: p,
 
                type: s,
 
                target: t
 
            }, e.type && (r = f(r, e)), i = R(c), o = n ? [r].concat(n) : [r], a(i, function(e) {
 
                r.isImmediatePropagationStopped() || e.apply(t, o)
 
            }))
 
        }
 
    }, function(t, e) {
 
        be.prototype[e] = function(e, n, r) {
 
            for (var i, a = 0, o = this.length; o > a; a++) g(i) ? (i = t(this[a], e, n, r), v(i) && (i = Qr(i))) : Ne(i, t(this[a], e, n, r));
 
            return v(i) ? i : this
 
        }, be.prototype.bind = be.prototype.on, be.prototype.unbind = be.prototype.off
 
    }), Le.prototype = {
 
        put: function(t, e) {
 
            this[Ue(t, this.nextUid)] = e
 
        },
 
        get: function(t) {
 
            return this[Ue(t, this.nextUid)]
 
        },
 
        remove: function(t) {
 
            var e = this[t = Ue(t, this.nextUid)];
 
            return delete this[t], e
 
        }
 
    };
 
    var Ui = /^function\s*[^\(]*\(\s*([^\)]*)\)/m,
 
        Li = /,/,
 
        Fi = /^\s*(_?)(\S+?)\1\s*$/,
 
        Hi = /((\/\/.*$)|(\/\*[\s\S]*?\*\/))/gm,
 
        Bi = r("$injector");
 
    Be.$$annotate = He;
 
    var zi = r("$animate"),
 
        Gi = ["$provide", function(t) {
 
            this.$$selectors = {}, this.register = function(e, n) {
 
                var r = e + "-animation";
 
                if (e && "." != e.charAt(0)) throw zi("notcsel", "Expecting class selector starting with '.' got '{0}'.", e);
 
                this.$$selectors[e.substr(1)] = r, t.factory(r, n)
 
            }, this.classNameFilter = function(t) {
 
                return 1 === arguments.length && (this.$$classNameFilter = t instanceof RegExp ? t : null), this.$$classNameFilter
 
            }, this.$get = ["$$q", "$$asyncCallback", "$rootScope", function(t, e, n) {
 
                function r(e) {
 
                    var r, i = t.defer();
 
                    return i.promise.$$cancelFn = function() {
 
                        r && r()
 
                    }, n.$$postDigest(function() {
 
                        r = e(function() {
 
                            i.resolve()
 
                        })
 
                    }), i.promise
 
                }
 
 
                function i(t, e) {
 
                    var n = [],
 
                        r = [],
 
                        i = le();
 
                    return a((t.attr("class") || "").split(/\s+/), function(t) {
 
                        i[t] = !0
 
                    }), a(e, function(t, e) {
 
                        var a = i[e];
 
                        t === !1 && a ? r.push(e) : t !== !0 || a || n.push(e)
 
                    }), n.length + r.length > 0 && [n.length ? n : null, r.length ? r : null]
 
                }
 
 
                function o(t, e, n) {
 
                    for (var r = 0, i = e.length; i > r; ++r) {
 
                        var a = e[r];
 
                        t[a] = n
 
                    }
 
                }
 
 
                function s() {
 
                    return l || (l = t.defer(), e(function() {
 
                        l.resolve(), l = null
 
                    })), l.promise
 
                }
 
 
                function u(t, e) {
 
                    if (si.isObject(e)) {
 
                        var n = f(e.from || {}, e.to || {});
 
                        t.css(n)
 
                    }
 
                }
 
                var l;
 
                return {
 
                    animate: function(t, e, n) {
 
                        return u(t, {
 
                            from: e,
 
                            to: n
 
                        }), s()
 
                    },
 
                    enter: function(t, e, n, r) {
 
                        return u(t, r), n ? n.after(t) : e.prepend(t), s()
 
                    },
 
                    leave: function(t) {
 
                        return t.remove(), s()
 
                    },
 
                    move: function(t, e, n, r) {
 
                        return this.enter(t, e, n, r)
 
                    },
 
                    addClass: function(t, e, n) {
 
                        return this.setClass(t, e, [], n)
 
                    },
 
                    $$addClassImmediately: function(t, e, n) {
 
                        return t = Qr(t), e = b(e) ? e : ci(e) ? e.join(" ") : "", a(t, function(t) {
 
                            je(t, e)
 
                        }), u(t, n), s()
 
                    },
 
                    removeClass: function(t, e, n) {
 
                        return this.setClass(t, [], e, n)
 
                    },
 
                    $$removeClassImmediately: function(t, e, n) {
 
                        return t = Qr(t), e = b(e) ? e : ci(e) ? e.join(" ") : "", a(t, function(t) {
 
                            Ee(t, e)
 
                        }), u(t, n), s()
 
                    },
 
                    setClass: function(t, e, n, a) {
 
                        var s = this,
 
                            u = "$$animateClasses",
 
                            l = !1;
 
                        t = Qr(t);
 
                        var c = t.data(u);
 
                        c ? a && c.options && (c.options = si.extend(c.options || {}, a)) : (c = {
 
                            classes: {},
 
                            options: a
 
                        }, l = !0);
 
                        var f = c.classes;
 
                        return e = ci(e) ? e : e.split(" "), n = ci(n) ? n : n.split(" "), o(f, e, !0), o(f, n, !1), l && (c.promise = r(function(e) {
 
                            var n = t.data(u);
 
                            if (t.removeData(u), n) {
 
                                var r = i(t, n.classes);
 
                                r && s.$$setClassImmediately(t, r[0], r[1], n.options)
 
                            }
 
                            e()
 
                        }), t.data(u, c)), c.promise
 
                    },
 
                    $$setClassImmediately: function(t, e, n, r) {
 
                        return e && this.$$addClassImmediately(t, e), n && this.$$removeClassImmediately(t, n), u(t, r), s()
 
                    },
 
                    enabled: p,
 
                    cancel: p
 
                }
 
            }]
 
        }],
 
        Wi = r("$compile");
 
    Ke.$inject = ["$provide", "$$sanitizeUriProvider"];
 
    var Ji = /^((?:x|data)[\:\-_])/i,
 
        Yi = r("$controller"),
 
        Zi = "application/json",
 
        Ki = {
 
            "Content-Type": Zi + ";charset=utf-8"
 
        },
 
        Xi = /^\[|^\{(?!\{)/,
 
        Qi = {
 
            "[": /]$/,
 
            "{": /}$/
 
        },
 
        ta = /^\)\]\}',?\n/,
 
        ea = r("$interpolate"),
 
        na = /^([^\?#]*)(\?([^#]*))?(#(.*))?$/,
 
        ra = {
 
            http: 80,
 
            https: 443,
 
            ftp: 21
 
        },
 
        ia = r("$location"),
 
        aa = {
 
            $$html5: !1,
 
            $$replace: !1,
 
            absUrl: jn("$$absUrl"),
 
            url: function(t) {
 
                if (g(t)) return this.$$url;
 
                var e = na.exec(t);
 
                return (e[1] || "" === t) && this.path(decodeURIComponent(e[1])), (e[2] || e[1] || "" === t) && this.search(e[3] || ""), this.hash(e[5] || ""), this
 
            },
 
            protocol: jn("$$protocol"),
 
            host: jn("$$host"),
 
            port: jn("$$port"),
 
            path: Nn("$$path", function(t) {
 
                return t = null !== t ? t.toString() : "", "/" == t.charAt(0) ? t : "/" + t
 
            }),
 
            search: function(t, e) {
 
                switch (arguments.length) {
 
                    case 0:
 
                        return this.$$search;
 
                    case 1:
 
                        if (b(t) || w(t)) t = t.toString(), this.$$search = W(t);
 
                        else {
 
                            if (!y(t)) throw ia("isrcharg", "The first argument of the `$location#search()` call must be a string or an object.");
 
                            t = D(t, {}), a(t, function(e, n) {
 
                                null == e && delete t[n]
 
                            }), this.$$search = t
 
                        }
 
                        break;
 
                    default:
 
                        g(e) || null === e ? delete this.$$search[t] : this.$$search[t] = e
 
                }
 
                return this.$$compose(), this
 
            },
 
            hash: Nn("$$hash", function(t) {
 
                return null !== t ? t.toString() : ""
 
            }),
 
            replace: function() {
 
                return this.$$replace = !0, this
 
            }
 
        };
 
    a([En, On, An], function(t) {
 
        t.prototype = Object.create(aa), t.prototype.state = function(e) {
 
            if (!arguments.length) return this.$$state;
 
            if (t !== An || !this.$$html5) throw ia("nostate", "History API state support is available only in HTML5 mode and only in browsers supporting HTML5 History API");
 
            return this.$$state = g(e) ? null : e, this
 
        }
 
    });
 
    var oa = r("$parse"),
 
        sa = Function.prototype.call,
 
        ua = Function.prototype.apply,
 
        la = Function.prototype.bind,
 
        ca = le();
 
    a({
 
        "null": function() {
 
            return null
 
        },
 
        "true": function() {
 
            return !0
 
        },
 
        "false": function() {
 
            return !1
 
        },
 
        undefined: function() {}
 
    }, function(t, e) {
 
        t.constant = t.literal = t.sharedGetter = !0, ca[e] = t
 
    }), ca["this"] = function(t) {
 
        return t
 
    }, ca["this"].sharedGetter = !0;
 
    var fa = f(le(), {
 
            "+": function(t, e, r, i) {
 
                return r = r(t, e), i = i(t, e), v(r) ? v(i) ? r + i : r : v(i) ? i : n
 
            },
 
            "-": function(t, e, n, r) {
 
                return n = n(t, e), r = r(t, e), (v(n) ? n : 0) - (v(r) ? r : 0)
 
            },
 
            "*": function(t, e, n, r) {
 
                return n(t, e) * r(t, e)
 
            },
 
            "/": function(t, e, n, r) {
 
                return n(t, e) / r(t, e)
 
            },
 
            "%": function(t, e, n, r) {
 
                return n(t, e) % r(t, e)
 
            },
 
            "===": function(t, e, n, r) {
 
                return n(t, e) === r(t, e)
 
            },
 
            "!==": function(t, e, n, r) {
 
                return n(t, e) !== r(t, e)
 
            },
 
            "==": function(t, e, n, r) {
 
                return n(t, e) == r(t, e)
 
            },
 
            "!=": function(t, e, n, r) {
 
                return n(t, e) != r(t, e)
 
            },
 
            "<": function(t, e, n, r) {
 
                return n(t, e) < r(t, e)
 
            },
 
            ">": function(t, e, n, r) {
 
                return n(t, e) > r(t, e)
 
            },
 
            "<=": function(t, e, n, r) {
 
                return n(t, e) <= r(t, e)
 
            },
 
            ">=": function(t, e, n, r) {
 
                return n(t, e) >= r(t, e)
 
            },
 
            "&&": function(t, e, n, r) {
 
                return n(t, e) && r(t, e)
 
            },
 
            "||": function(t, e, n, r) {
 
                return n(t, e) || r(t, e)
 
            },
 
            "!": function(t, e, n) {
 
                return !n(t, e)
 
            },
 
            "=": !0,
 
            "|": !0
 
        }),
 
        da = {
 
            n: "\n",
 
            f: "\f",
 
            r: "\r",
 
            t: " ",
 
            v: "�",
 
            "'": "'",
 
            '"': '"'
 
        },
 
        ha = function(t) {
 
            this.options = t
 
        };
 
    ha.prototype = {
 
        constructor: ha,
 
        lex: function(t) {
 
            for (this.text = t, this.index = 0, this.tokens = []; this.index < this.text.length;) {
 
                var e = this.text.charAt(this.index);
 
                if ('"' === e || "'" === e) this.readString(e);
 
                else if (this.isNumber(e) || "." === e && this.isNumber(this.peek())) this.readNumber();
 
                else if (this.isIdent(e)) this.readIdent();
 
                else if (this.is(e, "(){}[].,;:?")) this.tokens.push({
 
                    index: this.index,
 
                    text: e
 
                }), this.index++;
 
                else if (this.isWhitespace(e)) this.index++;
 
                else {
 
                    var n = e + this.peek(),
 
                        r = n + this.peek(2),
 
                        i = fa[e],
 
                        a = fa[n],
 
                        o = fa[r];
 
                    if (i || a || o) {
 
                        var s = o ? r : a ? n : e;
 
                        this.tokens.push({
 
                            index: this.index,
 
                            text: s,
 
                            operator: !0
 
                        }), this.index += s.length
 
                    } else this.throwError("Unexpected next character ", this.index, this.index + 1)
 
                }
 
            }
 
            return this.tokens
 
        },
 
        is: function(t, e) {
 
            return -1 !== e.indexOf(t)
 
        },
 
        peek: function(t) {
 
            var e = t || 1;
 
            return this.index + e < this.text.length ? this.text.charAt(this.index + e) : !1
 
        },
 
        isNumber: function(t) {
 
            return t >= "0" && "9" >= t && "string" == typeof t
 
        },
 
        isWhitespace: function(t) {
 
            return " " === t || "\r" === t || " " === t || "\n" === t || "�" === t || " " === t
 
        },
 
        isIdent: function(t) {
 
            return t >= "a" && "z" >= t || t >= "A" && "Z" >= t || "_" === t || "$" === t
 
        },
 
        isExpOperator: function(t) {
 
            return "-" === t || "+" === t || this.isNumber(t)
 
        },
 
        throwError: function(t, e, n) {
 
            n = n || this.index;
 
            var r = v(e) ? "s " + e + "-" + this.index + " [" + this.text.substring(e, n) + "]" : " " + n;
 
            throw oa("lexerr", "Lexer Error: {0} at column{1} in expression [{2}].", t, r, this.text)
 
        },
 
        readNumber: function() {
 
            for (var t = "", e = this.index; this.index < this.text.length;) {
 
                var n = Wr(this.text.charAt(this.index));
 
                if ("." == n || this.isNumber(n)) t += n;
 
                else {
 
                    var r = this.peek();
 
                    if ("e" == n && this.isExpOperator(r)) t += n;
 
                    else if (this.isExpOperator(n) && r && this.isNumber(r) && "e" == t.charAt(t.length - 1)) t += n;
 
                    else {
 
                        if (!this.isExpOperator(n) || r && this.isNumber(r) || "e" != t.charAt(t.length - 1)) break;
 
                        this.throwError("Invalid exponent")
 
                    }
 
                }
 
                this.index++
 
            }
 
            this.tokens.push({
 
                index: e,
 
                text: t,
 
                constant: !0,
 
                value: Number(t)
 
            })
 
        },
 
        readIdent: function() {
 
            for (var t = this.index; this.index < this.text.length;) {
 
                var e = this.text.charAt(this.index);
 
                if (!this.isIdent(e) && !this.isNumber(e)) break;
 
                this.index++
 
            }
 
            this.tokens.push({
 
                index: t,
 
                text: this.text.slice(t, this.index),
 
                identifier: !0
 
            })
 
        },
 
        readString: function(t) {
 
            var e = this.index;
 
            this.index++;
 
            for (var n = "", r = t, i = !1; this.index < this.text.length;) {
 
                var a = this.text.charAt(this.index);
 
                if (r += a, i) {
 
                    if ("u" === a) {
 
                        var o = this.text.substring(this.index + 1, this.index + 5);
 
                        o.match(/[\da-f]{4}/i) || this.throwError("Invalid unicode escape [\\u" + o + "]"), this.index += 4, n += String.fromCharCode(parseInt(o, 16))
 
                    } else {
 
                        var s = da[a];
 
                        n += s || a
 
                    }
 
                    i = !1
 
                } else if ("\\" === a) i = !0;
 
                else {
 
                    if (a === t) return this.index++, this.tokens.push({
 
                        index: e,
 
                        text: r,
 
                        constant: !0,
 
                        value: n
 
                    }), void 0;
 
                    n += a
 
                }
 
                this.index++
 
            }
 
            this.throwError("Unterminated quote", e)
 
        }
 
    };
 
    var pa = function(t, e, n) {
 
        this.lexer = t, this.$filter = e, this.options = n
 
    };
 
    pa.ZERO = f(function() {
 
        return 0
 
    }, {
 
        sharedGetter: !0,
 
        constant: !0
 
    }), pa.prototype = {
 
        constructor: pa,
 
        parse: function(t) {
 
            this.text = t, this.tokens = this.lexer.lex(t);
 
            var e = this.statements();
 
            return 0 !== this.tokens.length && this.throwError("is an unexpected token", this.tokens[0]), e.literal = !!e.literal, e.constant = !!e.constant, e
 
        },
 
        primary: function() {
 
            var t;
 
            this.expect("(") ? (t = this.filterChain(), this.consume(")")) : this.expect("[") ? t = this.arrayDeclaration() : this.expect("{") ? t = this.object() : this.peek().identifier && this.peek().text in ca ? t = ca[this.consume().text] : this.peek().identifier ? t = this.identifier() : this.peek().constant ? t = this.constant() : this.throwError("not a primary expression", this.peek());
 
            for (var e, n; e = this.expect("(", "[", ".");) "(" === e.text ? (t = this.functionCall(t, n), n = null) : "[" === e.text ? (n = t, t = this.objectIndex(t)) : "." === e.text ? (n = t, t = this.fieldAccess(t)) : this.throwError("IMPOSSIBLE");
 
            return t
 
        },
 
        throwError: function(t, e) {
 
            throw oa("syntax", "Syntax Error: Token '{0}' {1} at column {2} of the expression [{3}] starting at [{4}].", e.text, t, e.index + 1, this.text, this.text.substring(e.index))
 
        },
 
        peekToken: function() {
 
            if (0 === this.tokens.length) throw oa("ueoe", "Unexpected end of expression: {0}", this.text);
 
            return this.tokens[0]
 
        },
 
        peek: function(t, e, n, r) {
 
            return this.peekAhead(0, t, e, n, r)
 
        },
 
        peekAhead: function(t, e, n, r, i) {
 
            if (this.tokens.length > t) {
 
                var a = this.tokens[t],
 
                    o = a.text;
 
                if (o === e || o === n || o === r || o === i || !e && !n && !r && !i) return a
 
            }
 
            return !1
 
        },
 
        expect: function(t, e, n, r) {
 
            var i = this.peek(t, e, n, r);
 
            return i ? (this.tokens.shift(), i) : !1
 
        },
 
        consume: function(t) {
 
            if (0 === this.tokens.length) throw oa("ueoe", "Unexpected end of expression: {0}", this.text);
 
            var e = this.expect(t);
 
            return e || this.throwError("is unexpected, expecting [" + t + "]", this.peek()), e
 
        },
 
        unaryFn: function(t, e) {
 
            var n = fa[t];
 
            return f(function(t, r) {
 
                return n(t, r, e)
 
            }, {
 
                constant: e.constant,
 
                inputs: [e]
 
            })
 
        },
 
        binaryFn: function(t, e, n, r) {
 
            var i = fa[e];
 
            return f(function(e, r) {
 
                return i(e, r, t, n)
 
            }, {
 
                constant: t.constant && n.constant,
 
                inputs: !r && [t, n]
 
            })
 
        },
 
        identifier: function() {
 
            for (var t = this.consume().text; this.peek(".") && this.peekAhead(1).identifier && !this.peekAhead(2, "(");) t += this.consume().text + this.consume().text;
 
            return Ln(t, this.options, this.text)
 
        },
 
        constant: function() {
 
            var t = this.consume().value;
 
            return f(function() {
 
                return t
 
            }, {
 
                constant: !0,
 
                literal: !0
 
            })
 
        },
 
        statements: function() {
 
            for (var t = [];;)
 
                if (this.tokens.length > 0 && !this.peek("}", ")", ";", "]") && t.push(this.filterChain()), !this.expect(";")) return 1 === t.length ? t[0] : function(e, n) {
 
                    for (var r, i = 0, a = t.length; a > i; i++) r = t[i](e, n);
 
                    return r
 
                }
 
        },
 
        filterChain: function() {
 
            for (var t, e = this.expression(); t = this.expect("|");) e = this.filter(e);
 
            return e
 
        },
 
        filter: function(t) {
 
            var e, r, i = this.$filter(this.consume().text);
 
            if (this.peek(":"))
 
                for (e = [], r = []; this.expect(":");) e.push(this.expression());
 
            var a = [t].concat(e || []);
 
            return f(function(a, o) {
 
                var s = t(a, o);
 
                if (r) {
 
                    r[0] = s;
 
                    for (var u = e.length; u--;) r[u + 1] = e[u](a, o);
 
                    return i.apply(n, r)
 
                }
 
                return i(s)
 
            }, {
 
                constant: !i.$stateful && a.every(Dn),
 
                inputs: !i.$stateful && a
 
            })
 
        },
 
        expression: function() {
 
            return this.assignment()
 
        },
 
        assignment: function() {
 
            var t, e, n = this.ternary();
 
            return (e = this.expect("=")) ? (n.assign || this.throwError("implies assignment but [" + this.text.substring(0, e.index) + "] can not be assigned to", e), t = this.ternary(), f(function(e, r) {
 
                return n.assign(e, t(e, r), r)
 
            }, {
 
                inputs: [n, t]
 
            })) : n
 
        },
 
        ternary: function() {
 
            var t, e, n = this.logicalOR();
 
            if ((e = this.expect("?")) && (t = this.assignment(), this.consume(":"))) {
 
                var r = this.assignment();
 
                return f(function(e, i) {
 
                    return n(e, i) ? t(e, i) : r(e, i)
 
                }, {
 
                    constant: n.constant && t.constant && r.constant
 
                })
 
            }
 
            return n
 
        },
 
        logicalOR: function() {
 
            for (var t, e = this.logicalAND(); t = this.expect("||");) e = this.binaryFn(e, t.text, this.logicalAND(), !0);
 
            return e
 
        },
 
        logicalAND: function() {
 
            for (var t, e = this.equality(); t = this.expect("&&");) e = this.binaryFn(e, t.text, this.equality(), !0);
 
            return e
 
        },
 
        equality: function() {
 
            for (var t, e = this.relational(); t = this.expect("==", "!=", "===", "!==");) e = this.binaryFn(e, t.text, this.relational());
 
            return e
 
        },
 
        relational: function() {
 
            for (var t, e = this.additive(); t = this.expect("<", ">", "<=", ">=");) e = this.binaryFn(e, t.text, this.additive());
 
            return e
 
        },
 
        additive: function() {
 
            for (var t, e = this.multiplicative(); t = this.expect("+", "-");) e = this.binaryFn(e, t.text, this.multiplicative());
 
            return e
 
        },
 
        multiplicative: function() {
 
            for (var t, e = this.unary(); t = this.expect("*", "/", "%");) e = this.binaryFn(e, t.text, this.unary());
 
            return e
 
        },
 
        unary: function() {
 
            var t;
 
            return this.expect("+") ? this.primary() : (t = this.expect("-")) ? this.binaryFn(pa.ZERO, t.text, this.unary()) : (t = this.expect("!")) ? this.unaryFn(t.text, this.unary()) : this.primary()
 
        },
 
        fieldAccess: function(t) {
 
            var e = this.identifier();
 
            return f(function(r, i, a) {
 
                var o = a || t(r, i);
 
                return null == o ? n : e(o)
 
            }, {
 
                assign: function(n, r, i) {
 
                    var a = t(n, i);
 
                    return a || t.assign(n, a = {}, i), e.assign(a, r)
 
                }
 
            })
 
        },
 
        objectIndex: function(t) {
 
            var e = this.text,
 
                r = this.expression();
 
            return this.consume("]"), f(function(i, a) {
 
                var o, s = t(i, a),
 
                    u = r(i, a);
 
                return Pn(u, e), s ? o = Vn(s[u], e) : n
 
            }, {
 
                assign: function(n, i, a) {
 
                    var o = Pn(r(n, a), e),
 
                        s = Vn(t(n, a), e);
 
                    return s || t.assign(n, s = {}, a), s[o] = i
 
                }
 
            })
 
        },
 
        functionCall: function(t, e) {
 
            var r = [];
 
            if (")" !== this.peekToken().text)
 
                do r.push(this.expression()); while (this.expect(","));
 
            this.consume(")");
 
            var i = this.text,
 
                a = r.length ? [] : null;
 
            return function(o, s) {
 
                var u = e ? e(o, s) : v(e) ? n : o,
 
                    l = t(o, s, u) || p;
 
                if (a)
 
                    for (var c = r.length; c--;) a[c] = Vn(r[c](o, s), i);
 
                Vn(u, i), qn(l, i);
 
                var f = l.apply ? l.apply(u, a) : l(a[0], a[1], a[2], a[3], a[4]);
 
                return a && (a.length = 0), Vn(f, i)
 
            }
 
        },
 
        arrayDeclaration: function() {
 
            var t = [];
 
            if ("]" !== this.peekToken().text)
 
                do {
 
                    if (this.peek("]")) break;
 
                    t.push(this.expression())
 
                } while (this.expect(","));
 
            return this.consume("]"), f(function(e, n) {
 
                for (var r = [], i = 0, a = t.length; a > i; i++) r.push(t[i](e, n));
 
                return r
 
            }, {
 
                literal: !0,
 
                constant: t.every(Dn),
 
                inputs: t
 
            })
 
        },
 
        object: function() {
 
            var t = [],
 
                e = [];
 
            if ("}" !== this.peekToken().text)
 
                do {
 
                    if (this.peek("}")) break;
 
                    var n = this.consume();
 
                    n.constant ? t.push(n.value) : n.identifier ? t.push(n.text) : this.throwError("invalid key", n), this.consume(":"), e.push(this.expression())
 
                } while (this.expect(","));
 
            return this.consume("}"), f(function(n, r) {
 
                for (var i = {}, a = 0, o = e.length; o > a; a++) i[t[a]] = e[a](n, r);
 
                return i
 
            }, {
 
                literal: !0,
 
                constant: e.every(Dn),
 
                inputs: e
 
            })
 
        }
 
    };
 
    var $a = le(),
 
        ma = le(),
 
        ga = Object.prototype.valueOf,
 
        va = r("$sce"),
 
        ya = {
 
            HTML: "html",
 
            CSS: "css",
 
            URL: "url",
 
            RESOURCE_URL: "resourceUrl",
 
            JS: "js"
 
        },
 
        Wi = r("$compile"),
 
        ba = e.createElement("a"),
 
        wa = ir(t.location.href);
 
    sr.$inject = ["$provide"], fr.$inject = ["$locale"], dr.$inject = ["$locale"];
 
    var xa = ".",
 
        ka = {
 
            yyyy: $r("FullYear", 4),
 
            yy: $r("FullYear", 2, 0, !0),
 
            y: $r("FullYear", 1),
 
            MMMM: mr("Month"),
 
            MMM: mr("Month", !0),
 
            MM: $r("Month", 2, 1),
 
            M: $r("Month", 1, 1),
 
            dd: $r("Date", 2),
 
            d: $r("Date", 1),
 
            HH: $r("Hours", 2),
 
            H: $r("Hours", 1),
 
            hh: $r("Hours", 2, -12),
 
            h: $r("Hours", 1, -12),
 
            mm: $r("Minutes", 2),
 
            m: $r("Minutes", 1),
 
            ss: $r("Seconds", 2),
 
            s: $r("Seconds", 1),
 
            sss: $r("Milliseconds", 3),
 
            EEEE: mr("Day"),
 
            EEE: mr("Day", !0),
 
            a: wr,
 
            Z: gr,
 
            ww: br(2),
 
            w: br(1)
 
        },
 
        Sa = /((?:[^yMdHhmsaZEw']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|d+|H+|h+|m+|s+|a|Z|w+))(.*)/,
 
        Ca = /^\-?\d+$/;
 
    xr.$inject = ["$locale"];
 
    var Aa = m(Wr),
 
        Oa = m(Yr);
 
    Cr.$inject = ["$parse"];
 
    var Ea = m({
 
            restrict: "E",
 
            compile: function(t, e) {
 
                return e.href || e.xlinkHref || e.name ? void 0 : function(t, e) {
 
                    if ("a" === e[0].nodeName.toLowerCase()) {
 
                        var n = "[object SVGAnimatedString]" === ai.call(e.prop("href")) ? "xlink:href" : "href";
 
                        e.on("click", function(t) {
 
                            e.attr(n) || t.preventDefault()
 
                        })
 
                    }
 
                }
 
            }
 
        }),
 
        ja = {};
 
    a(Ri, function(t, e) {
 
        if ("multiple" != t) {
 
            var n = Xe("ng-" + e);
 
            ja[n] = function() {
 
                return {
 
                    restrict: "A",
 
                    priority: 100,
 
                    link: function(t, r, i) {
 
                        t.$watch(i[n], function(t) {
 
                            i.$set(e, !!t)
 
                        })
 
                    }
 
                }
 
            }
 
        }
 
    }), a(_i, function(t, e) {
 
        ja[e] = function() {
 
            return {
 
                priority: 100,
 
                link: function(t, n, r) {
 
                    if ("ngPattern" === e && "/" == r.ngPattern.charAt(0)) {
 
                        var i = r.ngPattern.match(zr);
 
                        if (i) return r.$set("ngPattern", new RegExp(i[1], i[2])), void 0
 
                    }
 
                    t.$watch(r[e], function(t) {
 
                        r.$set(e, t)
 
                    })
 
                }
 
            }
 
        }
 
    }), a(["src", "srcset", "href"], function(t) {
 
        var e = Xe("ng-" + t);
 
        ja[e] = function() {
 
            return {
 
                priority: 99,
 
                link: function(n, r, i) {
 
                    var a = t,
 
                        o = t;
 
                    "href" === t && "[object SVGAnimatedString]" === ai.call(r.prop("href")) && (o = "xlinkHref", i.$attr[o] = "xlink:href", a = null), i.$observe(e, function(e) {
 
                        return e ? (i.$set(o, e), Xr && a && r.prop(a, i[o]), void 0) : ("href" === t && i.$set(o, null), void 0)
 
                    })
 
                }
 
            }
 
        }
 
    });
 
    var Na = {
 
            $addControl: p,
 
            $$renameControl: Or,
 
            $removeControl: p,
 
            $setValidity: p,
 
            $setDirty: p,
 
            $setPristine: p,
 
            $setSubmitted: p
 
        },
 
        Ta = "ng-submitted";
 
    Er.$inject = ["$element", "$attrs", "$scope", "$animate", "$interpolate"];
 
    var Ma = function(t) {
 
            return ["$timeout", function(e) {
 
                var r = {
 
                    name: "form",
 
                    restrict: t ? "EAC" : "E",
 
                    controller: Er,
 
                    compile: function(t) {
 
                        return t.addClass(ho).addClass(co), {
 
                            pre: function(t, r, i, a) {
 
                                if (!("action" in i)) {
 
                                    var o = function(e) {
 
                                        t.$apply(function() {
 
                                            a.$commitViewValue(), a.$setSubmitted()
 
                                        }), e.preventDefault()
 
                                    };
 
                                    Ci(r[0], "submit", o), r.on("$destroy", function() {
 
                                        e(function() {
 
                                            Ai(r[0], "submit", o)
 
                                        }, 0, !1)
 
                                    })
 
                                }
 
                                var s = a.$$parentForm,
 
                                    u = a.$name;
 
                                u && (Rn(t, null, u, a, u), i.$observe(i.name ? "name" : "ngForm", function(e) {
 
                                    u !== e && (Rn(t, null, u, n, u), u = e, Rn(t, null, u, a, u), s.$$renameControl(a, u))
 
                                })), r.on("$destroy", function() {
 
                                    s.$removeControl(a), u && Rn(t, null, u, n, u), f(a, Na)
 
                                })
 
                            }
 
                        }
 
                    }
 
                };
 
                return r
 
            }]
 
        },
 
        Pa = Ma(),
 
        Va = Ma(!0),
 
        qa = /\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z)/,
 
        Da = /^(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?$/,
 
        Ra = /^[a-z0-9!#$%&'*+\/=?^_`{|}~.-]+@[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/i,
 
        Ia = /^\s*(\-|\+)?(\d+|(\d*(\.\d*)))\s*$/,
 
        _a = /^(\d{4})-(\d{2})-(\d{2})$/,
 
        Ua = /^(\d{4})-(\d\d)-(\d\d)T(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/,
 
        La = /^(\d{4})-W(\d\d)$/,
 
        Fa = /^(\d{4})-(\d\d)$/,
 
        Ha = /^(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/,
 
        Ba = {
 
            text: Nr,
 
            date: Vr("date", _a, Pr(_a, ["yyyy", "MM", "dd"]), "yyyy-MM-dd"),
 
            "datetime-local": Vr("datetimelocal", Ua, Pr(Ua, ["yyyy", "MM", "dd", "HH", "mm", "ss", "sss"]), "yyyy-MM-ddTHH:mm:ss.sss"),
 
            time: Vr("time", Ha, Pr(Ha, ["HH", "mm", "ss", "sss"]), "HH:mm:ss.sss"),
 
            week: Vr("week", La, Mr, "yyyy-Www"),
 
            month: Vr("month", Fa, Pr(Fa, ["yyyy", "MM"]), "yyyy-MM"),
 
            number: Dr,
 
            url: Rr,
 
            email: Ir,
 
            radio: _r,
 
            checkbox: Lr,
 
            hidden: p,
 
            button: p,
 
            submit: p,
 
            reset: p,
 
            file: p
 
        },
 
        za = ["$browser", "$sniffer", "$filter", "$parse", function(t, e, n, r) {
 
            return {
 
                restrict: "E",
 
                require: ["?ngModel"],
 
                link: {
 
                    pre: function(i, a, o, s) {
 
                        s[0] && (Ba[Wr(o.type)] || Ba.text)(i, a, o, s[0], e, t, n, r)
 
                    }
 
                }
 
            }
 
        }],
 
        Ga = /^(true|false|\d+)$/,
 
        Wa = function() {
 
            return {
 
                restrict: "A",
 
                priority: 100,
 
                compile: function(t, e) {
 
                    return Ga.test(e.ngValue) ? function(t, e, n) {
 
                        n.$set("value", t.$eval(n.ngValue))
 
                    } : function(t, e, n) {
 
                        t.$watch(n.ngValue, function(t) {
 
                            n.$set("value", t)
 
                        })
 
                    }
 
                }
 
            }
 
        },
 
        Ja = ["$compile", function(t) {
 
            return {
 
                restrict: "AC",
 
                compile: function(e) {
 
                    return t.$$addBindingClass(e),
 
                        function(e, r, i) {
 
                            t.$$addBindingInfo(r, i.ngBind), r = r[0], e.$watch(i.ngBind, function(t) {
 
                                r.textContent = t === n ? "" : t
 
                            })
 
                        }
 
                }
 
            }
 
        }],
 
        Ya = ["$interpolate", "$compile", function(t, e) {
 
            return {
 
                compile: function(r) {
 
                    return e.$$addBindingClass(r),
 
                        function(r, i, a) {
 
                            var o = t(i.attr(a.$attr.ngBindTemplate));
 
                            e.$$addBindingInfo(i, o.expressions), i = i[0], a.$observe("ngBindTemplate", function(t) {
 
                                i.textContent = t === n ? "" : t
 
                            })
 
                        }
 
                }
 
            }
 
        }],
 
        Za = ["$sce", "$parse", "$compile", function(t, e, n) {
 
            return {
 
                restrict: "A",
 
                compile: function(r, i) {
 
                    var a = e(i.ngBindHtml),
 
                        o = e(i.ngBindHtml, function(t) {
 
                            return (t || "").toString()
 
                        });
 
                    return n.$$addBindingClass(r),
 
                        function(e, r, i) {
 
                            n.$$addBindingInfo(r, i.ngBindHtml), e.$watch(o, function() {
 
                                r.html(t.getTrustedHtml(a(e)) || "")
 
                            })
 
                        }
 
                }
 
            }
 
        }],
 
        Ka = m({
 
            restrict: "A",
 
            require: "ngModel",
 
            link: function(t, e, n, r) {
 
                r.$viewChangeListeners.push(function() {
 
                    t.$eval(n.ngChange)
 
                })
 
            }
 
        }),
 
        Xa = Fr("", !0),
 
        Qa = Fr("Odd", 0),
 
        to = Fr("Even", 1),
 
        eo = Ar({
 
            compile: function(t, e) {
 
                e.$set("ngCloak", n), t.removeClass("ng-cloak")
 
            }
 
        }),
 
        no = [function() {
 
            return {
 
                restrict: "A",
 
                scope: !0,
 
                controller: "@",
 
                priority: 500
 
            }
 
        }],
 
        ro = {},
 
        io = {
 
            blur: !0,
 
            focus: !0
 
        };
 
    a("click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave keydown keyup keypress submit focus blur copy cut paste".split(" "), function(t) {
 
        var e = Xe("ng-" + t);
 
        ro[e] = ["$parse", "$rootScope", function(n, r) {
 
            return {
 
                restrict: "A",
 
                compile: function(i, a) {
 
                    var o = n(a[e], null, !0);
 
                    return function(e, n) {
 
                        n.on(t, function(n) {
 
                            var i = function() {
 
                                o(e, {
 
                                    $event: n
 
                                })
 
                            };
 
                            io[t] && r.$$phase ? e.$evalAsync(i) : e.$apply(i)
 
                        })
 
                    }
 
                }
 
            }
 
        }]
 
    });
 
    var ao = ["$animate", function(t) {
 
            return {
 
                multiElement: !0,
 
                transclude: "element",
 
                priority: 600,
 
                terminal: !0,
 
                restrict: "A",
 
                $$tlb: !0,
 
                link: function(n, r, i, a, o) {
 
                    var s, u, l;
 
                    n.$watch(i.ngIf, function(n) {
 
                        n ? u || o(function(n, a) {
 
                            u = a, n[n.length++] = e.createComment(" end ngIf: " + i.ngIf + " "), s = {
 
                                clone: n
 
                            }, t.enter(n, r.parent(), r)
 
                        }) : (l && (l.remove(), l = null), u && (u.$destroy(), u = null), s && (l = ue(s.clone), t.leave(l).then(function() {
 
                            l = null
 
                        }), s = null))
 
                    })
 
                }
 
            }
 
        }],
 
        oo = ["$templateRequest", "$anchorScroll", "$animate", "$sce", function(t, e, n, r) {
 
            return {
 
                restrict: "ECA",
 
                priority: 400,
 
                terminal: !0,
 
                transclude: "element",
 
                controller: si.noop,
 
                compile: function(i, a) {
 
                    var o = a.ngInclude || a.src,
 
                        s = a.onload || "",
 
                        u = a.autoscroll;
 
                    return function(i, a, l, c, f) {
 
                        var d, h, p, $ = 0,
 
                            m = function() {
 
                                h && (h.remove(), h = null), d && (d.$destroy(), d = null), p && (n.leave(p).then(function() {
 
                                    h = null
 
                                }), h = p, p = null)
 
                            };
 
                        i.$watch(r.parseAsResourceUrl(o), function(r) {
 
                            var o = function() {
 
                                    !v(u) || u && !i.$eval(u) || e()
 
                                },
 
                                l = ++$;
 
                            r ? (t(r, !0).then(function(t) {
 
                                if (l === $) {
 
                                    var e = i.$new();
 
                                    c.template = t;
 
                                    var u = f(e, function(t) {
 
                                        m(), n.enter(t, null, a).then(o)
 
                                    });
 
                                    d = e, p = u, d.$emit("$includeContentLoaded", r), i.$eval(s)
 
                                }
 
                            }, function() {
 
                                l === $ && (m(), i.$emit("$includeContentError", r))
 
                            }), i.$emit("$includeContentRequested", r)) : (m(), c.template = null)
 
                        })
 
                    }
 
                }
 
            }
 
        }],
 
        so = ["$compile", function(t) {
 
            return {
 
                restrict: "ECA",
 
                priority: -400,
 
                require: "ngInclude",
 
                link: function(n, r, i, a) {
 
                    return /SVG/.test(r[0].toString()) ? (r.empty(), t(ve(a.template, e).childNodes)(n, function(t) {
 
                        r.append(t)
 
                    }, {
 
                        futureParentElement: r
 
                    }), void 0) : (r.html(a.template), t(r.contents())(n), void 0)
 
                }
 
            }
 
        }],
 
        uo = Ar({
 
            priority: 450,
 
            compile: function() {
 
                return {
 
                    pre: function(t, e, n) {
 
                        t.$eval(n.ngInit)
 
                    }
 
                }
 
            }
 
        }),
 
        lo = function() {
 
            return {
 
                restrict: "A",
 
                priority: 100,
 
                require: "ngModel",
 
                link: function(t, e, r, i) {
 
                    var o = e.attr(r.$attr.ngList) || ", ",
 
                        s = "false" !== r.ngTrim,
 
                        u = s ? fi(o) : o,
 
                        l = function(t) {
 
                            if (!g(t)) {
 
                                var e = [];
 
                                return t && a(t.split(u), function(t) {
 
                                    t && e.push(s ? fi(t) : t)
 
                                }), e
 
                            }
 
                        };
 
                    i.$parsers.push(l), i.$formatters.push(function(t) {
 
                        return ci(t) ? t.join(o) : n
 
                    }), i.$isEmpty = function(t) {
 
                        return !t || !t.length
 
                    }
 
                }
 
            }
 
        },
 
        co = "ng-valid",
 
        fo = "ng-invalid",
 
        ho = "ng-pristine",
 
        po = "ng-dirty",
 
        $o = "ng-untouched",
 
        mo = "ng-touched",
 
        go = "ng-pending",
 
        vo = new r("ngModel"),
 
        yo = ["$scope", "$exceptionHandler", "$attrs", "$element", "$parse", "$animate", "$timeout", "$rootScope", "$q", "$interpolate", function(t, e, r, i, o, s, u, l, c, f) {
 
            this.$viewValue = Number.NaN, this.$modelValue = Number.NaN, this.$$rawModelValue = n, this.$validators = {}, this.$asyncValidators = {}, this.$parsers = [], this.$formatters = [], this.$viewChangeListeners = [], this.$untouched = !0, this.$touched = !1, this.$pristine = !0, this.$dirty = !1, this.$valid = !0, this.$invalid = !1, this.$error = {}, this.$$success = {}, this.$pending = n, this.$name = f(r.name || "", !1)(t);
 
            var d = o(r.ngModel),
 
                h = d.assign,
 
                $ = d,
 
                m = h,
 
                y = null,
 
                b = this;
 
            this.$$setOptions = function(t) {
 
                if (b.$options = t, t && t.getterSetter) {
 
                    var e = o(r.ngModel + "()"),
 
                        n = o(r.ngModel + "($$$p)");
 
                    $ = function(t) {
 
                        var n = d(t);
 
                        return k(n) && (n = e(t)), n
 
                    }, m = function(t) {
 
                        k(d(t)) ? n(t, {
 
                            $$$p: b.$modelValue
 
                        }) : h(t, b.$modelValue)
 
                    }
 
                } else if (!d.assign) throw vo("nonassign", "Expression '{0}' is non-assignable. Element: {1}", r.ngModel, z(i))
 
            }, this.$render = p, this.$isEmpty = function(t) {
 
                return g(t) || "" === t || null === t || t !== t
 
            };
 
            var x = i.inheritedData("$formController") || Na,
 
                S = 0;
 
            Hr({
 
                ctrl: this,
 
                $element: i,
 
                set: function(t, e) {
 
                    t[e] = !0
 
                },
 
                unset: function(t, e) {
 
                    delete t[e]
 
                },
 
                parentForm: x,
 
                $animate: s
 
            }), this.$setPristine = function() {
 
                b.$dirty = !1, b.$pristine = !0, s.removeClass(i, po), s.addClass(i, ho)
 
            }, this.$setDirty = function() {
 
                b.$dirty = !0, b.$pristine = !1, s.removeClass(i, ho), s.addClass(i, po), x.$setDirty()
 
            }, this.$setUntouched = function() {
 
                b.$touched = !1, b.$untouched = !0, s.setClass(i, $o, mo)
 
            }, this.$setTouched = function() {
 
                b.$touched = !0, b.$untouched = !1, s.setClass(i, mo, $o)
 
            }, this.$rollbackViewValue = function() {
 
                u.cancel(y), b.$viewValue = b.$$lastCommittedViewValue, b.$render()
 
            }, this.$validate = function() {
 
                if (!w(b.$modelValue) || !isNaN(b.$modelValue)) {
 
                    var t = b.$$lastCommittedViewValue,
 
                        e = b.$$rawModelValue,
 
                        r = b.$$parserName || "parse",
 
                        i = b.$error[r] ? !1 : n,
 
                        a = b.$valid,
 
                        o = b.$modelValue,
 
                        s = b.$options && b.$options.allowInvalid;
 
                    b.$$runValidators(i, e, t, function(t) {
 
                        s || a === t || (b.$modelValue = t ? e : n, b.$modelValue !== o && b.$$writeModelToScope())
 
                    })
 
                }
 
            }, this.$$runValidators = function(t, e, r, i) {
 
                function o(t) {
 
                    var e = b.$$parserName || "parse";
 
                    if (t === n) l(e, null);
 
                    else if (l(e, t), !t) return a(b.$validators, function(t, e) {
 
                        l(e, null)
 
                    }), a(b.$asyncValidators, function(t, e) {
 
                        l(e, null)
 
                    }), !1;
 
                    return !0
 
                }
 
 
                function s() {
 
                    var t = !0;
 
                    return a(b.$validators, function(n, i) {
 
                        var a = n(e, r);
 
                        t = t && a, l(i, a)
 
                    }), t ? !0 : (a(b.$asyncValidators, function(t, e) {
 
                        l(e, null)
 
                    }), !1)
 
                }
 
 
                function u() {
 
                    var t = [],
 
                        i = !0;
 
                    a(b.$asyncValidators, function(a, o) {
 
                        var s = a(e, r);
 
                        if (!T(s)) throw vo("$asyncValidators", "Expected asynchronous validator to return a promise but got '{0}' instead.", s);
 
                        l(o, n), t.push(s.then(function() {
 
                            l(o, !0)
 
                        }, function() {
 
                            i = !1, l(o, !1)
 
                        }))
 
                    }), t.length ? c.all(t).then(function() {
 
                        f(i)
 
                    }, p) : f(!0)
 
                }
 
 
                function l(t, e) {
 
                    d === S && b.$setValidity(t, e)
 
                }
 
 
                function f(t) {
 
                    d === S && i(t)
 
                }
 
                S++;
 
                var d = S;
 
                return o(t) ? s() ? (u(), void 0) : (f(!1), void 0) : (f(!1), void 0)
 
            }, this.$commitViewValue = function() {
 
                var t = b.$viewValue;
 
                u.cancel(y), (b.$$lastCommittedViewValue !== t || "" === t && b.$$hasNativeValidators) && (b.$$lastCommittedViewValue = t, b.$pristine && this.$setDirty(), this.$$parseAndValidate())
 
            }, this.$$parseAndValidate = function() {
 
                function e() {
 
                    b.$modelValue !== s && b.$$writeModelToScope()
 
                }
 
                var r = b.$$lastCommittedViewValue,
 
                    i = r,
 
                    a = g(i) ? n : !0;
 
                if (a)
 
                    for (var o = 0; o < b.$parsers.length; o++)
 
                        if (i = b.$parsers[o](i), g(i)) {
 
                            a = !1;
 
                            break
 
                        }
 
                w(b.$modelValue) && isNaN(b.$modelValue) && (b.$modelValue = $(t));
 
                var s = b.$modelValue,
 
                    u = b.$options && b.$options.allowInvalid;
 
                b.$$rawModelValue = i, u && (b.$modelValue = i, e()), b.$$runValidators(a, i, b.$$lastCommittedViewValue, function(t) {
 
                    u || (b.$modelValue = t ? i : n, e())
 
                })
 
            }, this.$$writeModelToScope = function() {
 
                m(t, b.$modelValue), a(b.$viewChangeListeners, function(t) {
 
                    try {
 
                        t()
 
                    } catch (n) {
 
                        e(n)
 
                    }
 
                })
 
            }, this.$setViewValue = function(t, e) {
 
                b.$viewValue = t, (!b.$options || b.$options.updateOnDefault) && b.$$debounceViewValueCommit(e)
 
            }, this.$$debounceViewValueCommit = function(e) {
 
                var n, r = 0,
 
                    i = b.$options;
 
                i && v(i.debounce) && (n = i.debounce, w(n) ? r = n : w(n[e]) ? r = n[e] : w(n["default"]) && (r = n["default"])), u.cancel(y), r ? y = u(function() {
 
                    b.$commitViewValue()
 
                }, r) : l.$$phase ? b.$commitViewValue() : t.$apply(function() {
 
                    b.$commitViewValue()
 
                })
 
            }, t.$watch(function() {
 
                var e = $(t);
 
                if (e !== b.$modelValue) {
 
                    b.$modelValue = b.$$rawModelValue = e;
 
                    for (var r = b.$formatters, i = r.length, a = e; i--;) a = r[i](a);
 
                    b.$viewValue !== a && (b.$viewValue = b.$$lastCommittedViewValue = a, b.$render(), b.$$runValidators(n, e, a, p))
 
                }
 
                return e
 
            })
 
        }],
 
        bo = ["$rootScope", function(t) {
 
            return {
 
                restrict: "A",
 
                require: ["ngModel", "^?form", "^?ngModelOptions"],
 
                controller: yo,
 
                priority: 1,
 
                compile: function(e) {
 
                    return e.addClass(ho).addClass($o).addClass(co), {
 
                        pre: function(t, e, n, r) {
 
                            var i = r[0],
 
                                a = r[1] || Na;
 
                            i.$$setOptions(r[2] && r[2].$options), a.$addControl(i), n.$observe("name", function(t) {
 
                                i.$name !== t && a.$$renameControl(i, t)
 
                            }), t.$on("$destroy", function() {
 
                                a.$removeControl(i)
 
                            })
 
                        },
 
                        post: function(e, n, r, i) {
 
                            var a = i[0];
 
                            a.$options && a.$options.updateOn && n.on(a.$options.updateOn, function(t) {
 
                                a.$$debounceViewValueCommit(t && t.type)
 
                            }), n.on("blur", function() {
 
                                a.$touched || (t.$$phase ? e.$evalAsync(a.$setTouched) : e.$apply(a.$setTouched))
 
                            })
 
                        }
 
                    }
 
                }
 
            }
 
        }],
 
        wo = /(\s+|^)default(\s+|$)/,
 
        xo = function() {
 
            return {
 
                restrict: "A",
 
                controller: ["$scope", "$attrs", function(t, e) {
 
                    var r = this;
 
                    this.$options = t.$eval(e.ngModelOptions), this.$options.updateOn !== n ? (this.$options.updateOnDefault = !1, this.$options.updateOn = fi(this.$options.updateOn.replace(wo, function() {
 
                        return r.$options.updateOnDefault = !0, " "
 
                    }))) : this.$options.updateOnDefault = !0
 
                }]
 
            }
 
        },
 
        ko = Ar({
 
            terminal: !0,
 
            priority: 1e3
 
        }),
 
        So = ["$locale", "$interpolate", function(t, e) {
 
            var n = /{}/g,
 
                r = /^when(Minus)?(.+)$/;
 
            return {
 
                restrict: "EA",
 
                link: function(i, o, s) {
 
                    function u(t) {
 
                        o.text(t || "")
 
                    }
 
                    var l, c = s.count,
 
                        f = s.$attr.when && o.attr(s.$attr.when),
 
                        d = s.offset || 0,
 
                        h = i.$eval(f) || {},
 
                        p = {},
 
                        $ = e.startSymbol(),
 
                        m = e.endSymbol(),
 
                        g = $ + c + "-" + d + m,
 
                        v = si.noop;
 
                    a(s, function(t, e) {
 
                        var n = r.exec(e);
 
                        if (n) {
 
                            var i = (n[1] ? "-" : "") + Wr(n[2]);
 
                            h[i] = o.attr(s.$attr[e])
 
                        }
 
                    }), a(h, function(t, r) {
 
                        p[r] = e(t.replace(n, g))
 
                    }), i.$watch(c, function(e) {
 
                        var n = parseFloat(e),
 
                            r = isNaN(n);
 
                        r || n in h || (n = t.pluralCat(n - d)), n === l || r && isNaN(l) || (v(), v = i.$watch(p[n], u), l = n)
 
                    })
 
                }
 
            }
 
        }],
 
        Co = ["$parse", "$animate", function(t, o) {
 
            var s = "$$NG_REMOVED",
 
                u = r("ngRepeat"),
 
                l = function(t, e, n, r, i, a, o) {
 
                    t[n] = r, i && (t[i] = a), t.$index = e, t.$first = 0 === e, t.$last = e === o - 1, t.$middle = !(t.$first || t.$last), t.$odd = !(t.$even = 0 === (1 & e))
 
                },
 
                c = function(t) {
 
                    return t.clone[0]
 
                },
 
                f = function(t) {
 
                    return t.clone[t.clone.length - 1]
 
                };
 
            return {
 
                restrict: "A",
 
                multiElement: !0,
 
                transclude: "element",
 
                priority: 1e3,
 
                terminal: !0,
 
                $$tlb: !0,
 
                compile: function(r, d) {
 
                    var h = d.ngRepeat,
 
                        p = e.createComment(" end ngRepeat: " + h + " "),
 
                        $ = h.match(/^\s*([\s\S]+?)\s+in\s+([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+track\s+by\s+([\s\S]+?))?\s*$/);
 
                    if (!$) throw u("iexp", "Expected expression in form of '_item_ in _collection_[ track by _id_]' but got '{0}'.", h);
 
                    var m = $[1],
 
                        g = $[2],
 
                        v = $[3],
 
                        y = $[4];
 
                    if ($ = m.match(/^(?:(\s*[\$\w]+)|\(\s*([\$\w]+)\s*,\s*([\$\w]+)\s*\))$/), !$) throw u("iidexp", "'_item_' in '_item_ in _collection_' should be an identifier or '(_key_, _value_)' expression, but got '{0}'.", m);
 
                    var b = $[3] || $[1],
 
                        w = $[2];
 
                    if (v && (!/^[$a-zA-Z_][$a-zA-Z0-9_]*$/.test(v) || /^(null|undefined|this|\$index|\$first|\$middle|\$last|\$even|\$odd|\$parent|\$root|\$id)$/.test(v))) throw u("badident", "alias '{0}' is invalid --- must be a valid JS identifier which is not a reserved name.", v);
 
                    var x, k, S, C, A = {
 
                        $id: Ue
 
                    };
 
                    return y ? x = t(y) : (S = function(t, e) {
 
                            return Ue(e)
 
                        }, C = function(t) {
 
                            return t
 
                        }),
 
                        function(t, e, r, d, $) {
 
                            x && (k = function(e, n, r) {
 
                                return w && (A[w] = e), A[b] = n, A.$index = r, x(t, A)
 
                            });
 
                            var m = le();
 
                            t.$watchCollection(g, function(r) {
 
                                var d, g, y, x, A, O, E, j, N, T, M, P, V = e[0],
 
                                    q = le();
 
                                if (v && (t[v] = r), i(r)) N = r, j = k || S;
 
                                else {
 
                                    j = k || C, N = [];
 
                                    for (var D in r) r.hasOwnProperty(D) && "$" != D.charAt(0) && N.push(D);
 
                                    N.sort()
 
                                }
 
                                for (x = N.length, M = new Array(x), d = 0; x > d; d++)
 
                                    if (A = r === N ? d : N[d], O = r[A], E = j(A, O, d), m[E]) T = m[E], delete m[E], q[E] = T, M[d] = T;
 
                                    else {
 
                                        if (q[E]) throw a(M, function(t) {
 
                                            t && t.scope && (m[t.id] = t)
 
                                        }), u("dupes", "Duplicates in a repeater are not allowed. Use 'track by' expression to specify unique keys. Repeater: {0}, Duplicate key: {1}, Duplicate value: {2}", h, E, O);
 
                                        M[d] = {
 
                                            id: E,
 
                                            scope: n,
 
                                            clone: n
 
                                        }, q[E] = !0
 
                                    }
 
                                for (var R in m) {
 
                                    if (T = m[R], P = ue(T.clone), o.leave(P), P[0].parentNode)
 
                                        for (d = 0, g = P.length; g > d; d++) P[d][s] = !0;
 
                                    T.scope.$destroy()
 
                                }
 
                                for (d = 0; x > d; d++)
 
                                    if (A = r === N ? d : N[d], O = r[A], T = M[d], T.scope) {
 
                                        y = V;
 
                                        do y = y.nextSibling; while (y && y[s]);
 
                                        c(T) != y && o.move(ue(T.clone), null, Qr(V)), V = f(T), l(T.scope, d, b, O, w, A, x)
 
                                    } else $(function(t, e) {
 
                                        T.scope = e;
 
                                        var n = p.cloneNode(!1);
 
                                        t[t.length++] = n, o.enter(t, null, Qr(V)), V = n, T.clone = t, q[T.id] = T, l(T.scope, d, b, O, w, A, x)
 
                                    });
 
                                m = q
 
                            })
 
                        }
 
                }
 
            }
 
        }],
 
        Ao = "ng-hide",
 
        Oo = "ng-hide-animate",
 
        Eo = ["$animate", function(t) {
 
            return {
 
                restrict: "A",
 
                multiElement: !0,
 
                link: function(e, n, r) {
 
                    e.$watch(r.ngShow, function(e) {
 
                        t[e ? "removeClass" : "addClass"](n, Ao, {
 
                            tempClasses: Oo
 
                        })
 
                    })
 
                }
 
            }
 
        }],
 
        jo = ["$animate", function(t) {
 
            return {
 
                restrict: "A",
 
                multiElement: !0,
 
                link: function(e, n, r) {
 
                    e.$watch(r.ngHide, function(e) {
 
                        t[e ? "addClass" : "removeClass"](n, Ao, {
 
                            tempClasses: Oo
 
                        })
 
                    })
 
                }
 
            }
 
        }],
 
        No = Ar(function(t, e, n) {
 
            t.$watchCollection(n.ngStyle, function(t, n) {
 
                n && t !== n && a(n, function(t, n) {
 
                    e.css(n, "")
 
                }), t && e.css(t)
 
            })
 
        }),
 
        To = ["$animate", function(t) {
 
            return {
 
                restrict: "EA",
 
                require: "ngSwitch",
 
                controller: ["$scope", function() {
 
                    this.cases = {}
 
                }],
 
                link: function(n, r, i, o) {
 
                    var s = i.ngSwitch || i.on,
 
                        u = [],
 
                        l = [],
 
                        c = [],
 
                        f = [],
 
                        d = function(t, e) {
 
                            return function() {
 
                                t.splice(e, 1)
 
                            }
 
                        };
 
                    n.$watch(s, function(n) {
 
                        var r, i;
 
                        for (r = 0, i = c.length; i > r; ++r) t.cancel(c[r]);
 
                        for (c.length = 0, r = 0, i = f.length; i > r; ++r) {
 
                            var s = ue(l[r].clone);
 
                            f[r].$destroy();
 
                            var h = c[r] = t.leave(s);
 
                            h.then(d(c, r))
 
                        }
 
                        l.length = 0, f.length = 0, (u = o.cases["!" + n] || o.cases["?"]) && a(u, function(n) {
 
                            n.transclude(function(r, i) {
 
                                f.push(i);
 
                                var a = n.element;
 
                                r[r.length++] = e.createComment(" end ngSwitchWhen: ");
 
                                var o = {
 
                                    clone: r
 
                                };
 
                                l.push(o), t.enter(r, a.parent(), a)
 
                            })
 
                        })
 
                    })
 
                }
 
            }
 
        }],
 
        Mo = Ar({
 
            transclude: "element",
 
            priority: 1200,
 
            require: "^ngSwitch",
 
            multiElement: !0,
 
            link: function(t, e, n, r, i) {
 
                r.cases["!" + n.ngSwitchWhen] = r.cases["!" + n.ngSwitchWhen] || [], r.cases["!" + n.ngSwitchWhen].push({
 
                    transclude: i,
 
                    element: e
 
                })
 
            }
 
        }),
 
        Po = Ar({
 
            transclude: "element",
 
            priority: 1200,
 
            require: "^ngSwitch",
 
            multiElement: !0,
 
            link: function(t, e, n, r, i) {
 
                r.cases["?"] = r.cases["?"] || [], r.cases["?"].push({
 
                    transclude: i,
 
                    element: e
 
                })
 
            }
 
        }),
 
        Vo = Ar({
 
            restrict: "EAC",
 
            link: function(t, e, n, i, a) {
 
                if (!a) throw r("ngTransclude")("orphan", "Illegal use of ngTransclude directive in the template! No parent directive that requires a transclusion found. Element: {0}", z(e));
 
                a(function(t) {
 
                    e.empty(), e.append(t)
 
                })
 
            }
 
        }),
 
        qo = ["$templateCache", function(t) {
 
            return {
 
                restrict: "E",
 
                terminal: !0,
 
                compile: function(e, n) {
 
                    if ("text/ng-template" == n.type) {
 
                        var r = n.id,
 
                            i = e[0].text;
 
                        t.put(r, i)
 
                    }
 
                }
 
            }
 
        }],
 
        Do = r("ngOptions"),
 
        Ro = m({
 
            restrict: "A",
 
            terminal: !0
 
        }),
 
        Io = ["$compile", "$parse", function(t, r) {
 
            var i = /^\s*([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+group\s+by\s+([\s\S]+?))?\s+for\s+(?:([\$\w][\$\w]*)|(?:\(\s*([\$\w][\$\w]*)\s*,\s*([\$\w][\$\w]*)\s*\)))\s+in\s+([\s\S]+?)(?:\s+track\s+by\s+([\s\S]+?))?$/,
 
                s = {
 
                    $setViewValue: p
 
                };
 
            return {
 
                restrict: "E",
 
                require: ["select", "?ngModel"],
 
                controller: ["$element", "$scope", "$attrs", function(t, e, n) {
 
                    var r, i, a = this,
 
                        o = {},
 
                        u = s;
 
                    a.databound = n.ngModel, a.init = function(t, e, n) {
 
                        u = t, r = e, i = n
 
                    }, a.addOption = function(e, n) {
 
                        oe(e, '"option value"'), o[e] = !0, u.$viewValue == e && (t.val(e), i.parent() && i.remove()), n && n[0].hasAttribute("selected") && (n[0].selected = !0)
 
                    }, a.removeOption = function(t) {
 
                        this.hasOption(t) && (delete o[t], u.$viewValue === t && this.renderUnknownOption(t))
 
                    }, a.renderUnknownOption = function(e) {
 
                        var n = "? " + Ue(e) + " ?";
 
                        i.val(n), t.prepend(i), t.val(n), i.prop("selected", !0)
 
                    }, a.hasOption = function(t) {
 
                        return o.hasOwnProperty(t)
 
                    }, e.$on("$destroy", function() {
 
                        a.renderUnknownOption = p
 
                    })
 
                }],
 
                link: function(s, u, l, c) {
 
                    function f(t, e, n, r) {
 
                        n.$render = function() {
 
                            var t = n.$viewValue;
 
                            r.hasOption(t) ? (C.parent() && C.remove(), e.val(t), "" === t && p.prop("selected", !0)) : g(t) && p ? e.val("") : r.renderUnknownOption(t)
 
                        }, e.on("change", function() {
 
                            t.$apply(function() {
 
                                C.parent() && C.remove(), n.$setViewValue(e.val())
 
                            })
 
                        })
 
                    }
 
 
                    function d(t, e, n) {
 
                        var r;
 
                        n.$render = function() {
 
                            var t = new Le(n.$viewValue);
 
                            a(e.find("option"), function(e) {
 
                                e.selected = v(t.get(e.value))
 
                            })
 
                        }, t.$watch(function() {
 
                            I(r, n.$viewValue) || (r = R(n.$viewValue), n.$render())
 
                        }), e.on("change", function() {
 
                            t.$apply(function() {
 
                                var t = [];
 
                                a(e.find("option"), function(e) {
 
                                    e.selected && t.push(e.value)
 
                                }), n.$setViewValue(t)
 
                            })
 
                        })
 
                    }
 
 
                    function h(e, s, u) {
 
                        function l(t, n, r) {
 
                            return I[O] = r, N && (I[N] = n), t(e, I)
 
                        }
 
 
                        function c() {
 
                            e.$apply(function() {
 
                                var t, n = P(e) || [];
 
                                if (y) t = [], a(s.val(), function(e) {
 
                                    e = q ? D[e] : e, t.push(f(e, n[e]))
 
                                });
 
                                else {
 
                                    var r = q ? D[s.val()] : s.val();
 
                                    t = f(r, n[r])
 
                                }
 
                                u.$setViewValue(t), g()
 
                            })
 
                        }
 
 
                        function f(t, e) {
 
                            if ("?" === t) return n;
 
                            if ("" === t) return null;
 
                            var r = j ? j : M;
 
                            return l(r, t, e)
 
                        }
 
 
                        function d() {
 
                            var t, n = P(e);
 
                            if (n && ci(n)) {
 
                                t = new Array(n.length);
 
                                for (var r = 0, i = n.length; i > r; r++) t[r] = l(A, r, n[r]);
 
                                return t
 
                            }
 
                            if (n) {
 
                                t = {};
 
                                for (var a in n) n.hasOwnProperty(a) && (t[a] = l(A, a, n[a]))
 
                            }
 
                            return t
 
                        }
 
 
                        function h(t) {
 
                            var e;
 
                            if (y)
 
                                if (q && ci(t)) {
 
                                    e = new Le([]);
 
                                    for (var n = 0; n < t.length; n++) e.put(l(q, null, t[n]), !0)
 
                                } else e = new Le(t);
 
                            else q && (t = l(q, null, t));
 
                            return function(n, r) {
 
                                var i;
 
                                return i = q ? q : j ? j : M, y ? v(e.remove(l(i, n, r))) : t === l(i, n, r)
 
                            }
 
                        }
 
 
                        function p() {
 
                            x || (e.$$postDigest(g), x = !0)
 
                        }
 
 
                        function m(t, e, n) {
 
                            t[e] = t[e] || 0, t[e] += n ? 1 : -1
 
                        }
 
 
                        function g() {
 
                            x = !1;
 
                            var t, n, r, i, c, f, d, p, g, b, C, O, E, j, M, V, _, U = {
 
                                    "": []
 
                                },
 
                                L = [""],
 
                                F = u.$viewValue,
 
                                H = P(e) || [],
 
                                B = N ? o(H) : H,
 
                                z = {},
 
                                G = h(F),
 
                                W = !1;
 
                            for (D = {}, O = 0; b = B.length, b > O; O++) d = O, N && (d = B[O], "$" === d.charAt(0)) || (p = H[d], t = l(T, d, p) || "", (n = U[t]) || (n = U[t] = [], L.push(t)), E = G(d, p), W = W || E, V = l(A, d, p), V = v(V) ? V : "", _ = q ? q(e, I) : N ? B[O] : O, q && (D[_] = d), n.push({
 
                                id: _,
 
                                label: V,
 
                                selected: E
 
                            }));
 
                            for (y || (w || null === F ? U[""].unshift({
 
                                    id: "",
 
                                    label: "",
 
                                    selected: !W
 
                                }) : W || U[""].unshift({
 
                                    id: "?",
 
                                    label: "",
 
                                    selected: !0
 
                                })), C = 0, g = L.length; g > C; C++) {
 
                                for (t = L[C], n = U[t], R.length <= C ? (i = {
 
                                        element: S.clone().attr("label", t),
 
                                        label: n.label
 
                                    }, c = [i], R.push(c), s.append(i.element)) : (c = R[C], i = c[0], i.label != t && i.element.attr("label", i.label = t)), j = null, O = 0, b = n.length; b > O; O++) r = n[O], (f = c[O + 1]) ? (j = f.element, f.label !== r.label && (m(z, f.label, !1), m(z, r.label, !0), j.text(f.label = r.label), j.prop("label", f.label)), f.id !== r.id && j.val(f.id = r.id), j[0].selected !== r.selected && (j.prop("selected", f.selected = r.selected), Xr && j.prop("selected", f.selected))) : ("" === r.id && w ? M = w : (M = k.clone()).val(r.id).prop("selected", r.selected).attr("selected", r.selected).prop("label", r.label).text(r.label), c.push(f = {
 
                                    element: M,
 
                                    label: r.label,
 
                                    id: r.id,
 
                                    selected: r.selected
 
                                }), m(z, r.label, !0), j ? j.after(M) : i.element.append(M), j = M);
 
                                for (O++; c.length > O;) r = c.pop(), m(z, r.label, !1), r.element.remove()
 
                            }
 
                            for (; R.length > C;) {
 
                                for (n = R.pop(), O = 1; O < n.length; ++O) m(z, n[O].label, !1);
 
                                n[0].element.remove()
 
                            }
 
                            a(z, function(t, e) {
 
                                t > 0 ? $.addOption(e) : 0 > t && $.removeOption(e)
 
                            })
 
                        }
 
                        var C;
 
                        if (!(C = b.match(i))) throw Do("iexp", "Expected expression in form of '_select_ (as _label_)? for (_key_,)?_value_ in _collection_' but got '{0}'. Element: {1}", b, z(s));
 
                        var A = r(C[2] || C[1]),
 
                            O = C[4] || C[6],
 
                            E = / as /.test(C[0]) && C[1],
 
                            j = E ? r(E) : null,
 
                            N = C[5],
 
                            T = r(C[3] || ""),
 
                            M = r(C[2] ? C[1] : O),
 
                            P = r(C[7]),
 
                            V = C[8],
 
                            q = V ? r(C[8]) : null,
 
                            D = {},
 
                            R = [
 
                                [{
 
                                    element: s,
 
                                    label: ""
 
                                }]
 
                            ],
 
                            I = {};
 
                        w && (t(w)(e), w.removeClass("ng-scope"), w.remove()), s.empty(), s.on("change", c), u.$render = g, e.$watchCollection(P, p), e.$watchCollection(d, p), y && e.$watchCollection(function() {
 
                            return u.$modelValue
 
                        }, p)
 
                    }
 
                    if (c[1]) {
 
                        for (var p, $ = c[0], m = c[1], y = l.multiple, b = l.ngOptions, w = !1, x = !1, k = Qr(e.createElement("option")), S = Qr(e.createElement("optgroup")), C = k.clone(), A = 0, O = u.children(), E = O.length; E > A; A++)
 
                            if ("" === O[A].value) {
 
                                p = w = O.eq(A);
 
                                break
 
                            }
 
                        $.init(m, w, C), y && (m.$isEmpty = function(t) {
 
                            return !t || 0 === t.length
 
                        }), b ? h(s, u, m) : y ? d(s, u, m) : f(s, u, m, $)
 
                    }
 
                }
 
            }
 
        }],
 
        _o = ["$interpolate", function(t) {
 
            var e = {
 
                addOption: p,
 
                removeOption: p
 
            };
 
            return {
 
                restrict: "E",
 
                priority: 100,
 
                compile: function(n, r) {
 
                    if (g(r.value)) {
 
                        var i = t(n.text(), !0);
 
                        i || r.$set("value", n.text())
 
                    }
 
                    return function(t, n, r) {
 
                        var a = "$selectController",
 
                            o = n.parent(),
 
                            s = o.data(a) || o.parent().data(a);
 
                        s && s.databound || (s = e), i ? t.$watch(i, function(t, e) {
 
                            r.$set("value", t), e !== t && s.removeOption(e), s.addOption(t, n)
 
                        }) : s.addOption(r.value, n), n.on("$destroy", function() {
 
                            s.removeOption(r.value)
 
                        })
 
                    }
 
                }
 
            }
 
        }],
 
        Uo = m({
 
            restrict: "E",
 
            terminal: !1
 
        }),
 
        Lo = function() {
 
            return {
 
                restrict: "A",
 
                require: "?ngModel",
 
                link: function(t, e, n, r) {
 
                    r && (n.required = !0, r.$validators.required = function(t, e) {
 
                        return !n.required || !r.$isEmpty(e)
 
                    }, n.$observe("required", function() {
 
                        r.$validate()
 
                    }))
 
                }
 
            }
 
        },
 
        Fo = function() {
 
            return {
 
                restrict: "A",
 
                require: "?ngModel",
 
                link: function(t, e, i, a) {
 
                    if (a) {
 
                        var o, s = i.ngPattern || i.pattern;
 
                        i.$observe("pattern", function(t) {
 
                            if (b(t) && t.length > 0 && (t = new RegExp("^" + t + "$")), t && !t.test) throw r("ngPattern")("noregexp", "Expected {0} to be a RegExp but was {1}. Element: {2}", s, t, z(e));
 
                            o = t || n, a.$validate()
 
                        }), a.$validators.pattern = function(t) {
 
                            return a.$isEmpty(t) || g(o) || o.test(t)
 
                        }
 
                    }
 
                }
 
            }
 
        },
 
        Ho = function() {
 
            return {
 
                restrict: "A",
 
                require: "?ngModel",
 
                link: function(t, e, n, r) {
 
                    if (r) {
 
                        var i = -1;
 
                        n.$observe("maxlength", function(t) {
 
                            var e = d(t);
 
                            i = isNaN(e) ? -1 : e, r.$validate()
 
                        }), r.$validators.maxlength = function(t, e) {
 
                            return 0 > i || r.$isEmpty(e) || e.length <= i
 
                        }
 
                    }
 
                }
 
            }
 
        },
 
        Bo = function() {
 
            return {
 
                restrict: "A",
 
                require: "?ngModel",
 
                link: function(t, e, n, r) {
 
                    if (r) {
 
                        var i = 0;
 
                        n.$observe("minlength", function(t) {
 
                            i = d(t) || 0, r.$validate()
 
                        }), r.$validators.minlength = function(t, e) {
 
                            return r.$isEmpty(e) || e.length >= i
 
                        }
 
                    }
 
                }
 
            }
 
        };
 
    return t.angular.bootstrap ? (console.log("WARNING: Tried to load angular more than once."), void 0) : (re(), he(si), Qr(e).ready(function() {
 
        X(e, Q)
 
    }), void 0)
 
}(window, document), !window.angular.$$csp() && window.angular.element(document).find("head").prepend('<style type="text/css">@charset "UTF-8";[ng\\:cloak],[ng-cloak],[data-ng-cloak],[x-ng-cloak],.ng-cloak,.x-ng-cloak,.ng-hide:not(.ng-hide-animate){display:none !important;}ng\\:form{display:block;}</style>'), angular.module("app", ["angularplasmid"]),
 
    function() {
 
        "use strict";
 
        angular.module("angularplasmid.services", []).factory("SVGUtil", function() {
 
            function t(t, e) {
 
                var n = "round";
 
                return "undefined" == typeof e || 0 === +e ? Math[n](t) : (t = +t, e = +e, isNaN(t) || "number" != typeof e || e % 1 !== 0 ? 0 / 0 : (t = t.toString().split("e"), t = Math[n](+(t[0] + "e" + (t[1] ? +t[1] - e : -e))), t = t.toString().split("e"), +(t[0] + "e" + (t[1] ? +t[1] + e : e))))
 
            }
 
 
            function e(t) {
 
                d.push(t)
 
            }
 
 
            function n(t) {
 
                var e;
 
                for (e = 0; e < d.length; e += 1)
 
                    if (d[e].id === t) return d[e]
 
            }
 
 
            function r(t, e, n, r) {
 
                var i = (r - 90) * Math.PI / 180;
 
                return {
 
                    x: t + n * Math.cos(i),
 
                    y: e + n * Math.sin(i)
 
                }
 
            }
 
 
            function i(t, e) {
 
                var n, r, i = ["id", "name", "class", "style", "filter", "ng-attr-style", "ng-attr-class", "ng-class"];
 
                for (r = 0; r < i.length; r += 1) n = i[r], t[0].hasAttribute(n) && (e.attr(n, t.attr(n)), t.removeAttr(n))
 
            }
 
 
            function a(t, e, n) {
 
                var r, i = "http://www.w3.org/2000/svg",
 
                    a = document.createElementNS(i, t);
 
                return n = n || [], angular.forEach(e, function(t) {
 
                    n.indexOf(t) < 0 && (r = e[t], null === r || t.match(/\$/) || "string" == typeof r && "" === r || a.setAttribute(t, r))
 
                }), a
 
            }
 
 
            function o(t) {
 
                angular.forEach(["id", "class", "style"], function(e) {
 
                    t.removeAttribute(e)
 
                })
 
            }
 
 
            function s(t, e, n, i) {
 
                var a, o, s;
 
                return t = Number(t || 0), e = Number(e || 0), n = Number(n || 0), i = Number(i || 0), a = {
 
                    start: r(t, e, n, 359.99),
 
                    end: r(t, e, n, 0)
 
                }, o = {
 
                    start: r(t, e, n + i, 359.99),
 
                    end: r(t, e, n + i, 0)
 
                }, s = ["M", a.start.x, a.start.y, "A", n, n, 0, 1, 0, a.end.x, a.end.y, "M", o.start.x, o.start.y, "A", n + i, n + i, 0, 1, 0, o.end.x, o.end.y].join(" ")
 
            }
 
 
            function u(t, e, n, i, a, o, s, u) {
 
                var l, c, f, d, h, p, $, m, g, v, y, b, w;
 
                return t = Number(t), e = Number(e), n = Number(n), i = Number(i), a = Number(a), o = Number(o), s = s || {
 
                    width: 0,
 
                    length: 0,
 
                    angle: 0
 
                }, u = u || {
 
                    width: 0,
 
                    length: 0,
 
                    angle: 0
 
                }, i === a ? (c = r(t, e, n, i), d = r(t, e, n + o, i), l = ["M", c.x, c.y, "L", d.x, d.y].join(" ")) : 1 === o ? (c = r(t, e, n, i), d = r(t, e, n, a), h = a > i ? 180 >= a - i ? "0" : "1" : 180 >= a - i ? "1" : "0", l = ["M", c.x, c.y, "A", n, n, 0, h, 1, d.x, d.y].join(" ")) : (a -= u.length < 0 ? 0 : u.length, i += s.length < 0 ? 0 : s.length, c = r(t, e, n, a), d = r(t, e, n, i), p = r(t, e, n - s.width, i + s.angle), $ = r(t, e, n + o / 2, i - s.length), m = r(t, e, n + o + s.width, i + s.angle), g = r(t, e, n + o, i), v = r(t, e, n + o + u.width, a - u.angle), y = r(t, e, n + o / 2, a + u.length), b = r(t, e, n - u.width, a - u.angle), w = r(t, e, n, a), f = r(t, e, n + o, a), h = 180 >= a - i ? "0" : "1", l = ["M", c.x, c.y, "A", n, n, 0, h, 0, d.x, d.y, "L", p.x, p.y, "L", $.x, $.y, "L", m.x, m.y, "L", g.x, g.y, "A", n + o, n + o, 0, h, 1, f.x, f.y, "L", v.x, v.y, "L", y.x, y.y, "L", b.x, b.y, "L", w.x, w.y, "z"].join(" ")), l
 
            }
 
 
            function l(e, n, r, i, a, o) {
 
                e = Number(e || 0), n = Number(n || 0), r = Number(r || 0), i = Number(i || 0), a = Number(a || 0), o = Number(o || 2);
 
                var s, u, l, c, f = Number(i) > 0 ? Number(a) / Number(i) : 0,
 
                    d = 2 * Math.PI / f,
 
                    h = -1,
 
                    p = "";
 
                for (c = 0; f > c; c += 1) s = d * c - Math.PI / 2, l = Math.cos(s), u = Math.sin(s), p += "M" + t(e + r * l, h) + "," + t(n + r * u, h) + " L" + t(e + (r + o) * l, h) + "," + t(n + (r + o) * u, h) + " ";
 
                return p = p || "M 0,0"
 
            }
 
 
            function c(e, n, r, i, a) {
 
                e = Number(e), n = Number(n), r = Number(r), i = Number(i), a = Number(a);
 
                var o, s, u, l, c = Number(i) > 0 ? Number(a) / Number(i) : 0,
 
                    f = 2 * Math.PI / c,
 
                    d = -1,
 
                    h = [];
 
                for (l = 0; c > l; l += 1) o = f * l - Math.PI / 2, u = Math.cos(o), s = Math.sin(o), h.push({
 
                    x: t(e + r * u, d),
 
                    y: t(n + r * s, d),
 
                    text: i * l
 
                });
 
                return h
 
            }
 
 
            function f(t, e) {
 
                return isNaN(t) ? e || 0 : Number(t)
 
            }
 
            var d = [],
 
                h = [],
 
                p = [];
 
            return {
 
                api: {
 
                    addPlasmid: e,
 
                    plasmids: d,
 
                    plasmid: n,
 
                    plasmidtracks: h,
 
                    trackmarkers: p
 
                },
 
                util: {
 
                    polarToCartesian: r,
 
                    swapProperties: i,
 
                    Numeric: f
 
                },
 
                svg: {
 
                    createNode: a,
 
                    removeAttributes: o,
 
                    path: {
 
                        donut: s,
 
                        arc: u,
 
                        scale: l
 
                    },
 
                    element: {
 
                        scalelabels: c
 
                    }
 
                }
 
            }
 
        })
 
    }(),
 
    function() {
 
        "use strict";
 
        angular.module("angularplasmid", ["angularplasmid.services"]).directive("plasmidapi", ["SVGUtil", function(t) {
 
            return {
 
                restrict: "AE",
 
                link: function(e, n, r) {
 
                    e[r.name] = t.api
 
                }
 
            }
 
        }]).directive("plasmid", ["SVGUtil", function() {
 
            return {
 
                restrict: "AE",
 
                type: "svg",
 
                template: '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"></svg>',
 
                replace: !0,
 
                transclude: !0,
 
                require: "plasmid",
 
                scope: {
 
                    plasmidheight: "@",
 
                    plasmidwidth: "@",
 
                    sequencelength: "@",
 
                    sequence: "@",
 
                    plasmidclass: "@",
 
                    plasmidstyle: "@"
 
                },
 
                link: {
 
                    pre: function(t, e, n, r) {
 
                        r.init(e)
 
                    },
 
                    post: function(t, e, n, r, i) {
 
                        i(t.$parent, function(t) {
 
                            e.append(t)
 
                        }), t.$watchGroup(["plasmidheight", "plasmidwidth", "sequencelength", "sequence", "plasmidclass", "plasmidstyle"], function() {
 
                            r.draw()
 
                        })
 
                    }
 
                },
 
                controller: ["$scope", "SVGUtil", function(t, e) {
 
                    var n, r, i = [];
 
                    r = this, r.elementtype = "plasmid", r.init = function(t) {
 
                        e.api.addPlasmid(r), n = t, r.id = n.attr("id")
 
                    }, r.draw = function() {
 
                        var t = r.dimensions,
 
                            e = n.plasmidclass,
 
                            a = n.plasmidstyle;
 
                        n.attr("height", t.height), n.attr("width", t.width), e && n.attr("class", e), a && n.attr("style", a), angular.forEach(i, function(t) {
 
                            t.draw()
 
                        })
 
                    }, r.addTrack = function(t) {
 
                        i.push(t)
 
                    }, Object.defineProperty(r, "center", {
 
                        get: function() {
 
                            var t = r.dimensions;
 
                            return {
 
                                x: t.width / 2,
 
                                y: t.height / 2
 
                            }
 
                        }
 
                    }), Object.defineProperty(r, "dimensions", {
 
                        get: function() {
 
                            return {
 
                                height: e.util.Numeric(t.plasmidheight, 300),
 
                                width: e.util.Numeric(t.plasmidwidth, 300)
 
                            }
 
                        }
 
                    }), Object.defineProperty(r, "sequencelength", {
 
                        get: function() {
 
                            return r.sequence ? r.sequence.length : e.util.Numeric(t.sequencelength)
 
                        }
 
                    }), Object.defineProperty(r, "sequence", {
 
                        get: function() {
 
                            return t.sequence
 
                        }
 
                    }), Object.defineProperty(r, "plasmidclass", {
 
                        get: function() {
 
                            return t.plasmidclass
 
                        }
 
                    }), Object.defineProperty(r, "plasmidstyle", {
 
                        get: function() {
 
                            return t.plasmidstyle
 
                        }
 
                    }), r.tracks = i
 
                }]
 
            }
 
        }]).directive("plasmidtrack", ["SVGUtil", "$compile", function(t, e) {
 
            return {
 
                restrict: "AE",
 
                type: "svg",
 
                template: "<g><path></path></g>",
 
                replace: !0,
 
                transclude: !0,
 
                require: ["plasmidtrack", "^plasmid"],
 
                scope: {
 
                    radius: "@",
 
                    width: "@",
 
                    trackclass: "@",
 
                    trackstyle: "@",
 
                    trackclick: "&"
 
                },
 
                link: {
 
                    pre: function(t, e, n, r) {
 
                        var i = r[0],
 
                            a = r[1],
 
                            o = angular.element(e.children()[0]);
 
                        i.init(o, a)
 
                    },
 
                    post: function(n, r, i, a, o) {
 
                        o(n.$parent, function(t) {
 
                            r.append(t)
 
                        });
 
                        var s = angular.element(r),
 
                            u = angular.element(r.children()[0]),
 
                            l = a[0];
 
                        t.util.swapProperties(s, u), u.attr("fill-rule", "evenodd"), e(u)(n.$parent), u.on("click", function(t) {
 
                            n.trackclick({
 
                                $event: t,
 
                                $track: l
 
                            })
 
                        }), n.$watchGroup(["radius", "width", "trackstyle", "trackclass"], function() {
 
                            l.draw()
 
                        })
 
                    }
 
                },
 
                controller: ["$scope", function(e) {
 
                    var n, r, i, a = [],
 
                        o = [],
 
                        s = [];
 
                    i = this, i.elementtype = "plasmidtrack", i.init = function(t, e) {
 
                        n = e, n.addTrack(i), i.plasmid = n, r = t
 
                    }, i.draw = function() {
 
                        var e = i.center,
 
                            n = t.svg.path.donut(e.x, e.y, i.radius, i.width),
 
                            u = i.trackclass,
 
                            l = i.trackstyle;
 
                        r.attr("d", n), u && r.attr("class", u), l && r.attr("style", l), angular.forEach(a, function(t) {
 
                            t.draw()
 
                        }), angular.forEach(o, function(t) {
 
                            t.draw()
 
                        }), angular.forEach(s, function(t) {
 
                            t.draw()
 
                        })
 
                    }, i.addMarker = function(t) {
 
                        a.push(t)
 
                    }, i.addScale = function(t) {
 
                        o.push(t)
 
                    }, i.addLabel = function(t) {
 
                        s.push(t)
 
                    }, i.markergroup = function(t) {
 
                        var e = [];
 
                        return angular.forEach(a, function(n) {
 
                            n.markergroup === t && e.push(n)
 
                        }), e
 
                    }, i.getPosition = function(e, r, a) {
 
                        a = Number(a || 0), e = Number(e);
 
                        var o, s, u = 1,
 
                            l = 2,
 
                            c = i.center,
 
                            f = n.sequencelength;
 
                        if (f > 0) {
 
                            switch (s = e / f * 360, r) {
 
                                case u:
 
                                    o = i.radius + a;
 
                                    break;
 
                                case l:
 
                                    o = i.radius + i.width + a;
 
                                    break;
 
                                default:
 
                                    o = i.radius + i.width / 2 + a
 
                            }
 
                            return t.util.polarToCartesian(c.x, c.y, o, s)
 
                        }
 
                    }, Object.defineProperty(i, "center", {
 
                        get: function() {
 
                            return n.center
 
                        }
 
                    }), Object.defineProperty(i, "radius", {
 
                        get: function() {
 
                            return t.util.Numeric(e.radius, 100)
 
                        }
 
                    }), Object.defineProperty(i, "width", {
 
                        get: function() {
 
                            return t.util.Numeric(e.width, 25)
 
                        }
 
                    }), Object.defineProperty(i, "trackclass", {
 
                        get: function() {
 
                            return e.trackclass
 
                        }
 
                    }), Object.defineProperty(i, "trackstyle", {
 
                        get: function() {
 
                            return e.trackstyle
 
                        }
 
                    }), i.markers = a, i.scales = o, i.labels = s
 
                }]
 
            }
 
        }]).directive("trackscale", ["SVGUtil", "$compile", function(t, e) {
 
            return {
 
                restrict: "AE",
 
                type: "svg",
 
                template: "<g><path></path><g></g></g>",
 
                replace: !0,
 
                transclude: !0,
 
                require: ["trackscale", "^plasmidtrack"],
 
                scope: {
 
                    interval: "@",
 
                    vadjust: "@",
 
                    ticksize: "@",
 
                    direction: "@",
 
                    showlabels: "@",
 
                    labelvadjust: "@",
 
                    labelclass: "@",
 
                    labelstyle: "@",
 
                    tickclass: "@",
 
                    tickstyle: "@",
 
                    scaleclick: "&"
 
                },
 
                link: {
 
                    pre: function(t, e, n, r) {
 
                        var i = r[0],
 
                            a = r[1],
 
                            o = angular.element(e.children()[0]),
 
                            s = angular.element(e.children()[1]);
 
                        i.init(o, s, a)
 
                    },
 
                    post: function(n, r, i, a, o) {
 
                        var s, u, l;
 
                        o(n.$parent, function(t) {
 
                            r.append(t)
 
                        }), s = angular.element(r), u = angular.element(r.children()[0]), t.util.swapProperties(s, u), e(u)(n.$parent), u.on("click", function(t) {
 
                            n.scaleclick({
 
                                $event: t,
 
                                $scale: l
 
                            })
 
                        }), l = a[0], n.$watchGroup(["interval", "vadjust", "ticksize", "labelvadjust", "direction", "showlabels", "labelstyle", "labelclass", "tickstyle", "tickclass"], function() {
 
                            l.draw()
 
                        })
 
                    }
 
                },
 
                controller: ["$scope", function(e) {
 
                    var n, r, i, a, o = 15,
 
                        s = 3;
 
                    r = this, r.elementtype = "trackscale", r.init = function(t, e, o) {
 
                        n = o, n.addScale(r), r.track = n, i = t, a = e
 
                    }, r.draw = function() {
 
                        var e = r.tickclass,
 
                            o = r.tickstyle,
 
                            s = n.center,
 
                            u = t.svg.path.scale(s.x, s.y, r.radius, r.interval, r.total, r.ticksize);
 
                        i.attr("d", u), e && i.attr("class", e), o && i.attr("style", o), r.showlabels ? r.drawLabel() : a.empty()
 
                    }, r.drawLabel = function() {
 
                        function i(t) {
 
                            e.scaleclick({
 
                                $event: t,
 
                                $scale: r
 
                            })
 
                        }
 
                        var o, s, u, l = n.center;
 
                        for (u = t.svg.element.scalelabels(l.x, l.y, r.labelradius, r.interval, r.total), a.empty(), o = 0; o <= u.length - 1; o += 1) s = angular.element(t.svg.createNode("text")), r.labelclass && s.attr("class", r.labelclass), r.labelstyle && s.attr("style", r.labelstyle), s.attr("x", u[o].x), s.attr("y", u[o].y), s.attr("text-anchor", "middle"), s.attr("alignment-baseline", "middle"), s.text(u[o].text), s.on("click", i), a.append(s)
 
                    }, Object.defineProperty(r, "radius", {
 
                        get: function() {
 
                            return (r.inwardflg ? n.radius : n.radius + n.width) + (r.inwardflg ? -1 : 1) * r.vadjust + (r.inwardflg ? -r.ticksize : 0)
 
                        }
 
                    }), Object.defineProperty(r, "interval", {
 
                        get: function() {
 
                            return t.util.Numeric(e.interval)
 
                        }
 
                    }), Object.defineProperty(r, "vadjust", {
 
                        get: function() {
 
                            return t.util.Numeric(e.vadjust)
 
                        }
 
                    }), Object.defineProperty(r, "ticksize", {
 
                        get: function() {
 
                            return t.util.Numeric(e.ticksize, s)
 
                        }
 
                    }), Object.defineProperty(r, "inwardflg", {
 
                        get: function() {
 
                            return "in" === e.direction ? !0 : !1
 
                        }
 
                    }), Object.defineProperty(r, "total", {
 
                        get: function() {
 
                            return n.plasmid.sequencelength
 
                        }
 
                    }), Object.defineProperty(r, "showlabels", {
 
                        get: function() {
 
                            return "1" === e.showlabels ? !0 : !1
 
                        }
 
                    }), Object.defineProperty(r, "labelvadjust", {
 
                        get: function() {
 
                            return t.util.Numeric(e.labelvadjust, o)
 
                        }
 
                    }), Object.defineProperty(r, "tickclass", {
 
                        get: function() {
 
                            return e.tickclass
 
                        }
 
                    }), Object.defineProperty(r, "tickstyle", {
 
                        get: function() {
 
                            return e.tickstyle
 
                        }
 
                    }), Object.defineProperty(r, "labelclass", {
 
                        get: function() {
 
                            return e.labelclass
 
                        }
 
                    }), Object.defineProperty(r, "labelstyle", {
 
                        get: function() {
 
                            return e.labelstyle
 
                        }
 
                    }), Object.defineProperty(r, "labelradius", {
 
                        get: function() {
 
                            return r.radius + r.labelvadjust * (r.inwardflg ? -1 : 1)
 
                        }
 
                    })
 
                }]
 
            }
 
        }]).directive("tracklabel", ["SVGUtil", function(t) {
 
            return {
 
                restrict: "AE",
 
                type: "svg",
 
                template: "<text></text>",
 
                replace: !0,
 
                transclude: !0,
 
                require: ["tracklabel", "^plasmidtrack"],
 
                scope: {
 
                    text: "@",
 
                    hadjust: "@",
 
                    vadjust: "@",
 
                    labelclass: "@",
 
                    labelstyle: "@",
 
                    labelclick: "&"
 
                },
 
                link: {
 
                    pre: function(t, e, n, r) {
 
                        var i = r[0],
 
                            a = r[1],
 
                            o = angular.element(e[0]);
 
                        i.init(o, a)
 
                    },
 
                    post: function(t, e, n, r, i) {
 
                        var a;
 
                        i(t.$parent, function(t) {
 
                            e.append(t)
 
                        }), e.attr("text-anchor", "middle"), e.attr("alignment-baseline", "middle"), e.on("click", function(e) {
 
                            t.labelclick({
 
                                $event: e,
 
                                $label: a
 
                            })
 
                        }), a = r[0], t.$watchGroup(["text", "vadjust", "hadjust", "labelstyle", "labelclass"], function() {
 
                            a.draw()
 
                        })
 
                    }
 
                },
 
                controller: ["$scope", function(e) {
 
                    var n, r, i;
 
                    r = this, r.elementtype = "tracklabel", r.init = function(t, e) {
 
                        n = e, n.addLabel(r), r.track = n, i = t
 
                    }, r.draw = function() {
 
                        var t = n.center,
 
                            e = r.labelclass,
 
                            a = r.labelstyle;
 
                        i.attr("x", t.x + r.hadjust), i.attr("y", t.y + r.vadjust), i.text(r.text), e && i.attr("class", e), a && i.attr("style", a)
 
                    }, Object.defineProperty(r, "center", {
 
                        get: function() {
 
                            return n.center
 
                        }
 
                    }), Object.defineProperty(r, "text", {
 
                        get: function() {
 
                            return e.text
 
                        }
 
                    }), Object.defineProperty(r, "labelclass", {
 
                        get: function() {
 
                            return e.labelclass
 
                        }
 
                    }), Object.defineProperty(r, "labelstyle", {
 
                        get: function() {
 
                            return e.labelstyle
 
                        }
 
                    }), Object.defineProperty(r, "hadjust", {
 
                        get: function() {
 
                            return t.util.Numeric(e.hadjust, 0)
 
                        }
 
                    }), Object.defineProperty(r, "vadjust", {
 
                        get: function() {
 
                            return t.util.Numeric(e.vadjust, 0)
 
                        }
 
                    }), Object.defineProperty(r, "dimensions", {
 
                        get: function() {
 
                            return i[0].getBBox()
 
                        }
 
                    })
 
                }]
 
            }
 
        }]).directive("trackmarker", ["SVGUtil", "$compile", function(t, e) {
 
            return {
 
                restrict: "AE",
 
                type: "svg",
 
                template: "<g><path></path></g>",
 
                replace: !0,
 
                transclude: !0,
 
                require: ["trackmarker", "^plasmidtrack"],
 
                scope: {
 
                    start: "@",
 
                    end: "@",
 
                    vadjust: "@",
 
                    wadjust: "@",
 
                    markergroup: "@",
 
                    arrowstartlength: "@",
 
                    arrowstartwidth: "@",
 
                    arrowstartangle: "@",
 
                    arrowendlength: "@",
 
                    arrowendwidth: "@",
 
                    arrowendangle: "@",
 
                    markerclass: "@",
 
                    markerstyle: "@",
 
                    markerclick: "&"
 
                },
 
                link: {
 
                    pre: function(t, e, n, r) {
 
                        var i = r[0],
 
                            a = r[1],
 
                            o = angular.element(e.children()[0]);
 
                        i.init(o, a)
 
                    },
 
                    post: function(n, r, i, a, o) {
 
                        var s, u, l = a[0];
 
                        o(n.$parent, function(t) {
 
                            r.append(t)
 
                        }), s = angular.element(r), u = angular.element(r.children()[0]), t.util.swapProperties(s, u), e(u)(n.$parent), u.on("click", function(t) {
 
                            n.markerclick({
 
                                $event: t,
 
                                $marker: l
 
                            })
 
                        }), n.$watchGroup(["start", "end", "vadjust", "wadjust", "markergroup", "markerclass", "markerstyle", "arrowstartlength", "arrowstartwidth", "arrowstartangle", "arrowendlength", "arrowendwidth", "arrowendangle"], function() {
 
                            l.draw()
 
                        })
 
                    }
 
                },
 
                controller: ["$scope", function(e) {
 
                    var n, r, i, a = [];
 
                    r = this, r.elementtype = "trackmarker", r.init = function(t, e) {
 
                        n = e, n.addMarker(r), i = t, r.track = n
 
                    }, r.draw = function() {
 
                        var t = r.markerclass,
 
                            e = r.markerstyle;
 
                        i.attr("d", r.getPath()), t && i.attr("class", t), e && i.attr("style", e), angular.forEach(a, function(t) {
 
                            t.draw()
 
                        })
 
                    }, r.addMarkerLabel = function(t) {
 
                        a.push(t)
 
                    }, r.getPath = function() {
 
                        var e = n.center,
 
                            i = r.angle,
 
                            a = r.radius;
 
                        return t.svg.path.arc(e.x, e.y, a.inner, i.start, i.end, r.width, r.arrowstart, r.arrowend)
 
                    }, r.getPosition = function(e, i, a, o) {
 
                        var s, u, l, c, f, d = "start",
 
                            h = "end",
 
                            p = "inner",
 
                            $ = "outer";
 
                        if (s = n.center, c = r.radius, f = r.angle, e = t.util.Numeric(e), i = t.util.Numeric(i), void 0 !== o && void 0 !== a) {
 
                            switch (o) {
 
                                case p:
 
                                    u = c.inner + i;
 
                                    break;
 
                                case $:
 
                                    u = c.outer + i;
 
                                    break;
 
                                default:
 
                                    u = c.middle + i
 
                            }
 
                            switch (a) {
 
                                case d:
 
                                    l = f.start + e;
 
                                    break;
 
                                case h:
 
                                    l = f.end + e;
 
                                    break;
 
                                default:
 
                                    l = f.middle + e
 
                            }
 
                            return t.util.polarToCartesian(s.x, s.y, u, l)
 
                        }
 
                        return u = {
 
                            outer: c.outer + i,
 
                            inner: c.inner + i,
 
                            middle: c.middle + i
 
                        }, l = {
 
                            begin: f.start + e,
 
                            end: f.end + e,
 
                            middle: f.middle + e
 
                        }, {
 
                            outer: {
 
                                begin: t.util.polarToCartesian(s.x, s.y, u.outer, l.begin),
 
                                middle: t.util.polarToCartesian(s.x, s.y, u.outer, l.middle),
 
                                end: t.util.polarToCartesian(s.x, s.y, u.outer, l.end)
 
                            },
 
                            middle: {
 
                                begin: t.util.polarToCartesian(s.x, s.y, u.middle, l.begin),
 
                                middle: t.util.polarToCartesian(s.x, s.y, u.middle, l.middle),
 
                                end: t.util.polarToCartesian(s.x, s.y, u.middle, l.end)
 
                            },
 
                            inner: {
 
                                begin: t.util.polarToCartesian(s.x, s.y, u.inner, l.begin),
 
                                middle: t.util.polarToCartesian(s.x, s.y, u.inner, l.middle),
 
                                end: t.util.polarToCartesian(s.x, s.y, u.inner, l.end)
 
                            }
 
                        }
 
                    }, r.fireClick = function(t) {
 
                        e.markerclick({
 
                            $event: t.$event,
 
                            $marker: t.$marker
 
                        })
 
                    }, Object.defineProperty(r, "center", {
 
                        get: function() {
 
                            return n.center
 
                        }
 
                    }), Object.defineProperty(r, "radius", {
 
                        get: function() {
 
                            return {
 
                                inner: n.radius + r.vadjust,
 
                                outer: n.radius + r.vadjust + r.width,
 
                                middle: n.radius + r.vadjust + r.width / 2
 
                            }
 
                        }
 
                    }), Object.defineProperty(r, "angle", {
 
                        get: function() {
 
                            var i, a, o, s;
 
                            return i = r.start / n.plasmid.sequencelength * 360, s = e.end || e.start, a = t.util.Numeric(s) / n.plasmid.sequencelength * 360, a += i > a ? 360 : 0, o = i + (a - i) / 2, {
 
                                start: i,
 
                                middle: o,
 
                                end: a
 
                            }
 
                        }
 
                    }), Object.defineProperty(r, "vadjust", {
 
                        get: function() {
 
                            return t.util.Numeric(e.vadjust)
 
                        }
 
                    }), Object.defineProperty(r, "wadjust", {
 
                        get: function() {
 
                            return t.util.Numeric(e.wadjust)
 
                        }
 
                    }), Object.defineProperty(r, "width", {
 
                        get: function() {
 
                            return n.width + r.wadjust
 
                        }
 
                    }), Object.defineProperty(r, "start", {
 
                        get: function() {
 
                            return t.util.Numeric(e.start)
 
                        }
 
                    }), Object.defineProperty(r, "end", {
 
                        get: function() {
 
                            return t.util.Numeric(e.end)
 
                        }
 
                    }), Object.defineProperty(r, "arrowstart", {
 
                        get: function() {
 
                            return {
 
                                width: t.util.Numeric(e.arrowstartwidth),
 
                                length: t.util.Numeric(e.arrowstartlength),
 
                                angle: t.util.Numeric(e.arrowstartangle)
 
                            }
 
                        }
 
                    }), Object.defineProperty(r, "arrowend", {
 
                        get: function() {
 
                            return {
 
                                width: t.util.Numeric(e.arrowendwidth),
 
                                length: t.util.Numeric(e.arrowendlength),
 
                                angle: t.util.Numeric(e.arrowendangle)
 
                            }
 
                        }
 
                    }), Object.defineProperty(r, "markergroup", {
 
                        get: function() {
 
                            return e.markergroup
 
                        }
 
                    }), Object.defineProperty(r, "markerclass", {
 
                        get: function() {
 
                            return e.markerclass
 
                        }
 
                    }), Object.defineProperty(r, "markerstyle", {
 
                        get: function() {
 
                            return e.markerstyle
 
                        }
 
                    }), Object.defineProperty(r, "sequence", {
 
                        get: function() {
 
                            var t = r.track.plasmid.sequence;
 
                            return r.start > r.end ? t.substring(r.start - 1, t.length - 1) + t.substring(0, r.end - 1) : t.substring(r.start - 1, r.end - 1)
 
                        }
 
                    }), r.labels = a
 
                }]
 
            }
 
        }]).directive("markerlabel", ["SVGUtil", "$compile", function(t, e) {
 
            return {
 
                restrict: "AE",
 
                type: "svg",
 
                transclude: !0,
 
                template: '<g><path></path><path id="" style="fill:none;stroke:none"></path><text></text></g>',
 
                require: ["markerlabel", "^trackmarker"],
 
                replace: !0,
 
                scope: {
 
                    text: "@",
 
                    valign: "@",
 
                    vadjust: "@",
 
                    halign: "@",
 
                    hadjust: "@",
 
                    type: "@",
 
                    showline: "@",
 
                    linestyle: "@",
 
                    lineclass: "@",
 
                    labelstyle: "@",
 
                    labelclass: "@",
 
                    linevadjust: "@",
 
                    labelclick: "&"
 
                },
 
                link: {
 
                    pre: function(t, e, n, r) {
 
                        var i = r[0],
 
                            a = r[1],
 
                            o = angular.element(e[0]),
 
                            s = angular.element(e.children()[0]),
 
                            u = angular.element(e.children()[1]),
 
                            l = angular.element(e.children()[2]);
 
                        i.init(l, o, u, s, a)
 
                    },
 
                    post: function(n, r, i, a, o) {
 
                        o(n.$parent, function(t) {
 
                            r.append(t)
 
                        });
 
                        var s = a[0],
 
                            u = a[1],
 
                            l = angular.element(r),
 
                            c = angular.element(r.children()[2]);
 
                        c.attr("text-anchor", "middle"), c.attr("alignment-baseline", "middle"), t.util.swapProperties(l, c), e(c)(n.$parent), i.labelclick ? c.on("click", function(t) {
 
                            n.labelclick({
 
                                $event: t,
 
                                $label: s
 
                            })
 
                        }) : c.on("click", function(t) {
 
                            u.fireClick({
 
                                $event: t,
 
                                $marker: u
 
                            })
 
                        }), n.$watchGroup(["text", "type", "valign", "vadjust", "halign", "hadjust", "showline", "linevadjust", "linestyle", "labelclass", "labelstyle"], function() {
 
                            s.draw()
 
                        })
 
                    }
 
                },
 
                controller: ["$scope", "$compile", function(e, n) {
 
                    var r, i, a, o, s, u, l, c;
 
                    i = this, i.elementtype = "markerlabel", i.init = function(t, e, n, s, u) {
 
                        var f = "TPATH" + (Math.random() + 1).toString(36).substring(3, 7);
 
                        r = u, r.addMarkerLabel(i), i.marker = r, a = t, o = n, l = s, c = e, o.attr("id", f)
 
                    }, i.draw = function() {
 
                        var t, c, f, d, h, p = "middle",
 
                            $ = "inner",
 
                            m = "outer",
 
                            g = "start",
 
                            v = "end",
 
                            y = 0,
 
                            b = 0,
 
                            w = i.labelclass,
 
                            x = i.labelstyle;
 
                        if (w && a.attr("class", w), x && a.attr("style", x), "path" === i.type) switch (a.attr("x", ""), a.attr("y", ""), s || (u = document.createElementNS("http://www.w3.org/2000/svg", "textPath"), u.setAttributeNS("http://www.w3.org/1999/xlink", "href", "#" + o.attr("id")), s = angular.element(u), n(s)(e), a.empty(), a.append(s)), u.textContent = i.text, y = window.getComputedStyle(a[0]).fontSize.replace("px", ""), b = i.valign === m ? 0 : i.valign === $ ? Number(y || 0) : Number(y || 0) / 2, o.attr("d", i.getPath(i.hadjust, i.vadjust - b, i.halign, i.valign)), i.halign) {
 
                            case g:
 
                                a.attr("text-anchor", "start"), s[0].setAttribute("startOffset", "0%");
 
                                break;
 
                            case v:
 
                                a.attr("text-anchor", "end"), s[0].setAttribute("startOffset", "100%");
 
                                break;
 
                            default:
 
                                a.attr("text-anchor", "middle"), s[0].setAttribute("startOffset", "50%")
 
                        } else s && (s.remove(), s = null), t = r.getPosition(i.hadjust, i.vadjust, i.halign, i.valign), a.attr("x", t.x), a.attr("y", t.y), a.text(i.text);
 
                        i.showlineflg ? (c = r.getPosition(i.hadjust, i.vadjust + i.linevadjust, i.halign, i.valign), d = r.getPosition(), h = i.valign === $ ? d.inner : i.valign === p ? d.middle : d.outer, f = i.halign === g ? h.begin : i.halign === v ? h.end : h.middle, l.attr("d", ["M", c.x, c.y, "L", f.x, f.y].join(" ")), i.linestyle || i.lineclass || l.attr("style", "stroke:#000"), i.linestyle && l.attr("style", i.linestyle), i.lineclass && l.attr("class", i.lineclass)) : l.removeAttr("d")
 
                    }, i.getPath = function(e, n, i, a) {
 
                        var o, s, u, l, c, f = "inner",
 
                            d = "outer",
 
                            h = "start",
 
                            p = "end",
 
                            $ = r.center;
 
                        switch (s = r.radius, a) {
 
                            case f:
 
                                o = s.inner;
 
                                break;
 
                            case d:
 
                                o = s.outer;
 
                                break;
 
                            default:
 
                                o = s.middle
 
                        }
 
                        switch (u = r.angle, i) {
 
                            case h:
 
                                l = u.start, c = u.start + 359.99;
 
                                break;
 
                            case p:
 
                                l = u.end + 1, c = u.end;
 
                                break;
 
                            default:
 
                                l = u.middle + 180.05, c = u.middle + 179.95
 
                        }
 
                        return t.svg.path.arc($.x, $.y, o + Number(n || 0), l + Number(e || 0), c + Number(e || 0), 1)
 
                    }, Object.defineProperty(i, "showlineflg", {
 
                        get: function() {
 
                            return "1" === e.showline ? !0 : !1
 
                        }
 
                    }), Object.defineProperty(i, "halign", {
 
                        get: function() {
 
                            return e.halign || "middle"
 
                        }
 
                    }), Object.defineProperty(i, "valign", {
 
                        get: function() {
 
                            return e.valign || "middle"
 
                        }
 
                    }), Object.defineProperty(i, "hadjust", {
 
                        get: function() {
 
                            return t.util.Numeric(e.hadjust)
 
                        }
 
                    }), Object.defineProperty(i, "vadjust", {
 
                        get: function() {
 
                            return t.util.Numeric(e.vadjust)
 
                        }
 
                    }), Object.defineProperty(i, "type", {
 
                        get: function() {
 
                            return e.type
 
                        }
 
                    }), Object.defineProperty(i, "linevadjust", {
 
                        get: function() {
 
                            return t.util.Numeric(e.linevadjust)
 
                        }
 
                    }), Object.defineProperty(i, "labelclass", {
 
                        get: function() {
 
                            return e.labelclass
 
                        }
 
                    }), Object.defineProperty(i, "labelstyle", {
 
                        get: function() {
 
                            return e.labelstyle
 
                        }
 
                    }), Object.defineProperty(i, "linestyle", {
 
                        get: function() {
 
                            return e.linestyle
 
                        }
 
                    }), Object.defineProperty(i, "lineclass", {
 
                        get: function() {
 
                            return e.lineclass
 
                        }
 
                    }), Object.defineProperty(i, "text", {
 
                        get: function() {
 
                            return e.text
 
                        }
 
                    })
 
                }]
 
            }
 
        }]).directive("svgelement", ["SVGUtil", function() {
 
            return {
 
                restrict: "AE",
 
                template: function(t, e) {
 
                    return "<" + e.type + "></" + e.type + ">"
 
                },
 
                type: "svg",
 
                replace: !0,
 
                transclude: !0,
 
                require: ["^plasmid"],
 
                scope: {},
 
                link: function(t, e, n, r, i) {
 
                    i(t.$parent, function(t) {
 
                        e.append(t)
 
                    })
 
                }
 
            }
 
        }])
 
    }(),
 
    function() {
 
        "use strict";
 
        angular.element(document).ready(function() {
 
            angular.bootstrap(document, ["app"])
 
        })
 
    }();</script>
 
 
</body>
 
</body>
 
</html>
 
</html>
 
{{:Team:Sydney_Australia/templates/Footer}}
 

Revision as of 14:43, 1 November 2017

Our Key Goals


The aim of the USYD iGEM 2017 team was to address the problem of insulin inaccessibility. The design of our insulin, and its means of expression, needed to look at five key characteristics:

Stability

For our project to work effectively, we must have a supply chain that’s not a cold chain, so that costs can be reduced. This will ultimately mean that the cost of these cold chains will not be passed onto the consumer. To achieve this, we hope to design an insulin that will not lose efficacy after being exposed to room temperature for long periods of time.

Single Chained

As a result of the difficult purification methods, Single Chain Insulins, or SCIs for short, have been developed with a small, C-peptide chain linker. This linker connects the A and B chains in such a way that the di-sulfide bonds form more favorably. We aim to develop our own single chain insulin to compare it’s simplicity.

Ease of Purification and Affordaility

We must also consider the impact of a difficult, costly manufacturing process on small scale manufacturing companies. This impact is too great to impose on this grass-roots organisations, so we have pursued to find a cheap, simple purification method which is able to produce high yields from a recombinant system.

Intellectual Property Issues

As a result of the way drugs are currently developed, all new inventions for therapies are protected by Intellectual Property Law through patents. These patents surrounding all currently prescribed and newly invented insulins has inspired our team to pursue a completely open source project.

Safety and Efficacy

Our insulin products must be of certifiable medical grade such that it can be approved for human use after stage IV clinical trials, or biosimilar clinical trials. Furthermore, it must also be at least as effective as the other insulins on the market.

Our Insulin Analogue


We began working on expressing proinsulin as it is a reliable, unpatented, and well characterised therapeutic. Proinsulin itself is inactive, and to become active it requires additional processing to form insulin. This processing is performed by the protease trypsin, which cleaves the C chain. from proinsulin. After trypsin activity, the A and B chains are left over to form active insulin. Proinsulin processing is demonstrated in Figure 1. with the cleavage of the C chain

Figure 1. Cleavage of proinsulin results in active insulin

Due to the additional processing steps required to produce purified active insulin from proinsulin, increasing the cost of insulin synthesis, we looked for way to diminish this cost by reducing the steps required to obtain active insulin.

Our team decided to design a single-chain insulin, as single-chain insulins have been demonstrated to have higher stability and activity than human proinsulin. Stability in particular was important to our design due to the need to synthesise an insulin that could be transported over long distances without requiring cold temperatures. Crucially, single-chain insulins do not need to be cleaved to be active, requiring less processing than proinsulin.

We based the linker peptide of Winsulin on sequences and principles tested in Rajpal et al., 2009. This paper found that peptides with a length of 5 to 12 amino acids had the highest receptor binding activity. Importantly, the composition of the sequence is identified as integral in determining whether the single chain construct has activity. The presence of two adjacent basic (dibasic) residues in the linker peptide have also been found to be crucial for insulin to bind to the insulin receptor.

With the above considerations in mind, we designed the linker peptide sequence for Winsulin with the following properties:

We also modified the linker sequence in Rajpal et al.'s paper by including a GGGSGGG sequence. This is a standard sequence known to have high flexibility, enhancing the folding of our Winsulin. We also used it to increase the length of our linker peptide sequence, as we do not believe that this sequence will interfere with insulin activity in any way.

Additionally, the C-terminal residue of proinsulin is an asparagine. In Winsulin we substituted this for a glycine to increase the pI of Winsulin to approximately 7.8. This pI is somewhat high, but it leads to the aggregation of Winsulin monomers to form hexamers. This substitution is present in many long-acting insulins currently on the market. Yet, interestingly, our modelling indicates our Winsulin is still a rapid-acting insulin, and dissociates from hexamers more readily than human insulin.

Our Constructs


We designed our expression constructs in order to test winsulin and proinsulin with multiple expression systems. Click on each element of the construct to learn more about why we chose it:

Winsulin secreted by B. subtilis

BB prefix

RBS

YNCM Tag

His Tag

TEV

Winsulin

BB suffix

Proinsulin secreted by B. subtilis

BB prefix

RBS

YNCM Tag

His Tag

R

Proinsulin

BB suffix

Winsulin targeted to the periplasm of E. coli

BB prefix

RBS

Ecotin Tag

His Tag

TEV

Winsulin

BB suffix

Proinsulin targeted to the periplasm of E. coli

BB prefix

RBS

Ecotin Tag

His Tag

R

Proinsulin

BB suffix

Winsulin targeted to the cytoplasm of E. coli

BB prefix

RBS

His Tag

TEV

Winsulin

BB suffix

Proinsulin targeted to the cytoplasm of E. coli

BB prefix

RBS

His Tag

R

Proinsulin

BB suffix

iGEM BioBrick Prefix


Contains the restriction sites that are necessary for BioBrick compatibility including EcoRI, NotI & XbaI.

E. coli Extended Ribosome Binding Site


A derivative of the RBS found in gene 10 of the T7 bacteriophage, this 23 base pair sequence rich in A’s & T’s enhances ribosome binding to boost expression.

YncM Tag


The YNCM tag is a 12 amino acid sequence whose presence on the N-terminus of the protein targets it for secretion out of the cell into the surrounding media via the Sec pathway in Bacillus subtilis. YNCM was chosen because it was recently shown to be massively successful in targeting recombinant protein for secretion compared to a library of other signal peptides. Additionally, this was shown in B. subtilis strain WB600, which is the bacteria that our WB800 strain was derived from. So we expect that it should give us similar success in secretion of our constructs. (Guan et. al. 2016)

His Tag


We have included a tag comprised of 6 sequential histidines that form a vital aspect of our purification technique using affinity chromatography. Histidine’s high attraction to metal ions will cause the entire protein, insulin and all, to bind to a nickel column and separate it from the other proteins of the cell.

TEV Protease Cleavage Site


TEV is a sequence-specific cysteine protease derived from Tobacco Etch Virus. Because of its high specificity, it is commonly used for deliberate protein cleavage. In our project, we will use it to exclusively detach Winsulin from the nickel column, leaving the his tag and Ecotin/YNCM tags behind. This should provide us with a pure elution of Winsulin.

“R” Arginine Cleavage Site


Arginine acts as a recognition site for Trypsin Protease which we will use to specifically remove Proinsulin from the his tag and YNCM/Ecotin tag in a similar way to TEV. We have chosen to use Trypsin in these constructs because it allows us to further simplify the processing of proinsulin. Trypsin naturally cleaves the C-peptide from proinsulin which, following disulfide bond formation, leaves the active form of insulin. This is the way it works in our body, so we are confident that it will work here too.

iGEM BioBrick Suffix


Contains the restriction sites that are necessary for BioBrick compatibility including SpeI, NotI & PstI. We have also added an additional BamHI site at the terminus of our E. coli expressed constructs for ligation into pET-15b.

Ecotin Tag


Ecotin acts as a signal sequence to target the translated protein to the periplasm of the cell. There are a number of advantages that make it a good choice over other tags.

  • Relatively low metabolic burden due to its small size
  • No interaction with other proteins within the periplasm
  • Is native in E. coli and contains a disulfide bond meaning it undergoes through an oxidative compartment that may assist in the formation of the disulfides in Proinsulin and Winsulin.
  • It has already been shown to successfully target proinsulin to the periplasm (Malik et. al. 2007)
Proinsulin


See our section above!

Winsulin


See our section above!

Our Vectors


We have chosen to use the pET-15b expression system paired with BL21 strain E. coli to express our periplasmic and cytoplasmic constructs. It is a well characterised vector that uses the T7 induction system to prevent expression without the presence of IPTG, providing a convenient level of control over production.

Figure 1. pET-15b was used for cytoplasmic and periplasmic expression of proinsulin and winsulin.

pUS258 is an integrative expression vector which undergoes homologous recombination to insert into the amyE gene of the Bacillus subtilis chromosome. It’s a relatively simple plasmid using the same IPTG induction system that we use across all of our expression systems.

Figure 2. pus258 was used for cytoplasmic and periplasmic expression of proinsulin and winsulin.

Our Expression Systems


In order to maximise the yield of our insulin, while also reducing the post-expression methods currently undertaken by manufacturers, we tested both of these constructs in three different expression systems. Two of these expression systems were in BL21 E. coli, and the other was in Bacillus subtilis.

Cytoplasmic Expression

Cytoplasmic expression is our recombinant protein production in its raw and simple form. With no tags attached to the fusion protein, both Winsulin and Proinsulin will accumulate within the cytoplasm to form aggregated inclusion bodies. Extraction will involve complete lysis of the cell and purification will require separating them from DNA, membranes and other proteins.

The reason to express in the cytoplasm is mainly to compare our other expression systems to where we will be able to see whether they are a viable means of production.

Figure 1. Details of E. Coli cytoplasmic expression of pro/winsulin

Periplasmic Expression

Potentially the biggest hurdle to overcome in efficiently producing recombinant insulin is having the three disulfide bonds in proinsulin and active insulin form correctly. This is because they require an oxidative environment that isn’t usually found in the cytoplasm of common protein factories like E. coli where proteins are naturally expressed.
Fortunately, the periplasmic compartment of gram negative bacteria, including E. coli is more oxidative than the cytoplasm and will therefore improve disulfide bond formation. So we are using the Ecotin tag to target proinsulin and Winsulin to the periplasm in the hope that they will fold correctly and form the correct disulfides.
This method also has the additional advantage that the periplasmic fraction can be extracted without lysing the entire cell, separating our insulin from cells DNA and the rest of the cytoplasmic “junk”.

Figure 2. Details of E. Coli periplasmic expression of pro/winsulin

Secretory Expression

Current methods of insulin production grow bacteria in huge vats. But bacteria like E. coli that only express the protein in the cytoplasm need to be lysed to extract it. Which means they need to drain hundreds of thousands of liters of culture to separate the cells from the media before lysing the cells and then purifying insulin from the DNA and other cellular proteins. Although we will be testing cytoplasmic E. coli expression similar to these methods, we wanted to come up with a way to efficiently separate our insulin from the cells and decided the best way would be have it secreted directly into the media. This is where Bacillus subtilis comes in! Bacillus has been a common tool for recombinant protein production for years and has been proven again and again that they are highly efficient secretion factories. The hope is that having the insulin separated from the cells in the media would mean that scaled up production could use a system where the media is constantly cycled out and the cells can continuously produce our insulin. As can be seen in Figure 3, expression using B. Subtilis can be very simple contributing to our goal to create an easily purifiable product.

Figure 3. Details of expression of pro/winsulin in B. Subtilis

Our Purification Process


Our insulins were designed with a 6x His sequence at the N-terminus of the insulin. This sequence, comprised of 6 histidine residues, binds to nickel. When cell lysates or media containing insulin are added to nickel beads, all of the cellular components should wash off from the beads. This separates them from insulin which remains bound to the nickel beads. As such, the 6x His tag sequence's affinity to nickel can be used to purify insulin from cells or media.

We considered two methods for the purification of our insulins: nickel columns, and nickel agarose resin. The nickel column method is simpler, as insulin can be purified in a single step, yet it is more expensive. On the other hand, the nickel agarose resin method involves more steps but is more cost-effective.

An additional factor in the purification of our insulins is the need to remove the 6x His sequence and the expression tags from the insulin. We designed our Winsulin constructs so that both could be cleaved off in a single step by TEV protease. Our Proinsulin constructs take this further - in a single step using the protease trypsin, the His-tag, expression tag and C chain are removed, simultaneously removing the tags and allowing the proinsulin to fold into active insulin.

In the nickel column method, the protease step also releases the insulin from the nickel column for collection. However, it also reduces the amount of insulin released from the nickel column. Taking this into consideration, along with the increased expense of the nickel column method, our team decided to use the nickel agarose resin method for insulin purification.

Figure 4. Purification process

Assays



As an initial test to determine protein folding and accurately quantify expression yield, we will be using an ELISA. This test uses antibodies that bind to the folded structure of insulin with extremely high specificity. In this regard, it gives an initial indication as to whether the protein is in a conformation that could potentially bind to the insulin receptor. Additionally, the antibodies are tagged with fluorescent protein, so the relative fluorescence will correlate to the amount of insulin in the sample, also with great accuracy.

Following the ELISA, we will test the function of our expressed recombinant Winsulin, and Proinsulin (with trypsin removal of the C-peptide) using an in vitro glucose uptake assay. Here, we measure the changes in glycogen synthesis and glucose oxidation in response to activation of the insulin receptor in cell cultures. C14 radioalabelled glucose will be taken up into the cell at a faster rate upon stimulation and result in incorporation of the carbon into glycogen and CO2, which is measured by a scintillation counter. This assay is a great alternative to an in vivo assay that uses involves assessing the convulsions of mice in response to injections of increasing concentrations of insulin.



Figure ?. Schematic for ELISA and glucose uptake assays for insulin assay

Additional Design Considerations



WB800 Bacillus Strain



One of the challenges that we found in the literature of producing recombinant insulin was its susceptibility to proteolytic decay. So to continue with the theme of maximising expression, it would make sense to reduce the effect of proteolytic decay.

Our idea: knockout proteases from an existing strain such as B. subtilis 168.

Our actual solution: find one that already exists.

And hence we discovered B. subtilis WB800. It is one of the more recent of a long line of protease deficient strains of Bacillus subtilis that have been optimised for recombinant protein secretion (Figure 5).

WB800 specifically has 8 proteases knocked that include both intracellular and membrane bound. The strain was kindly provided to us for experimental use by Professor Sui-Lam Wong of the University of Calgary, Canada.

Figure 5. WB800 protease knockout strain

pUS270



Although pUS258 appeared to work quite well as an expression vector, we noticed that it wasn't the most streamline process of cloning in our constructs nor transforming into Bacillus subtilis because of an MCS that was incompatible with the BioBrick cloning system, and the extra steps needed to ensure the correct integration of the plasmid into the chromosome.

So we decided to design a new compact, highly efficient replicative expression vector that would serve not just our own future experiments, but the whole iGEM community. Thus, pUS270 was born!

While we were too short on time to construct it ourselves, we are holding onto it for a future project that can be tested and eventually submitted to the registry.

Click on each feature for more information

Lac Operon Repressor

Codes for the production of the repressor protein that binds to the Lac Operator to prevent expression until induction of the media with IPTG. We have designed pUS270 to have the LacI under the pVeg promoter for strong constitutive expression in Bacillus.

pIP501 Rep

This gene codes for the Replicator protein that pairs with the Bacillus OriV and is essential to promote the independent replication of pUS270 in Bacillus.

E. coli OriV

Taken from pSB1C3, having this origin of replication will make it easier to construct the plasmid using E. coli as well as improve cloning efficiency downstream. Chosen because of the high copy number of pSB1C3.

Multiple Cloning Site

The multiple cloning site of pUS258 and other expression plasmids that we considered using either had too few restriction sites or sites that were incompatible for the efficient cloning with the BB Prefix and Suffix. So we have designed two highly diverse MCS’ that have 27 unique sites amongst them on either side of SF AmylCP-6 to promote simple cloning of parts from the Bio Brick Registry.

Antibiotic Resistance

Codes for Neomycin Phosphotransferase II that gives transformants resistance to both Neomycin and Kanamycin. Allows selective screening of transformants

Antibiotic Resistance

This region allows independent replication of the vector within Bacillus at a high copy number to provide more copies of the recombinant gene to maximise expression.

Lac Operator

Consists of the target sequence for the lac repressor protein to contribute to the IPTG induction system.

SuperFold AmilCP-6

SuperFold AmilCP-6 is a variant of amilCP which was used by the 2016 Sydney IGEM team and originally submitted to the registry by Team Uppsala Sweden in 2011. This variant has undergone site directed mutagenesis to increase the folding rate of the chromoprotein and enhance the blue colour. We are taking advantage of this protein to enable blue-white screening without the need for adding X-gal to the plates. Cloning with the two multiple cloning sites that flank SF AmilCP-6 essentially swaps it with the insert to leave the recombinant bacteria white rather than blue.