! 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("
").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(/</, "<").replace(/>/, ">")) } 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("").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("
").append(t).html())) : n ? Di.clone.call(t) : t, a)
", "
"],
col: [2, "<colgroup>", "</colgroup>
"],
tr: [2, "<tbody>", "</tbody>
"],
td: [3, "<tbody>
"],
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 = "Template:" == 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, "
_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" viewBox="-30 -30 650 650"></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"]) })}();