From 66c2332878cfaa9fe9152099d7bbf6ceb665b2ae Mon Sep 17 00:00:00 2001 From: Gwenhael Le Moine Date: Thu, 9 Oct 2014 07:26:15 +0200 Subject: [PATCH] bower update Signed-off-by: Gwenhael Le Moine --- .../angular-animate/.bower.json | 10 +- .../angular-animate/angular-animate.js | 159 +- .../angular-animate/angular-animate.min.js | 50 +- .../angular-animate.min.js.map | 4 +- .../angular-animate/bower.json | 4 +- .../bower_components/angular-i18n/.bower.json | 8 +- .../bower_components/angular-i18n/bower.json | 2 +- .../angular-loader/.bower.json | 10 +- .../angular-loader/angular-loader.js | 4 +- .../angular-loader/angular-loader.min.js | 4 +- .../angular-loader/bower.json | 4 +- .../angular-mocks/.bower.json | 10 +- .../angular-mocks/angular-mocks.js | 2 +- .../bower_components/angular-mocks/bower.json | 4 +- .../app/bower_components/angular/.bower.json | 8 +- .../bower_components/angular/angular-csp.css | 2 +- .../app/bower_components/angular/angular.js | 1629 +++++++++++------ .../bower_components/angular/angular.min.js | 478 ++--- .../angular/angular.min.js.gzip | Bin 39789 -> 44712 bytes .../angular/angular.min.js.map | 6 +- .../app/bower_components/angular/bower.json | 2 +- public/app/bower_components/d3/.bower.json | 8 +- public/app/bower_components/d3/bower.json | 2 +- public/app/bower_components/d3/d3.js | 179 +- public/app/bower_components/d3/d3.min.js | 10 +- 25 files changed, 1627 insertions(+), 972 deletions(-) diff --git a/public/app/bower_components/angular-animate/.bower.json b/public/app/bower_components/angular-animate/.bower.json index 46ccee4e..b7e8f38b 100644 --- a/public/app/bower_components/angular-animate/.bower.json +++ b/public/app/bower_components/angular-animate/.bower.json @@ -1,16 +1,16 @@ { "name": "angular-animate", - "version": "1.3.0-rc.3", + "version": "1.3.0-rc.5", "main": "./angular-animate.js", "dependencies": { - "angular": "1.3.0-rc.3" + "angular": "1.3.0-rc.5" }, "homepage": "https://github.com/angular/bower-angular-animate", - "_release": "1.3.0-rc.3", + "_release": "1.3.0-rc.5", "_resolution": { "type": "version", - "tag": "v1.3.0-rc.3", - "commit": "2f171a645bde6cc837a5d9a6140a51f005f47da2" + "tag": "v1.3.0-rc.5", + "commit": "7a4cf8a706dcd986a70b08d7be2faf34ed247742" }, "_source": "git://github.com/angular/bower-angular-animate.git", "_target": "^1.3.0-beta.18", diff --git a/public/app/bower_components/angular-animate/angular-animate.js b/public/app/bower_components/angular-animate/angular-animate.js index 1edc10ea..6d1db6ae 100644 --- a/public/app/bower_components/angular-animate/angular-animate.js +++ b/public/app/bower_components/angular-animate/angular-animate.js @@ -1,5 +1,5 @@ /** - * @license AngularJS v1.3.0-rc.3 + * @license AngularJS v1.3.0-rc.5 * (c) 2010-2014 Google, Inc. http://angularjs.org * License: MIT */ @@ -227,7 +227,7 @@ * * ### CSS Staggering Animations * A Staggering animation is a collection of animations that are issued with a slight delay in between each successive operation resulting in a - * curtain-like effect. The ngAnimate module, as of 1.2.0, supports staggering animations and the stagger effect can be + * curtain-like effect. The ngAnimate module (versions >=1.2) supports staggering animations and the stagger effect can be * performed by creating a **ng-EVENT-stagger** CSS class and attaching that class to the base CSS class used for * the animation. The style property expected within the stagger class can either be a **transition-delay** or an * **animation-delay** property (or both if your animation contains both transitions and keyframe animations). @@ -383,6 +383,7 @@ angular.module('ngAnimate', ['ng']) var forEach = angular.forEach; var selectors = $animateProvider.$$selectors; var isArray = angular.isArray; + var isString = angular.isString; var ELEMENT_NODE = 1; var NG_ANIMATE_STATE = '$$ngAnimateState'; @@ -473,34 +474,32 @@ angular.module('ngAnimate', ['ng']) return defer.promise; } + function parseAnimateOptions(options) { + // some plugin code may still be passing in the callback + // function as the last param for the $animate methods so + // it's best to only allow string or array values for now + if (isArray(options)) return options; + if (isString(options)) return [options]; + } + function resolveElementClasses(element, cache, runningAnimations) { runningAnimations = runningAnimations || {}; - var map = {}; - forEach(cache.add, function(className) { - if (className && className.length) { - map[className] = map[className] || 0; - map[className]++; - } - }); - - forEach(cache.remove, function(className) { - if (className && className.length) { - map[className] = map[className] || 0; - map[className]--; - } - }); - - var lookup = []; + var lookup = {}; forEach(runningAnimations, function(data, selector) { forEach(selector.split(' '), function(s) { lookup[s]=data; }); }); + var hasClasses = Object.create(null); + forEach((element.attr('class') || '').split(/\s+/), function(className) { + hasClasses[className] = true; + }); + var toAdd = [], toRemove = []; - forEach(map, function(status, className) { - var hasClass = angular.$$hasClass(element[0], className); + forEach(cache.classes, function(status, className) { + var hasClass = hasClasses[className]; var matchingAnimation = lookup[className] || {}; // When addClass and removeClass is called then $animate will check to @@ -511,12 +510,12 @@ angular.module('ngAnimate', ['ng']) // Once an animation is allowed then the code will also check to see if // there exists any on-going animation that is already adding or remvoing // the matching CSS class. - if (status < 0) { + if (status === false) { //does it have the class or will it have the class if (hasClass || matchingAnimation.event == 'addClass') { toRemove.push(className); } - } else if (status > 0) { + } else if (status === true) { //is the class missing or will it be removed? if (!hasClass || matchingAnimation.event == 'removeClass') { toAdd.push(className); @@ -800,7 +799,8 @@ angular.module('ngAnimate', ['ng']) * @param {DOMElement} afterElement the sibling element (which is the previous element) of the element that will be the focus of the enter animation * @return {Promise} the animation callback promise */ - enter : function(element, parentElement, afterElement) { + enter : function(element, parentElement, afterElement, options) { + options = parseAnimateOptions(options); element = angular.element(element); parentElement = prepareElement(parentElement); afterElement = prepareElement(afterElement); @@ -808,7 +808,7 @@ angular.module('ngAnimate', ['ng']) classBasedAnimationsBlocked(element, true); $delegate.enter(element, parentElement, afterElement); return runAnimationPostDigest(function(done) { - return performAnimation('enter', 'ng-enter', stripCommentsFromElement(element), parentElement, afterElement, noop, done); + return performAnimation('enter', 'ng-enter', stripCommentsFromElement(element), parentElement, afterElement, noop, options, done); }); }, @@ -842,16 +842,16 @@ angular.module('ngAnimate', ['ng']) * @param {DOMElement} element the element that will be the focus of the leave animation * @return {Promise} the animation callback promise */ - leave : function(element) { + leave : function(element, options) { + options = parseAnimateOptions(options); element = angular.element(element); cancelChildAnimations(element); classBasedAnimationsBlocked(element, true); - this.enabled(false, element); return runAnimationPostDigest(function(done) { return performAnimation('leave', 'ng-leave', stripCommentsFromElement(element), null, null, function() { $delegate.leave(element); - }, done); + }, options, done); }); }, @@ -888,7 +888,8 @@ angular.module('ngAnimate', ['ng']) * @param {DOMElement} afterElement the sibling element (which is the previous element) of the element that will be the focus of the move animation * @return {Promise} the animation callback promise */ - move : function(element, parentElement, afterElement) { + move : function(element, parentElement, afterElement, options) { + options = parseAnimateOptions(options); element = angular.element(element); parentElement = prepareElement(parentElement); afterElement = prepareElement(afterElement); @@ -897,7 +898,7 @@ angular.module('ngAnimate', ['ng']) classBasedAnimationsBlocked(element, true); $delegate.move(element, parentElement, afterElement); return runAnimationPostDigest(function(done) { - return performAnimation('move', 'ng-move', stripCommentsFromElement(element), parentElement, afterElement, noop, done); + return performAnimation('move', 'ng-move', stripCommentsFromElement(element), parentElement, afterElement, noop, options, done); }); }, @@ -930,8 +931,8 @@ angular.module('ngAnimate', ['ng']) * @param {string} className the CSS class that will be added to the element and then animated * @return {Promise} the animation callback promise */ - addClass : function(element, className) { - return this.setClass(element, className, []); + addClass : function(element, className, options) { + return this.setClass(element, className, [], options); }, /** @@ -963,8 +964,8 @@ angular.module('ngAnimate', ['ng']) * @param {string} className the CSS class that will be animated and then removed from the element * @return {Promise} the animation callback promise */ - removeClass : function(element, className) { - return this.setClass(element, [], className); + removeClass : function(element, className, options) { + return this.setClass(element, [], className, options); }, /** @@ -994,33 +995,68 @@ angular.module('ngAnimate', ['ng']) * CSS classes have been set on the element * @return {Promise} the animation callback promise */ - setClass : function(element, add, remove) { + setClass : function(element, add, remove, options) { + options = parseAnimateOptions(options); + var STORAGE_KEY = '$$animateClasses'; element = angular.element(element); element = stripCommentsFromElement(element); if (classBasedAnimationsBlocked(element)) { - return $delegate.setClass(element, add, remove); + // TODO(@caitp/@matsko): Don't use private/undocumented API here --- we should not be + // changing the DOM synchronously in this case. The `true` parameter must eventually be + // removed. + return $delegate.setClass(element, add, remove, true); } - add = isArray(add) ? add : add.split(' '); - remove = isArray(remove) ? remove : remove.split(' '); + // we're using a combined array for both the add and remove + // operations since the ORDER OF addClass and removeClass matters + var classes, cache = element.data(STORAGE_KEY); + var hasCache = !!cache; + if (!cache) { + cache = {}; + cache.classes = {}; + } + classes = cache.classes; - var cache = element.data(STORAGE_KEY); - if (cache) { - cache.add = cache.add.concat(add); - cache.remove = cache.remove.concat(remove); + add = isArray(add) ? add : add.split(' '); + forEach(add, function(c) { + if (c && c.length) { + classes[c] = true; + } + }); + + remove = isArray(remove) ? remove : remove.split(' '); + forEach(remove, function(c) { + if (c && c.length) { + classes[c] = false; + } + }); + + if (hasCache) { + if (options && cache.options) { + cache.options = cache.options.concat(options); + } //the digest cycle will combine all the animations into one function return cache.promise; } else { element.data(STORAGE_KEY, cache = { - add : add, - remove : remove + classes : classes, + options : options }); } return cache.promise = runAnimationPostDigest(function(done) { + var parentElement = element.parent(); + var elementNode = extractElementNode(element); + var parentNode = elementNode.parentNode; + // TODO(matsko): move this code into the animationsDisabled() function once #8092 is fixed + if (!parentNode || parentNode['$$NG_REMOVED'] || elementNode['$$NG_REMOVED']) { + done(); + return; + } + var cache = element.data(STORAGE_KEY); element.removeData(STORAGE_KEY); @@ -1028,9 +1064,10 @@ angular.module('ngAnimate', ['ng']) var classes = resolveElementClasses(element, cache, state.active); return !classes ? done() - : performAnimation('setClass', classes, element, null, null, function() { - $delegate.setClass(element, classes[0], classes[1]); - }, done); + : performAnimation('setClass', classes, element, parentElement, null, function() { + if (classes[0]) $delegate.$$addClassImmediately(element, classes[0]); + if (classes[1]) $delegate.$$removeClassImmediately(element, classes[1]); + }, cache.options, done); }); }, @@ -1092,7 +1129,7 @@ angular.module('ngAnimate', ['ng']) CSS code. Element, parentElement and afterElement are provided DOM elements for the animation and the onComplete callback will be fired once the animation is fully complete. */ - function performAnimation(animationEvent, className, element, parentElement, afterElement, domOperation, doneCallback) { + function performAnimation(animationEvent, className, element, parentElement, afterElement, domOperation, options, doneCallback) { var noopCancel = noop; var runner = animationRunner(element, animationEvent, className); @@ -1200,6 +1237,11 @@ angular.module('ngAnimate', ['ng']) //the ng-animate class does nothing, but it's here to allow for //parent animations to find and cancel child animations when needed element.addClass(NG_ANIMATE_CLASS_NAME); + if (isArray(options)) { + forEach(options, function(className) { + element.addClass(className); + }); + } var localAnimationCount = globalAnimationCounter++; totalActiveAnimations++; @@ -1269,8 +1311,15 @@ angular.module('ngAnimate', ['ng']) function closeAnimation() { if (!closeAnimation.hasBeenRun) { closeAnimation.hasBeenRun = true; + if (isArray(options)) { + forEach(options, function(className) { + element.removeClass(className); + }); + } + var data = element.data(NG_ANIMATE_STATE); if (data) { + /* only structural animations wait for reflow before removing an animation, but class-based animations don't. An example of this failing would be when a parent HTML tag has a ng-class attribute @@ -1425,6 +1474,16 @@ angular.module('ngAnimate', ['ng']) var parentCounter = 0; var animationReflowQueue = []; var cancelAnimationReflow; + function clearCacheAfterReflow() { + if (!cancelAnimationReflow) { + cancelAnimationReflow = $$animateReflow(function() { + animationReflowQueue = []; + cancelAnimationReflow = null; + lookupCache = {}; + }); + } + } + function afterReflow(element, callback) { if (cancelAnimationReflow) { cancelAnimationReflow(); @@ -1525,7 +1584,7 @@ angular.module('ngAnimate', ['ng']) function parseMaxTime(str) { var maxValue = 0; - var values = angular.isString(str) ? + var values = isString(str) ? str.split(/\s*,\s*/) : []; forEach(values, function(value) { @@ -1770,6 +1829,7 @@ angular.module('ngAnimate', ['ng']) //to perform at all var preReflowCancellation = animateBefore(animationEvent, element, className); if (!preReflowCancellation) { + clearCacheAfterReflow(); animationComplete(); return; } @@ -1826,6 +1886,7 @@ angular.module('ngAnimate', ['ng']) afterReflow(element, animationCompleted); return cancellationMethod; } + clearCacheAfterReflow(); animationCompleted(); }, @@ -1835,6 +1896,7 @@ angular.module('ngAnimate', ['ng']) afterReflow(element, animationCompleted); return cancellationMethod; } + clearCacheAfterReflow(); animationCompleted(); }, @@ -1844,6 +1906,7 @@ angular.module('ngAnimate', ['ng']) afterReflow(element, animationCompleted); return cancellationMethod; } + clearCacheAfterReflow(); animationCompleted(); }, diff --git a/public/app/bower_components/angular-animate/angular-animate.min.js b/public/app/bower_components/angular-animate/angular-animate.min.js index 3bcaf6b1..f68c5352 100644 --- a/public/app/bower_components/angular-animate/angular-animate.min.js +++ b/public/app/bower_components/angular-animate/angular-animate.min.js @@ -1,30 +1,30 @@ /* - AngularJS v1.3.0-rc.3 + AngularJS v1.3.0-rc.5 (c) 2010-2014 Google, Inc. http://angularjs.org License: MIT */ -(function(D,f,E){'use strict';f.module("ngAnimate",["ng"]).directive("ngAnimateChildren",function(){return function(P,w,g){g=g.ngAnimateChildren;f.isString(g)&&0===g.length?w.data("$$ngAnimateChildren",!0):P.$watch(g,function(f){w.data("$$ngAnimateChildren",!!f)})}}).factory("$$animateReflow",["$$rAF","$document",function(f,w){return function(g){return f(function(){g()})}}]).config(["$provide","$animateProvider",function(P,w){function g(f){for(var g=0;gb?(d||"addClass"==e.event)&&l.push(c):0=B&&a>=w&&d()}var k=g(b);a=b.data("$$ngAnimateCSS3Data");if(-1!=k.getAttribute("class").indexOf(c)&&a){a.blockTransition&&(k.style[H+"Property"]="");var m="", -n="";h(c.split(" "),function(b,a){var c=(0=A&&a>=x&&d()}var g=h(b);a=b.data("$$ngAnimateCSS3Data");if(-1!=g.getAttribute("class").indexOf(c)&&a){a.blockTransition&&(g.style[J+"Property"]="");var m="",r="";k(c.split(" "),function(b,a){var c=(0').append(element).html(); try { - return element[0].nodeType === TEXT_NODE ? lowercase(elemHtml) : + return element[0].nodeType === NODE_TYPE_TEXT ? lowercase(elemHtml) : elemHtml. match(/^(<[^>]+>)/)[1]. replace(/^<([\w\-]+)/, function(match, nodeName) { return '<' + lowercase(nodeName); }); @@ -1693,6 +1696,12 @@ function createMap() { return Object.create(null); } +var NODE_TYPE_ELEMENT = 1; +var NODE_TYPE_TEXT = 3; +var NODE_TYPE_COMMENT = 8; +var NODE_TYPE_DOCUMENT = 9; +var NODE_TYPE_DOCUMENT_FRAGMENT = 11; + /** * @ngdoc type * @name angular.Module @@ -2112,11 +2121,11 @@ function setupModuleLoader(window) { * - `codeName` – `{string}` – Code name of the release, such as "jiggling-armfat". */ var version = { - full: '1.3.0-rc.3', // all of these placeholder strings will be replaced by grunt's + full: '1.3.0-rc.5', // all of these placeholder strings will be replaced by grunt's major: 1, // package task minor: 3, dot: 0, - codeName: 'aggressive-pacifism' + codeName: 'impossible-choreography' }; @@ -2150,8 +2159,7 @@ function publishExternalAPI(angular){ 'getTestability': getTestability, '$$minErr': minErr, '$$csp': csp, - 'reloadWithDebugInfo': reloadWithDebugInfo, - '$$hasClass': jqLiteHasClass + 'reloadWithDebugInfo': reloadWithDebugInfo }); angularModule = setupModuleLoader(window); @@ -2297,7 +2305,7 @@ function publishExternalAPI(angular){ * - [`children()`](http://api.jquery.com/children/) - Does not support selectors * - [`clone()`](http://api.jquery.com/clone/) * - [`contents()`](http://api.jquery.com/contents/) - * - [`css()`](http://api.jquery.com/css/) + * - [`css()`](http://api.jquery.com/css/) - Only retrieves inline-styles, does not call `getComputedStyles()` * - [`data()`](http://api.jquery.com/data/) * - [`detach()`](http://api.jquery.com/detach/) * - [`empty()`](http://api.jquery.com/empty/) @@ -2419,7 +2427,7 @@ function jqLiteAcceptsData(node) { // The window object can accept data but has no nodeType // Otherwise we are only interested in elements (1) and documents (9) var nodeType = node.nodeType; - return nodeType === 1 || !nodeType || nodeType === 9; + return nodeType === NODE_TYPE_ELEMENT || !nodeType || nodeType === NODE_TYPE_DOCUMENT; } function jqLiteBuildFragment(html, context) { @@ -2672,7 +2680,7 @@ function jqLiteController(element, name) { function jqLiteInheritedData(element, name, value) { // if element is the document object work with the html element instead // this makes $(document).scope() possible - if(element.nodeType == 9) { + if(element.nodeType == NODE_TYPE_DOCUMENT) { element = element.documentElement; } var names = isArray(name) ? name : [name]; @@ -2685,7 +2693,7 @@ function jqLiteInheritedData(element, name, value) { // If dealing with a document fragment node with a host element, and no parent, use the host // element as the parent. This enables directives within a Shadow DOM or polyfilled Shadow DOM // to lookup parent controllers. - element = element.parentNode || (element.nodeType === 11 && element.host); + element = element.parentNode || (element.nodeType === NODE_TYPE_DOCUMENT_FRAGMENT && element.host); } } @@ -2863,7 +2871,7 @@ forEach({ function getText(element, value) { if (isUndefined(value)) { var nodeType = element.nodeType; - return (nodeType === 1 || nodeType === 3) ? element.textContent : ''; + return (nodeType === NODE_TYPE_ELEMENT || nodeType === NODE_TYPE_TEXT) ? element.textContent : ''; } element.textContent = value; } @@ -3085,7 +3093,7 @@ forEach({ children: function(element) { var children = []; forEach(element.childNodes, function(element){ - if (element.nodeType === 1) + if (element.nodeType === NODE_TYPE_ELEMENT) children.push(element); }); return children; @@ -3097,7 +3105,7 @@ forEach({ append: function(element, node) { var nodeType = element.nodeType; - if (nodeType !== 1 && nodeType !== 11) return; + if (nodeType !== NODE_TYPE_ELEMENT && nodeType !== NODE_TYPE_DOCUMENT_FRAGMENT) return; node = new JQLite(node); @@ -3108,7 +3116,7 @@ forEach({ }, prepend: function(element, node) { - if (element.nodeType === 1) { + if (element.nodeType === NODE_TYPE_ELEMENT) { var index = element.firstChild; forEach(new JQLite(node), function(child){ element.insertBefore(child, index); @@ -3159,7 +3167,7 @@ forEach({ parent: function(element) { var parent = element.parentNode; - return parent && parent.nodeType !== 11 ? parent : null; + return parent && parent.nodeType !== NODE_TYPE_DOCUMENT_FRAGMENT ? parent : null; }, next: function(element) { @@ -3318,13 +3326,13 @@ HashMap.prototype = { * @kind function * * @description - * Creates an injector function that can be used for retrieving services as well as for + * Creates an injector object that can be used for retrieving services as well as for * dependency injection (see {@link guide/di dependency injection}). * * @param {Array.} modules A list of module functions or their aliases. See * {@link angular.module}. The `ng` module must be explicitly added. - * @returns {function()} Injector function. See {@link auto.$injector $injector}. + * @returns {function()} Injector object. See {@link auto.$injector $injector}. * * @example * Typical usage @@ -3431,7 +3439,6 @@ function annotate(fn, strictDi, name) { /** * @ngdoc service * @name $injector - * @kind function * * @description * @@ -3446,7 +3453,7 @@ function annotate(fn, strictDi, name) { * expect($injector.get('$injector')).toBe($injector); * expect($injector.invoke(function($injector) { * return $injector; - * }).toBe($injector); + * })).toBe($injector); * ``` * * # Injection Function Annotation @@ -3513,8 +3520,8 @@ function annotate(fn, strictDi, name) { * @description * Allows the user to query if the particular service exists. * - * @param {string} Name of the service to query. - * @returns {boolean} returns true if injector has given service. + * @param {string} name Name of the service to query. + * @returns {boolean} `true` if injector has given service. */ /** @@ -3974,7 +3981,21 @@ function createInjector(modulesToLoad, strictDi) { return providerCache[name + providerSuffix] = provider_; } - function factory(name, factoryFn) { return provider(name, { $get: factoryFn }); } + function enforceReturnValue(name, factory) { + return function enforcedReturnValue() { + var result = instanceInjector.invoke(factory); + if (isUndefined(result)) { + throw $injectorMinErr('undef', "Provider '{0}' must return a value from $get factory method.", name); + } + return result; + }; + } + + function factory(name, factoryFn, enforce) { + return provider(name, { + $get: enforce !== false ? enforceReturnValue(name, factoryFn) : factoryFn + }); + } function service(name, constructor) { return factory(name, ['$injector', function($injector) { @@ -3982,7 +4003,7 @@ function createInjector(modulesToLoad, strictDi) { }]); } - function value(name, val) { return factory(name, valueFn(val)); } + function value(name, val) { return factory(name, valueFn(val), false); } function constant(name, value) { assertNotHasOwnProperty(name, 'constant'); @@ -4233,7 +4254,10 @@ function $AnchorScrollProvider() { // (no url change, no $location.hash() change), browser native does scroll if (autoScrollingEnabled) { $rootScope.$watch(function autoScrollWatch() {return $location.hash();}, - function autoScrollWatchAction() { + function autoScrollWatchAction(newVal, oldVal) { + // skip the initial scroll if $location.hash is empty + if (newVal === oldVal && newVal === '') return; + $rootScope.$evalAsync(scroll); }); } @@ -4323,9 +4347,57 @@ var $AnimateProvider = ['$provide', function($provide) { return this.$$classNameFilter; }; - this.$get = ['$$q', '$$asyncCallback', function($$q, $$asyncCallback) { + this.$get = ['$$q', '$$asyncCallback', '$rootScope', function($$q, $$asyncCallback, $rootScope) { var currentDefer; + + function runAnimationPostDigest(fn) { + var cancelFn, defer = $$q.defer(); + defer.promise.$$cancelFn = function ngAnimateMaybeCancel() { + cancelFn && cancelFn(); + }; + + $rootScope.$$postDigest(function ngAnimatePostDigest() { + cancelFn = fn(function ngAnimateNotifyComplete() { + defer.resolve(); + }); + }); + + return defer.promise; + } + + function resolveElementClasses(element, cache) { + var toAdd = [], toRemove = []; + + var hasClasses = createMap(); + forEach((element.attr('class') || '').split(/\s+/), function(className) { + hasClasses[className] = true; + }); + + forEach(cache.classes, function(status, className) { + var hasClass = hasClasses[className]; + + // If the most recent class manipulation (via $animate) was to remove the class, and the + // element currently has the class, the class is scheduled for removal. Otherwise, if + // the most recent class manipulation (via $animate) was to add the class, and the + // element does not currently have the class, the class is scheduled to be added. + if (status === false && hasClass) { + toRemove.push(className); + } else if (status === true && !hasClass) { + toAdd.push(className); + } + }); + + return (toAdd.length + toRemove.length) > 0 && [toAdd.length && toAdd, toRemove.length && toRemove]; + } + + function cachedClassManipulation(cache, classes, op) { + for (var i=0, ii = classes.length; i < ii; ++i) { + var className = classes[i]; + cache[className] = op; + } + } + function asyncPromise() { // only serve one instance of a promise in order to save CPU cycles if (!currentDefer) { @@ -4429,13 +4501,17 @@ var $AnimateProvider = ['$provide', function($provide) { * @return {Promise} the animation callback promise */ addClass : function(element, className) { + return this.setClass(element, className, []); + }, + + $$addClassImmediately : function addClassImmediately(element, className) { + element = jqLite(element); className = !isString(className) ? (isArray(className) ? className.join(' ') : '') : className; forEach(element, function (element) { jqLiteAddClass(element, className); }); - return asyncPromise(); }, /** @@ -4451,6 +4527,11 @@ var $AnimateProvider = ['$provide', function($provide) { * @return {Promise} the animation callback promise */ removeClass : function(element, className) { + return this.setClass(element, [], className); + }, + + $$removeClassImmediately : function removeClassImmediately(element, className) { + element = jqLite(element); className = !isString(className) ? (isArray(className) ? className.join(' ') : '') : className; @@ -4473,10 +4554,53 @@ var $AnimateProvider = ['$provide', function($provide) { * @param {string} remove the CSS class which will be removed from the element * @return {Promise} the animation callback promise */ - setClass : function(element, add, remove) { - this.addClass(element, add); - this.removeClass(element, remove); - return asyncPromise(); + setClass : function(element, add, remove, runSynchronously) { + var self = this; + var STORAGE_KEY = '$$animateClasses'; + var createdCache = false; + element = jqLite(element); + + if (runSynchronously) { + // TODO(@caitp/@matsko): Remove undocumented `runSynchronously` parameter, and always + // perform DOM manipulation asynchronously or in postDigest. + self.$$addClassImmediately(element, add); + self.$$removeClassImmediately(element, remove); + return asyncPromise(); + } + + var cache = element.data(STORAGE_KEY); + if (!cache) { + cache = { + classes: {} + }; + createdCache = true; + } + + var classes = cache.classes; + + add = isArray(add) ? add : add.split(' '); + remove = isArray(remove) ? remove : remove.split(' '); + cachedClassManipulation(classes, add, true); + cachedClassManipulation(classes, remove, false); + + if (createdCache) { + cache.promise = runAnimationPostDigest(function(done) { + var cache = element.data(STORAGE_KEY); + element.removeData(STORAGE_KEY); + + var classes = cache && resolveElementClasses(element, cache); + + if (classes) { + if (classes[0]) self.$$addClassImmediately(element, classes[0]); + if (classes[1]) self.$$removeClassImmediately(element, classes[1]); + } + + done(); + }); + element.data(STORAGE_KEY, cache); + } + + return cache.promise; }, enabled : noop, @@ -4495,6 +4619,8 @@ function $$AsyncCallbackProvider(){ }]; } +/* global stripHash: true */ + /** * ! This is a private undocumented service ! * @@ -4618,8 +4744,9 @@ function Browser(window, document, $log, $sniffer) { ////////////////////////////////////////////////////////////// var lastBrowserUrl = location.href, + lastHistoryState = history.state, baseElement = document.find('base'), - newLocation = null; + reloadLocation = null; /** * @name $browser#url @@ -4638,26 +4765,42 @@ function Browser(window, document, $log, $sniffer) { * {@link ng.$location $location service} to change url. * * @param {string} url New url (when used as setter) - * @param {boolean=} replace Should new url replace current history record ? + * @param {boolean=} replace Should new url replace current history record? + * @param {object=} state object to use with pushState/replaceState */ - self.url = function(url, replace) { + self.url = function(url, replace, state) { + // In modern browsers `history.state` is `null` by default; treating it separately + // from `undefined` would cause `$browser.url('/foo')` to change `history.state` + // to undefined via `pushState`. Instead, let's change `undefined` to `null` here. + if (isUndefined(state)) { + state = null; + } + // Android Browser BFCache causes location, history reference to become stale. if (location !== window.location) location = window.location; if (history !== window.history) history = window.history; // setter if (url) { - if (lastBrowserUrl == url) return; + // Don't change anything if previous and current URLs and states match. This also prevents + // IE<10 from getting into redirect loop when in LocationHashbangInHtml5Url mode. + // See https://github.com/angular/angular.js/commit/ffb2701 + if (lastBrowserUrl === url && (!$sniffer.history || history.state === state)) { + return; + } + var sameBase = lastBrowserUrl && stripHash(lastBrowserUrl) === stripHash(url); lastBrowserUrl = url; - if ($sniffer.history) { - if (replace) history.replaceState(null, '', url); - else { - history.pushState(null, '', url); - // Crazy Opera Bug: http://my.opera.com/community/forums/topic.dml?id=1185462 - baseElement.attr('href', baseElement.attr('href')); - } + // Don't use history API if only the hash changed + // due to a bug in IE10/IE11 which leads + // to not firing a `hashchange` nor `popstate` event + // in some cases (see #9143). + if ($sniffer.history && (!sameBase || history.state !== state)) { + history[replace ? 'replaceState' : 'pushState'](state, '', url); + lastHistoryState = history.state; } else { - newLocation = url; + if (!sameBase) { + reloadLocation = url; + } if (replace) { location.replace(url); } else { @@ -4667,23 +4810,38 @@ function Browser(window, document, $log, $sniffer) { return self; // getter } else { - // - newLocation is a workaround for an IE7-9 issue with location.replace and location.href - // methods not updating location.href synchronously. + // - reloadLocation is needed as browsers don't allow to read out + // the new location.href if a reload happened. // - the replacement is a workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=407172 - return newLocation || location.href.replace(/%27/g,"'"); + return reloadLocation || location.href.replace(/%27/g,"'"); } }; + /** + * @name $browser#state + * + * @description + * This method is a getter. + * + * Return history.state or null if history.state is undefined. + * + * @returns {object} state + */ + self.state = function() { + return isUndefined(history.state) ? null : history.state; + }; + var urlChangeListeners = [], urlChangeInit = false; function fireUrlChange() { - newLocation = null; - if (lastBrowserUrl == self.url()) return; + if (lastBrowserUrl === self.url() && lastHistoryState === history.state) { + return; + } lastBrowserUrl = self.url(); forEach(urlChangeListeners, function(listener) { - listener(self.url()); + listener(self.url(), history.state); }); } @@ -4718,9 +4876,7 @@ function Browser(window, document, $log, $sniffer) { // html5 history api - popstate event if ($sniffer.history) jqLite(window).on('popstate', fireUrlChange); // hashchange event - if ($sniffer.hashchange) jqLite(window).on('hashchange', fireUrlChange); - // polling - else self.addPollFn(fireUrlChange); + jqLite(window).on('hashchange', fireUrlChange); urlChangeInit = true; } @@ -5495,8 +5651,11 @@ function $TemplateCacheProvider() { * * (no prefix) - Locate the required controller on the current element. Throw an error if not found. * * `?` - Attempt to locate the required controller or pass `null` to the `link` fn if not found. * * `^` - Locate the required controller by searching the element and its parents. Throw an error if not found. + * * `^^` - Locate the required controller by searching the element's parents. Throw an error if not found. * * `?^` - Attempt to locate the required controller by searching the element and its parents or pass * `null` to the `link` fn if not found. + * * `?^^` - Attempt to locate the required controller by searching the element's parents, or pass + * `null` to the `link` fn if not found. * * * #### `controllerAs` @@ -5574,22 +5733,18 @@ function $TemplateCacheProvider() { * (because SVG doesn't work with custom elements in the DOM tree). * * #### `transclude` - * compile the content of the element and make it available to the directive. - * Typically used with {@link ng.directive:ngTransclude - * ngTransclude}. The advantage of transclusion is that the linking function receives a - * transclusion function which is pre-bound to the correct scope. In a typical setup the widget - * creates an `isolate` scope, but the transclusion is not a child, but a sibling of the `isolate` - * scope. This makes it possible for the widget to have private state, and the transclusion to - * be bound to the parent (pre-`isolate`) scope. + * Extract the contents of the element where the directive appears and make it available to the directive. + * The contents are compiled and provided to the directive as a **transclusion function**. See the + * {@link $compile#transclusion Transclusion} section below. * - * * `true` - transclude the content of the directive. - * * `'element'` - transclude the whole element including any directives defined at lower priority. + * There are two kinds of transclusion depending upon whether you want to transclude just the contents of the + * directive's element or the entire element: + * + * * `true` - transclude the content (i.e. the child nodes) of the directive's element. + * * `'element'` - transclude the whole of the directive's element including any directives on this + * element that defined at a lower priority than this directive. When used, the `template` + * property is ignored. * - *
- * **Note:** When testing an element transclude directive you must not place the directive at the root of the - * DOM fragment that is being compiled. See {@link guide/unit-testing#testing-transclusion-directives - * Testing Transclusion Directives}. - *
* * #### `compile` * @@ -5687,7 +5842,121 @@ function $TemplateCacheProvider() { * It is safe to do DOM transformation in the post-linking function on elements that are not waiting * for their async templates to be resolved. * - * + * + * ### Transclusion + * + * Transclusion is the process of extracting a collection of DOM element from one part of the DOM and + * copying them to another part of the DOM, while maintaining their connection to the original AngularJS + * scope from where they were taken. + * + * Transclusion is used (often with {@link ngTransclude}) to insert the + * original contents of a directive's element into a specified place in the template of the directive. + * The benefit of transclusion, over simply moving the DOM elements manually, is that the transcluded + * content has access to the properties on the scope from which it was taken, even if the directive + * has isolated scope. + * See the {@link guide/directive#creating-a-directive-that-wraps-other-elements Directives Guide}. + * + * This makes it possible for the widget to have private state for its template, while the transcluded + * content has access to its originating scope. + * + *
+ * **Note:** When testing an element transclude directive you must not place the directive at the root of the + * DOM fragment that is being compiled. See {@link guide/unit-testing#testing-transclusion-directives + * Testing Transclusion Directives}. + *
+ * + * #### Transclusion Functions + * + * When a directive requests transclusion, the compiler extracts its contents and provides a **transclusion + * function** to the directive's `link` function and `controller`. This transclusion function is a special + * **linking function** that will return the compiled contents linked to a new transclusion scope. + * + *
+ * If you are just using {@link ngTransclude} then you don't need to worry about this function, since + * ngTransclude will deal with it for us. + *
+ * + * If you want to manually control the insertion and removal of the transcluded content in your directive + * then you must use this transclude function. When you call a transclude function it returns a a jqLite/JQuery + * object that contains the compiled DOM, which is linked to the correct transclusion scope. + * + * When you call a transclusion function you can pass in a **clone attach function**. This function is accepts + * two parameters, `function(clone, scope) { ... }`, where the `clone` is a fresh compiled copy of your transcluded + * content and the `scope` is the newly created transclusion scope, to which the clone is bound. + * + *
+ * **Best Practice**: Always provide a `cloneFn` (clone attach function) when you call a translude function + * since you then get a fresh clone of the original DOM and also have access to the new transclusion scope. + *
+ * + * It is normal practice to attach your transcluded content (`clone`) to the DOM inside your **clone + * attach function**: + * + * ```js + * var transcludedContent, transclusionScope; + * + * $transclude(function(clone, scope) { + * element.append(clone); + * transcludedContent = clone; + * transclusionScope = scope; + * }); + * ``` + * + * Later, if you want to remove the transcluded content from your DOM then you should also destroy the + * associated transclusion scope: + * + * ```js + * transcludedContent.remove(); + * transclusionScope.$destroy(); + * ``` + * + *
+ * **Best Practice**: if you intend to add and remove transcluded content manually in your directive + * (by calling the transclude function to get the DOM and and calling `element.remove()` to remove it), + * then you are also responsible for calling `$destroy` on the transclusion scope. + *
+ * + * The built-in DOM manipulation directives, such as {@link ngIf}, {@link ngSwitch} and {@link ngRepeat} + * automatically destroy their transluded clones as necessary so you do not need to worry about this if + * you are simply using {@link ngTransclude} to inject the transclusion into your directive. + * + * + * #### Transclusion Scopes + * + * When you call a transclude function it returns a DOM fragment that is pre-bound to a **transclusion + * scope**. This scope is special, in that it is a child of the directive's scope (and so gets destroyed + * when the directive's scope gets destroyed) but it inherits the properties of the scope from which it + * was taken. + * + * For example consider a directive that uses transclusion and isolated scope. The DOM hierarchy might look + * like this: + * + * ```html + *
+ *
+ *
+ *
+ *
+ *
+ * ``` + * + * The `$parent` scope hierarchy will look like this: + * + * ``` + * - $rootScope + * - isolate + * - transclusion + * ``` + * + * but the scopes will inherit prototypically from different scopes to their `$parent`. + * + * ``` + * - $rootScope + * - transclusion + * - isolate + * ``` + * + * * ### Attributes * * The {@link ng.$compile.directive.Attributes Attributes} object - passed as a parameter in the @@ -5725,7 +5994,7 @@ function $TemplateCacheProvider() { * } * ``` * - * Below is an example using `$compileProvider`. + * ## Example * *
* **Note**: Typically directives are registered with `module.directive`. The example below is @@ -5850,7 +6119,8 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { Suffix = 'Directive', COMMENT_DIRECTIVE_REGEXP = /^\s*directive\:\s*([\d\w_\-]+)\s+(.*)$/, CLASS_DIRECTIVE_REGEXP = /(([\d\w_\-]+)(?:\:([^;]+))?;?)/, - ALL_OR_NOTHING_ATTRS = makeMap('ngSrc,ngSrcset,src,srcset'); + ALL_OR_NOTHING_ATTRS = makeMap('ngSrc,ngSrcset,src,srcset'), + REQUIRE_PREFIX_REGEXP = /^(?:(\^\^?)?(\?)?(\^\^?)?)?/; // Ref: http://developers.whatwg.org/webappapis.html#event-handler-idl-attributes // The assumption is that future DOM event attribute names will begin with @@ -6155,10 +6425,44 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { nodeName = nodeName_(this.$$element); - // sanitize a[href] and img[src] values if ((nodeName === 'a' && key === 'href') || (nodeName === 'img' && key === 'src')) { + // sanitize a[href] and img[src] values this[key] = value = $$sanitizeUri(value, key === 'src'); + } else if (nodeName === 'img' && key === 'srcset') { + // sanitize img[srcset] values + var result = ""; + + // first check if there are spaces because it's not the same pattern + var trimmedSrcset = trim(value); + // ( 999x ,| 999w ,| ,|, ) + var srcPattern = /(\s+\d+x\s*,|\s+\d+w\s*,|\s+,|,\s+)/; + var pattern = /\s/.test(trimmedSrcset) ? srcPattern : /(,)/; + + // split srcset into tuple of uri and descriptor except for the last item + var rawUris = trimmedSrcset.split(pattern); + + // for each tuples + var nbrUrisWith2parts = Math.floor(rawUris.length / 2); + for (var i=0; i forEach($compileNodes, function(node, index){ - if (node.nodeType == 3 /* text node */ && node.nodeValue.match(/\S+/) /* non-empty */ ) { + if (node.nodeType == NODE_TYPE_TEXT && node.nodeValue.match(/\S+/) /* non-empty */ ) { $compileNodes[index] = jqLite(node).wrap('').parent()[0]; } }); @@ -6286,27 +6590,28 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { maxPriority, ignoreDirective, previousCompileContext); compile.$$addScopeClass($compileNodes); var namespace = null; - var namespaceAdaptedCompileNodes = $compileNodes; - var lastCompileNode; return function publicLinkFn(scope, cloneConnectFn, transcludeControllers, parentBoundTranscludeFn, futureParentElement){ assertArg(scope, 'scope'); if (!namespace) { namespace = detectNamespaceForChildElements(futureParentElement); } - if (namespace !== 'html' && $compileNodes[0] !== lastCompileNode) { - namespaceAdaptedCompileNodes = jqLite( + var $linkNode; + if (namespace !== 'html') { + // When using a directive with replace:true and templateUrl the $compileNodes + // (or a child element inside of them) + // might change, so we need to recreate the namespace adapted compileNodes + // for call to the link function. + // Note: This will already clone the nodes... + $linkNode = jqLite( wrapTemplate(namespace, jqLite('
').append($compileNodes).html()) ); + } else if (cloneConnectFn) { + // important!!: we must call our jqLite.clone() since the jQuery one is trying to be smart + // and sometimes changes the structure of the DOM. + $linkNode = JQLitePrototype.clone.call($compileNodes); + } else { + $linkNode = $compileNodes; } - // When using a directive with replace:true and templateUrl the $compileNodes - // might change, so we need to recreate the namespace adapted compileNodes. - lastCompileNode = $compileNodes[0]; - - // important!!: we must call our jqLite.clone() since the jQuery one is trying to be smart - // and sometimes changes the structure of the DOM. - var $linkNode = cloneConnectFn - ? JQLitePrototype.clone.call(namespaceAdaptedCompileNodes) // IMPORTANT!!! - : namespaceAdaptedCompileNodes; if (transcludeControllers) { for (var controllerName in transcludeControllers) { @@ -6449,20 +6754,14 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { function createBoundTranscludeFn(scope, transcludeFn, previousBoundTranscludeFn, elementTransclusion) { - var boundTranscludeFn = function(transcludedScope, cloneFn, controllers, futureParentElement) { - var scopeCreated = false; + var boundTranscludeFn = function(transcludedScope, cloneFn, controllers, futureParentElement, containingScope) { if (!transcludedScope) { - transcludedScope = scope.$new(); + transcludedScope = scope.$new(false, containingScope); transcludedScope.$$transcluded = true; - scopeCreated = true; } - var clone = transcludeFn(transcludedScope, cloneFn, controllers, previousBoundTranscludeFn, futureParentElement); - if (scopeCreated && !elementTransclusion) { - clone.on('$destroy', function() { transcludedScope.$destroy(); }); - } - return clone; + return transcludeFn(transcludedScope, cloneFn, controllers, previousBoundTranscludeFn, futureParentElement); }; return boundTranscludeFn; @@ -6485,7 +6784,7 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { className; switch(nodeType) { - case 1: /* Element */ + case NODE_TYPE_ELEMENT: /* Element */ // use the node name: addDirective(directives, directiveNormalize(nodeName_(node)), 'E', maxPriority, ignoreDirective); @@ -6497,37 +6796,35 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { var attrEndName = false; attr = nAttrs[j]; - if (!msie || msie >= 8 || attr.specified) { - name = attr.name; - value = trim(attr.value); + name = attr.name; + value = trim(attr.value); - // support ngAttr attribute binding - ngAttrName = directiveNormalize(name); - if (isNgAttr = NG_ATTR_BINDING.test(ngAttrName)) { - name = snake_case(ngAttrName.substr(6), '-'); - } - - var directiveNName = ngAttrName.replace(/(Start|End)$/, ''); - if (directiveIsMultiElement(directiveNName)) { - if (ngAttrName === directiveNName + 'Start') { - attrStartName = name; - attrEndName = name.substr(0, name.length - 5) + 'end'; - name = name.substr(0, name.length - 6); - } - } - - nName = directiveNormalize(name.toLowerCase()); - attrsMap[nName] = name; - if (isNgAttr || !attrs.hasOwnProperty(nName)) { - attrs[nName] = value; - if (getBooleanAttrName(node, nName)) { - attrs[nName] = true; // presence means true - } - } - addAttrInterpolateDirective(node, directives, value, nName, isNgAttr); - addDirective(directives, nName, 'A', maxPriority, ignoreDirective, attrStartName, - attrEndName); + // support ngAttr attribute binding + ngAttrName = directiveNormalize(name); + if (isNgAttr = NG_ATTR_BINDING.test(ngAttrName)) { + name = snake_case(ngAttrName.substr(6), '-'); } + + var directiveNName = ngAttrName.replace(/(Start|End)$/, ''); + if (directiveIsMultiElement(directiveNName)) { + if (ngAttrName === directiveNName + 'Start') { + attrStartName = name; + attrEndName = name.substr(0, name.length - 5) + 'end'; + name = name.substr(0, name.length - 6); + } + } + + nName = directiveNormalize(name.toLowerCase()); + attrsMap[nName] = name; + if (isNgAttr || !attrs.hasOwnProperty(nName)) { + attrs[nName] = value; + if (getBooleanAttrName(node, nName)) { + attrs[nName] = true; // presence means true + } + } + addAttrInterpolateDirective(node, directives, value, nName, isNgAttr); + addDirective(directives, nName, 'A', maxPriority, ignoreDirective, attrStartName, + attrEndName); } // use class as directive @@ -6542,10 +6839,10 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { } } break; - case 3: /* Text Node */ + case NODE_TYPE_TEXT: /* Text Node */ addTextInterpolateDirective(directives, node.nodeValue); break; - case 8: /* Comment */ + case NODE_TYPE_COMMENT: /* Comment */ try { match = COMMENT_DIRECTIVE_REGEXP.exec(node.nodeValue); if (match) { @@ -6585,7 +6882,7 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { "Unterminated attribute, found '{0}' but no matching '{1}' found.", attrStart, attrEnd); } - if (node.nodeType == 1 /** Element **/) { + if (node.nodeType == NODE_TYPE_ELEMENT) { if (node.hasAttribute(attrStart)) depth++; if (node.hasAttribute(attrEnd)) depth--; } @@ -6764,11 +7061,11 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { if (jqLiteIsTextNode(directiveValue)) { $template = []; } else { - $template = jqLite(wrapTemplate(directive.templateNamespace, trim(directiveValue))); + $template = removeComments(wrapTemplate(directive.templateNamespace, trim(directiveValue))); } compileNode = $template[0]; - if ($template.length != 1 || compileNode.nodeType !== 1) { + if ($template.length != 1 || compileNode.nodeType !== NODE_TYPE_ELEMENT) { throw $compileMinErr('tplrt', "Template for directive '{0}' must have exactly one root element. {1}", directiveName, ''); @@ -6872,14 +7169,26 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { function getControllers(directiveName, require, $element, elementControllers) { var value, retrievalMethod = 'data', optional = false; + var $searchElement = $element; + var match; if (isString(require)) { - while((value = require.charAt(0)) == '^' || value == '?') { - require = require.substr(1); - if (value == '^') { - retrievalMethod = 'inheritedData'; - } - optional = optional || value == '?'; + match = require.match(REQUIRE_PREFIX_REGEXP); + require = require.substring(match[0].length); + + if (match[3]) { + if (match[1]) match[3] = null; + else match[1] = match[3]; } + if (match[1] === '^') { + retrievalMethod = 'inheritedData'; + } else if (match[1] === '^^') { + retrievalMethod = 'inheritedData'; + $searchElement = $element.parent(); + } + if (match[2] === '?') { + optional = true; + } + value = null; if (elementControllers && retrievalMethod === 'data') { @@ -6887,7 +7196,7 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { value = value.instance; } } - value = value || $element[retrievalMethod]('$' + require + 'Controller'); + value = value || $searchElement[retrievalMethod]('$' + require + 'Controller'); if (!value && !optional) { throw $compileMinErr('ctreq', @@ -7093,7 +7402,7 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { if (!futureParentElement) { futureParentElement = hasElementTranscludeDirective ? $element.parent() : $element; } - return boundTranscludeFn(scope, cloneAttachFn, transcludeControllers, futureParentElement); + return boundTranscludeFn(scope, cloneAttachFn, transcludeControllers, futureParentElement, scopeToChild); } } } @@ -7234,11 +7543,11 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { if (jqLiteIsTextNode(content)) { $template = []; } else { - $template = jqLite(wrapTemplate(templateNamespace, trim(content))); + $template = removeComments(wrapTemplate(templateNamespace, trim(content))); } compileNode = $template[0]; - if ($template.length != 1 || compileNode.nodeType !== 1) { + if ($template.length != 1 || compileNode.nodeType !== NODE_TYPE_ELEMENT) { throw $compileMinErr('tplrt', "Template for directive '{0}' must have exactly one root element. {1}", origAsyncDirective.name, templateUrl); @@ -7277,6 +7586,8 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { boundTranscludeFn = linkQueue.shift(), linkNode = $compileNode[0]; + if (scope.$$destroyed) continue; + if (beforeTemplateLinkNode !== beforeTemplateCompileNode) { var oldClasses = beforeTemplateLinkNode.className; @@ -7303,6 +7614,7 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { return function delayedNodeLinkFn(ignoreChildLinkFn, scope, node, rootElement, boundTranscludeFn) { var childBoundTranscludeFn = boundTranscludeFn; + if (scope.$$destroyed) return; if (linkQueue) { linkQueue.push(scope); linkQueue.push(node); @@ -7419,6 +7731,11 @@ function $CompileProvider($provide, $$sanitizeUriProvider) { "ng- versions (such as ng-click instead of onclick) instead."); } + // If the attribute was removed, then we are done + if (!attr[name]) { + return; + } + // we need to interpolate again, in case the attribute value has been updated // (e.g. by another directive's compile function) interpolateFn = $interpolate(attr[name], true, getTrustedContext(node, name), @@ -7646,6 +7963,23 @@ function tokenDifference(str1, str2) { return values; } +function removeComments(jqNodes) { + jqNodes = jqLite(jqNodes); + var i = jqNodes.length; + + if (i <= 1) { + return jqNodes; + } + + while (i--) { + var node = jqNodes[i]; + if (node.nodeType === NODE_TYPE_COMMENT) { + splice.call(jqNodes, i, 1); + } + } + return jqNodes; +} + /** * @ngdoc provider * @name $controllerProvider @@ -7949,7 +8283,8 @@ function $HttpProvider() { var JSON_START = /^\s*(\[|\{[^\{])/, JSON_END = /[\}\]]\s*$/, PROTECTION_PREFIX = /^\)\]\}',?\n/, - CONTENT_TYPE_APPLICATION_JSON = {'Content-Type': 'application/json;charset=utf-8'}; + APPLICATION_JSON = 'application/json', + CONTENT_TYPE_APPLICATION_JSON = {'Content-Type': APPLICATION_JSON + ';charset=utf-8'}; /** * @ngdoc property @@ -7974,12 +8309,15 @@ function $HttpProvider() { **/ var defaults = this.defaults = { // transform incoming response data - transformResponse: [function(data) { + transformResponse: [function defaultHttpResponseTransform(data, headers) { if (isString(data)) { // strip json vulnerability protection prefix data = data.replace(PROTECTION_PREFIX, ''); - if (JSON_START.test(data) && JSON_END.test(data)) + var contentType = headers('Content-Type'); + if ((contentType && contentType.indexOf(APPLICATION_JSON) === 0) || + (JSON_START.test(data) && JSON_END.test(data))) { data = fromJson(data); + } } return data; }], @@ -8937,18 +9275,8 @@ function $HttpProvider() { }]; } -function createXhr(method) { - //if IE and the method is not RFC2616 compliant, or if XMLHttpRequest - //is not available, try getting an ActiveXObject. Otherwise, use XMLHttpRequest - //if it is available - if (msie <= 8 && (!method.match(/^(get|post|head|put|delete|options)$/i) || - !window.XMLHttpRequest)) { - return new window.ActiveXObject("Microsoft.XMLHTTP"); - } else if (window.XMLHttpRequest) { - return new window.XMLHttpRequest(); - } - - throw minErr('$httpBackend')('noxhr', "This browser does not support XMLHttpRequest."); +function createXhr() { + return new window.XMLHttpRequest(); } /** @@ -8974,11 +9302,8 @@ function $HttpBackendProvider() { } function createHttpBackend($browser, createXhr, $browserDefer, callbacks, rawDocument) { - var ABORTED = -1; - // TODO(vojta): fix the signature return function(method, url, post, callback, headers, timeout, withCredentials, responseType) { - var status; $browser.$$incOutstandingRequestCount(); url = url || $browser.url(); @@ -8996,7 +9321,7 @@ function createHttpBackend($browser, createXhr, $browserDefer, callbacks, rawDoc }); } else { - var xhr = createXhr(method); + var xhr = createXhr(); xhr.open(method, url, true); forEach(headers, function(value, key) { @@ -9005,44 +9330,39 @@ function createHttpBackend($browser, createXhr, $browserDefer, callbacks, rawDoc } }); - // In IE6 and 7, this might be called synchronously when xhr.send below is called and the - // response is in the cache. the promise api will ensure that to the app code the api is - // always async - xhr.onreadystatechange = function() { - // onreadystatechange might get called multiple times with readyState === 4 on mobile webkit caused by - // xhrs that are resolved while the app is in the background (see #5426). - // since calling completeRequest sets the `xhr` variable to null, we just check if it's not null before - // continuing - // - // we can't set xhr.onreadystatechange to undefined or delete it because that breaks IE8 (method=PATCH) and - // Safari respectively. - if (xhr && xhr.readyState == 4) { - var responseHeaders = null, - response = null, - statusText = ''; + xhr.onload = function requestLoaded() { + var statusText = xhr.statusText || ''; - if(status !== ABORTED) { - responseHeaders = xhr.getAllResponseHeaders(); + // responseText is the old-school way of retrieving response (supported by IE8 & 9) + // response/responseType properties were introduced in XHR Level2 spec (supported by IE10) + var response = ('response' in xhr) ? xhr.response : xhr.responseText; - // responseText is the old-school way of retrieving response (supported by IE8 & 9) - // response/responseType properties were introduced in XHR Level2 spec (supported by IE10) - response = ('response' in xhr) ? xhr.response : xhr.responseText; - } + // normalize IE9 bug (http://bugs.jquery.com/ticket/1450) + var status = xhr.status === 1223 ? 204 : xhr.status; - // Accessing statusText on an aborted xhr object will - // throw an 'c00c023f error' in IE9 and lower, don't touch it. - if (!(status === ABORTED && msie < 10)) { - statusText = xhr.statusText; - } - - completeRequest(callback, - status || xhr.status, - response, - responseHeaders, - statusText); + // fix status code when it is 0 (0 status is undocumented). + // Occurs when accessing file resources or on Android 4.1 stock browser + // while retrieving files from application cache. + if (status === 0) { + status = response ? 200 : urlResolve(url).protocol == 'file' ? 404 : 0; } + + completeRequest(callback, + status, + response, + xhr.getAllResponseHeaders(), + statusText); }; + var requestError = function () { + // The response is always empty + // See https://xhr.spec.whatwg.org/#request-error-steps and https://fetch.spec.whatwg.org/#concept-network-error + completeRequest(callback, -1, null, null, ''); + }; + + xhr.onerror = requestError; + xhr.onabort = requestError; + if (withCredentials) { xhr.withCredentials = true; } @@ -9075,7 +9395,6 @@ function createHttpBackend($browser, createXhr, $browserDefer, callbacks, rawDoc function timeoutRequest() { - status = ABORTED; jsonpDone && jsonpDone(); xhr && xhr.abort(); } @@ -9085,17 +9404,6 @@ function createHttpBackend($browser, createXhr, $browserDefer, callbacks, rawDoc timeoutId && $browserDefer.cancel(timeoutId); jsonpDone = xhr = null; - // fix status code when it is 0 (0 status is undocumented). - // Occurs when accessing file resources or on Android 4.1 stock browser - // while retrieving files from application cache. - if (status === 0) { - status = response ? 200 : urlResolve(url).protocol == 'file' ? 404 : 0; - } - - // normalize IE bug (http://bugs.jquery.com/ticket/1450) - status = status === 1223 ? 204 : status; - statusText = statusText || ''; - callback(status, response, headersString, statusText); $browser.$$completeOutstandingRequest(noop); } @@ -10047,9 +10355,7 @@ function LocationHashbangInHtml5Url(appBase, hashPrefix) { } -LocationHashbangInHtml5Url.prototype = - LocationHashbangUrl.prototype = - LocationHtml5Url.prototype = { +var locationPrototype = { /** * Are we in html5 mode? @@ -10058,7 +10364,7 @@ LocationHashbangInHtml5Url.prototype = $$html5: false, /** - * Has any change been replacing ? + * Has any change been replacing? * @private */ $$replace: false, @@ -10160,7 +10466,7 @@ LocationHashbangInHtml5Url.prototype = * @return {string} path */ path: locationGetterSetter('$$path', function(path) { - path = path ? path.toString() : ''; + path = path !== null ? path.toString() : ''; return path.charAt(0) == '/' ? path : '/' + path; }), @@ -10257,7 +10563,7 @@ LocationHashbangInHtml5Url.prototype = * @return {string} hash */ hash: locationGetterSetter('$$hash', function(hash) { - return hash ? hash.toString() : ''; + return hash !== null ? hash.toString() : ''; }), /** @@ -10274,6 +10580,46 @@ LocationHashbangInHtml5Url.prototype = } }; +forEach([LocationHashbangInHtml5Url, LocationHashbangUrl, LocationHtml5Url], function (Location) { + Location.prototype = Object.create(locationPrototype); + + /** + * @ngdoc method + * @name $location#state + * + * @description + * This method is getter / setter. + * + * Return the history state object when called without any parameter. + * + * Change the history state object when called with one parameter and return `$location`. + * The state object is later passed to `pushState` or `replaceState`. + * + * NOTE: This method is supported only in HTML5 mode and only in browsers supporting + * the HTML5 History API (i.e. methods `pushState` and `replaceState`). If you need to support + * older browsers (like IE9 or Android < 4.0), don't use this method. + * + * @param {object=} state State object for pushState or replaceState + * @return {object} state + */ + Location.prototype.state = function(state) { + if (!arguments.length) + return this.$$state; + + if (Location !== LocationHtml5Url || !this.$$html5) { + throw $locationMinErr('nostate', 'History API state support is available only ' + + 'in HTML5 mode and only in browsers supporting HTML5 History API'); + } + // The user might modify `stateObject` after invoking `$location.state(stateObject)` + // but we're changing the $$state reference to $browser.state() during the $digest + // so the modification window is narrow. + this.$$state = isUndefined(state) ? null : state; + + return this; + }; +}); + + function locationGetter(property) { return function() { return this[property]; @@ -10330,7 +10676,8 @@ function $LocationProvider(){ var hashPrefix = '', html5Mode = { enabled: false, - requireBase: true + requireBase: true, + rewriteLinks: true }; /** @@ -10354,15 +10701,17 @@ function $LocationProvider(){ * @name $locationProvider#html5Mode * @description * @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 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} + * If object, sets `enabled`, `requireBase` and `rewriteLinks` to respective values. Supported + * properties: + * - **enabled** – `{boolean}` – (default: false) 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}` - (default: `true`) When html5Mode is enabled, specifies + * whether or not a 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} + * - **rewriteLinks** - `{boolean}` - (default: `false`) When html5Mode is enabled, disables + * url rewriting for relative linksTurns off url rewriting for relative links. * * @returns {Object} html5Mode object if used as getter or itself (chaining) if used as setter */ @@ -10371,12 +10720,19 @@ function $LocationProvider(){ 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; + + if (isBoolean(mode.enabled)) { + html5Mode.enabled = mode.enabled; + } + + if (isBoolean(mode.requireBase)) { + html5Mode.requireBase = mode.requireBase; + } + + if (isBoolean(mode.rewriteLinks)) { + html5Mode.rewriteLinks = mode.rewriteLinks; + } + return this; } else { return html5Mode; @@ -10388,14 +10744,21 @@ function $LocationProvider(){ * @name $location#$locationChangeStart * @eventType broadcast on root scope * @description - * Broadcasted before a URL will change. This change can be prevented by calling + * Broadcasted before a URL will change. + * + * This change can be prevented by calling * `preventDefault` method of the event. See {@link ng.$rootScope.Scope#$on} for more * details about event object. Upon successful change * {@link ng.$location#events_$locationChangeSuccess $locationChangeSuccess} is fired. * + * The `newState` and `oldState` parameters may be defined only in HTML5 mode and when + * the browser supports the HTML5 History API. + * * @param {Object} angularEvent Synthetic event object. * @param {string} newUrl New URL * @param {string=} oldUrl URL that was before it was changed. + * @param {string=} newState New history state object + * @param {string=} oldState History state object that was before it was changed. */ /** @@ -10405,9 +10768,14 @@ function $LocationProvider(){ * @description * Broadcasted after a URL was changed. * + * The `newState` and `oldState` parameters may be defined only in HTML5 mode and when + * the browser supports the HTML5 History API. + * * @param {Object} angularEvent Synthetic event object. * @param {string} newUrl New URL * @param {string=} oldUrl URL that was before it was changed. + * @param {string=} newState New history state object + * @param {string=} oldState History state object that was before it was changed. */ this.$get = ['$rootScope', '$browser', '$sniffer', '$rootElement', @@ -10432,13 +10800,34 @@ function $LocationProvider(){ $location = new LocationMode(appBase, '#' + hashPrefix); $location.$$parseLinkUrl(initialUrl, initialUrl); + $location.$$state = $browser.state(); + var IGNORE_URI_REGEXP = /^\s*(javascript|mailto):/i; + function setBrowserUrlWithFallback(url, replace, state) { + var oldUrl = $location.url(); + var oldState = $location.$$state; + try { + $browser.url(url, replace, state); + + // Make sure $location.state() returns referentially identical (not just deeply equal) + // state object; this makes possible quick checking if the state changed in the digest + // loop. Checking deep equality would be too expensive. + $location.$$state = $browser.state(); + } catch (e) { + // Restore old values if pushState fails + $location.url(oldUrl); + $location.$$state = oldState; + + throw e; + } + } + $rootElement.on('click', function(event) { // TODO(vojta): rewrite link when opening in new tab/window (in legacy browser) // currently we open nice url link and redirect then - if (event.ctrlKey || event.metaKey || event.which == 2) return; + if (!html5Mode.rewriteLinks || event.ctrlKey || event.metaKey || event.which == 2) return; var elm = jqLite(event.target); @@ -10464,6 +10853,9 @@ function $LocationProvider(){ if (absHref && !elm.attr('target') && !event.isDefaultPrevented()) { if ($location.$$parseLinkUrl(absHref, relHref)) { + // We do a preventDefault for all urls that are part of the angular application, + // in html5mode and also without, so that we are able to abort navigation without + // getting double entries in the location history. event.preventDefault(); // update location manually if ($location.absUrl() != $browser.url()) { @@ -10481,52 +10873,63 @@ function $LocationProvider(){ $browser.url($location.absUrl(), true); } - // update $location when $browser url changes - $browser.onUrlChange(function(newUrl) { - if ($location.absUrl() != newUrl) { - $rootScope.$evalAsync(function() { - var oldUrl = $location.absUrl(); + var initializing = true; - $location.$$parse(newUrl); - if ($rootScope.$broadcast('$locationChangeStart', newUrl, - oldUrl).defaultPrevented) { - $location.$$parse(oldUrl); - $browser.url(oldUrl); - } else { - afterLocationChange(oldUrl); - } - }); - if (!$rootScope.$$phase) $rootScope.$digest(); - } + // update $location when $browser url changes + $browser.onUrlChange(function(newUrl, newState) { + $rootScope.$evalAsync(function() { + var oldUrl = $location.absUrl(); + var oldState = $location.$$state; + + $location.$$parse(newUrl); + $location.$$state = newState; + if ($rootScope.$broadcast('$locationChangeStart', newUrl, oldUrl, + newState, oldState).defaultPrevented) { + $location.$$parse(oldUrl); + $location.$$state = oldState; + setBrowserUrlWithFallback(oldUrl, false, oldState); + } else { + initializing = false; + afterLocationChange(oldUrl, oldState); + } + }); + if (!$rootScope.$$phase) $rootScope.$digest(); }); // update browser - var changeCounter = 0; $rootScope.$watch(function $locationWatch() { var oldUrl = $browser.url(); + var oldState = $browser.state(); var currentReplace = $location.$$replace; - if (!changeCounter || oldUrl != $location.absUrl()) { - changeCounter++; + if (initializing || oldUrl !== $location.absUrl() || + ($location.$$html5 && $sniffer.history && oldState !== $location.$$state)) { + initializing = false; + $rootScope.$evalAsync(function() { - if ($rootScope.$broadcast('$locationChangeStart', $location.absUrl(), oldUrl). - defaultPrevented) { + if ($rootScope.$broadcast('$locationChangeStart', $location.absUrl(), oldUrl, + $location.$$state, oldState).defaultPrevented) { $location.$$parse(oldUrl); + $location.$$state = oldState; } else { - $browser.url($location.absUrl(), currentReplace); - afterLocationChange(oldUrl); + setBrowserUrlWithFallback($location.absUrl(), currentReplace, + oldState === $location.$$state ? null : $location.$$state); + afterLocationChange(oldUrl, oldState); } }); } + $location.$$replace = false; - return changeCounter; + // we don't need to return anything because $evalAsync will make the digest loop dirty when + // there is a change }); return $location; - function afterLocationChange(oldUrl) { - $rootScope.$broadcast('$locationChangeSuccess', $location.absUrl(), oldUrl); + function afterLocationChange(oldUrl, oldState) { + $rootScope.$broadcast('$locationChangeSuccess', $location.absUrl(), oldUrl, + $location.$$state, oldState); } }]; } @@ -10785,6 +11188,11 @@ forEach({ CONSTANTS[name] = constantGetter; }); +//Not quite a constant, but can be lex/parsed the same +CONSTANTS['this'] = function(self) { return self; }; +CONSTANTS['this'].sharedGetter = true; + + //Operators - will be wrapped by binaryFn/unaryFn/assignment/filter var OPERATORS = extend(createMap(), { /* jshint bitwise : false */ @@ -12648,14 +13056,11 @@ function $RootScopeProvider(){ this.$$phase = this.$parent = this.$$watchers = this.$$nextSibling = this.$$prevSibling = this.$$childHead = this.$$childTail = null; - this['this'] = this.$root = this; + this.$root = this; this.$$destroyed = false; - this.$$asyncQueue = []; - this.$$postDigestQueue = []; this.$$listeners = {}; this.$$listenerCount = {}; this.$$isolateBindings = null; - this.$$applyAsyncQueue = []; } /** @@ -12704,18 +13109,23 @@ function $RootScopeProvider(){ * When creating widgets, it is useful for the widget to not accidentally read parent * state. * + * @param {Scope} [parent=this] The {@link ng.$rootScope.Scope `Scope`} that will be the `$parent` + * of the newly created scope. Defaults to `this` scope if not provided. + * This is used when creating a transclude scope to correctly place it + * in the scope hierarchy while maintaining the correct prototypical + * inheritance. + * * @returns {Object} The newly created child scope. * */ - $new: function(isolate) { + $new: function(isolate, parent) { var child; + parent = parent || this; + if (isolate) { child = new Scope(); child.$root = this.$root; - // ensure that there is just one async queue per $rootScope and its children - child.$$asyncQueue = this.$$asyncQueue; - child.$$postDigestQueue = this.$$postDigestQueue; } else { // Only create a child scope class if somebody asks for one, // but cache it to allow the VM to optimize lookups. @@ -12732,16 +13142,27 @@ function $RootScopeProvider(){ } child = new this.$$ChildScope(); } - child['this'] = child; - child.$parent = this; - child.$$prevSibling = this.$$childTail; - if (this.$$childHead) { - this.$$childTail.$$nextSibling = child; - this.$$childTail = child; + child.$parent = parent; + child.$$prevSibling = parent.$$childTail; + if (parent.$$childHead) { + parent.$$childTail.$$nextSibling = child; + parent.$$childTail = child; } else { - this.$$childHead = this.$$childTail = child; + parent.$$childHead = parent.$$childTail = child; } + + // When the new scope is not isolated or we inherit from `this`, and + // the parent scope is destroyed, the property `$$destroyed` is inherited + // prototypically. In all other cases, this property needs to be set + // when the parent scope is destroyed. + // The listener needs to be added after the parent is set + if (isolate || parent != this) child.$on('$destroy', destroyChild); + return child; + + function destroyChild() { + child.$$destroyed = true; + } }, /** @@ -13217,8 +13638,6 @@ function $RootScopeProvider(){ $digest: function() { var watch, value, last, watchers, - asyncQueue = this.$$asyncQueue, - postDigestQueue = this.$$postDigestQueue, length, dirty, ttl = TTL, next, current, target = this, @@ -13383,6 +13802,10 @@ function $RootScopeProvider(){ if (this.$$prevSibling) this.$$prevSibling.$$nextSibling = this.$$nextSibling; if (this.$$nextSibling) this.$$nextSibling.$$prevSibling = this.$$prevSibling; + // Disable listeners, watchers and apply/digest methods + this.$destroy = this.$digest = this.$apply = this.$evalAsync = this.$applyAsync = noop; + this.$on = this.$watch = this.$watchGroup = function() { return noop; }; + this.$$listeners = {}; // All of the code below is bogus code that works around V8's memory leak via optimized code // and inline caches. @@ -13393,15 +13816,7 @@ function $RootScopeProvider(){ // - https://github.com/angular/angular.js/issues/1313#issuecomment-10378451 this.$parent = this.$$nextSibling = this.$$prevSibling = this.$$childHead = - this.$$childTail = this.$root = null; - - // don't reset these to null in case some async task tries to register a listener/watch/task - this.$$listeners = {}; - this.$$watchers = this.$$asyncQueue = this.$$postDigestQueue = []; - - // prevent NPEs since these methods have references to properties we nulled out - this.$destroy = this.$digest = this.$apply = noop; - this.$on = this.$watch = this.$watchGroup = function() { return noop; }; + this.$$childTail = this.$root = this.$$watchers = null; }, /** @@ -13468,19 +13883,19 @@ function $RootScopeProvider(){ $evalAsync: function(expr) { // if we are outside of an $digest loop and this is the first time we are scheduling async // task also schedule async auto-flush - if (!$rootScope.$$phase && !$rootScope.$$asyncQueue.length) { + if (!$rootScope.$$phase && !asyncQueue.length) { $browser.defer(function() { - if ($rootScope.$$asyncQueue.length) { + if (asyncQueue.length) { $rootScope.$digest(); } }); } - this.$$asyncQueue.push({scope: this, expression: expr}); + asyncQueue.push({scope: this, expression: expr}); }, $$postDigest : function(fn) { - this.$$postDigestQueue.push(fn); + postDigestQueue.push(fn); }, /** @@ -13564,7 +13979,7 @@ function $RootScopeProvider(){ */ $applyAsync: function(expr) { var scope = this; - expr && $rootScope.$$applyAsyncQueue.push($applyAsyncExpression); + expr && applyAsyncQueue.push($applyAsyncExpression); scheduleApplyAsync(); function $applyAsyncExpression() { @@ -13773,6 +14188,11 @@ function $RootScopeProvider(){ var $rootScope = new Scope(); + //The internal queues. Expose them on the $rootScope for debugging/testing purposes. + var asyncQueue = $rootScope.$$asyncQueue = []; + var postDigestQueue = $rootScope.$$postDigestQueue = []; + var applyAsyncQueue = $rootScope.$$applyAsyncQueue = []; + return $rootScope; @@ -13806,10 +14226,9 @@ function $RootScopeProvider(){ function initWatchVal() {} function flushApplyAsync() { - var queue = $rootScope.$$applyAsyncQueue; - while (queue.length) { + while (applyAsyncQueue.length) { try { - queue.shift()(); + applyAsyncQueue.shift()(); } catch(e) { $exceptionHandler(e); } @@ -13888,12 +14307,9 @@ function $$SanitizeUriProvider() { return function sanitizeUri(uri, isImage) { var regex = isImage ? imgSrcSanitizationWhitelist : aHrefSanitizationWhitelist; var normalizedVal; - // NOTE: urlResolve() doesn't support IE < 8 so we don't sanitize for that case. - if (!msie || msie >= 8 ) { - normalizedVal = urlResolve(uri).href; - if (normalizedVal !== '' && !normalizedVal.match(regex)) { - return 'unsafe:'+normalizedVal; - } + normalizedVal = urlResolve(uri).href; + if (normalizedVal !== '' && !normalizedVal.match(regex)) { + return 'unsafe:'+normalizedVal; } return uri; }; @@ -14965,7 +15381,6 @@ function $SceProvider() { * @requires $document * * @property {boolean} history Does the browser support html5 history api ? - * @property {boolean} hashchange Does the browser support hashchange event ? * @property {boolean} transitions Does the browser support CSS transition events ? * @property {boolean} animations Does the browser support CSS animation events ? * @@ -15022,9 +15437,6 @@ function $SnifferProvider() { // jshint -W018 history: !!($window.history && $window.history.pushState && !(android < 4) && !boxee), // jshint +W018 - hashchange: 'onhashchange' in $window && - // IE8 compatible mode lies - (!documentMode || documentMode > 7), hasEvent: function(event) { // IE9 implements 'input' event it's so fubared that we rather pretend that it doesn't have // it. In particular the event is not fired when backspace or delete key are pressed or @@ -16494,7 +16906,7 @@ function limitToFilter(){ * correctly, make sure they are actually being saved as numbers and not strings. * * @param {Array} array The array to sort. - * @param {function(*)|string|Array.<(function(*)|string)>} expression A predicate to be + * @param {function(*)|string|Array.<(function(*)|string)>=} expression A predicate to be * used by the comparator to determine the order of elements. * * Can be one of: @@ -16507,10 +16919,13 @@ function limitToFilter(){ * is interpreted as a property name to be used in comparisons (for example `"special name"` * to sort object by the value of their `special name` property). An expression can be * optionally prefixed with `+` or `-` to control ascending or descending sort order - * (for example, `+name` or `-name`). + * (for example, `+name` or `-name`). If no property is provided, (e.g. `'+'`) then the array + * element itself is used to compare where sorting. * - `Array`: An array of function or string predicates. The first predicate in the array * is used for sorting, but when two items are equivalent, the next predicate is used. * + * If the predicate is missing or empty then it defaults to `'+'`. + * * @param {boolean=} reverse Reverse the order of the array. * @returns {Array} Sorted copy of the source array. * @@ -16599,8 +17014,8 @@ orderByFilter.$inject = ['$parse']; function orderByFilter($parse){ return function(array, sortPredicate, reverseOrder) { if (!(isArrayLike(array))) return array; - if (!sortPredicate) return array; sortPredicate = isArray(sortPredicate) ? sortPredicate: [sortPredicate]; + if (sortPredicate.length === 0) { sortPredicate = ['+']; } sortPredicate = sortPredicate.map(function(predicate){ var descending = false, get = predicate || identity; if (isString(predicate)) { @@ -16608,6 +17023,12 @@ function orderByFilter($parse){ descending = predicate.charAt(0) == '-'; predicate = predicate.substring(1); } + if ( predicate === '' ) { + // Effectively no predicate was passed so we compare identity + return reverseComparator(function(a,b) { + return compare(a, b); + }, descending); + } get = $parse(predicate); if (get.constant) { var key = get(); @@ -16683,22 +17104,6 @@ function ngDirective(directive) { var htmlAnchorDirective = valueFn({ restrict: 'E', compile: function(element, attr) { - - if (msie <= 8) { - - // turn link into a stylable link in IE - // but only if it doesn't have name attribute, in which case it's an anchor - if (!attr.href && !attr.name) { - attr.$set('href', ''); - } - - // add a comment node to anchors to workaround IE bug that causes element content to be reset - // to new attribute content if attribute is updated with value containing @ and element also - // contains value with @ - // see issue #1949 - element.append(document.createComment('IE fix')); - } - if (!attr.href && !attr.xlinkHref && !attr.name) { return function(scope, element) { // SVGAElement does not use the href attribute, but rather the 'xlinkHref' attribute. @@ -17146,11 +17551,9 @@ var nullFormCtrl = { $$renameControl: nullFormRenameControl, $removeControl: noop, $setValidity: noop, - $$setPending: noop, $setDirty: noop, $setPristine: noop, - $setSubmitted: noop, - $$clearControlValidity: noop + $setSubmitted: noop }, SUBMITTED_CLASS = 'ng-submitted'; @@ -17215,9 +17618,6 @@ function FormController(element, attrs, $scope, $animate, $interpolate) { parentForm.$addControl(form); - // Setup initial state of the control - element.addClass(PRISTINE_CLASS); - /** * @ngdoc method * @name form.FormController#$rollbackViewValue @@ -17590,10 +17990,14 @@ var formDirectiveFactory = function(isNgForm) { name: 'form', restrict: isNgForm ? 'EAC' : 'E', controller: FormController, - compile: function() { + compile: function ngFormCompile(formElement) { + // Setup initial state of the control + formElement.addClass(PRISTINE_CLASS).addClass(VALID_CLASS); + return { - pre: function(scope, formElement, attr, controller) { - if (!attr.action) { + pre: function ngFormPreLink(scope, formElement, attr, controller) { + // if `action` attr is not present on the form, prevent the default action (submission) + if (!('action' in attr)) { // we can't use jq events because if a form is destroyed during submission the default // action is not prevented. see #1238 // @@ -18747,16 +19151,15 @@ function createDateInputType(type, regexp, parseDate, format) { badInputChecker(scope, element, attr, ctrl); baseInputType(scope, element, attr, ctrl, $sniffer, $browser); var timezone = ctrl && ctrl.$options && ctrl.$options.timezone; + var previousDate; ctrl.$$parserName = type; ctrl.$parsers.push(function(value) { if (ctrl.$isEmpty(value)) return null; if (regexp.test(value)) { - var previousDate = ctrl.$modelValue; - if (previousDate && timezone === 'UTC') { - var timezoneOffset = 60000 * previousDate.getTimezoneOffset(); - previousDate = new Date(previousDate.getTime() + timezoneOffset); - } + // Note: We cannot read ctrl.$modelValue, as there might be a different + // parser/formatter in the processing chain so that the model + // contains some different data format! var parsedDate = parseDate(value, previousDate); if (timezone === 'UTC') { parsedDate.setMinutes(parsedDate.getMinutes() - parsedDate.getTimezoneOffset()); @@ -18767,8 +19170,18 @@ function createDateInputType(type, regexp, parseDate, format) { }); ctrl.$formatters.push(function(value) { - if (isDate(value)) { + if (!ctrl.$isEmpty(value)) { + if (!isDate(value)) { + throw $ngModelMinErr('datefmt', 'Expected `{0}` to be a date', value); + } + previousDate = value; + if (previousDate && timezone === 'UTC') { + var timezoneOffset = 60000 * previousDate.getTimezoneOffset(); + previousDate = new Date(previousDate.getTime() + timezoneOffset); + } return $filter('date')(value, format, timezone); + } else { + previousDate = null; } return ''; }); @@ -18794,6 +19207,11 @@ function createDateInputType(type, regexp, parseDate, format) { ctrl.$validate(); }); } + // Override the standard $isEmpty to detect invalid dates as well + ctrl.$isEmpty = function(value) { + // Invalid Date: getTime() returns NaN + return !value || (value.getTime && value.getTime() !== value.getTime()); + }; function parseObservedDateValue(val) { return isDefined(val) ? (isDate(val) ? val : parseDate(val)) : undefined; @@ -19108,10 +19526,12 @@ var inputDirective = ['$browser', '$sniffer', '$filter', '$parse', return { restrict: 'E', require: ['?ngModel'], - link: function(scope, element, attr, ctrls) { - if (ctrls[0]) { - (inputType[lowercase(attr.type)] || inputType.text)(scope, element, attr, ctrls[0], $sniffer, - $browser, $filter, $parse); + link: { + pre: function(scope, element, attr, ctrls) { + if (ctrls[0]) { + (inputType[lowercase(attr.type)] || inputType.text)(scope, element, attr, ctrls[0], $sniffer, + $browser, $filter, $parse); + } } } }; @@ -19412,11 +19832,6 @@ var NgModelController = ['$scope', '$exceptionHandler', '$attrs', '$element', '$ var parentForm = $element.inheritedData('$formController') || nullFormCtrl, currentValidationRunId = 0; - // Setup initial state of the control - $element - .addClass(PRISTINE_CLASS) - .addClass(UNTOUCHED_CLASS); - /** * @ngdoc method * @name ngModel.NgModelController#$setValidity @@ -19709,14 +20124,17 @@ var NgModelController = ['$scope', '$exceptionHandler', '$attrs', '$element', '$ }; this.$$parseAndValidate = function() { - var parserValid = true, - viewValue = ctrl.$$lastCommittedViewValue, - modelValue = viewValue; - for(var i = 0; i < ctrl.$parsers.length; i++) { - modelValue = ctrl.$parsers[i](modelValue); - if (isUndefined(modelValue)) { - parserValid = false; - break; + var viewValue = ctrl.$$lastCommittedViewValue; + var modelValue = viewValue; + var parserValid = isUndefined(modelValue) ? undefined : true; + + if (parserValid) { + for(var i = 0; i < ctrl.$parsers.length; i++) { + modelValue = ctrl.$parsers[i](modelValue); + if (isUndefined(modelValue)) { + parserValid = false; + break; + } } } if (isNumber(ctrl.$modelValue) && isNaN(ctrl.$modelValue)) { @@ -20033,42 +20451,51 @@ var ngModelDirective = function() { restrict: 'A', require: ['ngModel', '^?form', '^?ngModelOptions'], controller: NgModelController, - link: { - pre: function(scope, element, attr, ctrls) { - var modelCtrl = ctrls[0], - formCtrl = ctrls[1] || nullFormCtrl; + // Prelink needs to run before any input directive + // so that we can set the NgModelOptions in NgModelController + // before anyone else uses it. + priority: 1, + compile: function ngModelCompile(element) { + // Setup initial state of the control + element.addClass(PRISTINE_CLASS).addClass(UNTOUCHED_CLASS).addClass(VALID_CLASS); - modelCtrl.$$setOptions(ctrls[2] && ctrls[2].$options); + return { + pre: function ngModelPreLink(scope, element, attr, ctrls) { + var modelCtrl = ctrls[0], + formCtrl = ctrls[1] || nullFormCtrl; - // notify others, especially parent forms - formCtrl.$addControl(modelCtrl); + modelCtrl.$$setOptions(ctrls[2] && ctrls[2].$options); - attr.$observe('name', function(newValue) { - if (modelCtrl.$name !== newValue) { - formCtrl.$$renameControl(modelCtrl, newValue); + // 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); + }); + }, + post: function ngModelPostLink(scope, element, attr, ctrls) { + var modelCtrl = ctrls[0]; + if (modelCtrl.$options && modelCtrl.$options.updateOn) { + element.on(modelCtrl.$options.updateOn, function(ev) { + modelCtrl.$$debounceViewValueCommit(ev && ev.type); + }); } - }); - scope.$on('$destroy', function() { - formCtrl.$removeControl(modelCtrl); - }); - }, - post: function(scope, element, attr, ctrls) { - var modelCtrl = ctrls[0]; - if (modelCtrl.$options && modelCtrl.$options.updateOn) { - element.on(modelCtrl.$options.updateOn, function(ev) { - modelCtrl.$$debounceViewValueCommit(ev && ev.type); + element.on('blur', function(ev) { + if (modelCtrl.$touched) return; + + scope.$apply(function() { + modelCtrl.$setTouched(); + }); }); } - - element.on('blur', function(ev) { - if (modelCtrl.$touched) return; - - scope.$apply(function() { - modelCtrl.$setTouched(); - }); - }); - } + }; } }; }; @@ -20623,8 +21050,9 @@ function addSetValidityMethod(context) { parentForm = context.parentForm, $animate = context.$animate; + classCache[INVALID_CLASS] = !(classCache[VALID_CLASS] = $element.hasClass(VALID_CLASS)); + ctrl.$setValidity = setValidity; - toggleValidationCss('', true); function setValidity(validationErrorKey, state, options) { if (state === undefined) { @@ -20774,11 +21202,9 @@ var ngBindDirective = ['$compile', function($compile) { $compile.$$addBindingClass(templateElement); return function ngBindLink(scope, element, attr) { $compile.$$addBindingInfo(element, attr.ngBind); + element = element[0]; scope.$watch(attr.ngBind, function ngBindWatchAction(value) { - // We are purposefully using == here rather than === because we want to - // catch when value is "null or undefined" - // jshint -W041 - element.text(value == undefined ? '' : value); + element.textContent = value === undefined ? '' : value; }); }; } @@ -20844,8 +21270,9 @@ var ngBindTemplateDirective = ['$interpolate', '$compile', function($interpolate return function ngBindTemplateLink(scope, element, attr) { var interpolateFn = $interpolate(element.attr(attr.$attr.ngBindTemplate)); $compile.$$addBindingInfo(element, interpolateFn.expressions); + element = element[0]; attr.$observe('ngBindTemplate', function(value) { - element.text(value); + element.textContent = value === undefined ? '' : value; }); }; } @@ -20862,7 +21289,10 @@ var ngBindTemplateDirective = ['$interpolate', '$compile', function($interpolate * element in a secure way. By default, the innerHTML-ed content will be sanitized using the {@link * ngSanitize.$sanitize $sanitize} service. To utilize this functionality, ensure that `$sanitize` * is available, for example, by including {@link ngSanitize} in your module's dependencies (not in - * core Angular.) You may also bypass sanitization for values you know are safe. To do so, bind to + * core Angular). In order to use {@link ngSanitize} in your module's dependencies, you need to + * include "angular-sanitize.js" in your application. + * + * You may also bypass sanitization for values you know are safe. To do so, bind to * an explicitly trusted value via {@link ng.$sce#trustAsHtml $sce.trustAsHtml}. See the example * under {@link ng.$sce#Example Strict Contextual Escaping (SCE)}. * @@ -21624,7 +22054,125 @@ var ngControllerDirective = [function() { ... ``` - */ + * @example + // Note: the suffix `.csp` in the example name triggers + // csp mode in our http server! + + +
+
+ + + {{ctrl.counter}} + +
+ +
+ + + {{ctrl.evilError}} + +
+
+
+ + angular.module('cspExample', []) + .controller('MainController', function() { + this.counter = 0; + this.inc = function() { + this.counter++; + }; + this.evil = function() { + // jshint evil:true + try { + eval('1+2'); + } catch (e) { + this.evilError = e.message; + } + }; + }); + + + var util, webdriver; + + var incBtn = element(by.id('inc')); + var counter = element(by.id('counter')); + var evilBtn = element(by.id('evil')); + var evilError = element(by.id('evilError')); + + function getAndClearSevereErrors() { + return browser.manage().logs().get('browser').then(function(browserLog) { + return browserLog.filter(function(logEntry) { + return logEntry.level.value > webdriver.logging.Level.WARNING.value; + }); + }); + } + + function clearErrors() { + getAndClearSevereErrors(); + } + + function expectNoErrors() { + getAndClearSevereErrors().then(function(filteredLog) { + expect(filteredLog.length).toEqual(0); + if (filteredLog.length) { + console.log('browser console errors: ' + util.inspect(filteredLog)); + } + }); + } + + function expectError(regex) { + getAndClearSevereErrors().then(function(filteredLog) { + var found = false; + filteredLog.forEach(function(log) { + if (log.message.match(regex)) { + found = true; + } + }); + if (!found) { + throw new Error('expected an error that matches ' + regex); + } + }); + } + + beforeEach(function() { + util = require('util'); + webdriver = require('protractor/node_modules/selenium-webdriver'); + }); + + // For now, we only test on Chrome, + // as Safari does not load the page with Protractor's injected scripts, + // and Firefox webdriver always disables content security policy (#6358) + if (browser.params.browser !== 'chrome') { + return; + } + + it('should not report errors when the page is loaded', function() { + // clear errors so we are not dependent on previous tests + clearErrors(); + // Need to reload the page as the page is already loaded when + // we come here + browser.driver.getCurrentUrl().then(function(url) { + browser.get(url); + }); + expectNoErrors(); + }); + + it('should evaluate expressions', function() { + expect(counter.getText()).toEqual('0'); + incBtn.click(); + expect(counter.getText()).toEqual('1'); + expectNoErrors(); + }); + + it('should throw and report an error when using "eval"', function() { + evilBtn.click(); + expect(evilError.getText()).toMatch(/Content Security Policy/); + expectError(/Content Security Policy/); + }); + +
+ */ // ngCsp is not implemented as a proper directive any more, because we need it be processed while we // bootstrap the system (before $parse is instantiated), for this reason we just have @@ -22131,7 +22679,7 @@ forEach( * Note that when an element is removed using `ngIf` its scope is destroyed and a new scope * is created when the element is restored. The scope created within `ngIf` inherits from * its parent scope using - * [prototypal inheritance](https://github.com/angular/angular.js/wiki/The-Nuances-of-Scope-Prototypal-Inheritance). + * [prototypal inheritance](https://github.com/angular/angular.js/wiki/Understanding-Scopes#javascript-prototypal-inheritance). * An important implication of this is if `ngModel` is used within `ngIf` to bind to * a javascript primitive defined in the parent scope. In this case any modifications made to the * variable within the child scope will override (hide) the value in the parent scope. @@ -22145,8 +22693,8 @@ forEach( * and `leave` effects. * * @animations - * enter - happens just after the ngIf contents change and a new DOM element is created and injected into the ngIf container - * leave - happens just before the ngIf contents are removed from the DOM + * enter - happens just after the `ngIf` contents change and a new DOM element is created and injected into the `ngIf` container + * leave - happens just before the `ngIf` contents are removed from the DOM * * @element ANY * @scope @@ -23286,6 +23834,8 @@ var ngRepeatDirective = ['$parse', '$animate', function($parse, $animate) { }; }]; +var NG_HIDE_CLASS = 'ng-hide'; +var NG_HIDE_IN_PROGRESS_CLASS = 'ng-hide-animate'; /** * @ngdoc directive * @name ngShow @@ -23447,7 +23997,11 @@ var ngShowDirective = ['$animate', function($animate) { multiElement: true, link: function(scope, element, attr) { scope.$watch(attr.ngShow, function ngShowWatchAction(value){ - $animate[value ? 'removeClass' : 'addClass'](element, 'ng-hide'); + // we're adding a temporary, animation-specific class for ng-hide since this way + // we can control when the element is actually displayed on screen without having + // to have a global/greedy CSS selector that breaks when other animations are run. + // Read: https://github.com/angular/angular.js/issues/9103#issuecomment-58335845 + $animate[value ? 'removeClass' : 'addClass'](element, NG_HIDE_CLASS, NG_HIDE_IN_PROGRESS_CLASS); }); } }; @@ -23602,7 +24156,9 @@ var ngHideDirective = ['$animate', function($animate) { multiElement: true, link: function(scope, element, attr) { scope.$watch(attr.ngHide, function ngHideWatchAction(value){ - $animate[value ? 'addClass' : 'removeClass'](element, 'ng-hide'); + // The comment inside of the ngShowDirective explains why we add and + // remove a temporary class for the show/hide animation + $animate[value ? 'addClass' : 'removeClass'](element,NG_HIDE_CLASS, NG_HIDE_IN_PROGRESS_CLASS); }); } }; @@ -24024,6 +24580,12 @@ var ngOptionsMinErr = minErr('ngOptions'); * be bound to string values at present. *
* + *
+ * **Note:** Using `select as` will bind the result of the `select as` expression to the model, but + * the value of the ` + * values: [{id: 1, label: 'aLabel', subItem: {name: 'aSubItem'}}, {id: 2, label: 'bLabel', subItem: {name: 'bSubItemß'}}], + * $scope.selected = {name: 'aSubItem'}; + * - track by is always applied to `value`, with purpose to preserve the selection, + * (to `item` in this case) + * - to calculate whether an item is selected we do the following: + * 1. apply `track by` to the values in the array, e.g. + * In the example: [1,2] + * 2. apply `track by` to the already selected value in `ngModel`: + * In the example: this is not possible, as `track by` refers to `item.id`, but the selected + * value from `ngModel` is `{name: aSubItem}`. + * + *
* * @example @@ -24315,6 +24895,8 @@ var selectDirective = ['$compile', '$parse', function($compile, $parse) { var displayFn = $parse(match[2] || match[1]), valueName = match[4] || match[6], + selectAs = / as /.test(match[0]) && match[1], + selectAsFn = selectAs ? $parse(selectAs) : null, keyName = match[5], groupByFn = $parse(match[3] || ''), valueFn = $parse(match[2] ? match[1] : valueName), @@ -24325,7 +24907,16 @@ var selectDirective = ['$compile', '$parse', function($compile, $parse) { // We try to reuse these if possible // - optionGroupsCache[0] is the options with no option group // - optionGroupsCache[?][0] is the parent: either the SELECT or OPTGROUP element - optionGroupsCache = [[{element: selectElement, label:''}]]; + optionGroupsCache = [[{element: selectElement, label:''}]], + //re-usable object to represent option's locals + locals = {}; + + if (trackFn && selectAsFn) { + throw ngOptionsMinErr('trkslct', + "Comprehension expression cannot contain both selectAs '{0}' " + + "and trackBy '{1}' expressions.", + selectAs, track); + } if (nullOption) { // compile the element since there might be bindings in it @@ -24343,103 +24934,110 @@ var selectDirective = ['$compile', '$parse', function($compile, $parse) { // clear contents, we'll add what's needed based on the model selectElement.empty(); - selectElement.on('change', function() { - scope.$apply(function() { - var optionGroup, - collection = valuesFn(scope) || [], - locals = {}, - key, value, optionElement, index, groupIndex, length, groupLength, trackIndex; - - if (multiple) { - value = []; - for (groupIndex = 0, groupLength = optionGroupsCache.length; - groupIndex < groupLength; - groupIndex++) { - // list of options for that group. (first item has the parent) - optionGroup = optionGroupsCache[groupIndex]; - - for(index = 1, length = optionGroup.length; index < length; index++) { - if ((optionElement = optionGroup[index].element)[0].selected) { - key = optionElement.val(); - if (keyName) locals[keyName] = key; - if (trackFn) { - for (trackIndex = 0; trackIndex < collection.length; trackIndex++) { - locals[valueName] = collection[trackIndex]; - if (trackFn(scope, locals) == key) break; - } - } else { - locals[valueName] = collection[key]; - } - value.push(valueFn(scope, locals)); - } - } - } - } else { - key = selectElement.val(); - if (key == '?') { - value = undefined; - } else if (key === ''){ - value = null; - } else { - if (trackFn) { - for (trackIndex = 0; trackIndex < collection.length; trackIndex++) { - locals[valueName] = collection[trackIndex]; - if (trackFn(scope, locals) == key) { - value = valueFn(scope, locals); - break; - } - } - } else { - locals[valueName] = collection[key]; - if (keyName) locals[keyName] = key; - value = valueFn(scope, locals); - } - } - } - ctrl.$setViewValue(value); - render(); - }); - }); + selectElement.on('change', selectionChanged); ctrl.$render = render; scope.$watchCollection(valuesFn, scheduleRendering); - scope.$watchCollection(function () { - var locals = {}, - values = valuesFn(scope); - if (values) { - var toDisplay = new Array(values.length); - for (var i = 0, ii = values.length; i < ii; i++) { - locals[valueName] = values[i]; - toDisplay[i] = displayFn(scope, locals); - } - return toDisplay; - } - }, scheduleRendering); + scope.$watchCollection(getLabels, scheduleRendering); if (multiple) { scope.$watchCollection(function() { return ctrl.$modelValue; }, scheduleRendering); } + // ------------------------------------------------------------------ // - function getSelectedSet() { - var selectedSet = false; - if (multiple) { - var modelValue = ctrl.$modelValue; - if (trackFn && isArray(modelValue)) { - selectedSet = new HashMap([]); - var locals = {}; - for (var trackIndex = 0; trackIndex < modelValue.length; trackIndex++) { - locals[valueName] = modelValue[trackIndex]; - selectedSet.put(trackFn(scope, locals), modelValue[trackIndex]); - } - } else { - selectedSet = new HashMap(modelValue); - } - } - return selectedSet; + function callExpression(exprFn, key, value) { + locals[valueName] = value; + if (keyName) locals[keyName] = key; + return exprFn(scope, locals); } + function selectionChanged() { + scope.$apply(function() { + var optionGroup, + collection = valuesFn(scope) || [], + key, value, optionElement, index, groupIndex, length, groupLength, trackIndex; + var viewValue; + if (multiple) { + viewValue = []; + forEach(selectElement.val(), function(selectedKey) { + viewValue.push(getViewValue(selectedKey, collection[selectedKey])); + }); + } else { + var selectedKey = selectElement.val(); + viewValue = getViewValue(selectedKey, collection[selectedKey]); + } + ctrl.$setViewValue(viewValue); + render(); + }); + } + + function getViewValue(key, value) { + if (key === '?') { + return undefined; + } else if (key === '') { + return null; + } else { + var viewValueFn = selectAsFn ? selectAsFn : valueFn; + return callExpression(viewValueFn, key, value); + } + } + + function getLabels() { + var values = valuesFn(scope); + var toDisplay; + if (values && isArray(values)) { + toDisplay = new Array(values.length); + for (var i = 0, ii = values.length; i < ii; i++) { + toDisplay[i] = callExpression(displayFn, i, values[i]); + } + return toDisplay; + } else if (values) { + // TODO: Add a test for this case + toDisplay = {}; + for (var prop in values) { + if (values.hasOwnProperty(prop)) { + toDisplay[prop] = callExpression(displayFn, prop, values[prop]); + } + } + } + return toDisplay; + } + + function createIsSelectedFn(viewValue) { + var selectedSet; + if (multiple) { + if (!selectAs && trackFn && isArray(viewValue)) { + + selectedSet = new HashMap([]); + for (var trackIndex = 0; trackIndex < viewValue.length; trackIndex++) { + // tracking by key + selectedSet.put(callExpression(trackFn, null, viewValue[trackIndex]), true); + } + } else { + selectedSet = new HashMap(viewValue); + } + } else if (!selectAsFn && trackFn) { + viewValue = callExpression(trackFn, null, viewValue); + } + return function isSelected(key, value) { + var compareValueFn; + if (selectAsFn) { + compareValueFn = selectAsFn; + } else if (trackFn) { + compareValueFn = trackFn; + } else { + compareValueFn = valueFn; + } + + if (multiple) { + return isDefined(selectedSet.remove(callExpression(compareValueFn, key, value))); + } else { + return viewValue == callExpression(compareValueFn, key, value); + } + }; + } function scheduleRendering() { if (!renderScheduled) { @@ -24448,78 +25046,64 @@ var selectDirective = ['$compile', '$parse', function($compile, $parse) { } } - function render() { renderScheduled = false; - // Temporary location for the option groups before we render them + // Temporary location for the option groups before we render them var optionGroups = {'':[]}, optionGroupNames = [''], optionGroupName, optionGroup, option, existingParent, existingOptions, existingOption, - modelValue = ctrl.$modelValue, + viewValue = ctrl.$viewValue, values = valuesFn(scope) || [], keys = keyName ? sortedKeys(values) : values, key, + value, groupLength, length, groupIndex, index, - locals = {}, selected, - selectedSet = getSelectedSet(), + isSelected = createIsSelectedFn(viewValue), + anySelected = false, lastElement, element, label; - // We now build up the list of options we need (we merge later) for (index = 0; length = keys.length, index < length; index++) { - key = index; if (keyName) { key = keys[index]; if ( key.charAt(0) === '$' ) continue; - locals[keyName] = key; } + value = values[key]; - locals[valueName] = values[key]; - - optionGroupName = groupByFn(scope, locals) || ''; + optionGroupName = callExpression(groupByFn, key, value) || ''; if (!(optionGroup = optionGroups[optionGroupName])) { optionGroup = optionGroups[optionGroupName] = []; optionGroupNames.push(optionGroupName); } - if (multiple) { - selected = isDefined( - selectedSet.remove(trackFn ? trackFn(scope, locals) : valueFn(scope, locals)) - ); - } else { - if (trackFn) { - var modelCast = {}; - modelCast[valueName] = modelValue; - selected = trackFn(scope, modelCast) === trackFn(scope, locals); - } else { - selected = modelValue === valueFn(scope, locals); - } - selectedSet = selectedSet || selected; // see if at least one item is selected - } - label = displayFn(scope, locals); // what will be seen by the user + + selected = isSelected(key, value); + anySelected = anySelected || selected; + + label = callExpression(displayFn, key, value); // what will be seen by the user // doing displayFn(scope, locals) || '' overwrites zero values label = isDefined(label) ? label : ''; optionGroup.push({ // either the index into array or key from object - id: trackFn ? trackFn(scope, locals) : (keyName ? keys[index] : index), + id: (keyName ? keys[index] : index), label: label, selected: selected // determine if we should be selected }); } if (!multiple) { - if (nullOption || modelValue === null) { + if (nullOption || viewValue === null) { // insert null option if we have a placeholder, or the model is null - optionGroups[''].unshift({id:'', label:'', selected:!selectedSet}); - } else if (!selectedSet) { + optionGroups[''].unshift({id:'', label:'', selected:!anySelected}); + } else if (!anySelected) { // option could not be found, we have to insert the undefined item optionGroups[''].unshift({id:'?', label:'', selected:true}); } @@ -24600,6 +25184,7 @@ var selectDirective = ['$compile', '$parse', function($compile, $parse) { id: option.id, selected: option.selected }); + selectCtrl.addOption(option.label, element); if (lastElement) { lastElement.after(element); } else { @@ -24611,7 +25196,9 @@ var selectDirective = ['$compile', '$parse', function($compile, $parse) { // remove any excessive OPTIONs in a group index++; // increment since the existingOptions[0] is parent element not OPTION while(existingOptions.length > index) { - existingOptions.pop().element.remove(); + option = existingOptions.pop(); + selectCtrl.removeOption(option.label); + option.element.remove(); } } // remove any excessive OPTGROUPs from select @@ -24647,11 +25234,7 @@ var optionDirective = ['$interpolate', function($interpolate) { selectCtrl = parent.data(selectCtrlName) || parent.parent().data(selectCtrlName); // in case we are in optgroup - if (selectCtrl && selectCtrl.databound) { - // For some reason Opera defaults to true and if not overridden this messes up the repeater. - // We don't want the view to drive the initialization of the model anyway. - element.prop('selected', false); - } else { + if (!selectCtrl || !selectCtrl.databound) { selectCtrl = nullSelectCtrl; } @@ -24698,4 +25281,4 @@ var styleDirective = valueFn({ })(window, document); -!window.angular.$$csp() && window.angular.element(document).find('head').prepend(''); \ No newline at end of file +!window.angular.$$csp() && window.angular.element(document).find('head').prepend(''); \ No newline at end of file diff --git a/public/app/bower_components/angular/angular.min.js b/public/app/bower_components/angular/angular.min.js index dae7873e..517e13c2 100644 --- a/public/app/bower_components/angular/angular.min.js +++ b/public/app/bower_components/angular/angular.min.js @@ -1,242 +1,246 @@ /* - AngularJS v1.3.0-rc.3 + AngularJS v1.3.0-rc.5 (c) 2010-2014 Google, Inc. http://angularjs.org License: MIT */ -(function(O,Y,s){'use strict';function Q(b){return function(){var a=arguments[0],c;c="["+(b?b+":":"")+a+"] http://errors.angularjs.org/1.3.0-rc.3/"+(b?b+"/":"")+a;for(a=1;a").append(b).html();try{return 3===b[0].nodeType?R(c):c.match(/^(<[^>]+>)/)[1].replace(/^<([\w\-]+)/,function(a,b){return"<"+ -R(b)})}catch(d){return R(c)}}function gc(b){try{return decodeURIComponent(b)}catch(a){}}function hc(b){var a={},c,d;r((b||"").split("&"),function(b){b&&(c=b.replace(/\+/g,"%20").split("="),d=gc(c[0]),x(d)&&(b=x(c[1])?gc(c[1]):!0,Ab.call(a,d)?M(a[d])?a[d].push(b):a[d]=[a[d],b]:a[d]=b))});return a}function Bb(b){var a=[];r(b,function(b,d){M(b)?r(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 gb(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=hb.length;b=D(b);for(d=0;d/,">"));}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!/;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,"");Da.resumeBootstrap=function(b){r(b,function(b){a.push(b)});d()}}function yd(){O.name="NG_ENABLE_DEBUG_INFO!"+O.name;O.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;jc||((ma=O.jQuery)&&ma.fn.on?(D=ma,v(ma.fn,{scope:Ha.scope,isolateScope:Ha.isolateScope,controller:Ha.controller,injector:Ha.injector,inheritedData:Ha.inheritedData}),b=ma.cleanData,ma.cleanData=function(a){var c;if(Eb)Eb=!1;else for(var d=0,e;null!=(e=a[d]);d++)(c=ma._data(e,"events"))&&c.$destroy&&ma(e).triggerHandler("$destroy");b(a)}):D=T,Da.element=D,jc=!0)}function Fb(b,a,c){if(!b)throw Sa("areq", -a||"?",c||"required");return b}function ib(b,a,c){c&&M(b)&&(b=b[b.length-1]);Fb(F(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 Sa("badname",a);}function kc(b,a,c){if(!a)return b;a=a.split(".");for(var d,e=b,f=a.length,g=0;g")+d[2];for(d=d[0];d--;)c=c.lastChild;f=fb(f,c.childNodes);c=e.firstChild;c.textContent=""}else f.push(a.createTextNode(b));e.textContent="";e.innerHTML="";r(f,function(a){e.appendChild(a)}); -return e}function T(b){if(b instanceof T)return b;var a;C(b)&&(b=ca(b),a=!0);if(!(this instanceof T)){if(a&&"<"!=b.charAt(0))throw Hb("nosel");return new T(b)}if(a){a=Y;var c;b=(c=Ue.exec(b))?[a.createElement(c[1])]:(c=uc(b,a))?c.childNodes:[]}vc(this,b)}function Ib(b){return b.cloneNode(!0)}function nb(b,a){a||ob(b);if(b.querySelectorAll)for(var c=b.querySelectorAll("*"),d=0,e=c.length;d 4096 bytes)!"));else{if(k.cookie!==L)for(L=k.cookie,d=L.split("; "),K={},f=0;fl&&this.remove(q.key),b},get:function(a){if(l").parent()[0])});var f=K(a,b,a,c,d,e);X.$$addScopeClass(a);var h=null,g=a,k;return function(b,c,d,e,m){Fb(b,"scope");h||(h=(m=m&&m[0])?"foreignobject"!==pa(m)&&m.toString().match(/SVG/)?"svg":"html":"html");"html"!==h&&a[0]!==k&&(g=D(Nb(h,D("
").append(a).html())));k=a[0];m=c?Ha.clone.call(g): -g;if(d)for(var q in d)m.data("$"+q+"Controller",d[q].instance);X.$$addScopeInfo(m,b);c&&c(m,b);f&&f(b,m,m,e);return m}}function K(a,b,c,d,e,f){function h(a,c,d,e){var f,k,m,q,n,p,y;if(u)for(y=Array(c.length),q=0;qI.priority)break;if(W=I.scope)I.templateUrl||(S(W)?(Q("new/isolated scope",B||G,I,v),B=I):Q("new/isolated scope",B,I,v)),G=G||I;ka=I.name;!I.templateUrl&&I.controller&&(W=I.controller,A=A||{},Q("'"+ka+"' controller",A[ka],I,v),A[ka]=I);if(W=I.transclude)z=!0,I.$$tlb||(Q("transclusion",$,I,v),$=I),"element"==W?(w=!0,K=I.priority,W=v,v=e.$$element=D(Y.createComment(" "+ka+": "+e[ka]+ -" ")),d=v[0],fa(g,Ta.call(W,0),d),ya=X(W,f,K,h&&h.name,{nonTlbTranscludeDirective:$})):(W=D(Ib(d)).contents(),v.empty(),ya=X(W,f));if(I.template)if(V=!0,Q("template",L,I,v),L=I,W=F(I.template)?I.template(v,e):I.template,W=Z(W),I.replace){h=I;W=Gb.test(W)?D(Nb(I.templateNamespace,ca(W))):[];d=W[0];if(1!=W.length||1!==d.nodeType)throw ja("tplrt",ka,"");fa(g,v,d);xa={$attr:{}};W=P(d,[],xa);var aa=a.splice(R+1,a.length-(R+1));B&&tb(W);a=a.concat(W).concat(aa);x(e,xa);xa=a.length}else v.html(W);if(I.templateUrl)V= -!0,Q("template",L,I,v),L=I,I.replace&&(h=I),H=bf(a.splice(R,a.length-R),v,e,g,z&&ya,k,m,{controllerDirectives:A,newIsolateScopeDirective:B,templateDirective:L,nonTlbTranscludeDirective:$}),xa=a.length;else if(I.compile)try{O=I.compile(v,e,ya),F(O)?y(null,O,T,Pb):O&&y(O.pre,O.post,T,Pb)}catch(ba){c(ba,ta(v))}I.terminal&&(H.terminal=!0,K=Math.max(K,I.priority))}H.scope=G&&!0===G.scope;H.transcludeOnThisElement=z;H.elementTranscludeOnThisElement=w;H.templateOnThisElement=V;H.transclude=ya;n.hasElementTranscludeDirective= -w;return H}function tb(a){for(var b=0,c=a.length;bu.priority)&&-1!=u.restrict.indexOf(f)&&(k&&(u=dc(u,{$$start:k,$$end:m})),b.push(u),h=u)}catch(t){c(t)}}return h}function x(a,b){var c=b.$attr,d=a.$attr,e=a.$$element;r(a,function(d,e){"$"!=e.charAt(0)&&(b[e]&&b[e]!==d&&(d+=("style"===e?";":" ")+b[e]), -a.$set(e,d,!0,c[e]))});r(b,function(b,f){"class"==f?(B(e,b),a["class"]=(a["class"]?a["class"]+" ":"")+b):"style"==f?(e.attr("style",e.attr("style")+";"+b),a.style=(a.style?a.style+";":"")+b):"$"==f.charAt(0)||a.hasOwnProperty(f)||(a[f]=b,d[f]=c[f])})}function bf(a,b,c,d,e,f,g,h){var k=[],q,n,u=b[0],p=a.shift(),t=v({},p,{templateUrl:null,transclude:null,replace:null,$$originalDirective:p}),E=F(p.templateUrl)?p.templateUrl(b,c):p.templateUrl,H=p.templateNamespace;b.empty();m(y.getTrustedResourceUrl(E)).then(function(m){var y, -G;m=Z(m);if(p.replace){m=Gb.test(m)?D(Nb(H,ca(m))):[];y=m[0];if(1!=m.length||1!==y.nodeType)throw ja("tplrt",p.name,E);m={$attr:{}};fa(d,b,y);var A=P(y,[],m);S(p.scope)&&tb(A);a=A.concat(a);x(c,m)}else y=u,b.html(m);a.unshift(t);q=U(a,y,c,e,b,p,f,g,h);r(d,function(a,c){a==y&&(d[c]=b[0])});for(n=K(b[0].childNodes,e);k.length;){m=k.shift();G=k.shift();var N=k.shift(),J=k.shift(),A=b[0];if(G!==u){var X=G.className;h.hasElementTranscludeDirective&&p.replace||(A=Ib(y));fa(N,D(G),A);B(D(A),X)}G=q.transcludeOnThisElement? -L(m,q.transclude,J):J;q(n,m,A,d,G)}k=null});return function(a,b,c,d,e){a=e;k?(k.push(b),k.push(c),k.push(d),k.push(a)):(q.transcludeOnThisElement&&(a=L(b,q.transclude,e)),q(n,b,c,d,a))}}function w(a,b){var c=b.priority-a.priority;return 0!==c?c:a.name!==b.name?a.name"+b+"";return c.childNodes[0].childNodes;default:return b}}function xa(a,b){if("srcdoc"==b)return y.HTML;var c=pa(a);if("xlinkHref"==b||"form"==c&&"action"==b||"img"!=c&&("src"==b||"ngSrc"==b))return y.RESOURCE_URL}function V(a,c,d,e,f){var k=b(d,!0); -if(k){if("multiple"===e&&"select"===pa(a))throw ja("selmulti",ta(a));c.push({priority:100,compile:function(){return{pre:function(c,d,m){d=m.$$observers||(m.$$observers={});if(h.test(e))throw ja("nodomevents");if(k=b(m[e],!0,xa(a,e),g[e]||f))m[e]=k(c),(d[e]||(d[e]=[])).$$inter=!0,(m.$$observers&&m.$$observers[e].$$scope||c).$watch(k,function(a,b){"class"===e&&a!=b?m.$updateClass(a,b):m.$set(e,a)})}}}})}}function fa(a,b,c){var d=b[0],e=b.length,f=d.parentNode,g,h;if(a)for(g=0,h=a.length;ga?d:p.reject(d)}var c={method:"get",transformRequest:e.transformRequest,transformResponse:e.transformResponse},d=function(a){var b=e.headers,c=v({},a.headers),d,f,b=v({},b.common,b[R(a.method)]);a:for(d in b){a=R(d);for(f in c)if(R(f)===a)continue a;c[d]=b[d]}(function(a){var b;r(a,function(c,d){F(c)&&(b=c(),null!= -b?a[d]=b:delete a[d])})})(c);return c}(a);v(c,a);c.headers=d;c.method=kb(c.method);var f=[function(a){d=a.headers;var c=Kc(a.data,Jc(d),a.transformRequest);w(c)&&r(d,function(a,b){"content-type"===R(b)&&delete d[b]});w(a.withCredentials)&&!w(e.withCredentials)&&(a.withCredentials=e.withCredentials);return t(a,c,d).then(b,b)},s],g=p.when(c);for(r(A,function(a){(a.request||a.requestError)&&f.unshift(a.request,a.requestError);(a.response||a.responseError)&&f.push(a.response,a.responseError)});f.length;){a= -f.shift();var h=f.shift(),g=g.then(a,h)}g.success=function(a){g.then(function(b){a(b.data,b.status,b.headers,c)});return g};g.error=function(a){g.then(null,function(b){a(b.data,b.status,b.headers,c)});return g};return g}function t(c,g,l){function q(a,b,c,e){function g(){t(b,a,c,e)}J&&(200<=a&&300>a?J.put(U,[a,b,Ic(c),e]):J.remove(U));f?d.$applyAsync(g):(g(),d.$$phase||d.$apply())}function t(a,b,d,e){b=Math.max(b,0);(200<=b&&300>b?r.resolve:r.reject)({data:a,status:b,headers:Jc(d),config:c,statusText:e})} -function A(){var a=m.pendingRequests.indexOf(c);-1!==a&&m.pendingRequests.splice(a,1)}var r=p.defer(),P=r.promise,J,N,U=u(c.url,c.params);m.pendingRequests.push(c);P.then(A,A);!c.cache&&!e.cache||!1===c.cache||"GET"!==c.method&&"JSONP"!==c.method||(J=S(c.cache)?c.cache:S(e.cache)?e.cache:H);if(J)if(N=J.get(U),x(N)){if(N&&F(N.then))return N.then(A,A),N;M(N)?t(N[1],N[0],qa(N[2]),N[3]):t(N,200,{},"OK")}else J.put(U,P);w(N)&&((N=Lc(c.url)?b.cookies()[c.xsrfCookieName||e.xsrfCookieName]:s)&&(l[c.xsrfHeaderName|| -e.xsrfHeaderName]=N),a(c.method,U,g,q,l,c.timeout,c.withCredentials,c.responseType));return P}function u(a,b){if(!b)return a;var c=[];rd(b,function(a,b){null===a||w(a)||(M(a)||(a=[a]),r(a,function(a){S(a)&&(a=ha(a)?a.toISOString():sa(a));c.push(Ca(b)+"="+Ca(a))}))});0=aa&&(!b.match(/^(get|post|head|put|delete|options)$/i)||!O.XMLHttpRequest))return new O.ActiveXObject("Microsoft.XMLHTTP");if(O.XMLHttpRequest)return new O.XMLHttpRequest;throw Q("$httpBackend")("noxhr");}function ze(){this.$get=["$browser","$window","$document",function(b, -a,c){return ef(b,df,b.defer,a.angular.callbacks,c[0])}]}function ef(b,a,c,d,e){function f(a,b,c){var f=e.createElement("script"),n=null;f.type="text/javascript";f.src=a;f.async=!0;n=function(a){f.removeEventListener("load",n,!1);f.removeEventListener("error",n,!1);e.body.removeChild(f);f=null;var g=-1,m="unknown";a&&("load"!==a.type||d[b].called||(a={type:"error"}),m=a.type,g="error"===a.type?404:200);c&&c(g,m)};f.addEventListener("load",n,!1);f.addEventListener("error",n,!1);e.body.appendChild(f); -return n}return function(e,h,k,l,n,p,q,m){function t(){H=-1;y&&y();E&&E.abort()}function u(a,d,e,f,g){B&&c.cancel(B);y=E=null;0===d&&(d=e?200:"file"==za(h).protocol?404:0);a(1223===d?204:d,e,f,g||"");b.$$completeOutstandingRequest(z)}var H;b.$$incOutstandingRequestCount();h=h||b.url();if("jsonp"==R(e)){var A="_"+(d.counter++).toString(36);d[A]=function(a){d[A].data=a;d[A].called=!0};var y=f(h.replace("JSON_CALLBACK","angular.callbacks."+A),A,function(a,b){u(l,a,d[A].data,"",b);d[A]=z})}else{var E= -a(e);E.open(e,h,!0);r(n,function(a,b){x(a)&&E.setRequestHeader(b,a)});E.onreadystatechange=function(){if(E&&4==E.readyState){var a=null,b=null,c="";-1!==H&&(a=E.getAllResponseHeaders(),b="response"in E?E.response:E.responseText);-1===H&&10>aa||(c=E.statusText);u(l,H||E.status,b,a,c)}};q&&(E.withCredentials=!0);if(m)try{E.responseType=m}catch(G){if("json"!==m)throw G;}E.send(k||null)}if(0=k&&(t.resolve(q),p(u.$$intervalId),delete f[u.$$intervalId]);m||b.$apply()},h);f[u.$$intervalId]=t;return u}var f={};e.cancel=function(b){return b&&b.$$intervalId in f?(f[b.$$intervalId].reject("canceled"),a.clearInterval(b.$$intervalId),delete f[b.$$intervalId],!0):!1};return e}]}function Fd(){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:"\u00a4",posSuf:"",negPre:"(\u00a4",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(b){return 1===b?"one":"other"}}}}function Rb(b){b=b.split("/");for(var a=b.length;a--;)b[a]=gb(b[a]);return b.join("/")}function Mc(b,a,c){b=za(b,c);a.$$protocol=b.protocol;a.$$host=b.hostname;a.$$port=Z(b.port)||ff[b.protocol]||null}function Nc(b,a,c){var d="/"!==b.charAt(0);d&&(b= -"/"+b);b=za(b,c);a.$$path=decodeURIComponent(d&&"/"===b.pathname.charAt(0)?b.pathname.substring(1):b.pathname);a.$$search=hc(b.search);a.$$hash=decodeURIComponent(b.hash);a.$$path&&"/"!=a.$$path.charAt(0)&&(a.$$path="/"+a.$$path)}function wa(b,a){if(0===a.indexOf(b))return a.substr(b.length)}function Ya(b){var a=b.indexOf("#");return-1==a?b:b.substr(0,a)}function Sb(b){return b.substr(0,Ya(b).lastIndexOf("/")+1)}function Oc(b,a){this.$$html5=!0;a=a||"";var c=Sb(b);Mc(b,this,b);this.$$parse=function(a){var e= -wa(c,a);if(!C(e))throw ub("ipthprfx",a,c);Nc(e,this,b);this.$$path||(this.$$path="/");this.$$compose()};this.$$compose=function(){var a=Bb(this.$$search),b=this.$$hash?"#"+gb(this.$$hash):"";this.$$url=Rb(this.$$path)+(a?"?"+a:"")+b;this.$$absUrl=c+this.$$url.substr(1)};this.$$parseLinkUrl=function(d,e){if(e&&"#"===e[0])return this.hash(e.slice(1)),!0;var f,g;(f=wa(b,d))!==s?(g=f,g=(f=wa(a,f))!==s?c+(wa("/",f)||f):b+g):(f=wa(c,d))!==s?g=c+f:c==d+"/"&&(g=c);g&&this.$$parse(g);return!!g}}function Tb(b, -a){var c=Sb(b);Mc(b,this,b);this.$$parse=function(d){var e=wa(b,d)||wa(c,d),e="#"==e.charAt(0)?wa(a,e):this.$$html5?e:"";if(!C(e))throw ub("ihshprfx",d,a);Nc(e,this,b);d=this.$$path;var f=/^\/[A-Z]:(\/.*)/;0===e.indexOf(b)&&(e=e.replace(b,""));f.exec(e)||(d=(e=f.exec(d))?e[1]:d);this.$$path=d;this.$$compose()};this.$$compose=function(){var c=Bb(this.$$search),e=this.$$hash?"#"+gb(this.$$hash):"";this.$$url=Rb(this.$$path)+(c?"?"+c:"")+e;this.$$absUrl=b+(this.$$url?a+this.$$url:"")};this.$$parseLinkUrl= -function(a,c){return Ya(b)==Ya(a)?(this.$$parse(a),!0):!1}}function Pc(b,a){this.$$html5=!0;Tb.apply(this,arguments);var c=Sb(b);this.$$parseLinkUrl=function(d,e){if(e&&"#"===e[0])return this.hash(e.slice(1)),!0;var f,g;b==Ya(d)?f=d:(g=wa(c,d))?f=b+a+g:c===d+"/"&&(f=c);f&&this.$$parse(f);return!!f};this.$$compose=function(){var c=Bb(this.$$search),e=this.$$hash?"#"+gb(this.$$hash):"";this.$$url=Rb(this.$$path)+(c?"?"+c:"")+e;this.$$absUrl=b+a+this.$$url}}function vb(b){return function(){return this[b]}} -function Qc(b,a){return function(c){if(w(c))return this[b];this[b]=a(c);this.$$compose();return this}}function Ae(){var b="",a={enabled:!1,requireBase:!0};this.hashPrefix=function(a){return x(a)?(b=a,this):b};this.html5Mode=function(b){return eb(b)?(a.enabled=b,this):S(b)?(a.enabled=eb(b.enabled)?b.enabled:a.enabled,a.requireBase=eb(b.requireBase)?b.requireBase:a.requireBase,this):a};this.$get=["$rootScope","$browser","$sniffer","$rootElement",function(c,d,e,f){function g(a){c.$broadcast("$locationChangeSuccess", -h.absUrl(),a)}var h,k=d.baseHref(),l=d.url();if(a.enabled){if(!k&&a.requireBase)throw ub("nobase");k=l.substring(0,l.indexOf("/",l.indexOf("//")+2))+(k||"/");e=e.history?Oc:Pc}else k=Ya(l),e=Tb;h=new e(k,"#"+b);h.$$parseLinkUrl(l,l);var n=/^\s*(javascript|mailto):/i;f.on("click",function(a){if(!a.ctrlKey&&!a.metaKey&&2!=a.which){for(var b=D(a.target);"a"!==pa(b[0]);)if(b[0]===f[0]||!(b=b.parent())[0])return;var e=b.prop("href"),g=b.attr("href")||b.attr("xlink:href");S(e)&&"[object SVGAnimatedString]"=== -e.toString()&&(e=za(e.animVal).href);n.test(e)||!e||b.attr("target")||a.isDefaultPrevented()||!h.$$parseLinkUrl(e,g)||(a.preventDefault(),h.absUrl()!=d.url()&&(c.$apply(),O.angular["ff-684208-preventDefault"]=!0))}});h.absUrl()!=l&&d.url(h.absUrl(),!0);d.onUrlChange(function(a){h.absUrl()!=a&&(c.$evalAsync(function(){var b=h.absUrl();h.$$parse(a);c.$broadcast("$locationChangeStart",a,b).defaultPrevented?(h.$$parse(b),d.url(b)):g(b)}),c.$$phase||c.$digest())});var p=0;c.$watch(function(){var a=d.url(), -b=h.$$replace;p&&a==h.absUrl()||(p++,c.$evalAsync(function(){c.$broadcast("$locationChangeStart",h.absUrl(),a).defaultPrevented?h.$$parse(a):(d.url(h.absUrl(),b),g(a))}));h.$$replace=!1;return p});return h}]}function Be(){var b=!0,a=this;this.debugEnabled=function(a){return x(a)?(b=a,this):b};this.$get=["$window",function(c){function d(a){a instanceof Error&&(a.stack?a=a.message&&-1===a.stack.indexOf(a.message)?"Error: "+a.message+"\n"+a.stack:a.stack:a.sourceURL&&(a=a.message+"\n"+a.sourceURL+":"+ -a.line));return a}function e(a){var b=c.console||{},e=b[a]||b.log||z;a=!1;try{a=!!e.apply}catch(k){}return a?function(){var a=[];r(arguments,function(b){a.push(d(b))});return e.apply(b,a)}:function(a,b){e(a,null==b?"":b)}}return{log:e("log"),info:e("info"),warn:e("warn"),error:e("error"),debug:function(){var c=e("debug");return function(){b&&c.apply(a,arguments)}}()}}]}function na(b,a){if("__defineGetter__"===b||"__defineSetter__"===b||"__lookupGetter__"===b||"__lookupSetter__"===b||"__proto__"=== -b)throw oa("isecfld",a);return b}function Aa(b,a){if(b){if(b.constructor===b)throw oa("isecfn",a);if(b.window===b)throw oa("isecwindow",a);if(b.children&&(b.nodeName||b.prop&&b.attr&&b.find))throw oa("isecdom",a);if(b===Object)throw oa("isecobj",a);}return b}function Ub(b){return b.constant}function La(b,a,c,d){Aa(b,d);a=a.split(".");for(var e,f=0;1f?Rc(e[0],e[1],e[2],e[3],e[4],c):function(a,b){var d=0,g;do g=Rc(e[d++],e[d++],e[d++],e[d++],e[d++],c)(a,b),b=s,a=g;while(d=this.promise.$$state.status&&d&&d.length&&b(function(){for(var b,e,f=0,g=d.length;fa)for(b in l++,f)e.hasOwnProperty(b)||(r--,delete f[b])}else f!==e&&(f=e,l++); -return l}c.$stateful=!0;var d=this,e,f,h,k=1K&&(J=4-K,P[J]||(P[J]=[]),N=F(e.exp)?"fn: "+(e.exp.name||e.exp.toString()):e.exp,N+="; newVal: "+sa(g)+"; oldVal: "+sa(k),P[J].push(N));else if(e===c){s=!1;break a}}catch(x){f(x)}if(!(n=L.$$childHead||L!==this&&L.$$nextSibling))for(;L!== -this&&!(n=L.$$nextSibling);)L=L.$parent}while(L=n);if((s||m.length)&&!K--)throw t.$$phase=null,a("infdig",b,sa(P));}while(s||m.length);for(t.$$phase=null;r.length;)try{r.shift()()}catch(D){f(D)}},$destroy:function(){if(!this.$$destroyed){var a=this.$parent;this.$broadcast("$destroy");this.$$destroyed=!0;if(this!==t){for(var b in this.$$listenerCount)n(this,this.$$listenerCount[b],b);a.$$childHead==this&&(a.$$childHead=this.$$nextSibling);a.$$childTail==this&&(a.$$childTail=this.$$prevSibling);this.$$prevSibling&& -(this.$$prevSibling.$$nextSibling=this.$$nextSibling);this.$$nextSibling&&(this.$$nextSibling.$$prevSibling=this.$$prevSibling);this.$parent=this.$$nextSibling=this.$$prevSibling=this.$$childHead=this.$$childTail=this.$root=null;this.$$listeners={};this.$$watchers=this.$$asyncQueue=this.$$postDigestQueue=[];this.$destroy=this.$digest=this.$apply=z;this.$on=this.$watch=this.$watchGroup=function(){return z}}}},$eval:function(a,b){return g(a)(this,b)},$evalAsync:function(a){t.$$phase||t.$$asyncQueue.length|| -h.defer(function(){t.$$asyncQueue.length&&t.$digest()});this.$$asyncQueue.push({scope:this,expression:a})},$$postDigest:function(a){this.$$postDigestQueue.push(a)},$apply:function(a){try{return l("$apply"),this.$eval(a)}catch(b){f(b)}finally{t.$$phase=null;try{t.$digest()}catch(c){throw f(c),c;}}},$applyAsync:function(a){function b(){c.$eval(a)}var c=this;a&&t.$$applyAsyncQueue.push(b);m()},$on:function(a,b){var c=this.$$listeners[a];c||(this.$$listeners[a]=c=[]);c.push(b);var d=this;do d.$$listenerCount[a]|| -(d.$$listenerCount[a]=0),d.$$listenerCount[a]++;while(d=d.$parent);var e=this;return function(){c[c.indexOf(b)]=null;n(e,1,a)}},$emit:function(a,b){var c=[],d,e=this,g=!1,h={name:a,targetScope:e,stopPropagation:function(){g=!0},preventDefault:function(){h.defaultPrevented=!0},defaultPrevented:!1},k=fb([h],arguments,1),l,n;do{d=e.$$listeners[a]||c;h.currentScope=e;l=0;for(n=d.length;lc.msieDocumentMode)throw Ba("iequirks");var e=qa(la);e.isEnabled=function(){return b};e.trustAs=d.trustAs;e.getTrusted=d.getTrusted; -e.valueOf=d.valueOf;b||(e.trustAs=e.getTrusted=function(a,b){return b},e.valueOf=Pa);e.parseAs=function(b,c){var d=a(c);return d.literal&&d.constant?d:a(c,function(a){return e.getTrusted(b,a)})};var f=e.parseAs,g=e.getTrusted,h=e.trustAs;r(la,function(a,b){var c=R(b);e[Wa("parse_as_"+c)]=function(b){return f(a,b)};e[Wa("get_trusted_"+c)]=function(b){return g(a,b)};e[Wa("trust_as_"+c)]=function(b){return h(a,b)}});return e}]}function Ie(){this.$get=["$window","$document",function(b,a){var c={},d=Z((/android (\d+)/.exec(R((b.navigator|| -{}).userAgent))||[])[1]),e=/Boxee/i.test((b.navigator||{}).userAgent),f=a[0]||{},g=f.documentMode,h,k=/^(Moz|webkit|O|ms)(?=[A-Z])/,l=f.body&&f.body.style,n=!1,p=!1;if(l){for(var q in l)if(n=k.exec(q)){h=n[0];h=h.substr(0,1).toUpperCase()+h.substr(1);break}h||(h="WebkitOpacity"in l&&"webkit");n=!!("transition"in l||h+"Transition"in l);p=!!("animation"in l||h+"Animation"in l);!d||n&&p||(n=C(f.body.style.webkitTransition),p=C(f.body.style.webkitAnimation))}return{history:!(!b.history||!b.history.pushState|| -4>d||e),hashchange:"onhashchange"in b&&(!g||7b;b=Math.abs(b);var g=b+"",h="",k=[],l=!1;if(-1!==g.indexOf("e")){var n=g.match(/([\d\.]+)e(-?)(\d+)/);n&&"-"==n[2]&&n[3]>e+1?(g="0",b=0):(h=g,l=!0)}if(l)0b&&(h=b.toFixed(e));else{g=(g.split(bd)[1]||"").length;w(e)&&(e=Math.min(Math.max(a.minFrac,g),a.maxFrac));b=+(Math.round(+(b.toString()+"e"+e)).toString()+"e"+-e);0===b&&(f=!1);b=(""+b).split(bd);g=b[0];b=b[1]||"";var n=0,p=a.lgSize,q=a.gSize;if(g.length>=p+q)for(n=g.length-p,l=0;lb&&(d="-",b=-b);for(b=""+b;b.length-c)e+=c;0===e&&-12==c&&(e=12);return wb(e,a,d)}}function xb(b, -a){return function(c,d){var e=c["get"+b](),f=kb(a?"SHORT"+b:b);return d[f][e]}}function cd(b){var a=(new Date(b,0,1)).getDay();return new Date(b,0,(4>=a?5:12)-a)}function dd(b){return function(a){var c=cd(a.getFullYear());a=+new Date(a.getFullYear(),a.getMonth(),a.getDate()+(4-a.getDay()))-+c;a=1+Math.round(a/6048E5);return wb(a,b)}}function Yc(b){function a(a){var b;if(b=a.match(c)){a=new Date(0);var f=0,g=0,h=b[8]?a.setUTCFullYear:a.setFullYear,k=b[8]?a.setUTCHours:a.setHours;b[9]&&(f=Z(b[9]+b[10]), -g=Z(b[9]+b[11]));h.call(a,Z(b[1]),Z(b[2])-1,Z(b[3]));f=Z(b[4]||0)-f;g=Z(b[5]||0)-g;h=Z(b[6]||0);b=Math.round(1E3*parseFloat("0."+(b[7]||0)));k.call(a,f,g,h,b)}return a}var c=/^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/;return function(c,e,f){var g="",h=[],k,l;e=e||"mediumDate";e=b.DATETIME_FORMATS[e]||e;C(c)&&(c=nf.test(c)?Z(c):a(c));ea(c)&&(c=new Date(c));if(!ha(c))return c;for(;e;)(l=of.exec(e))?(h=fb(h,l,1),e=h.pop()):(h.push(e),e=null); -f&&"UTC"===f&&(c=new Date(c.getTime()),c.setMinutes(c.getMinutes()+c.getTimezoneOffset()));r(h,function(a){k=pf[a];g+=k?k(c,b.DATETIME_FORMATS):a.replace(/(^'|'$)/g,"").replace(/''/g,"'")});return g}}function jf(){return function(b){return sa(b,!0)}}function kf(){return function(b,a){ea(b)&&(b=b.toString());if(!M(b)&&!C(b))return b;a=Infinity===Math.abs(Number(a))?Number(a):Z(a);if(C(b))return a?0<=a?b.slice(0,a):b.slice(a,b.length):"";var c=[],d,e;a>b.length?a=b.length:a<-b.length&&(a=-b.length); -0b||37<=b&&40>=b||q(a)});if(e.hasEvent("paste"))a.on("paste cut",q)}a.on("change",n);d.$render=function(){a.val(d.$isEmpty(d.$modelValue)? -"":d.$viewValue)}}function zb(b,a){return function(c,d){var e,f;if(ha(c))return c;if(C(c)){'"'==c.charAt(0)&&'"'==c.charAt(c.length-1)&&(c=c.substring(1,c.length-1));if(qf.test(c))return new Date(c);b.lastIndex=0;if(e=b.exec(c))return e.shift(),f=d?{yyyy:d.getFullYear(),MM:d.getMonth()+1,dd:d.getDate(),HH:d.getHours(),mm:d.getMinutes(),ss:d.getSeconds(),sss:d.getMilliseconds()/1E3}:{yyyy:1970,MM:1,dd:1,HH:0,mm:0,ss:0,sss:0},r(e,function(b,c){c=m};g.$observe("min",function(a){m=p(a);h.$validate()})}if(x(g.max)||g.ngMax){var r;h.$validators.max=function(a){return h.$isEmpty(a)||w(r)||c(a)<=r};g.$observe("max",function(a){r=p(a);h.$validate()})}}}function gd(b,a,c,d){(d.$$hasNativeValidators=S(a[0].validity))&&d.$parsers.push(function(b){var c=a.prop("validity")||{};return c.badInput&&!c.typeMismatch?s:b})}function hd(b,a,c,d, -e){if(x(d)){b=b(d);if(!b.constant)throw Q("ngModel")("constexpr",c,d);return b(a)}return e}function fd(b){function a(a,b){b&&!f[a]?(l.addClass(e,a),f[a]=!0):!b&&f[a]&&(l.removeClass(e,a),f[a]=!1)}function c(b,c){b=b?"-"+Db(b,"-"):"";a(rf+b,!0===c);a(sf+b,!1===c)}var d=b.ctrl,e=b.$element,f={},g=b.set,h=b.unset,k=b.parentForm,l=b.$animate;d.$setValidity=function(b,e,f){e===s?(d.$pending||(d.$pending={}),g(d.$pending,b,f)):(d.$pending&&h(d.$pending,b,f),id(d.$pending)&&(d.$pending=s));eb(e)?e?(h(d.$error, -b,f),g(d.$$success,b,f)):(g(d.$error,b,f),h(d.$$success,b,f)):(h(d.$error,b,f),h(d.$$success,b,f));d.$pending?(a(jd,!0),d.$valid=d.$invalid=s,c("",null)):(a(jd,!1),d.$valid=id(d.$error),d.$invalid=!d.$valid,c("",d.$valid));e=d.$pending&&d.$pending[b]?s:d.$error[b]?!1:d.$$success[b]?!0:null;c(b,e);k.$setValidity(b,e,d)};c("",!0)}function id(b){if(b)for(var a in b)return!1;return!0}function Xb(b,a){b="ngClass"+b;return["$animate",function(c){function d(a,b){var c=[],d=0;a:for(;d(?:<\/\1>|)$/,Gb=/<|&#?\w+;/,Se=/<([\w:]+)/,Te=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,ia={option:[1,'"],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};ia.optgroup=ia.option;ia.tbody=ia.tfoot=ia.colgroup=ia.caption=ia.thead;ia.th=ia.td;var Ha=T.prototype={ready:function(b){function a(){c||(c=!0,b())}var c=!1;"complete"===Y.readyState?setTimeout(a):(this.on("DOMContentLoaded",a),T(O).on("load",a),this.on("DOMContentLoaded",a))},toString:function(){var b= -[];r(this,function(a){b.push(""+a)});return"["+b.join(", ")+"]"},eq:function(b){return 0<=b?D(this[b]):D(this[this.length+b])},length:0,push:uf,sort:[].sort,splice:[].splice},sb={};r("multiple selected checked disabled readOnly required open".split(" "),function(b){sb[R(b)]=b});var Bc={};r("input select option textarea button form details".split(" "),function(b){Bc[b]=!0});var Cc={ngMinlength:"minlength",ngMaxlength:"maxlength",ngMin:"min",ngMax:"max",ngPattern:"pattern"};r({data:Jb,removeData:ob}, -function(b,a){T[a]=b});r({data:Jb,inheritedData:rb,scope:function(b){return D.data(b,"$scope")||rb(b.parentNode||b,["$isolateScope","$scope"])},isolateScope:function(b){return D.data(b,"$isolateScope")||D.data(b,"$isolateScopeNoTemplate")},controller:xc,injector:function(b){return rb(b,"$injector")},removeAttr:function(b,a){b.removeAttribute(a)},hasClass:lb,css:function(b,a,c){a=Wa(a);if(x(c))b.style[a]=c;else return b.style[a]},attr:function(b,a,c){var d=R(a);if(sb[d])if(x(c))c?(b[a]=!0,b.setAttribute(a, -d)):(b[a]=!1,b.removeAttribute(d));else return b[a]||(b.attributes.getNamedItem(a)||z).specified?d:s;else if(x(c))b.setAttribute(a,c);else if(b.getAttribute)return b=b.getAttribute(a,2),null===b?s:b},prop:function(b,a,c){if(x(c))b[a]=c;else return b[a]},text:function(){function b(a,b){if(w(b)){var d=a.nodeType;return 1===d||3===d?a.textContent:""}a.textContent=b}b.$dv="";return b}(),val:function(b,a){if(w(a)){if(b.multiple&&"select"===pa(b)){var c=[];r(b.options,function(a){a.selected&&c.push(a.value|| -a.text)});return 0===c.length?null:c}return b.value}b.value=a},html:function(b,a){if(w(a))return b.innerHTML;nb(b,!0);b.innerHTML=a},empty:yc},function(b,a){T.prototype[a]=function(a,d){var e,f,g=this.length;if(b!==yc&&(2==b.length&&b!==lb&&b!==xc?a:d)===s){if(S(a)){for(e=0;e":function(a,c,d,e){return d(a,c)>e(a, -c)},"<=":function(a,c,d,e){return d(a,c)<=e(a,c)},">=":function(a,c,d,e){return d(a,c)>=e(a,c)},"&&":function(a,c,d,e){return d(a,c)&&e(a,c)},"||":function(a,c,d,e){return d(a,c)||e(a,c)},"&":function(a,c,d,e){return d(a,c)&e(a,c)},"!":function(a,c,d){return!d(a,c)},"=":!0,"|":!0}),Bf={n:"\n",f:"\f",r:"\r",t:"\t",v:"\v","'":"'",'"':'"'},Vb=function(a){this.options=a};Vb.prototype={constructor:Vb,lex:function(a){this.text=a;this.index=0;this.ch=s;for(this.tokens=[];this.index=a},isWhitespace:function(a){return" "===a||"\r"===a||"\t"===a||"\n"===a||"\v"===a||"\u00a0"===a},isIdent:function(a){return"a"<= -a&&"z">=a||"A"<=a&&"Z">=a||"_"===a||"$"===a},isExpOperator:function(a){return"-"===a||"+"===a||this.isNumber(a)},throwError:function(a,c,d){d=d||this.index;c=x(c)?"s "+c+"-"+this.index+" ["+this.text.substring(c,d)+"]":" "+d;throw oa("lexerr",a,c,this.text);},readNumber:function(){for(var a="",c=this.index;this.index","<=",">="))a=this.binaryFn(a,c.fn,this.relational());return a},additive:function(){for(var a=this.multiplicative(),c;c=this.expect("+","-");)a=this.binaryFn(a,c.fn,this.multiplicative());return a},multiplicative:function(){for(var a=this.unary(),c;c=this.expect("*", -"/","%");)a=this.binaryFn(a,c.fn,this.unary());return a},unary:function(){var a;return this.expect("+")?this.primary():(a=this.expect("-"))?this.binaryFn(Za.ZERO,a.fn,this.unary()):(a=this.expect("!"))?this.unaryFn(a.fn,this.unary()):this.primary()},fieldAccess:function(a){var c=this.text,d=this.expect().text,e=Sc(d,this.options,c);return v(function(c,d,h){return e(h||a(c,d))},{assign:function(e,g,h){(h=a(e,h))||a.assign(e,h={});return La(h,d,g,c)}})},objectIndex:function(a){var c=this.text,d=this.expression(); -this.consume("]");return v(function(e,f){var g=a(e,f),h=d(e,f);na(h,c);return g?Aa(g[h],c):s},{assign:function(e,f,g){var h=na(d(e,g),c);(g=Aa(a(e,g),c))||a.assign(e,g={});return g[h]=f}})},functionCall:function(a,c){var d=[];if(")"!==this.peekToken().text){do d.push(this.expression());while(this.expect(","))}this.consume(")");var e=this.text,f=d.length?[]:null;return function(g,h){var k=c?c(g,h):g,l=a(g,h,k)||z;if(f)for(var n=d.length;n--;)f[n]=Aa(d[n](g,h),e);Aa(k,e);if(l){if(l.constructor===l)throw oa("isecfn", -e);if(l===yf||l===zf||l===Af)throw oa("isecff",e);}k=l.apply?l.apply(k,f):l(f[0],f[1],f[2],f[3],f[4]);return Aa(k,e)}},arrayDeclaration:function(){var a=[];if("]"!==this.peekToken().text){do{if(this.peek("]"))break;var c=this.expression();a.push(c)}while(this.expect(","))}this.consume("]");return v(function(c,e){for(var f=[],g=0,h=a.length;ga.getHours()?c.AMPMS[0]:c.AMPMS[1]},Z:function(a){a=-1*a.getTimezoneOffset(); -return a=(0<=a?"+":"")+(wb(Math[0=aa&&(c.href||c.name||c.$set("href",""),a.append(Y.createComment("IE fix")));if(!c.href&&!c.xlinkHref&&!c.name)return function(a,c){var f="[object SVGAnimatedString]"===Fa.call(c.prop("href"))? -"xlink:href":"href";c.on("click",function(a){c.attr(f)||a.preventDefault()})}}}),mb={};r(sb,function(a,c){if("multiple"!=a){var d=va("ng-"+c);mb[d]=function(){return{restrict:"A",priority:100,link:function(a,f,g){a.$watch(g[d],function(a){g.$set(c,!!a)})}}}}});r(Cc,function(a,c){mb[c]=function(){return{priority:100,link:function(a,e,f){if("ngPattern"===c&&"/"==f.ngPattern.charAt(0)&&(e=f.ngPattern.match(tf))){f.$set("ngPattern",new RegExp(e[1],e[2]));return}a.$watch(f[c],function(a){f.$set(c,a)})}}}}); -r(["src","srcset","href"],function(a){var c=va("ng-"+a);mb[c]=function(){return{priority:99,link:function(d,e,f){var g=a,h=a;"href"===a&&"[object SVGAnimatedString]"===Fa.call(e.prop("href"))&&(h="xlinkHref",f.$attr[h]="xlink:href",g=null);f.$observe(c,function(c){c?(f.$set(h,c),aa&&g&&e.prop(g,f[h])):"href"===a&&f.$set(h,null)})}}}});var $a={$addControl:z,$$renameControl:function(a,c){a.$name=c},$removeControl:z,$setValidity:z,$$setPending:z,$setDirty:z,$setPristine:z,$setSubmitted:z,$$clearControlValidity:z}; -ed.$inject=["$element","$attrs","$scope","$animate","$interpolate"];var ld=function(a){return["$timeout",function(c){return{name:"form",restrict:a?"EAC":"E",controller:ed,compile:function(){return{pre:function(a,e,f,g){if(!f.action){var h=function(c){a.$apply(function(){g.$commitViewValue();g.$setSubmitted()});c.preventDefault?c.preventDefault():c.returnValue=!1};e[0].addEventListener("submit",h,!1);e.on("$destroy",function(){c(function(){e[0].removeEventListener("submit",h,!1)},0,!1)})}var k=g.$$parentForm, -l=g.$name;l&&(La(a,l,g,l),f.$observe(f.name?"name":"ngForm",function(c){l!==c&&(La(a,l,s,l),l=c,La(a,l,g,l),k.$$renameControl(g,l))}));if(k!==$a)e.on("$destroy",function(){k.$removeControl(g);l&&La(a,l,s,l);v(g,$a)})}}}}}]},Id=ld(),Vd=ld(!0),qf=/\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z)/,Cf=/^(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?$/,Df=/^[a-z0-9!#$%&'*+\/=?^_`{|}~.-]+@[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/i, -Ef=/^\s*(\-|\+)?(\d+|(\d*(\.\d*)))\s*$/,md=/^(\d{4})-(\d{2})-(\d{2})$/,nd=/^(\d{4})-(\d\d)-(\d\d)T(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/,Zb=/^(\d{4})-W(\d\d)$/,od=/^(\d{4})-(\d\d)$/,pd=/^(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/,Ff=/(\s+|^)default(\s+|$)/,$b=new Q("ngModel"),qd={text:function(a,c,d,e,f,g){ab(a,c,d,e,f,g);Wb(e)},date:bb("date",md,zb(md,["yyyy","MM","dd"]),"yyyy-MM-dd"),"datetime-local":bb("datetimelocal",nd,zb(nd,"yyyy MM dd HH mm ss sss".split(" ")),"yyyy-MM-ddTHH:mm:ss.sss"),time:bb("time", -pd,zb(pd,["HH","mm","ss","sss"]),"HH:mm:ss.sss"),week:bb("week",Zb,function(a,c){if(ha(a))return a;if(C(a)){Zb.lastIndex=0;var d=Zb.exec(a);if(d){var e=+d[1],f=+d[2],g=d=0,h=0,k=0,l=cd(e),f=7*(f-1);c&&(d=c.getHours(),g=c.getMinutes(),h=c.getSeconds(),k=c.getMilliseconds());return new Date(e,0,l.getDate()+f,d,g,h,k)}}return NaN},"yyyy-Www"),month:bb("month",od,zb(od,["yyyy","MM"]),"yyyy-MM"),number:function(a,c,d,e,f,g){gd(a,c,d,e);ab(a,c,d,e,f,g);e.$$parserName="number";e.$parsers.push(function(a){return e.$isEmpty(a)? -null:Ef.test(a)?parseFloat(a):s});e.$formatters.push(function(a){if(!e.$isEmpty(a)){if(!ea(a))throw $b("numfmt",a);a=a.toString()}return a});if(d.min||d.ngMin){var h;e.$validators.min=function(a){return e.$isEmpty(a)||w(h)||a>=h};d.$observe("min",function(a){x(a)&&!ea(a)&&(a=parseFloat(a,10));h=ea(a)&&!isNaN(a)?a:s;e.$validate()})}if(d.max||d.ngMax){var k;e.$validators.max=function(a){return e.$isEmpty(a)||w(k)||a<=k};d.$observe("max",function(a){x(a)&&!ea(a)&&(a=parseFloat(a,10));k=ea(a)&&!isNaN(a)? -a:s;e.$validate()})}},url:function(a,c,d,e,f,g){ab(a,c,d,e,f,g);Wb(e);e.$$parserName="url";e.$validators.url=function(a){return e.$isEmpty(a)||Cf.test(a)}},email:function(a,c,d,e,f,g){ab(a,c,d,e,f,g);Wb(e);e.$$parserName="email";e.$validators.email=function(a){return e.$isEmpty(a)||Df.test(a)}},radio:function(a,c,d,e){w(d.name)&&c.attr("name",++cb);c.on("click",function(a){c[0].checked&&e.$setViewValue(d.value,a&&a.type)});e.$render=function(){c[0].checked=d.value==e.$viewValue};d.$observe("value", -e.$render)},checkbox:function(a,c,d,e,f,g,h,k){var l=hd(k,a,"ngTrueValue",d.ngTrueValue,!0),n=hd(k,a,"ngFalseValue",d.ngFalseValue,!1);c.on("click",function(a){e.$setViewValue(c[0].checked,a&&a.type)});e.$render=function(){c[0].checked=e.$viewValue};e.$isEmpty=function(a){return a!==l};e.$formatters.push(function(a){return ra(a,l)});e.$parsers.push(function(a){return a?l:n})},hidden:z,button:z,submit:z,reset:z,file:z},mc=["$browser","$sniffer","$filter","$parse",function(a,c,d,e){return{restrict:"E", -require:["?ngModel"],link:function(f,g,h,k){k[0]&&(qd[R(h.type)]||qd.text)(f,g,h,k[0],c,a,d,e)}}}],rf="ng-valid",sf="ng-invalid",Ma="ng-pristine",yb="ng-dirty",jd="ng-pending",Gf=["$scope","$exceptionHandler","$attrs","$element","$parse","$animate","$timeout","$rootScope","$q","$interpolate",function(a,c,d,e,f,g,h,k,l,n){this.$modelValue=this.$viewValue=Number.NaN;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=s;this.$name=n(d.name||"",!1)(a);var p=f(d.ngModel),q=null,m=this,t=function(){var c=p(a);m.$options&&m.$options.getterSetter&&F(c)&&(c=c());return c},u=function(c){var d;m.$options&&m.$options.getterSetter&&F(d=p(a))?d(m.$modelValue):p.assign(a,m.$modelValue)};this.$$setOptions=function(a){m.$options=a;if(!(p.assign||a&&a.getterSetter))throw $b("nonassign",d.ngModel,ta(e));};this.$render= -z;this.$isEmpty=function(a){return w(a)||""===a||null===a||a!==a};var H=e.inheritedData("$formController")||$a,A=0;e.addClass(Ma).addClass("ng-untouched");fd({ctrl:this,$element:e,set:function(a,c){a[c]=!0},unset:function(a,c){delete a[c]},parentForm:H,$animate:g});this.$setPristine=function(){m.$dirty=!1;m.$pristine=!0;g.removeClass(e,yb);g.addClass(e,Ma)};this.$setUntouched=function(){m.$touched=!1;m.$untouched=!0;g.setClass(e,"ng-untouched","ng-touched")};this.$setTouched=function(){m.$touched= -!0;m.$untouched=!1;g.setClass(e,"ng-touched","ng-untouched")};this.$rollbackViewValue=function(){h.cancel(q);m.$viewValue=m.$$lastCommittedViewValue;m.$render()};this.$validate=function(){ea(m.$modelValue)&&isNaN(m.$modelValue)||this.$$parseAndValidate()};this.$$runValidators=function(a,c,d,e){function f(){var a=!0;r(m.$validators,function(e,f){var g=e(c,d);a=a&&g;h(f,g)});return a?!0:(r(m.$asyncValidators,function(a,c){h(c,null)}),!1)}function g(){var a=[],e=!0;r(m.$asyncValidators,function(f,g){var k= -f(c,d);if(!k||!F(k.then))throw $b("$asyncValidators",k);h(g,s);a.push(k.then(function(){h(g,!0)},function(a){e=!1;h(g,!1)}))});a.length?l.all(a).then(function(){k(e)},z):k(!0)}function h(a,c){p===A&&m.$setValidity(a,c)}function k(a){p===A&&e(a)}A++;var p=A;(function(a){var c=m.$$parserName||"parse";if(a===s)h(c,null);else if(h(c,a),!a)return r(m.$validators,function(a,c){h(c,null)}),r(m.$asyncValidators,function(a,c){h(c,null)}),!1;return!0})(a)?f()?g():k(!1):k(!1)};this.$commitViewValue=function(){var a= -m.$viewValue;h.cancel(q);if(m.$$lastCommittedViewValue!==a||""===a&&m.$$hasNativeValidators)m.$$lastCommittedViewValue=a,m.$pristine&&(m.$dirty=!0,m.$pristine=!1,g.removeClass(e,Ma),g.addClass(e,yb),H.$setDirty()),this.$$parseAndValidate()};this.$$parseAndValidate=function(){for(var a=!0,c=m.$$lastCommittedViewValue,d=c,e=0;e=f}}}}},ke=function(){return{restrict:"A",priority:100,require:"ngModel",link:function(a,c,d,e){var f=c.attr(d.$attr.ngList)||", ",g="false"!==d.ngTrim,h=g?ca(f):f;e.$parsers.push(function(a){if(!w(a)){var c=[];a&&r(a.split(h),function(a){a&&c.push(g?ca(a):a)});return c}});e.$formatters.push(function(a){return M(a)?a.join(f):s});e.$isEmpty=function(a){return!a||!a.length}}}},Hf=/^(true|false|\d+)$/,me=function(){return{restrict:"A",priority:100,compile:function(a, -c){return Hf.test(c.ngValue)?function(a,c,f){f.$set("value",a.$eval(f.ngValue))}:function(a,c,f){a.$watch(f.ngValue,function(a){f.$set("value",a)})}}}},ne=function(){return{restrict:"A",controller:["$scope","$attrs",function(a,c){var d=this;this.$options=a.$eval(c.ngModelOptions);this.$options.updateOn!==s?(this.$options.updateOnDefault=!1,this.$options.updateOn=ca(this.$options.updateOn.replace(Ff,function(){d.$options.updateOnDefault=!0;return" "}))):this.$options.updateOnDefault=!0}]}},Nd=["$compile", -function(a){return{restrict:"AC",compile:function(c){a.$$addBindingClass(c);return function(c,e,f){a.$$addBindingInfo(e,f.ngBind);c.$watch(f.ngBind,function(a){e.text(a==s?"":a)})}}}}],Pd=["$interpolate","$compile",function(a,c){return{compile:function(d){c.$$addBindingClass(d);return function(d,f,g){d=a(f.attr(g.$attr.ngBindTemplate));c.$$addBindingInfo(f,d.expressions);g.$observe("ngBindTemplate",function(a){f.text(a)})}}}}],Od=["$sce","$parse","$compile",function(a,c,d){return{restrict:"A",compile:function(e, -f){var g=c(f.ngBindHtml),h=c(f.ngBindHtml,function(a){return(a||"").toString()});d.$$addBindingClass(e);return function(c,e,f){d.$$addBindingInfo(e,f.ngBindHtml);c.$watch(h,function(){e.html(a.getTrustedHtml(g(c))||"")})}}}}],Qd=Xb("",!0),Sd=Xb("Odd",0),Rd=Xb("Even",1),Td=Ea({compile:function(a,c){c.$set("ngCloak",s);a.removeClass("ng-cloak")}}),Ud=[function(){return{restrict:"A",scope:!0,controller:"@",priority:500}}],rc={},If={blur:!0,focus:!0};r("click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave keydown keyup keypress submit focus blur copy cut paste".split(" "), -function(a){var c=va("ng-"+a);rc[c]=["$parse","$rootScope",function(d,e){return{restrict:"A",compile:function(f,g){var h=d(g[c]);return function(c,d){d.on(a,function(d){var f=function(){h(c,{$event:d})};If[a]&&e.$$phase?c.$evalAsync(f):c.$apply(f)})}}}}]});var Xd=["$animate",function(a){return{multiElement:!0,transclude:"element",priority:600,terminal:!0,restrict:"A",$$tlb:!0,link:function(c,d,e,f,g){var h,k,l;c.$watch(e.ngIf,function(c){c?k||g(function(c,f){k=f;c[c.length++]=Y.createComment(" end ngIf: "+ -e.ngIf+" ");h={clone:c};a.enter(c,d.parent(),d)}):(l&&(l.remove(),l=null),k&&(k.$destroy(),k=null),h&&(l=jb(h.clone),a.leave(l).then(function(){l=null}),h=null))})}}}],Yd=["$templateRequest","$anchorScroll","$animate","$sce",function(a,c,d,e){return{restrict:"ECA",priority:400,terminal:!0,transclude:"element",controller:Da.noop,compile:function(f,g){var h=g.ngInclude||g.src,k=g.onload||"",l=g.autoscroll;return function(f,g,q,m,r){var u=0,s,A,y,E=function(){A&&(A.remove(),A=null);s&&(s.$destroy(), -s=null);y&&(d.leave(y).then(function(){A=null}),A=y,y=null)};f.$watch(e.parseAsResourceUrl(h),function(e){var h=function(){!x(l)||l&&!f.$eval(l)||c()},q=++u;e?(a(e,!0).then(function(a){if(q===u){var c=f.$new();m.template=a;a=r(c,function(a){E();d.enter(a,null,g).then(h)});s=c;y=a;s.$emit("$includeContentLoaded",e);f.$eval(k)}},function(){q===u&&(E(),f.$emit("$includeContentError",e))}),f.$emit("$includeContentRequested",e)):(E(),m.template=null)})}}}}],oe=["$compile",function(a){return{restrict:"ECA", -priority:-400,require:"ngInclude",link:function(c,d,e,f){/SVG/.test(d[0].toString())?(d.empty(),a(uc(f.template,Y).childNodes)(c,function(a){d.append(a)},s,s,d)):(d.html(f.template),a(d.contents())(c))}}}],Zd=Ea({priority:450,compile:function(){return{pre:function(a,c,d){a.$eval(d.ngInit)}}}}),$d=Ea({terminal:!0,priority:1E3}),ae=["$locale","$interpolate",function(a,c){var d=/{}/g;return{restrict:"EA",link:function(e,f,g){var h=g.count,k=g.$attr.when&&f.attr(g.$attr.when),l=g.offset||0,n=e.$eval(k)|| -{},p={},q=c.startSymbol(),m=c.endSymbol(),s=/^when(Minus)?(.+)$/;r(g,function(a,c){s.test(c)&&(n[R(c.replace("when","").replace("Minus","-"))]=f.attr(g.$attr[c]))});r(n,function(a,e){p[e]=c(a.replace(d,q+h+"-"+l+m))});e.$watch(function(){var c=parseFloat(e.$eval(h));if(isNaN(c))return"";c in n||(c=a.pluralCat(c-l));return p[c](e)},function(a){f.text(a)})}}}],be=["$parse","$animate",function(a,c){var d=Q("ngRepeat"),e=function(a,c,d,e,l,n,p){a[d]=e;l&&(a[l]=n);a.$index=c;a.$first=0===c;a.$last=c=== -p-1;a.$middle=!(a.$first||a.$last);a.$odd=!(a.$even=0===(c&1))};return{restrict:"A",multiElement:!0,transclude:"element",priority:1E3,terminal:!0,$$tlb:!0,compile:function(f,g){var h=g.ngRepeat,k=Y.createComment(" end ngRepeat: "+h+" "),l=h.match(/^\s*([\s\S]+?)\s+in\s+([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+track\s+by\s+([\s\S]+?))?\s*$/);if(!l)throw d("iexp",h);var n=l[1],p=l[2],q=l[3],m=l[4],l=n.match(/^(?:([\$\w]+)|\(([\$\w]+)\s*,\s*([\$\w]+)\))$/);if(!l)throw d("iidexp",n);var t=l[3]||l[1],u= -l[2];if(q&&(!/^[$a-zA-Z_][$a-zA-Z0-9_]*$/.test(q)||/^(null|undefined|this|\$index|\$first|\$middle|\$last|\$even|\$odd|\$parent)$/.test(q)))throw d("badident",q);var v,A,y,E,x={$id:Ja};m?v=a(m):(y=function(a,c){return Ja(c)},E=function(a){return a});return function(a,f,g,m,l){v&&(A=function(c,d,e){u&&(x[u]=c);x[t]=d;x.$index=e;return v(a,x)});var n=Object.create(null);a.$watchCollection(p,function(g){var m,p,K=f[0],x,v=Object.create(null),L,z,H,w,G,V,fa;q&&(a[q]=g);if(Na(g))G=g,p=A||y;else{p=A||E; -G=[];for(fa in g)g.hasOwnProperty(fa)&&"$"!=fa.charAt(0)&&G.push(fa);G.sort()}L=G.length;fa=Array(L);for(m=0;mC;)s.pop().element.remove()}for(;D.length> -B;)D.pop()[0].element.remove()}var l;if(!(l=t.match(d)))throw Jf("iexp",t,ta(f));var p=c(l[2]||l[1]),n=l[4]||l[6],q=l[5],r=c(l[3]||""),v=c(l[2]?l[1]:n),z=c(l[7]),w=l[8]?c(l[8]):null,D=[[{element:f,label:""}]];u&&(a(u)(e),u.removeClass("ng-scope"),u.remove());f.empty();f.on("change",function(){e.$apply(function(){var a,c=z(e)||[],d={},h,l,p,r,t,x,u;if(m)for(l=[],r=0,x=D.length;r@charset "UTF-8";[ng\\:cloak],[ng-cloak],[data-ng-cloak],[x-ng-cloak],.ng-cloak,.x-ng-cloak,.ng-hide:not(.ng-animate){display:none !important;}ng\\:form{display:block;}'); +(function(R,X,t){'use strict';function E(b){return function(){var a=arguments[0],c;c="["+(b?b+":":"")+a+"] http://errors.angularjs.org/1.3.0-rc.5/"+(b?b+"/":"")+a;for(a=1;a").append(b).html();try{return b[0].nodeType===jb?H(c):c.match(/^(<[^>]+>)/)[1].replace(/^<([\w\-]+)/,function(a,b){return"<"+ +H(b)})}catch(d){return H(c)}}function nc(b){try{return decodeURIComponent(b)}catch(a){}}function oc(b){var a={},c,d;q((b||"").split("&"),function(b){b&&(c=b.replace(/\+/g,"%20").split("="),d=nc(c[0]),y(d)&&(b=y(c[1])?nc(c[1]):!0,Gb.call(a,d)?B(a[d])?a[d].push(b):a[d]=[a[d],b]:a[d]=b))});return a}function Hb(b){var a=[];q(b,function(b,d){B(b)?q(b,function(b){a.push(xa(d,!0)+(!0===b?"":"="+xa(b,!0)))}):a.push(xa(d,!0)+(!0===b?"":"="+xa(b,!0)))});return a.length?a.join("&"):""}function kb(b){return xa(b, +!0).replace(/%26/gi,"&").replace(/%3D/gi,"=").replace(/%2B/gi,"+")}function xa(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 Ed(b,a){var c,d,e=lb.length;b=C(b);for(d=0;d/,">"));}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=Ib(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!/;R&&e.test(R.name)&&(c.debugInfoEnabled=!0,R.name=R.name.replace(e,""));if(R&&!f.test(R.name))return d();R.name=R.name.replace(f,"");ya.resumeBootstrap=function(b){q(b,function(b){a.push(b)});d()}}function Gd(){R.name="NG_ENABLE_DEBUG_INFO!"+R.name;R.location.reload()}function Hd(b){return ya.element(b).injector().get("$$testability")} +function Jb(b,a){a=a||"_";return b.replace(Id,function(b,d){return(d?a:"")+b.toLowerCase()})}function Jd(){var b;qc||((ja=R.jQuery)&&ja.fn.on?(C=ja,w(ja.fn,{scope:Ha.scope,isolateScope:Ha.isolateScope,controller:Ha.controller,injector:Ha.injector,inheritedData:Ha.inheritedData}),b=ja.cleanData,ja.cleanData=function(a){var c;if(Kb)Kb=!1;else for(var d=0,e;null!=(e=a[d]);d++)(c=ja._data(e,"events"))&&c.$destroy&&ja(e).triggerHandler("$destroy");b(a)}):C=P,ya.element=C,qc=!0)}function Lb(b,a,c){if(!b)throw Ta("areq", +a||"?",c||"required");return b}function mb(b,a,c){c&&B(b)&&(b=b[b.length-1]);Lb(A(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 Ta("badname",a);}function rc(b,a,c){if(!a)return b;a=a.split(".");for(var d,e=b,f=a.length,g=0;g")+d[2];for(d=d[0];d--;)c=c.lastChild;f=ib(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 P(b){if(b instanceof P)return b;var a; +u(b)&&(b=V(b),a=!0);if(!(this instanceof P)){if(a&&"<"!=b.charAt(0))throw Nb("nosel");return new P(b)}if(a){a=X;var c;b=(c=bf.exec(b))?[a.createElement(c[1])]:(c=Bc(b,a))?c.childNodes:[]}Cc(this,b)}function Ob(b){return b.cloneNode(!0)}function qb(b,a){a||rb(b);if(b.querySelectorAll)for(var c=b.querySelectorAll("*"),d=0,e=c.length;d 4096 bytes)!"));else{if(k.cookie!==W)for(W=k.cookie,d=W.split("; "),S={},f=0;fl&&this.remove(s.key),b},get:function(a){if(l").parent()[0])});var f=S(a,b,a,c,d,e);I.$$addScopeClass(a);var g=null;return function(b,c,d,e,h){Lb(b,"scope");g||(g=(h=h&&h[0])? +"foreignobject"!==ma(h)&&h.toString().match(/SVG/)?"svg":"html":"html");h="html"!==g?C(R(g,C("
").append(a).html())):c?Ha.clone.call(a):a;if(d)for(var k in d)h.data("$"+k+"Controller",d[k].instance);I.$$addScopeInfo(h,b);c&&c(h,b);f&&f(b,h,h,e);return h}}function S(a,b,c,d,e,f){function h(a,c,d,e){var f,k,l,m,s,v,r;if(n)for(r=Array(c.length),m=0;mJ.priority)break;if(E=J.scope)J.templateUrl||(O(E)?(Ka("new/isolated scope",x||T,J,w),x=J):Ka("new/isolated scope",x,J,w)),T=T||J;ga=J.name; +!J.templateUrl&&J.controller&&(E=J.controller,W=W||{},Ka("'"+ga+"' controller",W[ga],J,w),W[ga]=J);if(E=J.transclude)y=!0,J.$$tlb||(Ka("transclusion",Ca,J,w),Ca=J),"element"==E?(z=!0,M=J.priority,E=w,w=e.$$element=C(X.createComment(" "+ga+": "+e[ga]+" ")),d=w[0],yb(g,Ua.call(E,0),d),Ba=I(E,f,M,k&&k.name,{nonTlbTranscludeDirective:Ca})):(E=C(Ob(d)).contents(),w.empty(),Ba=I(E,f));if(J.template)if(Ub=!0,Ka("template",ea,J,w),ea=J,E=A(J.template)?J.template(w,e):J.template,E=Nc(E),J.replace){k=J;E=Mb.test(E)? +Oc(R(J.templateNamespace,V(E))):[];d=E[0];if(1!=E.length||d.nodeType!==ia)throw fa("tplrt",ga,"");yb(g,w,d);P={$attr:{}};E=N(d,[],P);var $=a.splice(H+1,a.length-(H+1));x&&wb(E);a=a.concat(E).concat($);Mc(e,P);P=a.length}else w.html(E);if(J.templateUrl)Ub=!0,Ka("template",ea,J,w),ea=J,J.replace&&(k=J),D=G(a.splice(H,a.length-H),w,e,g,y&&Ba,l,v,{controllerDirectives:W,newIsolateScopeDirective:x,templateDirective:ea,nonTlbTranscludeDirective:Ca}),P=a.length;else if(J.compile)try{sa=J.compile(w,e,Ba), +A(sa)?r(null,sa,xb,$a):sa&&r(sa.pre,sa.post,xb,$a)}catch(aa){c(aa,qa(w))}J.terminal&&(D.terminal=!0,M=Math.max(M,J.priority))}D.scope=T&&!0===T.scope;D.transcludeOnThisElement=y;D.elementTranscludeOnThisElement=z;D.templateOnThisElement=Ub;D.transclude=Ba;n.hasElementTranscludeDirective=z;return D}function wb(a){for(var b=0,c=a.length;bs.priority)&&-1!=s.restrict.indexOf(f)&&(k&&(s=kc(s,{$$start:k,$$end:l})),b.push(s),h=s)}catch(F){c(F)}}return h}function Mc(a,b){var c=b.$attr,d=a.$attr,e=a.$$element;q(a,function(d,e){"$"!=e.charAt(0)&&(b[e]&&b[e]!==d&&(d+=("style"===e?";":" ")+b[e]),a.$set(e,d,!0,c[e]))});q(b,function(b,f){"class"==f?(T(e,b),a["class"]=(a["class"]?a["class"]+" ":"")+b):"style"==f?(e.attr("style",e.attr("style")+";"+b),a.style=(a.style?a.style+";":"")+b):"$"==f.charAt(0)||a.hasOwnProperty(f)|| +(a[f]=b,d[f]=c[f])})}function G(a,b,c,d,e,f,g,h){var k=[],l,m,s=b[0],n=a.shift(),v=w({},n,{templateUrl:null,transclude:null,replace:null,$$originalDirective:n}),F=A(n.templateUrl)?n.templateUrl(b,c):n.templateUrl,L=n.templateNamespace;b.empty();r(Q.getTrustedResourceUrl(F)).then(function(r){var Q,D;r=Nc(r);if(n.replace){r=Mb.test(r)?Oc(R(L,V(r))):[];Q=r[0];if(1!=r.length||Q.nodeType!==ia)throw fa("tplrt",n.name,F);r={$attr:{}};yb(d,b,Q);var M=N(Q,[],r);O(n.scope)&&wb(M);a=M.concat(a);Mc(c,r)}else Q= +s,b.html(r);a.unshift(v);l=ea(a,Q,c,e,b,n,f,g,h);q(d,function(a,c){a==Q&&(d[c]=b[0])});for(m=S(b[0].childNodes,e);k.length;){r=k.shift();D=k.shift();var I=k.shift(),K=k.shift(),M=b[0];if(!r.$$destroyed){if(D!==s){var x=D.className;h.hasElementTranscludeDirective&&n.replace||(M=Ob(Q));yb(I,C(D),M);T(C(M),x)}D=l.transcludeOnThisElement?W(r,l.transclude,K):K;l(m,r,M,d,D)}}k=null});return function(a,b,c,d,e){a=e;b.$$destroyed||(k?(k.push(b),k.push(c),k.push(d),k.push(a)):(l.transcludeOnThisElement&&(a= +W(b,l.transclude,e)),l(m,b,c,d,a)))}}function E(a,b){var c=b.priority-a.priority;return 0!==c?c:a.name!==b.name?a.name"+b+"";return c.childNodes[0].childNodes;default:return b}}function Ba(a,b){if("srcdoc"==b)return Q.HTML;var c=ma(a);if("xlinkHref"==b||"form"==c&&"action"==b||"img"!=c&&("src"==b||"ngSrc"==b))return Q.RESOURCE_URL}function P(a,c,d,e,f){var h=b(d,!0);if(h){if("multiple"===e&&"select"===ma(a))throw fa("selmulti",qa(a));c.push({priority:100,compile:function(){return{pre:function(c,d,l){d=l.$$observers|| +(l.$$observers={});if(k.test(e))throw fa("nodomevents");l[e]&&(h=b(l[e],!0,Ba(a,e),g[e]||f))&&(l[e]=h(c),(d[e]||(d[e]=[])).$$inter=!0,(l.$$observers&&l.$$observers[e].$$scope||c).$watch(h,function(a,b){"class"===e&&a!=b?l.$updateClass(a,b):l.$set(e,a)}))}}}})}}function yb(a,b,c){var d=b[0],e=b.length,f=d.parentNode,g,h;if(a)for(g=0,h=a.length;g=a)return b;for(;a--;)8===b[a].nodeType&&lf.call(b, +a,1);return b}function Be(){var b={},a=!1,c=/^(\S+)(\s+as\s+(\w+))?$/;this.register=function(a,c){Ia(a,"controller");O(a)?w(b,a):b[a]=c};this.allowGlobals=function(){a=!0};this.$get=["$injector","$window",function(d,e){function f(a,b,c,d){if(!a||!O(a.$scope))throw E("$controller")("noscp",d,b);a.$scope[b]=c}return function(g,h,k,l){var p,n,s;k=!0===k;l&&u(l)&&(s=l);u(g)&&(l=g.match(c),n=l[1],s=s||l[3],g=b.hasOwnProperty(n)?b[n]:rc(h.$scope,n,!0)||(a?rc(e,n,!0):t),mb(g,n,!0));if(k)return k=function(){}, +k.prototype=(B(g)?g[g.length-1]:g).prototype,p=new k,s&&f(h,s,p,n||g.name),w(function(){d.invoke(g,p,h,n);return p},{instance:p,identifier:s});p=d.instantiate(g,h,n);s&&f(h,s,p,n||g.name);return p}}]}function Ce(){this.$get=["$window",function(b){return C(b.document)}]}function De(){this.$get=["$log",function(b){return function(a,c){b.error.apply(b,arguments)}}]}function Qc(b){var a={},c,d,e;if(!b)return a;q(b.split("\n"),function(b){e=b.indexOf(":");c=H(V(b.substr(0,e)));d=V(b.substr(e+1));c&&(a[c]= +a[c]?a[c]+", "+d:d)});return a}function Rc(b){var a=O(b)?b:t;return function(c){a||(a=Qc(b));return c?a[H(c)]||null:a}}function Sc(b,a,c){if(A(c))return c(b,a);q(c,function(c){b=c(b,a)});return b}function Ge(){var b=/^\s*(\[|\{[^\{])/,a=/[\}\]]\s*$/,c=/^\)\]\}',?\n/,d={"Content-Type":"application/json;charset=utf-8"},e=this.defaults={transformResponse:[function(d,e){if(u(d)){d=d.replace(c,"");var f=e("Content-Type");if(f&&0===f.indexOf("application/json")||b.test(d)&&a.test(d))d=mc(d)}return d}], +transformRequest:[function(a){return O(a)&&"[object File]"!==Fa.call(a)&&"[object Blob]"!==Fa.call(a)?pa(a):a}],headers:{common:{Accept:"application/json, text/plain, */*"},post:na(d),put:na(d),patch:na(d)},xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN"},f=!1;this.useApplyAsync=function(a){return y(a)?(f=!!a,this):f};var g=this.interceptors=[];this.$get=["$httpBackend","$browser","$cacheFactory","$rootScope","$q","$injector",function(a,b,c,d,n,s){function m(a){function b(a){var d=w({}, +a,{data:Sc(a.data,a.headers,c.transformResponse)});a=a.status;return 200<=a&&300>a?d:n.reject(d)}var c={method:"get",transformRequest:e.transformRequest,transformResponse:e.transformResponse},d=function(a){var b=e.headers,c=w({},a.headers),d,f,b=w({},b.common,b[H(a.method)]);a:for(d in b){a=H(d);for(f in c)if(H(f)===a)continue a;c[d]=b[d]}(function(a){var b;q(a,function(c,d){A(c)&&(b=c(),null!=b?a[d]=b:delete a[d])})})(c);return c}(a);w(c,a);c.headers=d;c.method=ob(c.method);var f=[function(a){d= +a.headers;var c=Sc(a.data,Rc(d),a.transformRequest);G(c)&&q(d,function(a,b){"content-type"===H(b)&&delete d[b]});G(a.withCredentials)&&!G(e.withCredentials)&&(a.withCredentials=e.withCredentials);return r(a,c,d).then(b,b)},t],g=n.when(c);for(q(x,function(a){(a.request||a.requestError)&&f.unshift(a.request,a.requestError);(a.response||a.responseError)&&f.push(a.response,a.responseError)});f.length;){a=f.shift();var h=f.shift(),g=g.then(a,h)}g.success=function(a){g.then(function(b){a(b.data,b.status, +b.headers,c)});return g};g.error=function(a){g.then(null,function(b){a(b.data,b.status,b.headers,c)});return g};return g}function r(c,g,l){function s(a,b,c,e){function g(){r(b,a,c,e)}N&&(200<=a&&300>a?N.put(U,[a,b,Qc(c),e]):N.remove(U));f?d.$applyAsync(g):(g(),d.$$phase||d.$apply())}function r(a,b,d,e){b=Math.max(b,0);(200<=b&&300>b?x.resolve:x.reject)({data:a,status:b,headers:Rc(d),config:c,statusText:e})}function I(){var a=m.pendingRequests.indexOf(c);-1!==a&&m.pendingRequests.splice(a,1)}var x= +n.defer(),q=x.promise,N,K,U=L(c.url,c.params);m.pendingRequests.push(c);q.then(I,I);!c.cache&&!e.cache||!1===c.cache||"GET"!==c.method&&"JSONP"!==c.method||(N=O(c.cache)?c.cache:O(e.cache)?e.cache:F);if(N)if(K=N.get(U),y(K)){if(K&&A(K.then))return K.then(I,I),K;B(K)?r(K[1],K[0],na(K[2]),K[3]):r(K,200,{},"OK")}else N.put(U,q);G(K)&&((K=Tc(c.url)?b.cookies()[c.xsrfCookieName||e.xsrfCookieName]:t)&&(l[c.xsrfHeaderName||e.xsrfHeaderName]=K),a(c.method,U,g,s,l,c.timeout,c.withCredentials,c.responseType)); +return q}function L(a,b){if(!b)return a;var c=[];zd(b,function(a,b){null===a||G(a)||(B(a)||(a=[a]),q(a,function(a){O(a)&&(a=ca(a)?a.toISOString():pa(a));c.push(xa(b)+"="+xa(a))}))});0=k&&(r.resolve(s),n(L.$$intervalId),delete f[L.$$intervalId]);m||b.$apply()},h);f[L.$$intervalId]=r;return L}var f={};e.cancel=function(b){return b&&b.$$intervalId in f?(f[b.$$intervalId].reject("canceled"),a.clearInterval(b.$$intervalId),delete f[b.$$intervalId],!0): +!1};return e}]}function Nd(){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:"\u00a4",posSuf:"",negPre:"(\u00a4",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(b){return 1===b?"one":"other"}}}}function Yb(b){b=b.split("/");for(var a=b.length;a--;)b[a]=kb(b[a]);return b.join("/")}function Uc(b,a,c){b=ua(b,c);a.$$protocol= +b.protocol;a.$$host=b.hostname;a.$$port=$(b.port)||of[b.protocol]||null}function Vc(b,a,c){var d="/"!==b.charAt(0);d&&(b="/"+b);b=ua(b,c);a.$$path=decodeURIComponent(d&&"/"===b.pathname.charAt(0)?b.pathname.substring(1):b.pathname);a.$$search=oc(b.search);a.$$hash=decodeURIComponent(b.hash);a.$$path&&"/"!=a.$$path.charAt(0)&&(a.$$path="/"+a.$$path)}function ta(b,a){if(0===a.indexOf(b))return a.substr(b.length)}function Aa(b){var a=b.indexOf("#");return-1==a?b:b.substr(0,a)}function Zb(b){return b.substr(0, +Aa(b).lastIndexOf("/")+1)}function $b(b,a){this.$$html5=!0;a=a||"";var c=Zb(b);Uc(b,this,b);this.$$parse=function(a){var e=ta(c,a);if(!u(e))throw ab("ipthprfx",a,c);Vc(e,this,b);this.$$path||(this.$$path="/");this.$$compose()};this.$$compose=function(){var a=Hb(this.$$search),b=this.$$hash?"#"+kb(this.$$hash):"";this.$$url=Yb(this.$$path)+(a?"?"+a:"")+b;this.$$absUrl=c+this.$$url.substr(1)};this.$$parseLinkUrl=function(d,e){if(e&&"#"===e[0])return this.hash(e.slice(1)),!0;var f,g;(f=ta(b,d))!==t? +(g=f,g=(f=ta(a,f))!==t?c+(ta("/",f)||f):b+g):(f=ta(c,d))!==t?g=c+f:c==d+"/"&&(g=c);g&&this.$$parse(g);return!!g}}function ac(b,a){var c=Zb(b);Uc(b,this,b);this.$$parse=function(d){var e=ta(b,d)||ta(c,d),e="#"==e.charAt(0)?ta(a,e):this.$$html5?e:"";if(!u(e))throw ab("ihshprfx",d,a);Vc(e,this,b);d=this.$$path;var f=/^\/[A-Z]:(\/.*)/;0===e.indexOf(b)&&(e=e.replace(b,""));f.exec(e)||(d=(e=f.exec(d))?e[1]:d);this.$$path=d;this.$$compose()};this.$$compose=function(){var c=Hb(this.$$search),e=this.$$hash? +"#"+kb(this.$$hash):"";this.$$url=Yb(this.$$path)+(c?"?"+c:"")+e;this.$$absUrl=b+(this.$$url?a+this.$$url:"")};this.$$parseLinkUrl=function(a,c){return Aa(b)==Aa(a)?(this.$$parse(a),!0):!1}}function Wc(b,a){this.$$html5=!0;ac.apply(this,arguments);var c=Zb(b);this.$$parseLinkUrl=function(d,e){if(e&&"#"===e[0])return this.hash(e.slice(1)),!0;var f,g;b==Aa(d)?f=d:(g=ta(c,d))?f=b+a+g:c===d+"/"&&(f=c);f&&this.$$parse(f);return!!f};this.$$compose=function(){var c=Hb(this.$$search),e=this.$$hash?"#"+kb(this.$$hash): +"";this.$$url=Yb(this.$$path)+(c?"?"+c:"")+e;this.$$absUrl=b+a+this.$$url}}function zb(b){return function(){return this[b]}}function Xc(b,a){return function(c){if(G(c))return this[b];this[b]=a(c);this.$$compose();return this}}function Ie(){var b="",a={enabled:!1,requireBase:!0,rewriteLinks:!0};this.hashPrefix=function(a){return y(a)?(b=a,this):b};this.html5Mode=function(b){return Ra(b)?(a.enabled=b,this):O(b)?(Ra(b.enabled)&&(a.enabled=b.enabled),Ra(b.requireBase)&&(a.requireBase=b.requireBase),Ra(b.rewriteLinks)&& +(a.rewriteLinks=b.rewriteLinks),this):a};this.$get=["$rootScope","$browser","$sniffer","$rootElement",function(c,d,e,f){function g(a,b,c){var e=k.url(),f=k.$$state;try{d.url(a,b,c),k.$$state=d.state()}catch(g){throw k.url(e),k.$$state=f,g;}}function h(a,b){c.$broadcast("$locationChangeSuccess",k.absUrl(),a,k.$$state,b)}var k,l;l=d.baseHref();var p=d.url(),n;if(a.enabled){if(!l&&a.requireBase)throw ab("nobase");n=p.substring(0,p.indexOf("/",p.indexOf("//")+2))+(l||"/");l=e.history?$b:Wc}else n=Aa(p), +l=ac;k=new l(n,"#"+b);k.$$parseLinkUrl(p,p);k.$$state=d.state();var s=/^\s*(javascript|mailto):/i;f.on("click",function(b){if(a.rewriteLinks&&!b.ctrlKey&&!b.metaKey&&2!=b.which){for(var e=C(b.target);"a"!==ma(e[0]);)if(e[0]===f[0]||!(e=e.parent())[0])return;var g=e.prop("href"),h=e.attr("href")||e.attr("xlink:href");O(g)&&"[object SVGAnimatedString]"===g.toString()&&(g=ua(g.animVal).href);s.test(g)||!g||e.attr("target")||b.isDefaultPrevented()||!k.$$parseLinkUrl(g,h)||(b.preventDefault(),k.absUrl()!= +d.url()&&(c.$apply(),R.angular["ff-684208-preventDefault"]=!0))}});k.absUrl()!=p&&d.url(k.absUrl(),!0);var m=!0;d.onUrlChange(function(a,b){c.$evalAsync(function(){var d=k.absUrl(),e=k.$$state;k.$$parse(a);k.$$state=b;c.$broadcast("$locationChangeStart",a,d,b,e).defaultPrevented?(k.$$parse(d),k.$$state=e,g(d,!1,e)):(m=!1,h(d,e))});c.$$phase||c.$digest()});c.$watch(function(){var a=d.url(),b=d.state(),f=k.$$replace;if(m||a!==k.absUrl()||k.$$html5&&e.history&&b!==k.$$state)m=!1,c.$evalAsync(function(){c.$broadcast("$locationChangeStart", +k.absUrl(),a,k.$$state,b).defaultPrevented?(k.$$parse(a),k.$$state=b):(g(k.absUrl(),f,b===k.$$state?null:k.$$state),h(a,b))});k.$$replace=!1});return k}]}function Je(){var b=!0,a=this;this.debugEnabled=function(a){return y(a)?(b=a,this):b};this.$get=["$window",function(c){function d(a){a instanceof Error&&(a.stack?a=a.message&&-1===a.stack.indexOf(a.message)?"Error: "+a.message+"\n"+a.stack:a.stack:a.sourceURL&&(a=a.message+"\n"+a.sourceURL+":"+a.line));return a}function e(a){var b=c.console||{}, +e=b[a]||b.log||z;a=!1;try{a=!!e.apply}catch(k){}return a?function(){var a=[];q(arguments,function(b){a.push(d(b))});return e.apply(b,a)}:function(a,b){e(a,null==b?"":b)}}return{log:e("log"),info:e("info"),warn:e("warn"),error:e("error"),debug:function(){var c=e("debug");return function(){b&&c.apply(a,arguments)}}()}}]}function ka(b,a){if("__defineGetter__"===b||"__defineSetter__"===b||"__lookupGetter__"===b||"__lookupSetter__"===b||"__proto__"===b)throw la("isecfld",a);return b}function va(b,a){if(b){if(b.constructor=== +b)throw la("isecfn",a);if(b.window===b)throw la("isecwindow",a);if(b.children&&(b.nodeName||b.prop&&b.attr&&b.find))throw la("isecdom",a);if(b===Object)throw la("isecobj",a);}return b}function bc(b){return b.constant}function La(b,a,c,d){va(b,d);a=a.split(".");for(var e,f=0;1f?Yc(e[0],e[1],e[2],e[3],e[4],c):function(a,b){var d=0,g;do g=Yc(e[d++],e[d++],e[d++],e[d++],e[d++],c)(a,b),b=t,a=g;while(d=this.promise.$$state.status&& +d&&d.length&&b(function(){for(var b,e,f=0,g=d.length;fa)for(b in l++,f)e.hasOwnProperty(b)||(r--,delete f[b])}else f!==e&&(f=e,l++);return l}c.$stateful=!0;var d=this,e,f,h,k=1x&&(K=4-x,N[K]||(N[K]= +[]),U=A(e.exp)?"fn: "+(e.exp.name||e.exp.toString()):e.exp,U+="; newVal: "+pa(g)+"; oldVal: "+pa(k),N[K].push(U));else if(e===c){q=!1;break a}}catch(E){f(E)}if(!(p=t.$$childHead||t!==this&&t.$$nextSibling))for(;t!==this&&!(p=t.$$nextSibling);)t=t.$parent}while(t=p);if((q||L.length)&&!x--)throw r.$$phase=null,a("infdig",b,pa(N));}while(q||L.length);for(r.$$phase=null;F.length;)try{F.shift()()}catch(C){f(C)}},$destroy:function(){if(!this.$$destroyed){var a=this.$parent;this.$broadcast("$destroy");this.$$destroyed= +!0;if(this!==r){for(var b in this.$$listenerCount)p(this,this.$$listenerCount[b],b);a.$$childHead==this&&(a.$$childHead=this.$$nextSibling);a.$$childTail==this&&(a.$$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=z;this.$on=this.$watch=this.$watchGroup=function(){return z};this.$$listeners={};this.$parent= +this.$$nextSibling=this.$$prevSibling=this.$$childHead=this.$$childTail=this.$root=this.$$watchers=null}}},$eval:function(a,b){return g(a)(this,b)},$evalAsync:function(a){r.$$phase||L.length||h.defer(function(){L.length&&r.$digest()});L.push({scope:this,expression:a})},$$postDigest:function(a){F.push(a)},$apply:function(a){try{return l("$apply"),this.$eval(a)}catch(b){f(b)}finally{r.$$phase=null;try{r.$digest()}catch(c){throw f(c),c;}}},$applyAsync:function(a){function b(){c.$eval(a)}var c=this;a&& +x.push(b);m()},$on:function(a,b){var c=this.$$listeners[a];c||(this.$$listeners[a]=c=[]);c.push(b);var d=this;do d.$$listenerCount[a]||(d.$$listenerCount[a]=0),d.$$listenerCount[a]++;while(d=d.$parent);var e=this;return function(){c[c.indexOf(b)]=null;p(e,1,a)}},$emit:function(a,b){var c=[],d,e=this,g=!1,h={name:a,targetScope:e,stopPropagation:function(){g=!0},preventDefault:function(){h.defaultPrevented=!0},defaultPrevented:!1},k=ib([h],arguments,1),l,p;do{d=e.$$listeners[a]||c;h.currentScope=e; +l=0;for(p=d.length;lc.msieDocumentMode)throw wa("iequirks");var e=na(ha);e.isEnabled=function(){return b};e.trustAs=d.trustAs;e.getTrusted=d.getTrusted;e.valueOf=d.valueOf;b||(e.trustAs=e.getTrusted=function(a,b){return b},e.valueOf=Pa);e.parseAs=function(b,c){var d=a(c);return d.literal&&d.constant?d:a(c,function(a){return e.getTrusted(b,a)})};var f=e.parseAs,g=e.getTrusted,h=e.trustAs;q(ha,function(a,b){var c=H(b);e[Xa("parse_as_"+c)]=function(b){return f(a,b)};e[Xa("get_trusted_"+c)]=function(b){return g(a, +b)};e[Xa("trust_as_"+c)]=function(b){return h(a,b)}});return e}]}function Qe(){this.$get=["$window","$document",function(b,a){var c={},d=$((/android (\d+)/.exec(H((b.navigator||{}).userAgent))||[])[1]),e=/Boxee/i.test((b.navigator||{}).userAgent),f=a[0]||{},g=f.documentMode,h,k=/^(Moz|webkit|O|ms)(?=[A-Z])/,l=f.body&&f.body.style,p=!1,n=!1;if(l){for(var s in l)if(p=k.exec(s)){h=p[0];h=h.substr(0,1).toUpperCase()+h.substr(1);break}h||(h="WebkitOpacity"in l&&"webkit");p=!!("transition"in l||h+"Transition"in +l);n=!!("animation"in l||h+"Animation"in l);!d||p&&n||(p=u(f.body.style.webkitTransition),n=u(f.body.style.webkitAnimation))}return{history:!(!b.history||!b.history.pushState||4>d||e),hasEvent:function(a){if("input"==a&&9==Da)return!1;if(G(c[a])){var b=f.createElement("div");c[a]="on"+a in b}return c[a]},csp:Va(),vendorPrefix:h,transitions:p,animations:n,android:d,msie:Da,msieDocumentMode:g}}]}function Se(){this.$get=["$templateCache","$http","$q",function(b,a,c){function d(e,f){function g(){h.totalPendingRequests--; +if(!f)throw fa("tpload",e);return c.reject()}var h=d;h.totalPendingRequests++;return a.get(e,{cache:b}).then(function(a){a=a.data;if(!a||0===a.length)return g();h.totalPendingRequests--;b.put(e,a);return a},g)}d.totalPendingRequests=0;return d}]}function Te(){this.$get=["$rootScope","$browser","$location",function(b,a,c){return{findBindings:function(a,b,c){a=a.getElementsByClassName("ng-binding");var g=[];q(a,function(a){var d=ya.element(a).data("$binding");d&&q(d,function(d){c?(new RegExp("(^|\\s)"+ +b+"(\\s|\\||$)")).test(d)&&g.push(a):-1!=d.indexOf(b)&&g.push(a)})});return g},findModels:function(a,b,c){for(var g=["ng-","data-ng-","ng\\:"],h=0;hb;b=Math.abs(b);var g=b+"",h="",k=[],l=!1;if(-1!==g.indexOf("e")){var p=g.match(/([\d\.]+)e(-?)(\d+)/);p&&"-"==p[2]&&p[3]>e+1?(g="0",b=0):(h=g,l=!0)}if(l)0b&&(h=b.toFixed(e));else{g=(g.split(id)[1]||"").length;G(e)&&(e=Math.min(Math.max(a.minFrac,g),a.maxFrac));b=+(Math.round(+(b.toString()+"e"+e)).toString()+"e"+-e);0===b&&(f=!1);b=(""+b).split(id);g=b[0];b=b[1]||"";var p= +0,n=a.lgSize,s=a.gSize;if(g.length>=n+s)for(p=g.length-n,l=0;lb&&(d="-",b=-b);for(b=""+b;b.length-c)e+=c;0===e&&-12==c&&(e=12);return Ab(e,a,d)}}function Bb(b,a){return function(c,d){var e=c["get"+b](),f=ob(a?"SHORT"+b:b);return d[f][e]}}function jd(b){var a=(new Date(b,0,1)).getDay();return new Date(b,0,(4>=a?5:12)-a)}function kd(b){return function(a){var c=jd(a.getFullYear());a=+new Date(a.getFullYear(),a.getMonth(),a.getDate()+(4-a.getDay()))-+c;a=1+Math.round(a/6048E5);return Ab(a,b)}}function ed(b){function a(a){var b;if(b=a.match(c)){a=new Date(0);var f=0,g=0,h=b[8]?a.setUTCFullYear: +a.setFullYear,k=b[8]?a.setUTCHours:a.setHours;b[9]&&(f=$(b[9]+b[10]),g=$(b[9]+b[11]));h.call(a,$(b[1]),$(b[2])-1,$(b[3]));f=$(b[4]||0)-f;g=$(b[5]||0)-g;h=$(b[6]||0);b=Math.round(1E3*parseFloat("0."+(b[7]||0)));k.call(a,f,g,h,b)}return a}var c=/^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/;return function(c,e,f){var g="",h=[],k,l;e=e||"mediumDate";e=b.DATETIME_FORMATS[e]||e;u(c)&&(c=vf.test(c)?$(c):a(c));aa(c)&&(c=new Date(c));if(!ca(c))return c; +for(;e;)(l=wf.exec(e))?(h=ib(h,l,1),e=h.pop()):(h.push(e),e=null);f&&"UTC"===f&&(c=new Date(c.getTime()),c.setMinutes(c.getMinutes()+c.getTimezoneOffset()));q(h,function(a){k=xf[a];g+=k?k(c,b.DATETIME_FORMATS):a.replace(/(^'|'$)/g,"").replace(/''/g,"'")});return g}}function rf(){return function(b){return pa(b,!0)}}function sf(){return function(b,a){aa(b)&&(b=b.toString());if(!B(b)&&!u(b))return b;a=Infinity===Math.abs(Number(a))?Number(a):$(a);if(u(b))return a?0<=a?b.slice(0,a):b.slice(a,b.length): +"";var c=[],d,e;a>b.length?a=b.length:a<-b.length&&(a=-b.length);0b||37<=b&&40>=b||s(a)});if(e.hasEvent("paste"))a.on("paste cut",s)}a.on("change",p);d.$render=function(){a.val(d.$isEmpty(d.$modelValue)?"":d.$viewValue)}}function Db(b,a){return function(c,d){var e,f;if(ca(c))return c;if(u(c)){'"'==c.charAt(0)&&'"'==c.charAt(c.length-1)&&(c=c.substring(1,c.length-1));if(yf.test(c))return new Date(c);b.lastIndex=0;if(e=b.exec(c))return e.shift(),f=d?{yyyy:d.getFullYear(),MM:d.getMonth()+1,dd:d.getDate(),HH:d.getHours(),mm:d.getMinutes(),ss:d.getSeconds(),sss:d.getMilliseconds()/ +1E3}:{yyyy:1970,MM:1,dd:1,HH:0,mm:0,ss:0,sss:0},q(e,function(b,c){c=r};g.$observe("min",function(a){r=n(a);h.$validate()})}if(y(g.max)||g.ngMax){var q;h.$validators.max=function(a){return h.$isEmpty(a)||G(q)||c(a)<=q};g.$observe("max",function(a){q=n(a);h.$validate()})}h.$isEmpty=function(a){return!a||a.getTime&&a.getTime()!== +a.getTime()}}}function nd(b,a,c,d){(d.$$hasNativeValidators=O(a[0].validity))&&d.$parsers.push(function(b){var c=a.prop("validity")||{};return c.badInput&&!c.typeMismatch?t:b})}function od(b,a,c,d,e){if(y(d)){b=b(d);if(!b.constant)throw E("ngModel")("constexpr",c,d);return b(a)}return e}function md(b){function a(a,b){b&&!f[a]?(l.addClass(e,a),f[a]=!0):!b&&f[a]&&(l.removeClass(e,a),f[a]=!1)}function c(b,c){b=b?"-"+Jb(b,"-"):"";a(fb+b,!0===c);a(pd+b,!1===c)}var d=b.ctrl,e=b.$element,f={},g=b.set,h= +b.unset,k=b.parentForm,l=b.$animate;f[pd]=!(f[fb]=e.hasClass(fb));d.$setValidity=function(b,e,f){e===t?(d.$pending||(d.$pending={}),g(d.$pending,b,f)):(d.$pending&&h(d.$pending,b,f),qd(d.$pending)&&(d.$pending=t));Ra(e)?e?(h(d.$error,b,f),g(d.$$success,b,f)):(g(d.$error,b,f),h(d.$$success,b,f)):(h(d.$error,b,f),h(d.$$success,b,f));d.$pending?(a(rd,!0),d.$valid=d.$invalid=t,c("",null)):(a(rd,!1),d.$valid=qd(d.$error),d.$invalid=!d.$valid,c("",d.$valid));e=d.$pending&&d.$pending[b]?t:d.$error[b]?!1: +d.$$success[b]?!0:null;c(b,e);k.$setValidity(b,e,d)}}function qd(b){if(b)for(var a in b)return!1;return!0}function ec(b,a){b="ngClass"+b;return["$animate",function(c){function d(a,b){var c=[],d=0;a:for(;d(?:<\/\1>|)$/, +Mb=/<|&#?\w+;/,$e=/<([\w:]+)/,af=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,da={option:[1,'"],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};da.optgroup=da.option;da.tbody=da.tfoot=da.colgroup=da.caption=da.thead;da.th=da.td;var Ha=P.prototype={ready:function(b){function a(){c||(c= +!0,b())}var c=!1;"complete"===X.readyState?setTimeout(a):(this.on("DOMContentLoaded",a),P(R).on("load",a),this.on("DOMContentLoaded",a))},toString:function(){var b=[];q(this,function(a){b.push(""+a)});return"["+b.join(", ")+"]"},eq:function(b){return 0<=b?C(this[b]):C(this[this.length+b])},length:0,push:Af,sort:[].sort,splice:[].splice},vb={};q("multiple selected checked disabled readOnly required open".split(" "),function(b){vb[H(b)]=b});var Ic={};q("input select option textarea button form details".split(" "), +function(b){Ic[b]=!0});var Jc={ngMinlength:"minlength",ngMaxlength:"maxlength",ngMin:"min",ngMax:"max",ngPattern:"pattern"};q({data:Pb,removeData:rb},function(b,a){P[a]=b});q({data:Pb,inheritedData:ub,scope:function(b){return C.data(b,"$scope")||ub(b.parentNode||b,["$isolateScope","$scope"])},isolateScope:function(b){return C.data(b,"$isolateScope")||C.data(b,"$isolateScopeNoTemplate")},controller:Ec,injector:function(b){return ub(b,"$injector")},removeAttr:function(b,a){b.removeAttribute(a)},hasClass:Qb, +css:function(b,a,c){a=Xa(a);if(y(c))b.style[a]=c;else return b.style[a]},attr:function(b,a,c){var d=H(a);if(vb[d])if(y(c))c?(b[a]=!0,b.setAttribute(a,d)):(b[a]=!1,b.removeAttribute(d));else return b[a]||(b.attributes.getNamedItem(a)||z).specified?d:t;else if(y(c))b.setAttribute(a,c);else if(b.getAttribute)return b=b.getAttribute(a,2),null===b?t:b},prop:function(b,a,c){if(y(c))b[a]=c;else return b[a]},text:function(){function b(a,b){if(G(b)){var d=a.nodeType;return d===ia||d===jb?a.textContent:""}a.textContent= +b}b.$dv="";return b}(),val:function(b,a){if(G(a)){if(b.multiple&&"select"===ma(b)){var c=[];q(b.options,function(a){a.selected&&c.push(a.value||a.text)});return 0===c.length?null:c}return b.value}b.value=a},html:function(b,a){if(G(a))return b.innerHTML;qb(b,!0);b.innerHTML=a},empty:Fc},function(b,a){P.prototype[a]=function(a,d){var e,f,g=this.length;if(b!==Fc&&(2==b.length&&b!==Qb&&b!==Ec?a:d)===t){if(O(a)){for(e=0;e":function(a,c,d,e){return d(a,c)>e(a,c)},"<=":function(a,c,d,e){return d(a,c)<=e(a,c)},">=":function(a,c,d,e){return d(a,c)>=e(a,c)},"&&":function(a, +c,d,e){return d(a,c)&&e(a,c)},"||":function(a,c,d,e){return d(a,c)||e(a,c)},"&":function(a,c,d,e){return d(a,c)&e(a,c)},"!":function(a,c,d){return!d(a,c)},"=":!0,"|":!0}),If={n:"\n",f:"\f",r:"\r",t:"\t",v:"\v","'":"'",'"':'"'},cc=function(a){this.options=a};cc.prototype={constructor:cc,lex:function(a){this.text=a;this.index=0;this.ch=t;for(this.tokens=[];this.index=a},isWhitespace:function(a){return" "===a||"\r"===a||"\t"===a||"\n"===a||"\v"===a||"\u00a0"===a},isIdent:function(a){return"a"<=a&&"z">=a||"A"<=a&&"Z">=a||"_"===a||"$"===a},isExpOperator:function(a){return"-"===a|| +"+"===a||this.isNumber(a)},throwError:function(a,c,d){d=d||this.index;c=y(c)?"s "+c+"-"+this.index+" ["+this.text.substring(c,d)+"]":" "+d;throw la("lexerr",a,c,this.text);},readNumber:function(){for(var a="",c=this.index;this.index","<=",">="))a=this.binaryFn(a,c.fn,this.relational());return a},additive:function(){for(var a=this.multiplicative(),c;c=this.expect("+","-");)a=this.binaryFn(a,c.fn,this.multiplicative());return a},multiplicative:function(){for(var a=this.unary(),c;c=this.expect("*","/","%");)a=this.binaryFn(a,c.fn,this.unary());return a}, +unary:function(){var a;return this.expect("+")?this.primary():(a=this.expect("-"))?this.binaryFn(bb.ZERO,a.fn,this.unary()):(a=this.expect("!"))?this.unaryFn(a.fn,this.unary()):this.primary()},fieldAccess:function(a){var c=this.text,d=this.expect().text,e=Zc(d,this.options,c);return w(function(c,d,h){return e(h||a(c,d))},{assign:function(e,g,h){(h=a(e,h))||a.assign(e,h={});return La(h,d,g,c)}})},objectIndex:function(a){var c=this.text,d=this.expression();this.consume("]");return w(function(e,f){var g= +a(e,f),h=d(e,f);ka(h,c);return g?va(g[h],c):t},{assign:function(e,f,g){var h=ka(d(e,g),c);(g=va(a(e,g),c))||a.assign(e,g={});return g[h]=f}})},functionCall:function(a,c){var d=[];if(")"!==this.peekToken().text){do d.push(this.expression());while(this.expect(","))}this.consume(")");var e=this.text,f=d.length?[]:null;return function(g,h){var k=c?c(g,h):g,l=a(g,h,k)||z;if(f)for(var p=d.length;p--;)f[p]=va(d[p](g,h),e);va(k,e);if(l){if(l.constructor===l)throw la("isecfn",e);if(l===Ff||l===Gf||l===Hf)throw la("isecff", +e);}k=l.apply?l.apply(k,f):l(f[0],f[1],f[2],f[3],f[4]);return va(k,e)}},arrayDeclaration:function(){var a=[];if("]"!==this.peekToken().text){do{if(this.peek("]"))break;var c=this.expression();a.push(c)}while(this.expect(","))}this.consume("]");return w(function(c,e){for(var f=[],g=0,h=a.length;ga.getHours()?c.AMPMS[0]:c.AMPMS[1]},Z:function(a){a=-1*a.getTimezoneOffset();return a=(0<=a?"+":"")+(Ab(Math[0=h};d.$observe("min",function(a){y(a)&&!aa(a)&&(a=parseFloat(a,10));h=aa(a)&&!isNaN(a)?a:t;e.$validate()})}if(d.max||d.ngMax){var k;e.$validators.max=function(a){return e.$isEmpty(a)||G(k)||a<=k};d.$observe("max",function(a){y(a)&&!aa(a)&&(a=parseFloat(a,10));k=aa(a)&&!isNaN(a)?a:t;e.$validate()})}},url:function(a,c,d,e,f,g){db(a,c,d,e,f,g);dc(e);e.$$parserName="url";e.$validators.url= +function(a){return e.$isEmpty(a)||Jf.test(a)}},email:function(a,c,d,e,f,g){db(a,c,d,e,f,g);dc(e);e.$$parserName="email";e.$validators.email=function(a){return e.$isEmpty(a)||Kf.test(a)}},radio:function(a,c,d,e){G(d.name)&&c.attr("name",++gb);c.on("click",function(a){c[0].checked&&e.$setViewValue(d.value,a&&a.type)});e.$render=function(){c[0].checked=d.value==e.$viewValue};d.$observe("value",e.$render)},checkbox:function(a,c,d,e,f,g,h,k){var l=od(k,a,"ngTrueValue",d.ngTrueValue,!0),p=od(k,a,"ngFalseValue", +d.ngFalseValue,!1);c.on("click",function(a){e.$setViewValue(c[0].checked,a&&a.type)});e.$render=function(){c[0].checked=e.$viewValue};e.$isEmpty=function(a){return a!==l};e.$formatters.push(function(a){return oa(a,l)});e.$parsers.push(function(a){return a?l:p})},hidden:z,button:z,submit:z,reset:z,file:z},tc=["$browser","$sniffer","$filter","$parse",function(a,c,d,e){return{restrict:"E",require:["?ngModel"],link:{pre:function(f,g,h,k){k[0]&&(xd[H(h.type)]||xd.text)(f,g,h,k[0],c,a,d,e)}}}}],fb="ng-valid", +pd="ng-invalid",Ma="ng-pristine",Cb="ng-dirty",rd="ng-pending",Nf=["$scope","$exceptionHandler","$attrs","$element","$parse","$animate","$timeout","$rootScope","$q","$interpolate",function(a,c,d,e,f,g,h,k,l,p){this.$modelValue=this.$viewValue=Number.NaN;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= +t;this.$name=p(d.name||"",!1)(a);var n=f(d.ngModel),s=null,m=this,r=function(){var c=n(a);m.$options&&m.$options.getterSetter&&A(c)&&(c=c());return c},L=function(c){var d;m.$options&&m.$options.getterSetter&&A(d=n(a))?d(m.$modelValue):n.assign(a,m.$modelValue)};this.$$setOptions=function(a){m.$options=a;if(!(n.assign||a&&a.getterSetter))throw Eb("nonassign",d.ngModel,qa(e));};this.$render=z;this.$isEmpty=function(a){return G(a)||""===a||null===a||a!==a};var F=e.inheritedData("$formController")||cb, +x=0;md({ctrl:this,$element:e,set:function(a,c){a[c]=!0},unset:function(a,c){delete a[c]},parentForm:F,$animate:g});this.$setPristine=function(){m.$dirty=!1;m.$pristine=!0;g.removeClass(e,Cb);g.addClass(e,Ma)};this.$setUntouched=function(){m.$touched=!1;m.$untouched=!0;g.setClass(e,"ng-untouched","ng-touched")};this.$setTouched=function(){m.$touched=!0;m.$untouched=!1;g.setClass(e,"ng-touched","ng-untouched")};this.$rollbackViewValue=function(){h.cancel(s);m.$viewValue=m.$$lastCommittedViewValue;m.$render()}; +this.$validate=function(){aa(m.$modelValue)&&isNaN(m.$modelValue)||this.$$parseAndValidate()};this.$$runValidators=function(a,c,d,e){function f(){var a=!0;q(m.$validators,function(e,f){var g=e(c,d);a=a&&g;h(f,g)});return a?!0:(q(m.$asyncValidators,function(a,c){h(c,null)}),!1)}function g(){var a=[],e=!0;q(m.$asyncValidators,function(f,g){var k=f(c,d);if(!k||!A(k.then))throw Eb("$asyncValidators",k);h(g,t);a.push(k.then(function(){h(g,!0)},function(a){e=!1;h(g,!1)}))});a.length?l.all(a).then(function(){k(e)}, +z):k(!0)}function h(a,c){p===x&&m.$setValidity(a,c)}function k(a){p===x&&e(a)}x++;var p=x;(function(a){var c=m.$$parserName||"parse";if(a===t)h(c,null);else if(h(c,a),!a)return q(m.$validators,function(a,c){h(c,null)}),q(m.$asyncValidators,function(a,c){h(c,null)}),!1;return!0})(a)?f()?g():k(!1):k(!1)};this.$commitViewValue=function(){var a=m.$viewValue;h.cancel(s);if(m.$$lastCommittedViewValue!==a||""===a&&m.$$hasNativeValidators)m.$$lastCommittedViewValue=a,m.$pristine&&(m.$dirty=!0,m.$pristine= +!1,g.removeClass(e,Ma),g.addClass(e,Cb),F.$setDirty()),this.$$parseAndValidate()};this.$$parseAndValidate=function(){var a=m.$$lastCommittedViewValue,c=a,d=G(c)?t:!0;if(d)for(var e=0;e= +f}}}}},se=function(){return{restrict:"A",priority:100,require:"ngModel",link:function(a,c,d,e){var f=c.attr(d.$attr.ngList)||", ",g="false"!==d.ngTrim,h=g?V(f):f;e.$parsers.push(function(a){if(!G(a)){var c=[];a&&q(a.split(h),function(a){a&&c.push(g?V(a):a)});return c}});e.$formatters.push(function(a){return B(a)?a.join(f):t});e.$isEmpty=function(a){return!a||!a.length}}}},Of=/^(true|false|\d+)$/,ue=function(){return{restrict:"A",priority:100,compile:function(a,c){return Of.test(c.ngValue)?function(a, +c,f){f.$set("value",a.$eval(f.ngValue))}:function(a,c,f){a.$watch(f.ngValue,function(a){f.$set("value",a)})}}}},ve=function(){return{restrict:"A",controller:["$scope","$attrs",function(a,c){var d=this;this.$options=a.$eval(c.ngModelOptions);this.$options.updateOn!==t?(this.$options.updateOnDefault=!1,this.$options.updateOn=V(this.$options.updateOn.replace(Mf,function(){d.$options.updateOnDefault=!0;return" "}))):this.$options.updateOnDefault=!0}]}},Vd=["$compile",function(a){return{restrict:"AC", +compile:function(c){a.$$addBindingClass(c);return function(c,e,f){a.$$addBindingInfo(e,f.ngBind);e=e[0];c.$watch(f.ngBind,function(a){e.textContent=a===t?"":a})}}}}],Xd=["$interpolate","$compile",function(a,c){return{compile:function(d){c.$$addBindingClass(d);return function(d,f,g){d=a(f.attr(g.$attr.ngBindTemplate));c.$$addBindingInfo(f,d.expressions);f=f[0];g.$observe("ngBindTemplate",function(a){f.textContent=a===t?"":a})}}}}],Wd=["$sce","$parse","$compile",function(a,c,d){return{restrict:"A", +compile:function(e,f){var g=c(f.ngBindHtml),h=c(f.ngBindHtml,function(a){return(a||"").toString()});d.$$addBindingClass(e);return function(c,e,f){d.$$addBindingInfo(e,f.ngBindHtml);c.$watch(h,function(){e.html(a.getTrustedHtml(g(c))||"")})}}}}],Yd=ec("",!0),$d=ec("Odd",0),Zd=ec("Even",1),ae=Ea({compile:function(a,c){c.$set("ngCloak",t);a.removeClass("ng-cloak")}}),be=[function(){return{restrict:"A",scope:!0,controller:"@",priority:500}}],yc={},Pf={blur:!0,focus:!0};q("click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave keydown keyup keypress submit focus blur copy cut paste".split(" "), +function(a){var c=ra("ng-"+a);yc[c]=["$parse","$rootScope",function(d,e){return{restrict:"A",compile:function(f,g){var h=d(g[c]);return function(c,d){d.on(a,function(d){var f=function(){h(c,{$event:d})};Pf[a]&&e.$$phase?c.$evalAsync(f):c.$apply(f)})}}}}]});var ee=["$animate",function(a){return{multiElement:!0,transclude:"element",priority:600,terminal:!0,restrict:"A",$$tlb:!0,link:function(c,d,e,f,g){var h,k,l;c.$watch(e.ngIf,function(c){c?k||g(function(c,f){k=f;c[c.length++]=X.createComment(" end ngIf: "+ +e.ngIf+" ");h={clone:c};a.enter(c,d.parent(),d)}):(l&&(l.remove(),l=null),k&&(k.$destroy(),k=null),h&&(l=nb(h.clone),a.leave(l).then(function(){l=null}),h=null))})}}}],fe=["$templateRequest","$anchorScroll","$animate","$sce",function(a,c,d,e){return{restrict:"ECA",priority:400,terminal:!0,transclude:"element",controller:ya.noop,compile:function(f,g){var h=g.ngInclude||g.src,k=g.onload||"",l=g.autoscroll;return function(f,g,s,m,q){var t=0,F,x,v,w=function(){x&&(x.remove(),x=null);F&&(F.$destroy(), +F=null);v&&(d.leave(v).then(function(){x=null}),x=v,v=null)};f.$watch(e.parseAsResourceUrl(h),function(e){var h=function(){!y(l)||l&&!f.$eval(l)||c()},s=++t;e?(a(e,!0).then(function(a){if(s===t){var c=f.$new();m.template=a;a=q(c,function(a){w();d.enter(a,null,g).then(h)});F=c;v=a;F.$emit("$includeContentLoaded",e);f.$eval(k)}},function(){s===t&&(w(),f.$emit("$includeContentError",e))}),f.$emit("$includeContentRequested",e)):(w(),m.template=null)})}}}}],we=["$compile",function(a){return{restrict:"ECA", +priority:-400,require:"ngInclude",link:function(c,d,e,f){/SVG/.test(d[0].toString())?(d.empty(),a(Bc(f.template,X).childNodes)(c,function(a){d.append(a)},t,t,d)):(d.html(f.template),a(d.contents())(c))}}}],ge=Ea({priority:450,compile:function(){return{pre:function(a,c,d){a.$eval(d.ngInit)}}}}),he=Ea({terminal:!0,priority:1E3}),ie=["$locale","$interpolate",function(a,c){var d=/{}/g;return{restrict:"EA",link:function(e,f,g){var h=g.count,k=g.$attr.when&&f.attr(g.$attr.when),l=g.offset||0,p=e.$eval(k)|| +{},n={},s=c.startSymbol(),m=c.endSymbol(),r=/^when(Minus)?(.+)$/;q(g,function(a,c){r.test(c)&&(p[H(c.replace("when","").replace("Minus","-"))]=f.attr(g.$attr[c]))});q(p,function(a,e){n[e]=c(a.replace(d,s+h+"-"+l+m))});e.$watch(function(){var c=parseFloat(e.$eval(h));if(isNaN(c))return"";c in p||(c=a.pluralCat(c-l));return n[c](e)},function(a){f.text(a)})}}}],je=["$parse","$animate",function(a,c){var d=E("ngRepeat"),e=function(a,c,d,e,l,p,n){a[d]=e;l&&(a[l]=p);a.$index=c;a.$first=0===c;a.$last=c=== +n-1;a.$middle=!(a.$first||a.$last);a.$odd=!(a.$even=0===(c&1))};return{restrict:"A",multiElement:!0,transclude:"element",priority:1E3,terminal:!0,$$tlb:!0,compile:function(f,g){var h=g.ngRepeat,k=X.createComment(" end ngRepeat: "+h+" "),l=h.match(/^\s*([\s\S]+?)\s+in\s+([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+track\s+by\s+([\s\S]+?))?\s*$/);if(!l)throw d("iexp",h);var p=l[1],n=l[2],s=l[3],m=l[4],l=p.match(/^(?:([\$\w]+)|\(([\$\w]+)\s*,\s*([\$\w]+)\))$/);if(!l)throw d("iidexp",p);var r=l[3]||l[1],y= +l[2];if(s&&(!/^[$a-zA-Z_][$a-zA-Z0-9_]*$/.test(s)||/^(null|undefined|this|\$index|\$first|\$middle|\$last|\$even|\$odd|\$parent)$/.test(s)))throw d("badident",s);var w,x,v,E,z={$id:Ja};m?w=a(m):(v=function(a,c){return Ja(c)},E=function(a){return a});return function(a,f,g,l,m){w&&(x=function(c,d,e){y&&(z[y]=c);z[r]=d;z.$index=e;return w(a,z)});var p=Object.create(null);a.$watchCollection(n,function(g){var l,n,w=f[0],I,F=Object.create(null),z,G,D,B,S,u,A;s&&(a[s]=g);if(Na(g))S=g,n=x||v;else{n=x||E; +S=[];for(A in g)g.hasOwnProperty(A)&&"$"!=A.charAt(0)&&S.push(A);S.sort()}z=S.length;A=Array(z);for(l=0;lD;)d=q.pop(),s.removeOption(d.label),d.element.remove()}for(;P.length>B;)P.pop()[0].element.remove()}var n;if(!(n=r.match(d)))throw yd("iexp",r,qa(f));var z=c(n[2]||n[1]),u=n[4]||n[6],C=/ as /.test(n[0])&&n[1],A=C?c(C):null,F=n[5],G=c(n[3]||""),D=c(n[2]?n[1]:u),M=c(n[7]),O=n[8],H=O?c(n[8]):null,P=[[{element:f,label:""}]],R={};if(H&&A)throw yd("trkslct",C,O);w&&(a(w)(e),w.removeClass("ng-scope"), +w.remove());f.empty();f.on("change",function(){e.$apply(function(){var a=M(e)||[],c;if(m)c=[],q(f.val(),function(d){c.push("?"===d?t:""===d?null:h(A?A:D,d,a[d]))});else{var d=f.val();c="?"===d?t:""===d?null:h(A?A:D,d,a[d])}g.$setViewValue(c);p()})});g.$render=p;e.$watchCollection(M,l);e.$watchCollection(function(){var a=M(e),c;if(a&&B(a)){c=Array(a.length);for(var d=0,f=a.length;d@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;}'); //# sourceMappingURL=angular.min.js.map diff --git a/public/app/bower_components/angular/angular.min.js.gzip b/public/app/bower_components/angular/angular.min.js.gzip index b645d9edcd9d8e428334ed3b145b8df1817bb904..f0506b392d8a681033c6af7e6d20b5be0869f4c7 100644 GIT binary patch literal 44712 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 MFVO?DADP|(06rhsiU0rr literal 39789 zcmV(;K-<3`iwFSs1tL@c1EgAebK5qy|KFcN;?-)&ik9WHw>t&RYW+%LZ(_T#)1)h_ z84!dX2}LR-Wyi7g-S6)Je1Nvx+1Wduu>kPk;NalAft??=TKn;I74h`+vURiDf6;&O z^LDVBM`8b`fBf9bX1xE)kAoomX|UC@h0}U5*d1)+-%qVqNivP3+d7FwzctJACEMBI z8rA2lpQO{R)|a1 z-=J&fuXedpBHJmDd6Oiyg}>{Gy=v)xB;#p5^F*)bfTEtg>-%D84KbyQIo1+L#P%*) zzSWblNJ9Dk-N|9HSSB&%+g7JKOx`utv`-&ght! zY;$M5u8#16(;3bucD#xr-`@%z9$wLqqo=fYJ$;%%$;tv17>ThM47&np-7X)t2W%e` zA0AHB{{aB_!-EyC7J*E$*=i5n?qCo9`1WpV9=C#;medYh?g}kHp$DP@2mdaJ96H=k z!8_J6P4a}W0c-g1U|X6r-Lqo8C_V)J8PCpd1)6JUBnKxctnFCO>{UaaVHFYo}rz3p*~j)HMt z%y@bTiQLcafkWc+zyE*?7LwdjFut{Kxxn!`na4Ktk)VDV5LEGbVCe&COwxMYpQOp+ zuvo+9yxCm=bjIPey4-8nf*)N`J9C^lDTXdgY}%# z`go1+URo=@TeA|VA!|Xmi_h*O4#Oh&eC@1p?gbqir0KnJLQ9@z@&x8EaCZmBE`nkg z1=y(_%iETHY8$R#?cP_~%7V4y(BW1HUJ^vr`;8lG8l(h#vzw_PYtXwIvSDaT+hbt; zz7e#&3G~WXpUh;N7;7cLXDRZ{$oCE8g$>^bH#ZdFsiiakbAt!gNH5(w;<+3X{P#lh z0)w{~#stHQ)ws7R(9gjJ|XxA8i7Y(-o+vkxZsRRX0ck0}S z+S=7NN)3}1Jhe~nxE5?>#j%|Hc0MW1NHqW@^GdrUU<^g=7bx7oTuwfc{BJQ;6iaRI z)=OO$OKB{{!roxd7m8)e2$316-L1&v_1xE7?;QSsNL5Dyj?u)91ef=-yI7&=-11z^ zoP3rhx2-E~TVi>e!9;Blk$Ritts4Myd>6iWcmO{`@}~F&AnAgpRuZ+~qq3pfyU-k2 zZj|i4Cp5$Hy=1+!E?lZp@@?Xm<{S*1)C`<}fzqe_jV5E4bWZKky;1}4U3Q6`x^A(6 zB=b@>l^IurPO(UBFHbIj6WB2-uBMu z&+8qEJROAK#F~g_P(es9;=H=!FgjH1pdbWBn+Vw?akE-6)H&XBit!*Bf1wD(N2LbU z&aX-lP|=A(fi(lC{Us<24UPekT!)O0P;OnhbQs;{&@Q0t3V%&7l)$jXhBEtgJkTC^ zRn+Ul>=Z3t2fj2xJ5lnb#yq{z(vZ3;QWa)=Tl)s#RIEayO~Th$0P{*_Iew)KI^fa4 zrchBPO{R@d^vChfz*3T>C5x8HjR2lJ2Lyheo$<4VBz3!6dXO7~WN)h;aii`rO|X)` zZWlk*PFkku(VV)cc=((>LflP3sQHOkp9*94im0cQ!sMIq@7JCYF=G)32F@rnWu<+g z*i~@;8RiLeeekZr#ucl@rWky~8ib8P2DRFA=TeT;B6$#)M*qc=e06wGxT!j{d*Lv0 zY#P;tVhRVnSbHUvzi;s-VFhfqMKqysIh^Wo&|==_7lAWoPxQ^OIO<&B-D0g#MIn3FkY&>v3Adwkbt(L{ev={-4FhU*` zDe6pKMcL>vGYVHx*2eg47(i|rSTi6SRdO9B?k!S{9uhQsx2=h#j2jXX{X5~X5th#L ztvD%05C|dVHdnSy}J+kaRb$>Liwa16qq}#r%F*LXWD%t z2DOQ$*f#}n$O*faV+0ytqmsO!-pX}vXX;vidoifz_?Uy>OV~nr@bAhF;f%jyV0Y{c z)fY5ad*GJNlf!opPqZ}}(*H6JW7P4tM)czbW8DqR5ZLhahmC5&yX=_+a5SQyG>=FU}#y4Dr|?ON^PFO&ZCrFt-KC0}RZ|_Ag@qDB&Edbj z_<3hKcWIh2_~Vfp^c#aO4%A@J%-RndmY}tvUKp4tei|qg|7>fNr;rzPE}5DHywwvLAnB#Zv~g#47Q0TQ|OKSIv;; zyzGtLFaFMT7EebE%7zh}U1vWi-3vcK`MjYsyv}wYDAPt6VmjjFU_D`fq*&rOlH>{w z?oL8-=^lc=YJ1p`Yh7Q1HD1vFx{~SLB_eT=C+U6^LF^%HPlj!)Z}qqXr{q5Wxu>x{ z4>VFhV+Eqb4I*i7f{wGY_TJtXSzSB9=>&q?8m3mVAxS-YBjiHlWmWN&=27 za~|I$UnF6rX_o>K8+hErVRZy_bRMZM<>sl)<2gJ`gAg|$`|V01sH0;TlZ}1S3fsgI zf(kH-G)$3Ng%B{^JAan z*Qkel{Znx^q$>pPcT$-QXLNuq;zan;H|6IUn;fWuA8;FPYf;3Z>Wr*UR^{@m75@;A z%)W-OLqwW%>q4Rbo8(rehaABRF`&L23d*_+sZU@O7kDbaS}rX)ge>6){nb20NVTaF z`GJ>s5VoD@Of`VKmNCyZ{GW%#sNe-SL^XMfS9L&LPe#Cd#9OZ{WR(Qo zklJaZ0o(3{35icXmf!Nrc@QD|_4Iy%RPrxn6$rX!^EEi^e}6PGx_q+6K!lo7_t?px(B1;v~exqAdqjN*GH)0?@FkG>b9 z_^!Ohqpxa=M`DwC-*O55YN{=#4C(mB%tbtM3~1WIkn)3+^-1i&o)Yb?o_Uo~_s3wA+pBX(es( z8qR;M{?+$#N&!!)1{jpSg-rw&Ti&tP+=Y%KgJY*IP8o?L+sBZ0vFyezE;U)|mU6?U z!i|$;$zHm_9PxA9P;(2Wi*zO#%cs zt~zOKjJpWk`lTk|$fII72%WVC1V{}&cApQODlGS%P6pY{=ilY~bk0Pm?)l7Bs!(Vy zoPH%!_C04IcoHvHIr}W!9ES}@&8dx}T`(ECnMmi$oK4VD;WL|}mET2@%|bU>s`HqK zZah7pUL)OSU&`KCPO2O0BabCQ^6+(r;b{dp$#Zr` z?aNtm%f73Y+UmY)-p+BL?4WLcn1S%ax(~VKt0-qjG<2?bld)s!T%|nDG+8gH{}x$f z#9mSJ4NL)htu{G>V}l4*CN*SVgrdys{jN;kDbCnD$a>rVYJPbcn7v3eCF348Pt20^ zQV@69o6s$dAbX2;0G|P)%g)diP;~jSu-oS}P@l;Kx@8W*enUro6H@K}HIGArc!$Bl zf-Zy$H-pwPQ8IBE7JV3Sc7=|59`wFw96%Gv0R4`BdBw;+sLqsq#ILHMu|LqNasl>l z^uDqV{%3F^T&mwA$nTUE45%N^Cle4O(9R3#Jft16kVfVUnLsBb+P4rINW%opPP+e+ zO{u}DqIg&s3O17}3oxRZ#!YDzS%`%RTtQ#69-qc+OO1@(1#--p8@aK&bicZpir_+hC(=f^Mj@yt z%S#>Ao%yn_^Dzg}!T@o>to$DB#a@J%l)#q$jXfJhW5-<#mwlM;=~SkL9KaNXNPp4< zPM$6N_QL%NL`&b!{AFJtS`1T(;KnKOe%)JoU+H2{d$?n6XQQvPE9kK71SqWD+FN%GN zj3&Iop<%5(t8JFEi;(PfKrtDNYn=(vH6X3OF6LITIwIkZI&9PTPhX@iOmN2ud_?d9 z#ygjV57cGCaeXNo`dfi3fg>ycj|!E2newTcK{>X*^F0Z4o(jzOA%)+nkb6icWQUK| zL6CAodB61Ss3Pd$VPqkGvBs))+sGIJD7gxJCGURG|N>-=TzL6lFsP046XCz<)1tHaC4@S;lp{uuqd{2749(Rh&#son=)12W2CO6Ra#ribRVvbbm#{T&15mrTa0(SJ$<ZgOD^bgPkjl@p|doTxMN(ah{oduDs3A|kW41f zV0xpV%~wLnwk2;!qcNzvGi66CQoTF62uf}F=&e(S;OIe_S6u2#b*Zn)Z$*mTGRyJ^ zrRZ(k(C+A>gCv^WYA!nLlH1gvP104E89u*hTc>3dyzaXLFbUW>ZbO$vo9~aP& zDkT9IgB<9+03__|UG_`kNEKZD)xKZ5hRt+|g-%7DLg^N(`ngG1Qk76j)i-H_p)d0M z@7TK&s_a-}3H@F#mIc_Da%?xGg05&hlEcnuv|jIR&|FU+7wy)fhl8{X%rF%?zk}uO z)JK-wzM`B3i%%aO40xquThM3 zlIBCnB`s@pz%2DZ+DK@KMP{!?v8+_;m*&H3WqiwcyYRxLgVS%F7-g^)ag3`1J#c@uTZr8Z>Pvpjn z6hUD+ymzXsbdlu2Vm=-+D|mEWLMy6l&4)RlYl|#TmQ)esQrwqz?i zmXtYo5#;a%5~O8?cAO2&r$RvAC=Rl&DCro!Fpq7@U$}O>XVF z1jFh^9)O66HBMyov@9VT)%dF6m27+>PVlL>W$|0Bc(p?8iks#0nNT`w*=bQl2Sglf z$HcgdjaU9h#sEF+lBVezc%yu_NNey>sIxla zmOz4%epZf1hMv!`2@CbNcPJ3xg6igUM({$@t%6a%2Z%=d9R9*BKpD0GH8RCt%gh2d z+zb#zI?BYrOU!ZO1>^T>T3o0$iG@>AFq${irR8o9bViQK^C44nw6BcZS&zZ0%KD{m zCT?URBc#yhbm~~C27~*s)qj*$AS$s@JN)tm`asrz1+*~)6-kAc6&=wJ>PZeNpw@*R z!X|4M)I=>Xe{jvRAsuQ2s{99LOt1x`0C1@bZll5&WI*Yw@qQKO049gdtuP2_vj?It z%WRm=QJ*o)8h@MsGd!f3!jLjRd4l16M%4AFT^2);k;$r+R-pUZT9X)=@HUOt|Lt2h z{@^7tF(>V89(W5i{dkPgy$v!pte~kF><`nT2s3CA1L9R-+;29aW9gGp(JC7PHtG&! zdERm!MovpNrwv34twu4O(qapJW4SCJphGWMtybFtsvSiD7X2yHFx--}#n)kyNSRqw z7AI*=CIjh#M|-3k4mC`O&n!SQJ-D)PUc(Ywka(>1$V~l2*u!czQ!|_9tz>N&oOtpm z(qPqr18MNQ7#hFWYK^uoX9w`ke5$ewkKlr8X;#yDyz8>^8)5b$Mtc*XWq| zh#1I)iNyGeGQ=6OVXNKZA*jj3EvwJ(xYICu2IqLis&Sewy{7$!=HHDUC z2(;F?QF8V&7U~597}!ye^ABwOG#*bwMDn&RwPI()#uYyVvkuhHdQd%-6T_|&q&(_j zmKP(HP_cNC7`Hs~)98OflCK$;)rV}1 zEadNjKLM&GroZ-V)o!_bYXKD}mQyGxkp;V22TFPcB2Ta9q>6B?g*J5^szoZZYRa=o z6rutTKrETKhru{$z?1FwT8jac5)+dgG}eVBP^uw#%B5S`zfhhc8G7Gf)TT$q$#-2M z06^aonXO~|hy>foe!*Y)+h{hv>!nXFG-sK*cH`ps8LvhAtq(Y)NHeSk$Zd7^z&=PQ%)V{GCef(K2Zy=^2{X>+JgSlN`7SXgnlW6eTmWx2V!DHEZ!Ob7~LVRX#M zu~kFc=~T?~d^{zszrAI{Lp57%V`k9M4#e&uZ4GM_vvh0ZCsa^o!_0YuH8#Qhhwu|> z$weZj*xM6;;T9_9b6UoH(AVjHKF(dQM0rQB2RU(H@y~Th?p7B||f@6}h zosf5!op?;@`Qk}Y?A0zw#rbsLLRMXwW9aAMT7UW$du2feeaW8gA<4G`@bD@z5eS!k zx(7~8OokmsAJw7}&wv9w4X5V91ehSwhKftl{-jQcFG%A%MS!GF_7OtrPzJ8&Gw{-+ zrvkNUF_S4b=#ApddnZ5?*c-oSweTX6YQ4@g0?Jq8&8G@kqnWLf%1hX$WB;_oUj+>R zokN-((@Vl6c~86M?Woq>vwKXl+;I;N4#da{<|UYJ54*{hBg`!GJ$<6 zfJ@P9#w#IhrbLR2N>nIQLtT48Nciw=y(X+?mS=2JD7~JDp@hm^$xtMwO*?K6j8S$A ztw52y1Ea$y4Hh4=eqG!!2-kJ+El&LmNiXgby&-OQOJk3^QXfu(5dE5u`H3uJzGcI; z{|4vg52TW-KpmT-=b)he{&@6hI#5ym+6usSIp?49(>%_%pxX}ZzhcIC)r{vPVdfQc zFIB7R8nEH11d9%jhE3_Z_}`L$=qat?a2?#phoB=^}hz zv>$x0{qXWZCnoBO7>=5qYl!M3l(aG@vU;EE(aYoUxZg`{$~S6A!cg|UA`s;F&DulV zT&6`F<|#Y1WsrxnF478GPLO`hVcf}&-MQE~INbR?9PJ$b`nQ9fg9D%czjJo^(eZUu zH<9kv9-Wpxi|DNE-bAZghvGjEe*O69M={J>7@A9nI_QS_q0^9}&3 z#C~?h)1C2`blL$JDcOnAI7HEv-fZV7EOut&@y-A)z8%+T!N7U7gZ_7-=NXx)yN)*I zK{sZ!w4WMDsOnaP(p*J8N$F@0;A!WH?{ETcQcu8TyR|RV%HxiNl!K!_8x8Z3o`96( zS)^a1M2b9FNqWmn#6L#|3^8LF0uIf@(G~oAy?YN zA#r+=f%LPle4gHhBoDddfveK!NIrTBX-w@ykC6$H%AHgiIk3AnLdfyRI_)Kn&|%|@ zoh82`oSBG4FM*4PgfyLYC8Bt=N_iOfX3xu|g7fWPzW(oj-o3u~bPB@@Rsr+yT*;c! zs*fJ!0_e3m_0Z_LN9+9<8)m?vT$c@>ML&Ip;X$Mn^GEGITY0p|w%i#mmszVNhHM~- z>{Ykf>Et0L8Q z(}C>Ep<1@meG<{<^+uiXmaI~yk-k_IK;~sDW27U=j!_Yv@pk-nz354bq9^I24EYJS zX4C{6udF9fRP?l}8d}br4Yj{U>|#q_WTF~iS>e=ncdr($!j6#6n-b?MQu*@FhvLT) zwD+L1u9AnRe{#~}L(y{gfAn6wBo6-4wePrX|G{_f{|xBZYX@!brD$Z-ojV@ghkJiL zww8c(hCB><-k7HPMdgg_4Al%OXMqJl4&X#>yKj(EP+c##yx7R01`dd0d&()V{Ul^} zCv_i)vw;|N){;;ZCWO-x(O-2p79C~wC^i!r^E~!~_oVf-Gr7>{S3e5r!ph&x_Vtx! zGutOi9I~yvCeezolAOx+^J#B9CB7u9Ly|XigXN>_&=IHYWIB-~qzl@WEXyNeA^R0v z5^qIgZm9~a$?A|y^Vg)WC@n2BcGr+3AN{essOjpFq%P*7tUJMlEnY;_ZVd^p7CMA( zb*q5FtbqT~?ak5wDV*E(!e6TB#CM*8XM_Vb{&!n>`t`kGb~}y#?e~A@F?#^tYv!$a zR&2Vnkf__q&|w%VTlh9k6c-qJsxr;W_`O)mNvjkA2O!j10-969ZLcMymB>tSD(2!? zT!|Y?+&|Tl)-23n;|s^YzHqE(v(U*;>!EubbBNWXT|eBmUb2T63KiQIPt!1WoueWT zN3V`v@{i+bNPx?AMpjD5cjP$_E7SuEVrC$tY_H(ys9Y+w=ozyb#z&ZDYAeU>i%`MR zv;K`E3AFVTK>^f{z`RstY~41i#^(UlpJrp>$rsBA-W{#X29 z@1_$s@yu(~Ad#aOlcMitP;ojiph-KR|I+d+Gdr*rs=;diOp-9vy~-_*Yq{m;)#`$~ zSsoHIwJNH>0Nx1^N+TCV(2*so0(UPY=Rdd|g{zp*JWP%{45z)gpFGN#{sg(4==m9u zxlp2RM?p@_y7J;ae-yDC-qTZn(dvU30d<~-Hredq{)-Vjc0$8Qx}uz<0Wl?NAPO4V zti-@yk3M$GRE_pEKFYdFU+3@A1-;v9jhoH1o%%qLMf_ak`6^=Xc4#KLG&Kdikyj%W zT?=v|X4LJfq67H%_1xt&0eOY#Q6CQF{F*i)8BVklXcG7V_*n9G;-fR+cI3b$r@wOt zf}3@D-FQs*{7^@Y5FQpaV?;AFMPzX6G#YzxPc4Pa%=IJ1NU~ zpmYD+orq4`?R;yF>50zv3FUEBPx-`Ahf1Chalu3wEtj3;vP)}kE8e4a#-C-GEQ(|| z1JRm>)t25p1l*78>ylv^fIzJ=w6 z%G6MXh+e>lA-X}q$s5`ej{WZ~kPEbP=y%|L%|rJR0pmKP$P><~!~K=q#gJ1i&0F~l zN$t)JffYxmFl^O0j%iB773O6i^ZP=n?;n=SUykGl#88VojeDJ5njk1RP-??OHp0*y z=$FPo(_aT{qOyk*K*Pk8F}5Uw}1A`;MS%t7~T&aWtT@xq`9Fr(&%Hf zn1~550RzVR;Q~nGmX~ruR|8(2fk1snS_sHUQjh@YD^v6X9r$lH9fu1#v5T8_nSrSX zo*E%S@xt_Xq88S?HN^d&plxxQuKLcdQUF_BR4~z)!9eG~f_Q%NFQMgE^0jvN7hj_i zkW-4?V0plHxWfILBfM5>tQ^R@`iiP@m0WFD9ERK=P&HfrHg>*t(- zkc@TCva65nEhm5 zbxaOL42(5!W{&7uX*+>PYM^9sN7+j^qrs>XuiJ$_fKkiK}WZ*jgi*p#j~@_{(G#-hKR0$)1M8$g51#Poc(}18ODt&S1(%F#OR6o9YocdY$y{8BCvh#liW4~37b`K1g1L+_9i+T; zLFh`qalepuC=w+JX{;A=UMVI_7-~RQq4G(%_kWkoN6&p|w>_LbJpG8@7cYYo;$tk) z!J>EHEtl_z-JUm_{6l@3Y^&1G(Y`3FYFNZ|H8!cDjyUoBt!;1zmc<2YPWnz|VYuf? z&ss|hQCu(7R?ZbCC_$r5h_e$_5FIfQCB#$VE+^hgd!22t;H26X$RH)2gbLd-X?2Y1 zkZ6s;`McxO42~mUKvGhnY~S69F2WmNj&+l1LF7oMJYu5YIi1qla?{AgnFqr@Xjrnt zk&X|Qh-j4?s9OU$QSC{kC$*Gz$TS?ZUx#a+QN!z00YolxNV+t_aPZ;{_DOE`GU$A^ ztB;2>K!MF_YmCMt)z%SstvFW&O@dWmw?Ekugje1?z74WPV|a;hJoMVAyby8^p08%C zDyvMhr&R0m18YLnX*zy24gByHr~d#i@K*Xk4Lbhy*t z21y$?wRP1lNVSGOX7(ItqdF^XpZKXTJIlWiyyFUgE-cm8pGGSY2VbGUl$;us>S>i%`XPJK1_`}!T~5c+hc z4aBF)K+KMwxC9B5m}@c$vqy35Uhi*w@P(L*Ya@D^&0}g)lRni=YD(;k7?sgy&b-CI zJrh0J=fp=d+8e}8Xm1-UrmWssUHUX-O)-H!AUHsJolN(XBsb z^#AcOf8k^PG9RGPjsBpHpq+%TP(gwQ)E1^fTy^lcb`Yd!s1zj zN<(Je;((m}N#0sQ1;+>j?ck+xr^1a=@T^+lhQB=7)r>1|dxbmtFgR8nlO#va97@GI$kc}6^ttq> zt`v8Y*QBe#cX+MNgR5^j>SW^?H@A7}e6sIfupFjxhe_8{XdF5P2 zM{y8w_3ntYPqH~tI$=@QW7zt$umbQ-Xrme4FSdeH`qHk6p|eHSRfZXA7Hk&AQW{hq zq^k6^o3@h5rv~@gT&9)pY|g$jEOIW>`{Gd$nMyfZF0)s8HTB48*dru#3_ky{bgPIAGNSB(vfy7vXhgKQm#gC z%&J;YhJE>5WxA2tRi?Ql7-{D87X_$+Noq-C13V8>u0Ymy0>=l>ZlMh-y}u|hc>8;4vQPK5XR>Z5e4<92lj>7a`Ld44$v>LArPFm*}PPl1u* zvc$wba6!8Ipsjyf{0+KSRD14JQ?LcF-%+LCJHTN8rX*p@*HV_js;a<=^7WMdez<1~ zu6IWi6_%AuP8BL;E*2J-R8a*>HRp598r8`bo7SJNz%bvt^BTu(*G@SO=hrTgd1u67 zpn&PeT!ei(FGy#(NmaRjJbUF4kL5Bo`O4cb=5d@BMP*!#^j;FjWX%0Rr>r_vQg2jB zypfi8BPH>2(tAsZH>ydz{5ukFu9Sc)8n!L!uHa#aplxF`PY`@L1Rss(BMnDsY!Gcv z5N%IJpoI`}Io3E*BB|lO)Y4_gJa85ntTn|6%RQzZy4|_3!)@pvU1!vDhZ_?#Yox@d4rqWQHXy znIu5wXtUsY0~=!q_(%<9`!swCqNlj)LrF2A8L}Hp#Vm&?Ni4c+`e&Bo)kb`f7G7Au$`^hXbGlqtAx+1% zUeoVsA)(eO<>sm|S8!(Y-~0-erXE8CUe^!?AwEPZOluDQ&-JxfZwc$ExzsHOihAD6 zBRM9sDKajaa{ocyt#3!$urI&{vaTY*IGUxbCIHTyIno<C9?{aSj9KPI5UJ70n;o5%jW(SnW|_#a7HH#*psXZ5*SyoF z?N^Bu%&QUrL=R;=mw`5#m`*ahztrp0ApA3M%ee-E7l(QA1#*#PjbWcR8s^0y_Z)cA z-3{R6C_GEn)v@c`6O4FZm!hEVKOUbRikGw}CQvH<;P6M}5mLBQJ2zE-*81GqJICD;H`k$>QQ76(9;gI1 z9QiB>z)pXT2();MvN@?}7A%KojdDbew6N6fHQGugTSMtKhlXU(GZ;MhBKo`@aTnk+ zeqb}PAm}lCDQ34{2%sr`XwRiH->O*HfKRU1y0%ukr5Cgul;|cfa>E&855v8nA7P@} zq*BIr1rD}sQNcC=JdknXrR*0iBOnnv3LU3$7(r4%TBi z7<;Bx*TksN+ILAQkj3?qs!^_Q8&>wleQ)U|W~)+qx%c6w$#18Zz3a%BNLIklR!6M_ z<*?La%JuR(?H7aVq;PKHBH30rST^FJf(oIL zhubSu2HN-)tesnQ+aMDmYs>)Sbf(aemmE->hrA|_{%L`iR?Usc!FCJrA}czMvl**# zvGOuPk5rj`fic0P25)klIqs=1t9{r*G6>{d8m?-)oZ8|l!7Gg#=Ez#_)T;xrg{um! zWN|4=ZZS^Ig(W#uz0enPEL}+FjIj#ox5cm-$};3HD=2~pnG2iwt&bvJ^$4C)iyu-! z)Y4H|H^6pufXRJ6^AcuT%5e5G4>;XRKwP@OLL`nf?!dene1~YkJ{*bcK z12liM%+_m@En-Kn$TzZ0Fep0q1C=cM0f$LbjY&?~P)(=DD=Za)jkO6YB`zs5AE&IS zaXg~VUz&N!$0p*LsjYslKFzL;0hA7Pt5@ynSF<2vIF>0!M7_F@ZrDGLy?1L{LO#1C zgwUI&vYN92Z=kJGvmkEOyd~}2E%ky=-5{VouI06O{oFI&1y0>(&%JB_$G+bwg;o)B z|0VHWUZ{ufF&@(?UH#ttIjv17vr5=t3olnMn-v6NHf=hkl;5dKE|SeZ`W5>Ba%cVb z>rLILiEEjC=i+t(#M2ZsVYm?Ys97`O_5fOzDHj`#`VjD`zn0KWmbPO02&lhj{BDd$ zrqT{LTXE-u5qorGkEw_#FFV%(q-?kSG3^p@-bnl{gQnEf$Mi}IDI7eRlfto=524ZZ zug)5QPmN1QuqnTqz-nBZg=>&%cZn?=2Xd=92Z~$sC+?0YDi-^%_yBQEF!&5U|0x*-Bp3N9*a1)>E?D&!hSEGikA zuDs@Wk5*ur=!uJ7+hXllI0jv`>j&d>4r6;lp}5p}eJ$kx&;wqB(zx}m6Ejv-&ByoW zH~ozk7)w9;77(oFYj8SO3i~Q8D58D}$mB@4AfQ*Rk&kmhkixR&fwByXT|F^?98$;B zDH9u869IDK94_gYc*dLz3?{K9Zeq#8@mw1zryQ1>{x!T1+Ki}J9N%c-G#0Qp%`AGD zI|D&zAQse&v}pXvr~<@}x)!}-lsXLMlN;6H1ey*5Xp@CY&|mvbNDXvuB8$gDPx}iy zO~vNo>hksKe?H5G4N63M_+{9SKPV z09Cy_<_xB!WJ?mf+FVk`9JnsFGmGhU=+wb3&Q29}aX%N+JsqF+BOQ6JG52(I+S=3I z?jW0a+U%!nHBR;2lxaa58!+8_y+J>E*~ww)Ki@s!GN4#D>AP;}`kT#fsE42&V7r+h zgtM8t!b&99)9`6DY>Tre#5|Gr>)GkY_4DITts|QHc(~8?tB32(WB6f;e+0Hov}r*5 z@8xw^C2Ad(F*v9{uCK5TQZ^P@h1<=p2{k{Z8RvxidTg9IQBK{~?cPu8p(*qUiUp`? z_yQq7^aNW*T*1^&I$fK0yCmfh|GTZN57;Xo(uXk}3%}jk`d;5Pi>OaMfCi$QmB&=C ze7G4Dk;nK_bA(iG%qE5N1YORz2!2@eLY2~fg!)dM5U}nmlT<)Sfv&>r5||p&!T^Cd zWW!fsD_>Gt-wG$fEC&lcq=OT4lkUdOU_?MI^5+^=S0V5Qdcu~JK30|>R2be(0W^vn z&?1H>^R3NeK83L4Cl0_K=laW%g0AHgl7rOO*V@UWHdCSHP_HQgj3t0c&ge>W;}OIX zjeg#j!&55ab?mO-un*bZPJIE)_@;O{-I&}y-0TfY4kD3u!6C0a`{jb<`Mk+|Hr*W~ zWwyETa8p8ELd?yWksJEEHBQ_YBTxD=Xf4!b3;QQRuC|Tj+B^$qa>e{e z$WV%qYh6ZL2eQ@=!r45KYg^%UnzU;I>z=)b!K8d1%&n%CRwC3$U*&LjYHYtesF|9Y zkj?9v;Y{Xg8dt(QEGm)D@_(~fb7hvG5%yJB^qZ6$wRDxi3oNE&Wl>8?^NB&>9>YuI zq3t~<9{oCqp0qUMF@QyyxG$BkNM2pNBc75*q|i~pTy$0o;h$Lra29USXmY(vnN*xL zcQIIlE}h4A)nXR-vRI~}e07wW4N4}BiuIDK=Ku?jN>?B{vRDkMf4>14jDr^f^8=30 zO&>q^P%HD(a9fttU7~OHl?TL1vWtUw@0N({DclbqlNK!i;~`Kn@6ut~quDZFqLS{% zLmB2#NV!&kUrL(~P0doSh_6!6p6b^7v32gTRfViDw3{O?>WQ0%qx}={YwD$-sV<^( zztl-qJRhqDdSey1S=Y6XGB$JK{IN%tAS@^+azENita4M*$ zTt^Rl*il(6pGYhmRp#!Yb^y3dbg&UF$fIpR63L(=#({=)?yz!giOB z*Wse#^W0S`b5THyv>J$(V+dn zZ=Ii?h`wd6kXjk_XR(z*xCa6jLOk6-RAayJmpQ?Jb7-*0CU4=Gm=Sme`977jZSxKS zg@8oo+c0soLXKqYcJH&nFT?g}t%+R44AhP@aYiH-6+3;fJyDxcpc9V|Z2wFjQRFJ!F|U5q7R`&k0~kprcyv_nLgOpMv-_QBY;9`(VjL*`z*>y!I_CXUD1EQ|P4mpvyx*1CaXL z@7^I=c|n=qN2+v=ZouIu-$sJ-KdK1KyPWZDL^%4KUebGg%>>PkbrZ5k;s~T|W ztJgpT8Hr2RXapA8`rCgH%X)cK_jy19^Vc*P_*#e&Kw!#}1=vw0A_SPPuX{V6Kkx4B zeWK|Xo3ft@vZ&-OnHAY zdoY38Np+I2JX&Zr`4GZ%auw%iRx%0gOqeE6&4?h%QRggjx=EYtye42BnNklJh0h}R4*_=9 z@E$V?1p~aX2(E)sHfkmi^*x4B6RgIC*O_E1WSLtl(WmHe3~vbL2=70%;sB>9zfX@f zhna=%>A&5m5}us*xkcoAN1R5Six#8EIf&@ODBjYeiy zof{0mdIz!<^b`wgAuI2Lq zW^ls$?-Rf{^|h#lrbF2E>xDRBz3LCHiI>9WYot8P1kPqk`o`UMD#i^j)40(1f=i1Q zF(B-?WkBRxHvRIlo_wv3Yn~K_u;}4TxBA&z-!fB{hAwopEl!w@H<1N3>U%-_X@7k@ z^1`Ew!`;^DSD4N1oS#K6KeYA^4tG9(J!_pr-i8U+pw!HaK@W0 z_?;>EohkTgytS3SUsSxWAL&Yh1+`p-^xbW&7gr z_~?8;@_tJD<8=7E{ISf2d~ui#^PA+J2NR(D9=!c!(BJXV6 zFX)}a0sov6YlYu0Wzm@#8ZD=Y^L;~1y+;o>i_K?wg!DG8 z3>>}LYtdi0e5hac!tS77$s;FG>M+SFl?zviT)xf-=;z3D+QB((DkV+BI}RGWmp&{4 z>*l~%O>fYL+I2un8XfXnjO?E|;$mhDMZ8VVdb*_6;*R4}vL(e*HQkr6DQx*Reg|2GIOTkbcE|lBx)BsJaS(8*5rZ~8C($C@F&(4{g%>t+ZuOF zjiLdh_OSi5ao^z3hZ)iv8Gt8i%>r&N;tUk!#p%Hwot~)2=nMq$?xB3Z=8V`rX~o| zR^o~y9ZXSe#GpspjdYV)1BE5WFygxr}dDY)`kM<9PRW#mq`TF z*mhpsRrXBE_6%+p{{y*6$|iB1lKyf9G1HrlMXFw4mV8csS|-C(l#AddcdTsyF+k40 z@fo6*+&$df4ckv1Q&LPcRnC_RHx%EwOL)?#1f0AFfE1d}q|75$?`66aMHFs2-mq_4BooujVL1VaiEXB~ zmyDMXk&n9#u$Q$^d__`*@`%l@@u-@#GT9P6C#(`n&1f*lF7|TkqKNq>SUtLKzT@% zdV2GZt4+4?i~Ot2jc)@-Jrs+-bP-!c@+rZ7EwXbdA)I^(b~_Gyv4 z=TF87o)`Hri5$`v{1=F?Z%Tb?XIDpC;lQpVi&7WN%7A8pG!e)IrKCkp`=W27>_`BF zGck+s=zK3j2WJNrVgwTEq;SF&04Gv~DCx&((+84{i;v&6dpWJt?j5$_cL5O%ZF3;p zum_7H72aYuk1nzxqT-fl8g%jSoMujk(J6a=KLl|iK`+OC$Id9A=<$TRQ+9+_LGs#5 zZ@UkJAlkf*+l;H2cW?7fJrotAy=~+V!|tc@nGWo1)Rgk|JFrKSn_HSKM(|Sta#lqo z4PqT#sMKy<9AGGhvWLm~i)&g8W^Dg)7Qx>V_ z0Kac-ZR`6R$A%RnDnczDoRB$MfCL6r(r;7^3t7OsqVt3X4-1GN2qjR?B_lcSCiZ)1a7c7NUMO8B1$ zH%8qqfmM8@vC%Xd-*wIVx`I``3dP&RFa5A?9HAR{@UqUoS1QfpY;s4I3)t1=#PjtH~^5+JKKD$zO zA+gg?>{LdzZ+5qiD-8S9jnf8XJz97bCVrWXt5zQ&+lv2We|ytZzb;Ts>zLikY{|hS z&%raB05~ymI+r*EdO8!I(_{#mo*054GI~8or+O!Heg#S3^s|J3oXf5sb9CPnDEMWt z$dulRFqgx9e>CWpY=%)L8T$+&%2W0F`Y{%c0j^5P3YGv&Qj2M?1?_2bj{4XXXMsgX zW`pfYv_pfiXq^?@SZb_Mgt40_53;7`MVUeIc%f!SB~J0!3~CD9y9Njdn*0uSrp1uogDp=r&l!moQ)bW(91VD-t@uQVxWEPgB> z9?Id@ubw!Xne?-{^zLBL8Q;z4m-PAkEa_1R>g?5JFuXEvcMCU)uj8ulXvH03EyDqI ziR&42)Wrow^*tpEu(*`u*BtDJeHb8@59=J@} zc<_s`Wx-5g#h_-{3sc`92tDt|`l-9DW6A^kvGxO=^eUaAbY$5TJV7 z7IeH~AF!kYXMJs`yQB=RI|)jKR~RL9Xu0jc)dmSk2cor3oU!@@v0ul1fc2kaJp- z7RQl4xBVqX8cgZLlA$d1o2%bK{jwvLHXWJyNV{@WRz=l=cllhr*JdxOLWUudwZMQB z-TW_YSK8gSk!-*7S4bF*44AEj&N34~5Rc>76DRQ&+gXNU@)`>%4k=P5DR~k3-(TJ8 z6^m@=%zG!X2s9eqjb5s&s;h1#A@Nc;kKErs*PV&38@aB78fuoF6Z4L4SObru(s$II z>Jd=Sm@`8cB?>dyR@1C{t*VxO)t&#ly7SMdJOBUr?BX-3F8+V2ED< zgpmQ9KTjDnuQ?}a196S)cvDi%$j_NUY65-Ec&p+5oZ(TUWB1m+&d^`Ss`KJ=Pf765 z_kjDQ;fd+A-@jz|B#pb^QAYS0Tl@uvTR6;Dm(eKw`n2p5$tYlp&7iyrpcgKm#o)^! z1GIWaF)q@;v6v>sf`})-4M+y@u^*JfufrP)9B-mv$Hyn7$2%rgAS3Zkp_UQjRK*?Q zXhlh^+@ofdZ^GH6tElelEAU`D$+%yD?G*7`1MX&`H-E<+B&(WS2$yO4aA_c`Ia)R zQs|wo`Q{F*Ax*%SaW^oII0;Dwtmb%R%A(#8!4xLEZ`s(<*~(R_*pj8Dwd)NMK=H`jl!xl!NHM2&ZQqFOalh^N%IzY+rp*l3{VDM6u{ zyVZEW1VE}~-QBhNvDzbDbhFxzg;#3H?aFUHtjRf}$!y(F!c{$t4I~s6G%a%ao4l22 zmFH;Iv%kOlsDTy8n)^pNhKA&|QpeaFDB*Cpql?%XEof3=%F<-qDc_OkzXFKr&i^pz z`~Mv7APV;dF`W61>cC5?afie(ZK$%syZ4n2!F!*QS35;Xw>dOUhkyfUF!)w`T{TQ9 z>V`?ox7I$-(`bYAc1m6Vze4*?3}uL$5hAaFR&o3#l8A}XYMH`(_zLGgN4!dH1!XO< zVyja(Hc&d@(Y7Lp?0wvZ=%aDloWOj)sy4}dZ2{0uWW_%GeyLuz3At}e=%H_U$~vQ+SSz2sci~DfYmT(#{yoSLSOr?7_W&(OcnyFJ&i%!qH4I zRmHh>w`1TFY+(`(MSvs{%IYVs@)gE_X{x+EI?B}PV@>^d`)EU=_LZ)E2GECOcL4fi z)SOTOB?-L(;u|!%vagD1q&1NxgC_bj9^$=gclccS*5?ssw3hWt^<`}2RKjPeM0Hmc zI?yO)6!k}O5wV!>Ku%0CIlDfgm~UH((FS5v3fq|Feknj{f;;gx8TZFZmoVTUYeU3( zR)(**wTowFY}mFU;39%Hw;Nt0&X5h$I?!>}tNEQZmLHn{XE1rcupK~*O{Z{vJl34c zw#8cpUWg?&a7Q1E(@+9REA)&P4Sflx98=yb9hm+q4^84nYkRo&5^C9smM_P5pu8y7 znHoLP@=}49j@t_?Oo6bU5u-L0oJ6CgZnUh=*h;TfmWAu!+_-MlJC>@fx{GL6@KA+R zsSQZxCdV}O8=y5z)rMJtVA^aNMs4aZfN|9CjIjc8J9o2)vv3;#t;!)-9E<9GgHF3) zQ_Q$D#AYnsRvI)_-WD1;lvg)!QtK;96-I43kNW3oIl0wjh6K8XF|RD2Lexu`Mg5st z)^1hX5^|J~w-X0j0*&~*-Uhv*t0a)-d~^Q2fyx>j#HH=)5y$sZj-a&kqo_75TV8pH z+0)E+X(-Q?nq6*eF5NtlelT5seuB^wU26@V=%~_+CyHQ@X^ypORd#= zTV~UV@eFA`zF2%{eZ~k)%D(otG9TRXl#0CVk^f?QwI#9aIZ!nF%^}Y{I^xqPUe$3$ zDp1`5xw7~5;n!b-Jhr?kjk^=Ol)ydU5(a%`;T#<+7UKVQ(o7FWAn+Y@{2k__+D}xV zV4NPkT303Sr;%a^t~5p%-Rwy%j;SaYnb52gNwR+NVj}XqboGXB~dKx>DdFi!~MX4WP^g=7_FHK)*g*Wuw zb6UnEz_~|>y-YpD_qp%n%zW~%P~2u7wusF;Gmf3bVn^1SJjjO!By%c*$>uYQ{?YbO zYiXcn*W>J&G-5q$r#{@HcRCSI1>#jzF&bfg0x@d}ICVRK>Jmx*cr`{)$d<8dAJQle z{dvTTjR6*&tz+$hry;QRR-ZAIKWEQ2FmKEB*tc?PF?=Xe z?3{@f>y;|{6<8%8yD@4vgX8X|IAIFQ^n%JXD2-I@IZ4$*I#u>kA+Us$E^M|X?T%0x zB-x2%Jpr)>gA8FF@I&NI-E{CPs85j!!$$g{4(6heqGK9DA&vH2a(nn&m%1g1)RDU~ zD71>G!QinzO>*0s=MrIivp%O)MBbKu0=I@wW|pT4N10p1FGVeN@9*!nw{>}N;JG~w zHT+7cHC|;}sPDGtFn*NaIn45Qdjja(1IIX{HtqOqdzmMd#Mex8t;6+*ZY6)lCWt(HRMr(^__& zuEhiKF1bJqWzNK;0_3dBr_Q#?EW)H%+`I*&f)DvoQQesX zn1VF+4n~e93W5siptO47yF;fnH4@tQ(T!sxSU*xy+Ey=l8LRlR=Nv53&<>s|Kd07E z?PvJK=)k$O4Gn%CVzfd4b^~7JN49kjr&xbPN->RS?8-O&`=Bq=C^jyjsYCDF-)|;P z_xC5Or}8NWi&0lo67}AKgyb~GRPiYn{XL52lbv`(4@MC1r&QFuKOzp}$4Gp2io^5k z^vi>_cs97kV!;o{qIi%#M+4toM*Vz1?m*8J?~QJgD6Qn=%zse1dw0k z3~$YGc-f_-#jJ2i(}*k7AUaWG4G#;*aFH5b_JV~`w+&R+7^M&FG`_3H#_ork&5!Ub zpoy`+|6_IcR8%r?&&|tzo+SDaX=+>7L4JQsRUGT^En;8mRY$L{5uT43)LQG9Umeke zMvzwe=4S}2pvv-#;8|RKHCfu(%&G-5m94hyKCFiBLlI#(cYj%;N9ugNv0U=S4$X=9 zCU7Q%dDJ2p9CMl`=gY8-6%(CrGo@ghsdE~R{p0Z|y3a$|#=ZC>;ND|)rtzN7Cwbgf zB${as%-c(BXGtq9Xr{T6yu@~Pucb{@S?|A=?L0|N1q5oc%c9QjG$p%R#5$tM>WLnI zolj9`18)vPvGkG7xR|FMk8x@71AoL?e5S(ffnUKEDeeu}hVBriA_v)(0(F-EDb~1n ztR1|)7PRIBkc725-9}BZR|mIHu~WHSZtI98?}=W=Ra)8Jtu`dKP@PwO#VQeZun}^G zz|0-qx}>LPg+=XFEAVS%krnLzr&&d&B2x%#F7gDLz&})7g21{x zA=L!Dn5euE1?zQwtjLYJ6#mp0VBMu?kwydG;#8Z9KKnFr2In2f#n0*1_OMw|DpGFLd`fMZD{eb~o|4#Df+I3a<2Ro~WP& z)gc%Rld10VbJyk56APMO05M;6`LxpIW7Fj`bos2_I zTa;V2CvRnoa*r)iMON9O9BFz;t;%+rbkz9_tEU_eg{R8R>%if_fLrx9qxGeB_}Q$> z*#=NoQOrok>%6~Ih9~ZBU6V2t>>m7*_Ypgg^E)(-f|2Fbi&JnWloG9HX22ay}53{%MW4_?0XZ(sjh zdHO@;p&uF!>GlmX*u;C%ciwLg<kQ733KMVHuw+_8yd98 zsD54SlFToZ5!XFG56lY8)~#@mTyd4cx{7JrE4+#e=di6hy77TIJ}`G5NYuCRJ)%ao zgj*(x@%OIvy}=G8>RwcUxfoCq8V|#u%^lv#>||~jG)KpYLF+%yXnN-sswAdpMnhluykzUT1Jl^N%jffL zYenc4-WpP=G7x=v%LpI_iqC(@((|S>2!Blvx>g#yyL73dw#x3=R&-oBFSwE1Irn{Y9cNG`y+9Ad8PkTh zl24c_gu`M za`k7>&7)x(1IUQLv=gZORMnqrRoCsWj4Q8j_K#LERrx(X!U|LU5&M;PY-IDDQ2VE^ z!|+JXi{)Zc?1X1UH#$;l{z(W=HF-Uu8N67+RV+HZT9wQDW60ecUNsu@hVY9x`gZZI zERQD2S-tvNr}`erZ<5{WZ`gp%y4YdL1Hca z$vUbvYVh8xhVqyHU}ZLx91gbxyd8d%#5Ymx#bT)-K;o%z zgR+We!uIC+L7GXX&{G zs+{{Em9nYogf`*aTELZ|HO{0lIClnfg0Vo20#Tn^js`F_(57#Xi{W-&1)iMJEcY{{ z(_}Q54%73bV~mlviVWXi57OY1Ep$y|PuhYomZN?+8dOqSktc0at67Ea3S(kcc^XwP zCo44cN>&W}5@3}74)r&%v2q;a{-!(+XZCMOMjr&+-76zz}?k#$^yL9q# zymth!CxAi%{SL3wk5JG*@$VWiu5T{fi+`N;-J7&7@h0Gb)Q^|%Z0nw|AHv3sq=_hr6g?&-I@UPPA z=m%wsW($}A+Rt+Lv8Rm5%#nbS?5G2w^}tjr^J#_u_K=#B%!L@ul&G=`y9x*QWid41 zxaNF^w7~_9PPSOgN;wY{pnl%&arcWnBraRdRCMk-HUqppX*$wAuY+r*zHw4B(bHZt zQIjlU?Qx@gv_@lcfv}|rp&*sBOEI(`XRLvUaAj#2085GZl%Ftwichhqizj$0Yfn8y zxvkMCG(N3iaD@-uRVbIXv8F-H?mE^es(Fz~<3(nAJ+2~KS6$4^whcsbV!72r-J5Z> z;LH?k9((TsWzQ)6Kd0MAx}#k$Z|z)Cl}K3C1S%{ZO~S&#AQWm6HjA(WRdZIOk=y=P zog~wnJ*btdpKqh_st>IoBm~yu)zhR%Hj&bYk4+zt9quWBkK{4JdB7%0vH=rf(~LC_ z-0;w|hnY37aw`uOSmZh`eKNKta0*UBSqOGAM3UEpAetq1FL~@KXS2g9 z0(9dHkWC!ln;@U^&<9So1pW#8h94SuXm)@*w9wIX?ZHZmd%iCF>iGEnmq%m77;p#sS#uXzT$4s{ODmZhggWyf(p^b(o4>eG?U~3bN)g9rKqpNZ);j0^V z!_3oWb?LLaRCzt=pj7@Rkc37l{2wgUwv9`uYaxDS^rPCDsP5CcIY#*wmvqTje3Ys` z=b{U{fG=DS1iK`D%WC+~K|(W~$pApyv-BWSZ3k*(H*;Sg=?m}yl$NvR zFRSArA9#l?^i`fCvJ>a>G~aBF8_T^!KTT zFsa1_1hp@2zT8F!eY!X+>~GkQU)ig;-*$O+$iy`2w4k@g7f5M3gb4O=<1p)Wy9 z(;rG$D~-D8v_FMB*Z3rWN4Qh$KkjVq>@mWKe^!0x4pQy}6=Bc=ifR>qY|mJRBrr?fe3hb^{gv_xmPiC zwGRHqUJNpiXTD%N?5Dg9bGWH8^JTf$&@c48?yWfQvUukm(vK<@Z<<#YR!p^O3ILM# zLyiWzzrU8+GlA%z3I3x{$Lw7soLrUbtQFaevsY5!m;ny_nEE;EAN1m06z3-eU$KGn zbICDF9fXoh^7JuQVIITPEKh&QflO9&;>@8QFMyK&LaO;8mB~lYg&Nk0Mnnk?swq*P z){_Jy#(D7#k|NFY%qwbsI^(ocINW9*V54gANdka?6cBAW(AcN)7fN*ry9*V9*-Ar9 z)`%UNI*AQNR+?f+7+N`$wiN>N)hn?QB+GrdFZbEKv>1lwSR1U7#qugm%VAs=`3wI& zCd|!qHEXi;hB11xt@74KPv+~?UD7z*e-Ky&8GF#%qMqfgN@Heqi0kOncy%v`5(~QE zbzNWsWsfy_k@o$!S^O@Gx;d`jW${~FM_Oa6tsXNAc#HvEFX8623~+Fvg$|RCtO5qUl;OG1b$dA) z-fe1XUT842EP|5jB{ZBltY(eza|o+IoL4dAuGhb!(!Y^FL7)!kNP!4v)%F4YLX09K zWl@PJkXO348QVp0Z+2EvvsIZWa+E7B)DyYiX}C6OOm0W4_}# z~=8w#BlD0%`9(gr| zj3i>$^Gdo!p4EHJotfwTBKFkc&vWk>LvSbp<;<1?McI+WE-iTWvXQiFD1~EF-{|xi zl~A~^lq`*tm2Q8j$r znT{1kaWSVWVbNL^}5U{kXt6k37ovTv?S8XLn{e zcIGmau=s++YIA~`hD2d6BL0m1{rb1k&NPjhUEt8&FKOPsT`XBkNc`MuglV6TUo9sW zv;n0ffGJpBNgrplX^ z?+e6EuC7}e4SMikQIyFyJrz|-#6$2loOflV%c4fdO64JpE_^bXYk7uSzD!@&l9SteD7Y}W8eJr< zqHoE}K(hr&Yg4zTS@NCVtSi$joBYvcnOwIv>mSx-h_ZYT4r5`vU%a}yk- z46TH&C8zs-ydf`+pz_9-)__Gp#8>S9Xz6OTqE>X|-uu2KdA4<`BW+M%1cVs!fnXuR zZLZKad3|TPl=y`SwS%H&h6R<`jRd~3QY_nl&95%OM!yM?iy2OVfAx*oK zr<1w!8fIi$YZAVhpVHOt_{!RI?W3@JtmrB8ent82@Aq(TBc1?C0$yg`-uNcHAik={ zaTP2t_C|ZkaHuYDQZqdutCT}=yh#gsX$4&5B3y}cT%eeP9-duu@(S}e zrdMJ-KX=b<w$MOzUlrrjFi816ALNYTiC*mYBGmHO(8-OvY2KX@ZK}ruUcx0$MT~E zdRBcX@P)V*52g4PP8UiMCZ50)f#S(|3 zi5u;IWOV5<4{KYnQ=P}NkXoIs?jBWjyquNl>Bd3t@ZRCQuMe`T$*eg1@*iJ!SLgEZn=g*D z;!9do7xF)gr3$r7zxPD3SjYFi7P;xAU^SPQtMkP=*d{LlOF`n?0_?{ZUwos~-7-sG z(xlAKOGe-+)1Fvmw6Kj?GN?Lp>_2IjN?)z4!r3;muyz`vYTS}{y{5{v48ZoQ%zo}k zzfMI*KUHl@u8-ARlx;OrxBQ8rY@?rSy~cer$Og(+LiON~&9~L8o0Mq>$Nlly!P%d~ zZg?2s5amB*di2M|;zMZcw!hCnIREqJrwODUF~#$f@a%0jqQ!T1)ISaT@yXfIS?_d1 zLWg*qrAH^5{lE1oM{*=)l>LM%c^eOj%!v!W?eEHEDL2`2lP_i)M5Qh^=gZCHV!UB7 za0BjWgMe@w;#K8E6q*tSf1C~><(wXkC!&<;&4O)n<3Uf{Ia%=>-?_M&ttXdMabT{3 z(>o$KIa1G010W-mvcOBh$r?@=rvaYp%b|d&=ir`wctZE%<>Km6WwUqQ8|!7|g*8mL zb)kIeXQhh2sAoM{FLn0iY0Eo*8rz(~F%diZf4EIbk~J^a+>%sXQ%4|`-$v4U1ZWAm zFfHb5$r;m5$>_GS;8)H$zw)R0Nz%gdVC`tAit0AuohU~)Ko!WLJIY|GY|bnaR-Qnq zitXdKLoS3BG=1W(UMag?j=06s6XfQ*XHTHB#iCfqqU5kZ;$`@2#7}3Gh7?+IW>2pJ z8EKYX`I>voSEg88wz0D;dN2SjSNyCXhPE3FgRLmvv=Q>-lQipJbHU)QVtvUi*XLxg zwi5cJ?O33`_(>^nN)dxqfkm$J{N`J}+KM-sGG(U4>9-E&Ek=jFbQ56LnMyp{j0q z^mOs6r0EVR80T8{+$CP*!dMTt)r6J{&%ij^>b`?zdR*-{vu`+~b>NT?Kh11={FG$7 z)vB?5$n@V(t?(}Y0q6LcaxK9iy~3U$BWyW`Plq52oDyJ-sIaZIBCl9C@`~ zfQu;LrRmCc#i`8wb?mTwi|tm(`Ukobk|+8^@(pXZO}q0x$Es&aQ?=cPNevN_OrM7| z`>8PSRE9BA2qr3W7iU?)VjGM{@pxTcu;Szq?7qr;GMbbHRP|Q(YI?ESgxn!uWhl%( zv*rM4HJ#qM7YXB9OZ}5EK>lT;Q*4!P$ovl>dPs}60-0gRGbUHZ+7Zct;zC~$RUayc z9TyXVSX6}F34#Q_X|c5)^x&sML>5SiauBETihYCS;0sDXajc^Z;Brb?R5BW*NqK;y zfZ`e^Tvjy#_Z}ZX$QV()w`bcgAO7_4!K;9+CivVnJ2WKHX_69Hbt(F_s-4alG73LU zrQT47`%s6Wah|4zA*YQh0HYD-&S!vM+Unm_(rQ~@+}3dW6892>iNwL694mNez<7W{ zt&-f~`{mtk^n(lwM9NCM*HK>yJzjj7H)yEapfM{v9hDhwfcj|=DqRm|Ca}L?(Qq$K zoiPYfpJwWJk@qF7RM^97w+oC3!&0WlNqI6(N~MN_C-{>rQqiet%D}hVViS&(WwU!Y zq6sr{=l4k7vdXx)PR418>iX8eb1ZsMJm%gT!JV2a9XXR@UFc}YrgSiZ>X+SVJhhew z+j?ugHhQ7sxD9F-s%%%HDCKOC$3IBn0Ryr5i9W011vxSZ8{cPO%H?uwoP5XW0+|Cw zrdfey)(PkAK?Y>R&8CutQ35#nUL_-5EJIkgqLoGKHe8rvrZIxLK$24p3@#Q|s}j&S zz#i-rFcd?|td!Sa$?UneTb7*6SDTGZxWJBT9O<6xb1>fp!xHRo7+l%VmcF#| zkoNtHVMUblVzisIMX7+r}D2NlAI-MGGuRX;QGyc+|PdQHQzg>JiP=L3^AFc8Hn z21jB8R#c98y4h$@+#K4VDKGP_R+O$Xo|)4~m=>wYupL>gIO4o4Mx%J1)08eNUk`dA z5nNlJc{&TEoe`f@(R-|bOw1(?^Gx1?`4!g2{5n~m$1RfsHf4UF{=nSGlH(1%#2Jo% zXi)UaLx2!0*WZ>jAej8cp^sk_mqz>Z0JJnjup$6A;S)`q&PMD5y;(?){#N?GSDC(U z&+vAMTrqW6t*w{_hx)0Ra@c5GZBXD5$8$*xd&4Kby(3_#?>DJeO+fLgINc3A#+TGJ zwHi8VdRM>Ddhj2PCd<{Di@0q>WMe#3C?5be)IKGrX_O<#dSZ(AhP}W^Lv!fz%4bN+ z{#H6!O&POFyh53zXw|hXK#s89+Q^iw&&9THruu4gP}b%k%{PV)H2U;-VFVs^JI_c$ z9gk=Fw!YeOz!BxG#5^~|yhz?NJS-d$o~kfDQ4)^&i;PN-_?`!xKc!_th7wj>?n|S_ z45D3LfvL|c%%kFGB!90a-sZFIRBt}xtr}SnzE}wzg{Yb;HoQ%iBR4EVc#)v3>X_NrVXU(fC*Bg1bK-5^f zlQWV6@ev$xzD#d!N3CPNs};De8IRt7&+Idr?l+3qHjoP+2{bt_HKtxn-Pp;sRSC86 z2W6Neaz-A3|3J~FFEHnq1@#p1MN8lE6ieC0kRGww&bD?6>a(A@$A0FDL9!;D+Md(r zLSfSR9-)WAaViyKHbsC;yeK}<1K?K^B_XCKihsz68La2BL>amJV+Ig}Hq;$FWHgU_ z9Tsg?mFHLUW{%Ma7M(tD)y?JAx;7iRAwObH@F!swzn&BkLJ%{se#_Qy+bgY<&S54F zWZLplqU{t_j-lI~lt%XrG`fG70?$@=2Y;M}!@Fl8kof32g6=drx}d7lBXJ~FrAF!d z6P{i#yZz{_r%qJp^N+&t>73*E6PJ& zuPo)2!Mrm=fWo3~|FFpP1_?4<5RKSYw&(weX^qXIy+mjDZ1M&JvkE(~e3Ia|XTP{yski+C^BDICOmd^Wz7w_MBtVOLf>DB9tbv z+PKqiDBz9|YA*ItRSOd!9hCN!PV*HE4m(7(-rQ3A86rfb;*wGrzeDGvOQcW>;|DpX zNLY8(tQq^#b7RGX)i5p$`r$c#5S;BP-8X&c7P3fWErSMjSVha!9f}WMBia1cAZ_cQ$F22 zt}3aNld&QR3a>5_j~D~&trXA8)EwD+{0yu$MCV28Gv@8Yi@fa_7$Y&x(whJs7BqR& z9VIpZ`mAhu3>G&SNgA5AheRDLz5#KrK{u#x4JD%F6k4C2mKBTn55%taKZIq}FS=!1 z#C%!C>n+@6{z5?^7gWT@(Lt!oK%mgzZd)Pd$bt*FtIDCgN1x1lWb^+0lX?Gc^ZxP4 zynoodX@EYYNnLxV(|iefHS^kT)3vGL-%RV^c5PE=-k&F&bvBdAZSre& zTcEsOGh!v*HA64pn8x5Ru|Z_2Q9p_H>$oR~lk?!5#x7t5gnDf;E$1tX$;@w_*aE!} zL#8PENbi;IH9mt>x2rHXgD-KUT;7o&MRs(wiNMHH8xUxY*vWvz&NQCxg}5&BC|P*E$W7pbSr%shmDRT#V`q5o3Z zfUMlUJKz_r@Bgju|1<^e*|HwKyL@(8E@j1B#Fcnp z-stL!Dj|XTyW=KNgV?i;hU?2DPhnWl4^}%t7kZVT>veRnGtl=u63%NJMZsDsrk?8> z_~;q1=}5#{(pG`m?2ABycI2#LreMR}1%c2JYgD^FPP&be$j3-G({7@*srzEnNd<{0 z-L!C~FFJ&hCPfp*MPl<7{hl`_a3iuWdsNWR0=%lSPU4|~=VGl)W;|aGdbJ{VTgxOK zp;;zPgpwGpW|>3^bOaYIB-Mz^W96K?LnMYJ-au0hO|!T1ZmNR_w-C16kVK9793ya@ zh7Q2>Xx<_snLB(Yj(@#u`=_mJco)78NP6)MQPNVt^nMRS$ z$|`iP6p?pR-KVO1E4>Eiq)1sUc$0bbnT;K(Hild=!Vp>IWO-0@dl4T_TM#Bni+tv2 zn7*#qYo#%13s%+Lx=WYp z^J%=zp4^tH+f&)bI1CYv|GPzb-ymbu`3{?crgxbVLtz7Tf0WXVKRT_cq_WE%&!Z@~ z!qge}&Gf60?Fy&h^9^4CWk9=;4$caBFdE)`xjmYgb(@;%DX zZH&Aiu*zDWtJf7Zs(_c>F6m3<65?N)Lglb2Zs(@yLKru9CGV7~0JRuWDxl%C9zrk9 z&0G4wF*{#-w}V?uw659E*M4XyosIm)SVX?L8>Zo%MW;!li}vO?VbruZSxG@$;?OvU znVPc1m}hAMFF6GlOnu+ZzbDMm<0Kk`jm~LSf3nCw;UiYAaok<%4*4!lKZC;WWmVlU zo7~sKy3A=k=QN~MF0$vs8%Jw<-9-RDb@jzSgVsDs?%WNiqi+})ag9C51*i{<&w#%X|HS-*`|n(M0-?kdpm97j zw(d%Bt5`cbrJ4j;(dwCJd&i2-S-Nnthn01ZY=B`^%Lna|s}51;E2tZERze(qgkj8k zINc0AZYpR@1dYlK z2pn2*<5fUj+Iv}&JSV0cwLGOYqJ(ig!~@@J1bOe^`W&sh(Q?|$LYVn7#ZZa7&=%w| zpkWkhX$qn=970d@UzDI2jVXow>;+k7O1~6EK-SY82N!-nA%={>Onp|_u`MGp&#A{# z<HO(2*0;UNj#HH*6AF)RKrprvMe2`25G#_UffL1gPxif!TV_MIPn%@<4cbSG zC%iK>C1nPh%(VC&Gf_?9otm2lecVR&fGlAB<onla0+= z5V8F_bBMXlt*!tDtejo6W(M*Fgpz$jnO7=fgwR)M5P|KF;jNxT{?~@oAUC8Q@G#(@ zLobR%7K}fDCV}(dDV|M*blp@vlNkxQ5#cJ8o=Z4 zzzf9Rf5Y#;qpdBvj*8#(908xKM!|q>yM6f!(u}+oLL!0JIYO|xQTrYK`5gazkstkg zz*Z~;$78^SnUnJH1LcPB0#u=$7b|q33>|hl5Zr`k=_PqlsY`}>ia2+C7|meMTfMFg zRQF@cA9)3^F>5WeFICM@M!EKRxtLaerkGZ`m}+)8v7doVqio(Tmoc|6y98QRFQ_cw z#VDD#VkU*fRdghb`D?|!`gCy<91MFYq3NYaq^uCU6hCPX5C^gYt(b)3b4}VESzr7- zjr$|wHi#$QkT;ERJ6=Bw7IkxS51^A;Wt2Igb2y$7$DL3I;As{|TC%&*u1^vaaK8jn#+a`@+-IDvnZ@8fXp(5=3sG6<{ZrS{(alTJ2~s4i|w zKe+hr0!f8h>T<8M62BHUSZwdTrOyyu<$01NAA7xNa-VNo4Fi`51#sJ?<9H4C=PuFY zw0GavAhb80Ozz-GlnloXc=9{{014lD4fz&v7lfa2Agbzv(RByz$@>kEpt>ru7jLxHM z?_bA_%^m-n>ZXb<^)x}=zza`&O&8~(=l{#@2eeC8o-kB&H+(`cNG4XNsJ6D?;t4^G&eR>o>=i8r zZNc;cjlp*Hgz+@H;Y;}iHY0+(qL;Z*`X~Cfx*?W{D!oP5PU{K&` zLF+IZV_L5~aVjxtZo7puV06e_0W57Oq{le8K~BQ{HZmgnr-SnpUlX!DwN3MMh17wYABlZB&u`!3_4qqE=% zXwQA3j>FXY0?A%+)kO(h3ki9WU#FP4M0rS`L){zj{H;@AW9wsp0rM?y36EV~D~R;g z>B|3T_0WWeH$1|E8J*?`Jt99p#vS-FssO$<&q0~_m-WZgr$l-nbk7GRcXDv#NDZJd zdOk*FePA>MOG`+fhJY5DA%!Xr$5O_H?zCU-U&LX9Nf3ZafRF;yuA89!>`Z6fbO;$6 zp{azucQeL3Oy(8_d1NjFZ-%9BS2#ZJDTwlvnbp@ZLx>s@bhEieti3tw~uEQJ-5}~-To5B9k|_DA^`UFDNrMHLL}KZ3-nK&VJZ3c(Xzhq4HCt%~O*SphP|( zA+~<_V?rthyuSiwKgCx>psqMgV`U3r(j7X|1m0UZ%!sF_O4)0<=`|B$JRv-9M;l zPS?HE9K$uR&tWTI$FQhondrMe5_;iO_&96|lb z$iwM3va=k#b;JO164w}Ipwkf@R)YWGGHIDyAt{h6#O%Tn*(*v|rW-Kh4CL#Gvy)Q{ ztOx^M16b1=R74yZfvdph-N{o$P9MR}!zuyP31s7J!}ayctxrm~bNqdX=rA>SbijSiP*C^|8Pn?j>A_!7z>!1aV;8 zMY!PM8!o_VN$|IacFE}qv?rKN-7r2UqKuCCBSJH(dpCKUVqXU9DI4~BiA7SL`;@l( zBQYdf&VJUvn8bKIzE)x7V$Z_G@~fzQ0ahh3u5_RW%gI{xk|13Lqq%q_hJbBS?v8lk zJIMs(h>s!ND`Fi-Jo5|0y5oqSFoU@bm^?)Z&00&?4$D$BtVeeBL=_Ezr6N>ledLB~ z`L_BNR(xX7Y{5efp`MszTym0XGsTi*YmNhSI}3Pcar4{oTe-(iwh(<#$!K7C7=C|5 zTp|i4*m!926LE-UFOpv?UM{{hsJS?R$-Y=i`D`H~3!H2bgsU&7;>ndAm^>cbXo$rl z<9CpFLWU!mN1~R3Rd+m9Vyy3Ntce|Yv_T%&g)8iZ;Y!bPTUeoBiDJneX?s?3oMpkT zxRKSMXwIN#S`1_(Vj$yp*6?;gJGp6x9S~rH@VNF}yxrQ$wzoxwTwP?b+T|^Z<&6t# z@Zz3Ve6nkQxhJwl!xJ}zV;PANK_rQBi9(9L@)SPBI?k)gHlZ60*m$MJj;vT#8~+%Z ziD|66p5E8Hs3u_6yziEjTwS~WU?G2*_S7AesxE(-26BQT^tYm zV!zyA*wRvWjm3cXFREB8dY+A4ayMUuuEIx0R3}W3=!cluf>wm|Bt~JjJ_=F=aaxd0 zuVCGp8bN@BdNb4H&i)D^LASSkFACyz(m^J+Tbt4e8?G4?)FN@K`lag`q$wV#@UP>F z*$_2ev~|}P&TsqVICe}=`lqBcn`0RX3GYcvh&+4VEpr4yiLLc6`$g}PX{A=;Tut!F zK~2lJMwXJ{BD^&UH5=I)mDZ<3c6RvR~#5i`qp<0i5FxRP`kSTR_AIDIB*t_Z6G7pnLPj3&Z)(ICT-ZLUdw2q`c`fHp-8)U%=C z!W<4$Z>?2NeoNtgR_t0(gp!ZUs*;`}!qjep>L)$@MFC+GzsXghddn);Vw9@o{1FFp z=-Oq8F-AQ=pb?3{70B3|vpwe$FdBp+H&Sncf0OkO;l|4qwF72~Je$T^}jk;n#g>U ziQrxnS7KdW5xbj#mZwkAY;c?LEs}50O5e@821zc3 zY{kgzGzr0-y~n0y+BR5N5j~@kP(F9?7ZDG~Wkp%NHnaJ;$!C=is(=$*PFI z5CQz9#r`@wt#wMij>6O-3v*;etTS7p33pjDTV;7gW*p&)Oxtkmkb+X8_*d=MFIR@K z?I?EpgsWZA8L<`ff|Jp(3j?vYKr4K)NmKWDZhz(fl8^_GXj06G_1^&^u^}U7q$e&^ z3zN$!_tfJm+*F;D`@1lkM&nrw!=iR^b+!Kkl(#%wMmrM>Mma}pZr+c(7;2BAh679m zB2qE%BU9a-_i{-II)n$Qe1Io) z2f<0#9W^O_T%x5GYZCW*i-BYb6(jzRE2tx8R5Q5JfbH#G>dzx2(BYYdXfV0Eim)$Q zGYwLImM0vlrd^H>jJo`yP?wc8Z}k5k5kYlwQ(mZ|U5)I$kFcaOie$MQHK%tG6x;~f zIC7_;#uH<>MZ$(DWu??9ATDt$?!<|rpai+ZgSZrrW{-G)vVO?x=0UDV-lJn>*3G?q zP`kwQ7P2}n&FXki)$tHqic5Zdg-(Go6-WgfOfU1TGH&Ww%~j4@M`-6YiRBa>({V+H& z*I?m0d?nH7hP37Z9giGR@YXKzd?kpMqCy1ofhx>qzCk~nWk>cwuSqi)<|s&FZEZc` zGCfjrS4MUT7IuQ;o`YQq`>`RnvDn)YAE^B+w81LPw5}a*V?#DfdD;F-^NG4^qb zv?MS@N|<*(N$MeNBntJwLv7w={=WPAby@~CH$1rWY1u zmJ_ko#>+RH?krY23dz_ktAnCfW9^CUL$+txJ!rAMv;-e%ziyAsLo*O{U>{Lx!N6E9 zLCfPjHf1hlD$opVfg6MfKvL_gdD@-esexMv0d1`Br{FbUd@k;AntJwx_B%~PAX2Y;~0|rVsK0^A|?LofnG6OlO zel~VZQ)7{ZRQ@f zXPp2{z{B=EGTj_XCfOj?RRozn#4}LtZDE#HzVIO=(AjC_Vh*&XF%*(27sxndbo2TV z_pDvJ`WkX9xXk3ehh*BNtPW$!Y#){SnD9U;$1~0`*2pu@Idl6x!f~8M8kP1WVKt6} z9?p(sSiCE7B%Z{XI1s1eSj@$_+|m9WO*$M0p*Rh0mdjf{JWkhB|CqQRV4OH(_LZ=R z<#C1}G@H&waFzpuZfza&JjI#k9}`a*3@Jy!vEHa0oXg8R4AbZbyMF)u$nP^7%vpe| zU$x`?e(Sj1?}&pSY@b19f>RfB(f7o0=w`zCo!VKwJO8~tgkecM7iG*mZyr3ivyPBB zopgN&e*!25h&q^S42Z*ukGX#C-1FkJO~^c+(8`|MVRIN`Ljz3@H5t!taHr=0iarb7 z15gN*&H|cvw(=?IjlGpF*k`XKG#0FjVxQscCRm|!Wrar4?CImwa^IE-9Efkf{?Fyf z#m65{j)_7|%vngoio%|>OC>(aD?kB@5LyZ!`!I zGc(Kdy~R@?Fa0bS`|+fn1(^lf&)cT)UHqKGDO%+Ju*qgdQNGA#SDB$mt6eX?t?9lpW~VvUTR(4av+P-I(%svts@ zQ1Il-!hoU(4a~OJ_gF`t0J%7rREYCWbF5lH)@@TVsw0{T*3Cx(Qa9WO<<8eC3 zF%J&<0QZ*538bklL+#HBaRzZ!3!#&3S@Ki~aX_YAh26*Lpy5ZXb>`5Fjz8!FUJJT& zu53zkxx{^YrKt`W)}e>9g1HG&rC_r6H-4j$c_}Er9Me71FX%67 zgW@NW*?k0G`UCtt*JVCN7u@>FHNUm@4l*kyj1shEag--D$S(=TqQ^zkb~cLBnAvg`QP`vNU{wi+wO9~mL*Hp+w=C*^T5_;-;DkVO^g>j zVuirMX(S2eWDeHBy!$v|;o~N^S7#?I@-m~7|Vd&=#6XBOFYtLc7L-qREg-Xhh00Ie6kW37QmAah_`8&J+i@mDN z&D~*j)^!gu#!Hie;rp0}M|b+NT3={9gE0!>eL71QdFqM^{Hha=D&IHOjR3eR68V6$ z3K}XkAD{?rPb)LU8eaPCfDjyVq<*B?IS2=`~*(nbjvRZU2!PE8~NQ~ z)8fMH9i2il@>$QQ)RnL^mODN0I;Fwu6l&Tr^+ITY-RI})Q@tVl9gW;N;QYV@QOLbh zg9OvTU^j`-{wsL%bi>fdSH*Nv#e(Ul>zJgxawh7D&cTpwqmftcBUC+&TNqu;Gt1#1 z>e|>vjMeu>IXpJ7T5QEhAWsL;#FbjUeDNk2W~-7YqcYUS!Cn7bmpMO6|GE9nwbIzZ zf{%JQJm_1el`KIdZQT!z2FFqZA^{s-1Y&XxwLrPbP-$7fkkm@A$tCT8l^-3Q1|LV> zO86^zDf@D(`lt@sA{Gtx>Vl4)S6(4E=jXq8u^=C+TRV`0As#};SQo(mP@}b-k8Qf6dCW$Eq2IF263zdUpg-z?qE5%h@s7u{3FO=K%rP`uY9Ya27U5Zzo z!IpgqkdNlL6k^KyHCKJ)YU6z$+p-$OLlx;Iw4+Z(X650L;|M`1=88^g+k@vq-3B=4 za=RWj!G_BEcl3jb`wjZVgYT!0Mc)$qmCzi{D*Q-iaK|N}oANJTBB8oEp#-?N_qrnJ zBEB`Yjxi(O)szPKk^WXD;b@ZhU1{eM**kBc;XQ}OtYtxn6TyLk@J(n~qM~r&%AVzW z;pZ4V=O}w{GC%Ml0_F%y79AIpS@qi;)yH9p^mx!8D(*!Pk@jZ2F6*LmTMhrh zumcB3`KA$O!aWp|C_%_BvWB*=DO<5&c-VafY8iHi z%&4X#VfC0FCswDPp)7*24;ckL_F{@n6(imaB>#BuE!};OI@fsc-4IPdkjI3nl6R&= zfCc=ykZVf#VTiWZc<^c%;O(oSpm20@rw0Sqqt~)#m+O8wR6XPry`F&0UiOZ_EzI~9 zPf&w-?F6Rl$B5tLG2#b=$C4GM0EGgNx?Vd$B zV6z_M+UDK*471~kXR>4-1F=YW{@zh85ZtWaSUinM6@tLgK<6!qUKKu(i5Ni=?JqX< zR8yFuA(-@_L0BGS2(H&S58qeYCTpc{l`iki0XvZ(lAcfB+&H#ucFORv<^!!q=|>#T z!`_TLon0(^dqlc}{$f1)br{d|Lf#a_!p4dZ`5Ufb(!f8WgrPI^Mf*KAM4ZXJPl91D7oi^sgMOM-^_)78zlBJ<_ozrz=P@25K1=mJ~;W7jztyn z=VL;91@3wbUo;@>oj0*OzJYxq>rT`~kZYA|RGL)1QHee zS~P48=7wLG?0wLD(dZGT%`uuJ^x!ZvN+CxWn z@CAXl(Y;V!d6Xax_OfrRg>stFto*~Kmha2jpMF?6QZH>lTquFY@!q zGxiP?#p&-QrxN+ZVdg(hWIsbD4JG%D{zLv1TKc6o^4Zw?3j}`HO9VxTs!-Rz$KK!a zdQ9P+g_nbDxyWT?!q*E`JL4ob5YL{Cvn7h|2kE9d&lNRtY77-Ngww-3Z)a$SsgpB$ z)@P!3q}M;9Km{|i-gy7#W%E@-4bq!WpM1i|4&}hYW#JMRK(lneE#0*2rEC?+l#0fp zhiIBDlW^y!uw&NGrgIFgiB9A9R2L%lU6xU@7|+xmiy8}0laiXGZJyFD{!m=|7g;?_ zlF~by`D8Sku9{Ef+1r*iVO=%Ri^OK)THE9~P;F7UaQg*y","<=",">=","&&","||","&","!","ESCAPE","lex","tokens","is","readString","peek","readNumber","isIdent","readIdent","isWhitespace","ch2","ch3","fn2","fn3","throwError","chars","isExpOperator","start","end","colStr","peekCh","lastDot","peekIndex","methodName","quote","rawString","hex","String","fromCharCode","rep","ZERO","statements","primary","expect","filterChain","consume","arrayDeclaration","functionCall","objectIndex","fieldAccess","msg","peekToken","e1","e2","e3","e4","t","unaryFn","right","$parseUnaryFn","binaryFn","left","isBranching","$parseBinaryFn","$parseStatements","inputFn","argsFn","$parseFilter","every","assignment","ternary","$parseAssignment","logicalOR","middle","$parseTernary","logicalAND","equality","relational","additive","multiplicative","unary","field","$parseFieldAccess","o","indexFn","$parseObjectIndex","fnGetter","contextGetter","expressionText","$parseFunctionCall","elementFns","elementFn","$parseArrayLiteral","valueFns","$parseObjectLiteral","yy","y","MMMM","MMM","M","H","hh","EEEE","EEE","ampmGetter","Z","timeZoneGetter","zone","paddedZone","ww","w","xlinkHref","propName","normalized","ngBooleanAttrWatchAction","htmlAttr","ngAttrAliasWatchAction","nullFormRenameControl","$$setPending","$$clearControlValidity","formDirectiveFactory","isNgForm","formElement","action","handleFormSubmission","returnValue","parentFormCtrl","alias","URL_REGEXP","EMAIL_REGEXP","NUMBER_REGEXP","DATE_REGEXP","DATETIMELOCAL_REGEXP","WEEK_REGEXP","MONTH_REGEXP","TIME_REGEXP","DEFAULT_REGEXP","$ngModelMinErr","inputType","textInputType","weekParser","isoWeek","existingDate","week","minutes","hours","seconds","milliseconds","addDays","numberInputType","urlInputType","ctrl.$validators.url","emailInputType","email","ctrl.$validators.email","radioInputType","checked","checkboxInputType","trueValue","ngTrueValue","falseValue","ngFalseValue","ctrl.$isEmpty","ctrls","NgModelController","$asyncValidators","$viewChangeListeners","$untouched","$touched","parsedNgModel","pendingDebounce","ngModelGet","modelValue","getterSetter","ngModelSet","$$setOptions","this.$$setOptions","this.$isEmpty","currentValidationRunId","UNTOUCHED_CLASS","this.$setPristine","this.$setUntouched","TOUCHED_CLASS","$setTouched","this.$setTouched","this.$rollbackViewValue","$$lastCommittedViewValue","this.$validate","$$parseAndValidate","$$runValidators","this.$$runValidators","parseValid","viewValue","doneCallback","processSyncValidators","syncValidatorsValid","validator","processAsyncValidators","validatorPromises","allValid","validationDone","localValidationRunId","processParseErrors","errorKey","this.$commitViewValue","this.$$parseAndValidate","parserValid","prevModelValue","allowInvalid","$$writeModelToScope","this.$$writeModelToScope","this.$setViewValue","updateOnDefault","$$debounceViewValueCommit","this.$$debounceViewValueCommit","debounceDelay","debounce","ngModelWatch","formatters","modelCtrl","formCtrl","updateOn","ctrl.$validators.required","patternExp","ctrl.$validators.pattern","ctrl.$validators.maxlength","ctrl.$validators.minlength","trimValues","CONSTANT_VALUE_REGEXP","tplAttr","ngValueConstantLink","ngValueLink","valueWatchAction","that","$compile","ngBindCompile","templateElement","ngBindLink","ngBindWatchAction","ngBindTemplateCompile","ngBindTemplateLink","ngBindHtmlCompile","tElement","ngBindHtmlGetter","ngBindHtmlWatch","getStringValue","ngBindHtmlLink","ngBindHtmlWatchAction","getTrustedHtml","forceAsyncEvents","ngEventHandler","$event","previousElements","ngIfWatchAction","newScope","srcExp","onloadExp","onload","autoScrollExp","autoscroll","previousElement","currentElement","cleanupLastIncludeContent","parseAsResourceUrl","ngIncludeWatchAction","afterAnimation","thisChangeId","namespaceAdaptedClone","BRACE","numberExp","whenExp","whens","whensExpFns","isWhen","attributeName","ngPluralizeWatch","ngPluralizeWatchAction","ngRepeatMinErr","updateScope","valueIdentifier","keyIdentifier","arrayLength","$first","$last","$middle","$odd","$even","ngRepeatCompile","ngRepeatEndComment","lhs","rhs","aliasAs","trackByExp","trackByExpGetter","trackByIdExpFn","trackByIdArrayFn","trackByIdObjFn","hashFnLocals","ngRepeatLink","lastBlockMap","ngRepeatAction","collection","previousNode","nextNode","nextBlockMap","collectionLength","trackById","collectionKeys","nextBlockOrder","trackByIdFn","itemKey","blockKey","ngRepeatTransclude","ngShowWatchAction","ngHideWatchAction","ngStyleWatchAction","newStyles","oldStyles","ngSwitchController","cases","selectedTranscludes","selectedElements","previousLeaveAnimations","selectedScopes","spliceFactory","ngSwitchWatchAction","selectedTransclude","caseElement","selectedScope","anchor","ngOptionsMinErr","NG_OPTIONS_REGEXP","nullModelCtrl","optionsMap","ngModelCtrl","unknownOption","databound","init","self.init","ngModelCtrl_","nullOption_","unknownOption_","addOption","self.addOption","removeOption","self.removeOption","hasOption","renderUnknownOption","self.renderUnknownOption","unknownVal","self.hasOption","setupAsSingle","selectElement","selectCtrl","ngModelCtrl.$render","emptyOption","setupAsMultiple","lastView","selectMultipleWatch","setupAsOptions","scheduleRendering","renderScheduled","render","optionGroups","optionGroupNames","optionGroupName","optionGroup","existingParent","existingOptions","existingOption","valuesFn","keyName","groupIndex","selectedSet","trackFn","trackIndex","valueName","lastElement","groupByFn","modelCast","label","displayFn","nullOption","groupLength","optionGroupsCache","optGroupTemplate","optionTemplate","optionsExp","track","optionElement","toDisplay","ngModelCtrl.$isEmpty","nullSelectCtrl","selectCtrlName","interpolateWatchAction","$$csp"] +"names":["window","document","undefined","minErr","isArrayLike","obj","isWindow","length","nodeType","NODE_TYPE_ELEMENT","isString","isArray","forEach","iterator","context","key","isFunction","hasOwnProperty","call","isPrimitive","sortedKeys","keys","push","sort","forEachSorted","i","reverseParams","iteratorFn","value","nextUid","uid","setHashKey","h","$$hashKey","extend","dst","ii","arguments","Object","j","jj","int","str","parseInt","inherit","parent","extra","prototype","noop","identity","$","valueFn","isUndefined","isDefined","isObject","isNumber","isDate","toString","isRegExp","isScope","$evalAsync","$watch","isBoolean","isElement","node","nodeName","prop","attr","find","makeMap","items","split","nodeName_","element","lowercase","arrayRemove","array","index","indexOf","splice","copy","source","destination","stackSource","stackDest","ngMinErr","result","Date","getTime","RegExp","match","lastIndex","emptyObject","create","getPrototypeOf","shallowCopy","src","charAt","equals","o1","o2","t1","t2","keySet","concat","array1","array2","slice","bind","self","fn","curryArgs","startIndex","apply","toJsonReplacer","val","toJson","pretty","JSON","stringify","fromJson","json","parse","startingTag","jqLite","clone","empty","e","elemHtml","append","html","NODE_TYPE_TEXT","replace","tryDecodeURIComponent","decodeURIComponent","parseKeyValue","keyValue","key_value","toKeyValue","parts","arrayValue","encodeUriQuery","join","encodeUriSegment","pctEncodeSpaces","encodeURIComponent","getNgAttribute","ngAttr","ngAttrPrefixes","angularInit","bootstrap","appElement","module","config","prefix","name","hasAttribute","getAttribute","candidate","querySelector","strictDi","modules","defaultConfig","doBootstrap","injector","tag","unshift","$provide","debugInfoEnabled","$compileProvider","createInjector","invoke","bootstrapApply","scope","compile","$apply","data","NG_ENABLE_DEBUG_INFO","NG_DEFER_BOOTSTRAP","test","angular","resumeBootstrap","angular.resumeBootstrap","extraModules","reloadWithDebugInfo","location","reload","getTestability","rootElement","get","snake_case","separator","SNAKE_CASE_REGEXP","letter","pos","toLowerCase","bindJQuery","originalCleanData","bindJQueryFired","jQuery","on","JQLitePrototype","isolateScope","controller","inheritedData","cleanData","jQuery.cleanData","elems","events","skipDestroyOnNextJQueryCleanData","elem","_data","$destroy","triggerHandler","JQLite","assertArg","arg","reason","assertArgFn","acceptArrayAnnotation","constructor","assertNotHasOwnProperty","getter","path","bindFnToScope","lastInstance","len","getBlockNodes","nodes","endNode","blockNodes","nextSibling","setupModuleLoader","ensure","factory","$injectorMinErr","$$minErr","requires","configFn","invokeLater","provider","method","insertMethod","queue","invokeQueue","moduleInstance","configBlocks","runBlocks","_invokeQueue","_configBlocks","_runBlocks","service","constant","animation","filter","directive","run","block","publishExternalAPI","version","uppercase","counter","csp","angularModule","$LocaleProvider","ngModule","$$sanitizeUri","$$SanitizeUriProvider","$CompileProvider","a","htmlAnchorDirective","input","inputDirective","textarea","form","formDirective","script","scriptDirective","select","selectDirective","style","styleDirective","option","optionDirective","ngBind","ngBindDirective","ngBindHtml","ngBindHtmlDirective","ngBindTemplate","ngBindTemplateDirective","ngClass","ngClassDirective","ngClassEven","ngClassEvenDirective","ngClassOdd","ngClassOddDirective","ngCloak","ngCloakDirective","ngController","ngControllerDirective","ngForm","ngFormDirective","ngHide","ngHideDirective","ngIf","ngIfDirective","ngInclude","ngIncludeDirective","ngInit","ngInitDirective","ngNonBindable","ngNonBindableDirective","ngPluralize","ngPluralizeDirective","ngRepeat","ngRepeatDirective","ngShow","ngShowDirective","ngStyle","ngStyleDirective","ngSwitch","ngSwitchDirective","ngSwitchWhen","ngSwitchWhenDirective","ngSwitchDefault","ngSwitchDefaultDirective","ngOptions","ngOptionsDirective","ngTransclude","ngTranscludeDirective","ngModel","ngModelDirective","ngList","ngListDirective","ngChange","ngChangeDirective","pattern","patternDirective","ngPattern","required","requiredDirective","ngRequired","minlength","minlengthDirective","ngMinlength","maxlength","maxlengthDirective","ngMaxlength","ngValue","ngValueDirective","ngModelOptions","ngModelOptionsDirective","ngIncludeFillContentDirective","ngAttributeAliasDirectives","ngEventDirectives","$anchorScroll","$AnchorScrollProvider","$animate","$AnimateProvider","$browser","$BrowserProvider","$cacheFactory","$CacheFactoryProvider","$controller","$ControllerProvider","$document","$DocumentProvider","$exceptionHandler","$ExceptionHandlerProvider","$filter","$FilterProvider","$interpolate","$InterpolateProvider","$interval","$IntervalProvider","$http","$HttpProvider","$httpBackend","$HttpBackendProvider","$location","$LocationProvider","$log","$LogProvider","$parse","$ParseProvider","$rootScope","$RootScopeProvider","$q","$QProvider","$$q","$$QProvider","$sce","$SceProvider","$sceDelegate","$SceDelegateProvider","$sniffer","$SnifferProvider","$templateCache","$TemplateCacheProvider","$templateRequest","$TemplateRequestProvider","$$testability","$$TestabilityProvider","$timeout","$TimeoutProvider","$window","$WindowProvider","$$rAF","$$RAFProvider","$$asyncCallback","$$AsyncCallbackProvider","camelCase","SPECIAL_CHARS_REGEXP","_","offset","toUpperCase","MOZ_HACK_REGEXP","jqLiteAcceptsData","NODE_TYPE_DOCUMENT","jqLiteBuildFragment","tmp","fragment","createDocumentFragment","HTML_REGEXP","appendChild","createElement","TAG_NAME_REGEXP","exec","wrap","wrapMap","_default","innerHTML","XHTML_TAG_REGEXP","lastChild","childNodes","firstChild","textContent","createTextNode","argIsString","trim","jqLiteMinErr","parsed","SINGLE_TAG_REGEXP","jqLiteAddNodes","jqLiteClone","cloneNode","jqLiteDealoc","onlyDescendants","jqLiteRemoveData","querySelectorAll","descendants","l","jqLiteOff","type","unsupported","expandoStore","jqLiteExpandoStore","handle","removeEventListener","expandoId","ng339","jqCache","createIfNecessary","jqId","jqLiteData","isSimpleSetter","isSimpleGetter","massGetter","jqLiteHasClass","selector","jqLiteRemoveClass","cssClasses","setAttribute","cssClass","jqLiteAddClass","existingClasses","root","elements","jqLiteController","jqLiteInheritedData","documentElement","names","parentNode","NODE_TYPE_DOCUMENT_FRAGMENT","host","jqLiteEmpty","removeChild","jqLiteRemove","keepData","getBooleanAttrName","booleanAttr","BOOLEAN_ATTR","BOOLEAN_ELEMENTS","getAliasedAttrName","ALIASED_ATTR","createEventHandler","eventHandler","event","isDefaultPrevented","event.isDefaultPrevented","defaultPrevented","eventFns","eventFnsLength","immediatePropagationStopped","originalStopImmediatePropagation","stopImmediatePropagation","event.stopImmediatePropagation","stopPropagation","isImmediatePropagationStopped","event.isImmediatePropagationStopped","hashKey","nextUidFn","objType","HashMap","isolatedUid","this.nextUid","put","anonFn","args","fnText","STRIP_COMMENTS","FN_ARGS","annotate","$inject","argDecl","FN_ARG_SPLIT","FN_ARG","all","underscore","last","modulesToLoad","supportObject","delegate","provider_","providerInjector","instantiate","$get","providerCache","providerSuffix","enforceReturnValue","enforcedReturnValue","instanceInjector","factoryFn","enforce","loadModules","moduleFn","runInvokeQueue","invokeArgs","loadedModules","message","stack","createInternalInjector","cache","getService","serviceName","INSTANTIATING","err","shift","locals","Type","Constructor","instance","returnedValue","has","$injector","instanceCache","decorator","decorFn","origProvider","orig$get","origProvider.$get","origInstance","$delegate","servicename","autoScrollingEnabled","disableAutoScrolling","this.disableAutoScrolling","getFirstAnchor","list","scroll","hash","elm","getElementById","scrollIntoView","getElementsByName","scrollTo","autoScrollWatch","autoScrollWatchAction","newVal","oldVal","supported","Browser","completeOutstandingRequest","outstandingRequestCount","outstandingRequestCallbacks","pop","error","startPoller","interval","setTimeout","check","pollFns","pollFn","pollTimeout","fireUrlChange","lastBrowserUrl","url","lastHistoryState","history","state","urlChangeListeners","listener","rawDocument","clearTimeout","pendingDeferIds","isMock","$$completeOutstandingRequest","$$incOutstandingRequestCount","self.$$incOutstandingRequestCount","notifyWhenNoOutstandingRequests","self.notifyWhenNoOutstandingRequests","callback","addPollFn","self.addPollFn","href","baseElement","reloadLocation","self.url","sameBase","stripHash","self.state","urlChangeInit","onUrlChange","self.onUrlChange","$$checkUrlChange","baseHref","self.baseHref","lastCookies","lastCookieString","cookiePath","cookies","self.cookies","cookieLength","cookie","warn","cookieArray","substring","defer","self.defer","delay","timeoutId","cancel","self.defer.cancel","deferId","this.$get","cacheFactory","cacheId","options","refresh","entry","freshEnd","staleEnd","n","link","p","nextEntry","prevEntry","caches","size","stats","id","capacity","Number","MAX_VALUE","lruHash","lruEntry","remove","removeAll","destroy","info","cacheFactory.info","cacheFactory.get","$$sanitizeUriProvider","parseIsolateBindings","directiveName","LOCAL_REGEXP","bindings","definition","scopeName","$compileMinErr","attrName","mode","optional","hasDirectives","COMMENT_DIRECTIVE_REGEXP","CLASS_DIRECTIVE_REGEXP","ALL_OR_NOTHING_ATTRS","REQUIRE_PREFIX_REGEXP","EVENT_HANDLER_ATTR_REGEXP","this.directive","registerDirective","directiveFactory","Suffix","directives","priority","require","restrict","$$isolateBindings","aHrefSanitizationWhitelist","this.aHrefSanitizationWhitelist","regexp","imgSrcSanitizationWhitelist","this.imgSrcSanitizationWhitelist","this.debugInfoEnabled","enabled","safeAddClass","$element","className","addClass","$compileNodes","transcludeFn","maxPriority","ignoreDirective","previousCompileContext","nodeValue","compositeLinkFn","compileNodes","$$addScopeClass","namespace","publicLinkFn","cloneConnectFn","transcludeControllers","parentBoundTranscludeFn","futureParentElement","$linkNode","wrapTemplate","controllerName","$$addScopeInfo","nodeList","$rootElement","childLinkFn","childScope","childBoundTranscludeFn","stableNodeList","nodeLinkFnFound","Array","linkFns","idx","nodeLinkFn","$new","transcludeOnThisElement","createBoundTranscludeFn","transclude","elementTranscludeOnThisElement","templateOnThisElement","attrs","linkFnFound","Attributes","collectDirectives","applyDirectivesToNode","$$element","terminal","previousBoundTranscludeFn","elementTransclusion","boundTranscludeFn","transcludedScope","cloneFn","controllers","containingScope","$$transcluded","attrsMap","$attr","addDirective","directiveNormalize","nName","isNgAttr","nAttrs","attributes","attrStartName","attrEndName","ngAttrName","NG_ATTR_BINDING","substr","directiveNName","multiElement","addAttrInterpolateDirective","addTextInterpolateDirective","NODE_TYPE_COMMENT","byPriority","groupScan","attrStart","attrEnd","depth","groupElementsLinkFnWrapper","linkFn","compileNode","templateAttrs","jqCollection","originalReplaceDirective","preLinkFns","postLinkFns","addLinkFns","pre","post","newIsolateScopeDirective","$$isolateScope","cloneAndAnnotateFn","getControllers","elementControllers","retrievalMethod","$searchElement","linkNode","controllersBoundTransclude","cloneAttachFn","hasElementTranscludeDirective","scopeToChild","controllerDirectives","$scope","$attrs","$transclude","controllerInstance","controllerAs","templateDirective","$$originalDirective","isolateScopeController","isolateBindingContext","identifier","bindToController","lastValue","parentGet","parentSet","compare","$observe","$$observers","$$scope","literal","b","assign","parentValueWatch","parentValue","$stateful","unwatch","$on","invokeLinkFn","template","templateUrl","terminalPriority","newScopeDirective","nonTlbTranscludeDirective","hasTranscludeDirective","hasTemplate","$compileNode","$template","childTranscludeFn","$$start","$$end","directiveValue","assertNoDuplicate","$$tlb","createComment","replaceWith","replaceDirective","contents","denormalizeTemplate","removeComments","templateNamespace","newTemplateAttrs","templateDirectives","unprocessedDirectives","markDirectivesAsIsolate","mergeTemplateAttributes","compileTemplateUrl","Math","max","tDirectives","startAttrName","endAttrName","srcAttr","dstAttr","$set","tAttrs","linkQueue","afterTemplateNodeLinkFn","afterTemplateChildLinkFn","beforeTemplateCompileNode","origAsyncDirective","derivedSyncDirective","getTrustedResourceUrl","then","content","tempTemplateAttrs","beforeTemplateLinkNode","linkRootElement","$$destroyed","oldClasses","delayedNodeLinkFn","ignoreChildLinkFn","diff","what","previousDirective","text","interpolateFn","textInterpolateCompileFn","templateNode","templateNodeParent","hasCompileParent","$$addBindingClass","textInterpolateLinkFn","$$addBindingInfo","expressions","interpolateFnWatchAction","wrapper","getTrustedContext","attrNormalizedName","HTML","RESOURCE_URL","allOrNothing","attrInterpolatePreLinkFn","$$inter","newValue","oldValue","$updateClass","elementsToRemove","newNode","firstElementToRemove","removeCount","j2","replaceChild","expando","k","kk","annotation","attributesToCopy","$normalize","$addClass","classVal","$removeClass","removeClass","newClasses","toAdd","tokenDifference","toRemove","writeAttr","booleanKey","aliasedKey","observer","trimmedSrcset","srcPattern","rawUris","nbrUrisWith2parts","floor","innerIdx","lastTuple","removeAttr","listeners","startSymbol","endSymbol","binding","isolated","noTemplate","dataName","PREFIX_REGEXP","str1","str2","values","tokens1","tokens2","token","jqNodes","globals","CNTRL_REG","register","this.register","allowGlobals","this.allowGlobals","addIdentifier","expression","later","ident","exception","cause","parseHeaders","headers","line","headersGetter","headersObj","transformData","fns","JSON_START","JSON_END","PROTECTION_PREFIX","CONTENT_TYPE_APPLICATION_JSON","defaults","transformResponse","defaultHttpResponseTransform","contentType","APPLICATION_JSON","transformRequest","d","common","patch","xsrfCookieName","xsrfHeaderName","useApplyAsync","this.useApplyAsync","interceptorFactories","interceptors","requestConfig","response","resp","status","reject","mergeHeaders","defHeaders","reqHeaders","defHeaderName","reqHeaderName","lowercaseDefHeaderName","execHeaders","headerContent","headerFn","header","chain","serverRequest","reqData","withCredentials","sendReq","promise","when","reversedInterceptors","interceptor","request","requestError","responseError","thenFn","rejectFn","success","promise.success","promise.error","done","headersString","statusText","resolveHttpPromise","resolvePromise","$applyAsync","$$phase","deferred","resolve","removePendingReq","pendingRequests","cachedResp","buildUrl","params","defaultCache","xsrfValue","urlIsSameOrigin","timeout","responseType","v","toISOString","interceptorFactory","createShortMethods","createShortMethodsWithData","createXhr","XMLHttpRequest","createHttpBackend","callbacks","$browserDefer","jsonpReq","callbackId","async","body","called","addEventListener","timeoutRequest","jsonpDone","xhr","abort","completeRequest","open","setRequestHeader","onload","xhr.onload","responseText","urlResolve","protocol","getAllResponseHeaders","onerror","onabort","send","this.startSymbol","this.endSymbol","escape","ch","mustHaveExpression","trustedContext","unescapeText","escapedStartRegexp","escapedEndRegexp","parseStringifyInterceptor","getTrusted","valueOf","newErr","$interpolateMinErr","endIndex","parseFns","textLength","expressionPositions","startSymbolLength","exp","endSymbolLength","compute","interpolationFn","$$watchDelegate","objectEquality","$watchGroup","interpolateFnWatcher","oldValues","currValue","$interpolate.startSymbol","$interpolate.endSymbol","count","invokeApply","setInterval","clearInterval","iteration","skipApply","$$intervalId","tick","notify","intervals","interval.cancel","NUMBER_FORMATS","DECIMAL_SEP","GROUP_SEP","PATTERNS","minInt","minFrac","maxFrac","posPre","posSuf","negPre","negSuf","gSize","lgSize","CURRENCY_SYM","DATETIME_FORMATS","MONTH","SHORTMONTH","DAY","SHORTDAY","AMPMS","medium","short","fullDate","longDate","mediumDate","shortDate","mediumTime","shortTime","pluralCat","num","encodePath","segments","parseAbsoluteUrl","absoluteUrl","locationObj","appBase","parsedUrl","$$protocol","$$host","hostname","$$port","port","DEFAULT_PORTS","parseAppUrl","relativeUrl","prefixed","$$path","pathname","$$search","search","$$hash","beginsWith","begin","whole","stripFile","lastIndexOf","LocationHtml5Url","basePrefix","$$html5","appBaseNoFile","$$parse","this.$$parse","pathUrl","$locationMinErr","$$compose","this.$$compose","$$url","$$absUrl","$$parseLinkUrl","this.$$parseLinkUrl","relHref","appUrl","prevAppUrl","rewrittenUrl","LocationHashbangUrl","hashPrefix","withoutBaseUrl","withoutHashUrl","windowsFilePathExp","firstPathSegmentMatch","LocationHashbangInHtml5Url","locationGetter","property","locationGetterSetter","preprocess","html5Mode","requireBase","rewriteLinks","this.hashPrefix","this.html5Mode","setBrowserUrlWithFallback","oldUrl","oldState","$$state","afterLocationChange","$broadcast","absUrl","LocationMode","initialUrl","IGNORE_URI_REGEXP","ctrlKey","metaKey","which","target","absHref","animVal","preventDefault","initializing","newUrl","newState","$digest","$locationWatch","currentReplace","$$replace","debug","debugEnabled","this.debugEnabled","flag","formatError","Error","sourceURL","consoleLog","console","logFn","log","hasApply","arg1","arg2","ensureSafeMemberName","fullExpression","$parseMinErr","ensureSafeObject","children","isConstant","setter","setValue","fullExp","propertyObj","cspSafeGetterFn","key0","key1","key2","key3","key4","cspSafeGetter","pathVal","getterFn","getterFnCache","pathKeys","pathKeysLength","code","evaledFnGetter","Function","sharedGetter","fn.assign","$parseOptions","wrapSharedExpression","wrapped","collectExpressionInputs","inputs","expressionInputDirtyCheck","oldValueOfValue","inputsWatchDelegate","parsedExpression","inputExpressions","$$inputs","lastResult","oldInputValue","expressionInputWatch","newInputValue","oldInputValueOfValues","expressionInputsWatch","changed","oneTimeWatchDelegate","oneTimeWatch","oneTimeListener","old","$$postDigest","oneTimeLiteralWatchDelegate","isAllDefined","allDefined","constantWatchDelegate","constantWatch","constantListener","addInterceptor","interceptorFn","oneTime","cacheKey","lexer","Lexer","parser","Parser","qFactory","nextTick","exceptionHandler","callOnce","resolveFn","Promise","simpleBind","scheduleProcessQueue","processScheduled","pending","Deferred","$qMinErr","TypeError","onFulfilled","onRejected","progressBack","catch","finally","handleCallback","$$reject","$$resolve","progress","makePromise","resolved","isResolved","callbackOutput","errback","$Q","Q","resolver","promises","results","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","cancelAnimationFrame","webkitCancelAnimationFrame","mozCancelAnimationFrame","webkitCancelRequestAnimationFrame","rafSupported","raf","timer","TTL","$rootScopeMinErr","lastDirtyWatch","applyAsyncId","digestTtl","this.digestTtl","Scope","$id","$parent","$$watchers","$$nextSibling","$$prevSibling","$$childHead","$$childTail","$root","$$listeners","$$listenerCount","beginPhase","phase","decrementListenerCount","current","initWatchVal","flushApplyAsync","applyAsyncQueue","scheduleApplyAsync","isolate","destroyChild","child","$$ChildScope","this.$$ChildScope","watchExp","watcher","eq","deregisterWatch","watchExpressions","watchGroupAction","changeReactionScheduled","firstRun","newValues","deregisterFns","shouldCall","deregisterWatchGroup","expr","unwatchFn","watchGroupSubAction","$watchCollection","$watchCollectionInterceptor","_value","bothNaN","newItem","oldItem","internalArray","oldLength","changeDetected","newLength","internalObject","veryOldValue","trackVeryOldValue","changeDetector","initRun","$watchCollectionAction","watch","watchers","dirty","ttl","watchLog","logIdx","logMsg","asyncTask","asyncQueue","$eval","isNaN","next","postDigestQueue","eventName","this.$watchGroup","$applyAsyncExpression","namedListeners","$emit","targetScope","listenerArgs","currentScope","$$asyncQueue","$$postDigestQueue","$$applyAsyncQueue","sanitizeUri","uri","isImage","regex","normalizedVal","adjustMatcher","matcher","$sceMinErr","adjustMatchers","matchers","adjustedMatchers","SCE_CONTEXTS","resourceUrlWhitelist","resourceUrlBlacklist","this.resourceUrlWhitelist","this.resourceUrlBlacklist","matchUrl","generateHolderType","Base","holderType","trustedValue","$$unwrapTrustedValue","this.$$unwrapTrustedValue","holderType.prototype.valueOf","holderType.prototype.toString","htmlSanitizer","trustedValueHolderBase","byType","CSS","URL","JS","trustAs","maybeTrusted","allowed","this.enabled","msie","msieDocumentMode","sce","isEnabled","sce.isEnabled","sce.getTrusted","parseAs","sce.parseAs","enumValue","lName","eventSupport","android","userAgent","navigator","boxee","documentMode","vendorPrefix","vendorRegex","bodyStyle","transitions","animations","webkitTransition","webkitAnimation","pushState","hasEvent","divElm","handleRequestFn","tpl","ignoreRequestError","handleError","totalPendingRequests","testability","testability.findBindings","opt_exactMatch","getElementsByClassName","matches","dataBinding","bindingName","testability.findModels","prefixes","attributeEquals","testability.getLocation","testability.setLocation","testability.whenStable","deferreds","$$timeoutId","timeout.cancel","base","urlParsingNode","requestUrl","originUrl","filters","suffix","currencyFilter","dateFilter","filterFilter","jsonFilter","limitToFilter","lowercaseFilter","numberFilter","orderByFilter","uppercaseFilter","comparator","comparatorType","predicates","predicates.check","objKey","filtered","$locale","formats","amount","currencySymbol","formatNumber","number","fractionSize","groupSep","decimalSep","isFinite","isNegative","abs","numStr","formatedText","hasExponent","toFixed","fractionLen","min","round","fraction","lgroup","group","padNumber","digits","neg","dateGetter","date","dateStrGetter","shortForm","getFirstThursdayOfYear","year","dayOfWeekOnFirst","getDay","weekGetter","firstThurs","getFullYear","thisThurs","getMonth","getDate","jsonStringToDate","string","R_ISO8601_STR","tzHour","tzMin","dateSetter","setUTCFullYear","setFullYear","timeSetter","setUTCHours","setHours","m","s","ms","parseFloat","format","timezone","NUMBER_STRING","DATE_FORMATS_SPLIT","setMinutes","getMinutes","getTimezoneOffset","DATE_FORMATS","object","limit","Infinity","out","sortPredicate","reverseOrder","reverseComparator","comp","descending","v1","v2","map","predicate","arrayCopy","ngDirective","FormController","controls","parentForm","$$parentForm","nullFormCtrl","$error","$$success","$pending","$name","$dirty","$pristine","$valid","$invalid","$submitted","$addControl","$rollbackViewValue","form.$rollbackViewValue","control","$commitViewValue","form.$commitViewValue","form.$addControl","$$renameControl","form.$$renameControl","newName","oldName","$removeControl","form.$removeControl","$setValidity","addSetValidityMethod","ctrl","set","unset","$setDirty","form.$setDirty","PRISTINE_CLASS","DIRTY_CLASS","$setPristine","form.$setPristine","setClass","SUBMITTED_CLASS","$setUntouched","form.$setUntouched","$setSubmitted","form.$setSubmitted","stringBasedInputType","$formatters","$isEmpty","baseInputType","VALIDITY_STATE_PROPERTY","placeholder","noevent","composing","ev","ngTrim","$viewValue","$$hasNativeValidators","$setViewValue","deferListener","keyCode","$render","ctrl.$render","$modelValue","createDateParser","mapping","iso","ISO_DATE_REGEXP","yyyy","MM","dd","HH","getHours","mm","ss","getSeconds","sss","getMilliseconds","part","NaN","createDateInputType","parseDate","dynamicDateInputType","parseObservedDateValue","badInputChecker","$options","previousDate","$$parserName","$parsers","parsedDate","$ngModelMinErr","timezoneOffset","ngMin","minVal","$validators","ctrl.$validators.min","$validate","ngMax","maxVal","ctrl.$validators.max","ctrl.$isEmpty","validity","badInput","typeMismatch","parseConstantExpr","fallback","parseFn","cachedToggleClass","switchValue","classCache","toggleValidationCss","validationErrorKey","isValid","VALID_CLASS","INVALID_CLASS","hasClass","setValidity","isObjectEmpty","PENDING_CLASS","combinedState","classDirective","arrayDifference","arrayClasses","classes","digestClassCounts","classCounts","classesToUpdate","ngClassWatchAction","$index","old$index","mod","REGEX_STRING_REGEXP","isActive_","active","full","major","minor","dot","codeName","JQLite._data","MOUSE_EVENT_MAP","mouseleave","mouseenter","optgroup","tbody","tfoot","colgroup","caption","thead","th","td","ready","trigger","fired","readyState","removeData","removeAttribute","css","lowercasedName","specified","getNamedItem","ret","getText","$dv","multiple","selected","nodeCount","jqLiteOn","types","related","relatedTarget","contains","off","one","onFn","replaceNode","insertBefore","contentDocument","prepend","wrapNode","detach","after","newElement","toggleClass","condition","classCondition","nextElementSibling","getElementsByTagName","extraParameters","dummyEvent","handlerArgs","eventFnsCopy","arg3","unbind","$$annotate","$animateMinErr","$$selectors","classNameFilter","this.classNameFilter","$$classNameFilter","runAnimationPostDigest","cancelFn","$$cancelFn","defer.promise.$$cancelFn","ngAnimatePostDigest","ngAnimateNotifyComplete","resolveElementClasses","hasClasses","cachedClassManipulation","op","asyncPromise","currentDefer","enter","leave","move","$$addClassImmediately","addClassImmediately","$$removeClassImmediately","removeClassImmediately","add","runSynchronously","createdCache","STORAGE_KEY","PATH_MATCH","locationPrototype","paramValue","Location","Location.prototype.state","CALL","APPLY","BIND","CONSTANTS","null","true","false","constantGetter","OPERATORS","+","-","*","/","%","^","===","!==","==","!=","<",">","<=",">=","&&","||","&","!","ESCAPE","lex","tokens","is","readString","peek","readNumber","isIdent","readIdent","isWhitespace","ch2","ch3","fn2","fn3","throwError","chars","isExpOperator","start","end","colStr","peekCh","lastDot","peekIndex","methodName","quote","rawString","hex","String","fromCharCode","rep","ZERO","statements","primary","expect","filterChain","consume","arrayDeclaration","functionCall","objectIndex","fieldAccess","msg","peekToken","e1","e2","e3","e4","t","unaryFn","right","$parseUnaryFn","binaryFn","left","isBranching","$parseBinaryFn","$parseStatements","inputFn","argsFn","$parseFilter","every","assignment","ternary","$parseAssignment","logicalOR","middle","$parseTernary","logicalAND","equality","relational","additive","multiplicative","unary","field","$parseFieldAccess","o","indexFn","$parseObjectIndex","fnGetter","contextGetter","expressionText","$parseFunctionCall","elementFns","elementFn","$parseArrayLiteral","valueFns","$parseObjectLiteral","yy","y","MMMM","MMM","M","H","hh","EEEE","EEE","ampmGetter","Z","timeZoneGetter","zone","paddedZone","ww","w","xlinkHref","propName","normalized","ngBooleanAttrWatchAction","htmlAttr","ngAttrAliasWatchAction","nullFormRenameControl","formDirectiveFactory","isNgForm","ngFormCompile","formElement","ngFormPreLink","handleFormSubmission","returnValue","parentFormCtrl","alias","URL_REGEXP","EMAIL_REGEXP","NUMBER_REGEXP","DATE_REGEXP","DATETIMELOCAL_REGEXP","WEEK_REGEXP","MONTH_REGEXP","TIME_REGEXP","DEFAULT_REGEXP","inputType","textInputType","weekParser","isoWeek","existingDate","week","minutes","hours","seconds","milliseconds","addDays","numberInputType","urlInputType","ctrl.$validators.url","emailInputType","email","ctrl.$validators.email","radioInputType","checked","checkboxInputType","trueValue","ngTrueValue","falseValue","ngFalseValue","ctrls","NgModelController","$asyncValidators","$viewChangeListeners","$untouched","$touched","parsedNgModel","pendingDebounce","ngModelGet","modelValue","getterSetter","ngModelSet","$$setOptions","this.$$setOptions","this.$isEmpty","currentValidationRunId","this.$setPristine","this.$setUntouched","UNTOUCHED_CLASS","TOUCHED_CLASS","$setTouched","this.$setTouched","this.$rollbackViewValue","$$lastCommittedViewValue","this.$validate","$$parseAndValidate","$$runValidators","this.$$runValidators","parseValid","viewValue","doneCallback","processSyncValidators","syncValidatorsValid","validator","processAsyncValidators","validatorPromises","allValid","validationDone","localValidationRunId","processParseErrors","errorKey","this.$commitViewValue","this.$$parseAndValidate","parserValid","prevModelValue","allowInvalid","$$writeModelToScope","this.$$writeModelToScope","this.$setViewValue","updateOnDefault","$$debounceViewValueCommit","this.$$debounceViewValueCommit","debounceDelay","debounce","ngModelWatch","formatters","ngModelCompile","ngModelPreLink","modelCtrl","formCtrl","ngModelPostLink","updateOn","ctrl.$validators.required","patternExp","ctrl.$validators.pattern","ctrl.$validators.maxlength","ctrl.$validators.minlength","trimValues","CONSTANT_VALUE_REGEXP","tplAttr","ngValueConstantLink","ngValueLink","valueWatchAction","that","$compile","ngBindCompile","templateElement","ngBindLink","ngBindWatchAction","ngBindTemplateCompile","ngBindTemplateLink","ngBindHtmlCompile","tElement","ngBindHtmlGetter","ngBindHtmlWatch","getStringValue","ngBindHtmlLink","ngBindHtmlWatchAction","getTrustedHtml","forceAsyncEvents","ngEventHandler","$event","previousElements","ngIfWatchAction","newScope","srcExp","onloadExp","autoScrollExp","autoscroll","changeCounter","previousElement","currentElement","cleanupLastIncludeContent","parseAsResourceUrl","ngIncludeWatchAction","afterAnimation","thisChangeId","namespaceAdaptedClone","BRACE","numberExp","whenExp","whens","whensExpFns","isWhen","attributeName","ngPluralizeWatch","ngPluralizeWatchAction","ngRepeatMinErr","updateScope","valueIdentifier","keyIdentifier","arrayLength","$first","$last","$middle","$odd","$even","ngRepeatCompile","ngRepeatEndComment","lhs","rhs","aliasAs","trackByExp","trackByExpGetter","trackByIdExpFn","trackByIdArrayFn","trackByIdObjFn","hashFnLocals","ngRepeatLink","lastBlockMap","ngRepeatAction","collection","previousNode","nextNode","nextBlockMap","collectionLength","trackById","collectionKeys","nextBlockOrder","trackByIdFn","itemKey","blockKey","ngRepeatTransclude","ngShowWatchAction","NG_HIDE_CLASS","NG_HIDE_IN_PROGRESS_CLASS","ngHideWatchAction","ngStyleWatchAction","newStyles","oldStyles","ngSwitchController","cases","selectedTranscludes","selectedElements","previousLeaveAnimations","selectedScopes","spliceFactory","ngSwitchWatchAction","selectedTransclude","caseElement","selectedScope","anchor","ngOptionsMinErr","NG_OPTIONS_REGEXP","nullModelCtrl","optionsMap","ngModelCtrl","unknownOption","databound","init","self.init","ngModelCtrl_","nullOption_","unknownOption_","addOption","self.addOption","removeOption","self.removeOption","hasOption","renderUnknownOption","self.renderUnknownOption","unknownVal","self.hasOption","setupAsSingle","selectElement","selectCtrl","ngModelCtrl.$render","emptyOption","setupAsMultiple","lastView","selectMultipleWatch","setupAsOptions","callExpression","exprFn","valueName","keyName","createIsSelectedFn","selectedSet","selectAs","trackFn","trackIndex","selectAsFn","isSelected","compareValueFn","scheduleRendering","renderScheduled","render","optionGroups","optionGroupNames","optionGroupName","optionGroup","existingParent","existingOptions","existingOption","valuesFn","groupIndex","anySelected","groupByFn","label","displayFn","nullOption","groupLength","optionGroupsCache","optGroupTemplate","lastElement","optionTemplate","optionsExp","track","selectionChanged","selectedKey","viewValueFn","getLabels","toDisplay","ngModelCtrl.$isEmpty","nullSelectCtrl","selectCtrlName","interpolateWatchAction","$$csp"] } diff --git a/public/app/bower_components/angular/bower.json b/public/app/bower_components/angular/bower.json index 640de08a..e32dc94f 100644 --- a/public/app/bower_components/angular/bower.json +++ b/public/app/bower_components/angular/bower.json @@ -1,6 +1,6 @@ { "name": "angular", - "version": "1.3.0-rc.3", + "version": "1.3.0-rc.5", "main": "./angular.js", "dependencies": { } diff --git a/public/app/bower_components/d3/.bower.json b/public/app/bower_components/d3/.bower.json index c06fdba2..3cb9866d 100644 --- a/public/app/bower_components/d3/.bower.json +++ b/public/app/bower_components/d3/.bower.json @@ -1,6 +1,6 @@ { "name": "d3", - "version": "3.4.11", + "version": "3.4.12", "main": "d3.js", "scripts": [ "d3.js" @@ -22,11 +22,11 @@ "test" ], "homepage": "https://github.com/mbostock/d3", - "_release": "3.4.11", + "_release": "3.4.12", "_resolution": { "type": "version", - "tag": "v3.4.11", - "commit": "9dbb2266543a6c998c3552074240efb36e4c7cab" + "tag": "v3.4.12", + "commit": "269c727f88710ea86075b3ff6d396331cf8ede14" }, "_source": "git://github.com/mbostock/d3.git", "_target": "~3.4.1", diff --git a/public/app/bower_components/d3/bower.json b/public/app/bower_components/d3/bower.json index 9f5968d2..8d11983f 100644 --- a/public/app/bower_components/d3/bower.json +++ b/public/app/bower_components/d3/bower.json @@ -1,6 +1,6 @@ { "name": "d3", - "version": "3.4.11", + "version": "3.4.12", "main": "d3.js", "scripts": [ "d3.js" diff --git a/public/app/bower_components/d3/d3.js b/public/app/bower_components/d3/d3.js index 82287776..b9699277 100644 --- a/public/app/bower_components/d3/d3.js +++ b/public/app/bower_components/d3/d3.js @@ -1,6 +1,6 @@ !function() { var d3 = { - version: "3.4.11" + version: "3.4.12" }; if (!Date.now) Date.now = function() { return +new Date(); @@ -272,7 +272,7 @@ size: d3_map_size, empty: d3_map_empty, forEach: function(f) { - for (var key in this) if (key.charCodeAt(0) === d3_map_prefixCode) f.call(this, key.substring(1), this[key]); + for (var key in this) if (key.charCodeAt(0) === d3_map_prefixCode) f.call(this, key.slice(1), this[key]); } }); var d3_map_prefix = "\x00", d3_map_prefixCode = d3_map_prefix.charCodeAt(0); @@ -382,7 +382,7 @@ size: d3_map_size, empty: d3_map_empty, forEach: function(f) { - for (var value in this) if (value.charCodeAt(0) === d3_map_prefixCode) f.call(this, value.substring(1)); + for (var value in this) if (value.charCodeAt(0) === d3_map_prefixCode) f.call(this, value.slice(1)); } }); d3.behavior = {}; @@ -399,7 +399,7 @@ } function d3_vendorSymbol(object, name) { if (name in object) return name; - name = name.charAt(0).toUpperCase() + name.substring(1); + name = name.charAt(0).toUpperCase() + name.slice(1); for (var i = 0, n = d3_vendorPrefixes.length; i < n; ++i) { var prefixName = d3_vendorPrefixes[i] + name; if (prefixName in object) return prefixName; @@ -416,8 +416,8 @@ d3_dispatch.prototype.on = function(type, listener) { var i = type.indexOf("."), name = ""; if (i >= 0) { - name = type.substring(i + 1); - type = type.substring(0, i); + name = type.slice(i + 1); + type = type.slice(0, i); } if (type) return arguments.length < 2 ? this[type].on(name) : this[type].on(name, listener); if (arguments.length === 2) { @@ -558,8 +558,8 @@ qualify: function(name) { var i = name.indexOf(":"), prefix = name; if (i >= 0) { - prefix = name.substring(0, i); - name = name.substring(i + 1); + prefix = name.slice(0, i); + name = name.slice(i + 1); } return d3_nsPrefix.hasOwnProperty(prefix) ? { space: d3_nsPrefix[prefix], @@ -911,7 +911,7 @@ }; d3_selectionPrototype.size = function() { var n = 0; - this.each(function() { + d3_selection_each(this, function() { ++n; }); return n; @@ -1008,7 +1008,7 @@ }; function d3_selection_on(type, listener, capture) { var name = "__on" + type, i = type.indexOf("."), wrap = d3_selection_onListener; - if (i > 0) type = type.substring(0, i); + if (i > 0) type = type.slice(0, i); var filter = d3_selection_onFilters.get(type); if (filter) type = filter, wrap = d3_selection_onFilter; function onRemove() { @@ -1116,13 +1116,13 @@ var rect = container.getBoundingClientRect(); return [ e.clientX - rect.left - container.clientLeft, e.clientY - rect.top - container.clientTop ]; } - d3.touches = function(container, touches) { - if (arguments.length < 2) touches = d3_eventSource().touches; - return touches ? d3_array(touches).map(function(touch) { - var point = d3_mousePoint(container, touch); - point.identifier = touch.identifier; - return point; - }) : []; + d3.touch = function(container, touches, identifier) { + if (arguments.length < 3) identifier = touches, touches = d3_eventSource().changedTouches; + if (touches) for (var i = 0, n = touches.length, touch; i < n; ++i) { + if ((touch = touches[i]).identifier === identifier) { + return d3_mousePoint(container, touch); + } + } }; d3.behavior.drag = function() { var event = d3_eventDispatch(drag, "drag", "dragstart", "dragend"), origin = null, mousedown = dragstart(d3_noop, d3.mouse, d3_behavior_dragMouseSubject, "mousemove", "mouseup"), touchstart = dragstart(d3_behavior_dragTouchId, d3.touch, d3_behavior_dragTouchSubject, "touchmove", "touchend"); @@ -1182,6 +1182,14 @@ function d3_behavior_dragMouseSubject() { return d3_window; } + d3.touches = function(container, touches) { + if (arguments.length < 2) touches = d3_eventSource().touches; + return touches ? d3_array(touches).map(function(touch) { + var point = d3_mousePoint(container, touch); + point.identifier = touch.identifier; + return point; + }) : []; + }; var π = Math.PI, τ = 2 * π, halfπ = π / 2, ε = 1e-6, ε2 = ε * ε, d3_radians = π / 180, d3_degrees = 180 / π; function d3_sgn(x) { return x > 0 ? 1 : x < 0 ? -1 : 0; @@ -1377,10 +1385,11 @@ } } function touchstarted() { - var that = this, dispatch = event.of(that, arguments), locations0 = {}, distance0 = 0, scale0, zoomName = ".zoom-" + d3.event.changedTouches[0].identifier, touchmove = "touchmove" + zoomName, touchend = "touchend" + zoomName, targets = [], subject = d3.select(that).on(mousedown, null).on(touchstart, started), dragRestore = d3_event_dragSuppress(); + var that = this, dispatch = event.of(that, arguments), locations0 = {}, distance0 = 0, scale0, zoomName = ".zoom-" + d3.event.changedTouches[0].identifier, touchmove = "touchmove" + zoomName, touchend = "touchend" + zoomName, targets = [], subject = d3.select(that), dragRestore = d3_event_dragSuppress(); d3_selection_interrupt.call(that); started(); zoomstarted(dispatch); + subject.on(mousedown, null).on(touchstart, started); function relocate() { var touches = d3.touches(that); scale0 = view.k; @@ -1623,7 +1632,7 @@ } } if (color = d3_rgb_names.get(format)) return rgb(color.r, color.g, color.b); - if (format != null && format.charAt(0) === "#" && !isNaN(color = parseInt(format.substring(1), 16))) { + if (format != null && format.charAt(0) === "#" && !isNaN(color = parseInt(format.slice(1), 16))) { if (format.length === 4) { r = (color & 3840) >> 4; r = r >> 4 | r; @@ -1842,7 +1851,7 @@ }; function respond() { var status = request.status, result; - if (!status && request.responseText || status >= 200 && status < 300 || status === 304) { + if (!status && d3_xhrHasResponse(request) || status >= 200 && status < 300 || status === 304) { try { result = response.call(xhr, request); } catch (e) { @@ -1914,6 +1923,10 @@ callback(error == null ? request : null); } : callback; } + function d3_xhrHasResponse(request) { + var type = request.responseType; + return type && type !== "text" ? request.response : request.responseText; + } d3.dsv = function(delimiter, mimeType) { var reFormat = new RegExp('["' + delimiter + "\n]"), delimiterCode = delimiter.charCodeAt(0); function dsv(url, row, callback) { @@ -1966,7 +1979,7 @@ } else if (c === 10) { eol = true; } - return text.substring(j + 1, i).replace(/""/g, '"'); + return text.slice(j + 1, i).replace(/""/g, '"'); } while (I < N) { var c = text.charCodeAt(I++), k = 1; @@ -1974,9 +1987,9 @@ eol = true; if (text.charCodeAt(I) === 10) ++I, ++k; } else if (c !== delimiterCode) continue; - return text.substring(j, I - k); + return text.slice(j, I - k); } - return text.substring(j); + return text.slice(j); } while ((t = token()) !== EOF) { var a = []; @@ -2018,14 +2031,6 @@ }; d3.csv = d3.dsv(",", "text/csv"); d3.tsv = d3.dsv(" ", "text/tab-separated-values"); - d3.touch = function(container, touches, identifier) { - if (arguments.length < 3) identifier = touches, touches = d3_eventSource().changedTouches; - if (touches) for (var i = 0, n = touches.length, touch; i < n; ++i) { - if ((touch = touches[i]).identifier === identifier) { - return d3_mousePoint(container, touch); - } - } - }; var d3_timer_queueHead, d3_timer_queueTail, d3_timer_interval, d3_timer_timeout, d3_timer_active, d3_timer_frame = d3_window[d3_vendorSymbol(d3_window, "requestAnimationFrame")] || function(callback) { setTimeout(callback, 17); }; @@ -2117,7 +2122,7 @@ function d3_locale_numberFormat(locale) { var locale_decimal = locale.decimal, locale_thousands = locale.thousands, locale_grouping = locale.grouping, locale_currency = locale.currency, formatGroup = locale_grouping ? function(value) { var i = value.length, t = [], j = 0, g = locale_grouping[0]; - while (i > 0 && g > 0) { + while (g > 0 && i > 0) { t.push(value.substring(i -= g, i + g)); g = locale_grouping[j = (j + 1) % locale_grouping.length]; } @@ -2411,14 +2416,14 @@ var string = [], i = -1, j = 0, c, p, f; while (++i < n) { if (template.charCodeAt(i) === 37) { - string.push(template.substring(j, i)); + string.push(template.slice(j, i)); if ((p = d3_time_formatPads[c = template.charAt(++i)]) != null) c = template.charAt(++i); if (f = d3_time_formats[c]) c = f(date, p == null ? c === "e" ? " " : "0" : p); string.push(c); j = i + 1; } } - string.push(template.substring(j, i)); + string.push(template.slice(j, i)); return string.join(""); } format.parse = function(string) { @@ -2439,7 +2444,7 @@ date.setFullYear(d.y, 0, 1); date.setFullYear(d.y, 0, "W" in d ? (d.w + 6) % 7 + d.W * 7 - (date.getDay() + 5) % 7 : d.w + d.U * 7 - (date.getDay() + 6) % 7); } else date.setFullYear(d.y, d.m, d.d); - date.setHours(d.H + Math.floor(d.Z / 100), d.M + d.Z % 100, d.S, d.L); + date.setHours(d.H + (d.Z / 100 | 0), d.M + d.Z % 100, d.S, d.L); return localZ ? date._ : date; }; format.toString = function() { @@ -2585,22 +2590,22 @@ }; function d3_time_parseWeekdayAbbrev(date, string, i) { d3_time_dayAbbrevRe.lastIndex = 0; - var n = d3_time_dayAbbrevRe.exec(string.substring(i)); + var n = d3_time_dayAbbrevRe.exec(string.slice(i)); return n ? (date.w = d3_time_dayAbbrevLookup.get(n[0].toLowerCase()), i + n[0].length) : -1; } function d3_time_parseWeekday(date, string, i) { d3_time_dayRe.lastIndex = 0; - var n = d3_time_dayRe.exec(string.substring(i)); + var n = d3_time_dayRe.exec(string.slice(i)); return n ? (date.w = d3_time_dayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1; } function d3_time_parseMonthAbbrev(date, string, i) { d3_time_monthAbbrevRe.lastIndex = 0; - var n = d3_time_monthAbbrevRe.exec(string.substring(i)); + var n = d3_time_monthAbbrevRe.exec(string.slice(i)); return n ? (date.m = d3_time_monthAbbrevLookup.get(n[0].toLowerCase()), i + n[0].length) : -1; } function d3_time_parseMonth(date, string, i) { d3_time_monthRe.lastIndex = 0; - var n = d3_time_monthRe.exec(string.substring(i)); + var n = d3_time_monthRe.exec(string.slice(i)); return n ? (date.m = d3_time_monthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1; } function d3_time_parseLocaleFull(date, string, i) { @@ -2613,7 +2618,7 @@ return d3_time_parse(date, d3_time_formats.X.toString(), string, i); } function d3_time_parseAmPm(date, string, i) { - var n = d3_time_periodLookup.get(string.substring(i, i += 2).toLowerCase()); + var n = d3_time_periodLookup.get(string.slice(i, i += 2).toLowerCase()); return n == null ? -1 : (date.p = n, i); } return d3_time_format; @@ -2637,31 +2642,31 @@ } function d3_time_parseWeekdayNumber(date, string, i) { d3_time_numberRe.lastIndex = 0; - var n = d3_time_numberRe.exec(string.substring(i, i + 1)); + var n = d3_time_numberRe.exec(string.slice(i, i + 1)); return n ? (date.w = +n[0], i + n[0].length) : -1; } function d3_time_parseWeekNumberSunday(date, string, i) { d3_time_numberRe.lastIndex = 0; - var n = d3_time_numberRe.exec(string.substring(i)); + var n = d3_time_numberRe.exec(string.slice(i)); return n ? (date.U = +n[0], i + n[0].length) : -1; } function d3_time_parseWeekNumberMonday(date, string, i) { d3_time_numberRe.lastIndex = 0; - var n = d3_time_numberRe.exec(string.substring(i)); + var n = d3_time_numberRe.exec(string.slice(i)); return n ? (date.W = +n[0], i + n[0].length) : -1; } function d3_time_parseFullYear(date, string, i) { d3_time_numberRe.lastIndex = 0; - var n = d3_time_numberRe.exec(string.substring(i, i + 4)); + var n = d3_time_numberRe.exec(string.slice(i, i + 4)); return n ? (date.y = +n[0], i + n[0].length) : -1; } function d3_time_parseYear(date, string, i) { d3_time_numberRe.lastIndex = 0; - var n = d3_time_numberRe.exec(string.substring(i, i + 2)); + var n = d3_time_numberRe.exec(string.slice(i, i + 2)); return n ? (date.y = d3_time_expandYear(+n[0]), i + n[0].length) : -1; } function d3_time_parseZone(date, string, i) { - return /^[+-]\d{4}$/.test(string = string.substring(i, i + 5)) ? (date.Z = -string, + return /^[+-]\d{4}$/.test(string = string.slice(i, i + 5)) ? (date.Z = -string, i + 5) : -1; } function d3_time_expandYear(d) { @@ -2669,46 +2674,46 @@ } function d3_time_parseMonthNumber(date, string, i) { d3_time_numberRe.lastIndex = 0; - var n = d3_time_numberRe.exec(string.substring(i, i + 2)); + var n = d3_time_numberRe.exec(string.slice(i, i + 2)); return n ? (date.m = n[0] - 1, i + n[0].length) : -1; } function d3_time_parseDay(date, string, i) { d3_time_numberRe.lastIndex = 0; - var n = d3_time_numberRe.exec(string.substring(i, i + 2)); + var n = d3_time_numberRe.exec(string.slice(i, i + 2)); return n ? (date.d = +n[0], i + n[0].length) : -1; } function d3_time_parseDayOfYear(date, string, i) { d3_time_numberRe.lastIndex = 0; - var n = d3_time_numberRe.exec(string.substring(i, i + 3)); + var n = d3_time_numberRe.exec(string.slice(i, i + 3)); return n ? (date.j = +n[0], i + n[0].length) : -1; } function d3_time_parseHour24(date, string, i) { d3_time_numberRe.lastIndex = 0; - var n = d3_time_numberRe.exec(string.substring(i, i + 2)); + var n = d3_time_numberRe.exec(string.slice(i, i + 2)); return n ? (date.H = +n[0], i + n[0].length) : -1; } function d3_time_parseMinutes(date, string, i) { d3_time_numberRe.lastIndex = 0; - var n = d3_time_numberRe.exec(string.substring(i, i + 2)); + var n = d3_time_numberRe.exec(string.slice(i, i + 2)); return n ? (date.M = +n[0], i + n[0].length) : -1; } function d3_time_parseSeconds(date, string, i) { d3_time_numberRe.lastIndex = 0; - var n = d3_time_numberRe.exec(string.substring(i, i + 2)); + var n = d3_time_numberRe.exec(string.slice(i, i + 2)); return n ? (date.S = +n[0], i + n[0].length) : -1; } function d3_time_parseMilliseconds(date, string, i) { d3_time_numberRe.lastIndex = 0; - var n = d3_time_numberRe.exec(string.substring(i, i + 3)); + var n = d3_time_numberRe.exec(string.slice(i, i + 3)); return n ? (date.L = +n[0], i + n[0].length) : -1; } function d3_time_zone(d) { - var z = d.getTimezoneOffset(), zs = z > 0 ? "-" : "+", zh = ~~(abs(z) / 60), zm = abs(z) % 60; + var z = d.getTimezoneOffset(), zs = z > 0 ? "-" : "+", zh = abs(z) / 60 | 0, zm = abs(z) % 60; return zs + d3_time_formatPad(zh, "0", 2) + d3_time_formatPad(zm, "0", 2); } function d3_time_parseLiteralPercent(date, string, i) { d3_time_percentRe.lastIndex = 0; - var n = d3_time_percentRe.exec(string.substring(i, i + 1)); + var n = d3_time_percentRe.exec(string.slice(i, i + 1)); return n ? i + n[0].length : -1; } function d3_time_formatMulti(formats) { @@ -3316,35 +3321,6 @@ function d3_geo_clipSort(a, b) { return ((a = a.x)[0] < 0 ? a[1] - halfπ - ε : halfπ - a[1]) - ((b = b.x)[0] < 0 ? b[1] - halfπ - ε : halfπ - b[1]); } - function d3_geo_pointInPolygon(point, polygon) { - var meridian = point[0], parallel = point[1], meridianNormal = [ Math.sin(meridian), -Math.cos(meridian), 0 ], polarAngle = 0, winding = 0; - d3_geo_areaRingSum.reset(); - for (var i = 0, n = polygon.length; i < n; ++i) { - var ring = polygon[i], m = ring.length; - if (!m) continue; - var point0 = ring[0], λ0 = point0[0], φ0 = point0[1] / 2 + π / 4, sinφ0 = Math.sin(φ0), cosφ0 = Math.cos(φ0), j = 1; - while (true) { - if (j === m) j = 0; - point = ring[j]; - var λ = point[0], φ = point[1] / 2 + π / 4, sinφ = Math.sin(φ), cosφ = Math.cos(φ), dλ = λ - λ0, sdλ = dλ >= 0 ? 1 : -1, adλ = sdλ * dλ, antimeridian = adλ > π, k = sinφ0 * sinφ; - d3_geo_areaRingSum.add(Math.atan2(k * sdλ * Math.sin(adλ), cosφ0 * cosφ + k * Math.cos(adλ))); - polarAngle += antimeridian ? dλ + sdλ * τ : dλ; - if (antimeridian ^ λ0 >= meridian ^ λ >= meridian) { - var arc = d3_geo_cartesianCross(d3_geo_cartesian(point0), d3_geo_cartesian(point)); - d3_geo_cartesianNormalize(arc); - var intersection = d3_geo_cartesianCross(meridianNormal, arc); - d3_geo_cartesianNormalize(intersection); - var φarc = (antimeridian ^ dλ >= 0 ? -1 : 1) * d3_asin(intersection[2]); - if (parallel > φarc || parallel === φarc && (arc[0] || arc[1])) { - winding += antimeridian ^ dλ >= 0 ? 1 : -1; - } - } - if (!j++) break; - λ0 = λ, sinφ0 = sinφ, cosφ0 = cosφ, point0 = point; - } - } - return (polarAngle < -ε || polarAngle < ε && d3_geo_areaRingSum < 0) ^ winding & 1; - } var d3_geo_clipAntimeridian = d3_geo_clip(d3_true, d3_geo_clipAntimeridianLine, d3_geo_clipAntimeridianInterpolate, [ -π, -π / 2 ]); function d3_geo_clipAntimeridianLine(listener) { var λ0 = NaN, φ0 = NaN, sλ0 = NaN, clean; @@ -3412,6 +3388,35 @@ listener.point(to[0], to[1]); } } + function d3_geo_pointInPolygon(point, polygon) { + var meridian = point[0], parallel = point[1], meridianNormal = [ Math.sin(meridian), -Math.cos(meridian), 0 ], polarAngle = 0, winding = 0; + d3_geo_areaRingSum.reset(); + for (var i = 0, n = polygon.length; i < n; ++i) { + var ring = polygon[i], m = ring.length; + if (!m) continue; + var point0 = ring[0], λ0 = point0[0], φ0 = point0[1] / 2 + π / 4, sinφ0 = Math.sin(φ0), cosφ0 = Math.cos(φ0), j = 1; + while (true) { + if (j === m) j = 0; + point = ring[j]; + var λ = point[0], φ = point[1] / 2 + π / 4, sinφ = Math.sin(φ), cosφ = Math.cos(φ), dλ = λ - λ0, sdλ = dλ >= 0 ? 1 : -1, adλ = sdλ * dλ, antimeridian = adλ > π, k = sinφ0 * sinφ; + d3_geo_areaRingSum.add(Math.atan2(k * sdλ * Math.sin(adλ), cosφ0 * cosφ + k * Math.cos(adλ))); + polarAngle += antimeridian ? dλ + sdλ * τ : dλ; + if (antimeridian ^ λ0 >= meridian ^ λ >= meridian) { + var arc = d3_geo_cartesianCross(d3_geo_cartesian(point0), d3_geo_cartesian(point)); + d3_geo_cartesianNormalize(arc); + var intersection = d3_geo_cartesianCross(meridianNormal, arc); + d3_geo_cartesianNormalize(intersection); + var φarc = (antimeridian ^ dλ >= 0 ? -1 : 1) * d3_asin(intersection[2]); + if (parallel > φarc || parallel === φarc && (arc[0] || arc[1])) { + winding += antimeridian ^ dλ >= 0 ? 1 : -1; + } + } + if (!j++) break; + λ0 = λ, sinφ0 = sinφ, cosφ0 = cosφ, point0 = point; + } + } + return (polarAngle < -ε || polarAngle < ε && d3_geo_areaRingSum < 0) ^ winding & 1; + } function d3_geo_clipCircle(radius) { var cr = Math.cos(radius), smallRadius = cr > 0, notHemisphere = abs(cr) > ε, interpolate = d3_geo_circleInterpolate(radius, 6 * d3_radians); return d3_geo_clip(visible, clipLine, interpolate, smallRadius ? [ 0, -radius ] : [ -π, radius - π ]); @@ -5611,7 +5616,7 @@ a = a + "", b = b + ""; while ((am = d3_interpolate_numberA.exec(a)) && (bm = d3_interpolate_numberB.exec(b))) { if ((bs = bm.index) > bi) { - bs = b.substring(bi, bs); + bs = b.slice(bi, bs); if (s[i]) s[i] += bs; else s[++i] = bs; } if ((am = am[0]) === (bm = bm[0])) { @@ -5626,7 +5631,7 @@ bi = d3_interpolate_numberB.lastIndex; } if (bi < b.length) { - bs = b.substring(bi); + bs = b.slice(bi); if (s[i]) s[i] += bs; else s[++i] = bs; } return s.length < 2 ? q[0] ? (b = q[0].x, function(t) { @@ -5696,7 +5701,7 @@ } }); d3.ease = function(name) { - var i = name.indexOf("-"), t = i >= 0 ? name.substring(0, i) : name, m = i >= 0 ? name.substring(i + 1) : "in"; + var i = name.indexOf("-"), t = i >= 0 ? name.slice(0, i) : name, m = i >= 0 ? name.slice(i + 1) : "in"; t = d3_ease.get(t) || d3_ease_default; m = d3_ease_mode.get(m) || d3_identity; return d3_ease_clamp(m(t.apply(null, d3_arraySlice.call(arguments, 1)))); diff --git a/public/app/bower_components/d3/d3.min.js b/public/app/bower_components/d3/d3.min.js index 88550ae5..b4943ee4 100644 --- a/public/app/bower_components/d3/d3.min.js +++ b/public/app/bower_components/d3/d3.min.js @@ -1,5 +1,5 @@ -!function(){function n(n,t){return t>n?-1:n>t?1:n>=t?0:0/0}function t(n){return null!=n&&!isNaN(n)}function e(n){return{left:function(t,e,r,u){for(arguments.length<3&&(r=0),arguments.length<4&&(u=t.length);u>r;){var i=r+u>>>1;n(t[i],e)<0?r=i+1:u=i}return r},right:function(t,e,r,u){for(arguments.length<3&&(r=0),arguments.length<4&&(u=t.length);u>r;){var i=r+u>>>1;n(t[i],e)>0?u=i:r=i+1}return r}}}function r(n){return n.length}function u(n){for(var t=1;n*t%1;)t*=10;return t}function i(n,t){try{for(var e in t)Object.defineProperty(n.prototype,e,{value:t[e],enumerable:!1})}catch(r){n.prototype=t}}function o(){}function a(n){return ia+n in this}function c(n){return n=ia+n,n in this&&delete this[n]}function s(){var n=[];return this.forEach(function(t){n.push(t)}),n}function l(){var n=0;for(var t in this)t.charCodeAt(0)===oa&&++n;return n}function f(){for(var n in this)if(n.charCodeAt(0)===oa)return!1;return!0}function h(){}function g(n,t,e){return function(){var r=e.apply(t,arguments);return r===t?n:r}}function p(n,t){if(t in n)return t;t=t.charAt(0).toUpperCase()+t.substring(1);for(var e=0,r=aa.length;r>e;++e){var u=aa[e]+t;if(u in n)return u}}function v(){}function d(){}function m(n){function t(){for(var t,r=e,u=-1,i=r.length;++ue;e++)for(var u,i=n[e],o=0,a=i.length;a>o;o++)(u=i[o])&&t(u,o,e);return n}function U(n){return sa(n,da),n}function j(n){var t,e;return function(r,u,i){var o,a=n[i].update,c=a.length;for(i!=e&&(e=i,t=0),u>=t&&(t=u+1);!(o=a[t])&&++t0&&(n=n.substring(0,a));var s=ya.get(n);return s&&(n=s,c=Y),a?t?u:r:t?v:i}function O(n,t){return function(e){var r=Zo.event;Zo.event=e,t[0]=this.__data__;try{n.apply(this,t)}finally{Zo.event=r}}}function Y(n,t){var e=O(n,t);return function(n){var t=this,r=n.relatedTarget;r&&(r===t||8&r.compareDocumentPosition(t))||e.call(t,n)}}function I(){var n=".dragsuppress-"+ ++Ma,t="click"+n,e=Zo.select(Wo).on("touchmove"+n,y).on("dragstart"+n,y).on("selectstart"+n,y);if(xa){var r=Bo.style,u=r[xa];r[xa]="none"}return function(i){function o(){e.on(t,null)}e.on(n,null),xa&&(r[xa]=u),i&&(e.on(t,function(){y(),o()},!0),setTimeout(o,0))}}function Z(n,t){t.changedTouches&&(t=t.changedTouches[0]);var e=n.ownerSVGElement||n;if(e.createSVGPoint){var r=e.createSVGPoint();if(0>_a&&(Wo.scrollX||Wo.scrollY)){e=Zo.select("body").append("svg").style({position:"absolute",top:0,left:0,margin:0,padding:0,border:"none"},"important");var u=e[0][0].getScreenCTM();_a=!(u.f||u.e),e.remove()}return _a?(r.x=t.pageX,r.y=t.pageY):(r.x=t.clientX,r.y=t.clientY),r=r.matrixTransform(n.getScreenCTM().inverse()),[r.x,r.y]}var i=n.getBoundingClientRect();return[t.clientX-i.left-n.clientLeft,t.clientY-i.top-n.clientTop]}function V(){return Zo.event.changedTouches[0].identifier}function X(){return Zo.event.target}function $(){return Wo}function B(n){return n>0?1:0>n?-1:0}function W(n,t,e){return(t[0]-n[0])*(e[1]-n[1])-(t[1]-n[1])*(e[0]-n[0])}function J(n){return n>1?0:-1>n?ba:Math.acos(n)}function G(n){return n>1?Sa:-1>n?-Sa:Math.asin(n)}function K(n){return((n=Math.exp(n))-1/n)/2}function Q(n){return((n=Math.exp(n))+1/n)/2}function nt(n){return((n=Math.exp(2*n))-1)/(n+1)}function tt(n){return(n=Math.sin(n/2))*n}function et(){}function rt(n,t,e){return this instanceof rt?(this.h=+n,this.s=+t,void(this.l=+e)):arguments.length<2?n instanceof rt?new rt(n.h,n.s,n.l):mt(""+n,yt,rt):new rt(n,t,e)}function ut(n,t,e){function r(n){return n>360?n-=360:0>n&&(n+=360),60>n?i+(o-i)*n/60:180>n?o:240>n?i+(o-i)*(240-n)/60:i}function u(n){return Math.round(255*r(n))}var i,o;return n=isNaN(n)?0:(n%=360)<0?n+360:n,t=isNaN(t)?0:0>t?0:t>1?1:t,e=0>e?0:e>1?1:e,o=.5>=e?e*(1+t):e+t-e*t,i=2*e-o,new gt(u(n+120),u(n),u(n-120))}function it(n,t,e){return this instanceof it?(this.h=+n,this.c=+t,void(this.l=+e)):arguments.length<2?n instanceof it?new it(n.h,n.c,n.l):n instanceof at?st(n.l,n.a,n.b):st((n=xt((n=Zo.rgb(n)).r,n.g,n.b)).l,n.a,n.b):new it(n,t,e)}function ot(n,t,e){return isNaN(n)&&(n=0),isNaN(t)&&(t=0),new at(e,Math.cos(n*=Aa)*t,Math.sin(n)*t)}function at(n,t,e){return this instanceof at?(this.l=+n,this.a=+t,void(this.b=+e)):arguments.length<2?n instanceof at?new at(n.l,n.a,n.b):n instanceof it?ot(n.l,n.c,n.h):xt((n=gt(n)).r,n.g,n.b):new at(n,t,e)}function ct(n,t,e){var r=(n+16)/116,u=r+t/500,i=r-e/200;return u=lt(u)*ja,r=lt(r)*Ha,i=lt(i)*Fa,new gt(ht(3.2404542*u-1.5371385*r-.4985314*i),ht(-.969266*u+1.8760108*r+.041556*i),ht(.0556434*u-.2040259*r+1.0572252*i))}function st(n,t,e){return n>0?new it(Math.atan2(e,t)*Ca,Math.sqrt(t*t+e*e),n):new it(0/0,0/0,n)}function lt(n){return n>.206893034?n*n*n:(n-4/29)/7.787037}function ft(n){return n>.008856?Math.pow(n,1/3):7.787037*n+4/29}function ht(n){return Math.round(255*(.00304>=n?12.92*n:1.055*Math.pow(n,1/2.4)-.055))}function gt(n,t,e){return this instanceof gt?(this.r=~~n,this.g=~~t,void(this.b=~~e)):arguments.length<2?n instanceof gt?new gt(n.r,n.g,n.b):mt(""+n,gt,ut):new gt(n,t,e)}function pt(n){return new gt(n>>16,255&n>>8,255&n)}function vt(n){return pt(n)+""}function dt(n){return 16>n?"0"+Math.max(0,n).toString(16):Math.min(255,n).toString(16)}function mt(n,t,e){var r,u,i,o=0,a=0,c=0;if(r=/([a-z]+)\((.*)\)/i.exec(n))switch(u=r[2].split(","),r[1]){case"hsl":return e(parseFloat(u[0]),parseFloat(u[1])/100,parseFloat(u[2])/100);case"rgb":return t(_t(u[0]),_t(u[1]),_t(u[2]))}return(i=Ia.get(n))?t(i.r,i.g,i.b):(null==n||"#"!==n.charAt(0)||isNaN(i=parseInt(n.substring(1),16))||(4===n.length?(o=(3840&i)>>4,o=o>>4|o,a=240&i,a=a>>4|a,c=15&i,c=c<<4|c):7===n.length&&(o=(16711680&i)>>16,a=(65280&i)>>8,c=255&i)),t(o,a,c))}function yt(n,t,e){var r,u,i=Math.min(n/=255,t/=255,e/=255),o=Math.max(n,t,e),a=o-i,c=(o+i)/2;return a?(u=.5>c?a/(o+i):a/(2-o-i),r=n==o?(t-e)/a+(e>t?6:0):t==o?(e-n)/a+2:(n-t)/a+4,r*=60):(r=0/0,u=c>0&&1>c?0:r),new rt(r,u,c)}function xt(n,t,e){n=Mt(n),t=Mt(t),e=Mt(e);var r=ft((.4124564*n+.3575761*t+.1804375*e)/ja),u=ft((.2126729*n+.7151522*t+.072175*e)/Ha),i=ft((.0193339*n+.119192*t+.9503041*e)/Fa);return at(116*u-16,500*(r-u),200*(u-i))}function Mt(n){return(n/=255)<=.04045?n/12.92:Math.pow((n+.055)/1.055,2.4)}function _t(n){var t=parseFloat(n);return"%"===n.charAt(n.length-1)?Math.round(2.55*t):t}function bt(n){return"function"==typeof n?n:function(){return n}}function wt(n){return n}function St(n){return function(t,e,r){return 2===arguments.length&&"function"==typeof e&&(r=e,e=null),kt(t,e,n,r)}}function kt(n,t,e,r){function u(){var n,t=c.status;if(!t&&c.responseText||t>=200&&300>t||304===t){try{n=e.call(i,c)}catch(r){return o.error.call(i,r),void 0}o.load.call(i,n)}else o.error.call(i,c)}var i={},o=Zo.dispatch("beforesend","progress","load","error"),a={},c=new XMLHttpRequest,s=null;return!Wo.XDomainRequest||"withCredentials"in c||!/^(http(s)?:)?\/\//.test(n)||(c=new XDomainRequest),"onload"in c?c.onload=c.onerror=u:c.onreadystatechange=function(){c.readyState>3&&u()},c.onprogress=function(n){var t=Zo.event;Zo.event=n;try{o.progress.call(i,c)}finally{Zo.event=t}},i.header=function(n,t){return n=(n+"").toLowerCase(),arguments.length<2?a[n]:(null==t?delete a[n]:a[n]=t+"",i)},i.mimeType=function(n){return arguments.length?(t=null==n?null:n+"",i):t},i.responseType=function(n){return arguments.length?(s=n,i):s},i.response=function(n){return e=n,i},["get","post"].forEach(function(n){i[n]=function(){return i.send.apply(i,[n].concat(Xo(arguments)))}}),i.send=function(e,r,u){if(2===arguments.length&&"function"==typeof r&&(u=r,r=null),c.open(e,n,!0),null==t||"accept"in a||(a.accept=t+",*/*"),c.setRequestHeader)for(var l in a)c.setRequestHeader(l,a[l]);return null!=t&&c.overrideMimeType&&c.overrideMimeType(t),null!=s&&(c.responseType=s),null!=u&&i.on("error",u).on("load",function(n){u(null,n)}),o.beforesend.call(i,c),c.send(null==r?null:r),i},i.abort=function(){return c.abort(),i},Zo.rebind(i,o,"on"),null==r?i:i.get(Et(r))}function Et(n){return 1===n.length?function(t,e){n(null==t?e:null)}:n}function At(){var n=Ct(),t=Nt()-n;t>24?(isFinite(t)&&(clearTimeout($a),$a=setTimeout(At,t)),Xa=0):(Xa=1,Wa(At))}function Ct(){var n=Date.now();for(Ba=Za;Ba;)n>=Ba.t&&(Ba.f=Ba.c(n-Ba.t)),Ba=Ba.n;return n}function Nt(){for(var n,t=Za,e=1/0;t;)t.f?t=n?n.n=t.n:Za=t.n:(t.t8?function(n){return n/e}:function(n){return n*e},symbol:n}}function Tt(n){var t=n.decimal,e=n.thousands,r=n.grouping,u=n.currency,i=r?function(n){for(var t=n.length,u=[],i=0,o=r[0];t>0&&o>0;)u.push(n.substring(t-=o,t+o)),o=r[i=(i+1)%r.length];return u.reverse().join(e)}:wt;return function(n){var e=Ga.exec(n),r=e[1]||" ",o=e[2]||">",a=e[3]||"",c=e[4]||"",s=e[5],l=+e[6],f=e[7],h=e[8],g=e[9],p=1,v="",d="",m=!1;switch(h&&(h=+h.substring(1)),(s||"0"===r&&"="===o)&&(s=r="0",o="=",f&&(l-=Math.floor((l-1)/4))),g){case"n":f=!0,g="g";break;case"%":p=100,d="%",g="f";break;case"p":p=100,d="%",g="r";break;case"b":case"o":case"x":case"X":"#"===c&&(v="0"+g.toLowerCase());case"c":case"d":m=!0,h=0;break;case"s":p=-1,g="r"}"$"===c&&(v=u[0],d=u[1]),"r"!=g||h||(g="g"),null!=h&&("g"==g?h=Math.max(1,Math.min(21,h)):("e"==g||"f"==g)&&(h=Math.max(0,Math.min(20,h)))),g=Ka.get(g)||qt;var y=s&&f;return function(n){var e=d;if(m&&n%1)return"";var u=0>n||0===n&&0>1/n?(n=-n,"-"):a;if(0>p){var c=Zo.formatPrefix(n,h);n=c.scale(n),e=c.symbol+d}else n*=p;n=g(n,h);var x=n.lastIndexOf("."),M=0>x?n:n.substring(0,x),_=0>x?"":t+n.substring(x+1);!s&&f&&(M=i(M));var b=v.length+M.length+_.length+(y?0:u.length),w=l>b?new Array(b=l-b+1).join(r):"";return y&&(M=i(w+M)),u+=v,n=M+_,("<"===o?u+n+w:">"===o?w+u+n:"^"===o?w.substring(0,b>>=1)+u+n+w.substring(b):u+(y?n:w+n))+e}}}function qt(n){return n+""}function Rt(){this._=new Date(arguments.length>1?Date.UTC.apply(this,arguments):arguments[0])}function Dt(n,t,e){function r(t){var e=n(t),r=i(e,1);return r-t>t-e?e:r}function u(e){return t(e=n(new nc(e-1)),1),e}function i(n,e){return t(n=new nc(+n),e),n}function o(n,r,i){var o=u(n),a=[];if(i>1)for(;r>o;)e(o)%i||a.push(new Date(+o)),t(o,1);else for(;r>o;)a.push(new Date(+o)),t(o,1);return a}function a(n,t,e){try{nc=Rt;var r=new Rt;return r._=n,o(r,t,e)}finally{nc=Date}}n.floor=n,n.round=r,n.ceil=u,n.offset=i,n.range=o;var c=n.utc=Pt(n);return c.floor=c,c.round=Pt(r),c.ceil=Pt(u),c.offset=Pt(i),c.range=a,n}function Pt(n){return function(t,e){try{nc=Rt;var r=new Rt;return r._=t,n(r,e)._}finally{nc=Date}}}function Ut(n){function t(n){function t(t){for(var e,u,i,o=[],a=-1,c=0;++aa;){if(r>=s)return-1;if(u=t.charCodeAt(a++),37===u){if(o=t.charAt(a++),i=N[o in ec?t.charAt(a++):o],!i||(r=i(n,e,r))<0)return-1}else if(u!=e.charCodeAt(r++))return-1}return r}function r(n,t,e){b.lastIndex=0;var r=b.exec(t.substring(e));return r?(n.w=w.get(r[0].toLowerCase()),e+r[0].length):-1}function u(n,t,e){M.lastIndex=0;var r=M.exec(t.substring(e));return r?(n.w=_.get(r[0].toLowerCase()),e+r[0].length):-1}function i(n,t,e){E.lastIndex=0;var r=E.exec(t.substring(e));return r?(n.m=A.get(r[0].toLowerCase()),e+r[0].length):-1}function o(n,t,e){S.lastIndex=0;var r=S.exec(t.substring(e));return r?(n.m=k.get(r[0].toLowerCase()),e+r[0].length):-1}function a(n,t,r){return e(n,C.c.toString(),t,r)}function c(n,t,r){return e(n,C.x.toString(),t,r)}function s(n,t,r){return e(n,C.X.toString(),t,r)}function l(n,t,e){var r=x.get(t.substring(e,e+=2).toLowerCase());return null==r?-1:(n.p=r,e)}var f=n.dateTime,h=n.date,g=n.time,p=n.periods,v=n.days,d=n.shortDays,m=n.months,y=n.shortMonths;t.utc=function(n){function e(n){try{nc=Rt;var t=new nc;return t._=n,r(t)}finally{nc=Date}}var r=t(n);return e.parse=function(n){try{nc=Rt;var t=r.parse(n);return t&&t._}finally{nc=Date}},e.toString=r.toString,e},t.multi=t.utc.multi=re;var x=Zo.map(),M=Ht(v),_=Ft(v),b=Ht(d),w=Ft(d),S=Ht(m),k=Ft(m),E=Ht(y),A=Ft(y);p.forEach(function(n,t){x.set(n.toLowerCase(),t)});var C={a:function(n){return d[n.getDay()]},A:function(n){return v[n.getDay()]},b:function(n){return y[n.getMonth()]},B:function(n){return m[n.getMonth()]},c:t(f),d:function(n,t){return jt(n.getDate(),t,2)},e:function(n,t){return jt(n.getDate(),t,2)},H:function(n,t){return jt(n.getHours(),t,2)},I:function(n,t){return jt(n.getHours()%12||12,t,2)},j:function(n,t){return jt(1+Qa.dayOfYear(n),t,3)},L:function(n,t){return jt(n.getMilliseconds(),t,3)},m:function(n,t){return jt(n.getMonth()+1,t,2)},M:function(n,t){return jt(n.getMinutes(),t,2)},p:function(n){return p[+(n.getHours()>=12)]},S:function(n,t){return jt(n.getSeconds(),t,2)},U:function(n,t){return jt(Qa.sundayOfYear(n),t,2)},w:function(n){return n.getDay()},W:function(n,t){return jt(Qa.mondayOfYear(n),t,2)},x:t(h),X:t(g),y:function(n,t){return jt(n.getFullYear()%100,t,2)},Y:function(n,t){return jt(n.getFullYear()%1e4,t,4)},Z:te,"%":function(){return"%"}},N={a:r,A:u,b:i,B:o,c:a,d:Wt,e:Wt,H:Gt,I:Gt,j:Jt,L:ne,m:Bt,M:Kt,p:l,S:Qt,U:Yt,w:Ot,W:It,x:c,X:s,y:Vt,Y:Zt,Z:Xt,"%":ee};return t}function jt(n,t,e){var r=0>n?"-":"",u=(r?-n:n)+"",i=u.length;return r+(e>i?new Array(e-i+1).join(t)+u:u)}function Ht(n){return new RegExp("^(?:"+n.map(Zo.requote).join("|")+")","i")}function Ft(n){for(var t=new o,e=-1,r=n.length;++e68?1900:2e3)}function Bt(n,t,e){rc.lastIndex=0;var r=rc.exec(t.substring(e,e+2));return r?(n.m=r[0]-1,e+r[0].length):-1}function Wt(n,t,e){rc.lastIndex=0;var r=rc.exec(t.substring(e,e+2));return r?(n.d=+r[0],e+r[0].length):-1}function Jt(n,t,e){rc.lastIndex=0;var r=rc.exec(t.substring(e,e+3));return r?(n.j=+r[0],e+r[0].length):-1}function Gt(n,t,e){rc.lastIndex=0;var r=rc.exec(t.substring(e,e+2));return r?(n.H=+r[0],e+r[0].length):-1}function Kt(n,t,e){rc.lastIndex=0;var r=rc.exec(t.substring(e,e+2));return r?(n.M=+r[0],e+r[0].length):-1}function Qt(n,t,e){rc.lastIndex=0;var r=rc.exec(t.substring(e,e+2));return r?(n.S=+r[0],e+r[0].length):-1}function ne(n,t,e){rc.lastIndex=0;var r=rc.exec(t.substring(e,e+3));return r?(n.L=+r[0],e+r[0].length):-1}function te(n){var t=n.getTimezoneOffset(),e=t>0?"-":"+",r=~~(ua(t)/60),u=ua(t)%60;return e+jt(r,"0",2)+jt(u,"0",2)}function ee(n,t,e){uc.lastIndex=0;var r=uc.exec(t.substring(e,e+1));return r?e+r[0].length:-1}function re(n){for(var t=n.length,e=-1;++e=0?1:-1,a=o*e,c=Math.cos(t),s=Math.sin(t),l=i*s,f=u*c+l*Math.cos(a),h=l*o*Math.sin(a);lc.add(Math.atan2(h,f)),r=n,u=c,i=s}var t,e,r,u,i;fc.point=function(o,a){fc.point=n,r=(t=o)*Aa,u=Math.cos(a=(e=a)*Aa/2+ba/4),i=Math.sin(a)},fc.lineEnd=function(){n(t,e)}}function le(n){var t=n[0],e=n[1],r=Math.cos(e);return[r*Math.cos(t),r*Math.sin(t),Math.sin(e)]}function fe(n,t){return n[0]*t[0]+n[1]*t[1]+n[2]*t[2]}function he(n,t){return[n[1]*t[2]-n[2]*t[1],n[2]*t[0]-n[0]*t[2],n[0]*t[1]-n[1]*t[0]]}function ge(n,t){n[0]+=t[0],n[1]+=t[1],n[2]+=t[2]}function pe(n,t){return[n[0]*t,n[1]*t,n[2]*t]}function ve(n){var t=Math.sqrt(n[0]*n[0]+n[1]*n[1]+n[2]*n[2]);n[0]/=t,n[1]/=t,n[2]/=t}function de(n){return[Math.atan2(n[1],n[0]),G(n[2])]}function me(n,t){return ua(n[0]-t[0])a;++a)u.point((e=n[a])[0],e[1]);return u.lineEnd(),void 0}var c=new Ee(e,n,null,!0),s=new Ee(e,null,c,!1);c.o=s,i.push(c),o.push(s),c=new Ee(r,n,null,!1),s=new Ee(r,null,c,!0),c.o=s,i.push(c),o.push(s)}}),o.sort(t),ke(i),ke(o),i.length){for(var a=0,c=e,s=o.length;s>a;++a)o[a].e=c=!c;for(var l,f,h=i[0];;){for(var g=h,p=!0;g.v;)if((g=g.n)===h)return;l=g.z,u.lineStart();do{if(g.v=g.o.v=!0,g.e){if(p)for(var a=0,s=l.length;s>a;++a)u.point((f=l[a])[0],f[1]);else r(g.x,g.n.x,1,u);g=g.n}else{if(p){l=g.p.z;for(var a=l.length-1;a>=0;--a)u.point((f=l[a])[0],f[1])}else r(g.x,g.p.x,-1,u);g=g.p}g=g.o,l=g.z,p=!p}while(!g.v);u.lineEnd()}}}function ke(n){if(t=n.length){for(var t,e,r=0,u=n[0];++r0){for(_||(i.polygonStart(),_=!0),i.lineStart();++o1&&2&t&&e.push(e.pop().concat(e.shift())),g.push(e.filter(Ce))}var g,p,v,d=t(i),m=u.invert(r[0],r[1]),y={point:o,lineStart:c,lineEnd:s,polygonStart:function(){y.point=l,y.lineStart=f,y.lineEnd=h,g=[],p=[]},polygonEnd:function(){y.point=o,y.lineStart=c,y.lineEnd=s,g=Zo.merge(g);var n=Le(m,p);g.length?(_||(i.polygonStart(),_=!0),Se(g,ze,n,e,i)):n&&(_||(i.polygonStart(),_=!0),i.lineStart(),e(null,null,1,i),i.lineEnd()),_&&(i.polygonEnd(),_=!1),g=p=null},sphere:function(){i.polygonStart(),i.lineStart(),e(null,null,1,i),i.lineEnd(),i.polygonEnd()}},x=Ne(),M=t(x),_=!1;return y}}function Ce(n){return n.length>1}function Ne(){var n,t=[];return{lineStart:function(){t.push(n=[])},point:function(t,e){n.push([t,e])},lineEnd:v,buffer:function(){var e=t;return t=[],n=null,e},rejoin:function(){t.length>1&&t.push(t.pop().concat(t.shift()))}}}function ze(n,t){return((n=n.x)[0]<0?n[1]-Sa-ka:Sa-n[1])-((t=t.x)[0]<0?t[1]-Sa-ka:Sa-t[1])}function Le(n,t){var e=n[0],r=n[1],u=[Math.sin(e),-Math.cos(e),0],i=0,o=0;lc.reset();for(var a=0,c=t.length;c>a;++a){var s=t[a],l=s.length;if(l)for(var f=s[0],h=f[0],g=f[1]/2+ba/4,p=Math.sin(g),v=Math.cos(g),d=1;;){d===l&&(d=0),n=s[d];var m=n[0],y=n[1]/2+ba/4,x=Math.sin(y),M=Math.cos(y),_=m-h,b=_>=0?1:-1,w=b*_,S=w>ba,k=p*x;if(lc.add(Math.atan2(k*b*Math.sin(w),v*M+k*Math.cos(w))),i+=S?_+b*wa:_,S^h>=e^m>=e){var E=he(le(f),le(n));ve(E);var A=he(u,E);ve(A);var C=(S^_>=0?-1:1)*G(A[2]);(r>C||r===C&&(E[0]||E[1]))&&(o+=S^_>=0?1:-1)}if(!d++)break;h=m,p=x,v=M,f=n}}return(-ka>i||ka>i&&0>lc)^1&o}function Te(n){var t,e=0/0,r=0/0,u=0/0;return{lineStart:function(){n.lineStart(),t=1},point:function(i,o){var a=i>0?ba:-ba,c=ua(i-e);ua(c-ba)0?Sa:-Sa),n.point(u,r),n.lineEnd(),n.lineStart(),n.point(a,r),n.point(i,r),t=0):u!==a&&c>=ba&&(ua(e-u)ka?Math.atan((Math.sin(t)*(i=Math.cos(r))*Math.sin(e)-Math.sin(r)*(u=Math.cos(t))*Math.sin(n))/(u*i*o)):(t+r)/2}function Re(n,t,e,r){var u;if(null==n)u=e*Sa,r.point(-ba,u),r.point(0,u),r.point(ba,u),r.point(ba,0),r.point(ba,-u),r.point(0,-u),r.point(-ba,-u),r.point(-ba,0),r.point(-ba,u);else if(ua(n[0]-t[0])>ka){var i=n[0]i}function e(n){var e,i,c,s,l;return{lineStart:function(){s=c=!1,l=1},point:function(f,h){var g,p=[f,h],v=t(f,h),d=o?v?0:u(f,h):v?u(f+(0>f?ba:-ba),h):0;if(!e&&(s=c=v)&&n.lineStart(),v!==c&&(g=r(e,p),(me(e,g)||me(p,g))&&(p[0]+=ka,p[1]+=ka,v=t(p[0],p[1]))),v!==c)l=0,v?(n.lineStart(),g=r(p,e),n.point(g[0],g[1])):(g=r(e,p),n.point(g[0],g[1]),n.lineEnd()),e=g;else if(a&&e&&o^v){var m;d&i||!(m=r(p,e,!0))||(l=0,o?(n.lineStart(),n.point(m[0][0],m[0][1]),n.point(m[1][0],m[1][1]),n.lineEnd()):(n.point(m[1][0],m[1][1]),n.lineEnd(),n.lineStart(),n.point(m[0][0],m[0][1])))}!v||e&&me(e,p)||n.point(p[0],p[1]),e=p,c=v,i=d},lineEnd:function(){c&&n.lineEnd(),e=null},clean:function(){return l|(s&&c)<<1}}}function r(n,t,e){var r=le(n),u=le(t),o=[1,0,0],a=he(r,u),c=fe(a,a),s=a[0],l=c-s*s;if(!l)return!e&&n;var f=i*c/l,h=-i*s/l,g=he(o,a),p=pe(o,f),v=pe(a,h);ge(p,v);var d=g,m=fe(p,d),y=fe(d,d),x=m*m-y*(fe(p,p)-1);if(!(0>x)){var M=Math.sqrt(x),_=pe(d,(-m-M)/y);if(ge(_,p),_=de(_),!e)return _;var b,w=n[0],S=t[0],k=n[1],E=t[1];w>S&&(b=w,w=S,S=b);var A=S-w,C=ua(A-ba)A;if(!C&&k>E&&(b=k,k=E,E=b),N?C?k+E>0^_[1]<(ua(_[0]-w)ba^(w<=_[0]&&_[0]<=S)){var z=pe(d,(-m+M)/y);return ge(z,p),[_,de(z)]}}}function u(t,e){var r=o?n:ba-n,u=0;return-r>t?u|=1:t>r&&(u|=2),-r>e?u|=4:e>r&&(u|=8),u}var i=Math.cos(n),o=i>0,a=ua(i)>ka,c=sr(n,6*Aa);return Ae(t,e,c,o?[0,-n]:[-ba,n-ba])}function Pe(n,t,e,r){return function(u){var i,o=u.a,a=u.b,c=o.x,s=o.y,l=a.x,f=a.y,h=0,g=1,p=l-c,v=f-s;if(i=n-c,p||!(i>0)){if(i/=p,0>p){if(h>i)return;g>i&&(g=i)}else if(p>0){if(i>g)return;i>h&&(h=i)}if(i=e-c,p||!(0>i)){if(i/=p,0>p){if(i>g)return;i>h&&(h=i)}else if(p>0){if(h>i)return;g>i&&(g=i)}if(i=t-s,v||!(i>0)){if(i/=v,0>v){if(h>i)return;g>i&&(g=i)}else if(v>0){if(i>g)return;i>h&&(h=i)}if(i=r-s,v||!(0>i)){if(i/=v,0>v){if(i>g)return;i>h&&(h=i)}else if(v>0){if(h>i)return;g>i&&(g=i)}return h>0&&(u.a={x:c+h*p,y:s+h*v}),1>g&&(u.b={x:c+g*p,y:s+g*v}),u}}}}}}function Ue(n,t,e,r){function u(r,u){return ua(r[0]-n)0?0:3:ua(r[0]-e)0?2:1:ua(r[1]-t)0?1:0:u>0?3:2}function i(n,t){return o(n.x,t.x)}function o(n,t){var e=u(n,1),r=u(t,1);return e!==r?e-r:0===e?t[1]-n[1]:1===e?n[0]-t[0]:2===e?n[1]-t[1]:t[0]-n[0]}return function(a){function c(n){for(var t=0,e=d.length,r=n[1],u=0;e>u;++u)for(var i,o=1,a=d[u],c=a.length,s=a[0];c>o;++o)i=a[o],s[1]<=r?i[1]>r&&W(s,i,n)>0&&++t:i[1]<=r&&W(s,i,n)<0&&--t,s=i;return 0!==t}function s(i,a,c,s){var l=0,f=0;if(null==i||(l=u(i,c))!==(f=u(a,c))||o(i,a)<0^c>0){do s.point(0===l||3===l?n:e,l>1?r:t);while((l=(l+c+4)%4)!==f)}else s.point(a[0],a[1])}function l(u,i){return u>=n&&e>=u&&i>=t&&r>=i}function f(n,t){l(n,t)&&a.point(n,t)}function h(){N.point=p,d&&d.push(m=[]),S=!0,w=!1,_=b=0/0}function g(){v&&(p(y,x),M&&w&&A.rejoin(),v.push(A.buffer())),N.point=f,w&&a.lineEnd()}function p(n,t){n=Math.max(-kc,Math.min(kc,n)),t=Math.max(-kc,Math.min(kc,t));var e=l(n,t);if(d&&m.push([n,t]),S)y=n,x=t,M=e,S=!1,e&&(a.lineStart(),a.point(n,t));else if(e&&w)a.point(n,t);else{var r={a:{x:_,y:b},b:{x:n,y:t}};C(r)?(w||(a.lineStart(),a.point(r.a.x,r.a.y)),a.point(r.b.x,r.b.y),e||a.lineEnd(),k=!1):e&&(a.lineStart(),a.point(n,t),k=!1)}_=n,b=t,w=e}var v,d,m,y,x,M,_,b,w,S,k,E=a,A=Ne(),C=Pe(n,t,e,r),N={point:f,lineStart:h,lineEnd:g,polygonStart:function(){a=A,v=[],d=[],k=!0},polygonEnd:function(){a=E,v=Zo.merge(v);var t=c([n,r]),e=k&&t,u=v.length;(e||u)&&(a.polygonStart(),e&&(a.lineStart(),s(null,null,1,a),a.lineEnd()),u&&Se(v,i,t,s,a),a.polygonEnd()),v=d=m=null}};return N}}function je(n,t){function e(e,r){return e=n(e,r),t(e[0],e[1])}return n.invert&&t.invert&&(e.invert=function(e,r){return e=t.invert(e,r),e&&n.invert(e[0],e[1])}),e}function He(n){var t=0,e=ba/3,r=tr(n),u=r(t,e);return u.parallels=function(n){return arguments.length?r(t=n[0]*ba/180,e=n[1]*ba/180):[180*(t/ba),180*(e/ba)]},u}function Fe(n,t){function e(n,t){var e=Math.sqrt(i-2*u*Math.sin(t))/u;return[e*Math.sin(n*=u),o-e*Math.cos(n)]}var r=Math.sin(n),u=(r+Math.sin(t))/2,i=1+r*(2*u-r),o=Math.sqrt(i)/u;return e.invert=function(n,t){var e=o-t;return[Math.atan2(n,e)/u,G((i-(n*n+e*e)*u*u)/(2*u))]},e}function Oe(){function n(n,t){Ac+=u*n-r*t,r=n,u=t}var t,e,r,u;Tc.point=function(i,o){Tc.point=n,t=r=i,e=u=o},Tc.lineEnd=function(){n(t,e)}}function Ye(n,t){Cc>n&&(Cc=n),n>zc&&(zc=n),Nc>t&&(Nc=t),t>Lc&&(Lc=t)}function Ie(){function n(n,t){o.push("M",n,",",t,i)}function t(n,t){o.push("M",n,",",t),a.point=e}function e(n,t){o.push("L",n,",",t)}function r(){a.point=n}function u(){o.push("Z")}var i=Ze(4.5),o=[],a={point:n,lineStart:function(){a.point=t},lineEnd:r,polygonStart:function(){a.lineEnd=u},polygonEnd:function(){a.lineEnd=r,a.point=n},pointRadius:function(n){return i=Ze(n),a},result:function(){if(o.length){var n=o.join("");return o=[],n}}};return a}function Ze(n){return"m0,"+n+"a"+n+","+n+" 0 1,1 0,"+-2*n+"a"+n+","+n+" 0 1,1 0,"+2*n+"z"}function Ve(n,t){pc+=n,vc+=t,++dc}function Xe(){function n(n,r){var u=n-t,i=r-e,o=Math.sqrt(u*u+i*i);mc+=o*(t+n)/2,yc+=o*(e+r)/2,xc+=o,Ve(t=n,e=r)}var t,e;Rc.point=function(r,u){Rc.point=n,Ve(t=r,e=u)}}function $e(){Rc.point=Ve}function Be(){function n(n,t){var e=n-r,i=t-u,o=Math.sqrt(e*e+i*i);mc+=o*(r+n)/2,yc+=o*(u+t)/2,xc+=o,o=u*n-r*t,Mc+=o*(r+n),_c+=o*(u+t),bc+=3*o,Ve(r=n,u=t)}var t,e,r,u;Rc.point=function(i,o){Rc.point=n,Ve(t=r=i,e=u=o)},Rc.lineEnd=function(){n(t,e)}}function We(n){function t(t,e){n.moveTo(t,e),n.arc(t,e,o,0,wa)}function e(t,e){n.moveTo(t,e),a.point=r}function r(t,e){n.lineTo(t,e)}function u(){a.point=t}function i(){n.closePath()}var o=4.5,a={point:t,lineStart:function(){a.point=e},lineEnd:u,polygonStart:function(){a.lineEnd=i},polygonEnd:function(){a.lineEnd=u,a.point=t},pointRadius:function(n){return o=n,a},result:v};return a}function Je(n){function t(n){return(a?r:e)(n)}function e(t){return Qe(t,function(e,r){e=n(e,r),t.point(e[0],e[1])})}function r(t){function e(e,r){e=n(e,r),t.point(e[0],e[1])}function r(){x=0/0,S.point=i,t.lineStart()}function i(e,r){var i=le([e,r]),o=n(e,r);u(x,M,y,_,b,w,x=o[0],M=o[1],y=e,_=i[0],b=i[1],w=i[2],a,t),t.point(x,M)}function o(){S.point=e,t.lineEnd()}function c(){r(),S.point=s,S.lineEnd=l}function s(n,t){i(f=n,h=t),g=x,p=M,v=_,d=b,m=w,S.point=i}function l(){u(x,M,y,_,b,w,g,p,f,v,d,m,a,t),S.lineEnd=o,o()}var f,h,g,p,v,d,m,y,x,M,_,b,w,S={point:e,lineStart:r,lineEnd:o,polygonStart:function(){t.polygonStart(),S.lineStart=c},polygonEnd:function(){t.polygonEnd(),S.lineStart=r}};return S}function u(t,e,r,a,c,s,l,f,h,g,p,v,d,m){var y=l-t,x=f-e,M=y*y+x*x;if(M>4*i&&d--){var _=a+g,b=c+p,w=s+v,S=Math.sqrt(_*_+b*b+w*w),k=Math.asin(w/=S),E=ua(ua(w)-1)i||ua((y*z+x*L)/M-.5)>.3||o>a*g+c*p+s*v)&&(u(t,e,r,a,c,s,C,N,E,_/=S,b/=S,w,d,m),m.point(C,N),u(C,N,E,_,b,w,l,f,h,g,p,v,d,m))}}var i=.5,o=Math.cos(30*Aa),a=16; -return t.precision=function(n){return arguments.length?(a=(i=n*n)>0&&16,t):Math.sqrt(i)},t}function Ge(n){var t=Je(function(t,e){return n([t*Ca,e*Ca])});return function(n){return er(t(n))}}function Ke(n){this.stream=n}function Qe(n,t){return{point:t,sphere:function(){n.sphere()},lineStart:function(){n.lineStart()},lineEnd:function(){n.lineEnd()},polygonStart:function(){n.polygonStart()},polygonEnd:function(){n.polygonEnd()}}}function nr(n){return tr(function(){return n})()}function tr(n){function t(n){return n=a(n[0]*Aa,n[1]*Aa),[n[0]*h+c,s-n[1]*h]}function e(n){return n=a.invert((n[0]-c)/h,(s-n[1])/h),n&&[n[0]*Ca,n[1]*Ca]}function r(){a=je(o=ir(m,y,x),i);var n=i(v,d);return c=g-n[0]*h,s=p+n[1]*h,u()}function u(){return l&&(l.valid=!1,l=null),t}var i,o,a,c,s,l,f=Je(function(n,t){return n=i(n,t),[n[0]*h+c,s-n[1]*h]}),h=150,g=480,p=250,v=0,d=0,m=0,y=0,x=0,M=Sc,_=wt,b=null,w=null;return t.stream=function(n){return l&&(l.valid=!1),l=er(M(o,f(_(n)))),l.valid=!0,l},t.clipAngle=function(n){return arguments.length?(M=null==n?(b=n,Sc):De((b=+n)*Aa),u()):b},t.clipExtent=function(n){return arguments.length?(w=n,_=n?Ue(n[0][0],n[0][1],n[1][0],n[1][1]):wt,u()):w},t.scale=function(n){return arguments.length?(h=+n,r()):h},t.translate=function(n){return arguments.length?(g=+n[0],p=+n[1],r()):[g,p]},t.center=function(n){return arguments.length?(v=n[0]%360*Aa,d=n[1]%360*Aa,r()):[v*Ca,d*Ca]},t.rotate=function(n){return arguments.length?(m=n[0]%360*Aa,y=n[1]%360*Aa,x=n.length>2?n[2]%360*Aa:0,r()):[m*Ca,y*Ca,x*Ca]},Zo.rebind(t,f,"precision"),function(){return i=n.apply(this,arguments),t.invert=i.invert&&e,r()}}function er(n){return Qe(n,function(t,e){n.point(t*Aa,e*Aa)})}function rr(n,t){return[n,t]}function ur(n,t){return[n>ba?n-wa:-ba>n?n+wa:n,t]}function ir(n,t,e){return n?t||e?je(ar(n),cr(t,e)):ar(n):t||e?cr(t,e):ur}function or(n){return function(t,e){return t+=n,[t>ba?t-wa:-ba>t?t+wa:t,e]}}function ar(n){var t=or(n);return t.invert=or(-n),t}function cr(n,t){function e(n,t){var e=Math.cos(t),a=Math.cos(n)*e,c=Math.sin(n)*e,s=Math.sin(t),l=s*r+a*u;return[Math.atan2(c*i-l*o,a*r-s*u),G(l*i+c*o)]}var r=Math.cos(n),u=Math.sin(n),i=Math.cos(t),o=Math.sin(t);return e.invert=function(n,t){var e=Math.cos(t),a=Math.cos(n)*e,c=Math.sin(n)*e,s=Math.sin(t),l=s*i-c*o;return[Math.atan2(c*i+s*o,a*r+l*u),G(l*r-a*u)]},e}function sr(n,t){var e=Math.cos(n),r=Math.sin(n);return function(u,i,o,a){var c=o*t;null!=u?(u=lr(e,u),i=lr(e,i),(o>0?i>u:u>i)&&(u+=o*wa)):(u=n+o*wa,i=n-.5*c);for(var s,l=u;o>0?l>i:i>l;l-=c)a.point((s=de([e,-r*Math.cos(l),-r*Math.sin(l)]))[0],s[1])}}function lr(n,t){var e=le(t);e[0]-=n,ve(e);var r=J(-e[1]);return((-e[2]<0?-r:r)+2*Math.PI-ka)%(2*Math.PI)}function fr(n,t,e){var r=Zo.range(n,t-ka,e).concat(t);return function(n){return r.map(function(t){return[n,t]})}}function hr(n,t,e){var r=Zo.range(n,t-ka,e).concat(t);return function(n){return r.map(function(t){return[t,n]})}}function gr(n){return n.source}function pr(n){return n.target}function vr(n,t,e,r){var u=Math.cos(t),i=Math.sin(t),o=Math.cos(r),a=Math.sin(r),c=u*Math.cos(n),s=u*Math.sin(n),l=o*Math.cos(e),f=o*Math.sin(e),h=2*Math.asin(Math.sqrt(tt(r-t)+u*o*tt(e-n))),g=1/Math.sin(h),p=h?function(n){var t=Math.sin(n*=h)*g,e=Math.sin(h-n)*g,r=e*c+t*l,u=e*s+t*f,o=e*i+t*a;return[Math.atan2(u,r)*Ca,Math.atan2(o,Math.sqrt(r*r+u*u))*Ca]}:function(){return[n*Ca,t*Ca]};return p.distance=h,p}function dr(){function n(n,u){var i=Math.sin(u*=Aa),o=Math.cos(u),a=ua((n*=Aa)-t),c=Math.cos(a);Dc+=Math.atan2(Math.sqrt((a=o*Math.sin(a))*a+(a=r*i-e*o*c)*a),e*i+r*o*c),t=n,e=i,r=o}var t,e,r;Pc.point=function(u,i){t=u*Aa,e=Math.sin(i*=Aa),r=Math.cos(i),Pc.point=n},Pc.lineEnd=function(){Pc.point=Pc.lineEnd=v}}function mr(n,t){function e(t,e){var r=Math.cos(t),u=Math.cos(e),i=n(r*u);return[i*u*Math.sin(t),i*Math.sin(e)]}return e.invert=function(n,e){var r=Math.sqrt(n*n+e*e),u=t(r),i=Math.sin(u),o=Math.cos(u);return[Math.atan2(n*i,r*o),Math.asin(r&&e*i/r)]},e}function yr(n,t){function e(n,t){o>0?-Sa+ka>t&&(t=-Sa+ka):t>Sa-ka&&(t=Sa-ka);var e=o/Math.pow(u(t),i);return[e*Math.sin(i*n),o-e*Math.cos(i*n)]}var r=Math.cos(n),u=function(n){return Math.tan(ba/4+n/2)},i=n===t?Math.sin(n):Math.log(r/Math.cos(t))/Math.log(u(t)/u(n)),o=r*Math.pow(u(n),i)/i;return i?(e.invert=function(n,t){var e=o-t,r=B(i)*Math.sqrt(n*n+e*e);return[Math.atan2(n,e)/i,2*Math.atan(Math.pow(o/r,1/i))-Sa]},e):Mr}function xr(n,t){function e(n,t){var e=i-t;return[e*Math.sin(u*n),i-e*Math.cos(u*n)]}var r=Math.cos(n),u=n===t?Math.sin(n):(r-Math.cos(t))/(t-n),i=r/u+n;return ua(u)u;u++){for(;r>1&&W(n[e[r-2]],n[e[r-1]],n[u])<=0;)--r;e[r++]=u}return e.slice(0,r)}function Er(n,t){return n[0]-t[0]||n[1]-t[1]}function Ar(n,t,e){return(e[0]-t[0])*(n[1]-t[1])<(e[1]-t[1])*(n[0]-t[0])}function Cr(n,t,e,r){var u=n[0],i=e[0],o=t[0]-u,a=r[0]-i,c=n[1],s=e[1],l=t[1]-c,f=r[1]-s,h=(a*(c-s)-f*(u-i))/(f*o-a*l);return[u+h*o,c+h*l]}function Nr(n){var t=n[0],e=n[n.length-1];return!(t[0]-e[0]||t[1]-e[1])}function zr(){Gr(this),this.edge=this.site=this.circle=null}function Lr(n){var t=Bc.pop()||new zr;return t.site=n,t}function Tr(n){Yr(n),Vc.remove(n),Bc.push(n),Gr(n)}function qr(n){var t=n.circle,e=t.x,r=t.cy,u={x:e,y:r},i=n.P,o=n.N,a=[n];Tr(n);for(var c=i;c.circle&&ua(e-c.circle.x)l;++l)s=a[l],c=a[l-1],Br(s.edge,c.site,s.site,u);c=a[0],s=a[f-1],s.edge=Xr(c.site,s.site,null,u),Or(c),Or(s)}function Rr(n){for(var t,e,r,u,i=n.x,o=n.y,a=Vc._;a;)if(r=Dr(a,o)-i,r>ka)a=a.L;else{if(u=i-Pr(a,o),!(u>ka)){r>-ka?(t=a.P,e=a):u>-ka?(t=a,e=a.N):t=e=a;break}if(!a.R){t=a;break}a=a.R}var c=Lr(n);if(Vc.insert(t,c),t||e){if(t===e)return Yr(t),e=Lr(t.site),Vc.insert(c,e),c.edge=e.edge=Xr(t.site,c.site),Or(t),Or(e),void 0;if(!e)return c.edge=Xr(t.site,c.site),void 0;Yr(t),Yr(e);var s=t.site,l=s.x,f=s.y,h=n.x-l,g=n.y-f,p=e.site,v=p.x-l,d=p.y-f,m=2*(h*d-g*v),y=h*h+g*g,x=v*v+d*d,M={x:(d*y-g*x)/m+l,y:(h*x-v*y)/m+f};Br(e.edge,s,p,M),c.edge=Xr(s,n,null,M),e.edge=Xr(n,p,null,M),Or(t),Or(e)}}function Dr(n,t){var e=n.site,r=e.x,u=e.y,i=u-t;if(!i)return r;var o=n.P;if(!o)return-1/0;e=o.site;var a=e.x,c=e.y,s=c-t;if(!s)return a;var l=a-r,f=1/i-1/s,h=l/s;return f?(-h+Math.sqrt(h*h-2*f*(l*l/(-2*s)-c+s/2+u-i/2)))/f+r:(r+a)/2}function Pr(n,t){var e=n.N;if(e)return Dr(e,t);var r=n.site;return r.y===t?r.x:1/0}function Ur(n){this.site=n,this.edges=[]}function jr(n){for(var t,e,r,u,i,o,a,c,s,l,f=n[0][0],h=n[1][0],g=n[0][1],p=n[1][1],v=Zc,d=v.length;d--;)if(i=v[d],i&&i.prepare())for(a=i.edges,c=a.length,o=0;c>o;)l=a[o].end(),r=l.x,u=l.y,s=a[++o%c].start(),t=s.x,e=s.y,(ua(r-t)>ka||ua(u-e)>ka)&&(a.splice(o,0,new Wr($r(i.site,l,ua(r-f)ka?{x:f,y:ua(t-f)ka?{x:ua(e-p)ka?{x:h,y:ua(t-h)ka?{x:ua(e-g)=-Ea)){var g=c*c+s*s,p=l*l+f*f,v=(f*g-s*p)/h,d=(c*p-l*g)/h,f=d+a,m=Wc.pop()||new Fr;m.arc=n,m.site=u,m.x=v+o,m.y=f+Math.sqrt(v*v+d*d),m.cy=f,n.circle=m;for(var y=null,x=$c._;x;)if(m.yd||d>=a)return;if(h>p){if(i){if(i.y>=s)return}else i={x:d,y:c};e={x:d,y:s}}else{if(i){if(i.yr||r>1)if(h>p){if(i){if(i.y>=s)return}else i={x:(c-u)/r,y:c};e={x:(s-u)/r,y:s}}else{if(i){if(i.yg){if(i){if(i.x>=a)return}else i={x:o,y:r*o+u};e={x:a,y:r*a+u}}else{if(i){if(i.xi&&(u=t.substring(i,u),a[o]?a[o]+=u:a[++o]=u),(e=e[0])===(r=r[0])?a[o]?a[o]+=r:a[++o]=r:(a[++o]=null,c.push({i:o,x:lu(e,r)})),i=Kc.lastIndex;return ir;++r)a[(e=c[r]).i]=e.x(n);return a.join("")})}function hu(n,t){for(var e,r=Zo.interpolators.length;--r>=0&&!(e=Zo.interpolators[r](n,t)););return e}function gu(n,t){var e,r=[],u=[],i=n.length,o=t.length,a=Math.min(n.length,t.length);for(e=0;a>e;++e)r.push(hu(n[e],t[e]));for(;i>e;++e)u[e]=n[e];for(;o>e;++e)u[e]=t[e];return function(n){for(e=0;a>e;++e)u[e]=r[e](n);return u}}function pu(n){return function(t){return 0>=t?0:t>=1?1:n(t)}}function vu(n){return function(t){return 1-n(1-t)}}function du(n){return function(t){return.5*(.5>t?n(2*t):2-n(2-2*t))}}function mu(n){return n*n}function yu(n){return n*n*n}function xu(n){if(0>=n)return 0;if(n>=1)return 1;var t=n*n,e=t*n;return 4*(.5>n?e:3*(n-t)+e-.75)}function Mu(n){return function(t){return Math.pow(t,n)}}function _u(n){return 1-Math.cos(n*Sa)}function bu(n){return Math.pow(2,10*(n-1))}function wu(n){return 1-Math.sqrt(1-n*n)}function Su(n,t){var e;return arguments.length<2&&(t=.45),arguments.length?e=t/wa*Math.asin(1/n):(n=1,e=t/4),function(r){return 1+n*Math.pow(2,-10*r)*Math.sin((r-e)*wa/t)}}function ku(n){return n||(n=1.70158),function(t){return t*t*((n+1)*t-n)}}function Eu(n){return 1/2.75>n?7.5625*n*n:2/2.75>n?7.5625*(n-=1.5/2.75)*n+.75:2.5/2.75>n?7.5625*(n-=2.25/2.75)*n+.9375:7.5625*(n-=2.625/2.75)*n+.984375}function Au(n,t){n=Zo.hcl(n),t=Zo.hcl(t);var e=n.h,r=n.c,u=n.l,i=t.h-e,o=t.c-r,a=t.l-u;return isNaN(o)&&(o=0,r=isNaN(r)?t.c:r),isNaN(i)?(i=0,e=isNaN(e)?t.h:e):i>180?i-=360:-180>i&&(i+=360),function(n){return ot(e+i*n,r+o*n,u+a*n)+""}}function Cu(n,t){n=Zo.hsl(n),t=Zo.hsl(t);var e=n.h,r=n.s,u=n.l,i=t.h-e,o=t.s-r,a=t.l-u;return isNaN(o)&&(o=0,r=isNaN(r)?t.s:r),isNaN(i)?(i=0,e=isNaN(e)?t.h:e):i>180?i-=360:-180>i&&(i+=360),function(n){return ut(e+i*n,r+o*n,u+a*n)+""}}function Nu(n,t){n=Zo.lab(n),t=Zo.lab(t);var e=n.l,r=n.a,u=n.b,i=t.l-e,o=t.a-r,a=t.b-u;return function(n){return ct(e+i*n,r+o*n,u+a*n)+""}}function zu(n,t){return t-=n,function(e){return Math.round(n+t*e)}}function Lu(n){var t=[n.a,n.b],e=[n.c,n.d],r=qu(t),u=Tu(t,e),i=qu(Ru(e,t,-u))||0;t[0]*e[1]180?l+=360:l-s>180&&(s+=360),u.push({i:r.push(r.pop()+"rotate(",null,")")-2,x:lu(s,l)})):l&&r.push(r.pop()+"rotate("+l+")"),f!=h?u.push({i:r.push(r.pop()+"skewX(",null,")")-2,x:lu(f,h)}):h&&r.push(r.pop()+"skewX("+h+")"),g[0]!=p[0]||g[1]!=p[1]?(e=r.push(r.pop()+"scale(",null,",",null,")"),u.push({i:e-4,x:lu(g[0],p[0])},{i:e-2,x:lu(g[1],p[1])})):(1!=p[0]||1!=p[1])&&r.push(r.pop()+"scale("+p+")"),e=u.length,function(n){for(var t,i=-1;++i=0;)e.push(u[r])}function Bu(n,t){for(var e=[n],r=[];null!=(n=e.pop());)if(r.push(n),(i=n.children)&&(u=i.length))for(var u,i,o=-1;++oe;++e)(t=n[e][1])>u&&(r=e,u=t);return r}function ii(n){return n.reduce(oi,0)}function oi(n,t){return n+t[1]}function ai(n,t){return ci(n,Math.ceil(Math.log(t.length)/Math.LN2+1))}function ci(n,t){for(var e=-1,r=+n[0],u=(n[1]-r)/t,i=[];++e<=t;)i[e]=u*e+r;return i}function si(n){return[Zo.min(n),Zo.max(n)]}function li(n,t){return n.value-t.value}function fi(n,t){var e=n._pack_next;n._pack_next=t,t._pack_prev=n,t._pack_next=e,e._pack_prev=t}function hi(n,t){n._pack_next=t,t._pack_prev=n}function gi(n,t){var e=t.x-n.x,r=t.y-n.y,u=n.r+t.r;return.999*u*u>e*e+r*r}function pi(n){function t(n){l=Math.min(n.x-n.r,l),f=Math.max(n.x+n.r,f),h=Math.min(n.y-n.r,h),g=Math.max(n.y+n.r,g)}if((e=n.children)&&(s=e.length)){var e,r,u,i,o,a,c,s,l=1/0,f=-1/0,h=1/0,g=-1/0;if(e.forEach(vi),r=e[0],r.x=-r.r,r.y=0,t(r),s>1&&(u=e[1],u.x=u.r,u.y=0,t(u),s>2))for(i=e[2],yi(r,u,i),t(i),fi(r,i),r._pack_prev=i,fi(i,u),u=r._pack_next,o=3;s>o;o++){yi(r,u,i=e[o]);var p=0,v=1,d=1;for(a=u._pack_next;a!==u;a=a._pack_next,v++)if(gi(a,i)){p=1;break}if(1==p)for(c=r._pack_prev;c!==a._pack_prev&&!gi(c,i);c=c._pack_prev,d++);p?(d>v||v==d&&u.ro;o++)i=e[o],i.x-=m,i.y-=y,x=Math.max(x,i.r+Math.sqrt(i.x*i.x+i.y*i.y));n.r=x,e.forEach(di)}}function vi(n){n._pack_next=n._pack_prev=n}function di(n){delete n._pack_next,delete n._pack_prev}function mi(n,t,e,r){var u=n.children;if(n.x=t+=r*n.x,n.y=e+=r*n.y,n.r*=r,u)for(var i=-1,o=u.length;++i=0;)t=u[i],t.z+=e,t.m+=e,e+=t.s+(r+=t.c)}function Si(n,t,e){return n.a.parent===t.parent?n.a:e}function ki(n){return 1+Zo.max(n,function(n){return n.y})}function Ei(n){return n.reduce(function(n,t){return n+t.x},0)/n.length}function Ai(n){var t=n.children;return t&&t.length?Ai(t[0]):n}function Ci(n){var t,e=n.children;return e&&(t=e.length)?Ci(e[t-1]):n}function Ni(n){return{x:n.x,y:n.y,dx:n.dx,dy:n.dy}}function zi(n,t){var e=n.x+t[3],r=n.y+t[0],u=n.dx-t[1]-t[3],i=n.dy-t[0]-t[2];return 0>u&&(e+=u/2,u=0),0>i&&(r+=i/2,i=0),{x:e,y:r,dx:u,dy:i}}function Li(n){var t=n[0],e=n[n.length-1];return e>t?[t,e]:[e,t]}function Ti(n){return n.rangeExtent?n.rangeExtent():Li(n.range())}function qi(n,t,e,r){var u=e(n[0],n[1]),i=r(t[0],t[1]);return function(n){return i(u(n))}}function Ri(n,t){var e,r=0,u=n.length-1,i=n[r],o=n[u];return i>o&&(e=r,r=u,u=e,e=i,i=o,o=e),n[r]=t.floor(i),n[u]=t.ceil(o),n}function Di(n){return n?{floor:function(t){return Math.floor(t/n)*n},ceil:function(t){return Math.ceil(t/n)*n}}:ss}function Pi(n,t,e,r){var u=[],i=[],o=0,a=Math.min(n.length,t.length)-1;for(n[a]2?Pi:qi,c=r?Uu:Pu;return o=u(n,t,c,e),a=u(t,n,c,hu),i}function i(n){return o(n)}var o,a;return i.invert=function(n){return a(n)},i.domain=function(t){return arguments.length?(n=t.map(Number),u()):n},i.range=function(n){return arguments.length?(t=n,u()):t},i.rangeRound=function(n){return i.range(n).interpolate(zu)},i.clamp=function(n){return arguments.length?(r=n,u()):r},i.interpolate=function(n){return arguments.length?(e=n,u()):e},i.ticks=function(t){return Oi(n,t)},i.tickFormat=function(t,e){return Yi(n,t,e)},i.nice=function(t){return Hi(n,t),u()},i.copy=function(){return Ui(n,t,e,r)},u()}function ji(n,t){return Zo.rebind(n,t,"range","rangeRound","interpolate","clamp")}function Hi(n,t){return Ri(n,Di(Fi(n,t)[2]))}function Fi(n,t){null==t&&(t=10);var e=Li(n),r=e[1]-e[0],u=Math.pow(10,Math.floor(Math.log(r/t)/Math.LN10)),i=t/r*u;return.15>=i?u*=10:.35>=i?u*=5:.75>=i&&(u*=2),e[0]=Math.ceil(e[0]/u)*u,e[1]=Math.floor(e[1]/u)*u+.5*u,e[2]=u,e}function Oi(n,t){return Zo.range.apply(Zo,Fi(n,t))}function Yi(n,t,e){var r=Fi(n,t);if(e){var u=Ga.exec(e);if(u.shift(),"s"===u[8]){var i=Zo.formatPrefix(Math.max(ua(r[0]),ua(r[1])));return u[7]||(u[7]="."+Ii(i.scale(r[2]))),u[8]="f",e=Zo.format(u.join("")),function(n){return e(i.scale(n))+i.symbol}}u[7]||(u[7]="."+Zi(u[8],r)),e=u.join("")}else e=",."+Ii(r[2])+"f";return Zo.format(e)}function Ii(n){return-Math.floor(Math.log(n)/Math.LN10+.01)}function Zi(n,t){var e=Ii(t[2]);return n in ls?Math.abs(e-Ii(Math.max(ua(t[0]),ua(t[1]))))+ +("e"!==n):e-2*("%"===n)}function Vi(n,t,e,r){function u(n){return(e?Math.log(0>n?0:n):-Math.log(n>0?0:-n))/Math.log(t)}function i(n){return e?Math.pow(t,n):-Math.pow(t,-n)}function o(t){return n(u(t))}return o.invert=function(t){return i(n.invert(t))},o.domain=function(t){return arguments.length?(e=t[0]>=0,n.domain((r=t.map(Number)).map(u)),o):r},o.base=function(e){return arguments.length?(t=+e,n.domain(r.map(u)),o):t},o.nice=function(){var t=Ri(r.map(u),e?Math:hs);return n.domain(t),r=t.map(i),o},o.ticks=function(){var n=Li(r),o=[],a=n[0],c=n[1],s=Math.floor(u(a)),l=Math.ceil(u(c)),f=t%1?2:t;if(isFinite(l-s)){if(e){for(;l>s;s++)for(var h=1;f>h;h++)o.push(i(s)*h);o.push(i(s))}else for(o.push(i(s));s++0;h--)o.push(i(s)*h);for(s=0;o[s]c;l--);o=o.slice(s,l)}return o},o.tickFormat=function(n,t){if(!arguments.length)return fs;arguments.length<2?t=fs:"function"!=typeof t&&(t=Zo.format(t));var r,a=Math.max(.1,n/o.ticks().length),c=e?(r=1e-12,Math.ceil):(r=-1e-12,Math.floor);return function(n){return n/i(c(u(n)+r))<=a?t(n):""}},o.copy=function(){return Vi(n.copy(),t,e,r)},ji(o,n)}function Xi(n,t,e){function r(t){return n(u(t))}var u=$i(t),i=$i(1/t);return r.invert=function(t){return i(n.invert(t))},r.domain=function(t){return arguments.length?(n.domain((e=t.map(Number)).map(u)),r):e},r.ticks=function(n){return Oi(e,n)},r.tickFormat=function(n,t){return Yi(e,n,t)},r.nice=function(n){return r.domain(Hi(e,n))},r.exponent=function(o){return arguments.length?(u=$i(t=o),i=$i(1/t),n.domain(e.map(u)),r):t},r.copy=function(){return Xi(n.copy(),t,e)},ji(r,n)}function $i(n){return function(t){return 0>t?-Math.pow(-t,n):Math.pow(t,n)}}function Bi(n,t){function e(e){return i[((u.get(e)||("range"===t.t?u.set(e,n.push(e)):0/0))-1)%i.length]}function r(t,e){return Zo.range(n.length).map(function(n){return t+e*n})}var u,i,a;return e.domain=function(r){if(!arguments.length)return n;n=[],u=new o;for(var i,a=-1,c=r.length;++an?[0/0,0/0]:[n>0?o[n-1]:e[0],nt?0/0:t/i+n,[t,t+1/i]},r.copy=function(){return Ji(n,t,e)},u()}function Gi(n,t){function e(e){return e>=e?t[Zo.bisect(n,e)]:void 0}return e.domain=function(t){return arguments.length?(n=t,e):n},e.range=function(n){return arguments.length?(t=n,e):t},e.invertExtent=function(e){return e=t.indexOf(e),[n[e-1],n[e]]},e.copy=function(){return Gi(n,t)},e}function Ki(n){function t(n){return+n}return t.invert=t,t.domain=t.range=function(e){return arguments.length?(n=e.map(t),t):n},t.ticks=function(t){return Oi(n,t)},t.tickFormat=function(t,e){return Yi(n,t,e)},t.copy=function(){return Ki(n)},t}function Qi(n){return n.innerRadius}function no(n){return n.outerRadius}function to(n){return n.startAngle}function eo(n){return n.endAngle}function ro(n){function t(t){function o(){s.push("M",i(n(l),a))}for(var c,s=[],l=[],f=-1,h=t.length,g=bt(e),p=bt(r);++f1&&u.push("H",r[0]),u.join("")}function ao(n){for(var t=0,e=n.length,r=n[0],u=[r[0],",",r[1]];++t1){a=t[1],i=n[c],c++,r+="C"+(u[0]+o[0])+","+(u[1]+o[1])+","+(i[0]-a[0])+","+(i[1]-a[1])+","+i[0]+","+i[1];for(var s=2;s9&&(u=3*t/Math.sqrt(u),o[a]=u*e,o[a+1]=u*r));for(a=-1;++a<=c;)u=(n[Math.min(c,a+1)][0]-n[Math.max(0,a-1)][0])/(6*(1+o[a]*o[a])),i.push([u||0,o[a]*u||0]);return i}function So(n){return n.length<3?uo(n):n[0]+ho(n,wo(n))}function ko(n){for(var t,e,r,u=-1,i=n.length;++ue?s():(u.active=e,i.event&&i.event.start.call(n,l,t),i.tween.forEach(function(e,r){(r=r.call(n,l,t))&&v.push(r)}),Zo.timer(function(){return p.c=c(r||1)?we:c,1},0,a),void 0)}function c(r){if(u.active!==e)return s();for(var o=r/g,a=f(o),c=v.length;c>0;)v[--c].call(n,a); -return o>=1?(i.event&&i.event.end.call(n,l,t),s()):void 0}function s(){return--u.count?delete u[e]:delete n.__transition__,1}var l=n.__data__,f=i.ease,h=i.delay,g=i.duration,p=Ba,v=[];return p.t=h+a,r>=h?o(r-h):(p.c=o,void 0)},0,a)}}function Uo(n,t){n.attr("transform",function(n){return"translate("+t(n)+",0)"})}function jo(n,t){n.attr("transform",function(n){return"translate(0,"+t(n)+")"})}function Ho(n){return n.toISOString()}function Fo(n,t,e){function r(t){return n(t)}function u(n,e){var r=n[1]-n[0],u=r/e,i=Zo.bisect(Us,u);return i==Us.length?[t.year,Fi(n.map(function(n){return n/31536e6}),e)[2]]:i?t[u/Us[i-1]1?{floor:function(t){for(;e(t=n.floor(t));)t=Oo(t-1);return t},ceil:function(t){for(;e(t=n.ceil(t));)t=Oo(+t+1);return t}}:n))},r.ticks=function(n,t){var e=Li(r.domain()),i=null==n?u(e,10):"number"==typeof n?u(e,n):!n.range&&[{range:n},t];return i&&(n=i[0],t=i[1]),n.range(e[0],Oo(+e[1]+1),1>t?1:t)},r.tickFormat=function(){return e},r.copy=function(){return Fo(n.copy(),t,e)},ji(r,n)}function Oo(n){return new Date(n)}function Yo(n){return JSON.parse(n.responseText)}function Io(n){var t=$o.createRange();return t.selectNode($o.body),t.createContextualFragment(n.responseText)}var Zo={version:"3.4.11"};Date.now||(Date.now=function(){return+new Date});var Vo=[].slice,Xo=function(n){return Vo.call(n)},$o=document,Bo=$o.documentElement,Wo=window;try{Xo(Bo.childNodes)[0].nodeType}catch(Jo){Xo=function(n){for(var t=n.length,e=new Array(t);t--;)e[t]=n[t];return e}}try{$o.createElement("div").style.setProperty("opacity",0,"")}catch(Go){var Ko=Wo.Element.prototype,Qo=Ko.setAttribute,na=Ko.setAttributeNS,ta=Wo.CSSStyleDeclaration.prototype,ea=ta.setProperty;Ko.setAttribute=function(n,t){Qo.call(this,n,t+"")},Ko.setAttributeNS=function(n,t,e){na.call(this,n,t,e+"")},ta.setProperty=function(n,t,e){ea.call(this,n,t+"",e)}}Zo.ascending=n,Zo.descending=function(n,t){return n>t?-1:t>n?1:t>=n?0:0/0},Zo.min=function(n,t){var e,r,u=-1,i=n.length;if(1===arguments.length){for(;++u=e);)e=void 0;for(;++ur&&(e=r)}else{for(;++u=e);)e=void 0;for(;++ur&&(e=r)}return e},Zo.max=function(n,t){var e,r,u=-1,i=n.length;if(1===arguments.length){for(;++u=e);)e=void 0;for(;++ue&&(e=r)}else{for(;++u=e);)e=void 0;for(;++ue&&(e=r)}return e},Zo.extent=function(n,t){var e,r,u,i=-1,o=n.length;if(1===arguments.length){for(;++i=e);)e=u=void 0;for(;++ir&&(e=r),r>u&&(u=r))}else{for(;++i=e);)e=void 0;for(;++ir&&(e=r),r>u&&(u=r))}return[e,u]},Zo.sum=function(n,t){var e,r=0,u=n.length,i=-1;if(1===arguments.length)for(;++i1&&(e=e.map(r)),e=e.filter(t),e.length?Zo.quantile(e.sort(n),.5):void 0};var ra=e(n);Zo.bisectLeft=ra.left,Zo.bisect=Zo.bisectRight=ra.right,Zo.bisector=function(t){return e(1===t.length?function(e,r){return n(t(e),r)}:t)},Zo.shuffle=function(n){for(var t,e,r=n.length;r;)e=0|Math.random()*r--,t=n[r],n[r]=n[e],n[e]=t;return n},Zo.permute=function(n,t){for(var e=t.length,r=new Array(e);e--;)r[e]=n[t[e]];return r},Zo.pairs=function(n){for(var t,e=0,r=n.length-1,u=n[0],i=new Array(0>r?0:r);r>e;)i[e]=[t=u,u=n[++e]];return i},Zo.zip=function(){if(!(u=arguments.length))return[];for(var n=-1,t=Zo.min(arguments,r),e=new Array(t);++n=0;)for(r=n[u],t=r.length;--t>=0;)e[--o]=r[t];return e};var ua=Math.abs;Zo.range=function(n,t,e){if(arguments.length<3&&(e=1,arguments.length<2&&(t=n,n=0)),1/0===(t-n)/e)throw new Error("infinite range");var r,i=[],o=u(ua(e)),a=-1;if(n*=o,t*=o,e*=o,0>e)for(;(r=n+e*++a)>t;)i.push(r/o);else for(;(r=n+e*++a)=i.length)return r?r.call(u,a):e?a.sort(e):a;for(var s,l,f,h,g=-1,p=a.length,v=i[c++],d=new o;++g=i.length)return n;var r=[],u=a[e++];return n.forEach(function(n,u){r.push({key:n,values:t(u,e)})}),u?r.sort(function(n,t){return u(n.key,t.key)}):r}var e,r,u={},i=[],a=[];return u.map=function(t,e){return n(e,t,0)},u.entries=function(e){return t(n(Zo.map,e,0),0)},u.key=function(n){return i.push(n),u},u.sortKeys=function(n){return a[i.length-1]=n,u},u.sortValues=function(n){return e=n,u},u.rollup=function(n){return r=n,u},u},Zo.set=function(n){var t=new h;if(n)for(var e=0,r=n.length;r>e;++e)t.add(n[e]);return t},i(h,{has:a,add:function(n){return this[ia+n]=!0,n},remove:function(n){return n=ia+n,n in this&&delete this[n]},values:s,size:l,empty:f,forEach:function(n){for(var t in this)t.charCodeAt(0)===oa&&n.call(this,t.substring(1))}}),Zo.behavior={},Zo.rebind=function(n,t){for(var e,r=1,u=arguments.length;++r=0&&(r=n.substring(e+1),n=n.substring(0,e)),n)return arguments.length<2?this[n].on(r):this[n].on(r,t);if(2===arguments.length){if(null==t)for(n in this)this.hasOwnProperty(n)&&this[n].on(r,null);return this}},Zo.event=null,Zo.requote=function(n){return n.replace(ca,"\\$&")};var ca=/[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g,sa={}.__proto__?function(n,t){n.__proto__=t}:function(n,t){for(var e in t)n[e]=t[e]},la=function(n,t){return t.querySelector(n)},fa=function(n,t){return t.querySelectorAll(n)},ha=Bo.matches||Bo[p(Bo,"matchesSelector")],ga=function(n,t){return ha.call(n,t)};"function"==typeof Sizzle&&(la=function(n,t){return Sizzle(n,t)[0]||null},fa=Sizzle,ga=Sizzle.matchesSelector),Zo.selection=function(){return ma};var pa=Zo.selection.prototype=[];pa.select=function(n){var t,e,r,u,i=[];n=b(n);for(var o=-1,a=this.length;++o=0&&(e=n.substring(0,t),n=n.substring(t+1)),va.hasOwnProperty(e)?{space:va[e],local:n}:n}},pa.attr=function(n,t){if(arguments.length<2){if("string"==typeof n){var e=this.node();return n=Zo.ns.qualify(n),n.local?e.getAttributeNS(n.space,n.local):e.getAttribute(n)}for(t in n)this.each(S(t,n[t]));return this}return this.each(S(n,t))},pa.classed=function(n,t){if(arguments.length<2){if("string"==typeof n){var e=this.node(),r=(n=A(n)).length,u=-1;if(t=e.classList){for(;++ur){if("string"!=typeof n){2>r&&(t="");for(e in n)this.each(z(e,n[e],t));return this}if(2>r)return Wo.getComputedStyle(this.node(),null).getPropertyValue(n);e=""}return this.each(z(n,t,e))},pa.property=function(n,t){if(arguments.length<2){if("string"==typeof n)return this.node()[n];for(t in n)this.each(L(t,n[t]));return this}return this.each(L(n,t))},pa.text=function(n){return arguments.length?this.each("function"==typeof n?function(){var t=n.apply(this,arguments);this.textContent=null==t?"":t}:null==n?function(){this.textContent=""}:function(){this.textContent=n}):this.node().textContent},pa.html=function(n){return arguments.length?this.each("function"==typeof n?function(){var t=n.apply(this,arguments);this.innerHTML=null==t?"":t}:null==n?function(){this.innerHTML=""}:function(){this.innerHTML=n}):this.node().innerHTML},pa.append=function(n){return n=T(n),this.select(function(){return this.appendChild(n.apply(this,arguments))})},pa.insert=function(n,t){return n=T(n),t=b(t),this.select(function(){return this.insertBefore(n.apply(this,arguments),t.apply(this,arguments)||null)})},pa.remove=function(){return this.each(function(){var n=this.parentNode;n&&n.removeChild(this)})},pa.data=function(n,t){function e(n,e){var r,u,i,a=n.length,f=e.length,h=Math.min(a,f),g=new Array(f),p=new Array(f),v=new Array(a);if(t){var d,m=new o,y=new o,x=[];for(r=-1;++rr;++r)p[r]=q(e[r]);for(;a>r;++r)v[r]=n[r]}p.update=g,p.parentNode=g.parentNode=v.parentNode=n.parentNode,c.push(p),s.push(g),l.push(v)}var r,u,i=-1,a=this.length;if(!arguments.length){for(n=new Array(a=(r=this[0]).length);++ii;i++){u.push(t=[]),t.parentNode=(e=this[i]).parentNode;for(var a=0,c=e.length;c>a;a++)(r=e[a])&&n.call(r,r.__data__,a,i)&&t.push(r)}return _(u)},pa.order=function(){for(var n=-1,t=this.length;++n=0;)(e=r[u])&&(i&&i!==e.nextSibling&&i.parentNode.insertBefore(e,i),i=e);return this},pa.sort=function(n){n=D.apply(this,arguments);for(var t=-1,e=this.length;++tn;n++)for(var e=this[n],r=0,u=e.length;u>r;r++){var i=e[r];if(i)return i}return null},pa.size=function(){var n=0;return this.each(function(){++n}),n};var da=[];Zo.selection.enter=U,Zo.selection.enter.prototype=da,da.append=pa.append,da.empty=pa.empty,da.node=pa.node,da.call=pa.call,da.size=pa.size,da.select=function(n){for(var t,e,r,u,i,o=[],a=-1,c=this.length;++ar){if("string"!=typeof n){2>r&&(t=!1);for(e in n)this.each(F(e,n[e],t));return this}if(2>r)return(r=this.node()["__on"+n])&&r._;e=!1}return this.each(F(n,t,e))};var ya=Zo.map({mouseenter:"mouseover",mouseleave:"mouseout"});ya.forEach(function(n){"on"+n in $o&&ya.remove(n)});var xa="onselectstart"in $o?null:p(Bo.style,"userSelect"),Ma=0;Zo.mouse=function(n){return Z(n,x())};var _a=/WebKit/.test(Wo.navigator.userAgent)?-1:0;Zo.touches=function(n,t){return arguments.length<2&&(t=x().touches),t?Xo(t).map(function(t){var e=Z(n,t);return e.identifier=t.identifier,e}):[]},Zo.behavior.drag=function(){function n(){this.on("mousedown.drag",u).on("touchstart.drag",i)}function t(n,t,u,i,o){return function(){function a(){var n,e,r=t(h,v);r&&(n=r[0]-x[0],e=r[1]-x[1],p|=n|e,x=r,g({type:"drag",x:r[0]+s[0],y:r[1]+s[1],dx:n,dy:e}))}function c(){t(h,v)&&(m.on(i+d,null).on(o+d,null),y(p&&Zo.event.target===f),g({type:"dragend"}))}var s,l=this,f=Zo.event.target,h=l.parentNode,g=e.of(l,arguments),p=0,v=n(),d=".drag"+(null==v?"":"-"+v),m=Zo.select(u()).on(i+d,a).on(o+d,c),y=I(),x=t(h,v);r?(s=r.apply(l,arguments),s=[s.x-x[0],s.y-x[1]]):s=[0,0],g({type:"dragstart"})}}var e=M(n,"drag","dragstart","dragend"),r=null,u=t(v,Zo.mouse,$,"mousemove","mouseup"),i=t(V,Zo.touch,X,"touchmove","touchend");return n.origin=function(t){return arguments.length?(r=t,n):r},Zo.rebind(n,e,"on")};var ba=Math.PI,wa=2*ba,Sa=ba/2,ka=1e-6,Ea=ka*ka,Aa=ba/180,Ca=180/ba,Na=Math.SQRT2,za=2,La=4;Zo.interpolateZoom=function(n,t){function e(n){var t=n*y;if(m){var e=Q(v),o=i/(za*h)*(e*nt(Na*t+v)-K(v));return[r+o*s,u+o*l,i*e/Q(Na*t+v)]}return[r+n*s,u+n*l,i*Math.exp(Na*t)]}var r=n[0],u=n[1],i=n[2],o=t[0],a=t[1],c=t[2],s=o-r,l=a-u,f=s*s+l*l,h=Math.sqrt(f),g=(c*c-i*i+La*f)/(2*i*za*h),p=(c*c-i*i-La*f)/(2*c*za*h),v=Math.log(Math.sqrt(g*g+1)-g),d=Math.log(Math.sqrt(p*p+1)-p),m=d-v,y=(m||Math.log(c/i))/Na;return e.duration=1e3*y,e},Zo.behavior.zoom=function(){function n(n){n.on(A,s).on(Ra+".zoom",f).on("dblclick.zoom",h).on(z,l)}function t(n){return[(n[0]-S.x)/S.k,(n[1]-S.y)/S.k]}function e(n){return[n[0]*S.k+S.x,n[1]*S.k+S.y]}function r(n){S.k=Math.max(E[0],Math.min(E[1],n))}function u(n,t){t=e(t),S.x+=n[0]-t[0],S.y+=n[1]-t[1]}function i(){_&&_.domain(x.range().map(function(n){return(n-S.x)/S.k}).map(x.invert)),w&&w.domain(b.range().map(function(n){return(n-S.y)/S.k}).map(b.invert))}function o(n){n({type:"zoomstart"})}function a(n){i(),n({type:"zoom",scale:S.k,translate:[S.x,S.y]})}function c(n){n({type:"zoomend"})}function s(){function n(){l=1,u(Zo.mouse(r),h),a(s)}function e(){f.on(C,null).on(N,null),g(l&&Zo.event.target===i),c(s)}var r=this,i=Zo.event.target,s=L.of(r,arguments),l=0,f=Zo.select(Wo).on(C,n).on(N,e),h=t(Zo.mouse(r)),g=I();H.call(r),o(s)}function l(){function n(){var n=Zo.touches(g);return h=S.k,n.forEach(function(n){n.identifier in v&&(v[n.identifier]=t(n))}),n}function e(){var t=Zo.event.target;Zo.select(t).on(M,i).on(_,f),b.push(t);for(var e=Zo.event.changedTouches,o=0,c=e.length;c>o;++o)v[e[o].identifier]=null;var s=n(),l=Date.now();if(1===s.length){if(500>l-m){var h=s[0],g=v[h.identifier];r(2*S.k),u(h,g),y(),a(p)}m=l}else if(s.length>1){var h=s[0],x=s[1],w=h[0]-x[0],k=h[1]-x[1];d=w*w+k*k}}function i(){for(var n,t,e,i,o=Zo.touches(g),c=0,s=o.length;s>c;++c,i=null)if(e=o[c],i=v[e.identifier]){if(t)break;n=e,t=i}if(i){var l=(l=e[0]-n[0])*l+(l=e[1]-n[1])*l,f=d&&Math.sqrt(l/d);n=[(n[0]+e[0])/2,(n[1]+e[1])/2],t=[(t[0]+i[0])/2,(t[1]+i[1])/2],r(f*h)}m=null,u(n,t),a(p)}function f(){if(Zo.event.touches.length){for(var t=Zo.event.changedTouches,e=0,r=t.length;r>e;++e)delete v[t[e].identifier];for(var u in v)return void n()}Zo.selectAll(b).on(x,null),w.on(A,s).on(z,l),k(),c(p)}var h,g=this,p=L.of(g,arguments),v={},d=0,x=".zoom-"+Zo.event.changedTouches[0].identifier,M="touchmove"+x,_="touchend"+x,b=[],w=Zo.select(g).on(A,null).on(z,e),k=I();H.call(g),e(),o(p)}function f(){var n=L.of(this,arguments);d?clearTimeout(d):(g=t(p=v||Zo.mouse(this)),H.call(this),o(n)),d=setTimeout(function(){d=null,c(n)},50),y(),r(Math.pow(2,.002*Ta())*S.k),u(p,g),a(n)}function h(){var n=L.of(this,arguments),e=Zo.mouse(this),i=t(e),s=Math.log(S.k)/Math.LN2;o(n),r(Math.pow(2,Zo.event.shiftKey?Math.ceil(s)-1:Math.floor(s)+1)),u(e,i),a(n),c(n)}var g,p,v,d,m,x,_,b,w,S={x:0,y:0,k:1},k=[960,500],E=qa,A="mousedown.zoom",C="mousemove.zoom",N="mouseup.zoom",z="touchstart.zoom",L=M(n,"zoomstart","zoom","zoomend");return n.event=function(n){n.each(function(){var n=L.of(this,arguments),t=S;Ss?Zo.select(this).transition().each("start.zoom",function(){S=this.__chart__||{x:0,y:0,k:1},o(n)}).tween("zoom:zoom",function(){var e=k[0],r=k[1],u=e/2,i=r/2,o=Zo.interpolateZoom([(u-S.x)/S.k,(i-S.y)/S.k,e/S.k],[(u-t.x)/t.k,(i-t.y)/t.k,e/t.k]);return function(t){var r=o(t),c=e/r[2];this.__chart__=S={x:u-r[0]*c,y:i-r[1]*c,k:c},a(n)}}).each("end.zoom",function(){c(n)}):(this.__chart__=S,o(n),a(n),c(n))})},n.translate=function(t){return arguments.length?(S={x:+t[0],y:+t[1],k:S.k},i(),n):[S.x,S.y]},n.scale=function(t){return arguments.length?(S={x:S.x,y:S.y,k:+t},i(),n):S.k},n.scaleExtent=function(t){return arguments.length?(E=null==t?qa:[+t[0],+t[1]],n):E},n.center=function(t){return arguments.length?(v=t&&[+t[0],+t[1]],n):v},n.size=function(t){return arguments.length?(k=t&&[+t[0],+t[1]],n):k},n.x=function(t){return arguments.length?(_=t,x=t.copy(),S={x:0,y:0,k:1},n):_},n.y=function(t){return arguments.length?(w=t,b=t.copy(),S={x:0,y:0,k:1},n):w},Zo.rebind(n,L,"on")};var Ta,qa=[0,1/0],Ra="onwheel"in $o?(Ta=function(){return-Zo.event.deltaY*(Zo.event.deltaMode?120:1)},"wheel"):"onmousewheel"in $o?(Ta=function(){return Zo.event.wheelDelta},"mousewheel"):(Ta=function(){return-Zo.event.detail},"MozMousePixelScroll");Zo.color=et,et.prototype.toString=function(){return this.rgb()+""},Zo.hsl=rt;var Da=rt.prototype=new et;Da.brighter=function(n){return n=Math.pow(.7,arguments.length?n:1),new rt(this.h,this.s,this.l/n)},Da.darker=function(n){return n=Math.pow(.7,arguments.length?n:1),new rt(this.h,this.s,n*this.l)},Da.rgb=function(){return ut(this.h,this.s,this.l)},Zo.hcl=it;var Pa=it.prototype=new et;Pa.brighter=function(n){return new it(this.h,this.c,Math.min(100,this.l+Ua*(arguments.length?n:1)))},Pa.darker=function(n){return new it(this.h,this.c,Math.max(0,this.l-Ua*(arguments.length?n:1)))},Pa.rgb=function(){return ot(this.h,this.c,this.l).rgb()},Zo.lab=at;var Ua=18,ja=.95047,Ha=1,Fa=1.08883,Oa=at.prototype=new et;Oa.brighter=function(n){return new at(Math.min(100,this.l+Ua*(arguments.length?n:1)),this.a,this.b)},Oa.darker=function(n){return new at(Math.max(0,this.l-Ua*(arguments.length?n:1)),this.a,this.b)},Oa.rgb=function(){return ct(this.l,this.a,this.b)},Zo.rgb=gt;var Ya=gt.prototype=new et;Ya.brighter=function(n){n=Math.pow(.7,arguments.length?n:1);var t=this.r,e=this.g,r=this.b,u=30;return t||e||r?(t&&u>t&&(t=u),e&&u>e&&(e=u),r&&u>r&&(r=u),new gt(Math.min(255,t/n),Math.min(255,e/n),Math.min(255,r/n))):new gt(u,u,u)},Ya.darker=function(n){return n=Math.pow(.7,arguments.length?n:1),new gt(n*this.r,n*this.g,n*this.b)},Ya.hsl=function(){return yt(this.r,this.g,this.b)},Ya.toString=function(){return"#"+dt(this.r)+dt(this.g)+dt(this.b)};var Ia=Zo.map({aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074});Ia.forEach(function(n,t){Ia.set(n,pt(t))}),Zo.functor=bt,Zo.xhr=St(wt),Zo.dsv=function(n,t){function e(n,e,i){arguments.length<3&&(i=e,e=null);var o=kt(n,t,null==e?r:u(e),i);return o.row=function(n){return arguments.length?o.response(null==(e=n)?r:u(n)):e},o}function r(n){return e.parse(n.responseText)}function u(n){return function(t){return e.parse(t.responseText,n)}}function i(t){return t.map(o).join(n)}function o(n){return a.test(n)?'"'+n.replace(/\"/g,'""')+'"':n}var a=new RegExp('["'+n+"\n]"),c=n.charCodeAt(0);return e.parse=function(n,t){var r;return e.parseRows(n,function(n,e){if(r)return r(n,e-1);var u=new Function("d","return {"+n.map(function(n,t){return JSON.stringify(n)+": d["+t+"]"}).join(",")+"}");r=t?function(n,e){return t(u(n),e)}:u})},e.parseRows=function(n,t){function e(){if(l>=s)return o;if(u)return u=!1,i;var t=l;if(34===n.charCodeAt(t)){for(var e=t;e++l;){var r=n.charCodeAt(l++),a=1;if(10===r)u=!0;else if(13===r)u=!0,10===n.charCodeAt(l)&&(++l,++a);else if(r!==c)continue;return n.substring(t,l-a)}return n.substring(t)}for(var r,u,i={},o={},a=[],s=n.length,l=0,f=0;(r=e())!==o;){for(var h=[];r!==i&&r!==o;)h.push(r),r=e();(!t||(h=t(h,f++)))&&a.push(h)}return a},e.format=function(t){if(Array.isArray(t[0]))return e.formatRows(t);var r=new h,u=[];return t.forEach(function(n){for(var t in n)r.has(t)||u.push(r.add(t))}),[u.map(o).join(n)].concat(t.map(function(t){return u.map(function(n){return o(t[n])}).join(n)})).join("\n")},e.formatRows=function(n){return n.map(i).join("\n")},e},Zo.csv=Zo.dsv(",","text/csv"),Zo.tsv=Zo.dsv(" ","text/tab-separated-values"),Zo.touch=function(n,t,e){if(arguments.length<3&&(e=t,t=x().changedTouches),t)for(var r,u=0,i=t.length;i>u;++u)if((r=t[u]).identifier===e)return Z(n,r)};var Za,Va,Xa,$a,Ba,Wa=Wo[p(Wo,"requestAnimationFrame")]||function(n){setTimeout(n,17)};Zo.timer=function(n,t,e){var r=arguments.length;2>r&&(t=0),3>r&&(e=Date.now());var u=e+t,i={c:n,t:u,f:!1,n:null};Va?Va.n=i:Za=i,Va=i,Xa||($a=clearTimeout($a),Xa=1,Wa(At))},Zo.timer.flush=function(){Ct(),Nt()},Zo.round=function(n,t){return t?Math.round(n*(t=Math.pow(10,t)))/t:Math.round(n)};var Ja=["y","z","a","f","p","n","\xb5","m","","k","M","G","T","P","E","Z","Y"].map(Lt);Zo.formatPrefix=function(n,t){var e=0;return n&&(0>n&&(n*=-1),t&&(n=Zo.round(n,zt(n,t))),e=1+Math.floor(1e-12+Math.log(n)/Math.LN10),e=Math.max(-24,Math.min(24,3*Math.floor((e-1)/3)))),Ja[8+e/3]};var Ga=/(?:([^{])?([<>=^]))?([+\- ])?([$#])?(0)?(\d+)?(,)?(\.-?\d+)?([a-z%])?/i,Ka=Zo.map({b:function(n){return n.toString(2)},c:function(n){return String.fromCharCode(n)},o:function(n){return n.toString(8)},x:function(n){return n.toString(16)},X:function(n){return n.toString(16).toUpperCase()},g:function(n,t){return n.toPrecision(t)},e:function(n,t){return n.toExponential(t)},f:function(n,t){return n.toFixed(t)},r:function(n,t){return(n=Zo.round(n,zt(n,t))).toFixed(Math.max(0,Math.min(20,zt(n*(1+1e-15),t))))}}),Qa=Zo.time={},nc=Date;Rt.prototype={getDate:function(){return this._.getUTCDate()},getDay:function(){return this._.getUTCDay()},getFullYear:function(){return this._.getUTCFullYear()},getHours:function(){return this._.getUTCHours()},getMilliseconds:function(){return this._.getUTCMilliseconds()},getMinutes:function(){return this._.getUTCMinutes()},getMonth:function(){return this._.getUTCMonth()},getSeconds:function(){return this._.getUTCSeconds()},getTime:function(){return this._.getTime()},getTimezoneOffset:function(){return 0},valueOf:function(){return this._.valueOf()},setDate:function(){tc.setUTCDate.apply(this._,arguments)},setDay:function(){tc.setUTCDay.apply(this._,arguments)},setFullYear:function(){tc.setUTCFullYear.apply(this._,arguments)},setHours:function(){tc.setUTCHours.apply(this._,arguments)},setMilliseconds:function(){tc.setUTCMilliseconds.apply(this._,arguments)},setMinutes:function(){tc.setUTCMinutes.apply(this._,arguments)},setMonth:function(){tc.setUTCMonth.apply(this._,arguments)},setSeconds:function(){tc.setUTCSeconds.apply(this._,arguments)},setTime:function(){tc.setTime.apply(this._,arguments)}};var tc=Date.prototype;Qa.year=Dt(function(n){return n=Qa.day(n),n.setMonth(0,1),n},function(n,t){n.setFullYear(n.getFullYear()+t)},function(n){return n.getFullYear()}),Qa.years=Qa.year.range,Qa.years.utc=Qa.year.utc.range,Qa.day=Dt(function(n){var t=new nc(2e3,0);return t.setFullYear(n.getFullYear(),n.getMonth(),n.getDate()),t},function(n,t){n.setDate(n.getDate()+t)},function(n){return n.getDate()-1}),Qa.days=Qa.day.range,Qa.days.utc=Qa.day.utc.range,Qa.dayOfYear=function(n){var t=Qa.year(n);return Math.floor((n-t-6e4*(n.getTimezoneOffset()-t.getTimezoneOffset()))/864e5)},["sunday","monday","tuesday","wednesday","thursday","friday","saturday"].forEach(function(n,t){t=7-t;var e=Qa[n]=Dt(function(n){return(n=Qa.day(n)).setDate(n.getDate()-(n.getDay()+t)%7),n},function(n,t){n.setDate(n.getDate()+7*Math.floor(t))},function(n){var e=Qa.year(n).getDay();return Math.floor((Qa.dayOfYear(n)+(e+t)%7)/7)-(e!==t)});Qa[n+"s"]=e.range,Qa[n+"s"].utc=e.utc.range,Qa[n+"OfYear"]=function(n){var e=Qa.year(n).getDay();return Math.floor((Qa.dayOfYear(n)+(e+t)%7)/7)}}),Qa.week=Qa.sunday,Qa.weeks=Qa.sunday.range,Qa.weeks.utc=Qa.sunday.utc.range,Qa.weekOfYear=Qa.sundayOfYear;var ec={"-":"",_:" ",0:"0"},rc=/^\s*\d+/,uc=/^%/;Zo.locale=function(n){return{numberFormat:Tt(n),timeFormat:Ut(n)}};var ic=Zo.locale({decimal:".",thousands:",",grouping:[3],currency:["$",""],dateTime:"%a %b %e %X %Y",date:"%m/%d/%Y",time:"%H:%M:%S",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});Zo.format=ic.numberFormat,Zo.geo={},ue.prototype={s:0,t:0,add:function(n){ie(n,this.t,oc),ie(oc.s,this.s,this),this.s?this.t+=oc.t:this.s=oc.t},reset:function(){this.s=this.t=0},valueOf:function(){return this.s}};var oc=new ue;Zo.geo.stream=function(n,t){n&&ac.hasOwnProperty(n.type)?ac[n.type](n,t):oe(n,t)};var ac={Feature:function(n,t){oe(n.geometry,t)},FeatureCollection:function(n,t){for(var e=n.features,r=-1,u=e.length;++rn?4*ba+n:n,fc.lineStart=fc.lineEnd=fc.point=v}};Zo.geo.bounds=function(){function n(n,t){x.push(M=[l=n,h=n]),f>t&&(f=t),t>g&&(g=t)}function t(t,e){var r=le([t*Aa,e*Aa]);if(m){var u=he(m,r),i=[u[1],-u[0],0],o=he(i,u);ve(o),o=de(o);var c=t-p,s=c>0?1:-1,v=o[0]*Ca*s,d=ua(c)>180;if(d^(v>s*p&&s*t>v)){var y=o[1]*Ca;y>g&&(g=y)}else if(v=(v+360)%360-180,d^(v>s*p&&s*t>v)){var y=-o[1]*Ca;f>y&&(f=y)}else f>e&&(f=e),e>g&&(g=e);d?p>t?a(l,t)>a(l,h)&&(h=t):a(t,h)>a(l,h)&&(l=t):h>=l?(l>t&&(l=t),t>h&&(h=t)):t>p?a(l,t)>a(l,h)&&(h=t):a(t,h)>a(l,h)&&(l=t)}else n(t,e);m=r,p=t}function e(){_.point=t}function r(){M[0]=l,M[1]=h,_.point=n,m=null}function u(n,e){if(m){var r=n-p;y+=ua(r)>180?r+(r>0?360:-360):r}else v=n,d=e;fc.point(n,e),t(n,e)}function i(){fc.lineStart()}function o(){u(v,d),fc.lineEnd(),ua(y)>ka&&(l=-(h=180)),M[0]=l,M[1]=h,m=null}function a(n,t){return(t-=n)<0?t+360:t}function c(n,t){return n[0]-t[0]}function s(n,t){return t[0]<=t[1]?t[0]<=n&&n<=t[1]:nlc?(l=-(h=180),f=-(g=90)):y>ka?g=90:-ka>y&&(f=-90),M[0]=l,M[1]=h}};return function(n){g=h=-(l=f=1/0),x=[],Zo.geo.stream(n,_);var t=x.length;if(t){x.sort(c);for(var e,r=1,u=x[0],i=[u];t>r;++r)e=x[r],s(e[0],u)||s(e[1],u)?(a(u[0],e[1])>a(u[0],u[1])&&(u[1]=e[1]),a(e[0],u[1])>a(u[0],u[1])&&(u[0]=e[0])):i.push(u=e); -for(var o,e,p=-1/0,t=i.length-1,r=0,u=i[t];t>=r;u=e,++r)e=i[r],(o=a(u[1],e[0]))>p&&(p=o,l=e[0],h=u[1])}return x=M=null,1/0===l||1/0===f?[[0/0,0/0],[0/0,0/0]]:[[l,f],[h,g]]}}(),Zo.geo.centroid=function(n){hc=gc=pc=vc=dc=mc=yc=xc=Mc=_c=bc=0,Zo.geo.stream(n,wc);var t=Mc,e=_c,r=bc,u=t*t+e*e+r*r;return Ea>u&&(t=mc,e=yc,r=xc,ka>gc&&(t=pc,e=vc,r=dc),u=t*t+e*e+r*r,Ea>u)?[0/0,0/0]:[Math.atan2(e,t)*Ca,G(r/Math.sqrt(u))*Ca]};var hc,gc,pc,vc,dc,mc,yc,xc,Mc,_c,bc,wc={sphere:v,point:ye,lineStart:Me,lineEnd:_e,polygonStart:function(){wc.lineStart=be},polygonEnd:function(){wc.lineStart=Me}},Sc=Ae(we,Te,Re,[-ba,-ba/2]),kc=1e9;Zo.geo.clipExtent=function(){var n,t,e,r,u,i,o={stream:function(n){return u&&(u.valid=!1),u=i(n),u.valid=!0,u},extent:function(a){return arguments.length?(i=Ue(n=+a[0][0],t=+a[0][1],e=+a[1][0],r=+a[1][1]),u&&(u.valid=!1,u=null),o):[[n,t],[e,r]]}};return o.extent([[0,0],[960,500]])},(Zo.geo.conicEqualArea=function(){return He(Fe)}).raw=Fe,Zo.geo.albers=function(){return Zo.geo.conicEqualArea().rotate([96,0]).center([-.6,38.7]).parallels([29.5,45.5]).scale(1070)},Zo.geo.albersUsa=function(){function n(n){var i=n[0],o=n[1];return t=null,e(i,o),t||(r(i,o),t)||u(i,o),t}var t,e,r,u,i=Zo.geo.albers(),o=Zo.geo.conicEqualArea().rotate([154,0]).center([-2,58.5]).parallels([55,65]),a=Zo.geo.conicEqualArea().rotate([157,0]).center([-3,19.9]).parallels([8,18]),c={point:function(n,e){t=[n,e]}};return n.invert=function(n){var t=i.scale(),e=i.translate(),r=(n[0]-e[0])/t,u=(n[1]-e[1])/t;return(u>=.12&&.234>u&&r>=-.425&&-.214>r?o:u>=.166&&.234>u&&r>=-.214&&-.115>r?a:i).invert(n)},n.stream=function(n){var t=i.stream(n),e=o.stream(n),r=a.stream(n);return{point:function(n,u){t.point(n,u),e.point(n,u),r.point(n,u)},sphere:function(){t.sphere(),e.sphere(),r.sphere()},lineStart:function(){t.lineStart(),e.lineStart(),r.lineStart()},lineEnd:function(){t.lineEnd(),e.lineEnd(),r.lineEnd()},polygonStart:function(){t.polygonStart(),e.polygonStart(),r.polygonStart()},polygonEnd:function(){t.polygonEnd(),e.polygonEnd(),r.polygonEnd()}}},n.precision=function(t){return arguments.length?(i.precision(t),o.precision(t),a.precision(t),n):i.precision()},n.scale=function(t){return arguments.length?(i.scale(t),o.scale(.35*t),a.scale(t),n.translate(i.translate())):i.scale()},n.translate=function(t){if(!arguments.length)return i.translate();var s=i.scale(),l=+t[0],f=+t[1];return e=i.translate(t).clipExtent([[l-.455*s,f-.238*s],[l+.455*s,f+.238*s]]).stream(c).point,r=o.translate([l-.307*s,f+.201*s]).clipExtent([[l-.425*s+ka,f+.12*s+ka],[l-.214*s-ka,f+.234*s-ka]]).stream(c).point,u=a.translate([l-.205*s,f+.212*s]).clipExtent([[l-.214*s+ka,f+.166*s+ka],[l-.115*s-ka,f+.234*s-ka]]).stream(c).point,n},n.scale(1070)};var Ec,Ac,Cc,Nc,zc,Lc,Tc={point:v,lineStart:v,lineEnd:v,polygonStart:function(){Ac=0,Tc.lineStart=Oe},polygonEnd:function(){Tc.lineStart=Tc.lineEnd=Tc.point=v,Ec+=ua(Ac/2)}},qc={point:Ye,lineStart:v,lineEnd:v,polygonStart:v,polygonEnd:v},Rc={point:Ve,lineStart:Xe,lineEnd:$e,polygonStart:function(){Rc.lineStart=Be},polygonEnd:function(){Rc.point=Ve,Rc.lineStart=Xe,Rc.lineEnd=$e}};Zo.geo.path=function(){function n(n){return n&&("function"==typeof a&&i.pointRadius(+a.apply(this,arguments)),o&&o.valid||(o=u(i)),Zo.geo.stream(n,o)),i.result()}function t(){return o=null,n}var e,r,u,i,o,a=4.5;return n.area=function(n){return Ec=0,Zo.geo.stream(n,u(Tc)),Ec},n.centroid=function(n){return pc=vc=dc=mc=yc=xc=Mc=_c=bc=0,Zo.geo.stream(n,u(Rc)),bc?[Mc/bc,_c/bc]:xc?[mc/xc,yc/xc]:dc?[pc/dc,vc/dc]:[0/0,0/0]},n.bounds=function(n){return zc=Lc=-(Cc=Nc=1/0),Zo.geo.stream(n,u(qc)),[[Cc,Nc],[zc,Lc]]},n.projection=function(n){return arguments.length?(u=(e=n)?n.stream||Ge(n):wt,t()):e},n.context=function(n){return arguments.length?(i=null==(r=n)?new Ie:new We(n),"function"!=typeof a&&i.pointRadius(a),t()):r},n.pointRadius=function(t){return arguments.length?(a="function"==typeof t?t:(i.pointRadius(+t),+t),n):a},n.projection(Zo.geo.albersUsa()).context(null)},Zo.geo.transform=function(n){return{stream:function(t){var e=new Ke(t);for(var r in n)e[r]=n[r];return e}}},Ke.prototype={point:function(n,t){this.stream.point(n,t)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}},Zo.geo.projection=nr,Zo.geo.projectionMutator=tr,(Zo.geo.equirectangular=function(){return nr(rr)}).raw=rr.invert=rr,Zo.geo.rotation=function(n){function t(t){return t=n(t[0]*Aa,t[1]*Aa),t[0]*=Ca,t[1]*=Ca,t}return n=ir(n[0]%360*Aa,n[1]*Aa,n.length>2?n[2]*Aa:0),t.invert=function(t){return t=n.invert(t[0]*Aa,t[1]*Aa),t[0]*=Ca,t[1]*=Ca,t},t},ur.invert=rr,Zo.geo.circle=function(){function n(){var n="function"==typeof r?r.apply(this,arguments):r,t=ir(-n[0]*Aa,-n[1]*Aa,0).invert,u=[];return e(null,null,1,{point:function(n,e){u.push(n=t(n,e)),n[0]*=Ca,n[1]*=Ca}}),{type:"Polygon",coordinates:[u]}}var t,e,r=[0,0],u=6;return n.origin=function(t){return arguments.length?(r=t,n):r},n.angle=function(r){return arguments.length?(e=sr((t=+r)*Aa,u*Aa),n):t},n.precision=function(r){return arguments.length?(e=sr(t*Aa,(u=+r)*Aa),n):u},n.angle(90)},Zo.geo.distance=function(n,t){var e,r=(t[0]-n[0])*Aa,u=n[1]*Aa,i=t[1]*Aa,o=Math.sin(r),a=Math.cos(r),c=Math.sin(u),s=Math.cos(u),l=Math.sin(i),f=Math.cos(i);return Math.atan2(Math.sqrt((e=f*o)*e+(e=s*l-c*f*a)*e),c*l+s*f*a)},Zo.geo.graticule=function(){function n(){return{type:"MultiLineString",coordinates:t()}}function t(){return Zo.range(Math.ceil(i/d)*d,u,d).map(h).concat(Zo.range(Math.ceil(s/m)*m,c,m).map(g)).concat(Zo.range(Math.ceil(r/p)*p,e,p).filter(function(n){return ua(n%d)>ka}).map(l)).concat(Zo.range(Math.ceil(a/v)*v,o,v).filter(function(n){return ua(n%m)>ka}).map(f))}var e,r,u,i,o,a,c,s,l,f,h,g,p=10,v=p,d=90,m=360,y=2.5;return n.lines=function(){return t().map(function(n){return{type:"LineString",coordinates:n}})},n.outline=function(){return{type:"Polygon",coordinates:[h(i).concat(g(c).slice(1),h(u).reverse().slice(1),g(s).reverse().slice(1))]}},n.extent=function(t){return arguments.length?n.majorExtent(t).minorExtent(t):n.minorExtent()},n.majorExtent=function(t){return arguments.length?(i=+t[0][0],u=+t[1][0],s=+t[0][1],c=+t[1][1],i>u&&(t=i,i=u,u=t),s>c&&(t=s,s=c,c=t),n.precision(y)):[[i,s],[u,c]]},n.minorExtent=function(t){return arguments.length?(r=+t[0][0],e=+t[1][0],a=+t[0][1],o=+t[1][1],r>e&&(t=r,r=e,e=t),a>o&&(t=a,a=o,o=t),n.precision(y)):[[r,a],[e,o]]},n.step=function(t){return arguments.length?n.majorStep(t).minorStep(t):n.minorStep()},n.majorStep=function(t){return arguments.length?(d=+t[0],m=+t[1],n):[d,m]},n.minorStep=function(t){return arguments.length?(p=+t[0],v=+t[1],n):[p,v]},n.precision=function(t){return arguments.length?(y=+t,l=fr(a,o,90),f=hr(r,e,y),h=fr(s,c,90),g=hr(i,u,y),n):y},n.majorExtent([[-180,-90+ka],[180,90-ka]]).minorExtent([[-180,-80-ka],[180,80+ka]])},Zo.geo.greatArc=function(){function n(){return{type:"LineString",coordinates:[t||r.apply(this,arguments),e||u.apply(this,arguments)]}}var t,e,r=gr,u=pr;return n.distance=function(){return Zo.geo.distance(t||r.apply(this,arguments),e||u.apply(this,arguments))},n.source=function(e){return arguments.length?(r=e,t="function"==typeof e?null:e,n):r},n.target=function(t){return arguments.length?(u=t,e="function"==typeof t?null:t,n):u},n.precision=function(){return arguments.length?n:0},n},Zo.geo.interpolate=function(n,t){return vr(n[0]*Aa,n[1]*Aa,t[0]*Aa,t[1]*Aa)},Zo.geo.length=function(n){return Dc=0,Zo.geo.stream(n,Pc),Dc};var Dc,Pc={sphere:v,point:v,lineStart:dr,lineEnd:v,polygonStart:v,polygonEnd:v},Uc=mr(function(n){return Math.sqrt(2/(1+n))},function(n){return 2*Math.asin(n/2)});(Zo.geo.azimuthalEqualArea=function(){return nr(Uc)}).raw=Uc;var jc=mr(function(n){var t=Math.acos(n);return t&&t/Math.sin(t)},wt);(Zo.geo.azimuthalEquidistant=function(){return nr(jc)}).raw=jc,(Zo.geo.conicConformal=function(){return He(yr)}).raw=yr,(Zo.geo.conicEquidistant=function(){return He(xr)}).raw=xr;var Hc=mr(function(n){return 1/n},Math.atan);(Zo.geo.gnomonic=function(){return nr(Hc)}).raw=Hc,Mr.invert=function(n,t){return[n,2*Math.atan(Math.exp(t))-Sa]},(Zo.geo.mercator=function(){return _r(Mr)}).raw=Mr;var Fc=mr(function(){return 1},Math.asin);(Zo.geo.orthographic=function(){return nr(Fc)}).raw=Fc;var Oc=mr(function(n){return 1/(1+n)},function(n){return 2*Math.atan(n)});(Zo.geo.stereographic=function(){return nr(Oc)}).raw=Oc,br.invert=function(n,t){return[-t,2*Math.atan(Math.exp(n))-Sa]},(Zo.geo.transverseMercator=function(){var n=_r(br),t=n.center,e=n.rotate;return n.center=function(n){return n?t([-n[1],n[0]]):(n=t(),[n[1],-n[0]])},n.rotate=function(n){return n?e([n[0],n[1],n.length>2?n[2]+90:90]):(n=e(),[n[0],n[1],n[2]-90])},e([0,0,90])}).raw=br,Zo.geom={},Zo.geom.hull=function(n){function t(n){if(n.length<3)return[];var t,u=bt(e),i=bt(r),o=n.length,a=[],c=[];for(t=0;o>t;t++)a.push([+u.call(this,n[t],t),+i.call(this,n[t],t),t]);for(a.sort(Er),t=0;o>t;t++)c.push([a[t][0],-a[t][1]]);var s=kr(a),l=kr(c),f=l[0]===s[0],h=l[l.length-1]===s[s.length-1],g=[];for(t=s.length-1;t>=0;--t)g.push(n[a[s[t]][2]]);for(t=+f;t=r&&s.x<=i&&s.y>=u&&s.y<=o?[[r,o],[i,o],[i,u],[r,u]]:[];l.point=n[a]}),t}function e(n){return n.map(function(n,t){return{x:Math.round(i(n,t)/ka)*ka,y:Math.round(o(n,t)/ka)*ka,i:t}})}var r=wr,u=Sr,i=r,o=u,a=Jc;return n?t(n):(t.links=function(n){return tu(e(n)).edges.filter(function(n){return n.l&&n.r}).map(function(t){return{source:n[t.l.i],target:n[t.r.i]}})},t.triangles=function(n){var t=[];return tu(e(n)).cells.forEach(function(e,r){for(var u,i,o=e.site,a=e.edges.sort(Hr),c=-1,s=a.length,l=a[s-1].edge,f=l.l===o?l.r:l.l;++c=s,h=r>=l,g=(h<<1)+f;n.leaf=!1,n=n.nodes[g]||(n.nodes[g]=ou()),f?u=s:a=s,h?o=l:c=l,i(n,t,e,r,u,o,a,c)}var l,f,h,g,p,v,d,m,y,x=bt(a),M=bt(c);if(null!=t)v=t,d=e,m=r,y=u;else if(m=y=-(v=d=1/0),f=[],h=[],p=n.length,o)for(g=0;p>g;++g)l=n[g],l.xm&&(m=l.x),l.y>y&&(y=l.y),f.push(l.x),h.push(l.y);else for(g=0;p>g;++g){var _=+x(l=n[g],g),b=+M(l,g);v>_&&(v=_),d>b&&(d=b),_>m&&(m=_),b>y&&(y=b),f.push(_),h.push(b)}var w=m-v,S=y-d;w>S?y=d+w:m=v+S;var k=ou();if(k.add=function(n){i(k,n,+x(n,++g),+M(n,g),v,d,m,y)},k.visit=function(n){au(n,k,v,d,m,y)},g=-1,null==t){for(;++g=0?n.substring(0,t):n,r=t>=0?n.substring(t+1):"in";return e=ns.get(e)||Qc,r=ts.get(r)||wt,pu(r(e.apply(null,Vo.call(arguments,1))))},Zo.interpolateHcl=Au,Zo.interpolateHsl=Cu,Zo.interpolateLab=Nu,Zo.interpolateRound=zu,Zo.transform=function(n){var t=$o.createElementNS(Zo.ns.prefix.svg,"g");return(Zo.transform=function(n){if(null!=n){t.setAttribute("transform",n);var e=t.transform.baseVal.consolidate()}return new Lu(e?e.matrix:es)})(n)},Lu.prototype.toString=function(){return"translate("+this.translate+")rotate("+this.rotate+")skewX("+this.skew+")scale("+this.scale+")"};var es={a:1,b:0,c:0,d:1,e:0,f:0};Zo.interpolateTransform=Du,Zo.layout={},Zo.layout.bundle=function(){return function(n){for(var t=[],e=-1,r=n.length;++ea*a/d){if(p>c){var s=t.charge/c;n.px-=i*s,n.py-=o*s}return!0}if(t.point&&c&&p>c){var s=t.pointCharge/c;n.px-=i*s,n.py-=o*s}}return!t.charge}}function t(n){n.px=Zo.event.x,n.py=Zo.event.y,a.resume()}var e,r,u,i,o,a={},c=Zo.dispatch("start","tick","end"),s=[1,1],l=.9,f=rs,h=us,g=-30,p=is,v=.1,d=.64,m=[],y=[];return a.tick=function(){if((r*=.99)<.005)return c.end({type:"end",alpha:r=0}),!0;var t,e,a,f,h,p,d,x,M,_=m.length,b=y.length;for(e=0;b>e;++e)a=y[e],f=a.source,h=a.target,x=h.x-f.x,M=h.y-f.y,(p=x*x+M*M)&&(p=r*i[e]*((p=Math.sqrt(p))-u[e])/p,x*=p,M*=p,h.x-=x*(d=f.weight/(h.weight+f.weight)),h.y-=M*d,f.x+=x*(d=1-d),f.y+=M*d);if((d=r*v)&&(x=s[0]/2,M=s[1]/2,e=-1,d))for(;++e<_;)a=m[e],a.x+=(x-a.x)*d,a.y+=(M-a.y)*d;if(g)for(Vu(t=Zo.geom.quadtree(m),r,o),e=-1;++e<_;)(a=m[e]).fixed||t.visit(n(a));for(e=-1;++e<_;)a=m[e],a.fixed?(a.x=a.px,a.y=a.py):(a.x-=(a.px-(a.px=a.x))*l,a.y-=(a.py-(a.py=a.y))*l);c.tick({type:"tick",alpha:r})},a.nodes=function(n){return arguments.length?(m=n,a):m},a.links=function(n){return arguments.length?(y=n,a):y},a.size=function(n){return arguments.length?(s=n,a):s},a.linkDistance=function(n){return arguments.length?(f="function"==typeof n?n:+n,a):f},a.distance=a.linkDistance,a.linkStrength=function(n){return arguments.length?(h="function"==typeof n?n:+n,a):h},a.friction=function(n){return arguments.length?(l=+n,a):l},a.charge=function(n){return arguments.length?(g="function"==typeof n?n:+n,a):g},a.chargeDistance=function(n){return arguments.length?(p=n*n,a):Math.sqrt(p)},a.gravity=function(n){return arguments.length?(v=+n,a):v},a.theta=function(n){return arguments.length?(d=n*n,a):Math.sqrt(d)},a.alpha=function(n){return arguments.length?(n=+n,r?r=n>0?n:0:n>0&&(c.start({type:"start",alpha:r=n}),Zo.timer(a.tick)),a):r},a.start=function(){function n(n,r){if(!e){for(e=new Array(c),a=0;c>a;++a)e[a]=[];for(a=0;s>a;++a){var u=y[a];e[u.source.index].push(u.target),e[u.target.index].push(u.source)}}for(var i,o=e[t],a=-1,s=o.length;++at;++t)(r=m[t]).index=t,r.weight=0;for(t=0;l>t;++t)r=y[t],"number"==typeof r.source&&(r.source=m[r.source]),"number"==typeof r.target&&(r.target=m[r.target]),++r.source.weight,++r.target.weight;for(t=0;c>t;++t)r=m[t],isNaN(r.x)&&(r.x=n("x",p)),isNaN(r.y)&&(r.y=n("y",v)),isNaN(r.px)&&(r.px=r.x),isNaN(r.py)&&(r.py=r.y);if(u=[],"function"==typeof f)for(t=0;l>t;++t)u[t]=+f.call(this,y[t],t);else for(t=0;l>t;++t)u[t]=f;if(i=[],"function"==typeof h)for(t=0;l>t;++t)i[t]=+h.call(this,y[t],t);else for(t=0;l>t;++t)i[t]=h;if(o=[],"function"==typeof g)for(t=0;c>t;++t)o[t]=+g.call(this,m[t],t);else for(t=0;c>t;++t)o[t]=g;return a.resume()},a.resume=function(){return a.alpha(.1)},a.stop=function(){return a.alpha(0)},a.drag=function(){return e||(e=Zo.behavior.drag().origin(wt).on("dragstart.force",Ou).on("drag.force",t).on("dragend.force",Yu)),arguments.length?(this.on("mouseover.force",Iu).on("mouseout.force",Zu).call(e),void 0):e},Zo.rebind(a,c,"on")};var rs=20,us=1,is=1/0;Zo.layout.hierarchy=function(){function n(u){var i,o=[u],a=[];for(u.depth=0;null!=(i=o.pop());)if(a.push(i),(s=e.call(n,i,i.depth))&&(c=s.length)){for(var c,s,l;--c>=0;)o.push(l=s[c]),l.parent=i,l.depth=i.depth+1;r&&(i.value=0),i.children=s}else r&&(i.value=+r.call(n,i,i.depth)||0),delete i.children;return Bu(u,function(n){var e,u;t&&(e=n.children)&&e.sort(t),r&&(u=n.parent)&&(u.value+=n.value)}),a}var t=Gu,e=Wu,r=Ju;return n.sort=function(e){return arguments.length?(t=e,n):t},n.children=function(t){return arguments.length?(e=t,n):e},n.value=function(t){return arguments.length?(r=t,n):r},n.revalue=function(t){return r&&($u(t,function(n){n.children&&(n.value=0)}),Bu(t,function(t){var e;t.children||(t.value=+r.call(n,t,t.depth)||0),(e=t.parent)&&(e.value+=t.value)})),t},n},Zo.layout.partition=function(){function n(t,e,r,u){var i=t.children;if(t.x=e,t.y=t.depth*u,t.dx=r,t.dy=u,i&&(o=i.length)){var o,a,c,s=-1;for(r=t.value?r/t.value:0;++sg;++g)for(u.call(n,s[0][g],p=v[g],l[0][g][1]),h=1;d>h;++h)u.call(n,s[h][g],p+=l[h-1][g][1],l[h][g][1]);return a}var t=wt,e=ei,r=ri,u=ti,i=Qu,o=ni;return n.values=function(e){return arguments.length?(t=e,n):t},n.order=function(t){return arguments.length?(e="function"==typeof t?t:as.get(t)||ei,n):e},n.offset=function(t){return arguments.length?(r="function"==typeof t?t:cs.get(t)||ri,n):r},n.x=function(t){return arguments.length?(i=t,n):i},n.y=function(t){return arguments.length?(o=t,n):o},n.out=function(t){return arguments.length?(u=t,n):u},n};var as=Zo.map({"inside-out":function(n){var t,e,r=n.length,u=n.map(ui),i=n.map(ii),o=Zo.range(r).sort(function(n,t){return u[n]-u[t]}),a=0,c=0,s=[],l=[];for(t=0;r>t;++t)e=o[t],c>a?(a+=i[e],s.push(e)):(c+=i[e],l.push(e));return l.reverse().concat(s)},reverse:function(n){return Zo.range(n.length).reverse()},"default":ei}),cs=Zo.map({silhouette:function(n){var t,e,r,u=n.length,i=n[0].length,o=[],a=0,c=[];for(e=0;i>e;++e){for(t=0,r=0;u>t;t++)r+=n[t][e][1];r>a&&(a=r),o.push(r)}for(e=0;i>e;++e)c[e]=(a-o[e])/2;return c},wiggle:function(n){var t,e,r,u,i,o,a,c,s,l=n.length,f=n[0],h=f.length,g=[];for(g[0]=c=s=0,e=1;h>e;++e){for(t=0,u=0;l>t;++t)u+=n[t][e][1];for(t=0,i=0,a=f[e][0]-f[e-1][0];l>t;++t){for(r=0,o=(n[t][e][1]-n[t][e-1][1])/(2*a);t>r;++r)o+=(n[r][e][1]-n[r][e-1][1])/a;i+=o*n[t][e][1]}g[e]=c-=u?i/u*a:0,s>c&&(s=c)}for(e=0;h>e;++e)g[e]-=s;return g},expand:function(n){var t,e,r,u=n.length,i=n[0].length,o=1/u,a=[];for(e=0;i>e;++e){for(t=0,r=0;u>t;t++)r+=n[t][e][1];if(r)for(t=0;u>t;t++)n[t][e][1]/=r;else for(t=0;u>t;t++)n[t][e][1]=o}for(e=0;i>e;++e)a[e]=0;return a},zero:ri});Zo.layout.histogram=function(){function n(n,i){for(var o,a,c=[],s=n.map(e,this),l=r.call(this,s,i),f=u.call(this,l,s,i),i=-1,h=s.length,g=f.length-1,p=t?1:1/h;++i0)for(i=-1;++i=l[0]&&a<=l[1]&&(o=c[Zo.bisect(f,a,1,g)-1],o.y+=p,o.push(n[i]));return c}var t=!0,e=Number,r=si,u=ai;return n.value=function(t){return arguments.length?(e=t,n):e},n.range=function(t){return arguments.length?(r=bt(t),n):r},n.bins=function(t){return arguments.length?(u="number"==typeof t?function(n){return ci(n,t)}:bt(t),n):u},n.frequency=function(e){return arguments.length?(t=!!e,n):t},n},Zo.layout.pack=function(){function n(n,i){var o=e.call(this,n,i),a=o[0],c=u[0],s=u[1],l=null==t?Math.sqrt:"function"==typeof t?t:function(){return t};if(a.x=a.y=0,Bu(a,function(n){n.r=+l(n.value)}),Bu(a,pi),r){var f=r*(t?1:Math.max(2*a.r/c,2*a.r/s))/2;Bu(a,function(n){n.r+=f}),Bu(a,pi),Bu(a,function(n){n.r-=f})}return mi(a,c/2,s/2,t?1:1/Math.max(2*a.r/c,2*a.r/s)),o}var t,e=Zo.layout.hierarchy().sort(li),r=0,u=[1,1];return n.size=function(t){return arguments.length?(u=t,n):u},n.radius=function(e){return arguments.length?(t=null==e||"function"==typeof e?e:+e,n):t},n.padding=function(t){return arguments.length?(r=+t,n):r},Xu(n,e)},Zo.layout.tree=function(){function n(n,u){var l=o.call(this,n,u),f=l[0],h=t(f);if(Bu(h,e),h.parent.m=-h.z,$u(h,r),s)$u(f,i);else{var g=f,p=f,v=f;$u(f,function(n){n.xp.x&&(p=n),n.depth>v.depth&&(v=n)});var d=a(g,p)/2-g.x,m=c[0]/(p.x+a(p,g)/2+d),y=c[1]/(v.depth||1);$u(f,function(n){n.x=(n.x+d)*m,n.y=n.depth*y})}return l}function t(n){for(var t,e={A:null,children:[n]},r=[e];null!=(t=r.pop());)for(var u,i=t.children,o=0,a=i.length;a>o;++o)r.push((i[o]=u={_:i[o],parent:t,children:(u=i[o].children)&&u.slice()||[],A:null,a:null,z:0,m:0,c:0,s:0,t:null,i:o}).a=u);return e.children[0]}function e(n){var t=n.children,e=n.parent.children,r=n.i?e[n.i-1]:null;if(t.length){wi(n);var i=(t[0].z+t[t.length-1].z)/2;r?(n.z=r.z+a(n._,r._),n.m=n.z-i):n.z=i}else r&&(n.z=r.z+a(n._,r._));n.parent.A=u(n,r,n.parent.A||e[0])}function r(n){n._.x=n.z+n.parent.m,n.m+=n.parent.m}function u(n,t,e){if(t){for(var r,u=n,i=n,o=t,c=u.parent.children[0],s=u.m,l=i.m,f=o.m,h=c.m;o=_i(o),u=Mi(u),o&&u;)c=Mi(c),i=_i(i),i.a=n,r=o.z+f-u.z-s+a(o._,u._),r>0&&(bi(Si(o,n,e),n,r),s+=r,l+=r),f+=o.m,s+=u.m,h+=c.m,l+=i.m;o&&!_i(i)&&(i.t=o,i.m+=f-l),u&&!Mi(c)&&(c.t=u,c.m+=s-h,e=n)}return e}function i(n){n.x*=c[0],n.y=n.depth*c[1]}var o=Zo.layout.hierarchy().sort(null).value(null),a=xi,c=[1,1],s=null;return n.separation=function(t){return arguments.length?(a=t,n):a},n.size=function(t){return arguments.length?(s=null==(c=t)?i:null,n):s?null:c},n.nodeSize=function(t){return arguments.length?(s=null==(c=t)?null:i,n):s?c:null},Xu(n,o)},Zo.layout.cluster=function(){function n(n,i){var o,a=t.call(this,n,i),c=a[0],s=0;Bu(c,function(n){var t=n.children;t&&t.length?(n.x=Ei(t),n.y=ki(t)):(n.x=o?s+=e(n,o):0,n.y=0,o=n)});var l=Ai(c),f=Ci(c),h=l.x-e(l,f)/2,g=f.x+e(f,l)/2;return Bu(c,u?function(n){n.x=(n.x-c.x)*r[0],n.y=(c.y-n.y)*r[1]}:function(n){n.x=(n.x-h)/(g-h)*r[0],n.y=(1-(c.y?n.y/c.y:1))*r[1]}),a}var t=Zo.layout.hierarchy().sort(null).value(null),e=xi,r=[1,1],u=!1;return n.separation=function(t){return arguments.length?(e=t,n):e},n.size=function(t){return arguments.length?(u=null==(r=t),n):u?null:r},n.nodeSize=function(t){return arguments.length?(u=null!=(r=t),n):u?r:null},Xu(n,t)},Zo.layout.treemap=function(){function n(n,t){for(var e,r,u=-1,i=n.length;++ut?0:t),e.area=isNaN(r)||0>=r?0:r}function t(e){var i=e.children;if(i&&i.length){var o,a,c,s=f(e),l=[],h=i.slice(),p=1/0,v="slice"===g?s.dx:"dice"===g?s.dy:"slice-dice"===g?1&e.depth?s.dy:s.dx:Math.min(s.dx,s.dy);for(n(h,s.dx*s.dy/e.value),l.area=0;(c=h.length)>0;)l.push(o=h[c-1]),l.area+=o.area,"squarify"!==g||(a=r(l,v))<=p?(h.pop(),p=a):(l.area-=l.pop().area,u(l,v,s,!1),v=Math.min(s.dx,s.dy),l.length=l.area=0,p=1/0);l.length&&(u(l,v,s,!0),l.length=l.area=0),i.forEach(t)}}function e(t){var r=t.children;if(r&&r.length){var i,o=f(t),a=r.slice(),c=[];for(n(a,o.dx*o.dy/t.value),c.area=0;i=a.pop();)c.push(i),c.area+=i.area,null!=i.z&&(u(c,i.z?o.dx:o.dy,o,!a.length),c.length=c.area=0);r.forEach(e)}}function r(n,t){for(var e,r=n.area,u=0,i=1/0,o=-1,a=n.length;++oe&&(i=e),e>u&&(u=e));return r*=r,t*=t,r?Math.max(t*u*p/r,r/(t*i*p)):1/0}function u(n,t,e,r){var u,i=-1,o=n.length,a=e.x,s=e.y,l=t?c(n.area/t):0;if(t==e.dx){for((r||l>e.dy)&&(l=e.dy);++ie.dx)&&(l=e.dx);++ie&&(t=1),1>e&&(n=0),function(){var e,r,u;do e=2*Math.random()-1,r=2*Math.random()-1,u=e*e+r*r;while(!u||u>1);return n+t*e*Math.sqrt(-2*Math.log(u)/u)}},logNormal:function(){var n=Zo.random.normal.apply(Zo,arguments);return function(){return Math.exp(n())}},bates:function(n){var t=Zo.random.irwinHall(n);return function(){return t()/n}},irwinHall:function(n){return function(){for(var t=0,e=0;n>e;e++)t+=Math.random();return t}}},Zo.scale={};var ss={floor:wt,ceil:wt};Zo.scale.linear=function(){return Ui([0,1],[0,1],hu,!1)};var ls={s:1,g:1,p:1,r:1,e:1};Zo.scale.log=function(){return Vi(Zo.scale.linear().domain([0,1]),10,!0,[1,10])};var fs=Zo.format(".0e"),hs={floor:function(n){return-Math.ceil(-n)},ceil:function(n){return-Math.floor(-n)}};Zo.scale.pow=function(){return Xi(Zo.scale.linear(),1,[0,1])},Zo.scale.sqrt=function(){return Zo.scale.pow().exponent(.5)},Zo.scale.ordinal=function(){return Bi([],{t:"range",a:[[]]})},Zo.scale.category10=function(){return Zo.scale.ordinal().range(gs)},Zo.scale.category20=function(){return Zo.scale.ordinal().range(ps)},Zo.scale.category20b=function(){return Zo.scale.ordinal().range(vs)},Zo.scale.category20c=function(){return Zo.scale.ordinal().range(ds)};var gs=[2062260,16744206,2924588,14034728,9725885,9197131,14907330,8355711,12369186,1556175].map(vt),ps=[2062260,11454440,16744206,16759672,2924588,10018698,14034728,16750742,9725885,12955861,9197131,12885140,14907330,16234194,8355711,13092807,12369186,14408589,1556175,10410725].map(vt),vs=[3750777,5395619,7040719,10264286,6519097,9216594,11915115,13556636,9202993,12426809,15186514,15190932,8666169,11356490,14049643,15177372,8077683,10834324,13528509,14589654].map(vt),ds=[3244733,7057110,10406625,13032431,15095053,16616764,16625259,16634018,3253076,7652470,10607003,13101504,7695281,10394312,12369372,14342891,6513507,9868950,12434877,14277081].map(vt);Zo.scale.quantile=function(){return Wi([],[])},Zo.scale.quantize=function(){return Ji(0,1,[0,1])},Zo.scale.threshold=function(){return Gi([.5],[0,1])},Zo.scale.identity=function(){return Ki([0,1])},Zo.svg={},Zo.svg.arc=function(){function n(){var n=t.apply(this,arguments),i=e.apply(this,arguments),o=r.apply(this,arguments)+ms,a=u.apply(this,arguments)+ms,c=(o>a&&(c=o,o=a,a=c),a-o),s=ba>c?"0":"1",l=Math.cos(o),f=Math.sin(o),h=Math.cos(a),g=Math.sin(a); -return c>=ys?n?"M0,"+i+"A"+i+","+i+" 0 1,1 0,"+-i+"A"+i+","+i+" 0 1,1 0,"+i+"M0,"+n+"A"+n+","+n+" 0 1,0 0,"+-n+"A"+n+","+n+" 0 1,0 0,"+n+"Z":"M0,"+i+"A"+i+","+i+" 0 1,1 0,"+-i+"A"+i+","+i+" 0 1,1 0,"+i+"Z":n?"M"+i*l+","+i*f+"A"+i+","+i+" 0 "+s+",1 "+i*h+","+i*g+"L"+n*h+","+n*g+"A"+n+","+n+" 0 "+s+",0 "+n*l+","+n*f+"Z":"M"+i*l+","+i*f+"A"+i+","+i+" 0 "+s+",1 "+i*h+","+i*g+"L0,0"+"Z"}var t=Qi,e=no,r=to,u=eo;return n.innerRadius=function(e){return arguments.length?(t=bt(e),n):t},n.outerRadius=function(t){return arguments.length?(e=bt(t),n):e},n.startAngle=function(t){return arguments.length?(r=bt(t),n):r},n.endAngle=function(t){return arguments.length?(u=bt(t),n):u},n.centroid=function(){var n=(t.apply(this,arguments)+e.apply(this,arguments))/2,i=(r.apply(this,arguments)+u.apply(this,arguments))/2+ms;return[Math.cos(i)*n,Math.sin(i)*n]},n};var ms=-Sa,ys=wa-ka;Zo.svg.line=function(){return ro(wt)};var xs=Zo.map({linear:uo,"linear-closed":io,step:oo,"step-before":ao,"step-after":co,basis:po,"basis-open":vo,"basis-closed":mo,bundle:yo,cardinal:fo,"cardinal-open":so,"cardinal-closed":lo,monotone:So});xs.forEach(function(n,t){t.key=n,t.closed=/-closed$/.test(n)});var Ms=[0,2/3,1/3,0],_s=[0,1/3,2/3,0],bs=[0,1/6,2/3,1/6];Zo.svg.line.radial=function(){var n=ro(ko);return n.radius=n.x,delete n.x,n.angle=n.y,delete n.y,n},ao.reverse=co,co.reverse=ao,Zo.svg.area=function(){return Eo(wt)},Zo.svg.area.radial=function(){var n=Eo(ko);return n.radius=n.x,delete n.x,n.innerRadius=n.x0,delete n.x0,n.outerRadius=n.x1,delete n.x1,n.angle=n.y,delete n.y,n.startAngle=n.y0,delete n.y0,n.endAngle=n.y1,delete n.y1,n},Zo.svg.chord=function(){function n(n,a){var c=t(this,i,n,a),s=t(this,o,n,a);return"M"+c.p0+r(c.r,c.p1,c.a1-c.a0)+(e(c,s)?u(c.r,c.p1,c.r,c.p0):u(c.r,c.p1,s.r,s.p0)+r(s.r,s.p1,s.a1-s.a0)+u(s.r,s.p1,c.r,c.p0))+"Z"}function t(n,t,e,r){var u=t.call(n,e,r),i=a.call(n,u,r),o=c.call(n,u,r)+ms,l=s.call(n,u,r)+ms;return{r:i,a0:o,a1:l,p0:[i*Math.cos(o),i*Math.sin(o)],p1:[i*Math.cos(l),i*Math.sin(l)]}}function e(n,t){return n.a0==t.a0&&n.a1==t.a1}function r(n,t,e){return"A"+n+","+n+" 0 "+ +(e>ba)+",1 "+t}function u(n,t,e,r){return"Q 0,0 "+r}var i=gr,o=pr,a=Ao,c=to,s=eo;return n.radius=function(t){return arguments.length?(a=bt(t),n):a},n.source=function(t){return arguments.length?(i=bt(t),n):i},n.target=function(t){return arguments.length?(o=bt(t),n):o},n.startAngle=function(t){return arguments.length?(c=bt(t),n):c},n.endAngle=function(t){return arguments.length?(s=bt(t),n):s},n},Zo.svg.diagonal=function(){function n(n,u){var i=t.call(this,n,u),o=e.call(this,n,u),a=(i.y+o.y)/2,c=[i,{x:i.x,y:a},{x:o.x,y:a},o];return c=c.map(r),"M"+c[0]+"C"+c[1]+" "+c[2]+" "+c[3]}var t=gr,e=pr,r=Co;return n.source=function(e){return arguments.length?(t=bt(e),n):t},n.target=function(t){return arguments.length?(e=bt(t),n):e},n.projection=function(t){return arguments.length?(r=t,n):r},n},Zo.svg.diagonal.radial=function(){var n=Zo.svg.diagonal(),t=Co,e=n.projection;return n.projection=function(n){return arguments.length?e(No(t=n)):t},n},Zo.svg.symbol=function(){function n(n,r){return(ws.get(t.call(this,n,r))||To)(e.call(this,n,r))}var t=Lo,e=zo;return n.type=function(e){return arguments.length?(t=bt(e),n):t},n.size=function(t){return arguments.length?(e=bt(t),n):e},n};var ws=Zo.map({circle:To,cross:function(n){var t=Math.sqrt(n/5)/2;return"M"+-3*t+","+-t+"H"+-t+"V"+-3*t+"H"+t+"V"+-t+"H"+3*t+"V"+t+"H"+t+"V"+3*t+"H"+-t+"V"+t+"H"+-3*t+"Z"},diamond:function(n){var t=Math.sqrt(n/(2*As)),e=t*As;return"M0,"+-t+"L"+e+",0"+" 0,"+t+" "+-e+",0"+"Z"},square:function(n){var t=Math.sqrt(n)/2;return"M"+-t+","+-t+"L"+t+","+-t+" "+t+","+t+" "+-t+","+t+"Z"},"triangle-down":function(n){var t=Math.sqrt(n/Es),e=t*Es/2;return"M0,"+e+"L"+t+","+-e+" "+-t+","+-e+"Z"},"triangle-up":function(n){var t=Math.sqrt(n/Es),e=t*Es/2;return"M0,"+-e+"L"+t+","+e+" "+-t+","+e+"Z"}});Zo.svg.symbolTypes=ws.keys();var Ss,ks,Es=Math.sqrt(3),As=Math.tan(30*Aa),Cs=[],Ns=0;Cs.call=pa.call,Cs.empty=pa.empty,Cs.node=pa.node,Cs.size=pa.size,Zo.transition=function(n){return arguments.length?Ss?n.transition():n:ma.transition()},Zo.transition.prototype=Cs,Cs.select=function(n){var t,e,r,u=this.id,i=[];n=b(n);for(var o=-1,a=this.length;++oi;i++){u.push(t=[]);for(var e=this[i],a=0,c=e.length;c>a;a++)(r=e[a])&&n.call(r,r.__data__,a,i)&&t.push(r)}return qo(u,this.id)},Cs.tween=function(n,t){var e=this.id;return arguments.length<2?this.node().__transition__[e].tween.get(n):P(this,null==t?function(t){t.__transition__[e].tween.remove(n)}:function(r){r.__transition__[e].tween.set(n,t)})},Cs.attr=function(n,t){function e(){this.removeAttribute(a)}function r(){this.removeAttributeNS(a.space,a.local)}function u(n){return null==n?e:(n+="",function(){var t,e=this.getAttribute(a);return e!==n&&(t=o(e,n),function(n){this.setAttribute(a,t(n))})})}function i(n){return null==n?r:(n+="",function(){var t,e=this.getAttributeNS(a.space,a.local);return e!==n&&(t=o(e,n),function(n){this.setAttributeNS(a.space,a.local,t(n))})})}if(arguments.length<2){for(t in n)this.attr(t,n[t]);return this}var o="transform"==n?Du:hu,a=Zo.ns.qualify(n);return Ro(this,"attr."+n,t,a.local?i:u)},Cs.attrTween=function(n,t){function e(n,e){var r=t.call(this,n,e,this.getAttribute(u));return r&&function(n){this.setAttribute(u,r(n))}}function r(n,e){var r=t.call(this,n,e,this.getAttributeNS(u.space,u.local));return r&&function(n){this.setAttributeNS(u.space,u.local,r(n))}}var u=Zo.ns.qualify(n);return this.tween("attr."+n,u.local?r:e)},Cs.style=function(n,t,e){function r(){this.style.removeProperty(n)}function u(t){return null==t?r:(t+="",function(){var r,u=Wo.getComputedStyle(this,null).getPropertyValue(n);return u!==t&&(r=hu(u,t),function(t){this.style.setProperty(n,r(t),e)})})}var i=arguments.length;if(3>i){if("string"!=typeof n){2>i&&(t="");for(e in n)this.style(e,n[e],t);return this}e=""}return Ro(this,"style."+n,t,u)},Cs.styleTween=function(n,t,e){function r(r,u){var i=t.call(this,r,u,Wo.getComputedStyle(this,null).getPropertyValue(n));return i&&function(t){this.style.setProperty(n,i(t),e)}}return arguments.length<3&&(e=""),this.tween("style."+n,r)},Cs.text=function(n){return Ro(this,"text",n,Do)},Cs.remove=function(){return this.each("end.transition",function(){var n;this.__transition__.count<2&&(n=this.parentNode)&&n.removeChild(this)})},Cs.ease=function(n){var t=this.id;return arguments.length<1?this.node().__transition__[t].ease:("function"!=typeof n&&(n=Zo.ease.apply(Zo,arguments)),P(this,function(e){e.__transition__[t].ease=n}))},Cs.delay=function(n){var t=this.id;return arguments.length<1?this.node().__transition__[t].delay:P(this,"function"==typeof n?function(e,r,u){e.__transition__[t].delay=+n.call(e,e.__data__,r,u)}:(n=+n,function(e){e.__transition__[t].delay=n}))},Cs.duration=function(n){var t=this.id;return arguments.length<1?this.node().__transition__[t].duration:P(this,"function"==typeof n?function(e,r,u){e.__transition__[t].duration=Math.max(1,n.call(e,e.__data__,r,u))}:(n=Math.max(1,n),function(e){e.__transition__[t].duration=n}))},Cs.each=function(n,t){var e=this.id;if(arguments.length<2){var r=ks,u=Ss;Ss=e,P(this,function(t,r,u){ks=t.__transition__[e],n.call(t,t.__data__,r,u)}),ks=r,Ss=u}else P(this,function(r){var u=r.__transition__[e];(u.event||(u.event=Zo.dispatch("start","end"))).on(n,t)});return this},Cs.transition=function(){for(var n,t,e,r,u=this.id,i=++Ns,o=[],a=0,c=this.length;c>a;a++){o.push(n=[]);for(var t=this[a],s=0,l=t.length;l>s;s++)(e=t[s])&&(r=Object.create(e.__transition__[u]),r.delay+=r.duration,Po(e,s,i,r)),n.push(e)}return qo(o,i)},Zo.svg.axis=function(){function n(n){n.each(function(){var n,s=Zo.select(this),l=this.__chart__||e,f=this.__chart__=e.copy(),h=null==c?f.ticks?f.ticks.apply(f,a):f.domain():c,g=null==t?f.tickFormat?f.tickFormat.apply(f,a):wt:t,p=s.selectAll(".tick").data(h,f),v=p.enter().insert("g",".domain").attr("class","tick").style("opacity",ka),d=Zo.transition(p.exit()).style("opacity",ka).remove(),m=Zo.transition(p.order()).style("opacity",1),y=Ti(f),x=s.selectAll(".domain").data([0]),M=(x.enter().append("path").attr("class","domain"),Zo.transition(x));v.append("line"),v.append("text");var _=v.select("line"),b=m.select("line"),w=p.select("text").text(g),S=v.select("text"),k=m.select("text");switch(r){case"bottom":n=Uo,_.attr("y2",u),S.attr("y",Math.max(u,0)+o),b.attr("x2",0).attr("y2",u),k.attr("x",0).attr("y",Math.max(u,0)+o),w.attr("dy",".71em").style("text-anchor","middle"),M.attr("d","M"+y[0]+","+i+"V0H"+y[1]+"V"+i);break;case"top":n=Uo,_.attr("y2",-u),S.attr("y",-(Math.max(u,0)+o)),b.attr("x2",0).attr("y2",-u),k.attr("x",0).attr("y",-(Math.max(u,0)+o)),w.attr("dy","0em").style("text-anchor","middle"),M.attr("d","M"+y[0]+","+-i+"V0H"+y[1]+"V"+-i);break;case"left":n=jo,_.attr("x2",-u),S.attr("x",-(Math.max(u,0)+o)),b.attr("x2",-u).attr("y2",0),k.attr("x",-(Math.max(u,0)+o)).attr("y",0),w.attr("dy",".32em").style("text-anchor","end"),M.attr("d","M"+-i+","+y[0]+"H0V"+y[1]+"H"+-i);break;case"right":n=jo,_.attr("x2",u),S.attr("x",Math.max(u,0)+o),b.attr("x2",u).attr("y2",0),k.attr("x",Math.max(u,0)+o).attr("y",0),w.attr("dy",".32em").style("text-anchor","start"),M.attr("d","M"+i+","+y[0]+"H0V"+y[1]+"H"+i)}if(f.rangeBand){var E=f,A=E.rangeBand()/2;l=f=function(n){return E(n)+A}}else l.rangeBand?l=f:d.call(n,f);v.call(n,l),m.call(n,f)})}var t,e=Zo.scale.linear(),r=zs,u=6,i=6,o=3,a=[10],c=null;return n.scale=function(t){return arguments.length?(e=t,n):e},n.orient=function(t){return arguments.length?(r=t in Ls?t+"":zs,n):r},n.ticks=function(){return arguments.length?(a=arguments,n):a},n.tickValues=function(t){return arguments.length?(c=t,n):c},n.tickFormat=function(e){return arguments.length?(t=e,n):t},n.tickSize=function(t){var e=arguments.length;return e?(u=+t,i=+arguments[e-1],n):u},n.innerTickSize=function(t){return arguments.length?(u=+t,n):u},n.outerTickSize=function(t){return arguments.length?(i=+t,n):i},n.tickPadding=function(t){return arguments.length?(o=+t,n):o},n.tickSubdivide=function(){return arguments.length&&n},n};var zs="bottom",Ls={top:1,right:1,bottom:1,left:1};Zo.svg.brush=function(){function n(i){i.each(function(){var i=Zo.select(this).style("pointer-events","all").style("-webkit-tap-highlight-color","rgba(0,0,0,0)").on("mousedown.brush",u).on("touchstart.brush",u),o=i.selectAll(".background").data([0]);o.enter().append("rect").attr("class","background").style("visibility","hidden").style("cursor","crosshair"),i.selectAll(".extent").data([0]).enter().append("rect").attr("class","extent").style("cursor","move");var a=i.selectAll(".resize").data(p,wt);a.exit().remove(),a.enter().append("g").attr("class",function(n){return"resize "+n}).style("cursor",function(n){return Ts[n]}).append("rect").attr("x",function(n){return/[ew]$/.test(n)?-3:null}).attr("y",function(n){return/^[ns]/.test(n)?-3:null}).attr("width",6).attr("height",6).style("visibility","hidden"),a.style("display",n.empty()?"none":null);var l,f=Zo.transition(i),h=Zo.transition(o);c&&(l=Ti(c),h.attr("x",l[0]).attr("width",l[1]-l[0]),e(f)),s&&(l=Ti(s),h.attr("y",l[0]).attr("height",l[1]-l[0]),r(f)),t(f)})}function t(n){n.selectAll(".resize").attr("transform",function(n){return"translate("+l[+/e$/.test(n)]+","+f[+/^s/.test(n)]+")"})}function e(n){n.select(".extent").attr("x",l[0]),n.selectAll(".extent,.n>rect,.s>rect").attr("width",l[1]-l[0])}function r(n){n.select(".extent").attr("y",f[0]),n.selectAll(".extent,.e>rect,.w>rect").attr("height",f[1]-f[0])}function u(){function u(){32==Zo.event.keyCode&&(C||(x=null,z[0]-=l[1],z[1]-=f[1],C=2),y())}function p(){32==Zo.event.keyCode&&2==C&&(z[0]+=l[1],z[1]+=f[1],C=0,y())}function v(){var n=Zo.mouse(_),u=!1;M&&(n[0]+=M[0],n[1]+=M[1]),C||(Zo.event.altKey?(x||(x=[(l[0]+l[1])/2,(f[0]+f[1])/2]),z[0]=l[+(n[0]p?(u=r,r=p):u=p),v[0]!=r||v[1]!=u?(e?o=null:i=null,v[0]=r,v[1]=u,!0):void 0}function m(){v(),S.style("pointer-events","all").selectAll(".resize").style("display",n.empty()?"none":null),Zo.select("body").style("cursor",null),L.on("mousemove.brush",null).on("mouseup.brush",null).on("touchmove.brush",null).on("touchend.brush",null).on("keydown.brush",null).on("keyup.brush",null),N(),w({type:"brushend"})}var x,M,_=this,b=Zo.select(Zo.event.target),w=a.of(_,arguments),S=Zo.select(_),k=b.datum(),E=!/^(n|s)$/.test(k)&&c,A=!/^(e|w)$/.test(k)&&s,C=b.classed("extent"),N=I(),z=Zo.mouse(_),L=Zo.select(Wo).on("keydown.brush",u).on("keyup.brush",p);if(Zo.event.changedTouches?L.on("touchmove.brush",v).on("touchend.brush",m):L.on("mousemove.brush",v).on("mouseup.brush",m),S.interrupt().selectAll("*").interrupt(),C)z[0]=l[0]-z[0],z[1]=f[0]-z[1];else if(k){var T=+/w$/.test(k),q=+/^n/.test(k);M=[l[1-T]-z[0],f[1-q]-z[1]],z[0]=l[T],z[1]=f[q]}else Zo.event.altKey&&(x=z.slice());S.style("pointer-events","none").selectAll(".resize").style("display",null),Zo.select("body").style("cursor",b.style("cursor")),w({type:"brushstart"}),v()}var i,o,a=M(n,"brushstart","brush","brushend"),c=null,s=null,l=[0,0],f=[0,0],h=!0,g=!0,p=qs[0];return n.event=function(n){n.each(function(){var n=a.of(this,arguments),t={x:l,y:f,i:i,j:o},e=this.__chart__||t;this.__chart__=t,Ss?Zo.select(this).transition().each("start.brush",function(){i=e.i,o=e.j,l=e.x,f=e.y,n({type:"brushstart"})}).tween("brush:brush",function(){var e=gu(l,t.x),r=gu(f,t.y);return i=o=null,function(u){l=t.x=e(u),f=t.y=r(u),n({type:"brush",mode:"resize"})}}).each("end.brush",function(){i=t.i,o=t.j,n({type:"brush",mode:"resize"}),n({type:"brushend"})}):(n({type:"brushstart"}),n({type:"brush",mode:"resize"}),n({type:"brushend"}))})},n.x=function(t){return arguments.length?(c=t,p=qs[!c<<1|!s],n):c},n.y=function(t){return arguments.length?(s=t,p=qs[!c<<1|!s],n):s},n.clamp=function(t){return arguments.length?(c&&s?(h=!!t[0],g=!!t[1]):c?h=!!t:s&&(g=!!t),n):c&&s?[h,g]:c?h:s?g:null},n.extent=function(t){var e,r,u,a,h;return arguments.length?(c&&(e=t[0],r=t[1],s&&(e=e[0],r=r[0]),i=[e,r],c.invert&&(e=c(e),r=c(r)),e>r&&(h=e,e=r,r=h),(e!=l[0]||r!=l[1])&&(l=[e,r])),s&&(u=t[0],a=t[1],c&&(u=u[1],a=a[1]),o=[u,a],s.invert&&(u=s(u),a=s(a)),u>a&&(h=u,u=a,a=h),(u!=f[0]||a!=f[1])&&(f=[u,a])),n):(c&&(i?(e=i[0],r=i[1]):(e=l[0],r=l[1],c.invert&&(e=c.invert(e),r=c.invert(r)),e>r&&(h=e,e=r,r=h))),s&&(o?(u=o[0],a=o[1]):(u=f[0],a=f[1],s.invert&&(u=s.invert(u),a=s.invert(a)),u>a&&(h=u,u=a,a=h))),c&&s?[[e,u],[r,a]]:c?[e,r]:s&&[u,a])},n.clear=function(){return n.empty()||(l=[0,0],f=[0,0],i=o=null),n},n.empty=function(){return!!c&&l[0]==l[1]||!!s&&f[0]==f[1]},Zo.rebind(n,a,"on")};var Ts={n:"ns-resize",e:"ew-resize",s:"ns-resize",w:"ew-resize",nw:"nwse-resize",ne:"nesw-resize",se:"nwse-resize",sw:"nesw-resize"},qs=[["n","e","s","w","nw","ne","se","sw"],["e","w"],["n","s"],[]],Rs=Qa.format=ic.timeFormat,Ds=Rs.utc,Ps=Ds("%Y-%m-%dT%H:%M:%S.%LZ");Rs.iso=Date.prototype.toISOString&&+new Date("2000-01-01T00:00:00.000Z")?Ho:Ps,Ho.parse=function(n){var t=new Date(n);return isNaN(t)?null:t},Ho.toString=Ps.toString,Qa.second=Dt(function(n){return new nc(1e3*Math.floor(n/1e3))},function(n,t){n.setTime(n.getTime()+1e3*Math.floor(t))},function(n){return n.getSeconds()}),Qa.seconds=Qa.second.range,Qa.seconds.utc=Qa.second.utc.range,Qa.minute=Dt(function(n){return new nc(6e4*Math.floor(n/6e4))},function(n,t){n.setTime(n.getTime()+6e4*Math.floor(t))},function(n){return n.getMinutes()}),Qa.minutes=Qa.minute.range,Qa.minutes.utc=Qa.minute.utc.range,Qa.hour=Dt(function(n){var t=n.getTimezoneOffset()/60;return new nc(36e5*(Math.floor(n/36e5-t)+t))},function(n,t){n.setTime(n.getTime()+36e5*Math.floor(t))},function(n){return n.getHours()}),Qa.hours=Qa.hour.range,Qa.hours.utc=Qa.hour.utc.range,Qa.month=Dt(function(n){return n=Qa.day(n),n.setDate(1),n},function(n,t){n.setMonth(n.getMonth()+t)},function(n){return n.getMonth()}),Qa.months=Qa.month.range,Qa.months.utc=Qa.month.utc.range;var Us=[1e3,5e3,15e3,3e4,6e4,3e5,9e5,18e5,36e5,108e5,216e5,432e5,864e5,1728e5,6048e5,2592e6,7776e6,31536e6],js=[[Qa.second,1],[Qa.second,5],[Qa.second,15],[Qa.second,30],[Qa.minute,1],[Qa.minute,5],[Qa.minute,15],[Qa.minute,30],[Qa.hour,1],[Qa.hour,3],[Qa.hour,6],[Qa.hour,12],[Qa.day,1],[Qa.day,2],[Qa.week,1],[Qa.month,1],[Qa.month,3],[Qa.year,1]],Hs=Rs.multi([[".%L",function(n){return n.getMilliseconds()}],[":%S",function(n){return n.getSeconds()}],["%I:%M",function(n){return n.getMinutes()}],["%I %p",function(n){return n.getHours()}],["%a %d",function(n){return n.getDay()&&1!=n.getDate()}],["%b %d",function(n){return 1!=n.getDate()}],["%B",function(n){return n.getMonth()}],["%Y",we]]),Fs={range:function(n,t,e){return Zo.range(Math.ceil(n/e)*e,+t,e).map(Oo)},floor:wt,ceil:wt};js.year=Qa.year,Qa.scale=function(){return Fo(Zo.scale.linear(),js,Hs)};var Os=js.map(function(n){return[n[0].utc,n[1]]}),Ys=Ds.multi([[".%L",function(n){return n.getUTCMilliseconds()}],[":%S",function(n){return n.getUTCSeconds()}],["%I:%M",function(n){return n.getUTCMinutes()}],["%I %p",function(n){return n.getUTCHours()}],["%a %d",function(n){return n.getUTCDay()&&1!=n.getUTCDate()}],["%b %d",function(n){return 1!=n.getUTCDate()}],["%B",function(n){return n.getUTCMonth()}],["%Y",we]]);Os.year=Qa.year.utc,Qa.scale.utc=function(){return Fo(Zo.scale.linear(),Os,Ys)},Zo.text=St(function(n){return n.responseText}),Zo.json=function(n,t){return kt(n,"application/json",Yo,t)},Zo.html=function(n,t){return kt(n,"text/html",Io,t)},Zo.xml=St(function(n){return n.responseXML}),"function"==typeof define&&define.amd?define(Zo):"object"==typeof module&&module.exports&&(module.exports=Zo),this.d3=Zo}(); \ No newline at end of file +!function(){function n(n,t){return t>n?-1:n>t?1:n>=t?0:0/0}function t(n){return null!=n&&!isNaN(n)}function e(n){return{left:function(t,e,r,u){for(arguments.length<3&&(r=0),arguments.length<4&&(u=t.length);u>r;){var i=r+u>>>1;n(t[i],e)<0?r=i+1:u=i}return r},right:function(t,e,r,u){for(arguments.length<3&&(r=0),arguments.length<4&&(u=t.length);u>r;){var i=r+u>>>1;n(t[i],e)>0?u=i:r=i+1}return r}}}function r(n){return n.length}function u(n){for(var t=1;n*t%1;)t*=10;return t}function i(n,t){try{for(var e in t)Object.defineProperty(n.prototype,e,{value:t[e],enumerable:!1})}catch(r){n.prototype=t}}function o(){}function a(n){return oa+n in this}function c(n){return n=oa+n,n in this&&delete this[n]}function l(){var n=[];return this.forEach(function(t){n.push(t)}),n}function s(){var n=0;for(var t in this)t.charCodeAt(0)===aa&&++n;return n}function f(){for(var n in this)if(n.charCodeAt(0)===aa)return!1;return!0}function h(){}function g(n,t,e){return function(){var r=e.apply(t,arguments);return r===t?n:r}}function p(n,t){if(t in n)return t;t=t.charAt(0).toUpperCase()+t.slice(1);for(var e=0,r=ca.length;r>e;++e){var u=ca[e]+t;if(u in n)return u}}function v(){}function d(){}function m(n){function t(){for(var t,r=e,u=-1,i=r.length;++ue;e++)for(var u,i=n[e],o=0,a=i.length;a>o;o++)(u=i[o])&&t(u,o,e);return n}function U(n){return sa(n,ma),n}function j(n){var t,e;return function(r,u,i){var o,a=n[i].update,c=a.length;for(i!=e&&(e=i,t=0),u>=t&&(t=u+1);!(o=a[t])&&++t0&&(n=n.slice(0,a));var l=xa.get(n);return l&&(n=l,c=Y),a?t?u:r:t?v:i}function O(n,t){return function(e){var r=Vo.event;Vo.event=e,t[0]=this.__data__;try{n.apply(this,t)}finally{Vo.event=r}}}function Y(n,t){var e=O(n,t);return function(n){var t=this,r=n.relatedTarget;r&&(r===t||8&r.compareDocumentPosition(t))||e.call(t,n)}}function I(){var n=".dragsuppress-"+ ++_a,t="click"+n,e=Vo.select(Jo).on("touchmove"+n,y).on("dragstart"+n,y).on("selectstart"+n,y);if(Ma){var r=Wo.style,u=r[Ma];r[Ma]="none"}return function(i){function o(){e.on(t,null)}e.on(n,null),Ma&&(r[Ma]=u),i&&(e.on(t,function(){y(),o()},!0),setTimeout(o,0))}}function Z(n,t){t.changedTouches&&(t=t.changedTouches[0]);var e=n.ownerSVGElement||n;if(e.createSVGPoint){var r=e.createSVGPoint();if(0>ba&&(Jo.scrollX||Jo.scrollY)){e=Vo.select("body").append("svg").style({position:"absolute",top:0,left:0,margin:0,padding:0,border:"none"},"important");var u=e[0][0].getScreenCTM();ba=!(u.f||u.e),e.remove()}return ba?(r.x=t.pageX,r.y=t.pageY):(r.x=t.clientX,r.y=t.clientY),r=r.matrixTransform(n.getScreenCTM().inverse()),[r.x,r.y]}var i=n.getBoundingClientRect();return[t.clientX-i.left-n.clientLeft,t.clientY-i.top-n.clientTop]}function V(){return Vo.event.changedTouches[0].identifier}function X(){return Vo.event.target}function $(){return Jo}function B(n){return n>0?1:0>n?-1:0}function W(n,t,e){return(t[0]-n[0])*(e[1]-n[1])-(t[1]-n[1])*(e[0]-n[0])}function J(n){return n>1?0:-1>n?wa:Math.acos(n)}function G(n){return n>1?ka:-1>n?-ka:Math.asin(n)}function K(n){return((n=Math.exp(n))-1/n)/2}function Q(n){return((n=Math.exp(n))+1/n)/2}function nt(n){return((n=Math.exp(2*n))-1)/(n+1)}function tt(n){return(n=Math.sin(n/2))*n}function et(){}function rt(n,t,e){return this instanceof rt?(this.h=+n,this.s=+t,void(this.l=+e)):arguments.length<2?n instanceof rt?new rt(n.h,n.s,n.l):mt(""+n,yt,rt):new rt(n,t,e)}function ut(n,t,e){function r(n){return n>360?n-=360:0>n&&(n+=360),60>n?i+(o-i)*n/60:180>n?o:240>n?i+(o-i)*(240-n)/60:i}function u(n){return Math.round(255*r(n))}var i,o;return n=isNaN(n)?0:(n%=360)<0?n+360:n,t=isNaN(t)?0:0>t?0:t>1?1:t,e=0>e?0:e>1?1:e,o=.5>=e?e*(1+t):e+t-e*t,i=2*e-o,new gt(u(n+120),u(n),u(n-120))}function it(n,t,e){return this instanceof it?(this.h=+n,this.c=+t,void(this.l=+e)):arguments.length<2?n instanceof it?new it(n.h,n.c,n.l):n instanceof at?lt(n.l,n.a,n.b):lt((n=xt((n=Vo.rgb(n)).r,n.g,n.b)).l,n.a,n.b):new it(n,t,e)}function ot(n,t,e){return isNaN(n)&&(n=0),isNaN(t)&&(t=0),new at(e,Math.cos(n*=Ca)*t,Math.sin(n)*t)}function at(n,t,e){return this instanceof at?(this.l=+n,this.a=+t,void(this.b=+e)):arguments.length<2?n instanceof at?new at(n.l,n.a,n.b):n instanceof it?ot(n.l,n.c,n.h):xt((n=gt(n)).r,n.g,n.b):new at(n,t,e)}function ct(n,t,e){var r=(n+16)/116,u=r+t/500,i=r-e/200;return u=st(u)*Ha,r=st(r)*Fa,i=st(i)*Oa,new gt(ht(3.2404542*u-1.5371385*r-.4985314*i),ht(-.969266*u+1.8760108*r+.041556*i),ht(.0556434*u-.2040259*r+1.0572252*i))}function lt(n,t,e){return n>0?new it(Math.atan2(e,t)*Na,Math.sqrt(t*t+e*e),n):new it(0/0,0/0,n)}function st(n){return n>.206893034?n*n*n:(n-4/29)/7.787037}function ft(n){return n>.008856?Math.pow(n,1/3):7.787037*n+4/29}function ht(n){return Math.round(255*(.00304>=n?12.92*n:1.055*Math.pow(n,1/2.4)-.055))}function gt(n,t,e){return this instanceof gt?(this.r=~~n,this.g=~~t,void(this.b=~~e)):arguments.length<2?n instanceof gt?new gt(n.r,n.g,n.b):mt(""+n,gt,ut):new gt(n,t,e)}function pt(n){return new gt(n>>16,255&n>>8,255&n)}function vt(n){return pt(n)+""}function dt(n){return 16>n?"0"+Math.max(0,n).toString(16):Math.min(255,n).toString(16)}function mt(n,t,e){var r,u,i,o=0,a=0,c=0;if(r=/([a-z]+)\((.*)\)/i.exec(n))switch(u=r[2].split(","),r[1]){case"hsl":return e(parseFloat(u[0]),parseFloat(u[1])/100,parseFloat(u[2])/100);case"rgb":return t(_t(u[0]),_t(u[1]),_t(u[2]))}return(i=Za.get(n))?t(i.r,i.g,i.b):(null==n||"#"!==n.charAt(0)||isNaN(i=parseInt(n.slice(1),16))||(4===n.length?(o=(3840&i)>>4,o=o>>4|o,a=240&i,a=a>>4|a,c=15&i,c=c<<4|c):7===n.length&&(o=(16711680&i)>>16,a=(65280&i)>>8,c=255&i)),t(o,a,c))}function yt(n,t,e){var r,u,i=Math.min(n/=255,t/=255,e/=255),o=Math.max(n,t,e),a=o-i,c=(o+i)/2;return a?(u=.5>c?a/(o+i):a/(2-o-i),r=n==o?(t-e)/a+(e>t?6:0):t==o?(e-n)/a+2:(n-t)/a+4,r*=60):(r=0/0,u=c>0&&1>c?0:r),new rt(r,u,c)}function xt(n,t,e){n=Mt(n),t=Mt(t),e=Mt(e);var r=ft((.4124564*n+.3575761*t+.1804375*e)/Ha),u=ft((.2126729*n+.7151522*t+.072175*e)/Fa),i=ft((.0193339*n+.119192*t+.9503041*e)/Oa);return at(116*u-16,500*(r-u),200*(u-i))}function Mt(n){return(n/=255)<=.04045?n/12.92:Math.pow((n+.055)/1.055,2.4)}function _t(n){var t=parseFloat(n);return"%"===n.charAt(n.length-1)?Math.round(2.55*t):t}function bt(n){return"function"==typeof n?n:function(){return n}}function wt(n){return n}function St(n){return function(t,e,r){return 2===arguments.length&&"function"==typeof e&&(r=e,e=null),kt(t,e,n,r)}}function kt(n,t,e,r){function u(){var n,t=c.status;if(!t&&At(c)||t>=200&&300>t||304===t){try{n=e.call(i,c)}catch(r){return o.error.call(i,r),void 0}o.load.call(i,n)}else o.error.call(i,c)}var i={},o=Vo.dispatch("beforesend","progress","load","error"),a={},c=new XMLHttpRequest,l=null;return!Jo.XDomainRequest||"withCredentials"in c||!/^(http(s)?:)?\/\//.test(n)||(c=new XDomainRequest),"onload"in c?c.onload=c.onerror=u:c.onreadystatechange=function(){c.readyState>3&&u()},c.onprogress=function(n){var t=Vo.event;Vo.event=n;try{o.progress.call(i,c)}finally{Vo.event=t}},i.header=function(n,t){return n=(n+"").toLowerCase(),arguments.length<2?a[n]:(null==t?delete a[n]:a[n]=t+"",i)},i.mimeType=function(n){return arguments.length?(t=null==n?null:n+"",i):t},i.responseType=function(n){return arguments.length?(l=n,i):l},i.response=function(n){return e=n,i},["get","post"].forEach(function(n){i[n]=function(){return i.send.apply(i,[n].concat($o(arguments)))}}),i.send=function(e,r,u){if(2===arguments.length&&"function"==typeof r&&(u=r,r=null),c.open(e,n,!0),null==t||"accept"in a||(a.accept=t+",*/*"),c.setRequestHeader)for(var s in a)c.setRequestHeader(s,a[s]);return null!=t&&c.overrideMimeType&&c.overrideMimeType(t),null!=l&&(c.responseType=l),null!=u&&i.on("error",u).on("load",function(n){u(null,n)}),o.beforesend.call(i,c),c.send(null==r?null:r),i},i.abort=function(){return c.abort(),i},Vo.rebind(i,o,"on"),null==r?i:i.get(Et(r))}function Et(n){return 1===n.length?function(t,e){n(null==t?e:null)}:n}function At(n){var t=n.responseType;return t&&"text"!==t?n.response:n.responseText}function Ct(){var n=Nt(),t=zt()-n;t>24?(isFinite(t)&&(clearTimeout(Ba),Ba=setTimeout(Ct,t)),$a=0):($a=1,Ja(Ct))}function Nt(){var n=Date.now();for(Wa=Va;Wa;)n>=Wa.t&&(Wa.f=Wa.c(n-Wa.t)),Wa=Wa.n;return n}function zt(){for(var n,t=Va,e=1/0;t;)t.f?t=n?n.n=t.n:Va=t.n:(t.t8?function(n){return n/e}:function(n){return n*e},symbol:n}}function qt(n){var t=n.decimal,e=n.thousands,r=n.grouping,u=n.currency,i=r?function(n){for(var t=n.length,u=[],i=0,o=r[0];o>0&&t>0;)u.push(n.substring(t-=o,t+o)),o=r[i=(i+1)%r.length];return u.reverse().join(e)}:wt;return function(n){var e=Ka.exec(n),r=e[1]||" ",o=e[2]||">",a=e[3]||"",c=e[4]||"",l=e[5],s=+e[6],f=e[7],h=e[8],g=e[9],p=1,v="",d="",m=!1;switch(h&&(h=+h.substring(1)),(l||"0"===r&&"="===o)&&(l=r="0",o="=",f&&(s-=Math.floor((s-1)/4))),g){case"n":f=!0,g="g";break;case"%":p=100,d="%",g="f";break;case"p":p=100,d="%",g="r";break;case"b":case"o":case"x":case"X":"#"===c&&(v="0"+g.toLowerCase());case"c":case"d":m=!0,h=0;break;case"s":p=-1,g="r"}"$"===c&&(v=u[0],d=u[1]),"r"!=g||h||(g="g"),null!=h&&("g"==g?h=Math.max(1,Math.min(21,h)):("e"==g||"f"==g)&&(h=Math.max(0,Math.min(20,h)))),g=Qa.get(g)||Rt;var y=l&&f;return function(n){var e=d;if(m&&n%1)return"";var u=0>n||0===n&&0>1/n?(n=-n,"-"):a;if(0>p){var c=Vo.formatPrefix(n,h);n=c.scale(n),e=c.symbol+d}else n*=p;n=g(n,h);var x=n.lastIndexOf("."),M=0>x?n:n.substring(0,x),_=0>x?"":t+n.substring(x+1);!l&&f&&(M=i(M));var b=v.length+M.length+_.length+(y?0:u.length),w=s>b?new Array(b=s-b+1).join(r):"";return y&&(M=i(w+M)),u+=v,n=M+_,("<"===o?u+n+w:">"===o?w+u+n:"^"===o?w.substring(0,b>>=1)+u+n+w.substring(b):u+(y?n:w+n))+e}}}function Rt(n){return n+""}function Dt(){this._=new Date(arguments.length>1?Date.UTC.apply(this,arguments):arguments[0])}function Pt(n,t,e){function r(t){var e=n(t),r=i(e,1);return r-t>t-e?e:r}function u(e){return t(e=n(new tc(e-1)),1),e}function i(n,e){return t(n=new tc(+n),e),n}function o(n,r,i){var o=u(n),a=[];if(i>1)for(;r>o;)e(o)%i||a.push(new Date(+o)),t(o,1);else for(;r>o;)a.push(new Date(+o)),t(o,1);return a}function a(n,t,e){try{tc=Dt;var r=new Dt;return r._=n,o(r,t,e)}finally{tc=Date}}n.floor=n,n.round=r,n.ceil=u,n.offset=i,n.range=o;var c=n.utc=Ut(n);return c.floor=c,c.round=Ut(r),c.ceil=Ut(u),c.offset=Ut(i),c.range=a,n}function Ut(n){return function(t,e){try{tc=Dt;var r=new Dt;return r._=t,n(r,e)._}finally{tc=Date}}}function jt(n){function t(n){function t(t){for(var e,u,i,o=[],a=-1,c=0;++aa;){if(r>=l)return-1;if(u=t.charCodeAt(a++),37===u){if(o=t.charAt(a++),i=N[o in rc?t.charAt(a++):o],!i||(r=i(n,e,r))<0)return-1}else if(u!=e.charCodeAt(r++))return-1}return r}function r(n,t,e){b.lastIndex=0;var r=b.exec(t.slice(e));return r?(n.w=w.get(r[0].toLowerCase()),e+r[0].length):-1}function u(n,t,e){M.lastIndex=0;var r=M.exec(t.slice(e));return r?(n.w=_.get(r[0].toLowerCase()),e+r[0].length):-1}function i(n,t,e){E.lastIndex=0;var r=E.exec(t.slice(e));return r?(n.m=A.get(r[0].toLowerCase()),e+r[0].length):-1}function o(n,t,e){S.lastIndex=0;var r=S.exec(t.slice(e));return r?(n.m=k.get(r[0].toLowerCase()),e+r[0].length):-1}function a(n,t,r){return e(n,C.c.toString(),t,r)}function c(n,t,r){return e(n,C.x.toString(),t,r)}function l(n,t,r){return e(n,C.X.toString(),t,r)}function s(n,t,e){var r=x.get(t.slice(e,e+=2).toLowerCase());return null==r?-1:(n.p=r,e)}var f=n.dateTime,h=n.date,g=n.time,p=n.periods,v=n.days,d=n.shortDays,m=n.months,y=n.shortMonths;t.utc=function(n){function e(n){try{tc=Dt;var t=new tc;return t._=n,r(t)}finally{tc=Date}}var r=t(n);return e.parse=function(n){try{tc=Dt;var t=r.parse(n);return t&&t._}finally{tc=Date}},e.toString=r.toString,e},t.multi=t.utc.multi=ue;var x=Vo.map(),M=Ft(v),_=Ot(v),b=Ft(d),w=Ot(d),S=Ft(m),k=Ot(m),E=Ft(y),A=Ot(y);p.forEach(function(n,t){x.set(n.toLowerCase(),t)});var C={a:function(n){return d[n.getDay()]},A:function(n){return v[n.getDay()]},b:function(n){return y[n.getMonth()]},B:function(n){return m[n.getMonth()]},c:t(f),d:function(n,t){return Ht(n.getDate(),t,2)},e:function(n,t){return Ht(n.getDate(),t,2)},H:function(n,t){return Ht(n.getHours(),t,2)},I:function(n,t){return Ht(n.getHours()%12||12,t,2)},j:function(n,t){return Ht(1+nc.dayOfYear(n),t,3)},L:function(n,t){return Ht(n.getMilliseconds(),t,3)},m:function(n,t){return Ht(n.getMonth()+1,t,2)},M:function(n,t){return Ht(n.getMinutes(),t,2)},p:function(n){return p[+(n.getHours()>=12)]},S:function(n,t){return Ht(n.getSeconds(),t,2)},U:function(n,t){return Ht(nc.sundayOfYear(n),t,2)},w:function(n){return n.getDay()},W:function(n,t){return Ht(nc.mondayOfYear(n),t,2)},x:t(h),X:t(g),y:function(n,t){return Ht(n.getFullYear()%100,t,2)},Y:function(n,t){return Ht(n.getFullYear()%1e4,t,4)},Z:ee,"%":function(){return"%"}},N={a:r,A:u,b:i,B:o,c:a,d:Jt,e:Jt,H:Kt,I:Kt,j:Gt,L:te,m:Wt,M:Qt,p:s,S:ne,U:It,w:Yt,W:Zt,x:c,X:l,y:Xt,Y:Vt,Z:$t,"%":re};return t}function Ht(n,t,e){var r=0>n?"-":"",u=(r?-n:n)+"",i=u.length;return r+(e>i?new Array(e-i+1).join(t)+u:u)}function Ft(n){return new RegExp("^(?:"+n.map(Vo.requote).join("|")+")","i")}function Ot(n){for(var t=new o,e=-1,r=n.length;++e68?1900:2e3)}function Wt(n,t,e){uc.lastIndex=0;var r=uc.exec(t.slice(e,e+2));return r?(n.m=r[0]-1,e+r[0].length):-1}function Jt(n,t,e){uc.lastIndex=0;var r=uc.exec(t.slice(e,e+2));return r?(n.d=+r[0],e+r[0].length):-1}function Gt(n,t,e){uc.lastIndex=0;var r=uc.exec(t.slice(e,e+3));return r?(n.j=+r[0],e+r[0].length):-1}function Kt(n,t,e){uc.lastIndex=0;var r=uc.exec(t.slice(e,e+2));return r?(n.H=+r[0],e+r[0].length):-1}function Qt(n,t,e){uc.lastIndex=0;var r=uc.exec(t.slice(e,e+2));return r?(n.M=+r[0],e+r[0].length):-1}function ne(n,t,e){uc.lastIndex=0;var r=uc.exec(t.slice(e,e+2));return r?(n.S=+r[0],e+r[0].length):-1}function te(n,t,e){uc.lastIndex=0;var r=uc.exec(t.slice(e,e+3));return r?(n.L=+r[0],e+r[0].length):-1}function ee(n){var t=n.getTimezoneOffset(),e=t>0?"-":"+",r=0|ia(t)/60,u=ia(t)%60;return e+Ht(r,"0",2)+Ht(u,"0",2)}function re(n,t,e){ic.lastIndex=0;var r=ic.exec(t.slice(e,e+1));return r?e+r[0].length:-1}function ue(n){for(var t=n.length,e=-1;++e=0?1:-1,a=o*e,c=Math.cos(t),l=Math.sin(t),s=i*l,f=u*c+s*Math.cos(a),h=s*o*Math.sin(a);fc.add(Math.atan2(h,f)),r=n,u=c,i=l}var t,e,r,u,i;hc.point=function(o,a){hc.point=n,r=(t=o)*Ca,u=Math.cos(a=(e=a)*Ca/2+wa/4),i=Math.sin(a)},hc.lineEnd=function(){n(t,e)}}function fe(n){var t=n[0],e=n[1],r=Math.cos(e);return[r*Math.cos(t),r*Math.sin(t),Math.sin(e)]}function he(n,t){return n[0]*t[0]+n[1]*t[1]+n[2]*t[2]}function ge(n,t){return[n[1]*t[2]-n[2]*t[1],n[2]*t[0]-n[0]*t[2],n[0]*t[1]-n[1]*t[0]]}function pe(n,t){n[0]+=t[0],n[1]+=t[1],n[2]+=t[2]}function ve(n,t){return[n[0]*t,n[1]*t,n[2]*t]}function de(n){var t=Math.sqrt(n[0]*n[0]+n[1]*n[1]+n[2]*n[2]);n[0]/=t,n[1]/=t,n[2]/=t}function me(n){return[Math.atan2(n[1],n[0]),G(n[2])]}function ye(n,t){return ia(n[0]-t[0])a;++a)u.point((e=n[a])[0],e[1]);return u.lineEnd(),void 0}var c=new Ae(e,n,null,!0),l=new Ae(e,null,c,!1);c.o=l,i.push(c),o.push(l),c=new Ae(r,n,null,!1),l=new Ae(r,null,c,!0),c.o=l,i.push(c),o.push(l)}}),o.sort(t),Ee(i),Ee(o),i.length){for(var a=0,c=e,l=o.length;l>a;++a)o[a].e=c=!c;for(var s,f,h=i[0];;){for(var g=h,p=!0;g.v;)if((g=g.n)===h)return;s=g.z,u.lineStart();do{if(g.v=g.o.v=!0,g.e){if(p)for(var a=0,l=s.length;l>a;++a)u.point((f=s[a])[0],f[1]);else r(g.x,g.n.x,1,u);g=g.n}else{if(p){s=g.p.z;for(var a=s.length-1;a>=0;--a)u.point((f=s[a])[0],f[1])}else r(g.x,g.p.x,-1,u);g=g.p}g=g.o,s=g.z,p=!p}while(!g.v);u.lineEnd()}}}function Ee(n){if(t=n.length){for(var t,e,r=0,u=n[0];++r0){for(_||(i.polygonStart(),_=!0),i.lineStart();++o1&&2&t&&e.push(e.pop().concat(e.shift())),g.push(e.filter(Ne))}var g,p,v,d=t(i),m=u.invert(r[0],r[1]),y={point:o,lineStart:c,lineEnd:l,polygonStart:function(){y.point=s,y.lineStart=f,y.lineEnd=h,g=[],p=[]},polygonEnd:function(){y.point=o,y.lineStart=c,y.lineEnd=l,g=Vo.merge(g);var n=De(m,p);g.length?(_||(i.polygonStart(),_=!0),ke(g,Le,n,e,i)):n&&(_||(i.polygonStart(),_=!0),i.lineStart(),e(null,null,1,i),i.lineEnd()),_&&(i.polygonEnd(),_=!1),g=p=null},sphere:function(){i.polygonStart(),i.lineStart(),e(null,null,1,i),i.lineEnd(),i.polygonEnd()}},x=ze(),M=t(x),_=!1;return y}}function Ne(n){return n.length>1}function ze(){var n,t=[];return{lineStart:function(){t.push(n=[])},point:function(t,e){n.push([t,e])},lineEnd:v,buffer:function(){var e=t;return t=[],n=null,e},rejoin:function(){t.length>1&&t.push(t.pop().concat(t.shift()))}}}function Le(n,t){return((n=n.x)[0]<0?n[1]-ka-Ea:ka-n[1])-((t=t.x)[0]<0?t[1]-ka-Ea:ka-t[1])}function Te(n){var t,e=0/0,r=0/0,u=0/0;return{lineStart:function(){n.lineStart(),t=1},point:function(i,o){var a=i>0?wa:-wa,c=ia(i-e);ia(c-wa)0?ka:-ka),n.point(u,r),n.lineEnd(),n.lineStart(),n.point(a,r),n.point(i,r),t=0):u!==a&&c>=wa&&(ia(e-u)Ea?Math.atan((Math.sin(t)*(i=Math.cos(r))*Math.sin(e)-Math.sin(r)*(u=Math.cos(t))*Math.sin(n))/(u*i*o)):(t+r)/2}function Re(n,t,e,r){var u;if(null==n)u=e*ka,r.point(-wa,u),r.point(0,u),r.point(wa,u),r.point(wa,0),r.point(wa,-u),r.point(0,-u),r.point(-wa,-u),r.point(-wa,0),r.point(-wa,u);else if(ia(n[0]-t[0])>Ea){var i=n[0]a;++a){var l=t[a],s=l.length;if(s)for(var f=l[0],h=f[0],g=f[1]/2+wa/4,p=Math.sin(g),v=Math.cos(g),d=1;;){d===s&&(d=0),n=l[d];var m=n[0],y=n[1]/2+wa/4,x=Math.sin(y),M=Math.cos(y),_=m-h,b=_>=0?1:-1,w=b*_,S=w>wa,k=p*x;if(fc.add(Math.atan2(k*b*Math.sin(w),v*M+k*Math.cos(w))),i+=S?_+b*Sa:_,S^h>=e^m>=e){var E=ge(fe(f),fe(n));de(E);var A=ge(u,E);de(A);var C=(S^_>=0?-1:1)*G(A[2]);(r>C||r===C&&(E[0]||E[1]))&&(o+=S^_>=0?1:-1)}if(!d++)break;h=m,p=x,v=M,f=n}}return(-Ea>i||Ea>i&&0>fc)^1&o}function Pe(n){function t(n,t){return Math.cos(n)*Math.cos(t)>i}function e(n){var e,i,c,l,s;return{lineStart:function(){l=c=!1,s=1},point:function(f,h){var g,p=[f,h],v=t(f,h),d=o?v?0:u(f,h):v?u(f+(0>f?wa:-wa),h):0;if(!e&&(l=c=v)&&n.lineStart(),v!==c&&(g=r(e,p),(ye(e,g)||ye(p,g))&&(p[0]+=Ea,p[1]+=Ea,v=t(p[0],p[1]))),v!==c)s=0,v?(n.lineStart(),g=r(p,e),n.point(g[0],g[1])):(g=r(e,p),n.point(g[0],g[1]),n.lineEnd()),e=g;else if(a&&e&&o^v){var m;d&i||!(m=r(p,e,!0))||(s=0,o?(n.lineStart(),n.point(m[0][0],m[0][1]),n.point(m[1][0],m[1][1]),n.lineEnd()):(n.point(m[1][0],m[1][1]),n.lineEnd(),n.lineStart(),n.point(m[0][0],m[0][1])))}!v||e&&ye(e,p)||n.point(p[0],p[1]),e=p,c=v,i=d},lineEnd:function(){c&&n.lineEnd(),e=null},clean:function(){return s|(l&&c)<<1}}}function r(n,t,e){var r=fe(n),u=fe(t),o=[1,0,0],a=ge(r,u),c=he(a,a),l=a[0],s=c-l*l;if(!s)return!e&&n;var f=i*c/s,h=-i*l/s,g=ge(o,a),p=ve(o,f),v=ve(a,h);pe(p,v);var d=g,m=he(p,d),y=he(d,d),x=m*m-y*(he(p,p)-1);if(!(0>x)){var M=Math.sqrt(x),_=ve(d,(-m-M)/y);if(pe(_,p),_=me(_),!e)return _;var b,w=n[0],S=t[0],k=n[1],E=t[1];w>S&&(b=w,w=S,S=b);var A=S-w,C=ia(A-wa)A;if(!C&&k>E&&(b=k,k=E,E=b),N?C?k+E>0^_[1]<(ia(_[0]-w)wa^(w<=_[0]&&_[0]<=S)){var z=ve(d,(-m+M)/y);return pe(z,p),[_,me(z)]}}}function u(t,e){var r=o?n:wa-n,u=0;return-r>t?u|=1:t>r&&(u|=2),-r>e?u|=4:e>r&&(u|=8),u}var i=Math.cos(n),o=i>0,a=ia(i)>Ea,c=sr(n,6*Ca);return Ce(t,e,c,o?[0,-n]:[-wa,n-wa])}function Ue(n,t,e,r){return function(u){var i,o=u.a,a=u.b,c=o.x,l=o.y,s=a.x,f=a.y,h=0,g=1,p=s-c,v=f-l;if(i=n-c,p||!(i>0)){if(i/=p,0>p){if(h>i)return;g>i&&(g=i)}else if(p>0){if(i>g)return;i>h&&(h=i)}if(i=e-c,p||!(0>i)){if(i/=p,0>p){if(i>g)return;i>h&&(h=i)}else if(p>0){if(h>i)return;g>i&&(g=i)}if(i=t-l,v||!(i>0)){if(i/=v,0>v){if(h>i)return;g>i&&(g=i)}else if(v>0){if(i>g)return;i>h&&(h=i)}if(i=r-l,v||!(0>i)){if(i/=v,0>v){if(i>g)return;i>h&&(h=i)}else if(v>0){if(h>i)return;g>i&&(g=i)}return h>0&&(u.a={x:c+h*p,y:l+h*v}),1>g&&(u.b={x:c+g*p,y:l+g*v}),u}}}}}}function je(n,t,e,r){function u(r,u){return ia(r[0]-n)0?0:3:ia(r[0]-e)0?2:1:ia(r[1]-t)0?1:0:u>0?3:2}function i(n,t){return o(n.x,t.x)}function o(n,t){var e=u(n,1),r=u(t,1);return e!==r?e-r:0===e?t[1]-n[1]:1===e?n[0]-t[0]:2===e?n[1]-t[1]:t[0]-n[0]}return function(a){function c(n){for(var t=0,e=d.length,r=n[1],u=0;e>u;++u)for(var i,o=1,a=d[u],c=a.length,l=a[0];c>o;++o)i=a[o],l[1]<=r?i[1]>r&&W(l,i,n)>0&&++t:i[1]<=r&&W(l,i,n)<0&&--t,l=i;return 0!==t}function l(i,a,c,l){var s=0,f=0;if(null==i||(s=u(i,c))!==(f=u(a,c))||o(i,a)<0^c>0){do l.point(0===s||3===s?n:e,s>1?r:t);while((s=(s+c+4)%4)!==f)}else l.point(a[0],a[1])}function s(u,i){return u>=n&&e>=u&&i>=t&&r>=i}function f(n,t){s(n,t)&&a.point(n,t)}function h(){N.point=p,d&&d.push(m=[]),S=!0,w=!1,_=b=0/0}function g(){v&&(p(y,x),M&&w&&A.rejoin(),v.push(A.buffer())),N.point=f,w&&a.lineEnd()}function p(n,t){n=Math.max(-Ec,Math.min(Ec,n)),t=Math.max(-Ec,Math.min(Ec,t));var e=s(n,t);if(d&&m.push([n,t]),S)y=n,x=t,M=e,S=!1,e&&(a.lineStart(),a.point(n,t));else if(e&&w)a.point(n,t);else{var r={a:{x:_,y:b},b:{x:n,y:t}};C(r)?(w||(a.lineStart(),a.point(r.a.x,r.a.y)),a.point(r.b.x,r.b.y),e||a.lineEnd(),k=!1):e&&(a.lineStart(),a.point(n,t),k=!1)}_=n,b=t,w=e}var v,d,m,y,x,M,_,b,w,S,k,E=a,A=ze(),C=Ue(n,t,e,r),N={point:f,lineStart:h,lineEnd:g,polygonStart:function(){a=A,v=[],d=[],k=!0},polygonEnd:function(){a=E,v=Vo.merge(v);var t=c([n,r]),e=k&&t,u=v.length;(e||u)&&(a.polygonStart(),e&&(a.lineStart(),l(null,null,1,a),a.lineEnd()),u&&ke(v,i,t,l,a),a.polygonEnd()),v=d=m=null}};return N}}function He(n,t){function e(e,r){return e=n(e,r),t(e[0],e[1])}return n.invert&&t.invert&&(e.invert=function(e,r){return e=t.invert(e,r),e&&n.invert(e[0],e[1])}),e}function Fe(n){var t=0,e=wa/3,r=er(n),u=r(t,e);return u.parallels=function(n){return arguments.length?r(t=n[0]*wa/180,e=n[1]*wa/180):[180*(t/wa),180*(e/wa)]},u}function Oe(n,t){function e(n,t){var e=Math.sqrt(i-2*u*Math.sin(t))/u;return[e*Math.sin(n*=u),o-e*Math.cos(n)]}var r=Math.sin(n),u=(r+Math.sin(t))/2,i=1+r*(2*u-r),o=Math.sqrt(i)/u;return e.invert=function(n,t){var e=o-t;return[Math.atan2(n,e)/u,G((i-(n*n+e*e)*u*u)/(2*u))]},e}function Ye(){function n(n,t){Cc+=u*n-r*t,r=n,u=t}var t,e,r,u;qc.point=function(i,o){qc.point=n,t=r=i,e=u=o},qc.lineEnd=function(){n(t,e)}}function Ie(n,t){Nc>n&&(Nc=n),n>Lc&&(Lc=n),zc>t&&(zc=t),t>Tc&&(Tc=t)}function Ze(){function n(n,t){o.push("M",n,",",t,i)}function t(n,t){o.push("M",n,",",t),a.point=e}function e(n,t){o.push("L",n,",",t)}function r(){a.point=n}function u(){o.push("Z")}var i=Ve(4.5),o=[],a={point:n,lineStart:function(){a.point=t},lineEnd:r,polygonStart:function(){a.lineEnd=u},polygonEnd:function(){a.lineEnd=r,a.point=n},pointRadius:function(n){return i=Ve(n),a},result:function(){if(o.length){var n=o.join("");return o=[],n}}};return a}function Ve(n){return"m0,"+n+"a"+n+","+n+" 0 1,1 0,"+-2*n+"a"+n+","+n+" 0 1,1 0,"+2*n+"z"}function Xe(n,t){vc+=n,dc+=t,++mc}function $e(){function n(n,r){var u=n-t,i=r-e,o=Math.sqrt(u*u+i*i);yc+=o*(t+n)/2,xc+=o*(e+r)/2,Mc+=o,Xe(t=n,e=r)}var t,e;Dc.point=function(r,u){Dc.point=n,Xe(t=r,e=u)}}function Be(){Dc.point=Xe}function We(){function n(n,t){var e=n-r,i=t-u,o=Math.sqrt(e*e+i*i);yc+=o*(r+n)/2,xc+=o*(u+t)/2,Mc+=o,o=u*n-r*t,_c+=o*(r+n),bc+=o*(u+t),wc+=3*o,Xe(r=n,u=t)}var t,e,r,u;Dc.point=function(i,o){Dc.point=n,Xe(t=r=i,e=u=o)},Dc.lineEnd=function(){n(t,e)}}function Je(n){function t(t,e){n.moveTo(t,e),n.arc(t,e,o,0,Sa)}function e(t,e){n.moveTo(t,e),a.point=r}function r(t,e){n.lineTo(t,e)}function u(){a.point=t}function i(){n.closePath()}var o=4.5,a={point:t,lineStart:function(){a.point=e},lineEnd:u,polygonStart:function(){a.lineEnd=i},polygonEnd:function(){a.lineEnd=u,a.point=t},pointRadius:function(n){return o=n,a},result:v};return a}function Ge(n){function t(n){return(a?r:e)(n)}function e(t){return nr(t,function(e,r){e=n(e,r),t.point(e[0],e[1])})}function r(t){function e(e,r){e=n(e,r),t.point(e[0],e[1])}function r(){x=0/0,S.point=i,t.lineStart()}function i(e,r){var i=fe([e,r]),o=n(e,r);u(x,M,y,_,b,w,x=o[0],M=o[1],y=e,_=i[0],b=i[1],w=i[2],a,t),t.point(x,M)}function o(){S.point=e,t.lineEnd()}function c(){r(),S.point=l,S.lineEnd=s}function l(n,t){i(f=n,h=t),g=x,p=M,v=_,d=b,m=w,S.point=i}function s(){u(x,M,y,_,b,w,g,p,f,v,d,m,a,t),S.lineEnd=o,o()}var f,h,g,p,v,d,m,y,x,M,_,b,w,S={point:e,lineStart:r,lineEnd:o,polygonStart:function(){t.polygonStart(),S.lineStart=c},polygonEnd:function(){t.polygonEnd(),S.lineStart=r}};return S}function u(t,e,r,a,c,l,s,f,h,g,p,v,d,m){var y=s-t,x=f-e,M=y*y+x*x;if(M>4*i&&d--){var _=a+g,b=c+p,w=l+v,S=Math.sqrt(_*_+b*b+w*w),k=Math.asin(w/=S),E=ia(ia(w)-1)i||ia((y*z+x*L)/M-.5)>.3||o>a*g+c*p+l*v)&&(u(t,e,r,a,c,l,C,N,E,_/=S,b/=S,w,d,m),m.point(C,N),u(C,N,E,_,b,w,s,f,h,g,p,v,d,m))}}var i=.5,o=Math.cos(30*Ca),a=16;return t.precision=function(n){return arguments.length?(a=(i=n*n)>0&&16,t):Math.sqrt(i) +},t}function Ke(n){var t=Ge(function(t,e){return n([t*Na,e*Na])});return function(n){return rr(t(n))}}function Qe(n){this.stream=n}function nr(n,t){return{point:t,sphere:function(){n.sphere()},lineStart:function(){n.lineStart()},lineEnd:function(){n.lineEnd()},polygonStart:function(){n.polygonStart()},polygonEnd:function(){n.polygonEnd()}}}function tr(n){return er(function(){return n})()}function er(n){function t(n){return n=a(n[0]*Ca,n[1]*Ca),[n[0]*h+c,l-n[1]*h]}function e(n){return n=a.invert((n[0]-c)/h,(l-n[1])/h),n&&[n[0]*Na,n[1]*Na]}function r(){a=He(o=or(m,y,x),i);var n=i(v,d);return c=g-n[0]*h,l=p+n[1]*h,u()}function u(){return s&&(s.valid=!1,s=null),t}var i,o,a,c,l,s,f=Ge(function(n,t){return n=i(n,t),[n[0]*h+c,l-n[1]*h]}),h=150,g=480,p=250,v=0,d=0,m=0,y=0,x=0,M=kc,_=wt,b=null,w=null;return t.stream=function(n){return s&&(s.valid=!1),s=rr(M(o,f(_(n)))),s.valid=!0,s},t.clipAngle=function(n){return arguments.length?(M=null==n?(b=n,kc):Pe((b=+n)*Ca),u()):b},t.clipExtent=function(n){return arguments.length?(w=n,_=n?je(n[0][0],n[0][1],n[1][0],n[1][1]):wt,u()):w},t.scale=function(n){return arguments.length?(h=+n,r()):h},t.translate=function(n){return arguments.length?(g=+n[0],p=+n[1],r()):[g,p]},t.center=function(n){return arguments.length?(v=n[0]%360*Ca,d=n[1]%360*Ca,r()):[v*Na,d*Na]},t.rotate=function(n){return arguments.length?(m=n[0]%360*Ca,y=n[1]%360*Ca,x=n.length>2?n[2]%360*Ca:0,r()):[m*Na,y*Na,x*Na]},Vo.rebind(t,f,"precision"),function(){return i=n.apply(this,arguments),t.invert=i.invert&&e,r()}}function rr(n){return nr(n,function(t,e){n.point(t*Ca,e*Ca)})}function ur(n,t){return[n,t]}function ir(n,t){return[n>wa?n-Sa:-wa>n?n+Sa:n,t]}function or(n,t,e){return n?t||e?He(cr(n),lr(t,e)):cr(n):t||e?lr(t,e):ir}function ar(n){return function(t,e){return t+=n,[t>wa?t-Sa:-wa>t?t+Sa:t,e]}}function cr(n){var t=ar(n);return t.invert=ar(-n),t}function lr(n,t){function e(n,t){var e=Math.cos(t),a=Math.cos(n)*e,c=Math.sin(n)*e,l=Math.sin(t),s=l*r+a*u;return[Math.atan2(c*i-s*o,a*r-l*u),G(s*i+c*o)]}var r=Math.cos(n),u=Math.sin(n),i=Math.cos(t),o=Math.sin(t);return e.invert=function(n,t){var e=Math.cos(t),a=Math.cos(n)*e,c=Math.sin(n)*e,l=Math.sin(t),s=l*i-c*o;return[Math.atan2(c*i+l*o,a*r+s*u),G(s*r-a*u)]},e}function sr(n,t){var e=Math.cos(n),r=Math.sin(n);return function(u,i,o,a){var c=o*t;null!=u?(u=fr(e,u),i=fr(e,i),(o>0?i>u:u>i)&&(u+=o*Sa)):(u=n+o*Sa,i=n-.5*c);for(var l,s=u;o>0?s>i:i>s;s-=c)a.point((l=me([e,-r*Math.cos(s),-r*Math.sin(s)]))[0],l[1])}}function fr(n,t){var e=fe(t);e[0]-=n,de(e);var r=J(-e[1]);return((-e[2]<0?-r:r)+2*Math.PI-Ea)%(2*Math.PI)}function hr(n,t,e){var r=Vo.range(n,t-Ea,e).concat(t);return function(n){return r.map(function(t){return[n,t]})}}function gr(n,t,e){var r=Vo.range(n,t-Ea,e).concat(t);return function(n){return r.map(function(t){return[t,n]})}}function pr(n){return n.source}function vr(n){return n.target}function dr(n,t,e,r){var u=Math.cos(t),i=Math.sin(t),o=Math.cos(r),a=Math.sin(r),c=u*Math.cos(n),l=u*Math.sin(n),s=o*Math.cos(e),f=o*Math.sin(e),h=2*Math.asin(Math.sqrt(tt(r-t)+u*o*tt(e-n))),g=1/Math.sin(h),p=h?function(n){var t=Math.sin(n*=h)*g,e=Math.sin(h-n)*g,r=e*c+t*s,u=e*l+t*f,o=e*i+t*a;return[Math.atan2(u,r)*Na,Math.atan2(o,Math.sqrt(r*r+u*u))*Na]}:function(){return[n*Na,t*Na]};return p.distance=h,p}function mr(){function n(n,u){var i=Math.sin(u*=Ca),o=Math.cos(u),a=ia((n*=Ca)-t),c=Math.cos(a);Pc+=Math.atan2(Math.sqrt((a=o*Math.sin(a))*a+(a=r*i-e*o*c)*a),e*i+r*o*c),t=n,e=i,r=o}var t,e,r;Uc.point=function(u,i){t=u*Ca,e=Math.sin(i*=Ca),r=Math.cos(i),Uc.point=n},Uc.lineEnd=function(){Uc.point=Uc.lineEnd=v}}function yr(n,t){function e(t,e){var r=Math.cos(t),u=Math.cos(e),i=n(r*u);return[i*u*Math.sin(t),i*Math.sin(e)]}return e.invert=function(n,e){var r=Math.sqrt(n*n+e*e),u=t(r),i=Math.sin(u),o=Math.cos(u);return[Math.atan2(n*i,r*o),Math.asin(r&&e*i/r)]},e}function xr(n,t){function e(n,t){o>0?-ka+Ea>t&&(t=-ka+Ea):t>ka-Ea&&(t=ka-Ea);var e=o/Math.pow(u(t),i);return[e*Math.sin(i*n),o-e*Math.cos(i*n)]}var r=Math.cos(n),u=function(n){return Math.tan(wa/4+n/2)},i=n===t?Math.sin(n):Math.log(r/Math.cos(t))/Math.log(u(t)/u(n)),o=r*Math.pow(u(n),i)/i;return i?(e.invert=function(n,t){var e=o-t,r=B(i)*Math.sqrt(n*n+e*e);return[Math.atan2(n,e)/i,2*Math.atan(Math.pow(o/r,1/i))-ka]},e):_r}function Mr(n,t){function e(n,t){var e=i-t;return[e*Math.sin(u*n),i-e*Math.cos(u*n)]}var r=Math.cos(n),u=n===t?Math.sin(n):(r-Math.cos(t))/(t-n),i=r/u+n;return ia(u)u;u++){for(;r>1&&W(n[e[r-2]],n[e[r-1]],n[u])<=0;)--r;e[r++]=u}return e.slice(0,r)}function Ar(n,t){return n[0]-t[0]||n[1]-t[1]}function Cr(n,t,e){return(e[0]-t[0])*(n[1]-t[1])<(e[1]-t[1])*(n[0]-t[0])}function Nr(n,t,e,r){var u=n[0],i=e[0],o=t[0]-u,a=r[0]-i,c=n[1],l=e[1],s=t[1]-c,f=r[1]-l,h=(a*(c-l)-f*(u-i))/(f*o-a*s);return[u+h*o,c+h*s]}function zr(n){var t=n[0],e=n[n.length-1];return!(t[0]-e[0]||t[1]-e[1])}function Lr(){Kr(this),this.edge=this.site=this.circle=null}function Tr(n){var t=Wc.pop()||new Lr;return t.site=n,t}function qr(n){Ir(n),Xc.remove(n),Wc.push(n),Kr(n)}function Rr(n){var t=n.circle,e=t.x,r=t.cy,u={x:e,y:r},i=n.P,o=n.N,a=[n];qr(n);for(var c=i;c.circle&&ia(e-c.circle.x)s;++s)l=a[s],c=a[s-1],Wr(l.edge,c.site,l.site,u);c=a[0],l=a[f-1],l.edge=$r(c.site,l.site,null,u),Yr(c),Yr(l)}function Dr(n){for(var t,e,r,u,i=n.x,o=n.y,a=Xc._;a;)if(r=Pr(a,o)-i,r>Ea)a=a.L;else{if(u=i-Ur(a,o),!(u>Ea)){r>-Ea?(t=a.P,e=a):u>-Ea?(t=a,e=a.N):t=e=a;break}if(!a.R){t=a;break}a=a.R}var c=Tr(n);if(Xc.insert(t,c),t||e){if(t===e)return Ir(t),e=Tr(t.site),Xc.insert(c,e),c.edge=e.edge=$r(t.site,c.site),Yr(t),Yr(e),void 0;if(!e)return c.edge=$r(t.site,c.site),void 0;Ir(t),Ir(e);var l=t.site,s=l.x,f=l.y,h=n.x-s,g=n.y-f,p=e.site,v=p.x-s,d=p.y-f,m=2*(h*d-g*v),y=h*h+g*g,x=v*v+d*d,M={x:(d*y-g*x)/m+s,y:(h*x-v*y)/m+f};Wr(e.edge,l,p,M),c.edge=$r(l,n,null,M),e.edge=$r(n,p,null,M),Yr(t),Yr(e)}}function Pr(n,t){var e=n.site,r=e.x,u=e.y,i=u-t;if(!i)return r;var o=n.P;if(!o)return-1/0;e=o.site;var a=e.x,c=e.y,l=c-t;if(!l)return a;var s=a-r,f=1/i-1/l,h=s/l;return f?(-h+Math.sqrt(h*h-2*f*(s*s/(-2*l)-c+l/2+u-i/2)))/f+r:(r+a)/2}function Ur(n,t){var e=n.N;if(e)return Pr(e,t);var r=n.site;return r.y===t?r.x:1/0}function jr(n){this.site=n,this.edges=[]}function Hr(n){for(var t,e,r,u,i,o,a,c,l,s,f=n[0][0],h=n[1][0],g=n[0][1],p=n[1][1],v=Vc,d=v.length;d--;)if(i=v[d],i&&i.prepare())for(a=i.edges,c=a.length,o=0;c>o;)s=a[o].end(),r=s.x,u=s.y,l=a[++o%c].start(),t=l.x,e=l.y,(ia(r-t)>Ea||ia(u-e)>Ea)&&(a.splice(o,0,new Jr(Br(i.site,s,ia(r-f)Ea?{x:f,y:ia(t-f)Ea?{x:ia(e-p)Ea?{x:h,y:ia(t-h)Ea?{x:ia(e-g)=-Aa)){var g=c*c+l*l,p=s*s+f*f,v=(f*g-l*p)/h,d=(c*p-s*g)/h,f=d+a,m=Jc.pop()||new Or;m.arc=n,m.site=u,m.x=v+o,m.y=f+Math.sqrt(v*v+d*d),m.cy=f,n.circle=m;for(var y=null,x=Bc._;x;)if(m.yd||d>=a)return;if(h>p){if(i){if(i.y>=l)return}else i={x:d,y:c};e={x:d,y:l}}else{if(i){if(i.yr||r>1)if(h>p){if(i){if(i.y>=l)return}else i={x:(c-u)/r,y:c};e={x:(l-u)/r,y:l}}else{if(i){if(i.yg){if(i){if(i.x>=a)return}else i={x:o,y:r*o+u};e={x:a,y:r*a+u}}else{if(i){if(i.xi&&(u=t.slice(i,u),a[o]?a[o]+=u:a[++o]=u),(e=e[0])===(r=r[0])?a[o]?a[o]+=r:a[++o]=r:(a[++o]=null,c.push({i:o,x:fu(e,r)})),i=Qc.lastIndex;return ir;++r)a[(e=c[r]).i]=e.x(n);return a.join("")})}function gu(n,t){for(var e,r=Vo.interpolators.length;--r>=0&&!(e=Vo.interpolators[r](n,t)););return e}function pu(n,t){var e,r=[],u=[],i=n.length,o=t.length,a=Math.min(n.length,t.length);for(e=0;a>e;++e)r.push(gu(n[e],t[e]));for(;i>e;++e)u[e]=n[e];for(;o>e;++e)u[e]=t[e];return function(n){for(e=0;a>e;++e)u[e]=r[e](n);return u}}function vu(n){return function(t){return 0>=t?0:t>=1?1:n(t)}}function du(n){return function(t){return 1-n(1-t)}}function mu(n){return function(t){return.5*(.5>t?n(2*t):2-n(2-2*t))}}function yu(n){return n*n}function xu(n){return n*n*n}function Mu(n){if(0>=n)return 0;if(n>=1)return 1;var t=n*n,e=t*n;return 4*(.5>n?e:3*(n-t)+e-.75)}function _u(n){return function(t){return Math.pow(t,n)}}function bu(n){return 1-Math.cos(n*ka)}function wu(n){return Math.pow(2,10*(n-1))}function Su(n){return 1-Math.sqrt(1-n*n)}function ku(n,t){var e;return arguments.length<2&&(t=.45),arguments.length?e=t/Sa*Math.asin(1/n):(n=1,e=t/4),function(r){return 1+n*Math.pow(2,-10*r)*Math.sin((r-e)*Sa/t)}}function Eu(n){return n||(n=1.70158),function(t){return t*t*((n+1)*t-n)}}function Au(n){return 1/2.75>n?7.5625*n*n:2/2.75>n?7.5625*(n-=1.5/2.75)*n+.75:2.5/2.75>n?7.5625*(n-=2.25/2.75)*n+.9375:7.5625*(n-=2.625/2.75)*n+.984375}function Cu(n,t){n=Vo.hcl(n),t=Vo.hcl(t);var e=n.h,r=n.c,u=n.l,i=t.h-e,o=t.c-r,a=t.l-u;return isNaN(o)&&(o=0,r=isNaN(r)?t.c:r),isNaN(i)?(i=0,e=isNaN(e)?t.h:e):i>180?i-=360:-180>i&&(i+=360),function(n){return ot(e+i*n,r+o*n,u+a*n)+""}}function Nu(n,t){n=Vo.hsl(n),t=Vo.hsl(t);var e=n.h,r=n.s,u=n.l,i=t.h-e,o=t.s-r,a=t.l-u;return isNaN(o)&&(o=0,r=isNaN(r)?t.s:r),isNaN(i)?(i=0,e=isNaN(e)?t.h:e):i>180?i-=360:-180>i&&(i+=360),function(n){return ut(e+i*n,r+o*n,u+a*n)+""}}function zu(n,t){n=Vo.lab(n),t=Vo.lab(t);var e=n.l,r=n.a,u=n.b,i=t.l-e,o=t.a-r,a=t.b-u;return function(n){return ct(e+i*n,r+o*n,u+a*n)+""}}function Lu(n,t){return t-=n,function(e){return Math.round(n+t*e)}}function Tu(n){var t=[n.a,n.b],e=[n.c,n.d],r=Ru(t),u=qu(t,e),i=Ru(Du(e,t,-u))||0;t[0]*e[1]180?s+=360:s-l>180&&(l+=360),u.push({i:r.push(r.pop()+"rotate(",null,")")-2,x:fu(l,s)})):s&&r.push(r.pop()+"rotate("+s+")"),f!=h?u.push({i:r.push(r.pop()+"skewX(",null,")")-2,x:fu(f,h)}):h&&r.push(r.pop()+"skewX("+h+")"),g[0]!=p[0]||g[1]!=p[1]?(e=r.push(r.pop()+"scale(",null,",",null,")"),u.push({i:e-4,x:fu(g[0],p[0])},{i:e-2,x:fu(g[1],p[1])})):(1!=p[0]||1!=p[1])&&r.push(r.pop()+"scale("+p+")"),e=u.length,function(n){for(var t,i=-1;++i=0;)e.push(u[r])}function Wu(n,t){for(var e=[n],r=[];null!=(n=e.pop());)if(r.push(n),(i=n.children)&&(u=i.length))for(var u,i,o=-1;++oe;++e)(t=n[e][1])>u&&(r=e,u=t);return r}function oi(n){return n.reduce(ai,0)}function ai(n,t){return n+t[1]}function ci(n,t){return li(n,Math.ceil(Math.log(t.length)/Math.LN2+1))}function li(n,t){for(var e=-1,r=+n[0],u=(n[1]-r)/t,i=[];++e<=t;)i[e]=u*e+r;return i}function si(n){return[Vo.min(n),Vo.max(n)]}function fi(n,t){return n.value-t.value}function hi(n,t){var e=n._pack_next;n._pack_next=t,t._pack_prev=n,t._pack_next=e,e._pack_prev=t}function gi(n,t){n._pack_next=t,t._pack_prev=n}function pi(n,t){var e=t.x-n.x,r=t.y-n.y,u=n.r+t.r;return.999*u*u>e*e+r*r}function vi(n){function t(n){s=Math.min(n.x-n.r,s),f=Math.max(n.x+n.r,f),h=Math.min(n.y-n.r,h),g=Math.max(n.y+n.r,g)}if((e=n.children)&&(l=e.length)){var e,r,u,i,o,a,c,l,s=1/0,f=-1/0,h=1/0,g=-1/0;if(e.forEach(di),r=e[0],r.x=-r.r,r.y=0,t(r),l>1&&(u=e[1],u.x=u.r,u.y=0,t(u),l>2))for(i=e[2],xi(r,u,i),t(i),hi(r,i),r._pack_prev=i,hi(i,u),u=r._pack_next,o=3;l>o;o++){xi(r,u,i=e[o]);var p=0,v=1,d=1;for(a=u._pack_next;a!==u;a=a._pack_next,v++)if(pi(a,i)){p=1;break}if(1==p)for(c=r._pack_prev;c!==a._pack_prev&&!pi(c,i);c=c._pack_prev,d++);p?(d>v||v==d&&u.ro;o++)i=e[o],i.x-=m,i.y-=y,x=Math.max(x,i.r+Math.sqrt(i.x*i.x+i.y*i.y));n.r=x,e.forEach(mi)}}function di(n){n._pack_next=n._pack_prev=n}function mi(n){delete n._pack_next,delete n._pack_prev}function yi(n,t,e,r){var u=n.children;if(n.x=t+=r*n.x,n.y=e+=r*n.y,n.r*=r,u)for(var i=-1,o=u.length;++i=0;)t=u[i],t.z+=e,t.m+=e,e+=t.s+(r+=t.c)}function ki(n,t,e){return n.a.parent===t.parent?n.a:e}function Ei(n){return 1+Vo.max(n,function(n){return n.y})}function Ai(n){return n.reduce(function(n,t){return n+t.x},0)/n.length}function Ci(n){var t=n.children;return t&&t.length?Ci(t[0]):n}function Ni(n){var t,e=n.children;return e&&(t=e.length)?Ni(e[t-1]):n}function zi(n){return{x:n.x,y:n.y,dx:n.dx,dy:n.dy}}function Li(n,t){var e=n.x+t[3],r=n.y+t[0],u=n.dx-t[1]-t[3],i=n.dy-t[0]-t[2];return 0>u&&(e+=u/2,u=0),0>i&&(r+=i/2,i=0),{x:e,y:r,dx:u,dy:i}}function Ti(n){var t=n[0],e=n[n.length-1];return e>t?[t,e]:[e,t]}function qi(n){return n.rangeExtent?n.rangeExtent():Ti(n.range())}function Ri(n,t,e,r){var u=e(n[0],n[1]),i=r(t[0],t[1]);return function(n){return i(u(n))}}function Di(n,t){var e,r=0,u=n.length-1,i=n[r],o=n[u];return i>o&&(e=r,r=u,u=e,e=i,i=o,o=e),n[r]=t.floor(i),n[u]=t.ceil(o),n}function Pi(n){return n?{floor:function(t){return Math.floor(t/n)*n},ceil:function(t){return Math.ceil(t/n)*n}}:sl}function Ui(n,t,e,r){var u=[],i=[],o=0,a=Math.min(n.length,t.length)-1;for(n[a]2?Ui:Ri,c=r?ju:Uu;return o=u(n,t,c,e),a=u(t,n,c,gu),i}function i(n){return o(n)}var o,a;return i.invert=function(n){return a(n)},i.domain=function(t){return arguments.length?(n=t.map(Number),u()):n},i.range=function(n){return arguments.length?(t=n,u()):t},i.rangeRound=function(n){return i.range(n).interpolate(Lu)},i.clamp=function(n){return arguments.length?(r=n,u()):r},i.interpolate=function(n){return arguments.length?(e=n,u()):e},i.ticks=function(t){return Yi(n,t)},i.tickFormat=function(t,e){return Ii(n,t,e)},i.nice=function(t){return Fi(n,t),u()},i.copy=function(){return ji(n,t,e,r)},u()}function Hi(n,t){return Vo.rebind(n,t,"range","rangeRound","interpolate","clamp")}function Fi(n,t){return Di(n,Pi(Oi(n,t)[2]))}function Oi(n,t){null==t&&(t=10);var e=Ti(n),r=e[1]-e[0],u=Math.pow(10,Math.floor(Math.log(r/t)/Math.LN10)),i=t/r*u;return.15>=i?u*=10:.35>=i?u*=5:.75>=i&&(u*=2),e[0]=Math.ceil(e[0]/u)*u,e[1]=Math.floor(e[1]/u)*u+.5*u,e[2]=u,e}function Yi(n,t){return Vo.range.apply(Vo,Oi(n,t))}function Ii(n,t,e){var r=Oi(n,t);if(e){var u=Ka.exec(e);if(u.shift(),"s"===u[8]){var i=Vo.formatPrefix(Math.max(ia(r[0]),ia(r[1])));return u[7]||(u[7]="."+Zi(i.scale(r[2]))),u[8]="f",e=Vo.format(u.join("")),function(n){return e(i.scale(n))+i.symbol}}u[7]||(u[7]="."+Vi(u[8],r)),e=u.join("")}else e=",."+Zi(r[2])+"f";return Vo.format(e)}function Zi(n){return-Math.floor(Math.log(n)/Math.LN10+.01)}function Vi(n,t){var e=Zi(t[2]);return n in fl?Math.abs(e-Zi(Math.max(ia(t[0]),ia(t[1]))))+ +("e"!==n):e-2*("%"===n)}function Xi(n,t,e,r){function u(n){return(e?Math.log(0>n?0:n):-Math.log(n>0?0:-n))/Math.log(t)}function i(n){return e?Math.pow(t,n):-Math.pow(t,-n)}function o(t){return n(u(t))}return o.invert=function(t){return i(n.invert(t))},o.domain=function(t){return arguments.length?(e=t[0]>=0,n.domain((r=t.map(Number)).map(u)),o):r},o.base=function(e){return arguments.length?(t=+e,n.domain(r.map(u)),o):t},o.nice=function(){var t=Di(r.map(u),e?Math:gl);return n.domain(t),r=t.map(i),o},o.ticks=function(){var n=Ti(r),o=[],a=n[0],c=n[1],l=Math.floor(u(a)),s=Math.ceil(u(c)),f=t%1?2:t;if(isFinite(s-l)){if(e){for(;s>l;l++)for(var h=1;f>h;h++)o.push(i(l)*h);o.push(i(l))}else for(o.push(i(l));l++0;h--)o.push(i(l)*h);for(l=0;o[l]c;s--);o=o.slice(l,s)}return o},o.tickFormat=function(n,t){if(!arguments.length)return hl;arguments.length<2?t=hl:"function"!=typeof t&&(t=Vo.format(t));var r,a=Math.max(.1,n/o.ticks().length),c=e?(r=1e-12,Math.ceil):(r=-1e-12,Math.floor);return function(n){return n/i(c(u(n)+r))<=a?t(n):""}},o.copy=function(){return Xi(n.copy(),t,e,r)},Hi(o,n)}function $i(n,t,e){function r(t){return n(u(t))}var u=Bi(t),i=Bi(1/t);return r.invert=function(t){return i(n.invert(t))},r.domain=function(t){return arguments.length?(n.domain((e=t.map(Number)).map(u)),r):e},r.ticks=function(n){return Yi(e,n)},r.tickFormat=function(n,t){return Ii(e,n,t)},r.nice=function(n){return r.domain(Fi(e,n))},r.exponent=function(o){return arguments.length?(u=Bi(t=o),i=Bi(1/t),n.domain(e.map(u)),r):t},r.copy=function(){return $i(n.copy(),t,e)},Hi(r,n)}function Bi(n){return function(t){return 0>t?-Math.pow(-t,n):Math.pow(t,n)}}function Wi(n,t){function e(e){return i[((u.get(e)||("range"===t.t?u.set(e,n.push(e)):0/0))-1)%i.length]}function r(t,e){return Vo.range(n.length).map(function(n){return t+e*n})}var u,i,a;return e.domain=function(r){if(!arguments.length)return n;n=[],u=new o;for(var i,a=-1,c=r.length;++an?[0/0,0/0]:[n>0?o[n-1]:e[0],nt?0/0:t/i+n,[t,t+1/i]},r.copy=function(){return Gi(n,t,e)},u()}function Ki(n,t){function e(e){return e>=e?t[Vo.bisect(n,e)]:void 0}return e.domain=function(t){return arguments.length?(n=t,e):n},e.range=function(n){return arguments.length?(t=n,e):t},e.invertExtent=function(e){return e=t.indexOf(e),[n[e-1],n[e]]},e.copy=function(){return Ki(n,t)},e}function Qi(n){function t(n){return+n}return t.invert=t,t.domain=t.range=function(e){return arguments.length?(n=e.map(t),t):n},t.ticks=function(t){return Yi(n,t)},t.tickFormat=function(t,e){return Ii(n,t,e)},t.copy=function(){return Qi(n)},t}function no(n){return n.innerRadius}function to(n){return n.outerRadius}function eo(n){return n.startAngle}function ro(n){return n.endAngle}function uo(n){function t(t){function o(){l.push("M",i(n(s),a))}for(var c,l=[],s=[],f=-1,h=t.length,g=bt(e),p=bt(r);++f1&&u.push("H",r[0]),u.join("")}function co(n){for(var t=0,e=n.length,r=n[0],u=[r[0],",",r[1]];++t1){a=t[1],i=n[c],c++,r+="C"+(u[0]+o[0])+","+(u[1]+o[1])+","+(i[0]-a[0])+","+(i[1]-a[1])+","+i[0]+","+i[1];for(var l=2;l9&&(u=3*t/Math.sqrt(u),o[a]=u*e,o[a+1]=u*r));for(a=-1;++a<=c;)u=(n[Math.min(c,a+1)][0]-n[Math.max(0,a-1)][0])/(6*(1+o[a]*o[a])),i.push([u||0,o[a]*u||0]);return i}function ko(n){return n.length<3?io(n):n[0]+go(n,So(n))}function Eo(n){for(var t,e,r,u=-1,i=n.length;++ue?l():(u.active=e,i.event&&i.event.start.call(n,s,t),i.tween.forEach(function(e,r){(r=r.call(n,s,t))&&v.push(r)}),Vo.timer(function(){return p.c=c(r||1)?Se:c,1},0,a),void 0)}function c(r){if(u.active!==e)return l();for(var o=r/g,a=f(o),c=v.length;c>0;)v[--c].call(n,a);return o>=1?(i.event&&i.event.end.call(n,s,t),l()):void 0 +}function l(){return--u.count?delete u[e]:delete n.__transition__,1}var s=n.__data__,f=i.ease,h=i.delay,g=i.duration,p=Wa,v=[];return p.t=h+a,r>=h?o(r-h):(p.c=o,void 0)},0,a)}}function jo(n,t){n.attr("transform",function(n){return"translate("+t(n)+",0)"})}function Ho(n,t){n.attr("transform",function(n){return"translate(0,"+t(n)+")"})}function Fo(n){return n.toISOString()}function Oo(n,t,e){function r(t){return n(t)}function u(n,e){var r=n[1]-n[0],u=r/e,i=Vo.bisect(jl,u);return i==jl.length?[t.year,Oi(n.map(function(n){return n/31536e6}),e)[2]]:i?t[u/jl[i-1]1?{floor:function(t){for(;e(t=n.floor(t));)t=Yo(t-1);return t},ceil:function(t){for(;e(t=n.ceil(t));)t=Yo(+t+1);return t}}:n))},r.ticks=function(n,t){var e=Ti(r.domain()),i=null==n?u(e,10):"number"==typeof n?u(e,n):!n.range&&[{range:n},t];return i&&(n=i[0],t=i[1]),n.range(e[0],Yo(+e[1]+1),1>t?1:t)},r.tickFormat=function(){return e},r.copy=function(){return Oo(n.copy(),t,e)},Hi(r,n)}function Yo(n){return new Date(n)}function Io(n){return JSON.parse(n.responseText)}function Zo(n){var t=Bo.createRange();return t.selectNode(Bo.body),t.createContextualFragment(n.responseText)}var Vo={version:"3.4.12"};Date.now||(Date.now=function(){return+new Date});var Xo=[].slice,$o=function(n){return Xo.call(n)},Bo=document,Wo=Bo.documentElement,Jo=window;try{$o(Wo.childNodes)[0].nodeType}catch(Go){$o=function(n){for(var t=n.length,e=new Array(t);t--;)e[t]=n[t];return e}}try{Bo.createElement("div").style.setProperty("opacity",0,"")}catch(Ko){var Qo=Jo.Element.prototype,na=Qo.setAttribute,ta=Qo.setAttributeNS,ea=Jo.CSSStyleDeclaration.prototype,ra=ea.setProperty;Qo.setAttribute=function(n,t){na.call(this,n,t+"")},Qo.setAttributeNS=function(n,t,e){ta.call(this,n,t,e+"")},ea.setProperty=function(n,t,e){ra.call(this,n,t+"",e)}}Vo.ascending=n,Vo.descending=function(n,t){return n>t?-1:t>n?1:t>=n?0:0/0},Vo.min=function(n,t){var e,r,u=-1,i=n.length;if(1===arguments.length){for(;++u=e);)e=void 0;for(;++ur&&(e=r)}else{for(;++u=e);)e=void 0;for(;++ur&&(e=r)}return e},Vo.max=function(n,t){var e,r,u=-1,i=n.length;if(1===arguments.length){for(;++u=e);)e=void 0;for(;++ue&&(e=r)}else{for(;++u=e);)e=void 0;for(;++ue&&(e=r)}return e},Vo.extent=function(n,t){var e,r,u,i=-1,o=n.length;if(1===arguments.length){for(;++i=e);)e=u=void 0;for(;++ir&&(e=r),r>u&&(u=r))}else{for(;++i=e);)e=void 0;for(;++ir&&(e=r),r>u&&(u=r))}return[e,u]},Vo.sum=function(n,t){var e,r=0,u=n.length,i=-1;if(1===arguments.length)for(;++i1&&(e=e.map(r)),e=e.filter(t),e.length?Vo.quantile(e.sort(n),.5):void 0};var ua=e(n);Vo.bisectLeft=ua.left,Vo.bisect=Vo.bisectRight=ua.right,Vo.bisector=function(t){return e(1===t.length?function(e,r){return n(t(e),r)}:t)},Vo.shuffle=function(n){for(var t,e,r=n.length;r;)e=0|Math.random()*r--,t=n[r],n[r]=n[e],n[e]=t;return n},Vo.permute=function(n,t){for(var e=t.length,r=new Array(e);e--;)r[e]=n[t[e]];return r},Vo.pairs=function(n){for(var t,e=0,r=n.length-1,u=n[0],i=new Array(0>r?0:r);r>e;)i[e]=[t=u,u=n[++e]];return i},Vo.zip=function(){if(!(u=arguments.length))return[];for(var n=-1,t=Vo.min(arguments,r),e=new Array(t);++n=0;)for(r=n[u],t=r.length;--t>=0;)e[--o]=r[t];return e};var ia=Math.abs;Vo.range=function(n,t,e){if(arguments.length<3&&(e=1,arguments.length<2&&(t=n,n=0)),1/0===(t-n)/e)throw new Error("infinite range");var r,i=[],o=u(ia(e)),a=-1;if(n*=o,t*=o,e*=o,0>e)for(;(r=n+e*++a)>t;)i.push(r/o);else for(;(r=n+e*++a)=i.length)return r?r.call(u,a):e?a.sort(e):a;for(var l,s,f,h,g=-1,p=a.length,v=i[c++],d=new o;++g=i.length)return n;var r=[],u=a[e++];return n.forEach(function(n,u){r.push({key:n,values:t(u,e)})}),u?r.sort(function(n,t){return u(n.key,t.key)}):r}var e,r,u={},i=[],a=[];return u.map=function(t,e){return n(e,t,0)},u.entries=function(e){return t(n(Vo.map,e,0),0)},u.key=function(n){return i.push(n),u},u.sortKeys=function(n){return a[i.length-1]=n,u},u.sortValues=function(n){return e=n,u},u.rollup=function(n){return r=n,u},u},Vo.set=function(n){var t=new h;if(n)for(var e=0,r=n.length;r>e;++e)t.add(n[e]);return t},i(h,{has:a,add:function(n){return this[oa+n]=!0,n},remove:function(n){return n=oa+n,n in this&&delete this[n]},values:l,size:s,empty:f,forEach:function(n){for(var t in this)t.charCodeAt(0)===aa&&n.call(this,t.slice(1))}}),Vo.behavior={},Vo.rebind=function(n,t){for(var e,r=1,u=arguments.length;++r=0&&(r=n.slice(e+1),n=n.slice(0,e)),n)return arguments.length<2?this[n].on(r):this[n].on(r,t);if(2===arguments.length){if(null==t)for(n in this)this.hasOwnProperty(n)&&this[n].on(r,null);return this}},Vo.event=null,Vo.requote=function(n){return n.replace(la,"\\$&")};var la=/[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g,sa={}.__proto__?function(n,t){n.__proto__=t}:function(n,t){for(var e in t)n[e]=t[e]},fa=function(n,t){return t.querySelector(n)},ha=function(n,t){return t.querySelectorAll(n)},ga=Wo.matches||Wo[p(Wo,"matchesSelector")],pa=function(n,t){return ga.call(n,t)};"function"==typeof Sizzle&&(fa=function(n,t){return Sizzle(n,t)[0]||null},ha=Sizzle,pa=Sizzle.matchesSelector),Vo.selection=function(){return ya};var va=Vo.selection.prototype=[];va.select=function(n){var t,e,r,u,i=[];n=b(n);for(var o=-1,a=this.length;++o=0&&(e=n.slice(0,t),n=n.slice(t+1)),da.hasOwnProperty(e)?{space:da[e],local:n}:n}},va.attr=function(n,t){if(arguments.length<2){if("string"==typeof n){var e=this.node();return n=Vo.ns.qualify(n),n.local?e.getAttributeNS(n.space,n.local):e.getAttribute(n)}for(t in n)this.each(S(t,n[t]));return this}return this.each(S(n,t))},va.classed=function(n,t){if(arguments.length<2){if("string"==typeof n){var e=this.node(),r=(n=A(n)).length,u=-1;if(t=e.classList){for(;++ur){if("string"!=typeof n){2>r&&(t="");for(e in n)this.each(z(e,n[e],t));return this}if(2>r)return Jo.getComputedStyle(this.node(),null).getPropertyValue(n);e=""}return this.each(z(n,t,e))},va.property=function(n,t){if(arguments.length<2){if("string"==typeof n)return this.node()[n];for(t in n)this.each(L(t,n[t]));return this}return this.each(L(n,t))},va.text=function(n){return arguments.length?this.each("function"==typeof n?function(){var t=n.apply(this,arguments);this.textContent=null==t?"":t}:null==n?function(){this.textContent=""}:function(){this.textContent=n}):this.node().textContent},va.html=function(n){return arguments.length?this.each("function"==typeof n?function(){var t=n.apply(this,arguments);this.innerHTML=null==t?"":t}:null==n?function(){this.innerHTML=""}:function(){this.innerHTML=n}):this.node().innerHTML},va.append=function(n){return n=T(n),this.select(function(){return this.appendChild(n.apply(this,arguments))})},va.insert=function(n,t){return n=T(n),t=b(t),this.select(function(){return this.insertBefore(n.apply(this,arguments),t.apply(this,arguments)||null)})},va.remove=function(){return this.each(function(){var n=this.parentNode;n&&n.removeChild(this)})},va.data=function(n,t){function e(n,e){var r,u,i,a=n.length,f=e.length,h=Math.min(a,f),g=new Array(f),p=new Array(f),v=new Array(a);if(t){var d,m=new o,y=new o,x=[];for(r=-1;++rr;++r)p[r]=q(e[r]);for(;a>r;++r)v[r]=n[r]}p.update=g,p.parentNode=g.parentNode=v.parentNode=n.parentNode,c.push(p),l.push(g),s.push(v)}var r,u,i=-1,a=this.length;if(!arguments.length){for(n=new Array(a=(r=this[0]).length);++ii;i++){u.push(t=[]),t.parentNode=(e=this[i]).parentNode;for(var a=0,c=e.length;c>a;a++)(r=e[a])&&n.call(r,r.__data__,a,i)&&t.push(r)}return _(u)},va.order=function(){for(var n=-1,t=this.length;++n=0;)(e=r[u])&&(i&&i!==e.nextSibling&&i.parentNode.insertBefore(e,i),i=e);return this},va.sort=function(n){n=D.apply(this,arguments);for(var t=-1,e=this.length;++tn;n++)for(var e=this[n],r=0,u=e.length;u>r;r++){var i=e[r];if(i)return i}return null},va.size=function(){var n=0;return P(this,function(){++n}),n};var ma=[];Vo.selection.enter=U,Vo.selection.enter.prototype=ma,ma.append=va.append,ma.empty=va.empty,ma.node=va.node,ma.call=va.call,ma.size=va.size,ma.select=function(n){for(var t,e,r,u,i,o=[],a=-1,c=this.length;++ar){if("string"!=typeof n){2>r&&(t=!1);for(e in n)this.each(F(e,n[e],t));return this}if(2>r)return(r=this.node()["__on"+n])&&r._;e=!1}return this.each(F(n,t,e))};var xa=Vo.map({mouseenter:"mouseover",mouseleave:"mouseout"});xa.forEach(function(n){"on"+n in Bo&&xa.remove(n)});var Ma="onselectstart"in Bo?null:p(Wo.style,"userSelect"),_a=0;Vo.mouse=function(n){return Z(n,x())};var ba=/WebKit/.test(Jo.navigator.userAgent)?-1:0;Vo.touch=function(n,t,e){if(arguments.length<3&&(e=t,t=x().changedTouches),t)for(var r,u=0,i=t.length;i>u;++u)if((r=t[u]).identifier===e)return Z(n,r)},Vo.behavior.drag=function(){function n(){this.on("mousedown.drag",u).on("touchstart.drag",i)}function t(n,t,u,i,o){return function(){function a(){var n,e,r=t(h,v);r&&(n=r[0]-x[0],e=r[1]-x[1],p|=n|e,x=r,g({type:"drag",x:r[0]+l[0],y:r[1]+l[1],dx:n,dy:e}))}function c(){t(h,v)&&(m.on(i+d,null).on(o+d,null),y(p&&Vo.event.target===f),g({type:"dragend"}))}var l,s=this,f=Vo.event.target,h=s.parentNode,g=e.of(s,arguments),p=0,v=n(),d=".drag"+(null==v?"":"-"+v),m=Vo.select(u()).on(i+d,a).on(o+d,c),y=I(),x=t(h,v);r?(l=r.apply(s,arguments),l=[l.x-x[0],l.y-x[1]]):l=[0,0],g({type:"dragstart"})}}var e=M(n,"drag","dragstart","dragend"),r=null,u=t(v,Vo.mouse,$,"mousemove","mouseup"),i=t(V,Vo.touch,X,"touchmove","touchend");return n.origin=function(t){return arguments.length?(r=t,n):r},Vo.rebind(n,e,"on")},Vo.touches=function(n,t){return arguments.length<2&&(t=x().touches),t?$o(t).map(function(t){var e=Z(n,t);return e.identifier=t.identifier,e}):[]};var wa=Math.PI,Sa=2*wa,ka=wa/2,Ea=1e-6,Aa=Ea*Ea,Ca=wa/180,Na=180/wa,za=Math.SQRT2,La=2,Ta=4;Vo.interpolateZoom=function(n,t){function e(n){var t=n*y;if(m){var e=Q(v),o=i/(La*h)*(e*nt(za*t+v)-K(v));return[r+o*l,u+o*s,i*e/Q(za*t+v)]}return[r+n*l,u+n*s,i*Math.exp(za*t)]}var r=n[0],u=n[1],i=n[2],o=t[0],a=t[1],c=t[2],l=o-r,s=a-u,f=l*l+s*s,h=Math.sqrt(f),g=(c*c-i*i+Ta*f)/(2*i*La*h),p=(c*c-i*i-Ta*f)/(2*c*La*h),v=Math.log(Math.sqrt(g*g+1)-g),d=Math.log(Math.sqrt(p*p+1)-p),m=d-v,y=(m||Math.log(c/i))/za;return e.duration=1e3*y,e},Vo.behavior.zoom=function(){function n(n){n.on(A,l).on(Da+".zoom",f).on("dblclick.zoom",h).on(z,s)}function t(n){return[(n[0]-S.x)/S.k,(n[1]-S.y)/S.k]}function e(n){return[n[0]*S.k+S.x,n[1]*S.k+S.y]}function r(n){S.k=Math.max(E[0],Math.min(E[1],n))}function u(n,t){t=e(t),S.x+=n[0]-t[0],S.y+=n[1]-t[1]}function i(){_&&_.domain(x.range().map(function(n){return(n-S.x)/S.k}).map(x.invert)),w&&w.domain(b.range().map(function(n){return(n-S.y)/S.k}).map(b.invert))}function o(n){n({type:"zoomstart"})}function a(n){i(),n({type:"zoom",scale:S.k,translate:[S.x,S.y]})}function c(n){n({type:"zoomend"})}function l(){function n(){s=1,u(Vo.mouse(r),h),a(l)}function e(){f.on(C,null).on(N,null),g(s&&Vo.event.target===i),c(l)}var r=this,i=Vo.event.target,l=L.of(r,arguments),s=0,f=Vo.select(Jo).on(C,n).on(N,e),h=t(Vo.mouse(r)),g=I();H.call(r),o(l)}function s(){function n(){var n=Vo.touches(g);return h=S.k,n.forEach(function(n){n.identifier in v&&(v[n.identifier]=t(n))}),n}function e(){var t=Vo.event.target;Vo.select(t).on(M,i).on(_,f),b.push(t);for(var e=Vo.event.changedTouches,o=0,c=e.length;c>o;++o)v[e[o].identifier]=null;var l=n(),s=Date.now();if(1===l.length){if(500>s-m){var h=l[0],g=v[h.identifier];r(2*S.k),u(h,g),y(),a(p)}m=s}else if(l.length>1){var h=l[0],x=l[1],w=h[0]-x[0],k=h[1]-x[1];d=w*w+k*k}}function i(){for(var n,t,e,i,o=Vo.touches(g),c=0,l=o.length;l>c;++c,i=null)if(e=o[c],i=v[e.identifier]){if(t)break;n=e,t=i}if(i){var s=(s=e[0]-n[0])*s+(s=e[1]-n[1])*s,f=d&&Math.sqrt(s/d);n=[(n[0]+e[0])/2,(n[1]+e[1])/2],t=[(t[0]+i[0])/2,(t[1]+i[1])/2],r(f*h)}m=null,u(n,t),a(p)}function f(){if(Vo.event.touches.length){for(var t=Vo.event.changedTouches,e=0,r=t.length;r>e;++e)delete v[t[e].identifier];for(var u in v)return void n()}Vo.selectAll(b).on(x,null),w.on(A,l).on(z,s),k(),c(p)}var h,g=this,p=L.of(g,arguments),v={},d=0,x=".zoom-"+Vo.event.changedTouches[0].identifier,M="touchmove"+x,_="touchend"+x,b=[],w=Vo.select(g),k=I();H.call(g),e(),o(p),w.on(A,null).on(z,e)}function f(){var n=L.of(this,arguments);d?clearTimeout(d):(g=t(p=v||Vo.mouse(this)),H.call(this),o(n)),d=setTimeout(function(){d=null,c(n)},50),y(),r(Math.pow(2,.002*qa())*S.k),u(p,g),a(n)}function h(){var n=L.of(this,arguments),e=Vo.mouse(this),i=t(e),l=Math.log(S.k)/Math.LN2;o(n),r(Math.pow(2,Vo.event.shiftKey?Math.ceil(l)-1:Math.floor(l)+1)),u(e,i),a(n),c(n)}var g,p,v,d,m,x,_,b,w,S={x:0,y:0,k:1},k=[960,500],E=Ra,A="mousedown.zoom",C="mousemove.zoom",N="mouseup.zoom",z="touchstart.zoom",L=M(n,"zoomstart","zoom","zoomend");return n.event=function(n){n.each(function(){var n=L.of(this,arguments),t=S;kl?Vo.select(this).transition().each("start.zoom",function(){S=this.__chart__||{x:0,y:0,k:1},o(n)}).tween("zoom:zoom",function(){var e=k[0],r=k[1],u=e/2,i=r/2,o=Vo.interpolateZoom([(u-S.x)/S.k,(i-S.y)/S.k,e/S.k],[(u-t.x)/t.k,(i-t.y)/t.k,e/t.k]);return function(t){var r=o(t),c=e/r[2];this.__chart__=S={x:u-r[0]*c,y:i-r[1]*c,k:c},a(n)}}).each("end.zoom",function(){c(n)}):(this.__chart__=S,o(n),a(n),c(n))})},n.translate=function(t){return arguments.length?(S={x:+t[0],y:+t[1],k:S.k},i(),n):[S.x,S.y]},n.scale=function(t){return arguments.length?(S={x:S.x,y:S.y,k:+t},i(),n):S.k},n.scaleExtent=function(t){return arguments.length?(E=null==t?Ra:[+t[0],+t[1]],n):E},n.center=function(t){return arguments.length?(v=t&&[+t[0],+t[1]],n):v},n.size=function(t){return arguments.length?(k=t&&[+t[0],+t[1]],n):k},n.x=function(t){return arguments.length?(_=t,x=t.copy(),S={x:0,y:0,k:1},n):_},n.y=function(t){return arguments.length?(w=t,b=t.copy(),S={x:0,y:0,k:1},n):w},Vo.rebind(n,L,"on")};var qa,Ra=[0,1/0],Da="onwheel"in Bo?(qa=function(){return-Vo.event.deltaY*(Vo.event.deltaMode?120:1)},"wheel"):"onmousewheel"in Bo?(qa=function(){return Vo.event.wheelDelta},"mousewheel"):(qa=function(){return-Vo.event.detail},"MozMousePixelScroll");Vo.color=et,et.prototype.toString=function(){return this.rgb()+""},Vo.hsl=rt;var Pa=rt.prototype=new et;Pa.brighter=function(n){return n=Math.pow(.7,arguments.length?n:1),new rt(this.h,this.s,this.l/n)},Pa.darker=function(n){return n=Math.pow(.7,arguments.length?n:1),new rt(this.h,this.s,n*this.l)},Pa.rgb=function(){return ut(this.h,this.s,this.l)},Vo.hcl=it;var Ua=it.prototype=new et;Ua.brighter=function(n){return new it(this.h,this.c,Math.min(100,this.l+ja*(arguments.length?n:1)))},Ua.darker=function(n){return new it(this.h,this.c,Math.max(0,this.l-ja*(arguments.length?n:1)))},Ua.rgb=function(){return ot(this.h,this.c,this.l).rgb()},Vo.lab=at;var ja=18,Ha=.95047,Fa=1,Oa=1.08883,Ya=at.prototype=new et;Ya.brighter=function(n){return new at(Math.min(100,this.l+ja*(arguments.length?n:1)),this.a,this.b)},Ya.darker=function(n){return new at(Math.max(0,this.l-ja*(arguments.length?n:1)),this.a,this.b)},Ya.rgb=function(){return ct(this.l,this.a,this.b)},Vo.rgb=gt;var Ia=gt.prototype=new et;Ia.brighter=function(n){n=Math.pow(.7,arguments.length?n:1);var t=this.r,e=this.g,r=this.b,u=30;return t||e||r?(t&&u>t&&(t=u),e&&u>e&&(e=u),r&&u>r&&(r=u),new gt(Math.min(255,t/n),Math.min(255,e/n),Math.min(255,r/n))):new gt(u,u,u)},Ia.darker=function(n){return n=Math.pow(.7,arguments.length?n:1),new gt(n*this.r,n*this.g,n*this.b)},Ia.hsl=function(){return yt(this.r,this.g,this.b)},Ia.toString=function(){return"#"+dt(this.r)+dt(this.g)+dt(this.b)};var Za=Vo.map({aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074});Za.forEach(function(n,t){Za.set(n,pt(t))}),Vo.functor=bt,Vo.xhr=St(wt),Vo.dsv=function(n,t){function e(n,e,i){arguments.length<3&&(i=e,e=null);var o=kt(n,t,null==e?r:u(e),i);return o.row=function(n){return arguments.length?o.response(null==(e=n)?r:u(n)):e},o}function r(n){return e.parse(n.responseText)}function u(n){return function(t){return e.parse(t.responseText,n)}}function i(t){return t.map(o).join(n)}function o(n){return a.test(n)?'"'+n.replace(/\"/g,'""')+'"':n}var a=new RegExp('["'+n+"\n]"),c=n.charCodeAt(0);return e.parse=function(n,t){var r;return e.parseRows(n,function(n,e){if(r)return r(n,e-1);var u=new Function("d","return {"+n.map(function(n,t){return JSON.stringify(n)+": d["+t+"]"}).join(",")+"}");r=t?function(n,e){return t(u(n),e)}:u})},e.parseRows=function(n,t){function e(){if(s>=l)return o;if(u)return u=!1,i;var t=s;if(34===n.charCodeAt(t)){for(var e=t;e++s;){var r=n.charCodeAt(s++),a=1;if(10===r)u=!0;else if(13===r)u=!0,10===n.charCodeAt(s)&&(++s,++a);else if(r!==c)continue;return n.slice(t,s-a)}return n.slice(t)}for(var r,u,i={},o={},a=[],l=n.length,s=0,f=0;(r=e())!==o;){for(var h=[];r!==i&&r!==o;)h.push(r),r=e();(!t||(h=t(h,f++)))&&a.push(h)}return a},e.format=function(t){if(Array.isArray(t[0]))return e.formatRows(t);var r=new h,u=[];return t.forEach(function(n){for(var t in n)r.has(t)||u.push(r.add(t))}),[u.map(o).join(n)].concat(t.map(function(t){return u.map(function(n){return o(t[n])}).join(n)})).join("\n")},e.formatRows=function(n){return n.map(i).join("\n")},e},Vo.csv=Vo.dsv(",","text/csv"),Vo.tsv=Vo.dsv(" ","text/tab-separated-values");var Va,Xa,$a,Ba,Wa,Ja=Jo[p(Jo,"requestAnimationFrame")]||function(n){setTimeout(n,17)};Vo.timer=function(n,t,e){var r=arguments.length;2>r&&(t=0),3>r&&(e=Date.now());var u=e+t,i={c:n,t:u,f:!1,n:null};Xa?Xa.n=i:Va=i,Xa=i,$a||(Ba=clearTimeout(Ba),$a=1,Ja(Ct))},Vo.timer.flush=function(){Nt(),zt()},Vo.round=function(n,t){return t?Math.round(n*(t=Math.pow(10,t)))/t:Math.round(n)};var Ga=["y","z","a","f","p","n","\xb5","m","","k","M","G","T","P","E","Z","Y"].map(Tt);Vo.formatPrefix=function(n,t){var e=0;return n&&(0>n&&(n*=-1),t&&(n=Vo.round(n,Lt(n,t))),e=1+Math.floor(1e-12+Math.log(n)/Math.LN10),e=Math.max(-24,Math.min(24,3*Math.floor((e-1)/3)))),Ga[8+e/3]};var Ka=/(?:([^{])?([<>=^]))?([+\- ])?([$#])?(0)?(\d+)?(,)?(\.-?\d+)?([a-z%])?/i,Qa=Vo.map({b:function(n){return n.toString(2)},c:function(n){return String.fromCharCode(n)},o:function(n){return n.toString(8)},x:function(n){return n.toString(16)},X:function(n){return n.toString(16).toUpperCase()},g:function(n,t){return n.toPrecision(t)},e:function(n,t){return n.toExponential(t)},f:function(n,t){return n.toFixed(t)},r:function(n,t){return(n=Vo.round(n,Lt(n,t))).toFixed(Math.max(0,Math.min(20,Lt(n*(1+1e-15),t))))}}),nc=Vo.time={},tc=Date;Dt.prototype={getDate:function(){return this._.getUTCDate()},getDay:function(){return this._.getUTCDay()},getFullYear:function(){return this._.getUTCFullYear()},getHours:function(){return this._.getUTCHours()},getMilliseconds:function(){return this._.getUTCMilliseconds()},getMinutes:function(){return this._.getUTCMinutes()},getMonth:function(){return this._.getUTCMonth()},getSeconds:function(){return this._.getUTCSeconds()},getTime:function(){return this._.getTime()},getTimezoneOffset:function(){return 0},valueOf:function(){return this._.valueOf()},setDate:function(){ec.setUTCDate.apply(this._,arguments)},setDay:function(){ec.setUTCDay.apply(this._,arguments)},setFullYear:function(){ec.setUTCFullYear.apply(this._,arguments)},setHours:function(){ec.setUTCHours.apply(this._,arguments)},setMilliseconds:function(){ec.setUTCMilliseconds.apply(this._,arguments)},setMinutes:function(){ec.setUTCMinutes.apply(this._,arguments)},setMonth:function(){ec.setUTCMonth.apply(this._,arguments)},setSeconds:function(){ec.setUTCSeconds.apply(this._,arguments)},setTime:function(){ec.setTime.apply(this._,arguments)}};var ec=Date.prototype;nc.year=Pt(function(n){return n=nc.day(n),n.setMonth(0,1),n},function(n,t){n.setFullYear(n.getFullYear()+t)},function(n){return n.getFullYear()}),nc.years=nc.year.range,nc.years.utc=nc.year.utc.range,nc.day=Pt(function(n){var t=new tc(2e3,0);return t.setFullYear(n.getFullYear(),n.getMonth(),n.getDate()),t},function(n,t){n.setDate(n.getDate()+t)},function(n){return n.getDate()-1}),nc.days=nc.day.range,nc.days.utc=nc.day.utc.range,nc.dayOfYear=function(n){var t=nc.year(n);return Math.floor((n-t-6e4*(n.getTimezoneOffset()-t.getTimezoneOffset()))/864e5)},["sunday","monday","tuesday","wednesday","thursday","friday","saturday"].forEach(function(n,t){t=7-t;var e=nc[n]=Pt(function(n){return(n=nc.day(n)).setDate(n.getDate()-(n.getDay()+t)%7),n},function(n,t){n.setDate(n.getDate()+7*Math.floor(t))},function(n){var e=nc.year(n).getDay();return Math.floor((nc.dayOfYear(n)+(e+t)%7)/7)-(e!==t)});nc[n+"s"]=e.range,nc[n+"s"].utc=e.utc.range,nc[n+"OfYear"]=function(n){var e=nc.year(n).getDay();return Math.floor((nc.dayOfYear(n)+(e+t)%7)/7)}}),nc.week=nc.sunday,nc.weeks=nc.sunday.range,nc.weeks.utc=nc.sunday.utc.range,nc.weekOfYear=nc.sundayOfYear;var rc={"-":"",_:" ",0:"0"},uc=/^\s*\d+/,ic=/^%/;Vo.locale=function(n){return{numberFormat:qt(n),timeFormat:jt(n)}};var oc=Vo.locale({decimal:".",thousands:",",grouping:[3],currency:["$",""],dateTime:"%a %b %e %X %Y",date:"%m/%d/%Y",time:"%H:%M:%S",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});Vo.format=oc.numberFormat,Vo.geo={},ie.prototype={s:0,t:0,add:function(n){oe(n,this.t,ac),oe(ac.s,this.s,this),this.s?this.t+=ac.t:this.s=ac.t},reset:function(){this.s=this.t=0},valueOf:function(){return this.s}};var ac=new ie;Vo.geo.stream=function(n,t){n&&cc.hasOwnProperty(n.type)?cc[n.type](n,t):ae(n,t)};var cc={Feature:function(n,t){ae(n.geometry,t)},FeatureCollection:function(n,t){for(var e=n.features,r=-1,u=e.length;++rn?4*wa+n:n,hc.lineStart=hc.lineEnd=hc.point=v}};Vo.geo.bounds=function(){function n(n,t){x.push(M=[s=n,h=n]),f>t&&(f=t),t>g&&(g=t)}function t(t,e){var r=fe([t*Ca,e*Ca]);if(m){var u=ge(m,r),i=[u[1],-u[0],0],o=ge(i,u);de(o),o=me(o);var c=t-p,l=c>0?1:-1,v=o[0]*Na*l,d=ia(c)>180;if(d^(v>l*p&&l*t>v)){var y=o[1]*Na;y>g&&(g=y)}else if(v=(v+360)%360-180,d^(v>l*p&&l*t>v)){var y=-o[1]*Na;f>y&&(f=y)}else f>e&&(f=e),e>g&&(g=e);d?p>t?a(s,t)>a(s,h)&&(h=t):a(t,h)>a(s,h)&&(s=t):h>=s?(s>t&&(s=t),t>h&&(h=t)):t>p?a(s,t)>a(s,h)&&(h=t):a(t,h)>a(s,h)&&(s=t)}else n(t,e);m=r,p=t}function e(){_.point=t}function r(){M[0]=s,M[1]=h,_.point=n,m=null}function u(n,e){if(m){var r=n-p;y+=ia(r)>180?r+(r>0?360:-360):r}else v=n,d=e;hc.point(n,e),t(n,e)}function i(){hc.lineStart()}function o(){u(v,d),hc.lineEnd(),ia(y)>Ea&&(s=-(h=180)),M[0]=s,M[1]=h,m=null}function a(n,t){return(t-=n)<0?t+360:t}function c(n,t){return n[0]-t[0]}function l(n,t){return t[0]<=t[1]?t[0]<=n&&n<=t[1]:nfc?(s=-(h=180),f=-(g=90)):y>Ea?g=90:-Ea>y&&(f=-90),M[0]=s,M[1]=h}};return function(n){g=h=-(s=f=1/0),x=[],Vo.geo.stream(n,_);var t=x.length;if(t){x.sort(c);for(var e,r=1,u=x[0],i=[u];t>r;++r)e=x[r],l(e[0],u)||l(e[1],u)?(a(u[0],e[1])>a(u[0],u[1])&&(u[1]=e[1]),a(e[0],u[1])>a(u[0],u[1])&&(u[0]=e[0])):i.push(u=e);for(var o,e,p=-1/0,t=i.length-1,r=0,u=i[t];t>=r;u=e,++r)e=i[r],(o=a(u[1],e[0]))>p&&(p=o,s=e[0],h=u[1]) +}return x=M=null,1/0===s||1/0===f?[[0/0,0/0],[0/0,0/0]]:[[s,f],[h,g]]}}(),Vo.geo.centroid=function(n){gc=pc=vc=dc=mc=yc=xc=Mc=_c=bc=wc=0,Vo.geo.stream(n,Sc);var t=_c,e=bc,r=wc,u=t*t+e*e+r*r;return Aa>u&&(t=yc,e=xc,r=Mc,Ea>pc&&(t=vc,e=dc,r=mc),u=t*t+e*e+r*r,Aa>u)?[0/0,0/0]:[Math.atan2(e,t)*Na,G(r/Math.sqrt(u))*Na]};var gc,pc,vc,dc,mc,yc,xc,Mc,_c,bc,wc,Sc={sphere:v,point:xe,lineStart:_e,lineEnd:be,polygonStart:function(){Sc.lineStart=we},polygonEnd:function(){Sc.lineStart=_e}},kc=Ce(Se,Te,Re,[-wa,-wa/2]),Ec=1e9;Vo.geo.clipExtent=function(){var n,t,e,r,u,i,o={stream:function(n){return u&&(u.valid=!1),u=i(n),u.valid=!0,u},extent:function(a){return arguments.length?(i=je(n=+a[0][0],t=+a[0][1],e=+a[1][0],r=+a[1][1]),u&&(u.valid=!1,u=null),o):[[n,t],[e,r]]}};return o.extent([[0,0],[960,500]])},(Vo.geo.conicEqualArea=function(){return Fe(Oe)}).raw=Oe,Vo.geo.albers=function(){return Vo.geo.conicEqualArea().rotate([96,0]).center([-.6,38.7]).parallels([29.5,45.5]).scale(1070)},Vo.geo.albersUsa=function(){function n(n){var i=n[0],o=n[1];return t=null,e(i,o),t||(r(i,o),t)||u(i,o),t}var t,e,r,u,i=Vo.geo.albers(),o=Vo.geo.conicEqualArea().rotate([154,0]).center([-2,58.5]).parallels([55,65]),a=Vo.geo.conicEqualArea().rotate([157,0]).center([-3,19.9]).parallels([8,18]),c={point:function(n,e){t=[n,e]}};return n.invert=function(n){var t=i.scale(),e=i.translate(),r=(n[0]-e[0])/t,u=(n[1]-e[1])/t;return(u>=.12&&.234>u&&r>=-.425&&-.214>r?o:u>=.166&&.234>u&&r>=-.214&&-.115>r?a:i).invert(n)},n.stream=function(n){var t=i.stream(n),e=o.stream(n),r=a.stream(n);return{point:function(n,u){t.point(n,u),e.point(n,u),r.point(n,u)},sphere:function(){t.sphere(),e.sphere(),r.sphere()},lineStart:function(){t.lineStart(),e.lineStart(),r.lineStart()},lineEnd:function(){t.lineEnd(),e.lineEnd(),r.lineEnd()},polygonStart:function(){t.polygonStart(),e.polygonStart(),r.polygonStart()},polygonEnd:function(){t.polygonEnd(),e.polygonEnd(),r.polygonEnd()}}},n.precision=function(t){return arguments.length?(i.precision(t),o.precision(t),a.precision(t),n):i.precision()},n.scale=function(t){return arguments.length?(i.scale(t),o.scale(.35*t),a.scale(t),n.translate(i.translate())):i.scale()},n.translate=function(t){if(!arguments.length)return i.translate();var l=i.scale(),s=+t[0],f=+t[1];return e=i.translate(t).clipExtent([[s-.455*l,f-.238*l],[s+.455*l,f+.238*l]]).stream(c).point,r=o.translate([s-.307*l,f+.201*l]).clipExtent([[s-.425*l+Ea,f+.12*l+Ea],[s-.214*l-Ea,f+.234*l-Ea]]).stream(c).point,u=a.translate([s-.205*l,f+.212*l]).clipExtent([[s-.214*l+Ea,f+.166*l+Ea],[s-.115*l-Ea,f+.234*l-Ea]]).stream(c).point,n},n.scale(1070)};var Ac,Cc,Nc,zc,Lc,Tc,qc={point:v,lineStart:v,lineEnd:v,polygonStart:function(){Cc=0,qc.lineStart=Ye},polygonEnd:function(){qc.lineStart=qc.lineEnd=qc.point=v,Ac+=ia(Cc/2)}},Rc={point:Ie,lineStart:v,lineEnd:v,polygonStart:v,polygonEnd:v},Dc={point:Xe,lineStart:$e,lineEnd:Be,polygonStart:function(){Dc.lineStart=We},polygonEnd:function(){Dc.point=Xe,Dc.lineStart=$e,Dc.lineEnd=Be}};Vo.geo.path=function(){function n(n){return n&&("function"==typeof a&&i.pointRadius(+a.apply(this,arguments)),o&&o.valid||(o=u(i)),Vo.geo.stream(n,o)),i.result()}function t(){return o=null,n}var e,r,u,i,o,a=4.5;return n.area=function(n){return Ac=0,Vo.geo.stream(n,u(qc)),Ac},n.centroid=function(n){return vc=dc=mc=yc=xc=Mc=_c=bc=wc=0,Vo.geo.stream(n,u(Dc)),wc?[_c/wc,bc/wc]:Mc?[yc/Mc,xc/Mc]:mc?[vc/mc,dc/mc]:[0/0,0/0]},n.bounds=function(n){return Lc=Tc=-(Nc=zc=1/0),Vo.geo.stream(n,u(Rc)),[[Nc,zc],[Lc,Tc]]},n.projection=function(n){return arguments.length?(u=(e=n)?n.stream||Ke(n):wt,t()):e},n.context=function(n){return arguments.length?(i=null==(r=n)?new Ze:new Je(n),"function"!=typeof a&&i.pointRadius(a),t()):r},n.pointRadius=function(t){return arguments.length?(a="function"==typeof t?t:(i.pointRadius(+t),+t),n):a},n.projection(Vo.geo.albersUsa()).context(null)},Vo.geo.transform=function(n){return{stream:function(t){var e=new Qe(t);for(var r in n)e[r]=n[r];return e}}},Qe.prototype={point:function(n,t){this.stream.point(n,t)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}},Vo.geo.projection=tr,Vo.geo.projectionMutator=er,(Vo.geo.equirectangular=function(){return tr(ur)}).raw=ur.invert=ur,Vo.geo.rotation=function(n){function t(t){return t=n(t[0]*Ca,t[1]*Ca),t[0]*=Na,t[1]*=Na,t}return n=or(n[0]%360*Ca,n[1]*Ca,n.length>2?n[2]*Ca:0),t.invert=function(t){return t=n.invert(t[0]*Ca,t[1]*Ca),t[0]*=Na,t[1]*=Na,t},t},ir.invert=ur,Vo.geo.circle=function(){function n(){var n="function"==typeof r?r.apply(this,arguments):r,t=or(-n[0]*Ca,-n[1]*Ca,0).invert,u=[];return e(null,null,1,{point:function(n,e){u.push(n=t(n,e)),n[0]*=Na,n[1]*=Na}}),{type:"Polygon",coordinates:[u]}}var t,e,r=[0,0],u=6;return n.origin=function(t){return arguments.length?(r=t,n):r},n.angle=function(r){return arguments.length?(e=sr((t=+r)*Ca,u*Ca),n):t},n.precision=function(r){return arguments.length?(e=sr(t*Ca,(u=+r)*Ca),n):u},n.angle(90)},Vo.geo.distance=function(n,t){var e,r=(t[0]-n[0])*Ca,u=n[1]*Ca,i=t[1]*Ca,o=Math.sin(r),a=Math.cos(r),c=Math.sin(u),l=Math.cos(u),s=Math.sin(i),f=Math.cos(i);return Math.atan2(Math.sqrt((e=f*o)*e+(e=l*s-c*f*a)*e),c*s+l*f*a)},Vo.geo.graticule=function(){function n(){return{type:"MultiLineString",coordinates:t()}}function t(){return Vo.range(Math.ceil(i/d)*d,u,d).map(h).concat(Vo.range(Math.ceil(l/m)*m,c,m).map(g)).concat(Vo.range(Math.ceil(r/p)*p,e,p).filter(function(n){return ia(n%d)>Ea}).map(s)).concat(Vo.range(Math.ceil(a/v)*v,o,v).filter(function(n){return ia(n%m)>Ea}).map(f))}var e,r,u,i,o,a,c,l,s,f,h,g,p=10,v=p,d=90,m=360,y=2.5;return n.lines=function(){return t().map(function(n){return{type:"LineString",coordinates:n}})},n.outline=function(){return{type:"Polygon",coordinates:[h(i).concat(g(c).slice(1),h(u).reverse().slice(1),g(l).reverse().slice(1))]}},n.extent=function(t){return arguments.length?n.majorExtent(t).minorExtent(t):n.minorExtent()},n.majorExtent=function(t){return arguments.length?(i=+t[0][0],u=+t[1][0],l=+t[0][1],c=+t[1][1],i>u&&(t=i,i=u,u=t),l>c&&(t=l,l=c,c=t),n.precision(y)):[[i,l],[u,c]]},n.minorExtent=function(t){return arguments.length?(r=+t[0][0],e=+t[1][0],a=+t[0][1],o=+t[1][1],r>e&&(t=r,r=e,e=t),a>o&&(t=a,a=o,o=t),n.precision(y)):[[r,a],[e,o]]},n.step=function(t){return arguments.length?n.majorStep(t).minorStep(t):n.minorStep()},n.majorStep=function(t){return arguments.length?(d=+t[0],m=+t[1],n):[d,m]},n.minorStep=function(t){return arguments.length?(p=+t[0],v=+t[1],n):[p,v]},n.precision=function(t){return arguments.length?(y=+t,s=hr(a,o,90),f=gr(r,e,y),h=hr(l,c,90),g=gr(i,u,y),n):y},n.majorExtent([[-180,-90+Ea],[180,90-Ea]]).minorExtent([[-180,-80-Ea],[180,80+Ea]])},Vo.geo.greatArc=function(){function n(){return{type:"LineString",coordinates:[t||r.apply(this,arguments),e||u.apply(this,arguments)]}}var t,e,r=pr,u=vr;return n.distance=function(){return Vo.geo.distance(t||r.apply(this,arguments),e||u.apply(this,arguments))},n.source=function(e){return arguments.length?(r=e,t="function"==typeof e?null:e,n):r},n.target=function(t){return arguments.length?(u=t,e="function"==typeof t?null:t,n):u},n.precision=function(){return arguments.length?n:0},n},Vo.geo.interpolate=function(n,t){return dr(n[0]*Ca,n[1]*Ca,t[0]*Ca,t[1]*Ca)},Vo.geo.length=function(n){return Pc=0,Vo.geo.stream(n,Uc),Pc};var Pc,Uc={sphere:v,point:v,lineStart:mr,lineEnd:v,polygonStart:v,polygonEnd:v},jc=yr(function(n){return Math.sqrt(2/(1+n))},function(n){return 2*Math.asin(n/2)});(Vo.geo.azimuthalEqualArea=function(){return tr(jc)}).raw=jc;var Hc=yr(function(n){var t=Math.acos(n);return t&&t/Math.sin(t)},wt);(Vo.geo.azimuthalEquidistant=function(){return tr(Hc)}).raw=Hc,(Vo.geo.conicConformal=function(){return Fe(xr)}).raw=xr,(Vo.geo.conicEquidistant=function(){return Fe(Mr)}).raw=Mr;var Fc=yr(function(n){return 1/n},Math.atan);(Vo.geo.gnomonic=function(){return tr(Fc)}).raw=Fc,_r.invert=function(n,t){return[n,2*Math.atan(Math.exp(t))-ka]},(Vo.geo.mercator=function(){return br(_r)}).raw=_r;var Oc=yr(function(){return 1},Math.asin);(Vo.geo.orthographic=function(){return tr(Oc)}).raw=Oc;var Yc=yr(function(n){return 1/(1+n)},function(n){return 2*Math.atan(n)});(Vo.geo.stereographic=function(){return tr(Yc)}).raw=Yc,wr.invert=function(n,t){return[-t,2*Math.atan(Math.exp(n))-ka]},(Vo.geo.transverseMercator=function(){var n=br(wr),t=n.center,e=n.rotate;return n.center=function(n){return n?t([-n[1],n[0]]):(n=t(),[n[1],-n[0]])},n.rotate=function(n){return n?e([n[0],n[1],n.length>2?n[2]+90:90]):(n=e(),[n[0],n[1],n[2]-90])},e([0,0,90])}).raw=wr,Vo.geom={},Vo.geom.hull=function(n){function t(n){if(n.length<3)return[];var t,u=bt(e),i=bt(r),o=n.length,a=[],c=[];for(t=0;o>t;t++)a.push([+u.call(this,n[t],t),+i.call(this,n[t],t),t]);for(a.sort(Ar),t=0;o>t;t++)c.push([a[t][0],-a[t][1]]);var l=Er(a),s=Er(c),f=s[0]===l[0],h=s[s.length-1]===l[l.length-1],g=[];for(t=l.length-1;t>=0;--t)g.push(n[a[l[t]][2]]);for(t=+f;t=r&&l.x<=i&&l.y>=u&&l.y<=o?[[r,o],[i,o],[i,u],[r,u]]:[];s.point=n[a]}),t}function e(n){return n.map(function(n,t){return{x:Math.round(i(n,t)/Ea)*Ea,y:Math.round(o(n,t)/Ea)*Ea,i:t}})}var r=Sr,u=kr,i=r,o=u,a=Gc;return n?t(n):(t.links=function(n){return eu(e(n)).edges.filter(function(n){return n.l&&n.r}).map(function(t){return{source:n[t.l.i],target:n[t.r.i]}})},t.triangles=function(n){var t=[];return eu(e(n)).cells.forEach(function(e,r){for(var u,i,o=e.site,a=e.edges.sort(Fr),c=-1,l=a.length,s=a[l-1].edge,f=s.l===o?s.r:s.l;++c=l,h=r>=s,g=(h<<1)+f;n.leaf=!1,n=n.nodes[g]||(n.nodes[g]=au()),f?u=l:a=l,h?o=s:c=s,i(n,t,e,r,u,o,a,c)}var s,f,h,g,p,v,d,m,y,x=bt(a),M=bt(c);if(null!=t)v=t,d=e,m=r,y=u;else if(m=y=-(v=d=1/0),f=[],h=[],p=n.length,o)for(g=0;p>g;++g)s=n[g],s.xm&&(m=s.x),s.y>y&&(y=s.y),f.push(s.x),h.push(s.y);else for(g=0;p>g;++g){var _=+x(s=n[g],g),b=+M(s,g);v>_&&(v=_),d>b&&(d=b),_>m&&(m=_),b>y&&(y=b),f.push(_),h.push(b)}var w=m-v,S=y-d;w>S?y=d+w:m=v+S;var k=au();if(k.add=function(n){i(k,n,+x(n,++g),+M(n,g),v,d,m,y)},k.visit=function(n){cu(n,k,v,d,m,y)},g=-1,null==t){for(;++g=0?n.slice(0,t):n,r=t>=0?n.slice(t+1):"in";return e=tl.get(e)||nl,r=el.get(r)||wt,vu(r(e.apply(null,Xo.call(arguments,1))))},Vo.interpolateHcl=Cu,Vo.interpolateHsl=Nu,Vo.interpolateLab=zu,Vo.interpolateRound=Lu,Vo.transform=function(n){var t=Bo.createElementNS(Vo.ns.prefix.svg,"g");return(Vo.transform=function(n){if(null!=n){t.setAttribute("transform",n);var e=t.transform.baseVal.consolidate()}return new Tu(e?e.matrix:rl)})(n)},Tu.prototype.toString=function(){return"translate("+this.translate+")rotate("+this.rotate+")skewX("+this.skew+")scale("+this.scale+")"};var rl={a:1,b:0,c:0,d:1,e:0,f:0};Vo.interpolateTransform=Pu,Vo.layout={},Vo.layout.bundle=function(){return function(n){for(var t=[],e=-1,r=n.length;++ea*a/d){if(p>c){var l=t.charge/c;n.px-=i*l,n.py-=o*l}return!0}if(t.point&&c&&p>c){var l=t.pointCharge/c;n.px-=i*l,n.py-=o*l}}return!t.charge}}function t(n){n.px=Vo.event.x,n.py=Vo.event.y,a.resume()}var e,r,u,i,o,a={},c=Vo.dispatch("start","tick","end"),l=[1,1],s=.9,f=ul,h=il,g=-30,p=ol,v=.1,d=.64,m=[],y=[];return a.tick=function(){if((r*=.99)<.005)return c.end({type:"end",alpha:r=0}),!0;var t,e,a,f,h,p,d,x,M,_=m.length,b=y.length;for(e=0;b>e;++e)a=y[e],f=a.source,h=a.target,x=h.x-f.x,M=h.y-f.y,(p=x*x+M*M)&&(p=r*i[e]*((p=Math.sqrt(p))-u[e])/p,x*=p,M*=p,h.x-=x*(d=f.weight/(h.weight+f.weight)),h.y-=M*d,f.x+=x*(d=1-d),f.y+=M*d);if((d=r*v)&&(x=l[0]/2,M=l[1]/2,e=-1,d))for(;++e<_;)a=m[e],a.x+=(x-a.x)*d,a.y+=(M-a.y)*d;if(g)for(Xu(t=Vo.geom.quadtree(m),r,o),e=-1;++e<_;)(a=m[e]).fixed||t.visit(n(a));for(e=-1;++e<_;)a=m[e],a.fixed?(a.x=a.px,a.y=a.py):(a.x-=(a.px-(a.px=a.x))*s,a.y-=(a.py-(a.py=a.y))*s);c.tick({type:"tick",alpha:r})},a.nodes=function(n){return arguments.length?(m=n,a):m},a.links=function(n){return arguments.length?(y=n,a):y},a.size=function(n){return arguments.length?(l=n,a):l},a.linkDistance=function(n){return arguments.length?(f="function"==typeof n?n:+n,a):f},a.distance=a.linkDistance,a.linkStrength=function(n){return arguments.length?(h="function"==typeof n?n:+n,a):h},a.friction=function(n){return arguments.length?(s=+n,a):s},a.charge=function(n){return arguments.length?(g="function"==typeof n?n:+n,a):g},a.chargeDistance=function(n){return arguments.length?(p=n*n,a):Math.sqrt(p)},a.gravity=function(n){return arguments.length?(v=+n,a):v},a.theta=function(n){return arguments.length?(d=n*n,a):Math.sqrt(d)},a.alpha=function(n){return arguments.length?(n=+n,r?r=n>0?n:0:n>0&&(c.start({type:"start",alpha:r=n}),Vo.timer(a.tick)),a):r},a.start=function(){function n(n,r){if(!e){for(e=new Array(c),a=0;c>a;++a)e[a]=[];for(a=0;l>a;++a){var u=y[a];e[u.source.index].push(u.target),e[u.target.index].push(u.source)}}for(var i,o=e[t],a=-1,l=o.length;++at;++t)(r=m[t]).index=t,r.weight=0;for(t=0;s>t;++t)r=y[t],"number"==typeof r.source&&(r.source=m[r.source]),"number"==typeof r.target&&(r.target=m[r.target]),++r.source.weight,++r.target.weight;for(t=0;c>t;++t)r=m[t],isNaN(r.x)&&(r.x=n("x",p)),isNaN(r.y)&&(r.y=n("y",v)),isNaN(r.px)&&(r.px=r.x),isNaN(r.py)&&(r.py=r.y);if(u=[],"function"==typeof f)for(t=0;s>t;++t)u[t]=+f.call(this,y[t],t);else for(t=0;s>t;++t)u[t]=f;if(i=[],"function"==typeof h)for(t=0;s>t;++t)i[t]=+h.call(this,y[t],t);else for(t=0;s>t;++t)i[t]=h;if(o=[],"function"==typeof g)for(t=0;c>t;++t)o[t]=+g.call(this,m[t],t);else for(t=0;c>t;++t)o[t]=g;return a.resume()},a.resume=function(){return a.alpha(.1)},a.stop=function(){return a.alpha(0)},a.drag=function(){return e||(e=Vo.behavior.drag().origin(wt).on("dragstart.force",Yu).on("drag.force",t).on("dragend.force",Iu)),arguments.length?(this.on("mouseover.force",Zu).on("mouseout.force",Vu).call(e),void 0):e},Vo.rebind(a,c,"on")};var ul=20,il=1,ol=1/0;Vo.layout.hierarchy=function(){function n(u){var i,o=[u],a=[];for(u.depth=0;null!=(i=o.pop());)if(a.push(i),(l=e.call(n,i,i.depth))&&(c=l.length)){for(var c,l,s;--c>=0;)o.push(s=l[c]),s.parent=i,s.depth=i.depth+1;r&&(i.value=0),i.children=l}else r&&(i.value=+r.call(n,i,i.depth)||0),delete i.children;return Wu(u,function(n){var e,u;t&&(e=n.children)&&e.sort(t),r&&(u=n.parent)&&(u.value+=n.value)}),a}var t=Ku,e=Ju,r=Gu;return n.sort=function(e){return arguments.length?(t=e,n):t},n.children=function(t){return arguments.length?(e=t,n):e},n.value=function(t){return arguments.length?(r=t,n):r},n.revalue=function(t){return r&&(Bu(t,function(n){n.children&&(n.value=0)}),Wu(t,function(t){var e;t.children||(t.value=+r.call(n,t,t.depth)||0),(e=t.parent)&&(e.value+=t.value)})),t},n},Vo.layout.partition=function(){function n(t,e,r,u){var i=t.children;if(t.x=e,t.y=t.depth*u,t.dx=r,t.dy=u,i&&(o=i.length)){var o,a,c,l=-1;for(r=t.value?r/t.value:0;++lg;++g)for(u.call(n,l[0][g],p=v[g],s[0][g][1]),h=1;d>h;++h)u.call(n,l[h][g],p+=s[h-1][g][1],s[h][g][1]);return a}var t=wt,e=ri,r=ui,u=ei,i=ni,o=ti;return n.values=function(e){return arguments.length?(t=e,n):t},n.order=function(t){return arguments.length?(e="function"==typeof t?t:cl.get(t)||ri,n):e},n.offset=function(t){return arguments.length?(r="function"==typeof t?t:ll.get(t)||ui,n):r},n.x=function(t){return arguments.length?(i=t,n):i},n.y=function(t){return arguments.length?(o=t,n):o},n.out=function(t){return arguments.length?(u=t,n):u},n};var cl=Vo.map({"inside-out":function(n){var t,e,r=n.length,u=n.map(ii),i=n.map(oi),o=Vo.range(r).sort(function(n,t){return u[n]-u[t]}),a=0,c=0,l=[],s=[];for(t=0;r>t;++t)e=o[t],c>a?(a+=i[e],l.push(e)):(c+=i[e],s.push(e));return s.reverse().concat(l)},reverse:function(n){return Vo.range(n.length).reverse()},"default":ri}),ll=Vo.map({silhouette:function(n){var t,e,r,u=n.length,i=n[0].length,o=[],a=0,c=[];for(e=0;i>e;++e){for(t=0,r=0;u>t;t++)r+=n[t][e][1];r>a&&(a=r),o.push(r)}for(e=0;i>e;++e)c[e]=(a-o[e])/2;return c},wiggle:function(n){var t,e,r,u,i,o,a,c,l,s=n.length,f=n[0],h=f.length,g=[];for(g[0]=c=l=0,e=1;h>e;++e){for(t=0,u=0;s>t;++t)u+=n[t][e][1];for(t=0,i=0,a=f[e][0]-f[e-1][0];s>t;++t){for(r=0,o=(n[t][e][1]-n[t][e-1][1])/(2*a);t>r;++r)o+=(n[r][e][1]-n[r][e-1][1])/a;i+=o*n[t][e][1]}g[e]=c-=u?i/u*a:0,l>c&&(l=c)}for(e=0;h>e;++e)g[e]-=l;return g},expand:function(n){var t,e,r,u=n.length,i=n[0].length,o=1/u,a=[];for(e=0;i>e;++e){for(t=0,r=0;u>t;t++)r+=n[t][e][1];if(r)for(t=0;u>t;t++)n[t][e][1]/=r;else for(t=0;u>t;t++)n[t][e][1]=o}for(e=0;i>e;++e)a[e]=0;return a},zero:ui});Vo.layout.histogram=function(){function n(n,i){for(var o,a,c=[],l=n.map(e,this),s=r.call(this,l,i),f=u.call(this,s,l,i),i=-1,h=l.length,g=f.length-1,p=t?1:1/h;++i0)for(i=-1;++i=s[0]&&a<=s[1]&&(o=c[Vo.bisect(f,a,1,g)-1],o.y+=p,o.push(n[i]));return c}var t=!0,e=Number,r=si,u=ci;return n.value=function(t){return arguments.length?(e=t,n):e},n.range=function(t){return arguments.length?(r=bt(t),n):r},n.bins=function(t){return arguments.length?(u="number"==typeof t?function(n){return li(n,t)}:bt(t),n):u},n.frequency=function(e){return arguments.length?(t=!!e,n):t},n},Vo.layout.pack=function(){function n(n,i){var o=e.call(this,n,i),a=o[0],c=u[0],l=u[1],s=null==t?Math.sqrt:"function"==typeof t?t:function(){return t};if(a.x=a.y=0,Wu(a,function(n){n.r=+s(n.value)}),Wu(a,vi),r){var f=r*(t?1:Math.max(2*a.r/c,2*a.r/l))/2;Wu(a,function(n){n.r+=f}),Wu(a,vi),Wu(a,function(n){n.r-=f})}return yi(a,c/2,l/2,t?1:1/Math.max(2*a.r/c,2*a.r/l)),o}var t,e=Vo.layout.hierarchy().sort(fi),r=0,u=[1,1];return n.size=function(t){return arguments.length?(u=t,n):u},n.radius=function(e){return arguments.length?(t=null==e||"function"==typeof e?e:+e,n):t},n.padding=function(t){return arguments.length?(r=+t,n):r},$u(n,e)},Vo.layout.tree=function(){function n(n,u){var s=o.call(this,n,u),f=s[0],h=t(f);if(Wu(h,e),h.parent.m=-h.z,Bu(h,r),l)Bu(f,i);else{var g=f,p=f,v=f;Bu(f,function(n){n.xp.x&&(p=n),n.depth>v.depth&&(v=n)});var d=a(g,p)/2-g.x,m=c[0]/(p.x+a(p,g)/2+d),y=c[1]/(v.depth||1);Bu(f,function(n){n.x=(n.x+d)*m,n.y=n.depth*y})}return s}function t(n){for(var t,e={A:null,children:[n]},r=[e];null!=(t=r.pop());)for(var u,i=t.children,o=0,a=i.length;a>o;++o)r.push((i[o]=u={_:i[o],parent:t,children:(u=i[o].children)&&u.slice()||[],A:null,a:null,z:0,m:0,c:0,s:0,t:null,i:o}).a=u);return e.children[0]}function e(n){var t=n.children,e=n.parent.children,r=n.i?e[n.i-1]:null;if(t.length){Si(n);var i=(t[0].z+t[t.length-1].z)/2;r?(n.z=r.z+a(n._,r._),n.m=n.z-i):n.z=i}else r&&(n.z=r.z+a(n._,r._));n.parent.A=u(n,r,n.parent.A||e[0])}function r(n){n._.x=n.z+n.parent.m,n.m+=n.parent.m}function u(n,t,e){if(t){for(var r,u=n,i=n,o=t,c=u.parent.children[0],l=u.m,s=i.m,f=o.m,h=c.m;o=bi(o),u=_i(u),o&&u;)c=_i(c),i=bi(i),i.a=n,r=o.z+f-u.z-l+a(o._,u._),r>0&&(wi(ki(o,n,e),n,r),l+=r,s+=r),f+=o.m,l+=u.m,h+=c.m,s+=i.m;o&&!bi(i)&&(i.t=o,i.m+=f-s),u&&!_i(c)&&(c.t=u,c.m+=l-h,e=n)}return e}function i(n){n.x*=c[0],n.y=n.depth*c[1]}var o=Vo.layout.hierarchy().sort(null).value(null),a=Mi,c=[1,1],l=null;return n.separation=function(t){return arguments.length?(a=t,n):a},n.size=function(t){return arguments.length?(l=null==(c=t)?i:null,n):l?null:c},n.nodeSize=function(t){return arguments.length?(l=null==(c=t)?null:i,n):l?c:null},$u(n,o)},Vo.layout.cluster=function(){function n(n,i){var o,a=t.call(this,n,i),c=a[0],l=0;Wu(c,function(n){var t=n.children;t&&t.length?(n.x=Ai(t),n.y=Ei(t)):(n.x=o?l+=e(n,o):0,n.y=0,o=n)});var s=Ci(c),f=Ni(c),h=s.x-e(s,f)/2,g=f.x+e(f,s)/2;return Wu(c,u?function(n){n.x=(n.x-c.x)*r[0],n.y=(c.y-n.y)*r[1]}:function(n){n.x=(n.x-h)/(g-h)*r[0],n.y=(1-(c.y?n.y/c.y:1))*r[1]}),a}var t=Vo.layout.hierarchy().sort(null).value(null),e=Mi,r=[1,1],u=!1;return n.separation=function(t){return arguments.length?(e=t,n):e},n.size=function(t){return arguments.length?(u=null==(r=t),n):u?null:r},n.nodeSize=function(t){return arguments.length?(u=null!=(r=t),n):u?r:null},$u(n,t)},Vo.layout.treemap=function(){function n(n,t){for(var e,r,u=-1,i=n.length;++ut?0:t),e.area=isNaN(r)||0>=r?0:r}function t(e){var i=e.children;if(i&&i.length){var o,a,c,l=f(e),s=[],h=i.slice(),p=1/0,v="slice"===g?l.dx:"dice"===g?l.dy:"slice-dice"===g?1&e.depth?l.dy:l.dx:Math.min(l.dx,l.dy);for(n(h,l.dx*l.dy/e.value),s.area=0;(c=h.length)>0;)s.push(o=h[c-1]),s.area+=o.area,"squarify"!==g||(a=r(s,v))<=p?(h.pop(),p=a):(s.area-=s.pop().area,u(s,v,l,!1),v=Math.min(l.dx,l.dy),s.length=s.area=0,p=1/0);s.length&&(u(s,v,l,!0),s.length=s.area=0),i.forEach(t)}}function e(t){var r=t.children;if(r&&r.length){var i,o=f(t),a=r.slice(),c=[];for(n(a,o.dx*o.dy/t.value),c.area=0;i=a.pop();)c.push(i),c.area+=i.area,null!=i.z&&(u(c,i.z?o.dx:o.dy,o,!a.length),c.length=c.area=0);r.forEach(e)}}function r(n,t){for(var e,r=n.area,u=0,i=1/0,o=-1,a=n.length;++oe&&(i=e),e>u&&(u=e));return r*=r,t*=t,r?Math.max(t*u*p/r,r/(t*i*p)):1/0}function u(n,t,e,r){var u,i=-1,o=n.length,a=e.x,l=e.y,s=t?c(n.area/t):0;if(t==e.dx){for((r||s>e.dy)&&(s=e.dy);++ie.dx)&&(s=e.dx);++ie&&(t=1),1>e&&(n=0),function(){var e,r,u;do e=2*Math.random()-1,r=2*Math.random()-1,u=e*e+r*r;while(!u||u>1);return n+t*e*Math.sqrt(-2*Math.log(u)/u)}},logNormal:function(){var n=Vo.random.normal.apply(Vo,arguments);return function(){return Math.exp(n())}},bates:function(n){var t=Vo.random.irwinHall(n);return function(){return t()/n}},irwinHall:function(n){return function(){for(var t=0,e=0;n>e;e++)t+=Math.random();return t}}},Vo.scale={};var sl={floor:wt,ceil:wt};Vo.scale.linear=function(){return ji([0,1],[0,1],gu,!1)};var fl={s:1,g:1,p:1,r:1,e:1};Vo.scale.log=function(){return Xi(Vo.scale.linear().domain([0,1]),10,!0,[1,10])};var hl=Vo.format(".0e"),gl={floor:function(n){return-Math.ceil(-n)},ceil:function(n){return-Math.floor(-n)}};Vo.scale.pow=function(){return $i(Vo.scale.linear(),1,[0,1])},Vo.scale.sqrt=function(){return Vo.scale.pow().exponent(.5)},Vo.scale.ordinal=function(){return Wi([],{t:"range",a:[[]]})},Vo.scale.category10=function(){return Vo.scale.ordinal().range(pl)},Vo.scale.category20=function(){return Vo.scale.ordinal().range(vl)},Vo.scale.category20b=function(){return Vo.scale.ordinal().range(dl)},Vo.scale.category20c=function(){return Vo.scale.ordinal().range(ml)};var pl=[2062260,16744206,2924588,14034728,9725885,9197131,14907330,8355711,12369186,1556175].map(vt),vl=[2062260,11454440,16744206,16759672,2924588,10018698,14034728,16750742,9725885,12955861,9197131,12885140,14907330,16234194,8355711,13092807,12369186,14408589,1556175,10410725].map(vt),dl=[3750777,5395619,7040719,10264286,6519097,9216594,11915115,13556636,9202993,12426809,15186514,15190932,8666169,11356490,14049643,15177372,8077683,10834324,13528509,14589654].map(vt),ml=[3244733,7057110,10406625,13032431,15095053,16616764,16625259,16634018,3253076,7652470,10607003,13101504,7695281,10394312,12369372,14342891,6513507,9868950,12434877,14277081].map(vt);Vo.scale.quantile=function(){return Ji([],[])},Vo.scale.quantize=function(){return Gi(0,1,[0,1])},Vo.scale.threshold=function(){return Ki([.5],[0,1])},Vo.scale.identity=function(){return Qi([0,1])},Vo.svg={},Vo.svg.arc=function(){function n(){var n=t.apply(this,arguments),i=e.apply(this,arguments),o=r.apply(this,arguments)+yl,a=u.apply(this,arguments)+yl,c=(o>a&&(c=o,o=a,a=c),a-o),l=wa>c?"0":"1",s=Math.cos(o),f=Math.sin(o),h=Math.cos(a),g=Math.sin(a); +return c>=xl?n?"M0,"+i+"A"+i+","+i+" 0 1,1 0,"+-i+"A"+i+","+i+" 0 1,1 0,"+i+"M0,"+n+"A"+n+","+n+" 0 1,0 0,"+-n+"A"+n+","+n+" 0 1,0 0,"+n+"Z":"M0,"+i+"A"+i+","+i+" 0 1,1 0,"+-i+"A"+i+","+i+" 0 1,1 0,"+i+"Z":n?"M"+i*s+","+i*f+"A"+i+","+i+" 0 "+l+",1 "+i*h+","+i*g+"L"+n*h+","+n*g+"A"+n+","+n+" 0 "+l+",0 "+n*s+","+n*f+"Z":"M"+i*s+","+i*f+"A"+i+","+i+" 0 "+l+",1 "+i*h+","+i*g+"L0,0"+"Z"}var t=no,e=to,r=eo,u=ro;return n.innerRadius=function(e){return arguments.length?(t=bt(e),n):t},n.outerRadius=function(t){return arguments.length?(e=bt(t),n):e},n.startAngle=function(t){return arguments.length?(r=bt(t),n):r},n.endAngle=function(t){return arguments.length?(u=bt(t),n):u},n.centroid=function(){var n=(t.apply(this,arguments)+e.apply(this,arguments))/2,i=(r.apply(this,arguments)+u.apply(this,arguments))/2+yl;return[Math.cos(i)*n,Math.sin(i)*n]},n};var yl=-ka,xl=Sa-Ea;Vo.svg.line=function(){return uo(wt)};var Ml=Vo.map({linear:io,"linear-closed":oo,step:ao,"step-before":co,"step-after":lo,basis:vo,"basis-open":mo,"basis-closed":yo,bundle:xo,cardinal:ho,"cardinal-open":so,"cardinal-closed":fo,monotone:ko});Ml.forEach(function(n,t){t.key=n,t.closed=/-closed$/.test(n)});var _l=[0,2/3,1/3,0],bl=[0,1/3,2/3,0],wl=[0,1/6,2/3,1/6];Vo.svg.line.radial=function(){var n=uo(Eo);return n.radius=n.x,delete n.x,n.angle=n.y,delete n.y,n},co.reverse=lo,lo.reverse=co,Vo.svg.area=function(){return Ao(wt)},Vo.svg.area.radial=function(){var n=Ao(Eo);return n.radius=n.x,delete n.x,n.innerRadius=n.x0,delete n.x0,n.outerRadius=n.x1,delete n.x1,n.angle=n.y,delete n.y,n.startAngle=n.y0,delete n.y0,n.endAngle=n.y1,delete n.y1,n},Vo.svg.chord=function(){function n(n,a){var c=t(this,i,n,a),l=t(this,o,n,a);return"M"+c.p0+r(c.r,c.p1,c.a1-c.a0)+(e(c,l)?u(c.r,c.p1,c.r,c.p0):u(c.r,c.p1,l.r,l.p0)+r(l.r,l.p1,l.a1-l.a0)+u(l.r,l.p1,c.r,c.p0))+"Z"}function t(n,t,e,r){var u=t.call(n,e,r),i=a.call(n,u,r),o=c.call(n,u,r)+yl,s=l.call(n,u,r)+yl;return{r:i,a0:o,a1:s,p0:[i*Math.cos(o),i*Math.sin(o)],p1:[i*Math.cos(s),i*Math.sin(s)]}}function e(n,t){return n.a0==t.a0&&n.a1==t.a1}function r(n,t,e){return"A"+n+","+n+" 0 "+ +(e>wa)+",1 "+t}function u(n,t,e,r){return"Q 0,0 "+r}var i=pr,o=vr,a=Co,c=eo,l=ro;return n.radius=function(t){return arguments.length?(a=bt(t),n):a},n.source=function(t){return arguments.length?(i=bt(t),n):i},n.target=function(t){return arguments.length?(o=bt(t),n):o},n.startAngle=function(t){return arguments.length?(c=bt(t),n):c},n.endAngle=function(t){return arguments.length?(l=bt(t),n):l},n},Vo.svg.diagonal=function(){function n(n,u){var i=t.call(this,n,u),o=e.call(this,n,u),a=(i.y+o.y)/2,c=[i,{x:i.x,y:a},{x:o.x,y:a},o];return c=c.map(r),"M"+c[0]+"C"+c[1]+" "+c[2]+" "+c[3]}var t=pr,e=vr,r=No;return n.source=function(e){return arguments.length?(t=bt(e),n):t},n.target=function(t){return arguments.length?(e=bt(t),n):e},n.projection=function(t){return arguments.length?(r=t,n):r},n},Vo.svg.diagonal.radial=function(){var n=Vo.svg.diagonal(),t=No,e=n.projection;return n.projection=function(n){return arguments.length?e(zo(t=n)):t},n},Vo.svg.symbol=function(){function n(n,r){return(Sl.get(t.call(this,n,r))||qo)(e.call(this,n,r))}var t=To,e=Lo;return n.type=function(e){return arguments.length?(t=bt(e),n):t},n.size=function(t){return arguments.length?(e=bt(t),n):e},n};var Sl=Vo.map({circle:qo,cross:function(n){var t=Math.sqrt(n/5)/2;return"M"+-3*t+","+-t+"H"+-t+"V"+-3*t+"H"+t+"V"+-t+"H"+3*t+"V"+t+"H"+t+"V"+3*t+"H"+-t+"V"+t+"H"+-3*t+"Z"},diamond:function(n){var t=Math.sqrt(n/(2*Cl)),e=t*Cl;return"M0,"+-t+"L"+e+",0"+" 0,"+t+" "+-e+",0"+"Z"},square:function(n){var t=Math.sqrt(n)/2;return"M"+-t+","+-t+"L"+t+","+-t+" "+t+","+t+" "+-t+","+t+"Z"},"triangle-down":function(n){var t=Math.sqrt(n/Al),e=t*Al/2;return"M0,"+e+"L"+t+","+-e+" "+-t+","+-e+"Z"},"triangle-up":function(n){var t=Math.sqrt(n/Al),e=t*Al/2;return"M0,"+-e+"L"+t+","+e+" "+-t+","+e+"Z"}});Vo.svg.symbolTypes=Sl.keys();var kl,El,Al=Math.sqrt(3),Cl=Math.tan(30*Ca),Nl=[],zl=0;Nl.call=va.call,Nl.empty=va.empty,Nl.node=va.node,Nl.size=va.size,Vo.transition=function(n){return arguments.length?kl?n.transition():n:ya.transition()},Vo.transition.prototype=Nl,Nl.select=function(n){var t,e,r,u=this.id,i=[];n=b(n);for(var o=-1,a=this.length;++oi;i++){u.push(t=[]);for(var e=this[i],a=0,c=e.length;c>a;a++)(r=e[a])&&n.call(r,r.__data__,a,i)&&t.push(r)}return Ro(u,this.id)},Nl.tween=function(n,t){var e=this.id;return arguments.length<2?this.node().__transition__[e].tween.get(n):P(this,null==t?function(t){t.__transition__[e].tween.remove(n)}:function(r){r.__transition__[e].tween.set(n,t)})},Nl.attr=function(n,t){function e(){this.removeAttribute(a)}function r(){this.removeAttributeNS(a.space,a.local)}function u(n){return null==n?e:(n+="",function(){var t,e=this.getAttribute(a);return e!==n&&(t=o(e,n),function(n){this.setAttribute(a,t(n))})})}function i(n){return null==n?r:(n+="",function(){var t,e=this.getAttributeNS(a.space,a.local);return e!==n&&(t=o(e,n),function(n){this.setAttributeNS(a.space,a.local,t(n))})})}if(arguments.length<2){for(t in n)this.attr(t,n[t]);return this}var o="transform"==n?Pu:gu,a=Vo.ns.qualify(n);return Do(this,"attr."+n,t,a.local?i:u)},Nl.attrTween=function(n,t){function e(n,e){var r=t.call(this,n,e,this.getAttribute(u));return r&&function(n){this.setAttribute(u,r(n))}}function r(n,e){var r=t.call(this,n,e,this.getAttributeNS(u.space,u.local));return r&&function(n){this.setAttributeNS(u.space,u.local,r(n))}}var u=Vo.ns.qualify(n);return this.tween("attr."+n,u.local?r:e)},Nl.style=function(n,t,e){function r(){this.style.removeProperty(n)}function u(t){return null==t?r:(t+="",function(){var r,u=Jo.getComputedStyle(this,null).getPropertyValue(n);return u!==t&&(r=gu(u,t),function(t){this.style.setProperty(n,r(t),e)})})}var i=arguments.length;if(3>i){if("string"!=typeof n){2>i&&(t="");for(e in n)this.style(e,n[e],t);return this}e=""}return Do(this,"style."+n,t,u)},Nl.styleTween=function(n,t,e){function r(r,u){var i=t.call(this,r,u,Jo.getComputedStyle(this,null).getPropertyValue(n));return i&&function(t){this.style.setProperty(n,i(t),e)}}return arguments.length<3&&(e=""),this.tween("style."+n,r)},Nl.text=function(n){return Do(this,"text",n,Po)},Nl.remove=function(){return this.each("end.transition",function(){var n;this.__transition__.count<2&&(n=this.parentNode)&&n.removeChild(this)})},Nl.ease=function(n){var t=this.id;return arguments.length<1?this.node().__transition__[t].ease:("function"!=typeof n&&(n=Vo.ease.apply(Vo,arguments)),P(this,function(e){e.__transition__[t].ease=n}))},Nl.delay=function(n){var t=this.id;return arguments.length<1?this.node().__transition__[t].delay:P(this,"function"==typeof n?function(e,r,u){e.__transition__[t].delay=+n.call(e,e.__data__,r,u)}:(n=+n,function(e){e.__transition__[t].delay=n}))},Nl.duration=function(n){var t=this.id;return arguments.length<1?this.node().__transition__[t].duration:P(this,"function"==typeof n?function(e,r,u){e.__transition__[t].duration=Math.max(1,n.call(e,e.__data__,r,u))}:(n=Math.max(1,n),function(e){e.__transition__[t].duration=n}))},Nl.each=function(n,t){var e=this.id;if(arguments.length<2){var r=El,u=kl;kl=e,P(this,function(t,r,u){El=t.__transition__[e],n.call(t,t.__data__,r,u)}),El=r,kl=u}else P(this,function(r){var u=r.__transition__[e];(u.event||(u.event=Vo.dispatch("start","end"))).on(n,t)});return this},Nl.transition=function(){for(var n,t,e,r,u=this.id,i=++zl,o=[],a=0,c=this.length;c>a;a++){o.push(n=[]);for(var t=this[a],l=0,s=t.length;s>l;l++)(e=t[l])&&(r=Object.create(e.__transition__[u]),r.delay+=r.duration,Uo(e,l,i,r)),n.push(e)}return Ro(o,i)},Vo.svg.axis=function(){function n(n){n.each(function(){var n,l=Vo.select(this),s=this.__chart__||e,f=this.__chart__=e.copy(),h=null==c?f.ticks?f.ticks.apply(f,a):f.domain():c,g=null==t?f.tickFormat?f.tickFormat.apply(f,a):wt:t,p=l.selectAll(".tick").data(h,f),v=p.enter().insert("g",".domain").attr("class","tick").style("opacity",Ea),d=Vo.transition(p.exit()).style("opacity",Ea).remove(),m=Vo.transition(p.order()).style("opacity",1),y=qi(f),x=l.selectAll(".domain").data([0]),M=(x.enter().append("path").attr("class","domain"),Vo.transition(x));v.append("line"),v.append("text");var _=v.select("line"),b=m.select("line"),w=p.select("text").text(g),S=v.select("text"),k=m.select("text");switch(r){case"bottom":n=jo,_.attr("y2",u),S.attr("y",Math.max(u,0)+o),b.attr("x2",0).attr("y2",u),k.attr("x",0).attr("y",Math.max(u,0)+o),w.attr("dy",".71em").style("text-anchor","middle"),M.attr("d","M"+y[0]+","+i+"V0H"+y[1]+"V"+i);break;case"top":n=jo,_.attr("y2",-u),S.attr("y",-(Math.max(u,0)+o)),b.attr("x2",0).attr("y2",-u),k.attr("x",0).attr("y",-(Math.max(u,0)+o)),w.attr("dy","0em").style("text-anchor","middle"),M.attr("d","M"+y[0]+","+-i+"V0H"+y[1]+"V"+-i);break;case"left":n=Ho,_.attr("x2",-u),S.attr("x",-(Math.max(u,0)+o)),b.attr("x2",-u).attr("y2",0),k.attr("x",-(Math.max(u,0)+o)).attr("y",0),w.attr("dy",".32em").style("text-anchor","end"),M.attr("d","M"+-i+","+y[0]+"H0V"+y[1]+"H"+-i);break;case"right":n=Ho,_.attr("x2",u),S.attr("x",Math.max(u,0)+o),b.attr("x2",u).attr("y2",0),k.attr("x",Math.max(u,0)+o).attr("y",0),w.attr("dy",".32em").style("text-anchor","start"),M.attr("d","M"+i+","+y[0]+"H0V"+y[1]+"H"+i)}if(f.rangeBand){var E=f,A=E.rangeBand()/2;s=f=function(n){return E(n)+A}}else s.rangeBand?s=f:d.call(n,f);v.call(n,s),m.call(n,f)})}var t,e=Vo.scale.linear(),r=Ll,u=6,i=6,o=3,a=[10],c=null;return n.scale=function(t){return arguments.length?(e=t,n):e},n.orient=function(t){return arguments.length?(r=t in Tl?t+"":Ll,n):r},n.ticks=function(){return arguments.length?(a=arguments,n):a},n.tickValues=function(t){return arguments.length?(c=t,n):c},n.tickFormat=function(e){return arguments.length?(t=e,n):t},n.tickSize=function(t){var e=arguments.length;return e?(u=+t,i=+arguments[e-1],n):u},n.innerTickSize=function(t){return arguments.length?(u=+t,n):u},n.outerTickSize=function(t){return arguments.length?(i=+t,n):i},n.tickPadding=function(t){return arguments.length?(o=+t,n):o},n.tickSubdivide=function(){return arguments.length&&n},n};var Ll="bottom",Tl={top:1,right:1,bottom:1,left:1};Vo.svg.brush=function(){function n(i){i.each(function(){var i=Vo.select(this).style("pointer-events","all").style("-webkit-tap-highlight-color","rgba(0,0,0,0)").on("mousedown.brush",u).on("touchstart.brush",u),o=i.selectAll(".background").data([0]);o.enter().append("rect").attr("class","background").style("visibility","hidden").style("cursor","crosshair"),i.selectAll(".extent").data([0]).enter().append("rect").attr("class","extent").style("cursor","move");var a=i.selectAll(".resize").data(p,wt);a.exit().remove(),a.enter().append("g").attr("class",function(n){return"resize "+n}).style("cursor",function(n){return ql[n]}).append("rect").attr("x",function(n){return/[ew]$/.test(n)?-3:null}).attr("y",function(n){return/^[ns]/.test(n)?-3:null}).attr("width",6).attr("height",6).style("visibility","hidden"),a.style("display",n.empty()?"none":null);var s,f=Vo.transition(i),h=Vo.transition(o);c&&(s=qi(c),h.attr("x",s[0]).attr("width",s[1]-s[0]),e(f)),l&&(s=qi(l),h.attr("y",s[0]).attr("height",s[1]-s[0]),r(f)),t(f)})}function t(n){n.selectAll(".resize").attr("transform",function(n){return"translate("+s[+/e$/.test(n)]+","+f[+/^s/.test(n)]+")"})}function e(n){n.select(".extent").attr("x",s[0]),n.selectAll(".extent,.n>rect,.s>rect").attr("width",s[1]-s[0])}function r(n){n.select(".extent").attr("y",f[0]),n.selectAll(".extent,.e>rect,.w>rect").attr("height",f[1]-f[0])}function u(){function u(){32==Vo.event.keyCode&&(C||(x=null,z[0]-=s[1],z[1]-=f[1],C=2),y())}function p(){32==Vo.event.keyCode&&2==C&&(z[0]+=s[1],z[1]+=f[1],C=0,y())}function v(){var n=Vo.mouse(_),u=!1;M&&(n[0]+=M[0],n[1]+=M[1]),C||(Vo.event.altKey?(x||(x=[(s[0]+s[1])/2,(f[0]+f[1])/2]),z[0]=s[+(n[0]p?(u=r,r=p):u=p),v[0]!=r||v[1]!=u?(e?o=null:i=null,v[0]=r,v[1]=u,!0):void 0}function m(){v(),S.style("pointer-events","all").selectAll(".resize").style("display",n.empty()?"none":null),Vo.select("body").style("cursor",null),L.on("mousemove.brush",null).on("mouseup.brush",null).on("touchmove.brush",null).on("touchend.brush",null).on("keydown.brush",null).on("keyup.brush",null),N(),w({type:"brushend"})}var x,M,_=this,b=Vo.select(Vo.event.target),w=a.of(_,arguments),S=Vo.select(_),k=b.datum(),E=!/^(n|s)$/.test(k)&&c,A=!/^(e|w)$/.test(k)&&l,C=b.classed("extent"),N=I(),z=Vo.mouse(_),L=Vo.select(Jo).on("keydown.brush",u).on("keyup.brush",p);if(Vo.event.changedTouches?L.on("touchmove.brush",v).on("touchend.brush",m):L.on("mousemove.brush",v).on("mouseup.brush",m),S.interrupt().selectAll("*").interrupt(),C)z[0]=s[0]-z[0],z[1]=f[0]-z[1];else if(k){var T=+/w$/.test(k),q=+/^n/.test(k);M=[s[1-T]-z[0],f[1-q]-z[1]],z[0]=s[T],z[1]=f[q]}else Vo.event.altKey&&(x=z.slice());S.style("pointer-events","none").selectAll(".resize").style("display",null),Vo.select("body").style("cursor",b.style("cursor")),w({type:"brushstart"}),v()}var i,o,a=M(n,"brushstart","brush","brushend"),c=null,l=null,s=[0,0],f=[0,0],h=!0,g=!0,p=Rl[0];return n.event=function(n){n.each(function(){var n=a.of(this,arguments),t={x:s,y:f,i:i,j:o},e=this.__chart__||t;this.__chart__=t,kl?Vo.select(this).transition().each("start.brush",function(){i=e.i,o=e.j,s=e.x,f=e.y,n({type:"brushstart"})}).tween("brush:brush",function(){var e=pu(s,t.x),r=pu(f,t.y);return i=o=null,function(u){s=t.x=e(u),f=t.y=r(u),n({type:"brush",mode:"resize"})}}).each("end.brush",function(){i=t.i,o=t.j,n({type:"brush",mode:"resize"}),n({type:"brushend"})}):(n({type:"brushstart"}),n({type:"brush",mode:"resize"}),n({type:"brushend"}))})},n.x=function(t){return arguments.length?(c=t,p=Rl[!c<<1|!l],n):c},n.y=function(t){return arguments.length?(l=t,p=Rl[!c<<1|!l],n):l},n.clamp=function(t){return arguments.length?(c&&l?(h=!!t[0],g=!!t[1]):c?h=!!t:l&&(g=!!t),n):c&&l?[h,g]:c?h:l?g:null},n.extent=function(t){var e,r,u,a,h;return arguments.length?(c&&(e=t[0],r=t[1],l&&(e=e[0],r=r[0]),i=[e,r],c.invert&&(e=c(e),r=c(r)),e>r&&(h=e,e=r,r=h),(e!=s[0]||r!=s[1])&&(s=[e,r])),l&&(u=t[0],a=t[1],c&&(u=u[1],a=a[1]),o=[u,a],l.invert&&(u=l(u),a=l(a)),u>a&&(h=u,u=a,a=h),(u!=f[0]||a!=f[1])&&(f=[u,a])),n):(c&&(i?(e=i[0],r=i[1]):(e=s[0],r=s[1],c.invert&&(e=c.invert(e),r=c.invert(r)),e>r&&(h=e,e=r,r=h))),l&&(o?(u=o[0],a=o[1]):(u=f[0],a=f[1],l.invert&&(u=l.invert(u),a=l.invert(a)),u>a&&(h=u,u=a,a=h))),c&&l?[[e,u],[r,a]]:c?[e,r]:l&&[u,a])},n.clear=function(){return n.empty()||(s=[0,0],f=[0,0],i=o=null),n},n.empty=function(){return!!c&&s[0]==s[1]||!!l&&f[0]==f[1]},Vo.rebind(n,a,"on")};var ql={n:"ns-resize",e:"ew-resize",s:"ns-resize",w:"ew-resize",nw:"nwse-resize",ne:"nesw-resize",se:"nwse-resize",sw:"nesw-resize"},Rl=[["n","e","s","w","nw","ne","se","sw"],["e","w"],["n","s"],[]],Dl=nc.format=oc.timeFormat,Pl=Dl.utc,Ul=Pl("%Y-%m-%dT%H:%M:%S.%LZ");Dl.iso=Date.prototype.toISOString&&+new Date("2000-01-01T00:00:00.000Z")?Fo:Ul,Fo.parse=function(n){var t=new Date(n);return isNaN(t)?null:t},Fo.toString=Ul.toString,nc.second=Pt(function(n){return new tc(1e3*Math.floor(n/1e3))},function(n,t){n.setTime(n.getTime()+1e3*Math.floor(t))},function(n){return n.getSeconds()}),nc.seconds=nc.second.range,nc.seconds.utc=nc.second.utc.range,nc.minute=Pt(function(n){return new tc(6e4*Math.floor(n/6e4))},function(n,t){n.setTime(n.getTime()+6e4*Math.floor(t))},function(n){return n.getMinutes()}),nc.minutes=nc.minute.range,nc.minutes.utc=nc.minute.utc.range,nc.hour=Pt(function(n){var t=n.getTimezoneOffset()/60;return new tc(36e5*(Math.floor(n/36e5-t)+t))},function(n,t){n.setTime(n.getTime()+36e5*Math.floor(t))},function(n){return n.getHours()}),nc.hours=nc.hour.range,nc.hours.utc=nc.hour.utc.range,nc.month=Pt(function(n){return n=nc.day(n),n.setDate(1),n},function(n,t){n.setMonth(n.getMonth()+t)},function(n){return n.getMonth()}),nc.months=nc.month.range,nc.months.utc=nc.month.utc.range;var jl=[1e3,5e3,15e3,3e4,6e4,3e5,9e5,18e5,36e5,108e5,216e5,432e5,864e5,1728e5,6048e5,2592e6,7776e6,31536e6],Hl=[[nc.second,1],[nc.second,5],[nc.second,15],[nc.second,30],[nc.minute,1],[nc.minute,5],[nc.minute,15],[nc.minute,30],[nc.hour,1],[nc.hour,3],[nc.hour,6],[nc.hour,12],[nc.day,1],[nc.day,2],[nc.week,1],[nc.month,1],[nc.month,3],[nc.year,1]],Fl=Dl.multi([[".%L",function(n){return n.getMilliseconds()}],[":%S",function(n){return n.getSeconds()}],["%I:%M",function(n){return n.getMinutes()}],["%I %p",function(n){return n.getHours()}],["%a %d",function(n){return n.getDay()&&1!=n.getDate()}],["%b %d",function(n){return 1!=n.getDate()}],["%B",function(n){return n.getMonth()}],["%Y",Se]]),Ol={range:function(n,t,e){return Vo.range(Math.ceil(n/e)*e,+t,e).map(Yo)},floor:wt,ceil:wt};Hl.year=nc.year,nc.scale=function(){return Oo(Vo.scale.linear(),Hl,Fl)};var Yl=Hl.map(function(n){return[n[0].utc,n[1]]}),Il=Pl.multi([[".%L",function(n){return n.getUTCMilliseconds()}],[":%S",function(n){return n.getUTCSeconds()}],["%I:%M",function(n){return n.getUTCMinutes()}],["%I %p",function(n){return n.getUTCHours()}],["%a %d",function(n){return n.getUTCDay()&&1!=n.getUTCDate()}],["%b %d",function(n){return 1!=n.getUTCDate()}],["%B",function(n){return n.getUTCMonth()}],["%Y",Se]]);Yl.year=nc.year.utc,nc.scale.utc=function(){return Oo(Vo.scale.linear(),Yl,Il)},Vo.text=St(function(n){return n.responseText}),Vo.json=function(n,t){return kt(n,"application/json",Io,t)},Vo.html=function(n,t){return kt(n,"text/html",Zo,t)},Vo.xml=St(function(n){return n.responseXML}),"function"==typeof define&&define.amd?define(Vo):"object"==typeof module&&module.exports&&(module.exports=Vo),this.d3=Vo}(); \ No newline at end of file