diff options
author | Bernhard Posselt <dev@bernhard-posselt.com> | 2015-04-09 19:53:34 +0200 |
---|---|---|
committer | Bernhard Posselt <dev@bernhard-posselt.com> | 2015-04-09 19:53:34 +0200 |
commit | 76feeb8ad8de5cbec3e4806b81d1c3bdef699696 (patch) | |
tree | a009125cef3ddcdb602b2f4c296c5e425afe05cb /js/vendor/angular | |
parent | a279ee91d1e7d37bc71b9ff86c95acf24009fc6b (diff) |
update deps
Diffstat (limited to 'js/vendor/angular')
-rw-r--r-- | js/vendor/angular/.bower.json | 8 | ||||
-rw-r--r-- | js/vendor/angular/angular.js | 221 | ||||
-rw-r--r-- | js/vendor/angular/angular.min.js | 558 | ||||
-rw-r--r-- | js/vendor/angular/angular.min.js.gzip | bin | 50508 -> 50718 bytes | |||
-rw-r--r-- | js/vendor/angular/angular.min.js.map | 6 | ||||
-rw-r--r-- | js/vendor/angular/bower.json | 2 | ||||
-rw-r--r-- | js/vendor/angular/package.json | 2 |
7 files changed, 451 insertions, 346 deletions
diff --git a/js/vendor/angular/.bower.json b/js/vendor/angular/.bower.json index b087f458d..a65a63b4b 100644 --- a/js/vendor/angular/.bower.json +++ b/js/vendor/angular/.bower.json @@ -1,15 +1,15 @@ { "name": "angular", - "version": "1.4.0-build.3937+sha.171b9f7", + "version": "1.4.0-build.3954+sha.9dfa949", "main": "./angular.js", "ignore": [], "dependencies": {}, "homepage": "https://github.com/angular/bower-angular", - "_release": "1.4.0-build.3937+sha.171b9f7", + "_release": "1.4.0-build.3954+sha.9dfa949", "_resolution": { "type": "version", - "tag": "v1.4.0-build.3937+sha.171b9f7", - "commit": "9ec2dbe681053e819f02d1f61188f29c48118c12" + "tag": "v1.4.0-build.3954+sha.9dfa949", + "commit": "275af50ba8f1e04d00992e61d43f8a8947d3a00d" }, "_source": "git://github.com/angular/bower-angular.git", "_target": "~1.4.*", diff --git a/js/vendor/angular/angular.js b/js/vendor/angular/angular.js index 54600a256..3ba620e14 100644 --- a/js/vendor/angular/angular.js +++ b/js/vendor/angular/angular.js @@ -1,5 +1,5 @@ /** - * @license AngularJS v1.4.0-build.3937+sha.171b9f7 + * @license AngularJS v1.4.0-build.3954+sha.9dfa949 * (c) 2010-2015 Google, Inc. http://angularjs.org * License: MIT */ @@ -57,7 +57,7 @@ function minErr(module, ErrorConstructor) { return match; }); - message += '\nhttp://errors.angularjs.org/1.4.0-build.3937+sha.171b9f7/' + + message += '\nhttp://errors.angularjs.org/1.4.0-build.3954+sha.9dfa949/' + (module ? module + '/' : '') + code; for (i = SKIP_INDEXES, paramPrefix = '?'; i < templateArgs.length; i++, paramPrefix = '&') { @@ -1150,8 +1150,8 @@ function toJsonReplacer(key, value) { * stripped since angular uses this notation internally. * * @param {Object|Array|Date|string|number} obj Input to be serialized into JSON. - * @param {boolean|number=} pretty If set to true, the JSON output will contain newlines and whitespace. - * If set to an integer, the JSON output will contain that many spaces per indentation (the default is 2). + * @param {boolean|number} [pretty=2] If set to true, the JSON output will contain newlines and whitespace. + * If set to an integer, the JSON output will contain that many spaces per indentation. * @returns {string|undefined} JSON-ified string representing `obj`. */ function toJson(obj, pretty) { @@ -2244,6 +2244,8 @@ function toDebugString(obj) { $IntervalProvider, $$HashMapProvider, $HttpProvider, + $HttpParamSerializerProvider, + $HttpParamSerializerJQLikeProvider, $HttpBackendProvider, $LocationProvider, $LogProvider, @@ -2282,7 +2284,7 @@ function toDebugString(obj) { * - `codeName` – `{string}` – Code name of the release, such as "jiggling-armfat". */ var version = { - full: '1.4.0-build.3937+sha.171b9f7', // all of these placeholder strings will be replaced by grunt's + full: '1.4.0-build.3954+sha.9dfa949', // all of these placeholder strings will be replaced by grunt's major: 1, // package task minor: 4, dot: 0, @@ -2401,6 +2403,8 @@ function publishExternalAPI(angular) { $interpolate: $InterpolateProvider, $interval: $IntervalProvider, $http: $HttpProvider, + $httpParamSerializer: $HttpParamSerializerProvider, + $httpParamSerializerJQLike: $HttpParamSerializerJQLikeProvider, $httpBackend: $HttpBackendProvider, $location: $LocationProvider, $log: $LogProvider, @@ -4433,9 +4437,10 @@ function $AnchorScrollProvider() { * @requires $rootScope * * @description - * When called, it checks the current value of {@link ng.$location#hash $location.hash()} and - * scrolls to the related element, according to the rules specified in the - * [Html5 spec](http://dev.w3.org/html5/spec/Overview.html#the-indicated-part-of-the-document). + * When called, it scrolls to the element related to the specified `hash` or (if omitted) to the + * current value of {@link ng.$location#hash $location.hash()}, according to the rules specified + * in the + * [HTML5 spec](http://dev.w3.org/html5/spec/Overview.html#the-indicated-part-of-the-document). * * It also watches the {@link ng.$location#hash $location.hash()} and automatically scrolls to * match any anchor whenever it changes. This can be disabled by calling @@ -4444,6 +4449,9 @@ function $AnchorScrollProvider() { * Additionally, you can use its {@link ng.$anchorScroll#yOffset yOffset} property to specify a * vertical scroll-offset (either fixed or dynamic). * + * @param {string=} hash The hash specifying the element to scroll to. If omitted, the value of + * {@link ng.$location#hash $location.hash()} will be used. + * * @property {(number|function|jqLite)} yOffset * If set, specifies a vertical scroll-offset. This is often useful when there are fixed * positioned elements at the top of the page, such as navbars, headers etc. @@ -4627,8 +4635,9 @@ function $AnchorScrollProvider() { } } - function scroll() { - var hash = $location.hash(), elm; + function scroll(hash) { + hash = isString(hash) ? hash : $location.hash(); + var elm; // empty hash, scroll to the top of the page if (!hash) scrollTo(null); @@ -5308,6 +5317,16 @@ function Browser(window, document, $log, $sniffer) { }; /** + * @private + * Remove popstate and hashchange handler from window. + * + * NOTE: this api is intended for use only by $rootScope. + */ + self.$$applicationDestroyed = function() { + jqLite(window).off('hashchange popstate', cacheStateAndFireUrlChange); + }; + + /** * Checks whether the url has changed outside of Angular. * Needs to be exported to be able to check for changes that have been done in sync, * as hashchange/popstate events fire in async. @@ -8773,6 +8792,65 @@ var JSON_ENDS = { }; var JSON_PROTECTION_PREFIX = /^\)\]\}',?\n/; +function paramSerializerFactory(jQueryMode) { + + function serializeValue(v) { + if (isObject(v)) { + return isDate(v) ? v.toISOString() : toJson(v); + } + return v; + } + + return function paramSerializer(params) { + if (!params) return ''; + var parts = []; + forEachSorted(params, function(value, key) { + if (value === null || isUndefined(value)) return; + if (isArray(value) || isObject(value) && jQueryMode) { + forEach(value, function(v, k) { + var keySuffix = jQueryMode ? '[' + (!isArray(value) ? k : '') + ']' : ''; + parts.push(encodeUriQuery(key + keySuffix) + '=' + encodeUriQuery(serializeValue(v))); + }); + } else { + parts.push(encodeUriQuery(key) + '=' + encodeUriQuery(serializeValue(value))); + } + }); + + return parts.length > 0 ? parts.join('&') : ''; + }; +} + +function $HttpParamSerializerProvider() { + /** + * @ngdoc service + * @name $httpParamSerializer + * @description + * + * Default $http params serializer that converts objects to a part of a request URL + * according to the following rules: + * * `{'foo': 'bar'}` results in `foo=bar` + * * `{'foo': Date.now()}` results in `foo=2015-04-01T09%3A50%3A49.262Z` (`toISOString()` and encoded representation of a Date object) + * * `{'foo': ['bar', 'baz']}` results in `foo=bar&foo=baz` (repeated key for each array element) + * * `{'foo': {'bar':'baz'}}` results in `foo=%7B%22bar%22%3A%22baz%22%7D"` (stringified and encoded representation of an object) + * */ + this.$get = function() { + return paramSerializerFactory(false); + }; +} + +function $HttpParamSerializerJQLikeProvider() { + /** + * @ngdoc service + * @name $httpParamSerializerJQLike + * @description + * + * Alternative $http params serializer that follows jQuerys `param()` method {http://api.jquery.com/jquery.param/} logic. + * */ + this.$get = function() { + return paramSerializerFactory(true); + }; +} + function defaultHttpResponseTransform(data, headers) { if (isString(data)) { // Strip json vulnerability protection prefix and trim whitespace @@ -8917,6 +8995,11 @@ function $HttpProvider() { * - **`defaults.headers.put`** * - **`defaults.headers.patch`** * + * - **`defaults.paramSerializer`** - {string|function(Object<string,string>):string} - A function used to prepare string representation + * of request parameters (specified as an object). + * Is specified as string, it is interpreted as function registered in with the {$injector}. + * Defaults to {$httpParamSerializer}. + * **/ var defaults = this.defaults = { // transform incoming response data @@ -8938,7 +9021,9 @@ function $HttpProvider() { }, xsrfCookieName: 'XSRF-TOKEN', - xsrfHeaderName: 'X-XSRF-TOKEN' + xsrfHeaderName: 'X-XSRF-TOKEN', + + paramSerializer: '$httpParamSerializer' }; var useApplyAsync = false; @@ -8952,7 +9037,7 @@ function $HttpProvider() { * significant performance improvement for bigger applications that make many HTTP requests * concurrently (common during application bootstrap). * - * Defaults to false. If no value is specifed, returns the current configured value. + * Defaults to false. If no value is specified, returns the current configured value. * * @param {boolean=} value If true, when requests are loaded, they will schedule a deferred * "apply" on the next tick, giving time for subsequent requests in a roughly ~10ms window @@ -8990,6 +9075,12 @@ function $HttpProvider() { var defaultCache = $cacheFactory('$http'); /** + * Make sure that default param serializer is exposed as a function + */ + defaults.paramSerializer = isString(defaults.paramSerializer) ? + $injector.get(defaults.paramSerializer) : defaults.paramSerializer; + + /** * Interceptors stored in reverse order. Inner interceptors before outer interceptors. * The reversal is needed so that we can build up the interception chain around the * server request. @@ -9400,6 +9491,9 @@ function $HttpProvider() { * response body, headers and status and returns its transformed (typically deserialized) version. * See {@link ng.$http#overriding-the-default-transformations-per-request * Overriding the Default Transformations} + * - **paramSerializer** - {string|function(Object<string,string>):string} - A function used to prepare string representation + * of request parameters (specified as an object). + * Is specified as string, it is interpreted as function registered in with the {$injector}. * - **cache** – `{boolean|Cache}` – If true, a default $http cache will be used to cache the * GET request, otherwise if a cache instance built with * {@link ng.$cacheFactory $cacheFactory}, this cache will be used for @@ -9528,11 +9622,14 @@ function $HttpProvider() { var config = extend({ method: 'get', transformRequest: defaults.transformRequest, - transformResponse: defaults.transformResponse + transformResponse: defaults.transformResponse, + paramSerializer: defaults.paramSerializer }, requestConfig); config.headers = mergeHeaders(requestConfig); config.method = uppercase(config.method); + config.paramSerializer = isString(config.paramSerializer) ? + $injector.get(config.paramSerializer) : config.paramSerializer; var serverRequest = function(config) { var headers = config.headers; @@ -9796,7 +9893,7 @@ function $HttpProvider() { cache, cachedResp, reqHeaders = config.headers, - url = buildUrl(config.url, config.params); + url = buildUrl(config.url, config.paramSerializer(config.params)); $http.pendingRequests.push(config); promise.then(removePendingReq, removePendingReq); @@ -9903,27 +10000,9 @@ function $HttpProvider() { } - function buildUrl(url, params) { - if (!params) return url; - var parts = []; - forEachSorted(params, function(value, key) { - if (value === null || isUndefined(value)) return; - if (!isArray(value)) value = [value]; - - forEach(value, function(v) { - if (isObject(v)) { - if (isDate(v)) { - v = v.toISOString(); - } else { - v = toJson(v); - } - } - parts.push(encodeUriQuery(key) + '=' + - encodeUriQuery(v)); - }); - }); - if (parts.length > 0) { - url += ((url.indexOf('?') == -1) ? '?' : '&') + parts.join('&'); + function buildUrl(url, serializedParams) { + if (serializedParams.length > 0) { + url += ((url.indexOf('?') == -1) ? '?' : '&') + serializedParams; } return url; } @@ -12636,7 +12715,7 @@ ASTCompiler.prototype = { self.state.computing = fnKey; var intoId = self.nextId(); self.recurse(watch, intoId); - self.return(intoId); + self.return_(intoId); self.state.inputs.push(fnKey); watch.watchId = key; }); @@ -12723,7 +12802,7 @@ ASTCompiler.prototype = { recursionFn = recursionFn || noop; if (!skipWatchIdCheck && isDefined(ast.watchId)) { intoId = intoId || this.nextId(); - this.if('i', + this.if_('i', this.lazyAssign(intoId, this.computedMember('i', ast.watchId)), this.lazyRecurse(ast, intoId, nameId, recursionFn, create, true) ); @@ -12736,7 +12815,7 @@ ASTCompiler.prototype = { if (pos !== ast.body.length - 1) { self.current().body.push(right, ';'); } else { - self.return(right); + self.return_(right); } }); break; @@ -12767,13 +12846,13 @@ ASTCompiler.prototype = { case AST.LogicalExpression: intoId = intoId || this.nextId(); self.recurse(ast.left, intoId); - self.if(ast.operator === '&&' ? intoId : self.not(intoId), self.lazyRecurse(ast.right, intoId)); + self.if_(ast.operator === '&&' ? intoId : self.not(intoId), self.lazyRecurse(ast.right, intoId)); recursionFn(intoId); break; case AST.ConditionalExpression: intoId = intoId || this.nextId(); self.recurse(ast.test, intoId); - self.if(intoId, self.lazyRecurse(ast.alternate, intoId), self.lazyRecurse(ast.consequent, intoId)); + self.if_(intoId, self.lazyRecurse(ast.alternate, intoId), self.lazyRecurse(ast.consequent, intoId)); recursionFn(intoId); break; case AST.Identifier: @@ -12784,11 +12863,11 @@ ASTCompiler.prototype = { nameId.name = ast.name; } ensureSafeMemberName(ast.name); - self.if(self.stage === 'inputs' || self.not(self.getHasOwnProperty('l', ast.name)), + self.if_(self.stage === 'inputs' || self.not(self.getHasOwnProperty('l', ast.name)), function() { - self.if(self.stage === 'inputs' || 's', function() { + self.if_(self.stage === 'inputs' || 's', function() { if (create && create !== 1) { - self.if( + self.if_( self.not(self.nonComputedMember('s', ast.name)), self.lazyAssign(self.nonComputedMember('s', ast.name), '{}')); } @@ -12805,13 +12884,13 @@ ASTCompiler.prototype = { left = nameId && (nameId.context = this.nextId()) || this.nextId(); intoId = intoId || this.nextId(); self.recurse(ast.object, left, undefined, function() { - self.if(self.notNull(left), function() { + self.if_(self.notNull(left), function() { if (ast.computed) { right = self.nextId(); self.recurse(ast.property, right); self.addEnsureSafeMemberName(right); if (create && create !== 1) { - self.if(self.not(self.computedMember(left, right)), self.lazyAssign(self.computedMember(left, right), '{}')); + self.if_(self.not(self.computedMember(left, right)), self.lazyAssign(self.computedMember(left, right), '{}')); } expression = self.ensureSafeObject(self.computedMember(left, right)); self.assign(intoId, expression); @@ -12822,7 +12901,7 @@ ASTCompiler.prototype = { } else { ensureSafeMemberName(ast.property.name); if (create && create !== 1) { - self.if(self.not(self.nonComputedMember(left, ast.property.name)), self.lazyAssign(self.nonComputedMember(left, ast.property.name), '{}')); + self.if_(self.not(self.nonComputedMember(left, ast.property.name)), self.lazyAssign(self.nonComputedMember(left, ast.property.name), '{}')); } expression = self.nonComputedMember(left, ast.property.name); if (self.state.expensiveChecks || isPossiblyDangerousMemberName(ast.property.name)) { @@ -12856,7 +12935,7 @@ ASTCompiler.prototype = { left = {}; args = []; self.recurse(ast.callee, right, left, function() { - self.if(self.notNull(right), function() { + self.if_(self.notNull(right), function() { self.addEnsureSafeFunction(right); forEach(ast.arguments, function(expr) { self.recurse(expr, self.nextId(), undefined, function(argument) { @@ -12885,7 +12964,7 @@ ASTCompiler.prototype = { throw $parseMinErr('lval', 'Trying to assing a value to a non l-value'); } this.recurse(ast.left, undefined, left, function() { - self.if(self.notNull(left.context), function() { + self.if_(self.notNull(left.context), function() { self.recurse(ast.right, right); self.addEnsureSafeObject(self.member(left.context, left.name, left.computed)); expression = self.member(left.context, left.name, left.computed) + ast.operator + right; @@ -12960,11 +13039,11 @@ ASTCompiler.prototype = { return 'plus(' + left + ',' + right + ')'; }, - 'return': function(id) { + return_: function(id) { this.current().body.push('return ', id, ';'); }, - 'if': function(test, alternate, consequent) { + if_: function(test, alternate, consequent) { if (test === true) { alternate(); } else { @@ -15234,6 +15313,11 @@ function $RootScopeProvider() { this.$broadcast('$destroy'); this.$$destroyed = true; + if (this === $rootScope) { + //Remove handlers attached to window when $rootScope is removed + $browser.$$applicationDestroyed(); + } + incrementWatchersCount(this, -this.$$watchersCount); for (var eventName in this.$$listenerCount) { decrementListenerCount(this, this.$$listenerCount[eventName], eventName); @@ -17346,7 +17430,7 @@ function $WindowProvider() { * @return {Object} a key/value map of the current cookies */ function $$CookieReader($document) { - var rawDocument = $document[0]; + var rawDocument = $document[0] || {}; var lastCookies = {}; var lastCookieString = ''; @@ -17360,9 +17444,10 @@ function $$CookieReader($document) { return function() { var cookieArray, cookie, i, index, name; + var currentCookieString = rawDocument.cookie || ''; - if (rawDocument.cookie !== lastCookieString) { - lastCookieString = rawDocument.cookie; + if (currentCookieString !== lastCookieString) { + lastCookieString = currentCookieString; cookieArray = lastCookieString.split('; '); lastCookies = {}; @@ -17687,14 +17772,16 @@ function filterFilter() { } } + var expressionType = getTypeForFilter(expression); var predicateFn; var matchAgainstAnyProp; - switch (typeof expression) { + switch (expressionType) { case 'function': predicateFn = expression; break; case 'boolean': + case 'null': case 'number': case 'string': matchAgainstAnyProp = true; @@ -17724,6 +17811,14 @@ function createPredicateFn(expression, comparator, matchAgainstAnyProp) { comparator = equals; } else if (!isFunction(comparator)) { comparator = function(actual, expected) { + if (isUndefined(actual)) { + // No substring matching against `undefined` + return false; + } + if ((actual === null) || (expected === null)) { + // No substring matching against `null`; only match against `null` + return actual === expected; + } if (isObject(expected) || (isObject(actual) && !hasCustomToString(actual))) { // Should not compare primitives against objects, unless they have custom `toString` method return false; @@ -17746,8 +17841,8 @@ function createPredicateFn(expression, comparator, matchAgainstAnyProp) { } function deepCompare(actual, expected, comparator, matchAgainstAnyProp, dontMatchWholeObject) { - var actualType = (actual !== null) ? typeof actual : 'null'; - var expectedType = (expected !== null) ? typeof expected : 'null'; + var actualType = getTypeForFilter(actual); + var expectedType = getTypeForFilter(expected); if ((expectedType === 'string') && (expected.charAt(0) === '!')) { return !deepCompare(actual, expected.substring(1), comparator, matchAgainstAnyProp); @@ -17794,6 +17889,11 @@ function deepCompare(actual, expected, comparator, matchAgainstAnyProp, dontMatc } } +// Used for easily differentiating between `null` and actual `object` +function getTypeForFilter(val) { + return (val === null) ? 'null' : typeof val; +} + /** * @ngdoc filter * @name currency @@ -24393,7 +24493,10 @@ var NgModelController = ['$scope', '$exceptionHandler', '$attrs', '$element', '$ // if scope model value and ngModel value are out of sync // TODO(perf): why not move this to the action fn? - if (modelValue !== ctrl.$modelValue) { + if (modelValue !== ctrl.$modelValue && + // checks for NaN is needed to allow setting the model to NaN when there's an asyncValidator + (ctrl.$modelValue === ctrl.$modelValue || modelValue === modelValue) + ) { ctrl.$modelValue = ctrl.$$rawModelValue = modelValue; parserValid = undefined; @@ -26749,12 +26852,12 @@ var ngHideDirective = ['$animate', function($animate) { </example> */ var ngStyleDirective = ngDirective(function(scope, element, attr) { - scope.$watchCollection(attr.ngStyle, function ngStyleWatchAction(newStyles, oldStyles) { + scope.$watch(attr.ngStyle, function ngStyleWatchAction(newStyles, oldStyles) { if (oldStyles && (newStyles !== oldStyles)) { forEach(oldStyles, function(val, style) { element.css(style, '');}); } if (newStyles) element.css(newStyles); - }); + }, true); }); /** diff --git a/js/vendor/angular/angular.min.js b/js/vendor/angular/angular.min.js index c9a455796..526f6b933 100644 --- a/js/vendor/angular/angular.min.js +++ b/js/vendor/angular/angular.min.js @@ -1,284 +1,286 @@ /* - AngularJS v1.4.0-build.3937+sha.171b9f7 + AngularJS v1.4.0-build.3954+sha.9dfa949 (c) 2010-2015 Google, Inc. http://angularjs.org License: MIT */ -(function(O,Y,u){'use strict';function H(b){return function(){var a=arguments[0],c;c="["+(b?b+":":"")+a+"] http://errors.angularjs.org/1.4.0-build.3937+sha.171b9f7/"+(b?b+"/":"")+a;for(a=1;a<arguments.length;a++){c=c+(1==a?"?":"&")+"p"+(a-1)+"=";var d=encodeURIComponent,e;e=arguments[a];e="function"==typeof e?e.toString().replace(/ \{[\s\S]*$/,""):"undefined"==typeof e?"undefined":"string"!=typeof e?JSON.stringify(e):e;c+=d(e)}return Error(c)}}function Ra(b){if(null==b||Sa(b))return!1;var a=b.length; -return b.nodeType===na&&a?!0:I(b)||C(b)||0===a||"number"===typeof a&&0<a&&a-1 in b}function n(b,a,c){var d,e;if(b)if(G(b))for(d in b)"prototype"==d||"length"==d||"name"==d||b.hasOwnProperty&&!b.hasOwnProperty(d)||a.call(c,b[d],d,b);else if(C(b)||Ra(b)){var f="object"!==typeof b;d=0;for(e=b.length;d<e;d++)(f||d in b)&&a.call(c,b[d],d,b)}else if(b.forEach&&b.forEach!==n)b.forEach(a,c,b);else for(d in b)b.hasOwnProperty(d)&&a.call(c,b[d],d,b);return b}function Ld(b,a,c){for(var d=Object.keys(b).sort(), -e=0;e<d.length;e++)a.call(c,b[d[e]],d[e]);return d}function jc(b){return function(a,c){b(c,a)}}function Md(){return++jb}function kc(b,a){a?b.$$hashKey=a:delete b.$$hashKey}function Kb(b,a,c){for(var d=b.$$hashKey,e=0,f=a.length;e<f;++e){var h=a[e];if(E(h)||G(h))for(var g=Object.keys(h),l=0,k=g.length;l<k;l++){var m=g[l],q=h[m];c&&E(q)?(E(b[m])||(b[m]=C(q)?[]:{}),Kb(b[m],[q],!0)):b[m]=q}}kc(b,d);return b}function Q(b){return Kb(b,qa.call(arguments,1),!1)}function Nd(b){return Kb(b,qa.call(arguments, -1),!0)}function ba(b){return parseInt(b,10)}function Lb(b,a){return Q(Object.create(b),a)}function w(){}function Ta(b){return b}function oa(b){return function(){return b}}function D(b){return"undefined"===typeof b}function x(b){return"undefined"!==typeof b}function E(b){return null!==b&&"object"===typeof b}function I(b){return"string"===typeof b}function W(b){return"number"===typeof b}function da(b){return"[object Date]"===ra.call(b)}function G(b){return"function"===typeof b}function Ua(b){return"[object RegExp]"=== -ra.call(b)}function Sa(b){return b&&b.window===b}function Va(b){return b&&b.$evalAsync&&b.$watch}function Wa(b){return"boolean"===typeof b}function lc(b){return!(!b||!(b.nodeName||b.prop&&b.attr&&b.find))}function Od(b){var a={};b=b.split(",");var c;for(c=0;c<b.length;c++)a[b[c]]=!0;return a}function sa(b){return M(b.nodeName||b[0]&&b[0].nodeName)}function Xa(b,a){var c=b.indexOf(a);0<=c&&b.splice(c,1);return c}function ta(b,a,c,d){if(Sa(b)||Va(b))throw Ea("cpws");if(mc.test(ra.call(a)))throw Ea("cpta"); -if(a){if(b===a)throw Ea("cpi");c=c||[];d=d||[];if(E(b)){var e=c.indexOf(b);if(-1!==e)return d[e];c.push(b);d.push(a)}if(C(b))for(var f=a.length=0;f<b.length;f++)e=ta(b[f],null,c,d),E(b[f])&&(c.push(b[f]),d.push(e)),a.push(e);else{var h=a.$$hashKey;C(a)?a.length=0:n(a,function(b,c){delete a[c]});for(f in b)b.hasOwnProperty(f)&&(e=ta(b[f],null,c,d),E(b[f])&&(c.push(b[f]),d.push(e)),a[f]=e);kc(a,h)}}else if(a=b)C(b)?a=ta(b,[],c,d):mc.test(ra.call(b))?a=new b.constructor(b):da(b)?a=new Date(b.getTime()): -Ua(b)?(a=new RegExp(b.source,b.toString().match(/[^\/]*$/)[0]),a.lastIndex=b.lastIndex):E(b)&&(e=Object.create(Object.getPrototypeOf(b)),a=ta(b,e,c,d));return a}function ea(b,a){if(C(b)){a=a||[];for(var c=0,d=b.length;c<d;c++)a[c]=b[c]}else if(E(b))for(c in a=a||{},b)if("$"!==c.charAt(0)||"$"!==c.charAt(1))a[c]=b[c];return a||b}function ja(b,a){if(b===a)return!0;if(null===b||null===a)return!1;if(b!==b&&a!==a)return!0;var c=typeof b,d;if(c==typeof a&&"object"==c)if(C(b)){if(!C(a))return!1;if((c=b.length)== -a.length){for(d=0;d<c;d++)if(!ja(b[d],a[d]))return!1;return!0}}else{if(da(b))return da(a)?ja(b.getTime(),a.getTime()):!1;if(Ua(b))return Ua(a)?b.toString()==a.toString():!1;if(Va(b)||Va(a)||Sa(b)||Sa(a)||C(a)||da(a)||Ua(a))return!1;c={};for(d in b)if("$"!==d.charAt(0)&&!G(b[d])){if(!ja(b[d],a[d]))return!1;c[d]=!0}for(d in a)if(!c.hasOwnProperty(d)&&"$"!==d.charAt(0)&&a[d]!==u&&!G(a[d]))return!1;return!0}return!1}function Ya(b,a,c){return b.concat(qa.call(a,c))}function nc(b,a){var c=2<arguments.length? -qa.call(arguments,2):[];return!G(a)||a instanceof RegExp?a:c.length?function(){return arguments.length?a.apply(b,Ya(c,arguments,0)):a.apply(b,c)}:function(){return arguments.length?a.apply(b,arguments):a.call(b)}}function Pd(b,a){var c=a;"string"===typeof b&&"$"===b.charAt(0)&&"$"===b.charAt(1)?c=u:Sa(a)?c="$WINDOW":a&&Y===a?c="$DOCUMENT":Va(a)&&(c="$SCOPE");return c}function Za(b,a){if("undefined"===typeof b)return u;W(a)||(a=a?2:null);return JSON.stringify(b,Pd,a)}function oc(b){return I(b)?JSON.parse(b): -b}function pc(b,a){var c=Date.parse("Jan 01, 1970 00:00:00 "+b)/6E4;return isNaN(c)?a:c}function Mb(b,a,c){c=c?-1:1;var d=pc(a,b.getTimezoneOffset());a=b;b=c*(d-b.getTimezoneOffset());a=new Date(a.getTime());a.setMinutes(a.getMinutes()+b);return a}function ua(b){b=A(b).clone();try{b.empty()}catch(a){}var c=A("<div>").append(b).html();try{return b[0].nodeType===$a?M(c):c.match(/^(<[^>]+>)/)[1].replace(/^<([\w\-]+)/,function(a,b){return"<"+M(b)})}catch(d){return M(c)}}function qc(b){try{return decodeURIComponent(b)}catch(a){}} -function rc(b){var a={},c,d;n((b||"").split("&"),function(b){b&&(c=b.replace(/\+/g,"%20").split("="),d=qc(c[0]),x(d)&&(b=x(c[1])?qc(c[1]):!0,sc.call(a,d)?C(a[d])?a[d].push(b):a[d]=[a[d],b]:a[d]=b))});return a}function Nb(b){var a=[];n(b,function(b,d){C(b)?n(b,function(b){a.push(Fa(d,!0)+(!0===b?"":"="+Fa(b,!0)))}):a.push(Fa(d,!0)+(!0===b?"":"="+Fa(b,!0)))});return a.length?a.join("&"):""}function kb(b){return Fa(b,!0).replace(/%26/gi,"&").replace(/%3D/gi,"=").replace(/%2B/gi,"+")}function Fa(b,a){return encodeURIComponent(b).replace(/%40/gi, -"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%3B/gi,";").replace(/%20/g,a?"%20":"+")}function Qd(b,a){var c,d,e=Ma.length;for(d=0;d<e;++d)if(c=Ma[d]+a,I(c=b.getAttribute(c)))return c;return null}function Rd(b,a){var c,d,e={};n(Ma,function(a){a+="app";!c&&b.hasAttribute&&b.hasAttribute(a)&&(c=b,d=b.getAttribute(a))});n(Ma,function(a){a+="app";var e;!c&&(e=b.querySelector("["+a.replace(":","\\:")+"]"))&&(c=e,d=e.getAttribute(a))});c&&(e.strictDi=null!==Qd(c,"strict-di"), -a(c,d?[d]:[],e))}function tc(b,a,c){E(c)||(c={});c=Q({strictDi:!1},c);var d=function(){b=A(b);if(b.injector()){var d=b[0]===Y?"document":ua(b);throw Ea("btstrpd",d.replace(/</,"<").replace(/>/,">"));}a=a||[];a.unshift(["$provide",function(a){a.value("$rootElement",b)}]);c.debugInfoEnabled&&a.push(["$compileProvider",function(a){a.debugInfoEnabled(!0)}]);a.unshift("ng");d=ab(a,c.strictDi);d.invoke(["$rootScope","$rootElement","$compile","$injector",function(a,b,c,d){a.$apply(function(){b.data("$injector", -d);c(b)(a)})}]);return d},e=/^NG_ENABLE_DEBUG_INFO!/,f=/^NG_DEFER_BOOTSTRAP!/;O&&e.test(O.name)&&(c.debugInfoEnabled=!0,O.name=O.name.replace(e,""));if(O&&!f.test(O.name))return d();O.name=O.name.replace(f,"");$.resumeBootstrap=function(b){n(b,function(b){a.push(b)});return d()};G($.resumeDeferredBootstrap)&&$.resumeDeferredBootstrap()}function Sd(){O.name="NG_ENABLE_DEBUG_INFO!"+O.name;O.location.reload()}function Td(b){b=$.element(b).injector();if(!b)throw Ea("test");return b.get("$$testability")} -function uc(b,a){a=a||"_";return b.replace(Ud,function(b,d){return(d?a:"")+b.toLowerCase()})}function Vd(){var b;if(!vc){var a=lb();ka=O.jQuery;x(a)&&(ka=null===a?u:O[a]);ka&&ka.fn.on?(A=ka,Q(ka.fn,{scope:Na.scope,isolateScope:Na.isolateScope,controller:Na.controller,injector:Na.injector,inheritedData:Na.inheritedData}),b=ka.cleanData,ka.cleanData=function(a){var d;if(Ob)Ob=!1;else for(var e=0,f;null!=(f=a[e]);e++)(d=ka._data(f,"events"))&&d.$destroy&&ka(f).triggerHandler("$destroy");b(a)}):A=P;$.element= -A;vc=!0}}function Pb(b,a,c){if(!b)throw Ea("areq",a||"?",c||"required");return b}function Oa(b,a,c){c&&C(b)&&(b=b[b.length-1]);Pb(G(b),a,"not a function, got "+(b&&"object"===typeof b?b.constructor.name||"Object":typeof b));return b}function Pa(b,a){if("hasOwnProperty"===b)throw Ea("badname",a);}function wc(b,a,c){if(!a)return b;a=a.split(".");for(var d,e=b,f=a.length,h=0;h<f;h++)d=a[h],b&&(b=(e=b)[d]);return!c&&G(b)?nc(e,b):b}function mb(b){var a=b[0];b=b[b.length-1];var c=[a];do{a=a.nextSibling; -if(!a)break;c.push(a)}while(a!==b);return A(c)}function la(){return Object.create(null)}function Wd(b){function a(a,b,c){return a[b]||(a[b]=c())}var c=H("$injector"),d=H("ng");b=a(b,"angular",Object);b.$$minErr=b.$$minErr||H;return a(b,"module",function(){var b={};return function(f,h,g){if("hasOwnProperty"===f)throw d("badname","module");h&&b.hasOwnProperty(f)&&(b[f]=null);return a(b,f,function(){function a(c,d,e,f){f||(f=b);return function(){f[e||"push"]([c,d,arguments]);return t}}if(!h)throw c("nomod", +(function(O,Y,u){'use strict';function J(b){return function(){var a=arguments[0],c;c="["+(b?b+":":"")+a+"] http://errors.angularjs.org/1.4.0-build.3954+sha.9dfa949/"+(b?b+"/":"")+a;for(a=1;a<arguments.length;a++){c=c+(1==a?"?":"&")+"p"+(a-1)+"=";var d=encodeURIComponent,e;e=arguments[a];e="function"==typeof e?e.toString().replace(/ \{[\s\S]*$/,""):"undefined"==typeof e?"undefined":"string"!=typeof e?JSON.stringify(e):e;c+=d(e)}return Error(c)}}function Ra(b){if(null==b||Sa(b))return!1;var a=b.length; +return b.nodeType===oa&&a?!0:D(b)||I(b)||0===a||"number"===typeof a&&0<a&&a-1 in b}function n(b,a,c){var d,e;if(b)if(H(b))for(d in b)"prototype"==d||"length"==d||"name"==d||b.hasOwnProperty&&!b.hasOwnProperty(d)||a.call(c,b[d],d,b);else if(I(b)||Ra(b)){var f="object"!==typeof b;d=0;for(e=b.length;d<e;d++)(f||d in b)&&a.call(c,b[d],d,b)}else if(b.forEach&&b.forEach!==n)b.forEach(a,c,b);else for(d in b)b.hasOwnProperty(d)&&a.call(c,b[d],d,b);return b}function Nd(b,a,c){for(var d=Object.keys(b).sort(), +e=0;e<d.length;e++)a.call(c,b[d[e]],d[e]);return d}function jc(b){return function(a,c){b(c,a)}}function Od(){return++jb}function kc(b,a){a?b.$$hashKey=a:delete b.$$hashKey}function Kb(b,a,c){for(var d=b.$$hashKey,e=0,f=a.length;e<f;++e){var h=a[e];if(C(h)||H(h))for(var g=Object.keys(h),l=0,k=g.length;l<k;l++){var m=g[l],q=h[m];c&&C(q)?(C(b[m])||(b[m]=I(q)?[]:{}),Kb(b[m],[q],!0)):b[m]=q}}kc(b,d);return b}function T(b){return Kb(b,qa.call(arguments,1),!1)}function Pd(b){return Kb(b,qa.call(arguments, +1),!0)}function ca(b){return parseInt(b,10)}function Lb(b,a){return T(Object.create(b),a)}function z(){}function Ta(b){return b}function pa(b){return function(){return b}}function F(b){return"undefined"===typeof b}function w(b){return"undefined"!==typeof b}function C(b){return null!==b&&"object"===typeof b}function D(b){return"string"===typeof b}function X(b){return"number"===typeof b}function ea(b){return"[object Date]"===ra.call(b)}function H(b){return"function"===typeof b}function Ua(b){return"[object RegExp]"=== +ra.call(b)}function Sa(b){return b&&b.window===b}function Va(b){return b&&b.$evalAsync&&b.$watch}function Wa(b){return"boolean"===typeof b}function lc(b){return!(!b||!(b.nodeName||b.prop&&b.attr&&b.find))}function Qd(b){var a={};b=b.split(",");var c;for(c=0;c<b.length;c++)a[b[c]]=!0;return a}function sa(b){return N(b.nodeName||b[0]&&b[0].nodeName)}function Xa(b,a){var c=b.indexOf(a);0<=c&&b.splice(c,1);return c}function ta(b,a,c,d){if(Sa(b)||Va(b))throw Da("cpws");if(mc.test(ra.call(a)))throw Da("cpta"); +if(a){if(b===a)throw Da("cpi");c=c||[];d=d||[];if(C(b)){var e=c.indexOf(b);if(-1!==e)return d[e];c.push(b);d.push(a)}if(I(b))for(var f=a.length=0;f<b.length;f++)e=ta(b[f],null,c,d),C(b[f])&&(c.push(b[f]),d.push(e)),a.push(e);else{var h=a.$$hashKey;I(a)?a.length=0:n(a,function(b,c){delete a[c]});for(f in b)b.hasOwnProperty(f)&&(e=ta(b[f],null,c,d),C(b[f])&&(c.push(b[f]),d.push(e)),a[f]=e);kc(a,h)}}else if(a=b)I(b)?a=ta(b,[],c,d):mc.test(ra.call(b))?a=n |