diff options
author | Bernhard Posselt <dev@bernhard-posselt.com> | 2014-09-29 14:18:47 +0200 |
---|---|---|
committer | Bernhard Posselt <dev@bernhard-posselt.com> | 2014-09-29 14:18:47 +0200 |
commit | ddd4fda04df0d7f04ca58ba2e5c170523b77a825 (patch) | |
tree | 3451add57cf1099d1a326f05ab06ba5c784e3418 /js/vendor/angular | |
parent | f9c1bc9f2d6c43c5b671e76732879856cece2150 (diff) |
update angular
Diffstat (limited to 'js/vendor/angular')
-rw-r--r-- | js/vendor/angular/.bower.json | 8 | ||||
-rw-r--r-- | js/vendor/angular/angular.js | 185 | ||||
-rw-r--r-- | js/vendor/angular/angular.min.js | 471 | ||||
-rw-r--r-- | js/vendor/angular/angular.min.js.gzip | bin | 39789 -> 39789 bytes | |||
-rw-r--r-- | js/vendor/angular/angular.min.js.map | 6 | ||||
-rw-r--r-- | js/vendor/angular/bower.json | 2 |
6 files changed, 368 insertions, 304 deletions
diff --git a/js/vendor/angular/.bower.json b/js/vendor/angular/.bower.json index 6cb135a42..c62199eb3 100644 --- a/js/vendor/angular/.bower.json +++ b/js/vendor/angular/.bower.json @@ -1,14 +1,14 @@ { "name": "angular", - "version": "1.3.0-rc.2", + "version": "1.3.0-rc.3", "main": "./angular.js", "dependencies": {}, "homepage": "https://github.com/angular/bower-angular", - "_release": "1.3.0-rc.2", + "_release": "1.3.0-rc.3", "_resolution": { "type": "version", - "tag": "v1.3.0-rc.2", - "commit": "dbe57c6c9495752c3d1cf3a75fc5aa624ff3ba06" + "tag": "v1.3.0-rc.3", + "commit": "b35bc522b2bcc4258994d6738e3f7ad91e42cdc0" }, "_source": "git://github.com/angular/bower-angular.git", "_target": "~1.3.*", diff --git a/js/vendor/angular/angular.js b/js/vendor/angular/angular.js index a3527e899..ff96d85ea 100644 --- a/js/vendor/angular/angular.js +++ b/js/vendor/angular/angular.js @@ -1,5 +1,5 @@ /** - * @license AngularJS v1.3.0-rc.2 + * @license AngularJS v1.3.0-rc.3 * (c) 2010-2014 Google, Inc. http://angularjs.org * License: MIT */ @@ -71,7 +71,7 @@ function minErr(module, ErrorConstructor) { return match; }); - message = message + '\nhttp://errors.angularjs.org/1.3.0-rc.2/' + + message = message + '\nhttp://errors.angularjs.org/1.3.0-rc.3/' + (module ? module + '/' : '') + code; for (i = 2; i < arguments.length; i++) { message = message + (i == 2 ? '?' : '&') + 'p' + (i-2) + '=' + @@ -131,7 +131,6 @@ function minErr(module, ErrorConstructor) { trim: true, isElement: true, makeMap: true, - map: true, size: true, includes: true, arrayRemove: true, @@ -408,7 +407,7 @@ function setHashKey(obj, h) { * @kind function * * @description - * Extends the destination object `dst` by copying all of the properties from the `src` object(s) + * Extends the destination object `dst` by copying own enumerable properties from the `src` object(s) * to `dst`. You can specify multiple `src` objects. * * @param {Object} dst Destination object. @@ -698,15 +697,6 @@ function nodeName_(element) { } -function map(obj, iterator, context) { - var results = []; - forEach(obj, function(value, index, list) { - results.push(iterator.call(context, value, index, list)); - }); - return results; -} - - /** * @description * Determines the number of elements in an array, the number of properties an object has, or @@ -2122,11 +2112,11 @@ function setupModuleLoader(window) { * - `codeName` – `{string}` – Code name of the release, such as "jiggling-armfat". */ var version = { - full: '1.3.0-rc.2', // all of these placeholder strings will be replaced by grunt's + full: '1.3.0-rc.3', // all of these placeholder strings will be replaced by grunt's major: 1, // package task minor: 3, dot: 0, - codeName: 'tactile-perception' + codeName: 'aggressive-pacifism' }; @@ -8532,12 +8522,13 @@ function $HttpProvider() { expect(data.getText()).toMatch(/Hello, \$http!/); }); - it('should make a JSONP request to angularjs.org', function() { - sampleJsonpBtn.click(); - fetchBtn.click(); - expect(status.getText()).toMatch('200'); - expect(data.getText()).toMatch(/Super Hero!/); - }); +// Commented out due to flakes. See https://github.com/angular/angular.js/issues/9185 +// it('should make a JSONP request to angularjs.org', function() { +// sampleJsonpBtn.click(); +// fetchBtn.click(); +// expect(status.getText()).toMatch('200'); +// expect(data.getText()).toMatch(/Super Hero!/); +// }); it('should make JSONP request to invalid URL and invoke the error handler', function() { @@ -10337,7 +10328,10 @@ function locationGetterSetter(property, preprocess) { */ function $LocationProvider(){ var hashPrefix = '', - html5Mode = false; + html5Mode = { + enabled: false, + requireBase: true + }; /** * @ngdoc method @@ -10359,12 +10353,30 @@ function $LocationProvider(){ * @ngdoc method * @name $locationProvider#html5Mode * @description - * @param {boolean=} mode Use HTML5 strategy if available. - * @returns {*} current value if used as getter or itself (chaining) if used as setter + * @param {(boolean|Object)=} mode If boolean, sets `html5Mode.enabled` to value. + * If object, sets `enabled` and `requireBase` to respective values. + * - **enabled** – `{boolean}` – Sets `html5Mode.enabled`. If true, will rely on + * `history.pushState` to change urls where supported. Will fall back to hash-prefixed paths + * in browsers that do not support `pushState`. + * - **requireBase** - `{boolean}` - Sets `html5Mode.requireBase` (default: `true`). When + * html5Mode is enabled, specifies whether or not a <base> tag is required to be present. If + * `enabled` and `requireBase` are true, and a base tag is not present, an error will be + * thrown when `$location` is injected. See the + * {@link guide/$location $location guide for more information} + * + * @returns {Object} html5Mode object if used as getter or itself (chaining) if used as setter */ this.html5Mode = function(mode) { - if (isDefined(mode)) { - html5Mode = mode; + if (isBoolean(mode)) { + html5Mode.enabled = mode; + return this; + } else if (isObject(mode)) { + html5Mode.enabled = isBoolean(mode.enabled) ? + mode.enabled : + html5Mode.enabled; + html5Mode.requireBase = isBoolean(mode.requireBase) ? + mode.requireBase : + html5Mode.requireBase; return this; } else { return html5Mode; @@ -10406,8 +10418,8 @@ function $LocationProvider(){ initialUrl = $browser.url(), appBase; - if (html5Mode) { - if (!baseHref) { + if (html5Mode.enabled) { + if (!baseHref && html5Mode.requireBase) { throw $locationMinErr('nobase', "$location in HTML5 mode requires a <base> tag to be present!"); } @@ -16374,9 +16386,9 @@ var uppercaseFilter = valueFn(uppercase); }]); </script> <div ng-controller="ExampleController"> - Limit {{numbers}} to: <input type="integer" ng-model="numLimit"> + Limit {{numbers}} to: <input type="number" step="1" ng-model="numLimit"> <p>Output numbers: {{ numbers | limitTo:numLimit }}</p> - Limit {{letters}} to: <input type="integer" ng-model="letterLimit"> + Limit {{letters}} to: <input type="number" step="1" ng-model="letterLimit"> <p>Output letters: {{ letters | limitTo:letterLimit }}</p> Limit {{longNumber}} to: <input type="integer" ng-model="longNumberLimit"> <p>Output long number: {{ longNumber | limitTo:longNumberLimit }}</p> @@ -16399,17 +16411,18 @@ var uppercaseFilter = valueFn(uppercase); expect(limitedLongNumber.getText()).toEqual('Output long number: 234'); }); - it('should update the output when -3 is entered', function() { - numLimitInput.clear(); - numLimitInput.sendKeys('-3'); - letterLimitInput.clear(); - letterLimitInput.sendKeys('-3'); - longNumberLimitInput.clear(); - longNumberLimitInput.sendKeys('-3'); - expect(limitedNumbers.getText()).toEqual('Output numbers: [7,8,9]'); - expect(limitedLetters.getText()).toEqual('Output letters: ghi'); - expect(limitedLongNumber.getText()).toEqual('Output long number: 342'); - }); + // There is a bug in safari and protractor that doesn't like the minus key + // it('should update the output when -3 is entered', function() { + // numLimitInput.clear(); + // numLimitInput.sendKeys('-3'); + // letterLimitInput.clear(); + // letterLimitInput.sendKeys('-3'); + // longNumberLimitInput.clear(); + // longNumberLimitInput.sendKeys('-3'); + // expect(limitedNumbers.getText()).toEqual('Output numbers: [7,8,9]'); + // expect(limitedLetters.getText()).toEqual('Output letters: ghi'); + // expect(limitedLongNumber.getText()).toEqual('Output long number: 342'); + // }); it('should not exceed the maximum size of input array', function() { numLimitInput.clear(); @@ -16424,7 +16437,7 @@ var uppercaseFilter = valueFn(uppercase); }); </file> </example> - */ +*/ function limitToFilter(){ return function(input, limit) { if (isNumber(input)) input = input.toString(); @@ -16588,7 +16601,7 @@ function orderByFilter($parse){ if (!(isArrayLike(array))) return array; if (!sortPredicate) return array; sortPredicate = isArray(sortPredicate) ? sortPredicate: [sortPredicate]; - sortPredicate = map(sortPredicate, function(predicate){ + sortPredicate = sortPredicate.map(function(predicate){ var descending = false, get = predicate || identity; if (isString(predicate)) { if ((predicate.charAt(0) == '+' || predicate.charAt(0) == '-')) { @@ -17130,6 +17143,7 @@ forEach(['src', 'srcset', 'href'], function(attrName) { */ var nullFormCtrl = { $addControl: noop, + $$renameControl: nullFormRenameControl, $removeControl: noop, $setValidity: noop, $$setPending: noop, @@ -17140,6 +17154,10 @@ var nullFormCtrl = { }, SUBMITTED_CLASS = 'ng-submitted'; +function nullFormRenameControl(control, name) { + control.$name = name; +} + /** * @ngdoc type * @name form.FormController @@ -17177,17 +17195,18 @@ SUBMITTED_CLASS = 'ng-submitted'; * */ //asks for $scope to fool the BC controller module -FormController.$inject = ['$element', '$attrs', '$scope', '$animate']; -function FormController(element, attrs, $scope, $animate) { +FormController.$inject = ['$element', '$attrs', '$scope', '$animate', '$interpolate']; +function FormController(element, attrs, $scope, $animate, $interpolate) { var form = this, - parentForm = element.parent().controller('form') || nullFormCtrl, controls = []; + var parentForm = form.$$parentForm = element.parent().controller('form') || nullFormCtrl; + // init state form.$error = {}; form.$$success = {}; form.$pending = undefined; - form.$name = attrs.name || attrs.ngForm; + form.$name = $interpolate(attrs.name || attrs.ngForm || '')($scope); form.$dirty = false; form.$pristine = true; form.$valid = true; @@ -17253,6 +17272,17 @@ function FormController(element, attrs, $scope, $animate) { } }; + // Private API: rename a form control + form.$$renameControl = function(control, newName) { + var oldName = control.$name; + + if (form[oldName] === control) { + delete form[oldName]; + } + form[newName] = control; + control.$name = newName; + }; + /** * @ngdoc method * @name form.FormController#$removeControl @@ -17358,6 +17388,25 @@ function FormController(element, attrs, $scope, $animate) { /** * @ngdoc method + * @name form.FormController#$setUntouched + * + * @description + * Sets the form to its untouched state. + * + * This method can be called to remove the 'ng-touched' class and set the form controls to their + * untouched state (ng-untouched class). + * + * Setting a form controls back to their untouched state is often useful when setting the form + * back to its pristine state. + */ + form.$setUntouched = function () { + forEach(controls, function(control) { + control.$setUntouched(); + }); + }; + + /** + * @ngdoc method * @name form.FormController#$setSubmitted * * @description @@ -17573,13 +17622,20 @@ var formDirectiveFactory = function(isNgForm) { }); } - var parentFormCtrl = formElement.parent().controller('form'), - alias = attr.name || attr.ngForm; + var parentFormCtrl = controller.$$parentForm, + alias = controller.$name; if (alias) { setter(scope, alias, controller, alias); + attr.$observe(attr.name ? 'name' : 'ngForm', function(newValue) { + if (alias === newValue) return; + setter(scope, alias, undefined, alias); + alias = newValue; + setter(scope, alias, controller, alias); + parentFormCtrl.$$renameControl(controller, alias); + }); } - if (parentFormCtrl) { + if (parentFormCtrl !== nullFormCtrl) { formElement.on('$destroy', function() { parentFormCtrl.$removeControl(controller); if (alias) { @@ -17614,10 +17670,10 @@ var URL_REGEXP = /^(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\ var EMAIL_REGEXP = /^[a-z0-9!#$%&'*+\/=?^_`{|}~.-]+@[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/i; var NUMBER_REGEXP = /^\s*(\-|\+)?(\d+|(\d*(\.\d*)))\s*$/; var DATE_REGEXP = /^(\d{4})-(\d{2})-(\d{2})$/; -var DATETIMELOCAL_REGEXP = /^(\d{4})-(\d\d)-(\d\d)T(\d\d):(\d\d)(?::(\d\d))?$/; +var DATETIMELOCAL_REGEXP = /^(\d{4})-(\d\d)-(\d\d)T(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/; var WEEK_REGEXP = /^(\d{4})-W(\d\d)$/; var MONTH_REGEXP = /^(\d{4})-(\d\d)$/; -var TIME_REGEXP = /^(\d\d):(\d\d)(?::(\d\d))?$/; +var TIME_REGEXP = /^(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/; var DEFAULT_REGEXP = /(\s+|^)default(\s+|$)/; var $ngModelMinErr = new minErr('ngModel'); @@ -17881,8 +17937,8 @@ var inputType = { </example> */ 'datetime-local': createDateInputType('datetimelocal', DATETIMELOCAL_REGEXP, - createDateParser(DATETIMELOCAL_REGEXP, ['yyyy', 'MM', 'dd', 'HH', 'mm', 'ss']), - 'yyyy-MM-ddTHH:mm:ss'), + createDateParser(DATETIMELOCAL_REGEXP, ['yyyy', 'MM', 'dd', 'HH', 'mm', 'ss', 'sss']), + 'yyyy-MM-ddTHH:mm:ss.sss'), /** * @ngdoc input @@ -17970,8 +18026,8 @@ var inputType = { </example> */ 'time': createDateInputType('time', TIME_REGEXP, - createDateParser(TIME_REGEXP, ['HH', 'mm', 'ss']), - 'HH:mm:ss'), + createDateParser(TIME_REGEXP, ['HH', 'mm', 'ss', 'sss']), + 'HH:mm:ss.sss'), /** * @ngdoc input @@ -18667,7 +18723,7 @@ function createDateParser(regexp, mapping) { HH: date.getHours(), mm: date.getMinutes(), ss: date.getSeconds(), - sss: date.getMilliseconds() + sss: date.getMilliseconds() / 1000 }; } else { map = { yyyy: 1970, MM: 1, dd: 1, HH: 0, mm: 0, ss: 0, sss: 0 }; @@ -18678,7 +18734,7 @@ function createDateParser(regexp, mapping) { map[mapping[index]] = +part; } }); - return new Date(map.yyyy, map.MM - 1, map.dd, map.HH, map.mm, map.ss || 0, map.sss || 0); + return new Date(map.yyyy, map.MM - 1, map.dd, map.HH, map.mm, map.ss || 0, map.sss * 1000 || 0); } } @@ -19257,8 +19313,8 @@ var VALID_CLASS = 'ng-valid', * * */ -var NgModelController = ['$scope', '$exceptionHandler', '$attrs', '$element', '$parse', '$animate', '$timeout', '$rootScope', '$q', - function($scope, $exceptionHandler, $attr, $element, $parse, $animate, $timeout, $rootScope, $q) { +var NgModelController = ['$scope', '$exceptionHandler', '$attrs', '$element', '$parse', '$animate', '$timeout', '$rootScope', '$q', '$interpolate', + function($scope, $exceptionHandler, $attr, $element, $parse, $animate, $timeout, $rootScope, $q, $interpolate) { this.$viewValue = Number.NaN; this.$modelValue = Number.NaN; this.$validators = {}; @@ -19275,7 +19331,7 @@ var NgModelController = ['$scope', '$exceptionHandler', '$attrs', '$element', '$ this.$error = {}; // keep invalid keys here this.$$success = {}; // keep valid keys here this.$pending = undefined; // keep pending keys here - this.$name = $attr.name; + this.$name = $interpolate($attr.name || '', false)($scope); var parsedNgModel = $parse($attr.ngModel), @@ -19987,6 +20043,12 @@ var ngModelDirective = function() { // notify others, especially parent forms formCtrl.$addControl(modelCtrl); + attr.$observe('name', function(newValue) { + if (modelCtrl.$name !== newValue) { + formCtrl.$$renameControl(modelCtrl, newValue); + } + }); + scope.$on('$destroy', function() { formCtrl.$removeControl(modelCtrl); }); @@ -21301,6 +21363,7 @@ var ngCloakDirective = ngDirective({ * * @element ANY * @scope + * @priority 500 * @param {expression} ngController Name of a constructor function registered with the current * {@link ng.$controllerProvider $controllerProvider} or an {@link guide/expression expression} * that on the current scope evaluates to a constructor function. diff --git a/js/vendor/angular/angular.min.js b/js/vendor/angular/angular.min.js index e87d5b6ae..dae7873ec 100644 --- a/js/vendor/angular/angular.min.js +++ b/js/vendor/angular/angular.min.js @@ -1,241 +1,242 @@ /* - AngularJS v1.3.0-rc.2 + AngularJS v1.3.0-rc.3 (c) 2010-2014 Google, Inc. http://angularjs.org License: MIT */ -(function(H,Z,s){'use strict';function M(b){return function(){var a=arguments[0],c;c="["+(b?b+":":"")+a+"] http://errors.angularjs.org/1.3.0-rc.2/"+(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 Ma(b){if(null==b||Na(b))return!1;var a=b.length;return 1===b.nodeType&& -a?!0:G(b)||O(b)||0===a||"number"===typeof a&&0<a&&a-1 in b}function q(b,a,c){var d,e;if(b)if(y(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(O(b)||Ma(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!==q)b.forEach(a,c,b);else for(d in b)b.hasOwnProperty(d)&&a.call(c,b[d],d,b);return b}function $b(b){var a=[],c;for(c in b)b.hasOwnProperty(c)&&a.push(c);return a.sort()} -function qd(b,a,c){for(var d=$b(b),e=0;e<d.length;e++)a.call(c,b[d[e]],d[e]);return d}function ac(b){return function(a,c){b(c,a)}}function rd(){return++bb}function bc(b,a){a?b.$$hashKey=a:delete b.$$hashKey}function x(b){for(var a=b.$$hashKey,c=1,d=arguments.length;c<d;c++){var e=arguments[c];if(e)for(var f=Object.keys(e),g=0,h=f.length;g<h;g++){var k=f[g];b[k]=e[k]}}bc(b,a);return b}function $(b){return parseInt(b,10)}function cc(b,a){return x(new (x(function(){},{prototype:b})),a)}function v(){} -function Oa(b){return b}function ha(b){return function(){return b}}function F(b){return"undefined"===typeof b}function B(b){return"undefined"!==typeof b}function Q(b){return null!==b&&"object"===typeof b}function G(b){return"string"===typeof b}function ea(b){return"number"===typeof b}function ia(b){return"[object Date]"===Fa.call(b)}function y(b){return"function"===typeof b}function cb(b){return"[object RegExp]"===Fa.call(b)}function Na(b){return b&&b.window===b}function Pa(b){return b&&b.$evalAsync&& -b.$watch}function sd(b){return!(!b||!(b.nodeName||b.prop&&b.attr&&b.find))}function td(b){var a={};b=b.split(",");var c;for(c=0;c<b.length;c++)a[b[c]]=!0;return a}function qa(b){return P(b.nodeName||b[0].nodeName)}function ud(b,a,c){var d=[];q(b,function(b,f,g){d.push(a.call(c,b,f,g))});return d}function Qa(b,a){var c=b.indexOf(a);0<=c&&b.splice(c,1);return a}function Ga(b,a,c,d){if(Na(b)||Pa(b))throw Ra("cpws");if(a){if(b===a)throw Ra("cpi");c=c||[];d=d||[];if(Q(b)){var e=c.indexOf(b);if(-1!==e)return d[e]; -c.push(b);d.push(a)}if(O(b))for(var f=a.length=0;f<b.length;f++)e=Ga(b[f],null,c,d),Q(b[f])&&(c.push(b[f]),d.push(e)),a.push(e);else{var g=a.$$hashKey;O(a)?a.length=0:q(a,function(b,c){delete a[c]});for(f in b)b.hasOwnProperty(f)&&(e=Ga(b[f],null,c,d),Q(b[f])&&(c.push(b[f]),d.push(e)),a[f]=e);bc(a,g)}}else if(a=b)O(b)?a=Ga(b,[],c,d):ia(b)?a=new Date(b.getTime()):cb(b)?(a=new RegExp(b.source,b.toString().match(/[^\/]*$/)[0]),a.lastIndex=b.lastIndex):Q(b)&&(e=Object.create(Object.getPrototypeOf(b)), -a=Ga(b,e,c,d));return a}function ra(b,a){if(O(b)){a=a||[];for(var c=0,d=b.length;c<d;c++)a[c]=b[c]}else if(Q(b))for(c in a=a||{},b)if("$"!==c.charAt(0)||"$"!==c.charAt(1))a[c]=b[c];return a||b}function sa(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(O(b)){if(!O(a))return!1;if((c=b.length)==a.length){for(d=0;d<c;d++)if(!sa(b[d],a[d]))return!1;return!0}}else{if(ia(b))return ia(a)?sa(b.getTime(),a.getTime()):!1;if(cb(b)&& -cb(a))return b.toString()==a.toString();if(Pa(b)||Pa(a)||Na(b)||Na(a)||O(a))return!1;c={};for(d in b)if("$"!==d.charAt(0)&&!y(b[d])){if(!sa(b[d],a[d]))return!1;c[d]=!0}for(d in a)if(!c.hasOwnProperty(d)&&"$"!==d.charAt(0)&&a[d]!==s&&!y(a[d]))return!1;return!0}return!1}function db(b,a,c){return b.concat(Sa.call(a,c))}function dc(b,a){var c=2<arguments.length?Sa.call(arguments,2):[];return!y(a)||a instanceof RegExp?a:c.length?function(){return arguments.length?a.apply(b,c.concat(Sa.call(arguments,0))): -a.apply(b,c)}:function(){return arguments.length?a.apply(b,arguments):a.call(b)}}function vd(b,a){var c=a;"string"===typeof b&&"$"===b.charAt(0)&&"$"===b.charAt(1)?c=s:Na(a)?c="$WINDOW":a&&Z===a?c="$DOCUMENT":Pa(a)&&(c="$SCOPE");return c}function ta(b,a){return"undefined"===typeof b?s:JSON.stringify(b,vd,a?" ":null)}function ec(b){return G(b)?JSON.parse(b):b}function ua(b){b=D(b).clone();try{b.empty()}catch(a){}var c=D("<div>").append(b).html();try{return 3===b[0].nodeType?P(c):c.match(/^(<[^>]+>)/)[1].replace(/^<([\w\-]+)/, -function(a,b){return"<"+P(b)})}catch(d){return P(c)}}function fc(b){try{return decodeURIComponent(b)}catch(a){}}function gc(b){var a={},c,d;q((b||"").split("&"),function(b){b&&(c=b.replace(/\+/g,"%20").split("="),d=fc(c[0]),B(d)&&(b=B(c[1])?fc(c[1]):!0,Ab.call(a,d)?O(a[d])?a[d].push(b):a[d]=[a[d],b]:a[d]=b))});return a}function Bb(b){var a=[];q(b,function(b,d){O(b)?q(b,function(b){a.push(Ca(d,!0)+(!0===b?"":"="+Ca(b,!0)))}):a.push(Ca(d,!0)+(!0===b?"":"="+Ca(b,!0)))});return a.length?a.join("&"):""} -function eb(b){return Ca(b,!0).replace(/%26/gi,"&").replace(/%3D/gi,"=").replace(/%2B/gi,"+")}function Ca(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 wd(b,a){var c,d,e=fb.length;b=D(b);for(d=0;d<e;++d)if(c=fb[d]+a,G(c=b.attr(c)))return c;return null}function xd(b,a){var c,d,e={};q(fb,function(a){a+="app";!c&&b.hasAttribute&&b.hasAttribute(a)&&(c=b,d=b.getAttribute(a))}); -q(fb,function(a){a+="app";var e;!c&&(e=b.querySelector("["+a.replace(":","\\:")+"]"))&&(c=e,d=e.getAttribute(a))});c&&(e.strictDi=null!==wd(c,"strict-di"),a(c,d?[d]:[],e))}function hc(b,a,c){Q(c)||(c={});c=x({strictDi:!1},c);var d=function(){b=D(b);if(b.injector()){var d=b[0]===Z?"document":ua(b);throw Ra("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=Cb(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!/;H&&e.test(H.name)&&(c.debugInfoEnabled=!0,H.name=H.name.replace(e,""));if(H&&!f.test(H.name))return d();H.name=H.name.replace(f,"");Da.resumeBootstrap=function(b){q(b,function(b){a.push(b)});d()}}function yd(){H.name="NG_ENABLE_DEBUG_INFO!"+H.name;H.location.reload()}function zd(b){return Da.element(b).injector().get("$$testability")} -function Db(b,a){a=a||"_";return b.replace(Ad,function(b,d){return(d?a:"")+b.toLowerCase()})}function Bd(){var b;ic||((na=H.jQuery)&&na.fn.on?(D=na,x(na.fn,{scope:Ha.scope,isolateScope:Ha.isolateScope,controller:Ha.controller,injector:Ha.injector,inheritedData:Ha.inheritedData}),b=na.cleanData,na.cleanData=function(a){var c;if(Eb)Eb=!1;else for(var d=0,e;null!=(e=a[d]);d++)(c=na._data(e,"events"))&&c.$destroy&&na(e).triggerHandler("$destroy");b(a)}):D=R,Da.element=D,ic=!0)}function Fb(b,a,c){if(!b)throw Ra("areq", -a||"?",c||"required");return b}function gb(b,a,c){c&&O(b)&&(b=b[b.length-1]);Fb(y(b),a,"not a function, got "+(b&&"object"===typeof b?b.constructor.name||"Object":typeof b));return b}function Ia(b,a){if("hasOwnProperty"===b)throw Ra("badname",a);}function jc(b,a,c){if(!a)return b;a=a.split(".");for(var d,e=b,f=a.length,g=0;g<f;g++)d=a[g],b&&(b=(e=b)[d]);return!c&&y(b)?dc(e,b):b}function hb(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 D(c)}function Cd(b){function a(a, -b,c){return a[b]||(a[b]=c())}var c=M("$injector"),d=M("ng");b=a(b,"angular",Object);b.$$minErr=b.$$minErr||M;return a(b,"module",function(){var b={};return function(f,g,h){if("hasOwnProperty"===f)throw d("badname","module");g&&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 r}}if(!g)throw c("nomod",f);var b=[],d=[],e=[],m=a("$injector","invoke","push",d),r={_invokeQueue:b,_configBlocks:d,_runBlocks:e,requires:g, -name:f,provider:a("$provide","provider"),factory:a("$provide","factory"),service:a("$provide","service"),value:a("$provide","value"),constant:a("$provide","constant","unshift"),animation:a("$animateProvider","register"),filter:a("$filterProvider","register"),controller:a("$controllerProvider","register"),directive:a("$compileProvider","directive"),config:m,run:function(a){e.push(a);return this}};h&&m(h);return r})}})}function Dd(b){x(b,{bootstrap:hc,copy:Ga,extend:x,equals:sa,element:D,forEach:q, -injector:Cb,noop:v,bind:dc,toJson:ta,fromJson:ec,identity:Oa,isUndefined:F,isDefined:B,isString:G,isFunction:y,isObject:Q,isNumber:ea,isElement:sd,isArray:O,version:Ed,isDate:ia,lowercase:P,uppercase:ib,callbacks:{counter:0},getTestability:zd,$$minErr:M,$$csp:Ta,reloadWithDebugInfo:yd,$$hasClass:jb});Ua=Cd(H);try{Ua("ngLocale")}catch(a){Ua("ngLocale",[]).provider("$locale",Fd)}Ua("ng",["ngLocale"],["$provide",function(a){a.provider({$$sanitizeUri:Gd});a.provider("$compile",kc).directive({a:Hd,input:lc, -textarea:lc,form:Id,script:Jd,select:Kd,style:Ld,option:Md,ngBind:Nd,ngBindHtml:Od,ngBindTemplate:Pd,ngClass:Qd,ngClassEven:Rd,ngClassOdd:Sd,ngCloak:Td,ngController:Ud,ngForm:Vd,ngHide:Wd,ngIf:Xd,ngInclude:Yd,ngInit:Zd,ngNonBindable:$d,ngPluralize:ae,ngRepeat:be,ngShow:ce,ngStyle:de,ngSwitch:ee,ngSwitchWhen:fe,ngSwitchDefault:ge,ngOptions:he,ngTransclude:ie,ngModel:je,ngList:ke,ngChange:le,pattern:mc,ngPattern:mc,required:nc,ngRequired:nc,minlength:oc,ngMinlength:oc,maxlength:pc,ngMaxlength:pc,ngValue:me, -ngModelOptions:ne}).directive({ngInclude:oe}).directive(kb).directive(qc);a.provider({$anchorScroll:pe,$animate:qe,$browser:re,$cacheFactory:se,$controller:te,$document:ue,$exceptionHandler:ve,$filter:rc,$interpolate:we,$interval:xe,$http:ye,$httpBackend:ze,$location:Ae,$log:Be,$parse:Ce,$rootScope:De,$q:Ee,$$q:Fe,$sce:Ge,$sceDelegate:He,$sniffer:Ie,$templateCache:Je,$templateRequest:Ke,$$testability:Le,$timeout:Me,$window:Ne,$$rAF:Oe,$$asyncCallback:Pe})}])}function Va(b){return b.replace(Qe,function(a, -b,d,e){return e?d.toUpperCase():d}).replace(Re,"Moz$1")}function sc(b){b=b.nodeType;return 1===b||!b||9===b}function tc(b,a){var c,d,e=a.createDocumentFragment(),f=[];if(Gb.test(b)){c=c||e.appendChild(a.createElement("div"));d=(Se.exec(b)||["",""])[1].toLowerCase();d=ja[d]||ja._default;c.innerHTML=d[1]+b.replace(Te,"<$1></$2>")+d[2];for(d=d[0];d--;)c=c.lastChild;f=db(f,c.childNodes);c=e.firstChild;c.textContent=""}else f.push(a.createTextNode(b));e.textContent="";e.innerHTML="";q(f,function(a){e.appendChild(a)}); -return e}function R(b){if(b instanceof R)return b;var a;G(b)&&(b=da(b),a=!0);if(!(this instanceof R)){if(a&&"<"!=b.charAt(0))throw Hb("nosel");return new R(b)}if(a){a=Z;var c;b=(c=Ue.exec(b))?[a.createElement(c[1])]:(c=tc(b,a))?c.childNodes:[]}uc(this,b)}function Ib(b){return b.cloneNode(!0)}function lb(b,a){a||mb(b);if(b.querySelectorAll)for(var c=b.querySelectorAll("*"),d=0,e=c.length;d<e;d++)mb(c[d])}function vc(b,a,c,d){if(B(d))throw Hb("offargs");var e=(d=nb(b))&&d.events;if(d&&d.handle)if(a)q(a.split(" "), -function(a){F(c)?(b.removeEventListener(a,e[a],!1),delete e[a]):Qa(e[a]||[],c)});else for(a in e)"$destroy"!==a&&b.removeEventListener(a,e[a],!1),delete e[a]}function mb(b,a){var c=b.ng339,d=c&&ob[c];d&&(a?delete d.data[a]:(d.handle&&(d.events.$destroy&&d.handle({},"$destroy"),vc(b)),delete ob[c],b.ng339=s))}function nb(b,a){var c=b.ng339,c=c&&ob[c];a&&!c&&(b.ng339=c=++Ve,c=ob[c]={events:{},data:{},handle:s});return c}function Jb(b,a,c){if(sc(b)){var d=B(c),e=!d&&a&&!Q(a),f=!a;b=(b=nb(b,!e))&&b.data; -if(d)b[a]=c;else{if(f)return b;if(e)return b&&b[a];x(b,a)}}}function jb(b,a){return b.getAttribute?-1<(" "+(b.getAttribute("class")||"")+" ").replace(/[\n\t]/g," ").indexOf(" "+a+" "):!1}function Kb(b,a){a&&b.setAttribute&&q(a.split(" "),function(a){b.setAttribute("class",da((" "+(b.getAttribute("class")||"")+" ").replace(/[\n\t]/g," ").replace(" "+da(a)+" "," ")))})}function Lb(b,a){if(a&&b.setAttribute){var c=(" "+(b.getAttribute("class")||"")+" ").replace(/[\n\t]/g," ");q(a.split(" "),function(a){a= -da(a);-1===c.indexOf(" "+a+" ")&&(c+=a+" ")});b.setAttribute("class",da(c))}}function uc(b,a){if(a)if(a.nodeType)b[b.length++]=a;else{var c=a.length;if("number"===typeof c&&a.window!==a){if(c)for(var d=0;d<c;d++)b[b.length++]=a[d]}else b[b.length++]=a}}function wc(b,a){return pb(b,"$"+(a||"ngController")+"Controller")}function pb(b,a,c){9==b.nodeType&&(b=b.documentElement);for(a=O(a)?a:[a];b;){for(var d=0,e=a.length;d<e;d++)if((c=D.data(b,a[d]))!==s)return c;b=b.parentNode||11===b.nodeType&&b.host}} -function xc(b){for(lb(b,!0);b.firstChild;)b.removeChild(b.firstChild)}function yc(b,a){a||lb(b);var c=b.parentNode;c&&c.removeChild(b)}function zc(b,a){var c=qb[a.toLowerCase()];return c&&Ac[qa(b)]&&c}function We(b,a){var c=b.nodeName;return("INPUT"===c||"TEXTAREA"===c)&&Bc[a]}function Xe(b,a){var c=function(c,e){c.isDefaultPrevented=function(){return c.defaultPrevented};var f=a[e||c.type],g=f?f.length:0;if(g){if(F(c.immediatePropagationStopped)){var h=c.stopImmediatePropagation;c.stopImmediatePropagation= -function(){c.immediatePropagationStopped=!0;c.stopPropagation&&c.stopPropagation();h&&h.call(c)}}c.isImmediatePropagationStopped=function(){return!0===c.immediatePropagationStopped};1<g&&(f=ra(f));for(var k=0;k<g;k++)c.isImmediatePropagationStopped()||f[k].call(b,c)}};c.elem=b;return c}function Ja(b,a){var c=b&&b.$$hashKey;if(c)return"function"===typeof c&&(c=b.$$hashKey()),c;c=typeof b;return c="function"==c||"object"==c&&null!==b?b.$$hashKey=c+":"+(a||rd)():c+":"+b}function Wa(b,a){if(a){var c= -0;this.nextUid=function(){return++c}}q(b,this.put,this)}function Ye(b){return(b=b.toString().replace(Cc,"").match(Dc))?"function("+(b[1]||"").replace(/[\s\r\n]+/," ")+")":"fn"}function Mb(b,a,c){var d;if("function"===typeof b){if(!(d=b.$inject)){d=[];if(b.length){if(a)throw G(c)&&c||(c=b.name||Ye(b)),Ka("strictdi",c);a=b.toString().replace(Cc,"");a=a.match(Dc);q(a[1].split(Ze),function(a){a.replace($e,function(a,b,c){d.push(c)})})}b.$inject=d}}else O(b)?(a=b.length-1,gb(b[a],"fn"),d=b.slice(0,a)): -gb(b,"fn",!0);return d}function Cb(b,a){function c(a){return function(b,c){if(Q(b))q(b,ac(a));else return a(b,c)}}function d(a,b){Ia(a,"service");if(y(b)||O(b))b=p.instantiate(b);if(!b.$get)throw Ka("pget",a);return n[a+"Provider"]=b}function e(a,b){return d(a,{$get:b})}function f(a){var b=[],c;q(a,function(a){function d(a){var b,c;b=0;for(c=a.length;b<c;b++){var e=a[b],f=p.get(e[0]);f[e[1]].apply(f,e[2])}}if(!l.get(a)){l.put(a,!0);try{G(a)?(c=Ua(a),b=b.concat(f(c.requires)).concat(c._runBlocks), -d(c._invokeQueue),d(c._configBlocks)):y(a)?b.push(p.invoke(a)):O(a)?b.push(p.invoke(a)):gb(a,"module")}catch(e){throw O(a)&&(a=a[a.length-1]),e.message&&e.stack&&-1==e.stack.indexOf(e.message)&&(e=e.message+"\n"+e.stack),Ka("modulerr",a,e.stack||e.message||e);}}});return b}function g(b,c){function d(a){if(b.hasOwnProperty(a)){if(b[a]===h)throw Ka("cdep",a+" <- "+k.join(" <- "));return b[a]}try{return k.unshift(a),b[a]=h,b[a]=c(a)}catch(e){throw b[a]===h&&delete b[a],e;}finally{k.shift()}}function e(b, -c,f,h){"string"===typeof f&&(h=f,f=null);var g=[];h=Mb(b,a,h);var k,m,l;m=0;for(k=h.length;m<k;m++){l=h[m];if("string"!==typeof l)throw Ka("itkn",l);g.push(f&&f.hasOwnProperty(l)?f[l]:d(l))}O(b)&&(b=b[k]);return b.apply(c,g)}return{invoke:e,instantiate:function(a,b,c){var d=function(){};d.prototype=(O(a)?a[a.length-1]:a).prototype;d=new d;a=e(a,d,b,c);return Q(a)||y(a)?a:d},get:d,annotate:Mb,has:function(a){return n.hasOwnProperty(a+"Provider")||b.hasOwnProperty(a)}}}a=!0===a;var h={},k=[],l=new Wa([], -!0),n={$provide:{provider:c(d),factory:c(e),service:c(function(a,b){return e(a,["$injector",function(a){return a.instantiate(b)}])}),value:c(function(a,b){return e(a,ha(b))}),constant:c(function(a,b){Ia(a,"constant");n[a]=b;m[a]=b}),decorator:function(a,b){var c=p.get(a+"Provider"),d=c.$get;c.$get=function(){var a=r.invoke(d,c);return r.invoke(b,null,{$delegate:a})}}}},p=n.$injector=g(n,function(){throw Ka("unpr",k.join(" <- "));}),m={},r=m.$injector=g(m,function(a){var b=p.get(a+"Provider");return r.invoke(b.$get, -b,s,a)});q(f(b),function(a){r.invoke(a||v)});return r}function pe(){var b=!0;this.disableAutoScrolling=function(){b=!1};this.$get=["$window","$location","$rootScope",function(a,c,d){function e(a){var b=null;q(a,function(a){b||"a"!==qa(a)||(b=a)});return b}function f(){var b=c.hash(),d;b?(d=g.getElementById(b))?d.scrollIntoView():(d=e(g.getElementsByName(b)))?d.scrollIntoView():"top"===b&&a.scrollTo(0,0):a.scrollTo(0,0)}var g=a.document;b&&d.$watch(function(){return c.hash()},function(){d.$evalAsync(f)}); -return f}]}function Pe(){this.$get=["$$rAF","$timeout",function(b,a){return b.supported?function(a){return b(a)}:function(b){return a(b,0,!1)}}]}function af(b,a,c,d){function e(a){try{a.apply(null,Sa.call(arguments,1))}finally{if(t--,0===t)for(;u.length;)try{u.pop()()}catch(b){c.error(b)}}}function f(a,b){(function fa(){q(w,function(a){a()});K=b(fa,a)})()}function g(){T=null;A!=h.url()&&(A=h.url(),q(C,function(a){a(h.url())}))}var h=this,k=a[0],l=b.location,n=b.history,p=b.setTimeout,m=b.clearTimeout, -r={};h.isMock=!1;var t=0,u=[];h.$$completeOutstandingRequest=e;h.$$incOutstandingRequestCount=function(){t++};h.notifyWhenNoOutstandingRequests=function(a){q(w,function(a){a()});0===t?a():u.push(a)};var w=[],K;h.addPollFn=function(a){F(K)&&f(100,p);w.push(a);return a};var A=l.href,E=a.find("base"),T=null;h.url=function(a,c){l!==b.location&&(l=b.location);n!==b.history&&(n=b.history);if(a){if(A!=a)return A=a,d.history?c?n.replaceState(null,"",a):(n.pushState(null,"",a),E.attr("href",E.attr("href"))): -(T=a,c?l.replace(a):l.href=a),h}else return T||l.href.replace(/%27/g,"'")};var C=[],X=!1;h.onUrlChange=function(a){if(!X){if(d.history)D(b).on("popstate",g);if(d.hashchange)D(b).on("hashchange",g);else h.addPollFn(g);X=!0}C.push(a);return a};h.$$checkUrlChange=g;h.baseHref=function(){var a=E.attr("href");return a?a.replace(/^(https?\:)?\/\/[^\/]*/,""):""};var I={},L="",N=h.baseHref();h.cookies=function(a,b){var d,e,f,h;if(a)b===s?k.cookie=encodeURIComponent(a)+"=;path="+N+";expires=Thu, 01 Jan 1970 00:00:00 GMT": -G(b)&&(d=(k.cookie=encodeURIComponent(a)+"="+encodeURIComponent(b)+";path="+N).length+1,4096<d&&c.warn("Cookie '"+a+"' possibly not set or overflowed because it was too large ("+d+" > 4096 bytes)!"));else{if(k.cookie!==L)for(L=k.cookie,d=L.split("; "),I={},f=0;f<d.length;f++)e=d[f],h=e.indexOf("="),0<h&&(a=decodeURIComponent(e.substring(0,h)),I[a]===s&&(I[a]=decodeURIComponent(e.substring(h+1))));return I}};h.defer=function(a,b){var c;t++;c=p(function(){delete r[c];e(a)},b||0);r[c]=!0;return c};h.defer.cancel= -function(a){return r[a]?(delete r[a],m(a),e(v),!0):!1}}function re(){this.$get=["$window","$log","$sniffer","$document",function(b,a,c,d){return new af(b,d,a,c)}]}function se(){this.$get=function(){function b(b,d){function e(a){a!=p&&(m?m==a&&(m=a.n):m=a,f(a.n,a.p),f(a,p),p=a,p.n=null)}function f(a,b){a!=b&&(a&&(a.p=b),b&&(b.n=a))}if(b in a)throw M("$cacheFactory")("iid",b);var g=0,h=x({},d,{id:b}),k={},l=d&&d.capacity||Number.MAX_VALUE,n={},p=null,m=null;return a[b]={put:function(a,b){if(l<Number.MAX_VALUE){var c= -n[a]||(n[a]={key:a});e(c)}if(!F(b))return a in k||g++,k[a]=b,g>l&&this.remove(m.key),b},get:function(a){if(l<Number.MAX_VALUE){var b=n[a];if(!b)return;e(b)}return k[a]},remove:function(a){if(l<Number.MAX_VALUE){var b=n[a];if(!b)return;b==p&&(p=b.p);b==m&&(m=b.n);f(b.n,b.p);delete n[a]}delete k[a];g--},removeAll:function(){k={};g=0;n={};p=m=null},destroy:function(){n=h=k=null;delete a[b]},info:function(){return x({},h,{size:g})}}}var a={};b.info=function(){var b={};q(a,function(a,e) |